Sistemas Digitais e Microprocessados

Módulos MSI Combinacionais

Professor: Gabriel Soares Baptista

Introdução

Aulas anteriores: portas lógicas individuais → tabela-verdade → expressão → circuito.

Hoje subimos um nível de abstração.

Ideia central

Blocos MSI (Medium-Scale Integration) encapsulam funções prontas — decodificadores, codificadores, multiplexadores e demultiplexadores — evitando redesenhar dezenas de portas a cada projeto.

Base: Capítulo 9 de Sistemas Digitais: Princípios e Aplicações (Tocci, Widmer, Moss).

O Que Muda com MSI

SSI (Small-Scale Integration): poucas portas por chip (AND, OR, NOT).

MSI (Medium-Scale Integration): dezenas de portas por chip, funções completas.

SSI MSI
Componentes portas avulsas blocos funcionais
Exemplo 7408 (4 ANDs) 74ALS138 (decodificador 3→8)
Projeto monta cada porta insere o CI e conecta

Eles foram os "tijolos e cimento" dos sistemas digitais e revelam funções essenciais usadas até hoje em FPGAs e PLDs.

Os Quatro Blocos de Hoje

Blocos combinacionais que resolvem seleção e roteamento:

  • Decodificador: código binário → uma linha ativa
  • Codificador: uma linha ativa → código binário
  • Multiplexador (MUX): várias fontes de dados → uma saída
  • Demultiplexador (DEMUX): um dado de entrada → distribuído para várias saídas

Decodificadores

O Conceito

Recebe um código binário de entrada e ativa apenas a saída correspondente.

  • 3 bits de entrada → $2^3 = 8$ saídas → decodificador 3 para 8 ou 1 de 8
  • 4 bits → 16 saídas → decodificador 4 para 16 ou 1 de 16
Reflita

Se a entrada binária vale $110_2$, qual saída é ativada em um decodificador 3 para 8?

Saídas Ativas em Nível Alto × Nível Baixo

Nem todo decodificador ativa a saída com $1$.

Tipo Saída ativa Demais saídas Exemplo
Ativa em ALTO $1$ $0$ AND direto
Ativa em BAIXO $0$ $1$ 74ALS138
Erro comum

A bolinha no símbolo do CI indica ativação em nível baixo. Sempre verifique a convenção antes de interpretar a saída.

Decodificador 3 Para 8

Notação: entradas $CBA$ (C = MSB, A = LSB), saídas $O_0$ a $O_7$.

Cada saída é um mintermo: $O_0 = \overline{C}\,\overline{B}\,\overline{A}$, $O_1 = \overline{C}\,\overline{B}\,A$, ..., $O_7 = C\,B\,A$.

Tabela-Verdade do Decodificador 3→8

Saídas ativas em nível ALTO:

C B A O₇ O₆ O₅ O₄ O₃ O₂ O₁ O₀
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0

Índice da saída = valor decimal do código de entrada.

Como Ler um Decodificador

  1. Identifique a ordem dos bits de entrada.
  2. Converta o código binário para decimal.
  3. Ative a saída com esse índice.
  4. Mantenha as outras saídas inativas.
  5. Ajuste o valor conforme ativa em ALTO ou BAIXO.

Exemplo: $CBA = 110$ → $110_2 = 6_{10}$ → $O_6$ ativa.

Entradas de Habilitação (Enable)

Permitem ou bloqueiam o funcionamento do decodificador.

  • Habilitado: responde ao código de entrada.
  • Desabilitado: todas as saídas ficam no estado inativo.
74ALS138

3 entradas de enable: $E_1$ (BAIXO), $E_2$ (BAIXO), $E_3$ (ALTO).

Habilitado quando: $E_1 = 0$, $E_2 = 0$, $E_3 = 1$.

Por Que Três Entradas de Enable?

Facilitar o cascateamento sem lógica externa adicional.

Com entradas de polaridades diferentes, você conecta o bit de seleção mais significativo:

  • em $E_3$ de um chip (ativo em ALTO)
  • em $E_1$ do outro (ativo em BAIXO)

As entradas não usadas são amarradas no valor ativo. Sem inversores extras.

Exemplo: Decodificador com Enable

Um 74ALS138 recebe:

  • $E_3 = 1$, $E_2 = 0$, $E_1 = 0$ → habilitado
  • $A_2A_1A_0 = 011$

Resolução:

$011_2 = 3_{10}$ → saída ativa é $O_3$.

Saídas ativas em BAIXO: $O_3 = 0$, demais em $1$.

Exemplo: Decodificador Desabilitado

Um 74ALS138 recebe:

  • $E_3 = 1$, $E_2 = 1$, $E_1 = 0$

Resolução:

$E_2 = 1$ (deveria ser $0$): decodificador desabilitado.

Todas as saídas vão para o estado inativo em ALTO ($1$).

O código $A_2A_1A_0$ não importa.

Cascateamento de Decodificadores

