Vous êtes sur la page 1sur 59

Enseignante: Mounira TARHOUNI

Maitre Assistante lISIMG


Ingnieur ENIT 2007

1
Objective
Introduction aux concepts essentiels de la spcification, de la
modlisation, et de la simulation dun systme logique en
VHDL.
Comprhension de la smantique de simulation de VHDL.
Ecriture de modles de niveau RTL vrifiables formellement
et synthtisable

Comprendre comment est fait un FPGA et comment il
fonctionne,
Vous familiariser avec les termes et expressions employes
dans le domaine,
Vous clairer sur le flot de conception,
Vous montrer comment un FPGA sintgre dans un systme
numrique.

2
Introduction

Langage de description de systmes matriels


Il est utilis pour la modlisation et la synthse des circuit
lectroniques.
Langage proche
VERILOG: concurrent et plus ancien. La syntaxe est proche de
celle du langage C.
VHDL-AMS : langage de modlisation mixte numrique-
analogique IEEE.1076.1-1999. Il est entirement compatible aves
VHDL en terme de modlisation.

3
Introduction: historique
1980: le dpartement de dfense amricain lance un appel
doffre pour un langage qui permettrait de dcrire tous les
systmes lectroniques utiliss. Motivation affiche:
rutilisabilit et rduction des cots de conception.
1983 trois compagnies (Intermetics, IBM, Texas
Instruments) commencent le dveloppement.
1985: premire version officielle de VHDL (version 7.2).
1986: VHDL est donn IEEE pour en faire un standard.
1987: Standard IEEE 1076-1987.
1993: Standard IEEE 1076-1993.
1999: Standard IEEE 1076.6-1999
4
Introduction: motivations
Offre un cycle de conception plus court
Permet de crer des bibliothques de composants
rutilisables
Chacun des composants peut tre valid
indpendamment par simulation.
Une grande varit doutils sont disponibles
Description portable sur diffrente plateforme
matrielle (carte FPGA, ASIC)

5
Introduction : motivations
Deux familles de circuits programmables: les plus
clbres sont:
Xilinx (XC4000, SPARTAN, VIRTEX, VIRTEXIII,
ZEDBOARD, Zybo, ZYNQ 702.)
Altera FLEX 8000, APEX 20K, Stratix, Stratix III)
Le progrs de ces technologies permet de faires des
composants toujours plus rapides et plus hautes
intgration, ce qui permet de programmer des
applications importantes

6
Exemples des cartes FPGA

Un FPGA Xilinx de type Virtex 5

Un FPGA Xilinx de type


Spartan-3 Un FPGA Xilinx de type ZYNQ 702 7
Outils CAO
Les fabricants des FPGAs proposent
des outils de CAO, pour configurer
leurs circuits, exemple:
Xilinx: Xilinx ISE, VIVADO,
Altera:Quartus II, Max+II
Avec ces outils on peut raliser tout
le flot de conception allant de la
synthse la configuration.

8
Introduction
VHDL : ne vise pas une excution, il est utilis pour :
la simulation
la synthse

la spcification

la documentation

Les avantages de VHDL :


indpendant du constructeur Portabilit
indpendant de la technologie
indpendant de la dmarche
indpendant du niveau de conception

9
Entity/Architecture: syntaxe

10
Entit
Lentit dcrit la connectique du composant avec son
environnement, au moyen de ports de
communication.
Les informations quelle fourni sont :
le nombre de ports,
leur nom,
leur type,
leur direction (entre, sortie ou entre-sortie),
et leur largeur.
Elle permet galement de dfinir des constantes, ainsi
que des paramtres pour les modles gnriques

11
Entit

12
Larchitecture
Larchitecture dcrit comment les sorties dun
composant sont labores partir de ses entres.
Bien entendu, lentit associe devra avoir t
pralablement dfinie.

13
Exemple

14
Le VHDL est un langage instruction concurrente:
Les instructions sont values en mme temps
Lordre dans lequel elles sont crites na aucune
importance
Le langage VHDL ne fait pas distinction entre
majuscules et minuscules
En langage VHDL les commentaires sont prcds
par -- et sarrte au retour la ligne.

