文章目录
-
- AHB控制信号
-
- 传送状态HTRANS[1:0]
- 批量传送HBURST[2:0]
- 传送方向HWRITE
- 传送大小HSIZE[2:0]
- 保护控制HPROT[3:0]
- [响应信号 HRESP[1:0]](#响应信号 HRESP[1:0])
AHB控制信号
传送状态HTRANS[1:0]
在AHB总线上, Master (M) 的传送状态可由HTRANS[1:0]
来表示,这两位所代表的意义如下
批量传送HBURST[2:0]
批量传送是以群组为单位的传送方式,主要依地址的给法来区分:
- 递增传送(incrementing burst),会依上一笔的地址来递增。
- 回绕传送(wrapping burst),如: 回绕长度=4; 每4个字节要对齐在16字节的范围内。如果第一个地址 = 0x64,则传送的顺序为 0x68、0x6C、0x60。
每次传送数据的大小由HBURST[2:0]
定义:
- AHB从设备通常支持 SINGLE,INCR,INCR4,WRAP8, INCR8 和 INCR16。
- AHB对传送范围规定不可超过1KB, 递增传送的大小可为任意数目, 但是不可超过1KB的范围。
传送方向HWRITE
HWRITE:表示传送方向(依读或写的动作来决定传送信号的)方向)
- HWRITE拉高时(写),M必须对写入动作初始化,数据会由M放到
HWDATA[31:0]
总线上。 - HWRITE拉低时(读),M会对读取动作初始化,被寻址到的S会将数据放到
HRDATA[31:0]
总线上。
传送大小HSIZE[2:0]
传送数据大小由HSIZE[2:0]
信号控制,表示每次传送的字节数目。
HSIZE[2:0]
与HBURST[2:0]
两个信号可合起来定义回绕地址的范围。
例如:HSIZE[2:0]
=32位,HBURST[2:0]
长度为4字节,则回绕地地址须对齐在16字节
通常的AHB从设备是32位数据线,所以它支持8位,16位和32位3种大小。
保护控制HPROT[3:0]
HPROT[3:0]
为总线协议保护信号用来定义存取的型态与特性,并非所有的M都会传送出HPROT[3:0]
,所以除非S有需要否则不会使用 到HPROT[3:0]
信号。一般来讲该信号很少用到。
响应信号 HRESP[1:0]
Master 发起一笔传输后, slave 可以决定这笔传输的进程, 而 Master 不能取消已经发出的传输。Slave 通过HREADY
信号反映传输是否否完成,通过HRESP[1:0]
反映传输的状态。
-
Slave 可以如下方式完成一笔传输:
- 立即完成一笔传输;
- 延迟一个或几个周期完成传输;
- 传输失败返回error;
- 延迟传输,释放总线。
-
传输完成标志
HREADY
:- HREADY为高时传输完成,
- HREADY为低时传输需要延迟。
-
传输响应标志
HRESP[1:0]
:00
:OKAY-传输完成01
:ERROR-传输错误10
:RETRY一传输未完成,请求主设备重新开始一个传输,artpiter会继续使用通常的优先级11
:SPLIT 一传输未完成,请求主设备分离一次传输, Arbiter 会调整优先级方案以便其他请求总线的主设备可以访问总线
-
地址译码
地址译码器用于为总线上每个slave提供选择信号
HSELx,
选择信号号是通过组合逻辑对地址码译码产生的。只有当前的数据传输完成后(HREADY
为高), slave才会采样地址和控制信号以及HSELx
。在一定条件下可能会出现这样的情况:产生HSELx
号而 HREADY为低,在当前传输后slave会改变。
每个slave最小的地址空间为1KB,所有的master的burst传输上限也是1KB,如此设计保证了不会出现地址越界问题。当一个设计不会用到所有的地址空间时,可能出现访问到一个不存在的地址的情请况,这就需要增加一个附加的默认slave (default slave)来为上面的情况提供一个响应。
当SEQ或NONSEQ传输访问到一个不存在的地址,默认slave应该提供ERROR响应;当IDLE或BUSY传输访问到个不存在的地址,默认slave会响应OKAY。地址译码器会带有实现默试slave的功能。
- 仲裁
仲裁机制保证了任意时刻只有一个master可以接入总线。arbiter快定哪个发出接入请求的master可以接入总线,这通过优先级算法 实现。AHB规范并没有给出优先级算法,设计者需要根据具体的系统要求定义。一般情况下arbiter不会中断一个burst传输,将总线接入权让给其他master。当然未定义长度的burst传输是可以打断的,这要看优先级算法是如何规定的。如果一笔burst被打断,master再度获得接入权限时,会传递剩余的部分。如一笔长度为INCR8的传输在传递3beat后被打断,master再次获得接入授权后,会继续传输剩余的5beat,剩余部分可以由一个SINGLE和一个INCR4组成, 或诸一个INCR。- HBUSREQx:master向arbiter发出接入请求的信号。
- HLOCKX:指示是否要进行不可中断的传输,这一信号与HBUSREQx同时由master向arbiter发出。
- HGRANTx:arbiter产生指示master获得授权,当HGRANTx信号为高同时HREADY为高时,master可以向总线传输地址信号。
- HMASTER[3:0]:arbiter产生指示哪个master获得授权,这一信号用于地址控制多路来选择哪个master接入总线。
- HMASTERLOCK:arbiter产生指示当前传输是否为锁定序列传输。
- HSPLIT:供支持SPLIT传输使用。