Salta al contenuto
Note per Studenti Esercizio 11 · dispenser automatico di disinfettante (tema d'esame febbraio 2023)

Esercizio 11dispenser automatico di disinfettante (tema d'esame febbraio 2023)

Esame
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 sens a 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 quando sens passa 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 active viene portato a 10 e a flusso ridotto quando viene portato a 01. L'erogazione si ferma quando active viene portato a 00.
  • Se viene premuto il pulsante btn durante 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:

  1. la modalità scelta (flusso basso o elevato), che persiste tra un'erogazione e l'altra;
  2. 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 →\to ALTO e ALTO →\to 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=1 fa partire l'erogazione nella modalità corrente. Si arriva in BASSO/ALTO solo dopo sens=0 (o dal reset), quindi vedere sens=1 in questi stati equivale a rilevare la transizione 0→10\to1 ("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; con sens=0 si torna allo stato di attesa della stessa modalità;
  • Il pulsante conta solo negli stati di attesa e solo se sens=0: durante l'erogazione btn è ignorato (non compare nelle condizioni di EROG_B e EROG_A). Se sens=1 e btn=1 contemporaneamente 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): BASSO/00→1XEROG_B/01→0XBASSO,ALTO/00→1XEROG_A/10→0XALTO,\text{BASSO}/00\xrightarrow{1X}\text{EROG\_B}/01\xrightarrow{0X}\text{BASSO},\qquad\text{ALTO}/00\xrightarrow{1X}\text{EROG\_A}/10\xrightarrow{0X}\text{ALTO}, BASSO→01ALTO,ALTO→01BASSO,BASSO→00BASSO, ALTO→00ALTO,EROG_B→1XEROG_B, EROG_A→1XEROG_A.\text{BASSO}\xrightarrow{01}\text{ALTO},\quad\text{ALTO}\xrightarrow{01}\text{BASSO},\quad\text{BASSO}\xrightarrow{00}\text{BASSO},\ \text{ALTO}\xrightarrow{00}\text{ALTO},\quad\text{EROG\_B}\xrightarrow{1X}\text{EROG\_B},\ \text{EROG\_A}\xrightarrow{1X}\text{EROG\_A}.

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 00 (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 btn durante l'erogazione.
  • Tornare sempre alla stessa modalità al termine dell'erogazione: bisogna ricordarla (due stati di erogazione).
  • Usare btn e sens in modo che un'erogazione ripartisca a ogni ciclo con la mano presente.

Versione ripasso

Teoria collegata