FPGA奈克斯特——AMBA(AHB)总线初识及接口定义

由于项目中经常会涉及到总线的内容,想在AHB上挂一个SRAM和flash,我们从AMBA总线入手,从时序入手吧AMBA总线理解一遍。而这之中我们主要看AHB总线。其次说APB总线。
作者:Trustintruth
来源:   https://zhuanlan.zhihu.com/p/110321377

AHB(Advanced High Performance Bus)总线规范是AMBA(Advanced Microcontroller Bus Architecture) V2.0总线规范的一部分,AMBA总线规范是ARM公司提出的总线规范,被大多数SoC设计采用,它规定了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。

AHB用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内部的高速RAM、NAND FLASH、DMA、Bridge的连接。APB用于连接外部设备,对性能要求不高,而考虑低功耗问题。ASB是AHB的一种替代方案。AHB总线之所以强大是由于它可以将CPU、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线主机、各种拥有AHB接口的控制器等,统统连接起来构成一个独立的完整的SOC系统,除此之外,还可以通过AHB-APB桥来连接APB总线系统。AHB可以成为一个完整独立的SOC芯片的骨架。如下面的就很能体现:

其实简而话之,就是要有发消息的接口,收消息的接口,以及决定谁发谁收的仲裁器。就好像是一条路,只能一辆车在路上跑,需要维持车从哪上,向哪下,既不能让两辆车在路上同时跑,也不能让准备上路的车在路口处等太久。

AHB总线包括AHB主机(master)、从机(slave)及仲裁器,数据多路选择器,地址多路选择器等。主机(master)就是发送数据的,而从机(slave)是接收数据的,而仲裁器就是来分配总线使用权的,当多个主机申请调用总线时,仲裁器根据其仲裁算法来决定谁来调用总线,也就是给数据选择器地址选择器控制信号来选择输入输出的信号。

对于一个标准AHB总线,它的接口如下:

HCLK——总线时钟——时钟——源时钟为所有总线传输提供时基。所有信号时序都和HCLK的上升沿相关。

HRESETn——复位——复位——控制器总线复位信号,低电平有效,用来复位系统和总线。这是唯一低电平有效的信号。名称来源描述

HADDR[31:0]——地址总线——主机——32位地址总线

HTRANS[1:0]——传输类型——主机——表示当前传输的类型,可以是连续,不连续,空闲和忙

HWRITE——传输方向——主机——该信号为高表示一个写传输,为低表示一个读传输

HSIZE[2:0]——传输大小——主机——表示传输的大小,三位表示0…7,分别对应8bits(byte), 16bits(halfword),32bits(word),64bits, 128bits,256bits, 512bits,1024bits

HBRUST[2:0]——突发类型——主机——表示传输是否组成了突发的一部分。支持4个,8个,16个节拍的突发传输,突发传输可以使增量或回环。

(由于在SRAM里突发传输好像没有太用到,所以这块并不是那么懂,望广大知友能不吝赐教)

HPROT[3:0]——保护控制——主机——提供总线访问的附加信息,主要是给那些希望执行某种保护级别的模块使用的。这个信号指示当前传输是否为预取指令或者数据传输,同时也表示传输是保护模式访问还是用户模式访问。对带存储器管理单元的总线主机而言这些信号也用来指示当前传输是高速缓存的(cache)还是缓冲的(buffer)。

HWDATA[31:0]——写总线数据——主机——数据总线用来在写操作期间从主机到总线从机传输数据。建议最小的数据总线宽度为 32 位。在要求高带宽运行时扩展(数据总线)还是很容易的。

HSELx——从机选择——译码器——每个 AHB 从机都有自己独立的从机选择信号并且用该信号来表示当前传输是否是打算送给选中的从机。该信号是地址总线的简单组合译码。

HRDATA[31:0]——读数据总线——从机——读数据总线用来在读操作期间从总线从机向总线主机传输数据。建议最小的数据总线宽度为 32 位。在要求高带宽运行时扩展(数据总线)还是很容易的。

HREDAY——传输完成——从机——当 HREADY 为高时表示总线上的传输已经完成。在扩展传输时该信号可能会被拉低。
注意:总线上的从机要求 HREADY 作为输入输出信号。

HRESP[1:0]——传输响应——从机——传输响应给传输状态提供了附加信息。提供四种不同的响应: OKEY、 ERROR、 RETRY 和 SPLIT。

AMBA AHB也有许多信号请求支持多主机操作。这些仲裁信号用于点对点连接, 下表中后缀x用来表示信号来自模块x:

HBUSREQx——总线请求——主机——从总线主机 x 传向总线仲裁器用来表示该主机请求(控制 ) 总 线 的信 号 。 系 统中 每 个 总 线主 机 都 有 一个
HBUSREQx 信号,最多 16 个总线主机。

HLOCKx——锁定的传输——主机——当该信号为高时表示主机请求锁定对总线的访问并且
在该信号为低之前其他主机不应该被允许授予总线。

HGRANTx——总线授予——仲裁器——该信号用来表示总线主机 x 目前是优先级最高的主机。当 HREADY 为高时传输结束,地址/控制信号的所有权发生改变。所以主机应在HREADY 和 HGRANTx都为高时获得对总线的访问。

HMASTER[3: 0]——主机号——仲裁器——这些来自仲裁器的信号表示哪个总线主机正在执行传输和被支持分块传输的从机用来确定哪个主机正在尝试一次访问。HMASTER 的时序和地址以及控制信号对齐。

HMASTLOCK——锁定顺序——仲裁器——表示当前主机正在执行一个锁定顺序的传输。该信号和 HMASTER 有相同的时序。

HSPLITx[15:0]——分块完成请求——从机(支持分块)——从机用这 16 位的分块总线来指示仲裁器总线主机应该被允许重试一个分块传输。分块总线上的每一位对应一个总线主机。

挖个坑,下次说接口时序时序和操作。

本文大量参考了以下博文
https://www.cnblogs.com/mikewolf2002/p/10335422.html

推荐阅读

  • AMBA低功耗接口(二)P\_Channel
  • AMBA低功耗接口(一)Q\_Channel
  • AHB 协议学习之 transfer

关注此系列,请关注专栏Arm AMBA协议集

发表评论

邮箱地址不会被公开。 必填项已用*标注

相关