Sie sind auf Seite 1von 11

Introduction au VHDL

Introduction au VHDL

Prambule :

L'objectif de ce cours introductif est d'apprendre dcrire un circuit logique en langage


VHDL (HDL pour Hardware Description Langage), mais en se limitant des instructions simples.
En anne 4, un cours beaucoup plus dtaill sera propos.
Nanmoins, l'ambition du propos est d'aider l'tudiant comprendre les principes fondamentaux du
VHDL qui en font langage trs particulier, manier avec beaucoup de finesse.

1. Introduction

Le VHDL est un langage de programmation dont la vocation est de donner naissance


un circuit logique et non un programme excutable. Ce circuit peut se matrialiser dans un CPLD
(Complex Programmable Logic Device) ou plus grand encore, dans un FPGA (Field Programmable
Gate Array).

Un circuit logique programmable (CPLD ou FPGA) ne doit pas tre confondu avec un
micro-contrleur. Le micro-contrleur est une structure logique complique, fige, qui excute des
instructions ranges dans une ROM ou une RAM, les unes aprs les autres. L'utilisateur, via des
langages de haut niveau (C, ADA, Pascal, JAVA...) ou de bas niveau (Assembleur), ne fait rien
d'autre que remplir la ROM d'instructions lmentaires que le processeur excute une une.

Un circuit programmable, est un ensemble de portes et de bascules lmentaires,


intgres dans une mme puce, mais dconnectes les unes des autres. L'utilisateur, via un diteur
de schma, ou un langage de description (Verilog, VHDL), ne fait rien d'autre que relier des portes
ou des bascules ncessaires, en vue d'obtenir une structure logique souhaite.

Notons enfin, qu' un micro-contrleur est une structure logique. Il est donc ce titre,
possible de matrialiser un tel circuit dans un circuit programmable...

SFO 3MIC 1/11


Introduction au VHDL

Voici de manire trs simpliste, une comparaison entre un flot de conception pour un circuit
programmable et celui corrspondant un processeur :

Schma / Description VHDL JAVA/ADA/C/Assembleur

- synthse - assemblage / compilation


- placement / routage - dition de lien

Programmation (mise en Programmation (mise en place


place des connexions) du code en ROM ou RAM)

FPGA ou CPLD programm Micro-contrleur programm


(la fonction lectronique existe) (le logiciel est implant)

Fig. 1 : comparaison des conceptions pour processeur et


pour circuit logique programmable

Le langage VHDL peut avoir d'autres vocations que celle de raliser un circuit. On peut
d'ailleurs distinguer deux types de descriptions VHDL :

Les descriptions VHDL synthtisables : Elles peuvent, aprs implmentation (synthse,


placement routage) donner lieu un circuit logique bien rel. C'est de ce type de description
que nous venons de parler.
Les descriptions VHDL non synthtisables : Elles ne peuvent pas aboutir un circuit,
cause de l'utilisation d'instructions n'ayant aucune ralit physique. Ceci tant, ce mode de
description peut tre utile au dmarrage d'une conception complexe (mais devra tre
retravaille pour la rendre synthtisable, si l'on veut aboutir la programmation de circuits
logiques). Nous verrons galement, que pour dcire des stimuli (signaux de tests) lors de
simulation, cette manire d'crire est tout fait approprie.

SFO 3MIC 2/11


Introduction au VHDL

2. Structure d'un fichier VHDL

Un fichier VHDL est constitu de deux parties. La premire est la description des
entres et sorties de la fonction ralise ( Entity ). Son rle est de dfinir le nom, la direction, le
type et la taille des connexions d'entres et de sortie.

