Академический Документы
Профессиональный Документы
Культура Документы
NUMERIQUE
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.
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.
Horloge
Fonction Fonction
p n
Combinatoire Combinatoire
Entrées
n Registre q
Calcul d’état Calcul
de l’état des sorties Sorties
futur Etat futur
Etat actuel
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
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.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.
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).
Page 2/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
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.
E=0
E=0 S0=1
Etat 0 S1=1
S0=1
S1=0 Etat 0
E=1
Etat 1
S0=1
E=1 Etat 1
E=1 S1=1 E=1
S0=1
S0=1
S1=0
S1=0
Etat 2
E=0
S0=0
S1=0 Etat 2
E=0
E=0 S0=0
Machine S1=0
de Moore
Machine E=0
de Mealy S0=0
S1=0
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.
Page 3/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
• 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.
• 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.
Page 4/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
Page 5/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
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.
HOR
RAZ Q_F2 S
E
HOR
t
E
t
S
E=0 RAZ=0
RST=0
E=0
Etat 5 Etat 1
S=1 S=0
E=1
E=0
E=0 E=1
Etat 4
S=1 E=1 Etat 2
S=0
Etat 3
E=0 E=1
S=1
E=1
Page 6/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
library ieee ;
use ieee.std_logic_1164.ALL;
entity MAE is
port ( E,RAZ,HOR : in STD_LOGIC ;
S : out STD_LOGIC );
end MAE;
Cliquez sur l'icône "Galaxy" pour démarrer le gestionnaire de projet du logiciel WARP
édité par Cypress.
Galaxy
Page 7/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
SEQUENCEUR
Lorsque la question "Do you want to save the new project" apparaît, cliquez sur le
bouton "Oui".
Page 8/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
Page 9/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
Vous êtes maintenant dans l'éditeur graphique de machines à états et votre écran doit
être conforme à l'image ci-dessous.
Page 10/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
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.
RAZ='0' E='0'
E='1'
S0
S<='0'
E='0'
S<='0'
S1
E='0'
S5 S<='1'
E='1'
E='0'
E='1'
E='0'
S2 S<='0'
E='1'
S4
S<='1' E='1'
S3
S<='1'
E='0'
E='1'
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.
Page 11/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
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.
Page 12/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
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.
Page 13/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
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.
Page 14/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
Cliquez sur "Apply" puis sur "Close". Votre simulateur est maintenant prêt à
fonctionner.
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.
RAZ='0' S<='0'
E='0'
E='1' S<='0'
S0
S<='1'
E='0' Maintenant, la
S1
sortie change
E='0' d'état à l'entrée
dans "la bulle"
S5
E='1'
E='0'
E='1' S<='0'
E='0'
S<='1' S2
S<='1'
E='1'
S4
E='1'
S3
E='0'
E='1'
Page 15/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
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.
10 ET MAINTENANT, A VOUS………
10.1 REALISATION D'UN DE ELECTRONIQUE
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.
Page 16/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
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.
A M
AR AV
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é :.
AV
D
AR GESTION DU
VEHICULE
M
A I
Variables d’entrée :
Page 17/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
Variables de sortie :
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.
T Système L1
séquentiel L2
synchrone L3
H
L4
T H Fonctionnement
Page 18/19
Eric GARNIER pour l'IUFM de Limoges Formation du mercredi 4 mai 2005 au Lycée Georges Cabanis
A) B)
L1 L1
L4 L2 L4 L2
L3 L3
C) D)
L1 L1
L4 L2 L4 L2
L3 L3
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.
Page 19/19