AXI总线之FPGA应用

AXI总线在FPGA与可编程逻辑中的应用非常广泛,尤其是在IP核互连、自定义逻辑模块与处理器协同设计中。以下从使用规则收发协议注意事项三个方面详细说明其实现细节:

、AXI总线在FPGA中的使用规则

1.1、 协议选择规则

根据功能需求选择AXI子协议:

AXI4-Lite

适用场景:配置寄存器、低速外设(如UART、GPIO)。

规则:仅支持单次传输(无突发),地址空间较小(通常32位)。

AXI4

适用场景:高带宽模块(如DMA、DDR控制器)。

规则:支持突发传输(1~256拍),需处理多事务并行(Outstanding Transactions)。

AXI4-Stream

适用场景:流式数据传输(如视频流、传感器数据)。

规则:无地址信号,仅通过TVALID/TREADY握手传输连续数据。

1.2 主从设备设计规则

主设备(Master)

需生成ARVALID/AWVALID信号发起读/写请求。

必须支持突发传输(AXI4)或单次传输(AXI-Lite)。

从设备(Slave)

需在ARREADY/AWREADY有效时锁存地址,并在RVALID/WVALID有效时返回数据。

必须响应主设备的错误信号(RRESP/BRESP)。

1. 3 地址映射规则

地址对齐:突发传输的起始地址需对齐数据宽度(如32位数据对应4字节对齐)。

例如:32位数据总线的地址最低两位应为00。

地址空间分配:使用FPGA工具(如Xilinx Address Editor)为每个从设备分配唯一地址范围。

示例:将AXI-Lite外设配置在0x4000_0000~0x4000_FFFF区间。

1. 4 时钟与复位规则

同步设计

AXI接口的所有信号必须在同一时钟域(ACLK)下同步。

跨时钟域需使用异步FIFO或桥接逻辑(如AXI Clock Converter IP)。

复位策略

复位信号(ARESETn)需异步置位、同步释放,避免亚稳态。

二、 收发协议详解

AXI4和AXI4-Lite接口都由5个不同的通道组成:

  1. 写地址通道;
  2. 读地址通道;
  3. 写数据通道;
  4. 读数据通道;
  5. 写响应通道;

读事务结构图

写事务结构图

2.1、 AXI4-Lite协议

写事务流程

主设备置AWVALID和AWADDR,从设备响应AWREADY。

主设备置WVALID和WDATA,从设备响应WREADY。

从设备完成写入后返回BVALID和BRESP(状态码)。
时序图示例

ACLK /¯¯¯\/¯¯¯\/¯¯¯\/¯¯¯\_

AWVALID /¯¯¯¯¯¯¯¯¯¯\

AWREADY /¯¯¯¯¯¯\____

WVALID __/¯¯¯¯¯¯¯¯\

WREADY /¯¯¯¯¯¯\

BVALID ____________/¯¯¯¯¯¯\

读事务流程

主设备置ARVALID和ARADDR,从设备响应ARREADY。

从设备返回RVALID、RDATA和RRESP。
关键信号

ARPROT:设置访问权限(安全/非安全、特权级)。

RRESP:返回状态(OKAY、DECERR、SLVERR)。

2. 2 AXI4协议(突发传输)

突发类型

INCR(增量):地址按数据宽度递增(如32位数据,地址+4)。

WRAP(回环):地址在设定范围内循环(用于缓存行填充)。

突发传输流程(以写为例):

主设备发送AWADDR、AWBURST(突发类型)、AWLEN(突发长度)。

从设备响应AWREADY后,主设备分多次发送WDATA(每拍数据对应一个WVALID)。

最后通过WLAST标志结束传输。

示例代码(Verilog)

复制代码
// 主设备写控制逻辑

always @(posedge ACLK) begin

  if (AWREADY && AWVALID) begin

    next_addr = AWADDR + (data_width/8); // 计算下一地址

  end
end
2. 3 AXI4-Stream协议

数据传输规则:发送方置TVALID,接收方置TREADY,两者同时有效时完成传输。可附加TLAST标志表示数据包结束(如一帧图像传输完成)。

时序示例

ACLK /¯¯¯\/¯¯¯\/¯¯¯\/¯¯¯\_

TVALID _/¯¯¯¯¯¯¯¯¯¯¯¯\

TREADY /¯¯¯\/¯¯¯\___

TDATA ___<D0><D1><D2>

