Maîtriser les boucles Loop et Exit en VHDL : guide pratique
Dans le tutoriel précédent, nous avons couvert les délais de timing avec l'instruction wait for et exploré les boucles de processus. Maintenant, nous nous concentrerons sur une construction VHDL fondamentale qui permet d'exécuter du code une fois puis de répéter un bloc jusqu'à ce qu'une condition spécifique soit remplie : l'instruction loop.
Bien qu'un processus puisse s'exécuter indéfiniment, vous avez souvent besoin d'une boucle contrôlée qui peut être quittée gracieusement. L'instruction loop en VHDL est la forme la plus simple d'une telle construction, et elle ne se termine que lorsqu'un exit est rencontré.
Syntaxe d'une boucle simple
loop -- instructions end loop;
Chaque exit sort de la boucle la plus interne dans laquelle il se trouve, et peut apparaître dans n'importe quel type de boucle.
Exercice
Ce tutoriel montre comment construire une boucle de base et en sortir après une seule itération.
Exemple de code
entity T03_LoopTb is end entity; architecture sim of T03_LoopTb is begin process is begin report "Hello!"; loop report "Peekaboo!"; exit; -- Sortie après la première itération end loop; report "Goodbye!"; wait; -- Suspend le processus indéfiniment end process; end architecture;
Sortie de simulation (ModelSim)
VSIM 2> run # ** Note: Hello! # Time: 0 ns Iteration: 0 Instance: /t03_looptb # ** Note: Peekaboo! # Time: 0 ns Iteration: 0 Instance: /t03_looptb # ** Note: Goodbye! # Time: 0 ns Iteration: 0 Instance: /t03_looptb
La console montre que tous les messages se produisent à 0 ns, confirmant que les instructions autres que wait ne consomment pas de temps de simulation. L'instruction exit arrête la boucle après une itération, après quoi le processus atteint le wait final et reste inactif.
Analyse
En inspectant les horodatages, vous pouvez voir l'ordre précis d'exécution : report "Hello!" → report "Peekaboo!" → exit → report "Goodbye!". Cet exemple montre comment utiliser loop et exit pour contrôler le flux sans recourir à des machines d'états complexes.
Points clés à retenir
- loop crée une boucle infinie qui s'exécute jusqu'à ce que
exitsoit invoqué. - exit termine immédiatement la boucle courante, quel que soit le niveau d'imbrication.
VHDL
- Exploiter les procédures in-process pour un design FSM VHDL plus propre
- Utilisation des fonctions impures en VHDL : Améliorer la lisibilité et la maintenabilité des FSM
- Maîtriser les fonctions VHDL : Guide pratique pour un design efficace
- Utilisation des procédures en VHDL : Simplifiez votre design avec du code réutilisable
- Construire un minuteur fiable en VHDL : Compter les cycles d'horloge jusqu'aux heures
- Maîtriser l'instanciation par port map en VHDL : Guide pratique
- Installation gratuite d'un simulateur et éditeur VHDL : guide étudiant
- Microcontrôleurs PIC18 : Caractéristiques, Performances et Utilisation
- Comprendre les Désignateurs de Référence : Comment Étiqueter les Connexions d'Assemblage PCB