ELE1300 - Circuit logique 1 Laboratoire no 1 ... · ELE1300 : Laboratoire no 1 2 Introduction Au...
Transcript of ELE1300 - Circuit logique 1 Laboratoire no 1 ... · ELE1300 : Laboratoire no 1 2 Introduction Au...
ELE1300 - Circuit logique 1
Laboratoire no 1 : Introduction a la carte DE2
Jean Pierre DAVID
1 Information sur le plagiat
De plus en plus d’information est disponible par voie electronique (ou autre) et il est
parfois tentant d’utiliser un travail realise par quelqu’un de “competent”, quelqu’un qui a
compris, lui, plutot que de faire l’effort de comprendre soi-meme. Ces laboratoires sont des-
tines a vous aider a comprendre la matiere en vous confrontant a des problemes qui vous
feront reflechir, poser des questions, chercher de l’information dans le cours ou ailleurs. Leur
but est avant tout de vous former plutot que de vous evaluer meme si 20% de la note finale
leur est consacree. Si vous prenez le temps de resoudre les problemes par vous-meme, vous
vous assurez les 20% des laboratoires mais aussi une bonne partie des 80% restant car l’eva-
luation finale de ce cours repose essentiellement sur la comprehension des circuits logiques
et la resolution des problemes qui y font appel. Soyez donc competents par vous-meme
et soyez fiers ensuite de reussir par vous-meme.
Par ailleurs, certains plagiats sont detectables et conduisent au minimum a l’annulation
du laboratoire, avec une note au dossier du ou des etudiants impliques. Cela ne vaut pas
la peine ! Quand vous serez sur le marche de l’emploi, vous ne pourrez compter que sur
votre propre expertise car vous aurez a resoudre des problemes dont les solutions n’existent
nulle part sur Internet ou ailleurs. Prenez tout de suite le bon reflexe : celui d’apprendre
et de comprendre par vous-meme. Ceci dit, je vous encourage a utiliser toute information
exterieure qui peut vous aider a comprendre la matiere, mais ne choisissez jamais la voie
de la mediocrite qui consiste a recopier sans comprendre. Votre ambition est de devenir
ingenieur(e) !
1
ELE1300 : Laboratoire no 1
2 Introduction
Au cours de ce laboratoire, vous apprendrez a programmer la carte DE2 c-a-d a implanter
un circuit logique sur celle-ci. Vous apprendrez la base de l’environnement graphique du
programme “Quartus II”, le compilateur pour le FPGA soude sur la carte. Ce programme
vous permet de faire la conception de votre circuit de facon schematique et de le charger
ensuite sur la carte.
3 Preparation du laboratoire
— Lire tout le document.
— Comprendre le fonctionnement des portes logiques de base : OR, AND, XOR, NOR,
NAND, XNOR et preparer les 16 circuits logiques qui sont demandes dans la section 5.
Remarque : il existe de nombreuses manieres differentes d’implementer ces fonctions.
— En cas de difficulte, utilisez les outils de simulation de circuits logiques disponibles a
partir du site du cours.
4 Utilisation du logiciel Quartus II
4.1 Ouverture de Quartus II
Pour ouvrir le programme, allez dans le menu “Demarrer” et choisissez : Programme→Altera → Quartus II 11.0 → Quartus II 11.0 (32 − bits). Une fenetre vous demande de
creer un nouveau projet, fermez celle-ci (croix en haut a droite).
4.2 Espace de travail
La fenetre de Quartus II devrait etre vierge, car il n’y a pas de projet ouvert (Figure 1).
L’espace de travail comporte six parties importantes :
1. La fenetre schematique ou les circuits seront dessines.
2. Le navigateur de projet permet de voir les fichiers, les projets et leur hierarchie.
3. La fenetre de statut vous permet de connaıtre l’etat d’avancement de la compilation
de votre circuit.
4. La fenetre de message vous avertit des erreurs et des avertissements durant la compi-
lation ou la programmation.
5. La barre d’outils avec laquelle vous pourrez compiler vos circuits, les simuler et les
implementer sur la carte DE2.
6. La barre des menus.
Page 2 sur 13
ELE1300 : Laboratoire no 1
Figure 1 – Fenetre d’accueil de Quartus II
4.3 Creation d’un nouveau projet
Pour pouvoir utiliser l’espace de travail, il faut se creer un projet. Pour cela, selectionnez :
File→ New Project Wizard
Passez la premiere fenetre ; dans la seconde indiquez dans quel dossier vous voulez creer
le projet. Quartus II ne creera pas un dossier pour contenir le laboratoire, donc creez-le.
Ensuite, vous devrez ecrire le nom de votre projet et mettre le meme nom pour l’entite qui
englobe les autres (la plus haute du projet). Pour ce projet, utilisez le nom “lab1”. Dans la
troisieme page, il vous est possible d’ajouter des fichiers au projet, si vous voulez en reutiliser.
Pour l’instant, nous n’utiliserons pas cette fonctionnalite. Dans la quatrieme page, vous
devrez specifier le FPGA que vous utiliserez pour le projet. Dans le menu deroulant“Family”,
vous choisissez“Cyclone II”. Dans la liste“Available Devices”selectionnez le modele du FPGA
“EP2C35F672C6”. Dans la cinquieme page, specifiez le logiciel de simulation “ModelSim-
Altera” depuis le menu deroulant, et assurez-vous que le format VHDL est selectionne. Ne
cochez pas l’option “Run gate-level simulation automatically after compilation”. Laissez les
autres outils et formats a leurs valeurs par defaut (<None>). Vous pouvez a present cliquer
sur “Finish”.
Page 3 sur 13
ELE1300 : Laboratoire no 1
Pour que le logiciel puisse identifier comment chaque broche du FPGA a ete connectee
sur la carte de developpement, il faut inclure le fichier “DE2 pins assignments.csv”. Pour
cela, selectionnez :
Assignments→ Import Assignments
Ensuite, indiquez le fichier “DE2 pins.csv” qui vous a ete fournis. Les broches (pins) qui
ne seront pas utilisees dans votre montage devront etre placees en mode “Tri-state”. Au lieu
de les modifier une par une, nous allons le preciser au programme afin qu’il le fasse de maniere
automatique. Allez dans le menu Assignments→ Device. Cliquez le bouton “Device & Pin
Options”, choisissez l’onglet “Unused Pins” et selectionnez “As input tri-stated”.
Vous pouvez a present concevoir votre premier circuit. Il vous faut pour cela creer un
nouveau fichier pour l’y dessiner avec File→ New. Dans l’onglet “Design Files”, choisissez
“Block Diagram/Schematic File”. Il est maintenant possible de dessiner le circuit voulu.
4.4 Presentation de la carte DE2
Quand vous voudrez utiliser la carte, il vous faudra d’abord verifier que l’alimentation
est bien branchee et que la carte s’allume en pesant le bouton de demarrage (rouge, Fi-
gure 2). Dans le bas de la carte, il y a 18 boutons de type “Switch” et 4 boutons poussoir,
nous les utiliserons tout au long de la session. Pour programmer la carte, vous devrez bran-
cher le port USB dans la prise “USB Blaster Port” en haut a gauche a cote de la prise
d’alimentation. La documentation pour la carte DE2 peut etre trouvee dans le repertoire
“Q :\DE\DE2 user manual\DE2 user manual.pdf ”
4.5 Barre d’outils
Dans la barre d’outils schematique (en haut ou a gauche, Figure 3), vous pouvez voir la
fleche qui sert a selectionner les objets. Le “Symbol Tool” vous permet de choisir l’element
que vous voulez inserer dans le circuit tel qu’une porte logique, une entree/sortie ou une
macro-fonction. Le “Orthogonal Node Tool” vous permet de dessiner les connexions entre
vos portes logiques. Le “Orthogonal Bus Tool” vous permet de dessiner un bus (groupe de
fils). Lorsque l’option “Use Rubberbanding” est activee, les fils sont “soudes” lorsque mis en
contact et ils restent relies (aux portes notamment) ensembles lorsque des deplacements sont
appliques aux composants du circuit (evitez donc de la desactiver).
Dans la barre d‘outils (en haut, Figure 3), il y a les boutons classiques de sauvegarde et
d’ouverture de fichier. Le bouton “Simulate” vous permettra de simuler le circuit de votre
schema de facon fonctionnelle ou en considerant les temps de propagation des signaux. Le
bouton “Start Compilation” vous servira a compiler votre circuit pour creer un fichier de
programmation du FPGA. Le bouton “Programmer” programmera le DE2 avec le fichier que
vous aurez selectionne.
Page 4 sur 13
ELE1300 : Laboratoire no 1
Figure 2 – La carte DE2
Figure 3 – Barre d’outils et barre d’outils schematique
Page 5 sur 13
ELE1300 : Laboratoire no 1
4.6 Conception d’un circuit
Apres avoir ouvert votre projet, vous pouvez commencer a concevoir votre circuit. En
choisissant “Symbol Tool”, vous verrez une fenetre apparaıtre. Cliquez sur le dossier “C :/al-
tera/. . ./librairies/” dans la section “librairies”, a droite. Choisissez “primitive” et vous aurez
acces a tous les elements logiques de base. Le dossier “Logic” contient toutes les portes lo-
giques “and”, “or”, “nand” etc. utiles pour le cours. Le dossier “pin” contient, lui, les entrees et
sorties que vous pouvez utiliser conformement au fichier d’assignation que nous avons ajoute
au projet plus tot. Le dossier “storage” contient les differentes bascules que vous verrez plus
tard dans le cours.
Selectionnez le composant dont vous avez besoin et cliquez sur OK. Vous verrez que l’ob-
jet selectionne est attache a votre curseur. A chaque fois que vous cliquerez, il placera une
instance du composant a l’endroit ou il est situe. Pour ne plus placer d’objet, cliquez sur la
fleche dans la barre d’outils a gauche de la fenetre schematique ou pesez sur “escape”. Pour
nommer un composant, double-cliquez sur celui-ci et entrez le nom desire. Pour les entrees
et sorties, il est important de les nommer selon l’assignation que nous avons indique. Pour
les “switchs” le nom est “SW[i]”, ou i represente le numero du bouton sur la carte. Les bou-
tons poussoir, les DELs rouges et les DEL vertes sont a nommer respectivement “KEY[i]”,
“LEDR[i]” et “LEDG[i]”.
Pour vous aider, nous allons realiser un premier circuit. En utilisant deux“switchs”comme
entree, affichez le resultat (“1”ou“0”) des portes OR, AND et XOR. Avec les“switchs”SW[0]
et SW[1] (“0” si elle est abaissee et “1” si elle est levee) affichez le resultat de chacune des
trois portes de base avec les DELs suivantes :
— OR → LEDR[0]
— AND → LEDR[1]
— XOR → LEDR[2].
Commencez par aller chercher les portes logiques dont vous avez besoin ainsi que vos
entrees et sorties (Figure 4). Remarque : le chiffre qui suit le nom de la porte logique indique
le nombre d’entrees de la porte. Il vous faut ensuite connecter les elements ensembles. Utilisez
l’outil “Orthogonal Node Tool” pour effectuer la fonction logique (Figure 5).
Enfin, nommez les entrees/sorties en utilisant les noms definis dans le fichier utilise pour
l’assignation des broches (DE2 pins assignments.csv). De cette facon, Quartus II fera la juste
correspondance entre le schema et les connexions physiques sur la carte. Vous changerez les
noms en double-cliquant sur l’entree ou la sortie (Figure 6). Une fois votre circuit termine
(Figure 7), sauvegardez votre fichier sous le meme nom que votre projet (“lab1”) puis compilez
(Figure 3).
Page 6 sur 13
ELE1300 : Laboratoire no 1
Figure 4 – Portes et entrees/sorties
Figure 5 – En haut : les portes en train d’etre connectees, en bas : les connexions terminees
Figure 6 – Proprietes des entrees et des sorties
Page 7 sur 13
ELE1300 : Laboratoire no 1
Figure 7 – Circuit complete
4.7 Compilation
Pour compiler, pesez sur le bouton “Start Compilation” (Figure 3). Vous pouvez voir
la progression de la tache dans la fenetre “Status”. Pour un petit projet tel que celui-ci,
la compilation ne devrait pas prendre plus de 30 secondes. Au cours de la compilation, de
nombreux messages seront affiches et, a la fin du processus, une fenetre vous indiquera s’il y
a des erreurs dans votre circuit. Si tel est le cas, vous pouvez vous referer aux alertes dans
la fenetre des messages en bas de l’ecran. Si vous n’avez que des avertissements, n’en tenez
pas compte.
Quand la compilation sera terminee, vous pouvez voir un resume de la compilation de
votre projet sur un nouvel onglet. Si vous voulez revenir au schema, cliquez sur l’onglet
“lab1.bdf” en haut de la fenetre schematique, juste sous la barre d’outils.
4.8 Simulation
La simulation d’un circuit logique reproduit le comportement de ce dernier au sein d’un
environnement controle, frequemment denote banc d’essai. Typiquement, il est plus facile de
verifier le fonctionnement d’un circuit dans un environnement controle, et d’autre part, la
compilation requise pour realiser une simulation requiert typiquement moins de temps que
celle requise pour realiser un circuit physique.
Dans un premier temps, il faut specifier a Quartus II l’emplacement de l’outils de si-
mulation Modelsim-Altera. Pour ce faire, faites Tools → Options . . ., puis dans la categorie
“General/EDA Tools Options”tappez “C : \Altera\11.0\modelsim ase\win32aloem′′ (l’op-
tion “parcourir” est inutilisable puisque la lecture du disque C est bloquee).
4.8.1 Creation d’une description VHDL du circuit
L’outil ModelSim permet la simulation de circuits decrits en langages VHDL/Verilog.
Afin de simuler un circuit decrit schematiquement, l’outil Quartus II permet la conversion
automatique vers une description VHDL. Pour ce faire, en vous assurant que le focus est
Page 8 sur 13
ELE1300 : Laboratoire no 1
place sur le fichier “lab1.bdf” puis allez dans :
File→ Create/Update→ Create HDL Design F ile from Current F ile...
Dans la fenetre qui apparait, assurez-vous que l’emplacement du fichier a creer est correct
(repertoire du projet), et que le langage VHDL est selectionne, puis validez.
Nous avons maintenant une description VHDL (“lab1.vhd”) ainsi qu’une description sche-
matique (“lab1.bdf”) d’un meme circuit dans le repertoire de projet. Toutefois, un projet
Quartus II ne peut contenir qu’une seule description d’une meme entite (circuit). Il faut donc
inclure le fichier“lab1.vhd”et exclure“lab1.bdf”du projet. Pour retirer le fichier“lab1.bdf”du
projet, dans l’onglet“File”du navigateur de projet, faites un clic droit sur le fichier“lab1.bdf”
et choisissez l’option “Remove File from Project” du menu contextuel. Pour ajouter le fichier
“lab1.vhd” au projet, dans le menu faites : Project → Add/Remove F iles in Project . . ..
Puis dans le champ de saisie “File name”, indiquez “lab1.vhd” ou allez chercher le fichier en
utilisant le bouton “. . . ”, puis assurez-vous d’appuyer le bouton “add” avant de faire “Ok”
dans la fenetre de “Settings”.
Le fichier “lab1.vhd” devrait ensuite etre present dans la liste de fichiers du projet. Faites
un clic droit dessus pour specifier que ce fichier correspond a l’entite de haut niveau au moyen
de l’option “Set as Top-Level Entity”. Relancez la compilation dans Quartus II.
4.8.2 Description du banc de test
On peut maintenant inclure le banc de tests qui est egalement decrit en langage VHDL
dans le projet Quartus II. Ce fichier se nomme“tb lab1.vhd”. Copiez-le dans le repertoire puis
ajoutez-le au projet. Une fois ajoute, ouvrez-le, et portez attention a la section represente
par la Figure 8, decrivant les stimulations d’entrees par le banc de test.
Cette sequence aura pour effet de stimuler le circuit avec toutes les combinaisons possibles
des entrees SW(0) et SW(1), pendant une duree de 10 ns chacune.
4.8.3 Specification du banc de test
Afin de specifier le fichier de banc de test au logiciel Quartus II, allez dans Assignments→Settings . . . Dans la categorie “EDA Tool Settings”, selectionnez la sous-categorie “Simula-
tion”. Dans“NativeLink settings”cochez“Compile test bench”puis cliquez sur“Test Benches”.
Dans la fenetre qui s’ouvre appuyez sur “New...” pour specifier un banc de test. Reproduisez
la configuration illustree a la Figure 9, en n’oubliant pas d’ajouter le fichier “tb lab1.vhd”
avec le bouton “Add” de la fenetre.
Page 9 sur 13
ELE1300 : Laboratoire no 1
1 -- *** Debut de stimulation des entrees *** --2 SW(0) <= ’0’;3 SW(1) <= ’0’;4 wait for 10 ns;5
6 SW(0) <= ’1’;7 SW(1) <= ’1’;8 wait for 10 ns;9
10 SW(0) <= ’1’;11 SW(1) <= ’0’;12 wait for 10 ns;13
14 SW(0) <= ’0’;15 SW(1) <= ’1’;16 wait for 10 ns;17 -- *** Fin de stimulation des entrees *** --
Figure 8 – Segment de code du banc de test
Figure 9 – Specification du banc d’essai a utiliser pour la simulation
Page 10 sur 13
ELE1300 : Laboratoire no 1
Figure 10 – Resultats de simulation RTL sous ModelSim-Altera
4.8.4 Lancement de la simulation
Il est possible de lancer 3 differents types de simulations avec ModelSim-Altera depuis
Quartus II. Le premier type de simulation est dit de type RTL (ou fonctionnelle), tandis
que les deux autres sont des simulations au niveau des portes logiques. Il vous sera demande
d’identifier ce qui differencie ces types de simulations.
Commencez par lancer une simulation fonctionnelle :
Tools→ Run EDA Simulation Tool→ EDA RTL Simulation...
Le logiciel ModelSim-Altera sera lance automatiquement, et les resultats de simulation
(chronogrammes) devraient etre visibles dans la fenetre sur fond noir, illustree a la Figure 10.
Pour ajuster la vue du chronogramme, cliquez dans l’espace noir et appuyez sur la touche
“F” du clavier. Lorsque vous avez termine, assurez-vous de fermer ModelSim-Altera avant
de lancer une nouvelle simulation, sans quoi une erreur se produira depuis l’environnement
Quartus II.
Lancez ensuite les deux types de simulations au niveau des portes et choisissez ensuite
l’une ou l’autre des deux options ”Slow Model” ou ”Fast Model” :
Tools→ RunEDA Simulation Tool→ EDA Gate Level Simulation...
Assurez-vous d’avoir bien compris la fonction de ces differentes simulations !
Page 11 sur 13
ELE1300 : Laboratoire no 1
4.9 Programmation de la carte DE2
Vous etes maintenant pret a programmer la carte. Assurez-vous qu’elle soit bien allumee
avant de commencer, sinon Quartus II n’effectuera rien et vous verrez deux messages d’er-
reurs dans la fenetre de message. De plus, verifiez que le bouton a gauche de l’ecran LCD
de la DE2 est en position “Run”. Cliquez sur le bouton “Programmer” (Figure 3), Quartus
II vous ouvrira alors un nouvel onglet.
Si vous ne voyez pas le fichier “lab1.sof”, cliquez sur le bouton “Add File. . . ” et allez
dans le repertoire du projet dans lequel vous travaillez. Choisissez le fichier “lab1.sof”. Vous
activerez la programmation en cochant la case “program/configure”. Cliquez ensuite sur le
bouton “Start” pour lancer la configuration de votre DE2. Vous pouvez voir l’avancement
de la programmation en regardant la barre de progression en haut a droite. Quand il est a
100 %, vous pouvez utiliser votre carte. Dans d’autres laboratoires, vous aurez a utiliser des
fichiers “.sof” venant de l’exterieur. Vous pourrez les ajouter de la meme facon.
Si le bouton “Start” n’est pas selectionnable, il se peut que le port USB ne soit plus
detecte. Debranchez-le de la carte et rebranchez-le a nouveau. Ensuite, cliquez sur le bouton
“Hardware Setup. . . ” au dessus du bouton “Start”. Dans l’onglet “Hardware Settings”, vous
devriez voir dans la section “Available Hardware items” le “USB-Blaster”. Selectionnez-le et
fermez la fenetre. Le bouton “Start” devrait alors etre disponible.
Verifiez que le circuit effectue ce qui est attendu de lui. Sinon, “debuggez”-le !
Page 12 sur 13
ELE1300 : Laboratoire no 1
5 Laboratoire
Combien de fonctions a deux entrees differentes existe-t-il ? Deux entrees, cela signifie
qu’il y a quatre combinaisons possibles des valeurs d’entree (00 – 01 – 10 – 11). Pour chaque
combinaison d’entree, on peut avoir une sortie qui vaut 1 ou 0. Cela donne donc 16 tables
de verite possibles. . .
Implementez les 16 tables de verite et affichez-les avec les DELs rouges. Si la porte logique
correspondante a une table de verite existe, vous pouvez l’utiliser directement. Sinon vous
devrez utiliser plusieurs portes. Voir le tableau des affectations (Table 1).
Switch DEL rougeSW[1] SW[0] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 10 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 11 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 11 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
Table 1 – Table de verite de chaque DEL rouge
On utilisera les DELs vertes pour afficher l’etat de chacune des entrees. Reperez les
fonctions logiques suivantes : XNOR – NAND – NOR.
On vous demande d’implementer le circuit resultant dans un (seul) nouveau fichier sche-
matique que vous nommerez “lab1 partie2.bdf”. Une fois le fichier ajoute au projet, n’oubliez
pas d’indiquer a Quartus II que ce fichier doit maintenant etre pris comme etant l’entite hie-
rarchique de haut-niveau lors de la compilation avec l’option “Set as Top-Level Entity”.
Verifiez bien votre circuit puis appelez le charge de laboratoire pour faire
valider votre implementation !
6 Remise
1. Faite un zip de votre projet (clic-droit sur le dossier → envoyer vers... → dossier
compresse).
2. Renommez-le“lab1 groupeXX YYYYYYY ZZZZZZZ.zip”avec XX le numero de votre
groupe/binome et YYYYYYY - ZZZZZZZ representant vos matricules.
3. Deposez le tout dans le repertoire “archive”. Attention, une fois depose, vous n’y avez
plus acces et vous ne pouvez plus le modifier ou l’ecraser. Si vous deviez soumettre un
nouveau fichier zip, rajoutez une indication dans le nom du fichier (“ v2”ou“ vfinale”,
par exemple).
Page 13 sur 13