Wiederholungsschleife
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 60 von 90.
Die repeat-Schleife führt einen Codeblock eine festgelegte Anzahl von Malen aus. Anders als die for-Schleife verwendet sie keine Zählervariable.
Eine repeat-Schleife wird eine festgelegte Anzahl von Malen ausgeführt. Du gibst ihr eine Konstante oder einen Ausdruck, der bestimmt, wie viele Durchläufe ausgeführt werden.
Syntax:
repeat (number) begin
// Code to repeat
endEinfaches Beispiel
repeat (5) begin
$display("Hello");
endAusgabe:
Hello
Hello
Hello
Hello
HelloDie Meldung wird genau 5-mal ausgegeben.
Mit einem Ausdruck wiederholen
integer count = 3;
repeat (count) begin
$display("Looping");
endAusgabe:
Looping
Looping
LoopingRepeat-Schleife vs. For-Schleife
| For-Schleife | Repeat-Schleife | |
|---|---|---|
| Zählervariable | Ja (explizit) | Nein |
| Wann verwenden? | Wenn ein Indexwert benötigt wird | Wenn nur eine Wiederholung benötigt wird |
| Beispiel | for (i=0; i<5; i=i+1) | repeat (5) |
Mehrere Taktzyklen erzeugen
initial begin
clk = 0;
repeat (20) begin
#5 clk = ~clk;
end
endDadurch werden 20 Taktflanken (10 vollständige Zyklen) erzeugt.
Wichtige Regeln
| Regel | Erklärung |
|---|---|
| Bei einer Anzahl von 0 oder weniger wird der Schleifenrumpf übersprungen | repeat (-5) wird kompiliert und nullmal ausgeführt |
| Es kann eine Konstante oder ein Ausdruck verwendet werden | repeat (10) oder repeat (count) |
| Es ist keine Schleifenvariable verfügbar | Die Nummer der Iteration kann nicht nachverfolgt werden |
Verwende begin/end für mehrere Anweisungen | Bei mehr als einer Zeile erforderlich |
Aufgabe
Was zu tun ist:
Füge die fehlende repeat-Schleife hinzu, um "Verilog" 4-mal auszugeben.
Probier es selbst
module repeat_challenge;
initial begin
$display("Printing 4 times:");
// TODO: repeat-Schleife hinzufügen
// 4-mal wiederholen
// Innerhalb der Schleife "Verilog" 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