Projekt multipleksera 4 do 1
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 65 z 90.
Wyzwanie
Multiplekser 4-do-1
Multiplekser 4-do-1 ma cztery wejścia danych (in0, in1, in2, in3), dwa bity wyboru (sel[1:0]) i jedno wyjście (out). Dwa bity wyboru określają, które wejście zostanie przekazane na wyjście:
- Gdy
sel = 2'b00, wyjściem jestin0 - Gdy
sel = 2'b01, wyjściem jestin1 - Gdy
sel = 2'b10, wyjściem jestin2 - Gdy
sel = 2'b11, wyjściem jestin3
Zbudujesz ten multiplekser na dwa sposoby: najpierw za pomocą instrukcji if-else, a następnie, w kolejnej lekcji, za pomocą instrukcji case. Obie metody działają, ale case jest często czytelniejsza, gdy masz wiele możliwości do wyboru.
Multiplekser 4-do-1 wybiera jedno z czterech wejść i przekazuje je na wyjście na podstawie 2-bitowego sygnału wyboru.
Tablica prawdy
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
Gdy sel ma wartość 00, wyjście przyjmuje wartość in0. Gdy sel ma wartość 01, wyjście przyjmuje wartość in1. Gdy sel ma wartość 10, wyjście przyjmuje wartość in2. Gdy sel ma wartość 11, wyjście przyjmuje wartość in3.
Co należy zrobić:
- Utwórz moduł o nazwie
mux4to1 - Dodaj wejście
in0(1 bit) - Dodaj wejście
in1(1 bit) - Dodaj wejście
in2(1 bit) - Dodaj wejście
in3(1 bit) - Dodaj wejście
sel(2 bity) - Dodaj wyjście
out(1 bit, typreg) - Dodaj blok
always @(*) - Wewnątrz dodaj instrukcję
if-elsesprawdzającąsel:- Jeśli
sel == 2'b00, ustawout = in0 - W przeciwnym razie, jeśli
sel == 2'b01, ustawout = in1 - W przeciwnym razie, jeśli
sel == 2'b10, ustawout = in2 - W przeciwnym razie ustaw
out = in3
- Jeśli
- Zamknij moduł za pomocą
endmodule
Spróbuj swoich sił
// Krok 1: Utwórz moduł o nazwie mux4to1
// Krok 2: Dodaj wejście in0
// Krok 3: Dodaj wejście in1
// Krok 4: Dodaj wejście in2
// Krok 5: Dodaj wejście in3
// Krok 6: Dodaj wejście sel (2 bity)
// Krok 7: Dodaj wyjście out (typu reg)
// Krok 8: Dodaj blok always @(*)
// Krok 9: Dodaj instrukcję if-else
// jeśli sel == 2'b00, out = in0
// w przeciwnym razie, jeśli sel == 2'b01, out = in1
// w przeciwnym razie, jeśli sel == 2'b10, out = in2
// w przeciwnym razie out = in3
// Krok 10: 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