Opóźnienia bramek
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 68 z 90.
W poprzedniej lekcji omówiliśmy ogólne opóźnienia używane tak jak #10 a = b;. Wstrzymują wykonanie instrukcji.
W tej lekcji omawiamy opóźnienia bramek, które dotyczą wbudowanych prymitywów bramek, takich jak and, or i not. Opóźnienie bramki modeluje czas, jakiego 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. Korzystając z wbudowanych prymitywów bramek, możesz dodać opóźnienie, aby symulować czas propagacji bramki. Wyjście zmienia się dopiero po upływie określonego opóźnienia.
Różnica między ogólnym opóźnieniem a opóźnieniem bramki
| Ogólne opóźnienie | 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 potrzebuje bramka, aby zareagować.
Prosty przykład
and #5 (out, a, b);Ta bramka AND potrzebuje 5 jednostek czasu, aby zmienić swoje wyjście 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 8 jednostek czasuWażne zasady
| Zasada | Wyjaśnienie |
|---|---|
| Opóźnienie podaje się po nazwie bramki | and #5 (out, a, b) |
| Wartość opóźnienia w jednostkach czasu | Zgodnie z dyrektywą timescale |
| Wszystkie wejścia wpływają na wyjście | Każda zmiana wejścia wyzwala opóźnienie |
| Nie nadaje się do syntezy | Opóźnienia bramek służą tylko 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