3. 视频处理系统需求分析与架构设计
视频处理系统的架构设计从来不是先画框图再填参数,而是从需求约束出发,逐步收敛到软硬件分区。分辨率、帧率、像素格式决定了数据量的下限,延迟、带宽、功耗则决定了实现路径的上限。本节以一条典型的 4K 智能视觉链路为例,说明如何把这些约束量化,并据此完成 Versal 平台上的软硬件划分。
一、从像素流到带宽:先把数据量算清楚
视频系统的第一性约束是数据率。单路视频的原始像素率由分辨率、帧率和像素格式共同决定:
像素率 = 水平像素 × 垂直像素 × 帧率
4K UHD: 3840 × 2160 × 60 fps ≈ 497.7 Mpixel/s
原始带宽 = 像素率 × 每像素比特数
RGB888 (24 bit): 497.7 M × 24 ≈ 11.94 Gbit/s
YUV422 10bit (20 bit): 497.7 M × 20 ≈ 9.95 Gbit/s
YUV420 8bit (12 bit): 497.7 M × 12 ≈ 5.97 Gbit/s
这里有一个容易被忽略的工程细节:视频有效像素之外还有消隐区。以 3840×2160@60 为例,若按 CEA-861 时序,总像素约为 4400×2250,实际像素时钟接近 594 MHz,比有效像素率高出约 14%。DDR 带宽预算必须按含消隐的总量估算,否则会在高负载场景下出现欠载。
把链路各环节叠加,就能得到带宽需求表。下表为示例假设值,用于说明估算方法,并非实测结果:
| 处理环节 | 数据形态 | 读写次数 | 估算带宽 |
|---|---|---|---|
| 输入采集(MIPI/HDMI) | YUV422 10bit | 写 1 次 | ≈ 10 Gbit/s |
| 去马赛克/色彩校正 | RGB888 | 读 1 + 写 1 | ≈ 24 Gbit/s |
| 缩放至 1080p | RGB888 | 读 1 + 写 1 | ≈ 12 Gbit/s |
| AI 推理输入(INT8) | 1080p 张量 | 读 1 | ≈ 2 Gbit/s |
| 显示输出 | RGB888 | 读 1 | ≈ 12 Gbit/s |
合计约 60 Gbit/s。Versal 的 DDR4/LPDDR4 控制器单通道理论带宽通常在 100 Gbit/s 量级,看似充裕,但实际可用带宽受刷新、bank 冲突和仲裁效率影响,工程上一般按 60%~70% 折算。因此这条链路已经接近单通道的舒适区上限,架构上需要考虑把部分中间结果留在片上而非反复回写 DDR。
二、延迟与功耗:决定分区边界的两个硬指标
延迟需求通常分三档:交互式显示要求端到端小于 1 帧(约 16.7 ms);工业检测类允许 2~3 帧;离线分析类可放宽到百毫秒级。延迟预算要逐级分配,例如采集 2 ms、预处理 3 ms、推理 5 ms、后处理 2 ms、显示 3 ms,合计 15 ms,留出 1.7 ms 余量。
功耗约束则直接限制可用的硬件资源。Versal 的 AI Engine 阵列在满负荷下功耗可观,若系统散热预算只有 15 W,就不能让全部 AIE 同时跑在高占空比。此时应把周期性、规则性强的像素级运算放到 PL 的逻辑资源中,把矩阵密集的推理放到 AIE,把控制、协议栈和调度放到 PS 的 ARM 核,形成三级分工。
三、软硬件分区策略
分区不是把功能平均切三份,而是按数据流方向逐段判断“这段运算的算术强度是否值得专用硬件”。算术强度低(每字节数据只做几次运算)的环节,如色彩空间转换、Gamma、简单滤波,放 PL 用流水线实现最划算;算术强度高(每字节做几十到几百次乘加)的环节,如卷积神经网络,放 AIE 才能发挥并行优势。
下图给出这条 4K 链路的软硬件分区与数据流关系。图中标注了各段的数据形态、承载单元和关键约束,便于对照前面的带宽与延迟预算进行核对。
四、分区落地时的三个判断点
第一,判断数据是否需要跨域回写。PL 到 AIE 的直连 AXI-Stream 可以避免一次 DDR 往返,节省约 12 Gbit/s 的读写带宽。只有当数据需要被多个消费者复用或需要跨帧缓存时,才值得写入 DDR。
第二,判断流水线深度与延迟的权衡。PL 中的缩放和格式转换若采用多级流水,吞吐可以提高,但会引入若干行缓冲延迟。对于 4K 图像,一行约 3840 像素,若使用 8 行缓冲,仅缓冲延迟就约 8×3840/594M ≈ 52 μs,多级叠加后需重新核对总延迟预算。
第三,判断 AIE 的占空比。若推理只在每帧的感兴趣区域上执行,AIE 的实际负载可能远低于峰值,此时可以降低时钟或让部分 tile 休眠,把功耗让给 PL 和 DDR。分区方案确定后,应回到带宽、延迟、功耗三张预算表逐项复核,任何一项超限都要回到分区决策重新调整。
把上述过程固化为一张可填写的需求分析表,有助于在项目早期快速暴露矛盾。示例字段包括:分辨率与帧率、像素格式与位宽、含消隐的总像素时钟、各环节读写次数、单帧延迟分配、DDR 可用带宽折算系数、PL/AIE/PS 功耗上限。填完后若发现带宽或延迟任一项超限,优先调整的是数据形态(如提前降位宽、提前缩放)和跨域路径,而不是简单增加 DDR 通道。