15
Objets en VHDL
5 sortes dobjets
Les ports dentre/sortie (PORT)
Les signaux (SIGNAL)
Les constantes (CONSTANT)
Les variables (VARIABLE)
Les paramtres (GENERIC)
Les objets reprsentent une valeur
Ils doivent tre typs

16
Types des objets en VHDL
Bit
Boolean
Integer
Std_logic dans la bibliothque std_logic_1164
Std_logic_vector
Signed, Unsigned dans la bibliothque numeric_std
Natural : sous type de integer limit aux nombres 0
Positif : sous type de integer limit aux nombres > 0
Character, string
.

17
TYPES ENTIERS
Le type entier integer prdfini dans le paquetage
standard STD permet de dfinir des nombres signs
sur 32 bits entre -2-31 et 231 - 1 .
Un sous type subtype permet de dclarer un type
hritant des proprits du type pre.
Il existe 2 "sous types" subtype associs INTEGER :
les entiers naturels et les entiers positifs. Leur
dclaration dans le paquetage STD est la suivante :

18
TYPES ENUMERE
Un type numr est un type dfini par une numration exhaustive :

L'ordre de dclaration est important. Lors de l'initialisation d'un signal


de type numr T, le signal prend la valeur T'LEFT. Par exemple un
signal de type COULEURS sera ROUGE en dbut de simulation.
Dans le paquetage STANDARD de la bibliothque STD, plusieurs types
numrs sont dfinis :

19
Type composite
Le type composite est utilis pour dfinir des
collections de valeurs.
Le type est nomm "tableau" si les valeurs dune
collection sont du mme type, le type est nomm
"record" si les valeurs dune collection sont de type
htrogne.
Type tableau: exemple
type MY_WORD is array (0 to 31) of BIT ;
type MEMORY is array (INTEGER range <>) of
MY_WORD ;
20
Type composite
Type record :Exemple
type DATE is record
DAY: INTEGER range 1 to 31;
MONTH: MONTH_NAME;
YEAR: INTEGER range 0 to 4000;
end record;

21
Constant , Signal, Variable
Constant
Syntaxe:
constant NOM_des Objets:type:={valeur initiale};
Exemple:
constant PI:real:=3.1416;
constant Bits_Addr:integer:=12;
Signal
Syntaxe:
signal NOM_des Objets:type:={valeur initiale};
Exemple:
signal:bit_vector(7 downto 0):=00000000 ;
signal:compteur:integer:=0;
signal S,E1,E2:std_logic:=0 22
Constant , Signal, Variable
Variable
Syntaxe:
variable :NOM_des Objets:type:={valeur initiale};
Exemple:
variable :bit_vector(7 downto 0):=00000000 ;
variable :compteur:integer:=0;
variable S,E1,E2:std_logic;
Affectation :
S:=E1 and E2; (exemple avec des portes logiques).

23
Les identificateurs
Les objets manipuls par le langage doivent tous porter un
nom. Aussi, chacun possde un identificateur unique qui
permet de le dsigner sans la moindre ambigut. Ce
dernier obit certaines rgles :
Suite de lettres, chiffres et underscore "_
Le premier caractre doit tre une lettre
Il ne peut y avoir 2 _ de suite
Lidentificateur ne peut se terminer par _
Il ne doit pas dpasser la taille dune ligne
Aucune distinction nest faite entre les lettres majuscules et
les lettres minuscules.
Il doit tre diffrent des mots rservs du langage.

24
Mots rservs
Un certain nombre de mots cls sont utiliss par VHDL
pour sa syntaxe propre . On dit que ces mots sont
rservs par le langage et ils ne peuvent pas tre utiliss
pour autre chose.
Heureusement, la plupart des diteurs de textes qui
supportent le VHDL identifient automatiquement les mots
cls et les affichent avec une couleur diffrente, ou en
caractres gras.

25
Priorit des oprateurs

26
Oprateurs
Oprateurs logiques (sur boolens, bits et drivs)

Operateurs Description Rsultat


