Skip to content

Diagrammi degli stati e macchine sequenziali

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;

Diagramma degli stati della caldaia

Il diagramma ha le seguenti caratteristiche:

  • per nn variabili di stato, il diagramma avrà 2n2^n stati diversi;
  • per mm variabili di ingresso, ogni stato avrà 2m2^m transizioni;

Quindi la tabella degli stati avrà 2n+m2^{n + m} righe.

La stessa funzione sequenziale può essere rappresentata da diagrammi differenti. Bisogna trovare la rappresentazione che usa il minor numero di stati.

Il valore assegnato ad ogni variabile di stato è arbitrario. Nel caso della caldaia si avrebbe potuto codificare l’accensione con uno 00 e lo spegnimento con un 11. 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.

Normalmente 4 stati possono essere espressi con 2 bit (A=00A = 00, B=01B = 01, C=11C = 11, D=10D = 10). A volte può essere utile esprimerlo come 4 variabili (A=1000A = 1000, B=0100B = 0100, C=0010C = 0010, D=0001D = 0001).

Questo permette, in alcuni casi, di generare circuiti più semplici e quindi più veloci.

Dato un circuito sequenziale, si può facilmente risalire al suo diagramma degli stati:

  1. deriviamo l’espressione dello stato futuro (in funzione degli ingressi primari e dello stato presente);
  2. 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 DD 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 DD deve essere stabile;
  • tempo di hold: tempo dopo il fronte durante il quale DD deve essere stabile;

Se queste condizioni non sono rispettate, il flip flop può finire in uno stato indeterminato.

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;
  • Macchina di Mealy: caso generale di un circuito sequenziale, le uscite dipendono sia dallo stato corrente che dagli ingressi.

    Diagramma macchina di Mealy

  • 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.

    Diagramma macchina di Moore

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.

I passaggi per realizzare un circuito sequenziale sono:

  1. Progetto del diagramma degli stati;
  2. Derivazione della tabella della verità degli stati;
  3. Per ogni uscita o variabile di stato futuro semplifichiamo la rispettiva mappa di Karnaugh;
  4. Dai risultati della semplificazione si ottiene l’espressione logica da usare;
  5. Si crea il circuito con le porte date dall’espressione logica;

Anche per i circuiti sequenziali è possibile disegnare un diagramma temporale:

Diagramma temporale riconoscitore sequenze

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.