Vous êtes sur la page 1sur 141

III.

VHDL

ETRS 511 1
Plan gobal du cours
z I. Introduction
z II. FPGA
z III. VHDL
z Introduction
z Règles d’écriture
z Unités de conception - Objets VHDL - Opérateurs
z Assignations concurrentes/séquentielles
z Assignations conditionnelles/sélectives
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)

2
ETRS 511
Introduction
Historique

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,…)
3
ETRS 511
Introduction
Pourquoi et où utilise-t-on le VHDL?
Flot de conception

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

5
ETRS 511
Introduction
Qu’est ce que le VHDL?

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

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

7
ETRS 511
Plan gobal du cours
z I. Introduction
z II. FPGA
z III. VHDL
z Introduction
z Règles d’écriture
z Unités de conception - Objets VHDL - Opérateurs
z Assignations concurrentes/séquentielles
z Assignations conditionnelles/sélectives
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)

8
ETRS 511
Règles d’écriture

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

9
ETRS 511
Règles d’écriture
z En général, les instructions se terminent par « ; »

z Règles de dénomination :
z 26 lettres de l’alphabet, les 10 chiffres et ‘_’
z Le premier caractère est une lettre
z Il ne peut y avoir 2 « _ » de suite
z L’identifieur ne peut se terminer par « _ »

10
ETRS 511
Règles d’écriture
z Les valeurs explicites:
z Entier : 123 1_2_3
z Entier basé : base#valeur# 2#11# (Q3) 16#1F# (Q31)
z Valeurs physiques : toujours laisser un espace entre la valeur et l’unité
100 ps 2 ns 5V
z Caractère : entre apostrophe ‘a’ ‘@’
z Bit : entre apostrophe ‘0’ ‘1’ ‘Z’
z Chaîne de caractères : entre guillemets (attention là les minuscules et
majuscules sont significatives) "Bonjour "
z Bus : entre guillemets "01111001 "
z Booléen : true false
11
ETRS 511
Mots réservés

http://amouf.chez.com/syntaxe.htm
12
ETRS 511
Plan gobal du cours
z I. Introduction
z II. FPGA
z III. VHDL
z Introduction
z Règles d’écriture
z Unités de conception - Objets VHDL - Opérateurs
z Assignations concurrentes/séquentielles
z Assignations conditionnelle/sélective
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)

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

14
ETRS 511
Unités de conception
Library

z IEEE.STD_LOGIC_1164.all
z Permet de définir les types, opérateurs et fonctions de conversion
de base

z IEEE.numeric_std.all
z Définit les types signed et unsigned. Un vecteur représente alors
un nombre signé ou non signé représenté en C2

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


15
ETRS 511
Unités de conception
Library

IEEE.numeric_std.all

16
ETRS 511
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
17
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
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 4
4
4 somme
b Add4
co
ci

19
ETRS 511
Unités de conception
Exercice

Ecrire l’entité correspondante au schéma de ce multiplexeur :

20
ETRS 511
Unités de conception
Exercice

Dessiner le schéma du composant correspondant à l’entité


suivante :

b
clk parite
parite
raz

21
ETRS 511
Unités de conception
Architecture
z Toute architecture est associée à une entité
z Définition : L’architecture définit les fonctionnalités et les
relations temporelles. Elle décrit le comportement du
composant.

Zone de déclaration

Zone de définition

22
ETRS 511
Unités de conception
Architecture
z Il peut y avoir plusieurs architectures associées à un
même composant

2 architectures d’un
même composant

Remarque : l’instruction after n’est pas synthétisable !


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

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

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

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

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

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

36
ETRS 511
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit un additionneur ADD4 à 2 entrées de
4 bits A et B signées et une sortie S de 4 bits

37
ETRS 511
Exercice
Ecrire l’ensemble d’un fichier VHDL concat4to8.vhd (Library,
Entity, Architecture) permettant la concaténation de 2 bus de
4 bits A et B en un bus C de 8 bits (le bus A représente les
bits de poids fort).

38
ETRS 511
Plan gobal du cours
z I. Introduction
z II. FPGA
z III. VHDL
z Introduction
z Règles d’écriture
z Unités de conception - Objets VHDL - Opérateurs
z Assignations concurrentes/séquentielles
z Assignations conditionnelles/sélectives
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)

39
ETRS 511
Assignations
concurrentes/sequentielles
z Instruction séquentielle : instruction à l’intérieur d’un

process

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
Exercice

Décrire cette fonction en utilisant un process :

