Automi a Stati Finiti: fenomenologia, modelli e applicazioni (Moore e Mealy)

Prima di scrivere formule e tabelle, partiamo dall’osservazione dei fenomeni. Un semaforo che alterna i colori,
un display a sette segmenti che compone le cifre, un ascensore che risponde ai pulsanti: tutti
questi oggetti seguono regole semplici ma precise. Alcuni reagiscono solo all’ingresso corrente (come un interruttore),
altri devono anche ricordare cosa è accaduto poco prima (come il semaforo che “sa” quale luce viene dopo).

Per descrivere con rigore questi comportamenti usiamo gli automi a stati finiti: modelli che parlano di
stati, ingressi, uscite e transizioni. Studieremo due famiglie fondamentali:
gli automi di Moore, in cui l’uscita dipende dallo stato, e gli automi di Mealy,
in cui l’uscita dipende dalla coppia (stato, ingresso). A fare da controcanto, i sistemi combinatori,
in cui l’uscita è determinata solo dagli ingressi correnti e non c’è memoria.

Idea chiave: dal “mondo fisico” (fenomeni osservabili) al “mondo formale” (diagrammi, tabelle, funzioni).
Prima comprendiamo cosa accade; poi lo traduciamo in un modello chiaro e riutilizzabile.

Esempio di Moore: controllore di sequenze luminose

Fenomenologia

Immaginiamo tre luci che si accendono a intermittenza secondo una sequenza prefissata. All’interno dei cerchi che
rappresentano le luci scriviamo il colore: R (rosso), B (blu), V (verde),
G (giallo), N (nero/spento). A intervalli di tempo regolari il sistema “avanza” di una posizione
nella sequenza. Possiamo percorrere la sequenza nei due versi: A (avanti) e I (indietro),
secondo un segnale esterno di controllo. Come in un semaforo reale, un comando Stop spegne tutto (le luci
diventano “nere”) e un comando Start riavvia il ciclo dalla prima configurazione.

Nel diagramma a stati, ogni cerchio è uno stato con le tre uscite luminose. Dal centro partiamo con lo
stato iniziale Spento. Alla ricezione di Start passiamo a Stato 1 (prima terna).
Da lì, a ogni intervallo, una transizione di stato ci porta allo stato successivo o precedente in funzione di
A o I. Se arriva Stop, torniamo allo stato Spento.

Diagramma di stati del controllore di sequenze luminose (Moore), con comandi Start/Stop e avanzamento avanti/indietro
Diagramma di stati (Moore). Stato iniziale: Spento.

Modello formale (Moore)

 \textbf{Moore: } M=(S,I,U,\delta,\lambda,s_0),\quad \delta:S\times I\to S,\ \lambda:S\to U,\ s_0=\text{Spento}.

 S=\{\text{Spento},S1,S2,S3,S4\},\quad I=\{\text{Start},\text{Stop},A,I\},\quad U=\{R,B,G,V,N\}.

Regole (totali, con priorità implicita): Stop spegne sempre; Start da Spento avvia il ciclo; A scorre in avanti; I scorre indietro; da Spento, A/I non hanno effetto.

Tabella di transizione

Stato \ Ingresso Start Stop A I
Spento S1 Spento Spento Spento
S1 S1 Spento S2 S4
S2 S2 Spento S3 S1
S3 S3 Spento S4 S2
S4 S4 Spento S1 S3

Tabella di uscita (Moore: dipende dallo stato)

Stato Luce 1 Luce 2 Luce 3
Spento N N N
S1 R R B
S2 V B G
S3 G B R
S4 B G V
Schema a blocchi di un automa di Moore: stato, funzione di transizione, funzione di uscita
Schema a blocchi di un automa di Moore.

Osservazione didattica: questo è un modello sincrono (transizioni a intervalli fissati/clock). È
utile per collegare il modello all’hardware (flip-flop + logica combinatoria).

Confronto: sistema combinatorio (display a 7 segmenti)

Fenomenologia

Un display a sette segmenti compone le cifre accendendo alcune “barrette” luminose. Se accendiamo i segmenti giusti
vediamo un 0, un 1, un 2, e così via. Qui non serve “memoria del passato”: la cifra mostrata dipende solo dalla
combinazione di ingresso corrente (ad esempio il numero in BCD). È quindi un sistema combinatorio.

