LE201
Licence d'Electronique
Hiver 2007
Ce mini-projet se prpare, il ne faut pas arriver en scance de TP sans avoir une solide ide de
ce que vous voulez mettre en oeuvre. Il faut notamment avoir ralis des schmas des direntes
composants que vous voulez dcrire en VHDL.
Toutes les scances de TP sont obligatoires, une absence doit tre justie au secrtariat. Une
absence injustie aura des consquences sur la note de TP nale.
L'valuation de votre projet aura lieu l'aide de trois critres
Un critre de participation et de matrise des outils lors des scances de TP (15 % de la note).
Une valuation d'un rapport crit que vous remettrez votre enseignant de TP (50 % de la
note).
Une soutenance nale o vous ferez la dmonstration de votre projet et rpondrez des ques-
tions (35 % de la note).
Bon mini-projet,
L'quipe enseignante.
2 Lancement du logiciel
Une fois votre compte congur, pour lancer le logiciel il faut que vous lanciez un terminal et que
dans ce terminal vous tapiez la commande fa_with_ps.
Quand vous lancez le logiciel une premire fentre, gure 1, s'ouvre permettant d'ouvrir un projet,
cochez le bouton Open a Different Project et cliquez sur le bouton OK .
Ceci va vous ouvrir une seconde fentre, gure 2, dans laquelle vous pourrez choisir un des projets
qui existe dj.
Une nouvelle fentre, gure 2, s'ouvre pour congurer votre projet. Dans cette fentre il y a des
champs renseigner qui sont :
Le champ Name of new project o vous donnez un nom votre projet, par exemple un nom
comme UE201.
Le champ Directory in which your project folder will be created , ici vous indiquez
un chemin valide partir de votre racine, par exemple /home/utilisateur/UE201, dans cet
exemple il faut remplacer /home/utilisateur par le chemin menant la racine de votre
compte.
Le champ Name for the default working library , ici vous indiquez la librairie VHDL
de travail (work en anglais) par dfaut, pour la premire scance de TP mettez par exemple
DCB_lib
Une fois ces champs renseigns, cliquez sur le bouton next . Une nouvelle fentre s'ouvre qui
rsume vos choix, gure 3, ici cliquez encore sur le bouton next. Enn, une dernire fentre s'ouvre,
gure 3, dans laquelle vous vrierez que toutes les cases sont dcoches, si oui cliquez sur le bouton
Finish .
Pour crer un nouveau chier VHDL, slectionnez votre librairie et ensuite cliquez sur l'icne
new sur votre gauche, gure 5.
Une fentre, gure 6, d'aide la cration de composants VHDL s'ouvre, dans cette fentre vous
slectionnez dans VHDL views la vue de type combined , vous vriez que la case VHDL'93 est
bien coche, si non vous la cochez. Ensuite vous cliquez sur le bouton next .
Une fentre s'ouvre, gure 7, avec des champs renseigner, qui sont :
Le champ Entity , dans lequel vous indiquez le nom de votre entit, par exemple add1.
Le champ Architecture , dans lequel vous indiquez le nom de votre architecture, par exemple
struct.
Une fois les champs renseigns, vous cliquez sur le bouton finish , l un diteur de texte VHDL
doit s'ouvrir, gure 8, avec de dj pr-crit les librairies par dfaut inclure et les patrons de votre
entit et de votre architecture.
Vous saisissez votre code VHDL dans cet diteur, vous le sauvegardez et une fois ni vous le
fermez.
6 Compilation
Une fois que votre composant est crit. Vous vous positionnez dans votre librairie et vous le slec-
tionnez, ensuite vous appuyez sur l'icne reprsentant un grand M bleu . Ceci pour eet de
compiler votre composant et de lancer la simulation. Lors de la compilation, une fentre appele Log
Window s'ouvre, c'est l que sont rpertories vos erreurs, si il y en a des lignes rouges vous indiquant
l'erreur en question appatront.
Si la compilation est bonne, une autre fentre s'ouvre, c'est la fentre Start ModelSim 5.6-5.8,
gure 9, dans cette fentre vous cliquez sur le bouton ok et cela dmarre le simulateur.
Une fois le simulateur dmarr, gure 10, vriez que votre composant, dans la partie gauche
de la fentre, est bien slectionn. Ensuite dans le menu View du simulateur, choisissez Wave et
ensuite choisissez Signals .
Cela ouvre deux fentres, une fentre Wave , gure 11, et une fentre Signals , gure 11. Dans
la fentre Signals , dans le menu Edit faites Select All , cela slectionne tous les signaux de
cette fentre, gure 12.
Ensuite positionnez le curseur de la souris sur l'un de ces signaux, enn en appuyant sur le bouton
gauche et en le maintenant appuy faites glisser les signaux de la fentre Signals la fentre Wave ,
gure 13.
Vous pouvez fermer la fentre Signals .
Allez maintenant dans la fentre Wave , cliquez sur l'un des signaux et appuyez sur le bouton de
droite de la souris en le maintenant appuy. Un menu droulant apparat, dans ce menu vous pouvez
mettre une valeur constante votre signal en choisissant Force , ou le faire varier comme un signal
priodique carr en choisissant Clock .
En aucun cas vous
Aectez une valeur valide tous vos signaux d'entre.
n'aectez de valeur aux signaux de sortie !. Ensuite, appuyez
sur l'icne reprsentant une feuille de papier avec une che bleue pointe vers le bas, . A
chaque appui sur cet icne vous simulez un pas de temps, ce pas tant par dfaut de 100 ns.
Voil c'est ni. Vous pouvez dornavant dcrire de nouveaux composants.
entity et_ou_xor is
port(a,b : in std_logic;
s : out std_logic_vector(2 downto 0));
type mentor_s is array (natural range <>, natural range <>) of character;
attribute pin_number : string;
attribute array_pin_number : mentor_s;
Une fois crit et test votre composant VHDL, il est ncessaire avant de passer la synthse,
de mettre en correspondance certaines entres-sorties de votre composant et des broches du circuit
spartan3, pour raliser ceci il sut d'utiliser une structure VHDL qui se nomme attribut et dont
l'utilisation est dcrite travers l'exemple de la gure 14.
Dans cet exemple je met en correspondance les entres a et b de mon composant avec les inter-
rupteurs SW0 et SW1 de la carte spartan3 et les sorties s(2), s(1) et s(0) avec respectivement les led
LD2, LD1 et LD0.
Pour eectuer cette mise en correspondance, vous devez obligatoirement crire aprs la dclara-
tion des ports de votre entit et la n de votre entit les lignes qui permettent de dnir les attributs
pin_number et array_pin_number, ces attributs sont ensuites reconnus par l'outil de synthse Pr-
cision pour connecter la bonne broche au bon signal.
type mentor_s is array (natural range <>, natural range <>) of character;
attribute pin_number : string;
attribute array_pin_number : mentor_s;
Ensuite pour chaque signal que vous voulez connecter un port physique, il vous sut d'utiliser
soit l'attribut pin_number pour un signal simple soit l'attribut array_pin_number pour un vecteur
de signaux.
le + encadr gauche. Une liste s'ache slectionnez Integrated Place and Route et vriez que
le choix Generate BitGen File est bien coch. Une fois coch, cliquez sur le bouton Apply puis sur
le bouton OK en bas gauche.
Dans la fentre Prcision cliquez sur l'onglet ISE6.1 gauche et ensuite sur le bouton Place and
Route. Cela est la seconde phase de la synthse et va gnrer un chier avec une extension .bit
permettant de programmer le spartan3.
Une fois cette seconde phase termine, allez dans le menu File et choisir Save Project ensuite
choisir dans le menu File l'item Exit.
La synthse est termine, il sut maintenant de programmer le spartan3.
Il vous sut maintenant d'appuyer sur le bouton Programmation de la Carte pour program-
mer la carte, une fois nie appuyer sur le bouton Quitter .
3. Vous crrez ensuite tous les composants de cet nonc dans cette librairie.
1. Additionneur 1 bit
(a) Ouvrez le chier VHDL de votre composant, et indentiez les lignes qui permettent
de mettre en correspondance les broches du circuit Spartan3 avec les entres-sorties de
l'additionneur 1 bit.
(b) A l'aide de l'outil Prcision faites la synthse de votre additionneur 1bit.
(c) Programmez la carte.
(d) Vriez le bon fonctionnement de votre additionneur sur la carte.
3. Additionneur 4 bits
4. Multiplexeur 1 bit
5. Multiplexeur 4 bits
NB suprieur Ajustement
ou gal 10 ? Dcimal
Cout S
Nous dsirons pouvoir acher sur 1 de ces 4 acheurs le rsultat de l'additionneur DCB, pour
cela il faut tablir les quations boolennes des 7 segments en fonction des 4 bits qui forme un
quartets, la gure 20 donne la correspondance entre un chire dcimal et un caractre ach
sur l'acheur.
a a a a a a a a a a
f b f b f b f b f b f b f b f b f b f b
g g g g g g g g g g
e c e c e c e c e c e c e c e c e c e c
d d d d d d d d d d
0 1 2 3 4 5 6 7 8 9
: Segment Allum
: Segment Eteint
8. Montage Global
dizaine
0 an0
1 an1
1 an2
1 an3
On dsire mettre en oeuvre sur la carte spartan3 le montage global, pour ce faire vous con-
necterez les 4 interrupteurs SW0, SW1, SW2 et SW3 sur l'entre a4, les 4 interrupteurs SW4,
SW5, SW6 et SW7 sur l'entre b4. Vous connecterez l'acheur sept segments reli l'anode
AN0 sur les units rsultantes de votre additionneur. An de visualiser si l'addition a gnr
une dizaine ou non, vous connecterez la led LD0 sur le bit de retenue de l'additionneur.
Nous allons dans ce projet crer des squences lumineuses pseudo-alatoires l'aide de 4 couleurs
rouge, bleu, vert et jaune.
Pour raliser ce projet nous allons procder en plusieurs tapes, il vous ait fourni ici un cahier
des charges dtaill avec des pistes pour vous permettre d'arriver la ralisation du gnrateur de
squences lumineuses pseudo-alatoires.
An de raliser ce projet, le mieux est de le dcouper en sous-tches qui sont :
1. Ralisation d'un contrleur d'achage VGA
2. Ralisation d'un gnrateur pseudo-alatoire
3. Ralisation d'un modulateur temporel de l'achage
Sous FPGA-Advantage, vous crrez une librairie Sequence dans un projet nomm ET que vous
aurez pralablement crez, et vous mettrez tous vos composants dans cette librairie.
La partie HG sera rouge, la partie HD sera verte, la partie BG sera bleue et la partie BD sera
jaune.
Le but nal est d'obtenir l'cran une alternance l'achage entre toutes les couleurs aches
en mme temps et la couleur choisie par le gnrateur pseudo-alatoire, comme reprsente par la
gure 23. Sur cette gure durant les alternances i et i + 2 toutes les couleurs sont aches, et durant
les alternances i + 1 et i + 3 seule la couleur choisie par le gnrateur pseudo-alatoire est ache.
Toutes les alternances ont la mme dure.
HG HD HG HG HD
BG BD BG BD BD
An d'arriver acher, vous allez dcomposer le problme en trois tapes, la premire est d'arriver
acher une couleur sur tout l'cran, la seconde est d'arriver acher 4 couleurs sur l'cran dans
les 4 zones HG, HD, BD et BG et la troisime est d'arriver acher alternativement les 4 couleurs
puis une seule parmi 4 pour cela vous devrez pralablement avoir dcrit un gnrateur de nombres
pseudo-alatoires.
Ecran VGA
Retour du spot :
pixel (479,0) pixel (479,639) Aucune information
n'est affiche durant
ce retour
Courant
Rampe de courant stable : l'information
est affiche pendant la dure de cette
rampe
HS
Les valeurs des temps de synchronisation et d'achage sont donnes par la table 1.
Ces valeurs correspondent un signal de synchronisation, qui a la mme forme pour la synchro-
nisation horizontale et la synchronisation verticale, et qui est reprsent sur la gure 25.
3. Sachant que les temps indiqus dans le tableau 1 sont donns pour une horloge de 25M Hz
et que l'horloge globale de la carte, rcuprable sur la broche T 9, est une horloge de 50M Hz ,
dcrivez en VHDL un systme capable de gnrer une horloge de 25M Hz partir d'une horloge
de 50M Hz .
TS
TFP
TDISP
TPW TBP
4. Dcrivez en VHDL le systme capable de gnrer les signaux HS et V S . Vous ferez attention
aux problmes d'alas (Glitchs) et vous les corrigerez si il y en a.
Pour acher des couleurs sur l'cran, il est ncessaire d'avoir des signaux qui nous indiquent
quelle couleur pour quel pixel, c'est le rle des signaux R, G et B . Pour la carte Spartan3, ces
signaux fonctionnent en tout ou rien et les couleurs que l'on peut gnrer en fonction de la valeur de
ces signaux sont rsumes dans le tableau 2.
R G B Couleur
0 0 0 Noir
0 0 1 Bleu
0 1 0 Vert
0 1 1 Cyan
1 0 0 Rouge
1 0 1 Magenta
1 1 0 Jaune
1 1 1 Blanc
An que l'achage soit bien synchronis, il faut absolument que les signaux R, G et B soit 0
quand le spot lumineux est en dehors de l'cran (priode de retour du spot).
4. A l'aide de la documentation de la carte, modiez ce systme pour que les signaux soient
aects aux bonnes broches.
2. Modiez votre systme de synchronisation an qu'il vous indique ces deux milieux
3. Dcrivez en VHDL un systme capable d'acher 4 couleurs sur l'cran comme visible sur la
gure 23 l'aide de ces informations de milieu.
5. A l'aide de la documentation de la carte, aectez ce systme les bonnes broches pour les bons
signaux.
Valeur de la cellule et des cellules adjacentes (instant t) 111 110 101 100 011 010 001 000
Valeur suivante de la cellule centrale (instant t + 1) 0 0 0 1 1 1 1 0
Cela signie que si par exemple, un temps t donn, une cellule est l'tat 1 , sa voisine de
gauche l'tat 1 et sa voisine de droite l'tat 0, au temps t + 1 elle sera l'tat 0.
1. A l'aide de cette rgle dnir le composant de base ncessaire pour raliser un automate cellu-
laire. Ce composant devra pouvoir tre initialis de faon asynchrone soit 0 soit 1.
2. Dcrivez en VHDL un automate cellulaire de taille 16 (ce qui permet d'avoir une squence
pseudo-alatoire de l'ordre de 216 = 65536) bas sur la rgle dnie prcdemment.
3. A l'aide de votre automate cellulaire de taille 16 dcrivez un composant qui permet de n'avoir
que 2 sorties pseudo-alatoires.
5. Faites la synthse et programmez votre composant sur la carte Spartan3 en mettant les 2 sorties
sur 2 leds.
Ce gnrateur une fois ralis va nous permettre de contrler quelle couleur acher, 1 parmi 4
(rouge, vert, bleu et jaune) sur un cran VGA.