47
ETRS 511
Process
z Mise en œuvre de process synchronisé sur l’horloge
z If clk’event and clk=‘1’ then ou if rising_edge(clk)
z If clk’event and clk=‘0’ then ou if falling_edge(clk)
z Absence de liste de sensibilité et wait until (clk=‘1’) placé en tête de la
partie déclarative du process

48
ETRS 511
Process
Exercice

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
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit un compteur COMPT qui compte sur
3 bits sur front montant du signal d’horloge clk

50
ETRS 511
Plan gobal du cours
z I. Introduction
z II. FPGA
z III. VHDL
z Introduction
z Règles d’écriture
z Unités de conception - Objets VHDL - Opérateurs
z Assignations concurrentes/séquentielles
z Assignations conditionnelles/sélectives
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)

51
ETRS 511
Assignations conditionnelles
Assignation concurrente
z Forme générale :
signal <= valeur when condition else autrevaleur when autrecondition …;
z Une seule cible peut être assignée

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
Assignations sélectives
If versus case

56
ETRS 511
Assignations sélectives
If versus case

57
ETRS 511
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit un compteur COMPT5 qui compte
sur 3 bits de 0 à 5 sur front montant du signal d’horloge clk

58
ETRS 511
Exercice
Modifier la description de l’exercice précédent pour que
lorsque l’entrée Load est à ‘1’ la sortie du compteur prenne
la valeur de l’entrée Data et compte à partir de cette valeur.

59
ETRS 511
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit un comparateur mettant la sortie
EGAL à ‘1’ lorsque les entrées A et B (bus de 8 bits) sont
égales et à ‘0’ sinon. Assignation concurrente

60
ETRS 511
Exercice
Assignation séquentielle

61
ETRS 511
Exercice
Ecrire l’ensemble d’un fichier VHDL (Library, Entity,
Architecture) qui décrit un décodeur binaire / 7 segments

62
ETRS 511
Exercice
Assignation concurrente

63
ETRS 511
Exercice
Assignation séquentielle

64
ETRS 511
Boucles loop
z Instruction séquentielle
z Forme générale :
For i in val_deb to val_fin loop … end loop;
While condition loop… end loop;

65
ETRS 511
Exercice
Ecrire l’architecture d’un circuit qui inverse bit par bit un bus
data_in de 8 bits ( data_out = not (data_in) ).

66
ETRS 511
Plan gobal du cours
z I. Introduction
z II. FPGA
z III. VHDL
z Introduction
z Règles d’écriture
z Unités de conception - Objets VHDL - Opérateurs
z Assignations concurrentes/séquentielles
z Assignations conditionnelles/sélectives
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)

67
ETRS 511
Composant
z Description structurelle : comment est réalisée la fonction ?
z Interconnexions entre des composants (component)

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
Exercice
Ecrire l’architecture du circuit TopLevel, contenant 3
composants Riri, Fifi et Loulou dont les connexions sont
schématisées ci-dessous :

Riri TopLevel
Clk H s 8
8 Loulou
Datain_a e
busa Sortie
dout
H
b
Fifi
Datain_b H
c
a
Control b
72
ETRS 511
Exercice

sig_interne2

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

74
ETRS 511
Composant
Duplication automatique
z Possibilité d’insérer des conditions dans la boucle
if condition then generate … end generate ; (pas de else ni de elsif)

75
ETRS 511
Plan gobal du cours
z I. Introduction
z II. FPGA
z III. VHDL
z Introduction
z Règles d’écriture
z Unités de conception - Objets VHDL - Opérateurs
z Assignations concurrentes/séquentielles
z Assignations conditionnelles/sélectives
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)

76
ETRS 511
Machine à état
z FSM Finite State Machine
z Outil pour représenter un système séquentiel
z On définit différents états dans lesquels peut être le système
z Le passage d’un état à un autre s’effectue si une condition sur
les entrées est remplie
z Les sorties du système dépendent de l’état courant (machine
de Moore) ou de l’état courant et des entrées (machine de
Mealy)
z Dans le cas d’une FSM synchrone, la valeur des entrées est
analysée sur front d’horloge
77
ETRS 511
Machine à état
Exemple : détecteur de séquence

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
Graphe d’état
Définition :
z Un diagramme ou graphe d’états permet d’avoir une
représentation graphique d’un système séquentiel.
z Il est constitué par l’énumération de tous les états possible
du système.
z Un seul de ces états peut être actif à la fois.
z A chaque état est associé la valeur de la (ou des)
grandeur(s) de sortie.
Transition Etat

