Instrukcja wyłączania
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 62 z 90.
Instrukcja disable zatrzymuje wykonywanie nazwanego bloku (takiego jak pętla forever, blok begin-end lub zadanie). Przydaje się do wychodzenia z pętli, które w przeciwnym razie działałyby bez końca.
Składnia:
disable block_name;Blok musi być oznaczony nazwą.
Wyłączanie za pomocą pętli forever
initial begin : counter // counter nadaje blokowi nazwę counter.
forever begin
#10 count = count + 1;
if (count == 5) begin
disable counter; // disable counter zatrzymuje cały blok o nazwie counter.
end
end
endPętla forever znajduje się wewnątrz nazwanego bloku counter. Instrukcja disable counter jest umieszczona wewnątrz pętli. Gdy count osiągnie 5, instrukcja disable counter zostanie wykonana i zatrzyma cały blok counter, co natychmiast zatrzyma również pętlę forever.
Wyłącz w osobnym bloku
initial begin : counter
forever begin
#10 count = count + 1;
end
end
initial begin
#50;
disable counter; // Zatrzymuje blok counter z zewnątrz
endTut pętla forever działa nieprzerwanie wewnątrz bloku o nazwie counter. Instrukcja disable counter znajduje się w osobnym bloku initial. Po 50 jednostkach czasu instrukcja disable counter zostaje wykonana i zatrzymuje blok counter, co z zewnątrz kończy pętlę forever.
Ważne zasady
| Zasada | Wyjaśnienie |
|---|---|
| Blok musi mieć nazwę | begin : block_name |
| Disable natychmiast zatrzymuje wykonywanie | Kod zatrzymuje się w tym momencie |
| Można go użyć z dowolnego miejsca | Z dowolnego bloku w module |
Przydatne do zatrzymywania pętli forever | W przeciwnym razie nigdy się nie zatrzymają |
Wyzwanie
Otrzymujesz moduł z licznikiem, który działa bez końca.
Co zrobić:
Uzupełnij pusty blok, zastępując każdy komentarz odpowiednim kodem:
- Dodaj
#50;, aby odczekać 50 jednostek czasu - Dodaj
disable counter;, aby zatrzymać blok licznika - Dodaj
$display("Counter stopped");, aby wyświetlić komunikat - Dodaj
$finish;, aby zakończyć symulację
Spróbuj swoich sił
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
// Krok 1: Poczekaj 50 jednostek czasu
// Krok 2: Wyłącz blok counter
// Krok 3: Wyświetl "Counter stopped"
// Krok 4: Zakończ symulację
end
join
end
endmoduleTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
1Wprowadzenie
Czym jest VerilogSprzęt a oprogramowanieTwój pierwszy modułKomentarzePoziomy abstrakcji projektu4Operatory, część 1
Operatory arytmetyczneOperator moduloOperatory porównaniaPowtórka — prosta matematykaOperatory bitowe7Przypisania i bramki
Przypisanie ciągłePrzypisanie z operatoramiWbudowane prymitywy bramekBramki AND, OR i NOTBramki XOR i XNORPodsumowanie — układ z bramek logicznych10Podejmowanie decyzji
Instrukcja ifIf-elsePowtórka – prosty komparatorInstrukcja caseCaseX i CaseZPowtórka – projektowanie ALU13Odmierzanie czasu i opóźnienia
Czym są opóźnieniaOpóźnienia bramekOpóźnienia przypisańDyrektywa timescaleGenerowanie zegaraPodsumowanie — kontrola czasu2Typy danych
Typ WireTyp RegLiczby całkowite i rzeczywisteWektoryTabliceParametryPowtórka — deklarowanie sygnałów5Operatory — część 2
Operatory logiczneOperatory redukcjiOperatory przesunięciaOperator konkatenacjiOperator warunkowyPowtórzenie — wyzwanie z operatorami11Pętle
Pętla forPętla whilePętla repeatPętla nieskończonaInstrukcja wyłączaniaPowtórka — wzorce pętli3System liczbowy
Reprezentacja binarnaLiczby o określonej szerokościLiczby o nieokreślonej szerokościLiczby ujemneWartości specjalne X i ZPodsumowanie — formaty liczb6Moduły
Struktura modułuPorty wejściowe i wyjściowePorty dwukierunkoweInstancjonowanie modułuMapowanie portów według nazwMapowanie portów według kolejnościPodsumowanie — zbuduj moduł9Bloki proceduralne
Blok alwaysBlok initialLista czułościPrzypisanie blokującePrzypisanie nieblokującePodsumowanie — always a initial12Projekt multipleksera
Projekt multipleksera 2 do 1Projekt multipleksera 4 do 115Sterownik sygnalizacji świetlnej
Definiowanie stanówLogika maszyny stanówPoćwicz samodzielnie: Kompilator Verilog online