Vous êtes sur la page 1sur 14

Dpartement dlectronique

2ime anne

TP VHDL

BONY Francis PERCHOUX Julien

Chapitre 1 : Table des matires


CHAPITRE 1 : TABLE DES MATIERES ......................................................................................................... 3 CHAPITRE 2 : INTRODUCTION ..................................................................................................................... 4 CHAPITRE 3 : FLOT DE CONCEPTION ........................................................................................................ 5 CHAPITRE 4 : REALISATIONS DE FONCTIONS COMBINATOIRES .................................................... 8 I DECODEUR 7SEGMENTS .............................................................................................................................. 8 I.1 ) MODELISATION DE LA FONCTION ................................................................................................................. 9 I.2 ) IMPLEMENTATION DE LA FONCTION ............................................................................................................. 9 II ADDITIONNEUR 4 BITS .............................................................................................................................. 10 III POUR ALLER PLUS LOIN ..................................................................................................................... 10 CHAPITRE 5 : REALISATION DE FONCTIONS SEQUENTIELLES ...................................................... 11 IV COMPTEUR, DIVISEUR DE FREQUENCE ............................................................................................ 11 V PROGRAMMATION DE MACHINE A ETATS ........................................................................................ 12 VI POUR ALLER PLUS LOIN ..................................................................................................................... 13 CHAPITRE 6 : ANNEXE A.......................................................................... ERREUR ! SIGNET NON DEFINI. I . PRESENTATION DU LOGICIEL ISE ................................................. ERREUR ! SIGNET NON DEFINI. I.1 ) ENTREE DANS LE LOGICIEL .......................................................................... ERREUR ! SIGNET NON DEFINI. I.2 ) EDITEUR DE SCHEMATIQUE .......................................................................... ERREUR ! SIGNET NON DEFINI. I.2.1 : Pour ajouter des composants .................................................................... Erreur ! Signet non dfini. I.2.2 : Pour dplacer un composant .................................................................... Erreur ! Signet non dfini. I.2.3 : Pour relier les composants entre eux ........................................................ Erreur ! Signet non dfini. I.2.4 : Pour ajouter un bus .................................................................................. Erreur ! Signet non dfini. I.2.5 : Pour crer un lment hirarchique (ou macro)...................................... Erreur ! Signet non dfini. I.2.6 : Pour mettre des symboles dentre-sortie dans des schmas .................... Erreur ! Signet non dfini. I.2.7 : Pour vrifier les erreurs de votre shmatique ........................................... Erreur ! Signet non dfini. I.3 ) EDITEUR DE MODULE VHDL ....................................................................... ERREUR ! SIGNET NON DEFINI. II SIMULATEUR ISE SIMULATOR.......................................................... ERREUR ! SIGNET NON DEFINI. III IMPLEMENTATION SUR VOTRE FPGA ET GENERATION DES DONNEES BINAIRES ......................................................................................................................... ERREUR ! SIGNET NON DEFINI. III.1 ) TEST DE LIMPLEMENTATION .................................................................... ERREUR ! SIGNET NON DEFINI. III.2 ) GENERATION DU FICHIER DE PROGRAMMATION (.BIT) DE LA PROM .......... ERREUR ! SIGNET NON DEFINI. CHAPITRE 7 : ANNEXE B .......................................................................... ERREUR ! SIGNET NON DEFINI.

-3-

Chapitre 2 : Introduction
Le but des ces sances de travaux pratiques est dintgrer les diffrentes notions vues en cours concernant lapprentissage du langage VHDL. Ce langage tant fortement utilis dans le monde industriel pour la ralisation des circuits numriques incluant la conception et le test des entits, lenseignement est fortement tourn vers lutilisation du langage pour la synthse. Laspect comportemental utilis en modlisation de systmes numriques sera abord lors de la conception des modules de test (crits aussi en VHDL). Afin de prendre en main le langage et les diffrents outils logiciels que nous devrons utiliser, une prsentation de chacun vous est prsente en annexe. Ils sont tous intgrs dans lenvironnement ISE de Xilinx qui propose la fois diteur de texte, synthtiseur logique, simulateur, implmentation et programmation des composants logiques (FPGA) que nous emploierons. Toutefois, il sera possible au cours des sances dutiliser le simulateur MODELSIM SE de chez MENTOR comme simulateur VHDL (Simulateur utilis dans lindustrie) Ces sances de travaux pratiques sont au nombre de sept. Elles se drouleront en deux parties : La premire partie sera consacre lapprentissage du langage pour la conception de circuits numriques et la mise en place dentit de test. Ainsi nous verrons comment le VHDL permet la substitution des quations logiques pour mettre en uvre des circuits numriques combinatoires et squentiels. La deuxime partie utilisera le VHDL pour concevoir un automate numrique grant des feux de circulation sous la forme dun mini-projet. Pour vrifier matriellement les diffrentes entits dveloppes ( lexception des modules servant au test), une carte dvaluation intgrant un FPGA SPARTAN III de chez Xilinx vous est propose. Une prsentation de cette dernire vous est fournie dans lannexe B.

