Impara › Argomento 9
Latch e flip-flop: SR, D, JK e T passo dopo passo
7 min di lettura · Team bitGateLab
Finora le uscite dei tuoi circuiti dipendevano soltanto dagli ingressi del momento. Per contare, conservare un dato o ricordare a che punto è un processo ti serve la memoria, e la cella di memoria più piccola è il latch. Qui costruirai un latch con due porte, lo trasformerai in un flip-flop attivato sul fronte e userai le tabelle che ti serviranno per progettare contatori e macchine a stati.
Il latch SR
Due porte NOR con le uscite incrociate verso gli ingressi formano un latch SR. È la retroazione a creare la memoria: una volta che l'uscita assume un valore, si mantiene da sola.
| S | R | Q successivo | Azione |
|---|---|---|---|
| 0 | 0 | Q | Mantenere |
| 0 | 1 | 0 | Reset |
| 1 | 0 | 1 | Set |
| 1 | 1 | — | Vietato |
Con S = R = 1 entrambe le NOR forniscono 0, quindi Q e Q smettono di essere complementari. Peggio ancora: se poi i due ingressi scendono a 0 nello stesso istante, lo stato finale dipende da quale porta è più veloce. Per questo tale combinazione è vietata. La sua equazione caratteristica, valida con la condizione S·R = 0, è Q+ = S + R·Q.
Con le porte NAND si ottiene il latch SR, con ingressi attivi bassi: 11 mantiene, 01 porta Q = 1, 10 porta Q = 0 e 00 è la combinazione vietata (entrambe le uscite a 1).
Il latch D: trasparente finché è abilitato
Per eliminare la combinazione vietata si aggiunge un ingresso di abilitazione EN e si generano S = D·EN e R = D·EN. Poiché S e R non valgono mai 1 contemporaneamente, il problema scompare. Il comportamento è semplice:
- EN = 1: il latch è trasparente, Q segue D in ogni istante.
- EN = 0: Q resta congelata sull'ultimo valore che aveva D.
La trasparenza è il punto debole del latch. Se colleghi l'uscita di un latch, attraverso della logica, al suo stesso ingresso, finché EN = 1 il segnale può fare più giri e il risultato è imprevedibile. Per i circuiti sequenziali sincroni serve qualcosa che catturi il dato in un solo istante.
Flip-flop attivati sul fronte
Un flip-flop D attivato sul fronte di salita copia D in Q unicamente nell'istante in cui il clock passa da 0 a 1. Per il resto del tempo ignora D. Si costruisce con due latch D in cascata (master e slave) con abilitazioni opposte: finché il clock è a 0 il master segue D e lo slave è chiuso; quando il clock sale il master si chiude e lo slave trasferisce all'uscita il valore catturato. La sua equazione è la più semplice: Q+ = D.
A partire dal flip-flop di base si definiscono altri due tipi molto usati nel progetto:
- JK: come l'SR ma senza combinazione vietata. J = K = 1 fa sì che Q cambi (commuti) a ogni fronte. Equazione:
Q+ = J·Q + K·Q. - T (toggle): con T = 0 mantiene, con T = 1 commuta. Equazione:
Q+ = T ⊕ Q. Si ottiene da un JK con J = K = T oppure da un D con D = T ⊕ Q.
| J | K | Q+ | Azione |
|---|---|---|---|
| 0 | 0 | Q | Mantenere |
| 0 | 1 | 0 | Reset |
| 1 | 0 | 1 | Set |
| 1 | 1 | Q | Commutare |
Esempio: un flip-flop JK parte da Q = 0 e riceve cinque fronti con (J, K) = (1,0), (0,0), (1,1), (0,1), (1,1). Applica Q+ = J·Q + K·Q a ciascuno:
- (1,0), Q = 0: 1·1 + 1·0 = 1.
- (0,0), Q = 1: 0·0 + 1·1 = 1 (mantiene).
- (1,1), Q = 1: 1·0 + 0·1 = 0 (commuta).
- (0,1), Q = 0: 0·1 + 0·0 = 0.
- (1,1), Q = 0: 1·1 + 0·0 = 1 (commuta).
Sequenza di Q dopo ogni fronte: 1, 1, 0, 0, 1.
Tabelle di eccitazione
La tabella caratteristica risponde alla domanda "dati gli ingressi, dove va Q?". Per progettare serve la domanda inversa: "voglio che Q passi da questo valore a quest'altro, quali ingressi applico?". Questa è la tabella di eccitazione, e la userai in ogni contatore e macchina a stati.
| 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 |
Le X del JK sono il motivo per cui questo flip-flop dà di solito equazioni più corte: per passare da 0 a 1 è indifferente che K valga 0 (set) o 1 (commutazione), e questa libertà si sfrutta nella mappa di Karnaugh.
Tempi di setup, hold e frequenza massima
Un flip-flop reale richiede che D sia stabile per un certo tempo prima del fronte, il tempo di setup (tsu), e che resti stabile per un certo tempo dopo, il tempo di hold (th). Se D cambia all'interno di questa finestra, l'uscita può restare per un po' a un livello intermedio prima di decidersi: è la metastabilità. Inoltre, l'uscita impiega un ritardo tCQ per cambiare dopo il fronte.
In un circuito sincrono il segnale esce da un flip-flop, attraversa la logica combinatoria e arriva al successivo. Il periodo minimo del clock è:
Tmin = tCQ + tlogica + tsu
Esempio: tCQ = 15 ns, il percorso combinatorio più lungo impiega 20 ns e tsu = 5 ns.
Tmin = 15 + 20 + 5 = 40 ns, quindi fmax = 1 / 40 ns = 25 MHz.
Per l'hold si usa il percorso più corto: se il tCQ minimo è 5 ns e non c'è logica tra due flip-flop, il nuovo dato arriva 5 ns dopo il fronte. Con th = 3 ns la condizione è rispettata, perché 5 ns ≥ 3 ns.
Errori comuni
- Chiamare flip-flop un latch: il latch risponde al livello dell'abilitazione, il flip-flop al fronte del clock.
- Usare la tabella caratteristica quando il progetto richiede quella di eccitazione.
- Dimenticare che nel latch NAND gli ingressi sono attivi bassi e che la combinazione vietata è 00, non 11.
- Cambiare D proprio sul fronte del clock e aspettarsi un risultato definito.
- Lasciare scollegati gli ingressi asincroni di preset e clear di un flip-flop reale: devono andare al loro livello inattivo.
Provalo nel simulatore
La differenza tra latch e flip-flop si vede subito in un diagramma temporale. Costruiscili entrambi e pilotali con lo stesso segnale.
- Inserisci due porte NOR e collega l'uscita di ciascuna a un ingresso dell'altra; aggiungi gli ingressi S e R e due indicatori.
- Cambia S e R per verificare le quattro righe della tabella, compresa quella vietata, e osserva che Q e Q valgono 0 contemporaneamente.
- Inserisci un latch D e un flip-flop D, e collega a entrambi lo stesso ingresso dati e lo stesso segnale di clock o di abilitazione.
- Apri il cronogramma e cambia D più volte mentre il clock è a 1: il latch segue i cambiamenti e il flip-flop prende soltanto il valore presente sul fronte di salita.
- Ripeti con un flip-flop JK con J = K = 1 e osserva come la sua uscita abbia metà della frequenza del clock.
Esercizi
- Un flip-flop T parte da Q = 1 e riceve T = 1, 1, 0, 1 su quattro fronti. Quali valori assume Q?
Risposta
Q+ = T ⊕ Q: 1⊕1 = 0, 1⊕0 = 1, 0⊕1 = 1, 1⊕1 = 0. Sequenza: 0, 1, 1, 0.
- Quali valori di J e K ti servono perché un flip-flop passi da Q = 1 a Q = 0?
Risposta
J = X, K = 1. Con K = 1 e J = 0 si esegue il reset; con J = K = 1 si commuta. Entrambe le scelte portano Q a 0.
- Con tCQ = 12 ns, tsu = 4 ns e una frequenza desiderata di 40 MHz, quanto può impiegare al massimo la logica tra i flip-flop?
Risposta
T = 1 / 40 MHz = 25 ns. tlogica ≤ 25 − 12 − 4 = 9 ns.
- Scrivi l'equazione di D affinché un flip-flop D si comporti come un JK.
Risposta
D = J·Q + K·Q, che è l'equazione caratteristica del JK.
Con questi elementi puoi passare ai contatori e registri e poi alle macchine a stati.