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

Maîtriser les boucles While en VHDL : contrôle d'itération dynamique

S'appuyant sur notre exploration précédente des boucles for, ce tutoriel plonge dans la boucle while — une construction puissante qui permet de contrôler l'itération basée sur des conditions dynamiques plutôt que sur une plage prédéterminée.

La boucle while exécute son corps répétitivement tant que la condition spécifiée reste true. Cela la rend idéale pour les scénarios où le nombre d'itérations dépend de données d'exécution ou de logique complexe.

Cet article fait partie de la série Tutoriels VHDL de base.

Syntaxe

while <condition> loop -- corps de la boucle end loop;

La <condition> doit évaluer à une valeur booléenne. Elle peut être une simple comparaison ou une expression plus élaborée. La condition est vérifiée avant chaque passage, assurant que la boucle ne continue que tant qu'elle reste true.

Exemples de conditions

Opérateurs relationnels

=égal
/=différent
<inférieur à
<=inférieur ou égal à
>supérieur à
>=supérieur ou égal à

Opérateurs logiques

not atrue si a est false
a and btrue si a et b sont true
a or btrue si a ou b sont true
a nand btrue si a ou b est false
a nor btrue si a et b sont false
a xor btrue si exactement un de a ou b est true
a xnor btrue si a et b sont égaux

Exercice

Regardez le tutoriel vidéo ci-dessous pour voir comment une variable peut piloter une boucle while en pratique :

Exemple de code

entity T05_WhileLoopTb is end entity; architecture sim of T05_WhileLoopTb is begin process is variable i : integer := 0; begin while i < 10 loop report "i=" & integer'image(i); i := i + 2; end loop; wait; end process; end architecture;

Sortie du simulateur

VSIM 2> run # ** Note: i=0 # Time: 0 ns Iteration: 0 Instance: /t05_whilelooptb # ** Note: i=2 # Time: 0 ns Iteration: 0 Instance: /t05_whilelooptb # ** Note: i=4 # Time: 0 ns Iteration: 0 Instance: /t05_whilelooptb # ** Note: i=6 # Time: 0 ns Iteration: 0 Instance: /t05_whilelooptb # ** Note: i=8 # Time: 0 ns Iteration: 0 Instance: /t05_whilelooptb

Analyse

Nous initialisons i à 0 et utilisons i < 10 comme garde de boucle. Comme la boucle incrémente i de 2 à chaque cycle, la dernière valeur affichée est 8. Au passage suivant, la condition évalue à false (10 n'est pas inférieur à 10), et la boucle se termine. Le wait; subséquent suspend le processus indéfiniment, un motif courant pour les testbenches.

Maîtriser les boucles While en VHDL : contrôle d itération dynamique

Points clés à retenir

Faites le Quiz VHDL de base – partie 1 ou continuez vers le tutoriel suivant.

VHDL

  1. Comment le molybdène façonne l'industrie moderne : usages, avantages et dynamiques d'approvisionnement
  2. Créer des listes de chaînes en VHDL : Bonnes pratiques et exemple
  3. Terminer proprement une simulation de banc de test VHDL
  4. Implémenter un contrôleur PWM en VHDL : Conception, simulation et démo FPGA
  5. Générer des nombres aléatoires en VHDL : De l'uniforme à OSVVM
  6. Exploiter les procédures in-process pour un design FSM VHDL plus propre
  7. Utilisation des fonctions impures en VHDL : Améliorer la lisibilité et la maintenabilité des FSM
  8. Maîtriser les fonctions VHDL : Guide pratique pour un design efficace
  9. Maîtriser les techniques de la rectifieuse d'outils : guide pratique