Sie sind auf Seite 1von 85

Le VHDL en pratique

ENIT - Gnie lectrique


BOURGUIBA Riadh
riad.bourguiba@enit.rnu.tn

v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

1. Introduction

VHDL est un langage informatique ddi la description matrielle des circuits intgrs numriques, de la simple porte logique jusquaux systmes sur une puce. VHDL signifie :

V: VHSIC (Very High Speed Integrated Circuit) H: Hardware D: Description L: Language

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

1. Introduction

Les premiers langages de descriptions matrielle (HDL) sont apparus de 1968 1975. Ils avaient pour objectif de spcifier et de simuler des systmes logiques Inconvnients :

Chaque langage tait propre un outil donn. Les outils taient largement incompatibles. Les changes de code HDL taient impossibles sans une transcription lourde et fastidieuse. Les concepteurs deviennent dpendants des logiciels quils utilisent
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

1. Introduction

Au dbut des annes 80, le DoD (Departement of Defense) des tats-Unis a demand un langage universel, afin de briser cette dpendance et de permettre les changes entre ingnieurs. Plusieurs programmes de recherches ont alors ts financs pour aboutir finalement VHDL. En 1987, premire normalisation de VHDL par l'IEEE (organisation non gouvernementale spcialise dans la normalisation et la publication dans le domaine du Gnie Electrique). Ds lors, apparition des premiers outils de CAO (Conception Assiste par Ordinateur) compatibles. De nouvelles normes sont venus complter la norme initiale, en 1993, 2002 et 2008.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

1. Introduction

Les possibilits du langage VHDL sont nombreuses, mais nous ne les verrons pas toutes. Il existe souvent plusieurs approches possibles pour dcrire une solution matrielle, avec des subtilits et des redondances plutt droutantes pour des dbutants. Aussi, nous allons nous concentrer sur les concepts essentiels, qui sont utiliss 99% du temps et qui sont suffisants pour mener bien un projet d'envergure. Nous ne parlerons donc pas des blocs, ni des blocs gards, ni des processus utilisant l'instruction wait. De mme, les configurations seront survoles, en introduisant une syntaxe la plus lmentaire possible, mais largement suffisante dans la pratique.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

1. Introduction

Un modle VHDL est construit partir de 5 units de conception :

Entit Dcrit la vue externe d'un circuit Architecture Dcrit une vue interne d'un circuit Configuration Dcrit une association entre une entit et une architecture Component Dclare un composant Paquetage Regroupe des dclarations (types, constantes, fonctions, procdures) Corps de paquetage Regroupe des dfinitions de fonctions et de procdures.

Enfin, rappelons que VHDL offre 3 styles de description complmentaires qu'il est possible de mlanger selon les besoins.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

2. Types
A. Introduction B. Types de base C. Types IEEE D. Types utilisateur

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

A. Introduction

10

En VHDL, on manipule des objets (signaux, variables, constantes,) de diffrents types (entier, bit, vecteur binaire,) afin de dcrire le comportement d'un circuit. Ces types peuvent tre classs en trois catgories:

Les types de base Ils font partie du standard VHDL de 1987 et sont dfinis dans le paquetage standard. Ce dernier est considr comme faisant partie du langage de base. Par consquent, il est toujours intgr tous les projets de faon implicite (sans qu'on ai besoin de l'crire).

Les types IEEE En 1993, pour complter les types de base, le comit d'expert de l'IEEE a labor de nouveaux types. Ces derniers ont t dcrits dans des paquetages optionnels, qu'il faut ajouter un modle VHDL, en fonction des besoins.

Les types utilisateur Enfin, comme dans tout langage, l'utilisateur peut dfinir ses propres types, et surcharger les oprateurs de base, afin qu'ils puissent les traiter.

Dans cette section, nous allons passer en revue ces diffrent types.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

2. Types
A. Introduction B. Types de base C. Types IEEE D. Types utilisateur

11

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

B. Types de base

12

Boolean

