Ex.9. Projete um circuito com cinco entradas que produza uma saída em nível alto quando três ou mais entradas estiverem em níveis altos.

Passo 1

O enunciado pede: projetar um circuito com cinco entradas que produza saída em nível alto exatamente quando três ou mais entradas estiverem em nível alto.
As informações dadas (vou nomear as entradas para ficar mais fácil):
  • Entradas: A,\;B,\;C,\;D,\;E (cada uma é 0 ou 1).
  • Saída desejada: nível alto (1) quando o número de entradas iguais a 1 for maior ou igual a 3; caso contrário a saída deve ser 0.
    O objetivo é dar uma expressão lógica/circuito que implemente essa condição.

Passo 2

Ideia básica (intuição que a solução explora). Vou explicar passo a passo o raciocínio que leva a um projeto pronto para prova, sem pular nada.
  • Se queremos que a saída seja 1 quando pelo menos três entradas são 1, podemos olhar para todos os conjuntos de três entradas possíveis.
  • Sempre que um conjunto particular de três entradas estiver todo em 1, isso já garante que “pelo menos três” entradas são 1 (pois as outras podem ser 0 ou 1). Ou seja, o AND das três entradas será 1 sempre que aquelas três específicas forem 1, independentemente das demais.
  • Portanto, se fizermos um OR de todos os ANDs de todas as combinações de três entradas, obtêm-se 1 sempre que existir pelo menos uma combinação de três entradas igual a 1 — exatamente a condição “três ou mais entradas em 1”.
  • Observação combinatória: o número de combinações de 3 entradas entre 5 é \binom{5}{3}=10. Então teremos 10 termos do tipo AND de três variáveis.

Passo 3

Construção direta por soma de produtos (método simples e direto para prova).
  • Escrevendo explicitamente os 10 termos (cada termo é um AND de três entradas) e fazendo OR entre eles, obtemos a expressão booleana do circuito:
F = A B C + A B D + A B E + A C D + A C E + A D E + B C D + B C E + B D E + C D E
(onde + é OR e justaposição como A B C é AND de A, B e C).
  • Explicação didática: por exemplo, o termo A B C vale 1 quando A=1,\;B=1,\;C=1 (independente de D e E). Se qualquer um dos 10 termos for 1, significa que existe um conjunto de três entradas em 1 → então há pelo menos três entradas em 1 → saída deve ser 1. Se houver exatamente 3, exatamente 4 ou 5 entradas em 1, pelo menos um desses termos será 1; se houver 0,1 ou 2 entradas em 1, nenhum termo será 1.

Passo 4

Como implementar fisicamente o circuito (detalhe prático para a prova).
  • Implementação direta: 10 portas AND de 3 entradas cada (cada uma implementa um dos produtos \,ABC,\;ABD,\dots), cujas saídas alimentam uma porta OR de 10 entradas.
  • Se em sala/prova só houver portas de 2 entradas, cada AND de 3 entradas pode ser feito por duas ANDs de 2 entradas em cascata (por exemplo A B C = (A\land B)\land C). A OR de 10 entradas faz-se como uma árvore de ORs de 2 entradas (por exemplo, OR pares em cascata até reduzir a 1 saída).
  • Estimativa de portas (implementação com portas 2-entrada): para os dez ANDs de 3 entradas são necessários 10\times 2=20 portas AND de 2 entradas (cada AND de 3 feito com duas ANDs de 2). A OR de 10 entradas pode ser feita com 9 portas OR de 2 entradas (árvore ou cascata). Total aproximado: 29 portas lógicas de 2 entradas (além de fios). Isso é perfeitamente aceitável para uma prova, mostrando-se clareza e correção.

Passo 5

Alternativa (mais estruturada): contar uns com somadores e comparar com 3. (útil saber para reorganizar e, às vezes, reduzir portas)
  • Montar um contador/popcount que soma as cinco entradas (contagem de 1s) e produz um resultado binário de 3 bits S_2 S_1 S_0 (pois o total varia de 0 a 5).
  • A condição “contagem \ge 3” corresponde à função booleana dos bits da soma:
F = S_2 \;+\; (S_1 \land S_0).
Explicação: valores possíveis da soma em binário:
0=000,\;1=001,\;2=010,\;3=011,\;4=100,\;5=101.
Para \ge3 aparecem os padrões 011,100,101. Observa-se que isso é equivalente a S_2=1 ou (quando S_2=0) ter S_1=1 e S_0=1; por isso S_2 \lor (S_1\land S_0).
  • Implementação do contador: usa-se somadores (half/full adders) em árvore: por exemplo, soma A+B (2 bits), soma C+D (2 bits), depois soma os dois resultados e E para obter os 3 bits finais. Essa abordagem costuma usar menos portas em implementações com blocos adder já disponíveis (ICs) e é escalável.

Passo 6

Comparação prática entre as duas abordagens (o que levar na prova):
  • Soma de produtos (Passo 3): direto, fácil de justificar, ótimo para prova teórica. Fácil de desenhar e provar correção. Usa mais portas simples, mas conceitualmente simples.
  • Contador + comparador (Passo 5): mais elegante em termos de estrutura (conta e compara), frequentemente mais eficiente em tecnologia que tem blocos de adder prontos. Requer desenhar a soma em árvore (mais trabalho para justificar em prova, mas também é uma solução “industrial”).
    Escolha a que for exigida ou mais simples para desenhar no tempo da prova.

Passo 7

Resumo de como desenhar o diagrama para entregar na prova (passo-a-passo para desenhar rapidamente):
  • Método direto (recomendado para prova rápida):
    1. Desenhe 10 ANDs de 3 entradas; rotule cada AND com uma combinação diferente de três entradas: ABC,\;ABD,\;\dots,\;CDE.
    2. Ligue as saídas desses ANDs a uma porta OR (com suficiente número de entradas, ou uma árvore de ORs).
    3. Saída da OR é F. Pronto — explique em uma frase: “cada AND detecta um conjunto de 3 entradas em 1; OR indica existência de pelo menos um conjunto → pelo menos 3 entradas em 1.”
  • Se quiser ser compacto: desenhe a árvore de ANDs/ORs usando portas de 2 entradas para mostrar implementação prática.

Resposta

F = A B C + A B D + A B E + A C D + A C E + A D E + B C D + B C E + B D E + C D E

Exercícios relacionados