1. 工业视觉系统需求分析与Zynq平台选型

工业视觉系统的设计从来不是“先选板卡再想功能”,而是从任务指标出发,反向推导算力、接口、延迟与功耗约束,最终落到具体的芯片平台。本节围绕检测、测量、定位、识别四类典型任务,梳理指标分解方法,并给出Zynq-7000与Zynq UltraScale+ MPSoC的选型依据,最后说明软硬件协同设计的基本方法。

一、四类典型任务的指标分解

工业视觉任务虽然形态各异,但都可以拆解为“成像—预处理—特征提取—决策输出”这条链路。区别在于每一环的指标权重不同。

检测(有无、缺陷、瑕疵):核心指标是召回率与误检率。例如一条3C零件外观检测线,要求缺陷召回率≥99.5%,误检率≤0.5%,节拍60件/分钟,即单件处理时间≤1秒。这类任务图像分辨率通常为500万~1200万像素,算法以阈值分割、形态学、轻量CNN为主,对延迟敏感但对绝对算力要求中等。

测量(尺寸、间距、角度):核心指标是重复精度与绝对精度。例如测量金属件孔径,要求重复精度±0.02mm,对应到像素需达到亚像素级边缘定位。此时标定质量、镜头畸变、光源稳定性比算力更关键,算法以亚像素边缘、拟合、标定为主,算力需求反而不高,但对图像采集的确定性要求极高。

定位(抓取、对位、引导):核心指标是位姿精度与实时性。例如机器人抓取散乱工件,要求XY定位精度±0.1mm、角度±0.5°,处理延迟≤50ms。这类任务常用模板匹配、特征点匹配、PnP位姿解算,算力需求中等,但要求与运动控制紧密同步。

识别(OCR、条码、分类):核心指标是准确率与吞吐量。例如药品包装OCR,要求字符识别准确率≥99.9%,同时处理多路相机。这类任务常用CNN/Transformer,算力需求最高,且模型可能随产线换型而更新。

把上述指标落到工程参数上,可以形成一张需求分解表:

任务类型关键指标典型分辨率单帧延迟算法特征算力倾向
检测召回率/误检率5~12MP≤30ms分割+轻量CNN中
测量重复精度2~5MP≤20ms亚像素+标定低
定位位姿精度/延迟2~8MP≤50ms匹配+PnP中
识别准确率/吞吐1~5MP≤100msCNN/Transformer高

需要强调的是,延迟指标必须区分“采集延迟”“处理延迟”“输出延迟”,三者之和才是系统响应时间。很多项目失败并非算力不足,而是没有把链路延迟拆开分析。

二、Zynq-7000与Zynq UltraScale+ MPSoC的选型依据

Zynq系列的本质是“PS(ARM处理器)+ PL(FPGA逻辑)”的异构架构。选型的核心问题是:哪些任务放PS,哪些放PL,需要多大的PL资源与PS算力。

Zynq-7000:双核Cortex-A9,主频约667MHz~1GHz,PL为Artix-7或Kintex-7级别。适合:

  • 中低分辨率(≤5MP)、中低帧率(≤60fps)的检测与测量;
  • 以传统CV算法为主,PL承担图像采集、去噪、阈值、形态学等流水线;
  • PS运行Linux,负责标定、通信、人机界面;
  • 功耗低、成本敏感、无需复杂AI推理的场景。

Zynq UltraScale+ MPSoC:四核Cortex-A53 + 双核Cortex-R5,PL为UltraScale+级别,部分型号集成VCU视频编解码与Mali GPU。适合:

  • 高分辨率(≥8MP)、高帧率(≥120fps)或多路相机同步;
  • 需要CNN推理加速,PL中实现DPU或自定义卷积流水线;
  • 需要硬实时控制,Cortex-R5跑裸机或RTOS处理运动同步;
  • 需要高速接口:PCIe Gen3、USB3.0、DisplayPort、10G以太网。

选型时建议按以下顺序判断:先看接口带宽(相机接口是MIPI、GigE还是CoaXPress),再看算法类型(传统CV还是深度学习),再看实时性等级(软实时还是硬实时),最后看功耗与成本。如果四步中有两步以上指向UltraScale+,就应直接选MPSoC,避免后期因算力或接口不足而返工。

工业视觉任务到Zynq平台的选型映射 任务指标 检测 召回率/误检率 测量 重复精度 定位 位姿精度/延迟 识别 准确率/吞吐 工程分解 分辨率/帧率 接口带宽 算法类型 实时性等级 功耗/成本 Zynq平台选型 Zynq-7000 双核A9 + Artix/Kintex-7 ≤5MP / ≤60fps 传统CV + PL流水线 软实时 / 低成本 Zynq UltraScale+ MPSoC 四核A53 + 双核R5 + UltraScale+ ≥8MP / ≥120fps / 多路 CNN推理 + 硬实时控制 PCIe Gen3 / USB3.0 / 10G VCU / DPU / GPU 判断规则:接口带宽、算法类型、实时性、功耗成本中≥2项指向MPSoC → 选UltraScale+

三、软硬件协同设计方法

选定平台后,真正决定项目成败的是软硬件任务划分。Zynq的价值在于可以把“数据搬运”和“像素级运算”下沉到PL,把“决策”和“通信”留在PS。具体做法如下。

第一步:画数据流图,标注每级的数据量与速率。例如一台8MP相机、60fps、8bit灰度,原始数据率为8M×60×1B≈480MB/s。若在PS中逐帧拷贝,DDR带宽很快成为瓶颈。此时应把去噪、阈值、连通域标记放入PL,只把特征结果(如缺陷坐标、面积)通过AXI-DMA传给PS,数据量可降到KB级。

第二步:按“确定性”划分。需要严格时序、逐像素同步的操作放PL;需要复杂分支、浮点运算、网络协议栈的操作放PS。例如亚像素边缘提取中的卷积核计算适合PL,而标定参数解算、结果判定适合PS。

第三步:用AXI-Stream与AXI-Lite定义接口。视频流用AXI-Stream,寄存器配置用AXI-Lite。在Vivado中先搭Block Design,确认DMA、VDMA、GPIO、中断的连接关系,再导出XSA给Vitis或PetaLinux。

第四步:在PS侧建立“采集—处理—输出”三线程模型。采集线程通过VDMA中断取帧,处理线程调用PL加速器或NEON优化函数,输出线程通过TCP/Modbus把结果发给PLC。线程间用环形缓冲区解耦,避免因某一级抖动导致丢帧。

教学示例参数(合理假设):某定位任务采用Zynq-7020,相机2MP、30fps,PL中实现Sobel+阈值+连通域,PS中运行模板匹配。实测单帧处理约18ms,其中PL占6ms,PS占12ms,满足≤50ms延迟要求。该数据为示例性估算,实际项目需以板级实测为准。

最后需要提醒:选型不是“越强越好”。Zynq-7000在传统CV场景中往往比MPSoC更划算,因为其PL资源足够、功耗低、开发链成熟。只有当任务明确需要AI推理、多路高分辨率或硬实时控制时,才应升级到UltraScale+ MPSoC。把指标分解清楚,选型自然水到渠成。