AXI总线协议简述
前言
AXI(Advanced eXtensible Interface)是 AMBA(Advanced Microcontroller Bus Architecture)协议家族的一部分,由 ARM 公司制定。AXI 是一种高性能、可扩展的总线协议,广泛用于 SoC(System on Chip) 设计中,特别适用于高带宽、低延迟的应用。它主要用于在系统中不同组件之间传输数据和控制信号,尤其是 CPU、内存、外设之间的通信。
AXI 协议的特点是支持 高吞吐量 和 低延迟 的数据传输,具备 多主多从结构,并且支持 独立的读写通道,从而提高总线的效率。下面是对 AXI 协议的详细介绍。
AXI 总线的核心特性
独立的读写通道:
AXI 协议将读操作和写操作分成了两个完全独立的通道,分别通过 读通道 和 写通道 传输。这意味着读和写操作可以同时进行,彼此互不干扰,极大提高了系统的吞吐量和性能。握手机制:
AXI 使用valid
和ready
信号来协调数据的传输,确保发送方和接收方在数据传输前都准备好。valid
信号表明数据有效,ready
信号表明接收方准备好接受数据,只有两者同时为高电平时,数据传输才会进行。这种握手机制保证了通信的可靠性和同步性。地址与数据分离:
AXI 协议将地址和数据分为不同的信号通道,地址的传输与数据的传输是独立的。它采用地址提前机制,即地址通道先行,数据通道随后,这种设计减少了数据传输的等待时间。突发传输(Burst Transfer):
AXI 支持突发传输,一次传输可以连续发送多笔数据,且这些数据共享同一个起始地址。突发传输有三种类型:- 固定突发:每次传输的地址保持不变。
- 递增突发:每次传输的地址递增。
- 包装突发:地址以固定的包长度循环变化。
低延迟高带宽:
AXI 协议通过分离地址和数据通道、独立的读写通道,以及支持突发传输的特性,能够提供低延迟和高带宽的数据传输能力。
AXI 通道
AXI 协议将总线操作分为以下 5 个独立的通道:
读地址通道(Read Address Channel):
- 用于发送读操作的地址。
- 信号主要有:
ARADDR
(读地址)、ARVALID
(地址有效信号)、ARREADY
(地址准备好信号)等。
读数据通道(Read Data Channel):
- 用于从从设备返回读操作的数据。
- 信号主要有:
RDATA
(读数据)、RVALID
(数据有效信号)、RREADY
(接收端准备好信号)、RRESP
(读响应)等。
写地址通道(Write Address Channel):
- 用于发送写操作的地址。
- 信号主要有:
AWADDR
(写地址)、AWVALID
(地址有效信号)、AWREADY
(地址准备好信号)等。
写数据通道(Write Data Channel):
- 用于发送写操作的数据。
- 信号主要有:
WDATA
(写数据)、WSTRB
(写数据的字节掩码)、WVALID
(数据有效信号)、WREADY
(接收端准备好信号)等。
写响应通道(Write Response Channel):
- 用于从从设备返回写操作的结果。
- 信号主要有:
BVALID
(写响应有效信号)、BREADY
(接收端准备好信号)、BRESP
(写响应信号)等。
AXI 信号详细说明
每个通道都使用 VALID
和 READY
信号来进行握手,确保主设备和从设备双方都准备好进行数据传输。
- VALID:发送方用来指示当前信号有效。
- READY:接收方用来指示它准备好接收数据。
当 VALID
和 READY
同时为高时,数据或地址才能传输。下面是每个通道的具体信号:
**读地址通道 (Read Address Channel)**:
ARADDR
:读地址。ARVALID
:读地址有效。ARREADY
:从设备准备好接收地址。
**读数据通道 (Read Data Channel)**:
RDATA
:读数据。RVALID
:数据有效。RREADY
:主设备准备好接收数据。RRESP
:读响应(通常表示是否读取成功,如OKAY
,SLVERR
,DECERR
)。
**写地址通道 (Write Address Channel)**:
AWADDR
:写地址。AWVALID
:写地址有效。AWREADY
:从设备准备好接收地址。
**写数据通道 (Write Data Channel)**:
WDATA
:写数据。WSTRB
:写数据的字节掩码,用来指示哪些字节有效。WVALID
:数据有效。WREADY
:从设备准备好接收数据。
**写响应通道 (Write Response Channel)**:
BRESP
:写响应,表示写入操作的状态(如OKAY
,SLVERR
)。BVALID
:写响应有效。BREADY
:主设备准备好接收写响应。
典型 AXI 读写操作流程
读操作流程:
- 主设备发送读地址 (
ARADDR
) 并通过ARVALID
表示地址有效。 - 从设备通过
ARREADY
表示准备好接收地址。 - 从设备准备好数据,并通过
RVALID
表示数据有效。 - 主设备通过
RREADY
表示准备好接收数据。 - 数据传输完成后,从设备通过
RRESP
发送读响应。
写操作流程:
- 主设备发送写地址 (
AWADDR
) 并通过AWVALID
表示地址有效。 - 从设备通过
AWREADY
表示准备好接收地址。 - 主设备发送写数据 (
WDATA
) 并通过WVALID
表示数据有效。 - 从设备通过
WREADY
表示准备好接收数据。 - 数据写入后,从设备通过
BVALID
发送写响应,主设备通过BREADY
接收响应。
AXI 突发传输
AXI 支持突发传输,可以在一次请求中传输多个数据包,从而提高效率。突发传输可以是固定突发(地址不变)、递增突发(地址递增)或包装突发(地址循环变化)。
AXI 总线的应用场景
AXI 协议由于其高效的数据传输机制和多通道支持,广泛应用于各种 SoC 设计中,特别是在需要高带宽、低延迟的场景下,例如:
- CPU 和内存的交互。
- 高性能外设(如 DMA、GPU)和系统总线之间的数据传输。
- 多核处理器和共享内存之间的通信。
总结
AXI 总线协议提供了强大的高性能通信机制,支持多主多从、突发传输、独立的读写通道,并通过握手机制确保数据传输的同步和可靠性。AXI 是现代 SoC 设计中重要的基础技术,被广泛应用于各种高带宽、低延迟的数据传输场景。