Pontuação: 2 ptos. Usando o CI 74HC151 (multiplexador 8-1):
a) mostre a tabela verdade e
b) implemente o circuito que gera seguinte função lógica z=\bar{A} \cdot \bar{B} \cdot C+A \cdot \bar{B} \cdot \bar{C}

Passo 1

O enunciado pede duas coisas usando o CI 74HC151 (multiplexador 8‑1):
  • (a) mostrar a tabela verdade da função lógica \displaystyle z=\bar{A}\cdot\bar{B}\cdot C + A\cdot\bar{B}\cdot\bar{C};
  • (b) implementar essa função com o CI 74HC151 (ou seja, indicar como ligar os pinos S, D e enable para obter z na saída do multiplexador).
Informações dadas no enunciado (já anotadas):
  • Variáveis de entrada: A,\;B,\;C.
  • Função a implementar: \displaystyle z=\bar{A}\bar{B}C + A\bar{B}\bar{C}.

Passo 2

Breve explicação didática sobre o CI 74HC151 e a estratégia de implementação.
  • O 74HC151 é um multiplexador 8‑para‑1: tem oito entradas de dados D_0,\dots,D_7, três linhas de seleção S_2,S_1,S_0 e uma saída (além de um pino de habilitação/enable). Quando as linhas de seleção valem um código binário s_2s_1s_0, a saída recebe o valor de D_k com k igual ao valor decimal do binário s_2s_1s_0. Ex.: S_2S_1S_0=000 seleciona D_0; S_2S_1S_0=101 seleciona D_5; etc.
  • Assim, um multiplexador pode ser usado como uma tabela verdade programável: liga-se as entradas de seleção às variáveis da função e configura‑se cada D_k para ser 0 ou 1 conforme o valor desejado da função nessa combinação de entradas.
  • Observação prática: o 74HC151 tem pino de enable (geralmente ativo em nível baixo). Deve‑se manter o enable ativo (por exemplo \overline{E}=0) durante a operação. Se o CI disponível fornecer apenas a saída invertida, pode‑se inverter a lógica dos D_i ou usar um inversor externo; abaixo eu explicito as duas opções.

Passo 3

Construção da tabela verdade de \displaystyle z=\bar{A}\bar{B}C + A\bar{B}\bar{C}.
  • Vou listar todas as 2^3=8 combinações de (A,B,C) e calcular z. Lembrete: \bar{X} significa "não X" (complemento).
  • Avaliação linha a linha:
\begin{array}{c|c|c|c} A & B & C & z=\bar{A}\bar{B}C + A\bar{B}\bar{C} \\\ \hline 0 & 0 & 0 & \bar{0}\bar{0}0 + 0\bar{0}\bar{0} = 1\cdot1\cdot0 + 0\cdot1\cdot1 = 0\\\\ 0 & 0 & 1 & \bar{0}\bar{0}1 + 0\bar{0}\bar{1} = 1\cdot1\cdot1 + 0\cdot1\cdot0 = 1\\\\ 0 & 1 & 0 & \bar{0}\bar{1}0 + 0\bar{1}\bar{0} = 1\cdot0\cdot0 + 0\cdot0\cdot1 = 0\\\\ 0 & 1 & 1 & \bar{0}\bar{1}1 + 0\bar{1}\bar{1} = 1\cdot0\cdot1 + 0\cdot0\cdot0 = 0\\\\ 1 & 0 & 0 & \bar{1}\bar{0}0 + 1\bar{0}\bar{0} = 0\cdot1\cdot0 + 1\cdot1\cdot1 = 1\\\\ 1 & 0 & 1 & \bar{1}\bar{0}1 + 1\bar{0}\bar{1} = 0\cdot1\cdot1 + 1\cdot1\cdot0 = 0\\\\ 1 & 1 & 0 & \bar{1}\bar{1}0 + 1\bar{1}\bar{0} = 0\cdot0\cdot0 + 1\cdot0\cdot1 = 0\\\\ 1 & 1 & 1 & \bar{1}\bar{1}1 + 1\bar{1}\bar{1} = 0\cdot0\cdot1 + 1\cdot0\cdot0 = 0 \end{array}
  • Conclusão da tabela: z=1 somente nas combinações (A,B,C)=(0,0,1) e (1,0,0). Em termos decimais (com índice k=4A+2B+C): k=1 e k=4 são os casos com saída 1.

Passo 4

Como programar o 74HC151 (mapeamento prático).
  • Decidimos ligar as linhas de seleção do mux diretamente às variáveis (A,B,C) no mesmo peso posicional: \displaystyle S_2 = A,\quad S_1 = B,\quad S_0 = C. Assim o índice selecionado é k=4A+2B+C e D_k determina z naquela combinação.
  • Pelo que calculamos na tabela verdade, os valores desejados dos D_i (onde D_0 corresponde a A B C = 000, D_1 a 001, …, D_7 a 111) são:
D_0=0,\; D_1=1,\; D_2=0,\; D_3=0,\; D_4=1,\; D_5=0,\; D_6=0,\; D_7=0.
  • Habilitação: colocar o pino de enable em nível ativo (normalmente \overline{E}=0) para que o mux funcione. Se existir um pino \overline{E} (enable ativo em 0), ligue‑o ao terra (0 V). Se o pino for enable ativo em 1, ligue‑o a VCC conforme necessário — verifique o datasheet do seu encapsulamento.

Passo 5

Observações sobre saída invertida/não invertida (prática para montagem).
  • Alguns datasheets do 74HC151 mostram ambas saídas: a saída direta Y e a saída invertida \overline{Y}. Se na sua placa estiver disponível a saída não invertida Y, ela já dará z diretamente com os D_i configurados conforme acima.
  • Se na sua versão só estiver disponível a saída invertida \overline{Y} (ou você preferir usar \overline{Y}), então há duas opções:
    1. Usar um inversor externo na saída para obter z.
    2. Programar os D_i com valores complementares e usar a saída invertida diretamente. Nesse caso programar D_i' = \overline{D_i}, ou seja:
    D_0=1,\; D_1=0,\; D_2=1,\; D_3=1,\; D_4=0,\; D_5=1,\; D_6=1,\; D_7=1,e então \overline{Y}=\overline{D_k} dará o valor correto de z.

Passo 6

Resumo prático de ligação (passo a passo para montar no protoboard)
  • Ligar S_2 \leftarrow A,\; S_1 \leftarrow B,\; S_0 \leftarrow C.
  • Programar entradas de dados D_0 a D_7 com os níveis lógicos: 0,1,0,0,1,0,0,0 respectivamente.
  • Manter o enable ativo ( \overline{E}=0 se for ativo em 0).
  • Ler a saída não invertida Y como z. Se só houver saída invertida, inverter conforme explicado no Passo 5.
  • Pronto: o multiplexador passa a funcionar como uma ROM de 8 posições que implementa exatamente a função dada.

Resposta

(A,B,C):z = (0,0,0):0, (0,0,1):1, (0,1,0):0, (0,1,1):0, (1,0,0):1, (1,0,1):0, (1,1,0):0, (1,1,1):0
Implementação no 74HC151: ligar \;S_2=A,\;S_1=B,\;S_0=C\; e programar
\;D_0=0,\;D_1=1,\;D_2=0,\;D_3=0,\;D_4=1,\;D_5=0,\;D_6=0,\;D_7=0\;.
Manter o enable ativo ( \overline{E}=0) e usar a saída não invertida Y.

Exercícios relacionados