Metastability

Per mia ignoranza (anche se non ricordo di aver mai studiato qualcosa del genere) non conoscevo le problematiche riguardanti gli stati metastabili dei circuiti digitali:

formatting link

Per esempio, se collego un contatore ad una porta parallela di un micro e il conteggio avviene in modo asincrono, nel momento in cui vado a leggere il valore del contatore via sw c'è una probabilità (bassa, ma non nulla) di leggere un valore errato.

La logica dei pin d'ingresso del micro potrebbe entrare in uno stato metastabile se la lettura (immagino uno strobe sincrono con il clock del micro) avviene grosso modo vicino ad una variazione dell'ingresso.

Se il contatore con uscita parallela è binario, potrebbero esserci delle situazioni disastrose (per esempio passando da 0x0F a 0x10 si potrebbe leggere anche il valore 0x17).

Consigli in merito?

Reply to
pozz
Loading thread data ...

"pozz" ha scritto nel messaggio news:jdt2kv$cl0$ snipped-for-privacy@nnrp.ngi.it...

Ingressi a trigger di schmitt

Reply to
Roberto

...

Ritenere buono l'input se non varia per almeno 3 cicli di clock. Questo per=F2 nel caso di encoder, tastiere, ecc. Per logiche veloci si campiona il dato quando =E8 sicuramente stabile per mezzo di clock multipli della frequenza base. Le UART, ad esempio, ritengono buono il livello logico in mezzo a due bit.

Piccio.

Reply to
Piccio

Il giorno Mon, 02 Jan 2012 21:04:47 +0100, pozz ha scritto:

E' un problema noto, ad esempio con i contatori tipo CD4020 - CD4040 il ritardo di propagazione del conteggio tra un flip flop e l'altro è tale che la probabilità di false letture è tutt'altro che trascurabile.

Io ho risolto un problema simile facendo la lettura sul fronte opposto a quello di incremento, ma se metti ad esempio due CD4040 in serie il tempo potrebbe non bastare, il delay del FF è circa 300nS a 5V.

In quel caso meglio cambiare contatori.

-- ciao Stefano

Reply to
SB

...

Di solito si inseriscono dei gate (anche piccole reti RC o semplici resistenze + capacit=E0 d'ingresso) allo scopo di ritardare alcuni segnali rispetto ad altri in modo da garantire la corretta presenza di stati logici stabili agli ingressi.

Piccio.

Reply to
Piccio

Non vorrei che tu confondessi la metastabilità con il jitter.

Comunque, l'unico modo vero e assolutamente "sicuro" è rispettare i tempi di setup e di hold, e aggiungerei in particolare quest'ultimo. La metastabilità, infatti, è una tipica situazione del dato in ingresso a un flip-flop che cambia durante il tempo di setup e/o il tempo di hold. Si parla di nanosecondi e infatti a mio parere l'unico modo quando si ha a che fare con clock asincroni rispetto al dato è prevedere delle piccole capacità, o celle RC, simili a quelle che si usano per garantire il corretto funzionamento dei circuiti S&H a monte dei convertitori A/D (opportunamente dimensionate, si intende, e di solito nell'ordine dei picofarad).

Ciao CG

Reply to
CG Audio Laboratories

Il 03/01/2012 08:34, CG Audio Laboratories ha scritto:

Penso di no...

Ma se i pin d'ingresso sono asincroni rispetto al clock, non c'è nessuna garanzia.

o dati asincroni rispetto al clock :-)

In pratica tu voi "smussare" i fronti di salita e di discesa degli ingressi in modo che, durante il capture time (tempo di setup+hold), il segnale rimanga nello stesso intervallo valido per 1 o 0. Giusto?

