4-zu-1-Mux-Design
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 65 von 90.
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 Ausgangin0 - Wenn
sel = 2'b01, ist der Ausgangin1 - Wenn
sel = 2'b10, ist der Ausgangin2 - Wenn
sel = 2'b11, ist der Ausgangin3
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
| sel1 | sel0 | out |
|---|---|---|
| 0 | 0 | out = in0 |
| 0 | 1 | out = in1 |
| 1 | 0 | out = in2 |
| 1 | 1 | out = 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:
- Erstellen Sie ein Module named
mux4to1 - Fügen Sie den Input
in0hinzu (1 Bit) - Fügen Sie den Input
in1hinzu (1 Bit) - Fügen Sie den Input
in2hinzu (1 Bit) - Fügen Sie den Input
in3hinzu (1 Bit) - Fügen Sie den Input
selhinzu (2 bits) - Fügen Sie den Output
outhinzu (1 Bit, typereg) - Fügen Sie einen
always @(*)-Block hinzu - Fügen Sie darin eine
if-else-Anweisung ein, dieselprüft:- Wenn
sel == 2'b00, setzen Sieout = in0 - Else if
sel == 2'b01, setzen Sieout = in1 - Else if
sel == 2'b10, setzen Sieout = in2 - Else, setzen Sie
out = in3
- Wenn
- Schließen Sie mit
endmoduleab
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: EndmoduleAlle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareAbstraktionsebenen im DesignDein erstes ModulKommentare4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – Einfache MathematikBitweise Operatoren7Zuweisung und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-PrimitiveAND OR NOT GatterXOR XNOR GatterZusammenfassung - Logikgatterschaltung10Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher KomparatorCase-AnweisungCasex und CasezWiederholung - ALU-Design5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenShift-OperatorenVerkettungsoperatorBedingter OperatorZusammenfassung – Operator-Challenge11Schleifen
For-SchleifeWhile-SchleifeRepeat-SchleifeEndlosschleifeDisable-AnweisungRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit GrößenangabeZahlen ohne GrößenangabeNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturEingangs- und Ausgangs-PortsInout-PortsModul-InstanziierungPort-Mapping nach NamePort-Mapping nach ReihenfolgeZusammenfassung – Ein Modul erstellen