ÉCOLE NATIONALE SUPÉRIEURE de SCIENCES APPLIQUÉES et de TECHNOLOGIE TECHNOPOLE ANTICIPA LANNION UNIVERSITÉ DE RENNES 1 TUTORIAL ModelSim VHDL D. Chillet, E. Casseau Le 14 novembre 2008 LOGICIEL et SYSTÈME INFORMATIQUE - ÉLECTRONIQUE et INFORMATIQUE INDUSTRIELLE - OPTRONIQUE ENSSAT - Technopole Anticipa - BP 80518 - 6 rue de Kérampont - 22305 LANNION Cedex - Siret 193 509 361 00278 - APE 9215 Téléphone (33) 02 96 46 50 30 - Télécopie (33) 02 96 37 01 99 - Email ...@enssat.fr - Minitel 36 15 ENSSAT - Serveur WWW http://www.enssat.fr/1 Tutorial ModelSim Cette première section a pour objectif de vous faire prendre en main un compilateur et un simulateur pour le langage VHDL. Il s’agit du logicielModelSim deMentorGraphics. A l’Enssat, la version ModelSim SE 6.3ade cet outil est installé sur les machines de type PC. Après un bref rappel concernant le langage VHDL, ce tutorial présente la manière de créer un projet ainsi que la façon de reprendre un projet en cours. La première section de ce tutorial présente les différentes manipulations de l’outil ModelSim. La deuxième vous guide dans la conception d’une entité de base. Dans la troisième section, nous listons les éléments de base que vous pourrez développer afin de compléter votre compréhension du langage et de l’outil. Bonne lecture et bons développements ... 11.1 Rappel : Qu’est ce que le langage VHDL ? VHDL est un langage de description matérielle. À la différence des langages informatiques classiques, VHDL ne vise pas ...
Cette premire section a pour objectif de vous faire prendre en main un compilateur et un simulateur pour le langage VHDL. Il s’agit du logicielModelSimdeMentorGraphics. A l’Enssat, la version ModelSim SE 6.3ade cet outil est install sur les machines de type PC.
Aprs un bref rappel concernant le langageVHDL, ce tutorial prsente la manire de crer un projet ainsi que la faÇon de reprendre un projet en cours. La premire section de ce tutorial prsente les diffrentes manipulations de l’outil ModelSim. La deuxime section vous guide dans la conception d’une entit de base.
Dans la troisime section, nous listons les lments de base que vous pourrez dvelopper afin de complter votre comprhension du langage et de l’outil.
Bonne lecture et bons dveloppements ...
1.1
Rappel : Qu’est 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 sys-tme lectronique, d’en valider le fonctionnement avant de pas-ser á la mise en œuvre matrielle.
La figure 1 illustre les diffrentes utilisations du langage VHDL.
‘ L’objectif de ce document concerne les aspects description et simulation. Les autres facettes du langage seront abordes par l’utilisation d’autres outils plus spcifiquement ddis á la conception matrielle de circuits.
FIG. 1 – VHDL, á quoi Ça sert ?
La conception d’un systme passe par sa description. Cette description est toujours ralise en deux tapes au minimum. La premire tape consiste á dcrire le systme comme uneboite noire, alors que la seconde s’intresse á 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 (l’architecture) peut quant á elle tre ralise selon plusieurs modles de description. Rappelons brivement les trois types de description utilisables en VHDL : – description comportementale : il s’agit d’une description indiquant le comportement d’un systme. Gnra-lement ralise sous la forme de processus, elle s’apparente á du code procdural classique ; – description structurelle : il s’agit d’une description schmatique d’un systme. S’appuyant sur des compo-sants disponibles dans une bibliothque et sur des signaux. Cette description est l’exacte reprsentation du schma lectrique du systme ; – description flot de donnes : il s’agit d’une description indiquant comment un flot de donnes traverse un systme. Le flot des sorties est exprim en fonction du flot des entres.
2
Manipulation de l’outil ModelSim
L’outil ModelSimest disponible sur les PC windows. Il peut tre ncessaire de configurer l’accs au serveur de 1 licence, pour cela rfrez á la note . Une fois l’outil 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 l’outil. Cette prsentation sera ensuite accompagne d’un petit guide qui vous permettra de compiler et simuler votre premire entit.
2.1
DÉbuter un projet (initialisation du projet)
Lorsque vous dbutez votre projet, vous devez configurer l’outilModelSimafin qu’il organise correctement les diffrents fichiers que vous allez crer et manipuler. 1. â l’aide deWindows, crez un rpertoire de travail sur votre espace disqueZ :/VHDL/Projet 2. Dans ModelSim, modifier le rpertoire de travail par le menu : File —>Change directory Slectionnez le rpertoire que vous venez de crerZ :/VHDL/Projet.
1 Sur PC, avant de pouvoir lancer pour la premire fois l’outil ModelSim, vous devez tout d’abord activer la licence, pour cela lancer leLicensing wisard, cliquez surContinue, vrifiez que le serveur de licence est bien adress1763@mark, validez puis rpondezYesá la fentre suivante. Une fois cette manipulation effectue, vous pouvez lancer ModelSim á partir du menu "Dmarrer".
2
3. Pour pouvoir stocker correctement vos units de conception VHDL, vous devez crer une bibliothque de travail : File —>New —>Library Laisser les nomsworkcomme librairie de travail et physique, et cochera new library and a logical mapping to it. C’est dans cette bibliothque que seront places toutes les entits com-piles sans erreur. 4. Vous devez ensuite crer un projet : File —>New —>Project Tapez un nom de projet, par exempleprojet, laisser cochcopy library mappingset valider. 5. L’outil vous demande d’ajouter desitemsdans le projet. Pour l’instant, cliquer surClose. Vous pouvez ensuite passer au dveloppement de votre systme et aux compilations des diffrentes spcifica-tions.
2.2 Reprise d’un 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 logicielModelSim, placez vous dans votre rpertoire de travail sur votre espace disque par le menu : File —>Change directory Slectionnez le rpertoire de travailZ :/VHDL/Projet. 2. Ouvrez votre projet : File —>Open —>Project Slection du projet. Recherchez le fichier.mpfqui correspond á votre projet (normalement, ce fichier doit tre dans le rpertoire que vous avez slectionn par le menu prcdent).
2.3 La compilation Le lancement du compilateur s’effectue par le menu : Compile —>Compile Compile du logiciel. Une fentre s’ouvre alors et vous donne accs aux fichiers de votre rpertoire de travail. Slectionnez un fichier et cliquez surCompile.La phase de compilation est alors active.
2.3.1 Remarques – Utilisez intelligemment les indentations et les commentaires pour que vos fichiers soient lisibles et facilement maintenables. – Donnez l’extension.vhdá tous vos fichiers VHDL (fichiers de dclaration d’entits, d’architectures, de paquetages, de corps de paquetage, etc) ; – Afin d’viter une surabondance de fichiers dans votre rpertoire de travail, nous vous conseillons de placer le corps d’un paquetage dans le mme fichier que la spcification de ce mme paquetage. De mme, regroupez dans un mme fichier, la dclaration d’entit (entity, generic, port) et son ou ses architectures. – crivez un fichier par entit ou par paquetage.
2.3.2 Ordre de compilation de vos fichiers L’ordre de la compilation de vos fichiers est important. Il faut toujours que toutes les units utilises (par l’unit á compiler) soient prsentes dans la bibliothque. Ce qui signifie que vous devez respecter l’ordre de compilation suivant :
3
1. compilation de vos paquetages. Si vous en avez plusieurs, compilez d’abord ceux qui n’utilisent aucun autre paquetage, ensuite vous compilerez les autres ; 2. compilation de vos entits feuilles. On entend par entit feuille, toute entit dcrite de faÇon comporte-mentale ; 3. compilation de vos entits dcrivant un sous-systme, c’est á dire des entits dcrites sous la forme d’une structure de composants ; 4. compilation de votre entit systme, c’est á dire de l’entit du plus haut niveau regroupant l’ensemble des sous-systmes (relis par des signaux) ;
2.3.3
RÉsultats de compilation
Ds que la compilation d’une unit est ralise sans erreur, l’unit en question apparaït dans la bibliothque de travail. Vous pouvez la visualiser en cliquant sur l’ongletLibraryduworkspace; Dans cet onglet, vous voyez alors tous les paquetages et entits prsents dans la bibliothqueWork, 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 paquetagesIEEEsont prsents dans la librairie.
2.3.4
Tests des unitÉs rÉalisÉes
N’attendez 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. Com-piler alors cette entit et lancer une simulation.
2.4
2.4.1
La simulation
Lancez une simulation
1. Pour lancer le simulateur, slectionnez le menuSimulate —>Start simulation 2. Une fentre est alors ouverte et vous propose l’ensemble des units prsentes dans la bibliothque. S-lectionnez une entit SIMULABLE (ou une configuration), c’est á dire une entit autonome qui instancie l’entit á simuler et qui gre les signaux d’entre de l’entit á simuler. Les entits que vous allez dve-lopper seront stockes dans la librairieWork; 3. Ouvrez ensuite les fentres de simulation par le menuView —>Wave
4. Par dfaut, l’intervalle de simulation est de100ns, vous pouvez changer cette valeur en choisissant le menu : Simulate —>Runtime options
5. Pour visualiser les signaux de l’entit de test, slectionnezTestPorteETdans l’ongletsimduworkspace, cliquez surAdd, puisAdd to wave. La fentre des chronogrammes doit alors faire apparaïtre la liste des signaux de l’entit.
6. Pour lancer un pas de simulation (de100ns), choisissez
7. Pour recommencer une simulation, choisissez
4
Simulate —>Run —>Run
Simulate —>Run —>Restart.
3
Conception d’une entitÉ de base
Dans cette section, nous allons modliser et simuler en VHDL un lment de base qui nous permettra de prendre en main l’outil ainsi que le langage.
3.1 Initialisation du projet – â l’aide deWindows, crez un rpertoire de travail sur votre espace disqueZ :/VHDL/Tutorial/ – Choisissez le menuFile —>Change Directoryet slectionnez le rpertoireZ :/VHDL/Tutorial; – Choisissez le menuFile —>New —>Libraryet tapezWORK(nom de la bibliothque de travail dans laquelle toutes vos units seront stockes) ; – Choisissez le menuFile —>New —>Projectet tapeztutorial(nom du projet) ;
3.2 Compilation d’une unitÉ fonctionnelle – Crer un nouveau fichier VHDL dans votre projetProject —>Add to project —>New File. Saisir le nom de fichierand, le fichier sera cr avec l’extension.vhdet laissez l’optionAdd file as type surVHDLet l’optionFoldersurTopLevel. – En double cliquant sur le nom du fichier dans leworkspace, un diteur de texte vous permettra de saisir la description de l’entitPorteET. 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 menuCompile —>Compile selected; – Lorsque la compilation est correcte, vous devez voir un messageCompile of <nom fichir vhdl> was successful; – En double cliquant sur cette ligne, vous devez voir apparaïtre 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 l’ongletLibraryduworkspace. Dveloppez la li-brairieWork, vous devez voir apparaïtre l’entitPorteETdans cette librairie ; – Crer un nouveau fichier VHDL qui contiendra la description de l’architecture de l’entit. Pour cela, Project —>Add to project —>New File. Saisissez le nom de fichierArchCompAnd, le fichier sera cr avec l’extension.vhdet laissez l’optionAdd file as typesurVHDLet l’optionFoldersurTopLevel. Dans ce fichier, 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 fichierArchCompAnd.vhddans leworkspacepuis cliquez droit et choisissez Compile —>Compile selected; – Lorsque la compilation est correcte, vous devez voir un messageCompile of <nom fichir vhdl> was successful; – En double cliquant sur cette ligne, vous devez voir apparaïtre 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 l’ongletLibraryduworkspace. Dveloppez la li-brairieWork, vous devez voir apparaïtre l’entitPorteETet l’architectureComportementaledans cette librairie ;
3.3
Simulation de l’unitÉ fonctionnelle
Pour parvenir á tester / simuler / valider notre entitPorteETil faut dcrire untestbench. Letestbenchdoit instancier un composant detypePorteETet faire voluer les signaux d’entre de la porte ET. – Dcrivez une entit de test pour la porte ETTestAndainsi qu’une architecture pour cette entit. L’archi-tecture instanciera une porte ET et fera voluer les signaux d’entres de la porte ET. Stocker le tout dans le fichierTestAnd.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;
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 fichierTestAnd.vhddans leworkspacepuis cliquez droit et choisissez Compile —>Compile selected; – Lorsque la compilation est correcte, vous devez voir un messageCompile of <nom fichir vhdl> was successful; – En double cliquant sur cette ligne, vous devez voir apparaïtre 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 l’entitTestPorteETdisponible dans la librairiework; – Demandez l’affichage de la vuewave, pour cela, choisissez View —>Wave;
7
– Ajoutez ensuite les signaux de l’entit de test, pour cela, choisissez View —>Objects – Ajouter des signaux dans la fentre d’observation des chornogrammes (wave), pour cela, slectionnez un signal dans la fentreObjectset cliquez droit sur ce signal, puis Add to wave —>Selected signal. – Vous pouvez aussi ajouter d’un coup tous les signaux de l’entit de test en choisissant Add to wave —>Signals in region; – Fnalement vous pouvez aussi afficher tous les signaux de tout le systme (toutes les profondeurs de la hi-rarchie), en slectionnant Add to wave —>Signals in design; – Vrifiez le bon fonctionnement de l’entit á l’aide des chronogrammes. Pour cela lancez la simulation. Celle-ci se lance par pas de100ns(valeur par dfaut qui est modifiable dans la barre de boutons). Pour lancer une simulation, choisissez Simulate —>Run;
4
Liste des ÉlÉments À concevoir
Procdez comme indiqu dans la section prcdente pour modliser et simuler les lments suivants : – Porte OU ; – A l’aide 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 ;