Registradores, deslocamento e buffers: organizando dados digitais

Capítulo 10

Tempo estimado de leitura: 9 minutos

+ Exercício

Registradores: memória de múltiplos bits

Um registrador é um conjunto de flip-flops que armazena vários bits ao mesmo tempo. Se um flip-flop armazena 1 bit, um registrador de 8 bits armazena 8 bits (um “byte”). Em geral, todos os flip-flops do registrador compartilham o mesmo clock, de modo que o conteúdo é atualizado de forma sincronizada.

O que um registrador faz na prática

  • Guardar um valor (ex.: um byte vindo de um sensor digital ou de uma interface serial).
  • Segurar o valor estável enquanto outras partes do circuito usam esse dado.
  • Transferir dados entre blocos (por exemplo, de um barramento para um conjunto de LEDs).

Entradas/saídas típicas de um registrador

Dependendo do CI, você pode encontrar sinais como:

  • D[0..n-1]: entradas paralelas (um bit por flip-flop).
  • Q[0..n-1]: saídas paralelas.
  • CLK: clock.
  • CLR/RESET: zera o conteúdo.
  • EN/LOAD: habilita carregar/atualizar.

Um registrador “paralelo” simples carrega todos os bits de uma vez (em uma borda do clock) e mantém as saídas até a próxima atualização.

Registradores de deslocamento: movendo bits no tempo

Um registrador de deslocamento é um registrador em que, a cada pulso de clock, os bits “andam” de uma posição para outra. Isso permite converter dados entre serial e paralelo, além de criar efeitos e expandir E/S.

Quatro modos clássicos (SISO, SIPO, PISO, PIPO)

SiglaEntradaSaídaUso típico
SISOSerialSerialAtraso/linha de retardo de bits, filtragem simples por deslocamento
SIPOSerialParalelaExpandir saídas: poucos fios controlam muitos LEDs
PISOParalelaSerialLer várias entradas com poucos fios (teclado, chaves)
PIPOParalelaParalelaArmazenar/transferir um barramento inteiro em um pulso

Entendendo o deslocamento com um exemplo de 8 bits

Imagine um SIPO de 8 bits. Você injeta bits em série (um por clock) e, após 8 clocks, as saídas Q0..Q7 representam o byte carregado. Se o deslocamento for “para a direita”, um bit novo entra em Q0 e o que estava em Q0 vai para Q1, e assim por diante.

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

Clock 1: entra b0 -> Q0=b0
Clock 2: entra b1 -> Q1=b0, Q0=b1
...
Clock 8: entra b7 -> Q7=b0 ... Q0=b7

O sentido (MSB/LSB primeiro) depende do CI e de como você interpreta as saídas.

Aplicação 1: efeito de LED em sequência (“corrida”)

Um efeito simples é manter um único ‘1’ circulando: 00000001 → 00000010 → 00000100 ... Para isso, você pode:

  • Usar um registrador de deslocamento com realimentação (o bit que sai volta para a entrada), ou
  • Carregar um padrão inicial e depois deslocar inserindo 0 e reiniciar quando chegar ao fim.

Em um SIPO comum (como um 74HC595), o método mais prático é enviar, a cada atualização, o byte correspondente ao LED aceso.

Aplicação 2: expansão de saídas

Com um SIPO, você controla 8 saídas usando tipicamente 3 sinais: DATA, CLK e LATCH. Isso é muito útil quando o controlador tem poucas GPIOs ou quando você quer reduzir cabeamento.

Buffers, tri-state e a ideia de barramento

O que é um buffer digital

Um buffer é um circuito que “repete” um sinal na saída, mas com características elétricas melhores (capacidade de corrente, isolamento, redução de carga sobre a fonte). Ele pode ser:

  • Não inversor: saída igual à entrada.
  • Inversor: saída invertida (às vezes chamado de driver/inversor).

Saída tri-state (três estados)

Em lógica tri-state, a saída pode estar em:

  • 0 (forçando nível baixo)
  • 1 (forçando nível alto)
  • Z (alta impedância, como se estivesse desconectada)

