bitGateLab Digital · Aprenda
Português (Brasil)
Abrir o simulador

Aprenda › Tema 8

Multiplexadores, decodificadores e codificadores explicados

Leitura de 8 min · Equipe bitGateLab

Os blocos combinacionais de média complexidade são as peças com que se monta quase qualquer sistema digital: o multiplexador escolhe um dado entre vários, o demultiplexador encaminha um dado para um destino, o decodificador ativa uma única linha de acordo com um número binário e o codificador faz o contrário. Aqui você vai ver suas equações, suas tabelas-verdade e duas aplicações que aparecem em todas as provas: implementar uma função lógica com um multiplexador e projetar um decodificador para display de 7 segmentos.

O multiplexador (MUX)

Um multiplexador de 2n entradas de dados tem n entradas de seleção e uma saída. O número binário nas linhas de seleção indica qual entrada de dados passa para a saída. O mais simples é o MUX 2 para 1:

Y = S·I0 + S·I1

Com S = 0 a saída copia I0; com S = 1 copia I1. O MUX 4 para 1 usa duas linhas de seleção S1 S0, e cada entrada de dados é multiplicada pelo mintermo de seleção correspondente:

Y = S1·S0·I0 + S1·S0·I1 + S1·S0·I2 + S1·S0·I3

S1S0Y
00I0
01I1
10I2
11I3

Cada termo é uma AND da entrada de dados com as linhas de seleção (diretas ou negadas), e todas se juntam em uma OR.

Implementar uma função com um MUX

Como o MUX já contém todos os mintermos das suas variáveis de seleção, ele serve como "função programável". Com um MUX de 2n entradas você pode realizar qualquer função de n variáveis colocando 0 ou 1 em cada entrada de dados. Melhor ainda: com o mesmo MUX você pode fazer uma função de n + 1 variáveis se conectar a variável restante (ou a sua negação) às entradas de dados.

Exemplo: realize F(A, B, C) = Σm(1, 2, 6, 7) com um MUX 4 para 1, usando A e B como seleção (A = S1, B = S0).

  1. Agrupe a tabela-verdade em pares com o mesmo valor de A B e veja como F depende de C.
  2. AB = 00: m0 = 0 (C = 0), m1 = 1 (C = 1). F = C, portanto I0 = C.
  3. AB = 01: m2 = 1 (C = 0), m3 = 0 (C = 1). F = C, portanto I1 = C.
  4. AB = 10: m4 = 0, m5 = 0. I2 = 0.
  5. AB = 11: m6 = 1, m7 = 1. I3 = 1.

Verificação com A = 0, B = 1, C = 0 (mintermo 2): a seleção 01 escolhe I1 = C = 1. Correto, m2 pertence à função.

O demultiplexador e o decodificador

O demultiplexador (DEMUX) 1 para 4 recebe um dado D e o envia a uma de quatro saídas de acordo com S1 S0; as demais ficam em 0: Y0 = D·S1·S0, Y1 = D·S1·S0, Y2 = D·S1·S0, Y3 = D·S1·S0.

Se no DEMUX você fixa D = 1 e chama essa entrada de "habilitação", obtém um decodificador: n entradas e 2n saídas, das quais apenas uma está ativa, a que corresponde ao número de entrada. Um decodificador 3 para 8 gera os 8 mintermos de três variáveis. Por isso qualquer função de três variáveis pode ser montada com um decodificador e uma porta OR que junte as saídas dos seus mintermos.

Exemplo: somador completo com um decodificador 3 para 8. Entradas A, B e Cin.

  • Soma S = Σm(1, 2, 4, 7): OR de 4 entradas com as saídas Y1, Y2, Y4, Y7.
  • Carry Cout = Σm(3, 5, 6, 7): OR de 4 entradas com Y3, Y5, Y6, Y7.

Confira um caso: A = 1, B = 1, Cin = 0 é o número 110 = 6. Só Y6 é ativada; Y6 não está na OR de S (S = 0), mas está na de Cout (Cout = 1). De fato, 1 + 1 + 0 = 10 em binário.

O decodificador 3 para 8 típico da família 74HC tem saídas ativas em nível baixo: a saída escolhida vai a 0 e as demais ficam em 1. Nesse caso, a OR de mintermos se torna uma NAND das mesmas saídas, pela lei de De Morgan.

O codificador de prioridade

