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 Auswahlbits (sel[1:0]) und einen Ausgang (out). Die zwei Auswahlbits bestimmen, 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-Auswahlsignal 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 Modul namens mux4to1
  2. Fügen Sie den Eingang in0 (1 Bit) hinzu
  3. Fügen Sie den Eingang in1 (1 Bit) hinzu
  4. Fügen Sie den Eingang in2 (1 Bit) hinzu
  5. Fügen Sie den Eingang in3 (1 Bit) hinzu
  6. Fügen Sie den Eingang sel (2 Bits) hinzu
  7. Fügen Sie den Ausgang out (1 Bit, Typ reg) hinzu
  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
    • Ansonsten, wenn sel == 2'b01, setzen Sie out = in1
    • Ansonsten, wenn sel == 2'b10, setzen Sie out = in2
    • Ansonsten setzen Sie out = in3
  10. Schließen Sie mit endmodule ab

Probier es selbst

// Schritt 1: Erstelle ein Modul namens mux4to1


  // Schritt 2: Eingang in0 hinzufügen
  
  // Schritt 3: Eingang in1 hinzufügen
  
  // Schritt 4: Eingang in2 hinzufügen
  
  // Schritt 5: Eingang in3 hinzufügen
  
  // Schritt 6: Eingang sel hinzufügen (2 Bits)
  
  // Schritt 7: Ausgang out hinzufügen (Typ reg)
  

  // Schritt 8: always @(*) Block hinzufügen
  

    // Schritt 9: if-else-Anweisung hinzufügen
    // falls sel == 2'b00, out = in0
    // sonst falls sel == 2'b01, out = in1
    // sonst falls sel == 2'b10, out = in2
    // sonst, out = in3
    

// Schritt 10: Endmodule

Alle Lektionen in Grundlagen