Exemple :
Ici, on trouve 3 entres binaires et une
sortie de type bus 4 fils. Le type utilis
est std_logic, ou std_logic_vector (pour
un bus). Il peut prendre plusieurs tats
(autre que 0 ou 1) :
Valeurs d'un std_logic :
L'architecture, seconde partie du fichier VHDL dcrit le
'U' Uninitialized
fonctionnement du circuit : 'X' Forcing Unknown
'1' Forcing 1
'0' Forcing 0
'Z' High impedance
'W' Weak Unknown
'H' Weak 1
'L' Weak 0
'-' - Don't care

3. Structuration d'une architecture, process

Une architecture doit tre vue, pense comme un circuit logique. Tout comme un circuit
peut se dcomposer en sous-circuits, une architecture qui dcrit une logique complique peut tre
dcompose en plusieurs parties. En VHDL, ces divers sous-circuits sont dcrits par des process
(processus).
La notion de processus est centrale en VHDL. Du point de vue langage, un processus est
un bloc qui contient une suite d'instructions squentielles (au sens algorithme) qui a une dure
d'excution nulle (la notion d'excution n'a pas de sens en VHDL) qui est en sommeil la plupart du

SFO 3MIC 3/11


Introduction au VHDL

temps, qui se rveille sur vnement particulier. Un processus active des sorties (selon l'algorithme
dcrit). Celles-ci sont mises jour lorsque le processus retombe en sommeil, c'est dire la fin de
son traitement. A l'intrieur d'un processus, un signal ne change donc pas d'tat.
Du point de vue circuit, une architecture dotes de plusieurs process peut se schmatiser comme de
la manire suivante :

Frontire de lentit Signal de type INOUT Architecture VHDL


Architecture Arch of .. is
Begin
C
F2 A F3 Process()

F1 B End Process;
liste de
Signaux
se n sibilit
de type IN Signaux Process()
F4 de type OUT

End Process;

Process()

End Process;

C<=A AND B;

End arch;

Fig. 2 : Association process structure logique

Dans cet exemple, F1, F2 et F4 sont des blocs logiques lourds ncessitant une
description comportementale, on utilise donc 3 processus. Par contre F3 est une fonction triviale,
parfaitement dfinissable.
avec les oprateurs logiques de base (pas besoin de processus explicite). Notons tout de mme, qu'il
s'agit bien d'un processus (implicite).
Ces 4 ensembles sont dits concurrents car le droulement de chacun deux est indpendant. L'ordre
dans lequel on crit les divers process est donc sans importance.

SFO 3MIC 4/11


Introduction au VHDL

Pour comprendre un peu mieux le concept, analysons de prs l'architecture du compteur


dcrit prcdemment :

On distingue dans cette description deux process. Le


second est ultra simple et implicite. C'est juste la liaison
Process 1
du signal interne Q_int vers la sortie de l'architecture, Q.

Le premier mrite une explication. Tout d'abord, il


contient deux signaux dans sa liste de sensibilit.
il se rveillera sur la variation de H ou de RAZ
le signal d'entre UP_DOWN peut toujours changer,
il ne rveillera pas le process. Du point de vue
lectronique, il n'affectera pas directement la sortie.
NB: L'entre d'un circuit logique ne fait pas
forcment partie de la liste de sensibilit, loin de l.

L'entre RAZ est de type asynchrone. En effet, ds que


Process 2
son tat change, elle est susceptible de mettre 0 la
sortie du process Q_int sans attendre de front d'horloge.

Ds que H ou RAZ voluent, la sortie du process Q_int est value instantanment. Pour
le lecteur, cette instantanit est discutable, puisqu'il faut lire l'ensemble du process (a prend du
temps !) pour valuer, en fin de process, la valeur de Q_int.

Ds que le process est actif, il faut imaginer qu'une photo est prise de l'ensemble des
signaux d'entre du process, y compris Q_int (entre-sortie). La nouvelle valeur de Q_int sera celle
qui correspond la dernire affectation.

Par exemple, si l'intrieur d'un process on crit :

Q_int = Q_int+1;
Q_int = Q_int+1;
Q_int = Q_int+1;