not Complment logique Mme types
and Et logique Mme types
or Ou logique Mme types
nand Non-et logique Mme types
nor Nonou logique Mme types
xor Ou exclusif Mme types
xnor Non-ou exclusif Mme types

27
Oprateurs
Oprateurs relationnels (sur types scalaires ou drivs
(signed, unsigned))

Operateurs Description Rsultat


= Egalit Boolen
/= Ingalit (diffrent) Boolen
< Infrieur Boolen
<= Infrieur ou gal Boolen
> Suprieur Boolen
>= Suprieur ou gal Boolen

28
Oprateurs
Oprateurs relationnels: exemples

29
Oprateurs
Oprateurs bits (sur vecteurs de bits et types numriques)
oprateur Description Rsultat
& Concatnation Mme type, plus large
Oprateurs arithmtiques (sur types numriques : entiers,
signs, non signs, flottant)
Oprateur Description
+ Addition
- Soustraction
abs Valeur absolue
*,** Multiplication,
puissance
/ Division
mod modulo
rem reste 30
Oprateurs
A mod B = A B * N A rem B = A (A/B) * B
7 mod 4 -- has value 3 .............................................
-7 mod 4 -- has value 3 .............................................
7 mod (-4) -- has value 1 .............................................
-7 mod (-4) -- has value 3
.............................................
............................................. .............................................
............................................. .............................................
............................................. .............................................
............................................. .............................................
31
Oprateurs
Oprateurs de dcalage (sur tableaux de bits )

sll Shift left logical fill value is 0


srl Shift right logical fill value is 0
sla Shift left arithmetic fill value is right-hand bit

sra Shift right arithmetic fill value is left-hand bit

rol Rotate left logical


ror Rotate right logical

32
Oprateurs
1100 sll 1 yields 1000
1100 srl 2 yields 0011
1100 sla 1 yields 1000
1100 sra 2 yields 1111
1100 rol 1 yields 1001
1100 ror 2 yields 0011







33
Type std_logic_vector
Laccs aux lments dun vecteur de bits peut se faire
de diffrentes faons en VHDL :
Accs direct : a(7) <= b(2);
Accs par tranche : a(7 downto 5) <= b(2 downto 0);
Accs par agrgat :
Notation positionnelle :
a(1 to 3) <= (0,1,1); b <=(1,1,others=>0);
Notation avec nommage :
a(4 downto 0) <= (3=>1,1=>1,others=>0);

34
Exemple 1: porte et

35
Exemple 2: demi_add

36
Descriptions possibles en VHDL
Flot de donnes : cest--dire ralise partir dquations
boolennes.
On fait compltement abstraction de la ralit physique du composant,
pour sattacher ses signaux dentre et aux transformations quelles
subissent en vue dobtenir ses signaux de sortie.
Les oprations effectues sont gnralement construites partir
doprateurs arithmtiques et logiques.

Comportementale: sans rfrence des structures ou


des quations

37
Descriptions possibles en VHDL
Structurelle: cest--dire ralise partir de composants
prdfinis.

Mixte :dans le but de permettre au concepteur dexprimer son ide de la


faon la plus simple, VHDL permet de mlanger tous les types de description
que nous venons de voir dans un mme modle.

38
Exemple de description Flot de donnes

39
Exemple de description Flot de donnes

40
Exemple de description Flot de donnes

41
Description Structurelle
La description structurelle d'un circuit complexe en vhdl
prsente de nombreux avantages :
Une architecture hirarchique comprhensible : il est plus
simple de sparer un circuit en un ensemble de blocs plus
petits, ayant des fonctions bien identifies. Ces blocs
pourront alors tre dcrits sous forme comportementale,
ou bien leur tour tre spars en blocs encore plus
simples.
Une synthse logique efficace : la synthse est un processus
lent (en terme de temps de calcul). Plus un bloc est gros et
complexe, plus sa synthse prendra du temps. Il vaut donc
mieux travailler sur des blocs plus petits, plus simples
synthtiser, et rassembler le tout la fin.

