Sie sind auf Seite 1von 9

COLE NATIONALE SUPRIEURE de SCIENCES APPLIQUES et de TECHNOLOGIE

TECHNOPOLE ANTICIPA LANNION UNIVERSIT DE RENNES 1

TUTORIAL ModelSim VHDL


D. Chillet, E. Casseau
Le 14 novembre 2008

LOGICIEL et SYSTME INFORMATIQUE - LECTRONIQUE et INFORMATIQUE INDUSTRIELLE - OPTRONIQUE

ENSSAT - Technopole Anticipa - BP 80518 - 6 rue de Krampont - 22305 LANNION Cedex - Siret 193 509 361 00278 - APE 9215 Tlphone (33) 02 96 46 50 30 - Tlcopie (33) 02 96 37 01 99 - Email ...@enssat.fr - Minitel 36 15 ENSSAT - Serveur WWW http://www.enssat.fr/

Tutorial ModelSim

Cette premire section a pour objectif de vous faire prendre en main un compilateur et un simulateur pour le langage VHDL. Il sagit du logiciel ModelSim de MentorGraphics. A lEnssat, la version ModelSim SE 6.3ade cet outil est install sur les machines de type PC. Aprs un bref rappel concernant le langage VHDL, ce tutorial prsente la manire de crer un projet ainsi que la faon de reprendre un projet en cours. La premire section de ce tutorial prsente les diffrentes manipulations de loutil ModelSim. La deuxime section vous guide dans la conception dune entit de base. Dans la troisime section, nous listons les lments de base que vous pourrez dvelopper an de complter votre comprhension du langage et de loutil. Bonne lecture et bons dveloppements ...

1.1

Rappel : Quest ce que le langage VHDL ?

VHDL est un langage de description matrielle. la diffrence des langages informatiques classiques, VHDL ne vise pas une excution, son but est de permettre la description de tout systme lectronique, den valider le fonctionnement avant de passer la mise en uvre matrielle. La gure 1 illustre les diffrentes utilisations du langage VHDL.

Lobjectif de ce document concerne les aspects description et simulation. Les autres facettes du langage seront abordes par lutilisation dautres outils plus spciquement ddis la conception matrielle de circuits. F IG . 1 VHDL, quoi a sert ? La conception dun systme passe par sa description. Cette description est toujours ralise en deux tapes au minimum. La premire tape consiste dcrire le systme comme une boite noire, alors que la seconde sintresse la description interne de la boite noire. Si la description de la vue externe (boite noire) ne pose gnralement pas de problme, la vue interne (larchitecture) peut quant elle tre ralise selon plusieurs modles de description. Rappelons brivement les trois types de description utilisables en VHDL : description comportementale : il sagit dune description indiquant le comportement dun systme. Gnralement ralise sous la forme de processus, elle sapparente du code procdural classique ; description structurelle : il sagit dune description schmatique dun systme. Sappuyant sur des composants disponibles dans une bibliothque et sur des signaux. Cette description est lexacte reprsentation du schma lectrique du systme ; description ot de donnes : il sagit dune description indiquant comment un ot de donnes traverse un systme. Le ot des sorties est exprim en fonction du ot des entres.

Manipulation de loutil ModelSim

Loutil ModelSimest disponible sur les PC windows. Il peut tre ncessaire de congurer laccs au serveur de licence, pour cela rfrez la note 1 . Une fois loutil ModelSimlanc, vous pouvez soit reprendre un projet en cours soit crer un nouveau projet. Nous allons dans un premier temps expliquer les principales fonctionnalits de loutil. Cette prsentation sera ensuite accompagne dun petit guide qui vous permettra de compiler et simuler votre premire entit.

2.1

Dbuter un projet (initialisation du projet)

Lorsque vous dbutez votre projet, vous devez congurer loutil ModelSim an quil organise correctement les diffrents chiers que vous allez crer et manipuler. 1. laide de Windows, crez un rpertoire de travail sur votre espace disque Z :/VHDL/Projet 2. Dans ModelSim, modier le rpertoire de travail par le menu : File > Change directory Slectionnez le rpertoire que vous venez de crer Z :/VHDL/Projet.
Sur PC, avant de pouvoir lancer pour la premire fois loutil ModelSim, vous devez tout dabord activer la licence, pour cela lancer le Licensing wisard, cliquez sur Continue , vriez que le serveur de licence est bien adress 1763@mark, validez puis rpondez Yes la fentre suivante. Une fois cette manipulation effectue, vous pouvez lancer ModelSim partir du menu "Dmarrer".
1

