Usando um decodificador
, implemente a função:
Passo 1
O enunciado fornece o seguinte (vou listar exatamente o que temos e o que pedem):
- Disponível: um decodificador de
(ou seja, tem quatro entradas e 16 saídas). - Variáveis de entrada da função:
. - A função a ser implementada é
O que se pede: implementar
usando o decodificador
. Não há outras restrições explícitas.
Passo 2
O que é e como funciona um decodificador
(explicação didática, passo a passo):
- Um decodificador
tem quatro entradas (vou assumir a convenção usual: é o bit mais significativo — MSB — e o menos significativo — LSB) e 16 saídas . - A propriedade fundamental: exatamente uma saída
fica em nível alto (1) para cada combinação de entradas; essa saída corresponde ao índice cujo binário é o valor das entradas. - Em notação de mintermos, isso significa que
implementa o mintermo . Ou seja, para a combinação igual ao binário de , temos e todas as outras saídas são 0. - Assumo também saídas ativas em nível alto (active-high). Se o decodificador que você tiver for active-low, é preciso inverter as saídas ou usar lógica adequada — aqui trabalho com active-high porque é o caso mais comum em exercícios.
Resumo prático: ligar
às entradas do decodificador produz diretamente todas as 16 possibilidades de mintermos nas saídas
a
. Para formar
basta OR (somar logicamente) as saídas correspondentes aos mintermos desejados.
Passo 3
Identificar os mintermos pedidos e escrever suas formas em literais (peguei os índices do enunciado):
-
: índice em binário é , ou seja . Então
-
: índice em binário é , ou seja . Então
-
: índice em binário é , ou seja . Então
-
: índice em binário é , ou seja . Então
-
: índice em binário é , ou seja . Então
Observação direta: a saída do decodificador
corresponde a
. Ou seja,
,
,
,
,
.
Passo 4
Implementação direta com o decodificador (método mais simples e pedido pelo enunciado):
- Ligue as entradas do decodificador às variáveis
(na ordem assumida: MSB, LSB). - Pegue as saídas
do decodificador e aplique uma porta OR que faça a soma lógica desses sinais. - Em expressão usando as saídas do decodificador:
Isto resolve diretamente a implementação pedida: o decodificador gera os mintermos e a porta OR agrega os mintermos necessários.
Prática na prova: se tiver apenas portas OR de 2 entradas, faça a OR em cascata (por exemplo, OR
com
=>
; OR
com
=>
; OR
com
=>
; OR
com
=>
). Isso é equivalente e realizável sem porta OR de 5 entradas.
Passo 5
(Opcional — otimização usando combinações de saídas do decodificador para reduzir porte de ORs)
- Podemos usar propriedades algébricas para reduzir o número de entradas das portas OR antes de chegar ao OR final, aproveitando que certos pares de mintermos diferem apenas em
e, portanto, quando ORados eliminam . - Observe:
Logo,
. Na prática, pode-se ORar
e
para obter um termo mais simples.
- Também:
Ou, escrevendo o
em portas básicas,
.
- Mantemos
isolado. - Assim uma forma reduzida (útil se quiser reduzir fan-in do OR) é
e, em termos das saídas do decodificador, uma implementação prática é:
-
(produz ), -
(produz quando expandido), -
. - Essa estratégia diminui a quantidade de entradas de uma única porta OR (útil quando portas de alta fan-in não estão disponíveis).