Vous êtes sur la page 1sur 3

ENSAK

Projet lectronique

Ce projet sert de mise en uvre pratique de VHDL et de Mthode et Outils de Conception.


Lobjectif de ce projet est la ralisation dun automate de commande dune machinerie
dascenseur pour un immeuble de 3 tages, nots par ordre croissant de 0 3.
Actions :
La machinerie dascenseur est une machine squentielle tats finis.
Ce projet se droule en 4 phases :
1) Dfinition de la machine tats finis sous forme de graphe tats ;
2) Description en langage VHDL de la machine tats finis ;
3) Elaboration du test en langage VHDL ;
4) Simulation de lensemble avant la synthse dans Mentor ModelSim (Xilinx) ;

Rsistances surmonter :
Respect des pratiques et la smantique du langage
VHDL pour obtenir un ensemble compltement
synthtisable sans erreurs et avec des warnings
ventuels clairement dfinis ;
Fonctionnement de lenvironnement de simulation
Mentor ModelSim.
Contraintes respecter :
Terminer le projet le 5 janvier 2012 ;
Prsentation de chaque groupe le 5 janvier 2012 ;
Rendre le compte rendu de projets dans les temps.

Qualits et comptences rvler :


Ecriture en langage VHDL ;
Architecture globale dun projet en langage VHDL
(description, simulation, synthse)
Utilisation de ModelSim
Description de projet :
Considrons l'exemple d'un ascenseur dans un immeuble 3 niveaux. Ce systme a 6 entres :
Les 3 boutons intrieurs ( e1 , e2 , e3 ) et les 3 boutons d'appels chaque niveau ( req1 , req2,
req3 ).
Trois signaux r1 , r2 , et r3 , servent mmoriser les requtes. Suivant les requtes, la partie
Contrle positionne les signaux go1 , go2 , et go3, et le signal up qui indique la direction du
mouvement. Elle comprend 8 tats :

Prof. Tayeb SADIKI

Page 1

ENSAK

chaque tat ATi correspond un arrt au niveau i, et chaque tat ATi a correspond
un dpart du niveau i
les tats B12 et B23 correspondent respectivement des dplacements entre les
niveaux 1 et 2, et 2 et 3.

entity Elevator is
port(E1,E2,E3,Req1,Req2,Req3,Ck:in Bit);
end Elevator;
architecture Behav_RTL of Elevator is
type STATES is (AT1a,AT1,B12,AT2,AT2a,B23,AT3,AT3a);
signal STATE: STATES;
signal GO1, GO2, GO3, R1, R2, R3, UP : Bit ;
begin
process
begin
wait until Ck'event and Ck = '1';
case STATE is
when AT1a => if (GO1='1') then STATE <= AT1;
elsif ((GO2 or GO3) = '1') then STATE <= B12;
end if;
when AT1 => STATE <= AT1a;
when B12 => if (GO1 = '1') and (UP='0') then STATE <= AT1;
elsif (GO2 = '1') and (UP='1')
then STATE <= AT2;
elsif (GO3 = '1') and (UP='1')
then STATE <= B23;
end if;
when AT2a => if (GO2='1') then STATE <= AT2;
elsif (GO1='1') and (UP='0')
then STATE <= B12;
elsif (GO3='1') and (UP='1')
then STATE <= B23;
end if;
when AT2 => STATE <= AT2a;
when B23 => if (GO2 = '1') and (UP='0') then STATE <= AT2;
elsif (GO1 = '1') and (UP='0')
then STATE <= B12;
elsif (GO3 = '1') and (UP='1')
then STATE <= AT3;
end if;
when AT3a => if (GO3='1') then STATE <=AT3;
elsif (GO1 or GO2) = '1' then STATE <= B23;
end if;
when AT3 => STATE <= AT3a ;
end case;
if (STATE /= AT1) and ((Req1 or E1) = '1') then R1 <= '1';
elsif (STATE = AT1) then R1 <= '0';
end if;
if (STATE /= AT2) and ((Req2 or E2) = '1') then R2 <= '1';
elsif (STATE = AT2) then R2 <= '0';
Prof. Tayeb SADIKI

Page 2

ENSAK
end if;
if (STATE /= AT3) and ((Req3 or E3) = '1') then R3 <= '1';
elsif (STATE = AT3) then R3 <= '0';
end if;
case STATE is
when AT1 => GO1 <= '0';
when AT1a => UP <= '1';
if (R1='1') then GO1 <= '1'; end if;
if (R2='1') then GO2 <= '1'; end if;
if (R3='1') then GO
when AT2 => GO2 <= '0';
when AT2a => if (GO3='1') then UP <= '1';
elsif (GO1='1') then UP <= '0';
end if;
if (R2='1') then GO2 <= '1'; end if;
if (R1='1') then GO1 <= '1'; end if;
if (R3='1') then GO3 <= '1'; end if ;
when AT3 => GO3 <= '0';
when AT3a => UP <= '0';
if (R3='1') then GO3 <= '1'; end if;
if (R2='1') then GO2 <= '1'; end if;
if (R1='1') then GO1 <= '1'; end if ;
when others => null;
end case;
end process;
end Behav_RTL;

Prof. Tayeb SADIKI

Page 3