Cours VHDL FPGA
Cours VHDL FPGA
z I. Introduction
z II. FPGA
z III. VHDL
z Introduction
z Règles d’écriture
z Unités de conception - Objets VHDL - Opérateurs
z Assignations concurrentes/séquentielles
z Assignations conditionnelles/sélectives
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)
8
ETRS 511
Règles d’écriture
z En général, les instructions se terminent par « ; »
z Règles de dénomination :
z 26 lettres de l’alphabet, les 10 chiffres et ‘_’
z Le premier caractère est une lettre
z Il ne peut y avoir 2 « _ » de suite
z L’identifieur ne peut se terminer par « _ »
10
ETRS 511
Unités de conception
Structure d’un fichier VHDL
14
ETRS 511
Unités de conception
Entity
a 8
8 Comparateur egal
b
18
ETRS 511
Unités de conception
Architecture
z Toute architecture est associée à une entité
z Définition : L’architecture définit les fonctionnalités et les
relations temporelles. Elle décrit le comportement du
composant.
Zone de déclaration
Zone de définition
22
ETRS 511
Objets VHDL
Type
z Types scalaires :
z Types énumérés : liste de valeurs
range to downto
26
ETRS 511
Objets VHDL
Type
27
ETRS 511
Objets VHDL
Type
z Std_logic :
28
ETRS 511
Objets VHDL
Signal
30
ETRS 511
Objets VHDL
Variable
33
ETRS 511
Opérateurs
z Opérateurs logiques (sur booléens, bits et dérivés)
34
ETRS 511
Opérateurs
z Opérateurs bits (sur vecteurs de bits et types numériques)
process
process.
40
ETRS 511
Assignations concurrentes
z Toutes les déclarations sont exécutées simultanément et
en permanence
z L’ordre des déclarations dans le code source n’a pas
d’influence
z Les déclarations possibles sont :
z Assignation continue : <=
z Instantiation d’un composant : port map
z Assignation conditionnelle : when … else
z Assignation sélective : with … select … when … when
z Appel d’un process
z Instruction generate
cf. compléments
z Appel d’une fonction
41
ETRS 511
Assignations séquentielles
z Ce mode concerne uniquement les function, procedure et
process
z Les process manipulent les variable et signal
z Au sein de ces descriptions, les déclarations sont exécutées de
manière séquentielle, l’une après l’autre
z L’ordre des déclarations est donc important
z Les déclarations possibles sont :
z Assignation continue : <= (signal) et := (variable)
z Assignation conditionnelle : if … then … elsif … then … else … end if;
z Assignation sélective : case … is … when … => … when … => … end case;
z Boucles : for … in … loop … end loop;
z Boucles : while ... loop … end loop;
z Instructions next et exit
42
ETRS 511
Process
z Dans un process, l’interprétation des instructions est
séquentielle mais l’ensemble de leur réalisation est instantanée
(le temps extérieur est suspendu)
z Les signaux sont assignés en sortie du process
z Les variables sont assignée immédiatement
z Les variables ne sont pas visibles de l’extérieur
43
ETRS 511
Process
z Lors d’affectations multiples, c’est la dernière qui est prise en
compte
z Un process n’est activé que lorsque les signaux de sa liste de
sensibilité ont subi un changement
z Absence de liste de sensibilité : le process est réactivé en
permanence
z Tous les process d’un design fonctionnent de manière
concurrente
44
ETRS 511
Process
Exemples
45
ETRS 511
Process
Exemples
46
ETRS 511
Process
z Mise en œuvre de process synchronisé sur l’horloge
z If clk’event and clk=‘1’ then ou if rising_edge(clk)
z If clk’event and clk=‘0’ then ou if falling_edge(clk)
z Absence de liste de sensibilité et wait until (clk=‘1’) placé en tête de la
partie déclarative du process
48
ETRS 511
Process
Exercice
t
a
t
b
t
c
t
var1
t
d
t
49
ETRS 511
Assignations conditionnelles
Assignation concurrente
z Forme générale :
signal <= valeur when condition else autrevaleur when autrecondition …;
z Une seule cible peut être assignée
52
ETRS 511
Assignations conditionnelles
Assignation séquentielle
z Forme générale :
If condition then … elsif conditions then…else … end if;
53
ETRS 511
Assignations sélectives
Assignation concurrente
z Forme générale :
With sélecteur select signal <= valeur when val_sel, valeur when val_sel2 …;
z Clause when others qui permet de préciser tous les cas non
définis
z Possibilité de regrouper plusieurs valeurs du sélecteur pour une
même assignation « | »
54
ETRS 511
Assignations sélectives
Assignation séquentielle
z Forme générale :
Case sélecteur is when val_selec => instructions; … end case;
55
ETRS 511
Composant
z Description structurelle : comment est réalisée la fonction ?
z Interconnexions entre des composants (component)
69
ETRS 511
Composant
Mise en oeuvre
z Ecrire l’entité et l’architecture du composant essai dans un
fichier enregistrer à son nom (essai.vhd)
70
ETRS 511
Composant
Mise en oeuvre
z Après le « begin » de l’architecture, instancier le
composant avec Port Map() (relier les fils)
P=0 E2
Entrée = ‘3’
E3 P=1
79
ETRS 511
Machine à état
Conception de circuits
Déclaration de deux
signaux d’état
89
ETRS 511
Description de FSM en VHDL
Exemples : FSM à 2 process
Premier process pour définir l’état
suivant et les valeurs de sortie en
fonction de l’état courant
90
ETRS 511
Description de FSM en VHDL
Exemples : FSM à 2 process
91
ETRS 511
Description de FSM en VHDL
Problème de l’état initial
93
ETRS 511
Description de FSM en VHDL
Problème de l’état initial
z Reset asynchrone
94
ETRS 511
Description de FSM en VHDL
Problème de l’état initial
z Reset synchrone
95
ETRS 511