Vai al contenuto
Elettronica dei Sistemi Digitali

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.

Latch SR con porte NOR e diagramma temporale di un flip-flop D
A sinistra due porte NOR con le uscite incrociate sugli ingressi: R porta Q a 0, S lo porta a 1, con entrambi a 0 il latch conserva il valore. A destra un flip-flop D: l’uscita Q copia il valore di D solo nell’istante del fronte di salita del clock e lo mantiene fino al fronte successivo; un breve impulso su D tra due fronti viene ignorato.

Il funzionamento.

  • S = 1, R = 0: la porta di sotto ha un ingresso a 1, quindi \overline{Q} = 0; la porta di sopra ha entrambi gli ingressi a 0, quindi Q = 1. Il latch è impostato (set).
  • S = 0, R = 1: per simmetria Q = 0: il latch è azzerato (reset).
  • S = R = 0: ogni porta si comporta da invertitore dell’altra. Le combinazioni Q = 1, \overline{Q} = 0 e Q = 0, \overline{Q} = 1 sono entrambe stabili, e il latch conserva quella in cui si trovava. È la memoria.
  • S = R = 1: 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 D e un ingresso di abilitazione E. Con E = 1 il latch è trasparente: Q segue D. Con E = 0 il latch è chiuso e conserva l’ultimo valore. Il problema della trasparenza è che, finché E resta a 1, ogni variazione di D 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: Q prende il valore che D ha in quel momento e lo mantiene per tutto il periodo, qualunque cosa faccia D 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 D, 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 D a Q.

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 D = \overline{Q}, cioè un divisore di frequenza per due.

I vincoli temporali

Perché il flip-flop catturi correttamente il dato, D deve essere stabile:

  • per un tempo t_{su} prima del fronte (tempo di setup);
  • per un tempo t_h dopo il fronte (tempo di hold).

Dopo il fronte, l’uscita cambia con un ritardo t_{cq} (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 D 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 t_r decresce come e^{-t_r/\tau}, con \tau costante del flip-flop di decine di picosecondi, e il tempo medio tra due errori è

    \[ \mathrm{MTBF} = \frac{e^{t_r/\tau}}{T_0\,f_{clk}\,f_{dati}} \]

Esempio. Con \tau = 50 ps, T_0 = 20 ps, clock a 100 MHz e dati che cambiano a 1 MHz: lasciando t_r = 1 ns per risolvere, l’MTBF è circa 2{,}4\cdot 10^5 s, meno di tre giorni; con t_r = 2 ns diventa 1{,}2\cdot 10^{14} 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.

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x