For-Schleife
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 58 von 90.
Schleifen in Verilog ermöglichen es dir, einen Codeblock mehrfach auszuführen. Sie sind besonders nützlich in Testbenches, um wiederkehrende Testmuster zu erzeugen, Speicher zu initialisieren und Arrays zu durchlaufen. Anders als Hardwarebeschreibungen, die parallel ausgeführt werden, laufen Schleifen sequenziell ab und eignen sich daher ideal für Simulationen und Tests.
Die am häufigsten verwendete Schleife ist die for-Schleife, die sich eine bestimmte Anzahl von Malen wiederholt. Eine for-Schleife führt einen Codeblock wiederholt aus, wobei sich die Schleifenvariable bei jeder Iteration ändert. Du bestimmst genau, wie oft sie ausgeführt wird.
Syntax:
for (initialization; condition; increment) begin
// Zu wiederholender Code
end| Teil | Was es bewirkt | Beispiel |
|---|---|---|
initialization | Legt den Startwert fest | i = 0 |
condition | Wann gestoppt wird | i < 10 |
increment | Ändert sich in jeder Schleife | i = i + 1 |
Einfaches Beispiel
integer i;
for (i = 0; i < 5; i = i + 1) begin
$display("i = %d", i);
endAusgabe:
i = 0
i = 1
i = 2
i = 3
i = 4Die Schleife wird 5-mal durchlaufen (i = 0, 1, 2, 3, 4).
For-Schleifen in Testbenches
For-Schleifen werden häufig verwendet, um alle Eingangskombinationen zu testen:
integer test_value;
for (test_value = 0; test_value < 16; test_value = test_value + 1) begin
$display("test_value = %d", test_value);
endDamit werden alle 16 möglichen Werte eines 4-Bit-Signals getestet.
For-Schleife mit Arrays
reg [7:0] memory [0:9];
integer i;
initial begin
for (i = 0; i < 10; i = i + 1) begin
memory[i] = i * 8;
end
endDadurch werden 10 Speicherplätze initialisiert.
Wichtige Regeln
| Regel | Erklärung |
|---|---|
Die Schleifenvariable muss integer oder reg sein | Sie darf nicht wire sein |
Verwende begin/end für mehrere Anweisungen | Bei mehr als einer Zeile erforderlich |
| Vermeide Endlosschleifen | Stelle sicher, dass die Bedingung schließlich falsch wird |
| Verwende konstante Grenzen in synthetisierbarem Code | Die Synthese entrollt die Schleife und erstellt für jede Iteration eine Kopie der Logik |
Aufgabe
Was zu tun ist:
Füge die fehlende for-Schleife hinzu, um die Zahlen von 0 bis 3 auszugeben.
Probier es selbst
module for_challenge;
integer i;
initial begin
$display("Printing 0 to 3:");
// TODO: for-Schleife hinzufügen
// i = 0 initialisieren
// Schleife ausführen, solange i < 4
// i = i + 1 ausführen
// Innerhalb der Schleife mit $display("i = %d", i); ausgeben
$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. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – einfache MathematikBitweise Operatoren7Zuweisungen und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-GrundelementeUND-, ODER- und NICHT-GatterXOR- und XNOR-GatterRückblick – Logikgatter-Schaltung10Entscheidungsfindung
If-AnweisungIf – ElseRückblick – Einfacher KomparatorCase-AnweisungCasex und CasezRückblick – ALU-Entwurf13Zeitsteuerung und Verzögerungen
Was sind Verzögerungen?GatterverzögerungenZuweisungsverzögerungenTimescale-DirektiveTakterzeugungZusammenfassung – Zeitsteuerung2Datentypen
Wire-TypReg-TypInteger und RealVektorenArraysParameterZusammenfassung – Signale deklarieren5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenSchiebeoperatorenVerkettungsoperatorBedingter OperatorRückblick – Operatoren-Herausforderung11Schleifen
For-SchleifeWhile-SchleifeWiederholungsschleifeEndlosschleifeAnweisung deaktivierenRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit fester BreiteZahlen ohne feste BreiteNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturInput- und Output-PortsInout-PortsModulinstanziierungPortzuordnung nach NamenPortzuordnung nach ReihenfolgeRückblick – Ein Modul erstellenÜbe selbstständig: Online-Verilog-Compiler