1 2
s=1 s=0
Valeur de la (ou des) sortie(s) 80
ETRS 511
Machine à état
Exercice

Dessiner le graph d’état d’une bascule D

D=0

Q=0
D Q E0

D=0 D=1

E1 Q=1

D=1

81
ETRS 511
Machine à état
Conception de circuits

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

83
ETRS 511
Programmer un FPGA par FSM
z Avec le logiciel Quartus, on peut décrire une FSM
z en utilisant une architecture de Moore ou de Mealy que
l’ont fait soit même
z schématiquement, en rentrant directement le graphe
d’état
z en la décrivant en VHDL

84
ETRS 511
Description de FSM en VHDL

z Entité

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é

85
ETRS 511
Description de FSM en VHDL

Gestion des états

Gestion de la valeur de la
sortie

86
ETRS 511
Description de FSM en VHDL
Exemples

87
ETRS 511
Description de FSM en VHDL
Exemples
Etats en One-Hot-One

88
ETRS 511
Description de FSM en VHDL
Exemples : FSM à 2 process

Déclaration de deux
signaux d’état

89
ETRS 511
Description de FSM en VHDL
Exemples : FSM à 2 process
Premier process pour définir l’état
suivant et les valeurs de sortie en
fonction de l’état courant

90
ETRS 511
Description de FSM en VHDL
Exemples : FSM à 2 process

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

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

92
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
Exercice
Ecrire l’architecture d’une machine à état avec un reset
synchrone qui décrit un diviseur de fréquence par 2. On
considère que la fréquence d’horloge est beaucoup plus
élevée que la fréquence du signal d’entrée D.
z Commencer par représenter le graphe d’état
z Coder la machine en VHDL
D

t
S

96
ETRS 511
Exercice
D = ‘1’ D = ‘0’

E3 S=0 E0
S=0

D = ‘0’
D = ‘1’
D = ‘1’
D = ‘0’ D = ‘1’

E2 S=1 S=1 E1

D = ‘0’

97
ETRS 511
Exercice

98
ETRS 511
Plan gobal du cours
z I. Introduction
z II. FPGA
z III. VHDL
z Introduction
z Règles d’écriture
z Unités de conception - Objets VHDL - Opérateurs
z Assignations concurrentes/séquentielles
z Assignations conditionnelles/sélectives
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)

99
ETRS 511
Règles de conception
Timing

100
ETRS 511
Règles de conception
Système combinatoire (asynchrone)

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

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
101
ETRS 511
Règles de conception
Conception synchrone

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

103
ETRS 511
Règles de conception
Règles à suivre :
z 1 seule horloge
z Jamais de logique sur un signal d’horloge (utiliser enable)
z Si plusieurs domaines d’horloge, prévoir des FIFOs tampons
z Resynchroniser tous les signaux asynchrones pour éviter la
métastabilité (2 bascules D à la suite)

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

105
ETRS 511
Règles de conception
z Adopter une démarche qualité (dénomination,
hiérarchisation)
z Attention aux assignations incomplètes (mémorisation
implicite)
z Attention à l’utilisation des variables
z Penser à l’implantation (orienter le compilateur)
z Trouver le bon compromis entre ressources et vitesse en
choisissant le bon degré de parallélisme

106
ETRS 511
Plan gobal du cours
z I. Introduction
z II. FPGA
z III. VHDL
z Introduction
z Règles d’écriture
z Unités de conception - Objets VHDL - Opérateurs
z Assignations concurrentes/séquentielles
z Assignations conditionnelles/sélectives
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)

107
ETRS 511
Simulation
Simulation pour valider tout ou une partie du design
z Vérification manuelle sur chronogrammes
z Fastidieux voir impossible si design complex
z Taux de couverture?

z Vérification automatique :
z Efficace
z Mais, validité du modèle comportemental?
z Vitesse?

108
ETRS 511
Simulation

z Vérification automatique
z Très efficace

109
ETRS 511
Simulation
Type de simulation
z Simulation fonctionnelle :
z Le programme simule un circuit idéal sans temps
de propagation
z Permet de vérifier que les fonctions sont réalisées
correctement
z Simulation temporelle :
z Prise en compte des délais de propagation
z Permet de vérifier que contraintes temporelles sont
respectées (vitesse d’horloge)
110
ETRS 511
Simulation
Ecriture d’un testbench
z Création graphique de chronogrammes
z Pour Quartus : fichier vector waveform .vwf
z Generate functionnal simulation netlist
z Lancement de la simulation
z Fastidieux, taux de couverture ?

