XOR- und XNOR-Gatter
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 41 von 90.
Diese Lektion behandelt zwei zusätzliche Logikgatter: XOR (exklusives ODER) und XNOR (exklusives NICHT-ODER). Diese Gatter sind nützlich zum Vergleichen von Bits und zur Paritätsprüfung.
XOR-Gatter
Das XOR-Gatter gibt 1 aus, wenn die Eingaben unterschiedlich sind.
Wahrheitstabelle (2 Eingänge):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Verilog-Gatterprimitive:
xor(out, a, b);Äquivalent zur kontinuierlichen Zuweisung:
assign out = a ^ b;XNOR-Gatter
Das XNOR-Gatter gibt 1 aus, wenn die Eingaben gleich sind. Es ist das Gegenteil von XOR.
Wahrheitstabelle (2 Eingänge):
| a | b | out |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Verilog-Gatterprimitive:
xnor(out, a, b);Äquivalent zur kontinuierlichen Zuweisung:
assign out = a ~^ b; // oder ~(a ^ b)Mehrere Eingänge
XOR- und XNOR-Gatter können mehr als 2 Eingänge haben. Der Ausgang ist:
- XOR: 1, wenn eine ungerade Anzahl von Eingängen 1 ist
- XNOR: 1, wenn eine gerade Anzahl von Eingängen 1 ist
xor(out, a, b, c); // 3-Eingangs-XOR
xnor(out, p, q, r, s); // 4-Eingangs-XNORBeispiel (3-Eingang-XOR):
| a | b | c | out |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
Häufige Verwendungen
| Verwendung | Beispiel |
|---|---|
| Vergleichen, ob zwei Bits unterschiedlich sind | xor(diff, a, b) |
| Vergleichen, ob zwei Bits gleich sind | xnor(same, a, b) |
| Paritätserzeugung (ungerade Anzahl von 1'en) | xor(parity, data[0], data[1], data[2], data[3]) |
| Paritätsprüfung (gerade Anzahl von 1'en) | xnor(parity, data[0], data[1], data[2], data[3]) |
Codebeispiel
module xor_xnor_demo (
input a, b,
output xor_out,
output xnor_out
);
xor(xor_out, a, b);
xnor(xnor_out, a, b);
endmoduleZusammenfassungstabelle
| Gatter | Ausgabe 1, wenn | Primitive | Operator |
|---|---|---|---|
| XOR | Die Eingaben unterschiedlich sind | xor(out, a, b) | ^ |
| XNOR | Die Eingaben gleich sind | xnor(out, a, b) | ~^ |
Aufgabe
Füge die fehlenden Gatterprimitive basierend auf den Aufgaben hinzu.
Was zu tun ist:
- Erstelle ein XOR-Gatter mit dem Ausgang
xor_resultund den Eingängenxundy - Erstelle ein XNOR-Gatter mit dem Ausgang
xnor_resultund den Eingängenxundy
Probier es selbst
module xor_xnor_challenge (
input x,
input y,
output xor_result,
output xnor_result
);
// TODO: XOR-Gatter hinzufügen (xor_result = x ^ y)
// TODO: XNOR-Gatter hinzufügen (xnor_result = x ~^ y)
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle 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