Esercizio 2macchina del caffè come macchina a stati finiti (tema d'esame giugno 2022)
In questa pagina 5
Testo (tema d'esame giugno 2022, primo appello, esercizio 2). Disegnare 1) il simbolo con ingressi e uscite e 2) il diagramma degli stati, senza stati equivalenti, completo di tutte le transizioni e di tutti i segnali, di una macchina per il caffè con queste caratteristiche:
- sono presenti due pulsanti caffè e cappuccino che generano un impulso della durata di un ciclo di clock quando vengono premuti sulle linee
caffe_btnecapp_btnrispettivamente; - la macchina è dotata di un erogatore del caffè e di un erogatore del latte, attivabili tramite un impulso da un ciclo di clock sulle linee
caffe_erelatte_er; - quando viene premuto il tasto caffè, la macchina deve attivare l'erogatore del caffè per un ciclo intero di clock;
- quando viene premuto il tasto cappuccino, la macchina deve attivare l'erogatore del latte per due cicli interi di clock e poi quello del caffè per un ciclo intero di clock;
- quando è in corso l'erogazione di latte o caffè, eventuali pressioni dei pulsanti vanno ignorate.
Teoria usata: Sintesi delle reti sequenziali - riconoscitore di sequenza e codifica degli statiSintesi di una rete sequenziale sincrona: specifiche $\to$ diagramma degli stati $\to$ tabella (riduzione degli stati equivalenti) $\to$ codifica binaria degli stati $\to$ scelta del FF (D PET) $\to$ equazioni di ingresso dei FF e delle uscite $\to$ minimizzazione $\to$ circuito e verifica. Lo stato riassume la parte di storia utile; per i riconoscitori si ha uno stato per ogni prefisso riconosciuto, riusando gli stati (sovrapposizioni). Reset: stato iniziale noto. Codifica Gray (numero minimo di FF) vs 1-hot (un FF per stato, logica più semplice): per il riconoscitore 1101 Gray costa circa la metà.Sintesi delle reti sequenziali - riconoscitore di sequenza e codifica degli stati →, Analisi delle reti sequenziali - tabella e diagramma degli stati, Mealy e MooreAnalizzare una rete sequenziale sincrona significa ricavare, dal circuito, le equazioni di ingresso dei flip-flop (stato futuro) e dell'uscita, la tabella degli stati ($2^{m+n}$ righe per $m$ FF e $n$ ingressi), il diagramma degli stati (cerchi = stati, frecce = transizioni con ingresso/uscita) e la simulazione temporale. Mealy: uscita funzione di stato e ingresso (scritta sulle frecce, può cambiare tra due fronti di clock); Moore: uscita funzione del solo stato (scritta nel cerchio, cambia solo al fronte). Due stati sono equivalenti se danno le stesse uscite e portano a stati equivalenti: si fondono per ridurre i FF.Analisi delle reti sequenziali - tabella e diagramma degli stati, Mealy e Moore →.
Passo 1: simbolo
Un blocco sincrono con ingressi caffe_btn, capp_btn (1 bit ciascuno), clk e rst (reset) e uscite caffe_er, latte_er (1 bit ciascuna).
Passo 2: individuare gli stati
Lo stato deve ricordare che cosa la macchina sta facendo. Si usa una macchina di Moore (le uscite stanno negli stati, quindi sono stabili per tutto un ciclo). Si descrive il comportamento ciclo per ciclo:
- IDLE (attesa): nessun erogatore attivo,
caffe_er=0,latte_er=0; qui si guardano i pulsanti; - CAFFE: eroga il caffè per un ciclo,
caffe_er=1,latte_er=0; - LATTE1 e LATTE2: due cicli di erogazione del latte,
latte_er=1,caffe_er=0. Servono due stati distinti, perché la macchina deve contare i due cicli: LATTE1 va in LATTE2, LATTE2 va a CAFFE.
L'erogazione del caffè dopo il latte è lo stesso stato CAFFE dell'erogazione del solo caffè: stessa uscita e stesso stato futuro (IDLE, qualunque sia l'ingresso). Se si usassero due stati (uno per il caffè solo, uno per quello dopo il latte) sarebbero equivalenti e vanno fusi: ecco perché "senza stati equivalenti".
Passo 3: transizioni (ingressi )
stato (uscite caffe_er, latte_er) |
ingressi | stato futuro |
|---|---|---|
| IDLE (0, 0) | caffe_btn=1 |
CAFFE |
| IDLE (0, 0) | caffe_btn=0, capp_btn=1 |
LATTE1 |
| IDLE (0, 0) | caffe_btn=0, capp_btn=0 |
IDLE |
| CAFFE (1, 0) | qualsiasi (pressioni ignorate) | IDLE |
| LATTE1 (0, 1) | qualsiasi (ignorate) | LATTE2 |
| LATTE2 (0, 1) | qualsiasi (ignorate) | CAFFE |
Il testo non dice cosa succede se i due pulsanti sono premuti nello stesso ciclo: si assume che non capiti, e comunque in tabella è stata data priorità al caffè. Le pressioni durante l'erogazione vengono ignorate perché nelle righe di CAFFE, LATTE1 e LATTE2 lo stato futuro non dipende dagli ingressi.
Diagramma degli stati (frecce con gli ingressi caffe_btn capp_btn, X = indifferente):
Le uscite sono scritte dentro gli stati: IDLE , CAFFE , LATTE1 , LATTE2 (con la coppia ordinata caffe_er latte_er).
Passo 4: verifica con una simulazione
Sequenza di ingressi (un valore per ciclo, partenza da IDLE): il caffè è premuto al ciclo 0; durante la sua erogazione (ciclo 1) si preme il cappuccino; poi cappuccino al ciclo 3, con caffè premuto durante il latte (ciclo 4), cappuccino premuto durante il caffè finale (ciclo 6):
| ciclo | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| stato | IDLE | CAFFE | IDLE | IDLE | LATTE1 | LATTE2 | CAFFE | IDLE |
caffe_btn capp_btn |
10 | 01 | 00 | 01 | 10 | 00 | 01 | 00 |
caffe_er |
0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
latte_er |
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
Il caffè è erogato per un ciclo (ciclo 1); il cappuccino dà due cicli di latte (4 e 5) e poi un ciclo di caffè (6); le pressioni ai cicli 1, 4 e 6 sono ignorate. Le uscite compaiono un ciclo dopo l'impulso del pulsante, perché sono uscite di Moore. Un modello al calcolatore conferma che nessuna pressione durante l'erogazione modifica l'evoluzione e che i quattro stati non sono equivalenti (LATTE1 e LATTE2 hanno stati futuri diversi).
Variante di Mealy (3 stati): IDLE con caffe_btn=1 resta in IDLE emettendo subito caffe_er=1 (erogazione nel ciclo stesso dell'impulso, per un ciclo); IDLE con capp_btn=1 emette latte_er=1 e va in L2; L2 emette latte_er=1 e va in C; C emette caffe_er=1 e torna in IDLE. Con Mealy l'erogazione parte nello stesso ciclo dell'impulso e servono meno stati, ma l'uscita dipende combinatoriamente dall'ingresso.
Errori comuni
- Un solo stato LATTE: non si riescono a contare i due cicli.
- Due stati CAFFE separati (caffè solo / dopo il latte): sono equivalenti.
- Dimenticare di ignorare i pulsanti negli stati di erogazione.
- Scrivere le uscite sulle frecce in una macchina di Moore.
Versione ripasso
- Testo.
caffe_btn,capp_btn(impulsi di 1 ciclo)caffe_er,latte_er; caffè: 1 ciclo; cappuccino: latte 2 cicli + caffè 1 ciclo; durante l'erogazione i pulsanti sono ignorati. Simbolo e diagramma senza stati equivalenti. - Simbolo: ingressi
caffe_btn,capp_btn,clk,rst; uscitecaffe_er,latte_er. - Stati (Moore): IDLE , CAFFE , LATTE1 , LATTE2 (uscite
caffe_er latte_er). IDLE:1XCAFFE,01LATTE1,00IDLE; LATTE1LATTE2CAFFEIDLE senza guardare gli ingressi. Il caffè dopo il latte è lo stesso stato CAFFE (altrimenti due stati equivalenti). - Verifica: caffè al ciclo 0:
caffe_er=1al ciclo 1; cappuccino al ciclo 3:latte_er=1ai cicli 4–5,caffe_er=1al 6 (Sintesi delle reti sequenziali - riconoscitore di sequenza e codifica degli statiSintesi di una rete sequenziale sincrona: specifiche $\to$ diagramma degli stati $\to$ tabella (riduzione degli stati equivalenti) $\to$ codifica binaria degli stati $\to$ scelta del FF (D PET) $\to$ equazioni di ingresso dei FF e delle uscite $\to$ minimizzazione $\to$ circuito e verifica. Lo stato riassume la parte di storia utile; per i riconoscitori si ha uno stato per ogni prefisso riconosciuto, riusando gli stati (sovrapposizioni). Reset: stato iniziale noto. Codifica Gray (numero minimo di FF) vs 1-hot (un FF per stato, logica più semplice): per il riconoscitore 1101 Gray costa circa la metà.Sintesi delle reti sequenziali - riconoscitore di sequenza e codifica degli stati →). Mealy: 3 stati. - Errori: un solo stato latte; stati CAFFE duplicati; pulsanti non ignorati.