3. Pour pouvoir stocker correctement vos units de conception VHDL, vous devez crer une bibliothque de travail : File > New > Library Laisser les noms work comme librairie de travail et physique, et cocher a new library and a logical mapping to it. Cest dans cette bibliothque que seront places toutes les entits compiles sans erreur. 4. Vous devez ensuite crer un projet : File > New > Project Tapez un nom de projet, par exemple projet, laisser coch copy library mappings et valider. 5. Loutil vous demande dajouter des items dans le projet. Pour linstant, cliquer sur Close. Vous pouvez ensuite passer au dveloppement de votre systme et aux compilations des diffrentes spcications.

2.2

Reprise dun projet

Lorsque vous reprenez votre travail sur un projet que vous avez dj initialis et sur lequel vous avez dj travaill, vous devez vous ouvrir le projet souhait. 1. Aprs le lancement du logiciel ModelSim, placez vous dans votre rpertoire de travail sur votre espace disque par le menu : File > Change directory Slectionnez le rpertoire de travail Z :/VHDL/Projet. 2. Ouvrez votre projet : File > Open > Project Slection du projet. Recherchez le chier .mpf qui correspond votre projet (normalement, ce chier doit tre dans le rpertoire que vous avez slectionn par le menu prcdent).

2.3

La compilation

Le lancement du compilateur seffectue par le menu : Compile > Compile Compile du logiciel. Une fentre souvre alors et vous donne accs aux chiers de votre rpertoire de travail. Slectionnez un chier et cliquez sur Compile. La phase de compilation est alors active. 2.3.1 Remarques

Utilisez intelligemment les indentations et les commentaires pour que vos chiers soient lisibles et facilement maintenables. Donnez lextension .vhd tous vos chiers VHDL (chiers de dclaration dentits, darchitectures, de paquetages, de corps de paquetage, etc) ; An dviter une surabondance de chiers dans votre rpertoire de travail, nous vous conseillons de placer le corps dun paquetage dans le mme chier que la spcication de ce mme paquetage. De mme, regroupez dans un mme chier, la dclaration dentit (entity, generic, port) et son ou ses architectures. crivez un chier par entit ou par paquetage. 2.3.2 Ordre de compilation de vos chiers

Lordre de la compilation de vos chiers est important. Il faut toujours que toutes les units utilises (par lunit compiler) soient prsentes dans la bibliothque. Ce qui signie que vous devez respecter lordre de compilation suivant : 3

1. compilation de vos paquetages. Si vous en avez plusieurs, compilez dabord ceux qui nutilisent aucun autre paquetage, ensuite vous compilerez les autres ; 2. compilation de vos entits feuilles. On entend par entit feuille, toute entit dcrite de faon comportementale ; 3. compilation de vos entits dcrivant un sous-systme, cest dire des entits dcrites sous la forme dune structure de composants ; 4. compilation de votre entit systme, cest dire de lentit du plus haut niveau regroupant lensemble des sous-systmes (relis par des signaux) ; 2.3.3 Rsultats de compilation

Ds que la compilation dune unit est ralise sans erreur, lunit en question apparat dans la bibliothque de travail. Vous pouvez la visualiser en cliquant sur longlet Library du workspace ; Dans cet onglet, vous voyez alors tous les paquetages et entits prsents dans la bibliothque Work, et pour chaque entit vous pouvez obtenir la liste de toutes les architectures dcrites et compiles sans erreur. partir de cette fentre, vous pouvez supprimer un paquetage ou une entit ou une architecture. Vous observerez que les paquetages IEEE sont prsents dans la librairie. 2.3.4 Tests des units ralises

Nattendez pas que tout votre systme soit ralis pour effectuer des tests sur vos entits. La dmarche idale consiste tester chaque entit ds que sa compilation est correcte. Pour cela, dcrivez une entit de test. Compiler alors cette entit et lancer une simulation.

2.4
2.4.1

La simulation
Lancez une simulation Simulate > Start simulation

