AXI Lite(Advanced eXtensible Interface Lite)是 ARM 公司推出的 AXI 总线协议族中的轻量级版本,专为 低带宽、简单控制类传输场景 设计(如外设配置寄存器读写),是 SoC(System on Chip)中连接处理器与外设的核心协议之一。它继承了 AXI 协议的高灵活性、低延迟特性,同时简化了信号与时序,降低了外设设计复杂度。
一、AXI Lite 总线的核心定位与应用场景
AXI 协议族包含三个主要子协议(AXI Full、AXI Lite、AXI Stream),其中 AXI Lite 的定位是 “轻量级控制总线”,与其他子协议的区别如下:
|
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
| AXI Lite |
|
|
|
|
|
|
|
|
|
|
核心应用场景:所有需要通过 “地址 + 数据” 进行 寄存器读写 的外设,例如:
-
配置 UART 的波特率、数据位; -
读取 GPIO 的输入状态; -
控制 I2C 外设的启动 / 停止信号; -
访问 ADC/DAC 的采样值寄存器。
二、AXI Lite 总线的核心特性
AXI Lite 基于 “分离地址 / 数据通道” 和 “握手信号同步” 设计,核心特性可概括为以下几点:
1. 单拍传输,无突发
AXI Lite 不支持突发传输(Burst Transfer),每次传输仅包含 1 个数据节拍(Data Beat),即 “1 次地址传输 + 1 次数据传输”,简化了外设的时序逻辑(无需处理突发长度、突发类型)。
2. 分离的读写通道
AXI Lite 将 “读操作” 和 “写操作” 分为 两个独立通道(Read Channel + Write Channel),通道间完全解耦,可并行传输(如同时进行 “读寄存器 A” 和 “写寄存器 B”),提升总线利用率。
3. 握手信号机制
所有传输均通过 “Valid-Ready” 握手协议 同步,确保发送端(Source)和接收端(Destination)的时序匹配:
-
发送端置位 VALID信号,表示 “数据 / 地址已准备好”; -
接收端置位 READY信号,表示 “已准备好接收数据 / 地址”; -
仅当 VALID == 1且READY == 1时,传输成功(采样数据 / 地址)。
这种机制支持 背压(Backpressure)(接收端可通过拉低 READY 暂停传输),适配不同速度的外设。
4. 固定数据宽度
AXI Lite 仅支持两种标准数据宽度:
-
32 位(最常用,适用于大多数嵌入式场景); -
64 位(用于需要宽数据的控制场景,如 64 位处理器配置)。
地址宽度可灵活配置(如 32 位、64 位),适配不同寻址空间的 SoC。
5. 支持访问权限与响应
- 访问权限
:地址传输时可携带 “特权级”“安全属性” 等信号(如 AXI4-Lite 的 PROT信号),控制外设的访问权限; - 传输响应
:读写完成后,接收端通过 RESP信号返回传输结果(如OKAY表示成功,SLVERR表示从机错误,DECERR表示地址解码错误),便于错误处理。
三、AXI Lite 总线的信号组成(32 位数据宽度为例)
AXI Lite 分为 读通道 和 写通道,两类通道的信号独立,以下是完整的信号列表(按通道分类):
1. 读通道(Read Channel)
读通道用于 “主机(如处理器)从从机(如外设)读取数据”,包含 3 个子通道:读地址通道(AR)、读数据 / 响应通道(RD)。
|
|
|
|
|
|---|---|---|---|
ARVALID |
|
|
|
ARREADY |
|
|
|
ARADDR |
|
|
|
ARPROT |
|
|
|
ARLOCK |
|
|
0,表示非锁定传输)
|
ARID |
|
|
0,无多事务标识需求)
|
ARBURST |
|
|
00,表示固定地址,无突发)
|
ARLEN |
|
|
0000,表示 1 拍传输)
|
ARSIZE |
|
|
010,表示 4 字节,即 32 位数据)
|
|
|
|
|
|
RDVALID |
|
|
|
RDREADY |
|
|
|
RDATA |
|
|
|
RDRESP |
|
|
00=OKAY,01=EXOKAY,10=SLVERR,11=DECERR)
|
RDID |
|
|
ARID 对应,AXI Lite 仅支持 0)
|
2. 写通道(Write Channel)
写通道用于 “主机向从机写入数据”,包含 3 个子通道:写地址通道(AW)、写数据通道(WD)、写响应通道(WR)。
|
|
|
|
|
|---|---|---|---|
AWVALID |
|
|
|
AWREADY |
|
|
|
AWADDR |
|
|
|
AWPROT |
|
|
ARPROT)
|
AWLOCK |
|
|
0)
|
AWID |
|
|
0)
|
AWBURST |
|
|
00)
|
AWLEN |
|
|
0000)
|
AWSIZE |
|
|
010,4 字节)
|
|
|
|
|
|
WDVALID |
|
|
|
WDREADY |
|
|
|
WDATA |
|
|
|
WDSTRB |
|
|
WDATA 的 1 个字节,1 表示该字节有效)
|
WDID |
|
|
0)
|
|
|
|
|
|
WRVALID |
|
|
|
WRREADY |
|
|
|
WRRESP |
|
|
RDRESP)
|
WRID |
|
|
AWID 对应,AXI Lite 仅支持 0)
|
关键信号说明
- 字节使能(WDSTRB)
:用于 “部分字节写入”,例如仅写入 32 位数据的低 8 位时, WDSTRB = 4'b0001; - 响应信号(RDRESP/WRRESP)
: OKAY是最常见的响应,SLVERR表示从机内部错误(如寄存器读写越界),DECERR表示地址未映射到任何从机(地址错误)。
四、AXI Lite 总线的传输时序(核心流程)
AXI Lite 的传输时序基于 “握手协议”,分为 读操作时序 和 写操作时序,以下是典型的单拍传输流程(32 位数据宽度)。
1. 读操作时序(主机读从机数据)
完整的读操作包含 2 个阶段:地址握手 和 数据 / 响应握手,时序图如下(关键信号时序):
时序步骤:
地址阶段(AR Channel):
-
主机置位 ARVALID,并输出ARADDR(如 0x100,目标寄存器地址)和ARPROT; -
从机准备好后置位 ARREADY; -
当 ARVALID & ARREADY == 1时,地址握手成功,从机锁存ARADDR,开始读取对应寄存器数据。 数据 / 响应阶段(RD Channel):
-
从机读取数据后,置位 RDVALID,并输出RDATA(如 0x12345678)和RDRESP(00=OKAY); -
主机准备好接收后置位 RDREADY; -
当 RDVALID & RDREADY == 1时,数据握手成功,主机锁存RDATA,读操作完成。
关键说明:地址阶段和数据阶段可 “重叠”(从机在地址握手后立即准备数据,无需等待地址阶段结束),减少传输延迟。
2. 写操作时序(主机写从机数据)
完整的写操作包含 3 个阶段:地址握手、数据握手、响应握手,时序图如下:
时序步骤:
地址阶段(AW Channel):
-
主机置位 AWVALID,输出AWADDR(如 0x104)和AWPROT; -
从机置位 AWREADY,地址握手成功,从机锁存AWADDR。 数据阶段(WD Channel):
-
主机置位 WDVALID,输出WDATA(如 0x87654321)和WDSTRB(如 1111,表示 4 字节全有效); -
从机置位 WDREADY,数据握手成功,从机锁存WDATA,并写入对应寄存器。 响应阶段(WR Channel):
-
从机完成写入后,置位 WRVALID,输出WRRESP(00=OKAY); -
主机置位 WRREADY,响应握手成功,主机确认写操作完成。
关键说明:地址阶段和数据阶段可并行(主机可同时发送地址和数据),进一步缩短写操作延迟。
五、AXI Lite 从机设计要点(以 FPGA 为例)
在 FPGA 中实现 AXI Lite 从机(如自定义外设)时,需重点关注以下设计要点,确保时序合规和功能正确:
1. 地址解码逻辑
从机需根据主机发送的 ARADDR/AWADDR,解码出 “目标寄存器地址”,例如:
-
若从机的地址映射范围为 0x1000_0000 ~ 0x1000_00FF,则需判断ARADDR是否在此范围内; -
解码后选择对应的寄存器(如 0x1000_0000对应 “控制寄存器”,0x1000_0004对应 “数据寄存器”)。
注意:地址需对齐到数据宽度(32 位数据需 4 字节对齐),否则从机应返回 DECERR 响应。
2. 握手信号同步
从机的 ARREADY/WDREADY/RDVALID/WRVALID 信号需严格遵循握手协议:
ARREADY:可设计为 “组合逻辑”(如收到 ARVALID后立即置 1)或 “时序逻辑”(如需要时钟周期准备);RDVALID:必须在从机读取寄存器数据后置位,且仅在 RDREADY置位时释放(避免数据残留);-
避免 “组合逻辑冒险”:所有握手信号的输出需通过寄存器打拍(尤其是高频场景,如 100MHz 以上)。
3. 寄存器映射设计
从机的核心是 “寄存器组”,需明确寄存器的 地址、读写属性、复位值,例如:
|
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
设计原则:
-
读写寄存器分开映射,避免同一地址同时支持读写导致的冲突; -
状态寄存器(如 STATUS)仅支持读,控制寄存器(如 CTRL)支持读写,确保数据一致性。
4. 响应信号生成
从机需根据传输结果生成 RDRESP/WRRESP:
-
地址在映射范围内,且寄存器读写正常 → OKAY; -
地址在映射范围内,但读写越界(如写只读寄存器) → SLVERR; -
地址不在映射范围内 → DECERR; -
响应信号需与 RDVALID/WRVALID同步输出,确保主机正确采样。
5. 时序约束
FPGA 设计中需为 AXI Lite 信号添加时序约束,确保跨时钟域(若主机与从机时钟不同)或同时钟域的时序收敛:
-
同时钟域:约束 ARVALID→ARREADY、WDVALID→WDREADY等路径的最大延迟,不超过时钟周期; -
跨时钟域:需通过 “异步 FIFO” 或 “握手同步器” 处理,避免亚稳态(如主机用 100MHz,从机用 50MHz)。
六、AXI Lite 工具链与开源资源
在实际开发中,无需手动编写所有 AXI Lite 代码,可借助工具自动生成或复用开源 IP:
1. FPGA 厂商工具
- Xilinx Vivado
:提供 AXI Lite IP(如AXI GPIO、AXI UART Lite),支持通过 IP Integrator 图形化配置,自动生成从机代码; - Intel Quartus
:提供 Avalon-ST to AXI Lite Bridge等 IP,支持 AXI Lite 与 Intel 总线的转换。
2. 开源 IP 与框架
- AXI Lite Slave Template
(Xilinx):Vivado 自带的从机模板,包含完整的握手逻辑和寄存器映射框架,可直接修改寄存器定义; - OpenCores AXI Lite
:开源的 AXI Lite 从机 / 主机 IP,支持 Verilog/VHDL 实现,可自定义数据宽度和地址映射; - PULP Platform AXI Lite
:面向嵌入式处理器(如 RISC-V)的 AXI Lite 外设库,包含 UART、I2C、SPI 等常用外设的 AXI Lite 接口。
3. 验证工具
- UVM(Universal Verification Methodology)
:工业界标准的验证框架,可搭建 AXI Lite 总线的验证环境,覆盖正常传输、错误响应、背压等场景; - Xilinx Vitis HLS
:支持 C/C++ 代码自动生成 AXI Lite 从机 IP,降低高级语言开发者的硬件设计门槛。
七、总结
AXI Lite 是一款 轻量级、高可靠性 的控制总线,核心优势在于:
-
简化的信号与时序(无突发、单拍传输),降低外设设计复杂度; -
分离的读写通道,支持并行传输,提升总线效率; -
完整的握手与响应机制,确保传输稳定性和错误可追溯。
它是 SoC 中 “处理器 - 外设” 控制交互的事实标准,广泛应用于嵌入式系统、FPGA 原型验证、ASIC 设计等场景。掌握 AXI Lite 的信号定义、时序流程和从机设计要点,是硬件工程师进行 SoC 集成的核心能力之一。
🌻亲爱的读者们,今天的分享就到这里啦!如果今天的内容对你有启发
记得点亮右下角的“❤️”或转发给需要的朋友,让温暖传递的更远!
生活或许没有标准答案,但每一次【分享】和【点赞】,都是我们相遇的印记。你最近有哪些感悟或故事?欢迎留言区聊一聊~~~
你的认可,是我们深夜码字的充电桩🔋
明天见!保持好奇,永远鲜活~
🔍关注我们,不错过每一次相遇


扫码领取免费学习资料~~~
往期精彩部分

