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 74LS 150) 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 74LS 150).
    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 74LS 150: 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 74LS 04) 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 74LS 150 (por que e como reduzir para 8 entradas).
  • Um 74LS 150 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 74LS 150 (passo a passo para montar no ferro de solda ou protoboard).
  1. Amarrar S_{3}=0 (GND).
  2. Ligar S_{2}=A, S_{1}=B, S_{0}=C.
  3. 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).
  4. Se o 74LS 150 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.
  5. 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 74LS 150 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.

Exercícios relacionados