AXI4 协议我的初识
具体看文档AMBA®AXI and ACE Protocol Specification AXI3, AXI4, AXI5, ACE and ACE5
文章目录
1 几个讲的很好的网站
- https://blog.youkuaiyun.com/lum250/article/details/120912567?spm=1001.2014.3001.5506
- https://zhuanlan.zhihu.com/p/641597910
- https://zhuanlan.zhihu.com/p/145936888
- https://mp.weixin.qq.com/s?__biz=MzUyNTc4NTk0OA==&mid=2247484738&idx=1&sn=7edadd74332455e596320f842c36c0a6&chksm=fa198b71cd6e0267c16c05ffe247f144471fba6c12053ee59cd82f3e12ff0930d92f7b27946f&scene=21#wechat_redirect
以下内容借鉴于这几个网站进行总结
2 axi的总类
AXI4 是 ARM 公司提出的是一种高性能、高带宽、低延迟的片内总线,主要描述了主设备和从设备之间的数据传输方式
axi分为stream,lite,full三种,
AXI4(AXI4-Full): 满足高性能内存映射(memory-mapped)需求。支持256长度突发(burst)传输。
AXI4-Lite: 对于简单的、低吞吐量的内存映射通信(例如,与控制寄存器和状态寄存器之间的通信)。不可突发传输。
AXI4-Stream: 用于高速流数据。不需要地址,允许无限的数据突发大小。
3 axi_full和axi_lite
3.1 axi_full和axi_lite的共同之处
AXI4-Lite 是 AXI4_full 协议的子集,旨在与组件中较小较简单的控制寄存器型接口实现通信。
AXI4-Lite和AXI4_full都有5个通道,每个通道都是单向的(主到从或者从到主)
写三个通道:写地址通道awaddr;写数据通道wdata;写响应通道bresp
读两个通道:读地址通道rwaddr;读数据通道rdata(读响应在这个通道里面,省去了单独的读响应通道)
每个通道都有valid和ready握手信号,写代码时,valid一定先拉高于ready
axi_full和axi_lite都有如下的信号
3.2 依赖关系
具体的依赖关系可以看手册AMBA®AXI and ACE Protocol Specification AXI3, AXI4, AXI5, ACE and ACE5的第三章,或者有篇csdn的文章也还行https://blog.youkuaiyun.com/weixin_42507186/article/details/118964583
这里我主要讨论axi4的依赖关系,
图中的单头箭头表示:其指向的信号可以在箭头起始信号置起之前或之后置起(无依赖)
图中的双头箭头表示:其指向的信号必须在箭头起始信号置起之后置起(指向信号依赖起始信号)
可以看到五个通道之间是独立的,但是有几点需要注意:
- 写通道和读通道没有任何关系,
- 写数据可以先于写地址(允许先发数据后发地址,但是一般都先发地址再发数据),AXI 协议并没有对写数据以及写地址通道中的握手信号先后顺序做出规定
- 从机 BVALID 信号有效需要等待 AWVALID、 AWREADY 、WVALID 、 WREADY、WLAST 信号置高
- 发送方 VALID 一定不能依赖接收方 READY 信号(VALID 的拉高与READY无关),接