Progettazione di un mux da 4 a 1
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 65 di 90.
Sfida
Multiplexer 4 a 1
Il multiplexer 4 a 1 ha quattro ingressi dati (in0, in1, in2, in3), due bit di selezione (sel[1:0]) e un'uscita (out). I due bit di selezione scelgono quale ingresso viene inviato all'uscita:
- Quando
sel = 2'b00, l'uscita èin0 - Quando
sel = 2'b01, l'uscita èin1 - Quando
sel = 2'b10, l'uscita èin2 - Quando
sel = 2'b11, l'uscita èin3
Realizzerai questo multiplexer in due modi: prima usando istruzioni if-else, poi, nella prossima lezione, usando un'istruzione case. Entrambi i metodi funzionano, ma case è spesso più chiaro quando ci sono molte possibilità.
Un multiplexer 4 a 1 seleziona uno dei quattro ingressi e lo invia all'uscita in base a un segnale di selezione a 2 bit.
Tabella della verità
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = in3 |
Quando sel è 00, l'uscita segue in0. Quando sel è 01, l'uscita segue in1. Quando sel è 10, l'uscita segue in2. Quando sel è 11, l'uscita segue in3.
Cosa fare:
- Crea un modulo chiamato
mux4to1 - Aggiungi l'ingresso
in0(1 bit) - Aggiungi l'ingresso
in1(1 bit) - Aggiungi l'ingresso
in2(1 bit) - Aggiungi l'ingresso
in3(1 bit) - Aggiungi l'ingresso
sel(2 bit) - Aggiungi l'uscita
out(1 bit, di tiporeg) - Aggiungi un blocco
always @(*) - Al suo interno, aggiungi un'istruzione
if-elseche controllasel:- Se
sel == 2'b00, impostaout = in0 - Altrimenti, se
sel == 2'b01, impostaout = in1 - Altrimenti, se
sel == 2'b10, impostaout = in2 - Altrimenti, imposta
out = in3
- Se
- Chiudi con
endmodule
Provalo tu
// Passo 1: crea un modulo chiamato mux4to1
// Passo 2: aggiungi l'ingresso in0
// Passo 3: aggiungi l'ingresso in1
// Passo 4: aggiungi l'ingresso in2
// Passo 5: aggiungi l'ingresso in3
// Passo 6: aggiungi l'ingresso sel (2 bit)
// Passo 7: aggiungi l'uscita out (di tipo reg)
// Passo 8: aggiungi un blocco always @(*)
// Passo 9: aggiungi un'istruzione if-else
// if sel == 2'b00, out = in0
// else if sel == 2'b01, out = in1
// else if sel == 2'b10, out = in2
// else, out = in3
// Passaggio 10: 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