Il flip-flop D: memoria che segue il clock
Un flip-flop D memorizza un bit, ma solo in un momento preciso: quando il segnale di clock CLK passa da 0 a 1 (il fronte di salita). In quell’istante Q copia D. Per il resto del tempo Q mantiene il suo valore, qualunque cosa faccia D.
Passo dopo passo
Qui conta l’ordine: la verifica imposta gli ingressi una riga alla volta, dall’alto in basso, e le uscite devono corrispondere a ogni riga.
| Passo | D | CLK | Q |
|---|---|---|---|
| 1 | 0 | 0 | – |
| 2 | 0 | 1 | 0 |
| 3 | 1 | 1 | 0 |
| 4 | 1 | 0 | 0 |
| 5 | 1 | 1 | 1 |
| 6 | 0 | 1 | 1 |
| 7 | 0 | 0 | 1 |
| 8 | 0 | 1 | 0 |
Latch o flip-flop?
Un latch D è più semplice: finché il suo ingresso di abilitazione è 1 lascia passare D direttamente su Q, e quando l’abilitazione va a 0 mantiene. Il problema è che, mentre l’abilitazione è 1, ogni cambiamento di D arriva su Q. Un flip-flop reagisce a un solo istante, ed è questo che fa cambiare stato a un intero processore tutto insieme, una volta per ogni colpo di clock.
Come funziona
Metti due latch in fila: un master e uno slave. Il master è aperto quando CLK è 0 e segue D. Lo slave è aperto quando CLK è 1 e mostra quello che il master trattiene. Quando il clock sale, il master si chiude sull’ultimo valore di D e lo slave passa esattamente quel valore a Q. In nessun momento sono aperti entrambi, quindi D non può mai attraversarli di colpo.
La tabella qui sotto è una sequenza: la verifica cambia D e CLK riga per riga. Una “x” vuol dire che il valore non conta ancora, perché non è stato memorizzato niente.
Suggerimenti e soluzione
Prova prima da solo. Ogni suggerimento svela un po’ di più.
- Un latch D copia D mentre il suo enable è 1. Non basta: Q cambierebbe ogni volta che cambia D mentre CLK è 1.
- Usa due latch in fila (master e slave).
- Il master è abilitato mentre CLK è 0, lo slave mentre CLK è 1.