Valeur boolenne (false, true) Valeur binaire ('0','1') Tableau de bits Permet de coder une valeur binaire multibits VHDL87:les 128 premiers caractres de la table ASCII VHDL93:les 256 caractres de la table ASCII Tableau de characters. Permet de dfinir une chane de caractres.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Bit

Bit_vector

Character

String

B. Types de base

13

Integer

Entier sign dont l'intervalle de valeurs par dfaut dpend du logiciel de simulation et/ou de synthse (gnralement intervalle sur 32 bits). Un intervalle plus petit peut tre fix lors de la dclaration d'un objet. Par exemple pour un signal:

Natural

Sous-type d'integer positif ou nul. Sous-type d'integer strictement positif. Nombre rel dont l'intervalle de valeurs dpend du logiciel de simulation et/ou de synthse.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Positive

Real

B. Types de base

14

Time

Permet de dfinir des valeurs temporelles (dlais, instants,). Plusieurs units sont possibles: hr, min, sec, ms, us, ps et fs. Remarque: Il existe une fonction qui permet de connatre l'heure en temps simul(now).

Il existe d'autres types de base, notamment pour accder des fichiers sur disque, mais il correspondent une utilisation avance de VHDL.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

2. Types
A. Introduction B. Types de base C. Types IEEE D. Types utilisateur

15

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

C. Types IEEE

16

Ils sont dfinis dans le paquetage std_logic_1164 de la librairie IEEE. Std_logic

Modlise l'tat physique d'une ligne et peut prendre les valeurs suivantes:

