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| Teil | Was es tut | Beispiel |
|---|---|---|
initialization | Legt den Startwert fest | i = 0 |
condition | Legt fest, wann gestoppt wird | i < 10 |
increment | Wird in jeder loop geändert | 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 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);
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
endDies initialisiert 10 Speicherstellen.
Wichtige Regeln
| Regel | Erklärung |
|---|---|
Die Loop-Variable muss integer oder reg sein | Darf nicht wire sein |
Verwende begin/end für mehrere Anweisungen | Für mehr als eine Zeile erforderlich |
| Vermeide Endlosschleifen | Stelle sicher, dass condition schließlich false wird |
| Am besten in Testbenches verwenden | Die meisten Loops sind nicht synthetisierbar |
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
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 Designs4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicÜbe selbstständig: Online-Verilog-Compiler