Una macchina a stati finiti (FSM: Finite State Machine) è un modello matematico che descrive una macchina che esegue algoritmi ed è dotata di memoria.
Per rappresentare una macchina a stati finiti si visualizzerà l’evoluzione del circuito con una sequenza di stati, dove uno di questi sarà lo stato presente.
Nella realizzazione di una FSM si attua una rete combinatoria dove si inserisce in input:
- I bit di ingressi.
- Lo stato presente.
- Un registro di attualizzazione dello stato.
Alla fine otterremmo gli output e lo stato futuro.
Una FSM (sincrona) si definisce nella seguente tupla:
Dove:
- è l’insieme degli stati finiti, con che è lo stato iniziale.
- è l’alfabeto di ingresso.
- è l’alfabeto di uscita.
- e sono due funzioni che calcolano rispettivamente lo stato prossimo (la funzione ) e l’output (la funzione ).
- Nelle macchine di Mealy:
- La funzione calcolerà lo stato prossimo
- La funzione calcolerà l’output
- Nelle macchine di Moore:
- La funzione calcolerà lo stato prossimo
- La funzione calcolerà l’output
- Nelle macchine di Mealy:
Gli elementi e è l’istante.
Grafi di transizione
Una FSM si può rappresentare tramite i grafi di transizione dello stato. Questa rappresentazione sfrutta i nodi per descrivere gli stati, mentre sfrutta gli archi per delineare una trasizione da uno stato al successivo in base all’input in ingresso.
Macchine di Mealy
Nelle macchine di Mealy l’output e lo stato prossimo vengono calcolati dai bit in ingresso e dallo stato presente. Quindi in questa FSM l’output sarà .
Nella rappresentazione grafica, nelle transizioni vengono appuntati input e output (sottoforma di “input/output”), mentre nei nodi c’è solamente lo stato.
Esiste anche una forma tabellare per rappresentare la macchina di Mealy.
| 0 | 1 | |
|---|---|---|
| / 1 | / 0 | |
| / 1 | / 0 | |
| / 0 | / 1 | |
| / 1 | / 1 |
Macchine di Moore
Nelle macchine di Moore lo stato prossimo viene calcolato dai bit in ingresso e dallo stato presente, mentre l’output viene calcolato solamente dallo stato presente. Quindi in questa FSM l’output sarà .
Nella rappresentazione grafica, nelle transizioni viene appuntato solamente l’input, e nel nodo c’è sia lo stato che l’output.
Esiste anche una forma tabellare per rappresentare la macchina di Moore.
| 0 | 1 | Uscita | |
|---|---|---|---|
| 1 | |||
| 0 | |||
| 0 | |||
| 1 |
Macchina di Mealy vs macchina di Moore
Nella tabella riportata di sotto ci sono le principali differenze tra la macchina di Mealy e la macchina di Moore.
| Mealy | Moore | |
|---|---|---|
| Come viene generato l’output? | Dipende dallo stato e dagli input | Dipende esclusivamente dallo stato |
| Dove si scrive l’output? | Sulla transizione | Nello stato |
| Quando reagisce? | Quando viene dato l’input | Dopo la transizione |
| Numero di stati | Generalmente ne usa di meno rispetto alla macchina di Moore | Spesso richiede più stati |
Da Moore a Mealy
Per passare da una macchina di Moore a una macchina di Mealy basta aggiungere l’output appartenente a uno stato nelle transizioni che partono da esso.
Example
![]()
Da Mealy a Moore
Per passare da una macchina di Mealy a una macchina di Moore bisogna, per ogni stato, creare tanti stati quante sono le transizioni con output diverso che puntano allo stato e inserire negli stati l’output della transizione da cui sono stati generati.
Example
![]()
Example
![]()
Example
![]()