Menu
Coddy logo textTech

While-Schleife

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 59 von 90.

Die while-Schleife wiederholt einen Codeblock, solange eine Bedingung wahr ist. Im Gegensatz zur for-Schleife verfügt sie über keinen eingebauten Zähler – Sie müssen die Schleifenvariable selbst aktualisieren.

Eine while-Schleife prüft eine Bedingung vor jeder Iteration. Wenn die Bedingung wahr ist, wird die Schleife ausgeführt. Wenn sie falsch ist, stoppt die Schleife.

Syntax:

while (condition) begin
  // Zu wiederholender Code
end

Einfaches Beispiel

integer i = 0;

while (i < 5) begin
  $display("i = %d", i);
  i = i + 1;
end

Ausgabe:

i = 0
i = 1
i = 2
i = 3
i = 4

Die Schleife läuft, solange i < 5.

While- vs. For-Schleife

 For-SchleifeWhile-Schleife
ZählerIntegriertManuelle Verwaltung
VerwendungBekannte Anzahl an IterationenUnbekannt, wann die Schleife stoppt
Syntaxfor (i=0; i<5; i=i+1)while (i < 5)

While-Schleife in Testbenches

While-Schleifen sind nützlich, wenn Sie nicht genau wissen, wie viele Iterationen Sie benötigen:

integer i = 0;

while (i < 16) begin
  $display("Testing value %d", i);
  i = i + 1;
end

Einen bestimmten Wert finden

integer i = 0;
reg [7:0] data;

while (data[i] != 1) begin
  i = i + 1;
end
$display("First 1 found at position %d", i);

Wichtige Regeln

RegelErklärung
Bedingung muss falsch werdenAndernfalls Endlosschleife
Schleifenvariable im Inneren aktualisierenOder die Schleife endet nie
Schleifenvariable muss ein integer seinKann kein reg sein
Verwenden Sie begin/end für mehrere AnweisungenErforderlich für mehr als eine Zeile
challenge icon

Aufgabe

Was zu tun ist:

Füge die fehlende while-Schleife hinzu, um Zahlen von 0 bis 2 auszugeben.

Spickzettel

Die while-Schleife wiederholt einen Codeblock, solange eine Bedingung wahr ist. Sie müssen die Schleifenvariable manuell aktualisieren.

integer i = 0;

while (i < 5) begin
  $display("i = %d", i);
  i = i + 1;
end

Wichtige Regeln:

  • Die Schleifenvariable muss vom Typ integer sein (nicht reg)
  • Aktualisieren Sie die Schleifenvariable immer innerhalb der Schleife, um Endlosschleifen zu vermeiden
  • Verwenden Sie begin/end für mehrere Anweisungen

While vs. For: Verwenden Sie for, wenn die Anzahl der Iterationen bekannt ist; verwenden Sie while, wenn die Abbruchbedingung dynamisch ist (z. B. bei der Suche nach einem Wert).

// Finding first set bit
while (data[i] != 1) begin
  i = i + 1;
end

Probier es selbst

module while_challenge;
  integer i;
  
  initial begin
    i = 0;
    $display("Printing 0 to 2:");
    
    // TODO: while-Schleife hinzufügen
    // Schleife ausführen, solange i < 3
    // Im Inneren i ausgeben
    // i um 1 erhöhen
    
    $finish;
  end
endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen