XOR 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 für das Vergleichen von Bits und die Paritätsprüfung.
XOR-Gatter
Das XOR-Gatter gibt 1 aus, wenn die Eingänge verschieden sind.
Wahrheitstabelle (2 Eingänge):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Verilog-Gatter-Primitive:
xor(out, a, b);Äquivalent zur kontinuierlichen Zuweisung:
assign out = a ^ b;XNOR Gate
Das XNOR-Gatter gibt 1 aus, wenn die Eingänge gleich sind (same). 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-Gatter-Primitiv:
xnor(out, a, b);Äquivalent als kontinuierliche 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-input 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 1en) | xor(parity, data[0], data[1], data[2], data[3]) |
| Paritätsprüfung (gerade Anzahl von 1en) | xnor(parity, data[0], data[1], data[2], data[3]) |
Code-Beispiel
module xor_xnor_demo (
input a, b,
output xor_out,
output xnor_out
);
xor(xor_out, a, b);
xnor(xnor_out, a, b);
endmoduleZusammenfassungstabelle
| Gate | Output 1 when | Primitive | Operator |
|---|---|---|---|
| XOR | Eingänge unterschiedlich sind | xor(out, a, b) | ^ |
| XNOR | Eingänge identisch sind | xnor(out, a, b) | ~^ |
Aufgabe
Füge die fehlenden Gate-Primitiven basierend auf den Aufgaben hinzu.
Was zu tun ist:
- Erstelle ein XOR-Gate mit Output
xor_resultund Inputsxundy - Erstelle ein XNOR-Gate mit Output
xnor_resultund Inputsxundy
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. 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