Avec au dpart Q_int = 2, alors quand le process retombe en sommeil (se termine), Q_int vaut 3 et
pas 5 ! En effet, en cours de process, Qint est fig. Les premires lignes sont donc oublies au
profit de la dernire qui prend effet lorsque le process se rendort (si en cours de route, Q_int n'a pas
t une fois encore retouche...)..

La structure if then else de l'horloge est dpourvue de else. Cela produit un effet mmoire. En effet,
du point de vue du signal H, Q_int est affect UNIQUEMENT lorsqu'il y a front montant. En
dehors de cet vnement, rien n'est spcifi dans le process. Q_int demeure inchang. On appelle
cela l'effet mmoire par omission. Ici c'est voulu, mais parfois, lorsqu'on dbute, cet oubli
involontaire lors de la description d'un circuit logique combinatoire est catastrophique, puisqu'il
cre une bascule qui n'a rien faire l !

SFO 3MIC 5/11


Introduction au VHDL

4. Des exemples de descriptions de circuits usuels..

4.1 Un dcodage d'adresse :

Version avec un process

Cette version utilise un process


explicite. Les 3 signaux sont donc
dtermin par un algorithme
(comportement attendu).

Notons qu'il s'agit d'une logique


combinatoire : toute combinaison
d'entre correspond une et une seule
combinaison de sortie. Ainsi, toute
variation d'une entre a une
consquence directe sur la sortie. C'est
pourquoi le bus Ad apparat dans la
liste de sensibilit.

Deux remarques trs importantes :

- Dans chaque condition, l'ensemble


des 3 signaux de sortie est dtemin :
pas d'effet mmoire par omission

- dans le mme esprit, la structure if


then se finit par un else. Autrement dit,
toutes les combinaisons d'entre sont
explores.

Version sans process

Voici une description possible. Elle est


plus lgante, ncessite moins de
lignes et parfaitement adapte la
conception de logique combinatoire.

Chaque ligne dcrit une sortie, et


l'instruction de termine par un else, qui
garantit l'aspect combinatoire.

SFO 3MIC 6/11


Introduction au VHDL

4.2 Un buffer 3 tats, 8 bits


On retrouve ici la mme construction
que la prcdente (adapte une
logique combinatoire).

On y observe la manire de crer, en


VHDL le fameux tat HZ (haute
impdance).
Si OE (pour Output Enable) = '1' , la
sortie Dout se retrouve connecte
l'entre Din. Ce sont des bus 8 bits.
Dans le cas contraire, le bus de sortie
est en l'air au sens physique du
terme, comme un interrupteur ouvert (8
en parallle ici) .

4.3 Un multiplexeur 8 bits

Ici encore, le circuit dcrit est


combinatoire.
Il utilise la construction With Select...

On peut observer que ce multiplexeur a


sa sortie relie E2 pour les
combinaisons autres que 00 et 01.
Ceci garantit l'aspect combinatoire du
circuit dcrit.

La bascule RS, de type logique squentielle asynchrone est dcrite par un


4.4 Une bascule RS process.
Sa liste de sensibilit contient les signaux R (reset) et S (set) puique les
deux entres commandent directement la sortie.

NB: Comme toutes les bascules RS, il n'y a pas d' tat interdit
contrairement l'ide reue. Simplement, il existe en effet une combinaison
qui peut paratre un peu stupide, savoir positionner simultanment R et S
1.
Toute bascule est Set prioritaire ou Reset prioritaire (l'une des entres
l'emporte sur l'autre). Ainsi, lorsque le cas se prsente la sortie prend la
valeur '1' ou '0'.
Dans l'exemple, c'est le Set qui a la priorit . En effet, si les deux signaux
sont '1', le process se rveille, la structure if-elsif est value, et c'est la
premire condition vraie qui l'emporte, l'exclusion des autres (par
dfinition de la structure if, elsif...).

SFO 3MIC 7/11


Introduction au VHDL

4.5 Une bascule D, avec set et reset asynchrone


