Vous êtes sur la page 1sur 45

Polycopi

Conception des systmes numrique


- Cours VHDL -

Gnie lectrique - 4 me anne

Bekkay HAJJI
ENSAO - Universit Mohamed Premier

Anne universitaire : 2011-2012


2
Table des matires

1 Introduction 7
1.1 Qu'est ce que VHDL ? . . . . . . . . . . . . . . . . . . . . . . 7
1.2 Avantages du VHDL . . . . . . . . . . . . . . . . . . . . . . . 8
1.3 Flot de conception d'un circuit numrique . . . . . . . . . . . 8

2 Structure d'un module VHDL 11


2.1 Entit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3 Dirents styles de description d'un circuit 17


3.1 Description comportementale . . . . . . . . . . . . . . . . . . 17
3.1.1 Process . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Description structurelle . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Description par ot de donnes . . . . . . . . . . . . . . . . . 25
3.4 Descriptions mixtes . . . . . . . . . . . . . . . . . . . . . . . . 26

4 Testbench 27
4.1 Structure du testbench . . . . . . . . . . . . . . . . . . . . . . 27
4.2 Exemples du testbench . . . . . . . . . . . . . . . . . . . . . 28
4.2.1 Testbench du demi-additionneur . . . . . . . . . . . . . 28
4.2.2 Testbench du diviseur de frquence . . . . . . . . . . . 29

5 Machines tats en VHDL 33


5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2 Types de Machine tat . . . . . . . . . . . . . . . . . . . . . 34
5.3 Diagramme d'tat . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.3.1 Machines d'tat en VHDL . . . . . . . . . . . . . . . . 35
5.3.2 Exemple d'une perceuse . . . . . . . . . . . . . . . . . 36

3
4 TABLE DES MATIRES

6 Quelques dtails du langage VHDL 39


6.1 Librairie IEEE . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.2 Oprateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.3 Objets et leurs types . . . . . . . . . . . . . . . . . . . . . . . 40
6.3.1 Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6.3.2 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
TABLE DES MATIRES 5

Avant propos
6 TABLE DES MATIRES
Chapitre 1
Introduction
Les avances technologiques de ces dernires annes continues stimuler
l'volution fulgurante des circuits logiques programmables. Nous disposons
actuellement de circuits avec plusieurs millions de portes. De plus, les fr-
quences de fonctionnement de ces circuits ne cessent d'augmenter, pour at-
teindre 400 500 Mhz. Ces volutions permettent d'orir des circuits logiques
de plus en plus performant un cot toujours plus faible. Le domaine d'utili-
sation de ces circuits ne se limite plus de petites applications priphriques
mais s'largit jusqu' l'intgration de systme processeur complet (SoPC).
Paralllement, la diminution du prix de ces composants ainsi que de leurs
outils de conceptions, les met la porte de toute PME (Petites et moyennes
entreprises ) dsireuse d'accder cette technologie.

Avec la complexit des systmes raliser, les mthodes conventionnelles


de description bases sur le dessin des schmas de portes logiques ont t
dlaisses. De nouvelles mthodes de descriptions ont vu le jour. L'association
de ces mthodes, avec un langage de description de haut niveau, apporte la
souplesse ncessaire une conception rapide, ecace, able et volutive. Le
langage VHDL (VHSIC Hardware Description Langage) fourni un trs bon
moyen de description et associ une mthodologie adapte, il permet de
raliser les projets les plus ambitieux.

1.1 Qu'est ce que VHDL ?


L'acronyme VHDL signie Very High Speed Integrated Circuit (VHSIC)
Hardware Description Langage (HDL). VHDL est un langage de programma-
tion complet. Le langage a t dvelopp pour le compte du gouvernement
amricain pour documenter la conception d'ASIC. Il est fortement inspir

7
8 CHAPITRE 1. INTRODUCTION

du langage ADA. Rapidement, des simulateurs de VHDL sont apparus, puis


des synthtiseurs capables de traduire un programme VHDL en une liste
d'interconnexions entre des portes logiques (netlist) pouvant tre ralise sur
un ASIC. Le langage VHDL est normalis par l'IEEE. La premire norme
remonte 1987. Des mises jour ont eu lieu en 1993, 2000, 2002 et 2008. Le
prsent document se base sur la norme 1076-2002 puisque la norme 1076-2008
n'a t publie qu'en janvier 2009. La norme plus rcente est mal suppor-
te par les outils de conception au moment de la prparation du prsent
document.

