Vous êtes sur la page 1sur 16

Les circuits logiques

programmables

ModelSim
La simulation
VHDL

Lt-Col. T. ARICH
Sous-Département Math-Informatique
02/04/2021 1
Langage VHDL
Exemple : Additionneur complet 1 bit (1)

 Additionneur complet 1 bit:


 trois entrées (a, b, et cin la
retenue entrante),
 et deux sorties (le bit de
somme s et le bit de retenue
sortante cout).

02/04/2021 Les PLD : Outils logiciels et méthodologies de 2


conception
Langage VHDL
Exemple2 : Additionneur complet 1 bit (2)

 Déclaration des bibliothèques


– Le paquetage std_logic_1164 de la
bibliothèque standard IEEE  définit le type std_logic qui
correspond à un type énuméré sur 9 états :
 Par exemple les états haute imédance 'Z' et inconnu 'X' font
partie de ces 9 états.
– Le paquetage numeric_std déclare et décrit des fonctions
sur les variables de type :
 std_logic ,
 unsigned (vecteur de std_logic non signé),
 et signed (vecteur de std_logic signé).
– Ces fonctions sont arithmétiques, de comparaison et de
conversion de type.
– Dans le langage VHDL de base, les fonctions arithmétiques
ne sont disponibles que pour le type entier integer.
02/04/2021 Les PLD : Outils logiciels et méthodologies de 3
conception
Langage VHDL
Exemple2 : Additionneur complet 1 bit (3)

 Description de l'architecture
– Avant de décrire l'architecture, il est nécessaire de
déclarer un signal intermédiaire :
 resultat, de type unsigned sur 2 bits
 pour pouvoir effectuer l'addition. 

02/04/2021 Les PLD : Outils logiciels et méthodologies de 4


conception
Langage VHDL
Exemple2 : Additionneur complet 1 bit (4)
 Description de l'architecture

– L'architecture déclarée après le mot-clef begin consiste à coder le signal resultat en


utilisant l'opérateur + et les entrées étendues à 2 bits du fait que l'opérateur + du
paquetage numeric_std est homogène. L'extension à 2 bits se fait avec l'opérateur de
concaténation & .
– Les sorties s et cout sont donc extraites du signal resultat en considérant le bit de
poids séparément conformément à l'algorithme d'addition   2*cout + s = a + b + cin.
– Il faut noter qu'il n'est pas possible de coder directement s & cout car l'opérateur &
est un opérateur binaire qui ne peut servir que dans l'expression d'affectation et non
dans l'expression affectée.
02/04/2021 Les PLD : Outils logiciels et méthodologies de 5
conception
Langage VHDL
Simulation et synthèse

Ce qui est synthétisable est simulable

Ce qui est simulable n’est pas nécessairement

synthétisable

02/04/2021 Les PLD : Outils logiciels et méthodologies de 6


conception
Langage VHDL
Exemple de description VHDL non synthétisable

 Soit la description VHDL suivante :


Horloge <= not Horloge after 50 ns;
 Cela correspond au chronogramme suivant :

 Description d'une horloge à 10 Mhz


 Description correcte au sens du langage
 Description parfaitement simulable
 La description est non synthétisable : Aucun circuit
ne correspond à cette fonctionnalité
02/04/2021 Les PLD : Outils logiciels et méthodologies de 7
conception
Langage VHDL
Simulation VHDL

 Simulation VHDL beaucoup plus


rapide
 Un testbench contient
– Un testbench ne contient pas
forcement d’entrée sortie
(déclaration d’entité vide)
– L’instanciation du circuit à
simuler
– La génération des stimulis
(vecteurs de test)
– La vérification des sorties (si
possible)
 Les outils actuels génèrent
Modèle de test de l’additionneur à 1 bit
automatiquement le testbench
02/04/2021 Les PLD : Outils logiciels et méthodologies de 8
conception
Langage VHDL
Simulation VHDL (2)

 Exemple :
 full_add.vhd : fichier
contenant la description
VHDL d'un Full-Adder
(additionneur complet 1
bit).
 testbench.vhd : fichier
contenant les stimuli et
l'environnement de test de
l'additionneur.

02/04/2021 Les PLD : Outils logiciels et méthodologies de 9


conception
Langage VHDL
Simulation VHDL (3)
 Le fichier full_add.vhd ne contient
que la description de
l'additionneur.
 Pour vérifier que cette description
est correcte, on peut en effectuer
une simulation.
 Pour cela, on va lui présenter des
vecteurs d'entrée soigneusement
choisis, et vérifier que les sorties
correspondent bien aux attentes.
 Pour cela, on va modéliser (en
VHDL toujours) un environnement
de test. C’est le fichier
testbench.vhd.

02/04/2021 Les PLD : Outils logiciels et méthodologies de 10


conception
Langage VHDL
Simulation VHDL (4)
 Structure d'un testbench :
 Comme pour l'additionneur,
l'environnement de test est un
module. Mais ce module n'a ni
entrées ni sorties : il est autonome,
produit lui-même les signaux à
envoyer à l'additionneur, et vérifie
que les sorties de l'additionneur
sont bien correctes.

 C’est l’environnement de test de


l'additionneur.

02/04/2021 Les PLD : Outils logiciels et méthodologies de 11


conception
Langage VHDL
Simulation VHDL (5)
 Structure d'un testbench :
 Déclaration des signaux :
 Il nous faut déclarer une
équipotentielle pour chaque entrée et
sortie de l'additionneur.
 Les signaux connectés aux entrées de
l'additionneur sont produits par le
testbench de façon séquentielle (les
uns après les autres).
 Le composant prototype component
de full_add doit être déclaré pour
pouvoir instancier full_add et
compiler le testbench
indépendamment.

02/04/2021 Les PLD : Outils logiciels et méthodologies de 12


conception
Langage VHDL
Simulation VHDL (6)
 Structure d'un testbench :
 Instantiation de l'additionneur :
L'additionneur full-add est instancié et
a pour nom d'instance
inst_additionneur_en_test

 Génération des vecteurs de test :


Nous ne testerons pas toutes les
combinaisons d'entrées possibles,
mais juste 4 d'entre elles. Entre
chaque combinaison, nous ferons une
pause (virtuelle) de 5ns, donnée par
l'instruction wait for 5ns;

02/04/2021 Les PLD : Outils logiciels et méthodologies de 13


conception
Langage VHDL
Simulation VHDL (7)
 Structure d'un testbench :
 Génération des vecteurs de test :
 Notez qu'il n'y a pas de liste de
sensibilité car le processus utilise
l'instruction wait pour spécifier les
points d'arrêt. Dans ce ca c'est la
valeur du temps physique time qui
est utilisé comme point d'arrêt du
processus.
 La génération des vecteurs de test
est produite de façon séquentielle, au
moyen d'un processus ayant des
points d'arrêts wait à chaque moment
où les entrées doivent changer.

02/04/2021 Les PLD : Outils logiciels et méthodologies de 14


conception
Langage VHDL
Simulation VHDL (8)
 La simulation :
 Le module additionneur et son environnement de test étant écrit, reste à
lancer effectivement la simulation. Pour cela, nous allons utiliser le simulateur
VHDL Modelsim.
 Dans un premier temps, il faut analyser (compiler) les fichiers. Avant toute
chose, il faut créer la bibliothèque work qui est la bibliothèque par défaut qui
va contenir les résultats de compilation. Placez-vous dans le répertoire
contenant les fichiers testbench.vhd et full_add.vhd et lancez la commande :
> vlib work
 La compilation se fait avec les commandes suivantes :
> vcom full_add.vhd
>vcom testbench.vhd
 Corriger d'éventuelles erreur avant de passer à la simulation.

02/04/2021 Les PLD : Outils logiciels et méthodologies de 15


conception
Langage VHDL
Simulation VHDL (9)
 La simulation :
 Il faut maintenant créer un simulateur de l'entité "test" de plus haut niveau
décrite dans testbench.vhd.
 Pour cela, lancez la commande :
> vsim test
 L'élaboration de test est effectuée et la fenêtre ModelSim apparaît pour lancer la
simulation en graphique.
 A partir de la console ModelSim, Utilisez la commande suivante pour demander le
chronogramme des signaux de test :  
VSIM >  add wave  *
 Une fenêtre contenant les signaux à tracer apparaît de façon à visualiser les
chronogrammes. Lancez l'execution de la simulation pendant 20 ns par :
VSIM > run 20 ns
 Examinez les chronogrammes. Sont ils corrects ? 

02/04/2021 Les PLD : Outils logiciels et méthodologies de 16


conception