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.

Donner pour chacune des tapes une explication / traduction claire.

Q2.

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

&
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.

Raliser la table de vrit de ce composant

Q3.

Faire une description comportementale de ce composant sans utiliser de process.

Q4.

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.

Raliser le composant ET

Q6.

Raliser le composant NON

Q7.

Raliser le composant OU

Q8.

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

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

g
c

e
d

Figure 2 : Schma du composant et numrotation des segments de l'afficheur

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.

Donner le diagramme dtats du dispositif.

Q3.

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.

Dterminer lquation des sorties : sortie et Etat Futur.

Q5.

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)

640x480, 60Hz

Horizontal (in Pixels)

Vertical (in Lines)

Active Front Sync Back Active Front Sync Back


Video Porch Pulse Porch Video Porch Pulse Porch
640

16

96

48

480

11

31

640x480, 72Hz

31.500

640

24

40

128

480

28

640x480, 75Hz

31.500

640

16

96

48

480

11

32

640x480, 85Hz

36.000

640

32

48

112

480

25

800x600, 56Hz

38.100

800

32

128

128

600

14

800x600, 60Hz

40.000

800

40

128

88

600

23

800x600, 72Hz

50.000

800

56

120

64

600

37

23

800x600, 75Hz

49.500

800

16

80

160

600

21

800x600, 85Hz

56.250

800

32

64

152

600

27

1024x768, 60Hz

65.000

1024

24

136

160

768

29

1024x768, 70Hz

75.000

1024

24

136

144

768

29

1024x768, 75Hz

78.750

1024

16

96

176

768

28

1024x768, 85Hz

94.500

1024

48

96

208

768

36

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.

Comment allez vous raliser larchitecture du bloc div2 ?

Q8.

Comment allez vous raliser larchitecture des blocs compteurs ?

Q9.

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

Signal

Affichage

SW0 SW3
SW4 SW7
SW9
KEY0

Datain
Adress
Write
Clock
Dataout

HEX1
HEX3
LEDG0

Tester votre application sur la platine DE1.

5/5

HEX0