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总线主要由四部分构成:

  • 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接口输入输出信号如下图:

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接口输入输出信号如下图:

AHB-Slave接口

和Master基本没什么不同,无非就是输入输出方向换了个边(

传输过程

如果只看信号的简单传输,那么AHB的过程几乎与APB无异(后面会有时序图),那么AHB的特点究竟体现在哪里呢?体现在多Master、多SLave之间的分配、调度和数据传输上,以及相对于APB特有的突发(Burst)传输。

多主多从的总线桥系统 AHB-Busmatrix

作者

Hank.Gan

发布于

2021-08-28

更新于

2021-09-01

许可协议

评论