Progettazione di un mux da 2 a 1
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 64 di 90.
Sfida
Un multiplexer (MUX) è un circuito digitale che seleziona uno tra diversi ingressi e lo inoltra a una singola uscita in base a un segnale di selezione. Pensalo come un selettore di dati. Hai diversi ingressi in entrata e scegli quale inviare all’uscita.
In questo progetto realizzerai multiplexer di dimensioni diverse usando istruzioni if-else e case.
Multiplexer 2 a 1
Il multiplexer 2 a 1 è la forma più semplice. Ha due ingressi dati (in0 e in1), un ingresso di selezione (sel) e un’uscita (out). Quando sel è 0, l’uscita segue in0. Quando sel è 1, l’uscita segue in1. Lo implementerai usando un’istruzione if-else all’interno di un blocco always @(*).
Esempio: Se in0 = 0, in1 = 1 e sel = 1, allora out = 1.
Un multiplexer 2 a 1 seleziona uno di due ingressi e lo passa all’uscita in base a un segnale di selezione.
Tabella della verità
| sel | out |
|---|---|
| 0 | out = in0 |
| 1 | out = in1 |
Quando sel è 0, l’uscita segue in0. Quando sel è 1, l’uscita segue in1.
Cosa fare:
- Crea un modulo chiamato
mux2to1 - Aggiungi l’ingresso
in0(1 bit) - Aggiungi l’ingresso
in1(1 bit) - Aggiungi l’ingresso
sel(1 bit) - Aggiungi l’uscita
out(1 bit, di tiporeg) - Aggiungi un blocco
always @(*) - Al suo interno, aggiungi un’istruzione
if-else:- Se
sel == 0, impostaout = in0 - Altrimenti, imposta
out = in1
- Se
- Chiudi con
endmodule
Provalo tu
// Passaggio 1: crea un modulo chiamato mux2to1
// Passaggio 2: aggiungi l'ingresso in0
// Passaggio 3: aggiungi l'ingresso in1
// Passaggio 4: aggiungi l'ingresso sel
// Passaggio 5: aggiungi l'uscita out (di tipo reg)
// Passaggio 6: aggiungi un blocco always @(*)
// Passaggio 7: aggiungi un'istruzione if-else
// Se sel == 0, out = in0
// Altrimenti, out = in1
// Passaggio 8: 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