Ma anche in questo caso, essendo ingressi e clock asincroni, non puoi essere sicuro che il livello rimanga stabile. Se la variazione dell'ingresso è avvenuta poco prima della lettura, potresti essere così "fortunato" da leggere mentre l'ingresso sta ancora variando (rallentato dall'RC) e magari nel capture time ti ritrovi un livello in tensione non ammesso. Sbaglio?

Reply to
pozz

Il 02/01/2012 21:46, Roberto ha scritto:

Non penso risolvano il problema della mestability che si presenta quando gli ingressi variano da 1 a 0 o da 0 a 1 in modo "completo", quindi superando anche le eventuali soglie del trigger d'ingresso.

Reply to
pozz

"pozz" ha scritto nel messaggio news:jdubf3$hor$ snipped-for-privacy@nnrp.ngi.it...

Prenditi una laurea in fisica e poi avrai diritto a pensare: metastabilita' != sincronismo.

Reply to
Roberto

Il 03/01/2012 08:46, pozz ha scritto:

Considerarlo affidabile -> memorizzarlo o utilizzarlo.

Marco

Reply to
Marco Trapanese

"pozz" ha scritto nel messaggio news:jdt2kv$cl0$ snipped-for-privacy@nnrp.ngi.it...

Magari ricordo male, o magari non centra niente (chiedo scusa anticipatamente :-) ) ma anni fa con problema di conteggio utilizzai la codifica grey......

formatting link

formatting link

formatting link

F.

Reply to
bughiman

Sì, diciamo che con valori opportuni vai incontro alle limitazioni sul tempo di hold :)

Dai un'occhiata qua:

formatting link

Ciao CG

Reply to
CG Audio Laboratories

Oppure meglio lo skew fra segnali.

Per mitigare l'effetto della metastabilita` i ritardi e le reti RC non servono (e neanche le porte a Schmitt trigger). Si possono mettere dei registri in cascata, struttura che riduce esponenzialmente la probabilita` di metastabilita`.

Il problema della metastabilita` non e` che viene campionato il dato sbagliato, tanto verra` campionato giusto al colpo di clock dopo, ma che per un tempo "lungo" l'uscita del FF rimane a mezza strada fra livello alto e basso, in zona analogica. Questo livello elettrico puo` essere interpretato da PARTE del restante circuito come H, e da un'altra parte come L, e se capita questo tipicamente la macchina a stati che c'e` dopo va per le terre.

Questo ovviamente in ambiente asincrono. Invece se capita in un progetto sincrono, vuol dire che il progetto e` sbagliato :)

Reply to
Franco

Direi che il problema fosse lo skew, non la metastabilita` o il jitter.

Reply to
Franco

Bisogna ammettere che chi ha scritto questa roba e` una bestia: ha copiato la simbologia di una application note della Texas, in cui il parametro T e` l'inverso di un tempo.

Che TI faccia di queste fesserie lo si puo` anche capire, ma che in una universita` non si riesca a definire una costante di tempo e scrivere EXP(t/tau) e` veramente il colmo!

Reply to
Franco

Per questo che siamo passati dalle interfacce in parallelo alle interfacce in seriale, velocissime ma con un segnale solo!

Certo che la metastabilita' non si può eliminare con probabilità zero, tutti i bistabili sono per definizione metastabili, e' per questo che si mette una cosa che o e' sbagliato alta o e' sbagliato bassa, così almeno tutti sanno che sarà lo stesso per tutti e poi si entra nel campo delle telecomunicazioni. C'era anche da fare quel giochetto con l'oscilloscopio dove si vedono i dati che vanno un po' ad 1 ed un po' a 0 a seconda della alea, almeno da qualche parte vanno!

Reply to
Roberto

Il giorno Tue, 3 Jan 2012 15:18:21 +0100, "bughiman" ha scritto:

La codifica Gray si usa sul disco degli encoder assoluti e consente di evitare errori di lettura perchè cambia un bit alla volta, ma che io sappia non esistono contatori up-down in Gray commerciali, anche se si possono fare con qualche gate-array.

-- ciao Stefano

Reply to
SB

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.