AMBA3—AHB总线(一)
AMBA3—AHB总线(一)
作为AMBA的中流砥柱之一,AHB被用于高性能、高时钟频率的系统结构中,它多被用在ARM核与片内高速sram、flash、DMA和总线桥的连接。它和上次学到的APB的最大区别在于功能更加丰富,可以进行流水线操作,并且性能更强。
¶AHB的特性
- Burst传输
- Split事务处理
- 单周期Master移交
- 单一时钟沿操作
- 无三态
- 更宽的总线配置(64/128)
- 流水线操作
- 可支持多个总线主设备
对于Split事务处理、多个Master的特性,这一篇就不写了,只讲讲最基础的数据传输以及流水线操作。更多细节可以查看AMBA5手册(ARM IHI 0033B.b
),本文中大量图片也来源于官方手册。
AHB总线主要由四部分构成:
- AHB主机(Master):这和APB不同,APB的主机是且仅是APB桥,而AHB的主机可以是任何设备,包括DMA、CPU等等。同时,AHB的主机也可以向从机输出hredy信号,用来控制数据读写是否完成。,任何时候只能有一个主机处于有效状态并能使用总线。
- AHB从机(Slave):和APB从机类似,但AHB的从机不仅会输出hreadyout信号(类似于APB的pready),而且会输出状态信息hresp,标志当且这一轮传输的状态。
- AHB仲裁器(Arbiter):集成在AHB总线桥中,用来分配主机和从机,它的目的是确保每次只有一个主机能够发起数据传输。
- AHB译码器(Decoder):根据AHB主机发出的读数据地址选择正确的从机hrdata信号线,进行信号读取。
¶AHB的接口
不同于APB只有APB-Slave和APB-Bridge两种接口,AHB有 AHB-Master、AHB-Slave、AHB-Arbiter、AHB-Decoder四种接口,每种接口都有其不同的信号定义,因此较为复杂,但如果有APB的基础的话可以对比着看,会有更深刻的体会。下面根据手册的顺序依次简单介绍下前两种接口:
¶AHB-Master
AHB-Master接口输入输出信号如下图:
和APB一样,AHB-Master也包含读hrdata/写hwdata信号、地址haddr信号、读/写控制信号hwrite以及hready和时钟和复位信号,这些信号的功能和APB总线同名信号的功能是一致的,但AHB又多了几组信号:
- hsize[2:0]:Master到Slave的信号,表示传输的大小,分别对应8bits(byte)、16bits(halfword),32bits(word),64bits, 128bits,256bits, 512bits,1024bits。
- hburst[2:0]:Master到Slave的信号,表示Burst传输类型,具体下面讲。
- hport:其实在新版本的APB总线里也有这个,是用来进行保护控制的,一般用不上。
- htrans:Master到Slave的信号,表示传输类型,分别为IDLE、BUSY、SEQ和NONSEQ,后面详细说明。
- hresp[2:0]:Slave到Master的信号,是从机接收情况的响应信号,分别有:OKAY、ERROR、RETRY和SPLIT四种响应,后面讲解。
- hmastlock:Master到Arbiter的信号,表示主机是否正在执行一个锁定顺序的传输。
¶AHB-Slave
AHB-Slave接口输入输出信号如下图:
和Master基本没什么不同,无非就是输入输出方向换了个边(
¶传输过程
如果只看信号的简单传输,那么AHB的过程几乎与APB无异(后面会有时序图),那么AHB的特点究竟体现在哪里呢?体现在多Master、多SLave之间的分配、调度和数据传输上,以及相对于APB特有的突发(Burst)传输。
¶多主多从的总线桥系统 AHB-Busmatrix
AMBA3—AHB总线(一)