1. Pour lancer le simulateur, slectionnez le menu

2. Une fentre est alors ouverte et vous propose lensemble des units prsentes dans la bibliothque. Slectionnez une entit SIMULABLE (ou une conguration), cest dire une entit autonome qui instancie lentit simuler et qui gre les signaux dentre de lentit simuler. Les entits que vous allez dvelopper seront stockes dans la librairie Work ; 3. Ouvrez ensuite les fentres de simulation par le menu View > Wave

4. Par dfaut, lintervalle de simulation est de 100 ns, vous pouvez changer cette valeur en choisissant le menu : Simulate > Runtime options

5. Pour visualiser les signaux de lentit de test, slectionnez TestPorteET dans longlet sim du workspace, cliquez sur Add , puis Add to wave . La fentre des chronogrammes doit alors faire apparatre la liste des signaux de lentit. 6. Pour lancer un pas de simulation (de 100 ns), choisissez 7. Pour recommencer une simulation, choisissez 4 Simulate > Run > Run Simulate > Run > Restart .

Conception dune entit de base

Dans cette section, nous allons modliser et simuler en VHDL un lment de base qui nous permettra de prendre en main loutil ainsi que le langage.

3.1

Initialisation du projet

laide de Windows, crez un rpertoire de travail sur votre espace disque Z :/VHDL/Tutorial/ Choisissez le menu File > Change Directory et slectionnez le rpertoire Z :/VHDL/Tutorial ; Choisissez le menu File > New > Library et tapez WORK (nom de la bibliothque de travail dans laquelle toutes vos units seront stockes) ; Choisissez le menu File > New > Project et tapez tutorial (nom du projet) ;

3.2

Compilation dune unit fonctionnelle

Crer un nouveau chier VHDL dans votre projet Project > Add to project > New File . Saisir le nom de chier and, le chier sera cr avec lextension .vhd et laissez loption Add file as type sur VHDL et loption Folder sur TopLevel. En double cliquant sur le nom du chier dans le workspace, un diteur de texte vous permettra de saisir la description de lentit PorteET. Faite la saisie et sauvegarder ; LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY PorteET IS PORT ( entree1 : IN entree2 : IN sortie : OUT ) ; END PorteET ;

Std_Logic ; Std_Logic Std_Logic

Dans ModelSim, choisissez le menu Compile > Compile selected ; Lorsque la compilation est correcte, vous devez voir un message Compile of <nom fichir vhdl> was successful ; En double cliquant sur cette ligne, vous devez voir apparatre un fentre vous indiquant que les actions suivantes ont t ralises : vcom -work work -2002 -explicit -vopt Z:/VHDL/VONNEUMAN/AND.VHD ModelTechnology ModelSim SE vcom 6.3a compiler 2007, 06 Jun 25 2007 # - Loading package standard # - Loading package std_logic_1164 # - Compiling entity PorteET Visualisez le contenu de la librairie de travail dans longlet Library du workspace. Dveloppez la librairie Work, vous devez voir apparatre lentit PorteET dans cette librairie ; Crer un nouveau chier VHDL qui contiendra la description de larchitecture de lentit. Pour cela, Project > Add to project > New File . Saisissez le nom de chier ArchCompAnd, le chier sera cr avec lextension .vhd et laissez loption Add file as type sur VHDL et loption Folder sur TopLevel. Dans ce chier, placez le code VHDL suivant : LIBRARY IEEE ; 5

USE IEEE.STD_LOGIC_1164.ALL ; ARCHITECTURE Comportementale OF PorteET IS BEGIN ProcessPorteET : PROCESS (entree1, entree2) BEGIN sortie <= entree1 AND entree2 AFTER 1 ns; END PROCESS ProcessPorteET ; END Comportementale ; Slectionnez le chier ArchCompAnd.vhd dans le workspace puis cliquez droit et choisissez Compile > Compile selected ; Lorsque la compilation est correcte, vous devez voir un message Compile of <nom fichir vhdl> was successful ; En double cliquant sur cette ligne, vous devez voir apparatre un fentre vous indiquant que les actions suivantes ont t ralises : vcom Z:/VHDL/VONNEUMAN/ARCHCOMPAND.VHD ModelTechnology ModelSim SE vcom 6.3a compiler 2007, 06 Jun 25 2007 # - Loading package standard # - Loading package std_logic_1164 # - Compiling architecture Comportementale of PorteET # - Load entity PorteET Visualisez le contenu de la librairie de travail dans longlet Library du workspace. Dveloppez la librairie Work, vous devez voir apparatre lentit PorteET et larchitecture Comportementale dans cette librairie ;

