>> Tecnologia Eletrônica >  >> Celulares e Acessórios >> Celulares 4G

Projeto de Contador Mod-5: Por Que 3 Flip-Flops São Necessários

Fundamentos do Contador Mod-5

Um contador módulo-5 (Mod-5) sequencia através de 5 estados distintos (0, 1, 2, 3, 4) antes de reciclar para 0. O número mínimo de flip-flops é determinado pela contagem de estados.

Cálculo da Contagem de Flip-Flops

Número de estados = 2n onde n = número de flip-flops

  • 2 FFs → 4 estados (0-3) — insuficiente
  • 3 FFs → 8 estados (0-7) — suficiente
  • 4 FFs → 16 estados — exagero

Codificação de Estado Binário

ContagemQ₂ Q₁ Q₀Decimal
00 0 00
10 0 11
20 1 02
30 1 13
41 0 04
5 (reset)0 0 0→ 0

Estados 5 (101), 6 (110), 7 (111) são não usados/don't-care — deve garantir que contador auto-corrige se entrar neles.

Abordagens de Implementação

Síncrono (Recomendado)

  • Todos FFs clockados por clock comum
  • Lógica próximo estado: D₂ = Q₂'Q₁'Q₀' + Q₂Q₁'Q₀' (simplificado via mapa-K)
  • Lógica reset: Detecta estado 5 (101) → clear síncrono
  • Vantagens: Sem glitches, timing previsível, STA mais fácil

Assíncrono (Ripple)

  • FF0 clocka FF1 clocka FF2
  • Reset: NAND(Q₂, Q₀) → clear assíncrono para todos FFs
  • Desvantagens: Atraso ripple, risco glitch, condições corrida reset

Alternativa Contador Johnson / Anel

  • 3 FF contador Johnson = 6 estados (use 5, detecta estado 5 para reset)
  • Auto-decodificação — sem lógica decodificação externa necessária
  • Requer inicialização para estado válido

Projeto da Lógica de Reset

Reset síncrono na contagem 5 (101):

Reset = Q₂ · Q₁' · Q₀

Isso asserta quando contador atinge 5, forçando próximo clock a carregar 000.

Checklist de Verificação

  • Conta 0→1→2→3→4→0 ✓
  • Sem travamento em estados não usados (5,6,7) — adicione lógica auto-correção
  • Setup/hold atendidos para todos FFs na frequência clock alvo
  • Largura pulso reset ≥ especificação mínima
  • Fan-out do sinal reset dentro dos limites

Trecho VHDL (Síncrono)

process(clk, rst) begin
  if rst = '1' then count <= "000";
  elsif rising_edge(clk) then
    if count = "100" then -- 4
      count <= "000";
    else
      count <= count + 1;
    end if;
  end if;
end process;

Resposta: 3 flip-flops mínimo. 2 FFs fornecem apenas 4 estados; 3 FFs fornecem 8 estados, permitindo 5 usados + 3 não usados com lógica de reset adequada.