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 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 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-Auswahlsignal 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 Modul namens
mux4to1 - Fügen Sie den Eingang
in0(1 Bit) hinzu - Fügen Sie den Eingang
in1(1 Bit) hinzu - Fügen Sie den Eingang
in2(1 Bit) hinzu - Fügen Sie den Eingang
in3(1 Bit) hinzu - Fügen Sie den Eingang
sel(2 Bits) hinzu - Fügen Sie den Ausgang
out(1 Bit, Typreg) hinzu - 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 - Ansonsten, wenn
sel == 2'b01, setzen Sieout = in1 - Ansonsten, wenn
sel == 2'b10, setzen Sieout = in2 - Ansonsten setzen Sie
out = in3
- Wenn
- Schließen Sie mit
endmoduleab
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: 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