FPGA-AXI总线协议
扫描二维码
随时随地手机看文章
AXI(Advanced eXtensible Interface)是一种总线协议,该协议的第一个版本AXI3是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分。2010发布的AMBA4.0包含了AXI的第二个版本AXI4。
AXI4总线分为主、从两端,两者间可以连续的进行通信,AXI4总线采用READY、VALID握手通信机制,主设备收到从设备发送的READY,主设备将数据和VALID信号同时发给从设备。1)、AXI4:主要面向高性能地址映射通信的需求;2)、AXI4-Lite:是一个轻量级的,适用于吞吐量较小的地址映射通信总线,占用较少的逻辑资源,AXI4-Lite所有的猝发长度为1,数据总线宽度为32位或64位;
3)、AXI4-Stream:面向高速流数据传输,AXI4-Stream数据总线宽度为8、16、32、64、128、256、512和1024位,去掉了地址传输的功能,允许无限制的数据突发传输,无需考虑地址映射。
AXI总线分为五个通道:
- 读地址通道,包含ARVALID,ARADDR,ARREADY信号;
- 写地址通道,包含AWVALID,AWADDR,AWREADY信号;
- 读数据通道,包含RVALID,RDATA,RREADY,RRESP信号;
- 写数据通道,包含WVALID,WDATA,WSTRB,WREADY信号;
- 写应答通道,包含BVALID,BRESP,BREADY信号;
AXI4和AXI4-Lite接口信号1)全局信号
|
信号名 |
AXI4 |
AXI4-Lite |
| ACLK |
全局时钟 |
|
| ARESETN |
全局复位,低有效 |
|
|
信号名 |
源 | AXI4 |
AXI4-Lite |
| AWID |
主 |
写地址ID。这个信号用于写地址信号组的标记 | 不支持 |
|
AWADDR |
主 |
写地址。写地址给出突发数据传输的第一个传输地址 |
|
| AWLEN |
主 |
突发长度。给出突发传输中准确的传输个数。支持INCR和WRAP传输模式。 |
不支持 |
| AWSIZE |
主 |
突发大小。这个信号用于确定突发传输中每个传输的大小。 |
不支持 |
| AWBURST |
主 |
突发类型。该消息与突发大小消息一致,表示在突发过程中,地址如何应用于每个传输。支持INCR和WRAP传输模式。 | 不支持 |
|
AWLOCK |
主 | 锁类型。该信号提供了关于传输原子特性的额外信息 | 不支持 |
|
AWCACHE |
主 | 缓存类型,建议值为0011。 |
|
|
AWPROT |
主 | 保护类型,建议值为000。 |
|
| AWQOS |
主 |
QoS标识符,Xilinx AXI4 不支持。 |
不支持 |
|
AWREGION |
主 | 用于每个写操作的地址通道上的域标识符。 |
不支持 |
| AWUSER |
主 |
Xilinx不支持 | 不支持 |
| AWVALID | 主 | 写地址有效信号。为高指示地址有效。 |
|
| AWREADY |
从 |
写地址准备信号。为高表示从设备空闲,准备接收;为低表示从设备忙。 |
|
|
信号名 |
源 | AXI4 | AXI4-Lite |
|
WDATA |
主 |
写数据,32位到1024位宽。 |
只支持32位宽 |
|
WSTRB |
主 |
写字节选通,用于表示更新存储器的字节通道,对于数据总线的每8位数据有一位写选通信号。 |
从设备端可选择忽略 |
| WLAST |
主 |
写最后一个数据指示信号。表示突发传输中的最后一个数据。 |
不支持 |
| WUSER | 主 | Xilinx AXI4不支持 | 不支持 |
|
WVALID |
主 |
写有效。为高指示数据有效。 |
|
|
WREADY |
从 |
写准备。为高表示从设备空闲,准备接收数据;为低表示从设备忙。 |
|
|
信号名 |
源 |
AXI4 |
AXI-Lite |
| BID |
从 |
响应ID。写响应识别标记,BID值必须匹配AWID值 |
不支持 |
|
BRESP |
从 |
写响应。该信号表示写状态,可允许相应的表示为OKAY/EXOKAY/SLVERR/DECERR。 |
EXOKAY状态不支持 |
| BUSER |
从 |
Xilinx AXI4不支持。 | 不支持 |
| BVALID |
从 |
写响应有效。为高指示响应数据有效。 |
|
|
BREADY |
主 | 写响应准备。为高表示主设备空闲,准备接收数据;为低表示主设备忙。 |
|
|
信号名 |
源 | AXI4 |
AXI-Lite |
|
ARID |
主 |
读地址ID。这个信号用于读地址信号组的标记。 |
不支持 |
|
ARADDR |
主 |
读地址。读地址给出突发数据传输的第一个传输地址。 |
|
| ARLEN | 主 | 突发长度。给出突发传输中准确的传输个数。支持INCR和WRAP传输模式。 | 不支持 |
|
ARSIZE |
主 |
突发大小。这个信息用于确定突发传输中每个传输的大小。 |
不支持 |
|
ARBURST |
主 | 突发类型。该信息与突发大小信息一起,表示在突发过程中,地址如何应用于每个传输。支持INCR和WRAP传输模式。 | 不支持 |
|
ARLOCK |
主 | 锁类型。该信号提供了关于传输原子特性的额外信息。 | 不支持 |
|
ARCACHE |
主 |
缓存类型,建议值为0011。 |
|
|
ARPROT |
主 |
保护类型,建议值为000。 |
|
|
ARQOS |
主 | QoS标识符,Xilinx AXI4不支持。 | 不支持 |
|
ARREGION |
主 | 用于每个读操作的地址通道上的域标识符。 | 不支持 |
|
ARUSER |
主 | Xilinx AXI4 不支持。 | 不支持 |
|
ARVALID |
主 |
读地址有效信号。为高指示地址有效。 |
|
|
ARREADY |
从 |
读地址准备信号。为为高表示从设备空闲,准备接收数据;为低表示从设备忙。 |
|
|
信号名 |
源 | AXI4 |
AXI-Lite |
|
RID |
从 |
读ID标记,该信号是读数据信号组标记,由从设备产生RID,RID必须和读交易中的ARID匹配。 |
不支持 |
|
RDATA |
从 |
读数据。32位到1024位宽。 |
只支持32位宽 |
| RRESP | 从 | 读响应。该信号表示读状态,可允许相应的表示为OKAY/EXOKAY/SLVERR/DECERR。 |
EXOKAY状态不支持 |
|
RLAST |
从 |
读最后一个数据指示信号。表示突发传输中的最后一个数据。 |
不支持 |
|
RUSER |
从 |
Xilinx AXI4不支持。 |
不支持 |
|
RVALID |
从 | 读有效。为高指示数据有效。 |
|
|
RRADY |
主 |
读准备。为高表示主设备空闲,准备接收数据;为低表示主设备忙。 |
|
|
信号名 |
源 | 默认值 |
功能 |
| 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 |
用户定义的边带信息,这些信息能伴随数据流进行发送。 |
主机/设备之间的握手过程以及READY和VALID握手信号的关系以及默认值。
1、全部5个通道使用相同的VALID/READY握手机制传输数据及控制信息。传输源产生VALID信号来指明何时数据或控制信息有效。而目的源产生READY信号来指明已经准备好接受数据或控制信息。传输发生在VALID和READY信号同时为高的时候。VALID和READY信号的出现有三种关系。
(1)VALID先变高READY后变高。时序图如下:
(2)READY先变高VALID后变高。时序图如下:
同样在箭头处信息传输发生。
(3)VALID和READY信号同时变高。时序图如下:
在这种情况下,信息传输立马发生,如图箭头处指明信息传输发生。
2、通道之间的关系
地址、读、写和写响应通道之间的关系是灵活的。
例如,写数据可以出现在接口上早于与相关联的写地址,也有可能写数据与写地址在一个周期中出现。
两种关系必须被保持:
(1)读数据必须总是跟在与其数据相关联的地址之后。
(2)写响应必须总是跟在与其相关联的写事务的最后出现。
3、通道握手信号之间的依赖性
读事务握手依赖关系如图:
(1)设备可以在ARVALID出现的时候在给出ARREADY信号,也可以先给出ARREADY信号,再等待ARVALID信号。
(2)但是设备必须等待ARVALID和ARREADY信号都有效才能给出RVALID信号,开始数据传输。
写事务握手依赖关系如图:
(1)主机必须不能够等待设备先给出AWREADY或WREADY信号后再给出信号AWVALID或WVALID。
(2)设备可以等待信号AWVALID或WVALID信号有效或者两个都有效之后再给出AWREADY信号。
(3)设备可以等待AWVALID或WVALID信号有效或者两个都有效之后再给出WREADY信号。





