Jak powinien działać XOR z więcej niż 2 wejściami?

27

Właśnie zacząłem studiować inżynierię komputerową i mam wątpliwości co do zachowania bramki XOR.

Projektuję układy z Logisimem, którego XOR zachowują się inaczej niż nauczyłem się. Dla mnie powinien on zachowywać się jak bramka parzystości, dając wysoką wydajność, gdy dane wejściowe otrzymają nieparzystą kombinację. Nie dotyczy to jednak więcej niż dwóch danych wejściowych. Jak powinien się zachowywać?

Przeczytałem również w książce, że bramki XOR nie są produkowane z więcej niż dwoma wejściami. Czy to jest poprawne? Czemu?

gabrieljcs
źródło
1
Dlaczego nie (lub prawie nigdy) z> 2 wejściami? Dwa typowe zastosowania bramek XOR to: 1) sprawdzenie równości oraz 2) kontrola / manipulacja polaryzacją sygnału. Żadne z nich nie ma sensu dla więcej niż 2 wejść.
Wouter van Ooijen,
1
Czy suma w sumatorze nie byłaby reprezentowana jako A ^ B ^ Cin?
gabrieljcs
Możesz to wyrazić w ten sposób, ale to nie znaczy, że jest to dobry sposób na jego wdrożenie.
Wouter van Ooijen,
1
Właśnie sprawdziłem moją wersję Logisim, a „1 i tylko 1” wydaje się być zachowaniem domyślnym, ale istnieje możliwość zmiany jej na funkcję parzystości nieparzystej.
Joe Hass,
Rzeczywiście, Joe. Ten link zawiera dyskusję na ten temat, na którą odpowiedział deweloper Logisim, Carl Burch.
gabrieljcs

Odpowiedzi:

23

Istnieją różne punkty widzenia dotyczące zachowania wyłącznej bramki LUB z więcej niż dwoma wejściami. Najczęściej taka bramka XOR zachowuje się jak kaskada bramek 2-wejściowych i pełni funkcję parzystości nieparzystej. Jednak niektórzy interpretują znaczenie wyłączności-LUB bardziej dosłownie i mówią, że wyjście powinno wynosić 1, jeśli tylko jedno z danych wejściowych to 1. Wydaje mi się, że Logisim używa tej drugiej interpretacji i gdzieś w moja zardzewiała pamięć Widziałem to w bibliotece komórek ASIC. Jednym z międzynarodowych standardowych symboli dla bramki XOR jest prostokąt oznaczony etykietą, =1który wydaje się bardziej spójny z definicją „1 i tylko 1”.

EDYCJA: Definicja wyłącznej-OR jako „1 i tylko 1” jest rzadka, ale można ją znaleźć. Na przykład IEEE-Std91a-1991 podaje symbol wyłączności-LUB na p. 62 z dopiskiem: „Wyjście jest w stanie 1, jeśli jedno i tylko jedno z dwóch wejść stoi w stanie 1”. W przypadku więcej niż 2 wejść standard zaleca stosowanie zamiast tego symbolu „nieparzystej parzystości”. Strony internetowe omawiające tę mylącą sytuację to XOR: The Interesting Gate i dema gate w TAMS . Wyszukiwarka Google wyświetli również strony, które twierdzą, że ściśle mówiąc, nie ma czegoś takiego jak brama XOR z więcej niż dwoma wejściami.

