Vous êtes sur la page 1sur 13

ELE1300 - Circuits Logiques I

1

Laboratoire 1 : Utilisation du logiciel Quartus II d'Altera

Information sur le plagiat

De plus en plus d’information est disponible par voie électronique (ou autre) et il est parfois tentant d’utiliser un travail réalisé par quelqu’un de « compétent », quelqu’un qui a compris, lui, plutôt que de faire l’effort de comprendre soi-même. Ces laboratoires sont destinés à vous aider à comprendre la matière en vous confrontant à des problèmes qui vous feront réfléchir, poser des questions, chercher de l’information dans le cours ou ailleurs. Leur but est avant tout de vous former plutôt que de vous évaluer même si 20% de la note finale leur est consacrée. Si vous prenez le temps de résoudre les problèmes par vous-même, vous vous assurez les 20% des laboratoires mais aussi une bonne partie des 80% restant car l’évaluation finale de ce cours repose essentiellement sur la compréhension des circuits logiques et la résolution des problèmes qui y font appel. Soyez donc compétents par vous-même et soyez fiers ensuite de réussir par vous-même. Par ailleurs, certains plagiats sont détectables et conduisent au minimum à l’annulation du laboratoire, avec une note au dossier du ou des étudiants impliqués. Cela ne vaut pas la peine ! Quand vous serez sur le marché de l’emploi, vous ne pourrez compter que sur votre propre expertise car vous aurez à résoudre des problèmes dont les solutions n’existent nulle part sur Internet ou ailleurs. Prenez tout de suite le bon réflexe : celui d’apprendre et de comprendre par vous-même. Ceci dit, je vous encourage à utiliser toute information extérieure qui peut vous aider à comprendre la matière, mais ne choisissez jamais la voie de la médiocrité qui consiste à recopier sans comprendre. Votre ambition est de devenir ingénieur(e) !

Introduction

Au cours de ce laboratoire, vous apprendrez comment programmer la carte DE2 pour y implémenter un circuit logique. Vous apprendrez la base de l’environnement graphique du programme « Quartus II », qui est le compilateur du FPGA soudé sur la carte. Ce programme vous permet de faire la conception de votre circuit de façon schématique et de le télécharger ensuite sur la carte.

Préparation du laboratoire

I. Si possible, installer le logiciel Quartus II Web Edition sur votre ordinateur personnel. La procédure est décrite à la fin de ce document.

II. Lire tout le document.

III. Comprendre le fonctionnement des portes logiques de base : OR, AND, XOR, NOR, NAND, XNOR et préparer les 16 circuits logiques qui sont demandés dans la section V. Remarque : il existe de nombreuses manières différentes d’implémenter ces fonctions.

ELE1300 - Circuits Logiques I

2

a) Créer un dossier pour le projet Quartus II

Créer un dossier (répertoire) no mmé lab1 dans votre espace de travail (U:\ contiendra votre projet Quartus II e t tous les fichiers associés.

Profitez-en pour y copier les fichi ers DE2_pins.csv et tb_lab1.vhd, qui se trouvent Q://Laboratoires/lab1/…. Ces fichie rs seront utiles plus tard.

\ lab1). Ce dossier

dans le répertoire

b) Ouverture du logiciel

Dans le menu démarrer de l'enviro nnement Windows choisissez:

Programmes -> Altera -> Q uartus II 11.0 -> Quartus II 11.0

Lors de l'ouverture du logiciel, l'es pace de travail illustré à la Figure 1 est présenté espace de travail contient:

à l'utilisateur. Cet

1. La barre des menus.

2. La barre d’outils.

3. Le navigateur de projet per met de voir les fichiers, les projets et leur hiérarchi e.

4. La fenêtre de statut vous p ermet de connaître l’état d’avancement de la comp ilation de votre circuit.

5. La fenêtre de message vou s avertit des erreurs et autres avertissements dur ant la compilation ou la programmation

Si la fenêtre utilitaire "Messages" n 'est pas visible, faites-la apparaître en choisissant d ans le menu:

View -> Utility Windows -> Messages (Alt-3)

le menu: View -> Utility Windows -> Messages (Alt-3) Figure 1 - Présen tation de l'environnement

Figure 1 - Présen tation de l'environnement de conception Quartus II

ELE1300 - Circuits Logiques I

3

c) Création d'un nouveau projet

Pour pouvoir utiliser l’espace de travail, il faut se créer un projet. Pour cela, dans le menu sélectionnez:

File -> New Project Wizard

Passez la première fenêtre;

Dans la seconde indiquez dans quel dossier vous voulez créer le projet. Quartus II ne créera pas un

