Documente Academic
Documente Profesional
Documente Cultură
Comme nous lavons vu, la conception de cartes lectroniques est aujourdhui fortement assiste par
ordinateur.
Le logiciel Quartus II est ddi la programmation des CPLD et FPGA du fabricant Altera ; il permet
la description d'un projet, sa compilation, sa simulation logique et temporelle, son analyse temporelle
et la programmation d'un circuit cible.
Description
graphique
ou textuelle
Simulation
fonctionnelle
Choix du
circuit cible,
simulation
temporelle
Programmation
2 Fonctions de bases
Dans cette partie, nous verrons comment dcrire un projet, effectuer une simulation fonctionnelle,
affecter les entres sorties et programmer notre circuit cible.
Dans un premier temps, nous nous contenterons dimplanter des fonctions logiques de base au sein
de notre FPGA. Quelle que soit la simplicit de notre conception, il est ncessaire douvrir un nouveau
projet
2.1
Ouvrir Quartus II comme nimporte quel logiciel, il prsente alors linterface suivant, comprenant 4
zones ou fentres principales :
Denis Rabast
IUFM Aix-Marseille
1/26
Zone
navigateur
de projet
Zone de travail
Zone
dtat
Zone de messages
une zone navigateur de projet permettant de grer les diffrents fichiers dun projet ;
une zone de travail permettant la synthse du projet ;
une zone dtat (Status) permettant de voir lavancement de la tche en cours ;
une zone de messages.
Aprs louverture du logiciel, un assistant vous permet, aprs une fentre dintroduction, de
commencer configurer vos projets :
Denis Rabast
IUFM Aix-Marseille
2/26
Lassistant permet galement de slectionner des outils EDA (Electronic Design Automotion tools)
autres que Quartus pour la synthse, la simulation ou lanalyse temporelle. Nous nous contenterons
des outils fournis par Quartus. Enfin, la dernire fentre rsume les choix oprs.
Denis Rabast
IUFM Aix-Marseille
3/26
Lorsque lon souhaitera ouvrir de nouveau ce projet ou un autre, on procdera comme suit :
Dans Quartus, un fichier nest rien sil nest pas intgr - et ouvert- dans un projet.
2.2
Dans la feuille qui vient de souvrir, par un clic droit au milieu, insrer le symbole dune
fonction ET deux entres, and2 que lon trouvera dans la bibliothque
primitives / logic
Denis Rabast
IUFM Aix-Marseille
4/26
Placer ensuite deux entres et une sortie avec les composants input et output qui se trouve
dans le rpertoire primitives / pin , ainsi que les fils de liaisons laide de licne Orthogonal
, puis donner un nom aux entrs et sortie en cliquant
Node Tool gauche de la feuille
sur le nom par dfaut, pour obtenir le schma suivant :
A laide de loutil loupe par clic droit ou clic gauche on peut agrandir ou compresser la zone
daffichage.
Sauvegarder ensuite le schma, sous le nom par exemple de fct_ET ; votre schma sera alors
sauvegard sous le nom fct_ET.bdf (pour Block Description File) au sein du projet FL_base qui peut
ventuellement contenir plusieurs schmas ou descriptions diverses, correspondant soit plusieurs
versions dun mme systme, soit des descriptions interdpendantes les unes des autres.
On vrifie alors en slectionnant
longlet Files de la zone
navigateur de projet que
notre fichier est apparu :
Denis Rabast
IUFM Aix-Marseille
5/26
Un projet au sein de Quartus II pouvant grer plusieurs descriptions, il est important de placer celle
sur laquelle on va travailler au niveau le plus lev de la hirarchie du projet, ce qui peut se faire :
- Soit avec Set as Top Level Entity du menu contextuel du fichier concern dans la zone
de navigation ;
- Soit en cliquant dans la page correspondant au schma puis Project > Set as top Level Entity de la barre de menu :
- Soit cliquant dans la page correspondant au schma puis le raccourci clavier Ctrl Shift J.
2.3
Analyse et synthse
On peut ensuite lancer une premire analyse du projet par licne approprie :
Denis Rabast
IUFM Aix-Marseille
6/26
En cas derreur, ouvrir longlet Error dans la fentre de message, faire un double clic sur la
premire erreur, ce qui aura pour effet dafficher en bleu la zone du schma posant problme.
2.4
Simuler
Cette tape va nous permettre de valider le fonctionnement de notre description, dun point de vue
logique uniquement (sans prendre en compte les retards que va introduire le circuit cible). Avant de
simuler, il est ncessaire de prciser les sorties (ici il ny en a quune) que lon souhaite observer, ainsi
que les entres que lon applique.
2.4.1
Cest un fichier graphique o sont dcrits, sous forme de chronogrammes, les signaux dentre, ainsi
que les signaux de sortie que lon souhaite visualiser.
Prciser ensuite la dure de simulation (1 s par exemple), ainsi que le pas de la grille (10 ns par
exemple).
Denis Rabast
IUFM Aix-Marseille
7/26
On insre ensuite les diffrentes entres sorties par un clic droit dans la colonne Name et
Insert :
Dans la fentre qui souvre, cliquer sur Node Finder , puis valider Pin all dans le filtre, et
cliquer sur List : Slectionner ensuite les signaux E1, E2 et S et les faire passer dans la fentre de
droite.
Denis Rabast
IUFM Aix-Marseille
8/26
A laide de loutil loupe par clic droit ou clic gauche on peut agrandir ou compresser la zone
daffichage.
On impose ensuite lallure des entres (ici lhorloge E1 et E2) en cliquant sur le nom du signal, puis en
utilisant les icnes gauche : dfinir des temps ltat 1 ou 0 en slectionnant la zone du
chronogramme concerne par un gliss de la souris bouton gauche enfonc, puis en validant avec
licne approprie, pour obtenir ceci par exemple :
On sauve ensuite le fichier avec un nom vocateur (test_et par exemple) avec une extension .vwf
pour Vector Waveform File .
2.4.2
Attention : dans certaines versions prcdentes de Quartus, le sous menu Simulateur Tools se
trouve dans le menu Tools .
Denis Rabast
IUFM Aix-Marseille
9/26
2.5
Avant de lancer la compilation du circuit, il est ncessaire daffecter les entres sorties aux numros
de broches de notre circuit cible, de sorte tre compatible avec la carte de dveloppement (consulter
lannexe).
Les deux entres seront affectes aux interrupteurs glissire SW0 et SW2 (bornes PIN_N25,
PIN_P25), et la sortie la Del LEDG8 entre les afficheurs (borne PIN_Y12).
Ouvrir lditeur dassignement de broche, zoomer la zone qui nous intresse sur le dessin du circuit
cible, slectionner un nom dentre sortie dans la fentre du bas, cliquer sur le nom, et faire glisser,
partir de la case Node Name , sur le numro de la broche correspondant. Rpter lopration pour
chaque broche.
Remarque : lopration de glisser dposer tant un peu alatoire, commencer le glisser par
une translation horizontale au sein de la case Node Name (le pointeur de la souris doit prendre la
forme dun cercle barr).
Il est aussi possible de faire un double clic dans la case Location pour ouvrir une fentre
permettant de slectionner le numro de broche dsir.
On peut vrifier laffectation des broches soit dans le tableau de la fentre du bas, soit en passant la
souris sur une broche sur le dessin du circuit.
Pour supprimer une affectation, slectionner la broche sur le circuit et appuyer sur Suppr au
clavier.
Remarques : on consultera les annexes et la documentation associes la carte pour connatre le
numro des bornes du circuit affectes aux entres sorties.
Denis Rabast
IUFM Aix-Marseille
10/26
Lorsque lon souhaite maintenir une sortie au NL1, slectionner la broche et accder au sous menu
Reserve dans le menu contextuel (clic droit) puis slectionner loption As output driving
Vcc .
Les sorties non utilises du FPGA sont mise par dfaut au niveau logique 0, mais cette option peut
tre modifie par Assignements Settings Device Devices and Pin Options puis
Unused Pins :
2.6
Compiler le projet
Lors de cette opration, le logiciel va crer les fichiers ncessaires la programmation en dfinissant
lemplacement de chaque fonction logique au sein du circuit cible.
Ouvrir le compilateur et lancer la compilation (cette opration peut aussi se faire en une fois avec
licne Start Compilation .
Attention : dans certaines versions prcdentes de Quartus, le sous menu Compilateur Tools se
trouve dans le menu Tools .
Remarque : le compilateur et le simulateur ayant t ouverts, ils apparaissent comme onglet dans la
fentre de travail, il suffit maintenant de cliquer dessus pour les faire rapparatre.
2.7
Programmer le circuit
Denis Rabast
IUFM Aix-Marseille
11/26
2.8
On pourra ventuellement tester dautres fonctions logiques de base (OU, OU exclusif, NAND etc..)
par la mme mthode.
Par soucis de simplicit, on modifiera uniquement la feuille schma en remplaant la porte ET par une
autre porte.
Tester ensuite une bascule R S avec le schma suivant :
INPUT
VCC
not_S
NAND2
PIN_N23
inst
OUTPUT
PIN_Y12
NAND2
INPUT
VCC
not_R
PIN_G26
inst3
On utilisera en entre les boutons poussoirs KEY0, KEY1 (bornes PIN_G26, PIN_P23) qui sont
imposent un niveau logique 0 lorsquon appui dessus, transformant ainsi notre bascule R S en une
bascule RS.
Tester ensuite un diviseur de frquence par 2, ralis laide dune bascule D (composant DFF de la
bibliothque logic
PIN_AE22
OUTPUT
DFF
PIN_G26
H
PRN
Q
INPUT
VCC
s0
NOT
inst9
CLRN
inst
Tester maintenant un dcompteur binaire, commandant les dels LEDG0, LEDG1, LEDG2, LEDG3
(bornes PIN_AE22, PIN_AF22, PIN_W19 et PIN_V18).
Denis Rabast
IUFM Aix-Marseille
12/26
PIN_AE22
OUTPUT
DFF
PIN_G26
PRN
Q
INPUT
VCC
PIN_AF22
OUTPUT
s0
DFF
DFF
NOT
inst9
CLRN
inst
PIN_W19
OUTPUT
s1
PRN
Q
NOT
PRN
Q
inst11
NOT
inst13
CLRN
inst12
CLRN
inst10
PIN_V18
OUTPUT
s2
DFF
PRN
Q
NOT
inst15
CLRN
inst14
2.9
2.9.1
Dans un premier temps, laffichage de notre chronomtre se fera sur un seul afficheur, puis nous
ferons voluer notre projet vers un affichage sur deux chiffres:
oscillateur
quartz
50 MHz
diviseur
de
frquence
compteur
BCD
dcodeur
BCD / 7 segments
FPGA
La carte DE2 intgre un oscillateur quartz de frquence 50 MHz (borne PIN_N2). Grace un
diviseur de structure similaire au schma que nous venons dimplanter, nous abaisserons la frquence
1 Hz.
Un compteur BCD (Binaire Cod Dcimal) comptera ensuite le nombre de front du signal issus du
diviseur, puis un dcodeur BCD / 7 segments convertira la sortie BCD du compteur en code 7
segment pour commander lafficheur.
Pour synthtiser ces diffrents blocs, nous utiliserons des descriptions prdfinies et paramtrables
intgres au sein du logiciel Quartus II, dsignes sous le terme megafunctions .
2.9.1.1 Synthse du diviseur
Comme nous lavons vu prcdemment, un diviseur de frquence peut tre ralis partir dun
compteur ou dun dcompteur.
Afin de pouvoir simuler les descriptions, nous supposerons dans un premier temps que la frquence
du signal dhorloge est 5 Hz ; le diviseur devra donc diviser par 5 pour fournir en sortie un signal de
1 Hz, son modulo (nombre dtat de sortie du compteur) est donc de 5, et il faut trois bits pour compter
jusqu 5.
Ouvrir un nouveau projet que lon nommera chronometre par exemple (sans accents), puis ouvrir
dans ce projet une feuille graphique sur laquelle on placera un symbole qui sera notre diviseur.
Pour paramtrer ce dernier, on utilisera lassistant de paramtrage :
Denis Rabast
IUFM Aix-Marseille
13/26
s3
Le
compteur
qui
nous
servira
de
diviseur
se
trouve
c:/altera/xx/quartus/librairies/megafunctions/arithmetic/lpm_counter.
dans
la
bibliothque
Configurer alors les 3 bits ncessaire, pour un fonctionnement en compteur uniquement, ainsi quune
sortie de retenue qui passera au niveau logique 1 lorsque le maximum du compteur sera atteint. Il est
possible dafficher les chronogrammes associs aux diffrentes entres sorties choisies, en cliquant
sur Documentation puis Generate Sample Waveforms .
Denis Rabast
IUFM Aix-Marseille
14/26
Placer ensuite des entrs et sorties sur la feuille, effectuer une analyse et synthse.
div
INPUT
VCC
up counter
clock modulus 5
q[2..0]
cout
OUTPUT
OUTPUT
Q[2..0]
C_OUT
inst
Remarques :
- il est possible de choisir le format daffichage (radix) du bus par un double clic sur la ligne du
bus ;
- il est possible de dplier et replier le bus en cliquant sur la croix devant le nom du bus.
Denis Rabast
IUFM Aix-Marseille
15/26
clock modulus 10
C_OUT
cnt_en
q[3..0]
cout
inst2
div
H
INPUT
VCC
up counter
clock modulus 5
q[2..0]
cout
OUTPUT
OUTPUT
OUTPUT
BCD[3..0]
OUTPUT
COUT_BCD
Q[2..0]
C_OUT
inst
On peut remarquer que lhorloge est commune aux 2 composants, ce qui permet dviter les alas de
fonctionnement dus aux temps de propagation de cette horloge. On dit alors que le systme est
synchrone, contrairement au dcompteur que nous avions ralis avec des bascules D, qui lui tait
asynchrone.
Denis Rabast
IUFM Aix-Marseille
16/26
ouvrir le fichier ;
le sauvegarder au sein de votre rpertoire de travail, sans en changer le nom ;
supprimer du projet la version dorigine
Denis Rabast
IUFM Aix-Marseille
17/26
insrer dans la description gnrale le dcodeur qui est maintenant un symbole du rpertoire
projet ;
modifier le nombre de bits du diviseur et son modulo afin de ladapter lhorloge de 50 MHz ;
supprimer les sorties inutiles, placer le bus de commande de lafficheur ;
effectuer une analyse et synthse ( avec un Ctrl Shift J dabord pour tre sr que le projet sur
lequel vous travaillez est bien en haut de la hirarchie) ;
affecter le broches correspondant lhorloge et lafficheur (voir annexe) ;
compiler et programmer le circuit
lpm_counter0
up counter
C_OUT
div
INPUT
VCC
clock modulus 10
DECODEUR
q[3..0]
cout
BCD[3..0]
cnt_en
inst2
up counter
clock 49999999
modulus
PIN_N2
inst1
q[25..0]
cout
inst
SEG[6..0]
OUTPUT
SEG[6..0]
PIN_V13
PIN_V14
PIN_AE11
PIN_AD11
PIN_AC12
PIN_AB12
PIN_AF10
Denis Rabast
IUFM Aix-Marseille
18/26
Modifier maintenant la description pour commander deux afficheurs ; le systme devra tre
synchrone, il faudra donc que tous les compteurs aient la mme horloge, le comptage ntant autoris
par lentre cnt_en que si le compteur de la dcade prcdente a sa sortie cout au niveau
logique 1. On pourra ventuellement faire des simulations (en modifiant le rapport de division du
diviseur).
Denis Rabast
IUFM Aix-Marseille
19/26
Remarques :
- pour obtenir la licence de Quartus II Web Edition , un ordinateur PC quip dune carte
rseau suffit ; le numro (NIC ID) de cette carte vous sera demande en cas dinscription
manuelle ou sera lu lors de la connexion en cas dinscription automatique. La licence ne sera
valable quassocie cette carte rseau.
- pour obtenir la licence de la version complte, une cl matrielle (associe son numro
Software Guard ID ) sera ncessaire ; la licence ne sera alors valide que si la cl matrielle
est connecte lordinateur ; la premire gnration de cl matrielle se connecte sur le port
parallle, tandis que la seconde gnration se connecte sur un port USB, il faut alors installer
un
pilote
disponible
ladresse
internet
suivante :
http://www.safenetinc.com/support_and_downloads/download_drivers/sentinel_drivers.aspx#
- la licence est simplement un fichier texte (ouvrable avec nimporte quel diteur) avec une
extension .dat ; lorsque plusieurs licences sont utilises (dans le cas o Quartus sera
install sur plusieurs PC par exemple), il est possible de les regrouper tous les fichiers licence
en un seul fichier .dat o seront copis les textes associs chaque fichier lmentaire
laide du Bloc Note de Windows par exemple ; attention ne pas utiliser Word pour cette
opration, ce programme introduisant des caractres spciaux rendant le fichier illisible pour
Quartus.
Denis Rabast
IUFM Aix-Marseille
20/26
Quartus ouvre beaucoup de fentre, il est possible de choisir ses fentres par le menu suivant :
Denis Rabast
IUFM Aix-Marseille
21/26
Slectionner USB Blaster [USB-0] dans Curently selected hardware et fermer la fentre par
Close (le cble USB doit tre connect et la carte sous tension):
Denis Rabast
IUFM Aix-Marseille
22/26
Pour ce mode :
- mettre la carte sous tension, la relier au PC par le cble USB via le port USB blaster ;
- placer le commutateur RUN/PROG (bord gauche de la carte) en position RUN ;
- configurer Quartus en slectionnant dans le programmateur le logiciel .sof souhait et en
vrifiant que le mode JTAG est bien celui choisi ;
Denis Rabast
IUFM Aix-Marseille
23/26
Y23
U22
AA25
W24
Y25
V20
AB23
AB25
V22
Y24
AA26
AB26
AA23
AF10
V21
AB24
AC25
AA24
V14
V13
W21
AE11
Y26
AC26
Y22
AD11
HEX3
HEX2
HEX1
HEX0
Denis Rabast
AB12
IUFM Aix-Marseille
AC12
24/26
Denis Rabast
IUFM Aix-Marseille
25/26
entity DECODEUR is
port
(BCD
SEG
end DECODEUR;
-----------
-------------------l
0
l
l
-------------------l
6
l
l
-------------------3
: in
: out
l
l1
l
Zone de commentaire
dcrivant comment doit
tre connect le bus SEG
lafficheur
l
l2
l
larchitecture
architecture ARCH_DEC of DECODEUR is
begin
-- attention les leds s'allument pour une sortie 0
SEG <=
"1000000"
when BCD=0 else
"1111001"
when BCD=1 else
"0100100"
when BCD=2 else
"0110000"
when BCD=3 else
"0011001"
when BCD=4 else
"0010010"
when BCD=5 else
"0000010"
when BCD=6 else
"1111000"
when BCD=7 else
"0000000"
when BCD=8 else
"0010000"
when BCD=9 else
"1111111" ;
end ARCH_DEC ;
Denis Rabast
IUFM Aix-Marseille
26/26