NAND(A,B)=AB¯¯¯¯¯¯¯¯:
Podsumowując, najpierw to zauważamy
C=AB¯¯¯¯¯¯¯¯=A¯¯¯¯+B¯¯¯¯
D1¯¯¯¯¯¯=AC=A(A¯¯¯¯+B¯¯¯¯)=AA¯¯¯¯+AB¯¯¯¯=0+AB¯¯¯¯=AB¯¯¯¯
D2¯¯¯¯¯¯=BA¯¯¯¯
E=D1D2¯¯¯¯¯¯¯¯¯¯¯¯=D1¯¯¯¯¯¯+D2¯¯¯¯¯¯=AB¯¯¯¯+BA¯¯¯¯
To właśnie jest definicja XOR. Możesz po prostu odwrócić to wszystko, jeśli chcesz zacząć od początkowych danych, zamiast po prostu sprawdzić odpowiedź.
Znalezienie odpowiedzi bez wcześniejszej wiedzy
Ma to na celu odpowiedzieć na wyraźne żądanie dodane jako edycję pytania w celu znalezienia rozwiązania od zera. Biorąc pod uwagę, że pytanie dotyczy procesu myślowego, podaję wszystkie szczegóły.
AB
XOR(A,B)=AB¯¯¯¯+BA¯¯¯¯.
Możemy więc spróbować zgadnąć, jaki rodzaj danych wejściowych do tej bramki dałby pożądany wynik.
NAND(X,Y)=XY¯¯¯¯¯¯¯¯=X¯¯¯¯+Y¯¯¯¯
Ujednolicając tę ostatnią formułę z rezultatem, który musimy uzyskać, otrzymujemy:
Pamiętaj, że jest to tylko najprostsza możliwość. Istnieją inne pary danych wejściowych, które dałyby pożądany rezultat, ponieważ nie jednoczymy się w wolnej algebrze, ponieważ NAND ma właściwości równania. Ale próbujemy tego na początek.
XYAB
Moglibyśmy spróbować powtórzyć procedurę unifikacji (ja to zrobiłem), ale to naturalnie doprowadzi nas do użycia czterech kolejnych bramek, a więc rozwiązania 5 bramek.
XYZAB zapewni dane wejściowe dla tych dwóch bram pośrednich.
XYZABAB
AB
Z=NAND(A,B)=AB¯¯¯¯¯¯¯¯=A¯¯¯¯+B¯¯¯¯
ZABXY
AB
Łatwo to sprawdzić
NAND(Z,A)=ZA¯¯¯¯¯¯¯=AB¯¯¯¯¯¯¯¯A¯¯¯¯¯¯¯¯¯¯¯¯¯=(A¯¯¯¯+B¯¯¯¯)A¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯=A¯¯¯¯A+B¯¯¯¯A¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯=0+B¯¯¯¯A¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯=B¯¯¯¯A¯¯¯¯¯¯¯¯=AB¯¯¯¯¯¯¯¯¯¯¯¯=X
Similarly NAND(Z,B)=Y
Hence we can compose these four gates to get the desired result, i.e.,
the XOR function.