Joe Hass
źródło
4
Moim zdaniem drugi (1 i tylko 1) to jedyny właściwy sposób na zrobienie tego - nic innego nie jest tak naprawdę wykluczające .
Wielomian
3
Nie ma innego punktu widzenia, oba punkty są technicznie poprawne, jednak „1, jeśli tylko jedno z wejść ma wartość 1”, nie rozwija się, jak mogłoby się wydawać. Kiedy kaskadujesz 2 wejściowe XOR, każde wyjście zasilające piny trzeciego XOR pokazuje powyższy punkt. Bramki z wieloma wejściami pochodzą z ich pierwotnych 2-wejściowych. Tak więc 4-wejściowa tabela prawdy to ((A⊕B) ⊕ (C⊕D)), co daje końcowy wynik 1, jeśli istnieje nieparzysta liczba prawdziwych danych wejściowych.
Kris Bahnsen
@KrisBahnsen Jak zauważył PO, istnieją rzeczywiście dwa punkty widzenia (wypróbuj domyślny XOR w Logisim, jeśli potrzebujesz dowodów). Twoje twierdzenie, że bramki z wieloma wejściami pochodzą od prymitywów z 2 wejściami, jest tak, jakby to była uniwersalna prawda, ale już daliśmy ci kontrprzykład.
Joe Hass,
@JoeHass, nigdy nie korzystałem z logisim, używam głównie LogicWorks; w którym XOR z wieloma wejściami zachowuje się tak, jak opisano powyżej, nieparzysta liczba prawdziwych danych wejściowych jest prawdziwym wynikiem. Strona wiki na XOR (en.wikipedia.org/wiki/XOR) zgadza się, że to, co powiedziałem, jest również prawdą. Nigdy też nie widziałem układu XOR z wieloma wejściami, więc nie mogę sięgnąć do kart danych, aby spróbować obalić to, co powiedziałem. Logisim wydaje się być jedyną rzeczą, która implementuje schemat XOR z wieloma wejściami z logiką „1 jeśli i tylko ...” Jeśli znajdziesz inne źródło, przyznam, że się mylę i że istnieje wiele definicji XOR.
Kris Bahnsen,
Dobre wyjaśnienie, dziękuję za poświęcenie czasu na badanie standardów znacznie bardziej niż ja.
Kris Bahnsen
11

W bramie XOR wyjście jest wysokie, gdy wejścia są różne. Jeśli wejścia są takie same, wyjście jest niskie.

Stąd ta tabela prawdy:

wprowadź opis zdjęcia tutaj

Możesz znaleźć bramę XOR, która ma więcej niż dwa wejścia, ale tak naprawdę nie są one XOR z 3 wejściami. Wprowadzają one XOR A i B, a ich wynikiem „R” jest XOR z wejściem C. A wynikiem R XOR C jest następnie XOR z wejściem 4 i tak dalej.

Oto tabela prawdy dla pokazanego trzy wejścia XOR:

wprowadź opis zdjęcia tutaj

Prostym algorytmem parzystości jest bit XOR w odebranej wiadomości na przykład przez Ethernet. Jeśli nadawca i odbiorca wiedzą, że XOR bitów wiadomości powinien wynosić 0 (jeden bit w wiadomości ma na celu dodanie jednego, aby wiadomość o dowolnej długości mogła być równa 0, gdy XORed), wówczas odbiorca może wiedzieć, czy 1 bit został odwrócony. Jest to zła kontrola parzystości, ponieważ może ona znaleźć tylko nieparzystą liczbę zmian bitów, ale pokazuje koncepcję.

iQt
źródło
1
Jestem matematykiem, ta odpowiedź wydaje mi się okropna. Rozumiem, że jest to wynik generalnie zamierzony przez 3-wejściowy XOR, ale 01101000 wydaje mi się o wiele bardziej logiczny. + Ładna odpowiedź.
Ben Crossley,
1

Jeśli weźmiesz 4 wejścia i podasz dwa do jednego XOR, a dwa do drugiego, weź dwa wyjścia XOR i podaj je do trzeciego XOR, jego wyjście robi to, co według ciebie powinno (myślę).

Andy aka
źródło
1
Bardziej martwię się o to, dlaczego, a nie jak. Ale dziękuję za odpowiedź.
gabrieljcs,
@root, właściwie zapytałeś: „Jak powinno się zachowywać?” Nigdzie nie pytałeś. To poprawna odpowiedź, daje ((A⊕B) ⊕ (C⊕D)), który jest taki sam jak 4-wejściowy XOR, który jest taki sam jak wiele 2-wejściowych XOR kaskadowo ze sobą.
Kris Bahnsen
Masz rację. Przepraszam za nieporozumienie.
gabrieljcs
1

XOR nie jest całkowicie bramą parzystości. Jeśli zdefiniujesz wyjście XOR jako 1, gdy jedno i tylko jedno wejście ma wartość 1, wówczas trzy wejściowe XOR dałoby 0 dla wejścia all-1. Nie jest to często używane, dlatego istnieje niewiele bramek XOR z 3 wejściami.

Co większość ludzi ma na myśli, gdy mówią, że XOR to dodatek modulo 2, który jest dokładnie sprawdzaniem parzystości. Większość bram oznaczonych jako 3-wejściowe XOR to tak naprawdę bramki dodatkowe modulo 2. W przypadku dwóch wejść dodanie modulo 2 jest takie samo jak XOR, ale 0 z opisanego powyżej XOR jest zamiast tego bramką 1 w modulo 2. Bramy Modulo 2 z dowolną liczbą wejść mogą być wytwarzane z prostych bram XOR z dwoma wejściami.

