Vous êtes sur la page 1sur 112

Le langage VHDL

A. EL KARI

18/03/23 Master GE_FSTG 1


Sommaire
 Introduction
 La réalisation des systèmes numériques

 Le langage VHDL

 Historique et standardisation

 Les bases du langages


 L’entité

 L’architecture

 Les types de données

 Les paquetages et les librairies

 Exemple d’application : Le TIMER


 Les familles de circuits programmables

18/03/23 Master GE_FSTG 2


Le langage VHDL

Introduction

18/03/23 Master GE_FSTG 3


Introduction

La réalisation de systèmes numériques

18/03/23 Master GE_FSTG 4


Les équations booléennes

 Tout système numérique peut se décrire par des équations booléennes qui seront
transformées physiquement par des portes et des bascules.

 Exemple : Comparateur 1 bit

a b Sinf Ssup Seg


0 0 0 0 1 Sinf = a.b
0 1 1 0 0
Ssup = a.b
1 0 0 1 0
1 1 0 0 1 Seg = a  b

 Malgré des méthodes d’optimisation, cela devient vite irréalisable


lorsque l’on dépasse la centaine d’équations logiques.

18/03/23 Master GE_FSTG 5


La méthode graphique

 La CAO permet de réaliser des schémas de systèmes numériques


en utilisant des circuits prédéfinis dans des bibliothèques
constructeurs.

 La densité des circuits numériques de nos jours rend l’utilisation


de cette méthode longue et complexe.

18/03/23 Master GE_FSTG 6


Les langages de description hardware

 Les langages de description hardware permettent de faire une


description fonctionnelle du système numérique.
 Un outil de synthèse traduira cette description en équations
logiques pour l’implémenter dans un circuit programmable.

 Exemple : Comparateur 1 bit


Sinf = a.b

Si a < b alors Sinf = ‘1’ Ssup = a.b


Sinon si a > b alors Ssup =
‘1’ Seg = a  b
Sinon Seg = ‘1’
 Les langages de description les plus utilisés sont les langages
ABEL, Verilog et VHDL.

18/03/23 Master GE_FSTG 7


Introduction

Le langage VHDL

18/03/23 Master GE_FSTG 8


Quelques avantages

 Langage complet : Couvre les différentes étapes de la conception


de systèmes numériques : Spécifications, modélisation, simulation,
synthèse.
 Langage indépendant : aucune dépendance par rapport aux
fabricants de PLD et par rapport au système hôte.
 Langage moderne : syntaxe lisible, conception modulaire, …
 Langage standard : gage de compatibilité, de portabilité, de
stabilité et de pérennité.
 Langage ouvert : Évolutions contrôlées par l’IEEE. Fonctions et
procédures permettent d’étendre ses fonctionnalités

18/03/23 Master GE_FSTG 9


Historique et standardisation

 ~1970 : Dpt de la défence américaine crée le programme VHSIC


(Very High Scale Integrated Circuit)
 Le langage VHDL est devenu un standard IEEE depuis 1987 puis
révisé en 1993.
1076.1 VHDL Analog Extention
1076
1076.2 VHDL Math Utilitaire
VHDL
1076.3 VHDL Synthèse (1996)
1076.4 VITAL librairie ASIC
1076.5 IEEE librairie

1029 1164 IEEE Standard 1164 Extention : logique


WAVES STD LOGIC à valeurs multiples pour décrire les
systèmes réels (1993)
VHDL WAform and Vector Exchange
Specification
18/03/23 Master GE_FSTG 10
Le langage VHDL

Les bases du langage

18/03/23 Master GE_FSTG 11


Structure d’une description VHDL

library ieee; Déclaration des librairies


