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 hat sie keinen eingebauten Zähler — Sie müssen die Schleifenvariable selbst aktualisieren.
Eine while-loop prüft vor jeder Iteration eine condition. Wenn die condition true ist, wird die loop ausgeführt. Wenn sie false ist, stoppt die loop.
Syntax:
while (condition) begin
// Code zum Wiederholen
endEinfaches Beispiel
integer i = 0;
while (i < 5) begin
$display("i = %d", i);
i = i + 1;
endAusgabe:
i = 0
i = 1
i = 2
i = 3
i = 4Die Schleife läuft, solange i < 5 ist.
While- vs. For-Schleife
| For-Schleife | While-Schleife | |
|---|---|---|
| Zähler | Integriert | Wird von Ihnen verwaltet |
| Wann zu verwenden | Bekannte Anzahl von Durchläufen | Unbekannt, wann die Schleife stoppt |
| Syntax | for (i=0; i<5; i=i+1) | while (i < 5) |
While-Schleifen 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;
endEinen 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
| Regel | Erklärung |
|---|---|
condition muss falsch werden | Andernfalls Endlosschleife |
Loop-Variable Inside aktualisieren | Oder die Schleife endet nie |
Loop-Variable muss integer oder reg sein | Kann nicht wire sein |
begin/end für mehrere Anweisungen verwenden | Erforderlich für mehr als eine Zeile |
Aufgabe
Was zu tun ist:
Füge die fehlende while-Schleife hinzu, um Zahlen von 0 bis 2 auszugeben.
Probier es selbst
module while_challenge;
integer i;
initial begin
i = 0;
$display("Printing 0 to 2:");
// TODO: While-Schleife hinzufügen
// Schleife solange i < 3
// Innerhalb i ausgeben
// i um 1 erhöhen
$finish;
end
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareAbstraktionsebenen im DesignDein erstes ModulKommentare4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – Einfache MathematikBitweise Operatoren7Zuweisung und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-PrimitiveAND OR NOT GatterXOR XNOR GatterZusammenfassung - Logikgatterschaltung10Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher KomparatorCase-AnweisungCasex und CasezWiederholung - ALU-Design5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenShift-OperatorenVerkettungsoperatorBedingter OperatorZusammenfassung – Operator-Challenge11Schleifen
For-SchleifeWhile-SchleifeRepeat-SchleifeEndlosschleifeDisable-AnweisungRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit GrößenangabeZahlen ohne GrößenangabeNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturEingangs- und Ausgangs-PortsInout-PortsModul-InstanziierungPort-Mapping nach NamePort-Mapping nach ReihenfolgeZusammenfassung – Ein Modul erstellen