Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> VHDL

Een While-Loop gebruiken in VHDL

In de vorige zelfstudie hebben we geleerd hoe u een For-Loop kunt gebruiken om over een geheel getal te itereren. Maar wat als we een meer gedetailleerde controle van de lus willen dan alleen een vast geheel getal? We kunnen hiervoor een While-Loop gebruiken.

De While-Loop blijft de bijgevoegde code herhalen zolang de uitdrukking waarop het wordt getest, evalueert tot true . Daarom is de While-Loop geschikt voor situaties waarin je vooraf niet precies weet hoeveel iteraties er nodig zijn.

Deze blogpost maakt deel uit van de serie Basic VHDL Tutorials.

De syntaxis van de While-Loop is:

while <condition> loop
end loop;

De <condition> is een booleaanse true of false . Het kan ook een uitdrukking zijn die resulteert in true of false . De voorwaarde wordt geëvalueerd vóór elke iteratie van de lus, en de lus wordt alleen voortgezet als de voorwaarde true is .

Voorbeelduitdrukking die true . is als i is minder dan 10:

i < 10

Voorbeelduitdrukking die true . is als i is geen 10:

i /= 10

Voorbeelduitdrukking die true . is als i is groter dan of gelijk aan 0, en kleiner dan 2 8 =256:

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

Relationele operatoren:

= gelijk
/= niet gelijk
< minder dan
<= kleiner dan of gelijk aan
> groter dan
>= groter dan of gelijk

Logische operatoren:

niet een waar als a is onwaar
a en b waar als a en b zijn waar
a of b waar als a of b zijn waar
a nand b waar als a of b is onwaar
a noch b waar als a en b zijn vals
a xor b waar als precies één van a of b zijn waar
a xnor b waar als a en b zijn gelijk

Oefening

In deze video-tutorial leren we een variabele te gebruiken om een ​​While-Loop te besturen:

De laatste code die we in deze tutorial hebben gemaakt:

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;

De uitvoer naar de simulatorconsole toen we op de run-knop in ModelSim drukten:

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

We hebben een integer-variabele i gemaakt en gaf het een beginwaarde van 0. We gebruikten een uitdrukking in de While-Loop die waar is zolang als i is minder dan 10. Omdat we i verhoogden door 2 in elke iteratie, was het laatste nummer dat werd afgedrukt 8.

Bij de volgende iteratie, de i < 10 geëvalueerd tot false omdat 10 niet minder is dan 10. Nadat de lus was beëindigd, raakte het programma de wait; waar het oneindig bleef pauzeren.

Afhaalmaaltijden

  • De While-loop gaat door zolang de voorwaarde true is
  • De voorwaarde wordt geëvalueerd vóór elke iteratie van de While-Loop
  • Variabelen kunnen worden gedeclareerd en gebruikt binnen een proces

Doe de Basic VHDL Quiz – deel 1 »
of
Ga naar de volgende tutorial »


VHDL

  1. Hoe gebruiken we molybdeen?
  2. Een lijst met strings maken in VHDL
  3. Simulatie stoppen in een VHDL-testbench
  4. Een PWM-controller maken in VHDL
  5. Hoe willekeurige getallen te genereren in VHDL
  6. Een procedure gebruiken in een proces in VHDL
  7. Een onzuivere functie gebruiken in VHDL
  8. Een functie gebruiken in VHDL
  9. Een eindige-toestandsmachine maken in VHDL
  10. Een procedure gebruiken in VHDL
  11. Hoe een snijmolen te gebruiken