50
.CAIGNET Les circuits logiques programmables - FPGA 1 Introduction au langage VHDL Sémantique Fabrice CAIGNET LAAS - CNRS [email protected]

Introduction au langage VHDL Sémantique Introduction au langage

Embed Size (px)

Citation preview

F.CAIGNET

Les circuits logiques programmables - FPGA

1

Introduction au langage VHDL

Sémantique

Introduction au langage VHDL

Sémantique

Fabrice CAIGNETLAAS - [email protected]

F.CAIGNET

Les circuits logiques programmables - FPGA

2

Contenu :Contenu :

I. Les bases de la sémantique du VHDL

II. La déclaration des modèles

IV. Les instructions séquentielles

III. Les instructions concurrentes - combinatoires

F.CAIGNET

Les circuits logiques programmables - FPGA

3

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDL

Les commentaires

Les commentaires commencent à la suite de : « -- »

Ex : a <= b aftre 20 ns; -- a reçoit b après 20 nsLe VHDL ne prendra pas en compte tout ce qui suit.

Ex : a <= b aftre 20 ns; -- a reçoit b après 20 nsLe VHDL ne prendra pas en compte tout ce qui suit.

Les identificateurs

•Tous les caractères sont pris en compte dans le langage VHDL•Le premier caractère doit être une lettre•Il n’y a pas de différences entre minuscules et majuscules

Ex : autorisé : NAND Bascule_JK NE555Interdits : A#2 2A A$2 A__2

Ex : autorisé : NAND Bascule_JK NE555Interdits : A#2 2A A$2 A__2

F.CAIGNET

Les circuits logiques programmables - FPGA

4

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes chaînes de caractèresElles sont prises entre des doubles guillemets, on y différencieminuscules et majuscules

Ex : ‘’ this string’’ is différents than ‘’THIS STRING’’Ex : ‘’ this string’’ is différents than ‘’THIS STRING’’Les nombresIls peuvent être exprimés en décimal ou en base 2 à 16

0 1 1e6 entiers ( integer)0.25 12.0 1.3e+6 Réel (real)

0 1 1e6 entiers ( integer)0.25 12.0 1.3e+6 Réel (real)

• Décimaux :

2#0110000010# binaire16#12E4F# Hexadécimal

2#0110000010# binaire16#12E4F# Hexadécimal

• Les bases: format : base#nombre#

On sépare les chiffres des unités5 ps 3 ms 5 V

On sépare les chiffres des unités5 ps 3 ms 5 V

• Les grandeurs physique:

F.CAIGNET

Les circuits logiques programmables - FPGA

5

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDL

Les chaînes de bits

Les bases sont définies comme suit :

• B : binaire (binary)• O : Octale (octal)• X : Hexadécimale (hexadecimal)

Ex : B’’10001010’’ -- longueur 8 bitsO’’126’’ -- longueur 9 bits eq B’’001 010 110’’X’’56’’ -- longueur 8 bits eq B’’0101 0110’’

Ex : B’’10001010’’ -- longueur 8 bitsO’’126’’ -- longueur 9 bits eq B’’001 010 110’’X’’56’’ -- longueur 8 bits eq B’’0101 0110’’

F.CAIGNET

Les circuits logiques programmables - FPGA

6

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDL

Les types et sous-types

F.CAIGNET

Les circuits logiques programmables - FPGA

7

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDL

Les types et sous types du package « standart » : numériques

F.CAIGNET

Les circuits logiques programmables - FPGA

8

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes types et sous types du package « standart » : énumérés

F.CAIGNET

Les circuits logiques programmables - FPGA

9

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes types et sous types du package « standart » : physiques

F.CAIGNET

Les circuits logiques programmables - FPGA

10

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes types et sous types du package « standart » : les tableaux

F.CAIGNET

Les circuits logiques programmables - FPGA

11

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes types et sous types du package « standart » : les tableaux

F.CAIGNET

Les circuits logiques programmables - FPGA

12

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes définitions de type : objets

