Interface PS et PL avec AXI
Choisir les ports AXI entre le Processing System et la logique programmable, puis gérer horloges, resets, interruptions et cohérence mémoire.
Deux chemins à distinguer
Une architecture Zynq sépare souvent le chemin de contrôle et le chemin de données.
AXI est une famille de bus utilisée pour transporter des adresses, des données et des réponses entre les blocs. AXI-Lite simplifie ce protocole pour accéder à quelques registres. AXI-Stream transporte un flux sans adresse associée à chaque mot.
Le chemin de contrôle transporte peu de données. Le processeur écrit des paramètres, démarre une IP et lit son état. AXI-Lite convient à ce besoin.
Le chemin de données transporte des buffers, c'est-à-dire des zones mémoire qui regroupent les données à traiter, ou un flux continu. Il utilise un maître AXI dans la PL, un DMA et un port vers la mémoire du PS.
Cette séparation évite d'utiliser le processeur pour copier chaque mot. Le logiciel supervise le traitement. Le matériel déplace et transforme les données.
Lire le nom d'un port
Le préfixe M_AXI ou S_AXI est donné du point de vue du bloc qui porte le port.
Un port M_AXI_GP0 du PS est un port maître. Le maître initie la transaction et choisit l'adresse de destination. Ici, ce rôle appartient au PS lorsqu'il accède à une IP de la PL.
Un port S_AXI_HP0 du PS est un port esclave. Un esclave répond aux requêtes reçues. Un maître placé dans la PL utilise donc ce port pour atteindre la DDR ou une autre ressource du PS.
Cette règle évite une confusion fréquente. Le sens géométrique du dessin ne définit pas le maître. Le bloc qui présente le port définit son rôle.
Ports du Zynq-7000
| Port | Sens de l'initiation | Usage fréquent |
|---|---|---|
M_AXI_GP0 et M_AXI_GP1 | PS vers PL | Registres AXI-Lite des IP |