Progettazione di un decoder
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 85 di 90.
Sfida
Un decoder prende in ingresso un numero binario e attiva esattamente un’uscita in base a quel numero. L’uscita che si attiva è chiamata "one-hot" perché solo un bit è attivo (1) e tutti gli altri sono inattivi (0).
Tabella della verità (decoder da 2 a 4)
| Ingresso (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 |
Interfaccia del modulo
| Porta | Direzione | Larghezza | Descrizione |
|---|---|---|---|
in | ingresso | 2 bit | Ingresso binario (da 0 a 3) |
out0 | uscita | 1 bit | Attiva quando in = 00 |
out1 | uscita | 1 bit | Attiva quando in = 01 |
out2 | uscita | 1 bit | Attiva quando in = 10 |
out3 | uscita | 1 bit | Attiva quando in = 11 |
Il tuo compito è completare il modulo qui sotto usando un’istruzione case.
Cosa fare:
- Quando
in = 2'b00,out0 = 1, tutti gli altri 0 - Quando
in = 2'b01,out1 = 1, tutti gli altri 0 - Quando
in = 2'b10,out2 = 1, tutti gli altri 0 - Quando
in = 2'b11,out3 = 1, tutti gli altri 0
Provalo tu
module decoder (
input [1:0] in,
output reg out0,
output reg out1,
output reg out2,
output reg out3
);
// TODO: Aggiungi un blocco always @(*) con case (in)
// 2'b00: out0=1, gli altri 0
// 2'b01: out1=1, gli altri 0
// 2'b10: out2=1, gli altri 0
// 2'b11: out3=1, gli altri 0
endmoduleTutte le lezioni di Fondamenti
1Introduzione
Cos'è VerilogHardware e software a confrontoIl tuo primo moduloCommentiLivelli di astrazione della progettazione4Operatori - Parte 1
Operatori aritmeticiOperatore moduloOperatori di confrontoRiepilogo - Matematica sempliceOperatori bitwise7Assegnazioni e porte
Assegnazione continuaAssegnazioni con operatoriPrimitive di porte integratePorte AND, OR e NOTPorte XOR e XNORRiepilogo: circuito con porte logiche10Decisioni
Istruzione ifIf-ElseRiepilogo - Comparatore sempliceIstruzione caseCasex e casezRiepilogo - Progettazione di una ALU5Operatori Parte 2
Operatori logiciOperatori di riduzioneOperatori di scorrimentoOperatore di concatenazioneOperatore condizionaleRiepilogo - Sfida sugli operatori3Sistema numerico
Rappresentazione binariaNumeri con dimensione specificataNumeri senza dimensione specificataNumeri negativiValori speciali X e ZRiepilogo - Formati numerici6Moduli
Struttura di un moduloPorte di input e outputPorte InoutIstanziazione di un moduloMappatura delle porte per nomeMappatura delle porte per ordineRiepilogo - Costruire un modulo9Blocchi procedurali
Blocco alwaysBlocco initialLista di sensibilitàAssegnazione bloccanteAssegnazione non bloccanteRiepilogo: always vs initial12Progetto Multiplexer
Progettazione di un mux da 2 a 1Progettazione di un mux da 4 a 1Esercitati da solo: Compilatore Verilog online