Vous êtes sur la page 1sur 28

Universit de Savoie Module ETRS-511 FPGA & VHDL

Travaux Dirigs
FPGA & VHDL

Sylvain MONTAGNY sylvain.montagny@univ-savoie.fr Btiment chablais, bureau 13 04 79 75 86 86

TD1 : Environnement de dveloppement QUARTUS II TD2 : Synthse de systmes logiques combinatoires TD3 : Synthse de systmes logiques squentiels TD4 : Video Graphic Array (VGA) TD5 : Mmoires RAM

Retrouver tous les documents de Cours/TD/TP sur le site www.master-electronique.com

Universit de Savoie Module ETRS-511 FPGA et VHDL

TD1
Environnement de dveloppement QUARTUS II

1. Gnralits sur la synthse logique


La documentation fournie par ALTERA sur lenvironnement de programmation Quartus II propose les diffrentes tapes pour lorganisation dun projet. Dans le dsordre, les tapes proposes sont :

Functional Simulation the synthesized circuit is tested to verify its functional correctness; the simulation does not take into account any timing issues. Programming and Configuration the designed circuit is implemented in a physical FPGA chip by programming the configuration switches that configure the LEs and establish the required wiring connections. Fitting the CAD Fitter tool determines the placement of the LEs defined in the netlist into the LEs in an actual FPGA chip; it also chooses routing wires in the chip to make the required connections between specific LEs. Synthesis the CAD Synthesis tool synthesizes the circuit into a netlist that gives the logic elements (LEs) needed to realize the circuit and the connections between the LEs. Timing : Analysis and Simulation propagation delays along the various paths in the fitted circuit are analyzed to provide an indication of the expected performance of the circuit. (Analysis). The fitted circuit is tested to verify both its functional correctness and timing. (Simulation) Design Entry the desired circuit is specified either by using a hardware description language, such as Verilog or VHDL, or by means of a schematic diagram.

Notes : LEs : Logic Elements CAD : Computer Aided Design Q1. Q2. Donner pour chacune des tapes une explication / traduction claire. Remplissez lorganigramme suivant reprsentant toutes les tapes.

1/8

2/8

2. Projet sur la platine DE1 ALTERA


La carte lectronique sur laquelle nous allons travailler en TD/TP est la carte DE1 de chez ALTERA. Elle permet de mettre en uvre toute une srie dapplications de tests.

Figure 1 : Carte DE1 de chez ALTERA

2.1. Procdure dinstallation


La procdure implique au minimum linstallation de : QUARTUS II (Web Edition) + registration on ALTERA web Site for 150 days free Web Licence Drivers de la carte DE1 permettant de charger le code dans le FPGA. Aprs installation du kit de dveloppement nous ralisons une application de test extrmement simple. Q1. Expliquer pourquoi les applications permettant de tester le bon fonctionnement de la chane de dveloppement doivent tre trs simple ?

3/8

2.2. Logique combinatoire


Nous allons tester notre platine en ralisant une porte NOR. Les entres A et B seront prises sur linterrupteur SW0 et SW1 La sortie S sera la LED LEDR[0] La documentation de la carte DE1 prcise une connexion de la LEDR[0] avec la broche nomme PIN_R20, SW0 avec la broche nomme PIN_L21, et SW1 avec la broche nomme PIN_L22. Q2. Remettre dans lordre les actions mener pour arriver bout de cette petite application : Q3. Programmer la carte FPGA Tester le fonctionnement de lapplication sur la platine Affecter les broches du composant aux entres / sorties du systme Ouvrir un projet sous le logiciel QUARTUS II (Web Edition) Coder le comportement du composant Dessiner sur papier libre, la table de vrit, le schma lectronique, et/ou le diagramme dtat du systme. Coder la partie ENTITY du systme. Faire les tapes prcdentes que vous pouvez.

A la compilation du code que vous avez cr, on obtient le rapport de compilation suivant :

Figure 2 : Rapport de compilation du projet

