Vous êtes sur la page 1sur 9

Universit Sidi Mohammed Ben Abdellah

Facult des Sciences Dhar Mehraz de FES

TUTORIAL ModelSim
VHDL
Pr. Rachid EL ALAMI

A. U : 2014/2015
TP du VHDL

A. U : 2014/2015
TP du VHDL

Tutorial Modelsim

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.

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 afin de complter
votre comprhension du langage et de loutil.
Bonne lecture et bons dveloppements ...

Rachid EL ALAMI

A. U : 2014/2015
TP du VHDL

Tutorial Modelsim

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 figure 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 spcifiquement 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 flot de donnes : il sagit dune description indiquant comment un flot de donnes traverse un
systme. Le flot des sorties est exprim en fonction du flot des entres.

Manipulation de loutil ModelSim

Une fois loutil ModelSim lanc, 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 configurer loutil ModelSim afin quil organise correctement les
diffrents fichiers 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, modifier le rpertoire de travail par le menu :
File > Change directory
Slectionnez le rpertoire que vous venez de crer Z :/VHDL/Projet.

Rachid EL ALAMI

A. U : 2014/2015
TP du VHDL

Tutorial Modelsim

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 spcifications.

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 fichier .mpf qui 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 seffectue par le menu :


Compile > Compile Compile
du logiciel. Une fentre souvre alors et vous donne accs aux fichiers de votre rpertoire de travail. Slectionnez
un fichier 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 fichiers soient lisibles et facilement
maintenables.
Donnez lextension .vhd tous vos fichiers VHDL (fichiers de dclaration dentits, darchitectures, de
paquetages, de corps de paquetage, etc) ;
Afin dviter une surabondance de fichiers dans votre rpertoire de travail, nous vous conseillons de placer le
corps dun paquetage dans le mme fichier que la spcification de ce mme paquetage. De mme, regroupez
dans un mme fichier, la dclaration dentit (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

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

Rachid EL ALAMI

A. U : 2014/2015
TP du VHDL

Tutorial Modelsim

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 configuration), 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

Simulate > Run > Run


Simulate > Run > Restart .

7. Pour recommencer une simulation, choisissez


4

Rachid EL ALAMI

A. U : 2014/2015
TP du VHDL

Tutorial Modelsim

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 fichier VHDL dans votre projet Project > Add to project > New File . Saisir le
nom de fichier and, le fichier 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 fichier 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 fichier VHDL qui contiendra la description de larchitecture de lentit. Pour cela,
Project > Add to project > New File .
Saisissez le nom de fichier ArchCompAnd, le fichier sera cr avec lextension .vhd et laissez loption Add
file as type sur VHDL et loption Folder sur TopLevel. Dans ce fichier, placez le code VHDL
suivant :
LIBRARY IEEE ;
5

Rachid EL ALAMI

A. U : 2014/2015
TP du VHDL

Tutorial Modelsim

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 fichier 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
fichier 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

Rachid EL ALAMI

A. U : 2014/2015
TP du VHDL

Tutorial Modelsim

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 fichier 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 laffichage de la vue wave, pour cela, choisissez
View > Wave ;
7

Rachid EL ALAMI

A. U : 2014/2015
TP du VHDL

Tutorial Modelsim

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 afficher tous les signaux de tout le systme (toutes les profondeurs de la hirarchie), en slectionnant
Add to wave > Signals in design ;
Vrifiez 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 modifiable dans la barre de boutons). Pour lancer une
simulation, choisissez
Simulate > Run ;

Rachid EL ALAMI