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.
Chargement…
Choisir les ports AXI entre le Processing System et la logique programmable, puis gérer horloges, resets, interruptions et cohérence mémoire.
Séparez le chemin de contrôle du chemin de données. Quelques registres pilotés par le processeur demandent AXI-Lite. Les buffers passent par des transactions AXI mémoire mappées, tandis qu'AXI-Stream transporte des mots sans adresse par transfert.
M_AXI désigne un port maître du bloc, celui qui initie la transaction. S_AXI désigne son port esclave, qui reçoit les requêtes. Le sens du dessin ne définit pas ce rôle.
Sur Zynq-7000, M_AXI_GP0 permet au PS d'accéder à la PL ; S_AXI_HP0 permet à un maître PL d'accéder aux ressources du PS :
| Port | Sens de l'initiation | Usage fréquent |
|---|---|---|
M_AXI_GP0 et M_AXI_GP1 | PS vers PL | Registres AXI-Lite des IP |
S_AXI_GP0 et S_AXI_GP1 | PL vers PS | Accès général depuis un maître PL |
S_AXI_HP0 à S_AXI_HP3 | PL vers PS | Transfert à haut débit vers DDR ou OCM |
S_AXI_ACP | PL vers caches du PS | Accélérateur avec accès cohérent |
Les GP servent souvent au contrôle, les HP aux buffers et l'ACP aux accès liés à la cohérence de cache, avec les attributs nécessaires.
Sur MPSoC, les familles portent d'autres noms :
| Famille de ports | Usage |
|---|---|
| HPM | Accès du PS vers les périphériques de la PL |
| HP | Accès non cohérent de la PL vers le PS et la DDR |
| HPC | Accès de la PL avec possibilité de cohérence d'entrée et sortie |
| LPD vers PL | Accès depuis le domaine basse consommation vers la PL |
| PL vers LPD | Accès d'un maître PL aux ressources du domaine basse consommation |
Choisissez selon largeur, débit, cohérence et domaine d'alimentation. Une largeur élevée ne compense pas des transferts minuscules séparés par une attente logicielle.
AXI définit des interfaces point à point. SmartConnect ou AXI Interconnect relie plusieurs maîtres et esclaves, arbitre et décode les adresses. Selon sa configuration, il peut aussi adapter largeur, version AXI, domaine d'horloge ou enregistrer les chemins.
Relisez les blocs ajoutés par l'automatisation : ces adaptations ont un coût en ressources et en latence. Les variantes AXI3 et AXI4 ne se raccordent pas en ignorant leurs différences.
| Offset | Registre | Rôle |
|---|---|---|
0x00 | CONTROL | Bit de démarrage |
0x04 | STATUS | Bits de fin et d'erreur |
0x08 | LENGTH | Nombre d'éléments |
0x0C | RESULT | Résultat simple ou compteur |
#include "xil_io.h"
#define CONTROL_OFFSET 0x00U
#define STATUS_OFFSET 0x04U
#define LENGTH_OFFSET 0x08U
#define START_MASK 0x01U
#define DONE_MASK 0x01U
void accelerator_run(UINTPTR base, u32 length)
{
Xil_Out32(base + LENGTH_OFFSET, length);
Xil_Out32(base + CONTROL_OFFSET, START_MASK);
while ((Xil_In32(base + STATUS_OFFSET) & DONE_MASK) == 0U) {
}
}Ce fragment suppose que l'IP efface ou réarme son bit de fin à chaque démarrage et qu'elle termine sans erreur. Pour un usage robuste, définissez l'acquittement, vérifiez le bit d'erreur et ajoutez une limite d'attente. Une interruption permet de libérer le processeur pendant le calcul.
Le PS fournit des horloges PL, notamment FCLK_CLK sur Zynq-7000. Leur relation de phase doit être connue ; si elle ne l'est pas, le passage de données exige un CDC adapté.
Préparez les resets dans chaque domaine. Processor System Reset produit des signaux dont le relâchement est synchronisé à l'horloge associée.
Une IP PL peut interrompre le GIC, avec plusieurs sources regroupées par Concat. Configurez source locale, identifiant généré, GIC, routine et acquittement. Une source au niveau non acquittée peut rappeler immédiatement l'ISR.
Un AXI DMA peut lire la DDR, fournir un flux au traitement PL et écrire son résultat. Vérifiez l'accessibilité des adresses, les tailles et alignements, puis la maintenance des caches ou la cohérence réelle du chemin.
Une fin DMA ne garantit pas que le CPU voit déjà les nouvelles données. La propriété des buffers et les attributs mémoire font partie du contrat logiciel/matériel.
Quelques registres justifient un maître PS vers AXI-Lite. De grands buffers justifient DMA et HP/HPC ; un partage de données en cache demande l'étude du port cohérent et de ses attributs. Une notification de fin peut remplacer la lecture répétée d'un état.
Les ports sont décrits dans UG585 et UG1085 ; le pilote AXI DMA documente les transferts logiciels.
Tester mes connaissances - Quiz du chapitre