111
ETRS 511
Simulation
Exercice
Tracer les chronogrammes de deux signaux en entrée
d’une porte ET pour tester son bon fonctionnement

A 00 01 11 10

t (ns)
B

t (ns)

112
ETRS 511
Simulation
Ecriture d’un testbench en vhdl
z Possibilité d’utiliser des ressources vhdl non synthétisables
z Composition du fichier
z Library
z Entity (vide)

z Architecture
z Déclaration du composant à tester
z Définition des signaux et constantes
z Description du chronogramme des signaux
z Mapping du composant
113
ETRS 511
Simulation
Ecriture d’un testbench en vhdl

114
ETRS 511
Simulation
Ecriture d’un testbench en vhdl
La durée s’exprime avec un type physique : fs, ps, ns, us,…
z Affectation d’un signal
Signal <= valeur after durée, valeur after durée, … ;

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

115
ETRS 511
Simulation
Ecriture d’un testbench en vhdl

z Utilisation d’attribut
z Signal’stable : vrai s’il n’y a pas d’événement pendant la
durée
z Signal’last_event : durée depuis le dernier événement
z Signal’last_value : avant dernière valeur

116
ETRS 511
Simulation
Génération d’horloge

117
ETRS 511
Simulation
Génération d’horloge

118
ETRS 511
Simulation
Génération d’horloge
Autres possibilités :

119
ETRS 511
Simulation
Exercice

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

t (ns)
0 30 80 100
B

t (ns)
0 50 120

120
ETRS 511
Simulation
Exercice

121
ETRS 511
Simulation
Assertions
z Permettent d’avoir des informations dynamiques sur la
simulation
assert test report message severity action
z Si le test est négatif, on affiche message avec arrêt ou
non de la simulation en fonction de action

now = temps de
simulation

122
ETRS 511
Simulation
Assertions

123
ETRS 511
Simulation
Assertions
z Il est possible d’afficher la valeur d’un signal ou d’une
constante type‘image(signal)

z Attention, pas de fonction prévue pour le type


std_logic_vector

124
ETRS 511
Simulation
Exercice

Ecrire le fichier vhdl permettant de simuler une ALU qui peut


réaliser les opérations suivantes :
A
z S = A si commande = 00
B 4 S
z S = B si commande = 01 4 ALU 4
z S = A + B si commande = 10 Commande
2
z S = 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».

125
ETRS 511
Simulation
Exercice

126
ETRS 511
Simulation
Exercice

127
ETRS 511
Plan gobal du cours
z I. Introduction
z II. FPGA
z III. VHDL
z Introduction
z Règles d’écriture
z Unités de conception - Objets VHDL - Opérateurs
z Assignations concurrentes/séquentielles
z Assignations conditionnelles/sélectives
z Composant
z Machine à états
z Règles de conception
z Simulation
z Compléments (fonctions, procédures, packages, …)

128
ETRS 511
Paramètres génériques

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

129
ETRS 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)

130
ETRS 511
Sous-programmes
z Permettent de modulariser le code
z Permettent de regrouper des actions répétitives
z Permettent de réutiliser des fonctions
z Rendent les fichiers plus lisibles
z Permettent d’automatiser des actions (simulation)
z Fonction et procédure

131
ETRS 511
Fonction
z Les paramètres d’une fonction sont uniquement en
entrée
z Une fonction ne retourne qu’une seule valeur
z Elle a un type, celui de la valeur retournée
z Elle doit être déclarée dans un package, une entity ou
une architecture

z Exemple : conversion de types


132
ETRS 511
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 :

133
ETRS 511
Fonction

134
ETRS 511
Procédure
z Les paramètres d’une procédure peuvent être en
entrée, en sortie ou les deux
z Une procédure peut retourner plusieurs valeurs
z Elle doit être déclarée dans un package, une entity ou
une architecture

z Elle permet de réduire les lignes de code


135
ETRS 511
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 :

136
ETRS 511
Procédure
Déclaration de la procédure cycle

137
ETRS 511
Procédure
Déclaration de la procédure verif

138
ETRS 511
Procédure
Utilisation de la procédure verif

139
ETRS 511
Package
z Un package est une unité de compilation permettant
de regrouper constant, type, component, function et
procedure

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;


use lib. nom_package.all;
140
ETRS 511
Package

Liste de ce qu’il y a
dans le package

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

141
ETRS 511

Vous aimerez peut-être aussi