Chaque binme rentra un rapport de type industriel sur le mini projet. La notation tiendra compte des diffrents fonctionnements raliss lors des travaux pratiques et du rapport sur le mini-projet. Ce rapport devra contenir : - Une vue densemble du systme. - Les rponses au cahier des charges. - Les simulations. - Les codes sources en annexe.

-4-

Chapitre 3 : Flot de conception


Lutilit du langage VHDL est double pour le concepteur. Le mme langage permet : - De modliser les systmes numriques. - De concevoir ces mmes systmes par le biais de logiciels de CAO ralisant la fonction de compilateur par linterprtation du code VHDL en un circuit numrique. Cette tape restreint lutilisation du langage en un ensemble dit VHDL synthtisable , partie du langage o le synthtiseur peut interprter la description souhaite en un circuit logique. Ainsi ce mme langage est utilis pour dvelopper des circuits mais aussi pour mettre en place les modules de test de ces entits synthtisables . Ainsi ces modules de test ne servent, en gnral, qu gnrer les signaux entrants dans les futurs circuits.

Fig 1 : Flot de conception VHDL

Dans ce flot de conception, on utilise le langage trois niveaux : - il permet la mise en place dun modle comportemental. Nous employons alors toute la gnricit du langage pour tablir un modle abstrait partir des spcifications.

-5-

Avec comme point de dpart une dcomposition hirarchique des besoins, la langage VHDL utilis dit synthtisable permet la ralisation du circuit numrique (utilisation dun synthtiseur). A partir du circuit numrique obtenu, les logiciels de CAO cble ce dernier sur la puce. Cest ltape de placement routage. Suite cette tape, un modle comportemental du circuit rel est obtenu (prise en compte des retards rels), modle dcrit en VHDL (tape automatise), dans le but de vrifier le bon fonctionnement du circuit aprs routage.

Lors de la simulation, les vecteurs de test des diffrentes entres du systme sont aussi dcrits en VHDL. Le logiciel utilis (ISE de chez Xilinx) inclut toutes ces diffrentes tapes afin de programmer ces composants numriques (FPGA).

Fig 2 : visualisation des diffrentes tapes de conception avec ISE

-6-

Pour chaque entit, lutilisateur peut crer un symbole graphique de ce dernier pour raliser un schma de son projet global (ensemble de ces entits). Le logiciel offre une tape de spcification (User Constraints) permettant entre autre de : - spcifier les contraintes temporelles du circuit raliser - spcifier les contraintes spatiales sur la puce (rservation de zone) - spcifier les connexions (pattes de la puce) - Ltape de placement routage (Implement Design) est dcoupe en trois tapes : - La premire (Translate) est la transformation du circuit numrique en lments logiques lmentaires fournis par la puce. En effet, les composants programmables ne disposent pas directement de portes logiques et bascules. Ils ont des blocs logiques configurables que le logiciel doit programmer pour obtenir le circuit numrique de la synthse. Les diffrents retards physiques ne sont pas prsents. - La deuxime (Map) est la prise en compte des diffrents retards d au cblage des diffrents blocs logiques programmable. - Enfin la dernire tape (Place and Route) tient compte aussi des connexions avec les pattes du composant. Le concepteur dispose alors des retards rels du cblage du systme. Une analyse de la consommation est aussi propose. A chacune de ces tapes un modle comportemental dcrit en VHDL est disponible afin de simuler le circuit rel obtenu pour vrifier chaque fois le bon fonctionnement du systme par rapport aux spcifications. En dernire tape, le logiciel fournit un fichier de programmation permettant dimplmenter le systme numrique dans la puce. Ce fichier binaire agit sur la mmoire SRAM de configuration du composant. Dans nos cartes dvaluation, nous venons programmer une mmoire EEPROM externe contenant le fichier de configuration (fichier .mcs). Ainsi la mise sous tension, cette mmoire va configurer le FPGA.

-7-

Chapitre 4 : Ralisations de fonctions combinatoires


