Vous êtes sur la page 1sur 134

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE

MINISTERE DE LENSEIGNEMENT SUPERIEUR ET DE LA


RECHERCHE SCIENTIFIQUE

UNIVERCITE MHAMED BUGARA DE BOUMERDES


FACULTE DES SCIENCES DEPARTEMENT PHYSIQUE

Spcialit : INFOTRONIQUE
&
IMAGERIE ET APPARAILLAGE BIOMEDICALE

V.Tourtchine et M.Izouin

MODELISATION DES SYSTEMES NUMERIQUES


DANS L'ENVIRONNEMENT Xilinx ISE 13.2 (VHDL)

Manuscrit labor selon le programme officiellement agr et


confirme par le Conseil Scientifique de la Facult des Sciences

BOUMERDES - 2012

-0-

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Table des matires


PAGE

Introduction Gnrale.............................................................................. 4

Chapitre 1 : Les concepts de base du langage VHDL................................. 5


1.1 Description gnrale ....................................................................................................... 5
1.1.1 Les rgles de base du VHDL ................................................................................. 6
1.1.2 La dclaration de lentit ......................................................................................... 6
1.1.3 La dclaration de larchitecture ............................................................................. 7
1.2 Les signaux intermdiaires .......................................................................................... 10
1.3 Assignation conditionnelle et assignation slectionne des signaux .................... 11
1.3.1 Assignation conditionnelle des signaux ............................................................. 11
1.3.2 Assignation slectionne des signaux ............................................................... 12
1.4 Type de donnes .......................................................................................................... 13

Chapitre 2 : Objets et types de donnes .......................................................... 14


2.1 Les signaux ................................................................................................................... 14
2.1.1 Dclaration dun signal............................................................................................. 15
2.1.2 Initialisation des signaux .......................................................................................... 15
2.1.3 Utilisation des signaux ............................................................................................. 16
2.2 Les types et sous-types ............................................................................................... 16
2.2.1 Les types scalaires ......................................................................................... 16
2.2.2 Les types composites ..................................................................................... 17
2.2.3 Les types accs ............................................................................................... 21
2.2.4 Les types fichiers ............................................................................................ 21
2.3 Les oprations de base sur les objets ....................................................................... 21
2.3.1 Les oprations logiques ........................................................................................... 21
2.3.2 Les oprations relationnelles ................................................................................... 21
2.3.3 Les oprations daddition ......................................................................................... 22
2.3.4 Les oprations de multiplication............................................................................... 22
2.3.5 Les oprations de signe ........................................................................................... 22
2.3.6 Les oprations de dcalage..................................................................................... 22
2.3.7 Autres oprations ..................................................................................................... 23
2.4 Les attributs ................................................................................................................... 23

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Chapitre 3 : Les diffrentes descriptions dune architecture ............... 24


3.1 Description par flots de donnes................................................................................. 24
3.2 Description comportementale ...................................................................................... 25
3.2.1 Le PROCESS ......................................................................................................... 25
3.2.2 Les variables et les constantes ........................................................................... 27
3.2.3 Description avec linstruction IF........................................................................... 28
3.2.4 Description avec linstruction CASE ................................................................... 30
3.2.5 Description avec les boucles (LOOP) ................................................................ 30
3.2.5.1 Rptitions itratives (FOR) ......................................................................... 31
3.2.5.2 Rptitions conditionnelles (WHILE) .......................................................... 32
3.3 Description structurelle ................................................................................................. 33
3.3.1 Instanciation ........................................................................................................... 34
3.3.1.1 Instanciation par position .............................................................................. 35
3.3.1.2 Instanciation par nom .................................................................................... 35
3.3.1.3 Instanciation mixte ......................................................................................... 36

Chapitre 4 : La modlisation des circuits squentiels ............................. 37


4.1 Introduction ..................................................................................................................... 37
4.2 Les oprations synchrones et asynchrones .............................................................. 38
4.3 Les LATCHS................................................................................................................... 38
4.3.1 LATCH R-S ............................................................................................................. 39
4.3.2 LATCH RSH ........................................................................................................... 40
4.3.3 LATCH D ................................................................................................................. 42
4.4 Les FLIP-FLOPS ........................................................................................................... 43
4.4.1 Flip-Flop D .............................................................................................................. 44
4.4.2 Flip-Flop J-K ........................................................................................................... 46
4.4.3 Flip-Flop T ............................................................................................................... 48
4.5 Compteurs et Registres ................................................................................................ 50
4.5.1 Compteurs .............................................................................................................. 50
4.5.1.1 Compteurs asynchrones ............................................................................... 50
4.5.1.1.1 Description dun compteur asynchrone 2 bits ......................................... 51
4.5.1.1.2 Description dun dcompteur asynchrone 3 bits..................................... 53
4.5.1.1.3 Dlai de propagation dans un compteur asynchrone ............................ 56
4.5.1.1.4 Compteur asynchrone modulo N .............................................................. 57
4.5.1.2 Compteurs synchrones ................................................................................. 58
4.5.1.2.1 Description dun compteur synchrone 2 bits ........................................... 59
4.5.1.2.2 Description dun dcompteur synchrone 3 bits ....................................... 62
4.5.1.2.3 Dlai de propagation dans un compteur synchrone .............................. 64
4.5.1.2.4 Compteur synchrone modulo N................................................................. 64
4.5.1.3 Compteurs avec choix pour le mode : comptage/dcomptage .............. 67
2

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

4.5.1.4 Mthode de conception dun compteur synchrone ................................... 68


4.5.2 Les registres ........................................................................................................... 73
4.5.2.1 Registre dcalage ....................................................................................... 73
4.5.2.1.1 Registre dcalage droite ...................................................................... 73
4.5.2.1.2 Registre dcalage gauche ................................................................... 77
Application : Registre avec mode de dcalage droite ou gauche ..................... 79
4.5.2.2 Type de registres dcalage ....................................................................... 84
4.5.2.2.1 Registre entre srie et sortie srie ...................................................... 84
4.5.2.2.2 Registre entre srie et sortie parallle ................................................ 86
4.5.2.2.3 Registre entre parallle et sortie srie ................................................ 88
4.5.2.2.4 Registre entre parallle et sortie parallle ......................................... 91
4.5.3 Registre universel .................................................................................................. 91

Chapitre 5 : Machine tats finis(FSM) ............................................................ 95


5.1 Introduction....................................................................................................................... 95
5.1.1 Types dFSM .......................................................................................................... 95
5.1.2 Reprsentation dFSM .......................................................................................... 96
- Diagramme dtat ................................................................................................ 96
- Diagramme ASM ................................................................................................. 96
5.2 Dveloppement de code VHDL dFSM.......................................................................... 100
5.3 Exemple de conception.................................................................................................. 103
5.3.1 Dtecteur de front montant .................................................................................... 103
5.3.2 Circuit anti-rebond .................................................................................................. 107

Annexe ............................................................................................................................... 111


Annexe 1. Guide dinstallation de Xilinx ISE 13.2 ............................................................... 111
Annexe 2. Guide pratique dutilisation de Xilinx ISE 13.2 ................................................... 123
Annexe 3. Liste des mots rservs...................................................................................... 132

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Introduction gnrale
VHDL est lacronyme de VHSIC HDL (Very High Speed Integrated Circuit
Hardware Description Language), cest un langage de description matrielle qui a
t cr dans les annes 1980 la demande du dpartement de la dfense
amricaine (DOD).
La premire version du VHDL accessible au public a t publie en 1985, et a fait
lobjet dune norme internationale en 1986 par linstitut des ingnieurs lectriciens et
lectroniciens (IEEE).
De nos jours, le langage VHDL devient un outil indispensable pour la conception des
systmes lectroniques intgrs, il est propos par la grande majorit des socits
de dveloppement et la commercialisation dASIC et dFPGA telle que la socit
amricaine Xilinx.
Avec un langage de description matrielle et un FPGA (Field Programmable Gate
Array), un concepteur peut dvelopper rapidement et simuler un circuit numrique
sophistiqu, de limplmenter sur une carte de prototypage, et de vrifier son
fonctionnement.
Toutefois, les concepts VHDL ne sont pas toujours simples comprendre, cette
brochure introduit les principaux concepts de ce langage travers dexemples
concrets.
Cette brochure est prsente en cinq chapitres, et trois annexes.
Les descriptions VHDL des circuits ont t dveloppes avec loutil Xilinx ISE 13.2.
Dans le premier chapitre, on prsente les concepts de base du langage VHDL, les
objets et types de donnes seront prsents dans le deuxime chapitre, ainsi que
les oprations applicables sur ces derniers, on verra les diffrents styles de
description dune architecture dans le troisime chapitre, on modlisera des circuits
squentiels dans le quatrime chapitre et enfin on traite les machines tats finis
(FSM) dans le cinquime chapitre.
Un guide pratique dutilisation de loutil Xilinx ISE 13.2 est donn en annexe.

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Chapitre 1
Les concepts de base du langage VHDL.

1.1 Description gnrale :


Prenons comme exemple le circuit intgr 7400 (Figure 1.1(a)). Ce dernier est constitu de
quatre portes logiques NAND deux entres (Figure 1.1(b)).

Figure 1.1 Circuit intgr 7400 (Vue externe (a) et vue interne (b)).

La description du circuit intgr 7400 en langage VHDL est donne par le listing 1.1

Listing 1.1 Description VHDL du circuit intgr 7400.


5

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

1.1.1 Les rgles de base du VHDL :


- Les deux premires lignes dfinissent les bibliothques et les paquetages dont nous avons
besoin pour la conception de notre circuit. Dans notre code, on fait appel au paquetage
std_logic_1164 qui se trouve dans la bibliothque IEEE.

Les bibliothques et les paquetages nous permettent dutiliser les types et les oprateurs
disponibles en VHDL.
1.1.2La dclaration de lentit :

Lentit correspond au circuit vu de lextrieur (Figure 1.1(a)), et comprend essentiellement


les entres-sorties du circuit. La premire ligne dune entit (ligne 4 du code) indique le nom
du circuit, CI_7400dans notre exemple. Les entres - sorties du circuit sont des ports qui
doivent avoir le format suivant :
NOM_DU_PORT :

MODE TYPE ;

Le mode dun port peut tre : - IN sil sagit dune entre


- OUT sil sagit dune sortie
- INOUT sil sagit dune entre - sortie (port bidirectionnel)
- BUFFER sil sagit dune sortie reboucle en entre
Pour le TYPE du port, il faut savoir que le langage VHDL est un langage typ, cest--dire
que chaque objet manipul doit avoir un type de donnes.
Dans le listing 1.1, le type du port utilis est STD_LOGIC. Il est dfini dans le paquetage
STD_LOGIC_1164, et possde neuf tats :
Etat
0
1
Z
U
X
L
H
W

Dfinition
Niveau logique 0, forage fort
Niveau logique 1, forage fort
Haute impdance
Niveau non initialis
Niveau inconnu, forage fort
Niveau quelconque (Dont care)
Niveau logique 0, forage faible
Niveau logique 1, forage faible
Niveau inconnu, forage faible
6

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Si le type du signal utilis est un bus de donnes, on utilise alors le type


STD_LOGIC_VECTOR qui est dfini comme tant un tableau unidimensionnel dlments
de type STD_LOGIC.
Exemple :
Soit le signal dentr A de 8 bits, on le dclarera en VHDL comme suit :
A : in std_logic_vector ( 7 downto 0 ) ;
Ou bien :
A : in std_logic_vector (0 to 7);
La diffrence entre les deux expressions est lindice du MSB et du LSB. Dans la premire
expression, lindice du MSB est A(7), celui du LSB est A(0). Dans la deuxime expression,
lindice du MSB est A(0), celui du LSB est A(7).
Remarque :
On peut utiliser le type bit la place de std_logic, et le type bit_vector la place de
std_logic_vector, la diffrence entre eux est que le type bit ne possde que deux tat : 0
et 1 ce qui est trs limit car il faut prendre en considration les autres tats, cest pourquoi
on prfre le type std_logic au type bit.

1.1.3La dclaration de larchitecture :

Larchitecture du circuit correspond au circuit vu de lintrieur (Figure 1.1 (b)), et comprend


essentiellement la description des oprations du circuit. Nous pouvons associer plusieurs
architectures une entit, mais pas le contraire. La diffrence des architectures rside dans
leurs noms :
Architecture NOM_DE_LARCHITECTURE of NOM_DE_LENTITE is
Dans notre exemple, le nom de larchitecture est behavioral.
La description principale dune architecture comprend toujours les deux mots rservs
BEGIN et END (ligne 11 et 16 successivement). Les expressions des oprations du
circuit se trouvent entre elles. Ces expressions sont des instructions qui sexcutent en
concurrence contrairement un langage informatique comme le langageC, o les
instructions sexcutent squentiellement.
7

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Exemple 1 : Comparateur 1 bit
Les entres du comparateur sont : A, B
Les sorties du comparateur sont : EG (gale), PG (plus grand), PP (plus petit).

Table de vrit du et quations boolennes du comparateur :


A B
0 0
0 1
1 0
1 1

EG PG PP
1
0
0
0
0
1
0
1
0
1
0
0

EG A.B A.B
PG A.B
PP A.B

Le schma du circuit du comparateur :

Figure 1.2 Schma du comparateur.

La description du comparateur en langage VHDL :

Listing 1.2 Description VHDL du comparateur.


8

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Simulation :

Exemple 2 - Additionneur complet 1 bit :


Les entres de ladditionneur sont : A, B, Ri.
Les sorties de ladditionneur sont : S (somme), Rout (retenue).

Table de vrit et quations boolennes de ladditionneur :


A B Ri
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

S Rout
0
0
1
0
1
0
0
1
1
0
0
1
0
1
1
1

S A B Ri
Rout A.B A.Ri B.Ri

Le schma du circuit du ladditionneur :


Le code VHDL de ladditionneur :

Figure 1.4 Schma de ladditionneur complet 1 bit partir de deux demi-additionneurs.


