XOR XNOR Gates
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 same 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
| Gate | Ausgabe 1, wenn | Primitive | Operator |
|---|---|---|---|
| XOR | inputs sind unterschiedlich | xor(out, a, b) | ^ |
| XNOR | inputs sind gleich | xnor(out, a, b) | ~^ |
Aufgabe
Füge die fehlenden Gatter-Grundelemente anhand der 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 Designs4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicÜbe selbstständig: Online-Verilog-Compiler