xor
brama, teraz muszę zbudować tę bramę, używając tylko 4 nand
bram
a b out
0 0 0
0 1 1
1 0 1
1 1 0
the xor = (a and not b) or (not a and b)
, czyli
Znam odpowiedź, ale jak uzyskać schemat bramy ze wzoru?
EDYTOWAĆ
Mam na myśli intuicyjnie, że powinienem dostać ten, jeśli zrobię to krok po kroku, a następnie definicję xor = (a and not b) or (not a and b)
.
i xor
zostanie zbudowany z 5 nand
bramami (pierwsze zdjęcie nr 1 poniżej)
moje pytanie jest bardziej podobne: wyobraź sobie, że pierwsza osoba w historii nand
wymyśliła tę formułę, w jaki sposób ona (proces myślenia) może uzyskać krok po kroku 4 rozwiązania z tej formuły.
logic
boolean-algebra
Ponadczasowy
źródło
źródło
Odpowiedzi:
Z tej formuły? To może być zrobione. Ale łatwiej jest zacząć od tego: (używając innej notacji tutaj)
Ok, a teraz co? W końcu powinniśmy czerpać
~(~(~(a & b) & a) & ~(~(a & b) & b))
(który wygląda na to, że ma 5 NAND, ale podobnie jak schemat obwodu ma podwyrażenie, które jest używane dwukrotnie).Stwórz więc coś, co wygląda
~(a & b) & a
(i to samo, ale zb
końcem) i miej nadzieję, że zostanie: (and
rozprowadza sięor
)Teraz już dość blisko, po prostu zastosuj DeMorgan, aby zmienić ten środek
or
wand
:I to wszystko.
źródło
Myślę, że prosisz o ten dowód:
Chociaż najwyraźniej
NAND
w równaniu wynikowym zastosowano 5 s, ale duplikat!(AB)
zostanie użyty tylko raz podczas projektowania jego obwodu.źródło
Podsumowując, najpierw to zauważamy
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.
Możemy więc spróbować zgadnąć, jaki rodzaj danych wejściowych do tej bramki dałby pożądany wynik.
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.
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.
Łatwo to sprawdzić
SimilarlyNAND(Z,B)=Y
Hence we can compose these four gates to get the desired result, i.e., the XOR function.
źródło
I take the input(0,0) as an example.
ForXOR , the desired output is 0. However, NAND(0,0)=1 .
Because the only way to get a 0 usingNAND is (at the last layer) NAND(1,1)=0 , you should first produce two 1's.
Only fourNAND s are involved. But it is only correct for the input (0,0) so far. So you need to check other inputs (0,1),(1,0), and (1,1) against the solution and find that it just works. Lucky.
źródło
I tried my best to give the answer using formula as asked.Hope you appreciate it.
Z=AB'+A'B
Z=AA'+AB'+BB'+A'B --->BB'=AA'=0
Z=A(A'+B')+B(B'+A')
Z=A(AB)'+B(AB)' --> Hint
so now (AB)' can get through 1st NAND gate,then in 2nd and third NAND gate the output of 1st NAND gate pass through with one of the input as A and B.After this we need one more complement so use fourth NAND gate.
NAND(1st)=(AB)'=A'+B'
NAND(2nd)=(A(AB)')'=(A(A'+B'))'=(AB')'=A'+B
NAND(3rd)=(B(AB)')'=(B(A'+B'))'=(A'B)'=A+B'
NAND(4th)=[(A'+B)(A+B')]' =[A'B'+AB]'=(A+B)(A'+B')=AB'+A'B
Happy!
źródło
The formula: XOR = (a and not b) or (not a and b).
Thats' not what you want, you want a formula that is a NAND. Remember that not (a or b) = not a and not b, and therefore (a or b) = not (not a and not b). Therefore
(a and not b) or (not a and b) =
not (not (a and not b) and not (not a and b)) =
not ((not a or b) and (a or not b)) =
NAND (not a or b, a or not b).
So we used one NAND gate, and have to calculate (not a or b) and (a or not b) using three NANDs. We turn each expression into a NAND:
not a or b = not (a and not b) = NAND (a, not b)
a or not b = not (not a and b) = NAND (not a, b)
Now we observe that (x and y) = x and (not x or y): If x is false then both sides are false. If x is true then (not x or y) = (false or y) = y. This is true for NAND just as it's true for AND. Therefore
NAND (a, not b) = NAND (a, not a or not b) = NAND (a, NAND (a, b))
NAND (b, not a) = NAND (b, not b or not a) = NAND (b, NAND (a, b)).
So we first find mid = NAND (a, b), left = NAND (a, mid) and right = NAND (b, mid), finally XOR = NAND (left, right).
źródło
*From left to right--D1,D2,D3,D4 ** D1=(A.B)' OR(A'+B')
suppose
(A.B)'=C
D2=(A.C)'=A'+C'
D3=(B.C)'=B'+C' then
D4=(D2.D3)'
D4=((A.C)'.(B.C)')'
D4=(A.C)''+(B.C)''
D4=(A.C)+(B.C)
D4=A.(A'+B')+B.(A'+B')
D4=AB'+BA' {A.A'=B.B'=0}**
źródło