Aprenda › Tema 9
Latches e flip-flops: SR, D, JK e T passo a passo
Leitura de 7 min · Equipe bitGateLab
Até agora as saídas dos seus circuitos dependiam apenas das entradas do momento. Para contar, guardar um dado ou lembrar em que passo está um processo, você precisa de memória, e a menor célula de memória é o latch. Aqui você vai construir um latch com duas portas, transformá-lo em um flip-flop disparado por borda e usar as tabelas de que vai precisar para projetar contadores e máquinas de estados.
O latch SR
Duas portas NOR com as saídas cruzadas para as entradas formam um latch SR. A realimentação é o que cria a memória: uma vez que a saída assume um valor, ela se sustenta sozinha.
| S | R | Próximo Q | Ação |
|---|---|---|---|
| 0 | 0 | Q | Manter |
| 0 | 1 | 0 | Reset |
| 1 | 0 | 1 | Set |
| 1 | 1 | — | Proibido |
Com S = R = 1 as duas NOR entregam 0, de modo que Q e Q deixam de ser complementares. Pior ainda: se depois as duas entradas descem para 0 ao mesmo tempo, o estado final depende de qual porta é mais rápida. Por isso essa combinação é proibida. Sua equação característica, válida com a condição S·R = 0, é Q+ = S + R·Q.
Com portas NAND obtém-se o latch SR, de entradas ativas em nível baixo: 11 mantém, 01 coloca Q = 1, 10 coloca Q = 0 e 00 é a combinação proibida (as duas saídas em 1).
O latch D: transparente enquanto está habilitado
Para eliminar a combinação proibida, acrescenta-se uma entrada de habilitação EN e geram-se S = D·EN e R = D·EN. Como S e R nunca valem 1 ao mesmo tempo, o problema desaparece. O comportamento é simples:
- EN = 1: o latch é transparente, Q segue D o tempo todo.
- EN = 0: Q fica congelado com o último valor que D tinha.
A transparência é o ponto fraco do latch. Se você conecta a saída de um latch, através de lógica, à sua própria entrada, enquanto EN = 1 o sinal pode dar várias voltas e o resultado é imprevisível. Para circuitos sequenciais síncronos é preciso algo que capture o dado em um único instante.
Flip-flops disparados por borda
Um flip-flop D disparado por borda de subida copia D em Q unicamente no instante em que o clock passa de 0 para 1. No resto do tempo, ele ignora D. É construído com dois latches D em cascata (mestre e escravo) com habilitações opostas: enquanto o clock está em 0, o mestre segue D e o escravo está fechado; quando o clock sobe, o mestre se fecha e o escravo passa para a saída o valor capturado. Sua equação é a mais simples: Q+ = D.
A partir do flip-flop básico definem-se outros dois tipos muito usados em projeto:
- JK: como o SR, mas sem combinação proibida. J = K = 1 faz Q mudar (alternar) a cada borda. Equação:
Q+ = J·Q + K·Q. - T (toggle): com T = 0 mantém, com T = 1 alterna. Equação:
Q+ = T ⊕ Q. É obtido de um JK com J = K = T ou de um D com D = T ⊕ Q.
| J | K | Q+ | Ação |
|---|---|---|---|
| 0 | 0 | Q | Manter |
| 0 | 1 | 0 | Reset |
| 1 | 0 | 1 | Set |
| 1 | 1 | Q | Alternar |
Exemplo: um flip-flop JK parte de Q = 0 e recebe cinco bordas com (J, K) = (1,0), (0,0), (1,1), (0,1), (1,1). Aplique Q+ = J·Q + K·Q em cada uma:
- (1,0), Q = 0: 1·1 + 1·0 = 1.
- (0,0), Q = 1: 0·0 + 1·1 = 1 (mantém).
- (1,1), Q = 1: 1·0 + 0·1 = 0 (alterna).
- (0,1), Q = 0: 0·1 + 0·0 = 0.
- (1,1), Q = 0: 1·1 + 0·0 = 1 (alterna).
Sequência de Q depois de cada borda: 1, 1, 0, 0, 1.
Tabelas de excitação
A tabela característica responde "dadas as entradas, para onde vai Q?". Para projetar é preciso a pergunta inversa: "quero que Q passe deste valor para este outro; que entradas eu coloco?". Essa é a tabela de excitação, e você vai usá-la em cada contador e máquina de estados.
| Q → Q+ | D | T | J K | S R |
|---|---|---|---|---|
| 0 → 0 | 0 | 0 | 0 X | 0 X |
| 0 → 1 | 1 | 1 | 1 X | 1 0 |
| 1 → 0 | 0 | 1 | X 1 | 0 1 |
| 1 → 1 | 1 | 0 | X 0 | X 0 |
Os X do JK são a razão pela qual esse flip-flop costuma dar equações mais curtas: para passar de 0 para 1 tanto faz se K vale 0 (set) ou 1 (alternar), e essa liberdade é aproveitada no mapa de Karnaugh.
Tempos de setup, hold e frequência máxima
Um flip-flop real precisa que D esteja estável por um tempo antes da borda, o tempo de setup (tsu), e que continue estável por um tempo depois, o tempo de hold (th). Se D muda dentro dessa janela, a saída pode ficar algum tempo em um nível intermediário antes de se decidir: é a metaestabilidade. Além disso, a saída leva um atraso tCQ para mudar depois da borda.
Em um circuito síncrono o sinal sai de um flip-flop, atravessa lógica combinacional e chega ao seguinte. O período mínimo do clock é:
Tmin = tCQ + tlógica + tsu
Exemplo: tCQ = 15 ns, o caminho combinacional mais longo leva 20 ns e tsu = 5 ns.
Tmin = 15 + 20 + 5 = 40 ns, portanto fmax = 1 / 40 ns = 25 MHz.
Para o hold usa-se o caminho mais curto: se o tCQ mínimo é 5 ns e não há lógica entre dois flip-flops, o dado novo chega 5 ns depois da borda. Com th = 3 ns a condição é atendida, porque 5 ns ≥ 3 ns.
Erros comuns
- Chamar um latch de flip-flop: o latch responde ao nível da habilitação, o flip-flop à borda do clock.
- Usar a tabela característica quando o projeto pede a de excitação.
- Esquecer que no latch NAND as entradas são ativas em nível baixo e que a combinação proibida é 00, não 11.
- Mudar D exatamente na borda do clock e esperar um resultado definido.
- Deixar desconectadas as entradas assíncronas de preset e clear de um flip-flop real: elas devem ir ao seu nível inativo.
Experimente no simulador
A diferença entre latch e flip-flop se vê de imediato em um diagrama de tempo. Monte os dois e alimente-os com o mesmo sinal.
- Coloque duas portas NOR e conecte a saída de cada uma a uma entrada da outra; acrescente as entradas S e R e dois indicadores.
- Mude S e R para comprovar as quatro linhas da tabela, incluindo a proibida, e observe que Q e Q valem 0 ao mesmo tempo.
- Coloque um latch D e um flip-flop D e conecte a ambos a mesma entrada de dado e o mesmo sinal de clock ou habilitação.
- Abra o cronograma e mude D várias vezes enquanto o clock está em 1: o latch acompanha as mudanças e o flip-flop só captura o valor da borda de subida.
- Repita com um flip-flop JK com J = K = 1 e observe como a saída dele tem a metade da frequência do clock.
Exercícios
- Um flip-flop T parte de Q = 1 e recebe T = 1, 1, 0, 1 em quatro bordas. Que valores Q assume?
Resposta
Q+ = T ⊕ Q: 1⊕1 = 0, 1⊕0 = 1, 0⊕1 = 1, 1⊕1 = 0. Sequência: 0, 1, 1, 0.
- De que valores de J e K você precisa para que um flip-flop passe de Q = 1 para Q = 0?
Resposta
J = X, K = 1. Com K = 1 e J = 0 faz-se o reset; com J = K = 1 ele alterna. As duas opções levam Q a 0.
- Com tCQ = 12 ns, tsu = 4 ns e uma frequência desejada de 40 MHz, quanto tempo, no máximo, a lógica entre flip-flops pode levar?
Resposta
T = 1 / 40 MHz = 25 ns. tlógica ≤ 25 − 12 − 4 = 9 ns.
- Escreva a equação de D para que um flip-flop D se comporte como um JK.
Resposta
D = J·Q + K·Q, que é a equação característica do JK.
Com essas peças você já pode passar para os contadores e registradores e depois para as máquinas de estados.