Cassaforte asincrona II assegnamento Descrizione Il progetto Cassaforte II assegnamento consiste in una codifica diversa delle variabili di stato. Codifica iniziale: Codifica riassegnata: x1x2 x1x2 00 01 11 10 00 01 11 10 A B A A A A 00 11 00 00 00 0 B B C A A B 11 11 10 00 00 0 C A C D A C 10 00 10 01 00 0 D A A D A D 01 00 00 01 00 1 y1y2 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: x1x2 00 y1y2 01 11 10 x1x2 00 y1y2 01 11 10 00 11 00 00 00 0 00 11 00 00 00 0 01 00 00 01 00 1 01 00 00 01 00 1 11 11 10 00 00 0 11 11 10 00 00 0 10 00 10 01 00 0 10 00 10 01 00 0 x1x2 00 y1y2 01 11 10 Dalla tabella delle transizioni sintetizzo le equazioni delle variabili di stato y1, y2 e dell’uscita Z. 00 11 00 00 00 0 01 00 00 01 00 1 11 11 10 00 00 0 10 00 10 01 00 0 y1 = !x1!x2!y1!y2 + !x1x2y1 + !x1y1y2 y2 = !x1!x2!y1!y2 + !x1!x2y1y2+ x1x2y1!y2 + x1x2!y1y2 Z = !y1y2 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. Considerazioni x1x2 00 01 11 10 00 11 00 00 00 0 11 11 10 00 00 0 10 00 10 01 00 0 01 00 00 01 00 1 y1y2 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. x1x2 00 01 11 10 0010 0000 0000 0000 1100 1100 1000 1110 1000 1000 0000 1000 1001 0000 0100 0000 0000 0100 0000 0010 1010 ---- 0000 ---- 1110 1100 ---- 0110 ---- 1010 1110 ---- ---- ---- 0110 ---- ---- 0010 ---- 0001 ---- ---- ---- ---- 1101 ---- ---- 0101 ---- 1001 ---- ---- 1101 ---- 0101 ---- ---- 0100 ---- 0011 ---- ---- ---- ---- 1111 ---- ---- ---- ---- 1011 ---- ---- ---- ---- 0111 ---- ---- ---- ---- y1y2y3y4 0000 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: