TUTORIAL ModelSim VHDL

TUTORIAL ModelSim VHDL

Documents
9 pages
Lire
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

É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 ...
1 1.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 ...

Sujets

Informations

Publié par
Nombre de visites sur la page 648
Langue Français
Signaler un problème
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 logicielModelSimdeMentorGraphics. 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 langageVHDL, 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 section 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 ...
1.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 une excution, son but est de permettre la description de tout sys-tme lectronique, d’en valider le fonctionnement avant de pas-ser á la mise en œuvre matrielle.
La figure 1 illustre les diffrentes utilisations du langage VHDL.
‘ L’objectif de ce document concerne les aspects description et simulation. Les autres facettes du langage seront abordes par l’utilisation d’autres outils plus spcifiquement ddis á la conception matrielle de circuits.
FIG. 1 – VHDL, á quoi Ça sert ?
La conception d’un systme passe par sa description. Cette description est toujours ralise en deux tapes au minimum. La premire tape consiste á dcrire le systme comme uneboite noire, alors que la seconde s’intresse á la description interne de la boite noire. Si la description de la vue externe (boite noire) ne pose gnralement pas de problme, la vue interne (l’architecture) peut quant á elle tre ralise selon plusieurs modles de description. Rappelons brivement les trois types de description utilisables en VHDL : – description comportementale : il s’agit d’une description indiquant le comportement d’un systme. Gnra-lement ralise sous la forme de processus, elle s’apparente á du code procdural classique ; – description structurelle : il s’agit d’une description schmatique d’un systme. S’appuyant sur des compo-sants disponibles dans une bibliothque et sur des signaux. Cette description est l’exacte reprsentation du schma lectrique du systme ; – description flot de donnes : il s’agit d’une description indiquant comment un flot de donnes traverse un systme. Le flot des sorties est exprim en fonction du flot des entres.
2
Manipulation de l’outil ModelSim
L’outil ModelSimest disponible sur les PC windows. Il peut tre ncessaire de configurer l’accs au serveur de 1 licence, pour cela rfrez á la note . Une fois l’outil ModelSimlanc, vous pouvez soit reprendre un projet en cours soit crer un nouveau projet. Nous allons dans un premier temps expliquer les principales fonctionnalits de l’outil. Cette prsentation sera ensuite accompagne d’un petit guide qui vous permettra de compiler et simuler votre premire entit.
2.1
DÉbuter un projet (initialisation du projet)
Lorsque vous dbutez votre projet, vous devez configurer l’outilModelSimafin qu’il organise correctement les diffrents fichiers que vous allez crer et manipuler. 1. â l’aide deWindows, crez un rpertoire de travail sur votre espace disqueZ :/VHDL/Projet 2. Dans ModelSim, modifier le rpertoire de travail par le menu : File —>Change directory Slectionnez le rpertoire que vous venez de crerZ :/VHDL/Projet.
1 Sur PC, avant de pouvoir lancer pour la premire fois l’outil ModelSim, vous devez tout d’abord activer la licence, pour cela lancer leLicensing wisard, cliquez surContinue, vrifiez que le serveur de licence est bien adress1763@mark, validez puis rpondezYesá la fentre suivante. Une fois cette manipulation effectue, vous pouvez lancer ModelSim á partir du menu "Dmarrer".
2
3. Pour pouvoir stocker correctement vos units de conception VHDL, vous devez crer une bibliothque 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 bibliothque que seront places toutes les entits com-piles sans erreur. 4. Vous devez ensuite crer un projet : File —>New —>Project Tapez un nom de projet, par exempleprojet, laisser cochcopy library mappingset valider. 5. L’outil vous demande d’ajouter desitemsdans le projet. Pour l’instant, cliquer surClose. Vous pouvez ensuite passer au dveloppement de votre systme et aux compilations des diffrentes spcifica-tions.
2.2 Reprise d’un projet Lorsque vous reprenez votre travail sur un projet que vous avez djá initialis et sur lequel vous avez djá travaill, vous devez vous ouvrir le projet souhait. 1. Aprs le lancement du logicielModelSim, placez vous dans votre rpertoire de travail sur votre espace disque par le menu : File —>Change directory Slectionnez le rpertoire de travailZ :/VHDL/Projet. 2. Ouvrez votre projet : File —>Open —>Project Slection du projet. Recherchez le fichier.mpfqui correspond á votre projet (normalement, ce fichier doit tre dans le rpertoire que vous avez slectionn par le menu prcdent).
2.3 La compilation Le lancement du compilateur s’effectue par le menu : Compile —>Compile Compile du logiciel. Une fentre s’ouvre alors et vous donne accs aux fichiers de votre rpertoire de travail. Slectionnez un fichier et cliquez surCompile.La phase de compilation est alors active.
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 dclaration d’entits, d’architectures, de paquetages, de corps de paquetage, etc) ; – Afin d’viter une surabondance de fichiers dans votre rpertoire de travail, nous vous conseillons de placer le corps d’un paquetage dans le mme fichier que la spcification de ce mme paquetage. De mme, regroupez dans un mme fichier, la dclaration 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 units utilises (par l’unit á compiler) soient prsentes dans la bibliothque. 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 entits feuilles. On entend par entit feuille, toute entit dcrite de faÇon comporte-mentale ; 3. compilation de vos entits dcrivant un sous-systme, c’est á dire des entits dcrites sous la forme d’une structure de composants ; 4. compilation de votre entit systme, c’est á dire de l’entit du plus haut niveau regroupant l’ensemble des sous-systmes (relis par des signaux) ;
2.3.3
RÉsultats de compilation
Ds que la compilation d’une unit est ralise sans erreur, l’unit en question apparaït dans la bibliothque de travail. Vous pouvez la visualiser en cliquant sur l’ongletLibraryduworkspace; Dans cet onglet, vous voyez alors tous les paquetages et entits prsents dans la bibliothqueWork, et pour chaque entit vous pouvez obtenir la liste de toutes les architectures dcrites et compiles sans erreur. â partir de cette fentre, vous pouvez supprimer un paquetage ou une entit ou une architecture. Vous observerez que les paquetagesIEEEsont prsents dans la librairie.
2.3.4
Tests des unitÉs rÉalisÉes
N’attendez pas que tout votre systme soit ralis pour effectuer des tests sur vos entits. La dmarche idale consiste á tester chaque entit ds que sa compilation est correcte. Pour cela, dcrivez 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, slectionnez le menuSimulate —>Start simulation 2. Une fentre est alors ouverte et vous propose l’ensemble des units prsentes dans la bibliothque. S-lectionnez une entit SIMULABLE (ou une configuration), c’est á dire une entit autonome qui instancie l’entit á simuler et qui gre les signaux d’entre de l’entit á simuler. Les entits que vous allez dve-lopper seront stockes dans la librairieWork; 3. Ouvrez ensuite les fentres de simulation par le menuView —>Wave
4. Par dfaut, 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, slectionnezTestPorteETdans l’ongletsimduworkspace, cliquez surAdd, puisAdd to wave. La fentre 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 modliser et simuler en VHDL un lment de base qui nous permettra de prendre en main l’outil ainsi que le langage.
3.1 Initialisation du projet – â l’aide deWindows, crez un rpertoire de travail sur votre espace disqueZ :/VHDL/Tutorial/ – Choisissez le menuFile —>Change Directoryet slectionnez le rpertoireZ :/VHDL/Tutorial; – Choisissez le menuFile —>New —>Libraryet tapezWORK(nom de la bibliothque de travail dans laquelle toutes vos units seront stockes) ; – Choisissez le menuFile —>New —>Projectet tapeztutorial(nom du projet) ;
3.2 Compilation d’une unitÉ fonctionnelle – Crer 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’entit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 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 fentre vous indiquant que les actions suivantes ont t ralises : 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. Dveloppez la li-brairieWork, vous devez voir apparaïtre l’entitPorteETdans cette librairie ; – Crer 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 ;
– Slectionnez 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 fentre vous indiquant que les actions suivantes ont t ralises : 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. Dveloppez la li-brairieWork, vous devez voir apparaïtre l’entitPorteETet l’architectureComportementaledans cette librairie ;
3.3
Simulation de l’unitÉ fonctionnelle
Pour parvenir á tester / simuler / valider notre entitPorteETil faut dcrire untestbench. Letestbenchdoit instancier un composant detypePorteETet faire voluer les signaux d’entre de la porte ET. – Dcrivez 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’entres 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;
Std_Logic ; Std_Logic ; Std_Logic
SIGNAL s_entree1 : Std_Logic := ’0’;
6
BEGIN
SIGNAL SIGNAL
s_entree2 : Std_Logic := ’0’; s_sortie : Std_Logic := ’Z’;
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;
– Slectionnez 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 fentre vous indiquant que les actions suivantes ont t ralises : 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’entitTestPorteETdisponible 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 fentre d’observation des chornogrammes (wave), pour cela, slectionnez un signal dans la fentreObjectset 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 systme (toutes les profondeurs de la hi-rarchie), en slectionnant Add to wave —>Signals in design; – Vrifiez le bon fonctionnement de l’entit á l’aide des chronogrammes. Pour cela lancez la simulation. Celle-ci se lance par pas de100ns(valeur par dfaut qui est modifiable dans la barre de boutons). Pour lancer une simulation, choisissez Simulate —>Run;
4
Liste des ÉlÉments À concevoir
Procdez comme indiqu dans la section prcdente pour modliser et simuler les lments suivants : – Porte OU ; – A l’aide des deux entits prcdemment ralises, dcrivez une entit structurelle assurant le calcul S = A . B + C; – Porte inverseuse ; – Elment de mise en haut impdance ; – Multiplexeur 2 vers 1 ; – Multiplexeur N vers 1 ; – Dcodeur 1 parmi 8 ; – Dcodeur 1 parmi N ; – Registre 1 bit ; – Registre N bits ;
8