Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> VHDL

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>;
<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

Aller au tutoriel suivant »


VHDL

  1. Résoudre un temps inconnu
  2. Comment créer une liste de chaînes en VHDL
  3. Comment créer un banc d'essai piloté par Tcl pour un module de verrouillage de code VHDL
  4. Comment installer un simulateur et un éditeur VHDL gratuitement
  5. Combien de détails pour les plans de travail ?
  6. Comment déterminer l'heure de l'entretien des freins de grue
  7. Comment réduire le temps de formation pour le soudage robotisé
  8. Comment souscrire une assurance auto pour la première fois ?
  9. Combien de temps votre processus de fabrication nécessite-t-il ?