Desenhe o diagrama de portas lógicas para um circuito comparador que receba como entrada dois números inteiros de quatro bits cada um e produza uma saída em nível ALTO apenas quando os dois números forem idênticos.

Passo 1

O enunciado pede que seja desenhado um diagrama de portas lógicas para um circuito comparador que:
  • Recebe como entradas dois números inteiros de quatro bits cada um.
    • Vou chamar o primeiro número de A com bits \,A_3,A_2,A_1,A_0.
    • Vou chamar o segundo número de B com bits \,B_3,B_2,B_1,B_0.
  • Produza uma única saída em nível ALTO (nível lógico 1) apenas quando os dois números forem idênticos bit a bit.
Informações relevantes dadas pelo enunciado:
  • Entradas: \,A_3,A_2,A_1,A_0 e \,B_3,B_2,B_1,B_0.
  • Saída: um sinal lógico que deve valer 1 somente se A for exatamente igual a B (todos os 4 bits iguais).

Passo 2

Ideia básica (sem ainda desenhar): para que dois números de 4 bits sejam idênticos é necessário e suficiente que cada par de bits correspondentes seja igual. Logo precisamos:
  • Para cada índice i=0,1,2,3 determinar um sinal que indique se A_i é igual a B_i.
  • Combinar esses quatro sinais de igualdade com uma operação lógica que só entregue 1 se todos os quatro forem 1 (ou seja, um AND de todos eles).
Conceitos básicos usados:
  • Porta XOR: a saída é 1 quando as entradas são diferentes. Para duas entradas X e Y a função é \,X\oplus Y.
  • Porta XNOR: a saída é 1 quando as entradas são iguais; é a negação do XOR. Para duas entradas X e Y a função é \,\overline{X\oplus Y}. A XNOR é ideal para testar igualdade bit a bit.
Vou mostrar a tabela verdade de XOR e XNOR para ficar claro (apenas para duas entradas X e Y):
\begin{array}{c c|c|c} X & Y & X\oplus Y & \overline{X\oplus Y}\\hline 0 & 0 & 0 & 1\\\\ 0 & 1 & 1 & 0\\\\ 1 & 0 & 1 & 0\\\\ 1 & 1 & 0 & 1 \end{array}
Da tabela vê-se que \overline{X\oplus Y} (XNOR) vale 1 exatamente quando X=Y.

Passo 3

Expressão booleana final: para cada bit i defina o sinal de igualdade
E_i = \overline{A_i \oplus B_i}\qquad\text{para }i=0,1,2,3.
A saída final (vou chamar de EQ) é 1 apenas se todos os E_i forem 1:
EQ = E_3 \land E_2 \land E_1 \land E_0.
Substituindo E_i:
EQ = \bigwedge_{i=0}^{3} \overline{A_i \oplus B_i}.
Essa expressão diz exatamente o que se quer: cada par de bits deve ser igual (cada XNOR = 1) e todos devem ser verdadeiros simultaneamente.

Passo 4

Descrição do diagrama de portas (passo a passo para desenhar):
  1. Desenhe os 8 fios de entrada à esquerda rotulados \,A_3,A_2,A_1,A_0 e \,B_3,B_2,B_1,B_0.
  2. Para cada par (A_i,B_i) coloque uma porta XNOR (ou uma combinação que implemente XNOR) com a saída rotulada E_i.
    • Assim há quatro XNORs: um para (A_3,B_3) produz E_3, outro para (A_2,B_2) produz E_2, etc.
  3. Pegue as quatro saídas E_3,E_2,E_1,E_0 e alimente-as em uma porta AND com quatro entradas (ou em uma árvore de ANDs 2-entradas) cuja saída é EQ.
  4. Saída EQ é o sinal que fica em nível ALTO apenas quando A=B.
Observação prática de desenho:
  • Se não houver AND de 4 entradas no conjunto de portas disponível, use três portas AND de 2 entradas para fazer uma árvore equilibrada, por exemplo:
    • T_1 = E_3 \land E_2
    • T_2 = E_1 \land E_0
    • EQ = T_1 \land T_2

