L’interface Avalon permet de relier un nombre quelconque d’éléments maîtres et d’éléments esclaves et de garantir de bons échanges de données entre eux, s’ils respectent les interfaces.
Il permet de faire l’interface entre les composants du processeurs NIOS II. On va voir les 6 interfaces possibles :
- Avalon-MM : Liaison permettant des opérations lecture/écrite basée sur des adresses en mode maître/esclave pour des éléments interne du FPGA
- Avalon-MM Tristate : Liaison permettant des opérations lecture/écriture basée sur des adresses en mode maître/esclave pour des éléments externes partageant les bus.
- Avalon-ST : liaison permettant des envoies de données unidirectionnnels éventuellement multiplexées
- Avalon-clock : liaison permettant de recevoir ou d’envoyer des signau d’horloge et de reset pour synchroniser les éléments du système
- Avalon-interrupt : liaison permettant à des composants de signaler des événements
- Avalon-conduit : liaison permettant des accès directs aux composants interne d’un système Qsys.
A) Avalon-MM
La liaison Avalon-MM est une liaison permettant des échanges entre un ou plusieurs maîtres et un ou plusieurs esclaves à travers un système d’interconnexions spécifique.
Il y a trois types de liaison Avalon-MM :
- Avalon MM Slave
- Avalon MM Master
- Avalon MM Tristate Slave
Pour l’interface Avalone MM Master, il y a deux types de transfert :
Read/write classique : On attend que le maître soit prêt à lire seulement une partie d’un mot dans une mémoire.
Write burst et Read burst : Faire des lectures et écriture en rafale. Signaux supplémentaire qui permet de dire combien de case de la mémoire on va récupérer. Contrairement au read witre classique ou on va tous lire la mémoire.
Il n’y a pas de décodage d’adresse au sein des composants du processeur NIOS. Un chipselect généré par composant. Le décodeur d’adresse est généré autmatiquement pour respecter le plan mémoire, ce qui permet de ne pas recompiler votre programme si vous le modifier.
Le multiplexage du chemin de donnée permet de créer le chemin de donnée en écriture à partir du maître actif vers les esclaves et le chemin de données de lecture des esclaves vers le maître.
- Insertion d’états d’attente
Permet de rallonger la durée d’un transfert d’un ou plusieurs coups d’horloge. Permet de gérer des esclaves avec des temps de réponse long : Informe le maître qu’il doit attendre que l’esclave soit prêt.
Il est possible de pipeliner un transfert d’un maître à un esclave pour améliorer le flux de données entre les deux.
- Gestion de la taille de donnée
Il y a deux modes de gestion d’adresse qui peuvent être utilisés :
Taille de bus dynamique : Permet à un maître d’accéder à n’importe quelle mémoire esclave.
Alignement d’adresse : Un mot de l’esclave correspond exactement à un mot du maître. Un suel transfert est effectué. Cela affecte les mots de l’esclave aux bits de poids faible du maître et complète avec des 0. Ne marche que pour un maître plus large que l’esclave.
- Arbitrage des systèmes à plusieurs maîtres
Chaque maître dispose de parts de partage d’un esclave donné. L’arbitre accorde successivement à chaque maître un nombre de trasnferts égal à son nombre de parts puis passe au suivant. Un port esclave peut avoir un nombre de parts minimal qui représente le nombre minimal de transferts effectués avec ce composant.
- Gestion de système à horloges mutiples
Plusieurs ports peuvent fonctionner avec des horloges différentes. Chaque port est lié à une seule horloge.
- Maître impose l’adresse, l’horloge et les données
- Handshake capture les signaux de contrôle et met le maître en attente
- Demande de transfert au handshake esclave
- Synchronisation avec l’horloge esclave
- Requête effectuée par le handshake esclave
- Quand le transfert esclave est terminé, acquiescement envoyé au handshake maître
- Synchronisation avec l’horloge maître
- Handshake maître supprime condition d’attente
5 coups d’horloge sont nécessaire dans chaque domaine par transfert.
Métastabilité : Front d’horloge qui arrive quand la donné arrive avec le maître et l’esclave qui ne fonctionne pas avec la même horloge. Pour éviter ça on transmet une donnée au rythme du maître puis de l’esclave.
- Gestion des interruptions
Si les ports esclave fenèrent des demadnes d’interruption, des contrôleurs d’interruption sont insérés pour chaque port maître qui accepte les interruptions. Deux types de contrôleurs sont possibles : Priorité soft et hard. Ceci permet de choisir l’interruption la plus importante et de la gérer en priorité.