Anweisung deaktivieren
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 62 von 90.
Die Anweisung disable stoppt die Ausführung eines benannten Blocks (wie einer forever-Schleife, eines begin-end-Blocks oder einer Aufgabe). Sie ist nützlich, um Schleifen abzubrechen, die andernfalls für immer laufen würden.
Syntax:
disable block_name;Der Block muss mit einem Namen gekennzeichnet sein.
Mit einer Endlosschleife deaktivieren
initial begin : counter // counter gibt dem Block den Namen counter.
forever begin
#10 count = count + 1;
if (count == 5) begin
disable counter; // disable counter stoppt den gesamten benannten Block.
end
end
endDie forever-Schleife befindet sich in einem benannten Block counter. Die Anweisung disable counter steht innerhalb der Schleife. Wenn count 5 erreicht, wird disable counter ausgeführt und stoppt den gesamten Block counter, wodurch auch die forever-Schleife sofort beendet wird.
In einem separaten Block deaktivieren
initial begin : counter
forever begin
#10 count = count + 1;
end
end
initial begin
#50;
disable counter; // Stoppt den counter-Block von außen
endHier läuft die forever-Schleife kontinuierlich innerhalb des benannten Blocks counter. Die Anweisung disable counter befindet sich in einem separaten initial-Block. Nach 50 Zeiteinheiten wird disable counter ausgeführt und stoppt den counter-Block, wodurch die forever-Schleife von außen beendet wird.
Wichtige Regeln
| Regel | Erklärung |
|---|---|
| Der Block muss benannt werden | begin : block_name |
| Disable beendet die Ausführung sofort | Der Code stoppt in diesem Moment |
| Kann von überall aus verwendet werden | Von jedem Block im Modul aus |
Nützlich zum Stoppen von forever-Schleifen | Andernfalls hören sie nie auf |
Aufgabe
Dir wird ein Modul mit einem Zähler gegeben, der für immer läuft.
Aufgabe:
Vervollständige den leeren Block, indem du jeden Kommentar durch den passenden Code ersetzt:
- Füge
#50;hinzu, um 50 Zeiteinheiten zu warten - Füge
disable counter;hinzu, um den Zählerblock anzuhalten - Füge
$display("Counter stopped");hinzu, um die Meldung auszugeben - Füge
$finish;hinzu, um die Simulation zu beenden
Probier es selbst
module disable_challenge;
integer count;
initial begin
count = 0;
fork
begin : counter
forever begin
#10 count = count + 1;
$display("count = %d", count);
end
end
begin
// Schritt 1: Warte 50 Zeiteinheiten
// Schritt 2: Deaktiviere den Zählerblock
// Schritt 3: Gib "Counter stopped" aus
// Schritt 4: Beende die Simulation
end
join
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