créé plus tôt comme répertoire

de projet. Écrivez ensuite le nom de votre projet et mettre le même nom pour l’entité qui englobe les

dossier pour contenir le laboratoire. Spécifiez le dossier lab1 (U:\

\lab1)

autres (la plus haute du projet). Pour ce projet, utilisez le nom « lab1 »;

Dans la troisième page, il vous est possible d’ajouter des fichiers au projet, si vous voulez en réutiliser. Pour l'instant, nous n’utiliserons pas cette fonctionnalité;

Dans la quatrième page, vous devrez spécifier le FPGA utilisé. Dans le menu déroulant « Family », vous choisissez « Cyclone II ». Par la suite, dans la liste « Available Devices » sélectionnez « EP2C35F672C6 », qui est le FPGA que nous utilisons;

Dans la cinquième page, spécifiez le logiciel de simulation ModelSim-Altera depuis le menu déroulant, et assurez-vous que le format VHDL est sélectionné. Ne cochez pas l'option Run gate-level simulation automatically after compilation. Laissez les autres outils et formats à leurs valeurs par défaut (<None>);

Vous pouvez cliquer sur « Finish », car il n’y a plus rien à rajouter.

Assignation des broches

Afin d'associer le nom réel des broches du FPGA (PIN_N50) à des noms plus évocateurs (LEDR[0]), pouvant être reconnus par le logiciel Quartus II, il faut importer le fichier DE2_pins.csv. Pour ce faire, dans le menu faites:

Assignments -> Import Assignments

Et spécifiez ensuite l'emplacement du fichier.

Les broches (pins) qui ne seront pas utilisées dans votre montage devront être placées en mode « As input tri-stated ». Pour ce faire, allez dans le menu :

Assignments → Device

Cliquez le bouton « Device & Pin Options », choisissez la catégorie « Unused Pins » et sélectionnez « As input tri-stated » dans le menu déroulant.

Création d'un fichier de description schématique

Pour pouvoir créer un circuit, il vous faut un fichier pour y dessiner votre circuit. Créez le fichier avec :

File → New

ELE1300 - Circuits Logiques I

4

Dans l’onglet « Device Design Files », choisissez « Block Diagram/Schematic File ». Sauvegarder votre fichier sous le nom lab1 (lab1.bdf), qui sera ainsi reconnu comme entité de haut-niveau. Attention, assurez-vous de sauvegarder le fichier dans votre répertoire de projet.

File -> Save as

Maintenant, il sera possible de dessiner un circuit donné.

d) Présentation de la carte DE-2

Quand vous voudrez utiliser la carte, il faudra que vous vérifiiez si l’alimentation est branchée et si la carte s’allume en pesant le bouton de démarrage. Lorsque la carte s’allume, vous verrez toutes les DEL clignoter et l’affichage hexadécimal incrémenter de 0 jusqu’à F en même temps. Il y aura aussi le LCD qui affichera « Welcome to the Altera DE2 Board ».

Dans le bas de la carte, il y a 18 boutons de type « Switch » et 4 boutons poussoir. Ce sont les boutons que nous allons utiliser tout au long de la session. Quand vous voudrez programmer la carte, vous devrez brancher le port USB dans la prise « USB Blaster Port » en haut à gauche à côté de la prise d’alimentation.

La documentation venant de la carte peut être trouvée dans le répertoire suivant :

(Q : ) → DE2 → DE2_user_manual → DE2_user_manual.pdf

: (Q : ) → DE2 → DE2_user_manual → DE2_user_manual.pdf Figure 2 - Carte DE2 incluant

Figure 2 - Carte DE2 incluant un FPGA Cyclone II d'Altera.

ELE1300 - Circuits Logiques I

5

e) Description schématique d'un circuit

Dans la barre d’outils schématique (Figure 3), vous pouvez voir la «Flèche» qui sert à sélectionner les objets. Le bouton « Symbol Tool » vous permet de choisir l’élément que vous voulez insérer dans le circuit tel que : porte logique, entrée/sortie ou une macro-fonction. Le bouton « Orthogonal Node Tool » vous permet de dessiner les connexions entre vos portes logiques. Le bouton « Orthogonal Bus Tool » vous permet de dessiner un bus (un bus peut être vu comme un câble contenant plusieurs fils). Ensuite, lorsque l'option « Use Rubberbanding » est activée, les fils sont "soudés" lorsque mis en contact et ils restent reliés (aux portes notamment) ensembles lorsque des déplacements sont appliqués aux composants du circuit (évitez de la désactiver).

aux composants du circuit (évitez de la désactiver). Figure 3 - Barre d'outils de la fenêtre

