AHB总线是一种专为高性能同步传输设计的总线,层次高于APB总线,支持以下特性:
典型的AHB系统包括以下部分:
AHB的互连使用多路复用器策略,由以下几个部分组成:
信号名 | 位宽 | 来源 | 描述 |
---|---|---|---|
HCLK | 1 | 系统时钟 | 传输系统的时钟 |
HRESETn | 1 | 复位系统 | 传输系统复位信号,低有效 |
HADDR | 32 | 主机 | 主机发送传输目标地址 |
HTRANS | 2 | 主机 | 当前发生的传输类型 |
HWRITE | 1 | 主机 | 读写信号:1-写操作;0-读操作 |
HSIZE | 3 | 主机 | 传输位宽,标记一次传输的位宽 |
HBURST | 3 | 主机 | 突发传输类型 |
HPROT | 4 | 主机 | 协议类型,标记传输使用协议的额外信息 |
HWDATA | 32 | 主机 | 发送数据,主机发送到从机的数据 |
HSELx | x | 解码器 | 标记哪一个从机被选中,由地址解码产生 |
HRDATA | 32 | 从机 | 接收数据,从机发送到主机的数据 |
HREADY | 1 | 从机 | 传输完成信号,高有效 |
HRESP | 2 | 从机 | 传输状态的额外标记 |
信号名 | 位宽 | 来源 | 描述 |
---|---|---|---|
HBUSREQx | x | 主机 | 主机x向判决器请求传输,最多支持16个主机 |
HLOCKx | x | 主机 | 主机x向判决器请求锁定传输,其他主机在锁定期内无法使用总线 |
HGRANTx | x | 判决器 | 主机x权限标记信号,当有效时(为高有效),主机x在AHB总线空闲时具有最高的控制权限 |
HMASTER | 4 | 判决器 | 主机标号,标记当前传输由哪个主机控制 |
HMASTLOCK | 1 | 判决器 | 锁定标记,标记当前总线被某个主机锁定 |
HSPLITx | 16x | 从机 | 事务分离标记,用于标记哪个主机应当重启事务 |
AHB传输分为以下几个部分:
关于突发传输,理论上进行突发传输的主设备应当一直占据总线,但是为了缩短等待时间,AHB允许打断突发传输,并在一段时间后重启该突发传输
AHB的基本传输过程由两个部分组成:
ahb_basic_nowait.png
无等待传输下,一个传输与三个时钟沿有关:
ahb_basic_wait.png
有等待传输下,数据传输阶段可以扩展,即在HREADY拉高之前,数据传输阶段不结束。要求写数据在HREADY拉高前保持稳定,主机在HREADY拉高后采样读数据
ahb_basic_water.png
AHB总线支持流水线传输,即将传输分为地址-数据两个部分流水进行,本次传输的地址必然在上一次地址之后,本次传输的数据必定紧跟在本次传输地址之后。因此,当上一次的数据传输阻塞导致传输周期增加时,下一传输的地址周期也会相应的变长:
传输类型使用端口HTRANS标记,有以下取值:
例子如下图所示:
ahb_trantype.JPG
猝发传输分为两类:
猝发类型使用字段HBURST标记,含义如下表所示:
HBURST[2:0] | 类型 | 描述 |
---|---|---|
000 | SINGLE | 单个传输 |
001 | INCR | 无限制长度的增量猝发传输 |
010 | WRAP4 | 4拍回卷猝发 |
011 | INCR4 | 4拍增量猝发 |
100 | WRAP8 | 8拍回卷猝发 |
101 | INCR8 | 8拍增量猝发 |
110 | WRAP16 | 16拍回卷猝发 |
111 | INCR16 | 16拍增量猝发 |
注意一次猝发传输不能跨越1kB的地址区间,且传输的起始地址必须与数据类型对应,例如传输字数据的二进制起始地址必须满足后两位为00。
从机通过监控HTRANS发现猝发传输的终止:
若猝发传输是提前终止的,如总线控制权被剥夺,那么主机需要在可以进行传输时重建猝发传输。例如一个4拍传输仅发送了一拍就终止,主机需要使用INCR类型的猝发构建3拍传输以重建。
[暂时略过,需要使用时再补充]
当传输位宽不同时,数据总线的使用情况如下所示(小端传输):
ahb_data_bus.JPG
HSIZE控制传输的数据结构位数,如下表所示:
HSIZE(bit) | 位宽 | 描述 |
---|---|---|
000 | 8 | 字节传输(Byte) |
001 | 16 | 半字传输(Half word) |
010 | 32 | 字传输(Word) |
011 | 64 | - |
100 | 128 | 4字传输 |
101 | 256 | 8字传输 |
110 | 512 | - |
111 | 1024 | - |
HPROT提供对传输协议的额外说明,如下所示:
HSELx由地址解码器产生,用于指示哪个从机被选中。从机当HREADY为高,即一次传输完成后锁存HSELx信号,若HSELx在HREADY为低时有效,将不会对本次传输产生影响。
HRESETn信号是复位信号,该信号是异步触发并同步释放的,当该信号有效时,所有主机均要将相关信号复位,包括将HTRANS置为IDLE。
HREADY信号标志传输是否完成:0-未完成,需要插入额外周期;1-已完成
HRESP用于标记传输完成的状态:
仲裁器保证一个时刻仅有一个主设备占有总线,因此当有多个主设备提出访问请求时,仲裁器通过仲裁信号仲裁哪一个主设备获得总线使用权
仲裁信号见[2.2.多主机传输信号]
主机获取总线控制权分为两个步骤:
主机通过自己的HBUSREQx向仲裁器申请总线控制权,仲裁器在时钟上升沿采样该信号,并通过内置的优先级算法决定总线控制权归属。一般来说,仲裁器仅会在一次传输完成后分配总线控制权,即将HMASTER置为获取总线控制权的主机编号且在上一次突发传输的倒数第二个传输时改变HGRANTx,因此新HGRANTx可以在上一次突发传输的最后一次传输同时被采样。
但如果需要,仲裁器也可以通过打断传输的方式优先执行优先级更高的传输。若获取总线控制权的主机申请锁定总线,其他主机将无法获得总线控制权。
对于指定突发长度的突发传输,仲裁器根据突发长度判断需要总线控制权的时间,若结束后启动下一次突发传输,需要再次请求控制权。对于未指定长度的突发传输,主机需要在传输过程中一直保持请求信号拉高,否则将仲裁器无法判断何时收回总线控制权。
当无主机申请总线时,总线的控制权被交给默认的主机,即使该主机没有申请总线控制权。此时默认主机需要将HTRANS置为IDLE状态。