Perché è necessario sincronizzare gli input asincroni in FSM?


8

Ho imparato di recente l'elettronica digitale. So che ci sono porte che svolgono funzioni logiche, ho imparato a conoscere RS-Latch, D-Latch e Master-Slave-D-Flip-Flop. Ora che posso eseguire funzioni logiche e memorizzare stati, posso creare una macchina a stati finiti (ad esempio semaforo). In classe abbiamo parlato di questo particolare esempio di semaforo e si è discusso di quali problemi sorgessero, se si aggiungesse un pulsante di avvio / arresto (segnale al semaforo che un pedone è in attesa di semaforo verde).

La conclusione era che questo pulsante sarebbe stato un input asincrono, quindi abbiamo bisogno di inserire un flip flop davanti alla macchina a stati in modo che questo input possa essere prima sincronizzato.

Quello che non capisco è, qual è il problema con gli input asincroni? Perché dobbiamo sincronizzarlo? E perché un infradito di fronte alla macchina a stati o al retro aiuterebbe con la sincronizzazione? Ho letto diversi articoli, parlando di "metastabilità" ma ancora non capisco

molte grazie

Risposte:


6

Come già sapete, la macchina a stati del controller del semaforo è una macchina sincrona. Cioè, è guidato da un certo clock in modo tale che avvengano tutti i cambiamenti della logica combinatoria e si stabilizzino su valori stabili abbastanza a lungo prima del successivo limite di clock per soddisfare i tempi di impostazione richiesti.

schematico

simula questo circuito - Schema creato usando CircuitLab

inserisci qui la descrizione dell'immagine

Se i dati cambiano entro quel tempo di impostazione, l'output finale non sarà solo imprevedibile, ma a causa della meta-stabilità, può effettivamente fluttuare o danzare per un po 'di un valore intermedio prima di scegliere un valore finale. Può persino oscillare tra una logica e zero logico ad alta frequenza causando un notevole flusso di corrente e riscaldamento.

inserisci qui la descrizione dell'immagine

Pertanto, qualsiasi input asincrono a una macchina a stati deve essere sincronizzato ad un certo punto affinché il sistema funzioni come previsto. Tuttavia, ciò non significa necessariamente che devi SEMPRE aggiungere un altro fermo al sistema.

Se l'ingresso procede solo verso una singola "porta successiva" E lo stato dell'ingresso è indipendente da tutti gli altri ingressi, allora non importa se il segnale arriva tardi alla parte. Fondamentalmente, devi chiedere ... "Se perdiamo l'input per un ciclo di clock, importa?"

Se tuttavia, l'ingresso alimenta più gate diversi. Le porte successive possono vedere diversi livelli logici e propagare uno stato errato alla chiusura successiva. Fondamentalmente può succedere una varietà di cose brutte.

Questo può essere illustrato con il tuo semplice esempio. Nota se la metastabilità in REG1 non si è stabilita prima dell'orologio successivo, potrebbe causare l'accensione simultanea di WALK e del semaforo, oppure nessuno dei due potrebbe accendersi.

schematico

simula questo circuito

Inoltre, se un input asincrono ha una relazione con un altro input asincrono che ci si aspetta che accada contemporaneamente, il secondo input potrebbe essere riconosciuto ma il primo no.

In entrambi i casi è necessario aggiungere un fermo di sincronizzazione all'ingresso per allineare i tempi del segnale con l'orologio delle macchine a stati. Si noti che ciò aggiunge un ritardo del ciclo di clock o un ritardo di ciclo di mezzo clock se si utilizza l'altro fronte del segnale di clock.

Tuttavia, potresti chiederti "ma QUESTO fermo non presenta lo stesso problema?" e, naturalmente, la risposta sarebbe sì. Ma il trucco qui è consentire a quella potenziale meta-stabilità di accadere in un punto del circuito in cui non ha importanza come ho sottolineato sopra.

Trovare quel punto può essere problematico con input dipendenti. Normalmente, è necessario aggiungere una logica aggiuntiva per qualificare tali input.

Tuttavia, tenere presente che la metastabilità è una cosa probabile. Sebbene, a causa delle differenze nelle tolleranze di fabbricazione, la maggior parte dei fermi si schieri molto rapidamente, esiste la possibilità che rimanga instabile per un bel po 'di tempo. Maggiore è il divario tra il clock e maggiore è la probabilità che si sia stabilizzato. Di conseguenza, se l'orologio di sistema è ad alta frequenza, è prudente dividerlo per eseguire il pre-latch per consentire più tempo di assestamento. Tuttavia, anche allora non ci sono garanzie.

Un ultimo pensiero. Ho detto che esiste la possibilità di alte correnti indotte dalla meta-stabilità e del riscaldamento durante la sincronizzazione di un ingresso esterno casuale. Sfortunatamente, c'è molto poco che puoi fare per correggere questo e lunghi problemi di metastabilità oltre alla rimozione dei circuiti di input asincroni.


