手撕 AXI 总线
AXI 总线
AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。
AMBA 总线包括三个部分
- APB
- AHB
- AXI: 向后兼容 AHB 和 APB
AXI 的特点:
- 突发传输,可以一直传输,效率高
时序顺序,参考 IHI022E 文档
AXI 总线包含 5个通道,五个通道可以使读写数据过程分离。
- 写地址通道,信号前缀(aw_)
- 写数据通道,信号前缀(w_)
- 写响应通道,信号前缀(b_)
- 读地址通道,信号前缀(ar_)
- 读数据通道,信号前缀(r_)
前三个通道完成写数据的过程,后两个通道完成读数据的过程。
AXI 的时序,参考 XILINX 的代码,可以 使用 VIVADO自动生成的IP 进行仿真后查看时序
波形时序:
- VALID 和 READY 同时为高代表数据有效,其中VALID来自主机,READY 来自从机
- 先写地址,紧接着写数据,最后一个数据跟随LAST
- 先读地址,紧接着读数据,最后一个数据跟随LAST信号
- 写完数据,有一个响应信号。
==LAST信号仅仅存在于数据读写数据通道中,在读写地址通道中是不包含的==
AXI 实现步骤
突发传输的数据长度为 1 - 256 (2的n 次方)
写步骤
- 写首地址 (写地址通道)
- 写完首地址,突发传输数据(写数据通道)
- 控制LAST 信号(写数据通道)
- 等待响应信号 (写响应通道)
读步骤
- 写首地址
- 等待从机传输的数据,当VALID和READY都为高时读取数据
- 接受LAST信号
实现的功能:
- 向从机的 0 地址写 1 - 10;
- 读从机的 0 地址