Quatro CIs 74ALS138 formam um decodificador 1 de 32 (5 bits de entrada).

  • $A_2A_1A_0$ → escolhem a saída dentro do CI habilitado
  • $A_4A_3$ → escolhem qual CI é habilitado
A₄A₃ CI Faixa de saídas
00 Z₁ O₀ a O₇
01 Z₂ O₈ a O₁₅
10 Z₃ O₁₆ a O₂₃
11 Z₄ O₂₄ a O₃₁

Bits mais altos escolhem o bloco; bits mais baixos escolhem a saída dentro dele.

Decodificadores BCD

Nem todo decodificador usa todas as $2^n$ combinações.

7442 (BCD para decimal): 4 bits de entrada, mas apenas 10 saídas.

BCD usa $0000$ a $1001$. Códigos $1010$ a $1111$ são inválidos e não ativam nenhuma saída.

Drivers BCD para 7 segmentos acionam displays de LED/LCD a partir de um dígito BCD.

Decodificadores em Memória

O processador coloca um endereço no barramento e o decodificador seleciona uma posição ou um CI de memória:

  • bits mais significativos → selecionam o chip
  • bits menos significativos → selecionam a posição interna
  • sinal de habilitação → impede que chips não selecionados respondam

Codificadores

O Conceito

Oposto do decodificador: recebe uma linha de entrada ativa e gera o código binário correspondente.

  • 8 entradas → 3 saídas (codificador 8 para 3)
  • Entrada 5 ativa → saída $101_2$
Reflita

Um teclado decimal com 10 teclas: melhor levar 10 fios ou gerar um código BCD?

O Problema de Múltiplas Entradas

Codificador simples só funciona com uma única entrada ativa por vez.

Se $A_3$ e $A_5$ forem ativadas simultaneamente → saída pode ser ambígua ($111$, que não representa nenhuma delas corretamente).

Erro comum

Um codificador simples não "escolhe" uma entrada. Sem lógica de prioridade, duas entradas ativas geram saída ambígua.

Codificadores de Prioridade

Resolvem o conflito: se duas ou mais entradas forem ativadas, a saída representa a de maior prioridade (maior número).

Exemplos:

  • $A_3$ e $A_5$ ativas → saída = $A_5$
  • $A_2$, $A_6$ e $A_0$ ativas → saída = $A_6$

CIs: 74148, 74LS148, 74HC148 (prioridade octal para binário).

Codificador 74147

Prioridade decimal para BCD. Entradas ativas em BAIXO (dígitos 1 a 9). Saída: BCD invertido.

  • Sem entrada $A_0$: ausência de entradas ativas já representa o decimal 0.
  • $A_7$ ativa → saída invertida $1000$ → inverso = $0111$ (BCD 7).

Exemplo: Codificador 74147

Entradas $A_5$, $A_7$ e $A_3$ em BAIXO. Demais em ALTO. Qual dígito?

Vence a entrada de maior número: $A_7$ → dígito 7.

BCD normal: $0111$. BCD invertido (saída do CI): $1000$.

Após inversores externos: $0111$.

Codificador de Chaves

Aplicação: teclado de calculadora.

  • Entradas em ALTO por resistores de pull-up.
  • Tecla pressionada → entrada vai para BAIXO.
  • 74147 gera BCD invertido → inversores externos geram BCD normal.
  • Duas teclas pressionadas juntas: código da de maior número.

Multiplexadores (MUX)

O Conceito

Seleciona uma entre várias entradas de dados e a transfere para uma única saída.

Analogia: seletor de áudio (MP3, rádio, TV, DVD).

Reflita

8 fontes de dados, uma saída. Quantos bits de seleção?

$n$ seletores → $2^n$ entradas de dados.

MUX 2 Para 1

Duas entradas ($I_0$, $I_1$), um seletor ($S$), uma saída ($Z$).

S Z
0 I₀
1 I₁

$$ Z = I_0\overline{S} + I_1S $$

MUX 4 Para 1

Quatro entradas, dois seletores ($S_1$, $S_0$).

S₁ S₀ Z
0 0 I₀
0 1 I₁
1 0 I₂
1 1 I₃

MUX 4 Para 1: Implementação

Duas formas:

  • Soma de produtos: portas AND + OR
  • Buffers tristate controlados por decodificador: apenas um buffer habilitado por vez

$$ Z = I_0\overline{S_1}\overline{S_0} + I_1\overline{S_1}S_0 + I_2S_1\overline{S_0} + I_3S_1S_0 $$

MUX de Oito Entradas (74HC151)

Sinal Descrição
I₀–I₇ entradas de dados
S₂S₁S₀ seletores
E enable
Z, Z̄ saída normal e invertida

$E = 0$ → habilitado. $E = 1$ → desabilitado ($Z = 0$).

Exemplo: MUX 74HC151

$S_2S_1S_0 = 101$, $E = 0$. Dados: $I_0=I_2=I_5=I_6=1$, demais $0$.

