Diagramma degli stati primitivo (Mealy) SE,P Tabella degli stati primitiva / Ricerca stati compatibili SE 00 01 11 10 -,- B,0 B AC C X -- D X CE CE E X X -- -- A A,0 -,- B C,- C C,1 D,1 -,- -,- D E,1 D,1 -,- -,- E E,1 -,- -,- F,1 F X X -- CE CE F C,1 -,- G,- F,1 G -- -- X X -- -- G -,- H,0 G,0 -,- H -- X X X X X -- H A,0 H,0 -,- A B C D E F G -,- G,0 B,0 -,- Classi massime di compatibilità che soddisfano copertura e chiusura: [A,G,H] => α [B] => β [C,D,E,F] => γ Assegnazione. Tabella transizioni ridotta SE 00 01 11 10 A A,0 -,- B C,- C C,1 D,1 -,- D SE SE -,- B,0 00 01 11 10 y1 y2 α α,0 α,0 α,0 β,0 00 00,0 00,0 00,0 01,0 -,- β γ,- -,- α,0 β,0 01 11,- E,1 D,1 -,- -,- γ γ,1 γ,1 α,- γ,1 11 11,1 11,1 00,- 11,1 E E,1 -,- -,- F,1 10 --,- F C,1 -,- G,- F,1 -,- G,0 B,0 G -,- H,0 G,0 -,- H A,0 H,0 -,- y1 = !Sy2 + y1y2 y2 = S!E + !Sy2 P = y1 -,- 00 01 --,--,- 11 10 00,0 01,0 --,- --,- È presente una corsa critica perché c’è un cambiamento contemporaneo di 2 variabili di stato SE y1 y2 00 01 11 10 00 00,0 00,0 00,0 01,0 01 11,- 11 11,1 11,1 10,- 11,1 10 --,- --,- --,- 00,0 01,0 00,- --,- Inserita una transizione per permettere il cambiamento di una variabile di stato alla volta e assicurare un corretto funzionamento del progetto Schematico Xilinx y1 = !Sy2 + y1y2 y2 = S!E + !Sy2 P = y1 Schematico Xilinx – Circuito a NOR Ho realizzato lo stesso circuito utilizzando soltanto porte NOR (porta UNIVERSALE come NAND): dopo aver convertito ogni porta logica, ho semplificato al meglio il circuito. Ho anche verificato che, in questo caso, il circuito con soli NOR è «più conveniente» di un circuito con soli NAND. Questa conversione è molto utile perché si può risparmiare sul numero di circuiti integrati, dato che ogni circuito integrato è composto da sole porte dello stesso tipo. È in ogni caso molto utile perché non ho bisogno di avere più tipi di porte: posso costruire il mio circuito utilizzando «un solo tipo di mattone». Simulazione Post-Route La simulazione, tramite Testbench VHDL, prevede che vengano dati «10 pesci in ingresso» al sistema di dimensioni grandi o piccole, attraverso un algoritmo di generazione pseudo-casuale (nel test VHDL viene utilizzata la libreria «ieee.math_real»). Si può vedere dal grafico che, non appena il circuito è in grado di stabilire la dimensione del pesce che sta passando sul nastro trasportatore (e questo avviene subito dopo che la configurazione passa da SE = «10» allo stato successivo), questo commuta il prima possibile, e ragionevolmente, lo stato di P (il segnale che gestisce il deviatore pilotato). Come si può osservare, al passaggio di un pesce piccolo (SE = «10» SE = «00») l’uscita commuta in P = ‘1’, altrimenti, al passaggio di un pesce grande (di lunghezza >= L; SE = «10» SE = «11») l’uscita P va a ‘0’.