Menu
CoddyTech

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
TeilWas es bewirktBeispiel
initializationLegt den Startwert festi = 0
conditionWann gestoppt wirdi < 10
incrementÄndert sich in jeder Schleifei = i + 1

Einfaches Beispiel

integer i;

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

Ausgabe:

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

Die 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);
end

Damit 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
end

Dadurch werden 10 Speicherplätze initialisiert.

Wichtige Regeln

RegelErklärung
Die Schleifenvariable muss integer oder reg  seinSie darf nicht wire sein
Verwende begin/end für mehrere AnweisungenBei mehr als einer Zeile erforderlich
Vermeide EndlosschleifenStelle sicher, dass die Bedingung schließlich falsch wird
Verwende konstante Grenzen in synthetisierbarem CodeDie Synthese entrollt die Schleife und erstellt für jede Iteration eine Kopie der Logik
challenge icon

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
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

Übe selbstständig: Online-Verilog-Compiler