Cours VHDL- chap2-introduction

Report
Cours VHDL
Ing Mohamed MASMOUDI
[email protected]
Le VHDL
Very High Speed Integrated Circuit
Hardware
Description
Langage
Langage : de description structurelle et comportementale de la conception des
dispositifs matériels en électronique numérique (ASICs, CPLD, FPGA, logique
câblée)
Autres HDL : Verilog, UDL/1, Estérel, Hardware C
2
M. MASMOUDI
Cours VHDL
Pourquoi?



3
Langage pour la spécification des systèmes digitaux, aussi bien au niveau
comportemental que structural
Utilisation:
 description des systèmes
 simulation
 aide à la conception
 documentation
Caractéristiques principales:
 description à plusieurs niveaux
 simulation activée par événements (event-driven)
 modularité
 extensibilité
 langage général, fortement typé
M. MASMOUDI
Cours VHDL
Historique
1994
Révision du standard
IEEE 1164
1987
Publication du standard
IEEE 1076
1986
Transfert des droits
1983
à l’IEEE
Développement des bases du langage
1981
par Intermetrics, IBM et TI
Initiation du langage
par le US - DoD
4
M. MASMOUDI
Cours VHDL
Concept
VHDL
permet de coder une fonction d’une manière structurelle (comme un
schéma) et/ou comportementale (fonctionnelle)
Codage comportemental
S <= not ((A and B) or (C and D));
 plus proche de l’algorithme
 portabilité, maintenabilité, versatilité
Codage structurel
A
B
 création d’une hiérarchie
S
C
 emploi de macrofonctions
D
 format de la liste d’équipotentielle (netlist)
5
M. MASMOUDI
Cours VHDL
Niveau d’abstraction
Le codage en VHDL peut se faire selon 4 niveaux
d’abstraction, ce qui permet une conception descendante
Algorithme
S=fft(e,64)
Niveau 1
6
Architecture
radix1
radix2
Architecture
synthétisable
Netlist
registres
bibliothèque
Niveau RTL
Synthèse
logique
radix3
Niveau 2
M. MASMOUDI
Cours VHDL
netlist
Niveau d’abstraction
7
M. MASMOUDI
Cours VHDL
Niveau d’abstraction

Le niveau système : cette description regroupe l’ensemble
des spécification du circuit décrites sous la forme de
comportements vis-à-vis de l’environnement associé au
circuit, de performances à satisfaire, de contraintes
d’utilisation. Cette description est de nature purement
externe par rapport au circuit.

Le niveau fonctionnel : la description au niveau
fonctionnel exprime le premier niveau interne de la
solution, sous la forme d’un ensemble de fonctions +/interdépendantes et de complexité variée. Cette
description est orientée application ou objectif à
satisfaire.
8
M. MASMOUDI
Cours VHDL
Niveau d’abstraction
Le niveau architectural : la description architecturale
exprime les modules exécutifs et les interconnections
nécessaires entre ceux-ci pour satisfaire la fonctionnalité
globale du niveau supérieur. Cette description est donc
orientée réalisation.
Le niveau logique: la description représente un circuit par
un ensemble interconnecté de fonctions logiques de faible
complexité.
Le niveau électrique : la description électrique représente
le circuit sous la forme d’éléments microélectroniques
(transistors essentiellement) interconnectés de façon à
assurer la fonctionnalité du circuit spécifiée par les
niveaux supérieurs.



9
M. MASMOUDI
Cours VHDL
Modèle de Gajski
10
M. MASMOUDI
Cours VHDL
Etapes
VHDL : spécification, conception et description matérielle en électronique
numérique
Analyse du système et partitionnement des tâches
Écriture des « Test Bench » en VHDL
Écriture du code VHDL par bloc
Simulation du code VHDL
Synthèse au niveau portes
Simulation au niveau portes
Implémentation matérielle
11
M. MASMOUDI
Cours VHDL
Apport
Pour les circuits intégrés
A2 + B2
Diminution des erreurs
Diminution du temps de développement
simulation à différents niveaux d’abstraction
conception à plus haut niveau
Pour les systèmes
Anticipation de l’intégration
Normalisation des échanges
modèles de composants simulable avant disponibilité
langage universel et unique
12
M. MASMOUDI
Cours VHDL
Description matérielle

VHDL : se base sur la paire ENTITY ARCHITECTURE
ENTITY
décrit les ports
d’E/S du circuit
(brochage)
a
b
a
b
d
Circuit
Boîte noire
c
13
f
ARCHITECTURE
:
décrit le contenu du
circuit (câblage
interne)
d
f
c
M. MASMOUDI
Cours VHDL
Entity
Description externe du composant (Boîte noire)