Q4. Daprs les caractristiques du FPGA, quel serait selon vous lordre de prix dun composant de ce type pour des faibles quantits. 4/8

Q5.

Expliquer les champs suivants du rapport de compilation : Met timing requirements Total Logic Elements

La section Timing Analyser permet davoir des informations sur les diffrents temps de propagation lintrieur du composant. Dans notre cas simple, nous avons :

Figure 3 : Timing Analyser summary

Q6. A laide de la documentation de Quartus II ci-dessous, expliquer la signification de tpd ?

2.3. Logique squentielle synchrone


Nous allons rajouter la prsence dune horloge dans notre systme. La sortie sera valide seulement sur la prsence dun front montant dune horloge clock . Q7. Donner le schma logique global de cette application ?

Q8. Modifier larchitecture VHDL prcdente afin de mettre en uvre cette nouvelle application.

5/8

Figure 4 : Rapport de compilation du projet en mode synchrone

Q9.

Justifier les parties qui ont volues par rapport au mode combinatoire.

La prsence de lhorloge nous donne aussi une autre version du compilation Report .

Figure 5 : Timing Analyser du projet en logique synchrone

Q10. Expliquer la 5me ligne du tableau.

2.4. Timing Constraints :


La compilation du circuit avec Quartus II nous a fourni une valeur maximale de cadencement du systme (fmax). Cette valeur peut ne pas tre en adquation avec le cahier des charges du produit final. Il est alors possible de prciser au compilateur les contraintes de temps optimiser. Par exemple, dans le systme prcdent, nous pourrions souhaiter un cadencement 400 Mhz au lieu des 380,08 Mhz trouv. La frquence souhaite peut tre slectionne dans : Assignment> Timing Analysis Settings >Classic Timing Analyser Settings

6/8

Plusieurs mthodes sont alors utilisables pour le compilateur puisse trouver le chemin le plus favorable la contrainte fixe. Elles sont slectionnables dans : Assignements>Settings>Fitter Settings. (Ci-dessous)

Figure 6 : Fitter Effort

Figure 7 : Extrait de la documentation sur les possibilits d'optimisation

Q11. Expliquer chacune des 3 mthodes doptimisation qui sont proposes. A la compilation, nous avons ignor un Warning couramment rencontr :

Q12. Expliquer ce Warning et prciser si celui-ci (load capacitance) possde une influence quelconque sur les analyses de temps du systme.

2.5. RTL Viewer


Loutil RTL Viewer (Tool>Netlist Viewers>RTL Viewer) permet dafficher le schma designer par Quartus II et qui sera implment dans le FPGA. Dans notre cas, le schma volontairement incomplet est le suivant :

7/8

Figure 8 : Vue incomplte du schma fourni par le RTL Viewer

Q13. Placer sur le schma tous les lments de la liste hirarchique quil est possible de retrouver.

8/8

Universit de Savoie Module ETRS-511 FPGA et VHDL

TD2
Synthse de systmes logiques combinatoires

1. Diffrentes mthodes de descriptions VHDL


Nous allons tudier diffrentes faons de coder un projet VHDL. Lentit du Top level sera toujours appele appli. Larchitecture sera toujours appele arch_appli. Le schma du systme est le suivant :
a & b 1
1

& c 1
Figure 1 : Schma d'une application

1.1. Description par flot de donnes


Le systme est dcrit par les quations boolennes quil reprsente. Q1. Faire la description VHDL de ce composant.

1.2. Description comportementale


Cette description permet de dcrire le comportement sans faire appel aux quations mais en passant par la table de vrit. Q2. Q3. Q4. Raliser la table de vrit de ce composant Faire une description comportementale de ce composant sans utiliser de process. Faire une description comportementale de ce composant en utilisant un process.

1/3

1.3. Description structurelles


La description structurelle dcrit la fonction partir de composants prexistants. Il suffit de dfinir : La liste des composant utiliss (composant dj crit en VHDL par ailleurs) La liste des interconnexions entres ces composants Q5. Q6. Q7. Q8. Raliser le composant ET Raliser le composant NON Raliser le composant OU Raliser le composant globale en utilisant chacun des composants dj raliss.

