Opóźnienia bramek
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 68 z 90.
Na poprzedniej lekcji omówiliśmy ogólne opóźnienia używane w taki sposób: #10 a = b;. Wstrzymują one wykonanie instrukcji.
W tej lekcji omawiamy opóźnienia bramek, które dotyczą podstawowych wbudowanych bramek, takich jak and, or i not. Opóźnienie bramki modeluje czas, jaki bramka sprzętowa potrzebuje na wygenerowanie wyjścia po zmianie jej wejść.
W rzeczywistym sprzęcie bramki nie reagują natychmiast. Występuje niewielkie opóźnienie. Gdy używasz wbudowanych prymitywów bramek, możesz dodać opóźnienie, aby symulować czas propagacji sygnału przez bramkę. Wyjście zmienia się dopiero po upływie określonego opóźnienia.
Różnica między opóźnieniem ogólnym a opóźnieniem bramki
| Opóźnienie ogólne | Opóźnienie bramki | |
|---|---|---|
| Składnia | #10 a = b; | and #5 (out, a, b); |
| Pozycja | # przed instrukcją | # wewnątrz prymitywu bramki |
| Cel | Odczekanie przed wykonaniem | Modelowanie czasu propagacji bramki |
Składnia:
gate_type #(delay) (output, input1, input2, ...);#(delay) określa, ile jednostek czasu bramka potrzebuje na reakcję.
Prosty przykład
and #5 (out, a, b);Ta bramka AND potrzebuje 5 jednostek czasu, aby zmienić stan wyjścia po zmianie a lub b.
Opóźnienie bramki z wieloma wejściami
nand #8 (out, a, b, c, d); // 4-wejściowa bramka NAND z opóźnieniem wynoszącym 8 jednostek czasuWażne zasady
| Zasada | Wyjaśnienie |
|---|---|
| Opóźnienie występuje po nazwie bramki | and #5 (out, a, b) |
| Wartość opóźnienia w jednostkach czasu | Określana przez dyrektywę timescale |
| Wszystkie wejścia wpływają na wyjście | Zmiana dowolnego wejścia może zmienić wyjście, ale dopiero po upływie opóźnienia |
| Nie można syntezować | Opóźnienia bramek służą wyłącznie do symulacji |
Wyzwanie
Dodaj brakujące opóźnienia bramek do tego modułu. Użyj różnych opóźnień dla każdej bramki.
Co zrobić:
- Bramka AND: opóźnienie 5 jednostek czasu
- Bramka OR: opóźnienie 3 jednostek czasu
- Bramka NOT: opóźnienie 2 jednostek czasu
Spróbuj swoich sił
module gate_delay_challenge;
reg a, b;
wire and_out, or_out, not_out;
// TODO: Dodaj bramkę AND z opóźnieniem 5 jednostek czasu (wejścia a, b)
// TODO: Dodaj bramkę OR z opóźnieniem 3 jednostek czasu (wejścia a, b)
// TODO: Dodaj bramkę NOT z opóźnieniem 2 jednostek czasu (wejście a)
initial begin
$monitor("Time %0t: a=%b, b=%b | and=%b, or=%b, not=%b",
$time, a, b, and_out, or_out, not_out);
a = 1; b = 1;
#10 $finish;
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