Wbudowane prymitywy bramek
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 39 z 90.
Verilog ma wbudowane prymitywy bramek, które pozwalają opisywać układy logiczne za pomocą rzeczywistych symboli bramek. Nazywa się to modelowaniem strukturalnym. Budujesz układy, łącząc bramki, tak jak przy rysowaniu schematu.
Prymitywy bramek to predefiniowane słowa kluczowe, które modelują podstawowe bramki logiczne. Zamiast pisać wyrażenie takie jak assign out = a & b, tworzysz instancję bramki:
and(out, a, b); // Bramka AND z wyjściem out i wejściami a oraz bSkładnia ogólna
gate_type (output, input1, input2, ...);- Pierwszy argument to zawsze wyjście
- Kolejne argumenty to wejścia (1 lub więcej, w zależności od bramki)
Dostępne bramki logiczne
| Typ bramki | Słowo kluczowe | Liczba wejść |
|---|---|---|
| AND | and | 2 lub więcej |
| OR | or | 2 lub więcej |
| NOT | not | 1 |
| NAND | nand | 2 lub więcej |
| NOR | nor | 2 lub więcej |
| XOR | xor | 2 lub więcej |
| XNOR | xnor | 2 lub więcej |
Jak działają bramki logiczne
Gdy napiszesz and(out, a, b), Verilog tworzy bramkę AND, która nieustannie ustawia out na wynik działania a & b. Gdy zmieni się a lub b, wartość out aktualizuje się natychmiast, tak jak w prawdziwej bramce.
Primitives bramek a przypisanie ciągłe
Obie metody tworzą ten sam układ sprzętowy:
// Prymityw bramki logicznej
and(out, a, b);
// Przypisanie ciągłe (ten sam wynik)
assign out = a & b;Podstawowe bramki przydają się, gdy chcesz opisać obwód jako zestaw bramek (styl strukturalny). Przypisanie ciągłe lepiej sprawdza się w stylu behawioralnym (wyrażenia).
Wyzwanie
Co zrobić:
- Dodaj właściwą bramkę logiczną, aby ten układ działał. Moduł powinien zwracać iloczyn logiczny wejść
aib. Port wyjściowy ma już nazwęc.
Spróbuj swoich sił
module gate_challenge (
input a,
input b,
output c
);
// TODO: Dodaj właściwy prymityw bramki
// Wyjście c powinno być wynikiem operacji AND na a i b
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