0% ont trouvé ce document utile (0 vote)
143 vues38 pages

Cours VHDL FPGA

Ce document présente le plan d'un cours sur la synthèse FPGA et le langage VHDL. Il détaille les différents éléments du langage VHDL tels que les types de données, les signaux, les variables, les opérateurs, les assignations concurrentes et séquentielles ainsi que les composants et process.

Transféré par

All AhmeDcia
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
143 vues38 pages

Cours VHDL FPGA

Ce document présente le plan d'un cours sur la synthèse FPGA et le langage VHDL. Il détaille les différents éléments du langage VHDL tels que les types de données, les signaux, les variables, les opérateurs, les assignations concurrentes et séquentielles ainsi que les composants et process.

Transféré par

All AhmeDcia
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 38

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
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

z Le mode in protège le signal en écriture

z Le mode out protège le signal en lecture

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

z Types numériques : domaine de définition

range to downto

z Types composés : collections d’éléments de même type


repérés par des valeur d’indices

26
ETRS 511
Objets VHDL
Type

z Exemple de types prédéfinis :


z Bit
z Boolean
z Integer
z Std_logic dans la bibliothèque std_logic_1164
z Bit_vector, Std_logic_vector
z Signed, Unsigned dans la bibliothèque numeric_std
z Natural : sous type de integer limité aux nombres ≥ 0
z Positif : sous type de integer limité aux nombres > 0
z Character, string

27
ETRS 511
Objets VHDL
Type

z Std_logic :

28
ETRS 511
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

30
ETRS 511
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 « := »

33
ETRS 511
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))

34
ETRS 511
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
35
ETRS 511
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

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

Tracer les chronogrammes qui correspondent à la description


de ce process clk

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

z Les conditions sont sous-entendues exclusives

z Mémorisation implicite lorsque toutes les conditions ne sont pas


listées

52
ETRS 511
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

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;

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

55
ETRS 511
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


68
ETRS 511
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

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)

z Dans le fichier du circuit principal tutu, déclarer le


composant dans l’architecture avant le « begin »

70
ETRS 511
Composant
Mise en oeuvre
z Après le « begin » de l’architecture, instancier le
composant avec Port Map() (relier les fils)

Instanciation par position

Instanciation par nomination


71
ETRS 511
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)
78
ETRS 511
Machine à état
Exemple : détecteur de séquence
On représente une machine à état par un graphe d’état
Entrée ≠ ‘1’
P=0
E0

Entrée ≠ ‘2’ Entrée = ‘1’

E1 P=0 Entrée ≠ ‘3’


1=1
Entrée = ‘2’

P=0 E2

Entrée = ‘3’

E3 P=1

79
ETRS 511
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
82
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

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

91
ETRS 511
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

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

Vous aimerez peut-être aussi