Circuitos Sequenciais (Latches e Flip-Flops)
Ao contrário dos circuitos combinacionais, que produzem saídas apenas a partir das entradas atuais, os circuitos sequenciais também levam em conta o histórico do sistema.
Isso é possível porque eles possuem elementos de memória capazes de armazenar informações temporárias — mesmo que seja apenas 1 bit.
Graças a isso, circuitos sequenciais são a base de registradores, contadores, máquinas de estados e de praticamente qualquer sistema digital com comportamento dinâmico.
Latches
Conceito
Um latch é um circuito eletrônico que armazena um único bit de informação. Sua saída depende tanto das entradas atuais quanto do estado anterior.
Eles são chamados de “sensíveis ao nível” quando possuem uma entrada de controle (Enable): o estado pode mudar enquanto o sinal Enable está ativo.
Contudo, nem todo latch tem Enable. O latch SR básico, por exemplo, não possui entrada de controle: ele muda de estado imediatamente quando S ou R mudam (circuito assíncrono).
Tipos de Latch
Latch SR (Set-Reset)
- Entradas: S (setar 1), R (resetar 0).
- Saídas: Q e Q̅.
- Funcionamento:
- S=1, R=0 → saída vai para 1 (Set)
- S=0, R=1 → saída vai para 0 (Reset)
- S=0, R=0 → mantém o estado anterior
- S=1, R=1 → condição inválida

Latch D (Data)
- Tem apenas uma entrada de dados (D) e um controle Enable.
- Enquanto Enable=1, a saída Q segue D.
- Quando Enable=0, o valor anterior é mantido, ou seja, a saída “trava”.

Pode-se notar que o latch é sensível ao nível do sinal de controle (Enable). Enquanto o Enable está ativo, a saída segue imediatamente a entrada. Se as entradas oscilarem ou tiverem ruídos durante esse período, o latch pode registrar valores errados ou instáveis (“transparência do latch”). Isso é especialmente crítico em circuitos síncronos, onde diferentes sinais mudam em momentos próximos, podendo gerar condições de corrida e resultados imprevisíveis.
Condição de corrida: quando as entradas (como S e R num latch SR) se alternam rapidamente para níveis altos simultaneamente, forçando o circuito a um estado de oscilação contínua devido aos atrasos de propagação das portas lógicas.
Flip-Flops
Conceito
Visando corrigir o problema que os latches apresentam, isto é, a possibilidade de capturar valores instáveis enquanto o sinal de controle está ativo, os flip-flops foram desenvolvidos.
Eles são semelhantes aos latches, mas diferem no modo de operação: em vez de serem sensíveis ao nível do sinal de controle, os flip-flops só atualizam sua saída no instante da borda do clock (subida ou descida).
Dessa forma, o intervalo em que o flip-flop pode alterar a saída é muito pequeno, ou seja, sua saída ficará estável durante o funcionamento do circuito.
Clock: Um clock é um sinal digital que oscila entre 0 e 1 de forma periódica. Ele serve para sincronizar circuitos digitais, indicando exatamente quando componentes como flip-flops ou registradores devem atualizar suas saídas. Cada borda do clock (subida ou descida) dispara a mudança de estado, garantindo que todas as partes do sistema funcionem de forma coordenada e previsível.
Tipos de Flip-Flops
Flip-Flop SR
É a versão controlada por clock do latch SR. Ele recebe as entradas S (Set) e R (Reset) e atualiza a saída apenas na borda do clock. Assim como o latch SR, ainda apresenta a condição inválida quando S=1 e R=1.
Entradas e saídas:
- S=1 e R=0 → Q=1 (Set: força a saída Q a 1)
- S=0 e R=1 → Q=0 (Reset: força a saída Q a 0)
- S=0 e R=0 → mantém Q (estado anterior)
- S=1 e R=1 → estado inválido (contradição, não permitido)

Flip-Flop D
É o tipo mais usado em registradores. Possui uma única entrada D e, na borda do clock, o valor presente em D é transferido para a saída Q. Fora do instante do clock, a saída permanece estável.
Entradas e saídas:
- D=0 → Q=0 (na borda do clock, a saída recebe o valor de D)
- D=1 → Q=1 (na borda do clock, a saída recebe o valor de D)
- Q mantém seu valor fora do pulso de clock

Flip-Flop JK
Evolução do SR, elimina a condição inválida. Possui duas entradas: J e K (Jump and Kill) e uma condição de toggle.
Entradas e saídas:
- J=1 e K=0 → Q=1 (Set)
- J=0 e K=1 → Q=0 (Reset)
- J=0 e K=0 → mantém Q (estado anterior)
- J=1 e K=1 → Q inverte → Q = Q (toggle, útil em contadores e divisores de frequência)

Aplicações e Construções Maiores
Registradores: juntando vários flip-flops em paralelo, é possível armazenar vários bits simultaneamente. Construindo uma estrutura modular.
Contadores: flip-flops JK podem ser conectados em cascata para contar pulsos.

Máquinas de estados: armazenam o estado atual e, junto à lógica combinacional, determinam o próximo estado.