10

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 1.3 Description VHDL dun additionneur complet 1 bit.


Simulation :

1.2. Les signaux intermdiaires :


Les signaux intermdiaires correspondent aux connexions qui se trouvent lintrieur dun
circuit. Pour bien comprendre la notion et lutilisation de ces signaux, prenons lexemple de
notre additionneur complet 1 bit de la figure 1.3. On peut le concevoir partir de deux
demi-additionneurs et une porte logique OR (figure 1.4).

Figure 1.4 Schma de ladditionneur complet 1 bit partir de deux demi-additionneurs.


11

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Le code VHDL de la figure 1.7 :

Listing 1.4 Description VHDL dun additionneur complet 1 bit en utilisant les
signaux
intermdi
aires.

1.3Assignation conditionnelle et assignation slectionne des signaux :


Les instructions dassignation conditionnelles et dassignation slectionnes aux
signaux sont excutes en concurrence. Leurs comportements sont similaires aux
instructions IF et CASE quon verra dans le chapitre 2, qui ont quant eux, des
instructions qui sexcutent squentiellement.

1.3.1 Assignation conditionnelle des signaux :


Le format dune assignation conditionnelle des signaux est le
suivant : Signal_1<= valeur_expression_1 WHEN
choix_1 ELSE
valeur_expression_2 WHEN choix_2 ELSE

valeur_expressio
n_n ;
12

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Exemple :
Soit un multiplexeur 2 vers 1.
Il a comme entresA, B, SEL, et comme sortie S (Figure 1.5).

Figure 1.5 Multiplexeur 2 vers 1.


Avec lassignation conditionnelle des signaux, la description en VHDL du multiplexeur de la
figure 1.5 est la suivante :

Listing 1.5 Description VHDL dun multiplexeur 2 vers 1 avec lassignation conditionnelle.
Simulation :

13

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
1.3.2 Assignation slectionne des signaux :
Le format dune assignation de selection des signaux est le suivant :
WITH slecteur SELECT
Signal_1 <= valeur_expression_1 WHEN choix_1,
valeur_expression_2 WHEN choix_2,
valeur_expression_3 WHEN choix_3,

valeur_expression_n WHEN OTHERS ;


Exemple :
Prenons le multiplexeur 2 vers 1 prcdent (Figure 1.5).
Avec lassignation de slection des signaux, la description en VHDL du multiplexeur de la
figure 1.5 est la suivante :

Listing 1.6 Description VHDL du multiplexeur 2 vers 1 avec lassignation de slection.

Remarque :
Dans lassignation conditionnelle des signaux, il ny a pas de point virgule aprs le ELSE.
Dans lassignation de selection des signaux, il faut faire attention ne pas oublier la virgule
la fin de chaque expression de choix, et ne pas oublier de spcifier lexpression excuter si
aucun choix na t trouv (WHEN OTHERS).
1.4 Types de donnes :
En langage VHDL, comme en langage de programmation de haut niveau, les types de
donnes sont une reprsentation abstraitedes donnes stockes.
14

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Ces types de donnes peuvent reprsenter un fil de connexion dans un circuit, ou bien un
ensemble de fils de connexion.
Chaque type de donnes en langage VHDL possde un ensemble de valeurs et doprations
bien dfinies.
La correspondance entre les types de donnes est trs stricte, il nest pas possible par
exemple daffecter directement la valeur dun type de donnes entier (INTEGER) un type
de donnesSTD_LOGIC_VECTOR, pour y remedier, des fonctions de conversion de types
bien dfinis sont disponilbes.
Les types de donnes dans le langage VHDL ainsi que les fonctions de conversion sont
abords dans le prochain chapitre (Objets et types de donnes).

15

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Chapitre 2
Objets et types de donnes.

Lors de la description dun systme lectronique, la reprsentation des donnes qui y


sont traites est une opration dlicate car le langage VHDL est un langage typ, cest--dire
que chaque objet manipul possde un type bien dfini.
Les trois types de base utiliss lors dune description VHDL sont :
-

Les signaux
Les variables
Les constants

Chaque objet dclar possde un type de donnes spcifique ainsi quun ensemble de
valeurs possibles.
Les valeurs que peut prendre un objet dpendent de la dfinition du type utilis pour cet
objet, par exemple un objet de type STD_LOGIC possde 9 valeurs (tats) possibles ; 0,
1, U, X, Z, W, L, H, -, tandis quun objet de type bit nen possde que deux; 0 et 1.
Chaque objet est spcifi par un identificateur, ce dernier doit respecter les conventions
dcriture suivantes :
-

Dbuter par un caractre alphabtique, les caractres suivants peuvent tre


alphabtiques ou numriques.
Seul le caractre _ (underscore) peut tre utilis dans un identificateur, mais
quune seule fois cest--dire quune succession de ce caractre est interdite.
La longueur dun identificateur est limite celle dune ligne.

Note :
-

Le langage VHDL ne respecte pas la casse cest--dire quil ne fait pas la diffrence
entre minuscules et majuscules.
A lintrieur dun programme VHDL, un commentaire est introduit par deux tirets ; - On ne peut pas utiliser certains mots comme identificateur car ils sont rservs la
syntaxe VHDL, cette liste de mots rservs est donne en annexe.

2.1 Les signaux :


Les signaux sont des objets qui sont utiliss pour connecter des lments concurrents
(comme par exemple, lors des instanciations des composants, les processus, et les
assignations concurrentes), de la mme faon que les fils sont utiliss pour connecter des
composants dans un circuit lectronique ou dans un schma.
Un signal peut tre dclar globalement dans un package externe, ou localement lintrieur
dune architecture ou dun bloc.
16

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
2.1.1 Dclaration dun signal :
La dclaration dun signal se fait avec le mot rserv SIGNAL comme suit :

Un signal doit avoir au minimum un nom et un type.


Dans lexemple ci-dessus, le signal est nomm SIG et est dclar lintrieur de
larchitecture RTL , et est du type standard STD_LOGIC.
Si plusieurs signaux du mme type sont ncessaires dans une conception, on peut les
spcifier dans une seule dclaration comme suit :

2.1.2 Initialisation des signaux :


Un signal peut tre initialis une valeur spcifique comme suit :

Le symbole dinitialisation est := .


Dans lexemple ci-dessus, on initialise le signal A de type STD_LOGIC_VECTOR de
taille 4 une valeur initiale 0 :

Pour linitialisation du signal B , on a utilis une notation par agrgat.


Au lieu dcrire seize fois ltat 0 (Pire si on avait un bus de 128 Mbit) :

On a utilis un agrgat qui est un moyen dindiquer la valeur de chaque lment dun type
compos.
17

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
2.1.3 Utilisation des signaux :
Lutilisation des signaux est principalement utilise lorsquon a besoin de dplacement
dinformations entre les diffrentes parties fonctionnelles dune conception, comme par
exemple entre deux composants connects.
Les signaux peuvent tre aussi utiliss pour dcrire des expressions logiques complexes.
Les objets de types variables et constants sont traits dans le prochain chapitre (Les
diffrents styles de description dune architecture).
2.2 Les types et sous-types :
Les types de donnes VHDL se divisent en quatre catgories :
2.2.1 Les types scalaires :
La valeur dun objet de ce type est constitue par un seul lment, cette valeur est
numre dans le cas dun type numr.
Les types standards entrant dans cette catgorie sont les types entiers (INTEGER),
les types rels virgule flottante (REAL), les types physiques (TIME), et les types
numrs.
- Les types entiers (INTEGER) :
Ces des types dont les valeurs sont des entiers.
La norme VHDL prcise que cet intervalle doit au minimum aller de (231-1) (231-1).
Ce type contient deux sous-types :
o NATURAL : contient les valeurs naturelles.
o POSITIVE : contiens les valeurs positives.
- Les types Rels (REAL) :
Ce sont des types dont les valeurs sont des rels.
La norme VHDL prcise que cet intervalle doit au minimum aller de (1038) (1038).
- Les types physiques :
Ce sont des grandeurs qui peuvent tre analogiques ou numriques telles que la
tension lectrique, lintensit du courant, capacit dun condensateur, tempsetc.
Un type physique est dfini par son intervalle de variation, par son unit de base et
par des units multiples ventuelles.
Le type TIME est un type standard prdfini en VHDL.

18

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
-

Les types numrs :


Un objet est numr si toutes les valeurs quil peut prendre sont numres.
Les types prdfinis du type numr sont :
o BIT :
Dfini comme (0, 1).
o STD_LOGIC :
Dfini comme (U, X, 0, 1, Z, W, L, H, -).
o BOOLEAN :
Dfini comme (false, true).
o CHARACTER :
Les types de donnes caractre en VHDL sont similaires ceux dun
langage de programmation de haut niveau, ils peuvent tre utiliss pour
reprsenter une chaine de caractres.
(,A, B, C,0, 1, 2,)
o SEVERITY_LEVEL :
Ce type de donnes est particulier, il possde quatre valeurs possibles :
NOTE, WARNING, ERROR, FAILURE
Il est trs utile dutiliser ce type de donnes lors des simulations, par exemple,
pour demander au simulateur darrter la simulation lorsquil dtecte une
erreur.

2.2.2 Les types composites :


Le type composites reprsente un ensemble de valeurs, et est divis en deux
classes :
- Les types composites tableaux (ARRAY) :
Un objet de type tableau (ARRAY) est un ensemble dun ou de plusieurs lments du
mme type.
On accde llment dun tableau par un ou plusieurs indices.
Exemple dune dclaration dun tableau :

La dclaration du tableau ci-dessus indique que le tableau dont le nom est


MON_TABLEAU est constitu de 16 lments, o chaque lment est du type
std_logic.

On peut associer un objet de type MON_TABLEAU comme suit :

19

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Remarque :
Gnralement les tableaux deux dimensions (matrices) ne sont pas supports par les
outils de synthse, mais ils sont utiles pour dcrire les tests de stimuli, les lments de
mmoires, ou autre donne qui requirent une forme de tableaux deux dimensions.
Quelques exemples de dclarations des tableaux unidimensionnels et bidimensionnels :

Explication :
a. type A is array (7 downto 0) of std_logic;
A est un tableau une dimension, de taille 8 (7 downto 0) dont les lments sont tous
de type std_logic(figure 2.1).

Figure 2.1
b. type B is array (0 to 3) of A;
B est un tableau une dimension de taille 4 (0 to 3) dont les lments sont de type
A , cest--dire des tableaux de taille 8 (7 downto 0) dont les lments sont de type
std_logic(figure 2.2).

Figure 2.2
20

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

c. type C is array (0 to 3) of std_logic_vector (7 downto 0);


C est un tableau une dimension de taille 4 (3 downto 0) dont les lments sont de type
std_logic_vector de taille 8 (7 downto 0) (figure 2.3).

Figure 2.3
d. type D is array (0 to 3, 7 downto 0) of std_logic;
D est un tableau deux dimensions de taille 4x8 (0 to 3, 7 downto 0) dont les lments
sont de type std_logic (figure 2.4).

Figure 2.4
Les dclarations des signaux :

21

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Exemple dassignations :
Pour comprendre le principe, prenons comme exemple laffectation suivante :

Lemplacement n0du signal x reoit le contenu lemplacement n2 qui se trouve dans


lemplacement n1du signal y (figure 2.5).

Figure 2.5
-

Les types composites articles (RECORD) :


Un objet de type article (RECORD) est un ensemble dlments appel champs, qui
peuvent tre de mmetype ou de typesdiffrents.
Exemple dune dclaration dun article :

Larticle ci-dessus dont le nom est MON_ARTICLE est constitu de trois champs
(CLOCK, DATA, X) (figure 2.6).

Figure 2.6
22

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

2.2.3 Les types accs (Access) :


Ces types fournissent des rfrences vers des objets de la mme manire que les
pointeurs qui fournissent des rfrences vers des donnes dans un langage de
programmation de haut niveau.
2.2.4 Les types fichiers (File) :
Ce sont des objets de rfrence qui contiennent une squence de valeurs.
Les valeurs de chaque type de donnes se trouvent dans un intervalle dfini, par exemple
lintervalle de type de donnes entier (INTEGER) est [-2147483647, +2147483647].
Le langage VHDL nous permet de spcifier un sous-ensemble de valeurs dun type, par
exemple la dclaration suivante cre un objet de type entier qui ne peut avoir que des
valeurs positives allant de 0 255 :

Remarquez la dclaration range , cette dernire permet de vrifier lors de la synthse et


de la simulation que la valeur dun objet nest pas en dehors de son intervalle de variation.
On peut dclarer un sous-type dun type de donnes, par exemple la dclaration ci-dessous
cre un sous-type (SHORT) du type scalaire entier (INTEGER) avec un intervalle limit :

2.3 Les oprations de base sur les objets :


Le langage VHDL nous permet de faire plusieurs oprations sur les objets, suivant leurs
types et le type du rsultat de lopration.
2.3.1 Les oprations logiques :
Les oprations logiques AND, OR, NAND, NOR, XOR, NXOR sont utilises pour dcrire des
oprations boolennes, ou pour effectuer des oprations au niveau des bits.
Opration
AND
OR
NAND
NOR
XOR
NXOR

Description
Le ET logique
Le OU logique
Le NON ET logique
Le NON OU logique
Le XOR logique
Le NXOR logique

Type dopration
Type de rsultat
Tout type binaire ou boolen
Mme type
Tout type binaire ou boolen
Mme type
Tout type binaire ou boolen
Mme type
Tout type binaire ou boolen
Mme type
Tout type binaire ou boolen
Mme type
Tout type binaire ou boolen
Mme type

2.3.2 Les oprations relationnelles :


Les oprations relationnelles testent les valeurs relatives de types scalaires.
Le rsultat dune opration relationnelle est toujours une valeur boolenne TRUE ou FALSE.
23

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Opration
=
/=
<
<=
>
>=

Description
Type dopration Type de rsultat
Egalit
Tout type
Boolen
Ingalit
Tout type
Boolen
Strictement infrieure
Tout type
Boolen
Infrieure ou gale
Tout type
Boolen
Strictement suprieure
Tout type
Boolen
Suprieure ou gale
Tout type
Boolen

