AHB同是由ARM提出的总线规范,全称为Advanced High Performance Bus,高级高性能总线(高性能、高速时钟),主要用于高速模块(如CPU、DMA、DSP)之间的连接,作为SoC的片上系统总线,它包括以下特性:
(1)、单个时钟边沿操作
(2)、非三态的实现方式
(3)、支持突发传输
(4)、支持分段传输
(5)、支持多个总线主机master(最多16个)
(6)、可配置32~128为总线宽度
(7)、支持字节、半字和字的传输
典型的应用如ARM核与内部高速RAM、NAND FLASH、DMA、Bridge的连接,相比于APB,AHB增加了地址周期和数据周期。AHB总线系统包括主设备Master、从设备Slave、内部仲裁器、译码器和地址/数据多路控制器构成,如下图所示:
AHP系统特性为:
1、主设备发起一次读/写操作,某一时刻只允许一个主设备使用总线。
2、从设备响应一次读写操作,通过地址映射选择使用哪一个从设备。
3、任意时刻仅允许一个主设备控制总线 4、译码器通过地址译码决定选择使用哪一个从设备。
仲裁机制:
仲裁机制保证了任意时刻只有一个master可以接入总线,arbiter决定哪个发出接入请求的master可以接入总线,这通过优先级算法实现,AHB规范并没有给出优先级算法,设计者需要根据具体的系统要求定义。
一般情况下arbiter不会中断一个burst传输,将总线接入权让给其他master。未定义长度的burst是可以打断的,这需要看优先级算法是如何让规定的,如果一笔burst被打断,master再度获得接入权限时,会传递剩余的部分。如一笔长度为INCR8的传输在传输3beat后打断,master再次获得接入权限后,会传输剩余的5beat,剩余部分可以由一个SINGLE和一个INCR4组成,或者一个INCR(次数不限的递增burst传输)。
地址译码器:
地址译码器用于为总线上每个slave提供选择信号HSELx,选择信号是通过组合逻辑对地址译码产生的,片选(chipselect)相应的slave,使slave采样地址和控制信号。每个slave最小的地址空间是为1K,所有的master的burst传输上限也是1KB,如此设计保证不会出现地址越界问题。
基本信号描述:
HADDR[31:0]:32位系统地址总线
HTRANS[1:0]:指示tranfer类型,NONSEQ、SEQ、IDLE、BUSY
HWRITE:1写0读
HSIZE[2:0]:传输单位,指示每一transfer的大小,
HBURST[2:0]:传输的burst类型
HWDATA:写数据总线,从master’写到slave
HREADY:Slave应答Master读写操作是否完成,1:传输完成,0:延长传输周期。
HRDATA:读数据总线,将数据从slave读到Master。
HPROT[3:0]:由master发出,作为保护控制信号,一般不用
HBUSREQx:由master发出,给仲裁器的获取总线使用权的请求信号。
HRESP[1:0]应答信号
00:OKAY
01:ERROR
10:RETRY 传输未完成,请求主设备重新开始一个传输,arbiter会继续使用通常的优先级
11:SPLIT 传输未完成,请求主设备分离一次传输,arbiter会调整优先级方案以便其他请求总线的主设备可以访问总线。
AHB仲裁信号:
8种类型的传输模式:HBURST[2:0]用于决定选择哪种传输模式,对应的传输模式类型如下图所示:
需要注意的是:
1、 AHB的所有操作,都要求给出的地址是对齐的
2、 对于同一burst来说,每次数据的宽度都是一样的
本来还想写一点传输时序分析,有点晚了,大家可以参考网上的诸多资料,十分有趣,以后有时间再写,还想写一点DDR3与HDMI的小问题的,留作以后更新的动力吧!
Night~
- END -