Objet : élément nommé ayant des valeurs d'un type donnéObjet : élément nommé ayant des valeurs d'un type donné

On trouve 3 principales classes d’objets

• Constantes : permet de forcer une valeur

• Variables : permet d’initialiser une valeurs pouvant varier

• signaux : représentent les signaux réels d’un circuits

F.CAIGNET

Les circuits logiques programmables - FPGA

13

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes définitions de type objets ; Constantes

F.CAIGNET

Les circuits logiques programmables - FPGA

14

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes définitions de type objets ; Variables

F.CAIGNET

Les circuits logiques programmables - FPGA

15

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes définitions de type objets ; Signaux

F.CAIGNET

Les circuits logiques programmables - FPGA

16

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes expressions et les opérateurs

F.CAIGNET

Les circuits logiques programmables - FPGA

17

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes attributs

F.CAIGNET

Les circuits logiques programmables - FPGA

18

I. Les bases de la sémantique en VHDLI. Les bases de la sémantique en VHDLLes attributs

F.CAIGNET

Les circuits logiques programmables - FPGA

19

II. Description d’un modèle VHDLII. Description d’un modèle VHDL

Rappel sur l’architecture d’un modèle VHDL

F.CAIGNET

Les circuits logiques programmables - FPGA

20

LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_arith.all;ENTITY combi1 IS

