目录
AXI4总线
1、什么是AXI
2、AXI4协议的优势
AXI4的工作模式
AXI4读操作:
AXI4写操作
AXI4和AXI4-Lite、AXI4-Stream接口信号
握手信号
AXI相关术语
AXI4总线
1、什么是AXI
AXI(Advanced eXtensible Interface高级可扩展总线)是一种总线协议
AXI4包含3种类型的接口:
1)AXI4:主要面向高性能地址映射通信的需求;(突发数据)(地址映射模式)
2)AXI4-Lite:是一个轻量级的,适用于吞吐量较小的地址映射通信总线;(无突发)
(地址映射模式)
3)AXI4-Stream:面向高速流数据传输(流模式)
2、AXI4协议的优势
可以挂载多个master和slave ,互相交互信息
1)高效:通过标准化的AXI接口,开发者只需要学习一种IP核的通讯协议即可;
2)易用:针对具体应用提供合适的接口协议。
AXI4:面向地址映射的接口,在单地址传输的情况下最大允许256个时钟周期的数据突发长度;
AXI4-Lite:一个轻量级的地址映射单次传输接口,占用较少的资源;
AXI4-Stream:去掉了地址传输的功能,允许无限制的数据突发传输,无需考虑地址映射。
3)易得:标准化的AXI接口协议资源,不仅可以在xilinx官网上获得,也可以在全球范围内ARM的所有合作伙伴处获得。
大量的IP core支持AXI4协议;
大量的第三方AXI工具可提供多样的系统开发、验证和功能定制。
AXI4的工作模式
AXI4和AXI4-Lite包含5个不同的通道:
(1)写地址通道
(2)写数据通道
(3)写响应通道
(4)读地址通道
(5)读数据通道
数据可以在主从设备间同步的双向传输,并且数据传输大小可以改变。AXI4将数据传输的突发长度限制为最大256,AXI4-Lite每次传输仅运输传输一个数据。
AXI4读操作:
如图1所示,AXI4协议主从设备间的读操作使用独立的读地址和读数据通道,只需要一个地址就可以执行最大为256的突发长度的读操作。
- 首先master去判断arready信号,当该信号为高时,代表slave已经准备好接收新的地址信息,否则master不能给slave发送地址信息
- 当第一步完成后,master通过read_addrsess通道给slave发送地址,具体操作:master必须拉高一个arvalid信号,在arvalid信号为高的时候,将对应的地址发送给slave
- 当第二步执行完成后,slave就会通过read_data通道返回数据,master必须在rready和rvalid信号同时为高时,将数据读取,否则不能读取数据;当最后一个数据发送时,slave会将rlast信号同时拉高,代表最后一个数据发送完成。
PS :在数据读取时,读取的数据从图中可以看到不是连续读取,说明slave是空闲时才传递
AXI4写操作
如图2所示,AXI4协议主从设备间的写操作使用写地址、写数据和写响应通道。只需要一个地址就可以执行最大为256的突发长度的写操作。
- 首先master去判断awready信号,当该信号为高时,代表slave已经准备好接收新的地址信息,否则master不能给slave发送地址信息
-
当第一步完成后,master通过write_addrsess通道给slave发送地址,具体操作:master必须拉个一个awvalid信号,在awvalid信号为高的时候,将对应的地址发送给slave
- 然后发送写数据,master必须在wready为高的时候,将wvalid信号拉高,同时将数据发送给salve,当master发送最后一个数据时,将wlast信号拉高一个周期,告诉slave这是最后一个数据,当slave收到wlast信号为高时,就会将收到的数据按照指定的地址写入ddr
4.当master发送完写数据后,必须通过writer response 收到slave的应答信号,Bready会拉 高,在Bvalid也为高电平时,slave会将bresp信号拉高一个周期,master只要判断到该信号为高电平,既可以给slave发送要写的数据
AXI4和AXI4-Lite、AXI4-Stream接口信号
1)全局信号
信号名 |
AXI4 |
AXI4-Lit |
ACLK |
全局时钟 |
|
ARESETN |
全局复位,低有效。 |
2)写地址通道信号
信号名 |
源 |
AXI4 |
AXI4-Lit |
AWID |
主 |
写地址ID。这个信号用于写地址信号组的标记。 |
不支持 |
AWADDR |
主 |
写地址。 写地址给出突发数据传输的第一个传输地址。 |
|
AWLEN |
主 |
突发长度。给出突发传输中准确的传输个数。支持INCR和WRAP传输模式。 突发长度=awlen+1 |
不支持 |
AWSIZE |
主 |
突发大小。 这个信号用于确定突发传输中每个传输的大小。 总线位宽=2^size Betyes |
不支持 |
AWBURST |
主 |
突发类型。该信息与突发大小信息一起,表示在突发过程中,地址如何应用于每个传输。支持INCR和WRAP传输模式。 |
不支持 |
AWLOCK |
主 |
锁类型。该信号提供了关于传输原子特性的额外信息(普通或互斥访问)。 |
不支持 |
AWCACHE |
主 |
缓存类型,建议值为0011。 |
|
AWPROT |
主 |
保护类型,访问权限,建议值为000。 |
|
AWQOS |
主 |
QoS标识符,xilinx AXI4不支持。 |
不支持 |
AWREGION |
主 |
用于每个写操作的地址通道上的域标识符。通过该标识实现一个物理端口对应多个逻辑端口 |
不支持 |
AWUSER |
主 |
xilinx AXI4不支持。 |
不支持 |
AWVALID |
主 |
写地址有效信号。为高指示地址有效。 |
|
AWREADY |
从 |
写地址准备信号。为高表示从设备空闲,准备接收地址;为低表示从设备忙。 |
3)写数据通道信号
信号名 |
源 |
AXI4 |
AXI-Lite |
WDATA |
主 |
写数据,32位到1024位宽 |
只支持32位宽 |
WSTRB |
主 |
写字节选通,用于表示更新存储器的字节通道,对于数据总线的每8位数据有一位写选通信号。 |
从设备端可选择忽略。 |
WLAST |
主 |
写最后一个数据指示信号。表示突发传输中的最后一个数据。 |
不支持 |
WUSER |
主 |
xilinx AXI4不支持。 |
不支持 |
WVALID |
主 |
写有效。为高指示数据有效。 |
|
WREADY |
从 |
写准备。为高表示从设备空闲,准备接收数据;为低表示从设备忙。 |
4)写响应通道
信号名 |
源 |
AXI4 |
AXI-Lite |
BID |
从 |
响应ID。写响应识别标记,BID值必须匹配AWID值。 |
不支持 |
BRESP |
从 |
写响应。该信号表示写状态,可允许相应的表示为OKAY\EXOKAY\SLVERR\DECERR。 |
EXOKAY状态不支持 |
BUSER |
从 |
xilinx AXI4不支持。 |
不支持 |
BVALID |
从 |
写响应有效。为高指示响应数据有效。 |
|
BREADY |
主 |
写响应准备。为高表示主设备空闲,准备接收写响应;为低表示主设备忙。 |
5)读地址通道
信号名 |
源 |
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 |
从 |
读地址准备信号。为高表示从设备空闲,准备接收地址;为低表示从设备忙。 |
6)读数据通道
信号名 |
源 |
AXI4 |
AXI-Lite |
RID |
从 |
读ID标记,该信号是读数据信号组标记,由从设备产生RID,RID必须和读交易中的ARID匹配。 |
不支持 |
RDATA |
从 |
读数据。32位到1024位宽 |
只支持32位宽 |
RRESP |
从 |
读响应。该信号表示读状态,可允许相应的表示为OKAY\EXOKAY\SLVERR\DECERR。 |
EXOKAY状态不支持 |
RLAST |
从 |
读最后一个数据指示信号。表示突发传输中的最后一个数据。 |
不支持 |
RUSER |
从 |
xilinx AXI4不支持。 |
不支持 |
RVALID |
从 |
读有效。为高指示数据有效。 |
|
RREADY |
主 |
读准备。为高表示主设备空闲,准备接收数据;为低表示主设备忙。 |
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 |
用户定义的边带信息,这些信息能伴随数据流进行发送。 |
握手信号
主机发送valid信号(数据有效)
从机发送ready信号(准备好了)
Master (主机):我们自己
Slave(从机): 例如MIG_DDR
握手信号有三种情况,都是对的,分别如下:
(1)vaild在前,ready在后
(2)vaild在后,ready在前
(3)vaild,ready一起
AXI相关术语
Channel (通道)
– Independent collection of AXI signals associated to a VALID signal
Interface (接口)
– Collection of one or more channels that expose an IP core’s function, connecting a master to a slave
– Each IP core may have multiple interfaces.
– Also: AXI4, AXI4-Lite, AXI4-Stream
Bus (总线)
– Multiple-bit signal (not an interface or channel) 多bit信号
一个接口里面有多个通道,每个通道有多个总线
Transfer (传输)
– Single clock cycle where information is communicated, qualified by a VALID handshake. (一个时钟周期的传输)
Data beat.
Transaction (事务)
– Complete communication operation across a channel, composed of a one or more transfers
Burst (突发)文章来源:https://www.toymoban.com/news/detail-781772.html
– Transaction that consists of more than one transfer文章来源地址https://www.toymoban.com/news/detail-781772.html
到了这里,关于FPGA——AXI4总线详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!