Considerando a função abaixo, pede-se:
f=\sum(0,2,3,7,9,11,13,14)+d(12,15)
(d) Implemente usando um multiplexador 4:1 mais lógica adicional.

Passo 1

Vou reescrever claramente o que o enunciado dá e o que pede, e fixar a notação que vou usar (isso evita confusão depois).
  • A função é dada por f=\sum(0,2,3,7,9,11,13,14)+d(12,15).
  • Isso é uma função de quatro variáveis (porque aparecem mintermos até 15). Vou nomear as variáveis, do bit mais significativo para o menos significativo, como A,B,C,D. Assim o mintermo m tem a representação binária m = A\!B\!C\!D com peso 8,4,2,1.
  • O pedido (item (d)) é: implementar f usando um multiplexador 4:1 (quatro entradas de dados) mais lógica adicional. Ou seja, usar um MUX 4:1 cujas entradas I_0,I_1,I_2,I_3 podem ser funções (ou constantes) de variáveis, e conectar as saídas do MUX como f.
  • Não foi dada uma obrigação de quais sinais usar como seletores do MUX; uma escolha natural é usar duas variáveis como seletores e implementar as entradas do MUX como funções das outras duas variáveis.
No próximo passo vou escolher os seletores e extrair as funções que devem entrar em I_0 a I_3.

Passo 2

Escolha prática dos seletores do MUX 4:1:
  • Para um MUX 4:1 precisamos de 2 linhas de seleção. Vou usar as duas variáveis mais significativas como seletores: \,S_1 = A e \,S_0 = B.
    Justificativa curta e prática: com A,B como seletores, cada entrada I_k corresponde a um bloco de quatro mintermos com os mesmos valores de A,B (ou seja, para AB=00 aparecem m_0 a m_3, etc.). Isso facilita separar a função em quatro subfunções de duas variáveis ( C,D), que é o que um MUX 4:1 naturalmente faz.
  • Assim o circuito final será: MUX 4:1 com S_1=A,\;S_0=B e com entradas I_0 (quando AB=00), I_1 (quando AB=01), I_2 (quando AB=10), I_3 (quando AB=11). Agora preciso achar as expressões de I_0 a I_3 em termos de C,D, usando os mintermos fornecidos e os don’t-cares para simplificar.

Passo 3

Determinar a função na faixa AB=00 (entrada I_0):
  • Para AB=00 os mintermos correspondentes são m_0,m_1,m_2,m_3 (ou índices 0,1,2,3). Do enunciado f tem os mintermos 0,2,3 (e não tem 1).
  • Vamos montar a tabela de verdade de f restrita a AB=00 como função de C,D:
    • CD=00 é m_0 → valor 1.
    • CD=01 é m_1 → valor 0.
    • CD=10 é m_2 → valor 1.
    • CD=11 é m_3 → valor 1.
  • Logo a tabela (ordenada) é: 00\mapsto1,\;01\mapsto0,\;10\mapsto1,\;11\mapsto1. Só o caso CD=01 é zero; os demais são 1.
  • Escrever como função booleana: a condição que produz zero é C'=1 e D=1, isto é C'D. Portanto a função é o complementar disso:
    I_0 = (C'D)'.
    Usando De Morgan:
    I_0 = C + D'.
    Explicando: (C'D)' significa “não ( C'=1 e D=1 )”, que é equivalente a “C é 1 OU D é 0”, isto é C + D'.

Passo 4

Determinar a função na faixa AB=01 (entrada I_1):
  • Para AB=01 os mintermos são m_4,m_5,m_6,m_7. Do enunciado só m_7 (índice 7) está em f.
  • Em termos de C,D: m_7 corresponde a CD=11 (ou seja C=1,D=1). Os outros três combos são zeros.
  • Portanto a função é simplesmente: I_1 = C\,D.(um AND entre C e D).

Passo 5

Determinar a função na faixa AB=10 (entrada I_2):
  • Para AB=10 os mintermos são m_8,m_9,m_{10},m_{11}. Do enunciado f contém 9 e 11 (índices 9 e 11).
  • Em termos de C,D isso dá:
    • m_8 ( CD=00) → 0,
    • m_9 ( CD=01) → 1,
    • m_{10} ( CD=10) → 0,
    • m_{11} ( CD=11) → 1.
  • Observando, os casos com D=1 (i.e. CD=01 e CD=11) são exatamente os que têm valor 1. Assim: I_2 = D.Ou seja, nesta faixa a função depende só de D.

Passo 6

Determinar a função na faixa AB=11 (entrada I_3) usando os don’t-cares:
  • Para AB=11 os mintermos são m_{12},m_{13},m_{14},m_{15}. Do enunciado f contém 13,14 e os mintermos 12,15 são don’t-cares: d(12,15).
  • Sem usar don’t-cares os valores seriam: m_{12} = d, m_{13}=1, m_{14}=1, m_{15}=d.
  • Como m_{12} e m_{15} são don’t-cares, podemos escolhê-los igual a 1 (ou 0) de forma a simplificar a expressão. Se escolhermos m_{12}=1 e m_{15}=1, então para todos os quatro combos CD teremos valor 1.
  • Assim podemos definir convenientemente: I_3 = 1(ou seja, ligar a I_3 à lógica ‘1’ — VCC). Essa escolha é válida porque don’t-cares permitem definir livremente esses termos para facilitar a implementação.

Passo 7

Resumo das entradas do MUX e das portas adicionais necessárias:
  • Com S_1=A e S_0=B, as entradas do MUX ficam: I_0 = C + D',\qquad I_1 = C\,D,\qquad I_2 = D,\qquad I_3 = 1.
  • Portas/ligações extras necessárias (além do próprio MUX):
    • Uma inversora para gerar D' a partir de D.
    • Uma porta OR para implementar C + D' (entrada I_0).
    • Uma porta AND para C D (entrada I_1).
    • A linha I_2 é simplesmente D ligada diretamente.
    • A linha I_3 é ligada a nível lógico ‘1’ (VCC).
  • Se quiser contar portas: 1 NOT, 1 OR (2 entradas), 1 AND (2 entradas). O MUX faz a seleção entre essas quatro entradas conforme A,B.

Passo 8

Como checar (rápido) que isso está correto:
  • Para qualquer combinação de A,B o MUX escolhe o I_k correspondente e retorna a função definida naquele bloco. Por exemplo:
    • Se A=0,B=0 o MUX seleciona I_0=C+D' — corresponde aos mintermos 0,1,2,3 que tratamos.
    • Se A=1,B=1 o MUX seleciona I_3=1 — graças aos don’t-cares escolhido podemos ter todos 1 nessa faixa, o que cobre 13,14 e aceita 12,15 sem problema.
  • Isto reproduz exatamente a tabela de mintermos original (com a liberdade permitida pelos don’t-cares).

Resposta

Use um MUX 4:1 com seletores S_1=A, S_0=B e com as entradas:
I_0 = C + D', I_1 = C\,D, I_2 = D, I_3 = 1.

Exercícios relacionados