PORT (a :IN STD_LOGIC_VECTOR(3 DOWNTO 0);b :IN STD_LOGIC_VECTOR(3 DOWNTO 0);S : OUT STD_LOGIC_VECTOR(11 DOWNTO 0);T : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END combi1;

II. Description d’un modèle VHDLII. Description d’un modèle VHDL

Clause de contexte : entête d’un fichier VHDL : déclaration des bibliothéques

Permet de définir des variables…

Permet de définir des variables…

F.CAIGNET

Les circuits logiques programmables - FPGA

21

II. Description d’un modèle VHDLII. Description d’un modèle VHDL

Déclaration de l’entité

F.CAIGNET

Les circuits logiques programmables - FPGA

22

II. Description d’un modèle VHDLII. Description d’un modèle VHDL

Déclaration de l’entité

Chaîne de caractères

In : entréeOut : Sortie

Inout : entrée sortieBuffer : signal de

sortie utilisé comme une entrée dans

description

Bit, std_logic : signalBit_vector, std_logic_vector

: businteger : signal

Integer range : bus…

F.CAIGNET

Les circuits logiques programmables - FPGA

23

II. Description d’un modèle VHDLII. Description d’un modèle VHDL

Déclaration de l’architecture

L’architecture décrit le fonctionnement souhaité pour un circuit ou une partie du circuit.

L’architecture décrit le fonctionnement souhaité pour un circuit ou une partie du circuit.

Plusieurs architectures peuvent décrire la même entité.

L’architecture établit à travers les instructions les relations entre les entrées et les sorties. On peut avoir un fonctionnement purementcombinatoire, séquentiel voire les deux séquentiel et combinatoire.

F.CAIGNET

Les circuits logiques programmables - FPGA

24

II. Description d’un modèle VHDLII. Description d’un modèle VHDL

Déclaration de l’architecture

Integer range 0 to 9;

F.CAIGNET

Les circuits logiques programmables - FPGA

25

II. Description d’un modèle VHDLII. Description d’un modèle VHDLTypes d’instructions de l’architecture

F.CAIGNET

Les circuits logiques programmables - FPGA

26

III. Instructions concurrentesIII. Instructions concurrentes

les instructions concurrentes sont les bases du langage VHDL, elles servent essentiellement à l’affectation.Le mode concurrent représente l’aspect combinatoire du fonctionnement des circuits

l’ordre dans lequel seront écrites les instructions n’a aucune importance.

Pour une description VHDL toutes les instructions sont évaluées et affectent les signaux de sortie en même temps. L’ordre dans lequel elles sont écrites n’a aucune importance. En effet la description génère des structures électroniques, c’est la grande différence entre une description VHDL et un langage informatique classique.

Vue générale

F.CAIGNET

Les circuits logiques programmables - FPGA

27

III. Instructions concurrentesIII. Instructions concurrentes

Exemple :

La synthèse de l’une ou l’autre des architecture donnera la chose suivante

F.CAIGNET

Les circuits logiques programmables - FPGA

28

III. Instructions concurrentesIII. Instructions concurrentes

Les affectations de signaux : <=

Pour l’affectation de signaux on utilise le symbole <=, quelque soit le type de signal

Ex : Signal a,t,u : bit :=‘0’;Signal b : bit_vector (7 donwto 0) :=‘‘00000000’’;Signal c : integer range 0 to 255 := 0;a <= t and u ;b <= ‘‘00111001’’;c <= c+1;

Ex : Signal a,t,u : bit :=‘0’;Signal b : bit_vector (7 donwto 0) :=‘‘00000000’’;Signal c : integer range 0 to 255 := 0;a <= t and u ;b <= ‘‘00111001’’;c <= c+1;

F.CAIGNET

Les circuits logiques programmables - FPGA

29

III. Instructions concurrentesIII. Instructions concurrentes

Les affectations de signaux : <=

F.CAIGNET

Les circuits logiques programmables - FPGA

30

III. Instructions concurrentesIII. Instructions concurrentes

Les affectations de signaux : <= : les opérateurs possibles

La concaténation : permet de regrouper des signaux

F.CAIGNET

Les circuits logiques programmables - FPGA

31

III. Instructions concurrentesIII. Instructions concurrentes

Les affectations de signaux : <= : les opérateurs logiques

Non valable sous MAXPLUS

Exemple :

F.CAIGNET

Les circuits logiques programmables - FPGA

32

III. Instructions concurrentesIII. Instructions concurrentes

Les affectations de signaux : <= : les opérateurs arithmétiques

Pour pouvoir utiliser les opérateurs arithmétiques, il faut que les signaux soient déclarés comme integer ou real

La taille du vecteur associé à un entier dépend de la façon dont il est définit. Lors de la synthèse on génère un

Signal c : integer range 0 to 255 := 0; -- vecteur de 7 bitsSignal c : integer range 0 to 255 := 0; -- vecteur de 7 bits

F.CAIGNET

Les circuits logiques programmables - FPGA

33

III. Instructions concurrentesIII. Instructions concurrentes

Les affectations de signaux : <= : les opérateurs relationnels

F.CAIGNET

Les circuits logiques programmables - FPGA

34

III. Instructions concurrentesIII. Instructions concurrentes

Ordre des affectations de signaux pas important

Ordre des affectations de variables important

F.CAIGNET

Les circuits logiques programmables - FPGA

35

III. Instructions concurrentesIII. Instructions concurrentes

Les instructions du mode concurrent : affectation conditionnel

F.CAIGNET

Les circuits logiques programmables - FPGA

36

III. Instructions concurrentesIII. Instructions concurrentes

Les instructions du mode concurrent : affectation conditionnel

F.CAIGNET

Les circuits logiques programmables - FPGA

37

III. Instructions concurrentesIII. Instructions concurrentes

Les instructions du mode concurrent : affectation sélective

Cette instruction permet d’affecter différentes valeurs à un signal, selon les valeurs prises par un signal dit de sélection.

Remarque: l’instruction [expression when others] n’est pas obligatoire maisfortement conseillée, elle permet de définir la valeur du SIGNAL dans le cas où lacondition n’est pas remplie.

F.CAIGNET

Les circuits logiques programmables - FPGA

38

III. Instructions concurrentesIII. Instructions concurrentes

Les instructions du mode concurrent : affectation sélective

Bonne nouvelle : les deux modes de description conduisent au même schéma électrique

F.CAIGNET

Les circuits logiques programmables - FPGA

39

IV. Instructions séquentiellesIV. Instructions séquentiellesLe « Process » : définition

Liste de sensibilitéListe de sensibilité

Remarque: Le nom du process entre crochet est facultatif, mais il peut être très utile pour repérer un process parmi d’autres lors de phases de mise au point ou de simulations.

Un process est une partie de la description d’un circuit dans laquelle les instructions sont exécutées séquentiellement c’est à dire les unes à la suite des autres. Il permet d’effectuer des opérations sur les signaux en utilisant les instructions standard de la programmation structurée comme dans les systèmes à microprocesseurs. L’exécution d’un process est déclenchée par un ou des changements d’états de signaux logiques. Le nom de ces signaux est défini dans la liste de sensibilité lors de la déclaration du process.

F.CAIGNET

Les circuits logiques programmables - FPGA

40

IV. Instructions séquentiellesIV. Instructions séquentielles

Le « Process » : Règles de fonctionnement d’un process

1) L’exécution d’un process a lieu à chaque changement d’état d’un signal de la liste de sensibilité.2) Les instructions du processs’exécutent séquentiellement.3) Les changements d’état des signaux par les instructions du process sont pris en compte à la fin du process.

