Telechargé par ahmed mounsef

vhdl important

publicité
Les circuits logiques programmables - FPGA
Introduction
Introduction au
au langage
langage VHDL
VHDL
Sémantique
Sémantique
Fabrice CAIGNET
LAAS - CNRS
[email protected]
F.CAIGNET
1
Les circuits logiques programmables - FPGA
Contenu
Contenu::
I. Les bases de la sémantique du VHDL
II. La déclaration des modèles
III. Les instructions concurrentes - combinatoires
IV. Les instructions séquentielles
F.CAIGNET
2
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les commentaires
Les commentaires commencent à la suite de : « -- »
Ex
aa<=
Ex::
<=bbaftre
aftre20
20ns;
ns; ----aareçoit
reçoitbbaprès
après20
20ns
ns
Le
LeVHDL
VHDLne
neprendra
prendrapas
pasen
encompte
comptetout
toutce
cequi
quisuit.
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
Ex::
F.CAIGNET
autorisé
autorisé::
Interdits
Interdits: :
NAND
NAND Bascule_JK
Bascule_JK NE555
NE555
A#2
A#2 2A
2A A$2
A$2 A__2
A__2
3
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les chaînes de caractères
Elles sont prises entre des doubles guillemets, on y différencie
minuscules et majuscules
Ex
‘’‘’this
Ex: :
thisstring’’
string’’isisdifférents
différentsthan
than‘’THIS
‘’THISSTRING’’
STRING’’
Les nombres
Ils peuvent être exprimés en décimal ou en base 2 à 16
• Décimaux :
00 11 1e6
1e6
0.25
1.3e+6
0.25 12.0
12.0
1.3e+6
• Les bases:
entiers
entiers((integer)
integer)
Réel
Réel(real)
(real)
format : base#nombre#
2#0110000010#
2#0110000010#
16#12E4F#
16#12E4F#
binaire
binaire
Hexadécimal
Hexadécimal
• Les grandeurs physique:
On
Onsépare
sépareles
leschiffres
chiffresdes
desunités
unités
55ps
33ms
55VV
ps
ms
F.CAIGNET
4
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les chaînes de bits
Les bases sont définies comme suit :
• B : binaire (binary)
• O : Octale (octal)
• X : Hexadécimale (hexadecimal)
Ex
Ex::
F.CAIGNET
B’’10001010’’
B’’10001010’’
O’’126’’
O’’126’’
X’’56’’
X’’56’’
----longueur
longueur88bits
bits
----longueur
longueur99bits
bitseq
eqB’’001
B’’001010
010110’’
110’’
----longueur
longueur88bits
bitseq
eqB’’0101
B’’01010110’’
0110’’
5
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les types et sous-types
F.CAIGNET
6
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les types et sous types du package « standart » : numériques
F.CAIGNET
7
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les types et sous types du package « standart » : énumérés
F.CAIGNET
8
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les types et sous types du package « standart » : physiques
F.CAIGNET
9
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les types et sous types du package « standart » : les tableaux
F.CAIGNET
10
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les types et sous types du package « standart » : les tableaux
F.CAIGNET
11
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les définitions de type : objets
Objet
Objet::élément
élémentnommé
nomméayant
ayantdes
desvaleurs
valeursd'un
d'untype
typedonné
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
12
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les définitions de type objets ; Constantes
F.CAIGNET
13
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les définitions de type objets ; Variables
F.CAIGNET
14
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les définitions de type objets ; Signaux
F.CAIGNET
15
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les expressions et les opérateurs
F.CAIGNET
16
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les attributs
F.CAIGNET
17
Les circuits logiques programmables - FPGA
I.I.Les
Lesbases
basesde
dela
lasémantique
sémantiqueen
enVHDL
VHDL
Les attributs
F.CAIGNET
18
Les circuits logiques programmables - FPGA
II.
II.Description
Descriptiond’un
d’unmodèle
modèleVHDL
VHDL
Rappel sur l’architecture d’un modèle VHDL
F.CAIGNET
19
Les circuits logiques programmables - FPGA
II.
II.Description
Descriptiond’un
d’unmodèle
modèleVHDL
VHDL
Clause de contexte : entête d’un fichier VHDL : déclaration des
bibliothéques
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;
Permet
Permetde
dedéfinir
définirdes
des
variables…
variables…
F.CAIGNET
20
Les circuits logiques programmables - FPGA
II.
II.Description
Descriptiond’un
d’unmodèle
modèleVHDL
VHDL
Déclaration de l’entité
F.CAIGNET
21
Les circuits logiques programmables - FPGA
II.
II.Description
Descriptiond’un
d’unmodèle
modèleVHDL
VHDL
Déclaration de l’entité
Chaîne de
caractères
In : entrée
Out : Sortie
Inout : entrée sortie
Buffer : signal de
sortie utilisé comme
une entrée dans
description
F.CAIGNET
Bit, std_logic : signal
Bit_vector, std_logic_vector
: bus
integer : signal
Integer range : bus
…
22
Les circuits logiques programmables - FPGA
II.
II.Description
Descriptiond’un
d’unmodèle
modèleVHDL
VHDL
Déclaration de l’architecture
L’architecture
L’architecturedécrit
décritle
lefonctionnement
fonctionnementsouhaité
souhaitépour
pourun
uncircuit
circuitou
ou
une
unepartie
partiedu
ducircuit.
circuit.
L’architecture établit à travers les instructions les relations entre les
entrées et les sorties. On peut avoir un fonctionnement purement
combinatoire, séquentiel voire les deux séquentiel et combinatoire.
Plusieurs architectures peuvent décrire la même entité.
F.CAIGNET
23
Les circuits logiques programmables - FPGA
II.
II.Description
Descriptiond’un
d’unmodèle
modèleVHDL
VHDL
Déclaration de l’architecture
Integer range 0 to 9;
F.CAIGNET
24
Les circuits logiques programmables - FPGA
II.
II.Description
Descriptiond’un
d’unmodèle
modèleVHDL
VHDL
Types d’instructions de l’architecture
F.CAIGNET
25
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
concurrentes
Vue générale
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.
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.
F.CAIGNET
26
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
concurrentes
Exemple :
La synthèse de l’une ou l’autre des
architecture donnera la chose
suivante
F.CAIGNET
27
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
concurrentes
Les affectations de signaux : <=
Pour l’affectation de signaux on utilise le symbole <=, quelque soit le
type de signal
Ex
Ex::
Signal
Signala,t,u
a,t,u::bit
bit:=‘0’;
:=‘0’;
Signal
Signalbb::bit_vector
bit_vector(7(7donwto
donwto0)0):=‘‘00000000’’;
:=‘‘00000000’’;
Signal
Signalcc::integer
integerrange
range00toto255
255:=
:=0;0;
aa<=
<=ttand
anduu;;
bb<=
<=‘‘00111001’’;
‘‘00111001’’;
cc<=
<=c+1;
c+1;
F.CAIGNET
28
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
concurrentes
Les affectations de signaux : <=
F.CAIGNET
29
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
concurrentes
Les affectations de signaux : <= : les opérateurs possibles
La concaténation : permet de regrouper des signaux
F.CAIGNET
30
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
concurrentes
Les affectations de signaux : <= : les opérateurs logiques
Non valable sous
MAXPLUS
Exemple :
F.CAIGNET
31
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
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
Signalcc::integer
integerrange
range00to
to255
255:=
:=0;0; ----vecteur
vecteurde
de77bits
bits
F.CAIGNET
32
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
concurrentes
Les affectations de signaux : <= : les opérateurs relationnels
F.CAIGNET
33
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
concurrentes
Ordre des affectations de signaux
pas important
F.CAIGNET
Ordre des affectations de variables
important
34
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
concurrentes
Les instructions du mode concurrent : affectation conditionnel
F.CAIGNET
35
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
concurrentes
Les instructions du mode concurrent : affectation conditionnel
F.CAIGNET
36
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
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 mais
fortement conseillée, elle permet de définir la valeur du SIGNAL dans le cas où la
condition n’est pas remplie.
F.CAIGNET
37
Les circuits logiques programmables - FPGA
III.
III.Instructions
Instructionsconcurrentes
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
38
Les circuits logiques programmables - FPGA
IV.
IV.Instructions
Instructionsséquentielles
séquentielles
Le « Process » : définition
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.
Liste
Listede
desensibilité
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.
F.CAIGNET
39
Les circuits logiques programmables - FPGA
IV.
IV.Instructions
Instructionsséquentielles
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 process
s’exécutent séquentiellement.
ENTITY
ENTITYseq2
seq2IS
IS
PORT
(
PORT (
d,d,h:
h:IN
INSTD_LOGIC;
STD_LOGIC;
q:
OUT
q:
OUTSTD_LOGIC
STD_LOGIC
););
END
ENDseq2;
seq2;
ARCHITECTURE
ARCHITECTUREarchi
archiOF
OFseq2
seq2IS
IS
BEGIN
BEGIN
process sont pris en compte à la
PROCESS
PROCESS
BEGIN
BEGIN
WAIT
WAITUNTIL
UNTILh='1';
h='1';
qq<=
d;
<= d;
END
ENDPROCESS;
PROCESS;
fin du process.
END
ENDarchi;
archi;
3) Les changements d’état des
signaux par les instructions du
Condition
Conditionde
de
rentrée
dans
rentrée danslele
process
process
Remarque : sauf les variables propres au process qui peuvent évoluer quand le
process est en cours d’exécution
F.CAIGNET
40
Les circuits logiques programmables - FPGA
IV.
IV.Instructions
Instructionsséquentielles
séquentielles
Le « Process » : Règles de fonctionnement d’un process
Condition
Conditionde
de
rentrée
dans
rentrée danslele
process
process
F.CAIGNET
41
Les circuits logiques programmables - FPGA
IV.
IV.Instructions
Instructionsséquentielles
séquentielles
Les instructions séquentielles
• Instruction conditionnelle: IF
If condition then
Instructions
elsif condition then instructions
else instructions
end if;
F.CAIGNET
42
Les circuits logiques programmables - FPGA
IV.
IV.Instructions
Instructionsséquentielles
séquentielles
Les instructions séquentielles
• Instruction selective: case
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;
Exemple :
F.CAIGNET
43
Les circuits logiques programmables - FPGA
IV.
IV.Instructions
Instructionsséquentielles
séquentielles
Les instructions séquentielles : structures de boucles
LOOP :
loop ………….end loop;
while condition loop
…………….;
end loop;
for……in 1 to ……. loop
…………….;
end loop;
LOOP inbriquées:
F.CAIGNET
Sorties
Sortiesde
deboucles
boucles::
NEXT
NEXT:: arrête
arrêtel'itération
l'itérationen
en
cours
coursde
deboucle
boucle
EXIT
permetde
desortir
sortir
EXIT:: permet
dd’une
’uneboucle
boucle
first_loop : loop
second_loop : loop
……do something…….
end loop second_loop;
end loop first_loop;
44
Les circuits logiques programmables - FPGA
IV.
IV.Instructions
Instructionsséquentielles
séquentielles
Les instructions séquentielles : structures WAIT
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;
F.CAIGNET
45
Les circuits logiques programmables - FPGA
IV.
IV.Instructions
Instructionsséquentielles
séquentielles
Exemple : Multiplexeur 4 vers 1
END
ENDmux4_2;
mux4_2;
c:c:IN
ININTERGER
INTERGERRANGE
RANGE00TO
TO3;3;
e:e:IN
INBIT_VECTOR(3
BIT_VECTOR(3DOWNTO
DOWNTO0);
0);
s:s:OUT
BIT);
OUT BIT);
Description concurrente :
Architecture
Architectureconcur
concurof
ofmux4_2
mux4_2IS
IS
begin
begin
With
Withccselect
select
s<=
s<= e0
e0when
when0;
0;
e1
e1when
when1;
1;
e2
e2when
when2;
2;
e3
when
3;
e3 when 3;
entrées
ENTITY
ENTITYmux4_2
mux4_2IS
IS
PORT(
PORT(
e0
e1
e2
e3
c1
s
sortie
c0
sélection
‘0’
‘0’when
whenothers;
others;
END
ENDconcur;
concur;
F.CAIGNET
46
Les circuits logiques programmables - FPGA
IV.
IV.Instructions
Instructionsséquentielles
séquentielles
Exemple : Multiplexeur 4 vers 1
ARCHITECTURE
ARCHITECTUREcond
condOF
OFmux4_2
mux4_2IS
IS
BEGIN
BEGIN
PROCESS
PROCESS(c)
(c)
BEGIN
BEGIN
IF
IF (c=0)
(c=0)THEN
THENs<=e(0);
s<=e(0);
ELSIF
ELSIF (c=1)
(c=1)THEN
THENs<=e(1);
s<=e(1);
ELSIF
ELSIF (c=2)
(c=2)THEN
THENs<=e(2);
s<=e(2);
ELSE
s<=e(3);
ELSE
s<=e(3);
END
ENDIF;
IF;
END
PROCESS;
END PROCESS;
END
ENDarchi1;
archi1;
F.CAIGNET
entrées
Description séquentielle conditionnelle :
e0
e1
e2
e3
c1
s
sortie
c0
sélection
47
Les circuits logiques programmables - FPGA
IV.
IV.Instructions
Instructionsséquentielles
séquentielles
Exemple : Multiplexeur 4 vers 1
ARCHITECTURE
ARCHITECTUREcond
condOF
OFmux4_2
mux4_2IS
IS
BEGIN
BEGIN
PROCESS
PROCESS(c)
(c)
BEGIN
BEGIN
CASE
CASEccIS
IS
WHEN
WHEN00=>
=> s<=e(0);
s<=e(0);
WHEN
WHEN11=>
=> s<=e(1);
s<=e(1);
WHEN
WHEN22=>
=> s<=e(2);
s<=e(2);
WHEN
WHEN33=>
=> s<=e(3);
s<=e(3);
END
CASE;
END CASE;
END
ENDPROCESS;
PROCESS;
END
ENDarchi1;
archi1;
F.CAIGNET
entrées
Description séquentielle sélective :
e0
e1
e2
e3
c1
s
sortie
c0
sélection
48
Les circuits logiques programmables - FPGA
IV.
IV.Instructions
Instructionsséquentielles
séquentielles
Exemple : Multiplexeur 4 vers 1
ARCHITECTURE
ARCHITECTUREcond
condOF
OFmux4_2
mux4_2IS
IS
BEGIN
BEGIN
PROCESS
PROCESS(c)
(c)
BEGIN
BEGIN
IF
IF(val='0')
(val='0')THEN
THENs<='0';
s<='0';
ELSE
ELSE
CASE
CASEccIS
IS
WHEN
0
=>
WHEN 0 => s<=e(0);
s<=e(0);
WHEN
WHEN11=>
=> s<=e(1);
s<=e(1);
WHEN
WHEN22=>
=> s<=e(2);
s<=e(2);
WHEN
3
=>
s<=e(3);
WHEN 3 => s<=e(3);
END
ENDCASE;
CASE;
END
ENDIF;
IF;
END
ENDPROCESS;
PROCESS;
END
archi1;
END archi1;
F.CAIGNET
entrées
Description séquentielle mixte :
e0
e1
e2
e3
c1
s
sortie
c0
sélection
49
Les circuits logiques programmables - FPGA
Références
Référenceset
etremerciements
remerciements
Je 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
F.CAIGNET
50
Téléchargement