Le Macchine a Stati Finiti (FSM <- Finite State Machine) sono il modello matematico utilizzato per descrivere sistemi dotati di memoria, capaci di eseguire algoritmi e utili alla progettazione ad alto livello di Reti Logiche Sequenziali.
Come abbiamo già detto nella definizione dei concetti chiave delle Reti Logiche Sequenziali ci sono due tipi di FSM: Sincrone e Asincrone.
La definizione formale di una FSM Sincrona:
Per descrivere matematicamente una FSM viene utilizzata una tupla di sei elementi.
Analizziamo il contenuto di questa tupla in ordine di intuitività:
- <--- L’Alfabeto di ingresso - è l’elenco di tutte le possibili combinazioni di bit per ogni ingresso. La sua dimensione varia in base al numero di ingressi, se ci sono ingressi, allora la dimensione di sarà di .
- <--- L’Alfabeto di uscita - è l’elenco di tutte le possibili combinazioni di bit che le variabili di uscita possono avere. La sua dimensione varia in base al numero di uscite, se ci sono uscite, allora la dimensione di è .
- <--- L’Insieme degli Stati - è l’elenco di tutte le possibili combinazioni di bit che uno stato può assumere. Uno stato è come se fosse una memoria, ma non una che salva dati, ma più come memoria che ci dice a che punto è il sistema, come un segnalibro.
- <--- Stato Iniziale - è lo stato di default nonché anche il primo appena avviata la FSM.
- Le funzioni e - che lavorano in parallelo e che fanno calcoli molti simili a seconda della FSM specifica (Moore o Mealy):
- <--- Funzione di Stato Prossimo - è una funzione che contiene le condizioni logiche necessarie a determinare il prossimo stato (Stato Attuale + Input). Infatti se di base c’è un di default al fine di permettere la prima esecuzione della FSM, nelle seguenti esecuzioni si ha la necessità di ottenere gli stati delle future esecuzioni. Essendo nel campo di FSM sincrone, a determinare il passaggio sequenziale alla prossima esecuzione è il clock, che scatterà ogni tot tempo, contato con . Ebbene l’output della funzione diventa , quindi lo stato che descrive il passato della macchina alla prossima esecuzione.
- <--- Funzione di Uscita - è una funzione che contiene le condizioni logiche necessarie a restituire l’output presente del sistema. Le condizioni sono generalmente legate allo Stato Attuale (+Input se è Mealy).
Grafi di Transizione di Stato:
Una FSM può essere rappresentata graficamente attraverso dei disegni chiamati Grafi di Transizione di Stato. In questi grafi:
- I Nodi (cerchi) <--- Rappresentano gli stati.
- Gli Archi (frecce) <--- Rappresentano la transizione da uno stato ad un altro in base all’input in ingresso del circuito in quell’istante di esecuzione della FSM. Queste transizioni rappresentano dunque la funzione nel caso della FSM di Moore, e le funzioni e nel caso della FSM di Mealy.
Esempio grafico di un Grafo di Transizione di Stato generico:
Macchina di Moore:
Esempio di Grafo con FSM di Moore:
I nomi delle variabili sono imprecisi e discostati dalla parte descritta sotto.
Nella FSM di Moore, nel grafo possiamo osservare:
- Nei Cerchi —> 2 valori:
- Gli Stati come variabili (non è necessario saperne il valore).
- L’Output del sistema (riportato come valore numerico).
- Negli Archi —> Riportato l’Input del sistema come condizione per passare allo stato prossimo (riportato come valore numerico).
Nella Macchina di Moore:
L’Output presente dipende dallo stato attuale: Lo Stato Prossimo dipende dallo stato attuale + input:
Qual’è la logica per leggere i Grafi nelle FSM di Moore:
- Osservare il Cerchio .
- Calcolare l’Output .
- Individuare l’Input sopra l’Arco.
- Usare l’Arco come freccia per spostarsi sullo Stato Successivo e calcolare .
Macchina di Mealy:
Esempio di Grafo con FSM di Mealy:
I nomi delle variabili sono imprecisi e discostati dalla parte descritta sotto.
Nelle FSM di Mealy, nel grafo possiamo vedere gli:
- Nei Cerchi —> Gli Stati come variabili (non è necessario saperne il valore).
- Negli Archi —> 2 valori:
- Riportato l’Input del sistema come condizione per passare allo stato prossimo. (riportato come valore numerico).
- L’Output del sistema (riportato come valore numerico).
Nella Macchina di Mealy:
L’Output presente dipende dallo stato attuale+ input: Lo Stato Prossimo dipende dallo stato attuale + input: In questa FSM Output e Stato Prossimo chiedono gli stessi valori per essere calcolati.
Qual’è la logica per leggere i Grafi nelle FSM di Mealy:
- Osservare lo stato attuale nel Cerchio .
- Osservare l’Arco.
- Osservare la notazione dell’Output successivo a quella dell’Input , che ci dice di calcolare l’Output
- Calcolare l’Output .
- Poi usare l’Arco come freccia (ignorando la notazione dell’Output) per spostarsi sullo Stato Successivo e calcolare .
Rappresentare le FSM con delle Tabelle:
Tra FSM di Moore e Mealy cambia di poco il modo con il quale vengono strutturate le tabelle.
Tabelle per FSM di Moore:
Ipotizziamo una FSM di Moore:

Adesso creiamo la tabella composta da:
- Le Colonne che indicano nelle prime 2 gli ingressi ( o ) e nell’ultima l’Output.
- Le Righe che indicano lo stato in cui si trova il sistema.
Dunque nelle celle in cui si incrociano queste Righe e Colonne andiamo a inserire prima quali sono gli ingressi e l’output in un determinato stato.
La Tabella corrispondente alla FSM sopra:
Tabelle per FSM di Mealy:
Ipotizziamo una FSM di Mealy:

Adesso creiamo una tabella composta da:
- Le Colonne che indicano gli ingressi ( e ).
- Le Righe che indicano lo stato in cui si trova il sistema.
È possibile notare che la differenza con le FSM di Moore è l’assenza di una colonna per gli Output, ma questo è del tutto naturale essendo che anche nei Grafi le FSM di Mealy hanno l’Output rappresentato affianco all’input, quindi anche nelle tabelle, input e output vengono rappresentati insieme.
La Tabella corrispondente alla FSM sopra:
Ricapitolando - Moore e Mealy a confronto:
| Moore | Mealy | |
|---|---|---|
| Come viene generato l’output? | Dipende esclusivamente dallo stato | Dipende dallo stato e dagli input |
| Dove si scrive l’output? | Nello stato | Sulla transizione |
| Quando reagisce? | Dopo la transizione | Quando viene dato l’input |
| Numero di stati | Spesso richiede più stati | Generalmente ne usa di meno rispetto alla macchina di Moore |