Nous allons voir comment nous pouvons dcrire des circuits logiques combinatoires en VHDL. Nous proposerons ici de raliser deux fonctions : - un dcodeur 7 segments. - un additionneur 4 bits.

I Dcodeur 7segments
Nous souhaitons raliser un dcodeur 7 segments afin de pouvoir piloter les afficheurs disponibles sur la carte dvaluation. Nous disposons de 4 digits. La table de vrit de la fonction raliser est la suivante :

Fig 3 : Table de vrit et exemple de valeur affiche sur les 4 Digits 7segments

-8-

Le point dp est affich lorsque sa valeur est ltat bas.

I.1 ) Modlisation de la fonction


A partir de cette table, crivez en VHDL une entit rpondant au cahier des charges dsir. Cette entit dcode la valeur en binaire que lon souhaite voir sur lun des 4 afficheurs slectionns. Nous ne proccupons pas ici du caractre synthtisable ou pas du code que nous crivons. Nous vous proposons lentit suivante : entity decode is Port ( valeur : in std_logic_vector(3 downto 0); A : out std_logic; B : out std_logic; C : out std_logic; D : out std_logic; E : out std_logic; F : out std_logic; G : out std_logic); end decode; La donne valeur est la donne binaire afficher. Afin de simuler cette entit, dvelopper une entit de type test bench afin de vrifier le bon fonctionnement de votre dcodeur.

I.2 ) Implmentation de la fonction


