Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> VHDL

So verwenden Sie eine While-Schleife in VHDL

Im vorherigen Tutorial haben wir gelernt, wie man eine For-Schleife verwendet, um über einen ganzzahligen Bereich zu iterieren. Aber was ist, wenn wir eine detailliertere Steuerung der Schleife wünschen als nur einen festen ganzzahligen Bereich? Wir können dafür eine While-Schleife verwenden.

Die While-Schleife iteriert weiterhin über den eingeschlossenen Code, solange der Ausdruck, auf den sie testet, zu true ausgewertet wird . Daher eignet sich die While-Schleife für Situationen, in denen Sie nicht genau wissen, wie viele Iterationen im Voraus benötigt werden.

Dieser Blogpost ist Teil der Reihe Basic VHDL Tutorials.

Die Syntax der While-Schleife lautet:

while <condition> loop
end loop;

Die <condition> ist ein boolescher true oder false . Es kann sich auch um einen Ausdruck handeln, der zu true ausgewertet wird oder false . Die Bedingung wird vor jeder Iteration der Schleife ausgewertet, und die Schleife wird nur fortgesetzt, wenn die Bedingung true ist .

Beispielausdruck, der true ist wenn i ist kleiner als 10:

i < 10

Beispielausdruck, der true ist wenn i ist nicht 10:

i /= 10

Beispielausdruck, der true ist wenn i größer oder gleich 0 und kleiner als 2 8 ist =256:

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

Vergleichsoperatoren:

= gleich
/= nicht gleich
< weniger als
<= kleiner oder gleich
> größer als
>= größer oder gleich

Logische Operatoren:

nicht ein wahr, wenn ein ist falsch
a und b wahr, wenn ein und b sind wahr
a oder b wahr, wenn ein oder b sind wahr
a und b wahr, wenn ein oder b ist falsch
a noch b wahr, wenn ein und b sind falsch
a oder b wahr, wenn genau einer von einem oder b sind wahr
a xnor b wahr, wenn ein und b gleich sind

Übung

In diesem Video-Tutorial lernen wir, eine Variable zur Steuerung einer While-Schleife zu verwenden:

Der endgültige Code, den wir in diesem Tutorial erstellt haben:

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;

Die Ausgabe an die Simulatorkonsole, wenn wir in ModelSim die Run-Taste gedrückt haben:

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

Wir haben eine Integer-Variable i erstellt und gab ihm einen Anfangswert von 0. Wir haben in der While-Schleife einen Ausdruck verwendet, der wahr ist, solange i kleiner als 10 ist. Weil wir i erhöht haben um 2 in jeder Iteration, die letzte ausgedruckte Zahl war 8.

Bei der nächsten Iteration der i < 10 zu false ausgewertet weil 10 nicht kleiner als 10 ist. Nachdem die Schleife beendet war, traf das Programm auf wait; wo es unendlich pausierte.

Imbiss

Nehmen Sie am Basic VHDL Quiz – Teil 1 teil »
oder
gehen Sie zum nächsten Tutorial »


VHDL

  1. Wie verwenden wir Molybdän?
  2. So erstellen Sie eine Liste von Zeichenfolgen in VHDL
  3. So stoppen Sie die Simulation in einer VHDL-Testbench
  4. So erstellen Sie einen PWM-Controller in VHDL
  5. So generieren Sie Zufallszahlen in VHDL
  6. So verwenden Sie eine Prozedur in einem Prozess in VHDL
  7. So verwenden Sie eine unreine Funktion in VHDL
  8. So verwenden Sie eine Funktion in VHDL
  9. So erstellen Sie einen endlichen Automaten in VHDL
  10. So verwenden Sie einen Cutter Grinder