ENTITY seq2 ISPORT (

d, h: IN STD_LOGIC; q: OUT STD_LOGIC

);END seq2;

ARCHITECTURE archi OF seq2 ISBEGIN

PROCESSBEGINWAIT UNTIL h='1';q <= d;END PROCESS;

END archi;

ENTITY seq2 ISPORT (

d, h: IN STD_LOGIC; q: OUT STD_LOGIC

);END seq2;

ARCHITECTURE archi OF seq2 ISBEGIN

PROCESSBEGINWAIT UNTIL h='1';q <= d;END PROCESS;

END archi;

Condition de rentrée dans le

process

Condition de rentrée dans le

process

Remarque : sauf les variables propres au process qui peuvent évoluer quand le process est en cours d’exécution

F.CAIGNET

Les circuits logiques programmables - FPGA

41

IV. Instructions séquentiellesIV. Instructions séquentielles

Le « Process » : Règles de fonctionnement d’un process

Condition de rentrée dans le

process

Condition de rentrée dans le

process

F.CAIGNET

Les circuits logiques programmables - FPGA

42

IV. Instructions séquentiellesIV. Instructions séquentielles

Les instructions séquentielles

• Instruction conditionnelle: IF

If condition thenInstructions

elsif condition then instructionselse instructions end if;

F.CAIGNET

Les circuits logiques programmables - FPGA

43

IV. Instructions séquentiellesIV. Instructions séquentielles

Les instructions séquentielles

CASE : case……….end case;case expression is

when valeur1=>……sequence1;when valeur2| valeur3=>……sequence2;when valeur4 to valeur8=>……sequence3;when valeur4 downto valeur8=>……sequence4;

end case;

• Instruction selective: case

Exemple :

F.CAIGNET

Les circuits logiques programmables - FPGA

44

LOOP : loop ………….end loop;

while condition loop…………….;end loop;

for……in 1 to ……. loop…………….;end loop;

LOOP inbriquées: first_loop : loopsecond_loop : loop……do something…….end loop second_loop; end loop first_loop;

IV. Instructions séquentiellesIV. Instructions séquentielles

Les instructions séquentielles : structures de boucles

Sorties de boucles :NEXT : arrête l'itération en cours de boucleEXIT : permet de sortir d ’une boucle

Sorties de boucles :NEXT : arrête l'itération en cours de boucleEXIT : permet de sortir d ’une boucle

F.CAIGNET

Les circuits logiques programmables - FPGA

45

WAIT: wait on ….. until …for…..;

wait on clock;wait on clock until data ='1';wait on clock until data ='1' for 10ns;wait for 10ns;wait;

IV. Instructions séquentiellesIV. Instructions séquentielles

Les instructions séquentielles : structures WAIT

F.CAIGNET

Les circuits logiques programmables - FPGA

46

IV. Instructions séquentiellesIV. Instructions séquentielles

Exemple : Multiplexeur 4 vers 1

e0e1e2e3c1

c0

s

sélection

entr

ées