1.2 Avantages du VHDL


Les avantages de langage VHDL par rapport aux schmas sont les sui-
vants :
 Il permet de dcrire des systmes complexes complets ;
 Il favorise la dcomposition en modules paramtrables ;
 Il facilite l'tablissement de spcications et d'interfaces clairement d-
nies ; et,
 IL normalise l'change d'informations entre plusieurs groupes travaillant
sur un mme projet.
.
Le langage VHDL peut servir trois choses :
 la modlisation de circuits (surtout numriques) ;
 la description de circuits en vue de leur synthse (i.e. leur ralisation
matrielle) ; et,
 la documentation de circuits.

1.3 Flot de conception d'un circuit numrique


Un ot de conception est une squence d'oprations permettant d'obtenir
un circuit concret, implment dans une technologie donne, partir de sa
description. Un ot de conception typique de circuit numrique est illustr
la Figure 1.1. Les tapes principales du ot de conception sont les suivantes :

 Description : La description du module peut se faire par une combi-


naison de code HDL dans plusieurs langages, de schmas, diagrammes
d'tats ou encore ots de donnes.

 Synthse : La synthse du code HDL est eectue par un outil de


1.3. FLOT DE CONCEPTION D'UN CIRCUIT NUMRIQUE 9

Figure 1.1  Flot de conception d'un circuit numrique.

synthse, ou synthtiseur. Le synthtiseur produit une description du


circuit en termes d'lments logiques simples. Le synthtiseur indique
aussi les inter-connexions entre ces composantes. Le produit du synth-
tiseur est communment appel  liste des inter-connexions (netlist).

 Simulation fonctionnelle : Le circuit ainsi synthtis est simul pour


tester s'il fonctionne correctement ou non, ce type de simulation ne tient
pas compte des temps de propagation.

 Placement& routage : L'outil va choisir l'emplacement des lments


logiques, ainsi que les dfrentes routes (interconnexions entre eux).

 Analyse temporelle : Cette tape consiste en l'analyse des dlais


de propagations. Pour fournir des indications sur les performances en
vitesse du circuit.
. Ce document est articul autours de cinq chapitres :
 Le chapitre 1 donne les concepts de base du langage VHDL.
 Le chapitre 2 prsente les direntes mthodes de description d'un
circuit numriques.
 Le testbench est trait dans le chapitre 4 avec des exemples d'appli-
cations.
 Le dernier chapitre de ce document aborde d'une manire dtaille
les machines d'tats en VHDL
10 CHAPITRE 1. INTRODUCTION
Chapitre 2
Structure d'un module VHDL
Une description VHDL se compose de deux parties indissociables savoir :

 L'entit (ENTITY) : Elle dcrit l'interface du circuit avec le monde


extrieur. Il prcise le nom du module, les ports d'entrs/sorties ainsi
que leur types.

 L'architecture (ARCHITECTURE) : Elle dcrit le fonctionne-


ment du circuit. Elle peut contenir trois styles de descriptions savoir :
La description comportementale, structurelle et en n la description
dite ot de donnes. Ces trois formes peuvent tre utilises conjoin-
tement dans la description de l'architecture d'un circuit. Plusieurs ar-
chitectures peuvent tre associes une mme entit pour montrer
l'volution du processus de conception.

2.1 Entit
Le bloc Entit (Entity) dcrit la vue externe du circuit. Elle est consti-
tue d'une entte contenant son nom suivie de la liste des dirents signaux
entres/sorties (ports) qui constituent son interface. Chaque port possde :
 Un nom.
 Un mode, ce qui dnit le sens de transfert comme l'illustre le schma
de la gure 2.1.
 IN pour des signaux entrants.
 OUT pour des signaux sortants (non visibles l'intrieur de l'entit).
 BUFFER pour les signaux sortants qui peuvent tre aussi utiliss
l'intrieur de l'entit.
 INOUT pour les signaux bidirectionnels.

11
12 CHAPITRE 2. STRUCTURE D'UN MODULE VHDL

Figure 2.1  Sens du signal.

Un type, qui peut tre :

 Std_logic pour un signal (simple l)


 Std_logic_vector dans le cas d'un bus compos de plusieurs signaux