'U' : Non initialis 'X' : Valeur inconnue forte (conflit entre signaux forts) '0' : 0 fort '1' : 1 fort 'Z' : Haute impdance (dconnect lectroniquement) 'W' : Valeur inconnue faible (conflit entre signaux faibles) 'L' : 0 faible 'H' : 1 faible '-' : Sans intrt (don't care)
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

C. Types IEEE

17

Std_logic_vector

Modlise l'tat physique d'une ligne multibits. Le paquetage std_logic_1164 dfinit les types std_logic et std_logic_vector et surcharge les oprateurs logiques uniquement. Pour les oprateurs arithmtiques (+,-,*,/,>,>,), il faut faire appel des paquetages complmentaires adapts la situation:

Remarques

std_logic_unsigned lorsque les objets manipuls sont non signs. std_logic_signed lorsque les objets manipuls sont signs.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

2. Types
A. Introduction B. Types de base C. Types IEEE D. Types utilisateur

18

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

D. Types utilisateur

19

VHDL permet l'utilisateur de dfinir des types spcifiques ses besoins, dans ses propres paquetages, ou dans des architectures. Il existe jusqu' 8 catgories de types diffrentes, mais nous n'en prsenterons qu'une seule: celle des types numrs, trs utiles pour modliser les machines tats finis (FSM). Syntaxe Exemple Remarque

Dans la mesure du possible, il est prfrable d'utiliser les types de base ou les types de l'IEEE, pour favoriser la rutilisation.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

20

3. Objets

21

En VHDL, on distingue 4 sortes d'objets:

Les constantes

Elles ont une valeur unique qui leur est affecte au moment de leur dclaration. Leur valeur ne change jamais. Elles sont employes dans les fonctions et les procdures, mais aussi et surtout dans les processus. Dans les processus, on exploite leur capacit conserver leur valeur entre deux activations successives pour produire un effet de mmorisation. Ils dcrivent les entres et les sorties du composant. Ils ont une orientation (entre, sortie ou rarement entre/sortie). Ils disposent des mmes attributs que les signaux, dont ils sont trs proches. ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Les variables

Les ports

3. Objets

22

Les signaux

Ils modlisent les lignes et les bus d'interconnexion dans un circuit lectronique. Ce sont des objets au sens informatique du terme (programmation oriente objet), c'est a dire qu'ils ont plusieurs champs (attributs). Soit S un signal multibits, voici quelques attributs souvent utiliss:

S'left S'right S'low S'high S'range S'length

: : : : : :

Indice de la borne gauche de S Indice de la borne droite de S Indice de la borne infrieure de S Indice de la borne suprieure de S Intervalle des indices de S Nombre de bits de S

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

23

4. Entit

24

L'entit constitue la vue externe d'un modle. Elle dcritnotamment les ports d'entre/sortie, leur direction, leur type et leur largeur. Nous verrons plus tard que pour les composants paramtrs, elle dcrit galement la liste des paramtres, ainsi que leur type. Syntaxe

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

4. Entit

25

Exemple

On considre un additionneur 1 bit, add1, prvu pour tre assembl en cascade afin de crer un additionneur plusieurs bits avec propagation de retenue. Il calcule la somme s et la retenue sortante cout, partir de deux oprandes et b, en prenant en compte la retenue entrante cin,

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

26

5. Architecture

27

L'architecture constitue une vue interne du modle. Elle dcrit une ralisation possible du circuit, en utilisant:

le style flot de donnes, ou bien le style structurel, ou encore le style comportemental


avec le mode concurrent, ou avec le mode squentiel

ou plus gnralement avec un mlange de ces trois styles.

L'architecture est associe une entit, pour constituer un modle complet.


ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

5. Architecture

28

Syntaxe

La zone de dclaration est destine dclarer les constantes, les types, les signaux, les composants, les fonctions et les procdures ncessaires. La zone de description permet de dcrire les quations et/ou la structure et/ou l'algorithme ralis par le modle pour obtenir les rsultats. Dans cette zone, les instructions s'excutent en parallle. Leur ordre n'a donc aucune importance.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

5. Architecture

29

Remarque

Comme il n'y a pas une solution unique un problme technique, mais plutt un ensemble de solutions, on comprend que l'architecture d'un modle ne soit pas unique. Ds lors, une entit peut avoir plusieurs architectures ralisant la mme fonction logique, mais aux caractristiques physiques plus ou moins diffrentes (surface occupe sur le silicium, consommation lectrique, vitesse de calcul, etc.). Nous verrons qu' l'utilisation d'un modle, il est possible de prciser quelle architecture on souhaite utiliser.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

5. Architecture

30

Exemple

Voici une architecture structurelle de l'additionneur 1 bit, construit partir de 2 demi-additionneurs et d'une porte NAND.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

31

6. Component

32

Avec le style structurel, VHDL permet de dcrire un nouveau modle partir de modles dj existants. L'utilisation d'un composant pour en construire un autre, ncessite au pralable de dclarer son existence. La dclaration peut se faire soit dans la zone de dclaration de l'architecture o il est utilis, soit dans un paquetage.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

6. Component

33

Exemple

La dclaration du composant

add1 vu prcdemment, donnerait:

Notez la similitude syntaxique qui existe entre une component.

entity et son

Une faon sre de dclarer un composant consiste copier/coller son entit, avant de la modifier.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

34

7. Paquetage

35

En VHDL, des dclarations de types, de constantes, de composants, de fonctions et de procdures, peuvent tres centraliss en un mme endroit. Pour cela, il existe une unit de conception spcifique: le paquetage.

Pour utiliser les dclarations d'un paquetage, il faut l'appeler en faisant rfrence la librairie qui le contient.

Le plus souvent, on souhaite rendre visible la totalit des dclarations contenues (all), mais il est possible de slectionner seulement l'une ou l'autre en prcisant son nom.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

7. Paquetage

36

Exemple

Dans le paquetage suivant on dclare add1 (additionneur 1 bit), qui pourra ensuite tre utilis dans add4 (additionneur 4 bits).

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

7. Paquetage

37

Dans add4, l'utilisation du composant add1 sera rendue possible, grce l'appel au paquetage pack, dans lequel il est dclar.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

38

8. Paramtres gnriques

39

Un des intrts de VHDL est de permettre la rutilisation d'un mme composant dans plusieurs systmes. Pour favoriser cette technique, il est possible de dfinir des paramtres pour un modle, et ainsi de le rendre gnrique. Par exemple, un modle d'additionneur N bits, suffit modliser tous les additionneurs du mme type, quels que soit leur nombre de bits. Le paramtrage des composants est un outil puissant, qui permet de dvelopper des modles hautement configurables.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

8. Paramtres gnriques

40

La dclaration des paramtres gnriques s'effectue dans l'entit, juste avant les ports d'entre/sortie. Ils apparaissent donc galement dans la dclaration du composant.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

8. Paramtres gnriques

41

Exemple

On considre un additionneur calculant la somme de deux entiers positifs cods sur N bits. N est dclar comme un paramtre du composant addN. N sert dimensionner la fois les oprandes et le rsultat. Remarque: on n'a pas montr les appels aux paquetages ncessaires.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

42

9. Processus

43

Par dfaut, les instructions se trouvant dans la zone de description d'une architecture sont concurrentes. Les instructions concurrentes sont en concurrence pour le processeur et d'un point de vue thorique, elles sexcutent en parallle. Elle dcrivent une situation physique, de la mme faon qu'on dcrirait une scne de thtre: chaque objet et chaque acteur existe en mme temps que les autres. Parmi les instructions concurrentes, il existe une instruction particulire, le processus.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

9. Processus

44
concurrente compose

Un processus est une instruction d'instructions squentielles.

Les instructions squentielles s'excutent une par une, dans l'ordre. Grce au processus, il est possible de dcrire des algorithmes squentiels (dans certaines limites) ou de gnrer des squences de signaux complexes. Toutefois, il ne faut pas confondre VHDL avec un langage de programmation squentiel, ce serait une grave erreur... VHDL dcrit du matriel, pas du logiciel. Si on oublie cela, on court la catastrophe!

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

9. Processus

45

Un processus s'active suite un vnement dclencheur survenu sur l'un des signaux indiqus dans sa liste de sensibilit, ou bien cause d'une instruction wait for. Les instructions squentielles s'excutent alors jusqu' la fin, ou une nouvelle instruction wait for. La liste de sensibilit doit contenir tous les signaux, qui pris individuellement, peuvent suffire changer un rsultat calcul par le processus. Syntaxe

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

9. Processus

46

Liste de sensibilit

Pour un processus qui n'utilise pas d'horloge (logique combinatoire), tous les signaux utiliss pour calculer les rsultats doivent tre dans la liste. Pour un processus qui utilise une horloge (logique squentielle), il faut distinguer trois catgories de signaux:

Les signaux asynchrones: ils sont prioritaires sur l'horloge et peuvent eux seuls changer les rsultats, donc ils doivent tre mis dans la liste. Les signaux synchrones: ils ne sont pris en compte que sur front d'horloge et ne peuvent changer les rsultats tous seuls, donc il ne faut pas les mettre dans la liste. L'horloge: Elle dfinit les instants prcis o il faut prendre en compte les signaux asynchrones. De plus, elle joue un rle trs particulier au cours de la synthse. Pour ces deux raisons, il faut la mettre dans la liste.

Remarque: Ajouter un signal inutile la liste de sensibilit ne fait que ralentir la simulation. En revanche, oublier de mettre un signal ncessaire dnature le circuit en introduisant des latches...
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

9. Processus

47

Zone de dclaration

Seuls des types, des variables et des constantes locaux au processus peuvent tre dclars dans cette zone. La visibilit des objets dclars est limite au processus. Une variable conserve sa valeur entre la fin de l'excution d'un processus et sa prochaine activation.

Zone de description

Elle contient des instructions squentielles. Ces dernires peuvent parfois avoir un quivalent concurrent, la syntaxe diffrente. L'affectation d'une variable (:=) dans un processus a un effet immdiat sur la valeur stocke. En revanche, l'affectation d'un signal ou d'un port (<=) dans un processus est diffre la fin de son excution.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

9. Processus

48

Exemple

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

49

10. Testbench

50
VHDL ncessite la cration d'un

La simulation d'un modle environnement de test.

Par analogie avec le travail dans un laboratoire d'lectronique, on doit crer un banc de test ou tesbench en anglais.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

10. Testbench

51

Sur un banc de test, on peut identifier 3 parties:

Le composant tester C'est le modle VHDL que l'on veut simuler. Le gnrateur de signaux Les signaux d'entre (vecteurs de test) sont gnrs partir de code VHDL, par affectations concurrentes ou squentielles, ou ventuellement lus partir d'un fichier d'entre.

L'analyseur logique Les signaux de sortie (vecteurs rsultats) sont affichs par le simulateur, ou ventuellement sauvegards dans des fichiers de sortie.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

10. Testbench

52

Concrtement, le testbench est un modle VHDL dont la vocation n'est pas de crer un circuit rel, mais plutt d'aider tester le fonctionnement d'un autremodle par simulation fonctionnelle. De ce fait, son entit ne comporte pas de ports d'entre, ni de ports de sortie. Toutefois, elle peut comporter des paramtres. L'architecture du testbench instancie un exemplaire du composant que l'on souhaite tester, avec pour nom d'instance Design Under Test (DUT), ou encore Unit Under Test (UUT). La compilation du testbench et son chargement (laboration) dans le simulateur permettent de simuler le circuit et de tracer les chronogrammes des signaux slectionns.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

10. Testbench

53

Exemple

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

54

11. Boucle de gnration

55

Dans un circuit lectronique numrique, il est frquent de r-utiliser un mme composant plusieurs fois, par exemple pour traiter chaque bit d'une donne multibits. En VHDL, cela se dcrit avec des instructions concurrentes, qui se rptent plusieurs fois, ventuellement avec une lgre modification chaque fois. Si le nombre d'itration est connu l'avance et qu'il est faible, cela ne pose aucun problme de copier la ligne autant de fois que ncessaire et de la rectifier comme il se doit. Mais si ce nombre est inconnu, parce que c'est un paramtre, ou bien qu'il est trop grand (128, 512, 256, 1024, ), alors cela devient impossible. Pour adresser ce problme, VHDL propose le concept de boucle de gnration. Une boucle de gnration est une instruction concurrente, qui sert rpter plusieurs fois un groupe d'instructions concurrentes. Elle utilise un compteur de type entier, qui peut servir d'indice dans la boucle.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

11. Boucle de gnration

56

Syntaxe

L'intervalle peut tre parcouru dans l'ordre croissant ou dcroissant:

Remarque:

Le compteur de boucle est obligatoirement un entier. Il est donc inutile de le dclarer dans la zone de dclaration de l'architecture. C'est une variable locale la boucle. On ne peut l'utiliser en dehors de celle-ci. Enfin, dans la boucle, il masque toute autre objet ventuel qui porterait le mme nom
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

11. Boucle de gnration

57

Exemple

L' additionneur paramtr

addN peut tre dcrit d'une faon structurelle :

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

58

12. Boucle algorithmique

59

Le mode squentiel est utilis dans les processus, mais galement dans les fonctions et les procdures. Il est adapt la description d'algorithmes squentiels (comme en C ou en Pascal). Dans ce type d'algorithme, on utilise frquemment des boucles itratives. VHDL propose donc les trois types de boucle possibles:

Nombre d'itrations connu l'avance (boucle for) Test avant itration (boucle while) Test aprs itration (boucle until)

Les deux derniers types de boucle sont utiliser avec prudence, car les consquences lors de la synthse peuvent tre catastrophiques...
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

12. Boucle algorithmique

60

Syntaxe 1 (boucle for)

Syntaxe 2 (boucle while)

Syntaxe 3 (boucle until)

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

12. Boucle algorithmique

61

Exemple

La gnration de vecteurs de test dans un testbench paramtr fait souvent appel une boucle algorithmique de type for. La boucle suivante gnre toutes les valeurs positives possibles sur N bits. Elle est contenue dans un processus, dans un testbench.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

62

13. Configuration

63

Une entit peu avoir plusieurs architectures, chacune adapte une utilisation particulire. Lorsque l'on instancie un composant, il faut pouvoir spcifier quelle entit on souhaite utiliser, associe quelle architecture. Pour cela, VHDL introduit le concept de configuration. Une configuration est un couple (entit, architecture). Il existe plusieurs manires d'associer une architecture une entit et donc plusieurs syntaxes. Nous nous contenterons de la plus simple: Elle doit tre place dans la zone de dclaration de l'architecture qui cre l'instance.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

13. Configuration

64

Exemple

On considre addN, l'additionneur N bit des exemples prcdents. Cet additionneur peut tre modlis avec une entit et deux architectures diffrentes, aux caractristiques physiques (consommation, performance, surface silicium) diffrentes. Rappelons son entit:

Remarque: Une entit et ses architectures se trouvent gnralement dans un mme fichier, mais ce n'est pas obligatoire.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

13. Configuration

65

La premire architecture utilise le style structurel et dcrit prcisment les sous-composants utiliser et la faon de les connecter.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

13. Configuration

66

La deuxime architecture utilise le style flot de donnes et dcrit le calcul des sorties partir des entres avec des quations.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

13. Configuration

67

On souhaite maintenant crire un testbench pour addN. Pour cela, il est important de prciser quelle architecture on utilise pour UUT.

La ligne cadre en rouge peut tre interprte de la faon suivante: Pour UUT, qui est une instance de addN, utilise l'entit qui se trouve dans la librairie work, associe l'architecture flot.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

68

14. Fonctions

69

En VHDL, une fonction est un ensemble d'instructions squentielles, qui dpend d'un ou plusieurs paramtres et qui retourne un rsultat. Les paramtres peuvent tre des signaux, des constantes ou des variables. Parmi les utilisations les plus courantes des fonctions, on peut citer:

Fonctions mathmatiques et logiques Fonctions de conversion d'un type un autre Fonctions de surcharge d'un oprateur de base, pour lui permettre de grer un type dfini par l'utilisateur Fonctions de rsolution, pour lever les conflits de valeur sur un signal (ex.: '0' faible et '1' fort, appliqus en mme temps sur un mme signal, donneront un '1' fort)

Les fonctions peuvent tres dfinies dans la zone de dclaration d'une architecture, ou bien dans le corps d'un paquetage.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

14. Fonctions

70

Syntaxe

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

14. Fonctions

71

Exemple

La fonction suivante calcule le log2(a) d'une faon approche, pour a positif cod sur 8 bits.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

72

15. Procdures

73

En VHDL, une procdure est un ensemble d'instructions squentielles, qui dpend d'un ou plusieurs paramtres et qui ne retourne pas de rsultat (En ralit, les rsultats sont rangs dans les paramtres de la procdure). Comme pour les fonctions, mais avec d'avantage de prcautions, les paramtres peuvent tre des signaux, des constantes ou des variables. Les procdures peuvent tres dfinies dans la zone de dclaration d'une architecture, ou bien dans le corps d'un paquetage.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

15. Procdures

74

Exemple

La procdure suivante calcule l'oppos de a en complment 2, en balayant le vecteur de droite gauche, avec conservation des bits jusqu'au 1er '1' inclus, et inversion des bits suivants.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

75

16. Corps de paquetage

76

Lorsque l'on utilise des fonctions ou des procdures, il faut distinguer deux choses:

La dfinition: fonction complte, avec son en-tte et son corps.

La dclaration: prototype de la fonction, c'est dire son en-tte seul.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

16. Corps de paquetage

77

Lorsque la dfinition d'une fonction ou d'une procdure est faite dans la zone de dclaration d'une architecture, elle est locale cette architecture et n'a donc pas besoin d'tre dclare pour tre utilise. Toutefois, son utilisation sera limite cette architecture particulire... Pour favoriser la rutilisation d'une fonction ou d'une procdure, VHDL propose de la dfinir dans une unit de conception ddie: lecorps de paquetage. Le corps de paquetage est destin complter un paquetage. Donc, il ne peut exister seul (l'inverse est vrai). Il se trouve gnralement juste aprs le paquetage, dans le mme fichier VHDL. Son rle est de dfinir les fonctions et les procdures qui ont t dclares dans le paquetage. Pour fixer les ides, on peut faire l'analogie suivante:

