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

Aprenda › Tema 10

Contadores e registradores de deslocamento: projeto passo a passo

Leitura de 7 min · Equipe bitGateLab

Um contador é um grupo de flip-flops que percorre uma sequência fixa de estados a cada pulso de clock; um registrador é um grupo de flip-flops que guarda ou desloca uma palavra binária. Com eles se medem tempos, se dividem frequências, se convertem dados de serial para paralelo e se geram sequências de controle. Você precisa ter bem claros os flip-flops D, JK e T e suas tabelas de excitação, explicados em latches e flip-flops.

Contador assíncrono (ripple)

A forma mais simples de contar é encadear flip-flops T com T = 1, de modo que cada um alterne e divida a frequência por 2. Só o primeiro recebe o clock do sistema; cada um dos seguintes usa como clock a saída do anterior. Com flip-flops disparados por borda de descida, conecta-se Q de um estágio ao clock do seguinte e o contador conta para cima; com borda de subida é preciso usar Q para contar para cima (com Q ele contaria para baixo).

Seu defeito é o atraso acumulado: o estágio n não muda até que todos os anteriores tenham mudado, como uma onda que percorre a cadeia. Durante esse tempo a saída passa por valores falsos.

Exemplo: contador assíncrono de 4 bits com tCQ = 12 ns por flip-flop. Ele passa de 0111 para 1000.

  1. Q0 muda de 1 para 0 aos 12 ns: a saída é lida como 0110.
  2. Q1 muda aos 24 ns: 0100.
  3. Q2 muda aos 36 ns: 0000.
  4. Q3 muda aos 48 ns: 1000, o valor correto.

Durante 48 ns a saída mostrou 0110, 0100 e 0000. Se um circuito decodifica esses valores, verá pulsos falsos. Para ler sempre um valor estável, o período do clock deve ser maior que 48 ns, ou seja, f < 20.8 MHz.

Contador síncrono

No contador síncrono todos os flip-flops recebem o mesmo clock, e a lógica decide quem alterna. Em um contador binário crescente, um bit alterna quando todos os bits menos significativos valem 1:

T0 = 1, T1 = Q0, T2 = Q0·Q1, T3 = Q0·Q1·Q2

Todas as saídas mudam juntas, tCQ depois da borda. O período mínimo já não depende do número de bits por causa da cadeia de flip-flops, e sim de tCQ + atraso da AND + tsu.

Contador módulo N

Um contador módulo N percorre N estados e recomeça. Precisa de pelo menos ⌈log2 N⌉ flip-flops. Há duas formas de fazê-lo.

Com reset assíncrono: toma-se um contador binário e detecta-se o primeiro estado que não deve aparecer. Para módulo 10 esse estado é 1010; basta uma NAND de Q3 e Q1 conectada ao clear ativo em nível baixo, porque é a primeira vez que Q3 e Q1 valem 1 ao mesmo tempo. Funciona, mas o estado 1010 aparece durante alguns nanossegundos e gera um pulso curto nas saídas.

Projeto síncrono: escreve-se a tabela de estados e calculam-se as entradas com a tabela de excitação. Não há estados transitórios.

Exemplo: contador síncrono módulo 6 (0 a 5) com flip-flops T. Estados Q2 Q1 Q0; os estados 110 e 111 não são usados e valem X.

Q2 Q1 Q0PróximoT2T1T0
000001001
001010011
010011001
011100111
100101001
101000101

Cada T vale 1 quando o bit muda. Simplificando com os X:

  • T0 = 1.
  • T1 = Q2·Q0 (cobre 001 e 011; em 101 vale 0 porque Q2 = 1).
  • T2 = Q1·Q0 + Q2·Q0 = Q0·(Q1 + Q2).

Confira os estados não usados: a partir de 110, T2 = 0, T1 = 0, T0 = 1, o contador vai para 111; a partir de 111, T2 = 1, T1 = 0, T0 = 1, vai para 010. Ambos voltam à sequência: o contador parte sozinho (tem autopartida), mesmo que seja ligado em um estado inválido.

