1.定义
AHB或者ASB系统总线在需要做大量数据传送的模块之间提供了高带宽的接口。同时,外围总线APB在AHB或者ASB和低带宽的外围设备之间提供了通信的桥梁。所以APB是AHB或者ASB的二级扩展总线
2.拓扑结构
2.1 Master:
可以是CPU、DMA控制器、外设控制器等。Master通过AHB总线向slave发送传输请求,请求读取或者写入slave的寄存器或内存地址。当master发送请求时,首先必须等待Arbiter的确认,如果得到许可,就可以访问总线并发起传输。通过hgrant信号线来知道自己是否被Arbiter选择
2.2 Slave
负责处理master的AHB传输请求。可以是内存、外设、寄存器等。Slave通过AHB总线接受master的传输请求,并根据请求类型,响应master执行读取或者写入操作。通过hslectx信号线来知道自己是否被master选中
2.3 Arbiter
负责协调多个master之间的竞争,以决定哪个master能够获得总线控制权
2.4 Decoder
负责讲master的地址映射到对应的slave设备或内存地址。通过解析master请求的地址信息,将其转换为slave的地址或内存地址,并将请求发送给相应的slave设备或内存地址
3.主要特性:
3.1 Burst传输:
3.2 Split事务处理
必须master和slave同时支持split才行
3.3 单一时钟沿操作
3.4 无需三态门的实现方式
三态门是为了避免同一时刻多个设备对同一根信号线进行驱动
3.5 更宽的数据总线配置
3.6 流水线操作
在时序图上直观表现出来是地址比数据早一拍
3.7 可以支持多个总线主设备
4.术语
5.AHB构成
6.AHB信号列表
6.1 HADDR[31:0]
AHB地址位,用于传输主设备发送给从设备的地址信息
6.2 HBURST[2:0]
表明是单次传输还是burst传输
6.3 HMASTLOCK
用来锁定主设备,实现master之间的互斥控制。当一个master获得总线访问权并开始进行数据传输时,可以使用该信号线防止其他master在此期间访问总线
6.4 HPROT[3:0]
用来确保从设备只能被授权主设备访问。在AHB协议中,每个主设备都被分配一个唯一的HPROT值,从设备可以根据这个保护类型来判断是否允许主设备进行访问
6.5 HSIZE[2:0]
AHB中指示数据传输的大小的信号
6.6 HTRANS[1:0]
指示当前这一次传输中的这一拍由master向slave发起的数据传输类型。
6.7 HWDATA[31:0]与HWRITE
HWDATA[31:0]: AHB的数据位,用于传输主设备发送给从设备的数据信息
HWRITE: 指示数据传输方向,为1 时表示写操作,为0时表示读操作
6.8 HRDATA[31:0]
AHB的读数据位,用于传输从设备发送给主设备的数据信息
6.9 HRESP[1:0]
从端为主端提供有关传输状态的附加信息
7.APB信号列表
8.控制信号:传送状态HTRANS[1:0]
9.控制信号:批量传送HBURST[1:0]
最常用的是000,SINGLE类型传输
10.批量式传输时序图
传输到地址0x64之后,接下来传输的地址是0x30
11.传送方向HWRITE
12.传送大小HSIZE[2:0]
当进行包围突发传输时,回绕地址必须对齐到特定的边界。这个边界由 HSIZE 和 HBURST 共同决定。具体来说,对齐的边界是 (突发长度) × (传输大小)。
13. 传输完成HREADY
14.burst size与burst length、hsize
Burst length是指一次连续传输中数据的数量,通常以数据总线宽度为单位计算。例如,当数据总线宽度为32位时,burst length为4表示一次连续传输可以传输4个32位的数据。
Burst size是指数据的大小位宽,以字节为单位。
举例: 32个字节可以分为32 * 8位, 这里 Burst Size 是 8位(1 BYTE), Burst Length是 32.
地址边界的计算方式是突发(Burts)中的拍数(Beats)与传输(Transfer)大小(Size)的乘积,其中,拍数由HBURST控制,传输大小由HSIZE控制。例如,一个4byte大小的4拍循环突发(4-beats wrapping burst of word)以16byte为边界进行边界跳转,若起始地址为0x34,则它的四个transfer地址分别为0x34、0x38、0x3c和0x30。