2. Transcodeur
On souhaite raliser un transcodeur qui prend en entre un mot BCD (Binaire Cod Dcimal) de 4 bits ABCD (D poids faible) et qui produit les sorties (a b c d e f g) de commande des leds de manire afficher les symboles dcimaux correspondants sur l'afficheur 7 segments.
a b g e d
Figure 2 : Schma du composant et numrotation des segments de l'afficheur

A B C D Transcodeur a b c d e f g

Raliser un dcodeur BCD 7 segments en VHDL. Vous utiliserez un afficheur 7 segments pour lequel un niveau logique bas allume le segment et un niveau haut teint le segment. Les segments seront commands par les combinaisons de 4 entres. Lorsque le code binaire ne reprsente pas un chiffre dcimal, lafficheur reprsentera un E symbolisant une erreur. Q1. Raliser le code VHDL entit et architecture en utilisant une structure WITH, SELECT, WHEN. Q2. Raliser le code VHDL entit et architecture en utilisant une structure avec CASE, WHEN. Lorsque le composant est charg dans le FPGA, le RTL Viewer nous donne limplmentation matrielle suivante :

2/3

Figure 3 : Schma partiel du RTL Viewer

Note : Quel que soit la mthode de codage de larchitecture (process ou instructions concurrentes), la compilation donne le mme schma RTL Viewer. Q3. Expliquer le schma ci-dessus et prciser comment on arrive allumer correctement chaque segment avec cette synthse.

3/3

Universit de Savoie Module ETRS-511 FPGA et VHDL

TD3
Synthse de systmes logiques squentiels

1. Jeu
On veut concevoir un jeu du type Question pour un champion (4 joueurs), laide dune maquette DE1. Lappui sur un bouton poussoir provoque un avertissement sonore (buzzer, commun tous les joueurs) et le blocage du systme. De plus, un signal lumineux (individuel chaque joueur) spcifie le joueur ayant appuy le premier parmi les quatre. Les autres joueurs ne peuvent alors plus intervenir car les autres boutons nont alors plus deffet. Le systme ne peut tre remis zro que par lanimateur laide dune remise zro (Clear). Le buzzer et les 4 signaux lumineux steignent. Q1. Faite un schma lectronique du systme en considrant que vous utiliser la carte DE1. Q2. Q3. Donner le diagramme dtats du dispositif. Ecrivez le programme permettant de raliser cette fonction.

Dans cette version du systme, le buzzer retenti pendant tout le temps, jusqu' ce que le prsentateur appuis sur Clear. Cela peut tre contraignant. Q4. Sachant que nous disposons dune horloge 10 kz pour piloter notre systme squentiel, trouver une ralisation permettant davoir un retentissement du buzzer uniquement pendant 0,5s. Implmenter votre nouveau systme sans modifier le code des questions prcdentes. (Simplement en rajoutant un nouveau composant au systme).

2. Registre dcalage
2.1. Registre dcalage simple
Q1. Construire un systme de registre dcalage 8 bits Parallle>Srie. C'est--dire que les bits du vecteur dentre (8 bits) sont transmis en sortie au rythme dune horloge (front montant) lorsque la commande send est envoye au systme. Un reset (RAZ) asynchrone sera prvu.

1/4

2.2. Registre dcalage liaison srie


Dans les liaison sries, loctet transmis sur la ligne est encadr par un bit de start (niveau bas) au dbut, et un bit de parit + un bit de stop (niveau haut) la fin (cf Figure 1). Q2. Faire le nouveau codage VHDL de la liaison srie.

Figure 1 : Diagramme temporelle de la liaison srie

3. Conception dun encodeur NRZI


