2-zu-1-Mux-Design
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 64 von 90.
Aufgabe
Ein Multiplexer (MUX) ist eine digitale Schaltung, die einen von mehreren Eingängen auswählt und ihn basierend auf einem Auswahlsignal an einen einzelnen Ausgang weiterleitet. Stellen Sie sich ihn wie einen Datenselektor vor — Sie haben mehrere eingehende Eingänge und wählen aus, welcher zum Ausgang geht.
In diesem Projekt werden Sie Multiplexer verschiedener Größen unter Verwendung von if-else- und case-Anweisungen bauen.
2-zu-1 Multiplexer
Der 2-zu-1 Multiplexer ist die einfachste Form. Er hat zwei Dateneingänge (in0 und in1), einen Auswahleingang (sel) und einen Ausgang (out). Wenn sel den Wert 0 hat, folgt der Ausgang in0. Wenn sel den Wert 1 hat, folgt der Ausgang in1. Sie werden dies mit einer if-else-Anweisung innerhalb eines always @(*)-Blocks implementieren.
Beispiel: Wenn in0 = 0, in1 = 1 und sel = 1, dann ist out = 1.
Ein 2-zu-1 Multiplexer wählt einen von zwei Eingängen aus und leitet ihn basierend auf einem Auswahlsignal an den Ausgang weiter.
Wahrheitstabelle
| sel | out |
|---|---|
| 0 | out = in0 |
| 1 | out = in1 |
Wenn sel den Wert 0 hat, folgt der Ausgang in0. Wenn sel den Wert 1 hat, folgt der Ausgang in1.
Was zu tun ist:
- Erstellen Sie ein Modul namens
mux2to1 - Fügen Sie den Eingang
in0(1 Bit) hinzu - Fügen Sie den Eingang
in1(1 Bit) hinzu - Fügen Sie den Eingang
sel(1 Bit) 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 hinzu:- Wenn
sel == 0, setzen Sieout = in0 - Andernfalls setzen Sie
out = in1
- Wenn
- Schließen Sie mit
endmoduleab
Probier es selbst
// Schritt 1: Modul namens mux2to1 erstellen
// Schritt 2: Eingang in0 hinzufügen
// Schritt 3: Eingang in1 hinzufügen
// Schritt 4: Eingang sel hinzufügen
// Schritt 5: Ausgang out hinzufügen (Typ reg)
// Schritt 6: always @(*)-Block hinzufügen
// Schritt 7: if-else-Anweisung hinzufügen
// Wenn sel == 0, out = in0
// Sonst, out = in1
// Schritt 8: 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