use ieee.std_logic_1164.all;
use work.std_logic_arith.all; et des packages utilisés
entity CPT6 is port
(CLK : in std_logic;
SIX : out std_logic;
Déclaration de
BCD : out integer range 0 to 5); l’interface du circuit
end;
architecture arch_CPT6 of CPT6 is
signal Q: integer range 0 to 5;
Begin Description structurelle
Process (CLK) et/ou fonctionnelle du
Begin
If(CLK='1' and CLK'event) then circuit
if Q = 5 then Q <= 0 ;
else Q<= Q + 1;
end if;
end if;
end process;
BCD <= Q;
SIX <= '0' when Q = 5 else '1';
end;

18/03/23 Master GE_FSTG 12


Les bases du langage

L’entité

18/03/23 Master GE_FSTG 13


Définition

 L’entité fournit les spécifications de l’interface au système et


comprend généralement 2 éléments :
 Les connexions du système càd ses E/S.

 Les paramètres du système (largeur de bus, fmax,…)

(optionnel)
Entity REG8BIT is
Generic paramètres
(LONG = 8;
I0 I1 I2 I3 I4 I5 I6 I7
Fmax = 50MHz);
clk Registre 8bits
Fmax = 50MHz Port connexions
O0 O1 O2 O3 O4 O5 O6 O7 (clk : in bit;
I : in bit_vector[LONG-1 downto 0];
O : out bit_vector[LONG-1 downto 0]);

End REG8BIT;
18/03/23 Master GE_FSTG 14
Les spécifications des ports

 Chaque signal physique d’E/S du système déclaré à l’intérieur de


l’instruction port (…); doit avoir :
 Un nom unique,

 Un mode,

 Un type.

 La syntaxe est la suivante :


 Nom_port : mode type_port

 Exemples :
 DATA : in bit_vector (3 downto 0);

 RESET : in std_logic;

 CARRY : inout std_logic;

 Q : out std_logic_vector (7 downto 0);

18/03/23 Master GE_FSTG 15


Les différents modes

 Les 4 principaux modes sont :


 In : signal en entrée
 Out : signal en sortie
 Inout : signal bidirectionnel
Buffer : signal en sortie avec un rebouclage interne

in out
inout buffer

18/03/23 Master GE_FSTG 16


Les différents types logiques

 Les principaux types logiques utilisés sont :


 Bit : signal binaire de valeur 0 ou 1,

 Std_logic : signal logique qui peut prendre les valeurs :

 0,1 : valeurs basse et haute

 L,H : valeurs basse et haute forçage faible,

 X : inconnue,

 U : non initialisée,

 - : quelconque,

 Z : haute impédance

 Rq : Pour utiliser le type std_logic, il faut avoir préalablement


déclaré la bibliothèque IEEE et son paquetage std_logic_1164.

18/03/23 Master GE_FSTG 17


Déclaration d’un bus

 Pour simplifier la déclaration des E/S, il est possible de déclarer


des bus de données sous la forme :
Bit_vector (n downto m) : (n > m) Dans ce cas n est le MSB et

m le LSB.
Bit_vector (m to n) : (m < n) Dans ce cas m est le MSB et n le

LSB
 Exemple :  Exemple :
BUS1 : in bit_vector (3 downto 0) BUS1 : in bit_vector (0 to 3)
3210 0123
MSB LSB MSB LSB
1011 1101
18/03/23 Ici Bus1 = 11 Master GE_FSTG Ici Bus1 = 13 18
Exemples
 Trouver la syntaxe des deux entités suivantes :

 Entity BUFFER is port (  Entity CTR12 is port (


G,En : in std_logic; clk,Reset : in std_logic;
In1 : inout std_logic_vector (7 CT : out std_logic_vector (11
downto 0);
downto 0));
In2 : inout std_logic_vector (7
downto 0)); End CTR12;
End BUFFER;
18/03/23 Master GE_FSTG 19
18/03/23 Master GE_FSTG 20
Les paramètres génériques

 Les paramètres génériques sont utilisés pour faire passer des


valeurs constantes relatives aux systèmes.

 Ils sont principalement utilisés pour dimensionner:


 un bus,

 une boucle itérative,

 Une constante de temps.

18/03/23 Master GE_FSTG 21


Taille d’un bus

Entity BUFFER8 is Entity BUFFER16 is


Generic ( Generic (
long : integer := 8); long : integer := 16);
Port ( Port (
G,En : in std_logic; G,En : in std_logic;
In1,IN2 : inout std_logic_vector (long-1 In1,IN2 : inout std_logic_vector (long-1
downto 0)); downto 0));
End BUFFER8; End BUFFER16;

BUFFER8 BUFFER16
G G
En En
8 8 16 16
In1 In2 In1 In2

18/03/23 Master GE_FSTG 22


Une boucle itérative
K=1
Entity CPT is
Generic ( K = compteur ?
OUI

compteur : integer := 4);



NON
End CPT;

For k in 1 to compteur loop
… K=K+1
End loop;

18/03/23 Master GE_FSTG 23


Paramètre temporel

Entity TEST is Y
Generic (
retard : time := 4); t
… X t0
End TEST;

X <= Y after retard; t
t0- 4

Rq : Les paramètres temporels ne sont pas utilisés pour la synthèse


numérique mais pour générer des vecteurs de test (Testbench).

18/03/23 Master GE_FSTG 24


Les bases du langage

L’architecture

18/03/23 Master GE_FSTG 25


Définition

 L’architecture permet de décrire le fonctionnement interne du


système délimité par l’entité.

 Il existe 3 types de description :


Par flot de données ou fonctionnelle : On exprime les
fonctions des sorties par des éq booléennes
Comportementale ou procédurale : L’architecture est décrite
avec des instructions séquentielles traduisant un algorithme.

Structurelle :L’architecture est le résultat de l’association de


structures elles-mêmes décrites sous la forme comportementale
ou fonctionnelle.

18/03/23 Master GE_FSTG 26


Exemple d’un multiplexeur 4 vers 1

E(0) MUX41
E(1) S
E(2)
E(3)
Entity MUX41 is port (
SEL(0) E : in std_logic_vector (3 downto 0);
SEL(1)
SEL : in std_logic_ vector (1 downto 0);
S : out std_logic);
SEL(1) SEL(0) S End MUX41;

0 0 E(0)
0 1 E(1)
1 0 E(2)
1 1 E(3)

18/03/23 Master GE_FSTG 27


Description de type flot de données

 L’eq booléenne de la sortie S se déduit de la table de vérité.

Architecture flot_MUX41 of MUX41 is


Begin
S <= ((not SEL(0) and not SEL(1)) and E(0)) or
((SEL(0) and not SEL(1)) and E(1)) or
((not SEL(0) and SEL(1)) and E(2)) or
(SEL(0) and SEL(1) and E(3)) ;
End flot_MUX41;

<= est la fonction d’affectation

18/03/23 Master GE_FSTG 28


Les opérateurs logiques

 Ils sont au nombre de 7 : and, nand, or, nor, xor, xnor et not.
 Les opérandes sont :
 Booléens,

 Bit ou bit_vector,

 Std_logic ou std_logic_vector

 Ils ont tous la même priorité ; l’utilisation de parenthèses est


nécessaire dès qu’il y a incertitude d’interprétation.

A
B
C S S <= (A and B) or (C and D);
D

18/03/23 Master GE_FSTG 29


La fonction d’affectation <=

 Lorsqu’il y a plusieurs instructions d’affectations, elles sont


exécutées en parallèle. On parle alors d’instructions concurrentes.
 La forme sélective de la fonction d’affectation utilise l’instruction
With ….select.

 Architecture Selec_MUX41 of MUX41 is


Begin
With SEL select
S <= E(0) when « 00 »,
E(1) when « 01 »,
E(2) when « 10 »,
E(3) when others;
End Selec_MUX41;

18/03/23 Master GE_FSTG 30


La fonction d’affectation <=

 La forme conditionnelle de la fonction d’affectation utilise les


instructions when … else.

 Architecture Cdt_MUX41 of MUX41 is


Begin
S<= E(0) when (SEL = « 00 ») else
E(1) when (SEL = « 01 ») else
E(2) when (SEL = « 10 ») else
E(3);
End Cdt_MUX41;

18/03/23 Master GE_FSTG 31


Les opérateurs relationnels

 Ils permettent de comparer deux opérandes de même type. Le


résultat est un booléen.
 Ils sont au nombre de 6 : =, /=, <, <=, >, >=

 Ils peuvent être combinés aux opérateurs logiques sans violation


de typage :
X <= ‘1’ when (A>10 and A <15) else ‘0’;

18/03/23 Master GE_FSTG 32


Description de type comportemental

 L’algorithme de fonctionnement du multiplexeur est décrite à


l’aide de l’instruction séquentielle If…then…elsif…else…endif;

 Architecture Compor1_MUX41 of MUX41 is


Begin
Process (SEL)
Begin
If (SEL(0) = ‘0’ and SEL(1) = ‘0’ then S <= E(0));
Elsif (SEL(0) = ‘1’ and SEL(1) = ‘0’ then S <= E(1));
elsif (SEL(0) = ‘0’ and SEL(1) = ‘1’ then S <= E(2));
Else S <= E(3);
Endif;
End process;
End Compor1_MUX41;

18/03/23 Master GE_FSTG 33


L’instruction CASE

 L’instruction CASE est particulièrement adaptée à la transcription


d’une table de vérité.

 Architecture Compor2_MUX41 of MUX41 is


Begin
Process (SEL)
Begin
Case SEL is
when « 00 » => S <= E(0);
when « 01 » => S <= E(1);
when « 10 » => S <= E(2);
when « 11 » => S <= E(3);
End case;
End process;
End Compor2_MUX41;
18/03/23 Master GE_FSTG 34
L’instruction Process

 Un process est une partie de la description d’un circuit dans


laquelle les instructions sont exécutées séquentiellement.

 L’exécution d’un process a lieu à chaque changement d’état d’un


signal de la liste de sensibilité.

 Le changement d’état des signaux par les instructions du process


sont pris en compte à la fin du process.

18/03/23 Master GE_FSTG 35


Exemples de process

 La bascule D Exécution du Library ieee;


process si H change Entity BasculeD is port (
H Q d ’état D,H: in std_logic;
D Q : out std_logic);
end BasculeD;

Les instructions Architecture ArchD of BasculeD is


s ’exécutent begin
H D Q process (H)
séquentiellement
 0 0 begin
if (H’event and H=‘ 1 ’) then Q <=D;
 1 1 end if;
end process;
0/1 X Qn end ArchD;
Les signaux
ne changent
d ’état qu ’à la fin
du process
18/03/23 Master GE_FSTG 36
Exemples de process

 Compteur décimal avec remise à 0 asynchrone


RST H Q Carry
CPT10
4 1 X 0 0
H Q
0  Si Q < 9 alors
0
RST Carry Q+1
0  Si Q = 9 1
alors Q = 0

Description Description Description


VHDL VHDL VHDL
synchrone asynchrone

18/03/23 Master GE_FSTG 37


 library ieee;
 use ieee.std_logic_1164.all;
 use ieee.std_logic_arith.all;

 entity CPT10 is port (


 H,RST : in std_logic;
 CARRY : out std_logic;
 Q : buffer integer range 0 to 9);
 end CPT10;

 architecture a_CPT10 of CPT10 is

 Begin

 Process (H,RST)
 Begin
 IF RST =‘1’ THEN Q<=0
 ELSE if (H'event and H = '1') then
 if Q = 9 then Q <= 0;
 else Q <= Q + 1 ;
 end if;
 end if;
 End if;
 end process;

 CARRY <= '1' when (Q = 9) else '0';

 end a_CPT10;

18/03/23 Master GE_FSTG 38


Description de type structurel

 On décompose de manière hiérarchisée l’architecture du


composant en une interconnexion de composants internes.

Architecture STRUCT of FONC is


Component F1
Port (A,B : in bit; O1 : out bit);
End component;
E0 A S1 Component F2
O1
E1 B Port (C,D : in bit; O2 : out bit);
C End component;
O2 S
E2 D
Signal S1 : bit ;

Begin
Etiq1 : F1 port map (E0,E1,S1);
Etiq2 : F2 port map (S1,E2,S);
End STRUCT;
18/03/23 Master GE_FSTG 39
Exemple de description structurelle

 Mise en cascade de compteurs décimaux


CPT10 CPT10
4 4
H S1 H
CLK Q Q
Description
RST Carry RST Carry asynchrone

RAZ
DIZ CENT

CPT10 CPT10
4 4
CLK H Q H Q Description
synchrone
RST Carry RST Carry
EN EN
‘0’
RAZ
18/03/23 DIZMaster GE_FSTG CENT 40
Exercice

1. Donner la description de type flot de données d’un demi


additionneur.
2. Donner la description structurelle d’un additionneur de 1 bit à
partir d’un demi additionneur.
3. Donner la description générale d’un additionneur de N bits en
utilisant un paramètre générique et une description structurelle à
partir d’un additionneur de 1 bit.

DEMI_ADD ADD1b ADDNb


N N
A S A S A S
N
B Rt B Rt B Rt
Description Rt_1 Rt_1
Description Description

18/03/23 Master GE_FSTG 41


Les bases du langage

Les types de données

18/03/23 Master GE_FSTG 42


Les trois familles d’objet

 Les objets sont les éléments de base du langage VHDL. Ils sont
au nombre de 3 :
 Les signaux : Ils permettent de modéliser les informations
transitant sur des fils ou de manière générale transitant entre
deux composants (l’instruction d’affectation est <=).
 Les constantes : Elles permettent d’affecter une valeur fixe à
un objet (l’instruction d’affectation est :=).
 Les variables : Elles sont utilisées comme objet intermédiaire
d’indexation par exemple et se situent dans les process
(l’instruction d’affectation est :=).

 A chaque objet on associe un type.

18/03/23 Master GE_FSTG 43


Les types scalaires

 Un type scalaire fait référence à un objet qui ne peut prendre


qu’une et une seule valeur à tout instant.

 Il existe 5 types scalaires prédéfinis :


 Boolean : true ou false

 Character : tous les caractères définis par la norme ISO8859-1

 Integer : Pour WARP de –231-1 à +231-1

 Real : réel compris entre –1E38 à +1E38

 Bit : ‘0’ ou ‘1’

18/03/23 Master GE_FSTG 44


Les types scalaires énumérés

 Un type scalaire est dit énuméré si toutes les valeurs qu’il peut
prendre sont listées dans sa déclaration.

 L’utilisateur peut ainsi définir des types qui correspondent à ses


besoins.

Exemple : type couleur is (ROUGE, ORANGE, VERT);


Ainsi ROUGE sera codé « 00 », ORANGE « 01 » et VERT « 10 »

18/03/23 Master GE_FSTG 45


Les types scalaires non énumérés

 Les types integer et real font partis des types non énumérés.
 Néanmoins l’utilisateur peut les borner par l’instruction range qui
définit une limite basse et haute de manière à ne pas bloquer de
la ressource inutilement.

Exemple : type integer is range –255 to 255


 On peut aussi créer un ou plusieurs type utilisateur pour limiter
l’intervalle de variation.

Exemple : INDEX is range 0 to 100


L’instruction range a pour effet de tester un éventuel dépassement
de valeur lors de l’analyse et de la simulation et de coder INDEX
sur 7 bits lors de la synthèse.

18/03/23 Master GE_FSTG 46


Le type composite record (article)

 Un article est une collection d’éléments de même type ou de type


différents. Chaque élément est un champ. Le type est défini en
énumérant les champs.

Exemple1 : Exemple2 :
Type ARTICLE1 is record Type ARTICLE2 is record
M,C,D,U : integer range 0 to 9; ADDR : integer range 0 to 3;
End record; DONNEE : std_logic_vector (3 downto 0);
End record;
Variable ANNEE : ARTICLE1
ANNEE := (2,0,0,6); signal SIG1 : ARTICLE2;
ANNEE.U := 7; SIG1 <= (3,  »0011 »);
On accède à un SIG1.ADDR <= 2;
élément de l’article
par son champ
18/03/23 Master GE_FSTG 47
Le type composite ARRAY(tableau)

 On peut définir un tableau sur une seule rangée.

Exemple : type ANNEE is array (0 to 3) of integer range 0 to 9;

0 1 2 3
0à9 0à9 0à9 0à9
ANNEE
Variable ANNEE_EN_COURS : ANNEE;
On accède à un
ANNEE_EN_COURS := (2,0,0,6); élément de l’article
par son indice
ANNEE_EN_COURS(3):=6;

Remarque : le type bit_vector est un exemple de tableau à une


rangée. Mais il est tellement commun qu’il a déjà été définit dans le
paquetage
STANDARD.
18/03/23 Master GE_FSTG 48
Les tableaux à plusieurs rangées

 Il existe 3 possibilités pour créer des tableaux à plusieurs rangées.


 La 1° méthode consiste à empiler plusieurs objets de type ARRAY

Exemple : Type ANNEE is array (0 to 3) of integer range 0 to 9;


Type DATE is array (2 downto 0) of ANNEE ;
constant ANNIVERSAIRE : DATE :=
((1,9,6,8),(1,9,7,1),(1,9,9,4));

0 1 2 3
0 1 9 6 8

DATE 1 1 9 7 1

2 1 9 9 4

18/03/23 Master GE_FSTG 49


Les tableaux à plusieurs rangées

 La 2° méthode consiste à former un tableau d’objets de type


scalaire pour obtenir un tableau à 2 dimensions.

Exemple : Une table de vérité peut alors facilement se définir.

E2 E1 E0 S1 S0 Type TABLE1 is array (0 to 7, 1downto 0) of bit;


Constant CODE1 : TABLE1 := (
0 0 0 0 0
(‘0’,’0’),
0 0 1 0 1 (‘0’,’1’),
0 1 0 1 1 (‘1’,’1’),

0 1 1 1 0
(‘1’,’0’));
1 0 0 0 0
1 0 1 0 1 Type TABLE2 is array (0 to 7) of bit_vector(1
downto 0);
1 1 0 1 1 Constant CODE2 : TABLE2 := (
1 1 1 1 0 (« 00 »),(« 01 »),(« 11 »),…,(« 10 »));
18/03/23 Master GE_FSTG 50
Les tableaux à plusieurs rangées

 La 3° possibilité est de constituer un empilement d’objets de type


record pour obtenir un array of record.

Exemple : Déclaration d’un calendrier


indice Type DATE is record
M A R 1 9 4 5 0 JOUR : string (0 to 2);
HEURE : integer range 0 to 23;
M E R 0 7 3 0 1 MINUTE : integer range 0 to 59;
J E U 1 3 4 5 End record;
2
Type TABLE3 is array (0 to 2) of DATE;
JOUR HEURE MINUTE Constant COURS : TABLE3 := (
(MAR,19,45),
(MER,07,30),
La valeur de COURS(2).HEURE est 13 (JEU,13,45));
18/03/23 Master GE_FSTG 51
Les sous types

 Un sous type d’un type donné n’est que ce type avec un intervalle de variation
limité.

Exemples :
Subtype natural is integer range 0 to integer’HIGH
Subtype positive is integer range 1 to integer’HIGH

Type JOUR_SEMAINE is (LUN,MAR,MER,JEU,VEN,SAM,DIM);


Subtype WE is JOUR_SEMAINE range SAM to DIM;

18/03/23 Master GE_FSTG 52


Les attributs

 Un attribut est une caractéristique associée à un type ou un


signal. Il est placé juste après ce type ou ce signal mais séparé
par lui par une apostrophe.

Types Attributs prédéfinis


Scalaire ‘Left, ‘right, ‘low, ‘high, ‘length
Scalaire énumérés ‘pos, ‘val, ‘succ, ‘pred
Tableaux ‘Left, ‘right, ‘low, ‘high, ‘length,
‘range, ‘range_reverse
signal ‘event

18/03/23 Master GE_FSTG 53


Exemples d’attribut

 Pour la table de vérité CODE1


définie par le type TABLE1  Pour le type énuméré
(diapo51) on a : JOUR_SEMAINE on a :
TABLE1’left(1) = 0 JOUR_SEMAINE’val(2) = MER
TABLE1’right(1) = 7 JOUR_SEMAINE’pos(JEU) = 3
TABLE1’left(2) = 1 JOUR_SEMAINE’pred(DIM) = SAM
TABLE1’right(2) = 0
TABLE1’length(1) = 8
TABLE1’length(2) = 2
TABLE1’range(1) = 0 to 7
TABLE1’range(2) = 1 downto 0

18/03/23 Master GE_FSTG 54


Exercice

 Donner la description VHDL d’un décodeur BCD/7SEG en utilisant un tableau de constante.


 Prévoir un affichage d’erreur si le code BCD est incorrect (DP allumé).
 Les sorties peuvent être remplacées par un bus 7 bits avec le segment g comme MSB et le segment a comme LSB.

réponse
18/03/23 Master GE_FSTG 55
Les bases du langage

Les paquetages et les librairies

18/03/23 Master GE_FSTG 56


Le paquetage

 Le paquetage est une collection de déclarations et de sous-


programmes utilisés fréquemment et partageables par plusieurs
utilisateurs. Il est constitué de deux parties :
 La spécification de paquetage (package) : C’est la liste des
déclarations : type utilisateur, signaux, constantes,
composants, sous-programmes.

 Le corps de paquetage (package body) qui est la vue interne


du paquetage et peut comprendre les descriptions des sous-
programmes s’il y en a.

18/03/23 Master GE_FSTG 57


Les paquetages prédéfinis

 Les constructeurs proposent souvent des paquetages qui permettent


de simplifier et synthétiser plus facilement les structures les plus
courantes sous VHDL.

 Par exemple avec WARP sont fournis les 2 paquetages suivants :


 Std_logic_1164 qui définit les spécifications liées à la norme IEEE

1164 pour le type std_logic,


 Std_arith qui définit les opérations arithmétiques pour les

vecteurs std_logic mais des opérations entre std_logic et integer.

 Pour utiliser ses paquetages,il faut faire appel à l’instruction USE


telle que:
Library ieee;
Use ieee.std_logic_1164.all;
Use work.std_arith.all; Fichier std_arith
18/03/23 Master GE_FSTG 58
Quelques fonctions intéressantes

 Avec le précédent paquetage on peut utiliser des fonctions de


conversion de type telles que :

 to_integer (a) :retourne la valeur entière d’un vecteur binaire


Exemple : Signal Bus:std_logic_vector (3 downto 0);
I <= to_integer (Bus);
Si Bus = « 0011 » alors I = 3

to_std_logic_vector (i,s) : retourne la valeur binaire sur s bits


d’un entier i.
Exemple : Constant I : integer := 5;
Bus <= to_std_logic_vector (I,4);
Bus prend la valeur « 0101 »
18/03/23 Master GE_FSTG 59
Les paquetages utilisateurs

 L’utilisateur peut créer ses propres paquetages dans lesquels il


peut placer des composants ou des fonctions pour simplifier la
description de l’unité principale.

 Ainsi pour simplifier l’écriture de l’additionneur N bits, on peut


placer les composants ADD1B et DEMI_ADD dans un paquetage
pack_add et faire appel à celui-ci dans ADDNB.

Paquetage pack_add Description de ADDNB

18/03/23 Master GE_FSTG 60


Les bases du langage

Les architectures de test

18/03/23 Master GE_FSTG 61


Description

 Une entité de test permet de tester une fonction VHDL. Cette


entité ne possède ni entrée, ni sortie par contre elle possède des
signaux internes d’entrée qui sont des stimulis et de signaux de
sorties qui correspondent à la réponse de la fonction aux stimulis.
 Pour tester une fonction il faut donc :
 Déclarer la fonction comme composant local,

 Déclarer et initialiser un signal de test pour chaque port du

composant,
 Instancier ce dernier en spécifiant les connexions entre ses

ports et les signaux de test,


 Générer les signaux de test.

18/03/23 Master GE_FSTG 62


Description

Entity TEST_ FUNC


is
End TEST_FUNC;
Test_FUNC Architecture a_test of TEST_
FUNC
FUNC is
Component FUNC port (
Test_E1 E1 S1 Test_S1
E1,E2 : in std_logic;
Test_E2 E2 S2 Test_S2 S1,S2 : out std_logic);
End component;
Signal Test_E1, Test_E2, Test_S1,
Test_S2 : std_logic;
Test_E1
Test_E1 <= not Test_E1 after 10ns;
Test_E2 <= not Test_E2 after 20ns;
Test_E2

End a_test;
18/03/23 Master GE_FSTG 63
Le langage VHDL

Exemple d’application : Le TIMER

18/03/23 Master GE_FSTG 64


Le cahier des charges

 Assurer le décompte d’un temps préalablement fixé par l’utilisateur


jusqu’à 0 pour émettre un signal d’alarme lumineux.
 Plage de réglage du timer : de 0 à 9min59s
 Décrémentation de la valeur fixée toutes les secondes
 L’alarme lumineuse correspond au clignotement à la fréquence de 1
Hz des points décimaux des afficheurs 7 segments.
 A tout moment, on peut venir faire une remise à 0 du système.
 Deux modes de réglages de la durée du timer sont possibles :
 Un mode impulsionnel qui permet un réglage précis,

 Un mode de défilement rapide qui est obtenu par un maintien

d’environ 2 secondes sur les touches de préselection.

18/03/23 Master GE_FSTG 65


Le fonctionnement

 On a adopté l’utilisation de 4 boutons (Up, Down, St/Sp et Reset)


pour être en adéquation avec le cahier des charges

Up Down St/Sp Reset Fonctionnement

X X X 1 Remise à 0 générale
Arrêt de l’alarme
X X Bascule 0 Déclenchement du timer
Arrêt du timer
1 X 0 0 Réglage du timer par
incrémentation des
secondes
X 1 0 0 Réglage du timer par
décrémentation des
secondes
18/03/23 Master GE_FSTG 66
Le choix de la logique de commande

 Notre choix s’est porté sur un circuit logique programmable CPLD


du constructeur CYPRESS associé au sytème de développement
WARP
Min Seconde
Up
Down
St/Sp
CPLD
3*8
Reset

Base de
temps

18/03/23 Master GE_FSTG 67


Le comptage/Décomptage et l’affichage

BCD_7SEG
D_CPT_NS
H Q A AFF M_INT
D_CPT
‘0’ EN
RAZ Rt

H Q A AFF S_DIZ
D_CPT
EN
RAZ Rt

H Q A AFF S_UNIT
D_CPT
EN
RAZ Rt

18/03/23 Master GE_FSTG 68


La logique de commande
TEMPO FSM_timer
FSM_timer_bascule
CLKin tempo St DU
St/Sp
St_Sp St Start Sp CLK
Reset Reset Sp
Up
CLKin tempo Down
Start z0 ALARM
Up Reset
Down H1s H5s H10s

DIV
H
CLKin H1s
H5s

H10s
18/03/23 Master GE_FSTG 69
Le langage VHDL

Les circuits logiques programmables

18/03/23 Master GE_FSTG 70


La réalisation en électronique : Les besoins

 La complexité des conceptions augmente (vitesse, intégration,


mixité)
 La « réutilisabilité » est obligatoire
 Le « juste par conception » est vital (pas de prototypage)

 Composants personnalisables
 Composants spécifiques à l’application

18/03/23 Master GE_FSTG 71


La réalisation en électronique : Les moyens

 La solution câblée (Glue logic) : On fait appel à des circuits


logiques existants au catalogue des constructeurs

 Les circuits classiques ont été de plus en plus intégrés


(LSI/VLSI/ULSI)
 On ne savait plus quoi intégrer pour être assez généraliste
 On veut pouvoir disposer de systèmes avec plusieurs millions de
portes

 Avantage : rapidité relative (qlq MHz)


 Inconvénients : figé, coût élevé

18/03/23 Master GE_FSTG 72


La réalisation en électronique : Les moyens

 La logique à programme enregistré : C’est un système à


microprocesseur qui réalise le travail
 Avantage : modulaire (carte UC, E/S)
 Inconvénients : lent , coût des outils de développement élevé

 La logique programmable : On achète les circuits vierges et on


les programme
 Avantage : rapidité (>100MHz), faible coût
 Inconvénients : petite et moyenne série

18/03/23 Master GE_FSTG 73


La réalisation en électronique : Les moyens

 La logique semi custom : On utilise des circuits ASIC (Application Specific Integred Circuit )
 On dessine le circuit à partir de cellules connues et onvoie le masque au fondeur

 On finalise le masque d’interconnexion d’un circuit catalogue

 Avantage : rapidité
 Inconvénients : coût élevé, figé

 La logique Full custom : On dessine complètement le circuit


voulu et on le donne au fondeur
 Avantage : rapidité
 Inconvénients : propre au grande série
18/03/23 Master GE_FSTG 74
Évolution : La loi de Moore

 Pour une surface de silicone donnée, on double le nombre de


transistor tous les 18 mois !

98 99 01 02 04 06

0.25µm 0.18µm 0.15µm 0.13µm 90nm 65nm

1 à 5M 5-10M 20-25M >25M

18/03/23 Master GE_FSTG 75


Les familles de circuits logiques

C IR C U IT S L O G IQ U E S

S ta n d a rd L o g ic A S IC

PLD G a te A rray C e lls -B a s e d IC s F u ll C u s to m IC s

S P LD CPLD FPGA

18/03/23 Master GE_FSTG 76


Exemple d’offre du constructeur ALTERA

18/03/23 Master GE_FSTG 77


Historiques des circuits logiques programmables

 Invention de la PROM à fusible avant 1974


 Invention PLD par Signetics en 1975

 75-85 : le complément des cartes logiques


 Interfaçage, transcodage

 85-95 : le « co-processing »
 Contrôleur de périphériques

 Telecoms

 Traitement du signal

 >95 : le processeur rentre dans le circuit

18/03/23 Master GE_FSTG 78


Avantages des circuits logiques programmables

 Système de taille réduite


 Diminution de la surface des CI

 Moins de composants, coût de fabrication réduit

 Fiabilité accrue

 Accroissement des performances


 Vitesse de fonctionnement

 Technologie CMOS à faible consommation

 Grande flexibilité : Reprogrammable


 Correction des erreurs

 Mise à jour et évolution du sytème

 Grande sécurité
 Protection en lecture

18/03/23 Master GE_FSTG 79


Croissance industrielle

18/03/23 Master GE_FSTG 80


Les technologies de programmation

PLD

à é c ritu re à e c ritu re e ffa c a b le v o la tile

A n tifus ib le fu s ib le M é ta l/S i U V -E P R O M EEPROM SRAM


PROM o b so lè te

18/03/23 Master GE_FSTG 81


Fusible Métal ou Silicium (Si)

 Les lignes métalliques forment les interconnexions ou les fusibles .


Un courant permet de les « griller » ou non.

Intact «Programmé»

 Même structure en ligne polysilicium ou des transistors


« grillables » jouent le rôle de fusibles.

18/03/23 Master GE_FSTG 82


Antifusible

18/03/23 Master GE_FSTG 83


LES SPLD

18/03/23 Master GE_FSTG 84


Les SPLD : Structure

REBOUCLAGE
BROCHES
ENTREE-

BLOC DES ENTREES-


BROCHES
BLOC DES ENTREES

BLOC DES SORTIES


D’ENTREE SORTIE

SORTIES
MATRICE ET MATRICE OU
programmable Pré-câblée
BLOC COMBINATOIRE
PROGRAMMABLE

18/03/23 Master GE_FSTG 85


Structure de la PALCE22V10

18/03/23 Master GE_FSTG 86


18/03/23 Master GE_FSTG 87
Exemple de la PALCE22V10

Réseau ET Réseau OU

18/03/23 Master GE_FSTG 88


Bloc de sortie (Macro-cellule) de la PALCE22V10

 Possibilité de programmer des


fonctions combinatoires ou
séquentielles
 Possibilité entre un
rebouclage ou une entrée

18/03/23 Master GE_FSTG 89


La PALCE22V10

ZOOM Complet
18/03/23 Master GE_FSTG 90
Dénomination

NNN EE V SS
Nom générique
Nbr maximal des entrées
Type de sortie
Nbr maximal des sorties

Exemple : GAL 16 V 8, PALCE 22 V 10, PALC 16 R 4

18/03/23 Master GE_FSTG 91


LES CPLD

18/03/23 Master GE_FSTG 92


Structure des CPLD

Macro-cellule
logique
Bloc

Un circuit CPLD (Complex


d’interconnexions
Matrice

Programmable Logic Device) se


compose de plusieurs blocs
logiques équivalent à un SPLD
associés entre eux par une matrice
logique
Bloc

logique
Bloc

d’interconnexions.

18/03/23 Master GE_FSTG 93


La famille MAX7000 d’ ALTERA

 PIA : Programmable Interconnect Array


 LAB : Logic Array Blocks
18/03/23 Master GE_FSTG 94
Détail d’une macro-cellule

18/03/23 Master GE_FSTG 95


Bloc de commande des entrée/sortie

18/03/23 Master GE_FSTG 96


Quelques caractéristiques

18/03/23 Master GE_FSTG 97


La famille ULTRA37000 de Cypress

18/03/23 Master GE_FSTG 98


Détail d’un bloc logique

18/03/23 Master GE_FSTG 99


Détail d’un bloc d’entrée/sortie

18/03/23 Master GE_FSTG 100


Quelques caractéristiques

18/03/23 Master GE_FSTG 101


Exemple d’applications des CPLD

18/03/23 Master GE_FSTG 102


LES FPGA

18/03/23 Master GE_FSTG 103


Structure des FPGA

18/03/23 Master GE_FSTG 104


Exemple de la famille CYCLONE de ALTERA

 M4K : bloc mémoire de 4Kbit

18/03/23 Master GE_FSTG 105


Structure des LAB

 LAB : Logic Array Block


18/03/23 Master GE_FSTG 106
Détail d’un élément logique

18/03/23 Master GE_FSTG 107


Quelques caractéristiques

18/03/23 Master GE_FSTG 108


Exemple d’application des FPGA

 Système multimédia de voiture

18/03/23 Master GE_FSTG 109


Environnement de programmation

18/03/23 Master GE_FSTG 110


Bibliographie

 The designer’s guide to VHDL


 Peter J. Ashenden

 Morgan Kaufmann

 VHDL for programmable Logic


 Kevin Skahill

 Addison Wesley

 Initiation au langage VHDL


 Michel Aumiaux

 Dunod

 VHDL : Introduction à la synthèse logique


 Philippe LARCHER

 Eyrolle

18/03/23 Master GE_FSTG 111


Webographie

 Sites constructeur :
 www.cypress.com

 www.altera.com

 www.xilinx.com

 www.atmel.com

18/03/23 Master GE_FSTG 112

Vous aimerez peut-être aussi