Ex.6. Mostre como um multiplexador de 16 entradas, CI 74LS150, pode ser usado para gerar a função lógica:
Z=\bar{A} \cdot \bar{B} \cdot \bar{C} \cdot D+B C D+A \bar{B} D+A B \bar{C} D
Passo 1
O enunciado pede para mostrar como um multiplexador de 16 entradas (CI 74LS150) pode ser usado para gerar a função
Z=\bar{A}\cdot\bar{B}\cdot\bar{C}\cdot D + B C D + A \bar{B} D + A B \bar{C} D.
Informações relevantes dadas pelo enunciado:
A função lógica Z está expressa em termos das variáveis A,B,C,D.
Deve-se utilizar um multiplexador de 16 entradas (CI 74LS150).
O objetivo é apresentar o detalhamento da conexão dos pinos do multiplexador (entradas de dados e linhas de seleção) de modo que o canal de saída do CI forneça a função Z.
Passo 2
O que é e como funciona um multiplexador de 16 entradas (conceito essencial, bem mastigado).
Um multiplexador de 16 entradas tem 16 entradas de dados I_{0},I_{1},\dots,I_{15} e 4 linhas de seleção S_{3},S_{2},S_{1},S_{0}.
O princípio de operação: as quatro linhas de seleção escolhem um índice de 0 a 15; o valor presente na entrada de dados correspondente aparece na saída.
Em termos booleanos, se o seletor binário (S_{3}S_{2}S_{1}S_{0}) seleciona o índice k, então a saída é Y=I_{k}.
Observação prática sobre o CI 74LS150: muitos datasheets indicam que a saída é ativa-baixa (ou seja, o chip fornece \overline{Y} em vez de Y). Isso significa que, se o CI disponível fornece saída invertida, basta acrescentar um inversor na saída (ou programar entradas complementares) para obter Z. Nesta resolução eu apresento a lógica assumindo um multiplexador “direto” (saída igual ao dado selecionado). Se o CI concreto tiver saída ativa-baixa, inverter a saída final com um inversor simples (por exemplo 74LS04) corrige isso.
Passo 3
Observação algébrica simples para simplificar a implementação.
Note que todos os termos dados na expressão original contêm a variável D. Então podemos fatorar D:
Z = D \cdot \big(\bar{A}\bar{B}\bar{C} + B C + A\bar{B} + A B \bar{C}\big).
Defina a função auxiliar
F(A,B,C)=\bar{A}\bar{B}\bar{C} + B C + A\bar{B} + A B \bar{C}.
Assim \;Z = D\cdot F(A,B,C).
Interpretação prática: quando D=0 então Z=0 para quaisquer A,B,C. Quando D=1 então Z=F(A,B,C). Isso sugere usar um multiplexador com entradas de dados que sejam ou 0 ou D (ou, equivalentemente, usar um multiplexador de 8 entradas com seletoras A,B,C e entradas valendo D ou 0).
Passo 4
Escolha do método de conexão no 74LS150 (por que e como reduzir para 8 entradas).
Um 74LS150 tem 4 linhas de seleção; como F depende apenas de A,B,C (3 variáveis), é conveniente usar um bloco com só 3 linhas de seleção. Podemos eliminar uma linha de seleção prendendo-a a 0 (terra), assim só serão selecionadas as entradas I_{0} a I_{7}. Procedimento prático que vou adotar:
Amarrar o seletor mais significativo S_{3} em lógica 0 (GND).
Ligar S_{2}=A,\; S_{1}=B,\; S_{0}=C. Assim os índices 0 a 7 mapeiam todas as combinações de (A,B,C).
Consequência: a saída do MUX será igual à entrada I_{k} onde k é o número binário formado por (A,B,C). Então basta programar I_{k} para ser D quando F(A,B,C)=1 e 0 quando F(A,B,C)=0. Quando D=0 todos os I_{k} valendo D serão 0 e teremos Z=0, conforme exigido.
Passo 5
Avaliação completa de F(A,B,C) para cada combinação de A,B,C — construindo a tabela (passo-a-passo).
Vamos calcular F para cada combinação (A,B,C). Vou listar a combinação em binário e avaliar F.
(A,B,C)=(0,0,0): \bar{A}\bar{B}\bar{C}=1 então F=1.
(A,B,C)=(0,0,1): todos os termos são 0 \Rightarrow F=0.
(A,B,C)=(0,1,0): todos os termos são 0 \Rightarrow F=0.
(A,B,C)=(0,1,1): termo BC=1\Rightarrow F=1.
(A,B,C)=(1,0,0): termo A\bar{B}=1\Rightarrow F=1.
(A,B,C)=(1,0,1): termo A\bar{B}=1\Rightarrow F=1.
(A,B,C)=(1,1,0): termo AB\bar{C}=1\Rightarrow F=1.
(A,B,C)=(1,1,1): termo BC=1\Rightarrow F=1.
Resumo em tabela índice (índice k em binário ABC):
k=0 (000): F=1
k=1 (001): F=0
k=2 (010): F=0
k=3 (011): F=1
k=4 (100): F=1
k=5 (101): F=1
k=6 (110): F=1
k=7 (111): F=1
Passo 6
Definir os estados das entradas de dados do MUX I_{0} a I_{7} usando a propriedade Z=D\cdot F.
Como Z=D\cdot F, para cada índice k com F=1 devemos colocar I_{k}=D. Para cada índice com F=0 devemos colocar I_{k}=0.
Portanto as atribuições (para os oito primeiros canais) são:
I_{0}=D (porque F(0,0,0)=1)
I_{1}=0
I_{2}=0
I_{3}=D
I_{4}=D
I_{5}=D
I_{6}=D
I_{7}=D
As entradas I_{8} a I_{15} não são selecionadas quando amarramos S_{3}=0; por robustez podem ser ligadas a 0 (GND) ou deixadas em nível definido conforme datasheet.
Passo 7
Conexões físicas resumidas e observações sobre o CI 74LS150 (passo a passo para montar no ferro de solda ou protoboard).
Amarrar S_{3}=0 (GND).
Ligar S_{2}=A, S_{1}=B, S_{0}=C.
Conectar as entradas de dados conforme:
I_{0} ligado à linha D.
I_{1} ligado a 0 (GND).
I_{2} ligado a 0 (GND).
I_{3} ligado à linha D.
I_{4} ligado à linha D.
I_{5} ligado à linha D.
I_{6} ligado à linha D.
I_{7} ligado à linha D.
I_{8} a I_{15} opcionalmente a 0 (GND).
Se o 74LS150 que se tem possui saída ativa-baixa (isto é, fornece \overline{Y}), então colocar um inversor na saída para obter Z. Alternativamente, ao invés de inverter a saída, poderia-se carregar cada I_{k} com o complemento (por exemplo I_{k}=\bar{D} quando necessário), mas usar um inversor externo é mais direto e claro.
Verificar e ligar os pinos de habilitação (enable / strobe) do CI conforme datasheet: manter habilitado (por exemplo GND ou nível ativo indicado pelo datasheet) durante a operação.
Passo 8
Cheque final lógico (um exemplo de verificação mental rápida).
Se D=0 então todas as entradas I_{k} que valem D serão 0, assim a saída do MUX será 0 para qualquer (A,B,C) — corresponde a Z=0.
Se D=1 então as entradas I_{k} que valem D passam a 1 exatamente nos índices k listados (0,3,4,5,6,7), portanto o MUX seleciona 1 nesses casos e 0 nos demais, reproduzindo F(A,B,C) e portanto Z=D\cdot F(A,B,C)=F(A,B,C) quando D=1. Isso confirma a implementação.
Resposta
Conectar o 74LS150 como um MUX de 8 entradas (amarrando S_{3}=0) com S_{2}=A,\;S_{1}=B,\;S_{0}=C. Programar as entradas de dados assim: I_{0}=D,\;I_{1}=0,\;I_{2}=0,\;I_{3}=D,\;I_{4}=D,\;I_{5}=D,\;I_{6}=D,\;I_{7}=D (e I_{8} a I_{15} em 0 por segurança). Se o CI fornecer saída ativa-baixa, inverter a saída para obter Z.