Figure 3 - Barre d'outils de la fenêtre schématique

En choisissant « Symbol Tool », vous verrez une fenêtre apparaître. Cliquez sur le dossier « Q:/altera/quartus…/librairies/ » dans la section librairies, à droite. Choisissez « primitive » et vous avez accès à tous les éléments logiques de base. Le dossier « Logic » contient toutes les portes logiques « and », « or », « nand » etc. utiles pour le cours. Le dossier « pin » contient les entrées et sorties que vous pouvez utiliser conformément au fichier d’assignation que nous avons ajouté au projet. Le dossier « storage » contient les différentes bascules que vous verrez dans le cours.

Sélectionnez une porte ET à 2 entrées (and2) et cliquez sur OK. Vous verrez que l’objet sélectionné est attaché à votre souris. À chaque fois que vous cliquez, il placera un objet à l’endroit où est situé le curseur. Pour ne plus placer d’objet, cliquez sur la flèche dans la barre d’outils à gauche de la fenêtre schématique ou pesez sur « Escape ».

Notez que l'inverseur est dénommé "not".

Dans un premier temps, il vous est simplement demandé de reproduire le circuit illustré à la Figure 4. Ce circuit produit simplement à ces 3 sorties le résultat des fonctions logiques ET, OU, et OUX à deux entrées. Sur la carte, nous allons relier les 2 entrées aux interrupteurs SW[0] et SW[1], et les 3 sorties aux DELs rouges LEDR[0], LEDR[1], et LEDR[2].

ELE1300 - Circuits Logiques I

6

ELE1300 - Circuits Logiques I 6 Figure 4 - Premier circuit à réaliser. Commencez par aller

Figure 4 - Premier circuit à réaliser.

Commencez par aller chercher les

(Figure 5) en appuyant sur le bouto n Symbol Tool.

portes logiques dont vous avez besoin ainsi que vos entrées et sorties

dont vous avez besoin ainsi que vos entrées et sorties Figure 5 - Ajout de portes

Figure 5

- Ajout de portes et de broches au circuit.

Ensuite, il faut nommer les entré es/sorties en utilisant les noms définis dans le f ichier utilisé pour l’assignation des broches (DE2_pin s.csv). De cette façon, Quartus II fera la juste corres pondance entre le schéma et les connexions physiq ues sur la carte. Vous changerez les noms en d ouble-cliquant sur l’entrée ou la sortie (Figure 6).

ELE1300 - Circuits Logiques I

7

ELE1300 - Circuits Logiques I 7 Figure 6 - Changement du nom d'une broche dans le

Figure 6 - Changement du nom d'une broche dans le circuit.

g) Compilation

La compilation est un processus permettant de transformer la description d'un circuit (schématique dans notre cas) en un fichier de programmation permettant de programmer le FPGA de sorte à implémenter le circuit décrit. Pour un petit projet comme celui-ci, le processus devrait prendre moins de 30 secondes, mais pour des circuits plus costauds, le processus de compilation peut requérir plus de 30 minutes.

Pour lancer le processus de compilation:

Processing-> Start Compilation (Ctrl-L)

ou

appuyez le bouton "flèche mauve" de la barre d'outil.

À la fin du processus de compilation, une fenêtre vous indiquera s’il y a des erreurs dans votre circuit. Si tel est le cas, vous pouvez vous référer aux alertes dans la fenêtre des messages en bas de l’écran. Vous pouvez double-cliquer sur le premier message d'erreur (rouge) pour que l'outil vous pointe la source du problème rencontré. Une erreur fréquente consiste à court-circuiter deux sorties (sorties de portes logiques, ou bien d'un composant de type "input". Deux sorties sont court-circuitées si elles sont reliées par un fil. Sinon, si vous avez seulement des avertissements (warnings), n’en tenez pas compte.

h) Simulation

La simulation d'un circuit logique reproduit le comportement de ce dernier au sein d'un environnement contrôlé, fréquemment dénoté banc d'essai. Typiquement, il est plus facile de vérifier le fonctionnement

ELE1300 - Circuits Logiques I

8

d'un circuit dans un environneme nt contrôlé, et d'autre part, la compilation requise

simulation requiert typiquement m oins de temps que celle requise pour réaliser un cir cuit physique.

pour réaliser une

Dans un premier temps, il faut s pécifier à l’outil Quartus II l’emplacement de l’o util de simulation ModelSim-Altera. Pour ce faire, fait es :

Tools -> Options…

