2-zu-1-Mux-Entwurf
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 abhängig von einem Auswahlsignal an einen einzelnen Ausgang weiterleitet. Stell ihn dir wie einen Datenschalter vor. Mehrere Eingänge kommen an, und du wählst aus, welcher davon zum Ausgang gelangt.
In diesem Projekt wirst du Multiplexer verschiedener Größen mit if-else- und case-Anweisungen erstellen.
2-zu-1-Multiplexer
Der 2-zu-1-Multiplexer ist die einfachste Form. Er verfügt über zwei Dateneingänge (in0 und in1), einen Auswahleingang (sel) und einen Ausgang (out). Wenn sel 0 ist, folgt der Ausgang in0. Wenn sel 1 ist, folgt der Ausgang in1. Du wirst dies mithilfe einer if-else-Anweisung innerhalb eines always @(*)-Blocks implementieren.
Beispiel: Wenn in0 = 0, in1 = 1 und sel = 1 gilt, dann ist out = 1.
Ein 2-zu-1-Multiplexer wählt abhängig von einem Auswahlsignal einen von zwei Eingängen aus und leitet ihn an den Ausgang weiter.
Wahrheitstabelle
| sel | out |
|---|---|
| 0 | out = in0 |
| 1 | out = in1 |
Wenn sel 0 ist, folgt der Ausgang in0. Wenn sel 1 ist, folgt der Ausgang in1.
Aufgabe:
- Erstelle ein Modul namens
mux2to1 - Füge den Eingang
in0hinzu (1 Bit) - Füge den Eingang
in1hinzu (1 Bit) - Füge den Eingang
selhinzu (1 Bit) - Füge den Ausgang
outhinzu (1 Bit, Typreg) - Füge einen
always @(*)-Block hinzu - Füge darin eine
if-else-Anweisung hinzu:- Wenn
sel == 0, setzeout = in0 - Andernfalls setze
out = in1
- Wenn
- Schließe mit
endmoduleab
Probier es selbst
// Schritt 1: Erstelle Modul namens mux2to1
// Schritt 2: Füge Eingang in0 hinzu
// Schritt 3: Füge Eingang in1 hinzu
// Schritt 4: Füge Eingang sel hinzu
// Schritt 5: Füge Ausgang out hinzu (reg-Typ)
// Schritt 6: Füge always @(*)-Block hinzu
// Schritt 7: Füge if-else-Anweisung hinzu
// Wenn sel == 0, out = in0
// Sonst, out = in1
// Schritt 8: EndmoduleAlle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – einfache MathematikBitweise Operatoren7Zuweisungen und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-GrundelementeUND-, ODER- und NICHT-GatterXOR- und XNOR-GatterRückblick – Logikgatter-Schaltung10Entscheidungsfindung
If-AnweisungIf – ElseRückblick – Einfacher KomparatorCase-AnweisungCasex und CasezRückblick – ALU-Entwurf13Zeitsteuerung und Verzögerungen
Was sind Verzögerungen?GatterverzögerungenZuweisungsverzögerungenTimescale-DirektiveTakterzeugungZusammenfassung – Zeitsteuerung2Datentypen
Wire-TypReg-TypInteger und RealVektorenArraysParameterZusammenfassung – Signale deklarieren5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenSchiebeoperatorenVerkettungsoperatorBedingter OperatorRückblick – Operatoren-Herausforderung11Schleifen
For-SchleifeWhile-SchleifeWiederholungsschleifeEndlosschleifeAnweisung deaktivierenRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit fester BreiteZahlen ohne feste BreiteNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturInput- und Output-PortsInout-PortsModulinstanziierungPortzuordnung nach NamenPortzuordnung nach ReihenfolgeRückblick – Ein Modul erstellenÜbe selbstständig: Online-Verilog-Compiler