Vous êtes sur la page 1sur 27

Mini-Projet d'Electronique Numrique

LE201
Licence d'Electronique

Hiver 2007

Licence Electronique 2006-2007


Licence Electronique 2006-2007
Introduction
Vous avez dans les mains le texte du mini-projet d'lectronique numrique, LE201.
Dans ce texte il y a 3 parties qu'il vous faut soigneusement lire :

1. Une partie de description du fonctionnement des outils.

2. Une partie qui nonce le mini-projet.

3. Une partie de description de la carte sur laquelle vous allez travailler.

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.

Licence Electronique 2006-2007


Documentation des outils
1 Conguration du compte sous Linux
Cette tape est raliser une fois pour toute.

Lancer un terminal et taper la commande /opt/fpgadv63/Fpgadv/bin/conftuto

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.

3 Ouverture d'un projet

Figure 1: Fentre "Bienvenue dans le monde Merveilleux de Fpga-Advantage"

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.

4 Cration d'un projet


Quand le logiciel est dmarr, une premire fentre s'ouvre permettant de choisir un projet, gure 1.
La premire fois que vous lancer le logiciel, il faut crer un nouveau projet, pour cela cliquez sur le
bouton Create a new Project et ensuite cliquez sur le bouton ok .

Licence Electronique 2006-2007


Figure 2: Fentres de choix d'un projet existant et de cration d'un joli projet

Figure 3: Fentre de rsum des choix du projet et de n de cration d'un projet

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 .

Licence Electronique 2006-2007


Figure 4: Fentre du projet et de la librairie par dfaut

Vous avez cr un nouveau projet avec une librairie par dfaut.


Vous devez voir apparatre, le nom de votre librairie par dfaut avec un symbole qui est un livre
tel qu'en gure 4.

5 Cration d'un chier VHDL

Figure 5: Bouton de cration d'un nouveau chier VHDL

Pour crer un nouveau chier VHDL, slectionnez votre librairie et ensuite cliquez sur l'icne
new sur votre gauche, gure 5.

Licence Electronique 2006-2007


Figure 6: Fentre d'aide la cration de composants VHDL

Figure 7: Fentre de cration d'un composant VHDL

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.

Licence Electronique 2006-2007


Figure 8: Fentre de l'diteur VHDL

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.

Figure 9: Fentre de dmarrage de ModelSim

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.

Licence Electronique 2006-2007


7 Simulation

Figure 10: Fentre principale de ModelSim

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 .

Figure 11: Fentre de visualisation des signaux et des signaux de Modelsim

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 ,

Licence Electronique 2006-2007


Figure 12: Slection des signaux

Figure 13: Mise jour de la fentre de visualisation des signaux

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.

8 Mise en Oeuvre matrielle ou synthse


An de pouvoir programmer la carte Spartan3, il vous faut raliser ce que l'on nomme la synthse de
votre description VHDL, qui permettra ensuite l'aide des outils propritaires de Xilinx de raliser
un chier permettant de programmer le composant spartan3.
Cette synthse est ralise l'aide de l'outil prcision, la dmarche pour utiliser cet outil est
dcrite ci-aprs.

Licence Electronique 2006-2007


8.1 Mise en correspondance entre des entres-sorties des composants et
des broches du circuit physique
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity et_ou_xor is
port(a,b : in std_logic;
s : out std_logic_vector(2 downto 0));

-- Dbut de la mise en correspondance des ports d'entres-sorties


-- avec des broches physique de la carte spartan3

-- Dclaration d'un type mentor_s et des 2 attributs

type mentor_s is array (natural range <>, natural range <>) of character;
attribute pin_number : string;
attribute array_pin_number : mentor_s;

-- Mise en correspondance des signaux s(2), s(1) et s(0)


-- avec les leds LD2, LD1 et LD0

attribute array_pin_number of s : signal is ("L12","P14","K12");

-- Mise en correspondance des signaux a et b avec les interrupteurs


