Rapport du mini projet :
Commande d’un Robot à l’aide Commande d’une carte DE2 avec FPGA Altera
Réalisé par : S. J. M. E. H. S. EL O. Encadrées par : Pr. M. C.
Sommaire INTRODUCTION
page 4
…………………………………………………………………………
1. ANALYSE FONCTIONNELLE ................................... .................................................... .................................. .................................. .................................. .................... ... page 5 ................................................... .......................... .......... page 6 1.1. Expression fonctionnelle du besoin (LE BETACORNE) ................................... .................................................... .................................. ................................. .................................. ................................... ..................... .... page 7 1.2. GRAFCET ................................... 2. DEMARCHE , OUTILS ET MATERIELS UTILISES ................................. .................................................. ................................... .......................... ........ page 8 ................................................. ................................... ........................... ......... page 9 2.1. Démarche de mise au point du programme ................................ ................................................. .................................. .................................. ................................. ................. page 10 2.2. Outils et matériels utilisés ................................. 2.2.1 La carte FPGA ................... ......... ................... .................. .................. ................... ................... .................. .................. ................... .................. ................ ........ page 10 2.2.2 Langage Langage utilisé : VHDL ................... ......... ................... .................. .................. .................. .................. ................... ................... .................. ............ ... page 11 2.2.3 Logiciel : Xilinx. ................... ......... ................... .................. .................. ................... ................... .................. .................. ................... .................. ............. ..... page 11 3. REALISATION DU PROJET : .................................. ................................................... .................................. .................................. .................................. ................. page 12 ................................................. .................................. ................................... .................................. ................................ ............... page 13 3.1. Le Programme ................................. ................................................. .................................. .................................. ................................ ................ page 16 3.2. Test Bench et simulation ................................. ................................................. .................................. .................................. ................................ ................ page 18 3.4. Implémentation et essais ................................. CONCLUSION ................................. .................................................. .................................. .................................. ................................... ................................... ......................... ........ page 19 BIBLIOGRAPHIE ............................... ................................................. ................................... .................................. ................................... .................................. ...................... ...... page 20 PROGRAMMES
COMPLETS
............................... ................................................. ................................... .................................. ................................... ...................... .... Annexes Annexes
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
2
Introduction : Un
mini projet en première année est très important, dans le sens où il permet aux élèves de développer leurs connaissances en apprenant de nouvelles techniques dans un contexte inspiré de celui existant en milieu professionnel. Notre mini projet consiste à commander un robot suiveur de ligne à l’aide d’une carte DE2 av ec FPGA Altera programmée en VHDL. Le robot, ayant 4 capteurs (photodiodes) détectant les limites du chemin préétabli, est sensé suivre cette ligne sans dérailler et s’arrêter à son extrémité.
Ce projet nous a permit d’acquérir des connaissances relatives au monde de la robotique et à la conception d’un système autonome que nous prévoyons d’exploiter en réalisant d’autres projets aussi ambitieux et innovants. Ce rapport présentera les étapes et démarches suivies tout au long de la réalisation de notre projet, débutant par une étude fonctionnelle et aboutissant aux essais pratiques tout en passant par des processus de programmation et de simulation.
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
3
Analyse Fonctionnelle
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
4
1.1 Expression fonctionnelle du besoin : Diagramme Betacorne :
Utilisateur
Trajet
Robot Suiveur de ligne
Suivre un parcours préétabli de façon autonome
Voici une manière simple de lire ce diagramme ; il répond à trois questions : - A qui le produit rend-il service ? Le produit rend service à l’utilisateur . - Sur quoi agit le produit ? Le produit agit sur le trajet qu’il doit parcourir en suivant la ligne jaune bordée en noir. - Dans quel but ? Dans le but de suivre un parcours préétabli de façon autonome .
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
5
1.2 GRAFCET : Pour faciliter l’écriture de notre programme, nous avons essayé d’établir le GRAFCET suivant afin de prévoir tous les états possibles du fonctionnement du robot.
Vd=0
0
Vg=0
Vd=1
Vg=1
Vd=1 Vg=0
1
2
Vd=0 Vg=1
3
Légende : Ag : capteur arrière gauche. Ad : capteur arrière droit. Dd : capteur devant droit. Dg : capteur devant gauche. Vd : vitesse de la roue droite. Vg : vitesse de la roue gauche.
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
6
Démarche, Outils Et Matériels utilisés
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
7
2.1 Démarche de mise au point du programme : Afin d’écrire le programme qui rendra le robot autonome nous avons suivi la démarche suivante :
Edition
Compilation
Simulation
Implémentation
Essai
Saisie du programme en langage VHDL grâce à Xilinx.
Traduction du langage VHDL en code machine (fait par le compilateur de Xilinx)
Vérification du fonctionnement du programme: - établissement du test bench - simulation avec le simulateur de Xilinx.
Implémentation du programme validé en simulation sur l’FPGA De la carte DE2.
Vérification réelle du fonctionnement.
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
8
2.2. Outils et matériels utilisés : 2.2.1 La carte DE2 avec FPGA Altera: Le robot est commandé par une carte DE2 décrite comme suit : Le processeur et son environnement sont intégrés dans un circuit logique programmable (FPGA) Cyclone II 2C20 d'Altera qui comprend 18000 cellules d'éléments logiques (LE), 240 kbits de RAM et 315 ports d'entrée sortie. Nous utilisons le kit de développement DE2 d'Altera , qui dispose d'afficheurs 7 segments à LED, de boutons poussoirs, d'une horloge à 50 MHz, de connecteurs d'entrées et sorties logiques, présenté à l’image suivante :
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
9
2.2.2Langage adopté : VHDL : VHDL est un langage de description matériel destiné à représenter le comportement ainsi que l'architecture d’un système électronique numérique. Son nom complet est VHSIC Hardware Description Language. L'intérêt d'une telle description réside dans son caractère exécutable : une spécification décrite en VHDL peut être vérifiée par simulation, avant que la conception détaillée ne soit terminée. En outre, les outils de conception assistée par ordinateur permettant de passer directement d'une description fonctionnelle en VHDL à un schéma en porte logique ont révolutionné les méthodes de conception des circuits numériques, ASIC ou FPGA.
2.2.2. Logiciel utilisé : ISE 9.2 XILINX : L'outil xilinx project navigator permet la synthèse du code vhdl (avec XST) et son implémentation (PAR). XST génère une netlist au format edif (ou similaire ngo) qui n'est autre que la structure au niveau composants (vue RTL).Cette netlist ainsi que le fichier de contrainte sert de base à l'outil de placement & routage (PAR).
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
10
Réalisation du Projet
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
11
3.1 Le programme en VHDL : D’après le Grafcet déjà présenté, nous avons adopté lors de notre programmation une machine Mealy à quatre états, autrement dit, les 4 étapes du grafcet. Les entrées sorties du robot sont : Entrées : - clk : entrée d'horloge. - reset : entrée de remise à zéro. - Ad, Ag, Dd, Dg : capteurs devant et arrières du robot. Sorties : - Vd, Vg : vitesses des roues du robot.
L’architecture est composée de 3 « process » :
Le premier sert à affecter à l’état actuel l’état final à chaque front montant de l’horloge, ou à lui affecter l’étape initiale s’il y a une remise à zéro.
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
12
Le second sert à affecter l’étape future selon l’état des capteurs.
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
13
Et le troisième sert à définir les actions à effectuer par le robot selon l’état définie.
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
14
3.2 Test Bench et Simulation : Après avoir synthétisé le programme nous sommes passées à la simulation en générant un test bench avec les séquences suivantes :
Ci-dessous une capture de la simulation réalisée:
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
15
3.3 Implémentation et essais : La tâche d’implémentation est bien plus conséquente que la phase de synthèse. C’est pourquoi nous avons veillé à valider le fonctionnement du système en simulation avant de lancer cette tâche. Elle a effectivement prit un temps important, et a été suivie par plusieurs essais pratiques.
Cette image montre que le robot tourne à gauche avec sucès.
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
16
Ci-dessus le robot tourne à droite.
Le robot s’arrête effectivement au bout du chemin comme prévu. Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
17
Conclusion : Commençant par l’analyse puis la conception et finissant par la réalisation notre projet a abouti au bon fonctionnement du robot, et ce grâce a l’encadrement précieux de notre professeur et à nos efforts et engagement. La réalisation de ce mini-projet nous a beaucoup appris que ce soit sur le plan professionnel, par de nouveaux acquis en matière de programmation et conception, ou sur le plan personnel, en s’entrainant à la gestion des conflits de l’équipe et du stress des difficultés rencontrées. Aussi nous avons développés des compétences qui nous serons utiles tout au long de notre cursus, et même dans toute notre vie.
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
18
Bibliographie: - Polycopié du cours de VHDL 2011, M. Khallaayoune, INPT. - Manuel des Tps en VHDL 2011, M. Khallaayoune, INPT. - Manuscrit auteur, publié dans « Le 8e colloque CETSIS » Grenoble : France (2010).
Webographie: www.robotek.com www.scribd.com http://www.rennes.supelec.fr
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
19
Annexes
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
20
Programme VHDL :
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; entity robot is Port ( Dg,Dd,Ag,Ad: in STD_LOGIC; clk,reset : in STD_LOGIC; Vd,Vg : out STD_LOGIC); end robot; architecture Behavioral of robot is type etape is (etape0,etape1,etape2,etape3); signal etape_finale,etape_actuelle : etape; begin process(reset, clk) begin if RESET='1' then etape_actuelle<=etape0; elsif rising_edge(CLK) then etape_actu elle<=etape_finale; end if; end process; process (Dg,Dd,Ag,Ad,RESET,etape_actuelle) begin if reset='1' then etape_finale<=etape0; else case etape_actuelle is when etape0 => if (Dg= '0'and Dd= '0' and Ag='0' and Ad= '0') then etape_finale<= etape1; else etape_finale<= etape0; end if; when etape1 => if (Dg= '0' and Dd='0' and Ag='1' and Ad ='0') then etape_finale<= etape2; elsif (Dg='0' and Dd='0' and Ag='0' and Ad='1') then etape_finale<= etape3; elsif ((Dd and Dg) ='1') then etape_finale<= etape0; else etape_finale<= etape1; end if; when etape2 => if (Dg='0' and Dd='0' and Ag='0' and Ad='0') then etape_finale<= etape1; elsif ((Dd and Dg) ='1') then etape_finale<= etape0; else etape_finale<= etape2; end if; Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
21
when etape3 => if (Dd='0' and Dg='0' and Ag='0' and Ad='0') then etape_finale<= etape1; elsif ((Dd and Dg) ='1') then etape_finale<= etape0; else etape_finale<= etape3; end if; when others => etape_finale<=etape0; end case; end if; end process; process (etape_actuelle) begin case etape_actuelle is when etape0=> Vd<='0';Vg<='0'; when etape1=> Vd<='1';Vg<='1'; when etape2=> Vd<='1';VG<='0'; when etape3=> VD<='0';VG<='1'; end case; end process; end Behavioral;
Test Bench : LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.ALL; ENTITY tb_robot_vhd IS END tb_robot_vhd; ARCHITECTURE behavior OF tb_robot_vhd IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT robot PORT( Dg : IN std_logic; Dd : IN std_logic; Ag : IN std_logic; Ad : IN std_logic; clk : IN std_logic; reset : IN std_logic; Vd : OUT std_logic; Vg : OUT std_logic ); END COMPONENT; --Inputs SIGNAL Dg : std_logic := '0'; Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
22
SIGNAL Dd : std_logic := '0'; SIGNAL Ag : std_logic := '0'; SIGNAL Ad : std_logic := '0'; SIGNAL clk : std_logic := '0'; SIGNAL reset : std_logic := '0'; --Outputs SIGNAL Vd : std_logic; SIGNAL Vg : std_logic; BEGIN -- Instantiate the Unit Under Test (UUT) uut: robot PORT MAP( Dg => Dg, Dd => Dd, Ag => Ag, Ad => Ad, clk => clk, reset => reset, Vd => Vd, Vg => Vg ); tb : PROCESS BEGIN clk<='0'; wait for 20 ns; clk<='1'; wait for 20 ns; end process; Ag <= '0', '1' after 50 ns,'0' after 100 ns; Ad <='0', '1' after 250 ns,'0' after 300 ns; Dg <= '0'; Dd <= '0'; reset <='1' ,'0' after 100ns; -- Wait 100 ns for global reset to finish -- wait for 10000 ns; -- Place stimulus here -- wait; -- will wait forever END;
Mini projet : Commande d’un Robot à l’aide d’une carte DE2 avec FPGA Altera. Institut National des Postes et Télécommunications
23