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

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.

01
/ 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.

01Uscita
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.

MealyMoore
Come viene generato l’output?Dipende dallo stato e dagli inputDipende esclusivamente dallo stato
Dove si scrive l’output?Sulla transizioneNello stato
Quando reagisce?Quando viene dato l’inputDopo la transizione
Numero di statiGeneralmente ne usa di meno rispetto alla macchina di MooreSpesso 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