Esercizio 5cancello automatico (tema d'esame luglio 2022)
In questa pagina 5
Testo (tema d'esame luglio 2022, secondo appello, esercizio 2). Disegnare il diagramma degli stati, senza stati equivalenti, completo di tutte le transizioni e di tutti i segnali per un cancello automatico. Indicare chiaramente i segnali di ingresso e uscita nel diagramma utilizzando i nomi riportati nel testo. Il sistema è dotato dei seguenti input:
btnda un bit, su cui si genera un impulso da un ciclo di clock ogni volta che viene premuto il bottone del telecomando del cancello. Per semplicità il telecomando permette solo di aprire il cancello quando questo è completamente chiuso,btnva ignorato se il cancello è già aperto o in movimento;finecorsada due bit che vale11quando il cancello è completamente aperto,00quando è completamente chiuso,10quando è in movimento;
e deve gestire il seguente output:
motoreda due bit, che comanda il motore del cancello con il seguente schema:01= apri,10= chiudi,00= arresta motore.
Il controller deve far aprire il cancello quando viene rilevato un impulso sulla linea btn e richiuderlo dopo che sono passati 2 cicli di clock dalla completa apertura (cioè da quando il cancello è fermo). Il motore deve essere arrestato quando il cancello non deve muoversi.
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: ingressi, uscite e tipo di macchina
Ingressi: btn (1 bit), finecorsa (2 bit). Uscita: motore (2 bit). Dato che l'uscita dipende solo da "che cosa il cancello sta facendo" si usa una macchina di Moore: il valore di motore sta dentro lo stato.
Passo 2: gli stati
Per decidere quali stati servono si segue il cancello:
- CHIUSO: fermo e chiuso, in attesa di
btn;motore=00. - APRE: il motore apre, finché il finecorsa non dice "completamente aperto";
motore=01. - Una volta aperto, il motore si ferma e il sistema aspetta due cicli prima di richiudere: i due cicli sono due stati distinti, ATT1 e ATT2, entrambi con
motore=00(servono per contare: non sono equivalenti perché ATT1 porta in ATT2 e ATT2 porta in CHIUDE). - CHIUDE: il motore chiude, finché il finecorsa non dice "completamente chiuso";
motore=10.
Cinque stati. Non ce ne sono di equivalenti: gli stati con uscita uguale (CHIUSO, ATT1, ATT2, tutti con motore=00) hanno stati futuri diversi (CHIUSO resta in sé o va in APRE, ATT1 va in ATT2, ATT2 va in CHIUDE).
Passo 3: transizioni
stato (motore) |
condizione | stato futuro |
|---|---|---|
| CHIUSO (00) | btn=1 |
APRE |
| CHIUSO (00) | btn=0 |
CHIUSO |
| APRE (01) | finecorsa=11 (aperto) |
ATT1 |
| APRE (01) | finecorsa 11 (00 o 10) |
APRE |
| ATT1 (00) | qualsiasi | ATT2 |
| ATT2 (00) | qualsiasi | CHIUDE |
| CHIUDE (10) | finecorsa=00 (chiuso) |
CHIUSO |
| CHIUDE (10) | finecorsa 00 (11 o 10) |
CHIUDE |
Osservazioni:
btnè ignorato in tutti gli stati tranne CHIUSO (non compare nelle condizioni degli altri stati): è la richiesta "ignorato se il cancello è già aperto o in movimento";- in APRE si esce solo con
finecorsa=11: subito dopo il comando il cancello è ancora chiuso (00) e poi in movimento (10) e lo stato non deve cambiare; allo stesso modo in CHIUDE, appena dopo il comando il finecorsa vale ancora11, poi10, e si esce solo con00; - i due cicli di attesa sono ATT1 e ATT2: dal ciclo in cui si vede
finecorsa=11il motore si ferma (stato ATT1, ), resta fermo per ATT1 e ATT2 (due cicli interi), poi parte la chiusura.
Diagramma degli stati (frecce con la condizione; uscita motore nel cerchio):
con i ritorni su se stessi per le condizioni opposte (CHIUSO con ; APRE con ; CHIUDE con ).
Passo 4: simulazione
Scenario: pulsante premuto al ciclo 1 (e di nuovo al ciclo 3, durante l'apertura); il finecorsa segue il movimento del cancello:
| ciclo | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| stato | CHIUSO | CHIUSO | APRE | APRE | APRE | APRE | ATT1 | ATT2 | CHIUDE | CHIUDE | CHIUDE | CHIUDE | CHIUSO |
btn |
0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
finecorsa |
00 | 00 | 10 | 10 | 10 | 11 | 11 | 11 | 11 | 10 | 10 | 00 | 00 |
motore |
00 | 00 | 01 | 01 | 01 | 01 | 00 | 00 | 10 | 10 | 10 | 10 | 00 |
La seconda pressione di btn (ciclo 3) è ignorata. Al ciclo 5 il finecorsa vale 11: dal ciclo 6 il motore è fermo per due cicli (6 e 7), poi chiude (cicli 8–11) fino a 00 al ciclo 11. La tabella è stata controllata con un modello della macchina.
Errori comuni
- Un solo stato di attesa invece di due (non conta i due cicli).
- Uscire da APRE con
finecorsa=10o00: il cancello non è ancora aperto. - Non ignorare
btnnegli stati diversi da CHIUSO. - Dimenticare che
finecorsavale ancora11appena parte la chiusura: la transizione CHIUDE→CHIUSO è solo su00.
Versione ripasso
- Testo.
btn(impulso),finecorsa(11aperto,00chiuso,10in movimento)motore(01apri,10chiudi,00fermo); apre conbtn, richiude 2 cicli dopo la completa apertura;btnignorato se aperto o in movimento. - Stati (Moore, 5): CHIUSO , APRE , ATT1 , ATT2 , CHIUDE .
- Transizioni: CHIUSO:
btn=1APRE; APRE:fc=11ATT1 (altrimenti resta); ATT1ATT2CHIUDE; CHIUDE:fc=00CHIUSO (altrimenti resta).btnconta solo in CHIUSO. - Verifica:
fc=11al ciclo 5 motore fermo ai cicli 6–7, chiude dall'8; seconda pressione ignorata (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: un solo stato di attesa; uscire da APRE con
10;btnnon ignorato.