Cours VHDL FPGA Chapitre 3

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 112

Chapitre III.

Le Langage VHDL

15-09-14 G. Leroy - EILCO


Plan global 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, …)
15-09-14 G. Leroy - EILCO

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, P1076-
2000, 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,…)
15-09-14 G. Leroy - EILCO

3
Introduction
Pourquoi et où utilise-t-on le VHDL?
Flot de conception

15-09-14 G. Leroy - EILCO

4
Introduction
Pourquoi et où utilise-t-on le VHDL?
Flot de conception

15-09-14 G. Leroy - EILCO

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

15-09-14 G. Leroy - EILCO

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
15-09-14 G. Leroy - EILCO

7
Plan global 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, …)
15-09-14 G. Leroy - EILCO

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

15-09-14 G. Leroy - EILCO

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 « _ »

15-09-14 G. Leroy - EILCO

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
15-09-14
: true false G. Leroy - EILCO

11
Mots réservés

http://amouf.chez.com/syntaxe.htm
15-09-14 G. Leroy - EILCO

12
Plan global 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, …)
15-09-14 G. Leroy - EILCO

13
Unités de conception
Structure d’un fichier VHDL

15-09-14 G. Leroy - EILCO

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


15-09-14 G. Leroy - EILCO
entre entiers et vecteurs
15
Unités de conception
Library

IEEE.numeric_std.all

15-09-14 G. Leroy - EILCO

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
15-09-14 : le nom d’un fichier VHDL doit être celui de l’entité qu’il contient
G. Leroy - EILCO

17
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

15-09-14 G. Leroy - EILCO

18
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

15-09-14 G. Leroy - EILCO

19
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

15-09-14 Remarque : l’instruction after


G. Leroy - EILCO n’est pas synthétisable !

20
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

15-09-14 G. Leroy - EILCO

21
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 Plusieurs catégories de types
z Types scalaires (numériques et énumérés)
z Types composés (tableaux et vecteurs)

z Possibilité de définir de nouveaux types

15-09-14 G. Leroy - EILCO

22
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

15-09-14 G. Leroy - EILCO

23
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
15-09-14 G. Leroy - EILCO

24
Objets VHDL
Type

z Std_logic :

15-09-14 G. Leroy - EILCO

25
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

15-09-14 G. Leroy - EILCO

26
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 ";

15-09-14 G. Leroy - EILCO

27
Objets VHDL
Constant

z Une constante doit être déclarée avant utilisation


z Elle peut être déclarée :
z dans un package, elle est alors globale
z dans une entity, elle est alors commune à toutes les architectures
de l’entité
z dans l’architecture, elle est alors locale
z L’affectation se fait avec l’opérateur « := »

15-09-14 G. Leroy - EILCO

28
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 « := »

15-09-14 G. Leroy - EILCO

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

15-09-14 G. Leroy - EILCO

30
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) :


15-09-14
sll, srl, sla, sra, rol, ror
G. Leroy - EILCO

31
Plan global 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, …)
15-09-14 G. Leroy - EILCO

32
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

15-09-14 G. Leroy - EILCO

33
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
Appel
z15-09-14 d’une fonction G. Leroy - EILCO

34
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
15-09-14
next et exit G. Leroy - EILCO

35
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

15-09-14 G. Leroy - EILCO

36
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

15-09-14 G. Leroy - EILCO

37
Process
Exemples

15-09-14 G. Leroy - EILCO

38
Process
Exemples

15-09-14 G. Leroy - EILCO

39
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

15-09-14 G. Leroy - EILCO

40
Plan global 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, …)
15-09-14 G. Leroy - EILCO

41
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
15-09-14 G. Leroy - EILCO

42
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

15-09-14 G. Leroy - EILCO

43
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 « | »

15-09-14 G. Leroy - EILCO

44
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

15-09-14 G. Leroy - EILCO

45
Assignations sélectives
If versus case

15-09-14 G. Leroy - EILCO


Assignations sélectives
If versus case

15-09-14 G. Leroy - EILCO


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;

15-09-14 G. Leroy - EILCO


Plan global 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, …)
15-09-14 G. Leroy - EILCO
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


15-09-14 G. Leroy - EILCO
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

15-09-14 G. Leroy - EILCO


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 »

15-09-14 G. Leroy - EILCO


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

Instanciation par position

15-09-14 G. Leroy - EILCO Instanciation par nomination


53
Composant
Duplication automatique
z Syntaxe générale :
label : for indice in val_debut to val_fin generate … end generate label ;

15-09-14 G. Leroy - EILCO


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)

15-09-14 G. Leroy - EILCO


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
15-09-14 G. Leroy - EILCO

56
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)
15-09-14 G. Leroy - EILCO

57
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
15-09-14 G. Leroy - EILCO