O codificador faz a operação inversa: de 2n linhas, ele entrega o número binário de n bits da linha ativa. O problema é o que fazer se duas forem ativadas ao mesmo tempo; a solução prática é o codificador de prioridade, que entrega o número da linha ativa mais alta. Para 4 entradas, de D3 (a de maior prioridade) a D0:

Y1 = D3 + D2, Y0 = D3 + D2·D1, V = D3 + D2 + D1 + D0

A saída V ("válido") indica que há pelo menos uma entrada ativa; sem ela você não conseguiria distinguir "D0 ativa" de "nenhuma ativa", porque as duas dão Y1 Y0 = 00. Teste com D2 = D1 = 1: Y1 = 1 e Y0 = 0 + 0·1 = 0, ou seja, 10 = 2. Ganha D2, como deve ser.

Decodificador BCD para 7 segmentos

a b c d e f g
Nome dos segmentos de um display de 7 segmentos.

Um display de 7 segmentos tem um LED por segmento. O decodificador recebe um dígito BCD (A B C D, com A como bit mais significativo) e acende os segmentos que desenham esse dígito. Para um display de cátodo comum, 1 significa segmento aceso:

DígitoABCDabcdefg
000001111110
100010110000
200101101101
300111111001
401000110011
501011011011
601101011111
701111110000
810001111111
910011111011

Os códigos 1010 a 1111 não são BCD válidos, portanto são tratados como condições irrelevantes (X) no mapa de Karnaugh. Isso simplifica muito cada segmento.

Segmento a: vale 0 somente nos dígitos 1 e 4. No mapa de 4 variáveis, com X em 10 a 15, os maiores grupos são: A (8 células com os X), C (8 células), B·D (mintermos 5, 7, 13, 15) e B·D (os quatro cantos: 0, 2, 8, 10).

a = A + C + B·D + B·D

Confira o 4 (0100): A = 0, C = 0, B·D = 1·0 = 0, B·D = 0·1 = 0. Resultado 0: o segmento a fica apagado, correto.

Se o display for de ânodo comum, cada segmento acende com 0, de modo que todas as saídas são invertidas.

Erros comuns

Experimente no simulador

Compare a tabela-verdade da função com a versão feita com multiplexador.

  1. Crie uma tabela-verdade de três entradas A, B, C e marque F = 1 nas linhas 1, 2, 6 e 7.
  2. Coloque no editor um multiplexador de 4 para 1 (ou monte-o com quatro AND, duas NOT e uma OR de quatro entradas) e conecte A e B à seleção.
  3. Conecte C, a negação de C, um 0 fixo e um 1 fixo às entradas de dados, nessa ordem.
  4. Mude as entradas percorrendo as oito combinações e observe que a saída coincide com a tabela.
  5. Repita com o segmento a do display: insira a coluna dele em uma tabela de 4 variáveis, marque as linhas 10 a 15 como X e confira os grupos que o mapa de Karnaugh propõe.

Exercícios

  1. Realize F(A, B, C) = Σm(0, 3, 5, 6) com um MUX 4 para 1 usando A e B como seleção.
    Resposta

    AB = 00: m0 = 1, m1 = 0, I0 = C. AB = 01: m2 = 0, m3 = 1, I1 = C. AB = 10: m4 = 0, m5 = 1, I2 = C. AB = 11: m6 = 1, m7 = 0, I3 = C. É a função de paridade par (vale 1 quando há um número par de uns): F = A ⊕ B ⊕ C.

  2. De quantas linhas de seleção precisa um MUX de 16 entradas e quantas variáveis pode ter, no máximo, a função que ele implementa?
    Resposta

    4 linhas de seleção (24 = 16). Conectando a variável restante aos dados, ele pode implementar qualquer função de até 5 variáveis.

  3. Obtenha a equação do segmento e usando as combinações 10 a 15 como irrelevantes.
    Resposta

    e = 1 em 0, 2, 6 e 8. Grupos: B·D (0, 2, 8, 10) e C·D (2, 6, 10, 14). Resultado: e = B·D + C·D = D·(B + C).

  4. No codificador de prioridade de 4 entradas, que saída resulta de D3 = 0, D2 = 0, D1 = 1, D0 = 1?
    Resposta

    Y1 = 0 + 0 = 0, Y0 = 0 + 1·1 = 1, V = 1. Saída 01: D1 ganha de D0.