Introduction à la Synthèse logique
V.H.D.L.
Lycée Julliot de la MorandièreGRANVILLE2001
Philippe LECARDONNEL & Philippe LETENNEUR
SOMMAIRE
I) INTRODUCTION. .................................................................................................... 2
II) RELATION ENTRE UNE DESCRIPTION VHDL ET LES CIRCUITS LOGIQUES
PROGRAMMABLES.................................................................................................. 3
II.1) SCHÉMA FONCTIONNEL DIMPLANTATION DE DESCRIPTIONS VHDL DANS UN CIRCUIT LOGIQUE
PROGRAMMABLE. ...................................................................................................................................3
II.2) L’AFFECTATION DES BROCHES DENTRÉES SORTIES. ........................................................................3
II.3) ORGANISATION FONCTIONNELLE DE DÉVELOPPEMENT DUN PLD. ..................................................... 4
III) STRUCTURE D’UNE DESCRIPTION VHDL SIMPLE.......................................... 5
III.1) DÉCLARATION DES BIBLIOTHÈQUES. ...............................................................................................6
III.2) DÉCLARATION DE LENTITÉ ET DES ENTRÉES / SORTIES (I/O)............................................................6
III.2.1) Le NOM_DU_SIGNAL. ............................................................................................................ 7
III.2.2) Le SENS du signal. ................................................................................................................ 7
III.2.3) Le TYPE................................................................................................................................7
III.2.4) Affectation des numéros de broches en utilisant des attributs supplémentaires: ................. 8
III.2.5) Exemples de description d’entités:........................................................................................ 9
III.3) DÉCLARATION DE LARCHITECTURE CORRESPONDANTE À LENTITÉ :
DESCRIPTION DU FONCTIONNEMENT....................................................................................................... 10
IV) LES INSTRUCTIONS DE BASE (MODE « CONCURRENT »), LOGIQUE
COMBINATOIRE...................................................................................................... 12
IV.1) LES OPÉRATEURS........................................................................................................................13
IV.1.1) L’affectation simple : <= ..................................................................................................... 13
IV.1.2) Opérateur de concaténation : &. ........................................................................................14
IV.1.3) Opérateurs logiques............................................................................................................ 14
IV.1.4) Opérateurs arithmétiques. .................................................................................................. 15
VI.1.5) Opérateurs relationnels....................................................................................................... 16
IV.2) LES INSTRUCTIONS DU MODE « CONCURRENT ». ........................................................................... 17
IV.2.1) Affectation conditionnelle : .................................................................................................. 17
IV.2.2) Affectation sélective : .......................................................................................................... 18
V) LES INSTRUCTIONS DU MODE SÉQUENTIEL................................................. 21
V.1) DÉFINITION DUN PROCESS. ....................................................................................................... 21
V.2) LES DEUX PRINCIPALES STRUCTURES UTILISÉES DANS UN PROCESS. ..............................................21
V.3) EXEMPLES DE PROCESS :................................................................................................................22
V.4) LES COMPTEURS : ........................................................................................................................27
V.4.1) Compteur simple :................................................................................................................ 27
V.4.2) Compteur mise à un SET et mise à zéro RESET :.............................................................. 29
V.4.2.1) Compteur 3 bits avec remise à zéro asynchrone.......................................................... 29
V.4.2.2) Compteur 3 bits avec remise à zéro synchrone............................................................ 29
V.4.3) Compteur / Décompteur à entrée de préchargement : ........................................................ 30
V.4.4) Les erreurs classiques avec l’utilisation de process : ....................................................... 31
V.4.5) Compteur BCD deux digits : ................................................................................................ 34
VI) SYNTAXE RÉSUMÉE DU LANGAGE VHDL..................................................... 35
Introduction à la Synthèse logique - VHDL
S.T.S. GRANVILLE P.L.s page 2
I) Introduction.
Pourquoi avoir créé un langage de description de structures électroniques (H.D.L.
Hardware Description language) VHDL ?
L’abréviation VHDL signifie VHSIC Hardware Description Language (VHSIC : Very
High Speed Integrated Circuit). Ce langage a été écrit dans les années 70 pour réaliser la
simulation de circuits électroniques. On l’a ensuite étendu en lui rajoutant des extensions
pour permettre la conception (synthèse) de circuits logiques programmables (P.L.D. Pro-
grammable Logic Device).
Auparavant pour décrire le fonctionnement d’un circuit électronique programmable
les techniciens et les ingénieurs utilisaient des langages de bas niveau (ABEL, PALASM,
ORCAD/PLD,..) ou plus simplement un outil de saisie de schémas.
Actuellement la densité de fonctions logiques (portes et bascules) intégrée dans les
PLDs est telle (plusieurs milliers de portes voire millions de portes) qu’il n’est plus possible
d’utiliser les outils d’hier pour développer les circuits d’aujourd’hui.
Les sociétés de développement et les ingénieurs ont voulu s’affranchir des contrain-
tes technologiques des circuits. Ils ont donc créé des langages dits de haut niveau à savoir
VHDL et VERILOG. Ces deux langages font abstraction des contraintes technologies des
circuits PLDs.
Ils permettent au code écrit d’être portable, c’est à dire qu’une description écrite pour
un circuit peut être facilement utilisée pour un autre circuit.
Il faut avoir à l’esprit que ces langages dits de haut niveau permettent de matérialiser
les structures électroniques d’un circuit.
En effet les instructions écrites dans ces langages se traduisent par une configura-
tion logique de portes et de bascules qui est intégrée à l’intérieur des circuits PLDs. C’est
pour cela que je préfère parler de description VHDL ou VERILOG que de langage.
Dans ce polycopié, je m’intéresserai seulement à VHDL et aux fonctionnalités de
base de celui-ci lors des phases de conception ou synthèse (c’est à dire à la conception de
PLDs).
Introduction à la Synthèse logique - VHDL
S.T.S. GRANVILLE P.L.s page 3
II) Relation entre une description VHDL et les circuits logiques program-
mables.
Décrire le fonctionnement d’un circuit logique programmable c’est bien, mais com-
ment faire le lien avec la structure de celui-ci ?
L’implantation d’une ou de plusieurs descriptions VHDL dans un PLD va dépendre
de l’affectation que l’on fera des broches d’entrées / sorties et des structures de base du
circuit logique programmable.
II.1) Schéma fonctionnel d’implantation de descriptions VHDL dans un circuit logique
programmable.
BLOC
VHDL N°1
BLOC
VHDL N°5
Synchro
BLOC
VHDL N°2
BLOC
VHDL N°3
BLOC
VHDL N°4
E1
E2
E3
E4 (CLK)
S1
S2
S3
S4
Ci-dessus le schéma représente un exemple d’implantation de descriptions VHDL ou
de blocs fonctionnels implantés dans un PLD. Lors de la phase de synthèse chaque bloc
sera matérialisé par des portes et/ou des bascules. La phase suivante sera d’implanter les
portes et les bascules à l’intérieur du circuit logique.
Cette tâche sera réalisée par le logiciel placement/routage (« Fitter »), au cours de
laquelle les entrées et sorties seront affectées à des numéros de broches.
On peut remarquer sur le schéma la fonction particulière du bloc VHDL N°5. En effet
dans la description fonctionnelle d’un PLD on a souvent besoin d’une fonction qui sert à
cadencer le fonctionnement de l’ensemble, celle-ci est très souvent réalisée par une ma-
chine d’états synchronisée par une horloge.
II.2) L’affectation des broches d’entrées sorties.
Elle peut se faire de plusieurs manières :
1) L’affectation automatique.
On laisse le synthétiseur et le Fitter du fabriquant (« Fondeur » : Xilinx, Lattice, Al-
téra, Cypress...») du circuit implanter la structure correspondant à la description
VHDL. Les numéros de broches seront choisis de façon automatique.
2) L’affectation manuelle.
On définit les numéros de broches dans la description VHDL ou sur un schéma bloc
définissant les liaisons entre les différents blocs VHDL ou dans un fichier texte pro-
pre au fondeur. Les numéros de broches seront affectés suivant les consignes don-
nées. (voir page N° 8).
Introduction à la Synthèse logique - VHDL
S.T.S. GRANVILLE P.L.s page 4
Entrée schématique
Entrée syntaxique
langages:
- VHDL
Diagrammes d’états
Vérification des erreurs
de schéma et de syntaxe S
imulation
comportementale
VHDL VHDL
VHDL
STIMULI ou
TESTBENCH
SYNTHETISEUR
Il convertit en fonction du ciruit
cible (CPLD ou FPGA: suivant le
modèle choisit) le projet en
portes logiques et bascules de
bases.
De plus on peut lui spécifier
des contraintes de technologies,
par exemple la vitesse de
fonctionnement
S
imulation après
synthèse
STIMULI ou
TESTBENCH
Optimisation
Placement / routage
dans le circuit choisi S
imulation temporelle
STIMULI ou
TESTBENCH
SYNTHETISEURS CONNUS:
-
FPGA Expres (Synosys).
-
EXEMPLAR (Exemplar).
-
SYNPLICITY (Synplicity).
Outils de placement et
routage interne au
circuit. Cet outil est
propre à chaque
fabriquant
VHDL
EDIF, XNF
JEDEC
VITAL, VHDL, SDF
VITAL, VHDL
CIRCUIT
FPGA
CPLD
La programmation du circuit
peut se faire soit:
- En utilisant un
programmateur.
- En téléchargement le code
JEDEC directement sur
l’objet technique (JTAG ou
ISP)
II.3) Organisation fonctionnelle de développement d’un PLD.
library IEEE;
use IEEE.std_logic_1164.all;
use
IEEE.STD_LOGIC_UNSIGNED.all;
entity CNT_4B is
port (
CLK: in STD_LOGIC;
RESET: in STD_LOGIC;
ENABLE: in STD_LOGIC;
FULL: out STD_LOGIC;
Q: out STD_LOGIC_VECTOR
(3 downto 0)
VERT1
U32
INV
1 2
Q3
U38
AND4
1
2
3
4
5
U26
NAND2
1
2
3
67
Q0
A
U20
NAND3
1
2
3
4
76
D
U19
INV
1 2
3
U17
OB11
1 2
77
U35
OB11
1 2
U24
OB11
1 2
U10
IB11
1 2
5
U29
INV
1 2
Q1
D
ORANGE2
COMPTEUR
COMPTEURP
CLK
Q0
Q1
Q2
Q3
C
U23
OB11
1 2
C
78
U22
NAND2
1
2
3
12
6
D
U25
NAND2
1
2
3
ORANGE1
D
U30
OB11
1 2
B
A
B
U18
OB11
1 2
C
A
U27
NAND2
1
2
3
13
U36
OB11
1 2
U15
OB11
1 2
B
U28
INV
1 2
U16
OB11
1 2
ROUGE2
C
B
VERT2
11
D
4
ROUGE1
U31
OB11
1 2
Q2
U21
NAND2
1
2
3
B
U37
AND4
1
2
3
4
5
CLK
C
START='1'
START='0'
RESET='1'
END_CYCLE OPEN_GATE
IDLE
GATE <= '0';
END_RESET <= '0';
GATE <= '0';
END_RESET <= '0';
GATE <= '1';
END_RESET <= '0';
GATE <= '1';
END_RESET <= '0';
GATE <= '0';
END_RESET <= '1';
GATE <= '0';
END_RESET <= '1';
START='0'
START='1'
1 / 37 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !