Menu
Coddy logo textTech

For Loop

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

Schleifen in Verilog ermöglichen es dir, einen Codeblock mehrmals auszuführen. Sie sind besonders nützlich in Testbenches zum Erzeugen sich wiederholender Testmuster, zum Initialisieren von Speicher und zum Durchlaufen von Arrays. Im Gegensatz zu Hardwarebeschreibungen, die parallel ausgeführt werden, werden Schleifen sequenziell ausgeführt, wodurch sie sich ideal für Simulationen und Tests eignen.

Die am häufigsten verwendete Schleife ist die <strong>for</strong> loop, die eine bestimmte Anzahl von Malen wiederholt wird. Eine for-loop führt einen Codeblock wiederholt aus, wobei sich eine loop-Variable bei jeder Iteration ändert. Du bestimmst genau, wie oft sie ausgeführt wird.

Syntax:

for (initialization; condition; increment) begin
  // Code zum Wiederholen
end
TeilWas es tutBeispiel
initializationLegt den Startwert festi = 0
conditionLegt fest, wann gestoppt wirdi < 10
incrementWird in jeder loop geänderti = 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 ausgeführt (i = 0, 1, 2, 3, 4).

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

Dies initialisiert 10 Speicherstellen.

Wichtige Regeln

RegelErklärung
Die Loop-Variable muss integer oder reg seinDarf nicht wire sein
Verwende begin/end für mehrere AnweisungenFür mehr als eine Zeile erforderlich
Vermeide EndlosschleifenStelle sicher, dass condition schließlich false wird
Am besten in Testbenches verwendenDie meisten Loops sind nicht synthetisierbar
challenge icon

Aufgabe

Was zu tun ist:

Füge die fehlende for-loop hinzu, um 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
    // Initialisiere i = 0
    // Schleife solange i < 4
    // Inkrementiere i = i + 1
    // Darin ausgeben mit: $display("i = %d", i);
    
    $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