Wiederholungsschleife
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 60 von 90.
Die repeat-Schleife führt einen Codeblock eine feste Anzahl von Malen aus. Anders als die for-Schleife verwendet sie keine Schleifenzählervariable.
Eine repeat-Schleife wird eine festgelegte Anzahl von Malen ausgeführt. Du gibst ihr eine Konstante oder einen Ausdruck, der bestimmt, wie viele Iterationen ausgeführt werden sollen.
Syntax:
repeat (number) begin
// Code zum Wiederholen
endEinfaches Beispiel
repeat (5) begin
$display("Hello");
endAusgabe:
Hello
Hello
Hello
Hello
HelloDie Nachricht 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? | Indexwert erforderlich | Nur Wiederholung erforderlich |
| 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
endDies erzeugt 20 Taktflanken (10 vollständige Zyklen).
Wichtige Regeln
| Regel | Erklärung |
|---|---|
| Zahl muss nichtnegativ sein | Kann nicht eine negative Anzahl von Malen wiederholen |
| Konstante oder Ausdruck kann verwendet werden | repeat (10) oder repeat (count) |
| Keine Schleifenvariable verfügbar | Die Anzahl der Iteration kann nicht verfolgt werden |
Verwende begin/end für mehrere Anweisungen | Für mehr als eine Zeile erforderlich |
Aufgabe
Aufgabe:
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
// Innen "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