Définition des ports d’E/S : type, sens, taille, …
Définition des paramètres
ENTITY <entity name> IS
<generic declaration>
<port declaration>
END [ENTITY] <entity name> ;
<generic declaration>
: paramètres du composant
<port declaration> : interface avec l’environnement extérieur
14
M. MASMOUDI
Cours VHDL
Les ports:
PORT(
<port name> : <mode> <type> ;
.....
<port name> : <mode> <type>
);
Les modes:
IN
: Données qui sont des entrées uniquement
OUT
: Données qui sont des sorties uniquement
INOUT
: Données bidirectionnelles (en entrée ou en sortie)
BUFFER : Données en sortie mais aussi en feed-back interne dans le circuit
15
M. MASMOUDI
Cours VHDL
Types des ports
BIT
: valeurs possibles ‘0’ et ‘1’
BIT_VECTOR
: un vecteur de bits
INTEGER : utilisés comme indices (boucles), constantes, …
BOOLEAN : prend deux valeurs ‘TRUE’ ou ‘FALSE’
CHARACTER
: caractères ascii
Exemple :
SIGNAL a: BIT_VECTOR(0 TO 3); - - e.g... Sens ascendant
SIGNAL b: BIT_VECTOR(3 DOWNTO 0); - - e.g... Sens descendant
a <= "0111";
b <= "0101";
Ce qui signifie :
a(0) = '0'
b(0) = '1'
a(1) = '1'
b(1) = '0'
a(2) = '1'
b(2) = '1'
a(3) = '1'
b(3) = '0'
16
M. MASMOUDI
Cours VHDL
Types des ports (IEEE1164)
Valeurs des signaux
library IEEE; -- librairie
use IEEE.std_logic_1164.all;-- package
std_logic et std_logic_vector
Valeur Interprétation
0
0 - Forcé
1
1 - Forcé
U
Uninitialized (non-initialisé)
X
Inconnu - Forcé
Z
Haute impédance
W
Inconnu - Faible
L
0 - Faible
H
1 - Faible
Don’t Care
17
ENTITY exple1 IS PORT (
….
);
END exple1;
ARCHITECTURE archlogic OF exle1 IS
BEGIN
…..
END archlogic;
M. MASMOUDI
Cours VHDL
Déclarations d’une entité
Circuit 1
rst
q[N:0]
d[N:0]
clk
18
co
ENTITY circuit1 IS
GENERIC (N: INTEGER:=7);
PORT (
clk, rst:
IN BIT;
d:
IN BIT_VECTOR(7 DOWNTO 0);
q:
OUT BIT_VECTOR(7 DOWNTO 0);
co:
OUT BIT);
M. MASMOUDI
Cours VHDL
END circuit1;
L’architecture
Objectif:
Description ”du câblage interne”
Modes de description:
 Structurelle


Comportementale (aspect
algorithmique)


19
Instanciations : placement de composants logiques et leur interconnexion
Description haut niveau (abstraite)
IF a = b THEN x<=a;
Équations logiques
x <= (a OR b) AND c;
M. MASMOUDI
Cours VHDL
Paire entité-architecture
Entity décrit l’interface externe
d’un module, elle contient :
 Nom du module (ex: AOI)
 Ports d ’entrée/sorties (Nom,
direction: in,out, inout, buffer,…)
 Type (BIT, BIT_VECTOR, BOOLEAN,
INTEGER,…)
 Paramètres
Library IEEE;
use IEEE.STD_1164.ALL;
entity AOI is
port (
A, B, C, D: in STD_LOGIC;
F: out STD_LOGIC
Architecture décrit le
);
fonctionnement interne et
comporte :
end AOI;
architecture Acrh1 of AOI is
 zone de déclarations
begin

zone pour les instructions
F<=not((A and B)or(C and D));
 toujours associée à une entité
 plusieurs architectures peuvent
être associées à la même entité
20
end arch1;
-- fin du code VHDL
M. MASMOUDI
Cours VHDL
Paquetage

Paquetage “Package” : collection d’objets réutilisables
: constantes, composants, types, fonction, procédure, ...

2 unités de compilation :
 déclaration
 corps
de paquetage
de paquetage

Le contenu de la déclaration de paquetage est “visible”
depuis une autre unité de compilation si elle en a
déclaré l’utilisation

Le contenu du corps de paquetage est “invisible” des
autres unités de compilation
21
M. MASMOUDI
Cours VHDL
Codage des composants
in1
in2
a
cout
Half adder
b
cin
carry
sum
a
cout
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;
22
result
Half adder
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;
M. MASMOUDI
Cours VHDL
Instanciation Méthode 1
<inst label> : ENTITY <library>.<ent name>(<arch name>);
ENTITY full_adder IS
PORT(in1,in2,cin: IN std_logic; result,carry : OUT std_logic);
END full_adder;
ARCHITECTURE structural OF full_adder
SIGNAL s1,s2,s3 : std_logic;
BEGIN
H1 : entity work.half_adder(beh)
PORT MAP(a=>in1, b=>in2, sum=> s1, cout => s3);
H2 : entity work.half_adder(beh)
PORT MAP(a=> s1, b=> cin, sum => result, cout => s2);
O1 : entity work.OR_2(beh)
PORT MAP(a=>s2, b=> s3, c=> carry);
END structural;
23
M. MASMOUDI
Cours VHDL
Instanciation Méthode 2
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,cout : 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;
24
M. MASMOUDI
Cours VHDL
Opérateurs
CATEGORIE
TYPE OPERANDES
SIGNIFICATION
and
et
nand
non-et
or
boolean
ou
nor
bit
non-ou
xor
bit_vector
ou exclusif
xnor
non ou-exlusif
not
non
+
+ unaire (signe +) ou addition
-
integer
- unaire (signe -) ou soustraction
*
real
multiplication
/
division
abs
valeur absolue
**
exponentiation
mod
integer
modulo
rem
25
reste
M. MASMOUDI
Cours VHDL
Opérateurs
CATEGORIE
TYPE OPERANDES
Entrée
SIGNIFICATION
Résultat
=
/=
égal
tout type
non égal
<
<=
boolean
inférieur
scalaire
inférieur ou égal
>
supérieur
>=
supérieur ou égal
sll
logique gauche
srl
bit_vector
logique droite
rol
(amplitude : integer)
circulaire gauche
ror
circulaire droite
bit
&
26
bit_vector
concaténation
M. MASMOUDI
Cours VHDL
27
M. MASMOUDI
Cours VHDL

similar documents