42
Description Structurelle
Dans ce mode de description, le concepteur adopte une approche de type
assemblage : il assemble des sous-modules pour construire un nouveau
module. Les sous-composants doivent avoir dj t dcrits, puis compils et
rangs dans une bibliothque.
La netlist ainsi obtenue donne une vue proche de celle dun schma
lectrique, avec des composants relis par des signaux.
Dclaration dun composant: syntaxe
Le mot cl component sert dclarer le prototype d'interconnexion. La syntaxe
est presque identique celle de l'entit :

Instanciation dun composant: syntaxe

43
Description Structurelle : exemple
Dans cet exemple, 2 instances de
composant "and2" sont appeles pour crer
une porte ET 3 entres.

L'association des ports du composants aux


signaux de l'instance se fait l'aide de la
clause port map.

La syntaxe des associations est soit


par nom o chaque broche du composant
est associe un signal : cas de inst_1

positionnelle o l'ordre des signaux

1 correspond l'ordre des broches : cas de


inst_2

44
Exemple de description structurelle
Utilisez une description de type structurelle pour raliser
ladditionneur de 1 bit dont le schma bloc est illustr par la
figure ci-dessous :








.
45
Description comportementale
On sattache dcrire le fonctionnement dun module.
Le concepteur ne se proccupe absolument pas de la ralisation
physique de son circuit. La description comportementale est plus
abstraite que la description structurelle et fait appel des concepts
proches de la programmation informatique volue.
A ce titre, pour un circuit particulier, il peut exister un grand nombre
de descriptions comportementales (comportementale et squentielle,
comportementale et concurrente)

46
Affectation conditionnelle
Linterconnexion est soumise des conditions.
Syntaxe:

Exemple

47
Affectation Slective
Suivant la valeur dune expression , linterconnexion sera effectu.
Syntaxe:

Exemple

........................................................................................
48
Les instructions squentielle
Elles sont utilises dans les process ou les corps de sous-programmes
Elles permettent des descriptions comportementales

49
Process
Un process est une partie de la description dun circuit
dans laquelle les instructions sont excutes
squentiellement cest--dire les unes la suite des
autres
Syntaxe:

50
Process
Un process est un bloc de commande dans un circuit
dans lequel les instructions sont excutes
squentiellement cest--dire les unes la suite des
autres.
Lexcution dun process est dclenche par un ou des
changements dtats de signaux logiques
Le nom de ces signaux est dfini dans la liste de
sensibilit lors de la dclaration du process
Le nom de process (Label) est facultatif, mais il peut
tre trs utiles pour reprer un process parmi dautres
lors de phases de simulations
51
Exemples de description comportementale
Utilisez une description de type comportementale et
concurrente pour raliser ladditionneur 1 bit.

Utilisez une description de type comportementale et


squentielle pour raliser ladditionneur 1 bit.

Utilisez une description de type mixte pour raliser


ladditionneur 1 bit

52
Exemples de description comportementale
Utilisez une description de type comportementale et
concurrente pour raliser un multiplexeurs 4 vers 1.

Utilisez une description de type comportementale et


squentielle pour raliser un multiplexeurs 4 vers 1.

53
Exemple: bascule D

54
Exemple : bascule D












55
Library
IEEE.STD_LOGIC_1164.all
Permet de dfinir les types, oprateurs et fonctions de
conversion de base
IEEE.numeric_std.all
Dfinit les types signed et unsigned. Un vecteur
reprsente un nombre sign ou non sign reprsent en
C2
Permet dutiliser les oprateurs arithmtiques + et * sur
des vecteurs de bits

56
Exemples des Conversions utilisant
le package Numeric_Std

https://www.nandland.com/vhdl/tips/tip-convert-numeric-std-logic-
vector-to-integer.html 57
La gnricit
Cest un moyen de transmettre une information un
bloc :
Vu de lextrieur du bloc, la gnricit == paramtre
Vu de lintrieur du bloc, paramtres == constantes
Intrts :
description de composants gnraux :
additionneur N entres,

registre N bits

permettre la rutilisation des composants :


description des bibliothques par des modles gnriques
58
La gnricit

59