Substituição Prática de ZYNQ Nacional: O Quanto Muda da Migração de Xilinx ZYNQ para PBC7Z020G/021G
O projeto original usa Xilinx Zynq-7000 (XC7Z020) para o esquema heterogêneo de software ARM + lógica FPGA real, e agora precisa ir para nacional. Trocar o chip significa reescrever o projeto inteiro, ou apenas mudanças locais? Este artigo divide a migração do HWD7Z020 (compatível com XC7Z020) para PBC7Z020G/021G em três camadas — software PS, lógica PL, boot e BSP — e detalha o volume real de mudança, as partes reaproveitáveis e os pontos de risco.
1. Por Que Migrar: Do XC7Z020 ao HWD7Z020 Nacional
O valor do ZYNQ é que um chip segura tanto um dual-core ARM Cortex-A9 (PS, rodando software de sistema, rede e sistema de arquivos) quanto lógica programável (PL, fazendo aquisição paralela, aceleração de protocolo e IO em tempo real). Quando um design XC7Z020 precisa ir para nacional, o objetivo não é uma arquitetura totalmente diferente, mas um compatível drop-in nacional em conjunto de instruções, periféricos e fluxo Vivado. O PBC7Z020G carrega HWD7Z020-1PBGA400 e o PBC7Z021G carrega HWD7Z020-1CLG484; ambos são nacionais de grau industrial, dual-core A9@800MHz mais FPGA heterogêneo, nativamente compatíveis com Vivado sem patch extra, e com faixa de temperatura ultraampla de −55~125°C.
Antes de migrar, divida o projeto em três camadas e estime cada uma:
1. Software PS: programas bare-metal, tarefas FreeRTOS, apps Linux e drivers rodando no A9.
2. Lógica PL: RTL, IP cores, constraints e mapeamento de pinos escritos no Vivado, rodando na fabric do FPGA.
3. Boot e BSP: imagem de boot, config de boot QSPI/eMMC/SD, device tree e board support package.
2. Migração de Software PS: Maior Reuso de BSP
1. Bare-Metal e FreeRTOS: O Projeto Quase Não Muda
Projetos bare-metal e FreeRTOS chamam as interfaces de periféricos do A9 (UART, GPIO, timers, controlador de interrupção) via BSP. O layout dos registradores PS do HWD7Z020 é compatível com o XC7Z020, então os drivers SDK/BSP são reaproveitáveis e o código da camada de aplicação não precisa de reescrita. As mudanças se concentram em regenerar o BSP sob a biblioteca de dispositivo nacional, recompilar e checar números de interrupção e config de clock. O esforço é medido em dias, não meses.
2. Linux: Ajustes Locais no Device Tree, U-Boot e Kernel
Para designs Linux, o lado PS muda mais que no bare-metal, mas não é um recomeço:
- Device tree (DTS): remapear os nós de periféricos PS e os nós de conexão PL da árvore do XC7Z020 para os conectores da placa nacional; preencher capacidade/largura DDR3, partições eMMC/QSPI, nós Ethernet/USB da nova placa.
- U-Boot e kernel: usar uma config compatível com XC7Z020 para enxugar; ajustar bootargs, baud rate do console e montagem de rootfs; recompilar e testar regressão dos drivers customizados no dispositivo nacional.
- Camada de aplicação: serviços de usuário, programas de rede e algoritmos de negócio são independentes de chip e migram direto.
Estime a banda DDR3 pela config da placa primeiro: ambos PBC7Z020G/021G usam DDR3 1GB, barramento de 32 bits, 1066Mbps; banda de byte = 4B × 1066MT/s ≈ <span class=”hl”>4,26 GB/s</span>, suficiente para controle embarcado comum e transferência leve de imagem, então não há troca de plataforma por banda.
3. Migração de Lógica PL: Replanejar Constraints Após Checagem de Recursos
Comparação de Recursos PL (Classe XC7Z020 vs HWD7Z020 / PBC7Z021G)
| Recurso | Classe XC7Z020 | PBC7Z021G (HWD7Z020-1CLG484) | Veredito de migração |
|---|---|---|---|
| Logic cells | ~85K | 85K | Mesma classe, cabe no design |
| LUT | ~53,2K | 53.200 | Mesma classe |
| Flip-Flops | ~106K | 106.400 | Mesma classe |
| Multiplicadores DSP | 220 | 220 | Mesma classe |
| Block RAM | 4,9 Mb | 4,9 Mb | Mesma classe |
| IO PL disponível | — | 198 (mais 48 pares LVDS, 100 IO configuráveis por tensão) | Replanejar nos novos conectores |
O código RTL comportamental original, a lógica puramente combinacional/sequencial e a maioria dos IP cores (BRAM, FIFO, PLL/MMCM, interconnect AXI) sintetizam direto no fluxo compatível e não precisam de reescrita.
Constraints, IP e Remapeamento de Pinos
Depois que o package migra de PBGA400 (020G, pequeno 35×42mm) para 1CLG484 (021G, 60×60mm), os pinos físicos e o IO exposto diferem, então o arquivo de constraint XDC precisa ser re-atribuído pelos novos conectores da placa; a árvore de potência, o roteamento DDR3 e os cristais de clock (o 021G carrega um cristal PS de 33,33MHz mais um cristal PL de 50MHz) também são checados contra a nova placa. Se um IP usa um bloco duro proprietário do fornecedor (certos transceptores, módulos de segurança), confirme se o dispositivo nacional fornece um IP equivalente; senão substitua por RTL genérico.
4. Cadeia de Boot e Checklist de Pouso
Modos de Boot e Imagem de Boot
O PBC7Z021G reserva um JTAG de 6 pinos e suporta modos de boot JTAG / QSPI / cartão SD selecionados por um DIP switch; o PBC7Z020G usa 2 conectores Panasonic de 120 pinos e alimentação de 5V. Pouse a migração percorrendo este checklist:
1. Software PS: regenerar BSP, recompilar e testar regressão bare-metal/FreeRTOS; atualizar device tree, bootargs U-Boot e config de kernel para Linux.
2. Lógica PL: sintetizar o projeto original, reescrever constraints XDC para o novo package, checar compatibilidade de IP e fechamento de temporização.
3. Config de boot: confirmar modo de boot (debug JTAG → QSPI/SD de produção), gerar boot.bin (FSBL, bitstream, device tree) e rootfs.
4. Temperatura ampla e confiabilidade: placas nacionais são −55~125°C (020G/021G); rodar ciclo térmico e testes de longa ligação para a condição alvo e confirmar margem de potência.
<div class=”case”>
<h3>Seleção: Escolha 020G / 021G / Expansão FPGA Puro por Tamanho e IO</h3>
<ul>
<li><strong>Substituição ultracompacta (PBC7Z020G, ¥799)</strong>: 35×42×5,5mm, 2×120 pinos, para nós embarcados e de substituição miniaturizados com espaço apertado e lógica média.</li>
<li><strong>Produção totalmente exposta (PBC7Z021G, ¥999)</strong>: 60×60mm, 4×80 pinos, 198 IO PL e 48 pares LVDS, recursos PS/PL totalmente expostos, para engenharia de produção e designs que precisam de mais IO externo.</li>
<li><strong>Expansão FPGA pura de grande recurso (PBC7K325G, ¥1.999)</strong>: quando o lado PL precisa de transceptores de alta velocidade ou lógica grande (16 lanes GTX@12,5Gb/s, 2GB DDR3, 326K logic cells), um SoM Kintex-7 nacional assume, complementando o esquema ZYNQ.</li>
</ul>
</div>
A substituição ZYNQ nacional não é uma reconstrução: o software PS e a camada de aplicação são os que mais reaproveitam; o que você realmente mexe é replanejar as constraints PL para o novo package e atualizar o device tree e a imagem de boot. Divida em camadas PS, PL e boot para estimar cada uma; dentro do fluxo compatível o projeto só precisa de ajuste local, com risco concentrado na compatibilidade de IP e na regressão de temperatura ampla, então a migração pousa no prazo.