2.3.3 Les oprations daddition :


Les oprations daddition peuvent tre utilises pour dcrire des fonctions arithmtiques ou
des oprations de concatnations.
Opration Description
Type dopration
Type de rsultat
+
Addition
Tout type numrique
Mme type
Soustraction
Tout type numrique
Mme type
&
concatnation Tout type numrique
Mme type
2.3.4 Les oprations de multiplication :
Les oprations de multiplication peuvent tre utilises pour dcrire des fonctions
arithmtiques ou de types numriques.
Opration
*
/
MOD
REM

Description
Multiplication
Division
Modulo
Reste

Type dopration
Type de rsultat
Tout type entier ou flottant
Mme type
Tout type entier ou flottant
Mme type
Tout type entier
Mme type
Tout type entier
Mme type

2.3.5 Les oprations de signe :


Les oprations de signes sont utilises pour spcifier le signe (positif ou ngatif).
Opration Description
Type dopration
Type de rsultat
+
Positif
Tout type numrique
Mme type
Ngatif
Tout type numrique
Mme type
2.3.6 Les oprations de dcalage :
Les oprations de dcalage permettent de faire des oprations de dcalage ou de rotations
au niveau des bits ou dobjet de type boolens.
Opration
SLL
SRL
SLA
SRA
ROL
ROR

Description
Dcalage gauche (logique)
Dcalage droite (logique)
Dcalage gauche (arithmtique)
Dcalage droite arithmtique
Rotation gauche (logique)
Rotation droite (logique)

Type dopration
Type de rsultat
Entier, bit, ou boolen
Mme type
Entier, bit, ou boolen
Mme type
Entier, bit, ou boolen
Mme type
Entier, bit, ou boolen
Mme type
Entier, bit, ou boolen
Mme type
Entier, bit, ou boolen
Mme type
24

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
2.3.7 Autre oprations :
Les oprations dexponentiation, ou de valeur absolue peuvent tre appliques des objets
de type numrique.
Opration
Description
Type dopration
Type de rsultat
**
Exponentiation
Tout type entier ou flottant
Mme type
ABS
Valeur absolue
Tout type numrique
Mme type
NOT
Le NON logique Tout type binaire ou boolen
Mme type
2.4 Les attributs :
Un attribut est une caractristique du VHDL qui permet dextraire des informations
supplmentaires propos dun type de donnes ou dun signal.
Il ya deux classes dattributs :
-

Les attributs prdfinis.


Les attributs utilisateurs.

Nous rencontrerons des attributs prdfinis tout au long de cette brochure et nous les
prsenterons au fur et mesure de leur ncessit, nanmoins nous citerons ci-dessous les
principaux attributs prdfinis les plus utiliss.
Attribut
Attribut POS(X)
Attribut VAL(X)

Description
Il nous informe sur la position de llment X par un nombre
entier.
Il nous informe sur la valeur contenue de la position X.

Attribut PRED(X)

Il nous informe sur la valeur contenue de llment qui prcde


la position X.

Attribut SUCC(X)

Il nous informe sur la valeur contenue de llment qui succde


la position X.

Attribut LEFT
Attribut RIGHT

Il exprime la valeur la plus gauche dans la dclaration du type.


Il exprime la valeur la plus droite dans la dclaration du type.

Attribut HIGH

Il exprime la plus grande valeur dans la dclaration du type.

Attribut LOW

Il exprime la plus petite valeur dans la dclaration du type.

Attribut LENGTH
Attribut RANGE
Attribut
REVERSE_RANGE

Il exprime le nombre dlments dun indice.


Il exprime lintervalle de variation de sa borne gauche sa
borne droite
Il exprime lintervalle de variation de sa borne droite sa borne
gauche.

25

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Chapitre 3
Les diffrents styles de descriptions dune architecture

En VHDL, il existe plusieurs styles descriptions dune architecture qui diffrent les unes des
autres.
Les trois descriptions principales sont :
-

Description par flot de donnes.


Description comportemental (appele aussi procdural).
Description structurelle.

Il existe aussi des styles de descriptions mixtes, ces derniers combinent les trois styles de
descriptions cites auparavant, et enfin une description trs importante pour la simulation qui
est larchitecture de test.
Nous prsentons dans ce chapitre, les diffrentsstyles de descriptions quon a cites.

3.1 Description par flot de donnes :


Cest une description qui dcrit la faon dont les donnes transitent lintrieur dun circuit.
Les codes VHDL vus prcdemment taient des descriptions de type flot de donnes.
Elle se base sur des expressions boolennes (les oprateurs logiques) des fonctions de
sorties en fonction des entres.
Prenons comme exemple un multiplexeur 4 vers 1 (Figure 3.1) et dcrivons-le avec le style
de description flot de donnes (Listing 3.1).

Figure 3.1 Symbole logique dun multiplexeur 4 vers 1.


26

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 3.1 Description VHDL avec le style de description flot de donnes dun multiplexeur
4 vers 1.

Simulation :

3.2 Description comportementale :


Appele aussi description procdurale, elle dcrit le comportement dun circuit selon des
conditions (IF), des cas (CASE, WHILE), et des boucles (FOR).
Cest une description qui comporte des processus (PROCESS) qui sexcutent en parallles.
Les instructions lintrieur dun processus sexcutent squentiellement.
Il faut bien faire la diffrence entre les modes dexcutions parallles et squentielles.

3.2.1 Le PROCESS :
On utilise le PROCESS pour faciliter la modlisation dun systme.
27

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

On peut le considrer comme une boite noire o il ya des instructions lintrieur qui
sexcutentsquentiellement (Figure 3.2).
Ces PROCESS comportent une grande varit de construction, mais il faut faire attention
quand on les utilise car beaucoup dentre eux nont pas une homologie matrielleclaire, et
conduisent souvent des implmentations complexes, ou ne peuvent pas tre synthtiss
dans le cas o ils sont mal cods.
Les PROCESS sont excuts en concurrence (Figure 3.2).

Figure 3.2 Schma dexcution des PROCESS.

Un PROCESS comprend une liste appele, liste de sensibilit.


Cette liste contient les noms des signaux qui activent ce PROCESS.
Exemple :

La liste de sensibilit de ce PROCESS est (A, B).


Linstruction dans le PROCESSne sexcute que lorsquil ya un changement dtat dans le
signal A ou B.
Ainsi, chaque changement dtat du signal A ou B, linstruction S <= A and B est
excute.
28

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
3.2.2 Les variables et les constantes :
On a vu quen VHDL il ya trois types dobjet ; les signaux, les variables et les constantes.
Une variable est un objet auquel on peut affecter, tout moment, la valeur quon dsire, elle
ne peut tre dclare qu lintrieur dun PROCESS.
Exemple de dclaration des variables :

Une constante permet de paramtrer une valeur non modifiable lors de lexcution de la
description, elle peut tre dclare dans un PROCESS (constante locale), ou en dehors de
celui-ci (constante globale).
Exemple de dclaration des constantes :

Dans le code ci-dessus, la constante de la ligne 11 est une constante globale, dclare en
dehors du PROCESS, contrairement la ligne 15, o elle est locale au PROCESS.
Comparaison entre variable et signal :
Type dobjet

Signal

Utilit

Etendu

Reprsente
un fil de
connexion

Globale

Assignation
<=
Comportement
Mise jour
aprs un temps
(cycle delta)

Usage
Dans les
entits, les
architectures,
les packages.

:=
Variable

Reprsente
une
information
locale

Locale

Mise jour
immdiate

Dans des
excutions
squentielles.
29

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
3.2.3 Description avec linstruction if :
La description avec linstruction ifcommence avec le mot rserv
if et se termine avec les deux mots rservs end if ;(remarquer
lespace entre end et if suivie dun point-virgule ;)ensuite vient la
condition, suivie par le mot rserv then

Exemple 1 :

if condition_1 then
squence_instructions_1 ;
elsif condition_2 then
squence_instructions_2 ;
else

if signal_x = 1 then
y <= 0 ;

squence_instruction_3 ;
end if ;

end if ;
La condition est vraie quand la valeur du signal signal_x est ltat logique 1, et elle
est fausse dans le cas contraire.
Quand la condition est vraie, les instructions entre if et end if sont excutes.
Dans notre exemple, le signale y recevra le niveau logique 0, si la valeur du signal
signal_x vaudra le niveau logique 1, dans le cas contraire les instructions entre if
et end if ne seront pas excutes.

Exemple 2 :
Dans cet exemple, il ya un signal nomm s qui dpend de la valeur du

if (a > 5) then

signal nomm a .
Les tests se font squentiellement.

s <= 1;
elsif (a < 3 then) then

Le signal s recevra le niveau logique 1 si la valeur du signal a sera


suprieure 5, si cette dernire sera infrieure 3, alors le signal s

s <= 0;
else

recevra le niveau logique0.


Si par contre, aucune des conditions prcdentes ne seront satisfaites alors

s <= z;
end if;

lesignal s recevra ltat de la haute impdance.

Remarque :
A lintrieur du bloc if et end if , quand un else prcde un if , ils sont colls et
le e est limin la fin de else (elsif).

30

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Exemple pratique :
On tudie les mmes circuits vus prcdemment, pour quon puisse faire la diffrence entre
les diffrents styles de descriptions dune architecture en VHDL.
Soit un multiplexeur 4 vers 1 donne la figure 3.1.
La description de ce circuit en VHDL est donne par le listing 3.2.

Listing3.2Multiplexeur 4 vers 1 avec la description if .

Simulation :

31

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

3.2.4 Description avec linstruction CASE :


La description avec linstruction case est utilise lorsque la
valeur dun signal peut tre utilise pour choisir entre un certain

case instruction is
when choix_1 => instruction_1 ;

nombre dactions.

when choix_2 => instruction_2;

Cette description dbute avec le mot rserv case suivi

when choix_3 => instruction_3;

par une instruction, et le mot-cl is .


Linstruction entre case et is , renvoie une valeur qui

when others => instruction_n;

correspond un des choix qui se trouvent dans les dclarations WHEN et OTHERS .

Important :
La description avec linstruction case doit obligatoirement avoir le choix others la fin, si
toutes les valeurs de lexpression ne sont pas numres.

Exemple :
On donne dans le listing 3.3 une autre architecture de lentit mux_4v1,dcrit avec la
description case .

Listing 3.3Architecture VHDL dun multiplexeur 4 vers 1 avec la description case .

3.2.5 Description avec les boucles (loop) :


En VHDL, les boucles sont utiliss quand il ya rptition dune opration. Les rptitions
peuvent tre itratives (for), conditionnelles (while), et infinie (loop). On tudie dans ce
chapitre les 2 premires boucles.
32

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
3.2.5.1Rptitions itratives (for) :
La syntaxe simplifie dune boucle for est :
forindice inintervalle_boucle loop
instructions_squentielles ;
end loop;

La boucle forest base sur un indice, et rpte les instructions squentielle pour un nombre
fixe ditrations (intervalle_boucle).

Exemple :
Lutilisation de la boucle for est montr par un exemple simple : description dun circuit xor
de 4 bits (listing3.4).

Listing 3.4Description VHDL duncircuit numrique xor de 4 bits dcrit avec la boucle
for .

Commentaire :
Le nombre ditrations de la boucle est 4 (3 downto 0).
Lindice de la boucle est I , ce dernierest local (cest--dire quil nappartientqu la boucle)
et na pas besoin dtre dclare.
Lindice prends toujours la valeur qui est gauche dans lintervalle ditration, dans notre
exemple, lindice I vaudra 3 dans la premire itration, 2 dans la deuxime itration, 1
dans la troisime itration, et enfin 0 dans la quatrime itration.
33

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
3.2.5.2 Rptitions conditionnelle (while) :
La syntaxe simplifie dune boucle while est :
while condition_boolenne loop
instructions_squentielles ;
end loop;
La boucle while est une variante de la boucle for, mis part que lincrmentation de lindice
de la boucle while se fait tant que la condition boolenne associe est vraie.

Exemple :
Lutilisation de la boucle while est dmontr par le mme exemple vu avec la boucle for :
description dun circuit xor de 4 bits (listing 3.5).

Listing 3.5Description VHDL dun circuit numrique xor de 4 bits dcrit avec la boucle
while .

Commentaire :
Lindice de la boucle est la variable locale I quon a initialis au pare avant 0 :
variable I : integer := 0 ;
Le nombre ditrations de la boucle est 4 ( I< 5).
Linstruction S(I) <= A(I) xor B(I) ;va sexcuter tant que la condition sera vrai (cest dire
tant que la variable I sera strictement infrieure 5).
34

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
3.3 Description structurelle :
Lorsquon a un systme lectronique compos, on peut structurer et sparer ces
composants en des blocs plus petits pour les dcrire plus simplement.
Lavantage dune telle description est la simplicit et la rapidit de la synthse.
Pour comprendre le principe de cette description, prenons comme exemple ladditionneur
complet 1 bit de la figure 1.4.
Cet additionneur est compos de deux demi-additionneurs et une porte logique OR (figure
3.3).

Figure 3.3 Schma dun additionneur complet 1 bit

Les deux demi-additionneurs et la porte logique OR peuvent tre considrs comme des
blocs.
Chaque bloc est appel component (composant), et est une instance du modle.
Pour diffrencier ses derniers, chaque instance un nom distinct.
Chaque bloc doit tre dcrit sparment (cest--dire avoir son entit et larchitecture
associe) (listing 3.6 et listing 3.7).

Listing 3.6 Description VHDL dune porte logique OR.


35

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 3.7 Description VHDL dun demi-additionneur 1 bit.

Dans larchitecture de ladditionneur complet 1 bit, il faut dclarer les composants


(component) utiliss, ainsi que leurs broches dentre-sortie pour faire les interconnexions
ncessaires (listing 3.8).

Listing 3.8 Dclaration des composants de ladditionneur complet 1 bit.

