Temporizzazione dei flip-flop - setup, hold e frequenza massima di clock
In questa pagina 6
Fino ad ora i flip-flop sono stati trattati come elementi ideali, che aggiornano lo stato in modo istantaneo sul fronte di clock. Nei circuiti reali per memorizzare il valore corretto bisogna rispettare vincoli di temporizzazione, che determinano anche la velocità massima del sistema. Sono parametri elettrici (dipendono dalla tecnologia, dalla temperatura, dalla tensione di alimentazione), non logici.
I tre parametri del flip-flop
Si consideri un D flip-flop positive-edge-triggered (Elementi di memoria - latch SR, latch D e flip-flop DUn circuito sequenziale ha uscite che dipendono da ingressi e stato (memoria); è un circuito combinatorio con elementi di memoria in retroazione; stato presente = uscite dei FF, stato futuro = ingressi dei FF. Sincrono (clock) o asincrono. Latch SR (NOR): S=1,R=0 set; S=0,R=1 reset; 00 memoria; 11 proibito. Latch D: C=1 trasparente (Q=D), C=0 memoria, sensibile al livello. Flip-flop D edge-triggered = due latch D in cascata (master-slave) con clock opposti: cambia solo sul fronte attivo e non è trasparente. Si assume D flip-flop positive-edge-triggered.Elementi di memoria - latch SR, latch D e flip-flop D →) con ingresso e fronte di salita del clock all'istante .
- Tempo di setup : durata minima dell'intervallo in cui l'ingresso deve rimanere stabile (al valore desiderato) PRIMA del fronte di clock che provoca il cambiamento dell'uscita. Se cambia troppo tardi, l'uscita del primo latch (master) potrebbe trovarsi a un livello di tensione intermedio quando il suo valore è trasferito al secondo: il dato memorizzato non è affidabile.
- Tempo di hold : durata minima dell'intervallo in cui l'ingresso deve rimanere stabile DOPO il fronte di clock. Se cambia troppo presto dopo il fronte, il master potrebbe ancora essere trasparente e propagare il cambiamento allo slave.
- Tempo di propagazione (o ): intervallo tra il fronte di clock che fa da trigger e l'istante in cui l'uscita comincia a commutare () o si è stabilizzata ().
In sintesi: finestra di stabilità del dato , in cui non deve cambiare; l'uscita è valida dopo .
Vincolo sul periodo di clock (setup)
In un circuito sequenziale sincrono il ritardo da un fronte di clock al successivo ha tre componenti:
- i flip-flop cambiano le uscite dopo dal fronte;
- le uscite arrivano alla rete combinatoria, che calcola uscite e stato futuro in un tempo (il percorso più lento, cammino critico);
- gli stati futuri arrivano agli ingressi dei flip-flop e devono rimanere stabili per prima del fronte successivo.
Quindi, aggiungendo un margine di sicurezza (slack = "gioco"):
Esempio. ns, ns, ns. Senza margine: ns, MHz. Con ns: ns, MHz.
Conseguenze.
- Il setup time del flip-flop limita la massima frequenza di clock (influisce sulla frequenza massima, non sulla minima).
- Se il vincolo non è rispettato (setup violation), si risolve aumentando il periodo, cioè diminuendo la frequenza di clock, oppure accorciando il cammino combinatorio.
- Il ritardo della logica combinatoria che pesa nel vincolo è quello del caso peggiore (porta o percorso più lento).
- Il setup time è un parametro del flip-flop (dipende dalla tecnologia del FF); è il margine disponibile a dipendere dalla logica a monte.
Vincolo di hold
Le variazioni dell'uscita di un flip-flop non devono arrivare troppo presto a un altro flip-flop (o a se stesso) per non violare il tempo di hold. Con i ritardi minimi del flip-flop e della rete combinatoria: È un requisito di correttezza indipendente dalla frequenza di clock: il fronte e la nuova uscita sono entrambi legati allo stesso fronte, quindi rallentare il clock non aiuta. Se è violato si aggiunge ritardo ai percorsi corti (buffer).
Esempio. ns, ns, ns: , violazione di ns. Abbassare la frequenza non la cura; servono almeno ns di ritardo in più sul percorso più corto.
Clock skew
Il fronte di clock può arrivare a istanti leggermente diversi ai vari flip-flop a causa dei ritardi nell'albero di distribuzione del clock (clock skew): chi riceve il clock in anticipo o in ritardo vede i vincoli di setup e di hold modificati. Anche le porte che si inseriscono nel percorso del clock (clock gating, Registri e microoperazioniUn registro a $n$ bit è formato da $n$ flip-flop (più porte) con clock comune; il caricamento si controlla con clock gating (OR con il clock: risparmia potenza ma introduce ritardi e clock skew) oppure, meglio, con load enable (MUX + D FF: $Q\leftarrow D$ se EN=1, $Q\leftarrow Q$ altrimenti). Un sistema digitale complesso si divide in datapath (registri e blocchi aritmetico-logici) e unità di controllo (FSM che invia i segnali di controllo e riceve i segnali di stato). Le microoperazioni, scritte in RTL (es. $K_1:R_2\leftarrow R_1$), sono di trasferimento, aritmetiche, logiche (con maschere: AND azzera, OR pone a 1, XOR complementa) e di scorrimento.Registri e microoperazioni →) introducono ritardi e quindi skew: per questo il caricamento dei registri con load enable è preferibile alla gestione del clock.
Temporizzazione nella simulazione
Per simulare correttamente un circuito sincrono:
- gli ingressi vanno applicati con adeguato anticipo rispetto al fronte attivo (per esempio in corrispondenza del fronte di discesa del clock se i FF sono PET), così la rete combinatoria ha tempo di calcolare uscita e stato futuro;
- il periodo di clock deve essere sufficiente (ritardo della rete nel caso peggiore adeguatamente inferiore al periodo);
- si leggono i risultati quando stato e uscite sono stazionari (per esempio appena prima del fronte di salita successivo).
La simulazione può essere funzionale (elementi ideali, ritardo nullo: verifica la funzione) o temporale (ritardi realistici: verifica la temporizzazione) (VHDL - macchine a stati finiti e testbench sequenzialeUna macchina a stati finiti (FSM) si descrive in VHDL, in stile behavioral, con un tipo enumerato per gli stati e tre process: (1) registro di stato con reset (asincrono) e aggiornamento state<=next_state sul fronte; (2) stato futuro come funzione combinatoria di stato e ingresso (case state, default next_state<=state); (3) uscita come funzione combinatoria di stato (Moore) o di stato e ingresso (Mealy). Il testbench ha il process del clock e il process degli ingressi (reset iniziale, sequenza di test che percorre tutti gli stati).VHDL - macchine a stati finiti e testbench sequenziale →).
Errori comuni
- Dire che il setup time limita la frequenza minima: limita la massima.
- Pensare che rallentare il clock risolva una violazione di hold: non la risolve.
- Dimenticare di usare i ritardi massimi per il setup e minimi per l'hold.
- Confondere setup (stabilità prima del fronte) e hold (stabilità dopo).
- Scrivere il vincolo senza : il ritardo del flip-flop fa parte del cammino.
Versione ripasso
- (setup): stabile prima del fronte; (hold): stabile dopo; : dal fronte alla stabilizzazione di . Parametri elettrici del FF. Violazione master a livello intermedio.
- Periodo: , (ritardi massimi, cammino critico). Es. ns MHz; con slack : MHz. Il setup limita la frequenza massima; si risolve abbassando la frequenza.
- Hold: , indipendente dal clock; non si cura rallentando, si aggiunge ritardo ai percorsi corti (: mancano ns).
- Skew: clock a istanti diversi vincoli modificati; meglio load enable che clock gating (Registri e microoperazioniUn registro a $n$ bit è formato da $n$ flip-flop (più porte) con clock comune; il caricamento si controlla con clock gating (OR con il clock: risparmia potenza ma introduce ritardi e clock skew) oppure, meglio, con load enable (MUX + D FF: $Q\leftarrow D$ se EN=1, $Q\leftarrow Q$ altrimenti). Un sistema digitale complesso si divide in datapath (registri e blocchi aritmetico-logici) e unità di controllo (FSM che invia i segnali di controllo e riceve i segnali di stato). Le microoperazioni, scritte in RTL (es. $K_1:R_2\leftarrow R_1$), sono di trasferimento, aritmetiche, logiche (con maschere: AND azzera, OR pone a 1, XOR complementa) e di scorrimento.Registri e microoperazioni →).
- Simulazione: ingressi sul fronte di discesa, lettura prima del fronte di salita; funzionale vs temporale.
- Errori: setup frequenza minima; rallentare per l'hold.