(une nappe de ls). Les dimensions seront donnes par les deux indices
extrmaux. Les ls d'une nappe peuvent tre indics dans le sens crois-
sant (par exemple de 0 15 (0 to 15)) ou dans le sens dcroissant (par
exemple de 32 1 (32 downto 1))

Description VHDL de l'entit "Blackbox" :


Dans cette exemple, l'entit est nomm black_box dont les ports sont :
 clk, rst : Signaux d'entrs de types std_logic.
 d: Signal d'entre de type std_logic_vector de 8 bits.
 co : Signal de sortie de type std_logic.
 q: Signal de sortie de type std_logic_vector

Figure 2.2  Entity.


2.1. ENTIT 13

La gure 2.3 donne la description en VHDL de l'entit Black_Box.

Figure 2.3  Description VHDL de l'entit "Black_Box

Description de l'entit de l'additionneur complet :

Figure 2.4  Additionneur.

Figure 2.5  Description VHDL de l'entit de l'additionneur.


14 CHAPITRE 2. STRUCTURE D'UN MODULE VHDL

2.2 Architecture
Le bloc architecture dcrit le fonctionnement interne du circuit. Chaque
architecture porte un identicateur et est relie une seule entit. Cependant,
une entit peut avoir plusieurs architectures. Le format du bloc architecture
est montr dans l'exemple ci-dessous.

Figure 2.6  Additionneur.


Le bloc architecture comporte deux parties : une partie dclarative et
un corps. Dans la partie dclarative, on peut retrouver des dclarations de
signaux, de constantes, de composantes et de types. On peut aussi y dnir
des sous-routines sous la forme de fonctions et de procdures. Dans le corps
de l'architecture on retrouve des instructions concurrents qui dcrivent le
comportement de l'entit laquelle l'architecture est rattache.

Architecture de l'additionneur : .
La gure 2.7 illustre l'architecture du demi additionneur par la description
de ot de donnes.

Figure 2.7  Architecture du demi additionneur.


2.3. EXEMPLES 15

2.3 Exemples
Exemple 1 : Code VHDL de l'additionneur complet

Figure 2.8  Demi additionneur.

Exemple 2 : Code VHDL de la bascule D ip-op

Cette bascule possde deux entres : la donne D et le signal d'horloge


clk. Son principe de fonctionnement est le suivant : a chaque front montant
de clk, la sortie q recopie l'entre d. La gure 2.9 prsente le code VHDL de
la bascule D.
16 CHAPITRE 2. STRUCTURE D'UN MODULE VHDL

Figure 2.9  Bascule D ip_op.


Chapitre 3
Dirents styles de description
d'un circuit
En VHDL, il existe trois faons, largement utilises, pour dcrire le fonc-
tionnement d'un circuit numrique savoir :
 La description comportementale l'aide des processus
 La description l'aide des ots de donnes
 et la descriptions structurelles l'aide des instanciations des compo-
sants

3.1 Description comportementale


Dans ce type de description, le comportement du circuit se fait laide des
commandes process (pour processus). Chaque process contient des instruc-
tions squentielles qui s'excutent squentiellement les unes aprs les autres.

3.1.1 Process

Qu'est ce qu'un process ?


Un process permet de dcrire de manire algorithmique le fonctionnement
d'un systme numrique, similaires ceux d'un langage procdural comme
C et Java, incluant les structures de condition et de rptition. Il est pra-
tiquement indispensable pour dcrire les lments mmoires (bascules).Un
processus dcrit une partie du circuit qui s'excute de faon concurrente
d'autres processus et des assignations concurrentes de signaux. La forme
d'un nonc process est illustre dans l'exemple de la gure 3.1 :

Le process comporte deux parties : une partie dclarative et un corps.

17
18CHAPITRE 3. DIFFRENTS STYLES DE DESCRIPTION D'UN CIRCUIT

Figure 3.1  Forme d'un process.

 La partie dclarative contient :


 Les dclarations de types, d'objets des catgories variable et constant
 Des fonctions et des procdures.
 Les items dclars dans cette partie ne sont visibles qu' l'intrieur
du processus.
.

 Dans la partie corps, on y retrouve des noncs squentiels qui d-


crivent le comportement du processus.

Rgles de fonctionnement d'un process :


