Considerando a função abaixo, pede-se:
Implemente usando dois multiplexadores 8:1 mais lógica adicional.
Passo 1
O enunciado dá a função booleana
ou seja, é uma função de quatro variáveis (índices de
a
indicam todas as combinações de quatro variáveis). O pedido é: implementar
usando dois multiplexadores
mais lógica adicional.
Informações relevantes que extraí do enunciado:
- A função tem minterms verdadeiros em
. - Existem don’t-cares em
. - Vou chamar as quatro variáveis de
com sendo o bit mais significativo (MSB). Assim o índice é o número binário . - Um multiplexador
tem três entradas de seleção e oito entradas de dados; cada entrada de dados pode receber , ou alguma entrada de variáveis.
Passo 2
Estratégia (sem resolver ainda): usar a expansão de Shannon em torno de uma variável (escolho
por ser MSB). Escrevo
Cada função
e
depende só de
(três variáveis) e pode ser diretamente implementada por um multiplexador
usando
como seletores. Depois combino as saídas dos dois
com lógica simples controlada por
(do tipo
AND saída0,
AND saída1, em seguida OR).
Explico por quê isso funciona: um
seleciona uma das oito entradas de dados segundo as três linhas de seleção; se as entradas de dados forem os valores de
para as combinações de
(com
fixo), a saída do MUX é exatamente
.
Passo 3
Breve aula sobre o
que usarei:
- Um
tem entradas de dados e entradas de seleção . Quando é o binário , a saída do MUX é . - Vou usar a ordem natural
correspondente a , a , …, a . Ou seja, o índice do minterm local (0…7) é simplesmente o valor binário de . - Então, para
os minterms a dão os valores que coloco em do primeiro MUX; para os minterms a dão os valores para o segundo MUX.
Passo 4
Construção da tabela para
(índices
a
). Vou listar cada índice em binário
e o valor de
:
-
: está em → . -
: não está em → . -
: está → . -
: está → . -
: não está → . -
: não está → . -
: não está → . -
: está → .
Portanto, para o MUX correspondente a
(chamo sua saída de
), os dados são
Passo 5
Construção da tabela para
(índices
a
). Listei os minterms e don’t-cares:
-
: não está em → . -
: está → . -
: não está → . -
: está → . -
: é don’t-care → posso escolher ou . -
: está → . -
: está → . -
: é don’t-care → posso escolher ou .
Para simplicidade escolho
e
(ou seja, resolvo ambos don’t-cares como
). Assim para o MUX correspondente a
(saída
) tenho:
Observação: os don’t-cares poderiam ser escolhidos de outra forma se houver vantagem de simplificação adicional, mas para implementação com dois
e portas AND/OR essa escolha é perfeitamente válida.
Passo 6
Como ligar fisicamente os componentes (explicação prática e didática):
- Uso dois
: MUX0 e MUX1. - Em ambos, conecto as linhas de seleção
aos sinais (defino ). Assim o índice do MUX corresponde ao valor binário de . - Carrego nas entradas de dados de MUX0 (caso
) os valores do Passo 4: - Carrego nas entradas de dados de MUX1 (caso
) os valores do Passo 5: - As saídas dos MUXs chamo
(saída de MUX0) e (saída de MUX1). Cada uma vale o valor de quando é respectivamente ou .
Passo 7
Combinação final por
. Pela expansão de Shannon:
Isto é implementado com duas portas AND e uma porta OR:
- Portas AND:
e . - Porta OR:
.
Se preferir, pode realizar
com um inversor e então as duas ANDs e uma OR. Essa é a “lógica adicional” pedida no enunciado (um inversor, duas ANDs e uma OR).
Passo 8
Checagem rápida (exemplos) para ganhar confiança:
- Minterm
: , MUX0 seleciona , então . Como temos (corresponde ao fato de estar em ). - Minterm
: , MUX1 seleciona , então . Como temos (corresponde ao fato de estar em ). - Minterm
é don’t-care: escolhi , então a implementação dá ali, o que é permitido.
Passo 9
Resumo das ligações passo a passo (prático para montar na prova/placa):
- Sinais de seleção de ambos MUX:
. - Entradas de dados de MUX0 (caso
): . - Entradas de dados de MUX1 (caso
): . - Saídas:
de MUX0 e de MUX1. - Faça
com um inversor. - Calcule
e . - Finalmente
.
Resposta
Conectar dois MUX
com seletores
. MUX0 (para
) tem entradas
. MUX1 (para
) tem entradas
(escolhidos don’t-cares
como 0). Saídas
vão para a lógica adicional
(inversor em
, duas ANDs e uma OR).