58
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
15-09-14 G. Leroy - EILCO
Valeur de la (ou des) sortie(s)
59
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
15-09-14 G. Leroy - EILCO

60
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"
15-09-14 G. Leroy - EILCO

61
Programmer un FPGA par FSM
z Avec le logiciel Xilinx, 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

15-09-14 G. Leroy - EILCO

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

15-09-14 G. Leroy - EILCO

63
Description de FSM en VHDL

Gestion des états

Gestion de la valeur de la
sortie

15-09-14 G. Leroy - EILCO

64
Description de FSM en VHDL
Exemples

15-09-14 G. Leroy - EILCO

65
Description de FSM en VHDL
Exemples
Etats en One-Hot-One

15-09-14 G. Leroy - EILCO

66
Description de FSM en VHDL
Exemples : FSM à 2 process

Déclaration de deux
signaux d’état

15-09-14 G. Leroy - EILCO

67
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

15-09-14 G. Leroy - EILCO

68
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


15-09-14 G. Leroy - EILCO

69
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

15-09-14 G. Leroy - EILCO

70
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

15-09-14 G. Leroy - EILCO

71
Description de FSM en VHDL
Problème de l’état initial

z Reset asynchrone

15-09-14 G. Leroy - EILCO

72
Description de FSM en VHDL
Problème de l’état initial

z Reset synchrone

15-09-14 G. Leroy - EILCO

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

15-09-14 G. Leroy - EILCO

74
Exercice

15-09-14 G. Leroy - EILCO

75
Plan global 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, …)
15-09-14 G. Leroy - EILCO

76
Règles de conception
Timing

15-09-14 G. Leroy - EILCO

77
Règles de conception
Système combinatoire (asynchrone)

a0 b0
a1
a2 b1
a3
a4 b2
Niveaux délai
1 2 3
logiques

z 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
15-09-14 G. Leroy - EILCO

78
Règles de conception
Conception synchrone

15-09-14 G. Leroy - EILCO

79
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

15-09-14 G. Leroy - EILCO

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

15-09-14 G. Leroy - EILCO

81
Règles de conception
Exemple de synchronisation d’un signal reset (actif asynchrone
mais inactif de manière synchrone)

15-09-14 G. Leroy - EILCO

82
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
15-09-14 G. Leroy - EILCO

83
Plan global 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, …)
15-09-14 G. Leroy - EILCO

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

15-09-14 G. Leroy - EILCO

85
Simulation

z Vérification automatique
z Très efficace

15-09-14 G. Leroy - EILCO

86
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)
15-09-14 G. Leroy - EILCO

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

15-09-14 G. Leroy - EILCO

88
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
15-09-14 G. Leroy - EILCO

89
Simulation
Ecriture d’un testbench en vhdl

15-09-14 G. Leroy - EILCO

90
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
15-09-14 G. Leroy - EILCO

91
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

15-09-14 G. Leroy - EILCO

92
Simulation
Génération d’horloge

15-09-14 G. Leroy - EILCO

93
Simulation
Génération d’horloge

15-09-14 G. Leroy - EILCO

94
Simulation
Génération d’horloge
Autres possibilités :

15-09-14 G. Leroy - EILCO

95
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

15-09-14 G. Leroy - EILCO

96
Simulation
Assertions

15-09-14 G. Leroy - EILCO

97
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

15-09-14 G. Leroy - EILCO

98
Plan global 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, …)
15-09-14 G. Leroy - EILCO

99
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 (…)

15-09-14 G. Leroy - EILCO

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


15-09-14 G. Leroy - EILCO

101
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

15-09-14 G. Leroy - EILCO

102
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


15-09-14 G. Leroy - EILCO

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

15-09-14 G. Leroy - EILCO

104
Fonction

15-09-14 G. Leroy - EILCO

105
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


15-09-14 G. Leroy - EILCO

106
Procédure
Signal, variable ou constant
z Syntaxe :
procedure nom (class paramètre : mode type) is
Zone de déclaration
in, out ou inout
Begin
Zone d’instructions
end nom;
z Exemple :

15-09-14 G. Leroy - EILCO

107
Procédure
Déclaration de la procédure cycle

15-09-14 G. Leroy - EILCO

108
Procédure
Déclaration de la procédure verif

15-09-14 G. Leroy - EILCO

109
Procédure
Utilisation de la procédure verif

15-09-14 G. Leroy - EILCO

110
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
z Il doit être compilé avant les composants qui l’utilisent

use work.nom_package.all; library lib;


15-09-14 G. Leroy - EILCO use lib. nom_package.all;
111
Package

Liste de ce qu’il y a
dans le package

Description de ce
que font les
fonctions ou les
procédures

15-09-14 G. Leroy - EILCO

112

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy