La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Progetto Rete Sequenziale Sincrona Torsello Marco Donato 0000587966.

Presentazioni simili


Presentazione sul tema: "Progetto Rete Sequenziale Sincrona Torsello Marco Donato 0000587966."— Transcript della presentazione:

1 Progetto Rete Sequenziale Sincrona Torsello Marco Donato 0000587966

2 Testo Un autobus è composto a due sezioni, una anteriore e una posteriore, ognuna delle quali possiede una porta per la salita e una per la discesa. Per il corretto rispetto delle norme di sicurezza si deve tenere sotto controllo il numero di passeggeri ed impedire il superamento del limite imposto dalle norme vigenti(50). Si vuole realizzare una rete sequenziale sincrona che permetta di aprire le porte di salita solo se vi sono posti e solamente durante le soste stabilite dall'autista. In caso di un solo posto disponibile si da priorità alla porta nella parte anteriore. In particolare, gli ingressi della rete sono composti da: - 4 sensori situati sulle porte, SS1 (Sensore Salita 1), SS2, SD1 (Sensore Discesa 1), SD2. - FER(Fermata) che viene attivato dall'autista per segnalare la sosta del mezzo; Inoltre, le uscite sono AP1(Abilita Porta 1) e AP2, abilitati nel caso in cui i posti fossero disponibili. Torsello Marco Donato 0000587966

3 Mux ad 8 bit Torsello Marco Donato 0000587966

4 Rete «CalcoloVariazioni» SS1SS2SD1SD2Risultato(10) 00000 0001 0010 0011-2 01001 01010 01100 0111 10001 10010 10100 1011 11002 11011 11101 11110 Torsello Marco Donato 0000587966 Questa rete combinatoria ha il compito di calcolare quante persone saliranno(un valore positivo) o scenderanno(un valore negativo) in base ai sensori. Il valore così ottenuto verrà poi sommato al numero delle persone presenti nellautobus.

5 Torsello Marco Donato 0000587966

6 library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity CalcoloVariazioni is Port ( S1 : in STD_LOGIC; S2 : in STD_LOGIC; D1 : in STD_LOGIC; D2 : in STD_LOGIC; O : out STD_LOGIC_VECTOR (7 downto 0)); end CalcoloVariazioni; architecture Behavioral of CalcoloVariazioni is begin O<= "00000010" when (S1='1' and S2='1' and D1='0' and D2='0') -- Con questa configurazione d'ingresso, saliranno 2 persone else "11111110" when (S1='0' and S2='0' and D1='1' and D2='1') -- Con questa configurazione d'ingresso, scenderanno 2 persone else "00000001" when (S1='1' and S2='0' and D1='0' and D2='0') or (S1='0' and S2='1' and D1='0' and D2='0') or (S1='1' and S2='1' and D1='1' and D2='0') or (S1='1' and S2='1' and D1='0' and D2='1') -- Con queste configurazione d'ingresso, salirà una persona else "11111111" when (S1='0' and S2='0' and D1='1' and D2='0') or (S1='0' and S2='0' and D1='0' and D2='1') or (S1='1' and S2='0' and D1='1' and D2='1') or (S1='0' and S2='1' and D1='1' and D2='1') -- Con queste configurazione d'ingresso, scenderà una persona else "00000000"; -- In tutti gli altri casi le variazioni saranno nulle end Behavioral; Torsello Marco Donato 0000587966

7 Full-Adder ad 8 bit Schematico VHDL library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity FullAdder8 is Port ( A : in STD_LOGIC_VECTOR (7 downto 0); B : in STD_LOGIC_VECTOR (7 downto 0); S : out STD_LOGIC_VECTOR (7 downto 0)); end FullAdder8; architecture Behavioral of FullAdder8 is signal CTMP : std_logic_vector (7 downto 1):="0000000"; begin Inst_FullAdder_1: entity work.FullAdder PORT MAP( A => A(0), B => B(0), C => '0',--In questo primo FullAdder non bisogno di mettere nessun ingresso perchè non mi serve avere un carry in S => S(0), COUT => CTMP(1) ); Inst_FullAdder_2: entity work.FullAdder PORT MAP( A => A(1), B => B(1), C => CTMP(1), S => S(1), COUT => CTMP(2) ); Inst_FullAdder_3: entity work.FullAdder PORT MAP( A => A(2), B => B(2), C => CTMP(2), S => S(2), COUT => CTMP(3) ); Inst_FullAdder_4: entity work.FullAdder PORT MAP( A => A(3), B => B(3), C => CTMP(3), S => S(3), COUT => CTMP(4) ); Inst_FullAdder_5: entity work.FullAdder PORT MAP( A => A(4), B => B(4), C => CTMP(4), S => S(4), COUT => CTMP(5) ); Inst_FullAdder_6: entity work.FullAdder PORT MAP( A => A(5), B => B(5), C => CTMP(5), S => S(5), COUT => CTMP(6) ); Inst_FullAdder_7: entity work.FullAdder PORT MAP( A => A(6), B => B(6), C => CTMP(6), S => S(6), COUT => CTMP(7) ); Inst_FullAdder_8: entity work.FullAdder PORT MAP(--In questo FA non ho bisogno di un carry out perchè ai fini della mia rete non serve A => A(7), B => B(7), C => CTMP(7), S => S(7) ); end Behavioral; Torsello Marco Donato 0000587966

8 FlipFlopD a 8 bit SchematicoVHDL Torsello Marco Donato 0000587966

9 Schematico Risolutivo Torsello Marco Donato 0000587966

10 Questa sezione della rete si occupa di impedire di superare il limite imposto di 50 passeggeri, anche se da specifiche questa situazione non dovrebbe mai verificarsi. Con lo stesso sistema si potrebbe realizzare una rete che non permetta di scendere sotto zero.

11 VHDL Risolutivo Torsello Marco Donato 0000587966

12

13

14 Codice Simulazione Torsello Marco Donato 0000587966

15

16 Simulazione Behavioral Schematico Torsello Marco Donato 0000587966

17 Simulazione Post-Route Schematico Torsello Marco Donato 0000587966

18 Simulazione Behavioral VHDL Torsello Marco Donato 0000587966

19 Simulazione Post-Route VHDL Torsello Marco Donato 0000587966


Scaricare ppt "Progetto Rete Sequenziale Sincrona Torsello Marco Donato 0000587966."

Presentazioni simili


Annunci Google