Projekt multipleksera 2 do 1
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 64 z 90.
Wyzwanie
Multiplekser (MUX) to układ cyfrowy, który wybiera jedno z kilku wejść i przekazuje je na pojedyncze wyjście na podstawie sygnału wyboru. Możesz wyobrazić go sobie jako selektor danych. Masz wiele wejść, a następnie wybierasz, które z nich trafia na wyjście.
W tym projekcie zbudujesz multipleksery o różnych rozmiarach, używając instrukcji if-else i case.
Multiplekser 2 do 1
Multiplekser 2 do 1 to najprostsza postać multipleksera. Ma dwa wejścia danych (in0 i in1), jedno wejście wyboru (sel) i jedno wyjście (out). Gdy sel ma wartość 0, wyjście przyjmuje wartość in0. Gdy sel ma wartość 1, wyjście przyjmuje wartość in1. Zaimplementujesz to za pomocą instrukcji if-else wewnątrz bloku always @(*).
Przykład: Jeśli in0 = 0, in1 = 1 i sel = 1, to out = 1.
Multiplekser 2 do 1 wybiera jedno z dwóch wejść i przekazuje je na wyjście na podstawie sygnału wyboru.
Tabela prawdy
| sel | out |
|---|---|
| 0 | out = in0 |
| 1 | out = in1 |
Gdy sel ma wartość 0, wyjście przyjmuje wartość in0. Gdy sel ma wartość 1, wyjście przyjmuje wartość in1.
Co należy zrobić:
- Utwórz moduł o nazwie
mux2to1 - Dodaj wejście
in0(1 bit) - Dodaj wejście
in1(1 bit) - Dodaj wejście
sel(1 bit) - Dodaj wyjście
out(1 bit, typreg) - Dodaj blok
always @(*) - Wewnątrz dodaj instrukcję
if-else:- Jeśli
sel == 0, ustawout = in0 - W przeciwnym razie ustaw
out = in1
- Jeśli
- Zamknij za pomocą
endmodule
Spróbuj swoich sił
// Krok 1: Utwórz moduł o nazwie mux2to1
// Krok 2: Dodaj wejście in0
// Krok 3: Dodaj wejście in1
// Krok 4: Dodaj wejście sel
// Krok 5: Dodaj wyjście out (typu reg)
// Krok 6: Dodaj blok always @(*)
// Krok 7: Dodaj instrukcję if-else
// Jeśli sel == 0, out = in0
// W przeciwnym razie out = in1
// Krok 8: EndmoduleWszystkie 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