sortie

ENTITY mux4_2 ISPORT(

c: IN INTERGER RANGE 0 TO 3;e: IN BIT_VECTOR(3 DOWNTO 0);s: OUT BIT);

END mux4_2;

ENTITY mux4_2 ISPORT(

c: IN INTERGER RANGE 0 TO 3;e: IN BIT_VECTOR(3 DOWNTO 0);s: OUT BIT);

END mux4_2;

Architecture concur of mux4_2 ISbeginWith c select

s<= e0 when 0;e1 when 1;e2 when 2;e3 when 3;‘0’ when others;

END concur;

Architecture concur of mux4_2 ISbeginWith c select

s<= e0 when 0;e1 when 1;e2 when 2;e3 when 3;‘0’ when others;

END concur;

Description concurrente :

F.CAIGNET

Les circuits logiques programmables - FPGA

47

IV. Instructions séquentiellesIV. Instructions séquentielles

Exemple : Multiplexeur 4 vers 1

e0e1e2e3c1

c0

s

sélection

entr

ées

sortie

ARCHITECTURE cond OF mux4_2 ISBEGINPROCESS (c)

BEGINIF (c=0) THEN s<=e(0);ELSIF (c=1) THEN s<=e(1);ELSIF (c=2) THEN s<=e(2);ELSE s<=e(3);END IF;END PROCESS;

END archi1;

ARCHITECTURE cond OF mux4_2 ISBEGINPROCESS (c)

BEGINIF (c=0) THEN s<=e(0);ELSIF (c=1) THEN s<=e(1);ELSIF (c=2) THEN s<=e(2);ELSE s<=e(3);END IF;END PROCESS;

END archi1;

Description séquentielle conditionnelle :

F.CAIGNET

Les circuits logiques programmables - FPGA

48

IV. Instructions séquentiellesIV. Instructions séquentielles

Exemple : Multiplexeur 4 vers 1

e0e1e2e3c1

c0

s

sélection

entr

ées

sortie

ARCHITECTURE cond OF mux4_2 ISBEGINPROCESS (c)

BEGINCASE c ISWHEN 0 => s<=e(0);WHEN 1 => s<=e(1);WHEN 2 => s<=e(2);WHEN 3 => s<=e(3);END CASE;

END PROCESS;END archi1;

ARCHITECTURE cond OF mux4_2 ISBEGINPROCESS (c)

BEGINCASE c ISWHEN 0 => s<=e(0);WHEN 1 => s<=e(1);WHEN 2 => s<=e(2);WHEN 3 => s<=e(3);END CASE;

END PROCESS;END archi1;

Description séquentielle sélective :

F.CAIGNET

Les circuits logiques programmables - FPGA

49

IV. Instructions séquentiellesIV. Instructions séquentielles

Exemple : Multiplexeur 4 vers 1

e0e1e2e3c1

c0

s

sélection

entr

ées

sortie

ARCHITECTURE cond OF mux4_2 ISBEGINPROCESS (c)

BEGINIF (val='0') THEN s<='0';ELSE

CASE c ISWHEN 0 => s<=e(0);WHEN 1 => s<=e(1);WHEN 2 => s<=e(2);WHEN 3 => s<=e(3);END CASE;

END IF;END PROCESS;END archi1;

ARCHITECTURE cond OF mux4_2 ISBEGINPROCESS (c)

BEGINIF (val='0') THEN s<='0';ELSE

CASE c ISWHEN 0 => s<=e(0);WHEN 1 => s<=e(1);WHEN 2 => s<=e(2);WHEN 3 => s<=e(3);END CASE;

END IF;END PROCESS;END archi1;

Description séquentielle mixte :

F.CAIGNET

Les circuits logiques programmables - FPGA

50

Références et remerciementsRéférences et remerciementsJe tiens à remercier les différentes personnes ci-dessous pour avoir diffuser leurs savoir et ainsi m’avoir permis de récupérer un certains nombres de données.

• A. Vachoux,• Leteneur• J.M de cachan