Passo 5

Implementação alternativa caso não exista XNOR na biblioteca:
  • XNOR pode ser implementada com portas básicas (AND, OR, NOT). Duas formas úteis:
    1. Usando XOR e NOT: \overline{A_i\oplus B_i} = \text{NOT}(A_i\oplus B_i).Então coloque uma porta XOR em (A_i,B_i) e depois uma NOT na saída.
    2. Fórmula direta (mais gate-friendly): \overline{A_i\oplus B_i} = (A_i\land B_i) \lor (\overline{A_i}\land \overline{B_i}).Isso usa duas ANDs (uma para A_i\land B_i, outra para \overline{A_i}\land \overline{B_i}), um NOT em cada entrada (para obter \overline{A_i} e \overline{B_i}), e uma OR final.
Mostre como desenhar um XNOR por essa segunda forma:
  • Para cada bit:
    • Faça NOT de A_i e NOT de B_i.
    • AND1 = A_i \land B_i.
    • AND2 = \overline{A_i} \land \overline{B_i}.
    • XNOR out E_i = OR(AND1, AND2).

Passo 6

Exemplo numérico passo a passo (para fixar):
  • Tome A = 1011 e B = 1011.
    • Para i=3: A_3=1, B_3=1 \Rightarrow A_3\oplus B_3=0, então E_3=\overline{0}=1.
    • Para i=2: A_2=0, B_2=0 \Rightarrow E_2=1.
    • Para i=1: A_1=1, B_1=1 \Rightarrow E_1=1.
    • Para i=0: A_0=1, B_0=1 \Rightarrow E_0=1.
    • EQ = 1\land1\land1\land1 = 1. Saída ALTA: números iguais.
  • Agora A=1011, B=1001 (difere no bit 1):
    • Para i=1: A_1=1, B_1=0 \Rightarrow E_1=0.
    • Algum E_i=0 já faz EQ=0. Saída BAIXA: números diferentes.

Passo 7

Considerações práticas rápidas para prova/implementação:
  • Se o conjunto de portas tem XNOR de 2 entradas e AND de 4 entradas, a implementação é direta e curta: 4 XNOR + 1 AND(4).
  • Se só há portas 2-entrada, faça a árvore de ANDs (duas AND para pares, depois uma AND final).
  • Se só há NAND (comum em algumas bibliotecas), é possível implementar XNOR e AND usando apenas NANDs (mas isso exige conhecer transformações De Morgan — posso mostrar se quiser).
  • Propagação de atraso: o caminho crítico passa por uma XNOR e depois pela árvore de ANDs. Em circuitos de alta velocidade pode-se balancear a árvore de ANDs para reduzir atraso.

Passo 8

Resumo para desenhar rapidamente na folha da prova (instrução direta):
  • Desenhe 4 blocos XNOR rotulados XNOR0…XNOR3. Conecte (A_3,B_3)\toXNOR3, (A_2,B_2)\toXNOR2, (A_1,B_1)\toXNOR1, (A_0,B_0)\toXNOR0.
  • Saídas XNOR3…XNOR0 vão para uma porta AND de 4 entradas (ou para uma árvore de ANDs 2x2 conforme explicado).
  • Saída dessa AND é EQ — nível ALTO somente se todos os XNORs indicarem igualdade.

Resposta

Use quatro portas XNOR aplicadas aos pares (A_3,B_3),(A_2,B_2),(A_1,B_1),(A_0,B_0) para gerar E_3,E_2,E_1,E_0 com E_i=\overline{A_i\oplus B_i}, e então aplique um AND de quatro entradas em E_3,E_2,E_1,E_0. A saída é
EQ = E_3\land E_2\land E_1\land E_0 = \bigwedge_{i=0}^{3}\overline{A_i\oplus B_i},
que fica em nível ALTO somente quando os quatro bits de A e B são idênticos.

Exercícios relacionados