1. L'excution d'un process est dclenche chaque changement d'tat
d'un signal de la liste de sensibilit.
2. Les instructions du process s'excutent squentiellement.
3. Les changements d'tat des signaux par les instructions du process
sont pris en compte la n du process
Il est possible de se passer de la liste de sensibilit du process condition
d'utiliser l'instruction WAIT comme le montre l'exemple de la gure 3.2.
Cette instruction permet la suspension de l'volution d'un process .

Trois formes utilises pour l'instruction WAIT :

 Wait until <condition> : La suspension du process a lieu jusqu'


ce que la condition devienne VRAIE
 Wait on <liste de sensibilit> : L'excution du process reprend
ds qu'un des signaux de la liste de sensibilit change d'tat
 Wait for <dure> : Suspension du process a lieu pendant une dure
spcie
3.1. DESCRIPTION COMPORTEMENTALE 19

Figure 3.2  Process sans liste de sensibilit.


Remarque : les process qui ne possdent pas une liste de sensibilit sont
gnralement non synthtisable.

Structures utilises dans un process :


Les deux principales structures utilises dans un process sont :
 L'assignation conditionnelle : if-then-else (Figure 3.3)
 L'assignation slective : Case when (Figure 3.4)

Figure 3.3  Instruction IF-THEN-ELSE.

Exemple 1 : Bscule D
Dans l'exemple de la gure 3.5, nous dcrirons le fonctionnement de la
bascule D en utilisant la notion du process. La bascule D comporte les entres
suivants :
 D, clk et reset : signaux d'entrs .
 Q : signal de sortie.
20CHAPITRE 3. DIFFRENTS STYLES DE DESCRIPTION D'UN CIRCUIT

Figure 3.4  Instruction CASE-WHEN.

 La liste de sensibilit du process contient les signaux : CLK et rst.


D'aprs les rgles de fonctionnement nonces prcdemment, le chan-
gement d'tat du signal CLK ou bien rst va dclencher le process et
par consquent valuer les instructions de celui-ci.
 La dtection de front montant du signal CLK est ralise par l'instruc-
tion if (CLK'event and CLK='1').
 Si on veut un dclenchement sur un front descendant, il faut crire
l'instruction suivante : if (CLK'event and CLK='0').
 Les bibliothques IEEE possdent deux instructions permettant de d-
tecter les fronts montants Rising_edge(CLK) ou descendants Fal-
ling_edge(CLK).

Exemple 2 : Multiplixeur 4 vers 1


L'exemple de la gure 3.8 illustre la description VHDL du multiplexeur
4 vers 1 l'aide du process bas sur l'instruction CASE -WHEN. Nous
prcisons que cette dernire termine toujours par OTHERS qui traite la
dernire possibilit de choix.

3.2 Description structurelle


La description structurelle consiste implanter le systme comme un
agrgat de sous systmes. Elle consiste, tout simplement, dcrire la mise en
uvre et l'interconnexion de ses modules l'aide des signaux. Elle est sem-
blable une description schmatique.La dmarche de la description structu-
rale ncessite :
 la dclaration de la liste des composants utiliss dans la partie dcla-
rative de l'architecture avec le mot cl component.
3.2. DESCRIPTION STRUCTURELLE 21

Figure 3.5  Description comportementale de la bascule D (If-then -else).

Figure 3.6  Bscule F (Flip-op).

 la dclaration de la liste des signaux internes qui sont de simples ls,


ou des nappes de ls, utiliss pour interconnecter les composants.
 L'instanciation des composants l'aide la commande port map (nom_port
=>Nom_signal). On peut instancier chaque composante dclare au-
tant de fois que ncessaire.

Exemple 1 : Description structurelle d'un comparateur :


L'exemple de la gure 3.8 prsente la description structurelle du compa-
rateur. Ce derniers se considre comme l'association de deux composants
22CHAPITRE 3. DIFFRENTS STYLES DE DESCRIPTION D'UN CIRCUIT

Figure 3.7  Schma du multiplixeur 4vers 1.

Figure 3.8  Description comportementale du multiplixeur 4vers 1 (case-


when).

savoir la porte XOR et la porte inverseuse.

Exemple 2 : Description structurelle de l'additionneur :


Cet exemple illustre la description structurale de l'additionneur. On sup-
pose dans cet exemple que les composantes XOR_G, AND_G et OR_G sont
3.2. DESCRIPTION STRUCTURELLE 23

Figure 3.9  Schma du Comparateur.

