Esercizio 8semaforo di un passaggio a livello (tema d'esame settembre 2022)
In questa pagina 5
Testo (tema d'esame settembre 2022, terzo appello, esercizio 2). Disegnare il diagramma degli stati, senza stati equivalenti, completo di tutte le transizioni e di tutti i segnali per il semaforo di un passaggio a livello. Indicare chiaramente i segnali di ingresso e uscita nel diagramma utilizzando i nomi riportati nel testo. Il sistema è dotato dei seguenti input:
arr_treno(arrivo treno) da un bit, su cui si genera un impulso da un ciclo di clock quando un treno sta per arrivare ad un passaggio a livello;pass_treno(passaggio treno) da un bit, su cui si genera un impulso da un ciclo di clock quando un treno ha oltrepassato completamente un passaggio a livello;
e deve gestire il seguente output:
sem(semaforo) da due bit, che comanda ciascuno una luce rossa.
Quando un treno sta per arrivare, il controller deve far lampeggiare il semaforo, accendendo alternativamente le due luci rosse ad ogni ciclo di clock e spegnere le luci quando il treno ha oltrepassato il passaggio a livello.
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, uscita, tipo
Ingressi (1 bit, impulsi di un ciclo): arr_treno, pass_treno. Uscita: sem a 2 bit, sem(1) pilota la luce rossa 1 e sem(0) la luce rossa 2. Si sceglie una macchina di Moore: l'uscita dipende solo da che cosa il semaforo sta facendo (spento, prima luce, seconda luce).
Passo 2: stati
Servono tre situazioni:
- SPENTO: nessun treno in arrivo,
sem=00; - LUCE1: lampeggio, prima luce rossa accesa,
sem=10; - LUCE2: lampeggio, seconda luce rossa accesa,
sem=01.
Alternando LUCE1 e LUCE2 a ogni ciclo si ottiene il lampeggio alternato. Non ci sono stati equivalenti: hanno uscite diverse.
Passo 3: transizioni
stato (sem) |
arr_treno, pass_treno |
stato futuro |
|---|---|---|
| SPENTO (00) | arr_treno=1 |
LUCE1 |
| SPENTO (00) | arr_treno=0 |
SPENTO |
| LUCE1 (10) | pass_treno=1 |
SPENTO |
| LUCE1 (10) | pass_treno=0 |
LUCE2 |
| LUCE2 (01) | pass_treno=1 |
SPENTO |
| LUCE2 (01) | pass_treno=0 |
LUCE1 |
Il lampeggio continua fino a quando arriva l'impulso pass_treno: in quel caso, da qualunque dei due stati di lampeggio, le luci si spengono. In SPENTO l'impulso pass_treno non ha effetto, e in LUCE1/LUCE2 un nuovo arr_treno è ignorato (il testo non prevede più treni contemporaneamente).
Diagramma: frecce con gli ingressi (arr_treno pass_treno, X indifferente) e uscite dentro lo stato:
Passo 4: simulazione
arr_treno al ciclo 1, pass_treno al ciclo 5:
| ciclo | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|---|
| stato | SPENTO | SPENTO | LUCE1 | LUCE2 | LUCE1 | LUCE2 | SPENTO |
arr_treno |
0 | 1 | 0 | 0 | 0 | 0 | 0 |
pass_treno |
0 | 0 | 0 | 0 | 0 | 1 | 0 |
sem |
00 | 00 | 10 | 01 | 10 | 01 | 00 |
Le luci lampeggiano alternate (10, 01, 10, 01) tra i cicli 2 e 5 e si spengono al ciclo 6, dopo l'impulso di passaggio.
Errori comuni
- Un solo stato di lampeggio: non si ottiene l'alternanza (servono due stati distinti, uno per ciascuna luce).
- Dimenticare la transizione a SPENTO da entrambi gli stati di lampeggio.
- Scrivere le uscite sulle frecce in una Moore.
Versione ripasso
- Testo.
arr_treno,pass_treno(impulsi)sem(2 bit, due luci rosse): lampeggio alternato a ogni ciclo dall'arrivo al passaggio del treno, poi spento. - Stati (Moore, 3): SPENTO , LUCE1 , LUCE2 .
- Transizioni: SPENTO:
arr=1LUCE1, altrimenti resta; LUCE1:pass=1SPENTO, altrimenti LUCE2; LUCE2:pass=1SPENTO, altrimenti LUCE1. - Verifica:
arral ciclo 1,passal 5:sem=00,00,10,01,10,01,00(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 lampeggio; ritorno a SPENTO mancante da uno degli stati.