Flip-flop D
O flip-flop D (de dados) é o elemento de memória fundamental do projeto digital síncrono. A cada borda de subida do clock ele amostra a entrada D e a armazena na saída Q, mantendo esse valor até a próxima borda. As entradas assíncronas PRE (preset) e CLR (clear) forçam Q para 1 ou 0 imediatamente, independentemente do clock, e CLR vence se ambas forem ativadas. Por capturar o dado apenas em um instante bem definido, o flip-flop D é o bloco padrão para registradores, pipelines e máquinas de estados.
Capturar um bit na borda do clock
Conecte um Switch a D e um Clock a CLK e coloque um LED em Q. O nível que D tiver no instante da borda de subida é copiado para Q e permanece durante todo o período do clock, mesmo que você mude a chave depois. Esse comportamento de «amostrar e reter» é o que transforma um valor combinacional em estado armazenado.
| CLK | D | Q(t+1) |
|---|---|---|
| rising | 0 | 0 |
| rising | 1 | 1 |
| no edge | X | Q(t) (hold) |
Ler a tabela de excitação
A tabela de excitação responde ao problema de projeto ao contrário: dada a transição que você quer que Q faça, quanto deve valer D? No flip-flop D é trivial, D é sempre igual ao próximo estado desejado, e por isso os flip-flops D são tão convenientes para máquinas de estados. Use PRE e CLR apenas para a inicialização assíncrona ao ligar, nunca como parte do caminho de dados síncrono normal.
| Q(t) | Q(t+1) | D |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Montar um contador assíncrono
Conecte o Q' (saída invertida) de cada flip-flop à sua própria D e leve Q' ao clock do próximo estágio. Assim cada estágio alterna na metade da frequência do anterior e uma cadeia de flip-flops D conta em binário. Esse contador «ripple» ou assíncrono é simples, mas os estágios se estabilizam um após o outro; quando precisar que todos os bits mudem no mesmo instante, use um contador síncrono com um clock comum.
Citações
- Eccles, W. H., & Jordan, F. W. (1919). A trigger relay utilising three-electrode thermionic vacuum tubes. Radio Review, 1(3), 143-146.. Referência 1
- Shannon, C. E. (1938). A symbolic analysis of relay and switching circuits. Transactions of the American Institute of Electrical Engineers, 57(12), 713-723.. Referência 2
- Mano, M. M., & Ciletti, M. D. (2018). Digital design: With an introduction to the Verilog HDL, VHDL, and SystemVerilog (6th ed.). Pearson.. Referência 3