In una macchina automatica vengono utilizzati due segnali binari X1, X2 per verificare la corretta esecuzione di una certa atLività su ciascun prodotto in corso di lavorazione. In particolare un prodotto è da ritenersi correttamente lavorato se e soltanto se il segnale X2 presenta lo stesso valore (0 o 1) in corrispondenza del fronte di discesa e del successivo fronte di salita del segnale X1. Si esegua il progetto di una rete sequenziale asincrona che, ricevendo in ingresso i segnali X1 e X2, provveda, allorché X1 = 1, ad indicare tramite il segnale di uscita Z se un prodotto è stato correttamente lavorato (Z = 1) o meno (Z = 0). Il segnale Z deve comunque assu mere il valore logico 0 allorché X1 = 0. I segnali X1 e X2 non cambiano mai di valore contemporaneamente. Diagramma di Moore
DIAGRAMMA DEGLI STATI Diagramma di Moore X1X2 10 00 01 11 10 00 01 A,1 B,1 C,0 D,0 11 10 00 11 01 00 11 00 10 11 H,0 G,0 F,0 E,0 01 10 01 00 10 11 01 Diagramma di Moore
TABELLA DEGLI STATI PRIMITIVA 00 01 11 10 Z A H A B 1 -‐-‐ B C A B 1 -‐-‐ C C D -‐ -‐ B 0 D C D E -‐ -‐ 0 E -‐-‐ H E F 0 F C E F 0 -‐-‐ G G H F 0 -‐-‐ H G H A -‐ -‐ 0 Diagramma di Moore
TABELLATRIANGOLARE DELLE IMPLICAZIONI F G H CLASSI DI COMPATIBILITÁ: [A,B] - α [C,D] - δ [E,F] - ε [G,H] -η A B CD E F G
ASSEGNAZIONE E TABELLA DELLE TRANSIZIONI RIDOTTA 00 01 11 10 Z 00 01 11 10 Z α δ η δ η α αα α 1 δδ δ ε α 0δ δ ε α 0δ δ ε α 0δ δ ε α 0 α 00 01 10 00 00 1 δ 01 01 01 11 00 0 ε δ η ε ε 0 ε 11 01 10 11 11 0 η η η α ε 0 10 10 10 00 11 0 η
Y2 = !Y1!X1!X2 + Y1X1!X2 + Y2X1X2 + Y2!X1!X2 + !Y1Y2!X1 SINTESI 00 01 11 10 Z 00 01 10 00 00 1 01 01 01 11 00 0 11 01 10 11 11 0 10 10 10 00 11 0 Z= !Y1!Y2 Y1 = Y1!X1X2 + Y2X1X2 + Y1!Y2!X1 + !Y2!X1X2 + Y1X1!X2 Y2 = !Y1!X1!X2 + Y1X1!X2 + Y2X1X2 + Y2!X1!X2 + !Y1Y2!X1
SCHEMA LOGICO XILINX
TESTBENCH VHDL
40 41 -* Test Bench - User Defined Section *** 42 tb : PROCESS 43 BEGIN 44 RESETC='1'; iniziale 45 wait for 20 ns; 46 X1<='1'; 47 X2<='1'; 48 wait for 10 ns; 49 RESET<=101; Spegnimento del Reset: entrambi i segnali d'ingresso sono a 1 e l'uscita a 0 50 wait for 20 ns; 51 X2<='0'; 52 wait for 20 ns; 53 X2<=111; Ogni variazione di X2 mentre X1 6 a 1 non comporta nessun cambiamento dello stato interno ne dell'uscita 54 wait for 20 ns; 55 X1<='0'; Fronte di discesa di X1 56 wait for 20 ns; 57 X1<='1'; Fronte di salita di Xl: it valore di X2 4 invariato rispetto al rrecedente fronte di discesa di Xl; l'uscita passa a 1 58 wait for 20 ns; 59 X1<='0'; Fronte di discesa di Xl; l'uscita torna a 0 60 wait for 20 ns; 61 X1<='1'; Fronte di salita di Xl: it valore di X2 4 invariato rispetto a1 brecedente fronte di discesa di Xl; l'uscita passa a 1 62 wait for 20 ns; 63 X2<='0'; -- X2 cambia valore mentre l'uscita e a 1: non brevoca nessuna rioercussione sullo sta:o interno ne sull'uscita 64 wait for 20 ns; 65 X1<='0'; Fronte di discesa di Xl; l'uscita torna a 0 66 wait for 20 ns; 67 X2<='1'; -- X2 cambia valore prima del fronte di salita di X1 68 wait for 20 ns; 69 Xl<='1'; Fronte di salita di Xl: X2 non _ha lo stesso valore che aveva durance it precedente fronte di discesa di Xl; l'uscita resta a 0 70 wait for 20 ns; 71 X1<='0'; Fronte di discesa di X1 72 wait for 20 ns; 73 X1<=11'; Fronte di salita di Xl: X2 ha io stesso valore che aveva durante i1 brecedente fronte di discesa di Xl; l'uscita passa a 1 74 wait for 20 ns;
75 X2<='0'; 76 wait for 20 ns; 77 Xl<='0'; Fronte di discesa di Xl; l'uscita torna a 0 78 wait for 20 ns; 79 X2<=i1'; 80 wait for 20 ns; 81 X2<='0'; 82 wait for 20 ns; 83 X2<=111; -- X2 cambia valore prima del fronte di salita di X1 84 wait for 20 ns; 85 Xl<=111; Fronte di salita di Xl! it valore di X2 e cambiato dal precedence fronte di discesa di Xl; l'uscita resta a 0 86 wait for 20 ns; 87 Xl<='0'; Fronte di discesa di Xl; l'uscita resta immutata 88 wait for 20 ns; 89 Xl<='1'; Fronte di salita di Xl: X2 ha lo stesso valore the aveva durante Drecedente fronte di discesa di Xl; l'uscita passa a 1 90 wait for 20 ns; 91 X2<='0'; 92 wait for 20 ns; 93 X2<=11'; 94 wait for 20 ns; 95 X2<=101; 96 wait for 20 ns; 97 X2<='l'; Tutti i cambiamenti di X2 mentre l'uscita 6 a 1 non hanno rilDercussioni nd sullo stato inferno della rete nd sull'uscita stessa 98 wait for 20 ns; 99 RESET<='1'; -- Reset: l'uscita torna a 0 e lo stato interno viene forzaro a "11" 100 wait for 10 ns; 101 Xl<='0'; 102 wait for 20 ns; 103 Xl<='1'; 104 wait for 20 ns; 105 X2<='0'; 106 wait for 20 ns; 107 RESET<=101; S/Degnimento del Reset 108 wait for 10 ns; 109 X2<=i1'; 110 wait for 20 ns; 111 Xl<='0'; Fronte di discesa di X1 112 wait for 20 ns; 113 X2<='01; 114 wait for 20 ns;
Il Reset è strutturato in modo da forzare la rete nello stato interno “11” (Y1Y2), di conseguenza disattivando automaticamente l’uscita, in quanto questa è vera solo e soltanto quando Y1 e Y2 sono entrambi a 0. Una volta disattivato il segnale di Reset, la rete si com porterà come da progetto, cioè attivando l’uscita dopo un fronte di discesa di X1 e uno di salita di X2, durante i quali X2 deve avere lo stesso valore. Il segnale X2 può variare prima del fronte di salita di X1, madeve tornare al valore che aveva durante il precedente fronte di discesa dello stesso, affinché l’uscita sia portata a 1.
SIMULAZIONE ISIM -‐ BEHAVIORAL SIMULAZIONE ISIM -‐ BEHAVIORAL
SIMULAZIONE ISIM – POST-‐ROUTE SIMULAZIONE ISIM – POST-‐ROUTE