On utilise en communications numriques sur ligne cble (paire torsade, cble coaxial) divers codes de ligne pour communiquer en bande de base, cest dire que le signal est transmis tel quel sur la ligne (sans modulation). Ces codes constituent tout simplement une faon de reprsenter les bits transmettre. Ceci permet dobtenir des caractristiques spectrales intressantes et/ou des proprits qui faciliteront la synchronisation au rcepteur. Le code en ligne que nous allons tudier est la code NRZI (Non Return to Zero Inverted) qui est utilis dans le standard USB (Universal Serial Bus). Dans ce code, seuls les 0 gnrent une transition. Ainsi, pour transmettre le message : 0 1 1 0 1 0 0 1 1 0 1 0 , on a la reprsentation suivante :

2/4

Figure 2 : le code en ligne NRZI

Cet encodeur possde un dsavantage majeur : si une trop longue squence de bits 1 successifs est transmise, il ny a aucune transition sur la ligne. Ceci rend la synchronisation entre le transmetteur et le rcepteur impossible. Pour remdier cela, le standard USB prvoit une opration dintercalage de bits (bit stung). En effet, ds quune chane de six 1 est transmise, on intercale un 0 pour forcer une transition. Il est facile denlever ces 0 au rcepteur pour recomposer le message original. Une portion de la chane de communication correspondante est illustre sur la figure suivante :

Figure 3 : Schma de fonctionnement gnral

La source : Elle gnre les bits du message transmettre sur le cble USB. Intercalage de bit: Il doit tre capable de dtecter une squence de 6 1 successifs et de transmettre un message avec les ventuels bits de stuffing . Si un bit de stuffing intervient, la ligne maintien est place 1 pour un coup dhorloge afin de signaler la source quil faut attendre. Ce temps correspond au temps de mettre le bit supplmentaire dans le message. Lencodeur NRZI : Bloc ralisant la fonction NRZI de la Figure 2.

3/4

3.1. Encodeur NRZI


Q1. Donner le graphe dtaill dune machine dtat ralisant seulement le bloc de lencodeur NRZI. On utilisera les variables du schma de la Figure 3. Note : Nous prendrons arbitrairement un tat initiale associ a une valeur de Sortie=0 pour commencer le diagramme dtat. Q2. Donner le code VHDL de lencodeur NRZI avec une architecture code en description comportementale. Q3. Construire le tableau regroupant les tats courants, les entres, les tats suivants et les sorties pour le bloc encodeur NRZI . Q4. Q5. Dterminer lquation des sorties : sortie et Etat Futur. Raliser le schma logique de votre machine dtat.

Q6. Donner le code VHDL de lencodeur NRZI avec une architecture code en flot de donne.

3.2. Intercalage de bits


Q7. Raliser la description VHDL du module intercalage de bits .

4/4

Universit de Savoie Module ETRS-511 FPGA et VHDL

TD4
Video Graphic Array (VGA)
Laffichage vido VGA est un grand standard courant pour laffichage graphique. Il est valable quelque soit la technologie de lcran (cathodique ou LCD).

1. Objectifs :
Nous avons pour objectif de raliser une carte graphique trs simple. Elle permettra au moyen de trois interrupteurs de raliser laffichage des trois couleurs RGV (Red, Green and Blue) ou une combinaison des trois.

2. Le standard VGA
2.1. Prsentation des signaux
Une image est reprsente par des Pixels (Picture Elements). Chaque pixel contient 3 chromophores, un Rouge (Red), un Vert (Green) et un Bleu (Blue). La combinaison des chromophores RBG permet de raliser une infinit de couleur.

1/7

Figure 1 : Reprsentation d'une image l'cran en 640x480

Un signal RGB contient 5 signaux : Une synchronisation horizontale, permet de contrler la position horizontale de limage dans la zone visible de lcran Une synchronisation verticale, permet de contrler la position verticale de limage dans la zone visible de lcran. Un signal analogique pour le Rouge (0 > 0,7V) Un signal analogique pour le Vert (0 > 0,7V) Un signal analogique pour le bleu (0 > 0,7V) Comme le montre la Figure 1, le rafrachissement de limage dbute en haut gauche et se termine en bas droite. Chaque pixel est dfini lune aprs lautre. A la fin de la premire ligne, le compteur des colonnes est remis zro et le compteur de ligne passe 1, etcJusqu que limage soit compltement dfinie. La frquence de limage doit tre de 60Hz afin de rduire la perception du scintillement de limage.

