Professor: Gabriel Soares Baptista
Aulas anteriores: portas lógicas individuais → tabela-verdade → expressão → circuito.
Hoje subimos um nível de abstração.
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).
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.
Blocos combinacionais que resolvem seleção e roteamento:
Recebe um código binário de entrada e ativa apenas a saída correspondente.
Se a entrada binária vale $110_2$, qual saída é ativada em um decodificador 3 para 8?
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 |
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.
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$.
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.
Exemplo: $CBA = 110$ → $110_2 = 6_{10}$ → $O_6$ ativa.
Permitem ou bloqueiam o funcionamento do decodificador.
3 entradas de enable: $E_1$ (BAIXO), $E_2$ (BAIXO), $E_3$ (ALTO).
Habilitado quando: $E_1 = 0$, $E_2 = 0$, $E_3 = 1$.
Facilitar o cascateamento sem lógica externa adicional.
Com entradas de polaridades diferentes, você conecta o bit de seleção mais significativo:
As entradas não usadas são amarradas no valor ativo. Sem inversores extras.
Um 74ALS138 recebe:
Resolução:
$011_2 = 3_{10}$ → saída ativa é $O_3$.
Saídas ativas em BAIXO: $O_3 = 0$, demais em $1$.
Um 74ALS138 recebe:
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.
Quatro CIs 74ALS138 formam um decodificador 1 de 32 (5 bits de entrada).
| 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.
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.
O processador coloca um endereço no barramento e o decodificador seleciona uma posição ou um CI de memória:
Oposto do decodificador: recebe uma linha de entrada ativa e gera o código binário correspondente.
Um teclado decimal com 10 teclas: melhor levar 10 fios ou gerar um código BCD?
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).
Um codificador simples não "escolhe" uma entrada. Sem lógica de prioridade, duas entradas ativas geram saída ambígua.
Resolvem o conflito: se duas ou mais entradas forem ativadas, a saída representa a de maior prioridade (maior número).
Exemplos:
CIs: 74148, 74LS148, 74HC148 (prioridade octal para binário).
Prioridade decimal para BCD. Entradas ativas em BAIXO (dígitos 1 a 9). Saída: BCD invertido.
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$.
Aplicação: teclado de calculadora.
74147 gera BCD invertido → inversores externos geram BCD normal.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).
8 fontes de dados, uma saída. Quantos bits de seleção?
$n$ seletores → $2^n$ entradas de dados.
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 $$
Quatro entradas, dois seletores ($S_1$, $S_0$).
| S₁ | S₀ | Z |
|---|---|---|
| 0 | 0 | I₀ |
| 0 | 1 | I₁ |
| 1 | 0 | I₂ |
| 1 | 1 | I₃ |
Duas formas:
$$ 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 $$
| 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$).
$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$.
Dois 74HC151 → MUX de 16 entradas:
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.
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.
Se o MUX escolhe uma entre muitas entradas e leva para uma saída, o que o DEMUX faz?
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.
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.
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$.
No decoder, a saída selecionada ativa independentemente do dado. No DEMUX, a saída selecionada recebe o valor do dado.
| 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? |
Decoder: código → linha. Encoder: linha → código. MUX: dados → seleciona um. DEMUX: dado → distribui.
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.
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.
Monte no Logisim-evolution um circuito que combina MUX e DEMUX para inspecionar 4 sensores com chaves manuais de seleção.
Todo o circuito é combinacional — não usa contador nem memória.
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:
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.
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.