Puis dans la catégorie General/ED A Tools Options, si ce n’est pas déjà fait, spécif ez l’emplacement C:\Altera\11.0\modelsim_ase\win 32aloem pour l’outil ModelSim-Altera, tel qu’illustr é à la Figure 7.

ModelSim-Altera , tel qu’illustr é à la Figure 7. Figure 7 – Spécifi cation de l’emplacement

Figure 7 – Spécifi cation de l’emplacement de l’outil ModelSim-Altera .

Création automatique d'un e description VHDL du circuit pour la simulation

L’outil ModelSim permet la simula tion de circuits décrits en langages VHDL/Verilog.

circuit décrit schématiquement, l’o util Quartus II permet la conversion automatique ve rs une description VHDL. Pour ce faire, en vous assura nt que le focus est placé sur le fichier lab1.bdf, faite s dans le menu :

Afin de simuler un

File -> Create / Update -> C reate HDL Design File from Current File

Dans la fenêtre qui apparait, assur ez-vous que l’emplacement du fichier à créer est du projet), que le langage VHDL est sélectionné, et appuyez « OK ».

correct (répertoire

Nous avons maintenant une de scription VHDL (lab1.vhd) ainsi qu’une descrip tion schématique

(lab1.bdf) d’un même circuit dan s le répertoire de projet. Toutefois, un projet Q uartus II ne peut

contenir qu’une seule description

lab1.vhd et exclure le fichier lab1.b df du projet.

à la fois d’une même entité (circuit), il faut don c inclure le fichier

ELE1300 - Circuits Logiques I

9

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 Files 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 fenêtre de

« Settings ».

Le fichier lab1.vhd devrait ensuite être présent dans la liste de fichiers du projet. Faites un clic droit dessus pour spécifier que ce fichier correspond à l’entité de haut niveau au moyen de l’option « Set as Top-Level Entity ». Relancez la compilation dans Quartus II.

Description du banc de test

On peut maintenant inclure le banc de tests qui est également décrit en langage VHDL dans le projet Quartus II. Ce fichier se nomme tb_lab1.vhd. Pour ajouter le fichier tb_lab1.vhd au projet, dans le menu faites :

Project -> Add/Remove Files 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 fenêtre de

« Settings ».

Une fois ajouté, ouvrez-le, et portez attention à la section suivante, décrivant les stimulations d’entrées par le banc de test :

-- *** Début de stimulation des entrées *** -- SW(0) <= '0'; SW(1) <= '0'; wait for 10 ns;

SW(0) <= '1'; SW(1) <= '1'; wait for 10 ns; -- *** Fin de stimulation des entrées *** --

Cette séquence aura pour effet de stimuler le circuit avec les entrées SW(0) et SW(1) à ‘0’ et ‘0’ respectivement, pendant une durée de 10 ns, et puis ensuite avec les valeurs ‘1’ et ‘1’ (respectivement) pendant un autre 10 ns (Si on lance une simulation plus longue que 20 ns, la séquence sera répétée plus d’une fois).

Ajoutez les combinaisons d'entrées manquantes afin de tester le circuit avec tous les cas possibles en une seule simulation. Faites attention à la syntaxe.

ELE1300 - Circuits Logiques I

10

Spécification du banc de te st dans Quartus II

Afin de spécifier le banc de test dan s le logiciel Quartus II, dans le menu faites:

Assignments -> Settings

Dans la catégorie EDA Tool Se ttings, sélectionnez la sous-catégorie Simulation . Reproduisez la configuration illustrée à la Figure 8, et appuyez le bouton Test Benches

à la Figure 8, et appuyez le bouton Test Benches Figure 8 - Spécificati on du

Figure 8 - Spécificati on du banc d'essai à utiliser pour la simulation (1 de

2).

pour spécifier un banc de test. Repr oduisez ensuite la

configuration illustrée à la Figure 9 , en n'oubliant pas d'ajouter le ficher tb_lab1.vhd a vec le bouton Add de la fenêtre.

Dans la fenêtre qui s'ouvre appu yez New

ELE1300 - Circuits Logiques I

11

ELE1300 - Circuits Logiques I 11 Figure 9 - Spécificati on du banc d'essai à utiliser

Figure 9 - Spécificati on du banc d'essai à utiliser pour la simulation (2 de

2).

Lancement de la simulatio n

Il est possible de lancer 3 différen ts types de simulations avec ModelSim-Altera de puis Quartus II. Le

de type RTL (ou fonctionnelle), tandis que les de ux autres sont des

simulations au niveau des portes lo giques. Il vous sera demandé d'identifier ce qui di férencie ces types

de simulations.

premier type de simulation est dit

Commencez par lancer une simulat ion fonctionnelle:

