Menu
Coddy logo textTech

Progettazione di un mux da 4 a 1

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 65 di 90.

challenge icon

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à

sel1sel0out
00out = in0
01out = in1
10out = in2
11out = 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:

  1. Crea un modulo chiamato mux4to1
  2. Aggiungi l'ingresso in0 (1 bit)
  3. Aggiungi l'ingresso in1 (1 bit)
  4. Aggiungi l'ingresso in2 (1 bit)
  5. Aggiungi l'ingresso in3 (1 bit)
  6. Aggiungi l'ingresso sel (2 bit)
  7. Aggiungi l'uscita out (1 bit, di tipo reg)
  8. Aggiungi un blocco always @(*)
  9. Al suo interno, aggiungi un'istruzione if-else che controlla sel:
    • Se sel == 2'b00, imposta out = in0
    • Altrimenti, se sel == 2'b01, imposta out = in1
    • Altrimenti, se sel == 2'b10, imposta out = in2
    • Altrimenti, imposta out = in3
  10. 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: Endmodule

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online