1. 项目背景与核心挑战
在边缘计算和实时视觉处理领域,FPGA因其低延迟、高能效和并行计算优势成为部署深度学习模型的热门选择。YOLOv8作为当前最先进的实时目标检测算法,其轻量级版本YOLOv8n(nano)特别适合资源受限的硬件平台。然而,传统FPGA部署方案通常依赖PS(Processing System)端进行预处理和调度,这带来了两个关键瓶颈:
- 实时性损耗:PS与PL(Programmable Logic)端的数据交互需要通过AXI总线,在视频流处理场景中可能成为性能瓶颈
- 资源占用:PS端运行Linux系统或裸机程序会消耗宝贵的ARM核资源,影响整体系统设计灵活性
我们实现的"纯PL端部署"方案彻底绕开PS端,直接在FPGA可编程逻辑单元完成从图像输入到检测结果输出的全流程。实测在Xilinx Zynq UltraScale+ MPSoC器件上,处理640x480分辨率视频流时达到87FPS,功耗仅3.2W。
2. 硬件架构设计
2.1 系统级框图
code复制图像传感器 → MIPI CSI-2 RX → 图像预处理 → YOLOv8n加速引擎 → 检测结果输出
↑ ↓ ↑
时钟管理 DDR4缓存控制 配置寄存器
整个数据流完全在PL端实现,通过AXI HP接口直接访问DDR内存,关键设计考量:
- 带宽优化:采用64位AXI总线,突发传输长度256,理论带宽达到4.8GB/s(150MHz时钟)
- 零拷贝架构:视频数据从MIPI接口直接写入DDR,加速引擎从相同物理地址读取
- 双缓冲机制:使用两个1MB的DDR区域交替读写,避免流水线阻塞
2.2 YOLOv8n计算图优化
原始YOLOv8n包含约250万个参数,直接部署需要约4.5MB存储空间。我们采用的优化策略:
python复制# 典型卷积层量化示例(PyTorch伪代码)
class QConv2d(nn.Module):
def __init__(self, in_c, out_c, k=3, s=1, p=1):
super()
