Progetto asincrono Progettare un dispositivo che regoli la temperatura dei termosifoni di un appartamento. Vi sono 3 ingressi ABC e due uscite ZOZ1. I sensori rilevano: A = temperatura inferiore a 10° . Si ordina di portare al massimo la potenza dei termosifoni: -> ZOZ1=11 B = temperatura compresa fra 10° e 18°. Si ordina di lasciare ad una potenza media i termosifoni o di abbassare la potenza se sono al massimo: -> ZOZ1=01 C = temperatura superiore a 18°. Si ordina di spegnere i termosifoni ZOZ1=00 La rete ritiene validi i cambiamenti dei sensori se si ha un fronte di salita di un ingresso quando tutti gli altri sono disattivati (0), altrimenti le uscite restano invariate. Diagramma degli stati ABC 000 100 100 A,00 000 000 B,11 C,11 100 Il seguente diagramma è già ridotto. L’uscita cambia solo 001 quando tutti gli ingressi sono a 0. 010 000 100 F,00 E,01 001 001 010 D,01 000 000 010 Tabella degli stati 000 001 011 010 100 101 111 110 Z0Z1 A A F - D B - - - 00 B C B B B B B B B 11 C C F - D B - - - 11 D E D D D D D D D 01 E E F - D B - - - 01 F A F F F F F F F 00 Sono tutte classi massime poiché soddisfano le proprietà di copertura e di compatibilità. B BF BD C D DF DB E F FD BF A B C D E A <- 000 F <- 001 B <- 011 C <- 010 D <- 100 E <- 101 Tabella degli stati Le corse critiche vengono indicate con un cerchio 000 001 011 010 100 101 111 110 Z0Z1 B | 000 001 001 000 000 000 000 000 - 11 C | 001 001 101 - 011 000 - - - 11 D | 011 010 011 011 011 011 011 011 011 01 E | 010 010 101 - 011 000 - - - 01 A | 100 100 101 - 011 000 - - - 00 F | 101 100 101 101 101 101 101 101 101 00 | 111 - - - - - - - - | 110 - - - - - - - - Risolviamo le corse critiche 000 001 011 010 100 101 111 110 Z0Z1 B | 000 001 001 000 000 000 000 000 - 11 C | 001 001 101 - 011 000 - - - 11 D | 011 010 011 011 011 011 011 011 011 01 E | 010 010 110 - 011 000 - - - 01 A | 100 100 101 - 110 000 - - - 00 F | 101 100 101 101 101 101 101 101 101 00 | 111 - 101 - 011 - - - - | 110 - 111 - 111 - - - - I mintermini ottenuti risolvendo con le mappe di karnaugh sono: Y0 = Y1!Y2C + !Y1Y2C + Y0!Y1Y2 + Y0!Y2!A Y1 =!Y0Y1Y2 + Y1!Y2!A + !Y0!Y2B + Y0!Y2B + Y1Y2B Y2 =Y2C + Y2B + AY1Y2 + Y1B + Y0C + !Y0!Y1!A!B!C Z0 =!Y0!Y1 Z1 = !Y0 VHDL library IEEE; use IEEE.STD_LOGIC_1164.ALL; -- definisco le entità entity vhd is -- i tre sensori di ingresso A,B,C il segnale reset di ingresso e le due uscite Z0 e Z1 Port ( A : in STD_LOGIC; B : in STD_LOGIC; C : in STD_LOGIC; Reset : in STD_LOGIC; Z0 : out STD_LOGIC; Z1 : out STD_LOGIC); end vhd; --Creo tre segnali interni per la gestione della rete architecture Behavioral of vhd is signal Y0 : std_logic := '0'; signal Y1 : std_logic := '0'; signal Y2 : std_logic := '0'; Begin processo : process(Reset,A,B,C,Y0,Y1,Y2) begin --Se il reset è attivo si resetta la rete portando la rete allo stato di partenza if(reset='1')then Y0<=‘1; Y1<='0'; Y2<='0'; e le uscite vanno a 00 else Y0 <= (Y1 AND (NOT Y2) AND C) OR ((NOT Y1) AND Y2 AND C) OR (Y0 AND (NOT Y1) AND Y2) OR (Y0 AND (NOT Y2) AND (NOT A)); Y1 <= ((NOT Y0) AND Y1 AND Y2) OR (Y1 AND (NOT Y2) AND (NOT A)) OR ((NOT Y0) AND Y2 AND B) OR (Y0 AND (NOT Y2) AND B) OR (Y1 AND Y2 AND B); Y2 <= (Y2 AND C) OR (Y2 AND B) OR (A AND Y1 AND Y2) OR (Y1 AND B) OR(Y0 AND C) OR ((NOT Y0) AND (NOT Y1) AND (NOT A) AND (NOT B) AND (NOT C)); end if; Z0 <= (NOT Y0) AND (NOT Y1) AND (NOT reset); Z1 <= (NOT Y0) AND (NOT reset); end process; end Behavioral; Simulazione behavioral I tre segnali di ingresso A,B,C sono in blu. Il segnale Reset, il quale forza le uscite a 00, è in rosso. Le uscite Z0 e Z1 sono in giallo. Fronte positivo di A -> uscite Z0Z1=11 Fronte positivo di B > uscite Z0Z1=10 Fronte positivo di C -> uscite Z0Z1=00 Come possiamo notare le uscite cambiano solo e solamente in prossimitò di un fronte di salita di un segnale d’ingresso e gli altri sono disattivati!! Simulazione post-route Si può notare che la rete ha un ritardo di 10 ns! Schematico Si può notare l’aggiunta del reset utile per riportare la rete ad uno stato iniziale in cui le due uscito sono a 00. Altra nota è l’aggiunta del multiplexer utile per settare Y0 ad 1 essenziale per resettare le uscite a 00. Simulazione Behavioral Simulazione post-route Stesse considerazioni di prima. Le uscite cambiano solo se tutti gli ingresso sono a zero e si ha un nuovo fronte di salita. Il ritardo è di circa 10 ns anche in questo caso.