Sustitución práctica de ZYNQ por chips chinos: qué cambia al migrar de Xilinx ZYNQ a PBC7Z020G/021G
El diseño original usa Xilinx Zynq-7000 (XC7Z020) para el esquema heterogéneo software ARM + lógica realista en FPGA, y ahora debe pasar a un chip nacional. ¿Supone cambiar el chip reescribir todo el proyecto, o solo cambios locales? Este artículo divide la migración de HWD7Z020 (compatible con XC7Z020) a PBC7Z020G/021G en tres capas —software PS, lógica PL, arranque y BSP— y desglosa el volumen real de cambios, las partes reutilizables y los puntos de riesgo.
1. Por qué migrar: del XC7Z020 al HWD7Z020 nacional
El valor de ZYNQ es que un solo chip alberga tanto un doble núcleo ARM Cortex-A9 (PS, que ejecuta el software de sistema, la red y el sistema de ficheros) como lógica programable (PL, que hace adquisición paralela, aceleración de protocolo y E/S en tiempo real). Cuando un diseño XC7Z020 debe pasar a un chip nacional, el objetivo no es una arquitectura totalmente distinta, sino un sustituto directo nacional compatible en juego de instrucciones, periféricos y flujo Vivado. PBC7Z020G lleva HWD7Z020-1PBGA400 y PBC7Z021G lleva HWD7Z020-1CLG484; ambos son nacionales de grado industrial, doble núcleo A9@800 MHz más heterogeneidad FPGA, nativamente compatibles con Vivado sin parche adicional, y clasificados para temperatura ultraancha −55~125 °C.
Antes de migrar, divida el proyecto en tres capas y estime cada una:
1. Software PS: programas bare-metal, tareas FreeRTOS, aplicaciones Linux y drivers que se ejecutan en el A9.
2. Lógica PL: RTL, IP, restricciones y mapeo de pines escritos en Vivado, que se ejecutan en la matriz del FPGA.
3. Arranque y BSP: imagen de arranque, configuración de arranque QSPI/eMMC/SD, device tree y paquete de soporte de placa.
2. Migración del software PS: la mayor reutilización del BSP
1. Bare-Metal y FreeRTOS: el proyecto apenas cambia
Los proyectos bare-metal y FreeRTOS llaman a las interfaces de periféricos del A9 (UART, GPIO, timers, controlador de interrupciones) a través del BSP. El diseño de registros del PS del HWD7Z020 es compatible con el XC7Z020, por lo que los drivers del SDK/BSP son reutilizables y el código de capa de aplicación no necesita reescritura. Los cambios se concentran en regenerar el BSP bajo la librería de dispositivo nacional, recompilar y verificar los números de interrupción y la configuración de relojes. El esfuerzo se mide en días, no en meses.
2. Linux: ajustes locales en device tree, U-Boot y kernel
Para diseños Linux, el lado PS cambia más que en bare-metal, pero no es un nuevo comienzo:
- Device tree (DTS): remapee los nodos de periféricos PS y los nodos de conexión PL desde el árbol del XC7Z020 a los conectores de la placa nacional; rellene la capacidad/anchura de la DDR3, las particiones eMMC/QSPI, y los nodos Ethernet/USB de la nueva placa.
- U-Boot y kernel: use una config compatible con XC7Z020 para recortar; ajuste los bootargs, el baudrate de consola y el montaje del rootfs; recompile y pruebe regresivamente los drivers personalizados sobre el dispositivo nacional.
- Capa de aplicación: los servicios de usuario, los programas de red y los algoritmos de negocio son independientes del chip y se trasladan directamente.
Estime primero el ancho de banda de la DDR3 a partir de la config de la placa: tanto PBC7Z020G como 021G usan DDR3 de 1 GB, bus de 32 bits, 1066 Mbps; el ancho de banda de bytes = 4B × 1066 MT/s ≈ 4,26 GB/s, suficiente para control embebido ordinario y transferencia ligera de imagen, por lo que no hace falta cambiar de plataforma por ancho de banda.
3. Migración de la lógica PL: releer plan de restricciones tras el chequeo de recursos
Comparación de recursos PL (clase XC7Z020 frente a HWD7Z020 / PBC7Z021G)
| Recurso | Clase XC7Z020 | PBC7Z021G (HWD7Z020-1CLG484) | Veredicto de migración |
|---|---|---|---|
| Celdas lógicas | ~85K | 85K | Misma clase, cabe en el diseño |
| LUT | ~53,2K | 53 200 | Misma clase |
| Flip-Flops | ~106K | 106 400 | Misma clase |
| Multiplicadores DSP | 220 | 220 | Misma clase |
| Block RAM | 4,9 Mb | 4,9 Mb | Misma clase |
| E/S PL disponibles | — | 198 (más 48 pares LVDS, 100 E/S configurables por voltaje) | Replanificar sobre los nuevos conectores |
El código de comportamiento RTL original, la lógica puramente combinacional/secuencial y la mayoría de los IP (BRAM, FIFO, PLL/MMCM, interconexión AXI) sintetizan directamente bajo el flujo compatible y no necesitan reescritura.
Restricciones, IP y remapeo de pines
Al pasar el encapsulado de PBGA400 (020G, compacto 35×42 mm) a 1CLG484 (021G, 60×60 mm), los pines físicos y las E/S expuestas difieren, por lo que el fichero de restricciones XDC debe reasignarse según los nuevos conectores de la placa; el árbol de alimentación, el enrutado de la DDR3 y los cristales de reloj (021G lleva un cristal PS de 33,33 MHz más un cristal PL de 50 MHz) también se verifican contra la nueva placa. Si un IP usa un bloque duro privado del proveedor (ciertos transceptores, módulos de seguridad), confirme si el dispositivo nacional ofrece un IP equivalente; de lo contrario, reemplácelo por RTL genérico.
4. Cadena de arranque y checklist de aterrizaje
Modos de arranque e imagen de arranque
PBC7Z021G reserva un JTAG de 6 pines y soporta modos de arranque JTAG / QSPI / tarjeta SD seleccionados por un DIP switch; PBC7Z020G usa conectores Panasonic de 2×120 pines y alimentación de 5 V. Aterrice la migración recorriendo este checklist:
1. Software PS: regenere el BSP, recompile y pruebe regresivamente bare-metal/FreeRTOS; actualice el device tree, los bootargs de U-Boot y la config del kernel para Linux.
2. Lógica PL: sintetice el proyecto original, reescriba las restricciones XDC para el nuevo encapsulado, verifique la compatibilidad de IP y el cierre de temporización.
3. Config de arranque: confirme el modo de arranque (depuración JTAG → producción QSPI/SD), construya boot.bin (FSBL, bitstream, device tree) y rootfs.
4. Ancha temperatura y fiabilidad: las placas nacionales son −55~125 °C (020G/021G); ejecute ciclos térmicos y pruebas de encendido prolongado para la condición objetivo y confirme el margen de alimentación.
<div class=”case”>
<h3>Selección: elija 020G / 021G / expansión Pure-FPGA según tamaño y E/S</h3>
<ul>
<li><strong>Sustitución ultraminiatura (PBC7Z020G, 799 ¥)</strong>: 35×42×5,5 mm, 2×120 pines, para embebido miniaturizado de lógica media con espacio ajustado y nodos de sustitución.</li>
<li><strong>Producción con exposición completa (PBC7Z021G, 999 ¥)</strong>: 60×60 mm, 4×80 pines, 198 E/S PL y 48 pares LVDS, recursos PS/PL totalmente expuestos, para producción de ingeniería y diseños que necesitan más E/S externa.</li>
<li><strong>Expansión Pure-FPGA de gran recurso (PBC7K325G, 1 999 ¥)</strong>: cuando el lado PL necesita transceptores de alta velocidad o gran lógica (16 carriles GTX@12,5 Gb/s, 2 GB DDR3, 326K celdas lógicas), un SoM Kintex-7 nacional toma el relevo, complementando el esquema ZYNQ.</li>
</ul>
</div>
La sustitución de ZYNQ por chips chinos no es una reconstrucción: el software PS y la capa de aplicación son lo que más se reutiliza; lo que realmente se toca es replanificar las restricciones PL para el nuevo encapsulado, y actualizar el device tree y la imagen de arranque. Divida en capas PS, PL y arranque para estimar cada una; dentro del flujo compatible, un proyecto solo necesita ajuste local, con el riesgo concentrado en la compatibilidad de IP y la regresión de ancha temperatura, de modo que la migración aterriza a tiempo.
