Salta al contenuto
Note per Studenti Esercizio 5 · cancello automatico (tema d'esame luglio 2022)

Esercizio 5cancello automatico (tema d'esame luglio 2022)

Esame
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:

  • btn da 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, btn va ignorato se il cancello è già aperto o in movimento;
  • finecorsa da due bit che vale 11 quando il cancello è completamente aperto, 00 quando è completamente chiuso, 10 quando è in movimento;

e deve gestire il seguente output:

  • motore da 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:

  1. CHIUSO: fermo e chiuso, in attesa di btn; motore=00.
  2. APRE: il motore apre, finché il finecorsa non dice "completamente aperto"; motore=01.
  3. 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).
  4. 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 ≠\ne 11 (00 o 10) APRE
ATT1 (00) qualsiasi ATT2
ATT2 (00) qualsiasi CHIUDE
CHIUDE (10) finecorsa=00 (chiuso) CHIUSO
CHIUDE (10) finecorsa ≠\ne 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 ancora 11, poi 10, e si esce solo con 00;
  • i due cicli di attesa sono ATT1 e ATT2: dal ciclo in cui si vede finecorsa=11 il motore si ferma (stato ATT1, motore=00\text{motore}=00), resta fermo per ATT1 e ATT2 (due cicli interi), poi parte la chiusura.

Diagramma degli stati (frecce con la condizione; uscita motore nel cerchio): CHIUSO/00→btn=1APRE/01→fc=11ATT1/00→ATT2/00→CHIUDE/10→fc=00CHIUSO/00\text{CHIUSO}/00\xrightarrow{btn=1}\text{APRE}/01\xrightarrow{fc=11}\text{ATT1}/00\to\text{ATT2}/00\to\text{CHIUDE}/10\xrightarrow{fc=00}\text{CHIUSO}/00 con i ritorni su se stessi per le condizioni opposte (CHIUSO con btn=0btn=0; APRE con fc≠11fc\ne11; CHIUDE con fc≠00fc\ne00).

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=10 o 00: il cancello non è ancora aperto.
  • Non ignorare btn negli stati diversi da CHIUSO.
  • Dimenticare che finecorsa vale ancora 11 appena parte la chiusura: la transizione CHIUDE→CHIUSO è solo su 00.

Versione ripasso

Teoria collegata