Cours VHDL FPGA 2

Transcription

Cours VHDL FPGA 2
III. VHDL
ETRS 511
1
Plan gobal du cours
z
z
z
I. Introduction
II. FPGA
III. VHDL
z
z
z
z
z
z
z
z
z
z
Introduction
Règles d’écriture
Unités de conception - Objets VHDL - Opérateurs
Assignations concurrentes/séquentielles
Assignations conditionnelles/sélectives
Composant
Machine à états
Règles de conception
Simulation
Compléments (fonctions, procédures, packages, …)
ETRS 511
2
Introduction
Historique
z
1981 : le DoD (department of defence) initie le projet VHSIC
(Very High Speed Integrated Circuit) – IBM, TI, Intermetrix
¬ langage commun pour la description des circuits
z
1987 : normalisation du VHDL (VHSIC Hardware Description
Language)
par l’IEEE (Institute of Electrical and Electronic
Engineers)
z
La norme est révisée tous les 5 ans (P1076-87, P1076-93, P10762000, P1076-2002, P1076-2006)
z
Il existe aussi des normes correspondant à des groupes de travail
sur des extensions ou des restrictions pour des besoins spécifiques
(P1076.1, P1076.6-2004,…)
ETRS 511
3
Introduction
Pourquoi et où utilise-t-on le VHDL?
Flot de conception
ETRS 511
4
Introduction
Pourquoi et où utilise-t-on le VHDL?
Flot de conception
ETRS 511
5
Introduction
Qu’est ce que le VHDL?
z
Langage de modélisation et/ou de synthèse de systèmes
électroniques
z
Langage généraliste x simulation
z
Langage près des portes logiques x VHDL de synthèse
z
Système de CAO : Schéma ou VHDL ou mixte
ETRS 511
6
Introduction
Qu’est ce que le VHDL?
z
Langage normalisé, sensé être indépendant de tout
compilateur ou simulateur
z
Cible : CPLD, FPGA, ASIC
z
Conception de haut niveau d’abstraction (modification rapide
de la conception, réduction cycle, réduction risques, …)
z
Meilleur gestion de projet, développement de grosses
conception (structure hiérarchisée)
z
Adéquation entre le style d’écriture et les compilateurs :
résultats en terme de vitesse ou de compacité différents
ETRS 511
7
Plan gobal du cours
z
z
z
I. Introduction
II. FPGA
III. VHDL
z
z
z
z
z
z
z
z
z
z
Introduction
Règles d’écriture
Unités de conception - Objets VHDL - Opérateurs
Assignations concurrentes/séquentielles
Assignations conditionnelles/sélectives
Composant
Machine à états
Règles de conception
Simulation
Compléments (fonctions, procédures, packages, …)
ETRS 511
8
Règles d’écriture
z
VHDL 87 (obsolète), VHDL 93, VHDL 2000 (très peu de
changements)
z
La simulation comportementale est indépendante du style
d’écriture, du compilateur utilisé et de la cible ; pas la synthèse
z
Aucune distinction entre les minuscules et les majuscules
z
Commentaires : commencent par 2 tirets et se prolongent
jusqu’à la fin de la ligne. Ils sont ignorés par le compilateur
ETRS 511
9
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 « _ »
ETRS 511
10
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
ETRS 511
false
11
Mots réservés
http://amouf.chez.com/syntaxe.htm
ETRS 511
12
Plan gobal du cours
z
z
z
I. Introduction
II. FPGA
III. VHDL
z
z
z
z
z
z
z
z
z
z
Introduction
Règles d’écriture
Unités de conception - Objets VHDL - Opérateurs
Assignations concurrentes/séquentielles
Assignations conditionnelle/sélective
Composant
Machine à états
Règles de conception
Simulation
Compléments (fonctions, procédures, packages, …)
ETRS 511
13
Unités de conception
Structure d’un fichier VHDL
ETRS 511
14
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
z
Permet d’utiliser les opérateurs arthmétiques + et x sur des
vecteurs de bits
z
Fournit des fonctions de conversion entre entiers et vecteurs
ETRS 511
15
Unités de conception
Library
IEEE.numeric_std.all
ETRS 511
16
Unités de conception
Entity
z
Définition de l’entité : Vue externe d’un composant
z
Spécifications :
z
Ports d’entrée et de sortie
z
Type
z
Mode : - entrée (in)
- sortie (out)
- entrée/sortie (inout)
- sortie avec retour en interne (buffer)
Remarque : le nom d’un fichier VHDL doit être celui de l’entité qu’il contient
ETRS 511
17
Unités de conception
Entity
a
b
8
8
Comparateur
z
Le mode in protège le signal en écriture
z
Le mode out protège le signal en lecture
ETRS 511
egal
18
Unités de conception
Exercice
Ecrire l’entité d’un additionneur Add4 de deux mots, a et b,
de 4 bits en entrée, avec une retenue entrante ci, et une
sortie somme sur 4 bits avec une retenue sortante co.
a
b
ci
4
4
4
Add4
ETRS 511
somme
co
19
Unités de conception
Exercice
Ecrire l’entité correspondante au schéma de ce multiplexeur :
ETRS 511
20
Unités de conception
Exercice
Dessiner le schéma du composant correspondant à l’entité
suivante :
b
clk
raz
ETRS 511
parite
parite
21
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
ETRS 511
22
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
Remarque : l’instruction after n’est pas synthétisable !
ETRS 511
23
Objets VHDL
z
5 sortes d’objets
z
Les ports d’entrée/sortie (PORT)
z
Les signaux (SIGNAL)
z
Les constantes (CONSTANT)
z
Les variables (VARIABLE) - - cf partie assignation séquentielle
z
Les paramètres (GENERIC) - - cf partie compléments
z
Les objets représentent une valeur
z
Ils doivent être typés
ETRS 511
24
Objets VHDL
Type
z
Tout objet a un format prédéfini
z
Seules des valeurs de ce format peuvent être affectées à
cet objet
z
z
Plusieurs catégories de types
z
Types scalaires (numériques et énumérés)
z
Types composés (tableaux et vecteurs)
Possibilité de définir de nouveaux types
ETRS 511
25
Objets VHDL
Type
z
Types scalaires :
z
Types énumérés : liste de valeurs
z
Types numériques : domaine de définition
range
z
to
downto
Types composés : collections d’éléments de même type
repérés par des valeur d’indices
ETRS 511
26
Objets VHDL
Type
z
Exemple de types prédéfinis :
z
Bit
z
Boolean
z
Integer
z
Std_logic
z
Bit_vector, Std_logic_vector
z
Signed, Unsigned
z
Natural : sous type de integer limité aux nombres ≥ 0
z
Positif : sous type de integer limité aux nombres > 0
z
Character, string
ETRS 511
dans la bibliothèque std_logic_1164
dans la bibliothèque numeric_std
27
Objets VHDL
Type
z
Std_logic :
ETRS 511
28
Objet VHDL
Exercice Type
Définir un type pental composé de chiffres de 0 à 4
Définir un type énuméré etat composé des valeurs OK, HS,
ERROR
ETRS 511
29
Objets VHDL
Signal
z
Un signal représente une équipotentielle
z
Il doit être déclaré avant utilisation
z
Il peut être déclaré :
z
dans un package, il est alors global
z
dans une entity, il est alors commun à toutes les architectures de
l’entité
z
dans l’architecture, il est alors local
ETRS 511
30
Objets VHDL
Signal
z
L’affectation se fait avec l’opérateur « <= »
z
Accès à des sous-éléments avec l’opérateur alias
alias lsb : bit_vector(7 downto 0) is add_bus(7 downto 0) ;
z
Initialisation rapide
Toto <=(others => ‘0’); est équivalent à Toto <= "000000…0 ";
ETRS 511
31
Objets VHDL
Constant
z
z
Une constante doit être déclarée avant utilisation
Elle peut être déclarée :
z
z
z
z
dans un package, elle est alors globale
dans une entity, elle est alors commune à toutes les architectures
de l’entité
dans l’architecture, elle est alors locale
L’affectation se fait avec l’opérateur « := »
ETRS 511
32
Objets VHDL
Variable
z
Une variable doit être déclarée avant utilisation
z
Elle ne peut être déclarée que dans un « process »
z
L’affectation se fait avec l’opérateur « := »
ETRS 511
33
Opérateurs
z
Opérateurs logiques (sur booléens, bits et dérivés)
z
Opérateurs relationnels (sur types scalaires ou dérivés
(signed, unsigned))
ETRS 511
34
Opérateurs
z
Opérateurs bits (sur vecteurs de bits et types numériques)
z
Opérateurs arithmétiques (sur types numériques : entiers,
signés, non signés, flottant)
z
Opérateurs de décalage (sur tableaux de bits ou étendus) :
sll, srl, sla, sra, rol, ror
ETRS 511
35
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit une porte OU à 2 entrées a et b de
1 bit (sortie s)
ETRS 511
36
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
ETRS 511
37
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).
ETRS 511
38
Plan gobal du cours
z
z
z
I. Introduction
II. FPGA
III. VHDL
z
z
z
z
z
z
z
z
z
z
Introduction
Règles d’écriture
Unités de conception - Objets VHDL - Opérateurs
Assignations concurrentes/séquentielles
Assignations conditionnelles/sélectives
Composant
Machine à états
Règles de conception
Simulation
Compléments (fonctions, procédures, packages, …)
ETRS 511
39
Assignations
concurrentes/sequentielles
z
Instruction séquentielle : instruction à l’intérieur d’un
process
z
Instruction concurrente : instruction à l’extérieur des
process.
Rappel : les instructions se placent toujours uniquement
entre le begin et le end de l’architecture
ETRS 511
40
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
z
Appel d’une fonction
ETRS 511
cf. compléments
41
Assignations séquentielles
z
z
z
z
z
Ce mode concerne uniquement les function, procedure et
process
Les process manipulent les variable et signal
Au sein de ces descriptions, les déclarations sont exécutées de
manière séquentielle, l’une après l’autre
L’ordre des déclarations est donc important
Les déclarations possibles sont :
z
z
z
z
z
z
Assignation continue : <= (signal) et := (variable)
Assignation conditionnelle : if … then … elsif … then … else … end if;
Assignation sélective : case … is … when … => … when … => … end case;
Boucles : for … in … loop … end loop;
Boucles : while ... loop … end loop;
Instructions next et exit
ETRS 511
42
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
ETRS 511
43
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
ETRS 511
44
Process
Exemples
ETRS 511
45
Process
Exemples
ETRS 511
46
Process
Exercice
Décrire cette fonction en utilisant un process :
ETRS 511
47
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
ETRS 511
48
Process
Exercice
Tracer les chronogrammes qui correspondent à la description
de ce process
clk
t
a
t
b
t
c
t
var1
t
d
t
ETRS 511
49
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
ETRS 511
50
Plan gobal du cours
z
z
z
I. Introduction
II. FPGA
III. VHDL
z
z
z
z
z
z
z
z
z
z
Introduction
Règles d’écriture
Unités de conception - Objets VHDL - Opérateurs
Assignations concurrentes/séquentielles
Assignations conditionnelles/sélectives
Composant
Machine à états
Règles de conception
Simulation
Compléments (fonctions, procédures, packages, …)
ETRS 511
51
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
z
Les conditions sont sous-entendues exclusives
z
Mémorisation implicite lorsque toutes les conditions ne sont pas
listées
ETRS 511
52
Assignations conditionnelles
Assignation séquentielle
z
Forme générale :
If condition then … elsif conditions then…else … end if;
z
Mémorisation implicite lorsque toutes les conditions ne sont pas
listées
ETRS 511
53
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 « | »
ETRS 511
54
Assignations sélectives
Assignation séquentielle
z
Forme générale :
Case sélecteur is when val_selec => instructions; … end case;
z
Possibilité de regrouper des valeurs de sélection
z
Attention aux clauses incomplètes pouvant générer des latches
Utilisation de la clause when others
ETRS 511
55
Assignations sélectives
If versus case
ETRS 511
56
Assignations sélectives
If versus case
ETRS 511
57
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
ETRS 511
58
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.
ETRS 511
59
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
ETRS 511
60
Exercice
Assignation séquentielle
ETRS 511
61
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit un décodeur binaire / 7 segments
ETRS 511
62
Exercice
Assignation concurrente
ETRS 511
63
Exercice
Assignation séquentielle
ETRS 511
64
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;
ETRS 511
65
Exercice
Ecrire l’architecture d’un circuit qui inverse bit par bit un bus
data_in de 8 bits ( data_out = not (data_in) ).
ETRS 511
66
Plan gobal du cours
z
z
z
I. Introduction
II. FPGA
III. VHDL
z
z
z
z
z
z
z
z
z
z
Introduction
Règles d’écriture
Unités de conception - Objets VHDL - Opérateurs
Assignations concurrentes/séquentielles
Assignations conditionnelles/sélectives
Composant
Machine à états
Règles de conception
Simulation
Compléments (fonctions, procédures, packages, …)
ETRS 511
67
Composant
z
Description structurelle : comment est réalisée la fonction ?
z
Interconnexions entre des composants (component)
z
Chaque composant a une entité et une architecture propre
ETRS 511
68
Composant
z
3 façon de déclarer un composant :
z
Toutes les paires entity/architecture sont déclarées
dans le même fichier
z
La paire entity/architecture de chaque composant est
déclarée dans un fichier qui lui est propre
z
La structure du composant est déclarée dans une
bibliothèque via un package
ETRS 511
69
Composant
Mise en oeuvre
z
Ecrire l’entité et l’architecture du composant essai dans un
fichier enregistrer à son nom (essai.vhd)
z
Dans le fichier du circuit principal tutu, déclarer le
composant dans l’architecture avant le « begin »
ETRS 511
70
Composant
Mise en oeuvre
z
Après le « begin » de l’architecture, instancier le
composant avec Port Map() (relier les fils)
Instanciation par position
ETRS 511
Instanciation par nomination
71
Exercice
Ecrire l’architecture du circuit TopLevel, contenant 3
composants Riri, Fifi et Loulou dont les connexions sont
schématisées ci-dessous :
Clk
Datain_a
8
TopLevel
Riri
H
s
8
Loulou
e
busa
H
b
dout
Sortie
Fifi
Datain_b
Control
ETRS 511
H
a
b
c
72
Exercice
sig_interne2
ETRS 511
73
Composant
Duplication automatique
z
Syntaxe générale :
label : for indice in val_debut to val_fin generate … end generate label ;
ETRS 511
74
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)
ETRS 511
75
Plan gobal du cours
z
z
z
I. Introduction
II. FPGA
III. VHDL
z
z
z
z
z
z
z
z
z
z
Introduction
Règles d’écriture
Unités de conception - Objets VHDL - Opérateurs
Assignations concurrentes/séquentielles
Assignations conditionnelles/sélectives
Composant
Machine à états
Règles de conception
Simulation
Compléments (fonctions, procédures, packages, …)
ETRS 511
76
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
ETRS 511
77
Machine à état
Exemple : détecteur de séquence
La porte ne s’ouvre que si l’on tape la
séquence ‘1’ ‘2’ ‘3’
z
Etat 0 : le système attend un ‘1’ en entrée,
la porte est fermée (P=0)
z
Etat 1 : le système attend un ‘2’ en entrée,
la porte est fermée (P=0)
z
Etat 2 : le système attend un ‘3’ en entrée,
la porte est fermée (P=0)
z
Etat 3 : la bonne séquence a été entrée, la
porte est ouverte (P=1)
ETRS 511
78
Machine à état
Exemple : détecteur de séquence
On représente une machine à état par un graphe d’état
Entrée ≠ ‘1’
E0
Entrée ≠ ‘2’
P=0
Entrée = ‘1’
E1
1=1
P=0
Entrée ≠ ‘3’
Entrée = ‘2’
P=0
E2
Entrée = ‘3’
E3
ETRS 511
P=1
79
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
ETRS 511
Etat
1
2
s=1
s=0
Valeur de la (ou des) sortie(s)
80
Machine à état
Exercice
Dessiner le graph d’état d’une bascule D
D=0
D
Q=0
E0
Q
D=0
D=1
E1
Q=1
D=1
ETRS 511
81
Machine à état
Conception de circuits
z
Deux architectures courantes :
z
Des bascules enregistrent l’état courant
z
Des circuits combinatoires sont placés avant et après les
bascules pour déterminer l’état suivant et la valeur des
sorties
ETRS 511
82
Machine à état
Codage des états
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"
ETRS 511
83
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
ETRS 511
84
Description de FSM en VHDL
z
Entité
z
Architecture
Déclaration d’un nouveau type énuméré
contenant les noms des états
Déclaration d’un signal du
nouveau type juste déclaré
ETRS 511
85
Description de FSM en VHDL
Gestion des états
Gestion de la valeur de la
sortie
ETRS 511
86
Description de FSM en VHDL
Exemples
ETRS 511
87
Description de FSM en VHDL
Exemples
Etats en One-Hot-One
ETRS 511
88
Description de FSM en VHDL
Exemples : FSM à 2 process
Déclaration de deux
signaux d’état
ETRS 511
89
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
ETRS 511
90
Description de FSM en VHDL
Exemples : FSM à 2 process
Deuxième process qui décrit le passage
d’un état à un autre sur les fronts
montants d’horloge
Remarque : Description très proche de la machine de Moore
ETRS 511
91
Description de FSM en VHDL
z
Attention au problème de mémorisation implicite en
utilisant une syntaxe de type case, when, …
z
Si la valeur d’un signal n’est spécifiée que dans certains
cas, la synthèse produit des bascules non désirées pour
mémoriser la valeur du signal dans tous les autres cas.
z
Il faut donc affecter toutes les sorties dans toutes les
conditions
ETRS 511
92
Description de FSM en VHDL
Problème de l’état initial
z
En simulation, par défaut, la valeur de l’état initiale du
système est celle à gauche des états énumérés
type state is (etat0, etat1, etat2, etat3)
z
Après synthèse, l’état initial peut être n’importe quel état.
z
Il faut donc prévoir un reset pour forcer la machine à
démarrer dans le bon état
ETRS 511
93
Description de FSM en VHDL
Problème de l’état initial
z
Reset asynchrone
ETRS 511
94
Description de FSM en VHDL
Problème de l’état initial
z
Reset synchrone
ETRS 511
95
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.
D
z
Commencer par représenter le graphe d’état
z
Coder la machine en VHDL
t
S
t
ETRS 511
96
Exercice
D = ‘0’
D = ‘1’
E3
S=0
S=0
E0
D = ‘0’
D = ‘1’
D = ‘1’
D = ‘0’
E2
S=1
S=1
D = ‘1’
E1
D = ‘0’
ETRS 511
97
Exercice
ETRS 511
98
Plan gobal du cours
z
z
z
I. Introduction
II. FPGA
III. VHDL
z
z
z
z
z
z
z
z
z
z
Introduction
Règles d’écriture
Unités de conception - Objets VHDL - Opérateurs
Assignations concurrentes/séquentielles
Assignations conditionnelles/sélectives
Composant
Machine à états
Règles de conception
Simulation
Compléments (fonctions, procédures, packages, …)
ETRS 511
99
Règles de conception
Timing
ETRS 511
100
Règles de conception
Système combinatoire (asynchrone)
a0
a1
a2
a3
a4
Niveaux
logiques
z
b0
b1
b2
1
2
3
délai
Plus le nombre de niveaux logiques est grand, plus le
délai augmente
z
Mauvaise performance en temps
z
Difficile à mettre au point
z
Difficile de tester tous les cas possibles
ETRS 511
101
Règles de conception
Conception synchrone
ETRS 511
102
Règles de conception
Conception synchrone
z
Améliore des performances en vitesse
z
Simplifie de la vérification fonctionnelle
z
Autorise des analyses statiques du timing
z
Assure une parfaite testabilité
z
Correspond à l’architecture des composants
ETRS 511
103
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)
ETRS 511
104
Règles de conception
Exemple de synchronisation d’un signal reset (actif asynchrone
mais inactif de manière synchrone)
ETRS 511
105
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
ETRS 511
106
Plan gobal du cours
z
z
z
I. Introduction
II. FPGA
III. VHDL
z
z
z
z
z
z
z
z
z
z
Introduction
Règles d’écriture
Unités de conception - Objets VHDL - Opérateurs
Assignations concurrentes/séquentielles
Assignations conditionnelles/sélectives
Composant
Machine à états
Règles de conception
Simulation
Compléments (fonctions, procédures, packages, …)
ETRS 511
107
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?
ETRS 511
108
Simulation
z
Vérification automatique
z Très efficace
ETRS 511
109
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)
ETRS 511
110
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 ?
ETRS 511
111
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)
ETRS 511
112
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
ETRS 511
113
Simulation
Ecriture d’un testbench en vhdl
ETRS 511
114
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, … ;
z
Conditions temporelles (dans un process)
wait on liste_signal until condition for durée;
z
wait on : attente sur événement
z
wait until : attente de conditions
z
wait for : attente pour un certain temps
ETRS 511
115
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
ETRS 511
116
Simulation
Génération d’horloge
ETRS 511
117
Simulation
Génération d’horloge
ETRS 511
118
Simulation
Génération d’horloge
Autres possibilités :
ETRS 511
119
Simulation
Exercice
Ecrire le fichier vhdl permettant de simuler une porte ET ayant
deux entrées A et B et une sortie S. Les chronogrammes des
signaux A et B doivent suivre les chronogrammes suivants :
A
B
0
0
ETRS 511
30
80
50
t (ns)
100
120
t (ns)
120
Simulation
Exercice
ETRS 511
121
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
ETRS 511
122
Simulation
Assertions
ETRS 511
123
Simulation
Assertions
z
Il est possible d’afficher la valeur d’un signal ou d’une
constante type‘image(signal)
z
Attention, pas de fonction prévue pour le type
std_logic_vector
ETRS 511
124
Simulation
Exercice
Ecrire le fichier vhdl permettant de simuler une ALU qui peut
réaliser les opérations suivantes :
S = A si commande = 00
A
z
S = B si commande = 01
B
z
S = A + B si commande = 10
z
z
S = A – B si commande = 11
S
4
4
ALU
4
Commande
2
Lorsqu’une opération est réalisée, utiliser les assertions pour
faire apparaître un message d’erreur s’il y a une erreur de
calcul.
A la fin de la simulation, faire apparaître «Fin de simulation».
ETRS 511
125
Simulation
Exercice
ETRS 511
126
Simulation
Exercice
ETRS 511
127
Plan gobal du cours
z
z
z
I. Introduction
II. FPGA
III. VHDL
z
z
z
z
z
z
z
z
z
z
Introduction
Règles d’écriture
Unités de conception - Objets VHDL - Opérateurs
Assignations concurrentes/séquentielles
Assignations conditionnelles/sélectives
Composant
Machine à états
Règles de conception
Simulation
Compléments (fonctions, procédures, packages, …)
ETRS 511
128
Paramètres génériques
z
Permettent de paramétrer des composants
z
Se déclarent dans l’entity
z
On leur donner une valeur par défaut ( := )
z
L’instanciation se fait avec generic map (…)
ETRS 511
129
Paramètres génériques
a, b et c ont 4 bits
de largeur
a, b et c ont 8 bits de largeur (valeur par défaut)
ETRS 511
130
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
ETRS 511
131
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
z
Exemple : conversion de types
ETRS 511
132
Fonction
z
Syntaxe :
function nom (paramètre : type) return type is
Zone de déclaration
Begin
Zone d’instructions
return valeur;
end nom;
z
Exemple :
ETRS 511
133
Fonction
ETRS 511
134
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
z
Elle permet de réduire les lignes de code
ETRS 511
135
Procédure
z
Syntaxe :
Signal, variable ou constant
procedure nom (class paramètre : mode type) is
Zone de déclaration
Begin
in, out ou inout
Zone d’instructions
end nom;
z
Exemple :
ETRS 511
136
Procédure
Déclaration de la procédure cycle
ETRS 511
137
Procédure
Déclaration de la procédure verif
ETRS 511
138
Procédure
Utilisation de la procédure verif
ETRS 511
139
Package
z
Un package est une unité de compilation permettant
de regrouper constant, type, component, function et
procedure
z
Un package est compilé à part soit dans une
bibliothèque spécifique, soit dans la bibliothèque
courante work
Il doit être compilé avant les composants qui l’utilisent
z
use work.nom_package.all;
ETRS 511
library lib;
use lib. nom_package.all;
140
Package
Liste de ce qu’il y a
dans le package
Description de ce
que font les
fonctions ou les
procédures
ETRS 511
141

Documents pareils