Moka Programmabile Rete sequenziale sincrona per la gestione di una moka programmabile. SCHEMATICO Segnali - lista INPUT SET_CLOCK SET_TIMER SWITCH_HMS UP PRESS CK OUTPUT SECONDS(7:0) MINUTES(7:0) HOURS(7:0) TIMERS(7:0) TIMERM(7:0) TIMERH(7:0) ERROR HEAT Segnali - descrizione INPUT SET_CLOCK: finché il suo valore logico è '1', da la possibilità di impostare l'orario corrente all'interno della moka mediante il pulsante di selezione SWITCH_HMS e il pulsante UP. SET_TIMER: finché il suo valore logico è '1', da la possibilità di impostare l'orario del timer (l'orario in cui fare il caffè), anch'esso utilizza i pulsanti SWITCH_HMS e UP. SWITCH_HMS: permette di spostare la selezione del “campo” (Hours, Minutes, Seconds) da aggiornare. Il cambiamento di “campo” si ha al rilascio del bottone. UP: permette (al rilascio) di aumentare di 1 il valore del “campo” attualmente selezionato. PRESS: quando il suo valore logico è '1', indica che la moka è presente sulla piastra. OUTPUT SECONDS(7:0): secondi dell'orologio reale. MINUTES(7:0): minuti dell'orologio reale. HOURS(7:0): ore dell'orologio reale. TimerS(7:0): secondi in cui la moka dovrà partire TimerM(7:0): minuti in cui la moka dovrà partire TimerH(7:0): ora in cui la moka dovrà partire CK: segnale di clock. Che per un corretto funzionamento dell'orologio deve essere alla frequenza di 100 Hz. ERROR: il suo valore logico va a '1' se durante le fasi di SET_CLOCK/SET_TIMER si è ecceduto il limite per un campo (23 per le ore, 59 per minuti e secondi). HEAT: il suo valore logico va a '1' quando l'orario corrente diventa l'orario impostato nel timer e permane ad 1 finché il caffè non è pronto (cioè, per 10 minuti). Schematico - introduzione Schematico - moduli Come si può notare dallo schematico nella slide precedente, la rete sequenziale sincrona della moka è stata realizzata mediante l'ausilio di componenti integrati Xilinx© e di due componenti creati appositamente: DigitalClockChecker DigitalClock DigitalClockChecker DigitalClock DigitalClock - descrizione E’ il componente che è incaricato di scandire il tempo correttamente. Quindi è un vero e proprio orologio digitale funzionante con un clock di 100 Hz (ingresso CK). E’ stato realizzato mediante contatori e decodificatori. Per ovviare ad alcuni problemi causati dal reset ASINCRONO di alcuni componenti integrati xilinx (i contatori su 8 bit, con LOAD), sono stati inseriti FFD per dare l’impulso di clear nell’istante corretto. Il componente è dotato di un ingresso CE che abilita il conteggio se il suo valore logico è ‘1’. E’ possibile far partire il conteggio dell’orario dall’ora desiderata mediante i bus di ingresso e l’ingresso SET. Come si può notare, non si fanno controlli sulla correttezza dei dati inseriti. E’ per questo motivo che questo componente dev’essere utilizzato assieme a DigitalClockChecker. Simulazioni - introduzione I due componenti realizzati come moduli della moka hanno a disposizione i loro testbench «testb – behavioral» per il componente «DigitalClock». Nome del testbench VHDL : «DigitalClockTest.vhd» «DigitalClockChecker_ DigitalClockChecker_sch_tb – behavioral» per il componente «DigitalClockChecker». Nome del testbench VHDL: «CheckerTestBench.vhd» Questi testbenches, però, non mostreranno alcun risultato in iSim a meno ché non si rimuova dalle proprietà di iSim l’utilizzo del file delle forme d’onda alternativo. Questo file è stato creato per la moka nel suo complesso, per questo motivo L’UNICO testbench che partirà senza alcun problema è «MokaSchematic_ MokaSchematic_tb – behavioural», che è il test per il quale iSim è stato configurato. Il funzionamento di quest’ultimo testbench implica il funzinamento dei due precedenti (visto l’uso dei componenti all’interno della moka). Simulazione – Panoramica globale Si può notare come la piastra HEAT si accenda per 10 minuti. Nelle prossime slides si analizzerà nel dettaglio l’impostazione dell’orario (quindi test del componente DigitalClockChecker), dello scorrere del tempo (quindi componente DigitalClock) e si mostrerà che la piastra si è accesa all’orario prestabilito. Simulazione – impostazione orario Il segnale SET_CLOCK è attivo mentre il segnale SET_TIMER è attivo (come da vincoli, si immagina che fisicamente l’attivazione dei due pulsanti in contemporanea sia impossibile). Alla pressione del tasto UP ciò che è stato selezionato mediante SWITCH_HMS viene incrementato di 1. Si può notare come il tempo di pressione sia di UP, che di SWITCH_HMS, non sia rilevante (Le onde create con UP sono tutte uguali solo perché a livello di codice, sono state generate mediante un ciclo for). Sono state impostate come orario attuale le 12:05. Simulazione – impostazione timer (ora per fare il caffè) I vincoli sono quelli della slide precedente, e anche il funzionamento. Ora è attivo l’ingresso SET_TIMER, così facendo viene impostata l’ora del timer. Sono state impostate le 12:10. Quindi, tra 5 minuti esatti la piastra HEAT dovrà andare a 1 e rimanere tale per 10 minuti. Giusto il tempo di fare il caffè. Simulazione – l’ora del caffè Nell’istante in cui le ore ed i minuti si eguagliano (da notare in quest’immagine il cambio di minuto da 9 a 10) con quelli del timer, il segnale HEAT va ad 1. E come si può notare dalla slide «Simulazione – panoramica globale», dura esattamente 10 minuti d’orologio. Simulazione – trascorsa un’ora A verifica del funzionamento del componente DigitalClock, si può notare come allo trascorrere dell 59-esimo secondo del 59-esimo minuto, l’orario passi dalle 12 alle 13. Il numero di secondi trascorsi nella simulazione non è 3600 dato che l’orario iniziale non erano le 12:00 ma le 12:05, quindi 3600 – (5*60) = 3600 – 300 = 3300. Il secondo di scarto è dato dal tempo impiegato nella simulazione per impostare l’orario. Le simulazioni presenti sono tutte behavioral, quindi non tengono conto dei ritardi Instrinsici della tecnologia usata. Simulazione – post route Della simulazione post route mostrerò semplicemente il confronto tra le due immagini «globali» della simulazione, così da evidenziare le differenze. La simulazione post route è state eseguita per soli 1600 secondi, in quanto il tempo di simulazione sarebbe risultato eccessivo. Simulazione - confronto Behavioral: Post Route: Simulazione - differenze La differenza più evidente è che nella simulazione post route il cambio tra un minuto e l’altro non è immediato. Si generano delle forme d’onda «rapide» di transizione tra un valore e l’altro, anziché essere «pulite» come nella simulazione behavioral. Ulteriori differenze non sono visibili dalle immagini, non solo per il fatto che essendo immagini globali sono poco dettagliate, ma soprattutto perché l’uso di un segnale di clock a 100Hz («lento») minimizza le differenze, in quanto la rete ha tempo di stabilizzarsi tra due fronti positivi, evitando così casi di meta-stabilità.