作为FPGA开发中最常用的片上总线协议之一,AXI(Advanced eXtensible Interface)协议在Xilinx和Intel的FPGA设计中扮演着核心角色。本文将系统性地剖析AXI4协议的关键技术细节,帮助工程师深入理解其工作机制,并为相关面试提供全面的技术参考。
AXI总线采用分离通道设计,包含5个独立通道:
这种分离通道设计使得AXI协议具有以下显著优势:

AXI协议包含三种主要变体:
实际工程中选择协议版本时需要考虑:AXI4-Full适合高性能数据传输场景,AXI4-Lite适合寄存器配置等简单场景,AXI4-Stream则适合视频流等连续数据传输。
AXI协议采用基于VALID/READY的握手机制,其核心规则包括:
verilog复制// 典型的VALID信号生成逻辑示例
always @(posedge ACLK) begin
if (~ARESETn) begin
AWVALID <= 1'b0;
end else if (~AWVALID && start_transfer) begin
AWVALID <= 1'b1; // 数据就绪后立即置高VALID
end else if (AWREADY && AWVALID) begin
AWVALID <= 1'b0; // 握手成功后置低
end
end

关键依赖规则:

关键依赖规则:
完整的写事务包含三个阶段:
verilog复制// 写数据通道控制示例
assign wnext = WREADY & WVALID;
always @(posedge ACLK) begin
if (~ARESETn) begin
WVALID <= 1'b0;
end else if (~WVALID && start_write) begin
WVALID <= 1'b1;
end else if (wnext && WLAST) begin
WVALID <= 1'b0;
end
end
读事务包含两个阶段:
verilog复制// 读数据通道控制示例
always @(posedge ACLK) begin
if(~ARESETn) begin
RREADY <= 1'b0;
end else if (RVALID) begin
if (RLAST && RREADY) begin
RREADY <= 1'b0;
end else begin
RREADY <= 1'b1;
end
end
end
| 信号 | 源 | 描述 |
|---|---|---|
| ACLK | Clock source | 全局时钟信号 |
| ARESETn | Reset source | 低电平有效复位信号 |
| 信号 | 位宽 | 描述 |
|---|---|---|
| AWID | [3:0] | 写事务ID,用于多事务区分 |
| AWADDR | [31:0] | 写起始地址 |
| AWLEN | [3:0] | 突发长度(实际长度=AWLEN+1) |
| AWSIZE | [2:0] | 每次传输的字节数(2^AWSIZE) |
| AWBURST | [1:0] | 突发类型(FIXED/INCR/WRAP) |
| AWVALID | 1 | 地址有效信号 |
| AWREADY | 1 | 地址接收就绪信号 |
AXI支持三种突发传输模式:
WRAP模式地址计算示例:
plaintext复制Start Addr = 0x34, Burst Length = 8, Num_Bytes = 4
Lower Bound = INT(0x34/32)*32 = 0x20
Upper Bound = 0x20 + 32 = 0x40
地址序列:
0x34 → 0x38 → 0x3C → 0x20 → 0x24 → 0x28 → 0x2C → 0x30
| 特性 | AXI | AHB |
|---|---|---|
| 通道结构 | 5个独立通道 | 3个共享通道 |
| Outstanding支持 | 支持 | 不支持 |
| 流水线阶段 | 可在任意通道插入寄存器 | 固定流水线 |
| 突发长度 | 1-256(INCR) | 固定几种模式 |
| 传输顺序 | 同ID保序,不同ID可乱序 | 严格保序 |
| 功耗 | 较高 | 较低 |
| 非对齐传输 | 支持 | 不支持 |
| Exclusive访问 | 支持 | 不支持 |

在实际FPGA工程中,AXI协议因其高性能和灵活性已成为主流选择,特别是在需要高带宽数据传输的应用中。理解AXI协议的这些细节对于设计高效可靠的FPGA系统至关重要,也是相关技术面试中的重点考察内容。