《深入理解AXI4协议:从入门到实践》-- 第三篇:AXI4传输机制

第三篇:AXI4传输机制

AXI4协议的核心在于其高效的传输机制,包括基本握手规则、突发传输模式、原子操作以及乱序完成支持。本篇将深入解析这些机制的设计原理和实际应用。


1. 基本传输流程

AXI4通过独立的通道实现读/写操作,所有传输均遵循 VALID/READY握手协议

1.1 读操作流程

读地址阶段

  • 主设备置 ARVALID=1,发送地址(ARADDR)、突发长度(ARLEN)、突发类型(ARBURST)等信号。
  • 从设备在准备好接收地址后置 ARREADY=1,完成地址握手(ARVALID & ARREADY同时为高)。

读数据阶段

  • 从设备返回数据时置 RVALID=1,主设备在准备好接收数据时置 RREADY=1
  • 每个数据拍需满足 RVALID & RREADY握手,RLAST=1表示突发传输结束。

示例时序 (4拍突发读):

Cycle | ARADDR | ARVALID | ARREADY | RDATA | RVALID | RREADY | RLAST  
---------------------------------------------------------------  
1     | 0x1000 | 1       | 0       | -     | 0      | 1      | 0  
2     | 0x1000 | 1       | 1       | -     | 0      | 1      | 0  
3     | -      | 0       | 0       | D0    | 1      | 1      | 0  
4     | -      | 0       | 0       | D1    | 1      | 1      | 0  
5     | -      | 0       | 0       | D2    | 1      | 1      | 0  
6     | -      | 0       | 0       | D3    | 1      | 1      | 1  
1.2 写操作流程

写地址阶段

  • 主设备置 AWVALID=1,发送写地址(AWADDR)及相关属性。
  • 从设备通过 AWREADY=1确认地址接收。

写数据阶段

  • 主设备发送数据(WDATA)和字节使能(WSTRB),WLAST=1标记最后一拍。
  • 每次数据传输需满足 WVALID & WREADY握手。

写响应阶段

  • 从设备完成数据写入后,返回 BRESP响应(BVALID=1)。
  • 主设备通过 BREADY=1确认响应接收。

关键规则

  • 地址和数据通道可并行操作(例如,地址通道未完成时,数据通道可提前发送数据)。
  • 写响应必须在所有数据传输完成后返回。

2. 突发传输(Burst Transfer)

突发传输是AXI4提升带宽的关键机制,单次事务可传输多拍数据。

2.1 突发类型
类型描述应用场景
INCR地址按数据宽度递增(线性传输)访问连续内存(如数组、DMA)
WRAP地址递增,到达边界后回绕到起始地址缓存行填充(Cache Line Fill)
FIXED地址固定不变重复写入同一寄存器或FIFO
2.2 突发参数配置
  • 突发长度(Burst Length, AxLEN
    定义传输的数据拍数,AXI4支持1256拍(AXI3仅支持116)。
  • 数据宽度(AxSIZE
    每拍数据的字节数(如 AxSIZE=2表示4字节)。
    必须小于或等于总线宽度(例如,64位总线最大支持 AxSIZE=3,即8字节)。
2.3 地址计算示例
  • INCR突发(4拍,数据宽度4字节)
    起始地址:0x1000
    地址序列:0x1000 → 0x1004 → 0x1008 → 0x100C
  • WRAP突发(4拍,数据宽度4字节,边界16字节)
    起始地址:0x100C
    地址序列:0x100C → 0x1010 → 0x1000 → 0x1004

3. 原子操作与乱序传输
3.1 原子操作(Atomic Operations)

AXI4通过 独占访问(Exclusive Access) 实现原子读-修改-写操作,用于多核同步。

  • 独占读 :主设备发送 AxLOCK=1标记独占读请求,从设备记录该地址的访问状态。
  • 独占写 :主设备在独占读后发起独占写,从设备检查地址是否未被修改。
    若成功:返回 EXOKAY响应。
    若失败:返回 SLVERR,表示其他设备已修改数据。

应用场景

实现自旋锁(Spinlock)、信号量(Semaphore)等多核共享资源保护。

3.2 乱序传输(Out-of-Order Completion)
  • 事务ID(AxID
    主设备为每个事务分配唯一ID,从设备可乱序返回响应,但同一ID的事务需按顺序完成。
  • 示例
    主设备发送事务ID=1(地址A)和ID=2(地址B)。
    从设备可能先完成ID=2的事务,再完成ID=1的事务。

4. 传输机制优化技巧
4.1 提升吞吐量
  • 流水线化 :地址通道和数据通道并行操作,减少等待时间。
  • 多未完成事务(Multiple Outstanding Transactions)
    主设备在等待响应时继续发起新事务,充分利用总线带宽。
4.2 避免死锁
  • 依赖关系管理
    若事务B依赖事务A的结果,需保证事务A先完成(通过相同ID或软件同步)。
  • 超时机制
    设计硬件监控响应超时,防止因从设备故障导致系统挂起。

5. 实际案例分析
5.1 缓存行填充(Cache Line Fill)
  • 场景 :CPU缓存未命中时,通过AXI4突发读(WRAP类型)从DDR读取64字节缓存行。
  • 配置
    ARBURST=WRAP, ARLEN=7(8拍突发),ARSIZE=3(8字节/拍)。
    地址从 0x1000开始,回绕边界为64字节(0x1000 ~ 0x103F)。
5.2 DMA数据传输
  • 场景 :DMA控制器通过AXI4突发写(INCR类型)将数据从外设搬运到内存。
  • 优化
    设置较大突发长度(如 AWLEN=255)减少地址握手次数。
    使用多未完成事务实现“乒乓缓冲”(Ping-Pong Buffer)连续传输。

6. 总结
  • 总结 :AXI4通过突发传输、原子操作和乱序完成机制,显著提升了总线效率,适用于高性能计算场景。

附录:突发传输配置速查表

参数INCR突发WRAP突发FIXED突发
地址变化线性递增递增并回绕固定不变
典型应用内存连续访问缓存行填充FIFO/寄存器写入
突发长度1~2562、4、8、16(2^n)任意
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值