Nous avons besoin des signaux intermdiaires pour dcrire lassemblage des instances
utilises.

3.3.1 Instanciation :
Il sagit de mettre en correspondance chaque broche de chacune des instances des
composants avec les ports auquel il est connect.
Il ya trois types dinstanciation :
-

Instanciation par position


Instanciation par nom
Instanciation mixte
36

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
3.3.1.1 Instanciation par position :
Linstanciation par position consiste interconnecter pour chaque instance, les signaux
connects ses broches exactement selon lordre choisi dans la dclaration component
(listing 3.9).

Listing 3.9 Description structurelle dun additionneur complet 1 bit avec instanciation par
position.

3.3.1.2 Instanciation par nom :


Linstanciation par nom consiste interconnecter pour chaque instance, les signaux
connects ses broches sans respecter lordre choisi dans la dclaration component
(listing 3.10).
Il faut cependant utiliser le symbole => pour la correspondance entre les broches de
linstance et le signal auquel elle est connecte.

37

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 3.10 Description structurelle dun additionneur complet 1 bit avec instanciation par
nom.

3.3.1.3 Instanciation mixte (listing 3.11):


Linstanciation mixte permet dutiliser les instanciations par position et par nom en mme
temps, mais dans ce cas-l, linstruction port map autorise une association par position
pour commencer, ensuite une association par nom pour finir.
On ne peut pas faire le contraire.

Listing 3.11 Description structurelle dun additionneur complet 1 bit avec instanciation mixte

38

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Chapitre 4 (Partie 1)
La modlisation des circuits squentiels

4.1 Introduction :
Les bascules sont les lments de base des circuits squentiels.
Dans ce chapitre, nous allons dabord dcrire en VHDL ces bascules, puis on modlisera
des circuits squentiels complexes.
Nous rappelons que dans les circuits squentiels, les sorties ne dpendent pas que des
entres, mais aussi de la valeur de ltat de sortie prcdente.
Le modle gnral dun circuit squentiel est montr dans la figure 4.1.
Comme on peut le constater, un circuit squentiel est compos dun circuit combinatoire et
dun lment de mmoire (bascules).
Le circuit combinatoire reoit deux signaux dentres ; un signal primaire (rgi par
lenvironnement du circuit) et un signal secondaire (rgi par llment de mmoire).
La partie combinatoire du circuit squentiel possde deux sorties ; une sortie primaire qui
contrle les oprations, et une sortie secondaire utilise pour la spcification de ltat qui
sera assum par la mmoire.
Les variables de sortie secondaire sont appeles variables dexcitation et dpendent du type
de la bascule utilise.

Figure 4.1 Modle gnral dun circuit squentiel.

39

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
4.2 Les oprations synchrones et asynchrones :
Les circuits squentiels peuvent tre classs en deux catgories :
-

Les circuits squentiels synchrones.


Les circuits squentiels asynchrones.

Dans les circuits synchrones, ltat de la variable de sortie change des instants discrets du
temps, ce dernier est sous le contrle dune pulsation synchrone appele horloge.
Dans les circuits squentiels synchrones, les changements de ltat de la variable de sortie
se font lors des transitions de lhorloge.
Ces transitions sont des fronts montants (de 0 1) ou des fronts descendants (de 1 0)
(figure 4.2).
En VHDL, la fonction des fronts dune horloge (nomme par exemple CLK) est :
- Pour les fronts montants :
CLKevent and CLK=1 ou bien : rising_edge(CLK);
- Pour les fronts descendants :
CLKevent and CLK = 0 ou bien falling_edge(CLK);
Dans les circuits squentiels asynchrones, les changements de ltat de la variable de sortie
peuvent changer des instants irrguliers.

Figure 4.2 Signal dhorloge.

4.3 Les LATCHS :


Le modle vu dans la Figure 4.1 montre bien que lunit mmoire est la partie essentielle
dun circuit squentiel.
40

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Lunit de mmoire se compose gnralement dune srie de LATCHES (Verrous).
4.3.1 LATCH R-S (Figure 4.3) :
Cest un LATCH deux entres R (RESET), S (SET) et deux sorties complmentaires Q et
Q.

(a)

(b)

Figure 4.3 (a) LATCH R-S form avec des portes logiques NOR et (b) LATCH R-S form
avec des portes logiques NAND.

Le LATCH R-S a un trs grand inconvnient, cest son tat indtermin (tat interdit). Dans
le cas o le LATCH est form avec des portes logiques NOR (figure 4.3 (a)), ltat
indtermin arrive quand les entres R et S sont 1.
Dans le cas o le LATCH est form avec des portes logiques NAND (figure 4.3 (b)), ltat
indtermin arrive quand les entres R et S sont 0.

Table de vrit dun LATCH R-S ( base de NOR) :


R S
0
0
1
1

0
1
0
1

Q(t)

Q (t+1)

Q
Q
1
0
0
1
Etat indtermin Etat indtermin
Figure 3.4Symbole logique dun LATCH R-S

Table de vrit dun LATCH R-S ( base de NOR) :

R S
Q(t)
Q (t+1)
0 0 Etat indtermin Etat indtermin
0 1
1
0
1 0
0
1
1 1
Q
Q

( base de NOR).

Figure 3.5Symbole logique dun LATCH R-S


( base de NAND).
41

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 4.1 Description VHDL du LATCH R-S.

Figure 4.6 Rsultat de la simulation du LATCH R-S.


4.3.2 LATCH RSH :
Cest un LATCH R-S avec une troisime entre qui sert dactivation (figure 4.7).

Figure 4.7 Symbole logique du LATCH RSH.


42

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Table de vrit :
H R S

Q(t)

Q (t+1)

1
1
1
1

0
0
1
1

0
1
0
1

Q
Q
1
0
0
1
Etat indtermin Etat indtermin

Listing 4.2 Description en VHDL du LATCH RSH.

Remarque :
On a suppos que ltat indtermin arrive lorsque les signaux dentres R et S sont 1.

43

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.6 Rsultat de la simulation du LATCH RSH.

4.3.3 LATCH D :
Un LATCH R-S peut tre converti en un autre LATCH, connu sous le nom de LATCH D, en
ajoutant un inverseur (Figure 4.7).

Figure 4.7 LATCH D.


Table de vrit du LATCH D :
H D Q(t+1)
0
1
1

0
1

Q
0
1

Q (t+1)
Q
1
0

La figure 4.7 montre un LATCH D construit partir dun LATCH R-S base de porte
logique NAND.
Comme on peut le voir sur la table de vrit du LATCH D, la sortie Q suit lentre D si
lentre H = 1. Si lentre H est 0, la sortie Q garde ltat prcdent.
Lavantage du LATCH D par rapport au LATCH R-S, cest quil ny a pas une combinaison
qui produira un tat indtermin.
La description en VHDL du LATCH D est donne par le listing 4.3.

44

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 4.3 Description en VHDL du LATCH D.

Figure 4.8 Rsultat de la simulation du LATCH D.

4.4 Les FLIP-FLOPS :


Un FLIP-FLOP, comme un LATCH possde deux tats stables, mais contrairement au
LATCH, les transitions (changement dtat de sortie) se font lors des fronts (montant ou
descendant) et non pas par des niveaux.
La figure 4.9 montre les chronogrammes dun LATCH D et dun FLIP-FLOP D.

45

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.9 Chronogramme dun LATCH D et dun Flip-Flop D.

4.4.1 Flip-Flop D :
Lentre D est transfre la sortie Q lors dun front (montant ou descendant)
dhorloge (cest--dire du niveau logique 0 au niveau logique 1 ou bien le contraire).
Prenons comme exemple un Flip-Flop D actif sur front montant.
Symbole logique (figure 4.10) et table de vrit :
Set Reset
0
0
0
1
1
0

Clk
-

D
-

Q(t+1)
0
1
0

Q (t+1)
1
0
1

Figure 4.10 Symbole logique dun Flip-Flop D.

Remarque :
Lorsque les deux entres Reset et Set sont ltat logique 0, une priorit doit tre
conue soit pour Reset , soit pour SET .
46

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 4.4 Description en VHDL dun Flip-Flop D.

Figure 4.11 Rsultat de la simulation du Flip-Flop D.

47

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

4.4.2Flip-Flop J-K :
Le Flip-Flip J-K a les fonctions similaires du LATCH R-S, avec lentre J qui est quivalente
lentre S (mise 1), et lentre K qui est quivalente lentre R (remise 0).
Contrairement au LATCH R-S, le Flip-Flop J-K ne possde pas des combinaisons dentre
qui donneront un tat indtermin.
Prenons comme exemple un Flip-Flop J-K actif sur front descendant.

Symbole logique (figure 4.12) et table de vrit :


Set Reset
0
0
0
1
1
0

Figure 4.12 Symbole logique dun Flip-Flop J-K.

Clk
-

J
-

K Q(t+1)
0
1
0

Q (t+1)
1
0
1

0 0

0 1

1 0

1 1

Remarque :
Si les entres J et K sont 1, la sortie prend linverse de ltat prcdent.
J 1
Q Q

K 1
La description en VHDL du Flip-Flop J-K est donne par le listing 4.5.

48

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 4.5 Description en VHDL dun Flip-Flop J-K.

Figure 4.13 Rsultat de la simulation du Flip-Flop J-K.


49

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

4.4.3 Flip-Flop T:
Connu aussi sous le nom de trigger flip-flop , le flip-flip T possde une seule entre de
donnes.
Le symbole logique dun flip-flip T (actif sur front montant) est montr dans la figure 4.14.
Symbole logique du Flip-Flop T et a table de vrit :
Clk

Q(t+1)

Q (t+1)

Q
Q

Figure 4.14 Symbole logique dun flip-flop T


(Actif sur front montant).

Lorsque le flip-flop T dtecte un front montant sur lhorloge Clk et que T = 1, la sortie
prend la valeur inverse de ltat prcdent.

Listing 4.6 Description en VHDL dun Flip-Flop T.


50

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.13 Rsultat de la simulation du Flip-Flop T.

51

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Chapitre 4 (Partie 2)
La modlisation des circuits squentiels complexes

4.5 Compteurs et Registres :


Les compteurs et les registres sont des circuits logiques squentiels, ils ont une architecture
similaire, cest--dire quils comprennent des bascules mises en cascade, relies ou non
avec un systme logique combinatoire.
Dans cette deuxime partie du chapitre 4, on va tudier plusieurs types de compteurs, ainsi
que les registres.
4.5.1 Compteurs :
Les compteurs sont principalement utiliss dans les applications de comptage.
Plusieurs types de compteurs existent, suivant lapplication, ils peuvent tre synchrones ou
asynchrones, compter ou dcompter.
4.5.1.1 Compteurs asynchrones :
Un compteur asynchrone, est un ensemble de flip-flop mises en cascade, o la sortie dun
Flip-Flop pilote lentre dhorloge de la bascule suivante.
Dans un compteur asynchrone, lhorloge (CLK) est applique uniquement la premire
bascule, (appel bascule dentre).
L'entre d'horloge dune bascule (n+1) provient de la sortie de la bascule (n).
La figure 4.14 reprsente un schma gnral dun compteur asynchrone de n bits, form
partir de bascules JK actives sur front descendant.

Figure 4.14 Schma gnral dun compteur dondulation de n bits.

52

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
4.5.1.1.a) Description dun compteur asynchrone 2 bits :
La figure 4.15 montre un compteur asynchrone 2 bits.
Noter que lhorloge CLK nest applique quau premier Flip-Flop (FF0) qui reprsente le bit le
moins significatif (LSB) du compteur.
La seconde bascule (FF1), est pilote par le signal de sortie Q de la premire bascule (FF0).
La bascule FF0 change d'tat au front descendant de l'horloge CLK.
La bascule FF1 change dtat au front descendant du signal de sortie Q de la premire
bascule (FF0).
Par consquent, les changements dtats des deux bascules narrivent jamais en mme
temps.

Figure 4.15 Compteur asynchrone 2 bits.


Diagramme de temps :
Examinons le fonctionnement de base du compteur asynchrone de la figure 4.15 en
appliquant des impulsions dhorloge (CLK) et en observant les sorties de chaque Flip-Flop.
La figure 4.16 illustre les changements dtats des Flip-Flops en fonction de lhorloge.
Les entres (J et K) des deux bascules sont mises ltat logique 1, et on suppose que
ltat initial de chaque bascule est ltat logique 0.

Figure 4.16 Diagramme du temps du compteur de la figure 4.15.

53

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

On voit dans la figure 4.16 quun front descendant du signal dhorloge (CLK) change ltat
de sortie Q0 de la premire bascule (FF0), tandis quil ny a aucun changement dans la
deuxime bascule, cette dernire (FF1) change dtat lorsquelle dtecte un front descendant
de la premire bascule (FF0).
Table de vrit des transitions du compteur de la figure 4.15 :
CLK Valeurs Q1(t) Q0(t) Q1(t+1) Q0(t+1)
0
0
0
0
1
1
0
1
1
0
2
1
0
1
1
3
1
1
0
0

Description VHDL du compteur de la figure 4.15 :


Notre compteur est compos de deux Flip-Flop JK actives sur front descendant, donc on
commence par dcrire un Flip-Flop JK actif sur front descendant (listing 4.7) sans prendre
en compte le signal RESET et SET (comme on la fait dans le listing 4.5), car ils ny figurent
pas dans la figure 4.15.

Listing 4.7 Description VHDL dun Flip-Flop JK


54

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
La description VHDL du compteur de la figure 4.15 est donne par le listing 4.8.

Listing 4.8 Description VHDL du compteur de la figure 4.15.

Figure 4.16 Simulation du compteur asynchrone 2 bits.

On voit bien que cest un compteur asynchrone 2 bits.

4.5.1.1.b) Description dun dcompteur asynchrone 3 bits:


Les squences dtats dun dcompteur 3 bitssont donnes par le tableau ci-dessous, le
schma de ce compteur est donn par la figure 4.17.
Notons que pour 3 bits, il nous faut 3 bascules.

55

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

