Download - Cours Vhdl Fpga 2
![Page 1: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/1.jpg)
1ETRS 511
III. VHDL
![Page 2: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/2.jpg)
2ETRS 511
Plan gobal du coursI. IntroductionII. FPGAIII. VHDL
IntroductionRègles d’écritureUnités de conception - Objets VHDL - OpérateursAssignations concurrentes/séquentiellesAssignations conditionnelles/sélectivesComposantMachine à étatsRègles de conceptionSimulationCompléments (fonctions, procédures, packages, …)
![Page 3: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/3.jpg)
3ETRS 511
IntroductionHistorique
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
1987 : normalisation du VHDL (VHSIC Hardware Description
Language) par l’IEEE (Institute of Electrical and ElectronicEngineers)
La norme est révisée tous les 5 ans (P1076-87, P1076-93, P1076-2000, P1076-2002, P1076-2006)
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,…)
![Page 4: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/4.jpg)
4ETRS 511
IntroductionPourquoi et où utilise-t-on le VHDL?
Flot de conception
![Page 5: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/5.jpg)
5ETRS 511
IntroductionPourquoi et où utilise-t-on le VHDL?
Flot de conception
![Page 6: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/6.jpg)
6ETRS 511
IntroductionQu’est ce que le VHDL?
Langage de modélisation et/ou de synthèse de systèmes
électroniques
Langage généraliste simulation
Langage près des portes logiques VHDL de synthèse
Système de CAO : Schéma ou VHDL ou mixte
![Page 7: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/7.jpg)
7ETRS 511
IntroductionQu’est ce que le VHDL?
Langage normalisé, sensé être indépendant de tout compilateur ou simulateur
Cible : CPLD, FPGA, ASIC
Conception de haut niveau d’abstraction (modification rapide de la conception, réduction cycle, réduction risques, …)
Meilleur gestion de projet, développement de grosses conception (structure hiérarchisée)
Adéquation entre le style d’écriture et les compilateurs :résultats en terme de vitesse ou de compacité différents
![Page 8: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/8.jpg)
8ETRS 511
Plan gobal du coursI. IntroductionII. FPGAIII. VHDL
IntroductionRègles d’écritureUnités de conception - Objets VHDL - OpérateursAssignations concurrentes/séquentiellesAssignations conditionnelles/sélectivesComposantMachine à étatsRègles de conceptionSimulationCompléments (fonctions, procédures, packages, …)
![Page 9: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/9.jpg)
9ETRS 511
Règles d’écriture
VHDL 87 (obsolète), VHDL 93, VHDL 2000 (très peu de changements)
La simulation comportementale est indépendante du style d’écriture, du compilateur utilisé et de la cible ; pas la synthèse
Aucune distinction entre les minuscules et les majuscules
Commentaires : commencent par 2 tirets et se prolongent jusqu’à la fin de la ligne. Ils sont ignorés par le compilateur
![Page 10: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/10.jpg)
10ETRS 511
Règles d’écriture
En général, les instructions se terminent par « ; »
Règles de dénomination :26 lettres de l’alphabet, les 10 chiffres et ‘_’
Le premier caractère est une lettre
Il ne peut y avoir 2 « _ » de suite
L’identifieur ne peut se terminer par « _ »
![Page 11: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/11.jpg)
11ETRS 511
Règles d’écriture
Les valeurs explicites:Entier : 123 1_2_3
Entier basé : base#valeur# 2#11# ( 3) 16#1F# ( 31)
Valeurs physiques : toujours laisser un espace entre la valeur et l’unité100 ps 2 ns 5 V
Caractère : entre apostrophe ‘a’ ‘@’
Bit : entre apostrophe ‘0’ ‘1’ ‘Z’
Chaîne de caractères : entre guillemets (attention là les minuscules et majuscules sont significatives) "Bonjour "
Bus : entre guillemets "01111001 "
Booléen : true false
![Page 12: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/12.jpg)
12ETRS 511
Mots réservés
http://amouf.chez.com/syntaxe.htm
![Page 13: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/13.jpg)
13ETRS 511
Plan gobal du coursI. IntroductionII. FPGAIII. VHDL
IntroductionRègles d’écritureUnités de conception - Objets VHDL - OpérateursAssignations concurrentes/séquentiellesAssignations conditionnelle/sélectiveComposantMachine à étatsRègles de conceptionSimulationCompléments (fonctions, procédures, packages, …)
![Page 14: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/14.jpg)
14ETRS 511
Unités de conceptionStructure d’un fichier VHDL
![Page 15: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/15.jpg)
15ETRS 511
Unités de conceptionLibrary
IEEE.STD_LOGIC_1164.all
Permet de définir les types, opérateurs et fonctions de conversion
de base
IEEE.numeric_std.all
Définit les types signed et unsigned. Un vecteur représente alors
un nombre signé ou non signé représenté en C2
Permet d’utiliser les opérateurs arthmétiques + et x sur des
vecteurs de bits
Fournit des fonctions de conversion entre entiers et vecteurs
![Page 16: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/16.jpg)
16ETRS 511
Unités de conceptionLibrary
IEEE.numeric_std.all
![Page 17: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/17.jpg)
17ETRS 511
Définition de l’entité : Vue externe d’un composant
Spécifications :
Ports d’entrée et de sortie
Type
Mode : - entrée (in)
- sortie (out)
- entrée/sortie (inout)
- sortie avec retour en interne (buffer)
Unités de conceptionEntity
Remarque : le nom d’un fichier VHDL doit être celui de l’entité qu’il contient
![Page 18: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/18.jpg)
18ETRS 511
Unités de conceptionEntity
Comparateura
begal
8
8
Le mode in protège le signal en écriture
Le mode out protège le signal en lecture
![Page 19: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/19.jpg)
19ETRS 511
Unités de conceptionExercice
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.
Add4a
bsomme
44
coci
4
![Page 20: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/20.jpg)
20ETRS 511
Unités de conceptionExercice
Ecrire l’entité correspondante au schéma de ce multiplexeur :
![Page 21: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/21.jpg)
21ETRS 511
Unités de conceptionExercice
Dessiner le schéma du composant correspondant à l’entitésuivante :
pariteclkb
parite
raz
![Page 22: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/22.jpg)
22ETRS 511
Unités de conceptionArchitecture
Toute architecture est associée à une entité
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
![Page 23: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/23.jpg)
23ETRS 511
Unités de conceptionArchitecture
Il peut y avoir plusieurs architectures associées à un même composant
Remarque : l’instruction after n’est pas synthétisable !
2 architectures d’un même composant
![Page 24: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/24.jpg)
24ETRS 511
Objets VHDL
5 sortes d’objetsLes ports d’entrée/sortie (PORT)
Les signaux (SIGNAL)
Les constantes (CONSTANT)
Les variables (VARIABLE) - - cf partie assignation séquentielle
Les paramètres (GENERIC) - - cf partie compléments
Les objets représentent une valeur
Ils doivent être typés
![Page 25: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/25.jpg)
25ETRS 511
Objets VHDLType
Tout objet a un format prédéfini
Seules des valeurs de ce format peuvent être affectées àcet objet
Plusieurs catégories de typesTypes scalaires (numériques et énumérés)
Types composés (tableaux et vecteurs)
Possibilité de définir de nouveaux types
![Page 26: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/26.jpg)
26ETRS 511
Objets VHDLType
Types scalaires :
Types énumérés : liste de valeurs
Types numériques : domaine de définition
range to downto
Types composés : collections d’éléments de même type
repérés par des valeur d’indices
![Page 27: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/27.jpg)
27ETRS 511
Objets VHDLType
Exemple de types prédéfinis :Bit
Boolean
Integer
Std_logic dans la bibliothèque std_logic_1164
Bit_vector, Std_logic_vector
Signed, Unsigned dans la bibliothèque numeric_std
Natural : sous type de integer limité aux nombres ≥ 0
Positif : sous type de integer limité aux nombres > 0
Character, string
![Page 28: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/28.jpg)
28ETRS 511
Objets VHDLType
Std_logic :
![Page 29: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/29.jpg)
29ETRS 511
Objet VHDLExercice 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
![Page 30: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/30.jpg)
30ETRS 511
Objets VHDLSignal
Un signal représente une équipotentielleIl doit être déclaré avant utilisationIl peut être déclaré :
dans un package, il est alors globaldans une entity, il est alors commun à toutes les architectures de l’entitédans l’architecture, il est alors local
![Page 31: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/31.jpg)
31ETRS 511
Objets VHDLSignal
L’affectation se fait avec l’opérateur « <= »
Accès à des sous-éléments avec l’opérateur alias
alias lsb : bit_vector(7 downto 0) is add_bus(7 downto 0) ;
Initialisation rapide
Toto <=(others => ‘0’); est équivalent à Toto <= "000000…0 ";
![Page 32: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/32.jpg)
32ETRS 511
Objets VHDLConstant
Une constante doit être déclarée avant utilisationElle peut être déclarée :
dans un package, elle est alors globaledans 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 « := »
![Page 33: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/33.jpg)
33ETRS 511
Objets VHDLVariable
Une variable doit être déclarée avant utilisation
Elle ne peut être déclarée que dans un « process »
L’affectation se fait avec l’opérateur « := »
![Page 34: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/34.jpg)
34ETRS 511
OpérateursOpérateurs logiques (sur booléens, bits et dérivés)
Opérateurs relationnels (sur types scalaires ou dérivés (signed, unsigned))
![Page 35: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/35.jpg)
35ETRS 511
OpérateursOpérateurs bits (sur vecteurs de bits et types numériques)
Opérateurs arithmétiques (sur types numériques : entiers, signés, non signés, flottant)
Opérateurs de décalage (sur tableaux de bits ou étendus) :sll, srl, sla, sra, rol, ror
![Page 36: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/36.jpg)
36ETRS 511
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)
![Page 37: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/37.jpg)
37ETRS 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
![Page 38: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/38.jpg)
38ETRS 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).
![Page 39: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/39.jpg)
39ETRS 511
Plan gobal du coursI. IntroductionII. FPGAIII. VHDL
IntroductionRègles d’écritureUnités de conception - Objets VHDL - OpérateursAssignations concurrentes/séquentiellesAssignations conditionnelles/sélectivesComposantMachine à étatsRègles de conceptionSimulationCompléments (fonctions, procédures, packages, …)
![Page 40: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/40.jpg)
40ETRS 511
Assignations concurrentes/sequentielles
Instruction séquentielle : instruction à l’intérieur d’un
process
Instruction concurrente : instruction à l’extérieur des
process.
Rappel : les instructions se placent toujours uniquement
entre le begin et le end de l’architecture
![Page 41: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/41.jpg)
41ETRS 511
Assignations concurrentesToutes les déclarations sont exécutées simultanément et en permanenceL’ordre des déclarations dans le code source n’a pas d’influenceLes déclarations possibles sont :
Assignation continue : <=Instantiation d’un composant : port mapAssignation conditionnelle : when … elseAssignation sélective : with … select … when … whenAppel d’un processInstruction generateAppel d’une fonction cf. compléments
![Page 42: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/42.jpg)
42ETRS 511
Assignations séquentiellesCe mode concerne uniquement les function, procedure et processLes process manipulent les variable et signalAu sein de ces descriptions, les déclarations sont exécutées de manière séquentielle, l’une après l’autreL’ordre des déclarations est donc importantLes déclarations possibles sont :
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
![Page 43: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/43.jpg)
43ETRS 511
Process
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)
Les signaux sont assignés en sortie du process
Les variables sont assignée immédiatement
Les variables ne sont pas visibles de l’extérieur
![Page 44: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/44.jpg)
44ETRS 511
Process
Lors d’affectations multiples, c’est la dernière qui est prise en compteUn process n’est activé que lorsque les signaux de sa liste de sensibilité ont subi un changementAbsence de liste de sensibilité : le process est réactivé en permanenceTous les process d’un design fonctionnent de manière concurrente
![Page 45: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/45.jpg)
45ETRS 511
ProcessExemples
![Page 46: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/46.jpg)
46ETRS 511
ProcessExemples
![Page 47: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/47.jpg)
47ETRS 511
ProcessExercice
Décrire cette fonction en utilisant un process :
![Page 48: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/48.jpg)
48ETRS 511
Process
Mise en œuvre de process synchronisé sur l’horlogeIf clk’event and clk=‘1’ then ou if rising_edge(clk)
If clk’event and clk=‘0’ then ou if falling_edge(clk)
Absence de liste de sensibilité et wait until (clk=‘1’) placé en tête de la
partie déclarative du process
![Page 49: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/49.jpg)
49ETRS 511
ProcessExercice
Tracer les chronogrammes qui correspondent à la description de ce process
t
t
t
t
t
t
clk
a
b
c
var1
d
![Page 50: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/50.jpg)
50ETRS 511
ExerciceEcrire 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
![Page 51: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/51.jpg)
51ETRS 511
Plan gobal du coursI. IntroductionII. FPGAIII. VHDL
IntroductionRègles d’écritureUnités de conception - Objets VHDL - OpérateursAssignations concurrentes/séquentiellesAssignations conditionnelles/sélectivesComposantMachine à étatsRègles de conceptionSimulationCompléments (fonctions, procédures, packages, …)
![Page 52: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/52.jpg)
52ETRS 511
Assignations conditionnellesAssignation concurrente
Forme générale : signal <= valeur when condition else autrevaleur when autrecondition …;
Une seule cible peut être assignée
Les conditions sont sous-entendues exclusives
Mémorisation implicite lorsque toutes les conditions ne sont pas listées
![Page 53: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/53.jpg)
53ETRS 511
Assignations conditionnellesAssignation séquentielle
Forme générale : If condition then … elsif conditions then…else … end if;
Mémorisation implicite lorsque toutes les conditions ne sont pas listées
![Page 54: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/54.jpg)
54ETRS 511
Assignations sélectivesAssignation concurrente
Forme générale : With sélecteur select signal <= valeur when val_sel, valeur when val_sel2 …;
Clause when others qui permet de préciser tous les cas non définis
Possibilité de regrouper plusieurs valeurs du sélecteur pour une même assignation « | »
![Page 55: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/55.jpg)
55ETRS 511
Assignations sélectivesAssignation séquentielle
Forme générale : Case sélecteur is when val_selec => instructions; … end case;
Possibilité de regrouper des valeurs de sélection
Attention aux clauses incomplètes pouvant générer des latches
Utilisation de la clause when others
![Page 56: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/56.jpg)
56ETRS 511
Assignations sélectivesIf versus case
![Page 57: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/57.jpg)
57ETRS 511
Assignations sélectivesIf versus case
![Page 58: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/58.jpg)
58ETRS 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
![Page 59: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/59.jpg)
59ETRS 511
ExerciceModifier 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.
![Page 60: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/60.jpg)
60ETRS 511
ExerciceEcrire 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
![Page 61: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/61.jpg)
61ETRS 511
Exercice
Assignation séquentielle
![Page 62: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/62.jpg)
62ETRS 511
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity, Architecture) qui décrit un décodeur binaire / 7 segments
![Page 63: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/63.jpg)
63ETRS 511
ExerciceAssignation concurrente
![Page 64: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/64.jpg)
64ETRS 511
Assignation séquentielle
Exercice
![Page 65: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/65.jpg)
65ETRS 511
Boucles loop
Instruction séquentielle
Forme générale : For i in val_deb to val_fin loop … end loop;
While condition loop… end loop;
![Page 66: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/66.jpg)
66ETRS 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) ).
![Page 67: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/67.jpg)
67ETRS 511
Plan gobal du coursI. IntroductionII. FPGAIII. VHDL
IntroductionRègles d’écritureUnités de conception - Objets VHDL - OpérateursAssignations concurrentes/séquentiellesAssignations conditionnelles/sélectivesComposantMachine à étatsRègles de conceptionSimulationCompléments (fonctions, procédures, packages, …)
![Page 68: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/68.jpg)
68ETRS 511
ComposantDescription structurelle : comment est réalisée la fonction ?
Interconnexions entre des composants (component)
Chaque composant a une entité et une architecture propre
![Page 69: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/69.jpg)
69ETRS 511
Composant
3 façon de déclarer un composant :
Toutes les paires entity/architecture sont déclarées
dans le même fichier
La paire entity/architecture de chaque composant est
déclarée dans un fichier qui lui est propre
La structure du composant est déclarée dans une
bibliothèque via un package
![Page 70: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/70.jpg)
70ETRS 511
ComposantMise en oeuvre
Ecrire l’entité et l’architecture du composant essai dans un
fichier enregistrer à son nom (essai.vhd)
Dans le fichier du circuit principal tutu, déclarer le
composant dans l’architecture avant le « begin »
![Page 71: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/71.jpg)
71ETRS 511
ComposantMise en oeuvre
Après le « begin » de l’architecture, instancier le composant avec Port Map() (relier les fils)
Instanciation par position
Instanciation par nomination
![Page 72: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/72.jpg)
72ETRS 511
Exercice
Ecrire l’architecture du circuit TopLevel, contenant 3 composants Riri, Fifi et Loulou dont les connexions sont schématisées ci-dessous :
TopLevelRiri
Fifi
Loulou
Clk
Datain_a
Datain_b
Control
Sortie
H
e
s8
8
H
H
ab
c
bdoutbusa
![Page 73: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/73.jpg)
73ETRS 511
Exercice
sig_interne2
![Page 74: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/74.jpg)
74ETRS 511
ComposantDuplication automatique
Syntaxe générale :label : for indice in val_debut to val_fin generate … end generate label ;
![Page 75: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/75.jpg)
75ETRS 511
ComposantDuplication automatique
Possibilité d’insérer des conditions dans la boucleif condition then generate … end generate ; (pas de else ni de elsif)
![Page 76: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/76.jpg)
76ETRS 511
Plan gobal du coursI. IntroductionII. FPGAIII. VHDL
IntroductionRègles d’écritureUnités de conception - Objets VHDL - OpérateursAssignations concurrentes/séquentiellesAssignations conditionnelles/sélectivesComposantMachine à étatsRègles de conceptionSimulationCompléments (fonctions, procédures, packages, …)
![Page 77: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/77.jpg)
77ETRS 511
Machine à étatFSM Finite State Machine
Outil pour représenter un système séquentiel
On définit différents états dans lesquels peut être le système
Le passage d’un état à un autre s’effectue si une condition sur les entrées est remplie
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)
Dans le cas d’une FSM synchrone, la valeur des entrées est analysée sur front d’horloge
![Page 78: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/78.jpg)
78ETRS 511
Machine à étatExemple : détecteur de séquence
La porte ne s’ouvre que si l’on tape la séquence ‘1’ ‘2’ ‘3’
Etat 0 : le système attend un ‘1’ en entrée, la porte est fermée (P=0)
Etat 1 : le système attend un ‘2’ en entrée, la porte est fermée (P=0)
Etat 2 : le système attend un ‘3’ en entrée, la porte est fermée (P=0)
Etat 3 : la bonne séquence a été entrée, la porte est ouverte (P=1)
![Page 79: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/79.jpg)
79ETRS 511
Machine à étatExemple : détecteur de séquence
On représente une machine à état par un graphe d’état
E0
E1
E2
E3
Entrée ≠ ‘1’
Entrée = ‘1’
Entrée = ‘2’
Entrée = ‘3’
Entrée ≠ ‘2’
Entrée ≠ ‘3’
1=1
P=0
P=0
P=0
P=1
![Page 80: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/80.jpg)
80ETRS 511
Machine à étatGraphe d’état
Définition :Un diagramme ou graphe d’états permet d’avoir une représentation graphique d’un système séquentiel.Il est constitué par l’énumération de tous les états possible du système.Un seul de ces états peut être actif à la fois. A chaque état est associé la valeur de la (ou des) grandeur(s) de sortie.
1 2s=1 s=0
Transition Etat
Valeur de la (ou des) sortie(s)
![Page 81: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/81.jpg)
81ETRS 511
Machine à étatExercice
Dessiner le graph d’état d’une bascule D
E0
E1
D = 0
D = 1
Q = 0
Q = 1
D = 1
D = 0
D Q
![Page 82: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/82.jpg)
82ETRS 511
Machine à étatConception de circuits
Deux architectures courantes :
Des bascules enregistrent l’état courant
Des circuits combinatoires sont placés avant et après les bascules pour déterminer l’état suivant et la valeur des sorties
![Page 83: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/83.jpg)
83ETRS 511
Machine à étatCodage des états
Codage binaire
Le numéro de l’état est codé en binaire
état 0 = "00", état 1 = "01", état 2 = "10", état 3 = "11"
One-Hot-One
Chaque état correspond à 1 bit d’un même bus
état 0 state = "0001", état 1 state = "0010",
état 2 state = "0100", état 3 state = "1000"
One-Hot-Zero
Même principe que One-Hot-One mais l’état 0 se code "0000"
![Page 84: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/84.jpg)
84ETRS 511
Programmer un FPGA par FSM
Avec le logiciel Quartus, on peut décrire une FSM
en utilisant une architecture de Moore ou de Mealy que l’ont fait soit même
schématiquement, en rentrant directement le graphe d’état
en la décrivant en VHDL
![Page 85: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/85.jpg)
85ETRS 511
Description de FSM en VHDL
Entité
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é
![Page 86: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/86.jpg)
86ETRS 511
Description de FSM en VHDL
Gestion de la valeur de la sortie
Gestion des états
![Page 87: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/87.jpg)
87ETRS 511
Description de FSM en VHDLExemples
![Page 88: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/88.jpg)
88ETRS 511
Description de FSM en VHDLExemples
Etats en One-Hot-One
![Page 89: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/89.jpg)
89ETRS 511
Description de FSM en VHDLExemples : FSM à 2 process
Déclaration de deux signaux d’état
![Page 90: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/90.jpg)
90ETRS 511
Description de FSM en VHDLExemples : FSM à 2 process
Premier process pour définir l’état suivant et les valeurs de sortie en
fonction de l’état courant
![Page 91: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/91.jpg)
91ETRS 511
Description de FSM en VHDLExemples : 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
![Page 92: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/92.jpg)
92ETRS 511
Description de FSM en VHDL
Attention au problème de mémorisation implicite en
utilisant une syntaxe de type case, when, …
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.
Il faut donc affecter toutes les sorties dans toutes les
conditions
![Page 93: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/93.jpg)
93ETRS 511
Description de FSM en VHDLProblème de l’état initial
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)
Après synthèse, l’état initial peut être n’importe quel état.
Il faut donc prévoir un reset pour forcer la machine à
démarrer dans le bon état
![Page 94: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/94.jpg)
94ETRS 511
Description de FSM en VHDLProblème de l’état initial
Reset asynchrone
![Page 95: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/95.jpg)
95ETRS 511
Description de FSM en VHDLProblème de l’état initial
Reset synchrone
![Page 96: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/96.jpg)
96ETRS 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.
Commencer par représenter le graphe d’étatCoder la machine en VHDL
t
D
t
S
![Page 97: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/97.jpg)
97ETRS 511
Exercice
E0
D = ‘1’
S=0S=0
S=1 S=1 E1
E3
E2
D = ‘0’
D = ‘1’
D = ‘0’
D = ‘0’
D = ‘1’
D = ‘1’D = ‘0’
![Page 98: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/98.jpg)
98ETRS 511
Exercice
![Page 99: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/99.jpg)
99ETRS 511
Plan gobal du coursI. IntroductionII. FPGAIII. VHDL
IntroductionRègles d’écritureUnités de conception - Objets VHDL - OpérateursAssignations concurrentes/séquentiellesAssignations conditionnelles/sélectivesComposantMachine à étatsRègles de conceptionSimulationCompléments (fonctions, procédures, packages, …)
![Page 100: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/100.jpg)
100ETRS 511
Règles de conceptionTiming
![Page 101: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/101.jpg)
101ETRS 511
Règles de conceptionSystème combinatoire (asynchrone)
1 2 3Niveaux logiques
a0a1a2a3a4
b0
b1
b2
Plus le nombre de niveaux logiques est grand, plus le
délai augmente
Mauvaise performance en temps
Difficile à mettre au point
Difficile de tester tous les cas possibles
délai
![Page 102: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/102.jpg)
102ETRS 511
Règles de conceptionConception synchrone
![Page 103: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/103.jpg)
103ETRS 511
Règles de conceptionConception synchrone
Améliore des performances en vitesse
Simplifie de la vérification fonctionnelle
Autorise des analyses statiques du timing
Assure une parfaite testabilité
Correspond à l’architecture des composants
![Page 104: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/104.jpg)
104ETRS 511
Règles de conception
Règles à suivre :
1 seule horloge
Jamais de logique sur un signal d’horloge (utiliser enable)
Si plusieurs domaines d’horloge, prévoir des FIFOs tampons
Resynchroniser tous les signaux asynchrones pour éviter la
métastabilité (2 bascules D à la suite)
![Page 105: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/105.jpg)
105ETRS 511
Règles de conception
Exemple de synchronisation d’un signal reset (actif asynchrone
mais inactif de manière synchrone)
![Page 106: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/106.jpg)
106ETRS 511
Règles de conception
Adopter une démarche qualité (dénomination,
hiérarchisation)
Attention aux assignations incomplètes (mémorisation
implicite)
Attention à l’utilisation des variables
Penser à l’implantation (orienter le compilateur)
Trouver le bon compromis entre ressources et vitesse en
choisissant le bon degré de parallélisme
![Page 107: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/107.jpg)
107ETRS 511
Plan gobal du coursI. IntroductionII. FPGAIII. VHDL
IntroductionRègles d’écritureUnités de conception - Objets VHDL - OpérateursAssignations concurrentes/séquentiellesAssignations conditionnelles/sélectivesComposantMachine à étatsRègles de conceptionSimulationCompléments (fonctions, procédures, packages, …)
![Page 108: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/108.jpg)
108ETRS 511
SimulationSimulation pour valider tout ou une partie du design
Vérification manuelle sur chronogrammesFastidieux voir impossible si design complexTaux de couverture?
Vérification automatique :Efficace Mais, validité du modèle comportemental?Vitesse?
![Page 109: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/109.jpg)
109ETRS 511
Simulation
Vérification automatiqueTrès efficace
![Page 110: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/110.jpg)
110ETRS 511
SimulationType de simulation
Simulation fonctionnelle :
Le programme simule un circuit idéal sans temps
de propagation
Permet de vérifier que les fonctions sont réalisées
correctement
Simulation temporelle :
Prise en compte des délais de propagation
Permet de vérifier que contraintes temporelles sont
respectées (vitesse d’horloge)
![Page 111: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/111.jpg)
111ETRS 511
SimulationEcriture d’un testbench
Création graphique de chronogrammes
Pour Quartus : fichier vector waveform .vwf
Generate functionnal simulation netlist
Lancement de la simulation
Fastidieux, taux de couverture ?
![Page 112: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/112.jpg)
112ETRS 511
SimulationExercice
Tracer les chronogrammes de deux signaux en entrée
d’une porte ET pour tester son bon fonctionnement
t (ns)
A
t (ns)
B
00 01 11 10
![Page 113: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/113.jpg)
113ETRS 511
SimulationEcriture d’un testbench en vhdl
Possibilité d’utiliser des ressources vhdl non synthétisablesComposition du fichier
LibraryEntity (vide)
ArchitectureDéclaration du composant à testerDéfinition des signaux et constantesDescription du chronogramme des signauxMapping du composant
![Page 114: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/114.jpg)
114ETRS 511
SimulationEcriture d’un testbench en vhdl
![Page 115: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/115.jpg)
115ETRS 511
SimulationEcriture d’un testbench en vhdl
La durée s’exprime avec un type physique : fs, ps, ns, us,…Affectation d’un signal
Signal <= valeur after durée, valeur after durée, … ;
Conditions temporelles (dans un process)wait on liste_signal until condition for durée;
wait on : attente sur événementwait until : attente de conditionswait for : attente pour un certain temps
![Page 116: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/116.jpg)
116ETRS 511
SimulationEcriture d’un testbench en vhdl
Utilisation d’attributSignal’stable : vrai s’il n’y a pas d’événement pendant la duréeSignal’last_event : durée depuis le dernier événementSignal’last_value : avant dernière valeur
![Page 117: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/117.jpg)
117ETRS 511
SimulationGénération d’horloge
![Page 118: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/118.jpg)
118ETRS 511
SimulationGénération d’horloge
![Page 119: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/119.jpg)
119ETRS 511
SimulationGénération d’horloge
Autres possibilités :
![Page 120: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/120.jpg)
120ETRS 511
SimulationExercice
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 :
t (ns)
A
t (ns)
B0
0
30
50
80 100
120
![Page 121: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/121.jpg)
121ETRS 511
SimulationExercice
![Page 122: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/122.jpg)
122ETRS 511
SimulationAssertions
Permettent d’avoir des informations dynamiques sur la simulation
assert test report message severity action
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
![Page 123: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/123.jpg)
123ETRS 511
SimulationAssertions
![Page 124: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/124.jpg)
124ETRS 511
SimulationAssertions
Il est possible d’afficher la valeur d’un signal ou d’une constante type‘image(signal)
Attention, pas de fonction prévue pour le type std_logic_vector
![Page 125: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/125.jpg)
125ETRS 511
SimulationExercice
Ecrire le fichier vhdl permettant de simuler une ALU qui peut réaliser les opérations suivantes :
S = A si commande = 00S = B si commande = 01S = A + B si commande = 10S = A – B si commande = 11
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».
ALU
A
B
Commande
S
2
4
4
4
![Page 126: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/126.jpg)
126ETRS 511
SimulationExercice
![Page 127: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/127.jpg)
127ETRS 511
SimulationExercice
![Page 128: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/128.jpg)
128ETRS 511
Plan gobal du coursI. IntroductionII. FPGAIII. VHDL
IntroductionRègles d’écritureUnités de conception - Objets VHDL - OpérateursAssignations concurrentes/séquentiellesAssignations conditionnelles/sélectivesComposantMachine à étatsRègles de conceptionSimulationCompléments (fonctions, procédures, packages, …)
![Page 129: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/129.jpg)
129ETRS 511
Paramètres génériques
Permettent de paramétrer des composants
Se déclarent dans l’entity
On leur donner une valeur par défaut ( := )
L’instanciation se fait avec generic map (…)
![Page 130: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/130.jpg)
130ETRS 511
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)
![Page 131: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/131.jpg)
131ETRS 511
Sous-programmes
Permettent de modulariser le code
Permettent de regrouper des actions répétitives
Permettent de réutiliser des fonctions
Rendent les fichiers plus lisibles
Permettent d’automatiser des actions (simulation)
Fonction et procédure
![Page 132: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/132.jpg)
132ETRS 511
Fonction
Les paramètres d’une fonction sont uniquement en
entrée
Une fonction ne retourne qu’une seule valeur
Elle a un type, celui de la valeur retournéeElle doit être déclarée dans un package, une entity ou une architecture
Exemple : conversion de types
![Page 133: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/133.jpg)
133ETRS 511
FonctionSyntaxe :
function nom (paramètre : type) return type isZone de déclarationBeginZone d’instructionsreturn valeur;end nom;
Exemple :
![Page 134: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/134.jpg)
134ETRS 511
Fonction
![Page 135: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/135.jpg)
135ETRS 511
Procédure
Les paramètres d’une procédure peuvent être en
entrée, en sortie ou les deux
Une procédure peut retourner plusieurs valeurs
Elle doit être déclarée dans un package, une entity ou
une architecture
Elle permet de réduire les lignes de code
![Page 136: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/136.jpg)
136ETRS 511
Procédure
Syntaxe :procedure nom (class paramètre : mode type) isZone de déclarationBeginZone d’instructionsend nom;
Exemple :
Signal, variable ou constant
in, out ou inout
![Page 137: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/137.jpg)
137ETRS 511
Procédure
Déclaration de la procédure cycle
![Page 138: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/138.jpg)
138ETRS 511
Procédure
Déclaration de la procédure verif
![Page 139: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/139.jpg)
139ETRS 511
Procédure
Utilisation de la procédure verif
![Page 140: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/140.jpg)
140ETRS 511
PackageUn package est une unité de compilation permettant de regrouper constant, type, component, function et procedure
Un package est compilé à part soit dans une bibliothèque spécifique, soit dans la bibliothèque courante workIl doit être compilé avant les composants qui l’utilisent
use work.nom_package.all; library lib;use lib. nom_package.all;
![Page 141: Cours Vhdl Fpga 2](https://reader036.vdocuments.pub/reader036/viewer/2022082207/55cf9d84550346d033adf761/html5/thumbnails/141.jpg)
141ETRS 511
Package
Liste de ce qu’il y a dans le package
Description de ce que font les
fonctions ou les procédures