Figure 3.10  Description structurelle du comparateur.

des entits dclares dans d'autres chiers, et pour lesquelles il existe des des-
criptions de leur comportement l'aide d'architectures. Ces chiers doivent
avoir t compils dans une librairie qui est visible lors de la compilation du
code de cet exemple.
L'instanciation d'une composante doit inclure une tiquette (XOR1, XOR2,
AND1, AND2 et OR dans l'exemple). Elle est suivie de l'identicateur de la
composante, et de la liste des connexions ses ports d'entre et de sortie.
L'assignation des connexions aux ports des composantes peut tre faite par
24CHAPITRE 3. DIFFRENTS STYLES DE DESCRIPTION D'UN CIRCUIT

position, c'est--dire dans le mme ordre que pour la dclaration de la com-


posante. Elles peuvent aussi tre faites explicitement en spciant les noms
des ports de la composante et les noms des signaux qui y sont connects, tel
que montr dans cet exemple.

LIBRARY ieee ;
USE ieee.std_logic_1164.ALL ;
ENTITY Full_adder IS PORT (
x,y,Cin : IN std_logic ;
Sum, cout : OUT std_logic) ;
END Full_adder ;
Architecture structurelle of Full_adder is
 Dclaration des types de composants
component XOR_G  portes XOR
PORT (
X1,X2, : IN std_logic ;
XO1 : OUT std_logic) ;
END component ;
component AND_G  portes AND
PORT (
A1,A2, : IN std_logic ;
AO1 : OUT std_logic) ;
END component ;
componentOR_G  portes OR PORT (
O1, O2 : IN std_logic ;
OO1 : OUT std_logic) ;
END OR_G ;
Signal S1, S2, S3 : std_logic ;  dclaration des signaux
begin
XOR1 : XOR_G portmap(X, Y, S) ;
XOR2 : XOR_G portmap(S1, Cin, Cout) ;
AND1 : AND_G portmap (X, Y, S3) ;
AND2 : AND_G portmap(S1, Cin, S2) ;
OR : OR_ portmap(S2, S3, Cout) ;
end structurelle
3.3. DESCRIPTION PAR FLOT DE DONNES 25

3.3 Description par ot de donnes


La description d'un circuit numrique l'aide de ot de donnes est bases
sur des quations boolennes (logiques) pour dterminer sa fonction sans
ncessairement dnir sa structure. En gnral, cela signie que les valeurs
des signaux et ports du circuit sont tablies par des assignation concurrentes
de valeurs.
Pour les circuits combinatoires, les assignations concurrentes des si-
gnaux utilisent souvent des oprateurs logiques qui sont des mots cls du
langage : and, or, nand, nor, xor, xnor, not. On peut utiliser des parenthses
pour faire respecter la prsance requise dans les expressions.

Exemple 1 : Comparateur
L'exemple de la gure 3.11, prsente la description de ot de donnes en
VHDL du comparateur.

Figure 3.11  Description de ot de donnes du comparateur.

Exemple 2 : Demi-additionneur
L'exemple de la gure 3.12, prsente la description ot de donnes en
VHDL du demi-additionneur.
26CHAPITRE 3. DIFFRENTS STYLES DE DESCRIPTION D'UN CIRCUIT

Figure 3.12  Description de ot de donnes du demi-additionneur.

3.4 Descriptions mixtes


Les trois types de descriptions (structurelles, fonctionnelles, procdurales)
peuvent coexister dans une mme architecture. La dnition smantique de
leurs actions sur les signaux les rendent compatibles entre elles.
Chapitre 4
Testbench
Un testbench applique des stimuli sur les entres du circuit tester,
DUT (Design Under Test), et rcupre la valeur des sorties pour validation
(Figure 4.1). Les rsultats sont visualiss sous forme de chronogrammes ou
dans un chier. Comme le testbench est un programme en VHDL, il est
portable et ne dpend pas de l'outil de simulation (portabilit). Le mme
testbench peut tre utilis pour tester le fonctionnement d'un module ayant
plusieurs architectures

Figure 4.1  Design Under Test (DUT).

4.1 Structure du testbench


Comme nous pouvons le voir sur le schma de la gure 4.2, l'entit du
testbench est vide. Elle ne dispose ni d'entres ni de sorties.

Dans la partie dclarative de l'architecture, nous dclarons :

 le composant tester en tant "component"


 les vecteurs de test en tant que "signals"

27
28 CHAPITRE 4. TESTBENCH

Figure 4.2  Structure du testbencnh .

Entre "begin et end le nom de l'architecture", nous :

 gnrons les vecteurs de test l'aide du "process" sans liste de sensibi-


lit
 ferons l'instantiation du composant tester l'aide de la commande
"portmap"

4.2 Exemples du testbench


4.2.1 Testbench du demi-additionneur

La gure 4.3 prsente le programme VHDL du testbench du demi-additionneur.


En dbut de ce programme, on dclare le composant tester ainsi que les
direntes signaux qui vont servir connecter le composant. La suite du pro-
gramme testbench est prsente sur la gure 4.3. Elle concerne l'instantiation
du composant tester l'aide de la commande Port map et la gnration
des vecteurs de tests prsenter ses entres l'aide du Process.
4.2. EXEMPLES DU TESTBENCH 29

Figure 4.3  Dclaration du composant tester et les signaux de test pour


le demi-additionneur .

Figure 4.4  Gnration des vecteurs de test pour le demi-additionneur- .

4.2.2 Testbench du diviseur de frquence

La gure 4.5 prsente le programme VHDL du testbench du diviseur de


frquence par 8 qui utilise un compteur de 3 bits. Nous procdons de la mme
manire que l'exemple du demi-additionneur. En dbut de ce programme, on
30 CHAPITRE 4. TESTBENCH

dclare le composant tester ainsi que les direntes signaux qui vont servir
connecter le composant. La suite du programme testbench du diviseur
de frquence est prsente sur la gure 4.6. Elle concerne l'instantiation du
composant tester l'aide de la commande Port map et la gnration des
vecteurs de tests prsenter ses entres l'aide du Process.

Figure 4.5  Dclaration du composant tester et les signaux de test pour


le diviseur de frquence .
4.2. EXEMPLES DU TESTBENCH 31

Figure 4.6  Gnration des vecteurs de test pour le diviseur de frquence .


32 CHAPITRE 4. TESTBENCH
Chapitre 5
Machines tats en VHDL

5.1 Introduction
Les machines tats sont des circuits de logiques squentielle servant
gnrer des signaux de commande. Il existe en eet 2 grands types de signaux
en lectroniques :
 Signaux traiter : les donnes
 Signaux pilotant le traitement : les commandes
La partie contrle, gnrant les commandes, est dissocie de la partie op-
rative, traitant les donnes (Figure 5.1). Les 2 parties sont toujours ralises
en logiques squentielle et dans un trs grande majorit des cas en logique
squentielle synchrone.

Figure 5.1  machine tat schma .


Pour la logique squentielle synchrone ; il existe 2 signaux de commandes
importants :
 L'horloge : pour le droulement des squences

33
34 CHAPITRE 5. MACHINES TATS EN VHDL

 Le Reset : pour l'initialisation du systme


La machine tat reprsente la partie contrle, c'est--dire le cerveau
du systme lectronique et la partie oprative, les jambes Les tats de la ma-
chine tats reprsentent toutes les valeurs que peuvent prendre les variables
internes du circuits de logique squentielle. Les applications des machines
tats sont larges. On les trouves notamment dans :
 Microprocesseurs : plusieurs MAE et plusieurs parties opratives
 Ascenseurs, machine caf, machine laver, etc, . . .

Exemple : machine caf


les tats peuvent tre :
1. Attente de pice
2. Descendre le goblet
3. Verser la poudre de caf
4. Verser l'eau chaude
5. Indiquer que c'est prt

5.2 Types de Machine tat


Suivant la faon dont les sorties dpendent des tats et des entres, on
distingue deux types de machines tats :
 Machine de Moore les sorties ne dpendent que de l'tat courant
 Machine de Mealy les sorties dpendent de l'tat courant et des
entres
Sur la gure 5.2, des bascules enregistrent l'tat courant du systme tandis
que les circuits combinatoires qui sont placs avant et aprs les bascules
dterminent l'tat suivant et la valeur des sorties.

Figure 5.2  controle .


5.3. DIAGRAMME D'TAT 35

Rles du registre d'tat et l'horloge


 Le registre :
 Le registre d'tat, pilot par son horloge, constitue le cur d'une
machine tats. Les autres blocs fonctionnels sont son services
 Il est constitu de n bascules synchrones. Son contenu reprsente
l'tat actuel de la machine. Il s'agit d'un nombre cod en binaire sur
n bits.
 L'entre du registre d'tat constitue l'tat future, celui qui sera charg
lors de la prochaine transition active de l'horloge. Le registre d'tat
est la mmoire de la machine
 L'Horloge :
 Le rle de l'horloge est de xer les instants o les transitions entre
tats sont prises en compte. Entre deux fronts conscutifs de l'hor-
loge, la machine est ge en position mmoire

5.3 Diagramme d'tat


Le graphe d'tat est l'un des outils les plus utiliss pour la spcication
de la machine tats (entres, sorties, fonctionnement souhait. Le graphe
d'tat, comme son nom l'indique, reprsente graphiquement les tats d'une
machine tats (Figure 5.3). Chaque tat est dessin sous la forme d'une
bulle contenant son nom et la valeur de la (ou des) grandeur (s) de sortie.
Un seul de ces tats peut tre actif la fois. On appelle tat source l'tat de
dpart d'une transition et tat destination l'tat d'arrive. Le passage d'un
tat un autre s'eectue si une condition sur les entres est remplie. A toute
instant la machine d'tat est dans l'un des tats reprsents : c'est ce que
nous appellerons l'tat courant de la machine. A chaque front montant de
l'horloge, la machine emprunte l'une des transitions possibles partir de son
tat courant. Elle change alors l'tat. Elle reste dans un tat donn (une bulle
du graphe) pendant le temps qui spare deux fronts montants de l'horloge

5.3.1 Machines d'tat en VHDL

 Machine de Mealy :
 Deux process pour dcrire une machine tat :
 Un process combinatoire : dtermination de l'tat suivant en fonction
de l'tat courant et de signaux d'entres.
 Un process synchrone : description du registre d'tat qui mmorise
l'tat courant sur un front d'horloge
36 CHAPITRE 5. MACHINES TATS EN VHDL

Figure 5.3  diagramme d'tat


La gure 5.4 prsente le programme en VHDL du diagramme d'tat pr-
sent sur la gure 5.3. Le Process qui gure dans l'architecture a pour rle
de grer les dirents tats.

Figure 5.4  Diagramme d'tat en VHDL

5.3.2 Exemple d'une perceuse

Nous prsentons dans cet exemple, le code VHDL de la perceuse schma-


tise sur la gure 5.5. Dans cet exemple, nous avons utilis deux process
comme le montre les gures 5.6 et 5.7 : L'un est synchrone, l'autre est com-
binatoire. Le premier process est sensible aux signaux clk et arret, et gre
5.3. DIAGRAMME D'TAT 37

l'volution du systme vers l'tat suivant. Le deuxime process calcule le


prochain tat en fonction de l'tat actuel et active les sorties.

Figure 5.5  Schma de la perceuse


38 CHAPITRE 5. MACHINES TATS EN VHDL

Figure 5.6  Code VHDL de la perceuse

Figure 5.7  Code VHDL de la perceuse (suite)


Chapitre 6
Quelques dtails du langage
VHDL

6.1 Librairie IEEE


En VHDL, une librairie (library) est un endroit o le compilateur stock
l'information ncessaire pour un design en particulier. Ainsi, un design peut
tre dcrit par une grande quantit de chiers distincts. On peut aussi rutili-
ser des composantes entre plusieurs designs. Le nom de la librairie par dfaut
est work, mais les outils de design suivent souvent leur propre convention.
La librairie principale IEEE contient les packages suivants :
 Package std_logic_1164 : Ce package dnit un nouveau type ainsi
que des fonctions de conversion et de dtection des fronts. Les opra-
teurs standard sont automatiquement tendus la manipulation de ces
nouveaux types.
 Le type std_logic comporte 9 valeurs :
 0 et 1 issus d'une sortie "forte"
 L et H issus d'une sortie "faible" (rsistance 0 et 1)
 Z reprsente l'tat de haute impdance (sortie isole)
 X reprsente l'tat de conit entre deux sorties "fortes"
 W reprsente l'tat de conit entre deux sorties "faibles"
 n reprsente l'tat indifrent (pour optimiser la logique)
 Package IEEE.std_logic_arith :
 Contient un groupe d'oprateurs arithmtiques
 Package std_logic_signed :
 Contient des oprateurs sur nombres entiers signs
 Package IEEE.numeric_std

39
40 CHAPITRE 6. QUELQUES DTAILS DU LANGAGE VHDL

6.2 Oprateurs
En VHDL, il existe un vaste choix d'oprateurs :
 Oprateur logiques : ( types BIT, BIT_VECTOR) :
 AND, OR, NAND, NOR, XOR, etc.
 Oprateur de test :
 = (gal), /= (difrent) , < (strictement infrieur) , > (strictement
suprieur), (suprieur ou gal) , (infrieur ou gal), etc.
 Oprateur arithmtique :
 + (addition) , - (soustraction) , / (division) , * (multiplication), &
(concatnation).
 Oprateur de dcalage :
 Sll (dcalage logique gauche) , srl (dcalage logique droite),
sla(dcalage arithmtique gauche) , sra (dcalage arithmtique
droite), rol (rotation gauche), et ror (rotation droite).

6.3 Objets et leurs types


Le langage VHDL permet de manipuler des objets typs, bien dnis. IL
existe 3 classes d'objets :
 Constante : objet possdant une valeur xe
 Variable : Peut stocker un rsultat intermdiaire et sa valeur volue
pendant la simulation. Elle ne peut tre dclare que dans un process,
une procdure ou une fonction
 Signal : Il est synthtis par une quipotentielle et ventuellement une
bascule s'il faut conserver sa valeur. Un signal ne peut tre dclar que
dans une architecture

6.3.1 Objets

Constantes
Une constante est un objet possdant une valeurs xes aprs initialisation.

Exemples :
constant number_of_bytes:integer:=4;
constant e:real:=2.718281828;
constant count_limit:integer:=255;
6.3. OBJETS ET LEURS TYPES 41

Variables :
Les variables s'utilisent exclusivement au sein des processes. Elles ont une
utilisation semblable aux variables dans un langage de programmation clas-
sique. La mise jour pour un variable se fait instantanment contrairement
un signal. La dclaration d'un variable se fait l'aide de : :=

Exemple :
variable index: integer :=0;
variable start,finish: time :=0 ns;

Affectation de variables (:=)


index :=3;
start :=15 ns;

Signal
Les signaux reprsentent les donnes physiques changes entre les mo-
dules. Il sont utiliss pour connecter des lments concurrents (comme par
exemple, lors des instanciations des composants, les processus, et les assigna-
tions concurrentes), de la mme faon que les ls sont utiliss pour connecter
des composants dans un circuit lectronique ou dans un schma.

Un signal se dclare dans la zone dclarative d'une architecture ou bien


dans la partie port d'une entit. Sa dclaration se fait avec le mot rserv
SIGNAL comme vous pouvez le constater sur la gure 6.1.
L'aectation d'un signal se fait l'aide d'une aectation simple comme
le montre l'exemple ci-dessous :

d <= d after delay;


s est le signal
d est le driver
delay est le dlai

6.3.2 Types

Le langage VHDL est fortement typ. Tout objet (ou donne) manipul
dans le langage doit tre dclar avant utilisation en indiquant son type. Un
type dnit :
 Le format des donnes
42 CHAPITRE 6. QUELQUES DTAILS DU LANGAGE VHDL

Figure 6.1  Dclaration du signal.

 l'ensemble des oprations lgales sur les donnes


Il existe direntes familles de types :
1. Type scalaire :
(a) entier
(b) rel
(c) numr
(d) physique
2. Type composs :
(a) Tableau
(b) enregistrement
3. Type pointeurs : access
4. Type File : squence de valeurs d'un type donn
6.3. OBJETS ET LEURS TYPES 43

Figure 6.2  package_type.


44 CHAPITRE 6. QUELQUES DTAILS DU LANGAGE VHDL
Bibliographie
[1] Pierre Langlois. Conception et ralisation de systmes num-
riques,1991 (http ://creativecommons.org/licenses/by-nc-sa/2.5/ca/),

1991.
[2] Yannick HERV : Extension AMS du langage VHDL pour l'lec-
tronique de puissance., Techniques de l'ingnieur, Universit Louis

Pasteur-Strasbourg.
[3] J. VILLEMEJANE., Composants programmables complexes / FPGA. ,
2013.
[4] Alain Vachoux. Le langage VHDL, alain.vachoux@ep.ch.

45