AXI通道 | • read address 读地址 • read data 读数据 • write address 写地址 • write data 写数据 • write response 写响应 为什么没有读响应信号呢? 因为VALID/READY握手机制只允许一个方向的数据流,对于读事务,数据(data和resp)从slave流向master,而对于写事务,数据从master流向slave。读事务时,slave会断言RLAST信号,以表明最后一个数据项正在被传输。所以写事务必须有专门的写响应信号,来指示当前写事务完成,否则在下一次读事务时,可能读到原来的信息。 |
每个独立通道由一组信息信号以及VALID和READY信号组成,这些信号提供了双向握手机制(仅当 VALID 和 READY 信号均为高电平时才会发生传输) 读数据通道和写数据通道都包括一个LAST信号来指示事务中最后数据项的传输 | |
Interface and interconnect 接口和互连 | AXI为interface提供的接口定义: • between a master and the interconnect • between a slave and the interconnect • between a master and a slave 系统常用的Interconnect: 1.共享地址和数据总线 2.共享地址总线和多条数据总线 3.多层,具有多个地址和数据总线。 |
AXI总线信号 | 所有的信号都在时钟上升沿时进行采样 AWID WID ARID RID BID(写响应):
RRESP --- read response 、BRESP --- write response: 他们都有四个值来指示读写状态:OKEY、EXOKEY、SLVERR、DECERR OKAY响应表明:
Exclusive OKAY 表明:
Slave error 表明:
Decode error 表明:
|
通道握手 | source(请求方)生成VALID信号以指示数据或控制信息何时可用。 destination(接受方)生成READY信号以指示它接受数据或控制信息。 仅当VALID和READY信号均为高电平时才会发生传输。 图一:协议规定在这种情况下,VALID 信号一旦置起就不能置低,直到完成握手(handshake occurs),至少传输一周期数据。 协议另外规定:发送方不能通过等待接收方 READY 信号来确定置起 VALID 信号的时机。 这句原文为:A source is not permitted to wait until READY is asserted before asserting VALID. 意思是,READY 信号可能先到达,如上图二的情况。但是设计发送方逻辑时,不能将 READY 信号作为置高 VALID 逻辑的条件,比如将 READY 信号通过组合逻辑生成 VALID 信号。 换句话说,发送方准备发送置起 VALID 信号是完全主动与独立的过程。接收方 READY 信号按照协议可以依赖发送方 VALID 信号,但如果此时发送方也依赖接收方信号,就会造成死锁的情况,所以协议在这里强调了 VALID 信号的主动性。 实现细节: READY 信号原则上由接收方自身的接收状况以及 VALID 信号控制。(或者仅由接收方自身的接收状况决定)协议中没有规定 READY 信号的默认状态,即未进行传输时的电平状态(default value)。 协议建议AW/AR,READY 信号的默认电平为高电平。若默认电平为低,则每次传输至少需要 2 个周期才能完成,第一个周期置高 VALID 信号,第二个周期从机才会置高 READY 信号。相当于每次传输增加 1 个周期时间开销,这在某些情况下会对传输效率有较大的影响。 |
握手依赖关系 | 单箭头表示其指向的信号可以在箭头起始信号置起之前或之后置起; 双箭头表示其指向的信号必须在箭头起始信号置起之后置起 slave必须在断言BVALID之前等待WLAST被断言,因为写响应BRESP必须在写事务的最后一次数据传输之后才发出信号。 |
Burst传输 | burst传输是一种适用于AMBA协议的规则,通过这种规则,我们可以控制AMBA进行具体的数据传输活动,在这种规则下,主设备发送控制信息和首地址信息,从设备根据这些信号计算接下来的地址信息。 换言之,在这种规则下,主设备只需要发送一拍信息,就可以通过计算,决定未来数拍,写入或读出的地址。下图中的读操作就生动形象的描述了这种Burst传输,一拍的地址和控制信号,操控了四拍的读出数据。通过这种形式,控制信号的效率大大提升。 Burst传输的流程:
(burst传输不能超过4KB的地址边界,同时burst传输一旦开始,不允许中止) |
Burst 信号 | AxLEN ---- burst length burst length(突发传输长度)对应8位的ARLEN信号,和8位的AWLEN信号,这个信号代表额外的transfer数量,即从设备在首地址外计算几次地址,或者说在首地址对应的数据外,需要额外进行多少次传输。 ARLEN[7:0]与AWLEN[7:0]能表示0-255之间的数值,加上首地址对应的一次传输,引申出了burst length的数值范围为1-256,即在burst规则下总共进行多少次数据传输。 明白了这个概念,这里AXI3与AXI4协议的规定就出现了区别:
除此以外,具体的突发传输种类,也决定着burst length的有效值。 |
AxSIZE ---- burst size: (burst size)突发传输大小对应3位的AWSIZE和ARSIZE,这个信号代表的是传输的数据位宽,单位为8bit的字节。Bytes=2^Burst_size | |
AxBURST ---- burst type:
突发传输有以下几种类型:
| |
突发传输的地址计算(ARADDR/AWADDR) 看协议P48 | |
Narrow transfers 窄位宽传输 | master产生比它的数据总线窄的传输时,地址和控制信息确定传输使用哪些字节通道。 在这种传输过程中,Master需要告知slave数据通道中哪些字节是有效的,这就需要使用到W通道中的WSTRB信号。 WSTRB信号(写选通信号,写数据总线的每8位有一个写选通信号) WSTRB[n] 对应 WDATA[8n+7:8n],也就是:当 WSTRB[n] 为 1 时,WDATA[8n+7:8n]有效。 |
Byte invariance 大小端问题 | 小端:高字节数据存在低地址位 大端:高字节数据存在高地址位
|
Unaligned transfers 非对齐传输 (很少用) | AXI 协议支持地址非对齐的传输,允许突发传输的首字节地址,即起始地址与突发传输位宽不对齐。
|
Outstanding translation 超前传输 | 之前讨论的burst传输,可以看做“单次传输对应多个地址”,主要的目的是为了提高单次传输的效率,这三种对应的是提高多次传输的效率,根据ID来指示传输特性。 看资料: https://zhuanlan.zhihu.com/p/368204066 |
Out of order 乱序传输 | |
Interleaving 交错传输 |
AXI学习笔记
最新推荐文章于 2024-07-09 13:48:54 发布