Grazie! Quindi l'ulteriore ciclo di clock del flip flop aggiunge tempo per stabilizzare la metastabilità? Inoltre, perché dovremmo mettere un infradito, alla fine di un FSM?
Eren,

@Eren Sì aggiunge tempo e gli dà un posto sicuro, logicamente, per sistemarsi in sincronismo. In genere si desidera che tutte le uscite vengano modificate contemporaneamente. Quindi l'ultimo stadio dovrebbe normalmente essere un flip-flop, o più precisamente, un output "latch", quindi gli output sono tutti sincroni.
Trevor_G,

1
ti ha dato + 1 per più porte, ma con la certezza che hai corretto i tuoi ultimi paragrafi. Anche la metastabilità nel latch di sincronizzazione è importante, perché può essere passata nel circuito. Non esiste una cura per la metastabilità. Tuttavia, è possibile ridurre la probabilità fino a una probabilità incredibilmente piccola aspettando più a lungo prima della decisione finale. Al fine di evitare di ridurre la frequenza di clock, ciò viene solitamente eseguito pipeline prima di altri D-flop. Una volta che la probabilità di errore è scesa a una volta nell'età dell'universo, per 1 miliardo di circuiti alla massima frequenza di clock, la maggior parte delle persone ritiene che la metastabilità sia "curata"
Neil_UK il

@Neil_UK sì, stavo cercando di dirlo, senza confondere troppo l'OP. Sono ancora in corso lavori. Devo uscire per la giornata però. Grazie.
Trevor_G

1
La metastabilità è un uomo nero in questo tipo di discussioni. In realtà, la situazione che descrivi in ​​cui si alimentano più input oltre il limite dell'orologio fallirà molto più spesso di quanto si ottengano eventi di metastabilità. I ritardi di instradamento possono inclinarsi nell'ordine dei nanosecondi, il che significa che un cambiamento nei dati può raggiungere un flip flop prima del fronte di salita dell'orologio di ricezione e può raggiungere un altro flip flop dopo il fronte di salita. Faccio questa distinzione perché la metastabilità è solo un problema nei casi in cui hai pochissimo gioco, mentre l'inclinazione del routing è sempre un problema.
jalalipop,

3

Un problema con i disegni asincroni è la presenza di razza o pericoli. Ad esempio, in questo circuito, supponiamo che inizialmente A = 1, B = 0 e C = 1 e quindi D sia stabile e fissato a 1.

inserisci qui la descrizione dell'immagine

Ora lascia che B sia cambiato in 1 e C sia cambiato in 0 nello stesso momento . È ovvio che D rimarrà a 1. Ma nei circuiti reali, i ritardi di propagazione e i ritardi dei fili sono importanti. Quindi è molto possibile che la variazione in C raggiunga la porta OR più velocemente di quanto la variazione in B si propaga alla porta OR, attraverso la porta AND. Il risultato è che D viene portato momentaneamente a 0, prima che ritorni allo stato stabile 1. Questo è chiamato razza o pericolo. Questo glitch momentaneo può innescare qualsiasi circuito presente dopo D, e questa transizione indesiderata viene propagata attraverso l'intero circuito. Ciò provoca una dissipazione indesiderata della potenza e probabilmente un errore nella funzionalità.

Per evitare questi problemi, possiamo registrare gli ingressi e le uscite aggiungendo un D-flip-flop prima di tutti gli ingressi A, B, C e dopo l'uscita D.Perché ora il nostro circuito blocca solo ingressi stabili ai fronti di clock, calcola l'espressione, blocca D e la emette solo nel successivo fronte di clock. Ciò garantisce che tali anomalie negli ingressi o nelle uscite non vengano propagate nel nostro circuito, a condizione che tutti gli ingressi delle infradito rispettino il tempo di installazione e di attesa.

Questo è il motivo principale per cui i progetti sincroni sono maggiormente preferiti, nonostante la velocità offerta dai progetti asincroni.


Grazie mille! Ho solo un'altra domanda se va bene. L'aggiunta delle infradito prima degli ingressi e dopo le uscite causerà uno spostamento di due cicli di clock. Il cambio causerà qualche problema alla nostra macchina statale? C'era un'analogia con la persona A che contava fino a 7 e chiedeva alla persona B se contava correttamente. B lo analizzerà e risponderà "Sì". Se avessimo un flip flop davanti e dopo l'uscita la risposta "sì" raggiungerebbe la persona A quando è già alle 9. Non vedo come questo causerebbe qualche problema oltre alla latenza
Eren

Dopo aver bloccato gli ingressi in un ciclo di clock, otteniamo l'uscita nel successivo ciclo di clock stesso. La funzionalità rimarrà la stessa. Transizione di stato in ogni ciclo di clock. Ecco come viene solitamente progettato FSM.
Mitu Raj,

Sì, questo è il ritardo causato dal flip-flop, ma ciò non influisce sulla funzionalità.
Mitu Raj,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.