Schema semplificato di un display a sette segmenti
Display a 7 segmenti. Etichettiamo i segmenti con le lettere standard a–g.

Modello formale (combinatorio)

Uscite attive-alte (1 = acceso, 0 = spento). Ingresso codificato in BCD (0–9).

Cifra a b c d e f g
0 1 1 1 1 1 1 0
1 0 1 1 0 0 0 0
2 1 1 0 1 1 0 1
3 1 1 1 1 0 0 1
4 0 1 1 0 0 1 1
5 1 0 1 1 0 1 1
6 1 0 1 1 1 1 1
7 1 1 1 0 0 0 0
8 1 1 1 1 1 1 1
9 1 1 1 1 0 1 1
Schema del circuito combinatorio per pilotare un display a sette segmenti
Sistema combinatorio: l’uscita dipende solo dagli ingressi correnti.
Schema a blocchi di un sistema combinatorio
Schema a blocchi di un sistema combinatorio.

Accenno alle equazioni (BCD 4 bit: x_3x_2x_1x_0). Esempio di funzione minimizzata per il segmento a:
 a = \overline{x_3}\,\overline{x_2}\,\overline{x_1}\,x_0 \;\lor\; \overline{x_3}\,x_2\,\overline{x_1}\,\overline{x_0} \;\lor\; x_3\,\overline{x_2}\,x_1\,x_0 \;\lor\; x_3\,x_2\,\overline{x_1}\,x_0.
Per la classe: costruire mappe di Karnaugh e ricavare le altre funzioni b–g.

Esempio di Mealy: ascensore a 4 piani

Fenomenologia

Un ascensore risponde ai pulsanti dei piani: se siamo al 2° e premiamo 3, il motore riceve il comando “salire” finché
non raggiungiamo il 3°. Se premiamo 2 mentre siamo già al 2°, il comando è “fermo”. La cosa importante è che il
comando (uscita) non dipende solo dallo stato (piano attuale), ma anche dall’ingresso (pulsante premuto) in quel momento.
Perciò è un tipico automa di Mealy: l’uscita è etichettata sulla transizione.

Diagramma a stati per ascensore con transizioni etichettate ingresso/uscita (S su, G giù, F fermo)
Automa di Mealy per l’ascensore: uscita sulla transizione (S=su, G=giù, F=fermo).

Modello formale (Mealy)

 \textbf{Mealy: } M=(S,I,U,\delta,\lambda,s_0),\quad S=\{T,1,2,3\},\ I=\{T,1,2,3\},\ U=\{S,G,F\},\ s_0=T.

Regola operativa: se il target è maggiore dello stato → sali (S) e incrementa di un piano; se minore → scendi (G) e decrementa di un piano; se uguale → fermo (F).

Tabella unica (formato “prossimo/uscita”)

Stato \ Ingresso 1 2 3 T
1 1/F 2/S 2/S T/G
2 1/G 2/F 3/S 1/G
3 2/G 2/G 3/F 2/G
T 1/S 1/S 1/S T/F
Schema a blocchi di un automa di Mealy: funzione di transizione e funzione di uscita dipendono da stato e ingresso
Schema a blocchi di un automa di Mealy.

Moore vs Mealy (in una frase)
Moore: l’uscita è funzione dello stato (stabile tra un tick e l’altro).
Mealy: l’uscita è funzione di stato e ingresso (reagisce già sulla transizione).

Esercizi

  1. Scrivi la definizione formale di un automa di Moore e di un automa di Mealy (insiemi, funzioni e stato iniziale).
  2. Per il controllore di luci (Moore), disegna il diagramma a stati e verifica la tabella di transizione proposta.
  3. Per il display a 7 segmenti, costruisci le mappe di Karnaugh per i segmenti b, c e g e ricava le funzioni minimizzate (BCD).
  4. Per l’ascensore (Mealy), aggiungi una logica di “richieste in coda” (memoria delle chiamate) e discuti come cambia il modello.
  5. (V/F) L’ascensore è Moore; è combinatorio; è senza memoria; è sequenziale.
    Soluzione lampo: Moore ❌, combinatorio ❌, senza memoria ❌, sequenziale ✅.