-- SW0 et SW1

attribute pin_number of a : signal is "F12";


attribute pin_number of b : signal is "G12";

-- Fin de la mise en correspondance

end entity et_ou_xor;

architecture flot of et_ou_xor is


begin
s(0) <= a and b;
s(1) <= a or b;
s(2) <= a xor b;
end architecture flot;

Figure 14: Exemple d'aectation des broches du Spartan3 en VHDL

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.

Licence Electronique 2006-2007


Ces lignes sont :

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.

Figure 15: Dmarrage de Prcision

8.2 Synthse avec Prcision


Une fois la mise en correspondance eectue, il est possible de raliser la synthse, pour cela il sut
de slectionner votre composant dans votre librairie et cliquez sur l'icone o il y a les lettres PS sur
fond bleu et noir .
Cela va lancer la synthse en ouvrant une premire fentre, gure 15, dans laquelles vous allez
indiquer quel est le composant que vous dsirez programmer.
Dans cette fentre, vous avez un espace gauche dans lequel sont indiqus des constructeurs de
circuits programmables (Altera, Xilinx, ...), choississez Xilinx et cliquez sur le symbole + encadr
gauche, cela ouvre une liste de composants Xilinx disponibles. Parmi ces composants, slectionnez le
composant SPARTAN3. Quand vous slectionnez ce composant, dans le champ Device droite dans la
fentre apparat une rfrence qui dbute par 3s, allez dans ce champs et cliquez sur la petite che
en bout droite pour acher la liste des Spartan3 disponibles, choississez la rfrence 3s200ft256.
Une fois le composant choisi, cliquez sur le bouton OK en bas droite, cela lance maintenant
l'outil de synthse avec le bon composant.
Une fentre s'ouvre et la synthse est initie, gure 16, la premire phase de synthse est nie une
fois que l'on peut accder aux direntes possibilits de l'outil. Quand cette phase est termine, allez
dans le menu Tools, puis dans le sous menu Set options. Cela ouvre une fentre dans laquelle il
est possible de dnir les options de synthse. Dans cette fentre slectionnez ISE6.3 et cliquez sur

Licence Electronique 2006-2007


Figure 16: Fentre Principale de Prcision

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.

8.3 Programmation du spartan3


La programmation du spartan3 se fait l'aide du programme progXilinx. Pour programmer la

carte, il sut d'appuyer sur le bouton dans la barre des boutons.


Cela lance une fentre, gure 17, dans cette fentre il y a bouton Fichier a Telecharger ,
cliquez sur ce bouton cela vous ouvre une fentre de choix de chier tlcharger, gure 17 et 18.
Choisir votre chier d'extension .bit tlcharger et cliquez sur le bouton open . Vous avez
choisi votre chier et son nom doit apparatre dans la bande reserve cet usage, comme on le voit
sur la gure 18.

Licence Electronique 2006-2007


Figure 17: Fentre de programmation de la carte Spartan3 et de choix de chier tlcharger

Figure 18: Fentre de choix du chier tlcharger

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 .

Licence Electronique 2006-2007


Enonc
Prise en Main de l'environnement de travail :
Additionneur DCB
1. Ouvrez le projet UE201_tuto

2. Dans ce projet il existe une librairie nomme DCB_lib

3. Vous crrez ensuite tous les composants de cet nonc dans cette librairie.

4. Lors de la commande /opt/fpgadv63/Fpgadv/bin/conftuto, un certain nombre de chiers ont


t copi. Ces chiers dcrivent certains composants ncessaires la ralisation de l'additionneur
DCB.

1. Additionneur 1 bit

(a) Compilez le composant additionneur 1 bit qui vous ait fourni.


(b) Testez, en le simulant, ce composant.

2. Mise en Oeuvre additionneur 1 bit


Vous allez mettre en oeuvre l'additionneur 1 bit sur la carte Spartan3.

