Comment retarder l'heure en VHDL :attendre
Dans le didacticiel précédent, nous avons appris qu'un processus peut être considéré comme un thread de programme. Nous avons également appris qu'un wait;
L'instruction provoque une pause indéfinie du programme. Mais existe-t-il un moyen de faire attendre un programme pour une autre valeur de temps que pour toujours ?
Si nous supprimons le wait;
ensemble et essayez de compiler le programme, le compilateur se plaindra d'une boucle infinie. La boucle à laquelle le compilateur fait référence est la boucle de processus . Un thread de processus en VHDL ne se terminera jamais, il bouclera en continu entre le begin
et end process;
déclarations. Il doit y avoir un wait
instruction quelque part à l'intérieur de la boucle de processus.
Cet article de blog fait partie de la série de didacticiels VHDL de base.
Alors que wait;
mettra le programme en pause pour toujours, le wait for
peut être utilisée pour retarder le programme pendant n'importe quelle durée.
La syntaxe du wait for
l'instruction est :wait for <time_value> <time_unit>;
où <time_value>
est un nombre et <time_unit>
est l'une des unités de temps suivantes :
fs | femtosecondes |
ps | picosecondes |
ns | nanosecondes |
nous | microsecondes |
ms | millisecondes |
sec | secondes |
min | minutes |
h | heures |
Exercice
Ce tutoriel vidéo vous montrera comment utiliser le wait for
pour interrompre le processus pendant un temps donné.
Le code que nous avons créé dans ce tutoriel :
entity T02_WaitForTb is end entity; architecture sim of T02_WaitForTb is begin process is begin -- This is the start of the process "thread" report "Peekaboo!"; wait for 10 ns; -- The process will loop back to the start from here end process; end architecture;
La sortie vers la console du simulateur lorsque nous avons appuyé sur le bouton d'exécution dans ModelSim :
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, nous avons utilisé 10 ns
, soit 10 nanosecondes. Lorsque vous travaillez avec une logique numérique qui fonctionne à des fréquences d'horloge MHz, vous travaillerez généralement avec des incréments de nanosecondes.
Lorsque nous avons exécuté le code dans le simulateur, il a imprimé "Peekaboo!" à la console toutes les 10 ns. Comme il s'agit d'une simulation, le report
l'instruction ne prend aucun temps, tout comme la boucle.
À emporter
- Le fil du processus s'arrêtera à
wait for
pour le temps spécifié exact - Toutes les instructions autres que
wait
les instructions ne prennent aucun temps de simulation
Aller au tutoriel suivant »
VHDL
- Résoudre un temps inconnu
- Comment créer une liste de chaînes en VHDL
- Comment créer un banc d'essai piloté par Tcl pour un module de verrouillage de code VHDL
- Comment installer un simulateur et un éditeur VHDL gratuitement
- Combien de détails pour les plans de travail ?
- Comment déterminer l'heure de l'entretien des freins de grue
- Comment réduire le temps de formation pour le soudage robotisé
- Comment souscrire une assurance auto pour la première fois ?
- Combien de temps votre processus de fabrication nécessite-t-il ?