3.3

Simulation de lunit fonctionnelle

Pour parvenir tester / simuler / valider notre entit PorteET il faut dcrire un testbench. Le testbench doit instancier un composant de type PorteET et faire voluer les signaux dentre de la porte ET. Dcrivez une entit de test pour la porte ET TestAnd ainsi quune architecture pour cette entit. Larchitecture instanciera une porte ET et fera voluer les signaux dentres de la porte ET. Stocker le tout dans le chier TestAnd.vhd ; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY TestPorteET IS END TestPorteET ; ARCHITECTURE Test OF TestPorteET IS COMPONENT PorteET PORT ( entree1 : IN entree2 : IN sortie : OUT ) ; END COMPONENT;

Std_Logic ; Std_Logic ; Std_Logic

SIGNAL s_entree1 : Std_Logic := 0; 6

SIGNAL s_entree2 : Std_Logic := 0; SIGNAL s_sortie : Std_Logic := Z; BEGIN porte : PorteET PORT MAP (s_entree1, s_entree2, s_sortie); ProcessSimulation : PROCESS BEGIN WAIT FOR 10 ns; s_entree1 <= 0; s_entree2 <= 0; WAIT FOR 10 ns; s_entree1 <= 0; s_entree2 <= 1; WAIT FOR 10 ns; s_entree1 <= 1; s_entree2 <= 1; WAIT FOR 10 ns; s_entree1 <= 1; s_entree2 <= 0; WAIT FOR 10 ns; s_entree1 <= 0; s_entree2 <= 0; WAIT FOR 10 ns; WAIT ; END PROCESS ProcessSimulation ; END Test; Slectionnez le chier TestAnd.vhd dans le workspace puis cliquez droit et choisissez Compile > Compile selected ; Lorsque la compilation est correcte, vous devez voir un message Compile of <nom fichir vhdl> was successful ; En double cliquant sur cette ligne, vous devez voir apparatre un fentre vous indiquant que les actions suivantes ont t ralises : vcom Z:/VHDL/VONNEUMAN/TESTADD.VHD ModelTechnology ModelSim SE vcom 6.3a compiler 2007, 06 Jun 25 2007 # - Loading package standard # - Loading package std_logic_1164 # - Compiling entity TestPorteET # - Compiling architecture test of TestPorteET Lancez ensuite la simulation Simulate > Start simulation . Choisissez alors lentit TestPorteET disponible dans la librairie work ; Demandez lafchage de la vue wave, pour cela, choisissez View > Wave ; 7

Ajoutez ensuite les signaux de lentit de test, pour cela, choisissez View > Objects Ajouter des signaux dans la fentre dobservation des chornogrammes (wave), pour cela, slectionnez un signal dans la fentre Objects et cliquez droit sur ce signal, puis Add to wave > Selected signal . Vous pouvez aussi ajouter dun coup tous les signaux de lentit de test en choisissant Add to wave > Signals in region ; Fnalement vous pouvez aussi afcher tous les signaux de tout le systme (toutes les profondeurs de la hirarchie), en slectionnant Add to wave > Signals in design ; Vriez le bon fonctionnement de lentit laide des chronogrammes. Pour cela lancez la simulation. Celleci se lance par pas de 100ns (valeur par dfaut qui est modiable dans la barre de boutons). Pour lancer une simulation, choisissez Simulate > Run ;

Liste des lments concevoir

Procdez comme indiqu dans la section prcdente pour modliser et simuler les lments suivants : Porte OU ; A laide des deux entits prcdemment ralises, dcrivez une entit structurelle assurant le calcul S = A . B + C; Porte inverseuse ; Elment de mise en haut impdance ; Multiplexeur 2 vers 1 ; Multiplexeur N vers 1 ; Dcodeur 1 parmi 8 ; Dcodeur 1 parmi N ; Registre 1 bit ; Registre N bits ;