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

While-Schleifen in VHDL meistern: Dynamische Iterationssteuerung

Aufbauend auf unserer früheren Erkundung von for-Schleifen widmet sich dieses Tutorial der while-Schleife – einem mächtigen Konstrukt, das Iterationen basierend auf dynamischen Bedingungen statt eines festen Bereichs steuert.

Die while-Schleife führt ihren Körper solange wiederholt aus, wie die angegebene Bedingung true bleibt. Das macht sie ideal für Szenarien, in denen die Anzahl der Iterationen von Laufzeitdaten oder komplexer Logik abhängt.

Dieser Beitrag gehört zur Serie „Basic VHDL Tutorials“.

Syntax

while <Bedingung> loop
  -- Schleifenkörper
end loop;

Die <Bedingung> muss einen booleschen Wert ergeben. Sie kann ein einfacher Vergleich oder ein komplexerer Ausdruck sein. Die Bedingung wird vor jedem Durchlauf geprüft, sodass die Schleife nur fortgesetzt wird, solange sie true ist.

Bedingungsbeispiele

Relationale Operatoren

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

Logische Operatoren

not awahr, wenn a falsch ist
a and bwahr, wenn a und b wahr sind
a or bwahr, wenn a oder b wahr sind
a nand bwahr, wenn a oder b falsch ist
a nor bwahr, wenn a und b falsch sind
a xor bwahr, wenn genau einer von a, b wahr ist
a xnor bwahr, wenn a und b gleich sind

Übung

Sehen Sie das Video-Tutorial unten, um zu erfahren, wie eine Variable eine while-Schleife in der Praxis steuert:

Beispielcode

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;

Simulator-Ausgabe

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 initialisieren i mit 0 und nutzen i < 10 als Schleifenwache. Da die Schleife i pro Zyklus um 2 erhöht, ist der letzte ausgegebene Wert 8. Im nächsten Durchlauf wertet die Bedingung zu false aus (10 ist nicht kleiner als 10), und die Schleife endet. Das nachfolgende wait; hält den Prozess unendlich an – ein gängiges Muster für Testbenches.

While-Schleifen in VHDL meistern: Dynamische Iterationssteuerung

Wichtigste Erkenntnisse

Machen Sie den Basic VHDL Quiz – Teil 1 oder fahren Sie mit dem nächsten Tutorial fort.

VHDL

  1. Wie Molybdän die moderne Industrie formt: Nutzung, Vorteile und Versorgungsdynamik
  2. String-Listen in VHDL erstellen: Best Practices & Beispiel
  3. VHDL-Testbench-Simulation sauber beenden
  4. PWM-Controller in VHDL implementieren: Design, Simulation & FPGA-Demo
  5. Zufallszahlen in VHDL generieren: Von Uniform zu OSVVM
  6. In-Prozess-Prozeduren für saubere VHDL-FSM-Entwürfe nutzen
  7. Impure Functions in VHDL nutzen: FSM-Lesbarkeit und Wartbarkeit steigern
  8. VHDL-Funktionen meistern: Praktischer Leitfaden für effizientes Design
  9. Endlicher Automat in VHDL entwerfen: Praktisches Ampel-Beispiel
  10. Schleiftechniken für Werkzeugschleifmaschinen meistern: Praktischer Leitfaden