Esercizio 11dispenser automatico di disinfettante (tema d'esame febbraio 2023)
In questa pagina 4
Testo (tema d'esame febbraio 2023, quarto appello, esercizio 2). Disegnare il diagramma degli stati, senza stati equivalenti, completo di tutte le transizioni e di tutti i segnali per un dispenser automatico di disinfettante, dotato di un pulsante per commutare tra flusso elevato e flusso basso di disinfettante e di un sensore che rileva la presenza delle mani dell'utilizzatore sotto il dispenser.
- Ad ogni pressione, il pulsante genera un impulso della durata di un ciclo di clock sul segnale
btn, in corrispondenza del quale il sistema deve andare in modalità flusso basso se si trova in modalità flusso alto e viceversa. - Il sensore porta il segnale
sensa 1 e lo mantiene a quel valore fintanto che c'è una mano in prossimità del dispenser. L'erogazione del disinfettante deve partire da quando il sensore rileva l'inizio della presenza di una mano (ovvero quandosenspassa da 0 a 1), e terminare quando la mano viene allontanata (sens= 0). - Il disinfettante viene distribuito a flusso elevato quando il segnale di uscita
activeviene portato a10e a flusso ridotto quando viene portato a01. L'erogazione si ferma quandoactiveviene portato a00. - Se viene premuto il pulsante
btndurante l'erogazione, il flusso non va cambiato, cioè la commutazione del flusso può avvenire solo in seguito alla pressione del pulsante ad erogazione non in corso.
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: che cosa deve ricordare la macchina
Ci sono due informazioni da tenere nello stato:
- la modalità scelta (flusso basso o elevato), che persiste tra un'erogazione e l'altra;
- se è in corso un'erogazione.
Combinandole si hanno quattro stati (macchina di Moore, active nello stato):
| stato | modalità | erogazione | active |
|---|---|---|---|
| BASSO | basso | no | 00 |
| ALTO | elevato | no | 00 |
| EROG_B | basso | sì | 01 |
| EROG_A | elevato | sì | 10 |
BASSO e ALTO hanno la stessa uscita (00) ma non sono equivalenti: con btn vanno in stati diversi (BASSO ALTO e ALTO BASSO) e con sens in stati di erogazione diversi (EROG_B contro EROG_A). Il testo non dice la modalità iniziale: si assume il flusso basso (BASSO) al reset.
Passo 2: transizioni
| stato | sens, btn |
stato futuro |
|---|---|---|
| BASSO | sens=1 |
EROG_B |
| BASSO | sens=0, btn=1 |
ALTO |
| BASSO | sens=0, btn=0 |
BASSO |
| ALTO | sens=1 |
EROG_A |
| ALTO | sens=0, btn=1 |
BASSO |
| ALTO | sens=0, btn=0 |
ALTO |
| EROG_B | sens=1 (qualsiasi btn) |
EROG_B |
| EROG_B | sens=0 |
BASSO |
| EROG_A | sens=1 (qualsiasi btn) |
EROG_A |
| EROG_A | sens=0 |
ALTO |
Spiegazione delle scelte:
- Inizio dell'erogazione: negli stati di attesa (BASSO e ALTO) il valore
sens=1fa partire l'erogazione nella modalità corrente. Si arriva in BASSO/ALTO solo doposens=0(o dal reset), quindi vederesens=1in questi stati equivale a rilevare la transizione ("inizio della presenza di una mano"); la mano che resta sotto il dispenser non ricomincia l'erogazione perché la macchina è già in uno stato di erogazione; - Fine: l'erogazione dura finché
sens=1; consens=0si torna allo stato di attesa della stessa modalità; - Il pulsante conta solo negli stati di attesa e solo se
sens=0: durante l'erogazionebtnè ignorato (non compare nelle condizioni di EROG_B e EROG_A). Sesens=1ebtn=1contemporaneamente in attesa, si dà la precedenza all'erogazione (scelta di progetto; il testo non specifica); - il testo specifica che la commutazione avviene solo ad erogazione non in corso: ottenuto dalle righe sopra.
Diagramma (frecce con sens btn, X indifferente; uscite nello stato):
Passo 3: simulazione
Scenario: si preme btn al ciclo 1 (passaggio a flusso elevato); una mano resta sotto il dispenser dai cicli 3 a 5, e btn è premuto al ciclo 4 (ignorato); btn al ciclo 7 riporta a flusso basso; mano ai cicli 9–10.
| ciclo | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| stato | BASSO | BASSO | ALTO | ALTO | EROG_A | EROG_A | EROG_A | ALTO | BASSO | BASSO | EROG_B | EROG_B |
btn |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
sens |
0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
active |
00 | 00 | 00 | 00 | 10 | 10 | 10 | 00 | 00 | 00 | 01 | 01 |
Al ciclo 3 la mano è rilevata (sens sale), dal ciclo 4 il flusso è elevato (10) finché sens torna a (ciclo 6); il btn del ciclo 4 non cambia il flusso. Al ciclo 7 btn porta in BASSO; il successivo uso (cicli 9–10) è a flusso basso (01). La tabella è stata ottenuta e controllata con un modello della macchina.
Errori comuni
- Un solo stato di attesa: si perde la modalità scelta.
- Far cambiare modalità con
btndurante l'erogazione. - Tornare sempre alla stessa modalità al termine dell'erogazione: bisogna ricordarla (due stati di erogazione).
- Usare
btnesensin modo che un'erogazione ripartisca a ogni ciclo con la mano presente.
Versione ripasso
- Testo.
btn(impulso) alterna flusso basso/elevato solo a erogazione ferma;sens=1 per tutta la presenza della mano: l'erogazione dura quantosens; uscitaactive:10elevato,01ridotto,00fermo. - Stati (Moore, 4): BASSO , ALTO , EROG_B , EROG_A . BASSO e ALTO non equivalenti (successori diversi).
- Transizioni: attesa:
sens=1erogazione della stessa modalità;sens=0,btn=1altra modalità; EROG_B/EROG_A: restano consens=1(btn ignorato), tornano in attesa consens=0. - Verifica:
btnai cicli 1, 4, 7; mano ai cicli 3–5 e 9–10:active=…,10,10,10,…,01,01; ilbtndel ciclo 4 è ignorato (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 →). - Errori: modalità non ricordata;
btndurante l'erogazione.