AXI 总线协议简述:通道、握手与访问事务

前言

AXI(Advanced eXtensible Interface)是 AMBA(Advanced Microcontroller Bus Architecture)协议家族的一部分,由 ARM 公司制定。AXI 是一种高性能、可扩展的总线协议,广泛用于 SoC(System on Chip) 设计中,特别适用于高带宽、低延迟的应用。它主要用于在系统中不同组件之间传输数据和控制信号,尤其是 CPU、内存、外设之间的通信。

AXI 协议的特点是支持 高吞吐量 和 低延迟 的数据传输,具备 多主多从结构,并且支持 独立的读写通道,从而提高总线的效率。下面是对 AXI 协议的详细介绍。

AXI 总线的核心特性

  1. 独立的读写通道:
    AXI 协议将读操作和写操作分成了两个完全独立的通道,分别通过 读通道 和 写通道 传输。这意味着读和写操作可以同时进行,彼此互不干扰,极大提高了系统的吞吐量和性能。

  2. 握手机制:
    AXI 使用 valid 和 ready 信号来协调数据的传输,确保发送方和接收方在数据传输前都准备好。valid 信号表明数据有效,ready 信号表明接收方准备好接受数据,只有两者同时为高电平时,数据传输才会进行。这种握手机制保证了通信的可靠性和同步性。

  3. 地址与数据分离:
    AXI 协议将地址和数据分为不同的信号通道,地址的传输与数据的传输是独立的。它采用地址提前机制,即地址通道先行,数据通道随后,这种设计减少了数据传输的等待时间。

  4. 突发传输(Burst Transfer):
    AXI 支持突发传输,一次传输可以连续发送多笔数据,且这些数据共享同一个起始地址。突发传输有三种类型:

    • 固定突发:每次传输的地址保持不变。
    • 递增突发:每次传输的地址递增。
    • 包装突发:地址以固定的包长度循环变化。
  5. 低延迟高带宽:
    AXI 协议通过分离地址和数据通道、独立的读写通道,以及支持突发传输的特性,能够提供低延迟和高带宽的数据传输能力。

AXI 通道

AXI 协议将总线操作分为以下 5 个独立的通道:

  1. 读地址通道(Read Address Channel):

    • 用于发送读操作的地址。
    • 信号主要有:ARADDR(读地址)、ARVALID(地址有效信号)、ARREADY(地址准备好信号)等。
  2. 读数据通道(Read Data Channel):

    • 用于从从设备返回读操作的数据。
    • 信号主要有:RDATA(读数据)、RVALID(数据有效信号)、RREADY(接收端准备好信号)、RRESP(读响应)等。
  3. 写地址通道(Write Address Channel):

    • 用于发送写操作的地址。
    • 信号主要有:AWADDR(写地址)、AWVALID(地址有效信号)、AWREADY(地址准备好信号)等。
  4. 写数据通道(Write Data Channel):

    • 用于发送写操作的数据。
    • 信号主要有:WDATA(写数据)、WSTRB(写数据的字节掩码)、WVALID(数据有效信号)、WREADY(接收端准备好信号)等。
  5. 写响应通道(Write Response Channel):

    • 用于从从设备返回写操作的结果。
    • 信号主要有:BVALID(写响应有效信号)、BREADY(接收端准备好信号)、BRESP(写响应信号)等。

AXI 信号详细说明

每个通道都使用 VALID 和 READY 信号来进行握手,确保主设备和从设备双方都准备好进行数据传输。

  • VALID:发送方用来指示当前信号有效。
  • READY:接收方用来指示它准备好接收数据。

当 VALID 和 READY 同时为高时,数据或地址才能传输。下面是每个通道的具体信号:

  1. **读地址通道 (Read Address Channel)**:

    • ARADDR:读地址。
    • ARVALID:读地址有效。
    • ARREADY:从设备准备好接收地址。
  2. **读数据通道 (Read Data Channel)**:

    • RDATA:读数据。
    • RVALID:数据有效。
    • RREADY:主设备准备好接收数据。
    • RRESP:读响应(通常表示是否读取成功,如 OKAY,SLVERR,DECERR)。
  3. **写地址通道 (Write Address Channel)**:

    • AWADDR:写地址。
    • AWVALID:写地址有效。
    • AWREADY:从设备准备好接收地址。
  4. **写数据通道 (Write Data Channel)**:

    • WDATA:写数据。
    • WSTRB:写数据的字节掩码,用来指示哪些字节有效。
    • WVALID:数据有效。
    • WREADY:从设备准备好接收数据。
  5. **写响应通道 (Write Response Channel)**:

    • BRESP:写响应,表示写入操作的状态(如 OKAY,SLVERR)。
    • BVALID:写响应有效。
    • BREADY:主设备准备好接收写响应。

典型 AXI 读写操作流程

读操作流程:

  1. 主设备发送读地址 (ARADDR) 并通过 ARVALID 表示地址有效。
  2. 从设备通过 ARREADY 表示准备好接收地址。
  3. 从设备准备好数据,并通过 RVALID 表示数据有效。
  4. 主设备通过 RREADY 表示准备好接收数据。
  5. 数据传输完成后,从设备通过 RRESP 发送读响应。

写操作流程:

  1. 主设备发送写地址 (AWADDR) 并通过 AWVALID 表示地址有效。
  2. 从设备通过 AWREADY 表示准备好接收地址。
  3. 主设备发送写数据 (WDATA) 并通过 WVALID 表示数据有效。
  4. 从设备通过 WREADY 表示准备好接收数据。
  5. 数据写入后,从设备通过 BVALID 发送写响应,主设备通过 BREADY 接收响应。

AXI 突发传输

AXI 支持突发传输,可以在一次请求中传输多个数据包,从而提高效率。突发传输可以是固定突发(地址不变)、递增突发(地址递增)或包装突发(地址循环变化)。

AXI 总线的应用场景

AXI 协议由于其高效的数据传输机制和多通道支持,广泛应用于各种 SoC 设计中,特别是在需要高带宽、低延迟的场景下,例如:

  • CPU 和内存的交互。
  • 高性能外设(如 DMA、GPU)和系统总线之间的数据传输。
  • 多核处理器和共享内存之间的通信。

总结

AXI 总线协议提供了强大的高性能通信机制,支持多主多从、突发传输、独立的读写通道,并通过握手机制确保数据传输的同步和可靠性。AXI 是现代 SoC 设计中重要的基础技术,被广泛应用于各种高带宽、低延迟的数据传输场景。


AXI 总线协议简述:通道、握手与访问事务
http://blog.luliang.online/2024/10/28/axi-bus-protocol/
作者
Luyoung
发布于
2024年10月28日
许可协议