整理 | Jinzzj
本章节记录一些关于AXI总线的基础知识,方便后续查看。
什么是AXI总线
AXI, which means Advanced eXtensible Interface, is an interface protocol
AXI就是Advanced eXtensible Interface,是ARM公司定义的一种接口协议,与AMBA(高级微控制器总线架构)标准相同。AXI3/AXI4 规范可在 ARM 网站(链接)上免费获得。
有 3 种类型的 AXI4 接口 (AMBA 4.0):
- AXI4(即全 AXI4):通常用于用于高性能内存映射要求。
- AXI4-Lite:用于简单的低吞吐量内存映射通信(例如,与控制和状态寄存器之间来回切换)。
- AXI4-Stream:用于高速流数据。
Note:此处的“AXI”是指 AXI3、AXI4 和 AXI4-Lite。AXI3 接口接近完整的 AXI 接口。
AXI Write and Read
从图中可以看到,AXI协议属于主从通信,并且定义了5个信号通道:
- 有2个通道用于读取
- 读取地址(Read Address)
- 读取数据(Read Data)
- 有3个通道用于写入事务
- 写入地址(Write Address)
- 写入数据(Write Data)
- 写入响应(Write Response)
当然AXI的任何接口(AXI4 / AXI3 / AXI4-Lite)都可以是只读(Read-only)或者只写(Write-only)的
在单个通道上传输的一段数据就是数据传输过程。当 VALID 和 READY 信号都处于高电平,而时钟有上升沿时,就会发生传输。例如,在下图中,传输发生在 T3 上:
AXI Read
AXI 读取事务需要在 2 个读取通道上进行多次传输。
- 首先,地址读取通道从主设备发送到从设备,例如发送地址信号和控制信号。
- 然后,此地址信号上的数据将在数据通道上从 从设备 传输到 主设备。
Note:如下图所示,每个地址可以进行多次数据传输。这种类型的事务称为突发(Brust)。
AXI Write
AXI 写入事务需要在 3 个读取通道上进行多次传输。
- 首先,地址写入通道被发送到从设备,以设置地址和一些控制信号。
- 然后,此地址上的数据在写入数据通道上被传输到从设备。
- 最后,写入响应信号从 从设备 发送到写入响应通道上的主设备,以指示传输是否成功。
写入响应通道上可能的响应值为: - 正常 (0b00):正常访问成功。指示正常访问已成功
- EXOKAY (0b01): 专享即可
- SLVERR (0b10):从属错误。已成功到达从设备,但从设备希望向主设备返回错误条件(例如,读取的数据无效)
- DECERR (0b11): 解码错误。通常由互连组件生成,以指示事务地址处没有从设备
注意:读取事务也具有响应值,但此响应作为读取响应通道的一部分传输
AXI4 接口要求
AXI4 规范中同时记录了一些要求。
需要注意的是:
- 当有效(AxVALID/xVALID)信号被置位时,它必须保持置位状态直到从设备的置位AxREADY/xREADY后的时钟上升沿信号来临。
- 发送信息的 AXI 接口的有效信号不得依赖于接收该信息的 AXI 接口的 READY 信号。但是,READY 信号的状态可能取决于有效信号
- 写入响应信号必须跟在它所属的写入事务中的最后一次写入传输之后(个人理解必须遵循时序,也就是必须在写入完成后,从设备才能发送写入响应信号)
- 读取数据必须始终跟在与数据相关的地址之后
- 从设备必须等待 ARVALID 和 ARREADY 同时被置位后,才能置位 RVALID 以指示有效数据可用