Académique Documents
Professionnel Documents
Culture Documents
Spcialit : INFOTRONIQUE
&
IMAGERIE ET APPARAILLAGE BIOMEDICALE
V.Tourtchine et M.Izouin
BOUMERDES - 2012
-0-
Introduction Gnrale.............................................................................. 4
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.
Chapitre 1
Les concepts de base du langage VHDL.
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
Les bibliothques et les paquetages nous permettent dutiliser les types et les oprateurs
disponibles en VHDL.
1.1.2La dclaration de lentit :
MODE TYPE ;
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
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
Simulation :
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
Listing 1.4 Description VHDL dun additionneur complet 1 bit en utilisant les
signaux
intermdi
aires.
valeur_expressio
n_n ;
12
Exemple :
Soit un multiplexeur 2 vers 1.
Il a comme entresA, B, SEL, et comme sortie S (Figure 1.5).
Listing 1.5 Description VHDL dun multiplexeur 2 vers 1 avec lassignation conditionnelle.
Simulation :
13
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
15
Chapitre 2
Objets et types de donnes.
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 :
-
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.
On a utilis un agrgat qui est un moyen dindiquer la valeur de chaque lment dun type
compos.
17
18
19
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
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
Figure 2.5
-
Larticle ci-dessus dont le nom est MON_ARTICLE est constitu de trois champs
(CLOCK, DATA, X) (figure 2.6).
Figure 2.6
22
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
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
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
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
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)
Attribut SUCC(X)
Attribut LEFT
Attribut RIGHT
Attribut HIGH
Attribut LOW
Attribut LENGTH
Attribut RANGE
Attribut
REVERSE_RANGE
25
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 :
-
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.
Listing 3.1 Description VHDL avec le style de description flot de donnes dun multiplexeur
4 vers 1.
Simulation :
3.2.1 Le PROCESS :
On utilise le PROCESS pour faciliter la modlisation dun systme.
27
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).
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
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
s <= 0;
else
s <= z;
end if;
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
Simulation :
31
case instruction is
when choix_1 => instruction_1 ;
nombre dactions.
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 .
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
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
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).
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 :
-
Listing 3.9 Description structurelle dun additionneur complet 1 bit avec instanciation par
position.
37
Listing 3.10 Description structurelle dun additionneur complet 1 bit avec instanciation par
nom.
Listing 3.11 Description structurelle dun additionneur complet 1 bit avec instanciation mixte
38
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.
39
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.
(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.
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
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).
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
Remarque :
On a suppos que ltat indtermin arrive lorsque les signaux dentres R et S sont 1.
43
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).
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
45
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
Remarque :
Lorsque les deux entres Reset et Set sont ltat logique 0, une priorit doit tre
conue soit pour Reset , soit pour SET .
46
47
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.
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
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
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.
51
Chapitre 4 (Partie 2)
La modlisation des circuits squentiels complexes
52
53
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
55
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.
56
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.
57
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
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
La figure 4.23 reprsente un schma gnral dun compteur synchrone de n bits, form
partir de bascules JK actives sur front descendant.
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
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
Listing 4.12 Description VHDL dun compteur synchrone 3 bits avec une description
comportementale.
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).
Listing 4.13 Description VHDL dun compteur synchrone 3 bits avec une description
structurelle.
63
Figure 4.29 Simulation du compteur synchrone 3 bits modlis avec le style de description
structurelle.
Le diagramme du temps :
J0=1
K0=1
J1=Q0.Q3
K1=Q0.Q3
J2=Q0.Q1
K2=Q0.Q1
J3=Q0.Q1.Q2
K3=Q0.Q1
65
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
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.
V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des systmes
numriques.
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
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)
69
Figure 4.36 Simulation du compteur synchrone bidirectionnel 4 bits modlis avec le style
de description comportementale.
log x
n
log2
log x
log2
Exemple :
Conception dun compteur GRAY 3 bits.
A) Nombre de bascules ncessaires : 3
B) Table des transitions du compteur :
70
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
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
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
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 :
72
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
Listing 4.17 description VHDL dun Flip-Flop D actif sur front montant.
La donne DATA est transmise la premire bascule (FF0) aprs quatre impulsions
dhorloge (CLK).
77
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
Figure 4.45 Schma dun registre dcalage avec mode de dcalage ( droite ou
gauche).
Diagramme de temps :
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
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.
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
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
84
Figure 4.50 Schma dun registre dcalage entre srie et sortie srie.
Diagramme de temps :
Figure 4.53 Schma dun registre dcalage entre srie et sortie parallle.
Diagramme de temps :
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
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 :
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
Figure 4.60 Schma dun registre dcalage entre parallle et sortie parallle.
91
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 :
93
V.Tourtchine et M.Izouine. Initiation au langage VHDL. Application pour la modlisation des systmes
numriques.
94
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.
95
Figure 5.2 (a) Symbole dtat dun nud et ses arcs de transition.
Remarque :
Le diagramme dtat de type Mealy contient moins dtat que le diagramme dtat de type
Moore, ce qui est avantageux conomiquement.
98
100
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
Figure 5.5 Diagramme dtat et diagramme ASM du dtecteur de front montant, bas sur le
modle de Moore.
103
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
Figure 5.6 Rsultat de simulation du dtecteur de front montant, bas sur le modle de
Moore.
Figure 5.7 Diagramme dtat et diagramme ASM du dtecteur de front montant, bass sur le
modle de Mealy.
105
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
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
108
109
111
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).
Cocher la case :I accept and agree to the terms and conditions aboveet
cliquer sur Next
112
113
Cocher la case :I accept and agree to the terms and conditions aboveet
cliquer sur Next
114
115
117
120
121
122
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.
Ou aller : Dmarrer Tous les programmes Xilinx ISE Design Suite 13.2
ISEDesign Tools Project Navigator
123
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).
125
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
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 :
128
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
130
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
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