(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

(a) Vrier le code VHDL du composant additionneur 4 bits fourni.


(b) Simulez le composant additionneur 4 bits.

4. Multiplexeur 1 bit

(a) Vrier le code VHDL du composant multiplexeur 1 bit.


(b) Simulez le composant multiplexeur 1 bit.

5. Multiplexeur 4 bits

Licence Electronique 2006-2007


(a) Dcrivez en VHDL un multiplexeur 2 vers 1 de deux nombres de 4 bits. L'entit de ce
composant se nommera mux2v1_4, les entres se nommeront a4, b4 et sel et la sortie s4.
(b) Testez, en le simulant, votre composant.
6. Additionneur DCB 4 bits
On dsire raliser un additionneur de nombres cods en DCB, pour cela on utilise l'additionneur
4 bits fourni.
(a) Dtecteur de nombre suprieur 10
Soit un nombre binaire cod sur 5 bits, le cinquime bit correspondant une retenue
prcdemment gnre lors d'une addition de 2 nombres de 4 bits.
i. Dterminez une fonction boolenne permettant en fonction des bits du nombre de 5
bits de savoir si il est suprieur ou gal 10.
ii. Dcrivez en VHDL un composant qui renvoie 1 si le nombre de 5 bits en entre est
suprieur ou gal 10, qui renvoie 0 sinon. L'entit de ce composant se nommera
detect10, l'entre se nommera a5 et la sortie s.
iii. Testez, en le simulant, votre composant.
(b) Ajustement Dcimal
An de n'avoir que des nombres cods en DCB, il est ncessaire de raliser un ajustement
dcimal ds lors qu'un nombre est suprieur ou gal 10.
i. L'ajustement dcimal peut se rsumer une addition entre le nombre ajuster et une
valeur constante, dterminez la valeur de cette constante.
ii. Dcrivez en VHDL un composant qui ralise l'ajustement dcimal. L'entit de ce
composant se nommera ad, les entres de ce composant se nommeront a4 et cin, les
sorties se nommeront s4 et cout.
iii. Testez, en le simulant, votre composant.
(c) Assemblage
An de raliser l'additionneur 4 bits DCB, il faut maintenant assembler tous les lments,
pour obtenir un systme correspondant la gure 19.
i. A l'aide de tous les composants dont vous disposez, dcrivez un composant correspon-
dant l'assemblage de l'ensemble du systme. L'entit de ce composant se nommera
add_dcb, les entres se nommeront a4, b4 et cin et les sorties se nommeront s et
cout.
ii. Testez, en le simulant, votre composant.
7. Dcodeur 7 segments
Il y a sur la carte spartan3 4 acheurs 7 segments, ce sont des acheurs composs de 7 segments
de type led, chaque segment pouvant tre allum ou teint indpendamment des autres.
Tous les segments d'un mme acheur sont relis la mme anode.
Pour pouvoir allumer un segment d'un des 4 acheurs, il faut mettre l'anode correspondant
cet acheur la valeur logique '0' et la cathode du segment que l'on dsire allumer la valeur
logique '0'.

Licence Electronique 2006-2007


A B
Cin Additionneur
4 bits

NB suprieur Ajustement
ou gal 10 ? Dcimal

Cout S

Figure 19: Additionneur DCB

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

Figure 20: Chires dcimaux sur un acheur 7 segments

(a) Vriez le code VHDL du composant 7seg fournit.


(b) Compilez et simulez le composant

8. Montage Global

Vous allez maintenant interconnecter l'additionneur DCB avec l'acheur 7 segments.

Licence Electronique 2006-2007


a
a4 s4
b
c
d
add_dcb seg7
e
b4 cout f
g

dizaine

0 an0
1 an1
1 an2
1 an3

Figure 21: Montage Global

(a) Editez le composant global_DCB et vriez le code VHDL.

9. Mise en oeuvre de l'additionneur DCB sur la carte Spartan3

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.

(a) A l'aide de l'outil Prcision faites la synthse de votre montage.


(b) Programmez la carte.
(c) Vriez le bon fonctionnement de votre additionneur sur la carte.

Licence Electronique 2006-2007


Mini-Projet : Rencontre du troisime type
Dans le lm de Steven Spielberg "rencontre du troisime type" qui date de 1977, le contact est tabli
entre des extra-terrestres et des hommes l'aide de squences lumineuses et musicales cr partir de
4 couleurs et 4 sons. Ces squences apparaissent alatoires et sont gnres par les extra-terrestres,
le hommes eux doivent tre capables de comprendre le mcanisme de gnration des squences pour
les rejouer.

Figure 22: Ache du Film Recontre du Troisime Type

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.

Licence Electronique 2006-2007


9 Ralisation d'un contrleur d'achage VGA
La squence lumineuse va tre ache sur un cran VGA. Cet cran va tre divis en quatre parties
gales qui sont

HG : Pour la partie Haut Gauche

HD : Pour la partie Haut Droite

BG : Pour la partie Bas Gauche

BD : Pour la partie Bas Droite

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

Alternance i Alternance i+1 Alternance i+2 Alternance i+3


Figure 23: Achage de la squence

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.

9.1 Contrleur VGA pour une couleur


La premire des choses faire pour pouvoir acher est de gnrer les signaux de synchronisation
de l'cran VGA. L'achage sur un cran VGA est ralis l'aide d'un spot lumineux qui traverse
un cran, comme on peut le voir sur la gure 24. Il est ncessaire ici d'avoir deux signaux de
synchronisation, un signal HS de synchronisation horizontale qui va permettre au spot de passer
d'une ligne une autre, en fait de faire un retour gauche de l'cran. Un signal V S de synchronisation

Licence Electronique 2006-2007


verticale qui va permettre un retour du coin en bas droite de l'cran au coin en haut gauche de
l'cran.

pixel (0,0) pixel (0,639)

640 pixels sont affichs chaque fois


que le spot traverse l'cran

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

Dure Totale Horizontale

Dure d'Affichage Horizontale Dure de retour


temps
"noir aprs la pulsation"" "noir aprs la pulsation"

HS

Signal de Synchronisation "noir avant la pulsation"


horizontal

Figure 24: Principe de l'achage VGA

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.

1. Quel est le composant qui va permettre de mesurer le temps ?

2. En utilisant ce composant, dterminer un systme capable de gnrer HS et V S , vous pourrez


pour cela vous aider de comparateurs et de bascules RS asynchrones.

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 .

Licence Electronique 2006-2007


Symbole Paramtre Synchro Verticale Synchro Horizontale
Temps Horloge Lignes Temps Horloge
TS Dure synchro 16, 7ms 416800 cycles 521 32s 800 cycles
TDISP Dure achage 15, 36ms 384000 cycles 480 25, 6s 640 cycles
TP W Largeur pulsation 64s 1600 cycles 2 3, 84s 96 cycles
TF P Noir avant pulsation 320s 8000 cycles 10 640ns 16 cycles
TBP Noir aprs pulsation 928s 23200 cycles 29 1, 92s 48 cycles

Table 1: Table des dures de synchronisation

TS

TFP
TDISP

TPW TBP

Figure 25: Dure des temps de synchro pour l'achage VGA

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.

5. Compilez et Simulez ce systme.

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

Table 2: 8 couleurs achables sur l'cran

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

Licence Electronique 2006-2007


1. Modiez le systme de synchronisation an d'acher une couleur uniforme sur l'cran.

2. Dcrivez ce systme en VHDL.

3. Compilez-le et simulez le.

4. A l'aide de la documentation de la carte, modiez ce systme pour que les signaux soient
aects aux bonnes broches.

5. Faites la synthse de ce systme.

6. Programmez la carte Spartan3 et vrier le bon fonctionnement de votre systme.

9.2 Contrleur VGA pour 4 couleurs


Une fois que vous savez synchroniser votre cran et acher une couleur, il faut maintenant dcouper
cet cran en 4 zone telles que celles visibles sur la gure 23.
Pour cela il sut de reprer le milieu horizontal et le milieu vertical de l'cran. Il faut modier
le systme de synchronisation pour qu'il repre ces deux milieux.

1. Calculez la valeur du milieu vertical et du milieu horizontal

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.

4. Compilez et simulez votre systme.

5. A l'aide de la documentation de la carte, aectez ce systme les bonnes broches pour les bons
signaux.

6. Faites la synthse de votre systme.

7. Programmez la carte Spartan3 et vrier le bon fonctionnement de votre systme.

10 Ralisation d'un gnrateur pseudo-alatoire


10.1 Dnition d'aprs Wikipdia (http://fr.wikipedia.org/)
Un gnrateur de nombres pseudo-alatoires est un systme qui gnre une squence de nombres
que l'on pense alatoires. Ceux-ci sont approximativement indpendants les uns des autres, et il est
dicile de reprer des comportements de groupe l'intrieur de ces nombres. Par comportements de
groupe, il faut entendre qu'il est dicile de reprer des groupes de nombres qui suivent une certaine
rgle.
Cependant, les sorties d'un tel gnrateur ne sont pas entirement alatoires. Elles s'approchent
toutefois des proprits idales des sources compltement alatoires. John von Neumann insista sur

Licence Electronique 2006-2007


ce fait avec la remarque suivante : " Quiconque considre des mthodes arithmtiques pour produire
des nombres alatoires est, bien sr, en train de commettre un pch ". Les nombres alatoires
peuvent tre produits avec du matriel qui tire parti de certaines proprits physiques (bruit d'une
rsistance par exemple).
La raison pour laquelle on se contente d'un rendu pseudo-alatoire est : d'une part qu'il est
dicile d'obtenir de " vrais " nombres alatoires et que, dans certaines situations, il est possible
d'utiliser des nombres pseudo alatoires, en lieu et place de vrais nombres alatoires. D'autre part
que ce sont des gnrateurs particulirement adapts une implmentation lectronique, donc plus
facilement et plus ecacement utilisables.
Les mthodes pseudo-alatoires sont souvent employes sur des ordinateurs dans diverses tches
comme la mthode de Monte-Carlo, la simulation ou les applications cryptographiques. Une analyse
mathmatique rigoureuse est ncessaire pour dterminer le degr d'ala d'un gnrateur pseudo-
alatoire. Robert R. Coveyou du Oak Ridge National Laboratory crivit dans un article que " la
gnration de nombres alatoires est trop importante pour tre cone au hasard ".
La plupart des systmes pseudo-alatoires essaient de produire des sorties qui sont uniform-
ment distribues. Une classe trs rpandue de gnrateurs utilise une congruence linaire. D'autres
s'inspirent de la suite de Fibonacci en additionnant deux valeurs prcdentes ou font appel des reg-
istres dcalage dans lesquels sont injects le rsultat prcdent aprs une transformation intermdi-
aire. Certains gnrateurs pseudo-alatoires sont dits cryptographiques quand certaines contraintes
sont satisfaites.
Un des systmes pour gnrer des nombres pseudo-alatoires s'appuie sur des automates cellu-
laires, une classication de ce type d'objet a t dcrit par S. Wolfram en 1983 1 .

10.2 Gnrateur de nombres pseudo-alatoire l'aide d'automate Cellu-


laire
Dans le cadre de ce projet vous allez utiliser la gnration de nombres pseudo-alatoires l'aide
d'automate cellulaire simple.

10.2.1 Automate Cellulaire simple


L'automate cellulaire simple consiste en une grille unidimensionnelle de cellules ne pouvant prendre
que deux tats (0 ou 1), avec un voisinage constitu, pour chaque cellule, d'elle-mme et des deux
cellules qui lui sont adjacentes, une cellule voisine de gauche et une cellule voisine de droite.
Chacune des cellules pouvant prendre deux tats, il existe 23 = 8 congurations possibles d'un
tel voisinage.
Pour que l'automate cellulaire fonctionne, il faut dnir quel doit tre l'tat, la gnration
suivante, d'une cellule pour chacun de ces motifs. Il y a 28 = 256 faons direntes de s'y prendre,
soit donc 256 automates cellulaires dirents pouvant tre simuls sur une telle grille.
Ces automates sont boucls, c'est dire que si l'automate a une taille n, la cellule 0 comme
voisin de gauche la cellule n 1, et la cellule n 1 a comme voisin de droite la cellule 0.
1 Si vous voulez en savoir plus sur les automates cellulaires, lire le livre de S. Wolfram "A New Kind of Science"
paru aux ditions Wolfram Media en 2002.

Licence Electronique 2006-2007


Considrons l'automate cellulaire dni par la table suivante qui dnit la valeur de la cellule
centrale l'instant t + 1 en fonction de la valeur de la cellule et de ses cellules adjacentes l'instant
t:

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.

10.2.2 Automate Gnrateur Pseudo-Alatoire


Suivant le principe de l'automate cellulaire dcrit la section 10.2.1, il existe des quations qui
permette d'avoir un comportement pseudo-alatoire tel que dnit la section 10.1.
Une de ces rgles est donn par l'quation boolenne suivante :

c(i) = (c(i 1) + c(i)) c(i + 1)


ici c(i) reprsente une des cellules de l'automate. Pour que cet automate fonctionne il faut qu'il
soit tout d'abord initialis la valeur 1.

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.

4. Compilez et testez votre composant.

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.

11 Ralisation d'un modulateur temporel de l'achage


Dans "Rencontre du troisime Type" la squence semble alatoire et acclre au fur et mesure
du temps, il vous faut donc maintenant pouvoir alterner alatoirement les couleurs et acclrer leur
achage, c'est ce que nous vous proposons de raliser.

Licence Electronique 2006-2007


11.1 Contrleur VGA pour alternance 4 couleurs - 1 couleur
Il faut interconnecter le gnrateur de nombre pseudo-alatoires et le contrleur VGA an de raliser
l'alternance.
Pour viter tout phnomne d'achage hasardeux, il est ncessaire de synchroniser le gnrateur
pseudo-alatoire l'aide d'une horloge qui ait une frquence multiple de celle de l'achage d'une
image 640x480.
Il faut ensuite dterminer un signal priodique, dont la frquence est aussi une frquence multiple
de celle de l'achage d'une image 640x480. Ce signal commandera l'alternance, quant il sera 1,
alors les 4 couleurs seront aches simultanment sur l'cran, quant il sera 0 ne sera ach
l'cran que la couleur dtermine par le gnrateur pseudo-alatoire.

1. Dcrivez en VHDL un systme qui permet cet achage altern.

2. Compilez et simulez votre systme.

3. Aectez les bonnes broches votre systme.

4. Faite la synthse de votre systme.

5. Programmez votre systme sur la carte et vriez son bon fonctionnement.

11.2 Acclration de l'achage


1. Modiez votre systme pour que priodiquement l'alternance d'achage s'acclre, on sup-
posera qu'une fois arriv l'alternance la plus rapide, l'alternance suivante sera la plus longue
pour former ainsi un cycle. On pourra dans un premier temps utiliser un des interrupteurs de
la carte pour passer d'une frquence d'alternance une autre.

2. Dcrivez en VHDL un tel systme.

3. Compilez et Simulez votre systme.

4. Aectez les bonnes broches.

5. Faite la synthse de votre systme.

6. Programmez votre systme sur la carte et vriez son bon fonctionnement.

Licence Electronique 2006-2007


Documentation de la carte

Licence Electronique 2006-2007