xor
portão, agora preciso construir este portão usando apenas quatro nand
portão
a b out
0 0 0
0 1 1
1 0 1
1 1 0
o xor = (a and not b) or (not a and b)
, que é
Eu sei a resposta, mas como obter o diagrama da porta da fórmula?
EDITAR
Quero dizer intuitivamente, para mim, eu deveria pegar esse aqui se eu fizer isso passo a passo seguido pela definição xor = (a and not b) or (not a and b)
.
e xor
será construído com 5 nand
portões (primeira imagem nº 1 abaixo)
minha pergunta é mais ou menos assim: imagine a primeira pessoa na história a descobrir essa fórmula, como ele (ela) (o processo do pensamento) obtém a nand
solução 4 dessa fórmula, passo a passo.
logic
boolean-algebra
Eterno
fonte
fonte
Respostas:
A partir dessa fórmula? Pode ser feito. Mas é mais fácil começar com este: (usando uma notação diferente aqui)
Ok, e agora? Eventualmente, devemos derivar
~(~(~(a & b) & a) & ~(~(a & b) & b))
(que parece ter 5 NANDs, mas assim como o diagrama de circuitos, ele tem uma subexpressão que é usada duas vezes).Então, faça algo parecido
~(a & b) & a
(e a mesma coisa, mas com umb
no final) e espere que ele permaneça: (and
distribui maisor
)Agora, basta aplicar o DeMorgan para transformar esse meio
or
em umand
:E é isso.
fonte
Eu acho que você está pedindo esta prova:
Embora aparentemente haja 5
NAND
s usados na equação resultante, o duplicado!(AB)
será usado apenas uma vez quando você estiver projetando seu circuito.fonte
Como você já tem a resposta do diagrama, disponível facilmente na wikipedia , digitando o título da sua pergunta no Google, como um diagrama .png idêntico ao seu, deve ser fácil encontrar a fórmula extraindo-a desse diagrama. Dada a definição NAND comoNAND(A,B)=AB¯¯¯¯¯¯¯¯ :
O portão mais à esquerda indica ;C=AB¯¯¯¯¯¯¯¯
A porta superior dá ;D1=AC¯¯¯¯¯¯¯¯
O portão superior fornece , pois o NAND é comutado como o AND;D2=BC¯¯¯¯¯¯¯¯
O portão mais à direita indica .E=D1D2¯¯¯¯¯¯¯¯¯¯¯¯
Juntando tudo, primeiro notamos que
Da mesma forma:D2¯¯¯¯¯¯=BA¯¯¯¯
Assim
E=D1D2¯¯¯¯¯¯¯¯¯¯¯¯=D1¯¯¯¯¯¯+D2¯¯¯¯¯¯=AB¯¯¯¯+BA¯¯¯¯
Qual é precisamente a definição de XOR. Você pode simplesmente reverter tudo isso se quiser começar com seus dados iniciais, em vez de apenas verificar a resposta.
Encontrar a resposta sem conhecimento prévio
Pretende-se responder à solicitação explícita, adicionada como uma edição da pergunta, para encontrar uma solução do zero. Dado que a pergunta é sobre um processo de pensamento, estou fornecendo todos os detalhes.
Portanto, podemos tentar adivinhar que tipo de entrada para esse gate produziria a saída desejada.
Unificando esta última fórmula com o resultado que temos para obter, obtemos:
Observe que essa é apenas a possibilidade mais simples. Existem outros pares de entradas que dariam o resultado desejado, porque não estamos unificando uma álgebra livre, pois o NAND tem propriedades equacionais. Mas tentamos isso para começar.
Poderíamos tentar repetir o procedimento de unificação (eu fiz), mas isso naturalmente nos levará a usar mais quatro portões, daí uma solução para 5 portões.
É fácil verificar se
similarmenteNAND ( Z, B ) = Y
Portanto, podemos compor esses quatro portões para obter o resultado desejado, ou seja, a função XOR.
fonte
Eu pego a entrada( 0 , 0 ) como um exemplo.
ParaXOR , a saída desejada é 0. No entanto, NAND ( 0 , 0 ) = 1 .
Porque a única maneira de obter um 0 usandoNAND é (na última camada) NAND ( 1 , 1 ) = 0 , você deve primeiro produzir dois 1s.
Apenas quatroNAND s estão envolvidos. Mas é correto apenas para a entrada( 0 , 0 ) tão longe. Então você precisa verificar outras entradas( 0 , 1 ) , ( 1 , 0 ) , e ( 1 , 1 ) contra a solução e descubra que simplesmente funciona. Por sorte.
fonte
Eu tentei o meu melhor para dar a resposta usando a fórmula conforme solicitado.
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) '-> Dica
agora (AB)' pode passar pela 1ª porta NAND, então, na 2ª e na terceira porta NAND, a saída da 1ª porta NAND passa com uma das seguintes a entrada como A e B. Depois disso, precisamos de mais um complemento; portanto, use o quarto gate NAND.
NAND (1st) = (AB) '= A' + B '
NAND (2nd) = (A (AB)') '= (A (A' + B '))' = (AB ')' = A '+ B
NAND (3º) = (B (AB) ')' = (B (A '+ B')) '= (A'B)' = A + B '
NAND (4º) = [(A' + B) (A + B ')]' = [A'B '+ AB]' = (A + B) (A '+ B') = AB '+ A'B
Feliz!
fonte
A fórmula: XOR = (a e não b) ou (não a e b).
Isso não é o que você quer, você quer uma fórmula que seja um NAND. Lembre-se de que não (a ou b) = não a e não b e, portanto, (a ou b) = não (não a e não b). Portanto
(a e não b) ou (não a e b) =
not (not (a e não b) e not (not aeb)) =
not ((não a ou b) e (a ou não b)) =
NAND (não a ou b, a ou não b).
Então, usamos um gate NAND e precisamos calcular (não a ou b) e (a ou não b) usando três NANDs. Transformamos cada expressão em um NAND:
not a ou b = not (a e não b) = NAND (a, não b)
a ou não b = não (não a e b) = NAND (não a, b)
Agora observamos que (x e y) = x e (não x ou y): Se x é falso, então ambos os lados são falsos. Se x é verdadeiro, então (não x ou y) = (falso ou y) = y. Isso vale para NAND, assim como para AND. Portanto
NAND (a, não b) = NAND (a, não a ou não b) = NAND (a, NAND (a, b))
NAND (b, não a) = NAND (b, não b ou não a) = NAND (b, NAND (a, b)).
Então, primeiro encontramos meio = NAND (a, b), esquerda = NAND (a, meio) e direita = NAND (b, meio), finalmente XOR = NAND (esquerda, direita).
fonte
* Da esquerda para a direita - D1, D2, D3, D4 ** D1 = (AB) 'OR (A' + B ')
supor
(AB) '= C
D2 = (CA) '= A' + C '
D3 = (BC) '= B' + C 'então
D4 = (D2.D3) '
D4 = ((CA) '. (BC)') '
D4 = (CA) '' + (BC) ''
D4 = (CA) + (BC)
D4 = A. (A '+ B') + B. (A '+ B')
D4 = AB '+ BA' {A.A '= B.B' = 0} **
fonte