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 For-Schleife in VHDL

Im vorherigen Tutorial haben wir gelernt, eine Endlosschleife mit dem loop zu erstellen Aussage. Wir haben auch gelernt, wie man mit exit aus einer Schleife ausbricht Aussage. Aber was ist, wenn wir wollen, dass die Schleife eine bestimmte Anzahl von Wiederholungen durchläuft? Die For-Schleife ist der einfachste Weg, dies zu erreichen.

Mit der For-Schleife können Sie über einen festen Bereich von Ganzzahlen oder Aufzählungselementen iterieren. Das zur aktuellen Iteration gehörende Element wird innerhalb der Schleife durch eine implizit deklarierte Konstante verfügbar sein.

Dieser Blogpost ist Teil der Reihe Basic VHDL Tutorials.

Die Syntax der For-Schleife lautet:

for <c> in <r> loop
end loop;

Die <c> ist ein willkürlicher Name für eine Konstante, die innerhalb der Schleife verfügbar sein wird. Die <r> ist ein Bereich von Ganzzahlen oder Aufzählungswerten, über die die Schleife iteriert. Ein ganzzahliger Bereich kann entweder inkrementierend oder dekrementierend sein.

Der VHDL-Code für einen aufsteigenden Bereich, der alle 10 Zahlen von 0 bis 9 enthält:

0 to 9

Der VHDL-Code für einen dekrementierenden Bereich, der alle 10 Zahlen von 9 bis 0 enthält:

9 downto 0

Der VHDL-Code für einen Bereich, der nur die Zahl 0 enthält:

0 to 0

Der VHDL-Code für einen leeren Bereich, der überhaupt keine Zahlen enthält:

0 to -1

Übung

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

entity T04_ForLoopTb is
end entity;

architecture sim of T04_ForLoopTb is
begin

    process is
    begin

        for i in 1 to 10 loop
            report "i=" & integer'image(i);
        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=1
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=2
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=3
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=4
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=5
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=6
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=7
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=8
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=9
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=10
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb

Analyse

Nicht ganz unerwartet wiederholte sich unsere For-Schleife zehnmal, bevor sie endete. Der Wert von i wird zur Simulationszeit 0 zehnmal an die Simulatorkonsole ausgegeben. Es gibt keine Wait-Anweisung innerhalb der Schleife, und daher benötigt die Schleife null Zeit zum Abschließen. Schließlich geht das Programm auf wait; in eine unendliche Pause .

Wir haben gelernt, wie man eine Ganzzahl mithilfe von integer'image() in einen String umwandelt , und wir haben den & verwendet Zeichen, um die beiden Zeichenfolgen miteinander zu verbinden.

Imbiss

Weiter 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