Architecture Zynq
Comprendre la séparation entre le Processing System et la logique programmable dans les familles Zynq-7000 et Zynq UltraScale+ MPSoC.
Chargement…
Comprendre la séparation entre le Processing System et la logique programmable dans les familles Zynq-7000 et Zynq UltraScale+ MPSoC.
Un Zynq réunit un système de traitement, le PS, et une logique programmable, la PL. Le logiciel s'exécute sur les processeurs du PS ; le RTL décrit les circuits de la PL.
Le Zynq-7000 associe un ou deux Cortex-A9, selon la référence, à une logique FPGA de série 7 :
| Ressource | Fonction |
|---|---|
| APU | Exécute l'application et peut utiliser un système d'exploitation |
| Caches L1 et L2 | Réduisent le temps moyen d'accès aux instructions et aux données |
| OCM | Fournit une mémoire interne rapide de 256 Kio |
| Contrôleur DDR | Donne accès à la mémoire dynamique externe |
| GIC | Priorise et distribue les interruptions |
| DMA du PS | Déplace des données sans faire exécuter chaque copie par le processeur |
| MIO et EMIO | Relient les périphériques du PS aux broches ou à la PL |
Le PS fournit notamment UART, SPI, I2C, CAN, USB, Ethernet, GPIO et SDIO. La PL apporte LUT, bascules, mémoires et DSP pour les interfaces personnalisées, traitements parallèles et accélérateurs. Les échanges mémoire mappés passent notamment par AXI.
Le Zynq UltraScale+ MPSoC enrichit le PS, avec des ressources dépendant de la variante :
| Bloc | Fonction principale |
|---|---|
| APU Cortex-A53 | Calcul applicatif 64 bits et exécution de Linux |
| RPU Cortex-R5 | Traitement temps réel déterministe |
| PMU | Gestion de la plateforme et de l'alimentation |
| CSU | Configuration, démarrage sécurisé et fonctions cryptographiques |
| GPU Mali | Traitement graphique |
| Contrôleur DDR | Accès à la DDR3, DDR4 ou LPDDR selon le composant |
Les Cortex-R5 peuvent exécuter des programmes distincts en mode split ou le même programme en lockstep. Le lockstep compare les résultats pour détecter des divergences ; il ne double pas le débit de calcul.
Les domaines d'alimentation séparent notamment RPU basse consommation, APU pleine puissance et PL. Ils permettent d'arrêter certaines fonctions, avec une gestion des dépendances et des réveils adaptée au système.
| Besoin | Emplacement conseillé |
|---|---|
| Interface utilisateur, fichiers, réseau | PS |
| Linux, pile TCP/IP, stockage | PS |
| Boucle de contrôle temps réel | RPU ou PL selon la latence demandée |
| Traitement de plusieurs échantillons en parallèle | PL |
| Protocole avec timing précis | PL |
| Configuration et supervision d'une IP | PS |
Choisissez selon latence, débit, parallélisme et maintenance, plutôt que selon une seule vitesse moyenne. Sur une caméra, Linux peut gérer fichiers, réseau et configuration, tandis que la PL reçoit et filtre les pixels en pipeline. Un DMA transfère les images en DDR ; des registres et une interruption coordonnent le logiciel.
MIO relie un périphérique du PS directement à ses broches dédiées. EMIO fait passer ses signaux par la PL, pour rejoindre des broches de la PL ou une adaptation interne. Un UART en MIO ne traverse donc pas de logique programmable.
EMIO transporte les signaux du périphérique ; ce n'est pas un remplacement d'AXI. Le choix dépend du câblage de la carte et du routage nécessaire.
La BootROM du PS lit le mode de démarrage et charge la première étape depuis une source compatible avec le composant et sa configuration, par exemple SD ou QSPI. Les sources disponibles diffèrent entre générations.
Le PS peut démarrer avant la configuration de la PL. Les chargeurs préparent ensuite la mémoire et, si nécessaire, configurent la PL avant de lancer l'application. Un processeur logiciel placé dans un FPGA dépendrait, lui, de la configuration de cette logique.
Définissez d'abord la répartition PS/PL. Configurez ensuite blocs, adresses, horloges, resets et interruptions dans Vivado, exportez le matériel, puis créez la plateforme et l'application Vitis. Vérifiez ensemble logiciel et matériel : une adresse ou une politique de cache incorrecte peut rendre inutilisable une IP pourtant correcte.
Les références d'architecture sont UG585 pour Zynq-7000 et UG1085 pour Zynq UltraScale+ MPSoC.
Tester mes connaissances - Quiz du chapitre