Utiliser les instructions Wait For pour retarder l'exécution en VHDL
Dans notre tutoriel précédent, nous avons comparé un processus VHDL à un thread de programme et introduit l'instruction wait;, qui suspend un processus indéfiniment. Mais que faire si vous avez besoin qu'un processus fasse une pause pour une durée spécifique ?
Supprimer le wait; entièrement déclenche une erreur de compilation car chaque processus VHDL est une boucle infinie qui doit contenir au moins une instruction wait. La boucle s'exécute continuellement entre les délimiteurs begin et end process;.
Cet article fait partie de la série Tutoriels VHDL de base.
Alors que wait; arrête l'exécution pour toujours, la construction wait for vous permet de retarder un processus pour n'importe quel intervalle de temps souhaité.
La syntaxe de wait for est :
wait for <time_value> <time_unit>;
où <time_value> est un littéral numérique et <time_unit> peut être l'un des suivants :
| fs | femtosecondes |
| ps | picosecondes |
| ns | nanosecondes |
| us | microsecondes |
| ms | millisecondes |
| sec | secondes |
| min | minutes |
| hr | heures |
Exercice
Regardez la vidéo tutorielle pour voir wait for en action, mettant en pause un processus pour une période définie par l'utilisateur.
L'exemple VHDL que nous avons construit est montré ci-dessous :
entity T02_WaitForTb is end entity; architecture sim of T02_WaitForTb is begin process is begin -- Le "thread" du processus commence ici report "Peekaboo!"; wait for 10 ns; -- Retour au début end process; end architecture;
L'exécution dans ModelSim produit la sortie console suivante :
VSIM 2> run # ** Note: Peekaboo! # Time: 0 ns Iteration: 0 Instance: /t02_waitfortb # ** Note: Peekaboo! # Time: 10 ns Iteration: 0 Instance: /t02_waitfortb # ** Note: Peekaboo! # Time: 20 ns Iteration: 0 Instance: /t02_waitfortb ...
Analyse
Dans cet exemple, le délai de 10 ns est typique pour une logique opérant à des fréquences MHz, où la granularité nanoseconde s'aligne avec les périodes d'horloge.
Pendant la simulation, l'instruction report et le contrôle de boucle consomment zéro temps ; seule l'instruction wait for fait avancer le temps de simulation.

À retenir
- Un processus VHDL fait une pause précisément pour la durée spécifiée dans
wait for. - Toutes les autres instructions d'un processus s'exécutent instantanément en temps de simulation.
Passez au tutoriel suivant →
VHDL
- Calcul du temps pour atteindre une tension cible dans les circuits RC et RL
- Créer des listes de chaînes en VHDL : Bonnes pratiques et exemple
- Créer un banc de test piloté par Tcl pour un module verrou code VHDL
- Installation gratuite d'un simulateur et éditeur VHDL : guide étudiant
- Équilibrer détail et efficacité dans la planification des travaux de maintenance
- Quand planifier la maintenance des freins de grue : indicateurs clés
- Accélérer la formation au soudage robotique : gagner du temps, booster l'efficacité
- Première assurance auto : guide pas à pas pour une couverture abordable
- Estimation précise des délais pour l'externalisation de la fabrication métallique