CLK Valeur Q2(t) Q1(t) Q0(t)


7
1
1
1
6
1
1
0
5
1
0
1
4
1
0
0
3
0
1
1
2
0
1
0
1
0
0
1
0
0
0
0

Q2(t+1) Q1(t+1) Q0(t+1)


1
1
0
1
0
1
1
0
0
0
1
1
0
1
0
0
0
1
0
0
0
1
1
1

Figure 4.17 Schma dun dcompteur asynchrone 3 bits.

Diagramme de temps :
Examinons le fonctionnement de base du compteur asynchrone de la figure 4.17 en
appliquant des impulsions dhorloge (CLK) et en observant les sorties de chaque Flip-Flop.
La figure 4.18 illustre les changements dtats des Flip-Flops en fonction de lhorloge.
Le dlai de propagation nest pas pris en considration.
Les entres (J et K) des deux bascules sont mises ltat logique 1, et on suppose que
ltat initial de chaque bascule est ltat logique 0.

Figure 4.18 Diagramme du temps du compteur de la figure 4.17.

56

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

On voit dans la figure 4.18 quun front descendant du signal dhorloge (CLK) change ltat
de sortie Q0 de la premire bascule (FF0), tandis quil ny a aucun changement dans les
deux autres bascules.
La bascule FF1 change dtat lorsquelle dtecte un front descendant de la premire bascule
(FF0).
La bascule FF2 change dtat lorsquelle dtecte un front descendant de la bascule (FF1).
La description VHDL de ce compteur est donne par le listing 4.9.

Listing 4.9 Description VHDL du compteur de la figure 4.17.

Figure 4.19 Simulation du dcompteur asynchrone 3 bits.

57

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
4.5.1.1.c) Dlai de propagation dans un compteur asynchrone :
Dans les diagrammes de temps quon a vus ultrieurement, le temps de propagation des
signaux ntait pas pris en considration pour la comprhension du fonctionnement des
compteurs.
En ralit, un compteur asynchrone possde un majeur problme, les changements dtats
des signaux de sorties des bascules ne se font pas en mme temps, mais aprs un certain
dlai de propagation.
Dabord, leffet de lhorloge nest pris en considration que par la premire bascule.
Leffet de la premire bascule est ensuite ressenti par la deuxime bascule, donc la
deuxime bascule doit attendre par lintermdiaire de la premire bascule leffet de lhorloge
et ainsi de suite pour les bascules qui suivent.
Pour comprendre ce concept, tudions le chronogramme de la figure 4.20 qui reprsente un
diagramme de temps dun compteur asynchrone 4 bits (le temps de propagation est pris en
considration).

Figure 4.20 Dlai de propagation dans un compteur 3 bits.

Les numros (en vert) dans le diagramme de temps de la figure 4.20 correspondent ce
qui suit :
1 : Le temps de la transition de ltat logique 1 ltat logique 0 (T PHL), correspond au
temps de propagation de lhorloge (CLK) Q0.
2 : Le temps de la transition de ltat logique 0 ltat logique 1 (T PLH), correspond au
temps de propagation de Q0 Q1.
3 : Le temps de la transition de ltat logique 0 ltat logique 1 (T PLH), correspond au
temps de propagation de Q1 Q2.
La somme des dlais de propagation de toutes les bascules doit tre infrieure la priode
de lhorloge.
58

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
4.5.1.1.d) Compteur asynchrone modulo N :
Un compteur asynchrone modulo N est un compteur qui compte de 0 jusqu N-1, il possde
N tats.
Prenons comme exemple, un compteur asynchrone modulo 6
Pour cela, il nous faut au minimum trois bascules.
Le schma de ce compteur est donn par la figure 4.21.

Figure 4.21 Schma dun compteur asynchrone modulo 6 form par des bascules JK
activent par front descendant.

Pour raliser un compteur modulo N, il faut que le compteur se remette 0 aprs ltat (N-1),
donc il faut utiliser les entres de rinitialisation (RESET).
Dans le schma de la figure 4.21, on a utilis une autre appellation de RESET : Clr (Clear).
Dans le cas dun compteur modulo 6, il faut que le comptage soit interrompu aprs le 5 et
soit remis 0 pour recommencer.
La description VHDL de ce compteur est donne par le listing 4.10.

59

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 4.10 Description VHDL du compteur de la figure 4.21.

Figure 4.22 Simulation du compteur asynchrone modulo 6.

4.5.1.2 Compteurs synchrones :


Un compteur synchrone est un compteur o toutes les bascules qui le constituent sont
synchronises avec une horloge commune, par consquent, toutes les bascules changent
dtats en mme temps.
Le dlai de propagation dans le cas dun compteur synchrone est gal au dlai de
propagation dune seule bascule, ce qui le rend indpendant du nombre de bascules
utilises (cest--dire indpendant de sa taille), cest un avantage par rapport aux compteurs
asynchrones vus prcdemment.
60

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

La figure 4.23 reprsente un schma gnral dun compteur synchrone de n bits, form
partir de bascules JK actives sur front descendant.

Figure 4.23 Schma gnral dun compteur synchrone de n bits.

4.5.1.2.a) Description dun compteur synchrone 2 bits :


La figure 4.24 montre le schma dun compteur synchrone 2 bits.
Noter que lhorloge CLK est applique aux deux Flip-Flops, FF0 et FF1, o FF0 reprsente
le bit le moins significatif (LSB) du compteur et FF1 reprsente le bit le plus significatif
(MSB).
Les changements dtats des deux bascules arrivent en mme temps, car ils sont pilots par
la mme horloge (CLK), ce qui est un avantage.

Figure 4.24 Schma dun compteur synchrone 2 bits.

Diagramme de temps :
Examinons le fonctionnement de base du compteur synchrone de la figure 4.24 en
appliquant des impulsions dhorloge (CLK) et en observant les sorties de chaque Flip-Flop.
La figure 4.25 illustre les changements dtats des Flip-Flops en fonction de lhorloge.

61

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Le dlai de propagation nest pas pris en considration.

Figure 4.25 Diagramme du temps du compteur de la figure 4.24.

On voit dans la figure 4.25 quun front descendant du signal dhorloge (CLK) change ltat
de sortie Q0 de la premire bascule (FF0), tandis quil ny a aucun changement dans la
deuxime bascule.
La bascule FF1 change dtat lorsquelle dtecte un front descendant de lhorloge (CLK) et
un front descendant de la premire bascule (FF0) en mme temps.
La description VHDL du compteur de la figure 4.24 :
On va dcrire notre compteur (figure 4.24) avec une description structurelle (Listing 11).

Listing 4.11 Description VHDL dun compteur synchrone 2 bits avec une description
structurelle.
62

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Comme on la dj cit, plusieurs mthodes existent pour dcrire nos circuits.
Dcrivons un autre compteur synchrone avec une description comportementale.
Prenons comme exemple, un compteur synchrone 3 bits actif sur front montant, sa
description en VHDL est donne par le listing 4.12 et le schma rsultant est donn par la
figure 4.26.
On a utilis un autre paquetage utile pour cette modlisation numeric_std , cette
dernire nous permet de manipuler des oprations arithmtiques de base telles que
laddition et la soustraction (+, -), mais aussi de manipuler des nombres signs et nonsigns.

Listing 4.12 Description VHDL dun compteur synchrone 3 bits avec une description
comportementale.

Figure 4.26 Simulation du compteur synchrone 2 bits.


61

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.26 Simulation du compteur synchrone 3 bits modlis avec le style de description
comportementale.
4.5.1.2.b) Description dun compteur synchrone 3 bits :
La figure 4.27 montre un compteur synchrone 3 bits.
Noter que lhorloge CLK est applique au trois Flip-Flops, FF0, FF1 et FF2 o FF0
reprsente le bit le moins significatif (LSB) du compteur, et FF2 reprsente le bit le plus
significatif (MSB).

Figure 4.27 Compteur synchrone 3 bits.

On comprend aisment le fonctionnement du compteur de la figure 4.27 en examinant ses


squences dtats comme indiqu dans le tableau suivant :
CLK Valeur Q2(t) Q1(t) Q0(t) Q2(t+1) Q1(t+1) Q0(t+1)
0
0
0
0
0
0
1
1
0
0
1
0
1
0
2
0
1
0
0
1
1
3
0
1
1
1
0
0
4
1
0
0
1
0
1
5
1
0
1
1
1
0
6
1
1
0
1
1
1
7
1
1
1
0
0
0
62

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Diagramme de temps :
Le diagramme de temps du compteur synchrone 3 bits est montr dans la figure 4.28.
Le dlai de propagation nest pas pris en considration.

Figure 4.28 Diagramme du temps du compteur de la figure 4.24.

La description VHDL du compteur de la figure 4.27 :

Listing 4.13 Description VHDL dun compteur synchrone 3 bits avec une description
structurelle.
63

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.29 Simulation du compteur synchrone 3 bits modlis avec le style de description
structurelle.

4.5.1.2.c) Dlai de propagation dans un compteur synchrone :


Les bascules dans un compteur synchrone sont pilotes par la mme horloge, par
consquent les changements dtats de ces bascules se font tous en mme temps, ce qui
prsente un trs grand avantage par rapport aux compteurs asynchrones.
La figure 4.30 illustre un diagramme de temps dun compteur synchrone 2 bits.
D : dlai de propagation, qui est le temps de transition de lhorloge (CLK) jusqu Q0 de la
premire bascule.

Figure 4.30 Diagramme de temps dun compteur synchrone 2 bits.

4.5.1.2.d) Compteur synchrone modulo N :


Etudions un compteur synchrone trs connu et beaucoup utilis dans les applications de
comptage et daffichage de celle-ci : Les dcades (compteur synchrone modulo 10).
Un compteur dcade possde 10 tats, cest avec 4 bits (4 bascules) quil est conu.
Le schma dun tel compteur est montr dans la figure 4.31.
64

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.31 Schma dun compteur dcade synchrone.

Le diagramme du temps :

Figure 4.32 Diagramme du temps du compteur dcade synchrone.

On comprend aisment le fonctionnement dun compteur synchrone dcade en examinant la


table de vrit ci-dessous, et en suivant son schma donne par la figure 4.31.
On voit que la premire bascule (FF0) agit sur front descendant de lhorloge (CLK), et nest
dpendante que de celle-ci. Les quations boolennes de ce compteur sont donnes par :

J0=1

K0=1

J1=Q0.Q3

K1=Q0.Q3

J2=Q0.Q1

K2=Q0.Q1

J3=Q0.Q1.Q2

K3=Q0.Q1

65

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

CLK Valeur Q3(t) Q2(t) Q1(t) Q0(t)


0
0
0
0
0
1
0
0
0
1
2
0
0
1
0
3
0
0
1
1
4
0
1
0
0
5
0
1
0
1
6
0
1
1
0
7
0
1
1
1
8
1
0
0
0
9
1
0
0
1

Q3(t+1) Q2(t+1) Q1(t+1) Q0(t+1)


0
0
0
1
0
0
1
0
0
0
1
1
0
1
0
0
0
1
0
1
0
1
1
0
0
1
1
1
1
0
0
0
1
0
0
1
0
0
0
0

Dcrivons en VHDL, le compteur dcade synchrone avec les deux styles de description,
comportementale (listing 4.14) et structurelle (listing 4.15).

Listing 4.14 Description VHDL avec le style comportemental dun compteur dcade.

66

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 4.15 Description VHDL dun compteur dcade synchrone une description
structurelle.

Figure 4.33 Simulation du compteur synchrone dcade modlis avec le style de description
structurelle.

4.5.1.3 Compteur avec choix pour le mode : comptage/dcomptage


Cest un compteur qui peut compter ou dcompter, on lappellecompteur bidirectionnel.
En gnral, les compteurs bidirectionnels peuvent changer de mode aprs nimporte quelle
squence.
67

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des systmes
numriques.

La figure 4.34 montre le schma dun compteur bidirectionnel 3 bits.

Figure 4.34 Schma dun compteur synchrone 3 bits avec mode de comptage.

Le tableau qui suit montre les transitions du compteur selon le choix du mode de comptage.

Comptage
CLK

Mode de comptage
Dcomptage

Valeur

Q2(t)

Q1(t)

Q0(t)

Q2(t+1)

Q1(t+1)

Q0(t+1)

Q2(t+1)

Q1(t+1)

Q0(t+1)

0
1
2
3
4
5
6
7

0
0
0
0
1
1
1
1

0
0
1
1
0
0
1
1

0
1
0
1
0
1
0
1

0
0
0
1
1
1
1
0

0
1
1
0
0
1
1
0

1
0
1
0
1
0
1
0

1
0
0
0
0
1
1
1

1
0
0
1
1
0
0
1

1
0
1
0
1
0
1
0

Notons le mode de comptage par P et le mode de dcomptage par R.


Les quations boolennes de ce compteur sont donnes par :

J0 = 1

K0 = 1

J1 = (Q0.P) + (Q0.R)

K1 = (Q0.P) + (Q0.R)

J2 = (Q0.Q1.P) + (Q0.Q1.R)

K2 = (Q0.Q1.P) + (Q0.Q1.R)

Le diagramme de temps du compteur bidirectionnel est donn par la figure 4.35.


Le dlai de propagation nest pas pris en considration.
68

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.35 Diagramme du temps du compteur synchrone bidirectionnel.

Description en VHDL du compteur bidirectionnel (Listing 4.16) :

Listing 4.16 Description VHDL dun compteur bidirectionnel 4 bits.

69

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.36 Simulation du compteur synchrone bidirectionnel 4 bits modlis avec le style
de description comportementale.

4.5.1.4 Mthode de conception dun compteur synchrone :


Pour concevoir un compteur synchrone, il faut suivre les tapes suivantes :
A) Etablir le nombre de bascules ncessaires : n
Avec

log x
n
log2

B) Etablir la table des transitions du compteur , cest--dire la table de vrit des


tats prsents et futurs du compteur.
C) Etablir la table des transitions des bascules en fonction de la table des transitions du
compteur.
D) Simplifier les quations des entres des bascules laide des tableaux de Karnaugh.
E) Implmentation du compteur.
Remarque :
Dans le cas o le rsultat de

