Publiquei aqui mesmo no Embarcados um post onde mostro como funcionam as portas lógicas. Em seguida falei sobre MUX e sobre a porta XOR. No post sobre a porta XOR, eu desenvolvi todos os circuitos, conforme o teorema de De Morgan e mostrei três circuitos distintos:
- Um circuito que mostrava uma configuração para a função XOR com portas lógicas comuns;
- Um circuito que mostrava uma configuração para XOR com portas NANDs;
- Um circuito que mostrava uma configuração para XOR com portas NORs;
Este post então, visa mostrar os circuitos e códigos Verilog para XNOR, sendo apenas um texto complementar ao mostrado no post anterior.
Uma porta XNOR, que é definida pela tabela conforme a figura em destaque, tem o seguinte comportamento:
- Se todas as entradas forem iguais, a saída é um, nível alto;
- Se todas as entradas não forem iguais, ao menos uma delas forem diferentes, a saída é zero, nível baixo.
Podemos reconhecer a lógica XNOR na expressão
$$\bar{A . \bar{B} + \bar{A} . B}$$
Para implementar a função XNOR, apenas é necessário adicionar uma inversora, ou porta NOT na saída dos circuitos mostrados para porta XOR. Lembre-se que, para uma porta NAND funcionar como portas AND, basta curto circuitar suas entradas. O mesmo é válido para a porta NOR: curto circuite suas entradas e ela funciona como uma porta NOT. Abaixo reproduzo os três circuitos com seus códigos implementados em Verilog.
Circuitos para XNOR
Implementação dos três circuitos de XNOR em Verilog
Abaixo estão três circuitos implementados em Verilog, com portas lógicas comuns, com NANDs e com NORs.
// Embarcados - Use como quiser e de os creditos // Exemplo de Implementacao de XNOR com portas logicas simples // Thiago Lima - 14/11/2015 module exemplo_XNOR ( A, B, X ); input A, B; output X; wire C, D, X_inv; nand U1( C, A, B ) ; or U2( D, A, B ) ; and U3( X_inv, C, D ) ; not U4( X, X_inv ); endmodule
// Embarcados - Use como quiser e de os creditos // Exemplo de Implementacao de XNOR com NANDs // Thiago Lima - 14/11/2015 module exemplo_XNOR ( A, B, X ); input A, B; output X; wire C, D, X_inv; nand U1( C, A, B ) ; and U2( D, C, A ) ; nand U3( E, C, B ) ; nand U4( X_inv, E, D ) ; nand U5( X, X_inv, X_inv ) ; endmodule
// Embarcados - Use como quiser e de os creditos // Exemplo de Implementacao de XNOR com NORS // Thiago Lima - 14/11/2015 module exemplo_XNOR ( A, B, X ); input wire A, B; output wire X; wire a_neg, b_neg, C, D, X_INV; nor U1( a_neg, A, A ); nor U2( b_neg, B, B ); nor U3( C, a_neg, b_neg ) ; nor U4( D, A, B ) ; nor U5( X_INV, C, D ) ; nor U6( X, X_INV, X_INV ) ; endmodule
Bem pessoal, espero que tenham gostado. Caso tenham alguma dúvida ou comentário, deixe um recado abaixo.










Boa noite Sr Thiago Lima,
Daqui é Alexandre Fernandes, aluno de Engenharia Mecatrônica do Instituto Politécnico de Viana do Castelo em Portugal. Estive a observar o seu trabalho sobre Portas Lógicas que é deveras interessante.
Estou a enviar-lhe mensagem devido a eu ter de fazer um trabalho em linguagem de programação C sobre portas lógicas,no qual apresento algumas dificuldades. Por acaso, não tem algum trabalho em linguagem C sobre portas lógicas que me mostrar para me servir de exemplo para trabalhar no meu?
Agradeço resposta,
Alexandre Fernandes
Ola Alexandre, infelizmente nao tenho exemplo em C nao.
Mas acho que dá pra construir os seus exemplos a partir dos codigos acima, do texto.
Obrigado por visitar o Embarcados.
Boa tarde Thiago,
Sempre consegui realizar o trabalho com aprovação, apesar das dificuldades
Obrigado na mesma, o seu trabalho ajudou muito