Duggie
źródło
1

Zrobiłem trochę wyszukiwania, widząc twoje pytanie i znalazłem układ scalony, który jest 3-wejściową bramą XOR. 74LVC1G386 z nxp. link do strony nxp pokazującej wyniki wyszukiwania dla tego numeru części w witrynie nxp to http://www.nxp.com/search?q=74lvc1g386&type=keyword&rows=10

Mahesh Mohandasan
źródło
2
Dziękujemy za pomoc, ale Twoja odpowiedź będzie bezwartościowa, jeśli NXP zmieni wyszukiwarkę. Podsumuj to, co tu znalazłeś, aby miało trwałą wartość.
Joe Hass,
właśnie szukałem, czy jest jakaś produkcja, która zapewnia XOR więcej niż 3 dane wejściowe i znalazłem ten ... więc pomyślałem, że pomogę go udostępnić ... oto link do ich arkusza danych nxp.com/documents/ data_sheet / 74LVC1G386.pdf
Mahesh Mohandasan
1
Proszę nie publikować innego linku! Powiedz nam, jak to działa!
Joe Hass,
jest to 3-wejściowa bramka XOR, która działa tak samo, jak my studiowaliśmy / wiemy tzn. daje wysokie o / p dla nieparzystej liczby wysokich danych wejściowych (jak z arkusza danych). dlatego udostępniono link. :)
Mahesh Mohandasan
1

Poszedłem tam i przetestowałem! Napisałem mały plik verilog, zasymulowałem i spojrzałem na przebieg.

Okazuje się, że poprawną interpretacją verilog jest: Dziwna jest liczba 1 w danych wejściowych Interpretacja AKA 2 tego artykułu

module top (y1, y2);
output y1, y2;
reg a, b, c;
wire x1, x2;
wire t;

xor(t, a, b);
xor(x2, t, c);

assign y2 = x2;
assign y1 = x1;

xor(x1, a, b, c);

initial
begin
  $dumpfile("test.vcd");
  $dumpvars(y1, y2, a, b, c, x1, x2);

#20
#10  a = 0; b = 0; c = 0;
#10  a = 0; b = 0; c = 1;
#10  a = 0; b = 1; c = 0;
#10  a = 0; b = 1; c = 1;
#10  a = 1; b = 0; c = 0;
#10  a = 1; b = 0; c = 1;
#10  a = 1; b = 1; c = 0;
#10  a = 1; b = 1; c = 1;
#10  a = 0; b = 0; c = 0;
end

endmodule

wprowadź opis zdjęcia tutaj

mentatkgs
źródło
-1

Zgodnie z logiką prostej bramki wejściowej OR z wieloma wejściami przyjmuje najwyższą wartość spośród wszystkich danych wejściowych, jednak nie podejmuje decyzji. Jeśli chodzi o EXOR (pomieszanie z połową sumatora jest tylko zbiegiem okoliczności, ponieważ nie dzieje się to w logice wielowartościowej EXOR), podejmuje decyzję, która z nich jest najwyższa spośród danych wejściowych, ale jeśli najwyższa (w tym 0 + 0 .. 1 + 1) są takie same, nie wybiera się między wejściami, co oznacza, że ​​nie może podjąć decyzji, którą wybrać. Brak spadku oznacza, że ​​wydajność wynosi zero. Na przykład, jeśli ktoś zostanie poproszony o zakup maksymalnej liczby słodyczy jednej marki w jednej lalce, a jeśli są dwie marki (radix = 2), może wybrać tę, która ma największą liczbę słodyczy, ale jeśli obie marki są dostępne bezpłatnie, nie może również wybrać żadnego (oznacza 0,0), jeśli obie marki oferują ten sam numer (1, 1) słodyczy, których nie może podjąć, oznacza, że ​​produkcja wynosi zero. Tę samą logikę można rozszerzyć w przypadku 3, 4 lub więcej marek słodyczy. Dotyczy to również logiki wielowartościowej. (x + x + .. + x = 0, gdzie x może mieć dowolną wartość), W trzech wejściowych bramkach EXOR 1 + 1 + 1 = 0 (w przeciwieństwie do normalnej interpretacji 1 + 1 + 1 = 1, która wydaje się błędna, ponieważ pomieszane z parzystością). Dr VT Ingole

vijay ingole
źródło
To wyjaśnienie jest niepotrzebnie skomplikowane i i tak nie wydaje się ostatecznie odpowiadać na pytanie.
duskwuff