Le VHDL en Pratique v1.0

download Le VHDL en Pratique v1.0

of 85

Transcript of Le VHDL en Pratique v1.0

Le VHDL en pratiqueENIT - Gnie lectriqueBOURGUIBA [email protected]

v1.0

Le VHDL en pratique1. 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. ConclusionENIT - Gnie Electrique - Le VHDL en pratique - v1.0

2

1. Introduction

3

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

4

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 utilisentENIT - Gnie Electrique - Le VHDL en pratique - v1.0

1. Introduction

5

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

6

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

7

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 pratique1. 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. ConclusionENIT - Gnie Electrique - Le VHDL en pratique - v1.0

8

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

9

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. TypesA. 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. TypesA. 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. TypesA. 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 pratique1. 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. ConclusionENIT - 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 pratique1. 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. ConclusionENIT - 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,

a

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

Le VHDL en pratique1. 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. ConclusionENIT - 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 pratique1. 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. ConclusionENIT - 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 pratique1. 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. ConclusionENIT - 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 pratique1. 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. ConclusionENIT - 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 pratique1. 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. ConclusionENIT - 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

44concurrente 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 (