Menu
Coddy logo textTech

4-zu-1-Mux-Design

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 65 von 90.

challenge icon

Aufgabe

4-zu-1-Multiplexer

Der 4-zu-1-Multiplexer hat vier Dateneingänge (in0, in1, in2, in3), zwei Select-Bits (sel[1:0]) und einen Ausgang (out). Die zwei Select-Bits wählen aus, welcher Eingang an den Ausgang weitergeleitet wird:

  • Wenn sel = 2'b00, ist der Ausgang in0
  • Wenn sel = 2'b01, ist der Ausgang in1
  • Wenn sel = 2'b10, ist der Ausgang in2
  • Wenn sel = 2'b11, ist der Ausgang in3

Sie werden diesen Multiplexer auf zwei Arten bauen: zuerst mit if-else-Anweisungen, dann in der nächsten Lektion mit einer case-Anweisung. Beide Methoden funktionieren, aber case ist oft übersichtlicher, wenn Sie viele Auswahlmöglichkeiten haben.

Ein 4-zu-1-Multiplexer wählt einen von vier Eingängen aus und leitet ihn basierend auf einem 2-Bit-Select-Signal an den Ausgang weiter.

Wahrheitstabelle

sel1sel0out
00out = in0
01out = in1
10out = in2
11out = in3

Wenn sel den Wert 00 hat, folgt der Ausgang in0. Wenn sel den Wert 01 hat, folgt der Ausgang in1. Wenn sel den Wert 10 hat, folgt der Ausgang in2. Wenn sel den Wert 11 hat, folgt der Ausgang in3.

Was zu tun ist:

  1. Erstellen Sie ein Module named mux4to1
  2. Fügen Sie den Input in0 hinzu (1 Bit)
  3. Fügen Sie den Input in1 hinzu (1 Bit)
  4. Fügen Sie den Input in2 hinzu (1 Bit)
  5. Fügen Sie den Input in3 hinzu (1 Bit)
  6. Fügen Sie den Input sel hinzu (2 bits)
  7. Fügen Sie den Output out hinzu (1 Bit, type reg)
  8. Fügen Sie einen always @(*)-Block hinzu
  9. Fügen Sie darin eine if-else-Anweisung ein, die sel prüft:
    • Wenn sel == 2'b00, setzen Sie out = in0
    • Else if sel == 2'b01, setzen Sie out = in1
    • Else if sel == 2'b10, setzen Sie out = in2
    • Else, setzen Sie out = in3
  10. Schließen Sie mit endmodule ab

Probier es selbst

// Schritt 1: Erstelle Modul namens mux4to1


  // Schritt 2: Füge Eingang in0 hinzu
  
  // Schritt 3: Füge Eingang in1 hinzu
  
  // Schritt 4: Füge Eingang in2 hinzu
  
  // Schritt 5: Füge Eingang in3 hinzu
  
  // Schritt 6: Füge Eingang sel (2 Bits) hinzu
  
  // Schritt 7: Füge Ausgang out (reg-Typ) hinzu
  

  // Schritt 8: Füge always @(*)-Block hinzu
  

    // Schritt 9: Füge if-else-Anweisung hinzu
    // if sel == 2'b00, out = in0
    // else if sel == 2'b01, out = in1
    // else if sel == 2'b10, out = in2
    // else, out = in3
    

// Schritt 10: Endmodule

Alle Lektionen in Grundlagen