axi4-full,axi4-lite和aix4-stream 结合yolo加速器
一、先理清核心关系:同属AXI4协议族,分工互补而非替代
AXI4-FULL、AXI4-Lite、AXI4-Stream都属于ARM AMBA AXI4(Advanced eXtensible Interface 4)协议族,共享VALID/READY握手机制(保证数据传输可靠),但针对不同场景做了“裁剪/增强”,最终在YOLO加速器中形成“控制面(Lite)+ 地址化存储面(FULL)+ 连续计算面(Stream) ”的三层架构,缺一不可。
| 维度 | AXI4-Lite | AXI4-FULL | AXI4-Stream |
|---|---|---|---|
| 设计初衷 | 寄存器级低速控制 | 地址化存储高速批量读写 | 无地址连续数据流传输 |
| 核心特征 | 无突发、单32bit数据、低速 | 有地址、支持突发、高带宽 | 无地址、连续流、超高带宽 |
| 核心信号 | 地址+单数据+简单握手 | 地址+突发+多通道流水线 | 纯数据+流边界+极简握手 |
| 带宽效率 | 极低(仅适配控制) | 高(但有地址开销) | 100%(无额外开销) |
| 协作关系 | 配置加速器参数 | 读写DDR的地址化数据 | 加速器内部连续流计算 |
类比理解:把YOLO加速器看作“智能工厂”——
- AXI4-Lite = 工厂的“中控室”:发零散的控制指令(如设置检测阈值);
- AXI4-FULL = 工厂的“原料运输车”:按“仓库地址”从DDR(仓库)提货/送货;
- AXI4-Stream = 工厂的“生产流水线”:连续传输原料/半成品,无地址、不间断。
二、各协议的详细原理(从易到难,结合操作流程)
1. AXI4-Lite:极简控制协议(中控室指令)
核心原理
专为“寄存器级配置/状态读取”设计的极简内存映射协议,去掉了所有复杂特性,只保留“单次32bit数据传输”能力,逻辑最简单、资源占用最少。
核心特征
- 无突发传输:一次仅传输1个32bit数据,无法批量传;
- 固定位宽:地址32bit,数据32bit(不可变);
- 4个通道(裁剪版):
- 写地址通道(AW):传输要配置的寄存器地址;
- 写数据通道(W):传输寄存器的配置值;
- 写响应通道(B):从设备回传“配置是否成功”;
- 读地址通道(AR):传输要读取的寄存器地址;
- 读数据通道(R):从设备回传寄存器的状态值;
注:无突发相关信号(如ARLEN/AWLEN),无事务ID。
典型操作流程(以“配置YOLO检测阈值”为例)
sequenceDiagram
participant CPU(主设备)
participant YOLO加速器(从设备)
CPU->>YOLO加速器: AWVALID=1 + AWADDR=0x100(阈值寄存器地址)
YOLO加速器->>CPU: AWREADY=1(就绪接收地址)
CPU->>YOLO加速器: WVALID=1 + WDATA=0.5(检测阈值,32bit浮点)
YOLO加速器->>CPU: WREADY=1(就绪接收数据)
YOLO加速器->>CPU: BVALID=1 + BRESP=00(配置成功)
CPU->>YOLO加速器: BREADY=1(确认接收响应)
- 全程仅传输1个32bit数据,适配“零散控制指令”的需求,无需高带宽。
2. AXI4-FULL:全功能地址化传输协议(原料运输车)
核心原理
专为“地址化存储设备(DDR/BRAM)的高速批量读写”设计的全功能协议,核心是“突发传输+多通道流水线”,兼顾“地址化访问”和“高带宽”。
核心特征
- 支持突发传输:一次发“起始地址+突发长度”,连续传输1~256个数据,减少地址开销;
- 可变位宽:地址32/64bit,数据32/64/128/256bit(适配不同带宽需求);
- 5个独立通道(流水线并行):
通道 功能 关键信号 AW 写地址通道:传起始地址+突发参数 AWADDR(地址)、AWLEN(突发长度)、AWBURST(突发类型)、AWVALID/AWREADY W 写数据通道:传连续写数据 WDATA(数据)、WLAST(最后一个数据)、WVALID/WREADY B 写响应通道:回传写结果 BRESP(响应)、BVALID/BREADY AR 读地址通道:传起始地址+突发参数 ARADDR(地址)、ARLEN(突发长度)、ARBURST(突发类型)、ARVALID/ARREADY R 读数据通道:传连续读数据 RDATA(数据)、RLAST(最后一个数据)、RVALID/RREADY - 多事务并行:支持事务ID(AWID/ARID),多个读写事务可并行处理。
典型操作流程(以“从DDR读416×416图像”为例)
sequenceDiagram
participant YOLO加速器(主设备)
participant DDR MIG IP核(从设备)
YOLO加速器->>DDR MIG: ARVALID=1 + ARADDR=0x00000000(图像起始地址) + ARLEN=255(突发长度256) + ARBURST=01(递增突发)
DDR MIG->>YOLO加速器: ARREADY=1(就绪接收地址)
DDR MIG->>YOLO加速器: RVALID=1 + RDATA(连续256个像素数据) + RLAST=1(最后一个数据)
YOLO加速器->>DDR MIG: RREADY=1(就绪接收数据)
- 一次地址传输,连续传256个数据,大幅降低地址开销,适配DDR“按地址批量读写”的特性。
3. AXI4-Stream:无地址连续流协议(生产流水线)
核心原理
专为“高带宽、无地址、连续的数据流”设计的协议,完全抛弃地址概念,只关注“连续数据的可靠传输+流控”,是算法加速的核心协议。
核心特征
- 无地址信号:仅传输连续数据流,适配“视频/特征图”等无地址的连续数据;
- 核心信号(单向主→从):
信号 功能 TDATA 数据流(位宽可自定义:64/128/256bit) TVALID 主设备:数据有效 TREADY 从设备:就绪接收 TLAST 流边界标记(如一行特征图结束) TUSER 自定义标记(如一帧图像起始) TKEEP 字节有效标记(适配非对齐数据) - 极简握手:仅
TVALID=1且TREADY=1时,数据完成传输,支持“生产者-消费者”流控; - 天然连续:无突发概念,数据可无限连续传输,带宽利用率100%。
典型操作流程(以“YOLO卷积层间传输特征图”为例)
sequenceDiagram
participant 卷积层1(主设备)
participant 卷积层2(从设备)
卷积层1->>卷积层2: TVALID=1 + TDATA(128bit特征图数据) + TUSER=1(帧起始)
卷积层2->>卷积层1: TREADY=0(计算忙,暂不接收)
Note over 卷积层1,卷积层2: 卷积层2计算完成,置TREADY=1
卷积层2->>卷积层1: TREADY=1
卷积层1->>卷积层2: TDATA(连续传输) + TLAST=1(一行特征图结束)
Note over 卷积层1,卷积层2: 数据持续传输,直到一帧特征图结束
- 从设备忙时可暂停传输,数据无缝衔接,无任何额外开销,适配并行计算的“连续数据需求”。
三、在YOLO加速器中的分工与协作(完整架构)
YOLO加速器的核心架构是“DDR存储→AXI4-FULL读写→AXI4-Stream计算→AXI4-Lite配置”,三者协作形成闭环:
flowchart LR
subgraph 控制面(AXI4-Lite)
A[CPU/MCU] -->|配置参数:检测阈值、锚框、图像尺寸| B[YOLO配置寄存器]
end
subgraph 地址化存储面(AXI4-FULL)
C[DDR芯片] -->|AXI4-FULL读突发:图像/权重| D[AXI4-FULL→Stream IP核]
E[Stream→AXI4-FULL IP核] -->|AXI4-FULL写突发:检测结果| C
end
subgraph 连续计算面(AXI4-Stream)
D -->|AXI4-Stream:连续图像流| F[YOLO输入层]
F -->|AXI4-Stream:特征图流| G[卷积层/池化层/激活层]
G -->|AXI4-Stream:检测结果流| H[YOLO输出层]
H --> E
end
B --> G[配置计算参数]
1. AXI4-Lite:加速器的“中控系统”
- 作用:负责“零散的控制指令传输”,不参与数据传输;
- 具体场景:
- CPU通过AXI4-Lite向YOLO加速器的寄存器写入“检测置信度阈值(如0.5)、锚框参数(YOLOv5的6个锚框)、输入图像尺寸(416×416)”;
- CPU通过AXI4-Lite读取YOLO加速器的“状态寄存器”(如计算完成标志、错误标志);
- 为什么用Lite:这些是“单32bit的零散指令”,无需高带宽,Lite的极简逻辑能节省FPGA资源,且足够满足需求。
2. AXI4-FULL:加速器与DDR的“桥梁”
- 作用:负责“DDR的地址化读写”,是“批量数据进出DDR的唯一方式”;
- 具体场景:
- 从DDR读:通过AXI4-FULL的“递增突发”,批量读取DDR中存储的“416×416图像数据”“YOLO权重参数”;
- 向DDR写:通过AXI4-FULL的“递增突发”,批量写入YOLO输出的“检测结果(边界框、类别、置信度)”;
- 为什么用FULL:DDR是“按地址存储的硬件”,必须通过地址才能定位数据,且FULL的“突发传输”能降低地址开销,适配DDR的高带宽需求。
3. AXI4-Stream:加速器的“核心计算通路”
- 作用:负责“所有计算层间的连续数据流传输”,是YOLO加速的核心;
- 具体场景:
- 输入侧:AXI4-FULL→Stream IP核把“DDR的地址化图像数据”转换成“连续的像素流”,传入YOLO输入层;
- 计算层间:卷积层、池化层、激活层之间,通过AXI4-Stream传输“连续的特征图流”,用
TLAST标记行边界,TUSER标记帧边界; - 输出侧:YOLO输出层把“连续的检测结果流”传给Stream→AXI4-FULL IP核,准备写入DDR;
- 为什么用Stream:
- 无地址开销,带宽利用率100%,适配YOLO“并行计算”的高带宽需求;
TVALID/TREADY流控能避免数据溢出,适配“计算单元忙/闲”的动态场景;- 宽位宽(如256bit)传输,匹配FPGA的DSP阵列并行计算能力(一次算32个像素的卷积)。
4. IP核的“协议转换”作用
FPGA厂商提供的IP核(如AXI DMA、AXI Stream Data FIFO)能一键实现“AXI4-FULL↔AXI4-Stream”转换,你无需写转换逻辑:
- AXI4-FULL→Stream:剥离地址,把“批量地址化数据”转换成“连续流数据”;
- Stream→AXI4-FULL:添加地址,把“连续流数据”转换成“批量地址化数据”,写入DDR。
四、核心总结(关键点回顾)
- 三者同源不同分工:都基于AXI4的VALID/READY握手,但Lite适配控制、FULL适配地址化存储、Stream适配连续流计算;
- 缺一不可的协作逻辑:
- 无Lite:无法配置YOLO参数,加速器是“死的”;
- 无FULL:无法读写DDR,加速器无数据来源/结果存储;
- 无Stream:用FULL做层间传输,地址开销会导致算力利用率暴跌,无法实时检测;
- 效率核心:Stream负责“无开销的连续计算”,FULL负责“地址化的DDR读写”,Lite负责“极简的参数配置”,三者结合是YOLO加速器的最优架构。
简单来说:AXI4-Lite管“怎么算”(配置参数),AXI4-FULL管“数据在哪”(DDR地址),AXI4-Stream管“怎么传数据算”(连续流)——三者共同构成了YOLO加速器的完整工作流。

浙公网安备 33010602011771号