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 utiliser une boucle While en VHDL

Dans le didacticiel précédent, nous avons appris à utiliser une boucle For pour itérer sur une plage d'entiers. Mais que se passe-t-il si nous voulons un contrôle plus détaillé de la boucle qu'une simple plage d'entiers fixes ? Nous pouvons utiliser une boucle While pour cela.

La boucle While continuera à itérer sur le code inclus tant que l'expression qu'elle teste est évaluée à true . Par conséquent, la boucle While convient aux situations où vous ne savez pas exactement combien d'itérations seront nécessaires à l'avance.

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

La syntaxe de la boucle While est :

while <condition> loop
end loop;

Le <condition> est un booléen true ou false . Il peut également s'agir d'une expression évaluée à true ou false . La condition est évaluée avant chaque itération de la boucle, et la boucle continuera uniquement si la condition est true .

Exemple d'expression qui est true si i est inférieur à 10 :

i < 10

Exemple d'expression qui est true si i n'est pas 10 :

i /= 10

Exemple d'expression qui est true si i est supérieur ou égal à 0 et inférieur à 2 8 =256 :

i >= 0 and i < 2**8;

Opérateurs relationnels :

= égal
/= pas égal
< moins de
<= inférieur ou égal
> supérieur à
>= supérieur ou égal

Opérateurs logiques :

pas un vrai si un est faux
un et b vrai si un et b sont vrais
un ou b vrai si un ou b sont vrais
un et b vrai si un ou b est faux
un ni b vrai si un et b sont faux
un xor b true si exactement l'un des a ou b sont vrais
un xnor b vrai si un et b sont égaux

Exercice

Dans ce tutoriel vidéo, nous apprenons à utiliser une variable pour contrôler une boucle While :

Le code final que nous avons créé dans ce tutoriel :

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;

La sortie vers la console du simulateur lorsque nous avons appuyé sur le bouton d'exécution dans ModelSim :

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 avons créé une variable entière i et lui avons donné une valeur initiale de 0. Nous avons utilisé une expression dans la boucle While qui est vraie tant que i est inférieur à 10. Parce que nous incrémentions i par 2 à chaque itération, le dernier nombre imprimé était 8.

À l'itération suivante, le i < 10 évalué à false car 10 n'est pas inférieur à 10. Une fois la boucle terminée, le programme a atteint le wait; où il s'est arrêté infiniment.

À emporter

Répondez au Quiz VHDL de base – partie 1 »
ou
Passez au tutoriel suivant »


VHDL

  1. Comment utilisons-nous le molybdène?
  2. Comment créer une liste de chaînes en VHDL
  3. Comment arrêter la simulation dans un testbench VHDL
  4. Comment créer un contrôleur PWM en VHDL
  5. Comment générer des nombres aléatoires en VHDL
  6. Comment utiliser une procédure dans un processus en VHDL
  7. Comment utiliser une fonction impure en VHDL
  8. Comment utiliser une fonction en VHDL
  9. Comment utiliser une meuleuse de coupe