03.01.2014 Views

Lab 1

Lab 1

Lab 1

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!