写在前面:
最近需要使用AXI-BRAM、XDMA框架的PCIE以及UART协议,都有涉及到AXI接口,因此需要深入研究一下这个接口的各个信号的含义,以更好的完成设计和验证,这里整理了网上找到的一些内容以及自己的思考,内容比较多,纯干货,不整虚头八脑的,需要分为多期来完成。大家一起学习进步,欢迎在评论区讨论或给出您的宝贵意见。
AXI(Advanced eXtensible Interface)协议是一种由ARM公司定义的高性能、高带宽、低延迟的片上总线协议,广泛应用于SoC(System on Chip)设计中。它支持高效的数据传输和复杂的系统架构,是AMBA(Advanced Microcontroller Bus Architecture)规范的一部分。AMBA规范还包括了APB(常用于外设),AHB。
AXI是纯同步的总线,所有信号都需要在时钟CLK的上升沿进行改变和采样。一个信号如果在第n个时钟上升沿被改编为新值,那么采样者只能在第n+1个时钟上升沿采样到这个新值。
AXI协议的特点包括:
1. 高性能:通过分离的地址/控制通道和数据通道,支持非对齐数据传输和突发传输,提供高带宽、低延迟的数据传输能力。
2. 灵活性:采用主从设备间的握手协议,实现数据传输的可靠性和灵活性。支持乱序访问和Outstanding传输访问,增强了灵活性。
3. 时序收敛:地址和数据通道分离,使得时序收敛更易实现,简化了设计的复杂度。
4. 低功耗:定义了进出低功耗节电模式前后的握手协议,降低了功耗。
AXI协议的结构包括五个通道:
以下3个通道用来写数据(数据从AXI-master流向AXI-slave):
- 写地址 (AXI Write Address Channel, 简称 AW) :AXI-master 告诉 AXI-slave 要写的首地址、长度、ID 等信息
- 写数据 (AXI Write Data Channel, 简称 W) :AXI-master 向 AXI-slave 传送数据
- 写响应 (AXI Write Response Channl, 简称 B) : 在收到数据后, AXI-slave 向 AXI-master 响应
以下 2 个通道用来读数据 (数据从 AXI-slave 流向 AXI-master):
- 读地址 (AXI Read Address Channel, 简称 AR) :AXI-master 告诉 AXI-slave 要读的首地址、长度、ID 等信息
- 读数据 (AXI Read Data Channel, 简称 R) :AXI-slave 向 AXI-master 传送数据
AXI协议的工作机制采用Ready, Valid握手通信机制。在进行数据通信前,主从模块需要根据操作对各所用到的数据、地址通道进行握手。AXI协议定义了三种burst读写类型:FIXED、INCR、WRAP,以及支持非对齐传输和乱序传输(Out of order)。
AXI协议在ZYNQ等SoC中实现了多种变体,如AXI4、AXI4-Lite和AXI4-Stream,以适应不同的性能和设计需求。AXI4面向高性能地址映射通信,AXI4-Lite是轻量级接口,而AXI4-Stream则面向高速流数据传输。
在设计中,AXI协议的理解和应用对于确保系统性能和可靠性至关重要。设计师需要熟悉AXI协议的信号、握手机制、突发传输机制以及乱序和原子操作等特性,以实现高效的数据通信和系统性能优化。