2. Zynq平台选型与开发环境搭建

在开始高速数据采集与信号处理工程之前,器件选型与工具链搭建是决定后续开发效率与系统上限的关键一步。Zynq-7000 与 Zynq UltraScale+ MPSoC 虽然同属“ARM+FPGA”异构架构,但在处理器核、存储层次、可编程逻辑规模、高速接口能力以及启动方式上存在明显代差。理解这些差异,才能根据采样率、通道数、算法复杂度与功耗预算做出合理选择。

一、Zynq-7000 与 UltraScale+ MPSoC 的核心差异

Zynq-7000 的处理系统(PS)采用双核 Cortex-A9,主频通常在 667MHz~1GHz,PL 侧为 28nm 工艺的 7 系列 FPGA,逻辑单元从约 28K 到 444K 不等,适合中低速采集、实时控制与轻量级信号处理。Zynq UltraScale+ MPSoC 的 PS 则升级为四核 Cortex-A53(应用处理单元 APU)加双核 Cortex-R5(实时处理单元 RPU),并集成 Mali-400 GPU 与更完整的电源管理,PL 侧为 16nm 工艺,逻辑密度和 DSP 资源显著提升,同时支持 DDR4、PCIe Gen3/4、100G 以太网等高速接口。

对于高速数据采集,最需要关注的是 PL 侧 DSP48 数量、Block RAM/UltraRAM 容量、GTY/GTH 收发器速率以及 PS 与 PL 之间的 AXI 带宽。例如,若前端 ADC 为 1GSPS、14bit、双通道,原始数据率约 28Gbps,必须依赖 JESD204B 接口与 GT 收发器,此时 Zynq-7000 的 GTP 最高约 6.6Gbps,往往不够;而 UltraScale+ 的 GTY 可轻松覆盖 10Gbps 以上,更适合此类场景。

Zynq-7000 与 UltraScale+ MPSoC 架构对比与选型关注点 Zynq-7000 (28nm) 处理系统 PS 双核 Cortex-A9 @ 667MHz~1GHz L1 32KB / L2 512KB DDR3/DDR3L 控制器 可编程逻辑 PL 逻辑单元 28K~444K DSP48E1 最多约 2020 个 Block RAM 最多约 26.5Mb GTP 收发器 ≤ 6.6Gbps 典型接口与启动 AXI3/AXI4 互联,HP/ACP 端口 QSPI/SD/NOR 启动,无 PCIe Gen3 适合中低速采集与控制 UltraScale+ MPSoC (16nm) 处理系统 PS 四核 Cortex-A53 + 双核 Cortex-R5 Mali-400 GPU,L2 1MB DDR4/LPDDR4 控制器 可编程逻辑 PL 逻辑单元 256K~1143K DSP48E2 最多约 3528 个 UltraRAM + Block RAM 大容量 GTY 收发器 16Gbps+ 典型接口与启动 PCIe Gen3/4、100G 以太网 JESD204B、SATA、USB3.0 适合高速采集与复杂信号处理 选型判断 采样率 > 500MSPS? 需 JESD204B/PCIe?

二、Vivado/Vitis 工具链安装要点

AMD 自 2019.2 起将 SDK 替换为 Vitis 统一软件平台,因此当前推荐安装 Vivado + Vitis 组合。安装前需确认磁盘空间:Vivado 2022.2 完整安装约 60GB,加上 Vitis 与器件库可超过 100GB。安装时选择“Vitis Embedded Development”与对应器件系列,例如 Zynq-7000 与 Zynq UltraScale+ MPSoC 都要勾选,避免后续无法生成平台。

安装完成后,建议先验证许可证与器件库。可在 Vivado Tcl Console 执行 get_parts 查看可用器件;若缺少目标芯片,需通过 XHub 或离线安装包补充。Vitis 首次启动会要求设置 workspace,建议与 Vivado 工程目录分离,避免路径过长导致 Windows 下编译失败。

# 示例:在 Vivado Tcl Console 中确认器件
get_parts -quiet xc7z020*
get_parts -quiet xczu9eg*

# 示例:Vitis 命令行创建平台工程
xsct
setws ./vitis_ws
platform create -name zynq_platform -hw ./design_1.xsa -proc ps7_cortexa9_0
platform generate

三、PetaLinux 与裸机开发流程

裸机开发适合对实时性要求极高、功能相对固定的采集控制逻辑。流程为:在 Vivado 中导出 XSA → 在 Vitis 中创建 Application Project → 选择 Hello World 或 Empty Application → 编写 C 代码 → 生成 BOOT.bin 与 elf → 通过 JTAG 或 SD 卡启动。裸机下访问 PL 寄存器通常使用 Xil_Out32 与 Xil_In32,需先通过 Xil_ExceptionInit 与中断控制器完成初始化。

PetaLinux 则适合需要 Linux 驱动、网络文件系统、多任务调度的场景。典型流程为:petalinux-create -t project 创建工程 → petalinux-config --get-hw-description 导入 XSA → 配置内核、设备树与根文件系统 → petalinux-build 编译 → petalinux-package --boot 生成 BOOT.BIN 与 image.ub。设备树中需为自定义 IP 添加节点,例如 AXI DMA 与自定义采集 IP 的寄存器基地址、中断号与时钟频率。

若采集系统需要连续运行数小时以上,建议优先使用 PetaLinux,并配合 DMA 双缓冲;若只是验证 PL 逻辑或做短时高速触发采集,裸机方案启动更快、抖动更小。

四、开发板选型与硬件连接

开发板选型应围绕“接口是否匹配前端、PL 资源是否够用、供电与散热是否满足”三点。以常见板卡为例:Zynq-7020 适合 10MSPS~100MSPS 级采集,板载 DDR3 与千兆以太网即可;Zynq UltraScale+ ZCU104 或 ZCU102 则适合 500MSPS 以上、需要 JESD204B 或 PCIe 回传的场景。若前端是 FMC 接口 ADC,需确认开发板 FMC 连接器的 GT 通道映射与参考时钟是否与 ADC 子卡一致。

硬件连接顺序建议为:先连接 JTAG 与电源,确认板卡枚举正常;再连接 FMC 子卡,注意防静电与对齐;随后连接以太网、串口与外部时钟;最后上电并观察电源指示灯与串口输出。若使用外部采样时钟,需先用示波器确认时钟幅度与抖动,再接入 PL 的时钟输入引脚。

选型维度Zynq-7000UltraScale+ MPSoC
典型采样率≤100MSPS≥500MSPS
高速接口GTP ≤6.6GbpsGTY ≥16Gbps
DSP 资源约 220~2020约 2160~3528
操作系统裸机 / Linux裸机 / Linux / RTOS
适用场景中低速采集、控制高速采集、实时处理
安装 Vivado 与 Vitis 时,路径中不要包含中文或空格;PetaLinux 建议在 Ubuntu 20.04/22.04 下运行,并提前安装 gcc、make、python3、tftpd 等依赖,否则 petalinux-build 容易在 rootfs 阶段失败。