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 NOR). Diese Gatter sind nützlich für den Vergleich 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-Primitiv:
xor(out, a, b);Äquivalent zur kontinuierlichen Zuweisung:
assign out = a ^ b;XNOR-Gatter
Das XNOR-Gatter gibt 1 aus, wenn die Eingänge 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-Gatter-Primitiv:
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-Eingang-XOR
xnor(out, p, q, r, s); // 4-Eingang-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 Anwendungen
| Anwendung | Beispiel |
|---|---|
| Vergleichen, ob zwei Bits unterschiedlich sind | xor(diff, a, b) |
| Vergleichen, ob zwei Bits gleich sind | xnor(same, a, b) |
| Paritätsgenerierung (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]) |
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 | Ausgang 1, wenn | Primitiv | Operator |
|---|---|---|---|
| XOR | Eingänge unterschiedlich sind | xor(out, a, b) | ^ |
| XNOR | Eingänge gleich sind | xnor(out, a, b) | ~^ |
Aufgabe
Fügen Sie die fehlenden Gatter-Primitive basierend auf den Aufgaben hinzu.
Was zu tun ist:
- Erstellen Sie ein XOR-Gatter mit dem Ausgang
xor_resultund den Eingängenxundy - Erstellen Sie ein XNOR-Gatter mit dem Ausgang
xnor_resultund den Eingängenxundy
Spickzettel
XOR gibt 1 aus, wenn die Eingänge unterschiedlich sind. XNOR gibt 1 aus, wenn die Eingänge gleich sind.
| Gatter | Ausgang 1 wenn | Primitiv | Operator |
|---|---|---|---|
| XOR | Eingänge unterschiedlich sind | xor(out, a, b) | ^ |
| XNOR | Eingänge gleich sind | xnor(out, a, b) | ~^ |
Bei mehreren Eingängen: XOR gibt 1 aus, wenn eine ungerade Anzahl von Eingängen 1 ist; XNOR gibt 1 aus, wenn eine gerade Anzahl von Eingängen 1 ist.
xor(out, a, b, c); // 3-input XOR
xnor(out, p, q, r, s); // 4-input XNORProbier 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