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 forpour le temps spécifié exact - Toutes les instructions autres que
waitles 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 ?