2.2. Les timings du standard VGA


En ralit, dans le mode VGA, le nombre total de ligne et de colonnes est de 800x524 mais seulement 640x480 sont affiches. Cela permet de laisser le temps pour revenir sur une nouvelle ligne ou de recommencer une nouvelle image. Pendant ce temps, (retour la ligne ou recommencement dune nouvelle image), les signaux RGB doivent tre mis zro (couleur noire). Ces temps sont appels : front porch et back porch . Le tableau ci-dessous indique des exemples de timings pour les diffrents standards. Il est important de noter que ces timings ne sont pas critiques et surtout quils ne sont pas des rfrences ! Chaque constructeur peut fournir des temps sensiblement diffrents sans pour autant porter prjudice laffichage. En effet, dans une certaine plage, il est toujours possible dajuster limage droite, en haut, en bas ou gauche grce aux menus de lcran.

2/7

Format

Pixel Clock (MHz)

Horizontal (in Pixels)

Vertical (in Lines)

Active Front Sync Back Active Front Sync Back Video Porch Pulse Porch Video Porch Pulse Porch 640 16 24 16 32 32 40 56 16 32 24 24 16 48 96 40 96 48 128 128 120 80 64 136 136 96 96 48 128 48 112 128 88 64 160 152 160 144 176 208 480 480 480 480 600 600 600 600 600 768 768 768 768 11 9 11 1 1 1 37 1 1 3 3 1 1 2 3 2 3 4 4 6 2 3 6 6 3 3 31 28 32 25 14 23 23 21 27 29 29 28 36

640x480, 60Hz 640x480, 72Hz 640x480, 75Hz 640x480, 85Hz 800x600, 56Hz 800x600, 60Hz 800x600, 72Hz 800x600, 75Hz 800x600, 85Hz 1024x768, 60Hz 1024x768, 70Hz 1024x768, 75Hz 1024x768, 85Hz 31.500 31.500 36.000 38.100 40.000 50.000 49.500 56.250 65.000 75.000 78.750 94.500

640 640 640 800 800 800 800 800 1024 1024 1024 1024

Tableau 1 : Timing de l'ensemble des standards VGA

Dans la Figure 2, compt_h est le compteur des pixels horizontaux, permettant de savoir ou en est laffichage et de gnrer convenablement le signal de synchronisation horizontale.

Figure 2 : Synchronisation horizontale

Q1. Daprs le tableau des timings, complter la variable compt_h de la Figure 2, sachant que nous travaillons en 640x480 60 Hz.

3/7

Figure 3 : Synchronisation verticale

Q2.

Daprs le tableau des timings, complter la variable compt_v de la Figure 3.

Q3. Complter le Tableau 1 en retrouvant la frquence daffichage des pixels (pixels Clock). Nous prendrons une frquence de 25Mhz comme horloge de rfrence de notre systme squentiel. Q4. Dans la figure ci-dessous, retrouver tous les temps du chronogramme.

Figure 4 : Signaux de synchronisation horizontal et RGB

Q5.

Raliser le mme type de schma pour la synchronisation verticale.

3. Ralisation en VHDL
Nous cherchons implmenter le systme de gestion des signaux VGA dans un FPGA. La carte DE1 de chez ALTERA possde en effet un connecteur VGA reli au FPGA. Le brochage de ce connecteur au FPGA est donn dans la documentation. La carte DE1 possde une horloge de 50 Mhz, partir de laquelle nous allons cadencer lensemble du systme.

4/7

Q6. En annexes est prsent un exemple de schma possible pour la ralisation de linterface VGA. Pour chacun des blocs, expliquer son comportement. Q7. Q8. Q9. Comment allez vous raliser larchitecture du bloc div2 ? Comment allez vous raliser larchitecture des blocs compteurs ? Donner le diagramme dtat des deux squenceurs?

5/7

6/7

7/7

Universit de Savoie Module ETRS-511 FPGA et VHDL

