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