log x
log2

nest pas un nombre entier, le ramener un nombre

entier la valeur suprieur.


Par exemple pour :

23,4 il faut 24 bascules.

Exemple :
Conception dun compteur GRAY 3 bits.
A) Nombre de bascules ncessaires : 3
B) Table des transitions du compteur :

70

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Etat prsent
Q2(t) Q1(t) Q0(t)
0
0
0
0
0
1
0
1
1
0
1
0
1
1
0
1
1
1
1
0
1
1
0
0

Etats suivant
Q2(t+1) Q1(t+1) Q0(t+1)
0
0
1
0
1
1
0
1
0
1
1
0
1
1
1
1
0
1
1
0
0
0
0
0

C) Table des transitions des bascules :


On suppose quon veut concevoir un compteur form par des bascules type JK actives sur
front descendant.
Table de transition de la bascule JK :
Q(t) Q(t+1) J K
0
0
0 X
0
1
1 X
1
0
X 1
1
1
X 0
A partir de la table de transition de la bascule JK, on peut tablir la table des transitions
des bascules en fonction des tats prsents et futurs du compteur :
Q2(t) Q1(t) Q0(t)
0
0
0
0
0
1
0
1
1
0
1
0
1
1
0
1
1
1
1
0
1
1
0
0

Q2(t+1) Q1(t+1) Q0(t+1)


0
0
1
0
1
1
0
1
0
1
1
0
1
1
1
1
0
1
1
0
0
0
0
0

J2 K2
0
X
0
X
0
X
1
X
X
0
X
0
X
0
X
1

J1 K1 J0 K0
0
X
1
X
1
X
X
0
X
0
X
1
X
0
0
X
X
0
1
X
X
1
X
0
0
X
X
1
0
X
0
X

D) A laide des tableaux de Karnaugh, on va simplifier les expressions des quations


dentres des bascules en fonction des tats prsents
Q2(t)Q1(t)\Q0(t)
du compteur0: 1
00
X 0
J0 :
K0 :
Q2(t)Q1(t)\Q0(t) 0 1
01
X 1
00
1 X
11
X 0
01
0 X
10
X 1
11
1 X
10
0 X
Q2(t)Q1(t)\Q0(t) 0 1
00
X X
01
0 0
Q2(t)Q1(t)\Q0(t) 0 1
J1 :
K1 :
11
0 1
00
0 1
71
10
X X
01
X X
11
X X
10
0 0

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

J2 :

Q2(t)Q1(t)\Q0(t)
00
01
11
10

0
0
1
X
X

1
0
0
X
X

K2 :
Q2(t)Q1(t)\Q0(t)
00
01
11
10

0
X
X
0
1

1
X
X
0
0

On obtient les expressions des entres des bascules JK suivantes :

J0 Q2.Q1 Q2.Q1 Q2 Q1

K 0 Q2.Q1 Q2.Q1 Q2 Q1

J1 Q2.Q0

K1 Q2.Q0
J2 Q1.Q0


K2 Q1.Q0
E) Implmentation du compteur :

Figure 4.37 Schma dun compteur GRAY 3 bits.

72

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
4.5.2 Les registres :
Les registres sont principalement utiliss pour le stockage de donnes.
Nous sommes tous familiers avec le rle et lutilisation des diffrents types de registres
utiliss lintrieur dun microprocesseur, ou dun microcontrleur.
Un registre est un circuit squentiel synchrone qui est form principalement par des
bascules D.
La capacit de stockage dun registre dpend du nombre de bascules qui le constituent.
Le schma dun registre n bits form par des bascules type D qui sactivent sur front
montant est reprsent par la figure 4.38.

Figure 4.38 Schma gnral dun registre n bits.

4.5.2.1 Registre dcalage :


Un registre dcalage est un registre qui dcale ses donnes droite ou gauche travers
des bascules mises en cascade.
4.5.2.1.a) Registre dcalage droite :
Cest un registre qui dcale ses donnes droite lorsquun signal dhorloge (CLK) est
appliqu lensemble de bascules qui le constituent.
Dans un tel registre, ltat logique de la sortie Qn de la nimebascule est reproduite la
sortie Qn+1 de la (n+1) ime bascule.
Prenons un exemple dun registre dcalage droite, form par 3 bascules type D qui
sactivent sur front montant.
Le schma de ce registre est donn par la figure 4.39.
73

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.39 Schma dun registre dcalage droite.

Figure 4.40 Diagramme de temps du registre dcalage de la figure 4.39.

On voit que la donne DATA passe la premire bascule (FF0) aprs une impulsion
dhorloge (CLK), aprs une autre impulsion dhorloge, cette donne est transmise de la
premire bascule (FF0) vers la deuxime bascule (FF1), et aprs une autre impulsion
dhorloge, la donne DATA est transmise de la deuxime bascule (FF1) vers la troisime
bascule (FF2).
Autrement dit, la donne DATA est transmise la premire bascule (FF0) aprs une
impulsiondhorloge (CLK), cette donne est transmise la deuxime bascule (FF1) aprs
deux impulsionsdhorloge, et elle est transmise la troisime bascule (FF2) aprs trois
impulsions dhorloges.
On utilise ce genre de registre dans les circuits de temporisation, car on peut obtenir une
temporisation de nimporte quelle dure, il suffit de calculer le nombre de bascules
ncessaires ainsi que la frquence dhorloge appliquer sur celles-ci.
Modlisons en VHDL, le registre de la figure 4.39, par une description structurelle (listing
4.18) et part une description comportementale (listing 4.19).
74

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Tout dabord, donnons le code VHDL dun Flip-Flop D actif sur front montant (listing 4.17).
Remarque : Le Flip-Flop D de la figure 4.29 ne possde pas les entres asynchrones (SET
et RESET).

Listing 4.17 description VHDL dun Flip-Flop D actif sur front montant.

Listing 4.18 Description structurelle en VHDL dun registre dcalage droite.


75

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 4.19 Description comportementale en VHDL dun registre dcalage droite.


Simulation :

Figure 4 .41 Simulation du registre dcalage droite.

Le chronogramme de la figure 4.41 en vert reprsente le rsultat de la simulation du registre


dcalage dcrit avec le style de description structurelle, celui en bleu reprsente le rsultat
de la simulation du registre dcalage dcrit avec le style de description comportementale.
76

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
4.5.2.1.b) Registre dcalage gauche :
Cest un registre qui dcale ses donnes gauche lorsquun signal dhorloge (CLK) est
appliqu lensemble de bascules qui le constituent.
Dans un tel registre, ltat logique de la sortie Qn de la nimebascule est reproduite la
sortie Qn-1 de la (n-1) ime bascule.
Prenons un exemple dun registre dcalage gauche, form par 4 bascules type D qui
sactivent sur front montant.
Le schma de ce registre est donn par la figure 4.42.

Figure 4.42 Schma dun registre dcalage gauche.

Figure 4.43 Diagramme de temps du registre dcalage de la figure 4.42.

La donne DATA est transmise la premire bascule (FF0) aprs quatre impulsions
dhorloge (CLK).

77

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Modlisons en VHDL, le registre de la figure 4.42, par une description structurelle (listing
4.20) en utilisant le composant dcrit en listing 4.17, et par une description
comportementale (listing 4.21).

Listing 4.20 Description structurelle en VHDL dun registre dcalage gauche.

Listing 4.21 Description comportementale en VHDL dun registre dcalage gauche.


78

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Simulation :

Figure 4 .44 Simulation du registre dcalage gauche.

Le chronogramme de la figure 4.44 en vert reprsente le rsultat de la simulation du registre


dcalage dcrit avec le style de description structurelle, celui en bleu reprsente le rsultat
de la simulation du registre dcalage dcrit avec le style de description comportementale.

Application : Registre dcalage avec mode de dcalage droite ou gauche :


Cest un registre qui peut dcaler ses donnes droite ou gauche suivant le choix du
mode de dcalage choisi.
On peut concevoir un tel registre en combinant les deux registres tudis prcdemment et
en ajoutant une entre supplmentaire (MODE) pour la slection du mode de dcalage tel
que :

0 Dcalage droite
MODE
1 Dcalage gauche
Le schma de la figure 4.45 montre un exemple dun registre dcalage avec mode de
dcalage form de quatre bascules type D qui sactivent sur front montant.
Dans la figure 4.45, lentre DATA_R reprsente la donne dcaler droite, et lentre
DATA_L reprsente la donne dcaler gauche.

79

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.45 Schma dun registre dcalage avec mode de dcalage ( droite ou
gauche).
Diagramme de temps :

Figure 4.46 Diagramme du temps du registre dcalage de la figure 4.45. Modlisons en

VHDL le registre dcalage avec mode de dcalage avec les deux styles de
descriptions, structurelle (listing 4.23) et comportementale (listing 4.24).
Distinguons dabord les composants modliser pour le style de description structurelle
(figure 4.47).
80

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.47 Les composants utiliss dans la description VHDL avec le style structurel du
registre dcalage de la figure 4.45.

Le bloc en rouge de la figure 4.47 reprsente les bascules type D quon a dj modlises
dans le listing 4.17.
On remarque que le bloc en vert de la figure 4.47 possde quatre entres, et une sortie.
Les oprations effectues au niveau de ce bloc sont basiques (and, or) ; modlisons-le en
VHDL avec le style de description : flot de donnes.

Listing 4.22 Description en VHDL du bloc en vert de la figure 4.47.

La figure qui se trouve droite du listing 4.22 est un agrandissement du bloc en vert du
registre, les signaux intermdiaires y sont illustrs, ainsi que ses quatre entres et la sortie.

81

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 4.23 Description structurelle en VHDL du registre dcalage de la figure 4.45.

Lorsquon a affaire des circuits lectroniques complexes, cest difficile de ne pas faire
appel au style de description structurelle, car comme on la dj cit auparavant, cest un
style qui structure notre circuit dans des blocs faciles manipuler.
Nanmoins, il faut faire trs attention lorsquon instancie les composants quon veut utiliser
dans le circuit, car linconvnient du style structurel, cest quon peut se tromper lorsquon
instancie des composants et on sy perd assez vite lorsquon manipule un gros systme.
La simulation du registre dcalage de la figure 4.45 est donne dans la figure 4.48.
82

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4 .48 Simulation du registre dcalage de la figure 4.45.

Listing 4.24 Description comportementale en VHDL du registre dcalage de la figure 4.45.


83

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
4.5.2.2 Types de registres dcalage :
Les registres sont galement utiliss pour la conversion de donnes (srielles en parallles,
ou parallles en srielles).
Cest la faon dont les donnes sont charges dans le registre, et la faon de lecture de ces
donnes qui identifie le type de registre.
On distingue quatre types de registre dcalage :
a)
b)
c)
d)

Registre entre srie et sortie srie.


Registre entre srie et sortie parallle.
Registre entre parallle et sortie srie.
Registre entre parallle et sortie parallle.

La figure 4.49 illustre les diffrents types de registre cit ci-dessus.

Figure 4.49 Types de registres dcalage.

4.5.2.2.a) Registre entre srie et sortie srie :


Dans ce type de registre, les donnes sont charges en srie, et lues en srie.
Le schma de la figure 4.50 montre un exemple de ce type de registre form par quatre
bascules type D qui sactivent sur front montant.
Ce type de registre est utilis dans les circuits de temporisation.
Comme on la dj cit ultrieurement, on peut avoir nimporte quel dlai souhait, avec un
nombre de bascules et une frquence dhorloge dtermins.

84

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.50 Schma dun registre dcalage entre srie et sortie srie.

Diagramme de temps :

Figure 4.51 Diagramme de temps du registre de la figure 4.50.


On voit bien que la sortie reoit la donne aprs quatre impulsions dhorloge (CLK).

Listing 4.25 Description comportementale en VHDL du registre dcalage entre srie et


sortie srie.
85

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Simulation :

Figure 4.52 Simulation du registre dcalage entre srie et sortie srie.

4.5.2.2.b) Registre entre srie et sortie parallle :


Dans ce type de registre, les donnes sont charges en srie, et lues en parallle.
Le schma de la figure 4.53 montre un exemple de ce type de registre form par quatre
bascules type D qui sactivent sur front montant.

Figure 4.53 Schma dun registre dcalage entre srie et sortie parallle.

Diagramme de temps :

Figure 4.54 Diagramme de temps du registre de la figure 4.53.


86

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 4.26 Description comportementale en VHDL du registre dcalage entre srie et


sortie parallle.
Simulation :

Figure 4.56 Simulation du registre dcalage entre srie et sortie parallle.

Dans le code VHDL du listing 4.26, on a utilis une boucle LOOP (de ligne 17 ligne
19) pour viter laffectation de la valeur de la variable celle de la sortie plusieurs fois.

87

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
4.5.2.2.c) Registre entre parallle et sortie srie :
Dans ce type de registre, les donnes sont charges en parallle, cest--dire que toutes les
bascules qui constituent le registre reoivent les donnes simultanment, et sont lues en
srie (bit par bit) cest--dire squentiellement donc synchronises avec une horloge.
Un tel registre, possde une entre supplmentaire qui indique au registre ce quil doit faire ;
charger les donnes ou bien les dcaler.
Nommons cette entre par SH/LD (pour LOAD/SHIFT), car cest lappellation quon trouve le
plus souvent dans les circuits intgrs tels que le 74166N de chez TEXAS INSTRUMENTS.
Lentre SH/LD peut tre conue pour fonctionner de faon asynchrone ou synchrone.
Si lentre SH/LD est asynchrone, le chargement des donnes agit sur les entres
asynchrones de la bascule (SET et RESET).
Si par contre lentre SH/LD est synchrone, il faut appliquer une impulsion dhorloge (CLK)
pour chaque chargement dune donne dans la bascule.
Soit DAT A_0, DATA_1, DAT A_2, DATA_3 les donnes charger dans le registre
dcalage, et S la sortie.
Les quations boolennes de ce registre pour le chargement et pour le dcalage sont
donnes par :

D0 DATA _ 0
D1 DATA _ 1

D2 DATA _ 2
D3 DATA _ 3
Chargement

D0 DATA _ 0
D1 Q1

D2 Q2
D3 Q3
Dcalage

Pour :

0 Chargement
SH / LD
1 Dcalage
On aura les quations du registre :

D0 (SH / LD).(DATA _ 0) (SH / LD).(DATA _ 0)

D1 (SH / LD).(DATA _1) (SH / LD).(Q1)

D2 (SH / LD).(DATA _ 2) (SH / LD).(Q2)

D3 (SH / LD).(DATA _ 3) (SH / LD).(Q3)


Le schma dun tel registre est donn dans la figure 4.57.
88

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.57 Schma dun registre dcalage entre parallle et sortie srie.
Diagramme de temps :

Figure 4.58 Diagramme de temps du registre dcalage entre parallle et sortie srie.
89

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Ce type de registre est la base du convertisseur de donnes parallles en srie, comme
par exemple le port srie RS-232, ou bien lUART (Universal Asynchronous Receiver
Transmitter).
Le listing 4.27 dcrit un registre dcalage entre parallle et sortie srie.
En pratique, il faut tenir compte du nombre de donnes convertir (8 donnes en gnral),
pour les succder dun bit de START et les prcder dun bit de STOP pour viter les erreurs
de transmissions.

Listing 4.27 Description comportementale en VHDL du registre dcalage entre


parallle et sortie srie.
Simulation :

Figure 4.59 Simulation du registre dcalage entre parallle et sortie srie.


90

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
4.5.2.2.d) Registre entre parallle et sortie parallle :
Dans ce type de registre, les donnes sont charges et lues en parallle, cest--dire
simultanment.
Ce type de registre a les mmes caractristiques que celui tudi auparavant (mode de
chargement de donnes, mode de dcalage), mis part que, ds que les donnes sont
charges dans les bascules, elles apparaissent aussitt dans les sorties parallles.
Le schma dun tel registre est donn dans la figure 4.60.

Figure 4.60 Schma dun registre dcalage entre parallle et sortie parallle.

4.5.2.3 Registre universel :


Cest un registre qui a la capacit de charger des donnes en srie ou en parallle, de les
dcaler droite ou gauche, et o on peut lire ces donnes en srie ou en parallle, pour
cela, il possde des entres de commande qui permettent de choisir son mode de
fonctionnement.
Le 74HC194 de Philips Semiconductors est un exemple dun registre universel, le symbole
du bloc logique du 74HC194 est montr dans la figure 4.61, et son diagramme du temps
dans la figure 4.62.

Figure 4.61 Symbole du bloc logique du registre universel 74HC194.

91

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 4.62 Diagramme de temps du registre universelle 74HC194.


Les entres S0 et S1 sont les entres de commande qui permettent de choisir le mode de
fonctionnement du registre (chargement, dcalage).
Le chargement parallle des donnes est synchrone, actif sur front montant de lhorloge
(CLK), et est activ lorsque les deux entres de commande S0 et S1 sont ltat logique 1.
Le dcalage droite est synchrone, actif sur front montant de lhorloge (CLK), et est activ
lorsque lentre de commande S0 est ltat logique 1 et lentre de commande S1 est
ltat logique 0.
Les donnes srielles dcaler droite sont prises par lentre SR_SER, et celles dcaler
gauche sont prises par lentre SL_SER.
Le dcalage gauche est synchrone, actif sur front montant de lhorloge (CLK), et est activ
lorsque lentre de commande S0 est ltat logique 0 et lentre de commande S1 est
ltat logique 1.
Lorsque les entres de commande S0 et S1 sont ltat logique 0, il y a inhibition de
lhorloge.
Modlisons le registre universel 74HC194 en VHDL.
92

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Le datasheetdu registre universel 74HC194 nous renseigne sur ses caractristiques.
La table de vrit du fonctionnement du 74HC194 est donne ci-dessous.
Mode de
fonctionnement
Reset (clear)
Inhibition (Hold)

CLK
X
X

Dcalage droite

MR
L
H
H

Entres
S1 S0 SER_SR SER_SL Dn
X
X
X
X
X
L
L
X
X
X
L
H
L
X
X

Sortie
Q0 Q1 Q2 Q3
L
L
L
L
q0 q1 q2 q3
L q0 q1 q2

q0

q1

q2

Dcalage
gauche

H
H

H
H

L
L

X
X

L
H

X
X

q1
q1

q2
q2

q3
q3

L
H

Chargement
parallle

Dn

d0

d1

d2

d3

O :

CLK : Entres dhorloge


MR : Master Reset.
S1, S0 : entres de commande.
SER_SR, SER_SL : les entres srielles pour le dcalage droite ou gauche.
Dn : Les entres de donnes D0, D1, D2, D3.
Q0, Q1, Q2, Q3 : Les sorties.

93

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des systmes
numriques.

Listing 4.28 Description VHDL du registre universel 74HC194.

Figure 4.63 Simulation du registre universel 74HC194.

94

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Chapitre 5
Machine tats finis (FSM)
5.1 Introduction :
Une FSM (Finite State Machine), machine tats finis, est utilise pour modliser un
systeme qui transite entre un nombre fini dtat interne.Ces transitions dpendent de ltat
courant et des entres.
Contrairement un circuit squentiel rgulier qui est compos principalement de
composants structurs, tels que les compteurs et les registres, les transitions dtats dune
FSM ne prsentent pas une simple rptition de style, son prochain tat logique est
gnralement construit partir de zro et est parfois connu sous le nom de "logique
alatoire".
Dans ce chapitre, nous donnons un aperu des caractristiques de base ainsi que la
reprsentation dune FSM, nous aborderons aussi laspect VHDL des FSM.
5.1.1 types dFSM :
Il existe deux types dFSM ; FSM de Moore et FSM de Mealy.
Le diagramme de base d'un FSM est reprsent par la figure 5.1.
Il se compose d'un registre d'tat, dun bloc logique du prochain tat, et dun bloc logique des
sorties.
Une FSM est une machine de Moore si la sortie est uniquement en fonction de l'tat courant,
et est une machine de Mealy si la sortie est en fonction de l'tat courant ainsi que les
entres externes.
Les deux machines, FSM de Moore et FSM de Mealy sont similaires mais pas
identiques.Lexemple qui est prsent dans le paragraphe 5.3.1 illustre les comportements
et les constructions des deux types dFSM.

Figure 5.1 Diagramme de base dun FSM.

95

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
5.1.2 Reprsentation dune FSM :
Une FSM est gnralement reprsente par un diagramme d'tat abstrait ou d'un
diagrammeASM (Algorithmic State Machine), o il ya les entres de la FSM, les sorties,
les tats, ainsi que les transitions.
Les deux reprsentations fournissent les mmes informations.La reprsentation FSM est
plus compacte et mieux adapte pour les applications simples, tandis que la reprsentation
en diagrammeASM est plus descriptive pour les applications o il ya des transitions
complexes, des conditions, et des actions, cest un peu comme un organigramme.
- Diagramme dtat :
Un diagramme d'tat est compos de nuds, qui reprsentent les tats.Ces derniers sont
reprsents par des cercles, ainsi que des arcs nots par des transitions.
Un nud et ses arcs de transition sont illustrs la figure 5.2 (a).
Une expression logique exprime en termes de signaux d'entre est associe chaque arc
de transition et reprsente une condition spcifique.Larc est pris lorsque l'expression
correspondante est value comme vrai.
Les valeurs de sortie de Moore sont places l'intrieur du cercle, car elles ne dpendent
que de ltat courant, tandis que les valeurs de sortie de Mealy sont places sur les arcs de
transition car elles dpendent de l'tat courant ainsi que des entres externes.Pour que le
diagramme soit clair, seules les valeurs de sorties sont reprsentes.
Un exemple dun diagramme dtat de type Moore est donn la figure 5.3 (a), et la figure
5.3 (b) de type Mealy, cest un dtecteur de squence 11, le signal de sorti y est activ
lorsque le circuit dtecte deux fois de suite ltat logique "1" du signal dentre A.
- Diagramme ASM :
Un diagramme ASM est compos d'un rseau de blocs ASM.Ce dernier est constitu dun
bloc d'tat reli un rseau optionnel o il ya des blocs de choix (bloc conditionnel) ainsi
que des blocs de sorties conditionnelles.
Une reprsentation dun diagramme ASM de type Moore est montre la figure 5.3 (c),
etde type Mealy la figure 5.3 (d).
Un bloc dtat reprsente un tat dans un ASM, les valeurs de sortie de Moore sont
affiches lintrieur de ce bloc, notez qu'il n'a qu'un seul chemin de sortie.
Le bloc conditionnel teste la condition d'entre et dtermine le chemin de sortie prendre.Il
dispose de deux chemins de sortie, tiquetsV et F, (ou gnralement 1 et 0) qui
correspondent successivement aux valeurs vraies et fausses de la condition.
Le bloc de sortie conditionnelle est gnralement plac aprs le bloc conditionnel.
Il indique que le signal de sortie ne peut tre activ que lorsque la condition correspondante
dans le bloc conditionnel est rencontre.
96

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 5.2 (a) Symbole dtat dun nud et ses arcs de transition.

Figure 5.2 (b) Structure dtat dun bloc ASM.


97

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Un diagramme d'tat peut facilement tre converti en un diagramme ASM, et vice-versa.


Les figures5.3 (a), 5.3(b), 5.3(c) et5.3(d) sont quivalentes.
Le Reset correspond ltat initial dans le cas dune rinitialisation du circuit.

Figure 5.3 (a) Diagramme dtat de type Moore du dtecteur de squence 11 .

Figure 5.3 (b) Diagramme dtat de type Mealy du dtecteur de squence 11 .

Remarque :
Le diagramme dtat de type Mealy contient moins dtat que le diagramme dtat de type
Moore, ce qui est avantageux conomiquement.

98

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 5.3 (c) Diagramme ASM de type Moore du dtecteur de squence 11 .

Figure 5.3 (d) Diagramme ASM de type Mealy du dtecteur de squence 11 .


99

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
5.2 Dveloppement de code VHDL dFSM :
La procdure de dveloppement de code VHDL pour une FSM est similaire celle dun
circuit squentiel, car il ny a pas un standard en VHDL pour la description dune FSM.
Par consquent, tout en respectant la syntaxe VHDL, il existe plusieurs faons de dcrire
une FSM donne.
Un exemple de code VHDL pour le FSM de la figure 5.3 (a) est donne dans le listing
5.1(a), celui de la figure 5.3 (b) dans le listing 5.1 (b).
La ligne 10 dans le listing 5.1 introduit le mot-cl TYPE, qui est une caractristique du
langage VHDL que nous n'avons pas utilis auparavant.
Le mot-cl TYPE nous permet de crer un type de signal dfini par l'utilisateur.
Le nouveau type de signal est nomm ETAT , ainsi la ligne 10 spcifie qu'un signal de ce
type peutavoir trois valeurs possibles : S0, S1, ou S2.
La ligne 11 du listing 5.1 dfinitun signal nomm SIG , qui est du type ETAT .
Le signal SIG est utilis dans le corps architecture pour reprsenter les sorties des
bascules qui mettent en uvre les tats de la FSM, le code ne prcise pas le nombre de bits
reprsents par lesignal SIG , mais prcise quil peut avoir les trois valeurs dtat S0, S1
ou S2.
Cela signifie que nous n'avons pas spcifier le nombre d'tats des bascules qui devrait tre
utilis pour la FSM, comme nous allons le voir ci-dessous, cest le compilateur qui choisit
automatiquement un nombre appropri dtats des bascules lors de la synthse d'un circuit
pour mettre en uvre cette FSM.
Aprs avoir dfini un signal pour reprsenter l'tat des bascules, la prochaine tape consiste
spcifier les transitions entre ces tats.
Linstruction CASE est bien adapte cette description.
Les signaux d'entre qui dclenchent le PROCESS sont CLOCK et RESET , ainsi ils
apparaissentdans la liste de sensibilit.
Notez que le signal A n'est pas inclus dans la liste de sensibilit du PROCESS, car un
changementdans la valeur de ce signal ne peut pas affecter le signal SIG jusqu' ce
qu'un changement seproduise dans le signal d'horloge (CLOCK), (comme par exemple la
dtection dun front), ou dans le signalRESET qui est asynchrone et donc, indpendant de
lhorloge.
Les lignes 15 et 16 prcisent que la FSM devrait tre l'tat S0, dans le cas
dunerinitialisation (RESET = 0).
Les lignes 37 et 38 prcisent que si lFSM est l'tat S2, la sortie Y prend ltat logique
1, sinon, elle prend ltat logique 0.

100

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 5.1 (a) Description VHDL du FSM de la figure 5.3 (a).


Simulation :

Figure 5.4 Rsultat de simulation dFSM de type Moore du dtecteur de squence 11 .


101

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 5.1 (b) Description VHDL du FSM de la figure 5.3 (b).

La description VHDL dune FSM de type Mealy peut tre faite de la mme manire que celle
de Moore.
La principale diffrence dans le cas dune description dFSM de type Mealy, est la faon dont
le code de la sortie est crit.
Remarque :
On a dcrit un autre PROCESS pour la sortie, sa liste de sensibilit prend en compte les
entres, car dans le cas dune FSM de type Mealy, la sortie ne dpend pas que de ltat
courant mais dpend galement des entres.
102

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Lors de la synthse, le logiciel associe automatiquement les valeurs des types de donnes
numrs en reprsentations binaires, ce processus est connu sous le nom de
assignation des tats .
Toutefois il existe un mcanisme pour effectuer cette opration manuellement, mais il est
rarement ncessaire.
5.3 Exemple de conception :
5.3.1 Dtecteur de front montant :
Un dtecteur de front montant est un circuit qui gnre une impulsion dhorloge courte quon
appelle un tick quand un signal dentre passe de ltat logique 0 ltat logique 1, il
est gnralement utilis pour indiquer le dbut dun signal dentre variable dans un temps
lent.
Nous allons concevoir un dtecteur de front montant en utilisant les deux modles ; Moore
et Mealy afin de les comparer.
- Conception du dtecteur de front montant avec le modle de Moore :
Le diagramme dtat et le diagramme ASM bas sur le modle de Moore du circuit dtecteur
de front montant sont donns la figure 5.5, ltat S0 indique que le signal dentre est
ltat logique 0, tandis que ltat S1 indique que le signal dentre est ltat logique 1.
Un front montant se produit lorsque ltat logique 0 de ltat S0 change ltat logique
1, dans ce cas lFSM passe de ltat S0 ltat F , et le signal de sortie tick
reoit ltat logique 1.

