UNIVERSITE HASSAN II DE CASABLANCA
------------
Faculté des Sciences Aïn Chock
Département de Physique
-Master Spécialisé-
Électronique électrotechnique automatique et informatique industrielle
Mini-projet machine à états
Commande d’une porte de garage
Préparé par : Demandé par :
LAOUAM Yassine Prof. A. TOUHAMI
EL GUELAI Hamza
IJOUD Anass
Année Universitaire 2021/2022
Sommaire :
INTRODUCTION................................................................................3
PRINCIPE DE XILINX ISE 10.1.......................................................................3
UTILISATION DE SIMULATION......................................................................................... 3
L’OBJECTIF........................................................................................................................... 3
1. CAHIER DES CHARGES....................................................................................................... 4
2. DESCRIPTION DES ENTRÉES/SORTIES............................................................................ 4
- Tableau des entrées : …………………………………………………………….
- Tableau des sorties : ……………………………………………….
3. GRAPHE D’ÉTATS............................................................................................................... 5
4. TEST BENCH............................................................................................10
5. SIMULATION......................................................................................................................... 12
6. SCHEMA BLOC..................................................................................................................... 12
7. CIRCUIT ÉLECTRIQUE........................................................................................................ 13
CONCLUSION...............................................................................................14
ANNEXE.........................................................................................................15
- Programme...............................................................................................15
2
INTRODUCTION :
Ce projet a pour rôle de faire comprendre aux étudiants le fonctionnement du logiciel xilinx,
ainsi les initier à la manipulation des outils de simulation.
Dans ce projet on a utilisé l’outil xilinx ISE 10.1 qui est le logiciel le plus utilisé dans
l’industrie pour la programmation et la simulation des circuits intégrés pour son efficacité et
Faisabilité.
Principe de xilinx ISE 10.1 :
Xilinx fait partie des plus grandes entreprises spécialisées dans le développement et la
commercialisation des composants logiques programmables, et des services associés tels que
les logiciels de CAO électroniques, blocs de propriété intellectuelle réutilisables et formation.
L’outil de référence pour la simulation numérique, notamment en ce qui concerne les circuits
logiques. Il offre des possibilités avancées que ce soit en matière de programmation ou
d’implantation. Il permet de manière plus générale, de résoudre une grande diversité de
problème de simulation, dans des domaines aussi variées que le traitement du signal, les
statistiques ou la vision.
Utilisation de simulation :
La simulation sur xilinx est une autre boîte à outils de xilinxISE 10.1 qui permet de faire
des simulations des circuits et schémas électrique définis à l’aide d’un outil graphique. On
se propose ici d’utiliser la simulation pour définir le changement d’état des entrées/sorties
du système. On pourra ainsi visualiser notamment les réponses du système à différents
types d’entrées.
Pour lancer la simulation, on peut utiliser soit l’outil test bench pour le vhdl, soit utiliser le
3
state bench dans la fenêtre du diagramme d’état.
L’objectif :
Analyser le comportement d’une machine afin de réaliser son diagramme d’état,
programme VHDL, schéma bloc puis le circuit électrique.
Effectuée la simulation à l’aide du logiciel Xilinx ISE 10.1.
1. Cahier des charges :
Le principe de fonctionnement pour commander l’ouverture et la fermeture d’une porte de
garage à l’aide d’une télécommande :
- Quand l’automobiliste arrive devant le garage, il actionne sa télécommande T.
Un moteur actionne le système d’ouverture du portail.
- Quand le portail s’ouvre entièrement, un capteur de fin de course d’ouverture Co se
déclenche et ordonne l’arrêt du mouvement d’ouverture.
- Le portail reste ouvert jusqu’à un nouvel appui sur le bouton de la télécommande
qui va entrainer la fermeture du portail.
- Un capteur infrarouge de sécurité Ir ordonne au moteur de rouvrir la porte si un
obstacle est détecté.
- Quand le portail se ferme entièrement, un capteur de fin de course de fermeture Cf est
actionné et ordonne l’arrêt du mouvement de fermeture.
2. Description des entrées/sorties :
- Tableau des entrées :
Le tableau ci-dessous présente les différentes entrées de notre programme :
4
Description des entrées Nom du signal
Télécommande T
Capteur de fin de course de Cf
fermeture
Capteur de fin de Co
course d’ouverture
Capteur infrarouge Ir
Tab 1: tableau des entrées
- Tableau des sorties :
Même choses pour les sorties :
Tab 2 : tableau des sorties
Dans ce qui suit on va entamer la partie de la simulationà l’aide du logiciel xilinix par la
réalisation de notre cahier des charges.
5
3. Graphe d’états :
Un diagramme d'états-transitions est un diagramme qui fournit une représentation graphique
d'une State Machine, il ne présente que les états significatifs pour le problème posé, les
transitions autorisées entre les différents états de l’objet, et il donne des précisions sur les
événements déclencheurs des transitions, il indique aussi les traitements effectués par l’objet
lorsqu’une transition est effectuée.
Pour créer un projet (File > New Project) .
A travers cette fenêtre on peut saisir le type de périphérique que nous allons utiliser :
Après avoir choisis notre circuit, on se propose de créer une machine à état qui simule les
quatre états pour commander l’ouverture et la fermeture d’une porte de garage.
6
Il faut ajouter les quatres états sur le diagramme.
Il faut initialiser le nombre des états « Number of states » à 4.
7
D'une manière similaire on renomme et on déclare les sorties et les entrées pour chacune
des states.
Le diagramme d’états de notre cahier des charges :
8
Fig. 1 : Graphe d’états
On clique sur le bouton Si on construit la machine à états
correctement. On obtient ce message :
9
Après avoir ce message, on peut passer à la simulation.
4. TEST BENCH:
Maintenant que notre machine est terminée on veut la simuler, pour cela il suffit de
cliquer sur le bouton « State Bench » dans le menu :
Fig. 3 : Menu
On obtient alors :
10
Fig.4 : Test Bensh
Pour rapidement réaliser une simulation cliquer sur « AutomaticTestBensh ».
Fig. 5: Automatic Test Bench
On obtient ce diagramme:
Fig.6: test BENCH
11
5. Simulation:
Fig.7: simulation
Un carré bleu indique le temps après lequel les sorties (outputs) seront validés.
En cliquant sur une zone bleue on peut changer l’état de l’entrée correspondante à la ligne
sélectionné.
6. Schéma bloc:
Le schéma bloc de notre projet :
Fig.8: schéma bloc
12
7. Circuit électrique :
Fig.9 : circuit électrique
13
CONCLUSION
Ce mini projetsur lequel nous avons travaillé, nous a permisd’associer la théorie et la
pratique, mesurer nos connaissances acquises durant notre formation et mettre en
valeur notre capacité.
C’était une occasion pour découvrir et se familiariser à la programmation du logiciel
XILINX qui est un moyen d’aide à la réalisation des schémas fonctionnels, ainsi, la
simulation et la manipulation du différent système (machines d’états).
Enfin, nous tenons à remercier notre professeur, qui nous a donné cette opportunité
pour faire ce mini projet .
14
Annexe
- Programme :
Voilà le programme en langage VHDL de notre projet :
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY UNTITLED IS
PORT (CLK,Cf,Co,Ir,RESET,T: IN std_logic;
Mf,Mo : OUT std_logic);
END;
ARCHITECTURE BEHAVIOR OF UNTITLED IS
SIGNAL sreg :std_logic_vector (1 DOWNTO 0);
SIGNAL next_sreg :std_logic_vector (1 DOWNTO 0);
CONSTANT Etat1 :std_logic_vector (1 DOWNTO 0) :="11";
CONSTANT Etat2 :std_logic_vector (1 DOWNTO 0) :="10";
CONSTANT Etat3 :std_logic_vector (1 DOWNTO 0) :="01";
CONSTANT Etat4 :std_logic_vector (1 DOWNTO 0) :="00";
SIGNAL next_Mf,next_Mo : std_logic;
BEGIN
PROCESS (CLK, next_sreg, next_Mf, next_Mo)
BEGIN
IF CLK='1' AND CLK'event THEN
sreg<= next_sreg;
Mf <= next_Mf;
Mo <= next_Mo;
15
END IF;
END PROCESS;
PROCESS (sreg,Cf,Co,Ir,RESET,T)
BEGIN
next_Mf<= '0'; next_Mo<= '0';
next_sreg<=Etat1;
IF (RESET='1') THEN
next_sreg<=Etat1;
next_Mo<='0';
next_Mf<='0';
ELSE
CASE sreg IS
WHEN Etat1 =>
IF (T='1') THEN
next_sreg<=Etat2;
next_Mf<='0';
next_Mo<='1';
END IF;
IF (T='0') THEN
next_sreg<=Etat1;
next_Mo<='0';
next_Mf<='0';
END IF;
WHEN Etat2 =>
IF (Co='0') THEN
next_sreg<=Etat2;
16
next_Mf<='0';
next_Mo<='1';
END IF;
IF (Co='1') THEN
next_sreg<=Etat3;
next_Mo<='0';
next_Mf<='0';
END IF;
WHEN Etat3 =>
IF (T='1') THEN
next_sreg<=Etat4;
next_Mo<='0';
next_Mf<='1';
END IF;
IF (T='0') THEN
next_sreg<=Etat3;
next_Mo<='0';
next_Mf<='0';
END IF;
WHEN Etat4 =>
IF (Ir='1') THEN
next_sreg<=Etat2;
next_Mf<='0';
next_Mo<='1';
END IF;
IF (Cf='1' AND Ir='0') THEN
next_sreg<=Etat1;
17
next_Mo<='0';
next_Mf<='0';
END IF;
IF (Cf='0' AND Ci='0') THEN
next_sreg<=Etat4;
next_Mo<='0';
next_Mf<='1';
END IF;
WHEN OTHERS =>
END CASE;
END IF;
END PROCESS;
END BEHAVIOR;
18