O estado Z permite que várias saídas compartilhem o mesmo fio (um barramento), desde que apenas um dispositivo por vez esteja habilitado para dirigir o barramento.

Barramento e conflito de saída (por que é perigoso)

Um barramento é um conjunto de linhas compartilhadas (por exemplo, 8 linhas de dados). Se dois CIs tentarem dirigir a mesma linha ao mesmo tempo com valores opostos (um em ‘1’ e outro em ‘0’), ocorre contenção:

  • Corrente excessiva entre as saídas
  • Aquecimento e possível dano
  • Nível lógico indefinido no barramento

Por isso, ao usar tri-state, é obrigatório garantir por projeto que a habilitação (OE, EN) seja exclusiva. Em muitos casos, também se usa resistores em série pequenos (por exemplo, 33–220 Ω) para reduzir picos de corrente e ruído, mas isso não substitui a regra de “um driver por vez”.

Onde buffers tri-state aparecem

  • Interfaces de barramento (memória, periféricos paralelos).
  • Expansão de E/S quando várias fontes precisam compartilhar linhas em momentos diferentes.
  • Isolamento entre blocos para evitar que um circuito carregue o outro.

Mini-projeto: controlar vários LEDs com poucas linhas usando registrador de deslocamento

Objetivo: controlar 8 LEDs usando 3 sinais do controlador (ou de um gerador de clock/dados), com checagem de temporização e corrente. Um CI típico para isso é um registrador de deslocamento SIPO com latch (ex.: família 74HC/74HCT equivalente), que fornece saídas paralelas estáveis após o travamento (latch).

Materiais (conceito)

  • 1× registrador de deslocamento SIPO com latch e saída paralela (8 bits)
  • 8× LEDs
  • 8× resistores limitadores de corrente (um por LED)
  • Fonte compatível com a família lógica escolhida
  • Controlador com 3 pinos (DATA, CLK, LATCH) ou gerador de sinais

Entendendo os sinais (DATA, CLK, LATCH e OE)

  • DATA: bit serial que será inserido no registrador a cada pulso.
  • CLK: cada borda ativa desloca e captura o bit de DATA.
  • LATCH: transfere o conteúdo interno para as saídas Q (mantendo-as estáveis enquanto você desloca o próximo byte).
  • OE (Output Enable) (se existir): habilita/desabilita as saídas; quando desabilitado, pode colocar as saídas em alta impedância (tri-state), útil em barramentos.

Passo a passo de ligação (prático)

1) Alimentação e referências

  • Ligue VCC e GND do CI corretamente.
  • Adicione desacoplamento próximo ao CI (conceito: capacitor cerâmico entre VCC e GND) para reduzir ruído de comutação.

2) LEDs e resistores (corrente)

  • Conecte cada saída Q a um LED com resistor em série.
  • Escolha o sentido conforme o CI “fonte” (source) ou “drena” (sink) melhor corrente. Em muitos casos, é mais seguro usar o CI para drenar corrente (LED ligado ao VCC via resistor e o CI puxa para GND quando acende).

Dimensionamento rápido do resistor (exemplo):

R ≈ (VCC - Vf_LED) / I_LED

Exemplo numérico típico: VCC=5 V, LED vermelho Vf≈2 V, I≈5 mA → R≈(5-2)/0,005=600 Ω (valor comercial próximo: 560 Ω ou 680 Ω). Ajuste a corrente conforme limites do CI e brilho desejado.

3) Conexão dos sinais de controle

  • Conecte o pino de DATA do controlador à entrada serial do registrador.
  • Conecte CLK ao clock de deslocamento.
  • Conecte LATCH ao pino de travamento das saídas.
  • Se houver RESET/CLR, defina um estado conhecido na inicialização (por exemplo, manter em nível inativo e aplicar pulso quando necessário).
  • Se houver OE, mantenha habilitado para acender LEDs; use-o para apagar tudo rapidamente ou para tri-state quando compartilhar barramento.

