一、什么是AXI总线
AXI是一种总线协议,可以挂在多个master和slave,AXI总线包括3中类型接口:
- AXI4:主要面向高性能地址映射通信的需求;(突发数据)(地址映射模式)
- AXI4-Lite:是一个轻量级的,适用于吞吐量较小的地址映射通信总线;(无突发)(地址映射模式)
- AXI4-stream:面向高速流数据传输(流模式)
AXI4、AXI4-LITE总线信号组成:写地址通道、写数据通道、写响应通道、读地址通道、读数据通道,信号组成如表1至表6所示。
AXI-stream总线信号组成如表7所示。
表1:全局信号
信号名 | AXI4 | AXI4-LITE |
ACLK | 全局时钟 | |
ARESETN | 全局复位,低有效 |
表2:写地址通道信号
信号名 | 源 | AXI4 | AXI4-Lit |
AWADDR | 主 | 写地址。 写地址给出突发数据传输的第一个传输地址。 | |
AWVALID | 主 | 写地址有效信号。为高指示地址有效。 | |
AWREADY | 从 | 写地址准备信号。为高表示从设备空闲,准备接收地址;为低表示从设备忙。 | |
AWCACHE | 主 | 缓存类型,建议值为0011。 | |
AWPROT | 主 | 保护类型,访问权限,建议值为000。 | |
AWID | 主 | 写地址ID。这个信号用于写地址信号组的标记。 | 不支持 |
AWLEN | 主 | 突发长度。给出突发传输中准确的传输个数。支持INCR和WRAP传输模式。 突发长度=awlen+1 | 不支持 |
AWSIZE | 主 | 突发大小。 这个信号用于确定突发传输中每个传输的大小。 总线位宽=2^size Betyes | 不支持 |
AWBURST | 主 | 突发类型。该信息与突发大小信息一起,表示在突发过程中,地址如何应用于每个传输。支持INCR和WRAP传输模式。 | 不支持 |
AWLOCK | 主 | 锁类型。该信号提供了关于传输原子特性的额外信息(普通或互斥访问)。 | 不支持 |
AWQOS | 主 | QoS标识符,xilinx AXI4不支持。 | 不支持 |
AWREGION | 主 | 用于每个写操作的地址通道上的域标识符。通过该标识实现一个物理端口对应多个逻辑端口 | 不支持 |
AWUSER | 主 | xilinx AXI4不支持。 | 不支持 |
表3:写数据通道信号
信号名 | 源 | AXI4 | AXI-Lite |
WDATA | 主 | 写数据,32位到1024位宽 | 只支持32位宽 |
WSTRB | 主 | 写字节选通,用于表示更新存储器的字节通道,对于数据总线的每8位数据有一位写选通信号。 | 从设备端可选择忽略。 |
WVALID | 主 | 写有效。为高指示数据有效。 | |
WREADY | 从 | 写准备。为高表示从设备空闲,准备接收数据;为低表示从设备忙。 | |
WLAST | 主 | 写最后一个数据指示信号。表示突发传输中的最后一个数据。 | 不支持 |
WUSER | 主 | xilinx AXI4不支持。 | 不支持 |
表4:写响应通道
信号名 | 源 | AXI4 | AXI-Lite |
BRESP | 从 | 写响应。该信号表示写状态,可允许相应的表示为OKAY\EXOKAY\SLVERR\DECERR。 | EXOKAY状态不支持 |
BVALID | 从 | 写响应有效。为高指示响应数据有效。 | |
BREADY | 主 | 写响应准备。为高表示主设备空闲,准备接收写响应;为低表示主设备忙。 | |
BID | 从 | 响应ID。写响应识别标记,BID值必须匹配AWID值。 | 不支持 |
BUSER | 从 | xilinx AXI4不支持。 | 不支持 |
表5:读地址通道
信号名 | 源 | AXI4 | AXI-Lite |
ARADDR | 主 | 读地址。读地址给出突发数据传输的第一个传输地址。 | |
ARVALID | 主 | 读地址有效信号。为高指示地址有效。 | |
ARREADY | 从 | 读地址准备信号。为高表示从设备空闲,准备接收地址;为低表示从设备忙。 | |
ARCACHE | 主 | 缓存类型,建议值为0011。 | |
ARPROT | 主 | 保护类型,建议值为000。 | |
ARID | 主 | 读地址ID。这个信号用于读地址信号组的标记。 | 不支持 |
ARLEN | 主 | 突发长度。给出突发传输中准确的传输个数。支持INCR和WRAP传输模式。 | 不支持 |
ARSIZE | 主 | 突发大小。这个信号用于确定突发传输中每个传输的大小。 | 不支持 |
ARBURST | 主 | 突发类型。该信息与突发大小信息一起,表示在突发过程中,地址如何应用于每个传输。支持INCR和WRAP传输模式。 | 不支持 |
ARLOCK | 主 | 锁类型。该信号提供了关于传输原子特性的额外信息(普通或互斥访问)。 | 不支持 |
ARQOS | 主 | QoS标识符,xilinx AXI4不支持。 | 不支持 |
ARREGION | 主 | 用于每个读操作的地址通道上的域标识符。 | 不支持 |
ARUSER | 主 | xilinx AXI4不支持。 | 不支持 |
表6:读数据通道
信号名 | 源 | AXI4 | AXI-Lite |
RDATA | 从 | 读数据。32位到1024位宽 | 只支持32位宽 |
RRESP | 从 | 读响应。该信号表示读状态,可允许相应的表示为OKAY\EXOKAY\SLVERR\DECERR。 | EXOKAY状态不支持 |
RVALID | 从 | 读有效。为高指示数据有效。 | |
RREADY | 主 | 读准备。为高表示主设备空闲,准备接收数据;为低表示主设备忙。 | |
RID | 从 | 读ID标记,该信号是读数据信号组标记,由从设备产生RID,RID必须和读交易中的ARID匹配。 | 不支持 |
RLAST | 从 | 读最后一个数据指示信号。表示突发传输中的最后一个数据。 | 不支持 |
RUSER | 从 | xilinx AXI4不支持。 | 不支持 |
表7:AXI4-Stream总线信号组成
信号名 | 源 | 默认值 | 功能 | |
传输数据类 | TVALID | No | N/A | Stream读写数据有效。为高指示数据有效 |
TREADY | Yes | 1 | Stream读写读准备。为高表示对端设备空闲,准备接收数据;为低表示对端设备忙。 | |
TDATA | Yes | 0 | Stream读写数据,8到4096位宽。 | |
数据修饰类 | TSTRB | Yes | 同TKEEP,否则为1 | 字节选通信号。用于表示更新存储器的字节通道,对于数据总线的每8位数据有一位选通信号。 |
TKEEP | Yes | 1 | 字节选通信号。TKEEP未被确认的那些相关的字节是空字节,可以从数据流中去除。 | |
TLAST | Yes | 0 | 表明包的边界 | |
传输修饰类 | TID | Yes | 0 | 数据流标识符 |
TDEST | Yes | 0 | 数据流路由信息 | |
TUSER | Yes | 0 | 用户定义的边带信息,这些信息能伴随数据流进行发送。 |
二、AXI4总线传输时序
AXI4/AXI4-lite的读写操作如图1,图2所示。
AXI-stream的数据操作如图3所示。
握手:
AXI4协议的通信机制是从通过握手过程建立起来的,握手情况分为以下3种:
情况1:主机先于从机做好了发送数据的准备
情况2:主机后于从机做好了发送数据的准备
情况3:主机、从机同时做好了发送/接收数据的准备
写操作:
图1:AXI4/AXI4-LITE写操作
读操作:
图2:AXI4/AXI4-LITE写操作
AXI4-Stream总线数据传输机制
在图3中,TREADY 为高电平,表示从机已做好数据接收准备,同时当 TVALID 信号拉高时,TDATA、TKEEP、TUSER同步进行发送。TLAST 信号在 TDATA 最后发送最后一字节时拉高并保持一个周期。数据发送完毕,将 TVALID 拉低,即完成一次传输过程。