AXI4-Lite 接口
注:axi4-lite 源码文件及 testbench 的 task 文件见附件!
简介
AXI4-Lite 是 AMBA AXI4 协议的一个简化版本,专为简单的控制寄存器访问和不需要完整 AXI4 协议复杂性的场景而设计。它提供了一个轻量级的接口,适用于不需要高速数据传输或复杂内存管理单元(MMU)操作的设备和外设。
以下是 AXI4-Lite 的一些关键特点:
- 简化的信号集:AXI4-Lite 只包含了 AXI4 协议中最基本的信号,以支持简单的读写操作。
- 不支持突发传输:与完整的 AXI4 协议不同,AXI4-Lite 不支持突发(burst)传输,所有事务都是单拍(burst length 为 1)。
- 固定数据宽度:AXI4-Lite 通常用于 32 位或 64 位的固定数据宽度,这意味着所有的读写操作都是针对整个数据宽度。
- 非缓存和非可修改事务:AXI4-Lite 协议中的所有事务都被定义为非缓存(Non-cacheable)和非可修改(Non-modifiable)。
- 不支持独家访问:AXI4-Lite 不支持独家(Exclusive)访问,这意味着它不提供对共享资源的独占访问。
- 简化的握手机制:AXI4-Lite 使用简化的握手机制,只有当读写操作准备好进行时,才通过 VALID 和 READY 信号进行通信。
- 适用于控制寄存器:AXI4-Lite 非常适合用于访问控制寄存器,这些寄存器通常不需要复杂的内存操作。
- 互操作性:AXI4-Lite 设计了与完整 AXI4 协议的互操作性,允许在需要时通过桥接逻辑将 AXI4-Lite 事务转换为 AXI4 事务。
AXI4-Lite 的这些特性使其成为嵌入式系统中外围设备和简单内存映射接口的理想选择,特别是在资源受限的环境中。
信号
AXI4-Lite接口由五个独立的通道构成:读地址、读数据、写地址、写数据和写响应。以下是各个通道的详细接口定义:
-
全局信号:
-
ACLK:全局时钟信号,用于同步所有AXI4-Lite接口的读写操作。
-
ARESETn:全局复位信号,低电平有效,用于初始化和同步复位。
复位期间,除 ARVALID、AWVALID、WVALID、RVALID、BVALID 必须为低电平,其他信号可以为任何值
-
-
写地址通道(Write Address Channel):
-
AWADDR[31:0]:写地址信号,用于指定写事务的目标地址。
-
AWPROT[2:0]:
AWPROT
信号是一个保护类型信号,用于定义事务的权限和安全级别。具体来说,AWPROT
信号指示事务是特权(Privileged)还是非特权(Unprivileged),以及事务是安全(Secure)还是非安全(Non-secure)。AWPROT
信号是一个 3 位的信号,其位分配如下:AWPROT[2]
:指示事务是数据访问还是指令访问。在 AXI4-Lite 中,这个位通常被用作事务类型(Data or Instruction)的指示,但在 AXI4-Lite 规范中,这个位的具体使用没有明确的定义,因为它是一个 Lite 版本,一些 AXI4 的特性在 AXI4-Lite 中被简化或省略。AWPROT[1]
:安全位。当这个位被设置为 1 时,事务被标记为非安全(Non-secure)。当这个位被设置为 0 时,事务被标记为安全(Secure)。AWPROT[0]
:特权位。这个位用来区分事务是特权(Privileged)还是非特权(Unprivileged)。在某些系统中,特权访问可能用于操作系统或高优先级的处理,而非特权访问可能用于普通用户模式的操作。
在 AXI4-Lite 中,
AWPROT
信号的具体实现和使用可能会根据具体的系统设计和安全需求有所不同。一些系统可能不需要区分安全和非安全事务,也可能会忽略特权和非特权的区别。然而,如果系统确实需要这些区分,AWPROT
信号提供了一种机制来实现这一点。 -
AWVALID:写地址有效信号,用于指示AWADDR和AWPROT信号是否有效。
-
AWREADY:写地址准备就绪信号,用于指示从设备是否准备好接收写地址。
-
-
写数据通道(Write Data Channel):
- WDATA:写数据信号,用于在写事务中传输数据。
- WSTRB:写掩码信号,用于指示WDATA中的哪些字节是有效的。
- WVALID:写数据有效信号,用于指示WDATA和WSTRB信号是否有效。
- WREADY:写数据准备就绪信号,用于指示从设备是否准备好接收数据。
-
写响应通道(Write Response Channel):
-
BRESP[1:0]:写响应信号,用于指示写事务的状态(成功或错误)。
0b00
:OKAY - 表示写事务成功完成。0b01
:EXOKAY - 在 AXI4-Lite 中不使用,保留用于独家访问(Exclusive access)的成功响应。0b10
:SLVERR - 表示从目标设备返回了一条 Slave Error,可能是因为目标设备无法完成事务。0b11
:DECERR - 表示解码错误,通常由互联组件生成,表示无法成功解码目标地址。
BRESP
和RRESP
信号通常只使用OKAY
和SLVERR
两种状态。EXOKAY
状态在 AXI4-Lite 中不被使用,因为 AXI4-Lite 不支持独家访问。此外,如果目标设备无法完成事务,它会返回SLVERR
响应,而解码错误DECERR
通常由互联组件生成,而不是由目标设备生成。 -
BVALID:写响应有效信号,用于指示BRESP信号是否有效。
-
BREADY:写响应准备就绪信号,用于指示主设备是否准备好接收写响应。
-
-
读地址通道(Read Address Channel):
- ARADDR[31:0]:读地址信号,用于指定读事务的目标地址。
- ARPROT[2:0]:保护信号,功能与写事务中的AWPROT相同。
- ARVALID:读地址有效信号,用于指示ARADDR和ARPROT信号是否有效。
- ARREADY:读地址准备就绪信号,用于指示从设备是否准备好接收读地址。
-
读数据通道(Read Data Channel):
- RDATA:读数据信号,用于在读事务中传输数据。
- RRESP[1:0]:读响应信号,用于指示读事务的状态(成功或错误),同BRESP信号
- RVALID:读数据有效信号,用于指示RDATA和RRESP信号是否有效。
- RREADY:读数据准备就绪信号,用于指示主设备是否准备好接收读数据。
AXI4-Lite不支持突发事务,因此不包括与突发长度和类型相关的信号,如AWLEN、AWSIZE、AWBURST等。此外,AXI4-Lite中的所有事务都是线性的,不支持乱序处理。这意味着AXI4-Lite协议的实现可以更加简单,适用于那些不需要复杂内存操作的设备。
握手机制
- 单头箭头指向的信号可以在同一周期内被断言(asserted),也可以在箭头起始信号之前或之后被断言。(没有先后顺序要求)
- 双头箭头指向的信号必须在箭头起始信号被断言之后才能被断言。(有先后顺序要求)
AXI4-Lite 与 AXI4-Full的区别
AXI4-Lite 和 AXI4-Full 是 AMBA AXI 协议的两个不同版本,它们在功能和复杂性上有所不同。以下是它们之间的主要区别:
- 信号数量:
- AXI4-Full:包含完整的AXI信号集,用于支持复杂的内存和外设访问,包括突发传输(burst transfers)、乱序传输(out-of-order transfers)和多个独立的事务队列。
- AXI4-Lite:是AXI4-Full的简化版本,用于控制寄存器访问和简单的外设接口,信号数量较少,不支持突发传输。
- 突发传输(Burst Transfers):
- AXI4-Full:支持突发传输,允许在一个事务中传输多个数据项。
- AXI4-Lite:不支持突发传输,每个事务只传输一个数据项。
- 通道:
- AXI4-Full:包含读写地址通道、读写数据通道、读写响应通道以及可选的扩展通道,如QoS(服务质量)和用户定义信号。
- AXI4-Lite:只包含基本的读写地址通道和读写数据通道,不支持扩展通道。
- 事务属性:
- AXI4-Full:支持多种事务属性,如缓存一致性、内存属性、保护属性等。
- AXI4-Lite:简化了事务属性,主要针对非缓存的控制寄存器访问。
- 握手机制:
- AXI4-Full:使用复杂的握手机制,包括VALID/READY信号对,以及可选的LAST信号来指示突发传输的结束。
- AXI4-Lite:使用简化的握手机制,每个事务只涉及一个数据项,不需要LAST信号。
- 支持的事务类型:
- AXI4-Full:支持多种事务类型,包括读事务、写事务、锁定事务和原子事务。
- AXI4-Lite:主要支持简单的读事务和写事务,不支持锁定事务和原子事务。
- 性能:
- AXI4-Full:由于其丰富的功能和信号,可以支持高性能和复杂的系统设计。
- AXI4-Lite:由于其简化的设计,通常用于低带宽和简单的外设接口,以减少资源消耗和提高响应速度。
- 资源消耗:
- AXI4-Full:由于信号数量多和功能复杂,资源消耗较大。
- AXI4-Lite:资源消耗较少,适用于资源受限的系统。
总的来说,AXI4-Full 提供了一套完整的功能,适合于需要高性能和复杂内存管理的系统,而 AXI4-Lite 则是一种轻量级的解决方案,适合于简单的控制寄存器访问和外设接口。
Xilinx 官方源码生成