Protocole AXI-Stream

AXI-Stream : transfert de données en flux continu, sans gestion d'adresses.

Qu'est-ce que AXI-Stream ?

AXI-Stream est une variante très simplifiée du protocole AXI, spécialisée dans le transfert de données en flux continu (streaming). Développé dans le cadre des architectures AMBA, il est léger et efficace.

Contrairement à AXI4 et AXI-Lite, AXI-Stream abandonne complètement la gestion des adresses. Il se concentre uniquement sur l'envoi d'un flux de données d'un Master vers un Slave. Résultat : beaucoup moins de signaux.


Lecture et écriture

AXI-Stream étant unidirectionnel (Master → Slave), un seul ensemble de signaux suffit pour décrire une transaction. Pour lire depuis un Slave AXI-Stream, il suffit de lire la donnée sur un front d'horloge où TVALID est actif.

Diagramme AXI-Stream

Séquence d'une transaction :

  1. Le Master fixe TVALID et attend TREADY du Slave.
  2. Le Slave fixe TREADY (il est prêt à recevoir).
  3. Le Master envoie les données sur TDATA, avec TLAST à '1' sur la dernière donnée.
  4. Le Master remet TVALID à zéro.

Handshake

Il y a trois méthodes pour gérer le handshake entre TREADY et TVALID :

Handshake méthodes

Handshake exemple

  • Méthode 1 : Le Slave met TREADY à '1' en permanence (il accepte toujours).
  • Méthode 2 : Le Slave met TREADY à '1' uniquement quand TVALID est actif.
  • Méthode 3 : Le Slave gère TREADY indépendamment de TVALID.

Si vous implémentez un Slave : gérez correctement TREADY. Si vous implémentez un Master : gérez correctement TVALID et TLAST.


Récapitulatif des signaux

SignalDirectionDescription
TVALIDMaster → SlaveDonnées valides sur le bus
TREADYSlave → MasterSlave prêt à recevoir
TDATAMaster → SlaveDonnées à transférer
TLASTMaster → SlaveIndique la dernière donnée du paquet
TKEEP (optionnel)Master → SlaveMasque d'octets valides
TUSER (optionnel)Master → SlaveDonnées utilisateur (side-channel)

AXI-Stream est idéal pour les flux vidéo, audio, DSP et tout transfert de données séquentiel sans adressage.