GOOGLE→ metastabilità flip flop http://bonda.cnuce.cnr.it

annuncio pubblicitario
GOOGLEÎ metastabilità flip flop
http://bonda.cnuce.cnr.it/Documentation/ateach/arch1/mate
rialeArch1/parte3/paragrafo_b7.html
http://electro-logic.blogspot.it/2013/07/fpgaapprofondiamo-la-metastabilita.html
http://books.google.it/books?id=jWp3dXRGvYC&pg=PA307&lpg=PA307&dq=metastabilit%C3%A0+flip+flop
&source=bl&ots=C5jikPttEN&sig=cX3aB_ncsLLMeQ-pKxZoIZRA8Y&hl=it&sa=X&ei=2IasUub7FannywPTiIGIDA&ved=0C
E0Q6AEwBA#v=onepage&q=metastabilit%C3%A0%20flip%20
flop&f=false
http://unina.stidue.net/Circuiti%20Integrati%20Digitali/Mat
eriale/3.%20Circuiti%20Sequenziali.pdf
1
Relazioni temporali da rispettare per avere un corretto
funzionamento del flip-flop
Considerando il diagramma temporale di figura 3.2, il segnale
D dovrà stabilizzarsi prima del fronte attivo del clock (cioè
quello di discesa). L’intervallo di tempo minimo che
intercorre fra l’ultima variazione di D e il fronte attivo del
clock prende il nome di tempo di setup, ts. Inoltre è
necessario che D resti stabile anche per un tempo
successivo al fronte del clock. Si definisce allora tempo di
hold, th, il minimo intervallo di tempo che deve trascorrere
dal fronte attivo del clock prima che si verifichi una
variazione di D. Se D varia nell’intervallo ts+th non è più
garantito il corretto funzionamento del flip-flop, il quale
può entrare in uno stato metastabile (o comunque avere un
funzionamento per cui le uscite diventano impredicibili).
2
L’uscita Q varierà con un certo ritardo rispetto al fronte
attivo del clock. Si definisce allora il tempo tq, detto clockto-q delay, come l’intervallo di tempo minimo, che deve
trascorrere dal fronte attivo del clock per avere un’uscita Q
3
stabile.
Ingressi asincroni e circuiti di sincronizzazione
…Per tradurre l'ingresso asincrono in un segnale sincrono che
possa essere usato per determinare le variazioni di stato di un
sistema è necessario un circuito di sincronizzazione, i cui
ingressi sono il segnale asincrono ed un segnale di clock e la cui
uscita è un segnale sincronizzato con il clock fornito in
ingresso. In un primo tentativo di costruzione di un circuito di
sincronizzazione si potrebbe far uso di un flip flop di tipo-D
sensibile ai fronti il cui ingresso D sia collegato al segnale
asincrono. Tuttavia sussiste un piccolo problema: si ipotizzi che
il segnale asincrono stia variando tra il livello alto e quello
basso mentre arriva il segnale di clock. E’ impossibile sapere se
il segnale verrà memorizzato come alto o basso. In aggiunta la
situazione reale può essere anche peggiore: quando il segnale
che viene campionato non è stabile durante i necessari periodi
di set-up e di hold è possibile che il flip flop si porti in uno
4
stato denominato metastabile.
In un flip-flop nello stato metastabile l'uscita non avrà un
valore corretto, ma sarà nella regione indeterminata tra i due
valori; inoltre non vi è garanzia che il flip flop esca da questo
stato in un intervallo finito di tempo. Alcuni dei circuiti che
leggono il valore presente sull'uscita del flip flop lo
interpreteranno come uno 0, altri come un 1: questa situazione
è detta errore di sincronizzazione.
5
In un sistema completamente sincrono gli errori di
sincronizzazione si possono evitare garantendo il rispetto dei
tempi di set-up e di hold per tutti i flip flop o latch, ma ciò è
impossibile quando il segnale in ingresso è di natura
asincrona. Una soluzione possibile è attendere abbastanza a
lungo prima di leggere l'uscita del flip flop per garantire
che la sua uscita sia stabile.
Qual è il periodo di tempo necessario?
Si può dimostrare che la probabilità che un flip flop sia in
uno stato metastabile decresce esponenzialmente, per cui
dopo poco tempo la probabilità che il flip flop sia nello
stato metastabile diviene estremamente bassa; tuttavia tale
probabilità non raggiunge mai il valore 0!
6
La probabilità di propagazione ai successivi flip-flop e quindi
all’uscita della metastabilità è calcolabili in termini di MTBF
(Mean Time Between Failures), tempo medio tra guasti dovuti
alla metastabilità. La formula empirica utilizzata è la seguente:
con C1 e C2 costanti dipendenti dal dispositivo (per es. dal
processo produttivo) e dalle condizioni operative (es.
temperatura), fCLK è la frequenza del clock utilizzato per
ricevere il segnale asincrono, fDATA la frequenza del segnale
asincrono in ingresso. tMET è il tempo a disposizione del
segnale per risolvere la metastabilità.
7
Nella maggior parte dei flip flop un'attesa di un tempo pari
ad alcune volte il tempo di set-up rende abbastanza piccola
la probabilità di errori di sincronizzazione. Se il periodo di
clock è più lungo del periodo di potenziale metastabilità, un
circuito di sincronizzazione sicuro si può costruire con due
flip flop di tipo D.
8
Il rischio
9
10
11
Supponiamo che un segnale asincrono a venga inviato allo
ingresso D di un flip-flop.
Il problema è che su questo segnale
asincrono non abbiamo alcun tipo di
controllo, le sue commutazioni
possono avvenire in un istante di
tempo qualsiasi. Quindi può accadere
che il segnale a vari proprio in prossimità di un fronte attivo
del clock senza rispettare i vincoli di setup e di hold.
12
In definitiva, vi e un differente comportamento fra un flipflop dinamico ed uno statico; per il primo l’uscita, portatasi
nello stato illegale, vi rimane fino al successivo fronte del
clock. Il flip-flop statico, grazie al fatto che M è un punto di
equilibrio instabile, può risolvere l’uscita in un tempo tm
se c’è una minima perturbazione sovrapposta al segnale. Nel
caso dei flip-flop dinamici il tempo di metastabilità è pari al
periodo del segnale di clock per i flip-flop statici, invece,
questo tempo tm vedremo come può essere calcolato, ma in
linea di principio può senz’altro essere più basso del periodo
del clock. Pertanto dei due tipi di flip-flop, il più adatto ad
essere utilizzato come sincronizzatore è certamente quello
statico, dato che è in grado da solo di risolvere in qualche
modo l’uscita; i flip-flop dinamici non sono adatti per essere
utilizzati come sincronizzatori.
13
14
Osserviamo che anche se l’uscita del flipflop statico non si
porta al livello logico corretto dopo il tempo tm, ciò non
comporta alcun problema dato che al successivo fronte del
clock, con un buon margine sui tempi di setup e di hold, verrà
individuato il valore logico corretto (quello alto, nel nostro
esempio). In questo caso, quindi, ci si accorge della variazione
del segnale asincrono con un ritardo pari al periodo del clock.
Ciò però non è un problema perché sicuramente la frequenza
del segnale di clock è sufficientemente maggiore rispetto a
quella del segnale asincrono esterno (altrimenti, non avrebbe
senso campionario alla frequenza di clock).
L’importante, quindi, è che il flip-flop non rimanga troppo a
lungo nello stato metastabile.
15
Consideriamo, infatti, il sistema mostrato in figura 3.40, in cui
abbiamo il segnale asincrono a in ingresso ad un flip-flop che
funziona da sincronizzatore, la cui uscita viene inviata in
ingresso ad un sistema sequenziale.
16
Il problema che si presenterebbe, se il segnale Qa si trovasse
ad un potenziale cui corrisponde un livello logico indefinito, è
che due porte logiche potrebbero interpretare questo segnale
l’una come livello logico alto e l’altra come livello logico basso.
Ciò comporta che lo stato futuro in cui si va a posizionare il
sistema sia uno stato che non è stato previsto quando è stata
progettata la nostra macchina sequenziale. Ciò, ad esempio,
potrebbe comportare che il sistema vada a porsi in uno stato
da cui non è più in grado di uscire; da questo errore di
sincronizzazione, quindi, potrebbe non essere più possibile
recuperare il funzionamento del sistema.
17
Vediamo, quindi, come sia possibile porre rimedio a questo
problema. Innanzitutto è ovvio che bisogna considerare, come
sincronizzatore, un flip-flop statico; valutiamo allora qual è il
massimo tempo di metastabilità, tm,max, che è possibile
tollerare all’uscita di questo flip-flop. A tale scopo
consideriamo il diagramma temporale di figura 3.41, in cui il
segnale asincrono varia proprio in corrispondenza del fronte
del clock.
18
L’uscita Qa del sincronizzatore passa in uno stato metastabile
per un tempo tm, dopo il quale si porta, in maniera casuale, a 0
oppure ad 1; al fronte successivo del clock, in ogni caso, viene
individuato il valore corretto di Qa. L’uscita y, stato futuro del
nostro sistema sequenziale, potrà essere elaborata dal nostro
sistema combinatorio certamente non in corrispondenza del
primo fronte del clock; bisogna attendere prima che Qa
assuma il valore corretto, e poi bisogna considerare il ritardo
del sistema combinatorio. Per avere dunque un corretto
funzionamento del nostro sistema deve risultare:
Quindi, in pratica, il tempo di metastabilità può essere visto
come un incremento del ritardo tq del primo flip-flop. Da
questa relazione si ricava che il massimo tempo di
metastabilità che è possibile tollerare è dato da:
19
Da questa relazione si ricava che se il tempo di metastabilità
è minore di tm,max il nostro sistema funzionerà
correttamente, dato che l’uscita dei registri viene campionata
con un margine sufficiente rispetto al fronte del clock. Se
invece questo periodo di metastabilità è maggiore di
tm,max, il sistema sequenziale potrebbe non funzionare
correttamente, dato che per le uscite non sarebbero più
rispettati i vincoli sul tempo di setup e di hold.
Questa relazione, inoltre, ci conferma che non è possibile
utilizzare un flip-flop dinamico come sincronizzatore dato che
per esso tm=T.
Per un flipflop statico, invece, è possibile calcolare tm e
valutare in quali condizioni questo tempo è maggiore o minore
di tm,max.
20
Per avere una stima di trn facciamo delle ipotesi
semplificative; supponiamo che il segnale di clock sia ideale
(quindi con tr = tf = 0) e che il segnale d’ingresso a abbia dei
tempi di salita e di discesa diversi da zero, come mostrato in
figura 3.42.
21
Inoltre supponiamo che il fip-flop statico si comporti, in
qualche modo, come un circuito Sample&Hold, ovvero come un
campionatore la cui uscita vq all’istante 0 sia pari alla tensione
d’ingresso va a t=0, ovvero vq(0)=va(0). Quindi il valore iniziale
che si ha sull’uscita è perfettamente uguale al valore
d’ingresso campionato in corrispondenza del fronte attivo del
clock. Bisogna, a questo punto, definire la legge con cui questa
uscita varia nel tempo. Se il flip-flop fosse stato di tipo
dinamico l’uscita, come sappiamo, resterebbe bloccata al valore
vq(0). Poiché il flip-flop è statico l’uscita parte da vq(0) e poi
tenderà o verso VDD o verso 0, secondo una legge che
ipotizziamo essere la seguente:
in cui VM è la tensione di
metastabilità, cioè quella
che corrisponde al punto
di equilibrio instabile
del circuito costituito dai due invertitori in retroazione.
22
Non si commette un grosso
errore se si approssima
VIH con VDD,
inoltre si fa l’ulteriore
ipotesi semplificativa
che VM=VDD/2.
Da ciò si ricava che:
23
Per valutare in quali condizioni il tm appena calcolato può
diventare più grande di tm,max, facciamo riferimento al
diagramma temporale di figura 3.44, in cui riportiamo il
segnale di clock e la tensione d’ingresso va.
24
Se va(0) < VM
sicuramente si avrà un problema di metastabilità (addirittura,
dalla relazione precedente, tm tende all’infinito); in realtà
esiste una fascia di valori proibiti intorno a VM, di ampiezza
2vε, per i quali tm > tm,max, e, quindi, si ha un errore di
sincronizzazione.
Dal punto di vista del progetto, è chiaro che se possiamo agire
su qualche parametro progetteremo il nostro sistema in
modo da rendere la vε, quanto più piccola possibile, in modo da
ridurre al massimo la probabilità di un errore di
sincronizzazione. Dunque la vε è data da:
25
Osserviamo che è importante sia che il flip-flop sia veloce,
quindi una τ quanto più piccola possibile, sia che la vε sia
quanto più piccola possibile. Per far si che la vε sia quanto più
piccola possibile bisogna accrescere tm,max, cioè il tempo
massimo che possiamo tollerare prima che il sistema dia
luogo ad un errore di sincronizzazione, oppure bisogna
cercare di ridurre τ. In tal modo quando più è piccola questa
fascia d’incertezza (di ampiezza 2vε) tanto meno probabile è
che si abbia un errore di sincronizzazione.
Consideriamo che il segnale va
abbia delle transizioni con
uguali tempi di salita e di
discesa, come mostrato in
figura 3.45; supponiamo,
inoltre, che tale segnale
effettui le transizioni con
una propria frequenza media
26
di commutazione.
Alla fascia di tensione critica di ampiezza 2vε
corrisponderanno degli intervalli di tempo critici, di
ampiezza tε se il clock cambia proprio durante questi intervalli
di tempo si ha un errore di sincronizzazione. Ipotizzando che
il segnale vari linearmente si ha che l’ampiezza di questi
intervalli è data da:
In realtà, per ogni periodo (Tsignal) del segnale asincrono a,
abbiamo due possibili commutazioni,
ovvero due degli intervalli di ampiezza tε
(uno per il fronte di salita ed uno per
quello di discesa).
La percentuale di tempo rispetto al periodo del segnale in cui
possiamo avere degli errori di sincronizzazione rappresenta
una sorta di probabilità d’errore, in quanto ci indica il periodo
di tempo (relativamente breve) in cui possiamo trovarci nella
27
fascia 2vε.
Però, in effetti, il segnale viene campionato utilizzando il
segnale di clock; quindi il numero di errori di
sincronizzazione al secondo è dato da:
Il fattore 1/N prende il nome di MTBF, ovvero è il tempo
medio fra due errori di sincronizzazione (Mean Time Between
Failures), ed è un parametro che definisce la bontà del nostro
sistema. In definitiva risulta:
28
Osserviamo che nell’espressione ottenuta, valida in generale, la
costante t0 risulta essere pari a 2tr per le ipotesi in cui ci
siamo posti, ovvero clock ideale e segnale a con tr = tf finiti
(ma si poteva ipotizzare che il segnale d’ingresso fosse ideale
ed il clock avesse tr e tf finiti, oppure che entrambi i segnali
avessero dei tempi di salita e di discesa molto brevi però
variabili quasi in sincronia in una certa fascia); quindi, in
generale, il tempo t0 tiene conto di tutte queste non idealità.
Ovviamente a noi interessa avere un MTBF quanto più grande
possibile, in modo da aumentare il tempo medio fra due
errori di sincronizzazione. L’MTBF si riduce al crescere della
frequenza di clock, dato che il segnale d’ingresso viene
campionato più volte, ed ogni volta si può avere un errore di
sincronizzazione; inoltre si riduce al crescere della frequenza
dei segnale d’ingresso (infatti, se questo fosse costante non si
avrebbe mai errore di sincronizzazione, dato che ad ogni
fronte del clock l’ingresso non può variare).
29
L’MTBF può essere migliorato essenzialmente utilizzando dei
flip-flop più veloci (quindi riducendo τ) o progettando il
sistema in modo tale che tm,max, sia sufficientemente
grande.
Osserviamo, però, che comunque progettiamo il nostro sistema
c’è sempre una possibilità che si abbia un errore di
sincronizzazione (cioè non è possibile fare in modo che
l’MTBF sia infinito); in altri termini non esiste un
sincronizzatore ideale (c’è sempre una probabilità, sebbene
bassissima, che si campioni il segnale d’ingresso proprio
quando esso è in prossimità della tensione VM). L’unico
parametro su cui è possibile operare è l’MTBF; rendendolo
sempre più grande si può avere una ragionevole probabilità che
questo fenomeno non si manifesti in una maniera che non è
possibile tollerare.
30
Supponiamo, ad esempio, che si abbia una frequenza di clock
fck= 100 MHz, una frequenza media di variazione del segnale
fsignal=10 MHz, un valore di t0 = l ns ed una costante di tempo
del flip-flop pari a t = 0.25 ns. Il valore dell’MTBF risulta
pari a:
dove tm,max è espresso in ns.
Dunque se tm,max =1 ns il
nostro sistema è proprio al limite, in quanto sappiamo che per
avere un corretto funzionamento del sistema sequenziale deve
risultare: T ≥ tc,max+ts+tq; in tal caso risulta MTBF ≅ 50μs,
valore del tutto inaccettabile. Del resto se si porta tm,max a
soli 5 ns si ha MTBF ≅ 8 min., mentre per tm,max = 8 ns si ha:
MTBF ≅ 60 anni. Quest’ultimo valore può sembrare molto
grande, ma è il tempo medio fra due errori di sincronizzazione
per uno degli esemplari del nostro circuito; è chiaro allora che
se vengono prodotti 60x365 esemplari, mediamente mio di
31
questi ogni giorno ha un errore di sincronizzazione.
Inoltre, questo valore può essere grande o meno in base alla
tipica applicazione (in base a ciò che può accadere quando si
manifesta un errore di sincronizzazione).
Da questo esempio si deduce che, nel progetto del nostro
sistema, bisogna avere come specifica l’MTBF; dalla relazione
precedente si ricava il tm,max in base al quale progettare il
sistema.
Osserviamo che deve risultare tm,max= T-ts-tq, in cui il tempo
combinatoriale massimo viene comunque ridotto per aumentare
la velocità del sistema, come anche si cercano di rendere più
veloci possibile i flip-flop (riducendo il ts, ovvero il τ).
Sembrerebbe, quindi, che l’unico parametro su cui
effettivamente possiamo agire sia il periodo T, ovvero bisogna
rallentare la frequenza di clock.
Questo non tanto perché nell’espressione dell’MTBF compare
fck a denominatore, ma perché fck
compare in tm,max che è all’esponente. Bisognerebbe, quindi,
accettare una perdita di prestazioni del nostro sistema.32
Ciò, ovviamente, non può essere accettato e quindi bisogna
cercare di progettare un sincronizzatore più efficace; ciò può
essere fatto nel modo mostrato in figura 3.46.
33
Invece di utilizzare un solo flip-flop come sincronizzatore,
che in molti casi ci costringe a ridurre la frequenza del clock
per soddisfare la specifica sull’MTBF, viene utilizzato un
sincronizzatore più efficiente costituito da due flip-flop in
cascata (ovvero un registro a scorrimento composto da due
flip-flop). Tale circuito è migliore del precedente, seppure
abbia la limitazione di avere una latenza maggiore (dopo due
colpi di clock ci si accorge della variazione del segnale a),
perché non è altro che una versione molto semplificata del
sistema sequenziale precedente, in cui c’era il flip-flop
sincronizzatore, il sistema combinatorio, che in questo caso è
un filo di collegamento, ed un registro.
Quindi possiamo riapplicare la formula relativa a tm,max in cui
tc,max è uguale a zero, ovvero risulta:
34
In pratica viene dato al primo flip-flop tutto un periodo di
clock per risolvere l’uscita; appena l’uscita viene risolta il
secondo flip-flop fornisce il valore giusto, senza far vedere al
resto del sistema che il primo flip-flop per un certo periodo di
tempo ha dato un’uscita metastabile.
Questa soluzione, nel 95 % dei casi, risolvere i nostri
problemi. Qualora, anche con questa soluzione, non fosse
ancora possibile ottenere l’MTBF voluto, l’unica soluzione è
quella di aumentare la lunghezza di questo registro a
scorrimento. In questo caso, infatti, con elevata probabilità si
riesce a risolvere la metastabilità del primo flip-flop; qualora
questo non accada, l’uscita del secondo flip-flop diventa
metastabile. Se però utilizziamo un terzo flip-flop, diamo
anche al secondo registro un tempo T per poter risolvere
l’uscita. Ovviamente si avrà una certa cura nel progetto di
questi flip-flop per cercare di renderli veloci (quindi per
ridurre la costante di tempo τ).
35
A livello di componenti standard (quindi di porte TTL, CMOS,
ecc.) esistono dei registri, fra quelli che si possono già
acquistare, che sono predisposti per questo tipo di applicazioni
(cioè come sincronizzatori), ovvero hanno una particolarmente
ridotta.
36
Scarica