Menu
Coddy logo textTech

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

about
000
011
101
110

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

about
001
010
100
111

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

Beispiel (3-Eingang-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 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);
endmodule

Zusammenfassungstabelle

GateAusgabe 1, wennPrimitiveOperator
XORinputs sind unterschiedlichxor(out, a, b)^
XNORinputs sind gleichxnor(out, a, b)~^
challenge icon

Aufgabe

Füge die fehlenden Gatter-Grundelemente anhand der Aufgaben hinzu.

Was zu tun ist:

  1. Erstelle ein XOR-Gatter mit dem Ausgang xor_result und den Eingängen x und y
  2. Erstelle ein XNOR-Gatter mit dem Ausgang xnor_result und den Eingängen 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

Übe selbstständig: Online-Verilog-Compiler