TLAST __________________/¯¯¯\

三、 注意事项

3. 1 时序收敛

关键路径优化:AXI控制逻辑(如地址生成、握手信号)易成为关键路径,需插入流水寄存器。

示例:将ARVALID生成逻辑拆分为两级流水线。

时钟频率限制:高频设计(>300MHz)需减少组合逻辑层级,必要时使用寄存器切割(Register Slice)。

3. 2 资源消耗优化

AXI-Lite vs. AXI4

AXI-Lite接口占用较少逻辑资源(约200 LUTs),适合低速控制。

AXI4接口可能消耗上千LUTs,需权衡带宽需求。

共享总线与Crossbar:多主设备时,使用AXI Interconnect(交叉开关)优化带宽,但会增加面积。

3. 3 错误处理

超时机制

从设备若长时间未响应(如死锁),主设备需发起超时复位。

示例:计数器监控BVALID或RVALID的超时状态。

错误响应

从设备返回SLVERR(从设备错误)或DECERR(地址解码错误)时,主设备需记录错误日志。

3. 4 仿真与调试

仿真模型

使用Xilinx AXI Verification IP(VIP)或开源AXI BFM(Bus Functional Model)验证协议合规性。

调试技巧

插入ILA(Integrated Logic Analyzer)抓取AXI信号,监控ARVALID/RREADY等握手时序。

常见问题:地址未对齐、突发长度超限、握手信号死锁。

3. 5 FPGA厂商特定差异

Xilinx Vivado

推荐使用AXI SmartConnect自动生成互连逻辑,支持动态地址映射。

AXI4-Stream需搭配DMA IP(如AXI DMA)实现PS(处理器)与PL(逻辑)间数据传输。

Intel Quartus

使用Platform Designer(原QSys)配置AXI总线,支持Nios II处理器与自定义IP核集成。

注意:Intel的AXI实现可能要求信号命名与Xilinx不同(如awvalid vs. AWVALID)。

四、 典型应用示例(Xilinx FPGA)

场景:通过AXI-Lite配置自定义PWM模块
地址映射:

0x4000_0000:PWM占空比寄存器(32位可写)。

0x4000_0004:PWM频率寄存器(32位可写)。

从设备逻辑( verilog

复制代码
always @(posedge ACLK) begin

  if (AWVALID && AWADDR == 32'h4000_0000 && WVALID) begin

    pwm_duty <= WDATA; // 更新占空比

  end

end

主设备(MicroBlaze CPU)

cs 复制代码
// C代码示例

#define PWM_DUTY_ADDR 0x40000000void set_pwm_duty(uint32_t duty) {

  *(volatile uint32_t *)PWM_DUTY_ADDR = duty;}

五、 总结

AXI总线在FPGA中的使用需严格遵循协议规范,并针对资源、时序和调试进行优化:

协议选择:根据带宽需求选择AXI4/AXI-Lite/AXI-Stream。

设计要点:地址对齐、握手时序、错误处理。

工具辅助:利用厂商提供的IP核(如AXI Interconnect)简化开发。

调试关键:ILA抓取信号,仿真验证协议完整性。

掌握这些规则与技巧,可高效实现FPGA中复杂系统的AXI互连设计。

相关推荐
霖001 小时前
FPGA中级项目4——DDS实现
大数据·经验分享·嵌入式硬件·学习·fpga开发·fpga
宫瑾5 小时前
逻辑派G1 6层高速板学习
学习·fpga开发
泪水打湿三角裤5 小时前
FPGA-流水灯
fpga开发
Terasic友晶科技6 小时前
07-SDRAM控制器的设计——Sdram_Control.v代码解析
fpga开发·tsp·sdram·de1-soc·de2i-150·de2-115·c5g
绿算技术6 小时前
技术点提升效率详解
科技·缓存·ai·fpga开发
szxinmai主板定制专家1 天前
轨道交通CPU+FPGA控制器,支持codesys/vxWorks/翼辉等实时系统
arm开发·人工智能·fpga开发·架构
发光的沙子1 天前
FPGA----完美解决Windows下[XSIM 43-3409][XSIM 43-3915]错误
fpga开发
2201_755183711 天前
【FPGA】——实现六位流水灯
fpga开发
君临天下.鑫2 天前
基于 Verilog 的数字电路设计与仿真:乘数器与多路复用器实践
fpga开发·课程设计·个人开发