AHB 总线规范是 AMBA 总线规范的一部分。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 总线规范,并做读书笔记。下面主要介绍 AHB 规范(AMBA Specification Rev2.0),预计今后加入 APB 协议部分。
AHB 总线规范被用来作为 SoC 设计的内部高速总线,挂载高速设备,如图一所示。

AHB总线具有如下特性:
• burst transfers
• split transactions
• single cycle bus master handover
• single clock edge operation
• non-tristate implementation
• wider data bus configurations (64/128 bits).
H:以H开头代表AHB总线定义的信号,以区别系统设计时的其他信号
n: 低电平有效。如 HRESETn 低电平有效的reset 信号,也是 AHB 协议里唯一的低电平有效信号。
x: 针对某一Master或Slave的信号,如HBUSREQx1为Master1的bus request信号。
AHB 总线系统有 Master 、Slave 和 Infrastructure 构成。Infrastructure 由 Arbiter,数据多路,地址控制多路,译码器构成。有需要占用总线的 Master 向 Arbiter 提出占用总线请求, Arbiter 授权给指定的Master。任一时间周期只有一个Master 可以接入总线,对其指定的 Slave进行读写操作。总线统一规划 slave 的地址,译码器根据地址选择哪个 slave 与 master 进行数据通信。授权访问机制通过 多路选择器实现:Arbiter 将获得授权的 master 序号传输给地址和写数据多路,以选择哪个 master 接入总线;地址译码器根据 master 需要访问的地址选择 master ,并为写数据多路提供控制信号以选通相应的 slave 。下图取自 ARM Specification p3-4,显示了三个 Master,四个 Slave 的连接。

总线上传输的信号基本可以分为时钟复位信号、地址信号、控制信号、读写数据信号、申请信号、授权信号、反馈信号。表一列出了 AHB 总线的信号名称,用途等信息:



Master 必须获得授权接入总线,才可以进行 AHB 传输。这一过程开始于总线向 arbiter发出请求信号,然后 arbiter 决定哪个 master 可以获得授权接入总线。
获得授权的总线开始 AHB 传输,首先发出地址和控制信号。这些信号提供地址信息、传输方向和带宽以及 burst 类型。根据地址和控制信号确定 master 与哪个 slave 链接,进行数据传输,数据传输通过数据总线完成。为避免出现三态总线,AHB 将读写总线分开,写数据总线用于从 master 到 slave 的数据传输,读数据总线用于从 slave 到 master 的数据传输。每比传输包括一个地址和控制周期,一个或多个数据周期。地址控制周期不能被扩展,因此 slave 必须在一个周期采样地址信号。数据周期可以通过 HREADY 信号扩展 。但 HREADY为低时给传输加入一个等待状态以使 slave 获得额外的时间来提供或采样数据。另外 slave通过响应信号 HRESP 反映传输状态。
一般情况下 master 完成的完整的 burst 传输,arbiter 才会授权给其他的 master 接入总线。然而为避免过大的判决延迟,aibiter 也可能打断 burst 传输。在这种情况下 master 必须请求再次接入总线以进行中断的 burst 的剩余部分的传输。
一笔传输由如下两部分组成:
• 地址段,一个周期
• 数据段,一个或多个周期,可以由 HREADY 发出请求延长一个周期图三显示了一笔没有等待状态的简单的传输:
• HCLK 上升沿 master 驱动地址和控制信号
• HCLK 下一周期上升沿 slave 采样地址和控制信息
• 获得地址和控制信息后,slave 发出相应的放映信息,在第三个时钟上升沿被 master采样,同时 slave 完成数据的读写操作。
这个简单的传输例子显示地址和数据传输发生在不同的周期。事实上,与这笔传输的地址段传输的同时发生的是上一笔传输的数据段传输。这种地址与数据的交叠是总线流水线的特征,允许高速传输,并为 slave 响应一笔传输留出充裕的时间。
图四显示了带有等待状态的传输。写数据操作 master 必须在扩展的周期内保持总线上的数据稳定,而读数据操作则只需 slave 在传输完成前的一个周期提供有效的数据。
扩展数据周期的一个付效应是必须延长相应的下一笔传输的地址周期。图五显示了三笔不相关的传输。传输 A 、C 为零等待传输,传输 B 加入了一个等待周期,因此相应的传输 C 的地址周期要进行扩展。


7.1、传输类型
AHB 规范定义了四种传输类型:IDLE、BUSY、RETRY、SPLIT,由信号 HTRANS[1:0]定义。


图六显示了含有不同传输类型的传输。Burst的第一笔传输为NONSEQ;下一周期master不能及时提供传输数据,因此为BUSY以延迟下一笔传输;第三笔传输master立即发出但是slave 没有准备好,因此使用HREADY 加入一个等待状态;第四笔传输不用等待直接完成。

7.2、Burst 传输
AHB协议规定了4、8、16beat传输,以及未定义长度和single传输。其中beat数乘以transfer 即为 burst 的长度。AHB 协议支持incrementing 和wrap burst,incrementing 为递增的,没有边界;wrap将地址划分为传输burst长度的边界,超过边界部分折返回边界开始处。如传输一笔wrap4的burst,字长为4byte,第一笔传输的地址为0x34,会在16byte 绕回,因此4笔传输的地址为0x34,0x38,0x3c,0x30。表三为Burst信号编码说明。


Burst 不能超过1K地址边界,注意未指定长度的incrementing burst 不能超过这一地址边界。图七显示了一笔类型为WRAP4的burst传输,第一笔传输加入一个等待状态。

7.3、传输方向
当 HWRITE 信号为高时,进行写数据传输,master 向数据总线写数据;当 HWRITE 信号为低时,进行读数据操作,slave 产生读数据驱动读数据总线。
7.4、传输大小
HSIZE 信号指定了传输大小,从 8bits 到 1024bits,它与 HBURST 共同决定 wrapping burst的地址边界。表四给出具体编码信息。

7.5、保护控制
保护控制信号HPROT[3:0]为总线接入提供附加信息,用来为需要的模块提供一定级别的保护。保护控制信号指定传输是读取操作码或数据,特权模式或用户模式。不是所有的master都能够产生精确的保护信息,因此规范建议如非必须slave不要使用HPROT信号,故在此不过多介绍此信号。
更多内容见附件
免责声明:
本页面/内容部分素材来源于互联网公 开 信 息,旨在传递更多信息,不代表本平台立场。
版权归原作者或机构所有,如涉及侵权,请通过平台联系我们,我们将在核实后第一时间处理。
本平台对转载内容的真实性、准确性不作任何保证,用户需自行判断并承担使用风险