Le paquetage est quivalent au fichier .h en langage C. Le corps de paquetage est quivalent au fichier .c en langage C.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

16. Corps de paquetage

78

De ce fait, pour qu'une fonction ou une procdure soir rutilisable il faut:

dfinir la fonction ou la procdure dans le corps d'un paquetage,

ensuite la dclarer dans le paquetage correspondant

et enfin, dclarer le paquetage dans chaque fichier o on utilise la fonction ou la procdure.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

16. Corps de paquetage

79

Exemple

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

80

17. Librairies

81

En association avec les logiciels de CAO, VHDL permet d'organiser les dveloppements dans des bibliothques (ou librairies) thmatiques. Une organisation intelligent favorise la rutilisation des modles dj dvelopps et valids. D'une faon gnrale, on distingue 3 catgories de bibliothques:

Les deux bibliothques standard

Std (Standard) Contient les types et les oprateurs de base du langage et fait partie implicite de tous les projets VHDL. IEEE

Contient les types et les oprateurs ajouts par les rvisions de la norme, sous la forme de paquetages inclure selon les besoins.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

17. Librairies

82

std_logic_1164

Dfinit les types std_logic et std_logic_vector, ainsi que les oprateurs logiques associs. Dfinit les fonctions de conversion entre diffrents types et le type std_logic_vector. Dfinit des oprateurs arithmtiques et de comparaison non signs, utiliser lorsque les objets de type std_logic_vector contiennent des valeurs non signes (simplement en binaire). Dfinit des oprateurs arithmtiques et de comparaison non signs, utiliser lorsque les objets de type std_logic_vector contiennent des valeurs signes (en complment 2).

