【电路笔记 通信】AXI4-Lite协议 论文阅读 简化的高级可扩展接口(AdvancedeXtensibleInterface4Lite)
- 原文地址:AMBA AXI and ACE Protocol Specification
文章目录
- Chapter B1 AMBA AXI4-Lite
- B1.1 Definition of AXI4-Lite
- 第B1章 AMBA AXI4-Lite
- B1.1 AXI4-Lite的定义
- B1.1.1 Signal list AXI4-Lite 接口信号列表(AXI4-Lite Interface Signals)
- 在AXI4-Lite中修改的AXI4信号
- AXI4-Lite不支持AXI4信号
- B1.1.2 Bus width
- B1.1.3 Write strobes WSTRB[3:0]
- B1.1.4 Optional signaling
- B1.2 Interoperability 互操作性
- 表 B1-2:AXI 与 AXI4-Lite 互操作性
- B1.2.1 Bridge requirements of AXI4-Lite slaves
- B1.2.2 AXI4-Lite 从设备的直接连接要求
- B1.3 Defined conversion mechanism
- B1.3.1 Conversion rules
- B1.4 Conversion, protection, and detection (AXI 到 AXI4-Lite 的转换、保护与检测系统)
- B1.4.1 Conversion and protection levels 转换与保护等级
- B1.4.2 Implementation considerations
Chapter B1 AMBA AXI4-Lite
- 本章定义了 AXI4-Lite 接口及相关协议。AXI4-Lite 适用于较为简单的控制寄存器式接口,这些接口不需要 AXI4 的全部功能。
B1.1 Definition of AXI4-Lite
- 本节定义了 AXI4-Lite 组件的功能和信号要求。AXI4-Lite 操作的关键功能如下:
- 所有事务的突发长度均为 1。
- 所有数据访问均使用数据总线的全宽 (AXI4-Lite 支持 32 位或 64 位数据总线宽度)。
- 所有访问均不可修改且不可缓冲。
- 不支持独占访问( Exclusive Accesses)。
第B1章 AMBA AXI4-Lite
- 本章定义了AXI4-Lite接口及其相关协议。AXI4-Lite适用于不需要完整AXI4功能的简单控制寄存器式接口。
B1.1 AXI4-Lite的定义
本节定义了AXI4-Lite组件的功能和信号要求。
AXI4-Lite操作的关键功能包括:
- 所有事务的突发长度均为1。
- 所有的数据访问都使用数据总线的全部宽度。
AXI4-Lite支持32位或64位的数据总线宽度。 - 所有访问都是非可修改、非缓冲的。
- 不支持独占访问。
B1.1.1 Signal list AXI4-Lite 接口信号列表(AXI4-Lite Interface Signals)
- 本表列出了 AXI4-Lite 接口所需的全部信号,并按通道分类。
注:AXI4-Lite 是 AXI4 协议的简化子集,仅支持单次传输(fixed burst length of 1),适用于寄存器级访问。
属性 \ 通道 | 全局信号 (Global) | 写地址通道 (Write Address) | 写数据通道 (Write Data) | 写响应通道 (Write Response) | 读地址通道 (Read Address) | 读数据通道 (Read Data) |
---|---|---|---|---|---|---|
信号名称 | ACLK ARESETn | AWVALID AWREADY AWADDR[31:0] AWPROT[2:0] | WVALID WREADY WDATA[31:0] WSTRB[3:0] | BVALID BREADY BRESP[1:0] | ARVALID ARREADY ARADDR[31:0] ARPROT[2:0] | RVALID RREADY RDATA[31:0] RRESP[1:0] |
方向 | 输入 输入 | 主 → 从 从 → 主 主 → 从 主 → 从 | 主 → 从 从 → 主 主 → 从 主 → 从 | 从 → 主 主 → 从 从 → 主 | 主 → 从 从 → 主 主 → 从 主 → 从 | 从 → 主 主 → 从 从 → 主 从 → 主 |
描述 | - 主时钟信号,所有传输同步于此时钟上升沿。 - 异步复位信号(低电平有效),用于初始化接口。 | - 写地址有效:主设备声明地址和控制信息有效。 - 写地址就绪:从设备准备好接收地址。 - 写地址:指定要写入的寄存器地址。 - 写保护类型:指示访问的特权级别和安全属性(可选)。 | - 写数据有效:主设备声明写数据和字节选通有效。 - 写数据就绪:从设备准备好接收数据。 - 写数据:要写入从设备的数据。 - 写字节选通:指示哪些字节有效。 | - 写响应有效:从设备返回写操作完成状态。 - 写响应就绪:主设备准备好接收响应。 - 写响应: • 2'b00 : OKAY(成功)• 2'b01 : EXOKAY(独占成功)• 2'b10 : SLVERR(从设备错误)• 2'b11 : DECERR(解码错误) | - 读地址有效:主设备声明读地址有效。 - 读地址就绪:从设备准备好接收读地址。 - 读地址:指定要读取的寄存器地址。 - 读保护类型:同 AWPROT (可选)。 | - 读数据有效:从设备返回数据有效。 - 读数据就绪:主设备准备好接收数据。 - 读数据:从设备返回的寄存器数据。 - 读响应:含义同 BRESP 。 |
在AXI4-Lite中修改的AXI4信号
- AXI4-Lite接口并不完全支持以下信号:
RRESP,BRESP(RRESP
和BRESP
是 AXI4 协议中两个非常重要的响应信号)- 读取数据和写入响应通道不支持EXOKAY(Exclusive Access OKAY —— 独占访问成功)响应。
信号 | 所属通道 | 方向 | 位宽 | 含义 |
---|---|---|---|---|
RRESP[1:0] | 读数据通道(R Channel) | 从设备 → 主设备 | 2 位 | 读操作的响应状态 |
BRESP[1:0] | 写响应通道(B Channel) | 从设备 → 主设备 | 2 位 | 写操作的响应状态 |
二进制值 | 十六进制 | 名称 | 含义 |
---|---|---|---|
2'b00 | 2h0 | OKAY | 操作成功:正常完成,无错误。 |
2'b01 | 2h1 | EXOKAY | 独占访问成功:仅用于支持独占访问的系统(AXI4 支持,AXI4-Lite 不支持)。 |
2'b10 | 2h2 | SLVERR | 从设备错误:从设备(如 FPGA 外设)在处理时发生错误(如非法操作、内部故障)。 |
2'b11 | 2h3 | DECERR | 解码错误:地址无效,没有对应的从设备(类似“地址越界”)。 |
特性 | AXI4 | AXI4-Lite |
---|---|---|
支持 OKAY (2'b00 ) | 支持 | 支持 |
支持 EXOKAY (2'b01 ) | 支持(用于独占访问) | 不支持,必须忽略 |
支持 SLVERR (2'b10 ) | 支持 | 支持(可选,用于检测非法访问) |
支持 DECERR (2'b11 ) | 支持 | 支持(通常由互连矩阵生成) |
AXI4-Lite不支持AXI4信号
被省略的信号 | 默认/固定行为 | 说明与设计原因 |
---|---|---|
AWLEN , ARLEN | 突发长度 = 1(AxLEN = 0 ) | AXI4-Lite 仅支持单次传输,无需指定突发长度。 |
AWSIZE , ARSIZE | 数据宽度 = 数据总线宽度 | 每次传输完整数据字(如 32 位或 64 位),无需动态指定大小。 |
AWBURST , ARBURST | 突发类型无意义 | 因为突发长度固定为 1,突发类型(INCR/WRAP/FIXED)无效。 |
AWLOCK , ARLOCK | 访问类型 = 普通访问(AxLOCK = 0 ) | 不支持总线锁定或独占访问,所有操作为“Normal Access”。 |
AWCACHE , ARCACHE | 缓存属性AxRCACHE = 4'b0000 | 所有访问定义为: • 不可修改(Non-modifiable) • 不可缓存(Non-bufferable) |
WLAST , RLAST | 固定为高电平,始终 = 1 | 每次传输即为最后一次(突发长度为 1),信号被隐式固定,无需传递。 |
B1.1.2 Bus width
AXI4-Lite具有固定的数据总线宽度,所有事务的宽度都与数据总线相同。数据总线宽度必须是32位或64位。
ARM预计:
- 大多数组件使用32位接口
- 只有需要64位原子访问的组件才使用64位接口。
一个64位组件可以被设计为可由32位主设备访问,但实现时必须确保该组件将所有事务视为64位事务。
注意
这种互操作性可以通过在组件的寄存器映射中,包含适合 32 位主设备访问的寄存器地址来实现。通常,这些地址仅使用数据总线的低 32 位。
B1.1.3 Write strobes WSTRB[3:0]
AXI4-Lite 协议支持写选通(write strobes)。这意味着可以实现多种尺寸的寄存器,并且支持需要 8 位和 16 位访问的内存结构。
所有主设备接口和互连组件必须提供正确的写选通信号。 任何从设备组件均可选择是否使用写选通信号。允许的选择包括:
- 充分利用写选通信号;
- 忽略写选通信号,并将所有写访问视为完整数据总线宽度的访问;
- 检测不支持的写选通组合,并返回错误响应。
对于提供内存访问功能的从设备,必须完全支持写选通信号。内存映射中的其他从设备可能支持较为有限的写选通选项。
在从完整 AXI 转换到 AXI4-Lite 时,可能会在 AXI4-Lite 上生成所有写选通信号均未激活的写事务。允许但不要求自动抑制此类事务。参见第 B1-131 页的“转换、保护与检测”。
- 注:每 8 位(1 字节)对应 1 位写选通,WSTRB 的位数 = 数据总线宽度(bit) ÷ 8
B1.1.4 Optional signaling
AXI4-Lite 支持多个未完成的事务(outstanding transactions),但从设备可以通过适当使用握手信号来限制此行为。
AXI4-Lite 不支持 AXI ID 信号。这意味着所有事务必须按顺序进行,且所有访问使用一个固定的单一 ID 值。
注意
可选地,一个 AXI4-Lite 从设备可以支持 AXI ID 信号,以便能够在不作修改的情况下连接到完整的 AXI 接口。详见第 B1-128 页的“互操作性(Interoperability)”。
AXI4-Lite 不支持数据交错(data interleaving),突发长度定义为 1。
B1.2 Interoperability 互操作性
- 本节描述了 AXI 与 AXI4-Lite 主设备和从设备之间的互操作性。表 B1-2 展示了接口可能的组合方式,并指出:唯一需要特别处理的情况是 AXI 主设备连接到 AXI4-Lite 从设备。
表 B1-2:AXI 与 AXI4-Lite 互操作性
主设备(Master) | 从设备(Slave) | 互操作性说明 |
---|---|---|
AXI | AXI | 完全兼容,可正常工作。 |
AXI | AXI4-Lite | 需要 AXI ID 反射(ID reflection),可能需要进行协议转换。 |
AXI4-Lite | AXI | 完全兼容,可正常工作。 |
AXI4-Lite | AXI4-Lite | 完全兼容,可正常工作。 |
- 注:
- AXI 主设备 → AXI4-Lite 从设备 是唯一需要关注的组合:
- 因为 AXI 支持多个未完成事务(outstanding transactions)和事务 ID(AXI ID),而 AXI4-Lite 不支持 ID,也不支持乱序响应;
- 因此,在连接时,通常需要:
- ID 反射(ID Reflection):从设备在响应通道(如
BID
、RID
)中回传主设备发出的 ID; - 协议转换逻辑(如通过 AXI Interconnect 或 Adapter):将 AXI 的多 ID、乱序能力适配到 AXI4-Lite 的单 ID、顺序传输限制;
- 或者,AXI4-Lite 从设备可选地支持 ID 信号,以实现无缝连接(见前文“注意”)。
- ID 反射(ID Reflection):从设备在响应通道(如
B1.2.1 Bridge requirements of AXI4-Lite slaves
-
如表 B1-2 所示,唯一需要特别考虑的互操作情况是将 AXI4-Lite 从设备接口连接到完整的 AXI 主设备接口。
-
此连接要求支持 AXI ID 反射。AXI4-Lite 从设备必须在返回该事务的读取数据或写入响应时,回传与该事务地址相关联的 AXI ID。之所以需要这样做,是因为主设备需要通过返回的 ID 来正确识别对应事务的响应。
-
如果一个实现无法确保 AXI 主设备接口仅生成属于 AXI4-Lite 子集的事务,则需要某种形式的适配。详见第 B1-131 页的“转换、保护与检测”(Conversion, protection, and detection)。
B1.2.2 AXI4-Lite 从设备的直接连接要求
AXI4-Lite 从设备可以设计为包含 ID 反射逻辑。这意味着,只要系统能够保证主设备对从设备的访问仅使用符合 AXI4-Lite 子集的事务,该从设备就可以无需桥接功能(bridge function),直接连接到完整的 AXI 总线上。
注意
本规范建议,ID 反射逻辑应使用AWID
而不是WID
,以确保与 AXI3 和 AXI4 的兼容性。
B1.3 Defined conversion mechanism
- 本节定义了将任意合法 AXI 事务转换为可在 AXI4-Lite 组件上使用的事务所需满足的要求。 第 B1-131 页的“转换、保护与检测”讨论了可采用的各种方法的优缺点。
B1.3.1 Conversion rules
- 转换要求 AXI 的数据宽度等于或大于 AXI4-Lite 的数据宽度。如果不满足此条件,则必须首先将 AXI 数据宽度转换为 AXI4-Lite 的数据宽度。
注意
AXI4-Lite 不支持EXOKAY
响应,因此转换规则中不考虑该响应类型。
完整 AXI 接口转换的规则如下:
-
如果某个事务的突发长度大于 1,则必须将该突发拆分为多个突发长度为 1 的事务。生成的事务数量取决于原始事务的突发长度。
-
在生成突发中后续拍(beat)的地址时,对于长度大于 1 的突发,转换过程必须考虑突发类型。对于
INCR
或WRAP
突发,若起始地址未对齐,则后续拍的地址必须递增并对齐。对于FIXED
突发,所有拍均使用相同的地址。 -
当长度大于 1 的写突发被转换为多个写事务时,负责执行转换的组件必须将所有生成事务的响应进行合并,以产生一个针对原始突发的单一响应。任何错误响应具有“粘滞性”(sticky)。也就是说,只要任意一个生成的事务返回了错误响应,该错误就会被保留,最终的合并响应应指示出错。如果同时收到
SLVERR
和DECERR
,则以最先收到的响应作为合并响应的结果。 -
对于宽度大于目标 AXI4-Lite 接口的事务,必须将其拆分为多个与 AXI4-Lite 接口宽度相同的事务。对于起始地址未对齐的事务,拆分操作应在与 AXI4-Lite 接口宽度对齐的边界上进行。
-
当宽事务被转换为多个窄事务时,负责转换的组件必须将所有窄事务的响应合并,以产生一个针对原始事务的单一响应。任何错误响应具有粘滞性。如果同时收到
SLVERR
和DECERR
,则以最先收到的响应作为合并响应的结果。 -
宽度小于 AXI4-Lite 接口的事务直接通过,无需转换。
-
写选通信号(Write strobes)直接传递,不作修改。
-
没有写选通(即所有
WSTRB
为 0)的写事务也直接通过。
注意
AXI4-Lite 协议不要求抑制此类无写选通的事务。
-
所有事务的
AxLOCK
信号均被丢弃。对于一连串的锁定事务,任何锁定保证都将丢失。然而,事务的锁定属性仅在下游仲裁点处丢失。对于独占访问序列,由于 AXI 的信令要求,任何独占写访问必须失败。 -
所有
AxCACHE
信号均被丢弃。所有事务均被视为不可修改(Non-modifiable) 且不可缓存(Non-bufferable)。
注意
这种处理方式是可接受的,因为 AXI 协议允许将可修改(Modifiable)访问视为不可修改,也将可缓存(Bufferable)访问视为不可缓存。
- 所有
AxPROT
信号直接传递,不作修改。 WLAST
信号被舍弃- 无需
RLAST
信号, 并且对于读取数据通道上的每次传输都被视为有效。
B1.4 Conversion, protection, and detection (AXI 到 AXI4-Lite 的转换、保护与检测系统)
-
如果无法确保主设备仅发出符合 AXI4-Lite 要求的事务,则将 AXI4-Lite 从设备连接到 AXI4 主设备时,需要某种形式的适配。
-
本节描述了在系统设计中可采用的技术,以帮助实现组件之间的互操作性,并协助调试系统设计问题。这些技术包括:
-
转换(Conversion)
需要将所有事务转换为符合 AXI4-Lite 要求的格式。 -
保护(Protection)
需要检测任何不符合规范的事务。该不符合规范的事务将被丢弃,并向生成该事务的主设备返回错误响应。 -
检测(Detection)
需要监视任何超出 AXI4-Lite 要求的事务,并:
• 向控制软件报告该异常访问;
• 允许该访问在硬件接口层面继续进行。
-
B1.4.1 Conversion and protection levels 转换与保护等级
可以实现不同级别的转换与保护,具体如下:
-
完全转换(Full Conversion)
按照第 B1-129 页“定义的转换机制”所述,将所有 AXI 事务进行完整转换,使其符合 AXI4-Lite 的要求。 -
简单转换加保护(Simple Conversion with Protection)
允许仅需简单转换的事务通过,但对需要复杂处理的事务进行抑制,并返回错误报告。 -
允许通过的事务示例:丢弃一个或多个
AxLOCK
和AxCACHE
信号的事务(即忽略这些信号)。 -
被丢弃并生成错误报告的事务示例:需要进行突发长度转换或数据宽度转换的事务。
-
完全保护(Full Protection)
对任何不符合 AXI4-Lite 要求的事务,均进行抑制并返回错误响应。
B1.4.2 Implementation considerations
- 采用丢弃事务方式的保护机制,必须提供符合协议规范的错误响应,以防止发生死锁。例如,在完整的 AXI 协议中,读突发事务要求对突发中的每一拍(beat)都返回一个错误响应,并正确置位
RLAST
信号。
结合使用检测(Detection)和转换(Conversion)机制,可实现如下硬件设计:
- 不阻止意外访问的发生;
- 提供一种机制,向控制软件报告此类意外访问,从而加快调试过程。
在复杂的设计中,结合转换与检测的优势在于:能够支持设计时未预见到的未来使用场景。例如,在设计阶段可能认为只有处理器会对外设的控制寄存器进行编程;但在实际应用中,其他[peripheral]设备(如 DSP 或 DMA 控制器)也可能需要对外设进行配置,而这些设备无法生成完全符合 AXI4-Lite 要求的访问事务。
不同方法的优缺点如下:
- 保护(Protection)所需的门电路数量更少,实现更简单,硬件开销低。
- 转换(Conversion)可确保接口能够处理未预见到的访问,提升系统兼容性。
- 转换有助于提高软件在不同系统之间的可移植性。
- 转换可能更高效地利用 AXI 基础设施。例如,对 FIFO 的一组写操作可以作为单个突发传输发出,而无需拆分为多个单次传输。
- 转换可能更高效地利用窄带宽链路,特别是在地址和数据负载信号共享通路的情况下。
- 转换可提升组件的灵活性,使其能用于 AXI4-Lite 接口。通过在外围转换突发并允许稀疏写选通(sparse strobes),可将存储器直接连接到 AXI4-Lite 接口,而无需在存储器设备内部进行突发转换。这本质上是将突发转换逻辑进行共享。