4) Sequência de operação (como enviar um byte)

Para atualizar os LEDs com um padrão de 8 bits:

  • Coloque LATCH no estado que mantém as saídas “travadas” (não atualiza ainda).
  • Para cada um dos 8 bits (MSB→LSB ou LSB→MSB, conforme seu CI):
    • Coloque DATA = 0 ou 1.
    • Gere um pulso de CLK (respeitando tempos mínimos).
  • Ao final, aplique um pulso em LATCH para transferir o byte para as saídas.

Isso evita que os LEDs “pisquem” durante o deslocamento, porque as saídas só mudam quando você aciona o latch.

5) Verificação de temporização (o que checar)

Mesmo sem entrar em detalhes de análise de clock, é importante validar três pontos no datasheet do CI:

  • Setup time de DATA antes da borda ativa de CLK (DATA deve estar estável um pouco antes).
  • Hold time de DATA após a borda (manter estável um pouco depois).
  • Largura mínima do pulso de CLK e de LATCH.

Na prática, se você estiver gerando sinais por software em um microcontrolador, normalmente há folga suficiente. Se usar lógica rápida ou cabos longos, reduza a velocidade do clock e mantenha trilhas curtas.

6) Verificação de corrente (o que não ultrapassar)

  • Confira a corrente máxima por pino (cada saída) e a corrente total do CI (soma de todas as saídas) no datasheet.
  • Se muitos LEDs ficarem acesos ao mesmo tempo, a corrente total pode exceder o permitido. Soluções comuns:
    • Aumentar resistores (reduzir corrente por LED).
    • Acender menos LEDs simultaneamente (padrões).
    • Usar transistores/drivers externos para os LEDs (o registrador passa a comandar os transistores).

Padrões de teste para validar o circuito

  • Teste 1 (um LED por vez): envie 00000001, 00000010, 00000100… para confirmar mapeamento Q0..Q7.
  • Teste 2 (todos apagados/acessos): 00000000 e 11111111 para checar corrente total e polaridade.
  • Teste 3 (alternado): 10101010 e 01010101 para verificar se não há bits “trocados” e se o latch está funcionando.

Expansão para mais LEDs (encadeamento)

Muitos registradores de deslocamento permitem cascatear (ligar a saída serial do primeiro na entrada serial do segundo). Assim, com os mesmos 3 sinais (DATA, CLK, LATCH), você controla 16, 24, 32… saídas. A regra prática é: para N CIs de 8 bits, envie 8×N clocks antes de acionar o latch.

Onde entram buffers/tri-state neste mini-projeto

Se você precisar compartilhar as linhas de dados com outros dispositivos (um barramento), use:

  • Buffer tri-state para isolar DATA/CLK/LATCH quando outro mestre estiver ativo, ou
  • OE do próprio registrador (se disponível) para colocar as saídas em alta impedância quando o barramento de LEDs não deve interferir.

O ponto crítico é evitar que duas saídas tentem dirigir a mesma linha simultaneamente. Em projetos com múltiplos módulos, defina claramente quem é o “dono” do barramento em cada momento (habilitação exclusiva).

Agora responda o exercício sobre o conteúdo:

Em um circuito com registrador de deslocamento SIPO e latch para controlar LEDs, qual é a função do sinal LATCH durante a atualização de um novo byte?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

O LATCH serve para atualizar as saídas paralelas apenas no momento desejado, copiando o byte do registrador interno. Assim, os LEDs não mudam durante o deslocamento dos 8 bits, e só alteram quando o latch é acionado.

Próximo capitúlo

Interfaces com LEDs: corrente, resistores e limites de saída TTL/CMOS

Arrow Right Icon
Capa do Ebook gratuito Eletrônica Digital para Iniciantes: Portas Lógicas, TTL/CMOS e Interfaces Básicas
67%

Eletrônica Digital para Iniciantes: Portas Lógicas, TTL/CMOS e Interfaces Básicas

Novo curso

15 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.