1. Zynq平台与视频图像处理系统概览

Zynq-7000 系列是 Xilinx(现 AMD)推出的全可编程 SoC,它把一颗双核 ARM Cortex-A9 处理器系统(Processing System,PS)与一片可编程逻辑(Programmable Logic,PL)集成在同一芯片内。理解这套架构,是后续做视频编解码与图像处理工程的前提:视频链路里既有需要高吞吐、低延迟、强并行的像素级运算,也有需要灵活调度、协议栈、文件系统和网络交互的控制逻辑,Zynq 的价值正在于让这两类任务各归其位。

PS 与 PL 的分工与协同

PS 侧包含双核 Cortex-A9、L1/L2 缓存、DDR 控制器、DMA 控制器、中断控制器 GIC、以及 USB、以太网、SD、UART 等外设接口。它擅长运行 Linux 或裸机程序,负责流程控制、参数配置、协议处理和人机交互。PL 侧由可编程逻辑单元、DSP48E1 乘法累加单元、Block RAM 和大量可配置 IO 组成,适合实现像素流水线、卷积、色彩空间转换、缩放、滤波等数据并行度极高的运算。

两者之间不是简单的“主从”关系,而是通过若干条物理通道协同:AXI GP(General Purpose)接口用于 PS 对 PL 寄存器的低速读写,适合配置参数;AXI HP(High Performance)接口让 PL 作为主设备直接访问 DDR,适合视频帧这类大块数据搬运;AXI ACP(Accelerator Coherency Port)则让 PL 访问能保持与 CPU 缓存一致,适合小数据量、需与软件共享的场景。此外还有中断线,PL 完成一帧处理后可通过 IRQ 通知 PS 取数据。

Zynq-7000 PS/PL 协同与视频处理链路 PS 处理系统 双核 Cortex-A9 DDR 控制器 GIC / DMA 以太网 / SD / UART Linux / 裸机应用 流程控制 · 参数配置 · 协议栈 PL 可编程逻辑 DSP48E1 阵列 Block RAM 像素流水线 可配置 IO 并行加速器 IP 卷积 · 色彩转换 · 缩放 · 滤波 AXI 互联 GP:寄存器配置 HP:DDR 高吞吐 ACP:缓存一致 典型视频处理链路 视频源 HDMI / MIPI / SDI 采集与缓存 VDMA → DDR PL 图像处理 去噪 / 缩放 / 增强 编码 / 输出 H.264 / H.265 / 显示 显示 / 存储 HDMI / 网络 PS 通过 AXI GP 配置参数、通过中断同步帧状态 工具链:Vivado(PL 综合实现) · Vitis(PS 软件与加速器) · PetaLinux(系统镜像) · SDK/驱动

典型视频编解码与图像处理链路

一条完整的视频链路通常从视频源开始。以 HDMI 输入为例,信号经 HDMI RX 子系统解码为并行像素流,写入 VDMA(Video DMA)的帧缓冲,VDMA 通过 AXI HP 口把帧数据搬进 DDR。PL 中的图像处理 IP 再从 DDR 读取帧,完成去噪、缩放、色彩空间转换或边缘增强,处理结果写回另一块帧缓冲。随后编码模块(可用软核或硬核 H.264/H.265)读取处理后的帧进行压缩,码流经 PS 的网络协议栈发送,或直接送显示控制器输出。

这里的关键是帧缓冲的管理。以 1080p、YUV422、8bit 为例,一帧约 1920×1080×2 ≈ 4.15 MB。若采用三帧缓冲(采集、处理、显示各一帧),仅帧缓存就需约 12.4 MB,DDR 带宽压力集中在 VDMA 与处理 IP 的读写上。因此工程上常把处理 IP 设计成流式接口,尽量在 PL 内部完成行缓存,减少对 DDR 的反复访问。

开发流程与工具链

Zynq 视频系统的开发通常分三条线并行推进。第一条是 PL 硬件设计:在 Vivado 中搭建 Block Design,例化 Zynq PS、VDMA、视频处理 IP、AXI 互联和时钟/复位模块,完成综合、实现并导出 XSA。第二条是 PS 软件:在 Vitis 中创建平台工程和应用工程,编写驱动初始化、DMA 配置、中断服务程序,必要时用 OpenCV 或自定义算法做参考实现。第三条是系统集成:用 PetaLinux 构建设备树、根文件系统和启动镜像,把 BOOT.BIN、image.ub 写入 SD 卡启动。

建议先跑通“视频直通”最小系统:HDMI 输入 → VDMA → DDR → VDMA → HDMI 输出,确认时钟、复位、AXI 地址映射和中断都正常,再逐步插入处理 IP。这样能把链路问题和算法问题分开定位。

一个可参考的起步配置

下面给出一个教学用的最小系统参数示例(非实测结果,仅用于说明配置思路):

项目示例取值说明
分辨率1920×1080 @ 60Hz像素时钟约 148.5 MHz
像素格式YUV422 8bit每像素 2 字节
帧缓冲3 帧,DDR 中连续分配约 12.4 MB
VDMA 接口AXI HP0 / HP1读写分离,避免争用
配置接口AXI GP0PS 读写 IP 寄存器
中断PL IRQ → PS GIC帧完成通知