Cassaforte asincrona II assegnamento
Descrizione Il progetto Cassaforte II assegnamento consiste in una codifica diversa delle variabili di stato. Codifica iniziale: Codifica riassegnata: ABAAA BBCAA CACDA DAADA x1x x1x2 y1y2 ABCDABCD Sono state evidenziate le corse critiche di giallo, mentre la corsa di colore verde è ammessa.
Sintesi delle funzioni Viene eseguita le sintesi delle funzioni attraverso la mappa di Karnaugh: y1 = !x1!x2!y1!y2 + !x1x2y1 + !x1y1y2 y2 = !x1!x2!y1!y2 + !x1!x2y1y2+ x1x2y1!y2 + x1x2!y1y2 Z = !y1y2 x1x2 y1y2 x1x2 y1y2 x1x2 y1y2 Dalla tabella delle transizioni sintetizzo le equazioni delle variabili di stato y1, y2 e dell’uscita Z
Simulazioni da schematico e VHDL: Behavioural e Post-Route Dalla simulazione Behavioural si può notare che essa si blocca dopo 650ns, esattamente mentre l’uscita Z dovrebbe portarsi a 1, riportando un errore nella console. Il cambiamento simultaneo di entrambe le variabili di stato genera questo errore e blocca la rete. La simulazione Post-Route avviene con successo, ma presenta punti instabili, di errore, e per certe configurazioni di ingresso porta la rete in uno stato sbagliato.
Dopo aver resettato la rete, quando la configurazione di ingresso diventa x1=x2=0 la rete secondo la tabella delle transizioni dovrebbe portarsi nello stato successivo y1=y2=1, cosa che fisicamente non sarebbe possibile in quanto le due variabili di stato y1 e y2 dovrebbero cambiare contemporaneamente. Invece ciò avviene e rende la rete non più in grado di rispondere agli stimoli successivi, difatti l’uscita Z non si porta mai a 1. Quando la configurazione di ingresso è x1=x2=0 e la rete si trova nello stato 00, il suo comportamento non è prevedibile. Dalla simulazione si nota che le variabili di stato si portano in entrambe le due occasioni a 1 simultaneamente, ma in realtà potrebbero restare a 0 o generare errori.
x1x2 y1y Considerazioni Dalle simulazioni è stata esaminata la corsa critica segnalata dal colore verde, ma essa non è l’unica corsa pericolosa della rete. In particolare la corsa evidenziata in giallo potrebbe causare seri problemi nel funzionamento della rete, difatti prima di passare allo stato 01 dallo stato 10, la rete potrebbe transitare o dallo stato 00 il quale rimarrebbe stabile per ingressi x1=x2=1, oppure per lo stato 11. Quest’ultimo comporterebbe un altro doppio cambiamento delle variabili di stato al quale consegue o la possibilità che la rete riesca a raggiungere la configurazione voluta oppure che si riporti allo stato 10 in condizione di instabilità. I ritardi determinano il comportamento della rete.
Dalla dimostrazione ne risulta che l’assegnamento scelto per la cassaforte non è funzionale: la rete, oltre ad essere più complessa, genera diverse corse critiche che interferiscono con il funzionamento. Per ovviare al problema sarebbe necessario aggiungere variabili di stato in modo da eliminare le corse e rendere la rete stabile in ogni stato a seconda degli ingressi. Una possibile soluzione potrebbe essere la seguente: x1x2 y1y2y3y4