$101_2 = 5_{10}$ → entrada $I_5$ selecionada.

Como $I_5 = 1$ → $Z = 1$.

Construindo um MUX Maior

Dois 74HC151 → MUX de 16 entradas:

  • $S_2S_1S_0$ vão para ambos os CIs.
  • $S_3$ decide qual CI é habilitado.
  • Saídas combinadas.
  • Mesmo princípio do cascateamento de decodificadores.

Aplicações de Multiplexadores

  • Roteamento de dados: vários contadores BCD compartilham um único display.
  • Conversão paralelo-série: 8 bits paralelos → saída serial bit a bit.
  • Implementação de funções lógicas: variáveis nos seletores, entradas de dados recebem $0$ ou $1$ conforme a tabela-verdade.

MUX Como Gerador de Função Lógica

As variáveis $A$, $B$, $C$ vão para os seletores. Cada entrada de dados do MUX recebe $0$ ou $1$ conforme a saída desejada para aquela combinação.

Demultiplexadores (DEMUX)

O Conceito

Operação inversa do MUX: recebe uma entrada de dados e distribui para várias saídas.

O código de seleção determina para qual saída o dado é transmitido.

MUX concentra. DEMUX distribui.

Reflita

Se o MUX escolhe uma entre muitas entradas e leva para uma saída, o que o DEMUX faz?

DEMUX 1 Para 8

Uma entrada de dados $I$, três seletores $S_2S_1S_0$, oito saídas $O_0$ a $O_7$.

Para cada combinação dos seletores, $I$ aparece em apenas uma saída.

DEMUX e Decodificador

O circuito de um DEMUX é quase idêntico ao de um decodificador.

A diferença: DEMUX acrescenta a entrada de dados em cada porta.

Um decodificador com enable pode funcionar como DEMUX: a entrada de habilitação recebe o dado $I$, e os seletores determinam o destino.

Exemplo: DEMUX

DEMUX 1 para 8 com saídas ativas em ALTO. $S_2S_1S_0 = 101$, $I = 1$.

$101_2 = 5_{10}$ → saída escolhida: $O_5$.

$I = 1$ → $O_5 = 1$. Demais saídas = $0$.

Diferença chave

No decoder, a saída selecionada ativa independentemente do dado. No DEMUX, a saída selecionada recebe o valor do dado.

Comparação Entre os Blocos

Bloco Entrada Saída Pergunta
Decoder código binário uma linha ativa qual saída para este código?
Encoder uma linha ativa código binário qual entrada foi ativada?
MUX vários dados um dado qual entrada vai para a saída?
DEMUX um dado uma saída para qual destino?
Atalho mental

Decoder: código → linha. Encoder: linha → código. MUX: dados → seleciona um. DEMUX: dado → distribui.

Como Escolher o Bloco Certo

  1. "Tenho um código e quero ativar uma saída" → Decoder
  2. "Tenho uma linha ativa e quero saber seu número" → Encoder
  3. "Tenho várias fontes e quero escolher uma" → MUX
  4. "Tenho um sinal e quero enviá-lo para um destino" → DEMUX

Dimensionamento: número de seletores = $\log_2(\text{opções})$.

Se não for potência de 2, use bits suficientes para cobrir todas as opções.

Exemplo de Escolha de Bloco

Um processador precisa escolher uma entre 16 fontes de dados para a ALU.

Várias fontes, uma saída única → multiplexação.

$2^4 = 16$ → MUX 16 para 1 com 4 bits de seleção.

Atividade Prática — Varredura de Sensores

Monte no Logisim-evolution um circuito que combina MUX e DEMUX para inspecionar 4 sensores com chaves manuais de seleção.

  • 4 chaves simulam sensores ($I_0$ a $I_3$)
  • 3 chaves manuais controlam os seletores ($S_2S_1S_0$)
  • MUX lê o sensor correspondente ao endereço
  • DEMUX roteia o estado para o LED daquela posição

Todo o circuito é combinacional — não usa contador nem memória.

Atividade — O Que Fazer

Componentes: 4 Pin de entrada (sensores), 3 Pin para os seletores, MUX 8→1, Decoder 3→8 (com enable = entrada de dados), 8 LED de saída.

Conexões:

  1. Chaves I₀–I₇ nas entradas de dados do MUX.
  2. Seletores manuais no MUX e no decoder.
  3. Saída do MUX no enable do decoder.
  4. Saídas do decoder nos LEDs.

Teste: Varie manualmente os seletores de $000$ a $111$. Altere as chaves. Observe qual LED acende a cada endereço.

Economia: 1 fio de dados em vez de 8 fios paralelos.

Próximos Passos

Vimos quatro blocos MSI combinacionais: decodificador, codificador, MUX e DEMUX.

Cada um resolve um problema diferente de seleção, codificação ou roteamento.

Na próxima aula: lógica sequencial — a saída passa a depender também do estado armazenado. Começa com latches e flip-flops.