Latch e flip-flop: memoria, setup, hold e metastabilità
Latch SR con porte NOR, latch D trasparente, flip-flop D master-slave, tempi di setup e hold, metastabilità con il calcolo dell'MTBF e sincronizzatori.
Una rete combinatoria dimentica tutto appena cambiano gli ingressi. Per contare, ricordare uno stato, costruire registri e processori servono elementi di memoria: circuiti che conservano un bit finché non si decide di cambiarlo. In questa lezione vediamo come la retroazione crea la memoria nel latch SR, il latch D, il flip-flop D sensibile al fronte, i suoi vincoli di tempo e il fenomeno della metastabilità.
Il latch SR
Due porte NOR collegate ad anello: l’uscita di ciascuna è un ingresso dell’altra.

Il funzionamento.
: la porta di sotto ha un ingresso a 1, quindi
; la porta di sopra ha entrambi gli ingressi a 0, quindi
. Il latch è impostato (set).
: per simmetria
: il latch è azzerato (reset).
: ogni porta si comporta da invertitore dell’altra. Le combinazioni
e
sono entrambe stabili, e il latch conserva quella in cui si trovava. È la memoria.
: entrambe le uscite a 0, e quando i due ingressi tornano insieme a 0 lo stato finale è imprevedibile. È la combinazione vietata.
Il principio è profondo: due invertitori in anello hanno due stati di equilibrio stabili, e lo stato in cui si trovano è l’informazione memorizzata. Una cella di memoria SRAM è proprio questo, più due transistor per leggerla e scriverla.
Il latch D
Per eliminare la combinazione vietata e controllare quando si memorizza: un solo ingresso dati
e un ingresso di abilitazione
. Con
il latch è trasparente:
segue
. Con
il latch è chiuso e conserva l’ultimo valore. Il problema della trasparenza è che, finché
resta a 1, ogni variazione di
passa all’uscita, e in un circuito con retroazione il segnale potrebbe fare più giri nello stesso periodo.
Il flip-flop D
Il flip-flop D cambia stato solo nell’istante del fronte di salita del clock:
prende il valore che
ha in quel momento e lo mantiene per tutto il periodo, qualunque cosa faccia
nel frattempo. Si costruisce con due latch D in cascata (master-slave) abilitati da fasi opposte del clock: con il clock basso il primo è trasparente e segue
, il secondo è chiuso; sul fronte di salita il primo si chiude congelando il valore, e il secondo si apre e lo porta all’uscita. Non c’è mai un percorso trasparente da
a
.
Il flip-flop D è l’elemento di memoria di quasi tutti i circuiti digitali sincroni. Gli altri tipi (JK, T) si ottengono da esso con un po’ di logica: per esempio un flip-flop T, che inverte lo stato a ogni fronte, è un D con
, cioè un divisore di frequenza per due.
I vincoli temporali
Perché il flip-flop catturi correttamente il dato,
deve essere stabile:
- per un tempo
prima del fronte (tempo di setup); - per un tempo
dopo il fronte (tempo di hold).
Dopo il fronte, l’uscita cambia con un ritardo
(da clock a uscita). Questi tre parametri, di decine di picosecondi nei circuiti integrati moderni, decidono la frequenza massima di un circuito sincrono, come vedremo nella lezione sulla temporizzazione.
La metastabilità
Cosa succede se
cambia proprio dentro la finestra di setup e hold? Il latch interno può fermarsi in un punto di equilibrio instabile a metà strada tra 0 e 1, come una palla in cima a una collina, e restarci per un tempo imprevedibile prima di cadere da una parte o dall’altra. È la metastabilità.
Non si può evitare quando si campiona un segnale asincrono (un pulsante, un dato che arriva da un altro dispositivo con un clock diverso), perché prima o poi cambierà nel momento sbagliato. Si può però renderla estremamente improbabile. La probabilità che lo stato metastabile duri più di un tempo
decresce come
, con
costante del flip-flop di decine di picosecondi, e il tempo medio tra due errori è
![]()
Esempio. Con
ps,
ps, clock a 100 MHz e dati che cambiano a 1 MHz: lasciando
ns per risolvere, l’MTBF è circa
s, meno di tre giorni; con
ns diventa
s, quasi quattro milioni di anni. L’esponenziale rende enormemente efficace ogni nanosecondo in più.
Da qui la regola universale: un segnale asincrono si fa passare attraverso un sincronizzatore, due (o tre) flip-flop in cascata con lo stesso clock, prima di usarlo. Il primo può andare in metastabilità, ma ha un intero periodo per risolversi prima che il secondo lo legga.





