Menu
Coddy logo textTech

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):

about
000
011
101
110

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):

about
001
010
100
111

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-XNOR

Beispiel (3-input XOR):

abcout
0000
0011
0101
0110
1001
1010
1100
1111

Häufige Verwendungen

VerwendungBeispiel
Vergleichen, ob zwei Bits unterschiedlich sindxor(diff, a, b)
Vergleichen, ob zwei Bits gleich sindxnor(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);
endmodule

Zusammenfassungstabelle

GateOutput 1 whenPrimitiveOperator
XOREingänge unterschiedlich sindxor(out, a, b)^
XNOREingänge identisch sindxnor(out, a, b)~^
challenge icon

Aufgabe

Füge die fehlenden Gate-Primitiven basierend auf den Aufgaben hinzu.

Was zu tun ist:

  1. Erstelle ein XOR-Gate mit Output xor_result und Inputs x und y
  2. Erstelle ein XNOR-Gate mit Output xnor_result und Inputs x und y

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)

endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen