Vous êtes sur la page 1sur 101
Synthèse VHDL d’architectures
Synthèse VHDL
d’architectures
Synthèse VHDL d’architectures Nadia KHOUJA SAAD 2 è m e Année LAII-SE Année Universitaire 2008-2009 1
Synthèse VHDL d’architectures Nadia KHOUJA SAAD 2 è m e Année LAII-SE Année Universitaire 2008-2009 1

Nadia KHOUJA SAAD

2 ème Année LAII-SE

Année Universitaire 2008-2009

Synthèse VHDL d’architectures Nadia KHOUJA SAAD 2 è m e Année LAII-SE Année Universitaire 2008-2009 1

1

 
Plan du cours
Plan du cours

Qu’est ce qu’un circuit numérique

Rappel : circuits combinatoires et circuits séquentiels

Synthèse d’architectures Numériques : Allocation de ressources

Les cibles numériques FPGA/ASIC/SoC/NoC

Flot de conception des circuits numériques : Importance du

FPGA/ASIC/SoC/NoC  Flot de conception des circuits numériques : Importance du langage VHDL  Le langage

langage VHDL

Le langage VHDL

Qu’est ce qu’un circuit numérique  Assemblage intelligent de plusieurs ◦ Opérateurs arithmétiques, logiques,
Qu’est ce qu’un circuit numérique
Qu’est ce qu’un circuit numérique

Assemblage intelligent de plusieurs

Opérateurs arithmétiques, logiques, registres, multiplexeurs ,

arithmétiques, logiques, registres, multiplexeurs , bus… ◦ Un Pentium (X) n’est qu’un simple

bus…

arithmétiques, logiques, registres, multiplexeurs , bus… ◦ Un Pentium (X) n’est qu’un simple assemblage de

Un Pentium (X) n’est qu’un simple assemblage de composants

électroniques élémentaires

L'efficacité du circuit dépend du choix des ressources et de leur l’interconnexion

élémentaires ◦ L' efficacité du circuit dépend du choix des ressources et de leur l’interconnexion 3

Comment construire un circuit numérique ?
Comment construire un circuit
numérique ?

Exemple : Filtre numérique

un circuit numérique ? Exemple : Filtre numérique ( Y n N  1 ) 

(

Y n

N 1

) 

i 0

h x

i

n i

Entrée

-1 Z -1 Z -1 Z -1 Z X X X X + + +
-1
Z
-1
Z
-1
Z
-1
Z
X X
X
X
+
+
+
Sortie

Multiplications

par des

constantes

Quelques définitions ◦ La latence d’un système : il y a toujours un moment de
Quelques définitions
Quelques définitions

La latence d’un système : il y a toujours un moment de latence

entre le moment où on envoie quelque chose en entrée et le

moment où on récupère quelque chose en sortie ; cet intervalle de temps est connu et s’appelle le délai de propagation ou Latence.

La cadence d’un système est le temps séparant la consommation de deux entrées successives par le système

Le chemin critique d’un circuit détermine la latence et la fréquence maximale de fonctionnement du circuit combinatoire.

Différences Latence & Cadence
Différences Latence & Cadence
 
Rappel : Circuits combinatoires
Rappel : Circuits combinatoires

Circuit exprimant les sorties en fonction des entrées s=f(e)

Absence de mémorisation Interne

Circuits caractérisés par des latences faibles

Exemples :

AND

OR

mémorisation Interne  Circuits caractérisés par des latences faibles  Exemples : ◦ AND OR NOT

NOT

mémorisation Interne  Circuits caractérisés par des latences faibles  Exemples : ◦ AND OR NOT

NAND

mémorisation Interne  Circuits caractérisés par des latences faibles  Exemples : ◦ AND OR NOT

XOR

mémorisation Interne  Circuits caractérisés par des latences faibles  Exemples : ◦ AND OR NOT

NOR

mémorisation Interne  Circuits caractérisés par des latences faibles  Exemples : ◦ AND OR NOT

Rappel : Circuits combinatoires
Rappel : Circuits combinatoires

Le Multiplexeur : circuit 1 parmi 2 n

combinatoires Le Multiplexeur : circuit 1 parmi 2 n ◦ 2 n entrées, 1 seule sortie

2 n entrées, 1 seule sortie , n bits de sélection

Exemple: Multiplexeur 4 à 1.

Table de vérité ?

◦ Exemple: Multiplexeur 4 à 1. ◦ Table de vérité ?  Le démultiplexeur : ◦

Le démultiplexeur :

Opération inverse par rapport au multiplexeur

Entrée propagée sur 2 n sorties possibles en fonction des n bits de sélection

Table de vérité d’un démux 1 à 4


Rappel : Circuits combinatoires
Rappel : Circuits combinatoires

Les Décodeurs

Décode un Mot binaire : il ya n entrées et m ≤ 2 n sorties possibles

Exemple d’utilisation : décodage d’adresse de mémoire : mémoire 32 mots constitué de 4 blocks de mémoires 8 mots

Exemple : 2 4

de 4 blocks de mémoires 8 mots ◦ Exemple : 2  4  Les Encodeurs
de 4 blocks de mémoires 8 mots ◦ Exemple : 2  4  Les Encodeurs

Les Encodeurs

Opération inverse d’un décodeur m ≤ 2 n entrées possibles et n sorties

Exemple : Encodeur 4 2


Exemple de circuits combinatoires
Exemple de circuits combinatoires

Les circuits Arithmétiques

Le demi-additionneur

Table de vérité

Les circuits Arithmétiques ◦ Le demi-additionneur  Table de vérité • Circuit de réalisation : 10

Circuit de réalisation :

Les circuits Arithmétiques ◦ Le demi-additionneur  Table de vérité • Circuit de réalisation : 10

Exemple de circuits combinatoires
Exemple de circuits combinatoires

Additionneur Complet 1 bit :

Superposition de deux circuits demi-additionneurs

Table de vérité

1 bit : ◦ Superposition de deux circuits demi-additionneurs ◦ Table de vérité ◦ Circuit de
1 bit : ◦ Superposition de deux circuits demi-additionneurs ◦ Table de vérité ◦ Circuit de

Circuit de réalisation

1 bit : ◦ Superposition de deux circuits demi-additionneurs ◦ Table de vérité ◦ Circuit de

Exemple de circuits combinatoires
Exemple de circuits combinatoires

Additionneurs N bits

Exemple N = 4 bits

 Exemple de circuits combinatoires Additionneurs N bits ◦ Exemple N = 4 bits 12
Exemple de circuits combinatoires
Exemple de circuits combinatoires
Exemple de circuits combinatoires 13

13


Exemple de circuits combinatoires
Exemple de circuits combinatoires

Les UALs : Circuit combinatoire capable d'effectuer plusieurs fonctions

de base (arithmétique, logique, déplacement/rotation).

L’UAL fait habituellement partie intégrante du processeur

L’UAL prend en entrée les opérandes (A et B), ainsi que la fonction { effectuer (Contrôle). En sortie, nous retrouvons le résultat (F) et une

mise-à-jour des bits d'états (Status).

effectuer (Contrôle). En sortie, nous retrouvons le résultat (F) et une mise-à-jour des bits d'états (Status).

Construction de circuits combinatoires
Construction de circuits
combinatoires

Deux phases dans la constructions des circuits combinatoires

Recherche d’une solution { base d’équations :

établissement de la table de vérité (algèbre de Boole)

Simplification des équations trouvées

Règles de simplification , table de Karnaugh

Dissociation du design en sous blocks pour réduction de complexité

Règles de simplification , table de Karnaugh ◦ Dissociation du design en sous blocks pour réduction
 
Circuits Séquentiels
Circuits Séquentiels

Les circuits séquentiels sont caractérisés par une faculté de

mémorisation

Les sorties à un instant t dépendant des entrées de l’instant t-1 ainsi S t = f(E0, E1, E2…, S t-1 )

Les circuits séquentiels de base sont les bascules (flip-flops)

Les bascules : capables de conserver l’état de leur sortie même si la

: capables de conserver l’état de leur sortie même si la combinaison des signaux d’entrée ayant

combinaison des signaux d’entrée ayant provoqué cet état de sortie disparaît.

Circuits dépendant le plus souvent d’un signal d’Horloge ou clock (circuits synchrones)

0 1 2 Période
0
1
2
Période

Notion de synchronisme
Notion de synchronisme

Bascules Synchrone/Asynchrone

Bascule synchrone : changement d’état de la basculé cadencé sur

front d’horloge

Bascule

synchrone

Entrées

cadencé sur front d’horloge Bascule synchrone Entrées sorties Horloge ◦ Bascule Asynchrone : changement

sorties

sur front d’horloge Bascule synchrone Entrées sorties Horloge ◦ Bascule Asynchrone : changement d’état
sur front d’horloge Bascule synchrone Entrées sorties Horloge ◦ Bascule Asynchrone : changement d’état

Horloge

Bascule Asynchrone : changement d’état cadencé sur le changement d’état des entrées aux mêmes


Exemple de circuits séquentiels
Exemple de circuits séquentiels

Bascules élémentaires

Bascule RS Asynchrone

Bascule RS synchrone

si H= 0 Q= Q- si H= 1 fonctionnement RS

Bascule D-latch

si H = 1 Q = D

si H = 0

Q= Q-

Bascule D synchrone

si front montant de H Q = D

Sinon Q= Q-

Bascule JK synchrone

montant de H Q = D Sinon Q= Q- ◦ Bascule JK synchrone J   Q
montant de H Q = D Sinon Q= Q- ◦ Bascule JK synchrone J   Q

J

 

Q



K

K
Q= Q- ◦ Bascule JK synchrone J   Q  K J K Q Q 0
Q= Q- ◦ Bascule JK synchrone J   Q  K J K Q Q 0

J

K

Q

Q

0

0

x

x

0

1

1

0

1

0

0

1

1

1

x

x

Bascule T

K J K Q Q 0 0 x x 0 1 1 0 1 0 0
K J K Q Q 0 0 x x 0 1 1 0 1 0 0

18


Exemple de circuits séquentiels
Exemple de circuits séquentiels

Les registres de mémorisation

 Exemple de circuits séquentiels Les registres de mémorisation  Les registres à décalage 19

Les registres à décalage


Exemple de circuits séquentiels
Exemple de circuits séquentiels

Les compteurs asynchrones

Exemple : compteur modulo 8 => 3 bascules JK

Qa Qb Qc « 1 » J Q J Q J Q h RaZ K
Qa
Qb
Qc
« 1 »
J
Q
J
Q
J
Q
h
RaZ
K
K
K
1
2
3
4
5
6
7
0
N
Qc
Qb
Qa
t
0
0
0
0
1
0
0
1
t
2
0
1
0
3
0
1
1
t
4
1
0
0
5
1
0
1
6
1
1
0
t
7
1
1
1

h

Qa

Qb

Qc

20

Exemple de circuits séquentiels  Les compteurs synchrones Qa Qb Qc « 1 » &
Exemple de circuits séquentiels
 Les compteurs synchrones
Qa
Qb
Qc
« 1 »
&
J
Q
J
Q
J
Q
a
b
c
h
K
K
K

Exemple de circuits séquentiels
Exemple de circuits séquentiels

Machines à états finis

 Exemple de circuits séquentiels Machines à états finis 22
Concept de machine d’état Present State Input Next State Output Even 0 Even 0 Even
Concept de machine d’état
Concept de machine d’état

Present State

Input

Next State

Output

Even

0

Even

0

Even

1

Odd

0

Odd

0

Odd

1

Odd

1

Even

1

Table de transitions symbolique

Reset

Odd 1 Even 1 Table de transitions symbolique Reset Even [0] 1 0 1 Odd [1]
Odd 1 Even 1 Table de transitions symbolique Reset Even [0] 1 0 1 Odd [1]
Even [0]
Even
[0]
Even 1 Table de transitions symbolique Reset Even [0] 1 0 1 Odd [1] Present State

1

0

1 Table de transitions symbolique Reset Even [0] 1 0 1 Odd [1] Present State Input

1

Odd [1]
Odd
[1]

Present State

Input

Next State

Output

0

0

0

0

0

1

1

0

1

0

1

1

1

1

0

1

0

Table de transitions encodées

 
Machine de Moore
Machine de Moore

Les sorties dépendent des états présents.

Un bloc de logique combinatoire traite les entrées et l’état

antérieur des sorties et alimente un bloc de bascules en sortie. Ainsi, les sorties changent de manière synchrone sur un front d’horloge.

et alimente un bloc de bascules en sortie. Ainsi, les sorties changent de manière synchrone sur
 
Machine de Moore
Machine de Moore

Description des sorties comme des états concurrents

Dépend seulement des états

  Machine de Moore Description des sorties comme des états concurrents Dépend seulement des états

Machine de Mealy
Machine de Mealy

A la différence de la machine de Moore, la sortie peut changer lors d’un changement de la sortie et ce indépendamment de l’horloge : Une machine de Mealy est donc asynchrone.

lors d’un changement de la sortie et ce indépendamment de l’horloge : Une machine de Mealy
 
Machine de Mealy
Machine de Mealy

Description des sorties comme des états concurrents

Dépend des états et des entrées

  Machine de Mealy Description des sorties comme des états concurrents Dépend des états et

Exemple 1: Machine de Moore
Exemple 1: Machine de Moore

Machine de Moore reconnaissant la séquence 10

 Exemple 1: Machine de Moore Machine de Moore reconnaissant la séquence 10 28
Exemple 2: Machine de Mealy
Exemple 2: Machine de Mealy
Synthèse d’architecture Numérique Allocation matérielle des ressources 30
Synthèse d’architecture Numérique Allocation matérielle des ressources
Synthèse d’architecture Numérique
Allocation matérielle des ressources

Allocation des ressources matérielles
Allocation des ressources
matérielles

Choisir les opérateurs à utiliser pour implémenter une fonction

donnée

Dépend du critère à optimiser ( surface , latence,

 Dépend du critère à optimiser ( surface , latence, consommation)  Dépend de la cible

consommation)

Dépend de la cible technologique visée (ASIC ou FPGA)

Exemple : soit la fonction Sum = A+B+C+D

Architecture combinatoire
Architecture combinatoire

Allocation matérielle de ressources pour chaque opération

Sachant que le chemin critique du circuit est égal à 30 ns, quelle est la fréquence maximale de fonctionnement de ce circuit ?

Quelle est la latence circuit ? Quelle est sa cadence ?

Architecture pipeline
Architecture pipeline

Architecture introduisant des étages de pipeline

Le chemin critique est réduit ( 10 ns), quelle est la fréquence maximale de fonctionnement du circuit ?

Quelle est la cadence du circuit ?

Quelle est la latence du circuit ?

Comparer la surface du circuit avec celle du transparent précédent

Architecture Séquentielle  Calcul effectué de manière séquentielle et avec réutilisation des ressources 
Architecture Séquentielle
Architecture Séquentielle

Calcul effectué de manière séquentielle et

avec réutilisation des

ressources

Impact sur la surface ?

Impact sur la latence ?

Cadence ?

Architecture Séquentielle  Sachant que la latence du circuit est de 10ns et que le
Architecture Séquentielle
Architecture Séquentielle

Sachant que la latence du circuit est de 10ns et que le contrôleur est composé de 3 états séquentiels

Quelle est le fréquence maximale du circuit

Quelle est sa latence


Contraintes de conception d’un circuit numérique
Contraintes de conception d’un
circuit numérique

Surface

Dépend étroitement du nombre de ressources matérielles élémentaires utilisé pour réaliser un circuit

Influe directement sur le coût du circuit

un circuit ◦ Influe directement sur le coût du circuit  Latence (fréquence de fonctionnement) ◦

Latence (fréquence de fonctionnement)

Détermine la fréquence maximale de fonctionnement du

circuit

Consommation

Détermine la durée d’autonomie du circuit , critère crucial pour les circuits mobiles alimentés par batterie.

Time to Market

Sureté de fonctionnement

Evolution des processeurs
Evolution des processeurs

Augmentation du nombre de transistors suit la loi de Moore

Fréquence stabilisée autour de 3 GHz contrainte : consommation et dissipation de chaleur


Synthèse d’architecture Numérique
Synthèse d’architecture Numérique

La synthèse d’architecture numérique revient à retrouver à partir

d’équations le circuit numérique réalisant la fonction voulue sous un

certains nombre de contraintes ( surface, consommation, fréquence de fonctionnement ou latence)

Les étapes aboutissant à la définition du circuit optimisé :

Description du circuit par des équations booléennes ( algèbre de

du circuit par des équations booléennes ( algèbre de Boole) ou par des composant prédéfinis en

Boole) ou par des composant prédéfinis en determinant les interconnexion entre ces composants

Exemple : demi-additionneur ( équations booléennes) /

additionneur complet (équations booléennes ou 2 demi-

additionneur)

Optimisation des équations obtenues (table de kargneau)

Soit la fonction Y suivante : Y = A xor B

Circuit réalisant la fonction

obtenues (table de kargneau)  Soit la fonction Y suivante : Y = A xor B

Synthèse d’architecture Numérique
Synthèse d’architecture Numérique

Synthèse d’un filtre numérique FIR d’ordre N

Soit le filtre FIR d’équation suivante :

d’ordre N  Soit le filtre FIR d’équation suivante : Y ( n )  N

Y ( n )

N 1

h x n

i

i 0

i

Plusieurs implémentations possibles chacune améliore un

critère donné :

Architecture directe

Architecture directe pipeline

Architecture { base d’unité de multiplication accumulation


Exemple 2: filtre FIR numérique
Exemple 2: filtre FIR numérique

Architecture directe

Entrée -1 Z -1 Z -1 Z -1 Z X X X X + +
Entrée
-1
Z
-1
Z
-1
Z
-1
Z
X
X
X
X
+
+
+
Sortie

Multiplications

par des

constantes


Exemple 2 : filtre FIR numérique
Exemple 2 : filtre FIR numérique

Architecture avec étages de pipeline

Entrée -1 Z -1 Z -1 Z -1 Z Multiplications par des X X X
Entrée
-1
Z
-1
Z
-1
Z
-1
Z
Multiplications
par des
X X
X
X
constantes
-1
Z
-1
Z
-1
Z
-1
Z
+
+
-1
Z
-1
Z
+
Sortie

Exemple 2 : filtre FIR numérique
Exemple 2 : filtre FIR numérique

Architecture { base d’unité de multiplication- Accumulation

Entrée

-1 -1 -1 -1 Z Z Z Z Mux Coefficients du filtre Reg Sortie Mux
-1
-1
-1
-1
Z
Z
Z
Z
Mux
Coefficients du
filtre
Reg
Sortie
Mux
Flot de conception des circuits numériques : Importance du VHDL
Flot de conception des circuits
numériques : Importance du
VHDL
 
Diversité des cibles technologiques
Diversité des cibles technologiques

Les circuits programmables (FPGAs)

Les circuits dédiés (ASICs)

Les SoCs

Les NoCs

Les circuits dédiés (ASICs)  Les SoCs  Les NoCs  Rq: nous ne considérerons dans

Rq: nous ne considérerons dans ce cours que les flots

de conception classiques sur FPGA et ASIC , les SoCs

seront traités dans le cours Architecture de SoCs fait en parallèle avec ce cours.

Diversité des circuits programmables
Diversité des circuits
programmables
 
Logic Devices)
Logic Devices)

Les CPLD (Complex Programmable

Ensemble de blocks logiques

Chaque block logique est constitué de macro-cellules

Une macro-cellule contient une fonction combinatoire + bascule

L’ensemble est connecté par une matrice de connexion

Technologie EPROM ou FLASH

combinatoire + bascule  L’ensemble est connecté par une matrice de connexion  Technologie EPROM ou
combinatoire + bascule  L’ensemble est connecté par une matrice de connexion  Technologie EPROM ou

Les FPGAs(Field Programmable Gate Array)
Les FPGAs(Field Programmable
Gate Array)

Matrice de blocks logiques ( fonction logiques, multiplexeurs, LUT)

de blocks logiques ( fonction logiques, multiplexeurs, LUT)  Densité plus grande  Matrice d’interconnexion

Densité plus grande

Matrice d’interconnexion

Technologie SRAM ou Antifusible

Plusieurs constructeurs de circuits

FPGA : XILINX, ALTERA, ACTEL

 Technologie SRAM ou Antifusible  Plusieurs constructeurs de circuits FPGA : XILINX , ALTERA ,

Exemple FPGA VIRTEX et SPARTAN II de Xilinx
Exemple FPGA VIRTEX et
SPARTAN II de Xilinx

Détail d’un slice d’un FPGA VIRTEX et SPARTAN II

Xilinx Détail d’un slice d’un FPGA VIRTEX et SPARTAN II  D’autre fonctions spécifiques peuvent être

D’autre fonctions spécifiques peuvent être implanté en dur dans un FPGA

Des Multiplieurs

Blocks d’entrées/sorties

Des PLL


Les ASICs
Les ASICs

Des circuits spécifiques

Conçu pour application particulière

Meilleures performances (surface, consommation et fréquence)

◦ Conçu pour application particulière ◦ Meilleures performances (surface, consommation et fréquence) 49

Flot de conception
Flot de conception

Un ingénieur confirmé peut valider 100 portes logique par jour

Pour un design de 12 millions de porte, il lui faut 500 ans et 75 millions de dollars

de porte, il lui faut 500 ans et 75 millions de dollars Nécessité de flot de
de porte, il lui faut 500 ans et 75 millions de dollars Nécessité de flot de

Nécessité de flot de conception capable d’accélérer et de réduire les coûts de conception

Procédure de développement d’un composant programmable 51
Procédure de développement d’un composant programmable
Procédure de
développement
d’un composant
programmable
Importance du VHDL : modélisation et synthèse ! 52

Importance du VHDL : modélisation

et synthèse !
et synthèse !
Importance du VHDL : modélisation et synthèse ! 52

Qu’est ce qu’un synthétiseur ?
Qu’est ce qu’un synthétiseur ?

Flot de synthèse XILINX

 Qu’est ce qu’un synthétiseur ? Flot de synthèse XILINX 53
Structure d’un programme VHDL 54
Structure d’un programme VHDL
Structure d’un programme VHDL
 
Historique du langage
Historique du langage

VHDL ( VHSIC Hardware Description Langage)

Développé dans les années 80 par les américains

angage) Développé dans les années 80 par les américains  Devenu standard IEEE en 1987 

Devenu standard IEEE en 1987

Updaté et révisé en 1993

Le langage est utilisé pour

Concevoir des ASIC

Programmer les circuits programmables ( CPLD, FPGAs)

Concevoir des modèles de simulation numérique et des

méthodes de tests de ces circuits


Eléments d’un programme VHDL
Eléments d’un programme VHDL

Entité , architecture, configuration, packetage, packetage-body

 Eléments d’un programme VHDL Entité , architecture , configuration , packetage , packetage-body 56

ARCHITECTURE

ENTITE

Association Entité/Architecture
Association Entité/Architecture

Entity Nom_de_l’entité IS

{

description des entrées/sorties de la structure logique ( type : bit, bit_vector ……) (direction : in, out ,inout ….)

}

END Nom_de_l’entité ;

Architecture Nom_de_larch OF Nom_de_l’entité IS

{

Zone de déclaration

BEGIN

Description de la structure logique

}

END Nom_de_larch ;

Exemple Porte AND2 Entity And2 is Port (A : in bit ; B: in bit
Exemple Porte AND2
Exemple Porte AND2

Entity And2 is

Port (A : in bit;

B: in bit ; Y : out bit); End And2;

: in bit ; B: in bit ; Y : out bit ); End And2 ;
: in bit ; B: in bit ; Y : out bit ); End And2 ;

Architecture Arch1 of And2 is Begin

Y <= A and B ;

End Arch1;

 
Association Entité/Architecture
Association Entité/Architecture

A une entité peuvent être associées plusieurs architectures

Exemple demi- additionneur bit :

Plusieurs descriptions possibles du fonctionnement d’un demi-additionneur

Exemple demi- additionneur bit : ◦ Plusieurs descriptions possibles du fonctionnement d’un demi-additionneur 59
Description comportementale (flot de données)
Description comportementale (flot
de données)

Entity additionneur is

Port ( A: in bit ; B: in bit; Som : out bit ; Ret : out bit

End additionneur;

);

Architecture flot_donnee of additionneur is

Begin Som <= A xor B; Ret <= A and B;

End flot_donnee;

Begin
Begin
Description comportementale
Description comportementale

Architecture comportementale of additionneur is

P : process (A,B) begin If (A= ‘0’ and B = ‘0’) then som <= ‘0’ ; Ret <= ‘0’ ; elsif ( A= ‘0’ and B= ‘1’ ) then som <= ‘1’ ; Ret <= ‘0’ ;

elsif (A= ‘1’ and B= ‘0’ ) then

som <= ‘1’ ; Ret <= ‘0’ ; elseif (A= ‘1’ and B= ‘1’ ) then

<= ‘0’ ; elseif (A= ‘1’ and B= ‘1’ ) then som <= ‘0’ ; Ret
<= ‘0’ ; elseif (A= ‘1’ and B= ‘1’ ) then som <= ‘0’ ; Ret

som <= ‘0’ ;

Ret <= ‘1’ ; end if ; End process P;

End comportementale ;

61

 
Description structurelle
Description structurelle

Description vhdl d’une porte XOR

Description vhdl d’une porte ET

Description Vhdl du demi-additionneur à base de ces composants

Vhdl du demi-additionneur à base de ces composants Entity XOR2 is Port ( A: in bit

Entity XOR2 is Port ( A: in bit ; B: in bit;

S : out bit

);

End XOR2;

Architecture ARCH_XOR of XOR2 is

begin S <= A xor B; End ARCH_XOR ;

Entity ET is Port ( A: in bit ; B: in bit; S : out bit );

End ET;

Architecture ARCH_ETof ET is begin

S <= A and B;

End ARCH_ET ;

Description structurelle Architecture structurelle of additionneur is component XOR2 is Port ( A: in bit
Description structurelle
Description structurelle

Architecture structurelle of additionneur is component XOR2 is Port ( A: in bit ;

B: in bit;

S : out bit );

End component XOR2; component ET is

Port ( A: in bit ;

B: in bit;

S : out bit );

Entity additionneur is

Port ( A: in bit ; B: in bit; Som : out bit ; Ret : out bit

End additionneur;

);

Som : out bit ; Ret : out bit End additionneur ; ); End component ET

End component ET;

begin C1 : XOR2 port map( A , B, Som);

C2 : ET

port map( A, B, Ret);

End structurelle ;

Les composants L’utilisation d’un couple entité/architecture à l’intérieur d’un autre passe par la déclaration
Les composants
Les composants

L’utilisation d’un couple entité/architecture à

l’intérieur d’un autre passe par la déclaration et

l’instanciation d’un composant

L’utilisation des composants permet un codagepar la déclaration et l’instanciation d’un composant hiérarchique pour une conception descendante L’

hiérarchique pour une conception descendante

un codage hiérarchique pour une conception descendante L’ instantiation d’un composant a pour effet

L’instantiation d’un composant a pour effet d’associer les signaux effectifs (ceux de l’architecture appelante) aux instantiation d’un composant a pour effet d’associer les signaux effectifs (ceux de l’architecture appelante) aux signaux formels (ceux du composant). Elle ressemble à un appel de fonction ou de procédure

Exemple 2 : Utilisation de composants in1 a cout in2 Half adder b carry sum
Exemple 2 : Utilisation de composants
Exemple 2 : Utilisation de
composants
in1 a cout in2 Half adder b carry sum a cout cin Half adder result
in1
a
cout
in2
Half adder
b
carry
sum
a
cout
cin
Half adder
result
b sum

ENTITY half_adder IS PORT (a,b: IN std_logic;

sum,cout : OUT std_logic);

END half_adder;

ARCHITECTURE beh OF half_adder IS begin sum <= a XOR b; cout <= a AND b;

end beh;

ENTITY OR_2 IS PORT(a,b: IN std_logic; c : OUT std_logic); END OR_2; ARCHITECTURE beh OF OR_2 IS

begin

c <= a OR b; end beh;

Exemple 2 : Utilisation de composants ENTITY full_adder IS PORT(in1,in2,cin: IN std_logic; result,carry : OUT
Exemple 2 : Utilisation de composants
Exemple 2 : Utilisation de
composants

ENTITY full_adder IS

PORT(in1,in2,cin: IN std_logic; result,carry : OUT std_logic);

END full_adder;

ARCHITECTURE structural OF full_adder COMPONENT half_adder

PORT(a,b : IN std_logic; sum,carry : OUT std_logic);

END COMPONENT;

COMPONENT OR_2 PORT(a,b : IN std_logic; c : OUT std_logic);

END COMPONENT;

SIGNAL s1,s2,s3 : std_logic; BEGIN H1 : half_adder PORT MAP(a=>in1, b=>in2, sum=> s1, cout => s3); H2 : half_adder PORT MAP(a=> s1, b=> cin, sum => result, cout => s2); O1 : or_2 PORT MAP(a=>s2, b=> s3, c=> carry); END structural;

cin, sum => result, cout => s2); O1 : or_2 PORT MAP(a=>s2, b=> s3, c=> carry);

Qu’est ce qu’une configuration ?
Qu’est ce qu’une configuration ?

Permet de choisir une des architectures à associer à une entité

pour utilisation lors de la synthèse ou la simulation

de choisir une des architectures à associer à une entité pour utilisation lors de la synthèse
de choisir une des architectures à associer à une entité pour utilisation lors de la synthèse

Qu’est ce qu’un package, package body ?
Qu’est ce qu’un package, package
body ?

Permet de regrouper les données communes à plusieurs

programmes vhdl

Sauvegarde des constantes communes

Sauvegarde de tous les composant d’un projet donné

◦ Sauvegarde de tous les composant d’un projet donné Package my_pack is Constant Tp : time

Package my_pack is Constant Tp : time;

End my_pack;

-- déclaration de la constante

Package body my_pack_body of my_pack is

Constant Tp : time : = 27;

End my_pack_body;

Utilisation d’un package

Use work.my_pack.all ;

-- Initialisation de la constante

 ◦
Instructions concurentes vs séquentielles ?
Instructions concurentes vs
séquentielles ?

Instructions concurrentes

S’exécutent en parallèle

Architecture flot_donnee of additionneur is

Begin

Architecture flot_donnee of additionneur is Begin ◦ L’ordre d’écriture n’a pas de valeur ◦ Les

L’ordre d’écriture n’a pas de valeur

Les valeurs de Som et Ret sont réactualisés en permanence à

Som <= A xor B;

Ret <= A and B;

End flot_donnee;

chaque changement de A et B

3 familles d’ Instructions concurrentes

Les instructions d’affectation

Les instructions conditionnelles du type

S <= A and B;

affectation When condition else ….

With signal Select affectation when condition else

Instruction When else Entity Mux_4_1 is Port ( A, B, C, D: in bit ;
Instruction When else
Instruction When else

Entity Mux_4_1 is Port ( A, B, C, D: in bit ;

sel : in bit_vector( 0 to 1);

( A, B, C, D: in bit ; sel : in bit_vector( 0 to 1); End

End Mux_4_1;

S: out bit

);

Architecture arch_mux of Mux_4_1 is begin S <= A when sel =‘00else

B when sel =‘01else

C when sel =‘11else

D;

End arch_mux ;

Instruction With select When Entity Mux_4_1 is Port ( A, B, C, D: in bit
Instruction With select When
Instruction With select When

Entity Mux_4_1 is Port ( A, B, C, D: in bit ;

sel : in bit_vector(1 downto 0);

( A, B, C, D: in bit ; sel : in bit_vector(1 downto 0); End Mux_4_1

End Mux_4_1;

S: out bit

);

Architecture arch_mux _2of Mux_4_1 is

begin with sel select S <= A when ‘00’, B when ‘01’, C when ‘11’, D when others;

End arch_mux_2 ;

Instructions de génération Utilisable en mode concurrent (hors processus) Elle permet de générer plusieurs répliques
Instructions de génération
Instructions de génération

Utilisable en mode concurrent (hors processus) Elle permet de générer plusieurs répliques d ’un composant ou d’équations

Forme générale :

etiquette : for variable_de_boucle in valeur_debut to valeur_fin generate

{instruction concurrente};

to valeur_fin generate {instruction concurrente}; end generate etiquette; Il est possible d’imbriquer

end generate etiquette;

Il est possible d’imbriquer plusieurs instructions generate, chacune possédant son étiquette et sa variable de boucle propres

Forme conditionnelle :

etiquette : for variable_de_boucle in valeur_debut to valeur_fin generate

{if instruction then generate

{instruction combinatoire}

end generate; }

end generate etiquette;

72

Exemple : registre à décalage Génération d ’un registre à décalage 32 bits série -parallèle
Exemple : registre à décalage
Exemple : registre à décalage

Génération d ’un registre à décalage 32 bits série-parallèle par association de bascules D

Library ieee; use ieee.std_logic_1164.all ; entity REG_SP is port(CLK,SI: in std_logic; PO: OUT std_logic_vector(31
Library ieee;
use ieee.std_logic_1164.all ;
entity REG_SP is
port(CLK,SI: in std_logic;
PO: OUT std_logic_vector(31 downto 0);
end REG_SP;
use work.RTLPKG.all ; -- accès aux comp. élt.
architecture ACRHREG_SP of REG_SP is
signal TEMP: std_logic_vector(31 downto 0);
begin
premier: DFF port map (SI, CLK, TEMP(0));
autres : for I in 0 to 30 generate
boucle: DFF port map (TEMP(I),CLK,TEMP(I+1));
end generate
PO <= TEMP;
end ARCHREG_SP;

SI

CLK PO(0) PO(1) PO(31)
CLK
PO(0)
PO(1)
PO(31)
DFF est la déclaration d ’un composant (bascule D) du paquetage RTLPKG Génération du 1er
DFF est la déclaration d ’un composant
(bascule D) du paquetage RTLPKG
Génération du 1er étage du registre à
décalage
Génération itérative des 31 étages suivants

Instructions séquentielles
Instructions séquentielles

Les instructions séquentielles sont codés { l’intérieur d’un

process

Deux process sont concurrents mais les instructions qu’ils contiennent sont séquentielles

les instructions qu’ils contiennent sont séquentielles Architecture arch1 of ET is Begin S <= A and

Architecture arch1 of ET is

Begin S <= A and B;

End arch1;

arch1 of ET is Begin S <= A and B; End arch1 ; Architecture arch2 of

Architecture arch2 of ET is Begin P : process (A,B)

begin

if (A= ‘1’ and B= ‘1’ ) then S <= ‘1’ ; else

S <= ‘0’ ; end if ; End process P;

Instructions séquentielles/process En VHDL les instructions d’une architecture sont évaluées en permanence et toutes
Instructions séquentielles/process
Instructions séquentielles/process

En VHDL les instructions d’une architecture sont évaluées

en permanence et toutes simultanément. Pour avoir un

fonctionnement séquentiel il faut définir un processus.

Un processus (Process) est un groupe délimité d’instructions caractérisé par :

un groupe délimité d’instructions caractérisé par : ◦ Exécution du processus à chaque changement d

Exécution du processus à chaque changement d ’état d ’un des signaux auxquels il est déclaré sensible

Exécution séquentielle des instructions du processus

Les modifications apportées aux valeurs de signaux par les instructions prennent effet à la fin du processus

Les processus : exemples Library ieee; use ieee.std_logic_1164.all ; entity BASCULE_D is port(D, CLK: in
Les processus : exemples
Les processus : exemples

Library ieee; use ieee.std_logic_1164.all ; entity BASCULE_D is port(D, CLK: in std_logic;

Q: OUT std_logic ); end BASCULE_D;

architecture ACH_BASCULE_D of BASCULE_D is begin P : process (CLK) begin if (CLK=‘ 1 ’) then Q <= D ; end if ; end process;

end ACH_BASCULE_D;

P : process (CLK) begin if (CLK=‘ 1 ’) then Q <= D ; end if

D

CLK

P : process (CLK) begin if (CLK=‘ 1 ’) then Q <= D ; end if
P : process (CLK) begin if (CLK=‘ 1 ’) then Q <= D ; end if
Q
Q
P : process (CLK) begin if (CLK=‘ 1 ’) then Q <= D ; end if

Instructions séquentielles/process
Instructions séquentielles/process

Un process est suivi de la déclaration de certains signaux exp :

process(A,B)

A, B sont les signaux qui vont provoquer l’exécution du process (liste de sensitivité) => le process ne s’exécute que si au moins 1 des signaux constituant la liste de sensitivité a changé de valeur

constituant la liste de sensitivité a changé de valeur  Instructions séquentielles ◦ L’instruction If

Instructions séquentielles

L’instruction If then else

L’instruction for

L’instruction case

•
Les instructions séquentielles
Les instructions séquentielles

L’instruction IF

• Les instructions séquentielles L’instruction IF IF condition1 THEN ELSIF condition2 THEN ELSIF condition3

IF condition1 THEN ELSIF condition2 THEN ELSIF condition3 THEN …. END IF;

IF …… THEN

IF ……. THEN ELSIF ……. THEN

END IF;

….

END IF;

•
Les instructions séquentielles
Les instructions séquentielles

L’instruction FOR

FOR parametre IN intervalle LOOP

-- Instructions séquentielles

END LOOP;

Exemple

FOR i IN

0 to 3 LOOP

if A=i then S <= B; end if ;

END LOOP;

•
Les instructions séquentielles
Les instructions séquentielles

L’instruction CASE

CASE signal IS

WHEN valeur1 => instructions séquentielles;

WHEN valeur2 => instructions séquentielles;

WHEN OTHERS => instructions séquentielles;

END CASE;

Instruction souvent utilisée pour décrire les machines d’états


Les instructions séquentielles
Les instructions séquentielles

Instruction de boucle « whileloop » :

while condition loop {instructions} end loop ;

séquentielles Instruction de boucle « while … loop » : while condition loop {instructions} end loop
 
Les objets VHDL
Les objets VHDL

Les ports d’entrées/sorties : Sont définis dans l’entité (entity)

4 modes d’entrées/sorties possibles

IN : valeurs lues seulement pas d’affectation

OUT :

INOUT : valeurs affectées au port avec l’opérateur <=

BUFFER : valeurs affectées ( lecture et écriture) au port avec l’opérateur <=

valeurs affectées (écriture seule) au port avec l’opérateur <=

 
Les Objets VHDL
Les Objets VHDL

Les signaux

Déclarés dans la zone de déclaration de l’architecture (locaux) ou dans un

package (globaux)

Exemple :

(locaux) ou dans un package (globaux)  Exemple : Entity ET is Port ( A :

Entity ET is Port ( A : in bit; B : in bit ;

S : out bit);

End ET;

Architecture arch of ET is signal temp : bit := 1; initialisation du signal begin temp <= A and B;

S <= temp ; End arch;

--declaration et


Les signaux VHDL
Les signaux VHDL

Mis à jour { la fin d’un cycle de simulation

Interpréter l’exécution temporelle des instructions suivantes :

l’exécution temporelle des instructions suivantes : ◦ A1 <= A2 ; A2<=A3; sachant qu’initialement A1

A1 <= A2 ; A2<=A3; sachant qu’initialement A1 := 5; A2 :=2 ; A3:=1;

Tracer l’évolution des signaux par rapport { un signal d’horloge clk

Une affectation de signaux de N bits consiste à placer un

registre N bits entre ces deux signaux

Les port d’entrées sorties vs les signaux Architecture arch of test is begin S<= A
Les port d’entrées sorties vs les signaux
Les port d’entrées sorties vs les
signaux
Architecture arch of test is begin S<= A and B; Cout<= S or B ;
Architecture arch of test is
begin
S<= A and B;
Cout<= S or B ;
End arch;

Entity test is

Port ( A : in bit;

B : in bit ; S : out bit ; Cout : out bit); End test;

bit ; S : out bit ; Cout : out bit ); End test ; Architecture

Architecture arch of test is signal temp : bit ;

begin temp<= A and B; S <= temp ; Cout<= temp or B ; End arch;


Les constantes
Les constantes

Déclarées avant l’utilisation

Dans l’architecture : locaux

Dans un package : globaux

L’affectation se fait avec l’opérateur :=

Architecture arch of test is constant volt : std_logic := ‘1’ ; constant period : time := 20 ns ;

begin

.

.

End arch;



Les variables
Les variables

L’ update des variables se fait de manière instantanée

contrairement aux signaux

Affectation par :=

A1 := A2 ; A2:=A3; sachant qu’initialement A1 := 5; A2 :=2 ;

:= A2 ; A2:=A3; sachant qu’initialement A1 := 5; A2 :=2 ; A3:=1;  !! Attention

A3:=1;

!! Attention : les variables peuvent ne pas être synthétisables.

Les variables sont déclarés { l’intérieur d’un process

Exemple

P : process (A,B)

variable A1, A2 : bit ;

begin A1 := A2 ;

End process P;


Les mots réservés
Les mots réservés

ABS ACCESS AFTER ALIAS ALL AND ARCHITECTURE

ARRAY ASSERT ATTRIBUTE BEGIN BLOCK BODY BUFFER BUS CASE COMPONENT CONFIGURATION CONSTANT DISCONNECT DOWNTO ELSE ELSIF END

ENTITY EXIT FILE FOR FUNCTION GENERATE

GENERIC GUARDED IF IN INOUT IS LABEL LIBRARY LINKAGE LOOP MAP MOD NAND NEW NEXT NOR NOT NULL OF ON OPEN OR OTHERS OUT PACKAGE

PORT PROCEDURE PROCESS RANGE RECORD

REGISTER REM REPORT RETURN SELECT SEVERITY

SIGNAL SUBTYPE THEN TO TRANSPORT TYPE UNITS UNTIL USE VARIABLE WAIT WHEN WHILE

WITH XOR

REPORT RETURN SELECT SEVERITY SIGNAL SUBTYPE THEN TO TRANSPORT TYPE UNITS UNTIL USE VARIABLE WAIT WHEN

Les types de données
Les types de données

Types scalaires prédéfinis

integer : par défaut 32bits mais limites paramétrables.

ex.: signal val : integer range 0 to 15 implique que val ne peut prendre que les 16 valeurs de 0 à 15. Il sera donc codé sur 4 bits

natural : sous-type de integer, limité aux nombres >=0

positive : sous-type de integer, limité aux nombres >0

real : (non synthétisable pour les simus seulement)

time : (non synthétisable pour les simus seulement) x := 20

ns;

Types énumérations prédéfinis

character, string : (ex: 'a', "bonjour")

bit, bit_vector : seulement 0 ou 1 (ex. : '0', '1', "0101") type

peu ou pas utilisé

boolean : false ou true


Les types de données en VHDL
Les types de données en VHDL

std_logic et std_logic_vector( package std_logic_1164) : 9 états

possibles dont 4 synthétisables

0 : bas

1 : haut

Z : haute impédance

- : indifférent

Ex: signal s : std_logic; -- représente 1 bit

signal bus : std_logic_vector( 7 downto 0); -- représente un vecteur (un bus) de 8 bits

bus(7) représente le bit de poids fort et bus(0) le bit du poids faible

signal toto : std_logic_vector( 0 to 3); -- représente un vecteur (un bus) de 4 bits

toto(0) représente le bit de poids fort et toto(3) le bit du poids faible

s <= ‘1’; -- notez le simple cote

bus <= "01-10ZZZ" ; -- notez le double cote

bus(1) <= s and bus(2) ;

toto <= bus (7 downto 4);

affectation rapide d'un vecteur : bus <= (others => '0') bus <=

"00000000"

90


Les types de données en VHDL
Les types de données en VHDL

Les tableaux :

Tableau 1 dimension

type table is array (0 to 3) of bit;

création d’un type tableau de 3 éléments de type bit chacun

signal x :table; instanciation d’un signal x de type table

Tableau 2 dimensions type table is array (0 to 3, 7 downto 0) of bit;

signal x :table;

x(2,4)<='1';

Exemple : Instantiation d’une mémoire ROM 16 x 8bits Type romtype is array ( 0 to 15) of std_logic_vector (7 downto 0);

constant my_rom : romtype := ( "FF", “AA",…,“EE");


Les types en VHDL
Les types en VHDL

Les types personnalisés

Exemple 1 :

type etat is (debut, fin, stop);

signal x : etat; x<=debut;

Exemple 2 :

type montype is integer range 0 to 31; signal vala : montype;

-- idéal pour une machine d'états

Les opérateurs VHDL Opérateurs logiques (sur booléens, bits et dérivés) Opérateurs relationnels (sur types scalaires
Les opérateurs VHDL
Les opérateurs VHDL

Opérateurs logiques (sur booléens, bits et dérivés)

VHDL Opérateurs logiques (sur booléens, bits et dérivés) Opérateurs relationnels (sur types scalaires ou dérivés
VHDL Opérateurs logiques (sur booléens, bits et dérivés) Opérateurs relationnels (sur types scalaires ou dérivés

Opérateurs relationnels (sur types scalaires ou dérivés (signed et unsigned) )

(sur booléens, bits et dérivés) Opérateurs relationnels (sur types scalaires ou dérivés (signed et unsigned) )
Les Opérateurs en VHDL Opérateurs bits (sur vecteurs de bits et types numériques) : Opérateurs
Les Opérateurs en VHDL
Les Opérateurs en VHDL

Opérateurs bits (sur vecteurs de bits et types numériques) :

bits (sur vecteurs de bits et types numériques) : Opérateurs arithmétiques (sur les types numériques :

Opérateurs arithmétiques (sur les types numériques : entiers, signés,

non signés, flottant) :

numériques : entiers, signés, non signés, flottant) : Opérateurs de décalage (sur les tableaux de bits,
numériques : entiers, signés, non signés, flottant) : Opérateurs de décalage (sur les tableaux de bits,

Opérateurs de décalage (sur les tableaux de bits, std_logic_vector, signed et unsigned) : sll, srl, sla, sra, rol, ror

Les bibliothèques  VHDL peut accueillir au moins 2 types de bibliothèques : • STD
Les bibliothèques
VHDL peut accueillir au moins 2 types de bibliothèques :
STD bibliothèque fournie par la norme VHDL
Library IEEE;
• WORK bibliothèque par défaut de l’utilisateur
use IEEE.STD_logic_1164.ALL ;
 Les modules VHDL analysés sont toujours stockés par défaut
dans la bibliothèque WORK
Entité Architecture Déclaration de package Compilateur
Entité
Architecture
Déclaration de
package
Compilateur
Corps du package
Corps du
package
Architecture Déclaration de package Compilateur Corps du package Configuation bibliothèque Editeur de liens 95

Configuation

Architecture Déclaration de package Compilateur Corps du package Configuation bibliothèque Editeur de liens 95
Architecture Déclaration de package Compilateur Corps du package Configuation bibliothèque Editeur de liens 95

bibliothèque

Editeur

de liens

Architecture Déclaration de package Compilateur Corps du package Configuation bibliothèque Editeur de liens 95

95

La bibliothèque std_logic_1164  Valeurs des signaux   library IEEE ; -- librairie  std_logic
La bibliothèque std_logic_1164
La bibliothèque std_logic_1164

Valeurs des signaux

 

library IEEE; -- librairie

std_logic et std_logic_vector

use IEEE.std_logic_1164.all;-- package

 

ENTITY exemple1 IS PORT (

Valeur

Interprétation

   

….

0

0

- Forcé

);

1

1 - Forcé

END exemple1;

U

Uninitialized (non-initialisé)

X

Inconnu - Forcé

ARCHITECTURE archlogic OF exemple1 IS BEGIN

Z

Haute impédance

W

Inconnu - Faible

L

0 - Faible

H

1 - Faible

-

Don’t Care

END archlogic;

 
Inconnu - Faible … L 0 - Faible H 1 - Faible - Don’t Care END

La bibliothèque numeric_std
La bibliothèque numeric_std

Elle permet de faire de l'arithmétique cc2 avec des vecteurs :

use ieee.numeric_std.all;

C'est aussi un vecteur, mais il représente un nombre signé ou non signé

possibilités d'opérations arithmétiques ou relationnelles entre eux, mais aussi avec des integer

Elle définit deux types vecteurs : SIGNED et UNSIGNED :

Elle définit deux types vecteurs : SIGNED et UNSIGNED : ◦ signal u: unsigned ( 3

signal u: unsigned ( 3 downto 0); -- "1010" représentent

10

signal s: signed (3 downto 0); -- "1010" représentent -6

Changement de type
Changement de type
Changement de type 98
Environnement de Simulation et de Synthèse (TP) 99
Environnement de Simulation et de Synthèse (TP)
Environnement de Simulation et
de Synthèse (TP)
Environnement de simulation  Modelsim 100
Environnement de simulation
Environnement de simulation

Modelsim

Environnement de simulation  Modelsim 100
Environnement de Synthèse  Xilinx ISE 101
Environnement de Synthèse
Environnement de Synthèse

Xilinx ISE

Environnement de Synthèse  Xilinx ISE 101