Les entres de la bascule sont au nombre de 4
(D, R, S et C). La dernire est l'horloge. La
premire est une entre action synchrone
(son effet sur la sortie ne se fera sentir qu'au
front d'horloge). C'est pour cette raison qu'elle
ne fait pas partie de la liste de sensibilit.

Au contraire, R et S sont action asynchrone :


elles agissent immdiatement sur la sortie. Elles
font partie de la liste de sensibilit.

Pour la sortie Q, lordre de priorit est Set, puis


Reset, puis le fonctionnement en bascule D.
Chronogrammes :

reset
Copie de D Forage
set, malgr
reset
4.6 Une bascule D, avec set et reset synchrone

Toutes les entres sont action synchrone.


Ainsi, seul un front montant de C affecte la
sortie, en fonction, de S, R, et D.

Ici encore, on observe le mme ordre de


priorit.

Chronogrammes :

Forage
reset
tat reset Copie de D set, malgr
indtermin reset

SFO 3MIC 8/11


Introduction au VHDL

5. Le test des descriptions VHDL

Le test d'un design VHDL se fait par un fichier que l'on appelle testbench (banc d'essais), lui-mme
crit en VHDL. Voici par exemple, celui qui a permis l'obtention des chronogrammes prcdents
(bascule D avec Set et Reset) :

Entite vide (pas d'entre,


pas de sortie).

Inclusion du composant
tester (UUT : Unit Under
Test)

Signaux internes qui sont


prcisment les stimili

Cblage entre les stimuli (les signaux internes),


et les entres / sorties de l'UUT

Horloge crite par une quation logique + l'instruction non


synthtisable after

Descriptions temporelles de chaque signal avec l'instruction after

On remarque que le coeur du test est crit avec une syntaxe non synthtisable puisque ces tests n'ont
justement pas pour vocation de donner un circuit logique.

NB: Aprs l'instruction after, le temps qui est donn est absolu, c'est dire qu'il s'agit de dates
rfrences par rapport l'origine 0.

NB: Les signaux internes de test sont initialiss 0. Ce n'est pas une obligation sauf pour l'horloge.
En effet, celle-ci est dcrite par une rtroaction sur elle-mme, ce qui ncessite une valeur de
dmarrage.

SFO 3MIC 9/11


Introduction au VHDL

On peut aussi rdiger les stimuli en utilisant un process qui se rveille des instants particuliers. En
effet, nous avons vu que la liste de sensibilit dtermine les signaux susceptibles de rveiller un
process. Une autre possibilit est de garder une liste vide, mais d'utiliser la place l'instruction wait.

Voici pour exemple, un extrait du test du compteur possdant une entre de remise zro et une
entre qui prcise le sens de comptage, vu au chapitre 2.

Horloge crite par une quation logique + l'instruction


non synthtisable after

Process qui dcrit la squence temporelle de


l'ensemble des signaux

NB: Les valeurs de temps donnes dans les intructions wait for, sont relatives. Cela veut dire, dans
cet exemple, que le signal RAZ passera 0, la date 220 + 10 = 230ns.

Nous allons maintenant prsenter un dernier test, un peu plus volu, qui sert pour tester le
dcodeur d'adresses prsent au paragraphe 4.1.
Il s'agit de raliser un test o TOUTES les adresses possibles sont values. Ceci se fait bien
entendu par un compteur 16 bits que l'on ralise dans le testbench suivant :

SFO 3MIC 10/11


Introduction au VHDL

Architecture qui dcrit le test :

Compteur 16 bits

Le bus Ad du dcodeur d'adresses est reli Q_int (sortie du compteur). Ceci est ralis dans le bloc
PORT MAP.

Les initialisations de Q_int et H sont obligatoires ici. Sans a, le compteur ne peut jamais dmarrer.

Auteur :
Thierry ROCACHER

SFO 3MIC 11/11

Das könnte Ihnen auch gefallen