PLD Proteus

March 28, 2018 | Author: pintorls | Category: Vhdl, Digital Technology, Digital & Social Media, Electronic Engineering, Electronic Design


Comments



Description

SIMULATIONNUMERIQUE AUTOUR DE PLDS SOUS PROTEUS SAISIE DE MACHINES A ETATS, GENERATION DE FICHIERS JEDEC, SIMULATION SOUS WARP PUIS MIGRATION VERS PROTEUS VSM 1 INTRODUCTION Cette première journée de formation va vous permettre de vous familiariser avec l'outil de conception graphique "Active HDL FSM" intégré à l'environnement de développement pour composants logiques programmables, WARP de Cypress. A travers différents exercices, vous allez apprendre à générer des fichiers de description en langage VHDL à partir de machines à états dessinées sous "Active HDL FSM". Puis, après simulation sous WARP, vous génèrerez des fichiers "JEDEC" et les rendrez compatibles avec PROTEUS. Enfin, après saisie des différents schémas sous PROTEUS, vous procéderez à la validation du bon fonctionnement de vos machines à états par simulation autour d'un composant logique programmable de type 22V10. 2 LES MACHINES SYNCHRONES A NOMBRE FINIS D’ETATS (D'après un travail réalisé par Patrick Cohen à l'IUFM de Toulouse en 1999) Une machine à états (M.A.E.) en anglais Finite State Machine (F.S.M.) est un système dynamique, qui peut se trouver, à chaque instant, dans une position parmi un nombre fini de positions possibles. Elle parcourt des cycles, en changeant éventuellement d’état lors des transitions actives de l’horloge. L’architecture générale d’une machine à état est présentée ci- dessous. Fonction Combinatoire Calcul de l’état futur Registre d’état Fonction Combinatoire Calcul des sorties Horloge Entrées Etat futur Sorties p Etat actuel n n q Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 2/19 2.1 HORLOGE, REGISTRE D’ETAT ET TRANSITIONS Le registre d’état, piloté par son horloge, constitue le cœur d’une machine à états. Les autres blocs fonctionnels sont à son service. 2.1.1 LE REGISTRE D’ETAT Il est constitué de n bascules synchrones. Son contenu représente l’état actuel de la machine. Il s’agit d’un nombre codé en binaire sur n bits. L’entrée du registre d’état constitue l’état futur, celui qui sera chargé lors de la prochaine transition active de l’horloge. Le registre d’état est la mémoire de la machine. La taille du registre d’état fixe le nombre d’états accessibles. Si n est le nombre de bascules, le nombre d’états N = 2n. 2.1.2 L’HORLOGE Le rôle de l’horloge est de fixer les instants où les transitions entre états sont prises en compte. Entre deux fronts consécutifs de l’horloge, la machine est figée en position mémoire. 2.2 LES DIFFERENTES ARCHITECTURES Suivant la façon dont les sorties dépendent des états et des commandes, on distingue deux types de machines à états : les machines de Moore et les machines de Mealy. Dans les premières les sorties ne dépendent que de l’état actuel (la liaison en trait interrompue est absente), pour les secondes les sorties dépendent de l’état actuel et des entrées (la liaison en trait interrompu est présente). 2.3 OUTILS DE DESCRIPTION Si l’outil d’analyse et de synthèse des fonctions combinatoires est la table de vérité, le diagramme de transition constitue l’outil privilégié pour l’analyse et la synthèse des fonctions séquentielles. 2.3.1 LE DIAGRAMME DE TRANSITION • On associe "une bulle" à chaque valeur possible du registre d’état. • L’évolution du système est représentée par des flèches représentant les transitions. • Pour qu’une transition soit activée il faut que les trois conditions suivantes soient vérifiées : 1. Le système se trouve dans l’état "source" considéré 2. La condition de réalisation sur les entrées est vraie 3. Un front actif de l’horloge survient Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 3/19 Pour les machines de Moore les sorties évoluent après l’activation de la transition. Les valeurs des sorties seront représentées dans les cases du diagramme. Pour les machines de Mealy les sorties évoluent après l’évolution des entrées. Les valeurs des sorties seront représentées sur les flèches du diagramme. 2.3.2 DU DIAGRAMME AUX EQUATIONS Le passage du diagramme de transition aux équations est indispensable pour synthétiser la machine à états avec des circuits standards. L’outil permettant le passage exhaustif du diagramme aux équations est la table de transitions et d’états. C’est une table de vérité constituée : • en entrée : de l’état actuel du registre d’état des entrées de la machine à états • en sortie : de l’état futur du registre d’état des sorties de la machine à états Les équations des sorties du registre d’état sont ensuite adaptées au type de bascules utilisées. Comme pour les fonctions combinatoires la complexité du problème croit de façon exponentielle avec le nombre d’états et le nombre d’entrées. Etat 0 S 0 =1 S 1 =0 Etat 1 S 0 =1 S 1 =1 Etat 2 S 0 =0 S 1 =0 E=0 E=1 E=0 E=1 E=0 Etat 0 Etat 1 Etat 2 E=0 S 0 =1 S 1 =1 E=1 S 0 =1 S 1 =0 E=0 S 0 =0 S 1 =0 E=1 S 0 =1 S 1 =0 E=0 S 0 =0 S 1 =0 Machine de Moore Machine de Mealy Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 4/19 2.3.3 DESCRIPTION VHDL Le langage VHDL offre de multiples possibilités pour traduire le fonctionnement d’une machine à états. Nous ne nous intéresserons qu’à la description comportementale. D’une façon générale, seules seront envisagées les fonctions séquentielles synchrones. Le processus qui décrit le fonctionnement d’une machine à états comporte deux structures imbriquées : le traitement des commandes et le traitement de l’état de départ de chaque transition. • Les commandes se prêtent bien à une modélisation par des structures hiérarchiques de connues de type : if … elsif … else … end if. • Les états se prêtent bien à une modélisation en terme d’aiguillage par les structures de type : case … when … when others … end case. Le registre d’état est matérialisé par deux éléments : • Un signal interne de type bit_vector ou integer déclaré de façon à être codé sur n chiffres binaires. • Un processus, activé par le seul signal d’horloge qui est l’unique endroit où le signal d’état subit une affectation. 3 QUELQUES RAPPELS SUR LE GAL22V10 3.1 BROCHAGE Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 5/19 3.2 MACRO-CELLULES DE SORTIES 3.3 STRUCTURE INTERNE Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 6/19 4 PREMIERE REALISATION : SYNTHESE D'UN SEQUENCEUR 4.1 ANALYSE DU CAHIER DES CHARGES On désire réaliser une fonction dont la sortie S recopie l’état logique présent sur son entrée E si celle-ci est restée stable après 2 coups d’horloge successifs. L’entrée RAZ a été rajoutée afin que l’état initial du système soit défini. De façon plus générale, Un système séquentiel doit toujours être initialisé. De plus, cette initialisation doit être asynchrone. 4.2 TRACE DES CHRONOGRAMMES 4.3 REPRESENTATION DU DIAGRAMME DE TRANSITION. HOR RAZ E S Q_F2 HOR E S t t t Etat 0 S=0 E=1 E=0 E=1 E=0 RST=0 Etat 1 S=0 Etat 2 S=0 Etat 3 S=1 Etat 4 S=1 Etat 5 S=1 E=1 E=1 E=1 E=1 E=0 E=0 E=0 E=0 RAZ=0 Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 7/19 4.4 DESCRIPTION EN LANGAGE VHDL library ieee ; use ieee.std_logic_1164.ALL; entity MAE is port ( E,RAZ,HOR : in STD_LOGIC ; S : out STD_LOGIC ); end MAE; architecture COMPORTEMENT of MAE is signal REG_ETAT : STD_LOGIC_VECTOR(2 downto 0); process (HOR,RAZ) begin if RAZ='0' then REG_ETAT <= "000"; elsif (HOR’event and HOR='1') then case REG_ETAT is when "000" => S = '0' ; if E = '1' then REG_ETAT <= "001"; else REG_ETAT <= "000"; end if ; when "001" => S = '0' ; if E = '1' then REG_ETAT <= "010"; else REG_ETAT <= "000"; end if ; when "010" => S = '0' ; if E = '1' then REG_ETAT <= "011"; else REG_ETAT <= "000"; end if ; when "011" => S = '1' ; if E = '1' then REG_ETAT <= "011"; else REG_ETAT <= "100"; end if ; when "100" => S = '1' ; if E = '1' then REG_ETAT <= "011"; else REG_ETAT <= "101"; end if ; when "101" => S = '0' ; if E = '1' then REG_ETAT <= "011"; else REG_ETAT <= "000"; end if ; when others => REG_ETAT <= "000"; end case ; end if ; end process ; end COMPORTEMENT ; 4.5 LANCEMENT DU LOGICIEL WARP A l'aide du gestionnaire de projet de WARP, nous allons maintenant réaliser le séquenceur décrit ci-dessous puis effectuer une simulation sous PROTEUS à partir du fichier JEDEC généré après compilation de la machine à états. Cliquez sur l'icône "Galaxy" pour démarrer le gestionnaire de projet du logiciel WARP édité par Cypress. Galaxy Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 8/19 Ouvrez un nouveau projet en sélectionnant "New" dans le menu "File" du gestionnaire de projets. Sélectionnez l'option "Project [Target-Device]" et cliquez sur OK. Cliquez sur VHDL, nommez votre projet "SEQUENCEUR", choisissez le répertoire C:\Cypress\TP1 comme répertoire de sauvegarde et cliquez deux fois sur le bouton "Suivant". Choisissez dans la catégorie des "SPLD's", le composant cible soit un PALC22V10D- 15PC puis cliquez sur le bouton "Terminer". Lorsque la question "Do you want to save the new project" apparaît, cliquez sur le bouton "Oui". SEQUENCEUR Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 9/19 5 TRACE DE LA MACHINE A ETATS ET COMPILATION Sélectionnez l'outil "Active-HDL FSM" dans le menu "Tools" du gestionnaire de projets pour lancer l'éditeur graphique de machines à états. Sélectionnez l'option "Use HDL Design Wizard", cliquez sur OK puis sur le bouton "Suivant". Sélectionnez l'option VHDL et cliquez sur le bouton "Suivant". Nommez votre machine à états "SEQUENCEUR" et à l'aide du bouton "Browse", sélectionnez le répertoire de sauvegarde "C:\Cypress\TP1". Puis, cliquez sur le bouton "Suivant". Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 10/19 Choisissez les entrées et les sorties de votre machine à états conformément à la figure ci-dessous puis cliquez sur le bouton "Suivant" et enfin sur le bouton "Terminer" après avoir sélectionné l'option "One" indiquant que vous désirez dessiner seulement une machine à états. Vous êtes maintenant dans l'éditeur graphique de machines à états et votre écran doit être conforme à l'image ci-dessous. Pour une meilleure lisibilité du code généré, il est préférable de remplacer le mot "sreg" par MAE (pour Machine à Etats). Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 11/19 A l'aide de l'outil graphique FSM, vous allez maintenant saisir la machine à états qui vous permettra de générer automatiquement le code VHDL décrivant fonctionnement de votre séquenceur. La figure ci-dessous représente la machine à états que vous allez devoir saisir à l'aide de l'outil FSM. S0 RAZ='0' S5 S4 S3 S2 S1 E='1' E='1' E='1' E='1' E='1' S<='1' S<='1' S<='1' S<='1' S<='1' S<='1' S<='0' S<='0' S<='0' S<='0' S<='0' S<='0' E='0' E='0' E='0' E='0' E='0' E='0' E='1' Recopiez la machine à états représentée ci-dessus. Cliquez sur "HDL Code Generation" dans le menu déroulant "Synthetis" pour générer le programme codé en langage VHDL relatif à votre machine à états. Répondez oui à la question "Do you want to see the generated code". L'indication "0 errors" doit apparaître en bas de votre écran. Dans le cas contraire corrigez les erreurs contenues dans votre "diagramme à bulles" et regénérez le code VHDL. Comparez le code généré avec celui attendu et décrit lors de la présentation du séquenceur puis faîtes le lien avec la machines à états que vous venez de tracer. Fermez l'éditeur de texte et réduisez l'outil graphique de saisie de machines à états. Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 12/19 6 COMPILATION DU CODE VHDL GENERE PAR LA MAE A l'aide de l'outil graphique FSM, vous venez de générer le programme, codé en langage VHDL relatif au séquenceur décrit dans le cahier des charges. Il vous reste maintenant à intégrer le code VHDL dans le gestionnaire de projet Galaxy et à le compiler pour générer un fichier au format JEDEC implantable dans un composant logique programmable de type 22V10 et un fichier VHDL contenant les "stimulis" permettant de simuler le fonctionnement du séquenceur réalisé à l'aide de l'outil de simulation "Active-HDL sim". Cliquez sur l'option "Add Files" dans le menu déroulant "Project". Intégrez le code VHDL généré précédemment dans le gestionnaire de projet en cliquant deux fois sur "SEQUENCEUR.vhd" puis sur le bouton OK. Le fichier " SEQUENCEUR.vhd" doit maintenant être intégré au gestionnaire de projets conformément à la figure ci-dessous. Vous pouvez visualiser le listing VHDL en cliquant deux fois sur "SEQUENCEUR.vhd". Votre écran doit maintenant être conforme à l'image ci-dessous. Il vous reste maintenant à compiler votre projet en appuyant sur la touche F7 ou en cliquant sur l'icône représentée ci-dessous. Vous retrouvez le code VHDL généré précédemment. L'éditeur VHDL de WARP affiche les instructions en bleu, les variables en noir et les commentaires en rouge. Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 13/19 Le bas de votre écran doit maintenant être conforme à l'image ci-dessous. 7 VERIFICATION DE LA CONFORMITE AVEC LE CAHIER DES CHARGES PAR SIMULATION Il est maintenant indispensable de vérifier la conformité du fonctionnement de notre séquenceur avec le cahier des charges par simulation. L'environnement WARP de Cypress met à votre disposition un outil de simulation extrêmement performant qui permet de simuler en temps réel le fonctionnement d'un composant logique programmable. Sélectionnez l'outil "Active-HDL Sim" dans le menu "Tools" du gestionnaire de projets pour lancer le simulateur intégré à l'environnement WARP. Cliquez sur l'option "Open VHDL" du menu déroulant "File" et ouvrez le fichier "SEQUENCEUR.vhd" qui se trouve dans le répertoire C:\Cypress\TP1\vhd. Cliquez sur l'option "Add signals" du menu déroulant "Waveform" et cliquez deux fois sur les signaux HOR, RAZ, E et S. La partie gauche de votre écran doit maintenant être conforme à l'image ci-dessous. Il vous faut maintenant indiquer au simulateur que l'entrée HOR est l'entrée d'horloge de votre compteur et régler sa fréquence et son rapport cyclique. Cette annotation vous indique que la compilation du projet a été réalisée avec succès. Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 14/19 Cliquez sur le mot "hor" situé dans la colonne "Name" pour le sélectionner. Cliquez ensuite sur l'option "Stimulators" du menu déroulant "Waveform" et réglez la fréquence du signal d'horloge à 1MHz conformément à la figure ci-dessous. Cliquez sur le bouton "Apply" puis deux fois sur le mot "raz" situé dans la colonne "Name" du simulateur. Complétez la boîte de dialogue conformément à la figure ci- dessous en respectant l'emplacement des espaces. Cliquez sur le bouton "Apply" puis deux fois sur le mot "e" situé dans la colonne "Name" du simulateur. Complétez la boîte de dialogue conformément à la figure ci- dessous en respectant l'emplacement des espaces. Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 15/19 Cliquez sur "Apply" puis sur "Close". Votre simulateur est maintenant prêt à fonctionner. Choisissez un pas de simulation de 800ns puis lancez la simulation afin de vérifier la conformité de vos chronogrammes avec le cahier des charges en actionnant régulièrement la touche "E" de votre clavier Si vous avez fixé le type "séquentiel" pour la sortie S, vous devez constater un problème de fonctionnement : En fait, le cahier des charges n'est pas respecté. La sortie S ne prend pas en compte le changement d'état de l'entrée E au troisième front d'horloge mais au quatrième. Pour corriger ce problème, vous devez modifier votre machine à états conformément à la figure ci-dessous ou fixer le type "combinatoire" pour la sortie S. S0 RAZ='0' S5 S4 S3 S2 S1 E='1' E='1' E='1' E='1' E='1' S<='0' S<='0' S<='0' S<='0' E='0' E='0' E='0' E='0' E='0' E='0' E='1' S<='1' S<='1' S<='1' S<='1' S<='1' S<='1' S<='0' S<='0' Recompilez votre machine à états et relancez la simulation pour valider la conformité de votre nouveau séquenceur avec la cahier des charges. La copie d'écran ci-dessous montre le fonctionnement du séquenceur après modification de la machine à états. Si le fonctionnement de votre séquenceur est parfaitement conforme au cahier des charges, vous pouvez maintenant fermer l'outil de simulation et l'outil graphique de saisie de machines à états. Maintenant, la sortie change d'état à l'entrée dans "la bulle" Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 16/19 8 GENERATION DU FICHIER JEDEC Nous allons maintenant procéder à l'affection des broches d'entrée et sorties sur le GAL 22V10 et modifier le fichier JEDEC généré de manière à le rendre compatible avec PROTEUS. A partir du gestionnaire de projet Galaxy, ajoutez l'instruction : attribute pin_numbers of sequenceur:entity is "HOR:1 RAZ:2 E:3 S:23"; après la déclarations des entrées et sorties dans l'entité du programme SEQUENCEUR.vhd. Relancez la compilation en actionnant la touche F7. Vérifiez le "Pinout" et le taux d'utilisation du PLD dans les fichiers de sortie générés généré lors de la compilation. 9 SIMULATION SOUS PROTEUS VSM Procédez à la saisie du schéma structurel du séquenceur sous Proteus VSM. Lancez la simulation. Que constatez-vous ? Modifiez le fichier JEDEC de manière à le rendre compatible avec Proteus et relancez la simulation. 10 ET MAINTENANT, A VOUS……… 10.1 REALISATION D'UN DE ELECTRONIQUE On se propose de réaliser un dé électronique avec affichage à LEDs. Il devra être équipé d’un bouton poussoir noté BP et de 7 leds notées D1 à D7. Tant que le bouton poussoir BP est appuyé, le dé parcourt un cycle de 6 états à "grande vitesse" (suffisamment vite pour ne pas être distingué par un œil humain). Dès que le bouton poussoir BP est relâché, le dé s’arrête dans l’un des 6 états du cycle. Les 6 états du cycle sont les suivants : Etat 1 Etat2 Etat 3 Etat 4 Etat 5 Etat 6 Le repérage des LEDS sera effectué comme suit : de gauche à droite et de haut en bas, D1, D2..D7. La led centrale est donc D4, la led en bas à droite est D7. Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 17/19 Travail demandé Créez un nouveau projet sous Galaxy, tracez la machine à états sous "Active-HDL fsm", simulez votre projet sous "Active-DDL-sim" puis validez le bon fonctionnement de votre projet sous Proteus VSM. 10.2 L'ABEILLE BALADEUSE (D'après une idée originale de Louis Reynier, enseignant en BTS SE au lycée Cabanis) Une abeille-jouet à roulettes pour enfants se présente sous la forme suivante : Un moteur à courant continu entraîne les roues de l’abeille. Une commande par relais permet d’inverser le sens de rotation du moteur par inversion de la polarité. L’abeille est équipée d’un capteur à l’avant (Capteur AV) et d’un capteur à l’arrière (Capteur AR). Ces capteurs sont en fait de simples boutons poussoirs. L’appareil est équipé de 2 boutons poussoirs sur le dos de l’abeille : un bouton poussoir qui active le fonctionnement de l’abeille (Bouton poussoir M) et un qui permet de l’arrêter (Bouton poussoir A). La gestion du véhicule est assurée par un système séquentiel synchrone embarqué :. Variables d’entrée : • AV : Bouton poussoir Avant : à 1 si un obstacle est présent • AR : Bouton poussoir Arrière : à 1 si un obstacle est présent • M : Bouton poussoir Marche : à 1 si le Bouton poussoir est appuyé. • A : Bouton poussoir Arret : à 1 si le Bouton poussoir est appuyé. AV AR M A D I GESTION DU VEHICULE AV AR M A Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 18/19 Variables de sortie : • D : Commande du moteur dans le sens direct ( à 1 en marche avant) • I : Commande du moteur dans le sens inverse( à 1 en marche arrière) Nota : Véhicule arrêté D=0 et I = 0 Le fonctionnement de l’abeille est le suivant : Dès que l’utilisateur appuie sur M (M=1), l’abeille se met en marche avant. (D=1). Dès qu’un obstacle est détecté à l’avant (AV=1), l’abeille recule (I=1) jusqu’à ce qu’un obstacle soit détecté à l’arrière (AR =1). Le cycle continue jusqu’à ce que l’utilisateur appuie sur A (A=1), le moteur s’arrête (D=0, I=0). Remarque : Quand le véhicule recule, un dispositif mécanique met les roues en position de tourner ; ce qui permet au véhicule de ne jamais rester sur le même parcours. Travail demandé Créez un nouveau projet sous Galaxy, tracez la machine à états sous "Active-HDL fsm", simulez votre projet sous "Active-DDL-sim" puis validez le bon fonctionnement de votre projet sous Proteus VSM. 10.3 UN CHENILLARD AVEC DEUX SENS DE ROTATION (D'après une idée originale de Louis Reynier, enseignant en BTS SE au lycée Cabanis) On se propose de réaliser un système séquentiel synchrone constitué de 2 entrées T et H et de 4 sorties L1, L2, L3, L4 (LEDs): Le principe de fonctionnement devra être le suivant : T H Fonctionnement 0 0 Arrêt en position initiale : Etat A 0 1 Horaire : on parcourt le cycle A,B,C,D,A..( sens horaire) 1 0 Trigo : on parcourt le cycle dans l’ordre A,D,C,B,A..( sens trigo) 1 1 Blocage dans l’état courant (Affichage figé sur A,B,C, ou D) T H Système séquentiel synchrone L1 L2 L3 L4 Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis Page 19/19 Travail demandé Créez un nouveau projet sous Galaxy, tracez la machine à états sous "Active-HDL fsm", simulez votre projet sous "Active-DDL-sim" puis validez le bon fonctionnement de votre projet sous Proteus VSM. LED éteinte LED allumée L3 L1 L2 L4 L1 L2 L4 L3 L1 L2 L4 L3 L1 L2 L4 L3 B) A) C) D)
Copyright © 2024 DOKUMEN.SITE Inc.