Diagrammi degli stati e macchine sequenziali
Diagramma degli stati
Section titled “Diagramma degli stati”Il diagramma degli stati è un modo più semplice di rappresentare un circuito sequenziale:
- ogni stato diventa un cerchio con il valore delle sue variabili (stato presente);
- ogni transizione diventa una freccia dallo stato presente al futuro;
- sulla freccia si indicano anche i valori degli ingressi e delle uscite dello stato di partenza;

Il diagramma ha le seguenti caratteristiche:
- per variabili di stato, il diagramma avrà stati diversi;
- per variabili di ingresso, ogni stato avrà transizioni;
Quindi la tabella degli stati avrà righe.
La stessa funzione sequenziale può essere rappresentata da diagrammi differenti. Bisogna trovare la rappresentazione che usa il minor numero di stati.
Codifica degli stati
Section titled “Codifica degli stati”Il valore assegnato ad ogni variabile di stato è arbitrario. Nel caso della caldaia si avrebbe potuto codificare l’accensione con uno e lo spegnimento con un . Di solito si lascia il sintetizzatore a decidere qual’è la codifica più performante.
L’importante è che i valori delle uscite del circuito corrispondano a quelli attesi.
Codifica one-hot
Section titled “Codifica one-hot”Normalmente 4 stati possono essere espressi con 2 bit (, , , ). A volte può essere utile esprimerlo come 4 variabili (, , , ).
Questo permette, in alcuni casi, di generare circuiti più semplici e quindi più veloci.
Analisi di circuiti sequenziali
Section titled “Analisi di circuiti sequenziali”Dato un circuito sequenziale, si può facilmente risalire al suo diagramma degli stati:
- deriviamo l’espressione dello stato futuro (in funzione degli ingressi primari e dello stato presente);
- deriviamo l’espressione delle uscite;
La velocità del clock è legata a quella della rete combinatoria. Lo stato futuro deve ottenere un valore stabile entro il prossimo fronte attivo del clock. Quindi il ritardo introdotto dalla rete combinatoria definisce la massima frequenza del clock.
A livello di flip flop, il segnale sull’ingresso dovrà essere stabile per un certo tempo prima e dopo il fronte attivo del clock.
- tempo di setup: tempo prima del fronte durante il quale deve essere stabile;
- tempo di hold: tempo dopo il fronte durante il quale deve essere stabile;
Se queste condizioni non sono rispettate, il flip flop può finire in uno stato indeterminato.
Violazioni dei tempi del flip flop
Section titled “Violazioni dei tempi del flip flop”Se ci sono violazioni del tempo di setup, il circuito è troppo lento:
- lo stato futuro non viene calcolato in tempo;
- bisogna velocizzare il circuito o rallentare il clock;
Processo di binning: selezione dei circuiti più veloci. La differenza di velocità è dovuta ad imperfezioni durante il processo di fabbricazione.
Se ci sono violazioni del tempo di hold, il circuito è troppo veloce. Si verifica spesso solo per alcuni flip flop che dipendono da altri nel circuito:
- non si può modificare la velocità del clock perché condizionerebbe tutti i flip flop;
- bisogna rallentare la rete combinatoria aggiungendo dei buffer;
Macchine di Mealy e di Moore
Section titled “Macchine di Mealy e di Moore”-
Macchina di Mealy: caso generale di un circuito sequenziale, le uscite dipendono sia dallo stato corrente che dagli ingressi.

-
Macchina di Moore: circuito sequenziale in cui le uscite dipendono solo dallo stato corrente e non dagli ingressi. Potenzialmente l’uscita può essere ritardata di un ciclo di clock rispetto alla variazione degli ingressi.

Potenziali problemi delle macchine di Mealy
Section titled “Potenziali problemi delle macchine di Mealy”In generale più macchine a stati possono essere usate contemporaneamente. In questo caso le uscite di una diventano ingressi dell’altra e viceversa.
Quindi si possono creare degli anelli di feedback combinatori, che sono il problema che cercavamo di risolvere con i circuiti sequenziali.
Con le macchine di Moore questo problema non si presenta, quindi di solito si sacrifica un po’ di performance per avere questa garanzia di correttezza.
Progetto di un circuito sequenziale
Section titled “Progetto di un circuito sequenziale”I passaggi per realizzare un circuito sequenziale sono:
- Progetto del diagramma degli stati;
- Derivazione della tabella della verità degli stati;
- Per ogni uscita o variabile di stato futuro semplifichiamo la rispettiva mappa di Karnaugh;
- Dai risultati della semplificazione si ottiene l’espressione logica da usare;
- Si crea il circuito con le porte date dall’espressione logica;
Diagramma temporale
Section titled “Diagramma temporale”Anche per i circuiti sequenziali è possibile disegnare un diagramma temporale:
![]()
Lo stato sarebbe composto da multiple variabili, ma di solito lo si comprime in una riga, indicando semplicemente il valore assunto e i punti in cui esso cambia.