国产 ZYNQ 替代实战:从 Xilinx ZYNQ 迁移到 PBC7Z020G/021G 要动多少
原设计用 Xilinx Zynq-7000(XC7Z020)做”ARM 跑软件 + FPGA 做实时逻辑”的异构方案,现在要国产化。换片到底是重写整个工程,还是只改局部?这篇按 PS 端软件、PL 端逻辑、启动与 BSP 三层,把 HWD7Z020(兼容 XC7Z020)迁移 PBC7Z020G/021G 的实际改动量、可复用部分和风险点拆开讲清楚。
一、为什么迁:从 XC7Z020 到国产 HWD7Z020
ZYNQ 的价值在于一颗芯片里同时放双核 ARM Cortex-A9(PS,处理系统软件、网络、文件系统)和可编程逻辑(PL,做并行采集、协议加速、实时 IO)。原 XC7Z020 方案要国产化时,目标不是换一个完全不同架构的芯片,而是找一颗指令集、外设、Vivado 流程都兼容的国产替代。PBC7Z020G 搭载 HWD7Z020-1PBGA400、PBC7Z021G 搭载 HWD7Z020-1CLG484,均为国产工业级、双核 A9@800MHz + FPGA 异构,原生兼容 Vivado、无需额外补丁,-55~125℃ 超宽温。
迁移前先把工程拆成三层,分别评估改动量:
1. PS 端软件:裸机程序、FreeRTOS 任务、Linux 应用与驱动,跑在 A9 上。
2. PL 端逻辑:Vivado 里写的 RTL、IP 核、约束和引脚映射,跑在 FPGA 结构里。
3. 启动与 BSP:boot 镜像、QSPI/eMMC/SD 启动配置、设备树和板级支持包。
二、PS 端软件迁移:BSP 复用度最高
1. 裸机与 FreeRTOS:工程几乎不用改
裸机程序和 FreeRTOS 工程基于 A9 的 Cortex-R5/A9 外设接口(UART、GPIO、定时器、中断控制器)调用。HWD7Z020 的 PS 外设寄存器布局与 XC7Z020 兼容,SDK/BSP 驱动可直接复用,应用层代码不需要重写。改动集中在:重新在国产芯片器件库下生成 BSP、重新编译、核对中断号和时钟配置。工作量通常以”天”计,而不是以”月”计。
2. Linux:设备树、U-Boot 与内核要局部调整
跑 Linux 的方案,PS 侧要改的比裸机多,但也不是从零开始:
- 设备树(DTS):把原 XC7Z020 设备树的 PS 外设节点、PL 对接节点按国产板连接器重映射;DDR3 容量与位宽、eMMC/QSPI 分区、网口/USB 节点按新板填写。
- U-Boot 与内核:使用兼容 XC7Z020 的配置裁剪,启动参数(bootargs)、控制台波特率、rootfs 挂载方式按新板调整;自研驱动需重新编译并在国产器件上回归测试。
- 应用层:用户态服务、网络程序、业务算法与芯片无关,直接搬过来即可。
DDR3 带宽可按板上配置先估:PBC7Z020G/021G 均为 DDR3 1GB、32bit 总线、1066Mbps,字节带宽 = 4B × 1066MT/s ≈ 4.26 GB/s,满足常规嵌入式控制与轻量图像传输,不必为带宽换平台。
三、PL 端逻辑迁移:资源对照后重排约束
PL 资源对照(XC7Z020 档 vs HWD7Z020 / PBC7Z021G)
| 资源 | XC7Z020 档 | PBC7Z021G(HWD7Z020-1CLG484) | 迁移判断 |
|---|---|---|---|
| 逻辑单元 | ~85K | 85K | 同档,可放下原设计 |
| LUT | ~53.2K | 53,200 | 同档 |
| 触发器 | ~106K | 106,400 | 同档 |
| DSP 乘法器 | 220 | 220 | 同档 |
| Block RAM | 4.9 Mb | 4.9 Mb | 同档 |
| PL 可用 IO | — | 198(另 48 对 LVDS、100 路电压可调 IO) | 按新连接器重排 |
原工程的 RTL 行为代码、纯组合与时序逻辑、大部分 IP 核(BRAM、FIFO、PLL/MMCM、AXI 互连)在兼容流程下可直接综合,不需要改写。
约束、IP 与引脚重排
芯片封装从 PBGA400(020G,超小 35×42mm)换到 1CLG484(021G,60×60mm)后,物理引脚和引出 IO 不同,约束文件(XDC)必须按新板连接器重新做引脚分配;电源树、DDR3 走线、时钟晶振(021G 板载 33.33MHz PS 晶振 + 50MHz PL 晶振)也要随新板核对。IP 若用到原厂私有硬核(如部分收发器、安全模块),需确认国产器件是否提供等效 IP,没有则用通用 RTL 替代。
四、启动链路与落地清单
启动模式与 boot 镜像
PBC7Z021G 预留 6 针 JTAG,支持 JTAG / QSPI / SD 卡启动模式,由拨码开关配置;PBC7Z020G 为 2 路 120PIN 松下连接器、5V 供电。迁移落地按下面清单逐项过:
1. PS 软件:生成新 BSP,裸机/FreeRTOS 重编译回归;Linux 更新设备树、U-Boot bootargs 与内核配置。
2. PL 逻辑:综合原工程,按新封装重写 XDC 约束,核对 IP 兼容性与时序收敛。
3. 启动配置:确认启动模式(JTAG 调试 → QSPI/SD 量产),制作 boot.bin(含 FSBL、比特流、设备树)与 rootfs。
4. 宽温与可靠性:国产板 -55~125℃(020G/021G),按目标工况做温循与长期通电测试,确认电源裕量。
选型建议:按体积与 IO 量选 020G / 021G / 纯 FPGA 扩展
- 超小尺寸替代(PBC7Z020G,¥799):35×42×5.5mm、2×120PIN,适合空间紧张、逻辑需求中等的小型化嵌入式与国产化替代节点。
- 全引出开发/量产(PBC7Z021G,¥999):60×60mm、4×80PIN、198 PL IO 与 48 对 LVDS,PS/PL 资源完整引出,适合工程化量产与需要更多外部 IO 的设计。
- 纯 FPGA 大资源扩展(PBC7K325G,¥1,999):当 PL 侧要做高速收发器或大容量逻辑(16 路 GTX@12.5Gb/s、2GB DDR3、326K 逻辑单元)时,用国产 Kintex-7 架构核心板承接,与 ZYNQ 方案分工互补。
ZYNQ 国产替代不是推倒重来:PS 软件和应用层复用度最高,真正要动手的是按新封装重排 PL 约束、更新设备树与启动镜像。先拆成 PS、PL、启动三层分别评估,兼容流程内的工程以局部调整为主,把风险集中在 IP 兼容和宽温回归上,迁移就能按计划落地。