Figure 5.5 Diagramme dtat et diagramme ASM du dtecteur de front montant, bas sur le
modle de Moore.
103

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 5.2 Description VHDL du dtecteur de front montant, bas sur le modle de Moore.

La mthode de conception quon a utilise dans le listing 5.2 est plus pratique que celle
utilise dans le listing 5.1 (a).
Dans le listing 5.2, on a spar le registre dtat de bloc logique du prochain tat, et on a
dcrit ce dernier ainsi que la logique de sortie (revoir la figure 5.1).
Cest pour viter les confusions et les erreurs.
104

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Simulation :

Figure 5.6 Rsultat de simulation du dtecteur de front montant, bas sur le modle de
Moore.

- Conception du dtecteur de front montant avec le modle de Mealy :


Le diagramme dtat et le diagramme ASM bas sur le modle de Mealy du circuit dtecteur
de front montant sont donns la figure 5.7.
Les tats S0 et S1 sont similaires ceux du modle de Moore.
Lorsque lFSM se trouve ltat S0 et que le signal dentre A change de ltat
logique 0 ltat logique 1, la sortie tick prend ltat logique 1 immdiatement, lFSM
prend ltat S1 aprs un second front montant de lhorloge.

Figure 5.7 Diagramme dtat et diagramme ASM du dtecteur de front montant, bass sur le
modle de Mealy.
105

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 5.3 Description VHDL du dtecteur de front montant, bas sur le modle de Mealy.

Simulation :

Figure 5.8 Rsultat de simulation du dtecteur de front montant, bas sur le modle de
Mealy.
106

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Comparaison :
Bien que les deux types de machines ; Moore et Mealy soit similaires, cest--dire quils
produisent un tick lorsquils dtectent un front montant, il faut savoir quils ne sont pas
identiques et quil y a plusieurs diffrences entre ces machines.
La machine de Mealy requiert moins dtat que la machine de Moore, et elle est plus rapide
que cette dernire, mais la largeur de ses sorties peut varier, et les GLITCHS peuvent
tre transmises la sortie.
Le choix entre les deux conceptions dpend de la faon dont on veut traiter les signaux de
sorties.
Par exemple, les applications qui utilisent des sous-systmes synchrones contrls par une
unique horloge, les GLITCHS nont pas besoin dtre pris en considration tant que le
signal de sortie soit stable autour dun front montant ou descendant, et par consquent, dans
ce type de circuit on prfrera la machine de type Mealy.
5.3.2 Circuit anti-rebond :
Les commutateurs ainsi que les boutons poussoirs qui se trouvent dans la carte de
prototypage dFPGA sont des dispositifs mcaniques, lorsquon presse lun deux, il peut
rebondir plusieurs fois (dans le voisinage de 20 ms) avant de se fixer, ces rebondissement
conduisent des instabilits dans le signal comme le montre la figure 5.9 (le signal en
haut).
Pour y remdier, on utilise un circuit anti-rebond pour filtrer les instabilits (rebondissements)
prsentes dans le signal aprs les transitions de commutation.
Le signal de sortie du circuit anti-rebond est montr dans la figure 5.9 (le signal en bas).

Figure 5.9 Signal de sortie avec et sans circuit anti-rebond.

LFSM de type Moore du circuit anti-rebond est montre dans la figure 5.10, elle utilise une
minuterie qui gnre une impulsion dhorloge aprs chaque 10ms pour viter de vrifier la
stabilit du signal dentre.
107

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Figure 5.10 FSM de type Moore du circuit anti-rebond.

Les deux tats de la FSM S0 et S1 indiquent que le signal dentre BP (Bouton


poussoir, ou le commutateur) est stabilis ltat logique 0 (si il est ltat S0 ), ou
ltat logique 1 (si il est ltat S1 ).
Supposons que lFSM est initialement ltat S0 , elle passe ltat T1 lorsque le
signal BP passe ltat logique 1, et elle attend le tick (10ms) pour passer ltat
T2 , ce dernier processus se rpte trois fois (cest--dire de ltat T1 ltat T2 ,
de ltat T2 ltat T3 et de ltat T3 ltat S1 ) pour que le signal de sortie
Sout passe ltat logique 1.
Le processus dattente se droule trois fois pour tre sr que le signal dentre BP est
stabilis, et de revenir ltat initiale dans le cas contraire.
Le code VHDL de cette FSM est donn dans le listing 5.4.

108

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

109

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Listing 5.4 FSM du circuit anti-rebond de la figure 5.10.


110

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Installation de Xilinx ISE 13.2


Outil de conception de circuit FPGA

Tlchargement de loutil Xilinx ISE 13.2


-

Aller au lien suivant : http://www.xilinx.com/support/download/index.htm


Choisir la version 13.2 sous longlet version qui se trouve gauche

Cliquer sur Full Installer for Windows


PS : Pour le systme dexploitation Linux, il faut choisir Full Installer for Linux.

111

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Installation de loutil Xilinx ISE 13.2
-

Aller dans le rpertoire o se trouve loutil Xilinx ISE 13.2 et cliquer sur licne
xsetup.exe (Si la fentre du Contrle de compte dutilisateur souvre, cliquer
sur oui).

Cliquer sur Next

Cocher la case :I accept and agree to the terms and conditions aboveet
cliquer sur Next

112

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

113

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
-

Cocher la case :I accept and agree to the terms and conditions aboveet
cliquer sur Next

114

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Choisir loutil ISE WebPACK et cliquer sur Next

115

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
-

Cliquer sur Next

Cliquer sur Next

Cliquer sur Install


116

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Vers les 89% de linstallation, une nouvelle fentre souvrira, il sagit de


linstallation du logiciel WinPcap. Cliquer sur Next

Cliquer sur Next

117

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Cliquer sur : I Agree

Dcocher la case : Automatically start the WinPcap driver at boot time, et


cliquer sur Next
118

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Cliquer sur : Finish

Si la fentre : Select MATLAB installation for System Generator


13.2souvre, cliquer sur : Choose Later
119

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Cliquer sur : Finish

120

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
-

Slctionner : Locate Existing License(s), et cliquer sur Next

Cliquer sur : Copy Licenseen haut gauche

121

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
-

Aller dans le rpertoire M_License et choisir la license : xilinx_ise.lic

Un message de succs apparaitra, cliquer sur OK :

Aller dans le rpertoire o Xilinx ISE 13.2 a t install, suivre le chemin


suivant puis supprimer le fichier xilinx.lic :
C :\Xilinx\13.2\ISE_DS\EDK\data\core_licenses\Xilinx.lic

Cliquer sur Refresh

Loutil Xilinx ISE 13.2 est prt tre utilis.

122

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Guide pratique dutilisation de Xilinx ISE 13.2

1 Introduction
1.1 Survol
Le logiciel Xilinx ISE 13.2 est un outil de synthse et danalyse de conception HDL, produit
par la socit amricaine Xilinx.
Il permet aux dveloppeurs de faire la synthse de leurs conceptions, effectuer une analyse
temporelle, examiner les diagrammes RTL, et de simuler des conceptions sous diffrents
stimuli.

1.2 Objectif de ce guide


- La cration dun nouveau projet dans Xilinx ISE 13.2.
- La description dun circuit numrique laide du langage de description VHDL.
- La simulation dun circuit numrique dcrit avec le langage de description VHDL.

1.3 Lancement de Xilinx ISE 13.2


Lancez Xilinx ISE 13.2 en cliquant deux fois sur licne correspondante sur le bureau.

Ou aller : Dmarrer Tous les programmes Xilinx ISE Design Suite 13.2
ISEDesign Tools Project Navigator

123

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

2 Cration dun nouveau projet :


Pour crer un nouveau projet, cliquez sur le bouton New Project qui se situe gauche.

Ou bien : File New Project

Une boite de dialogue apparaitra o vous devrez saisir le nom du projet (Name),
lemplacement du projet (Location), la description de votre projet (Description), et spcifier le
type de source de la conception de haut niveau (Top-level source type).

Conservez le Top-level source type en HDL et cliquez sur Next.


124

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Vous devez remplir certains champs correspondants aux diffrents outils et FPGA utiliss.
Reproduisez les choix de la figure suivante, puis cliquez sur Next, puis sur Finish.
Note :
- Evaluation Development Board : Spcifie la carte de dveloppement utilise avec
la conception.
-

Synthesis Tool : Spcifie loutil de synthse utilis pour la conception.


o XST (Xilinx Synthesis Technology) dans notre cas, ce dernier est fourni
avec loutil ISE.

Simulator : Spcifie loutil utilis pour la simulation.


o ISim (ISE Simulator) dans notre cas, ce dernier est fourni avec loutil ISE.

Preferred language : Contrle le paramtre par dfaut pour les proprits de


processus qui gnrent une sortie HDL.

125

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

3 Description dun circuit numrique en VHDL


Modlisons un circuit arithmtique de base ; un additionneur complet 1 bit.
Nous rappelons que ce circuit a trois entres ; deux oprandes et une retenue dentre, ainsi
que deux sorties ; laddition des trois bits dentres et une retenue de sortie.
Le tableau de ce circuit est donn ici :
A B Ci
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

S Cout
0
0
1
0
1
0
0
1
1
0
0
1
0
1
1
1

Dans la fentre de Design, gauche, cliquez avec le bouton droit sur le nom de votre projet,
et cliquez sur New Source

Dans la bote de dialogue qui apparait, choisissez comme type VHDL Module et donnez un
nom pour votre fichier source (ici additionneur), et cliquez sur Next.

126

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Vous pouvez maintenant donner les entres et sorties de votre module, pour linstant,
cliquez sur Next, puis Finish.

Un nouveau fichier VHDL est automatiquement cre dans votre projet, ce dernier comporte
dj un dbut de structurepour votre description matrielle.
Remplacez ce code par le code VHDL suivant :

Listing 1 Description VHDL dun additionneur complet 1 bit.


Enregistrez votre code aprs lavoir crit : File Save ou bien Ctrl + S.
Aprs avoir dvelopp nimporte quel code VHDL, il faut vrifier les erreurs de syntaxe pour
une ventuelle correction.
127

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Pour la vrification des erreurs de syntaxe, il faut utiliser la partie infrieure de longlet
Design :
Dfilez le menu de Synthesize XST en cliquant sur le + se trouvant sa gauche.

Cliquez deux fois sur longlet Check Syntax.

Un message de succs devrait safficher dans la console.


Dans le cas contraire,il faut corriger les erreurs ou inspecter les avertissements (warnings)
pour vous assurer quils ne proviennentpas derreurs dans votre code.
Idalement, on devrait voir safficher le crochet vert illustr par la figure suivante :

128

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

4 Simulation dun circuit numrique en VHDL


Simulons ladditionneur complet 1 bit modlis auparavant.
Pour simuler notre additionneur, il faut crer un fichier de test appel Test Bench, ce dernier
contient les signaux de tests.
Crez un nouveau fichier dans la fentre de Design, gauche, cliquez avec le bouton droit
sur le nom de votre projet, et cliquez sur New Source

Dans la bote de dialogue qui apparait, choisissez comme type VHDL Test Benchet donnez
un nom pour votre fichier de test (ici test_additionneur), et cliquez sur Next.

Choisir le code VHDL associ ce code de test (en gnral il est slectionn par dfaut) et
cliquez sur Next, puis Finish.

129

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.
Un nouveau fichier de test VHDL est automatiquement cre dans votre projet, ce dernier
comporte dj un dbut de structurepour test de votre description matrielle.
Remplacez ce code par le code VHDL suivant :

Listing 2 Test Bench de ladditionneur complet 1 bit.


Enregistrez votre code aprs lavoir crit : File Save ou bien Ctrl + S.
Dans la fentre de Design, gauche, cliquez sur Simulation, et slectionnez le Test Bench
que vous avez cr.

Dfilez le menu de ISim Simulator en cliquant sur le + se trouvant sa gauche et


cliquez deux fois sur Behavioral Check Syntax pour vrifier la syntaxe du code de test.
Un message de succs devrait safficher dans la console.
Dans le cas contraire,il faut corriger les erreurs ou inspecter les avertissements (warnings)
pour vous assurer quils ne proviennentpas derreurs dans votre code.
Idalement, on devrait voir safficher le crochet vert illustrs par la figure suivante :

130

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Cliquez deux fois sur Simulate Behavioral Model pour lancer la simulation :

Loutil de simulation ISim se lance, utilisez les options de ZOOM pour rgler laffichage des
rsultats.

131

V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des


systmes numriques.

Liste des mots rservs

abs

function

of on

signal

access

generate

open

shared

across

generic

or

sla

after

group

others

sll

aliasall

guarded

out

spectrum

and

if

package

sra

architecture

impure

port

srl

array assert

in

postponed

subnature

attribute

inertial

procedural

subtype

begin

inout

procedure

terminal

block body

is label

process

then

break

library

protected

through

buffer bus

limit

pure

to

case

linkage

quantity

tolerance

component

literal

range

transport

configuration

loop

record

type

constant

map

reference

unaffected

disconnect

mod

register

units

downto

nand

reject

until

else

nature

rem

use

elsif

new

report

variable

end

next

return

wait

entity

noise

rol

when

exit

nor

ror

while

file

not

select

with

for

null

severity

xnor
xor

132