Académique Documents
Professionnel Documents
Culture Documents
Cours VHDL FPGA 2 PDF
Cours VHDL FPGA 2 PDF
VHDL
ETRS 511 1
Plan gobal du cours
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, …)
2
ETRS 511
Introduction
Historique
4
ETRS 511
Introduction
Pourquoi et où utilise-t-on le VHDL?
Flot de conception
5
ETRS 511
Introduction
Qu’est ce que le VHDL?
6
ETRS 511
Introduction
Qu’est ce que le VHDL?
7
ETRS 511
Plan gobal du cours
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
9
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
Règles d’écriture
z Les valeurs explicites:
z Entier : 123 1_2_3
z Entier basé : base#valeur# 2#11# (Q3) 16#1F# (Q31)
z Valeurs physiques : toujours laisser un espace entre la valeur et l’unité
100 ps 2 ns 5V
z Caractère : entre apostrophe ‘a’ ‘@’
z Bit : entre apostrophe ‘0’ ‘1’ ‘Z’
z Chaîne de caractères : entre guillemets (attention là les minuscules et
majuscules sont significatives) "Bonjour "
z Bus : entre guillemets "01111001 "
z Booléen : true false
11
ETRS 511
Mots réservés
http://amouf.chez.com/syntaxe.htm
12
ETRS 511
Plan gobal du cours
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 conditionnelle/sélective
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)
13
ETRS 511
Unités de conception
Structure d’un fichier VHDL
14
ETRS 511
Unités de conception
Library
z IEEE.STD_LOGIC_1164.all
z Permet de définir les types, opérateurs et fonctions de conversion
de base
z IEEE.numeric_std.all
z Définit les types signed et unsigned. Un vecteur représente alors
un nombre signé ou non signé représenté en C2
IEEE.numeric_std.all
16
ETRS 511
Unités de conception
Entity
z Spécifications :
z Ports d’entrée et de sortie
z Type
- sortie (out)
- entrée/sortie (inout)
a 8
8 Comparateur egal
b
18
ETRS 511
Unités de conception
Exercice
a 4
4
4 somme
b Add4
co
ci
19
ETRS 511
Unités de conception
Exercice
20
ETRS 511
Unités de conception
Exercice
b
clk parite
parite
raz
21
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
Unités de conception
Architecture
z Il peut y avoir plusieurs architectures associées à un
même composant
2 architectures d’un
même composant
24
ETRS 511
Objets VHDL
Type
25
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
Objet VHDL
Exercice Type
29
ETRS 511
Objets VHDL
Signal
30
ETRS 511
Objets VHDL
Signal
z Initialisation rapide
Toto <=(others => ‘0’); est équivalent à Toto <= "000000…0 ";
31
ETRS 511
Objets VHDL
Constant
32
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)
36
ETRS 511
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit un additionneur ADD4 à 2 entrées de
4 bits A et B signées et une sortie S de 4 bits
37
ETRS 511
Exercice
Ecrire l’ensemble d’un fichier VHDL concat4to8.vhd (Library,
Entity, Architecture) permettant la concaténation de 2 bus de
4 bits A et B en un bus C de 8 bits (le bus A représente les
bits de poids fort).
38
ETRS 511
Plan gobal du cours
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, …)
39
ETRS 511
Assignations
concurrentes/sequentielles
z Instruction séquentielle : instruction à l’intérieur d’un
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
Exercice
47
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
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit un compteur COMPT qui compte sur
3 bits sur front montant du signal d’horloge clk
50
ETRS 511
Plan gobal du cours
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, …)
51
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
Assignations sélectives
If versus case
56
ETRS 511
Assignations sélectives
If versus case
57
ETRS 511
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit un compteur COMPT5 qui compte
sur 3 bits de 0 à 5 sur front montant du signal d’horloge clk
58
ETRS 511
Exercice
Modifier la description de l’exercice précédent pour que
lorsque l’entrée Load est à ‘1’ la sortie du compteur prenne
la valeur de l’entrée Data et compte à partir de cette valeur.
59
ETRS 511
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit un comparateur mettant la sortie
EGAL à ‘1’ lorsque les entrées A et B (bus de 8 bits) sont
égales et à ‘0’ sinon. Assignation concurrente
60
ETRS 511
Exercice
Assignation séquentielle
61
ETRS 511
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit un décodeur binaire / 7 segments
62
ETRS 511
Exercice
Assignation concurrente
63
ETRS 511
Exercice
Assignation séquentielle
64
ETRS 511
Boucles loop
z Instruction séquentielle
z Forme générale :
For i in val_deb to val_fin loop … end loop;
While condition loop… end loop;
65
ETRS 511
Exercice
Ecrire l’architecture d’un circuit qui inverse bit par bit un bus
data_in de 8 bits ( data_out = not (data_in) ).
66
ETRS 511
Plan gobal du cours
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, …)
67
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)
Riri TopLevel
Clk H s 8
8 Loulou
Datain_a e
busa Sortie
dout
H
b
Fifi
Datain_b H
c
a
Control b
72
ETRS 511
Exercice
sig_interne2
73
ETRS 511
Composant
Duplication automatique
z Syntaxe générale :
label : for indice in val_debut to val_fin generate … end generate label ;
74
ETRS 511
Composant
Duplication automatique
z Possibilité d’insérer des conditions dans la boucle
if condition then generate … end generate ; (pas de else ni de elsif)
75
ETRS 511
Plan gobal du cours
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, …)
76
ETRS 511
Machine à état
z FSM Finite State Machine
z Outil pour représenter un système séquentiel
z On définit différents états dans lesquels peut être le système
z Le passage d’un état à un autre s’effectue si une condition sur
les entrées est remplie
z Les sorties du système dépendent de l’état courant (machine
de Moore) ou de l’état courant et des entrées (machine de
Mealy)
z Dans le cas d’une FSM synchrone, la valeur des entrées est
analysée sur front d’horloge
77
ETRS 511
Machine à état
Exemple : détecteur de séquence
P=0 E2
Entrée = ‘3’
E3 P=1
79
ETRS 511
Machine à état
Graphe d’état
Définition :
z Un diagramme ou graphe d’états permet d’avoir une
représentation graphique d’un système séquentiel.
z Il est constitué par l’énumération de tous les états possible
du système.
z Un seul de ces états peut être actif à la fois.
z A chaque état est associé la valeur de la (ou des)
grandeur(s) de sortie.
Transition Etat
1 2
s=1 s=0
Valeur de la (ou des) sortie(s) 80
ETRS 511
Machine à état
Exercice
D=0
Q=0
D Q E0
D=0 D=1
E1 Q=1
D=1
81
ETRS 511
Machine à état
Conception de circuits
z Codage binaire
Le numéro de l’état est codé en binaire
état 0 = "00", état 1 = "01", état 2 = "10", état 3 = "11"
z One-Hot-One
Chaque état correspond à 1 bit d’un même bus
état 0 Q state = "0001", état 1 Q state = "0010",
état 2 Q state = "0100", état 3 Q state = "1000"
z One-Hot-Zero
Même principe que One-Hot-One mais l’état 0 se code "0000"
83
ETRS 511
Programmer un FPGA par FSM
z Avec le logiciel Quartus, on peut décrire une FSM
z en utilisant une architecture de Moore ou de Mealy que
l’ont fait soit même
z schématiquement, en rentrant directement le graphe
d’état
z en la décrivant en VHDL
84
ETRS 511
Description de FSM en VHDL
z Entité
85
ETRS 511
Description de FSM en VHDL
Gestion de la valeur de la
sortie
86
ETRS 511
Description de FSM en VHDL
Exemples
87
ETRS 511
Description de FSM en VHDL
Exemples
Etats en One-Hot-One
88
ETRS 511
Description de FSM en VHDL
Exemples : FSM à 2 process
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
92
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
Exercice
Ecrire l’architecture d’une machine à état avec un reset
synchrone qui décrit un diviseur de fréquence par 2. On
considère que la fréquence d’horloge est beaucoup plus
élevée que la fréquence du signal d’entrée D.
z Commencer par représenter le graphe d’état
z Coder la machine en VHDL
D
t
S
96
ETRS 511
Exercice
D = ‘1’ D = ‘0’
E3 S=0 E0
S=0
D = ‘0’
D = ‘1’
D = ‘1’
D = ‘0’ D = ‘1’
E2 S=1 S=1 E1
D = ‘0’
97
ETRS 511
Exercice
98
ETRS 511
Plan gobal du cours
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, …)
99
ETRS 511
Règles de conception
Timing
100
ETRS 511
Règles de conception
Système combinatoire (asynchrone)
a0 b0
a1
a2 b1
a3
a4 b2
Niveaux délai
1 2 3
logiques
102
ETRS 511
Règles de conception
Conception synchrone
103
ETRS 511
Règles de conception
Règles à suivre :
z 1 seule horloge
z Jamais de logique sur un signal d’horloge (utiliser enable)
z Si plusieurs domaines d’horloge, prévoir des FIFOs tampons
z Resynchroniser tous les signaux asynchrones pour éviter la
métastabilité (2 bascules D à la suite)
104
ETRS 511
Règles de conception
Exemple de synchronisation d’un signal reset (actif asynchrone
mais inactif de manière synchrone)
105
ETRS 511
Règles de conception
z Adopter une démarche qualité (dénomination,
hiérarchisation)
z Attention aux assignations incomplètes (mémorisation
implicite)
z Attention à l’utilisation des variables
z Penser à l’implantation (orienter le compilateur)
z Trouver le bon compromis entre ressources et vitesse en
choisissant le bon degré de parallélisme
106
ETRS 511
Plan gobal du cours
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, …)
107
ETRS 511
Simulation
Simulation pour valider tout ou une partie du design
z Vérification manuelle sur chronogrammes
z Fastidieux voir impossible si design complex
z Taux de couverture?
z Vérification automatique :
z Efficace
z Mais, validité du modèle comportemental?
z Vitesse?
108
ETRS 511
Simulation
z Vérification automatique
z Très efficace
109
ETRS 511
Simulation
Type de simulation
z Simulation fonctionnelle :
z Le programme simule un circuit idéal sans temps
de propagation
z Permet de vérifier que les fonctions sont réalisées
correctement
z Simulation temporelle :
z Prise en compte des délais de propagation
z Permet de vérifier que contraintes temporelles sont
respectées (vitesse d’horloge)
110
ETRS 511
Simulation
Ecriture d’un testbench
z Création graphique de chronogrammes
z Pour Quartus : fichier vector waveform .vwf
z Generate functionnal simulation netlist
z Lancement de la simulation
z Fastidieux, taux de couverture ?
111
ETRS 511
Simulation
Exercice
Tracer les chronogrammes de deux signaux en entrée
d’une porte ET pour tester son bon fonctionnement
A 00 01 11 10
t (ns)
B
t (ns)
112
ETRS 511
Simulation
Ecriture d’un testbench en vhdl
z Possibilité d’utiliser des ressources vhdl non synthétisables
z Composition du fichier
z Library
z Entity (vide)
z Architecture
z Déclaration du composant à tester
z Définition des signaux et constantes
z Description du chronogramme des signaux
z Mapping du composant
113
ETRS 511
Simulation
Ecriture d’un testbench en vhdl
114
ETRS 511
Simulation
Ecriture d’un testbench en vhdl
La durée s’exprime avec un type physique : fs, ps, ns, us,…
z Affectation d’un signal
Signal <= valeur after durée, valeur after durée, … ;
115
ETRS 511
Simulation
Ecriture d’un testbench en vhdl
z Utilisation d’attribut
z Signal’stable : vrai s’il n’y a pas d’événement pendant la
durée
z Signal’last_event : durée depuis le dernier événement
z Signal’last_value : avant dernière valeur
116
ETRS 511
Simulation
Génération d’horloge
117
ETRS 511
Simulation
Génération d’horloge
118
ETRS 511
Simulation
Génération d’horloge
Autres possibilités :
119
ETRS 511
Simulation
Exercice
t (ns)
0 30 80 100
B
t (ns)
0 50 120
120
ETRS 511
Simulation
Exercice
121
ETRS 511
Simulation
Assertions
z Permettent d’avoir des informations dynamiques sur la
simulation
assert test report message severity action
z Si le test est négatif, on affiche message avec arrêt ou
non de la simulation en fonction de action
now = temps de
simulation
122
ETRS 511
Simulation
Assertions
123
ETRS 511
Simulation
Assertions
z Il est possible d’afficher la valeur d’un signal ou d’une
constante type‘image(signal)
124
ETRS 511
Simulation
Exercice
125
ETRS 511
Simulation
Exercice
126
ETRS 511
Simulation
Exercice
127
ETRS 511
Plan gobal du cours
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, …)
128
ETRS 511
Paramètres génériques
129
ETRS 511
Paramètres génériques
a, b et c ont 4 bits
de largeur
130
ETRS 511
Sous-programmes
z Permettent de modulariser le code
z Permettent de regrouper des actions répétitives
z Permettent de réutiliser des fonctions
z Rendent les fichiers plus lisibles
z Permettent d’automatiser des actions (simulation)
z Fonction et procédure
131
ETRS 511
Fonction
z Les paramètres d’une fonction sont uniquement en
entrée
z Une fonction ne retourne qu’une seule valeur
z Elle a un type, celui de la valeur retournée
z Elle doit être déclarée dans un package, une entity ou
une architecture
133
ETRS 511
Fonction
134
ETRS 511
Procédure
z Les paramètres d’une procédure peuvent être en
entrée, en sortie ou les deux
z Une procédure peut retourner plusieurs valeurs
z Elle doit être déclarée dans un package, une entity ou
une architecture
136
ETRS 511
Procédure
Déclaration de la procédure cycle
137
ETRS 511
Procédure
Déclaration de la procédure verif
138
ETRS 511
Procédure
Utilisation de la procédure verif
139
ETRS 511
Package
z Un package est une unité de compilation permettant
de regrouper constant, type, component, function et
procedure
Liste de ce qu’il y a
dans le package
Description de ce
que font les
fonctions ou les
procédures
141
ETRS 511