Implemente usando dois decodificadores 3 \times 8 mais lógica adicional.
Passo 1
O enunciado pede que se implemente a função booleana dada por
f=\sum(0,2,3,7,9,11,13,14)+d(12,15),
usando dois decodificadores 3\times8 mais lógica adicional.
Informações chave que temos:
A função é de quatro variáveis (porque há minterms de 0 a 15). Vou nomear as variáveis como A,B,C,D com A sendo o bit mais significativo (MSB) e D o menos significativo (LSB).
Os minterms com saída 1 são \;0,2,3,7,9,11,13,14.
Os minterms como “don’t care” são \;12,15.
Deve-se usar exatamente dois decodificadores 3\times8 (cada um tem 3 entradas e 8 saídas) e lógica complementar extra (AND/OR/NOT) quando necessário.
Passo 2
Entendendo o que faz um decodificador 3\times8 e como usá‑lo aqui (aula rápida mas completa).
Um decodificador 3\times8 tem 3 entradas (vou usar B,C,D como entradas dos decodificadores) e 8 saídas o_0,\dots,o_7. Quando habilitado (enable = 1), exatamente uma saída o_i fica igual a 1, onde i é o número binário formado por (B,C,D); as outras saídas ficam 0.
Se o enable = 0, todas as saídas ficam 0.
Logo, se eu usar dois decodificadores com as mesmas entradas B,C,D, e usar A (ou sua negação) como sinal de enable, obtenho as duas metades da tabela de verdade da função de 4 variáveis:
Decodificador D_0: habilitado por \bar A — gera os minterms m_0 a m_7 quando A=0.
Decodificador D_1: habilitado por A — gera os minterms m_8 a m_{15} quando A=1.
Cada saída do decodificador corresponde a um produto literal (um minterm). Por exemplo, a saída o_0 do decodificador habilitado por \bar A corresponde ao produto \bar A\bar B\bar C\bar D (isto é, minterm 0).
Passo 3
Mapeamento dos minterms para as saídas dos dois decodificadores (vou nomear as saídas do decodificador com \overline{A} habilitado como y_0,\dots,y_7 e as do com A habilitado como z_0,\dots,z_7). Lembrete: índice i em y_i ou z_i corresponde ao valor decimal de (B,C,D).
Quando A=0 (decodificador y):
m_0 \rightarrow y_0
m_2 \rightarrow y_2
m_3 \rightarrow y_3
m_7 \rightarrow y_7
(porque os minterms 0,2,3,7 têm A=0.)
Quando A=1 (decodificador z):
m_9 \rightarrow z_1 (pois 9=8+1, e (B,C,D)=001 é índice 1)
m_{11} \rightarrow z_3
m_{13} \rightarrow z_5
m_{14} \rightarrow z_6
os don’t-cares 12\rightarrow z_4 e 15\rightarrow z_7 estão disponíveis se quisermos usá‑los para simplificar.
Passo 4
Expressão direta usando as saídas dos decodificadores (solução direta e clara).
Cada saída y_i ou z_j já representa um produto literal com o enable aplicado. Assim a implementação direta é fazer a OR (somador lógico) das saídas correspondentes:
Ligar entradas B,C,D aos três inputs de ambos os decodificadores.
Ligar o enable do primeiro decodificador em \bar A (usa-se um inversor em A para obter \bar A).
Ligar o enable do segundo decodificador diretamente em A.
Fazer uma porta OR que receba as oito saídas listadas acima; a saída dessa OR é f.
Essa é a implementação mais direta usando exatamente dois decodificadores 3\times8 mais uma porta OR (ou uma árvore de ORs) e um inversor para \bar A.
Passo 5
(Opcional, para otimizar) Simplificação da função usando mapa de Karnaugh e os don’t‑cares — para diminuir o número de entradas da OR ou usar portas lógicas simples em vez de muitas entradas OR.
Montei o mapa e usei d(12,15) para agrupar maior número de 1’s. Uma escolha de cobertura ótima dá (passo a passo da simplificação algébrica):
Agrupando coluna C D = 11 (usando o don’t‑care 15) obtemos o termo \;C D, que cobre m_3,m_7,m_{11} (e usa m_{15} como X).
Agrupando (m_0,m_2) obtém-se \;\bar A\bar B\bar D (elimina C).
Agrupando (m_9,m_{13}) obtém-se \;A\bar C D (pois C=0,D=1,A=1).
Usando m_{14} junto com m_{15} (don’t care) obtém‑se \;A B C.
Com isso uma forma simplificada é
f = C D + \bar A\bar B\bar D + A\bar C D + A B C.
Dá para reduzir um pouco mais o termo envolvendo CD e A\bar C D: note que
C D + A\bar C D = D(C + A\bar C) = D(C + A),
logo uma forma ainda mais compacta é
f = D(A + C) + \bar A\bar B\bar D + A B C.
Essa expressão é útil porque usa poucas portas AND/OR/NOT (por exemplo: um AND simples para D(A+C), outro AND para \bar A\bar B\bar D, outro para ABC, e uma OR final). Se for permitido usar portas lógicas além dos decodificadores, essa forma reduz hardware em relação a OR de 8 sinais.
Passo 6
Como escolher entre as duas implementações (prática para a prova):
Se a instrução pedir literalmente “usar dois decodificadores 3\times8 mais lógica adicional” sem otimização específica, a implementação direta do Passo 4 (OR das oito saídas selecionadas, enables \bar A e A) é a mais simples, rápida e aceita em prova.
Se na prova for valorizada economia de portas, apresente também a expressão simplificada do Passo 5 e diga que se pode implementar com dois decodificadores (para gerar minterms que se queira) e mais algumas portas AND/OR/NOT conforme a expressão simplificada. Por exemplo, pode-se não usar os decodificadores para todos os termos: calcular diretamente D(A+C) com um OR e um AND, e gerar \bar A\bar B\bar D com uma pequena rede de ANDs/NOTs, etc.
Resposta
Implementação direta com dois decodificadores 3\times8: ligar B,C,D às entradas dos dois decodificadores; habilitar o primeiro por \bar A e o segundo por A; fazer a OR das saídas