TD5
Mmoires RAM
Dans un systme numrique il est souvent ncessaire de fournir une certaine quantit de mmoire afin de stocker et manipuler des variables. Si ce systme numrique est implment base de FPGA, il est possible dutiliser les ressources internes du composant du composant. Si des quantits de mmoire plus importante sont ncessaires, nous devons utiliser de la mmoire externe qui sera pilote par le FPGA. Q1. Quelle quantit de mmoire interne peut intgrer le FPGA de la carte DE1 Altera ?

Q2. A laide du User Manuel fournie avec la maquette DE1, dmontrer la taille de 512 Ko pour la SRAM. Q3. Localiser la mmoire SRAM et la mmoire SDRAM sur la carte DE1.

Lacronyme de SRAM est Static RAM. Lacronyme de SDRAM est Synchronous Dynamic RAM. Q4. En comparant les spcifications des datasheets ci-dessous et des shcmas du User manual des deux mmoires RAM, indiquer les informations qui justifient les principales caractristiques (Static, Synchronous, Dynamic) de chacune des mmoires.

Figure 1 : Features of the SRAM memory

1/5

Figure 2 : Features of the SDRAM memory

Nous nous proposons dimplmenter la mmoire suivante dans le FPGA.

Figure 3 : Mmoire RAM

Q5.

Quelle est la capacit de cette mmoire RAM ?

2/5

1.1. Utilisation de la mmoire interne du FPGA

Figure 4 : Implmentation de la mmoire RAM en interne avec un bloc M4K

Les FPGA Cyclone II comporte des blocs mmoires appels M4K. Chaque bloc mmoire est compos de 4096 bits de mmoire qui peuvent tre configurs pour implmenter de la mmoire de taille variables. Les M4K blocs comportent des registres sur les entres et possdent deux ports diffrents pour lcriture et la lecture des donnes destination, et en provenance de la mmoire. Lorsque nous souhaitons raliser des applications complexes, les structures logiques telles que des additionneurs, des registres, des compteurs, des mmoires peuvent tre implmentes en utilisant les modules LPM depuis les librairies paramtrables de Quartus II. Nous allons utiliser cette librairie pour implmenter la mmoire de la Figure 4. Crer un nouveau projet. Lancer loutil de cration de composant : Tool>MegaWizard Plug-In Mangage>Create a new custom MegaFunction variation Lcran 1 se constitue comme suit (Figure 5):

3/5

Figure 5 : Ralisation de la RAM interne en utilisant le Magawizard manager

Dans lcran 2, slectionner les blocs de mmoire M4K, et slectionner single clock dans Wich cloking method do you like to use ? Dans lcran 3, dslectionner q output port dans la catgorie Wich port sould be registered ? Accepter les options par dfaut des crans suivants.

1.2. Simulation du composant


Modifier le code VHDL produit pour faire correspondre les noms des entres/sorties de notre systme (Figure 4) Compiler le circuit. Vrifier dans le rapport de compilation que les bits ont bien t affects. Simuler le circuit en essayant dcrire et de lire dans la mmoire.

1.3. Test du composant


Nous allons crer une application de test laide dafficheur 7 segments afin de pouvoir visualiser les adresses, les donnes crites et les donnes lues dans chaque emplacement mmoire. Le code de la gestion de lafficheur 7 segments est fourni.

4/5

Crer un nouveau Top-level en schematic (New>Block Diagram/Schematic File) avec votre module RAM et vos afficheurs 7 segments. Pour obtenir un composant partir des fichiers VHDL, vous devez les crer : Clic droit sur le composant (fichier VHDL) puis Create Symbol file for Current file. Raliser un pin assignement qui vous permettra de tester le fonctionnement de la mmoire RAM laide des lments de la platine DE1 :

Entre DE1
SW0 SW3 SW4 SW7 SW9 KEY0

Signal
Datain Adress Write Clock Dataout

Affichage
HEX1 HEX3 LEDG0 HEX0

Tester votre application sur la platine DE1.

5/5