Menu
Coddy logo textTech

For-Schleife

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

Schleifen in Verilog ermöglichen es Ihnen, einen Codeblock mehrmals auszuführen. Sie sind besonders nützlich in Testbenches für das Erzeugen von sich wiederholenden Testmustern, das Initialisieren von Speicher und das Iterieren über Arrays. Im Gegensatz zu Hardwarebeschreibungen, die parallel ablaufen, werden Schleifen sequenziell ausgeführt, was sie ideal für Simulationen und Tests macht.

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

Syntax:

for (initialization; condition; increment) begin
  // Zu wiederholender Code
end
TeilFunktionBeispiel
initializationSetzt den Startwerti = 0
conditionWann gestoppt werden solli < 10
incrementÄnderung bei jedem Durchlaufi = 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-Schleife in Testbenches

For-Schleifen werden häufig verwendet, um alle Eingangskombinationen zu testen:

reg [3:0] test_value;

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

Dies testet alle 16 möglichen Werte eines 4-Bit-Signals.

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
Schleifenvariable muss integer oder reg sein Kann nicht wire sein
Verwenden Sie begin/end für mehrere AnweisungenErforderlich für mehr als eine Zeile
Endlosschleifen vermeidenStellen Sie sicher, dass die Bedingung schließlich falsch wird
Am besten in Testbenches zu verwendenDie meisten Schleifen sind nicht synthetisierbar
challenge icon

Aufgabe

Was zu tun ist:

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

Spickzettel

Die for-Schleife in Verilog wiederholt einen Codeblock eine bestimmte Anzahl von Malen:

for (initialization; condition; increment) begin
  // Zu wiederholender Code
end

Beispiel für die Ausgabe von 0 bis 4:

integer i;

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

Wichtige Regeln:

  • Die Schleifenvariable muss integer oder reg sein (nicht wire)
  • Verwenden Sie begin/end für mehrere Anweisungen
  • Stellen Sie sicher, dass die Bedingung schließlich falsch wird, um Endlosschleifen zu vermeiden
  • Schleifen werden am besten in Testbenches verwendet (meistens nicht synthetisierbar)

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
    // Innerhalb der Schleife, 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