Ex.11. Usando decodificadores BCD para decimal mais lógica adicional, projete um decodificador 4 \times 16.
Passo 1
O que o problema pede e o que temos disponível.
Pede: projetar um decodificador 4\times16 — ou seja, um circuito com 4 entradas (A_3,A_2,A_1,A_0) e 16 saídas Y_0,\dots,Y_{15}, tal que exatamente uma saída Y_k fica ativa quando o vetor de entrada representa o número k (valores de 0 a 15 em binário).
Recurso imposto: só usar decodificadores BCD→decimal (ou seja, decodificadores 4-para-10 que geram saídas D_0,\dots,D_9 ativas para entradas 0\dots9) e lógica adicional (portas, inversores, ligações constantes).
Informação sobre o decodificador BCD→decimal que vamos usar (pressuposto típico): tem 4 entradas (bits), tem saída ativa em D_i quando a entrada é o código BCD de i para i=0,\dots,9; para entradas 10\dots15 todas as saídas ficam inativas. Também tem um pino de habilitação (enable) que permite habilitar/desabilitar o funcionamento (alternativa: se não houver enable interno, podemos aplicar AND externo com um sinal de habilitação).
Passo 2
Ideia geral do projeto (intuição antes de montar): particionar o espaço de entradas por \,A_3.
Observação chave: o bit A_3 vale 1 exatamente para os números de 8 a 15, e vale 0 para os números de 0 a 7.
Assim podemos usar dois blocos que nunca atuam ao mesmo tempo:
um bloco para os casos com A_3=0 (decodifica 0\dots7);
outro bloco para os casos com A_3=1 (decodifica 8\dots15).
Um decodificador BCD→decimal decode normalmente 0\dots9. Para a faixa 8\dots15 podemos reaproveitá‑lo se fizermos o seguinte truque: quando A_3=1 queremos que as saídas Y_8\dots Y_{15} sigam a decodificação dos três bits inferiores A_2A_1A_0 (valores 0\dots7). Então podemos alimentar um segundo decodificador BCD→decimal com as entradas (0,A_2,A_1,A_0) — isto é, forçar o bit mais significativo do decodificador igual a 0 — e habilitá‑lo somente quando A_3=1. Os seus outputs D_0\dots D_7 corresponderão então a Y_8\dots Y_{15}.
Passo 3
Descrição detalhada do circuito (ligações e sinais).
Usar dois decodificadores BCD→decimal idênticos; chamá‑los de Dec0 e Dec1.
Ligações:
Dec0: entradas conectadas a (A_3,A_2,A_1,A_0). Pino de habilitação (enable) de Dec0 ligado a \overline{A_3} (o inverso de A_3).
Dec1: entradas conectadas a (0,A_2,A_1,A_0) — ou seja, o MSB do decodificador é conectado a nível lógico 0 (terra), e os três LSBs são A_2,A_1,A_0. Pino de habilitação de Dec1 ligado a A_3.
Conexão das saídas:
Para i=0,\dots,7: Y_i = saída D_i do Dec0.
Para i=8,\dots,15: Y_i = saída D_{i-8} do Dec1 (por exemplo Y_8=D_0^{(\text{Dec1})}, Y_{15}=D_7^{(\text{Dec1})}).
Observações práticas:
As saídas D_8,D_9 de cada decodificador simplesmente não são usadas (ficam desconectadas).
Como Dec0 está habilitado somente quando A_3=0 e Dec1 somente quando A_3=1, não há conflito entre saídas — sempre no máximo um decodificador está ativo.
Passo 4
Por que isso funciona — prova por análise de casos.
Caso A_3=0 (entradas representam 0\dots7):
Dec0 está habilitado (\overline{A_3}=1). Dec0 vê exatamente o número binário (0,A_2,A_1,A_0) e ativa a saída D_k correspondente ao valor k\in\{0,\dots,7\}. As saídas do Dec1 estão desligadas porque seu enable = A_3=0. Logo Y_k=D_k^{(\text{Dec0})} é a única saída ativa — correto para k=0\dots7.
Caso A_3=1 (entradas representam 8\dots15):
Dec0 está desabilitado (\overline{A_3}=0) e, portanto, suas saídas inativas. Dec1 está habilitado (A_3=1). Dec1 recebe (0,A_2,A_1,A_0) e ativa D_j^{(\text{Dec1})} com j\in\{0,\dots,7\} igual ao valor dos três bits A_2A_1A_0. Esse j corresponde a i-8 se o número original for i\in\{8,\dots,15\}. Assim Y_i=D_{i-8}^{(\text{Dec1})} é a única saída ativa — correto para i=8\dots15.
Exemplo concreto: entrada (A_3,A_2,A_1,A_0)=(1,1,0,1) que é decimal 13. Então A_3=1 habilita Dec1 e seus três bits inferiores A_2A_1A_0=101 correspondem a 5. Dec1 ativa D_5 e isso é ligado a Y_{8+5}=Y_{13}. Corresponde exatamente ao desejado.
Passo 5
Alternativa se os decodificadores não tiverem pino de enable externo.
Se o BCD→decimal que se tem não possui enable, implementa‑se a habilitação com ANDs externos:
Y_i = \overline{A_3}\,\land\,D_i^{(\text{Dec0})} para i=0\dots7.
Y_{8+i} = A_3\,\land\,D_i^{(\text{Dec1})} para i=0\dots7.
Neste caso liga‑se as entradas como antes (Dec1 recebe (0,A_2,A_1,A_0)), e as saídas dos decodificadores passam por AND com o respectivo gating por A_3 ou \overline{A_3}. O resultado lógico é o mesmo: apenas o grupo correto de saídas pode ficar ativo.
Passo 6
Resumo das ligações e mapa final (para implementar na prova ou em esquemático).
Observação final: usa-se apenas dois decodificadores 4-para-10 mais um inversor (para \overline{A_3}) — ou, se necessário, gates AND para implementar habilitação — atendendo exatamente ao enunciado “decodificadores BCD para decimal mais lógica adicional”.
Resposta
Usar dois decodificadores BCD→decimal e um inversor:
Dec0: entradas (A_3,A_2,A_1,A_0), enable = \overline{A_3}. Saídas Y_i = D_i^{(\text{Dec0})} para i=0,\dots,7.
Dec1: entradas (0,A_2,A_1,A_0), enable = A_3. Saídas Y_{8+i} = D_i^{(\text{Dec1})} para i=0,\dots,7.