Lab 1
Lab 1
Lab 1
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ELE1300 - Circuits Logiques I<br />
<strong>Lab</strong>oratoire 1 : Utilisation du logiciel<br />
Quartus II d'Altera<br />
1<br />
Information sur le plagiat<br />
De plus en plus d’information est disponible par voie électronique (ou autre) et il est parfois tentant<br />
d’utiliser un travail réalisé par quelqu’un de « compétent », quelqu’un qui a compris, lui, plutôt que de<br />
faire l’effort de comprendre soi-même. Ces laboratoires sont destinés à vous aider à comprendre la<br />
matière en vous confrontant à des problèmes qui vous feront réfléchir, poser des questions, chercher de<br />
l’information dans le cours ou ailleurs. Leur but est avant tout de vous former plutôt que de vous<br />
évaluer même si 20% de la note finale leur est consacrée. Si vous prenez le temps de résoudre les<br />
problèmes par vous-même, vous vous assurez les 20% des laboratoires mais aussi une bonne partie des<br />
80% restant car l’évaluation finale de ce cours repose essentiellement sur la compréhension des circuits<br />
logiques et la résolution des problèmes qui y font appel. Soyez donc compétents par vous-même et<br />
soyez fiers ensuite de réussir par vous-même. Par ailleurs, certains plagiats sont détectables et<br />
conduisent au minimum à l’annulation du laboratoire, avec une note au dossier du ou des étudiants<br />
impliqués. Cela ne vaut pas la peine ! Quand vous serez sur le marché de l’emploi, vous ne pourrez<br />
compter que sur votre propre expertise car vous aurez à résoudre des problèmes dont les solutions<br />
n’existent nulle part sur Internet ou ailleurs. Prenez tout de suite le bon réflexe : celui d’apprendre et de<br />
comprendre par vous-même. Ceci dit, je vous encourage à utiliser toute information extérieure qui peut<br />
vous aider à comprendre la matière, mais ne choisissez jamais la voie de la médiocrité qui consiste à<br />
recopier sans comprendre. Votre ambition est de devenir ingénieur(e) !<br />
Introduction<br />
Au cours de ce laboratoire, vous apprendrez comment programmer la carte DE2 pour y implémenter un<br />
circuit logique. Vous apprendrez la base de l’environnement graphique du programme « Quartus II », qui<br />
est le compilateur du FPGA soudé sur la carte. Ce programme vous permet de faire la conception de<br />
votre circuit de façon schématique et de le télécharger ensuite sur la carte.<br />
Préparation du laboratoire<br />
I. Si possible, installer le logiciel Quartus II Web Edition sur votre ordinateur personnel. La<br />
II.<br />
III.<br />
IV.<br />
procédure est décrite à la fin de ce document.<br />
Lire tout le document.<br />
Comprendre le fonctionnement des portes logiques de base : OR, AND, XOR, NOR, NAND, XNOR<br />
et préparer les 16 circuits logiques qui sont demandés dans la section V. Remarque : il existe de<br />
nombreuses manières différentes d’implémenter ces fonctions.<br />
En cas de difficulté, utilisez les outils de simulation de circuits logiques disponibles à partir du<br />
site du cours.
ELE1300 - Circuits Logiques I<br />
2<br />
a) Créer un dossier pour le projet Quartus II<br />
Créer un dossier (répertoire) nommé lab1 dans votre espace de travail (U:\...\lab1). Ce dossier<br />
contiendra votre projet Quartus II et tous les fichiers associés.<br />
Profitez-en en pour y copier les fichiers DE2_pins.csv et tb_lab1.vhd, qui se trouvent dans le répertoire<br />
Q://<strong>Lab</strong>oratoires/lab1/…. Ces fichiers seront utiles plus tard.<br />
b) Ouverture du logiciel<br />
Dans le menu démarrer de l'environnement Windows choisissez:<br />
Programmes -> Altera -> Quartus II 11.0 -> Quartus II 11.0<br />
Lors de l'ouverture du logiciel, l'espace de travail illustré à la Figure 1 est présenté à l'utilisateur. Cet<br />
espace de travail contient:<br />
1. La barre des menus.<br />
2. La barre d’outils.<br />
3. Le navigateur de projet permet de voir les fichiers, les projets et leur hiérarchie.<br />
4. La fenêtre de statut vous permet de connaître l’état d’avancement de la compilation de votre<br />
circuit.<br />
5. La fenêtre de message vous avertit des erreurs et autres avertissements durant la compilation<br />
ou la programmation<br />
Si la fenêtre utilitaire "Messages"" n'est pas visible, faites-la apparaître en choisissant dans le menu:<br />
View -> Utility Windows -> Messages (Alt-3)<br />
Figure 1 - Présentation de l'environnement de conception Quartus II
ELE1300 - Circuits Logiques I<br />
3<br />
c) Création d'un nouveau projet<br />
Pour pouvoir utiliser l’espace de travail, il faut se créer un projet. Pour cela, dans le menu sélectionnez:<br />
File -> New Project Wizard<br />
Passez la première fenêtre;<br />
Dans la seconde indiquez dans quel dossier vous voulez créer le projet. Quartus II ne créera pas un<br />
dossier pour contenir le laboratoire. Spécifiez le dossier lab1 (U:\...\lab1) créé plus tôt comme répertoire<br />
de projet. Écrivez ensuite le nom de votre projet et mettre le même nom pour l’entité qui englobe les<br />
autres (la plus haute du projet). Pour ce projet, utilisez le nom « lab1 »;<br />
Dans la troisième page, il vous est possible d’ajouter des fichiers au projet, si vous voulez en réutiliser.<br />
Pour l'instant, nous n’utiliserons pas cette fonctionnalité;<br />
Dans la quatrième page, vous devrez spécifier le FPGA utilisé. Dans le menu déroulant « Family », vous<br />
choisissez « Cyclone II ». Par la suite, dans la liste « Available Devices » sélectionnez « EP2C35F672C6 »,<br />
qui est le FPGA que nous utilisons;<br />
Dans la cinquième page, spécifiez le logiciel de simulation ModelSim-Altera depuis le menu déroulant,<br />
et assurez-vous que le format VHDL est sélectionné. Ne cochez pas l'option Run gate-level simulation<br />
automatically after compilation. Laissez les autres outils et formats à leurs valeurs par défaut ();<br />
Vous pouvez cliquer sur « Finish », car il n’y a plus rien à rajouter.<br />
Assignation des broches<br />
Afin d'associer le nom réel des broches du FPGA (PIN_N50) à des noms plus évocateurs (LEDR[0]),<br />
pouvant être reconnus par le logiciel Quartus II, il faut importer le fichier DE2_pins.csv. Pour ce faire,<br />
dans le menu faites:<br />
Assignments -> Import Assignments<br />
Et spécifiez ensuite l'emplacement du fichier.<br />
Les broches (pins) qui ne seront pas utilisées dans votre montage devront être placées en mode « As<br />
input tri-stated ». Pour ce faire, allez dans le menu :<br />
Assignments → Device<br />
Cliquez le bouton « Device & Pin Options », choisissez la catégorie « Unused Pins » et sélectionnez « As<br />
input tri-stated » dans le menu déroulant.<br />
Création d'un fichier de description schématique<br />
Pour pouvoir créer un circuit, il vous faut un fichier pour y dessiner votre circuit. Créez le fichier avec :<br />
File → New
ELE1300 - Circuits Logiques I<br />
4<br />
Dans l’onglet « Device Design Files », choisissez « Block Diagram/Schematic File ». Sauvegarder votre<br />
fichier sous le nom lab1 (lab1.bdf), qui sera ainsi reconnu comme entité de haut-niveau. Attention,<br />
assurez-vous de sauvegarder le fichier dans votre répertoire de projet.<br />
File -> Save as...<br />
Maintenant, il sera possible de dessiner un circuit donné.<br />
d) Présentation de la carte DE-2<br />
Quand vous voudrez utiliser la carte, il faudra que vous vérifiiez si l’alimentation est branchée et si la<br />
carte s’allume en pesant le bouton de démarrage. Lorsque la carte s’allume, vous verrez toutes les DEL<br />
clignoter et l’affichage hexadécimal incrémenter de 0 jusqu’à F en même temps. Il y aura aussi le LCD qui<br />
affichera « Welcome to the Altera DE2 Board ».<br />
Dans le bas de la carte, il y a 18 boutons de type « Switch » et 4 boutons poussoir. Ce sont les boutons<br />
que nous allons utiliser tout au long de la session. Quand vous voudrez programmer la carte, vous<br />
devrez brancher le port USB dans la prise « USB Blaster Port » en haut à gauche à côté de la prise<br />
d’alimentation.<br />
La documentation venant de la carte peut être trouvée dans le répertoire suivant :<br />
(Q : ) → DE2 → DE2_user_manual → DE2_user_manual.pdf<br />
Figure 2 - Carte DE2 incluant un FPGA Cyclone II d'Altera.
ELE1300 - Circuits Logiques I<br />
5<br />
e) Description schématique d'un circuit<br />
Dans la barre d’outils schématique (Figure 3), vous pouvez voir la «Flèche» qui sert à sélectionner les<br />
objets. Le bouton « Symbol Tool » vous permet de choisir l’élément que vous voulez insérer dans le<br />
circuit tel que : porte logique, entrée/sortie ou une macro-fonction. Le bouton « Orthogonal Node Tool »<br />
vous permet de dessiner les connexions entre vos portes logiques. Le bouton « Orthogonal Bus Tool »<br />
vous permet de dessiner un bus (un bus peut être vu comme un câble contenant plusieurs fils). Ensuite,<br />
lorsque l'option « Use Rubberbanding » est activée, les fils sont "soudés" lorsque mis en contact et ils<br />
restent reliés (aux portes notamment) ensembles lorsque des déplacements sont appliqués aux<br />
composants du circuit (évitez de la désactiver).<br />
Figure 3 - Barre d'outils de la fenêtre schématique<br />
En choisissant « Symbol Tool », vous verrez une fenêtre apparaître. Cliquez sur le dossier «<br />
Q:/altera/quartus…/librairies/ » dans la section librairies, à droite. Choisissez « primitive » et vous avez<br />
accès à tous les éléments logiques de base. Le dossier « Logic » contient toutes les portes logiques « and<br />
», « or », « nand » etc. utiles pour le cours. Le dossier « pin » contient les entrées et sorties que vous<br />
pouvez utiliser conformément au fichier d’assignation que nous avons ajouté au projet. Le dossier «<br />
storage » contient les différentes bascules que vous verrez dans le cours.<br />
Sélectionnez une porte ET à 2 entrées (and2) et cliquez sur OK. Vous verrez que l’objet sélectionné est<br />
attaché à votre souris. À chaque fois que vous cliquez, il placera un objet à l’endroit où est situé le<br />
curseur. Pour ne plus placer d’objet, cliquez sur la flèche dans la barre d’outils à gauche de la fenêtre<br />
schématique ou pesez sur « Escape ».<br />
Notez que l'inverseur est dénommé "not".<br />
Dans un premier temps, il vous est simplement demandé de reproduire le circuit illustré à la Figure 4. Ce<br />
circuit produit simplement à ces 3 sorties le résultat des fonctions logiques ET, OU, et OUX à deux<br />
entrées. Sur la carte, nous allons relier les 2 entrées aux interrupteurs SW[0] et SW[1], et les 3 sorties<br />
aux DELs rouges LEDR[0], LEDR[1], et LEDR[2].
ELE1300 - Circuits Logiques I<br />
6<br />
Figure 4 - Premier circuit à réaliser.<br />
Commencez par aller chercher les portes logiques dont vous avez besoin ainsi que vos entrées et sorties<br />
(Figure 5) en appuyant sur le bouton Symbol Tool.<br />
Figure 5 - Ajout de portes et de broches au circuit.<br />
Ensuite, il faut nommer les entrées/sorties en utilisant les noms définis dans le fichier utilisé pour<br />
l’assignation des broches (DE2_pins.csv). De cette façon, Quartus II fera la juste correspondance entre le<br />
schéma et les connexions physiques sur la carte. Vous changerez les noms en double-cliquant sur<br />
l’entrée ou la sortie (Figure 6).
ELE1300 - Circuits Logiques I<br />
7<br />
Figure 6 - Changement du nom d'une broche dans le circuit.<br />
g) Compilation<br />
La compilation est un processus permettant de transformer la description d'un circuit (schématique<br />
dans notre cas) en un fichier de programmation permettant de programmer le FPGA de sorte à<br />
implémenter le circuit décrit. Pour un petit projet comme celui-ci, le processus devrait prendre moins de<br />
30 secondes, mais pour des circuits plus costauds, le processus de compilation peut requérir plus de 30<br />
minutes.<br />
Pour lancer le processus de compilation:<br />
Processing-> Start Compilation (Ctrl-L)<br />
...ou appuyez le bouton "flèche mauve" de la barre d'outil.<br />
À la fin du processus de compilation, une fenêtre vous indiquera s’il y a des erreurs dans votre circuit. Si<br />
tel est le cas, vous pouvez vous référer aux alertes dans la fenêtre des messages en bas de l’écran. Vous<br />
pouvez double-cliquer sur le premier message d'erreur (rouge) pour que l'outil vous pointe la source du<br />
problème rencontré. Une erreur fréquente consiste à court-circuiter deux sorties (sorties de portes<br />
logiques, ou bien d'un composant de type "input". Deux sorties sont court-circuitées si elles sont reliées<br />
par un fil. Sinon, si vous avez seulement des avertissements (warnings), n’en tenez pas compte.<br />
h) Simulation<br />
La simulation d'un circuit logique reproduit le comportement de ce dernier au sein d'un environnement<br />
contrôlé, fréquemment dénoté banc d'essai. Typiquement, il est plus facile de vérifier le fonctionnement
ELE1300 - Circuits Logiques I<br />
8<br />
d'un circuit dans un environnement contrôlé, et d'autre part, la compilation requise pour réaliser une<br />
simulation requiert typiquement moins de temps que celle requise pour réaliser un circuit physique.<br />
Dans un premier temps, il faut spécifier à l’outil Quartus II l’emplacement de l’outil de simulation<br />
ModelSim-Altera. . Pour ce faire, faites :<br />
Tools -> Options…<br />
Puis dans la catégorie General/EDA Tools Options, si ce n’est pas déjà fait, spécifiez l’emplacement<br />
C:\Altera\11.0\modelsim_ase\win32aloem<br />
pour l’outil ModelSim-Altera, , tel qu’illustré à la Figure 7.<br />
Figure 7 – Spécification de l’emplacement de l’outil ModelSim-Altera.<br />
Création automatique d'une description VHDL du circuit pour la simulation<br />
L’outil ModelSim permet la simulation de circuits décrits en langages VHDL/Verilog. Afin de simuler un<br />
circuit décrit schématiquement, l’outil Quartus II permet la conversion automatique vers une description<br />
VHDL. Pour ce faire, en vous assurant que le focus est placé sur le fichier lab1.bdf, , faites dans le menu :<br />
File -> Create / Update -> Create HDL Design File from Current File...<br />
Dans la fenêtre qui apparait, assurez-vous que l’emplacement du fichier à créer est correct (répertoire<br />
du projet), que le langage VHDL est sélectionné, et appuyez « OK ».<br />
Nous avons maintenant une description VHDL (lab1.vhd) ainsi qu’une description schématique<br />
(lab1.bdf) d’un même circuit dans le répertoire de projet. Toutefois, un projet Quartus II ne peut<br />
contenir qu’une seule description à la fois d’une même entité (circuit), il faut donc inclure le fichier<br />
lab1.vhd et exclure le fichier lab1.bdf du projet.
ELE1300 - Circuits Logiques I<br />
9<br />
Pour retirer le fichier lab1.bdf du projet, dans l’onglet « File » du navigateur de projet, faites un clic droit<br />
sur le fichier lab1.bdf et choisissez l’option Remove File from Project du menu contextuel.<br />
Pour ajouter le fichier lab1.vhd au projet, dans le menu faites :<br />
Project -> Add/Remove Files in Project...<br />
Puis dans le champ de saisie « File name », indiquez lab1.vhd ou allez chercher le fichier en utilisant le<br />
bouton « … », puis assurez-vous d’appuyer le bouton « add » avant de faire « Ok » dans la fenêtre de<br />
« Settings ».<br />
Le fichier lab1.vhd devrait ensuite être présent dans la liste de fichiers du projet. Faites un clic droit<br />
dessus pour spécifier que ce fichier correspond à l’entité de haut niveau au moyen de l’option « Set as<br />
Top-Level Entity ». Relancez la compilation dans Quartus II.<br />
Description du banc de test<br />
On peut maintenant inclure le banc de tests qui est également décrit en langage VHDL dans le projet<br />
Quartus II. Ce fichier se nomme tb_lab1.vhd. Pour ajouter le fichier tb_lab1.vhd au projet, dans le menu<br />
faites :<br />
Project -> Add/Remove Files in Project...<br />
Puis dans le champ de saisie « File name », indiquez lab1.vhd ou allez chercher le fichier en utilisant le<br />
bouton « … », puis assurez-vous d’appuyer le bouton « add » avant de faire « Ok » dans la fenêtre de<br />
« Settings ».<br />
Une fois ajouté, ouvrez-le, et portez attention à la section suivante, décrivant les stimulations d’entrées<br />
par le banc de test :<br />
-- *** Début de stimulation des entrées *** --<br />
SW(0)
ELE1300 - Circuits Logiques I<br />
10<br />
Spécification du banc de test dans Quartus II<br />
Afin de spécifier le banc de test dans le logiciel Quartus II, dans le menu faites:<br />
Assignments -> Settings...<br />
Dans la catégorie EDA Tool Settings, sélectionnez la sous-catégorie Simulation. Reproduisez la<br />
configuration illustrée à la Figure 8, et appuyez le bouton Test Benches...<br />
Figure 8 - Spécification du banc d'essai à utiliser pour la simulation (1 de 2).<br />
Dans la fenêtre qui s'ouvre appuyez New... pour spécifier un banc de test. Reproduisez ensuite la<br />
configuration illustrée à la Figure 9, en n'oubliant pas d'ajouter le ficher tb_lab1.vhd avec le bouton Add<br />
de la fenêtre.
ELE1300 - Circuits Logiques I<br />
11<br />
Figure 9 - Spécification du banc d'essai à utiliser pour la simulation (2 de 2).<br />
Lancement de la simulation<br />
Il est possible de lancer 3 différents types de simulations avec ModelSim-Altera depuis Quartus II. Le<br />
premier type de simulation est dit de type RTL (ou fonctionnelle), tandis que les deux autres sont des<br />
simulations au niveau des portes logiques. Il vous sera demandé d'identifier ce qui différencie ces types<br />
de simulations.<br />
Commencez par lancer une simulation fonctionnelle:<br />
Tools -> Run EDA Simulation Tool -> EDA RTL Simulation...<br />
Le logiciel ModelSim-Altera sera lancé automatiquement, et les résultats de simulation<br />
(chronogrammes) devraient être visibles dans la fenêtre sur fond noir, illustrée à la Figure 10. Pour<br />
ajuster la vue du chronogramme, cliquez dans l'espace noir et puis appuyez la touche clavier "F".
ELE1300 - Circuits Logiques I<br />
12<br />
Figure 10 - Résultats de simulation RTL sous ModelSim-Altera<br />
Lorsque vous avez terminé, assurez-vous de fermer ModelSim-Altera avant de lancer une nouvelle<br />
simulation, sans quoi une erreur se produira depuis l'environnement Quartus II.<br />
Lancez ensuite les deux types de simulations au niveau des portes:<br />
Tools -> Run EDA Simulation Tool -> EDA Gate Level Simulation...<br />
Et choisissez ensuite l'une ou l'autre des deux options "Slow Model" ou "Fast Model".<br />
Programmation de la carte DE2<br />
Maintenant, vous êtes prêt à programmer la carte. Assurez-vous qu’elle soit allumée avant de<br />
commencer, sinon Quartus II n’effectuera rien et vous verrez que deux messages d’erreurs apparaîtront<br />
dans la fenêtre de message. De plus, vérifiez que le bouton à gauche de l’écran LCD est en position «<br />
Run ».<br />
Cliquez sur le bouton « programmer »<br />
l’image de la Figure 11.<br />
, Quartus II vous ouvrira un nouvel onglet où vous verrez<br />
Figure 11 - Fenêtre de programmation de la carte DE2<br />
Si vous ne voyez pas le fichier « lab1.sof », cliquez sur le bouton « Add File… » (Figure 11.) et allez dans<br />
le répertoire du projet dans lequel vous travaillez. Choisissez le fichier « lab1.sof ». Vous activez la<br />
programmation en cochant la case « program/configure ». Ensuite, cliquez le bouton « Start » pour<br />
lancer la configuration de votre DE2. Vous pouvez voir l’avancement de la programmation en regardant<br />
la barre de progression en haut à droite. Quand il est à 100 %, vous pouvez utiliser votre carte. Dans<br />
d’autres laboratoires, vous aurez à utiliser des fichiers « .sof » venant de l’extérieur. Vous pourrez les<br />
ajouter de la même façon.<br />
Si le bouton « Start » n’est pas sélectionnable, il se peut que le port USB ne soit plus détecté.<br />
Débranchez-le de la carte et rebranchez-le à nouveau. Ensuite, cliquez sur le bouton « Hardware Setup…<br />
» au dessus du bouton « Start ». Dans l’onglet « Hardware Settings », vous devriez voir dans la section «<br />
Available Hardware items » le « USBBlaster ». Sélectionnez-le et fermez la fenêtre. Le bouton « Start »<br />
devrait être disponible.
ELE1300 - Circuits Logiques I<br />
13<br />
Maintenant, effectuez vos tests et vérifiez si le circuit effectue ce qui est attendu de lui. Sinon, «<br />
debuggez » votre circuit !<br />
Conception de circuits logiques combinatoires à 2 entrées<br />
Combien de fonctions à deux entrées différentes existe-t-il ? Deux entrées, cela signifie qu’il y a quatre<br />
combinaisons possibles des valeurs d’entrée (00 – 01 – 10 – 11). Pour chaque combinaison d’entrée, on<br />
peut avoir une sortie qui vaut 1 ou 0. Cela donne donc 16 tables de vérité possibles …<br />
Implémentez toutes les 16 tables de vérité (voir Table 1) et affichez-les avec les DELs rouges. Si la porte<br />
logique correspondante à une table de vérité existe, vous pouvez l’utiliser directement. Sinon vous<br />
devez l’implémenter avec les portes vues au cours. Voici le tableau des affectations :<br />
Table 1 - Table de vérité de chaque DEL rouge (de LEDR[0] à LEDR[15])<br />
Utilisez les DELs vertes (LEDG[0] et LEDG[1]) pour afficher l’état de chacune des entrées. Repérez les<br />
fonctions logiques suivantes : XNOR – NAND – NOR.<br />
On vous demande d'implémenter le circuit résultant dans un (seul) nouveau fichier schématique que<br />
vous nommerez lab1_partie2.bdf. Une fois le fichier ajouté au projet, n'oubliez pas d'indiquer à Quartus<br />
II que ce fichier doit maintenant être pris comme étant l'entité hiérarchique de haut-niveau lors de la<br />
compilation avec l'option Set as Top-Level Entity.<br />
Il ne vous est pas demandé de simuler les 16 circuits réalisés.<br />
Bon travail !<br />
Remise finale<br />
1) Faites une archive .zip du répertoire contenant votre projet Quartus II.<br />
2) Nommez cette archive lab1_XXXXXXX_YYYYYYY.zip, où XXXXXXX et YYYYYYY représentent vos<br />
numéros de matricule.<br />
3) Déposez le tout dans le répertoire "Remise". Attention, une fois déposé, vous n'y avez plus<br />
accès et vous ne pouvez plus le modifier ou l'écraser.