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.
Scarica

Presentazione