Tools -> Run EDA Simulatio n Tool -> EDA RTL Simulation

Le logiciel ModelSim-Altera se ra lancé automatiquement, et les résultat s de simulation

la Figure 10. Pour lavier "F".

(chronogrammes) devraient être v visibles dans la fenêtre sur fond noir, illustrée à ajuster la vue du chronogramme, cl liquez dans l'espace noir et puis appuyez la touche

sur fond noir, illustrée à ajuster la vue du chronogramme, cl liquez dans l'espace noir et

ELE1300 - Circuits Logiques I

12

Figure 10 - Résultats de simulation RTL sous ModelSim-Altera

Lorsque vous avez terminé, 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:

Tools -> Run EDA Simulation Tool -> EDA Gate Level Simulation

Et choisissez ensuite l'une ou l'autre des deux options "Slow Model" ou "Fast Model".

Programmation de la carte DE2

Maintenant, vous êtes prêt à programmer la carte. Assurez-vous qu’elle soit allumée avant de commencer, sinon Quartus II n’effectuera rien et vous verrez que deux messages d’erreurs apparaîtront dans la fenêtre de message. De plus, vérifiez que le bouton à gauche de l’écran LCD est en position « Run ».

Cliquez sur le bouton « programmer » l’image de la Figure 11.

sur le bouton « programmer » l’image de la Figure 11. , Quartus II vous ouvrira

, Quartus II vous ouvrira un nouvel onglet où vous verrez

, Quartus II vous ouvrira un nouvel onglet où vous verrez Figure 11 - Fenêtre de

Figure 11 - Fenêtre de programmation de la carte DE2

Si vous ne voyez pas le fichier « lab1.sof », cliquez sur le bouton « Add File… » (Figure 11.) et allez dans le répertoire du projet dans lequel vous travaillez. Choisissez le fichier « lab1.sof ». Vous activez la programmation en cochant la case « program/configure ». Ensuite, cliquez 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 à droite. Quand il est à 100 %, vous pouvez utiliser votre carte. Dans d’autres laboratoires, vous aurez à utiliser des fichiers « .sof » venant de l’extérieur. Vous pourrez les ajouter de la même façon.

Si le bouton « Start » n’est pas sélectionnable, il se peut que le port USB ne soit plus détecté. Débranchez-le de la carte et rebranchez-le à 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 « USBBlaster ». Sélectionnez-le et fermez la fenêtre. Le bouton « Start » devrait être disponible.

ELE1300 - Circuits Logiques I

13

Maintenant, effectuez vos tests et vérifiez si le circuit effectue ce qui est attendu de lui. Sinon, « debuggez » votre circuit !

Conception de circuits logiques combinatoires à 2 entrées

Combien de fonctions à deux entrées différentes existe-t-il ? Deux entrées, cela signifie qu’il y a quatre combinaisons possibles des valeurs d’entrée (00 – 01 – 10 – 11). Pour chaque combinaison d’entrée, on peut avoir une sortie qui vaut 1 ou 0. Cela donne donc 16 tables de vérité possibles …

Implémentez toutes les 16 tables de vérité (voir Table 1) et affichez-les avec les DELs rouges. Si la porte logique correspondante à une table de vérité existe, vous pouvez l’utiliser directement. Sinon vous devez l’implémenter avec les portes vues au cours. Voici le tableau des affectations :

portes vues au cours. Voici le tableau des affectations : Table 1 - Table de vérité

Table 1 - Table de vérité de chaque DEL rouge (de LEDR[0] à LEDR[15])

Utilisez les DELs vertes (LEDG[0] et LEDG[1]) pour afficher l’état de chacune des entrées. Repérez les fonctions logiques suivantes : XNOR – NAND – NOR.

On vous demande d'implémenter le circuit résultant dans un (seul) nouveau fichier schématique que vous nommerez lab1_partie2.bdf. Une fois le fichier ajouté au projet, n'oubliez pas d'indiquer à Quartus II que ce fichier doit maintenant être pris comme étant l'entité hiérarchique de haut-niveau lors de la compilation avec l'option Set as Top-Level Entity.

Il ne vous est pas demandé de simuler les 16 circuits réalisés.

Bon travail !

Remise finale

1)

Faites une archive .zip du répertoire contenant votre projet Quartus II.

2)

Nommez cette archive lab1_XXXXXXX_YYYYYYY.zip, où XXXXXXX et YYYYYYY représentent vos

numéros de matricule. 3) Déposez le tout dans le répertoire "Remise". Attention, une fois déposé, vous n'y avez plus accès et vous ne pouvez plus le modifier ou l'écraser.