Projektowanie dekodera
Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 85 z 90.
Wyzwanie
Dekoder przyjmuje na wejściu liczbę binarną i włącza dokładnie jedno wyjście na podstawie tej liczby. Włączone wyjście nazywa się „one-hot”, ponieważ tylko jeden bit jest aktywny (1), a wszystkie pozostałe są nieaktywne (0).
Tablica prawdy (dekoder 2-do-4)
| Wejście (in) | out0 | out1 | out2 | out3 |
|---|---|---|---|---|
| 00 | 1 | 0 | 0 | 0 |
| 01 | 0 | 1 | 0 | 0 |
| 10 | 0 | 0 | 1 | 0 |
| 11 | 0 | 0 | 0 | 1 |
Interfejs modułu
| Port | Kierunek | Szerokość | Opis |
|---|---|---|---|
in | wejście | 2 bity | Wejście binarne (od 0 do 3) |
out0 | wyjście | 1 bit | Aktywne, gdy in = 00 |
out1 | wyjście | 1 bit | Aktywne, gdy in = 01 |
out2 | wyjście | 1 bit | Aktywne, gdy in = 10 |
out3 | wyjście | 1 bit | Aktywne, gdy in = 11 |
Twoim zadaniem jest uzupełnienie poniższego modułu za pomocą instrukcji case.
Co należy zrobić:
- Gdy
in = 2'b00,out0 = 1, wszystkie pozostałe 0 - Gdy
in = 2'b01,out1 = 1, wszystkie pozostałe 0 - Gdy
in = 2'b10,out2 = 1, wszystkie pozostałe 0 - Gdy
in = 2'b11,out3 = 1, wszystkie pozostałe 0
Spróbuj swoich sił
module decoder (
input [1:0] in,
output reg out0,
output reg out1,
output reg out2,
output reg out3
);
// TODO: Dodaj blok always @(*) z case (in)
// 2'b00: out0=1, pozostałe 0
// 2'b01: out1=1, pozostałe 0
// 2'b10: out2=1, pozostałe 0
// 2'b11: out3=1, pozostałe 0
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