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):
| a | b | out |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
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):
| a | b | out |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
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 XNORPrzykład (XOR z 3 wejściami):
| a | b | c | wyjście |
|---|---|---|---|
| 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 |
Typowe zastosowania
| Zastosowanie | Przykład |
|---|---|
| Sprawdzenie, czy dwa bity są różne | xor(diff, a, b) |
| Sprawdzenie, czy dwa bity są takie same | xnor(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);
endmoduleTabela podsumowująca
| Bramka | Wyjście 1, gdy | Przypisanie pierwotne | Operator |
|---|---|---|---|
| XOR | Wejścia są różne | xor(out, a, b) | ^ |
| XNOR | Wejścia są takie same | xnor(out, a, b) | ~^ |
Wyzwanie
Dodaj brakujące prymitywy bramek zgodnie z zadaniami.
Co należy zrobić:
- Utwórz bramkę XOR z wyjściem
xor_resulti wejściamixorazy - Utwórz bramkę XNOR z wyjściem
xnor_resulti wejściamixorazy
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)
endmoduleTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
1Wprowadzenie
Czym jest VerilogSprzęt a oprogramowanieTwój pierwszy modułKomentarzePoziomy abstrakcji projektu4Operatory, część 1
Operatory arytmetyczneOperator moduloOperatory porównaniaPowtórka — prosta matematykaOperatory bitowe7Przypisania i bramki
Przypisanie ciągłePrzypisanie z operatoramiWbudowane prymitywy bramekBramki AND, OR i NOTBramki XOR i XNORPodsumowanie — układ z bramek logicznych10Podejmowanie decyzji
Instrukcja ifIf-elsePowtórka – prosty komparatorInstrukcja caseCaseX i CaseZPowtórka – projektowanie ALU13Odmierzanie czasu i opóźnienia
Czym są opóźnieniaOpóźnienia bramekOpóźnienia przypisańDyrektywa timescaleGenerowanie zegaraPodsumowanie — kontrola czasu2Typy danych
Typ WireTyp RegLiczby całkowite i rzeczywisteWektoryTabliceParametryPowtórka — deklarowanie sygnałów5Operatory — część 2
Operatory logiczneOperatory redukcjiOperatory przesunięciaOperator konkatenacjiOperator warunkowyPowtórzenie — wyzwanie z operatorami11Pętle
Pętla forPętla whilePętla repeatPętla nieskończonaInstrukcja wyłączaniaPowtórka — wzorce pętli3System liczbowy
Reprezentacja binarnaLiczby o określonej szerokościLiczby o nieokreślonej szerokościLiczby ujemneWartości specjalne X i ZPodsumowanie — formaty liczb6Moduły
Struktura modułuPorty wejściowe i wyjściowePorty dwukierunkoweInstancjonowanie modułuMapowanie portów według nazwMapowanie portów według kolejnościPodsumowanie — zbuduj moduł9Bloki proceduralne
Blok alwaysBlok initialLista czułościPrzypisanie blokującePrzypisanie nieblokującePodsumowanie — always a initial12Projekt multipleksera
Projekt multipleksera 2 do 1Projekt multipleksera 4 do 115Sterownik sygnalizacji świetlnej
Definiowanie stanówLogika maszyny stanówPoćwicz samodzielnie: Kompilator Verilog online