Registradores de deslocamento

Um registrador de deslocamento é uma cadeia de flip-flops D: a saída de cada um alimenta a entrada do seguinte e, a cada borda, todos os bits avançam uma posição. Conforme a forma como os dados entram e saem, eles se classificam assim:

Exemplo: registrador SIPO de 4 bits, inicialmente em 0000, com Q0 ← entrada, Q1 ← Q0, Q2 ← Q1, Q3 ← Q2. São enviados os bits 1, 0, 1, 1, nessa ordem.

BordaBit de entradaQ0 Q1 Q2 Q3
111 0 0 0
200 1 0 0
311 0 1 0
411 1 0 1

Depois de 4 bordas, lido como Q3 Q2 Q1 Q0, o registrador contém 1011: o primeiro bit enviado ficou em Q3.

Contador em anel e contador Johnson

Se a saída do último flip-flop de um registrador de deslocamento é conectada à entrada do primeiro, obtém-se um contador em anel. Ele é inicializado com um único 1 (por exemplo 1000) e esse 1 circula: 1000, 0100, 0010, 0001, 1000. Com n flip-flops ele tem n estados, e cada estado já vem decodificado, porque só uma saída está em 1. É preciso garantir a carga inicial; se ele parte de 0000, fica ali para sempre.

Se, em vez de Q, realimenta-se Q do último flip-flop, obtém-se o contador Johnson (ou de anel torcido), com 2n estados. Para 4 bits (Q0 Q1 Q2 Q3, com Q0 ← Q3):

0000 → 1000 → 1100 → 1110 → 1111 → 0111 → 0011 → 0001 → 0000

Cada estado é identificado com uma AND de apenas duas entradas, observando onde está a fronteira entre uns e zeros: por exemplo, 1100 é o único com Q1 = 1 e Q2 = 0, e 0000 é o único com Q0 = 0 e Q3 = 0.

Para 4 flip-flops: um contador binário usa os 16 estados, um Johnson usa 8 e um anel usa 4. Os estados restantes do Johnson (8) e do anel (12) devem ser corrigidos com lógica adicional se o circuito puder partir neles.

Erros comuns

Experimente no simulador

Comparar um contador assíncrono com um síncrono no cronograma é a melhor forma de ver o efeito de propagação em onda (ripple).

  1. Coloque quatro flip-flops T com T = 1, conecte o clock ao primeiro e encadeie os demais como contador assíncrono.
  2. Conecte as quatro saídas a indicadores e a um display ou a uma barra de LEDs.
  3. Monte ao lado dele o contador síncrono com T1 = Q0, T2 = Q0·Q1 e T3 = Q0·Q1·Q2, todos com o mesmo clock.
  4. Abra o cronograma, deixe o clock correr e observe a transição de 0111 para 1000 em ambos.
  5. Monte um registrador com quatro flip-flops D em cadeia, mude a entrada serial antes de cada borda e observe como os bits avançam; depois realimente Q do último estágio para o primeiro e verifique os 8 estados do Johnson.

Exercícios

  1. De quantos flip-flops você precisa para um contador módulo 12 binário, em anel e Johnson?
    Resposta

    Binário: 4 (24 = 16 ≥ 12). Anel: 12. Johnson: 6 (2 × 6 = 12).

  2. Que porta e que saídas você usaria para fazer um contador módulo 12 com reset assíncrono ativo em nível baixo a partir de um contador binário de 4 bits?
    Resposta

    12 = 1100. Uma NAND de Q3 e Q2 conectada ao clear, porque é a primeira vez que ambos valem 1.

  3. Um contador assíncrono de 8 bits usa flip-flops com tCQ = 10 ns. Qual é o pior tempo de acomodação?
    Resposta

    8 × 10 = 80 ns, por exemplo ao passar de 01111111 para 10000000.

  4. Que AND de duas entradas decodifica o estado 0111 do contador Johnson de 4 bits?
    Resposta

    Q0·Q1: é o único estado com Q0 = 0 e Q1 = 1.