Progetto di Machine a Stati Finiti

Giuliano Donzellini, Domenico Ponta

Controllore di luci su FPGA

045305

 

v1.71

Questa esercitazione propone il progetto di un semplice controllore di luci, in termini di macchina a stati finiti. Dopo la verifica del progetto mediante simulazione, l'esercitazione conduce alla realizzazione fisica del prototipo su FPGA e alla verifica del suo funzionamento. L'architettura del sistema è rappresentata in figura:

La MSF sincrona è dotata di due ingressi !Right e !Left, attivi bassi, che rappresentano due pulsanti; cinque uscite L4-L0, collegate ad altrettanti luci; due uscite di controllo BLeft e BRight.

Al reset, la MSF attiva L0. La pressione ed il successivo rilascio di !Left disattiva la luce correntemente accesa ed attiva quella immediatamente a sinistra. La pressione ed il successivo rilascio di !Right disattiva la luce correntemente accesa ed attiva quella immediatamente a destra. Quando la luce accesa e' nella posizione più a sinistra (L4) accetta soltanto il comando di spostamento a destra e quando e' nella posizione più a destra (L0) accetta soltanto il comando di spostamento a sinistra. Una sola luce alla volta puo' essere accesa. L'uscita BLeft segnala che il corrispondente pulsante !Left è premuto; allo stesso modo, BRight segnala quando il pulsante !Right è premuto.

E' qui disponibile una traccia del diagramma ASM, dove le variabili di stato X,Y, Z e W sono già state definite, così come le uscite L4, L3, L2, L1, L0, BL (BLeft) e BR (BRight), e gli ingressi L (!Left) e R (!Right). Nella traccia sono stati già definiti cinque blocchi di stato (a4, a3, a2, a1, a0) corrispondenti agli stati in cui viene attivata una delle linee di uscita L4, L3, L2, L1 oppure L0, e si resta in attesa della pressione di uno dei due pulsanti. Nella traccia, è parzialmente suggerita la logica dello stato a2.

Verificare, utilizzando la simulazione temporale del d-FsM, che la funzionalità della MSF corrisponda alle specifiche. Terminato il progetto, importare il componente ottenuto nel d-DcS. E' utile ripetere la simulazione del sistema nel d-DcS, utilizzando sia la simulazione per animazione, che quella temporale. A questo proposito è qui disponibile uno schema da completare, in cui inserire la MSF progettata (si raccomanda di usare lo schema fornito senza modificare le terminazioni di ingresso e di uscita, perchè sono state predisposte per la esportazione del progetto sulla scheda FPGA).


A questo punto inizia la procedura per realizzare fisicamente il progetto sulla scheda FPGA. La procedura generale è descritta passo passo nei tutorial introduttivi:
   Realizzazione di un prototipo di circuito su scheda Altera DE2
   Test di una rete sequenziale su scheda Altera DE2


Il comando "Test on FPGA" (del d-DcS) apre la finestra di dialogo visibile qui sotto:

Le associazioni tra schema d-DcS e scheda FPGA, per quanto riguarda gli ingressi e le uscite, sono state già definite nella traccia d-DcS fornita, per cui non è necessario modificarle.

Il clock CK è impostato a 100 Hz, una frequenza relativamente bassa, tuttavia sufficiente per l'interazione uomo-macchina. E' stata anche scelta la modalità "Slow Clock Mode": come risulta dai parametri impostati, visibili nella figura, tale modalità è attivabile tramite l'interruttore SW[17]. Lo "Slow Clock" è impostato alla frequenza di 0,5 Hz, ed è visualizzato dal led rosso LEDR[17]. In base a questa impostazione, se l'interruttore è a zero, il clock CK lavorerà normalmente a 100 Hz; se l'interruttore è a uno, la frequenza del clock sarà ridotta a 0,5 Hz, permettendo di esaminare il funzionamento del nostro circuito con la semplice osservazione visiva.

Si noti che la programmabilità della frequenza del clock non è una particolarità della scheda FPGA in uso, ma che è realizzata dal processo di esportazione del progetto, che aggiunge al nostro circuito una rete, basata su contatori, che consente di "scalare" a frequenza bassa il clock a 50 MHz di cui è dotata la scheda.

Per la comodità dello sperimentatore, le associazioni sono visualizzate anche nella figura seguente, che può essere considerata come il "pannello di controllo" del sistema realizzato, utile per eseguirne il test.

Usando gli interruttori e i pulsanti qui sopra indicati, ed osservando l'accensione dei LED, è possibile verificare il funzionamento del sistema.