std_logic_arith

std_logic_unsigned

std_logic_signed

Remarque: std_logic_unsigned et std_logic_signed ne peuvent pas cohabiter, car ils dfinissent les mmes oprations de faon diffrente.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

17. Librairies

83

Les bibliothques proposes avec le logiciel

Ce sont des bibliothques destines faciliter certaines tches, comme la communication avec un programme C pendant la simulation, la simulation post-synthse, etc. Elle ne font pas toujours partie d'un standard, aussi leur utilisation devra tre limite pour prserver la portabilit du projet. Chaque modle compil par l'utilisateur est rang dans une librairie. Par dfaut, la librairie de travail s'appelle work et se trouve dans le mme rpertoire que le projet. En ralit, il est possible de crer ses propres bibliothques et de compiler ses modles dedans (voir le manuel des logiciels de CAO). Une organisation intelligente des dveloppements rutilisation et augmente la productivit.
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

Les bibliothques utilisateur


favorise

la

Le VHDL en pratique
1. Introduction 2. Types 3. Objets 4. Entit 5. Architecture 6. Component 7. Paquetage 8. Paramtres gnriques 9. Processus 10. Testbench 11. Boucle de gnration 12. Boucle algorithmique 13. Configuration 14. Fonctions 15. Procdures 16. Corps de paquetage 17. Librairies 18. Conclusion
ENIT - Gnie Electrique - Le VHDL en pratique - v1.0

84

18. Conclusion

85

Ce cours est une introduction au VHDL. Il porte sur les concepts essentiels du langage, ceux dont le concepteur a besoin 99% du temps. Nous avons tent de couvrir la majorit des aspects de la conception de circuit en VHDL. L'apprentissage et l'assimilation de ces concepts passe ncessairement par une phase pratique, qui fait l'objet de la suite de ce cours. Enfin, les points volontairement carts peuvent tre approfondis grce diffrents ouvrages trs complets sur le sujet.

ENIT - Gnie Electrique - Le VHDL en pratique - v1.0