Au vu du fonctionnement de lafficheur, il est ncessaire de venir slectionner lafficheur que vous voulez afficher. Cela est propre la carte cible que nous avons. Nous vous fournirons lentit qui servira commander les afficheurs. Il vous suffira de faire une description structurelle au sein de cette entit pour venir inclure votre entit dcodeur . Le nom de lentit fourni est afficheur . Afin de vrifier sur le composant FPGA votre dcodeur, il est possible de venir programmer ce dernier. Au pralable il sera ncessaire de : - effectuer la synthse de votre circuit (transformation de votre entit VHDL En circuit logique. - Assigner les ports de votre entit sur les pattes du composant (les connexions sont fournis dans lannexe 1, documentation de la carte). Pour effectuer la synthse il suffit deffectuer un clic droit sur synthesize puis run. Modifier le code de votre entit sil y a besoin. Cela peut signifier que votre description dun dcodeur en code VHDL nest pas transformable en un circuit logique (pas synthtisable ). Pour assigner les pattes aux E/S de votre entit, il suffit de cliquer sur assign package pins . Une interface saffiche ; vos E/S apparaissent. Remplissez le champ LOC pour location ou

-9-

emplacement en franais. Le logiciel va vous crer un fichier .UCF. Sauvez en sortant de linterface la fin de votre saisie. Nous devons ensuite gnrer le fichier .BIT de programmation du composant. Cela se fait en effectuant un clic droit sur Generate Programming File puis run. Tout le flot de conception va seffectuer automatiquement. Ayant le fichier, utilisez en annexe la description du logiciel IMPACT pour programmer le composant. Enfin, vrifier le bon fonctionnement de votre dcodeur par un enseignant.

II Additionneur 4 bits
On se propose de raliser la fonction suivante :

A B
Fig 4 : Additionneur 4 bits

R Cout

Pour dcrire cet additionneur, vous utiliserez dans une premire version des instructions concurrentes, puis dans une deuxime description, un PROCESS . Dvelopper pour cette entit un module de test. Ayant deux architectures, vous testerez sparment les deux types dadditionneur. Utiliser les boutons type glissire comme vecteurs dentre, et les Leds comme vecteurs de sortie lors de son implmentation (flot identique celui du dcodeur). Faire vrifier son bon fonctionnement sur la cible par un enseignant.

III Pour aller plus loin


Ayant un additionneur 4 bits, il est possible partir de ce composant de venir effectuer une multiplication dentier de 4 bits. A partir dune analyse de lopration, c'est--dire la dcomposition de la multiplication par une suite dadditions, dvelopper une entit qui ralise la multiplication de deux entiers cods en binaire sur 4 bits. Il sera demander de mettre en place une entit de test avant de mettre en uvre votre entit sur la cible. - 10 -

Chapitre 5 : Ralisation de fonctions squentielles


Les fonctions squentielles se discernent des fonctions combinatoires par la notion dtat o, pour faire voluer le systme, il est ncessaire de connatre dans quel tat se trouve le systme. Cela est matrialis de deux faons : - Par lutilisation de mmoires sauvegardant ltat du systme (machine tats par exemple). - Par la mise en place dun rebouclage des sorties sur les entres. Nous allons raliser trois fonctions squentielles : - Compteur, diviseur de frquence. - Une machine tats. - Un systme anti-rebonds.

IV Compteur, diviseur de frquence


La carte FPGA sur laquelle nous travaillons intgre un quartz qui gnre une horloge fonctionnant la frquence de 50Mhz. Nous souhaitons raliser une horloge de 1Hz.

50MHz 1Hz rst


Fig 5 : Compteur, diviseur dhorloge

Lentre rst est une entre dinitialisation permettant de forcer le systme dans un tat de dpart dit tat initial . Un signal dhorloge est un signal priodique pas forcment avec un rapport cyclique de . Dcrivez une architecture qui ralise ce systme. Vous raliserez ensuite une entit de test validant le fonctionnement du compteur. Synthtiser le compteur et analyser les erreurs obtenues (sil y a en). Modifier le code si ncessaire. Pour implmenter ce systme, on utilisera une entre sur un bouton poussoir pour lentre rst . Lentre dhorloge 50MHz est la sortie du quartz qui est connecte sur la broche T9. Programmer le compteur sur la cible et faites vrifier le bon fonctionnement par un enseignant. - 11 -

V Programmation de machine tats


Un compteur peut tre vu comme une machine tats particulire o lvolution du systme est systmatique sans conditions. La structure dune machine tats comporte 3 blocs logiques :

Fig 6

: Structure dune machine tats

Un premier bloc combinatoire qui calcule ltat futur en fonction de ltat prsent et des entres du systme. Un registre dtat cadenc par une entre spciale qui est lhorloge du systme, met jour ltat du systme. Il mmorise ltat actuel du systme en lactualisant des instants prcis. Enfin un troisime bloc combinatoire calcule les sorties du systme en fonction : - que de ltat prsent. On obtient une machine de Moore. - de ltat prsent et des entres .On a une machine de Mealy. Programmer la machine tats suivante dont lentit sera : entity machine is Port ( clk : in std_logic; rst : in std_logic; sens : in std_logic; Q : out std_logic_vector(3 downto 0)); end machine; Le graphe dtat est le suivant :

- 12 -

E0 Sens=0 E1

0001 Sens=1 0010

Sens=0

Sens=0 E2 0100

Sens=1

Sens=1

Sens=0 E3 1000

Sens=1

Fig 7 : Machine tats

Lentre rst est une entre asynchrone plaant le systme dans son tat de dpart ou dinitialisation qui sera pour nous ltat E0. Cette remise zro du systme sera active lorsque rst correspond un niveau logique bas. Vous proposerez ensuite un module de test afin de vrifier le bon fonctionnement. Afin de visualiser sur la cible le comportement, nous utiliserons un signal dhorloge dont la frquence est fixe 1Hz. Mettre en place une entit comportant les deux entits, compteur gnrant lhorloge et la machine tats. Implmenter ce systme sur la cible. Modifier le code de votre machine tat lors de la synthse si ncessaire. On visualisera les sorties du systme sur les Leds prsentes sur la carte. Les choix des autres entres (RST et Sens) sont laisss lapprciation du concepteur.

VI Pour aller plus loin


Dans les systmes numriques, les entres de type asynchrones, ralises techniquement par des boutons lectromcaniques peuvent causer des disfonctionnements si des prcautions ne sont pas prises par le concepteur. En effet le contact mcanique, du fait de son effet ressort, peut gnrer des rebonds. Ils peuvent durer pendant plusieurs millisecondes. Dans les systmes numriques o lon utilisait des composants discrets, ces circuits dit anti-rebonds taient raliss par lemploi de bascule RS et cellule RC, mettant en uvre un monostable.

- 13 -

Avec les composant actuel, il est ncessaire de programmer une entit en VHDL filtrant les rebonds du bouton poussoir. Sachant que les boutons poussoirs et glissires que nous avons sur la carte cible ont des rebonds qui durent 2 ms, raliser cette fonction anti-rebonds en VHDL. Lentit aura pour entre sortie le symbole suivant :
Bp_r Bp_s_r clk
Fig 8 : Entit BP_sans_rebonds

Pour mettre en uvre cette fonction, il est conseill : - de mettre en place une machine tats car nous devons prendre en compte la fermeture du bouton et louverture. - De temporiser 2 ms. Il est possible de dvelopper une entit compteur qui aurait une entre rst qui initialiserait ce compteur et qui le bloquerait. La sortie du module sera connecte une broche du composant afin de pouvoir vrifier si les rebonds ont disparus. Dvelopper un module de test avant dimplmenter la fonction.

- 14 -