1、AHB总线
针对高带宽、高性能系统所设计总线。
1.1、AHB总线构成
四部分构成,分别是:
- AHB master:主设备,发起读写操作
- AHB slave:从设备,主设备通过地址映射找到从设备,从设备响应主设备的操作
- AHB arbiter:裁决,每次仅裁决出一个master设备发起数据传输
- AHB decoder:地址译码,生成slave选择信号,选择slave
1.2、信号描述
- mater 信号
- slave信号
HRESP:高表示ERROR,低表示OKAY
HREADYOUT:高表示传输完成。
- 选择信号
HSELx:decoder发出,从机接收,指示哪个从机被选定。
- 多路复用信号
HRDATA:读数据,被decoder选定
HREADY:高,表示master或者slave传输完成,每个slave有一个readyout信号,多路复用器会收集所有slave的readyout信号,合成一个ready信号输出给maste
1.3、信号传输时序
地址阶段:一个周期完成地址传输
数据阶段:一个或多个周期,hready信号控制传输所需时间。
T0-T1:地址A的传输周期,写指令一个clk传输完成。
T1-T2:地址B的传输周期,读指令一个clk传输完成。同时,也是写数据A的传输周期,HREADY有效一个clk,进行一次数据传输。
T2-T4:数据B的读传输周期。
1.4、传输状态信号
- 传输状态的例子:
1.5、锁定传输信号
主机锁定访问,需要插入HMASTLOCK 信号,指示 slave传输序列不可分割,需要处理完当前传输,方可进行其他传输。
对地址A的读写顺序进行锁定,完成读地址A,再进行写地址B,完成数据操作,必须插入IDLE状态,结束锁定访问。
1.6、传输大小
Transfer size表示数据传输的大小,必须小于等于总线位宽。
8种size,从0-7分别表述8、16、32、……、1024字节。
1.7、突发类型
突发有如下注意:
- 递增突发访问,访问地址是前一个地址的递增。
- 跨越地址边界环回突发,地址会环回。
- Master不能启动跨越1k地址边界的递增突发
- 突发传输需要与地址边界对齐。,地址边界是突发传输的大小。
- 未定义长度突发,master可以使用busy信号来延长传输,通过插入idle或者nonseq状态来结束突发
- 固定长度突发,不允许使用busy来结束突发。
1.8、从机结束突发的方式
1、从机错误响应
从机提供一个error响应,主机可以选择结束突发,不再发生剩余数据,也可以选择继续突发。Master终止突发,master需要再error信号响应的周期中,给出IDLE状态。Master继续突发,是否重建突发,由master决定。比如上次突发传输了8拍数据,仅有3拍传输成功,master是否发送剩余5拍,不做要求
2、多层互联终止
主机不允许终止突发,但是从机必须在突发未完成之前,可以正常工作,在多主系统中,可以终止突发,此时其他主机可以访问从机。该系统下,从机必须终止原始主机突发,对新主机做出响应。
1.9、等待期间改变状态
1、等待期间,master可以将传输类型从IDLE更改为NONSEQ,此时主机状态必须保持不变,直到HREADY信号拉高
- 固定长度突发等待时,允许trans从busy改为SEQ,保持到HREADY拉高为止。
- 未定义长度传输等待时,可以从BUSY转为任何其他状态,SEQ被执行,突发继续,IDLE或者NONSEQ被执行,突发终止。
- IDLE传输期间,允许修改地址,trans类型变为NONSEQ时,主机需要保持地址不变,直到READY拉高
- 从机响应一个ERROR信号,master在READY为低时可以改变地址,从机完成响应
以上改变地址和状态,均发生在READY为低。
1.10、总线互联
互连组件提供系统中主从之间的连接。
一个单一的主系统只需要使用解码器和多路复用器。
一个多主系统需要使用一个互连提供从不同的主机到适当的从机的仲裁和路由信号。这种路由对于地址、控制和写数据信号都是必需的。
- 主机发送的地址不能被从机接收,需要实现默认从机提供响应。
- NONSEQ和SEQ传输访问不存在地址,默认从站提供错误响应。
- IDLE和BUSY传输访问不存在地址,从机回应零等待的OKAY。
1.11、protection control
新增HPORT[3:0]信号,总线访问的附加信息,实现某种级别的保护。
该信号指示当前传输:是指令预取还是数据访问,是特权模式还是用户模式访问。
主机带有内存管理场景下,还可以指示当前访问是否支持缓存and缓冲。
注意:
- 主机无法准确生成保护信息,建议master将HPROT设置为0011,
- 绝对必要场景下,从机才用HPROT信息
- HPROT信号和地址总线时序相同,突发传输过程,HPROT要保持恒定。
1.12、memory type
AHB5新增extended_memory_types特性,支持的话,会有该接口信号,没有的话,不需要关注。
该类型主要是通过扩展HPROT位宽来新增信号,HPROT[6:2]表示memory_type。
每bit的含义
Bit | Name | Description | |
HPROT[0] | Data/Inst | 当有效时,这个位表示传输是一个数据访问。当无效时,该位表示转移是指令取回。 | 仅做为提示。当一个事务包含指令和数据项的混合时,该指示无意义。 建议主机将HPROT[0]设置为HIGH,以指示数据访问,除非该访问是明确知道的指令访问。 |
HPROT[1] | Privileged | 当有效时,此位表示传输是特权访问。当无效时,该位表示传输是无特权访问。 | |
HPROT[2] | Bufferable | 如果HPROT[4:3]都无效时,那么当该位: 1.无效,写响应必须从最终目的地给出。 2.有效, 写响应可以从中间点给出,但写传输必须及时地在最终目的地可见。 | |
HPROT[3] | Modifiable | 当生效时,传输的特征可以被修改。当无效时,传输的特征不可被修改。 | |
HPROT[4] | Lookup | 当生效时,传输必须在缓存中查找。当无效时,传输不需要在缓存中查找,并且传输必须传播到最终目的地。 | |
HPROT[5] | Allocate | 当生效时,出于性能原因,该规范建议在缓存中分配此传输。当无效时,出于性能原因,该规范建议不在缓存中分配此传输。 | |
HPROT[6] | Shareable | 当有效时,表示这个转移是到与系统中其他主机共享的内存区域。在传输对其他主机可见之前,不能提供对传输的响应。当无效时,表示此传输是不可共享的,该内存区域不与系统中的其他主机共享。对传输的响应并不保证传输对其他主机是可见的。 |
E结尾类型标识允许提前写响应,nE标识谐响应必须来自最终目的地,不允许提前写响应。另外只能是表格中的类型,不允许出现其他类型。
1.13、device memory的一些约束
所有device-nE和device-E
- 读数据必须从最终目的获取
- 传输不可分割多次,或者和其他传输合并
- 读取不能预取或推测行为
- 写不能合并
- 源和目的相同,传输需要保序
- 传输大小不能改变
- 突发传输可被分解为多个较小传输,原始突发的传输类型和总数,必须和较小分割的传输类型和总数保持相同。
- HPROT唯一可更改传输是bufferable改为non-bufferable
额外,device-E,写响应可以从中间节点获取,写传输给出的写响应其他主机可见,写传输必须及时到达终点。
1.14、normal memory的一些约束
所有normal non_cacheable memory、write_through和write-back,有如下特性:
- 读可被预测
- 读可以预取超过需求的数据
- 写可以合并
- 传输的字符可以按照HBURST和HSIZE信号被修改
- 同源读写操作,需要保序
- 共享传输,响应必须在所有主机可以见时给出。
此外,non_cacheable memory,写传输必须及时到达终点,读数据必须来自终点或者即将写入终点的写传输。读数据从传输中的写数据获取的话,需要保证是从最新写数据获得,且获得的数据不允许作为读缓存数据。读数据不允许缓存数据供后期使用。
对于write-through类型,写响应可能来自中间缓存或者缓冲区。读数据可以被缓存到中间换出或者缓冲池中。读写传输需要缓存查找,且写传输不必被终点可见。
1.15、allocate属性
Write-through和write-back中有该属性,出于性能考虑,HPROT[5]有效时候,需要在cache中分配此类传输,无效是,不建议分配该类传输。
1.16、slave响应传输
主机开始传输,不允许取消传输,必须由slave来响应结束。
HRSEP信号
HRESP | 描述 | |
0 | OKAY | 指示传输完成,是否需要额外cyclye完成请求,需要和RESPOUT一起看 |
1 | ERROR | 传输过程有错误 |
从上表看以看出,传输可以是立即完成,等待,错误响应。
1.17、数据总线
读写数据通道分离。
AHB支持大小端模式传输
1.18、时钟和复位
1.18.1、时钟
每个组件使用一个单一时钟,在时钟上升沿进行采样。
1.18.2、复位
采用异步复位同步释放的复位模式,低有效。
组件定义一个最小的周期数,在这个周期内必须使复位信号生效,以确保该组件完全复位,并且输出处于所需的复位值。
在复位期间,所有主机必须确保地址和控制信号在有效的水平,并且HTRANS[1:0]指示IDLE。
在复位过程中,所有从机必须确保HREADYOUT为HIGH。