Menu
Coddy logo textTech

Bramki XOR i XNOR

Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 41 z 90.

Ta lekcja omawia dwie dodatkowe bramki logiczne: XOR (alternatywa wykluczająca) i XNOR (negacja alternatywy wykluczającej). Te bramki są przydatne do porównywania bitów i sprawdzania parzystości.

Bramka XOR

Bramka XOR zwraca 1, gdy wejścia są różne.

Tablica prawdy (2 wejścia):

about
000
011
101
110

Podstawowy element bramkowy Veriloga:

xor(out, a, b);

Odpowiednik przypisania ciągłego:

assign out = a ^ b;

Bramka XNOR

Bramka XNOR zwraca 1, gdy wejścia są takie same. Jest przeciwieństwem XOR.

Tablica prawdy (2 wejścia):

about
001
010
100
111

Prymityw bramki Verilog:

xnor(out, a, b);

Odpowiednik przypisania ciągłego:

assign out = a ~^ b;   // lub ~(a ^ b)

Wiele wejść

Bramki XOR i XNOR mogą mieć więcej niż 2 wejścia. Wyjście wynosi:

  • XOR: 1, jeśli nieparzysta liczba wejść ma wartość 1
  • XNOR: 1, jeśli parzysta liczba wejść ma wartość 1
xor(out, a, b, c);      // 3-wejściowa bramka XOR
xnor(out, p, q, r, s);  // 4-wejściowa bramka XNOR

Przykład (XOR z 3 wejściami):

abcwyjście
0000
0011
0101
0110
1001
1010
1100
1111

Typowe zastosowania

ZastosowaniePrzykład
Sprawdzenie, czy dwa bity są różnexor(diff, a, b)
Sprawdzenie, czy dwa bity są takie samexnor(same, a, b)
Generowanie bitu parzystości (nieparzysta liczba jedynek)xor(parity, data[0], data[1], data[2], data[3])
Sprawdzanie bitu parzystości (parzysta liczba jedynek)xnor(parity, data[0], data[1], data[2], data[3])

Przykład kodu

module xor_xnor_demo (
  input a, b,
  output xor_out,
  output xnor_out
);
  xor(xor_out, a, b);
  xnor(xnor_out, a, b);
endmodule

Tabela podsumowująca

BramkaWyjście 1, gdyPrzypisanie pierwotneOperator
XORWejścia są różnexor(out, a, b)^
XNORWejścia są takie samexnor(out, a, b)~^
challenge icon

Wyzwanie

Dodaj brakujące prymitywy bramek zgodnie z zadaniami.

Co należy zrobić:

  1. Utwórz bramkę XOR z wyjściem xor_result i wejściami x oraz y
  2. Utwórz bramkę XNOR z wyjściem xnor_result i wejściami x oraz y

Spróbuj swoich sił

module xor_xnor_challenge (
  input x,
  input y,
  output xor_result,
  output xnor_result
);
  
  // TODO: Dodaj bramkę XOR (xor_result = x ^ y)
  
  // TODO: Dodaj bramkę XNOR (xnor_result = x ~^ y)

endmodule
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Verilog online