Académique Documents
Professionnel Documents
Culture Documents
ELECTRONIQUE NUMERIQUE
AVANCEE
Le VHDL (Vhsic (Very High Speed Integrated Circuit) Hardware Description Language),
est un langage de description destiné à représenter le comportement et l’architecture de
circuits numériques.
Une spécification décrite en VHDL peut être simulée ou synthétisée sur un circuit
programmable.
Un langage de description, contrairement à un langage de programmation informatique,
sert à décrire du matériel, il a pour objectifs : la spécification, la modélisation, la simulation
et la documentation. Il ne faut jamais interpréter le code VHDL comme un langage de
programmation de type C/C++/Pascal …
L’ordre des instructions n’a aucune importance en VHDL.
En effet il s’agit de DECRIRE un circuit numérique, avec des composants fonctionnant tous
simultanément. On peut abusivement dire que «tout s’exécute en même temps ».
4 Présentation Du Langage VHDL
Au début des années 80, le ministère de la défense des Etats Unis (D.O.D) demande à
Intermetrics, IBM et Texas Instruments de mettre au point un langage dont l’objectif était
d’assurer une indépendance vis à vis des fournisseurs de matériels et de logiciels et ainsi une
assurance de maintenabilité des équipements. Le résultat était le langage VHDL.
Le VHDL a été normalisé pour la première fois comme langage de description de
matériel en décembre 1987 : norme IEEE 1076-87.
Il a connu plusieurs améliorations notamment en 1994 où le standard IEEE 1164 enrichit
le VHDL par la notion de forces sur les signaux (multivalued logic)
Une autre extension du VHDL a vu le jour en 1999 (norme IEEE-1076.1) qui ajoute la
modélisation mixte (numérique – analogique) et multi-technologique : VHDL-AMS (Analog
and Mixed Signal).
5 Présentation Du Langage VHDL
•ISE de Xilinx
•Quartus de Altera
6 Structure d’une description VHdL
Description du Composant
En VHDL, la description externe du composant est décrite à l'aide d'une entité (entity) et le
comportement interne est décrit à l’aide de l’architecture (architecture).
Architecture
Entrée 1
Sortie
Composant
Entité
Entrée 2
7 Structure d’une description VHdL
library IEEE;
Bibliothèques
Zone de déclaration des bibliothèques
Les Bibliothèques
Syntaxe :
Library ieee;
Use ieee.std_logic_1164.all; -- Pour rajouter les types std_logic ou std_logic_vector.
Use ieee.numeric_std.all; -- Pour utiliser des fonctions arithmétiques
Use ieee.std_logic_unsigned.all; -- Pour utiliser des fonctions arithmétiques des vecteurs non signés
9 Structure d’une description VHdL
Les Bibliothèques
std_logic_1164 : Il s'agit de la bibliothèque qui définit les types de données std_logic de base et
quelques fonctions. Cela devrait probablement être inclus dans chaque entité créée. Dans la
bibliothèque IEEE STD_LOGIC_1164 TYPE les types usuels sont déjà déclarés. Le type std_logic
contient 9 éléments de base.
10 Structure d’une description VHdL
Les Bibliothèques
L’Entité
Dans toute description VHDL, Une entité (entity) permet de déclarer ou identifier, le
composant ou la structure externe du composant. L’utilisation du port au sein de l’entité
permet de définir les entrées/sorties en utilisant les modes de déclaration suivants :
in : pour un signal qui ne peut être que en entrée.
out : pour un signal qui ne peut être que en sortie et non lisible à l’intérieur de
l’architecture.
inout : pour un signal qui peut être en entrée et en sortie (bidirectionnel).
buffer : pour un signal qui ne peut être que en sortie et lisible en interne.
12 Structure d’une description VHdL
L’Entité
L’Entité
14 Structure d’une description VHdL
L’Entité
ISE de Xilinx
15 Structure d’une description VHdL
L’Entité
Syntaxe :
entity Nom_de_Entité is
port (
Entrée1 : in std_logic:='0';
Entrée2 : in std_logic_vector (3 downto 0):=" 0000 ";
Sortie : out std_logic_vector (3 downto 0):=" 0000 "
);
end Nom_de_Entité;
16 Structure d’une description VHdL
L’Architecture
L’Architecture
Flots de données
L’architecture est déclarée sous forme d’équations logiques
(Data flow)
L’Architecture
A l’intérieur d’une architecture, on peut déclarer des signaux interne au composant en cas
de besoin. Un signal permet la communication entre les états concurrents à l'intérieur d'une
architecture. Dans la définition, on doit spécifier le type au signal et l’on peut attribuer une
valeur par défaut.
Types de signaux :
₋ Constant
₋ Signal
Exemple:
signal count : integer range 0 to 100:=0;
signal S0 : std_logic:='0';
signal S1 : std_logic_vector (3 downto 0 ):="0000";
constant gain : std_logic_vector (7 downto 0):="00010001";
19 Structure d’une description VHdL
L’Architecture
Syntaxe :
L’Architecture
L’évaluation des sorties se fait en parallèle, les instructions, qui sont déclarées
sous forme d’équations logiques, sont dites des instructions concurrentes,
l’échange des deux lignes n’a aucun effet sur la description.
L’évaluation des instructions concurrentes n’a lieu que si l’un des signaux à droite
change, c.à.d. les sorties ne seront évalué que si les entrées change d’état.
21 structure d’une description VHdL
C’est l’opérateur le plus utilisé. En effet il permet de modifier l’état d’un signal en
fonction d’autres signaux et/ou d’autres opérateurs.
Les valeurs numériques que l’on peut affecter à un signal sont les suivantes :
⁻ ‘1’ ou ‘H’ pour un niveau haut avec un signal de 1 bit.
⁻ ‘0’ ou ‘L’ pour un niveau bas avec un signal de 1 bit.
⁻ ‘Z’ pour un état haute impédance avec un signal de 1 bit.
⁻ ‘-’ pour un état quelconque, c’est à dire ‘0’ ou ‘1’.
Pour les signaux vecteurs, composés de plusieurs bits, on utilise les guillemets " … "
22 structure d’une description VHdL
Exemple:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity COMPOSANT is
port (
A : in std_logic_vector (3 downto 0):=" 0000 ";
S : out std_logic_vector (3 downto 0):=" 0000 "
);
end COMPOSANT;
architecture ARCHITECTURE of COMPOSANT is
Begin
S <= A;
end ARCHITECTURE ;
24 structure d’une description VHdL
Opérateur VHDL
Les Opérateurs Logiques
ET and
NON ET nand
Ils sont définis pour les types
OU or
boolean, bit, std_logic et std_logic
NON OU nor
_vector :
OU EXCLUSIF xor
NON OU EXCLUSIF xnor
NON not
26 structure d’une description VHdL
Opérateur VHDL
Les Opérateurs relationnels
Egal =
Non égal /=
Ils permettent de modifier l’état d’un
Inférieur <=
signal ou de signaux suivant le résultat
Inférieur ou égal <=
d’un test ou d’une condition. En logique
Supérieur >
combinatoire ils sont souvent utilisés
Supérieur ou égal >=
avec les instructions de conditions.
30 structure d’une description VHdL
Exercice 1
Exercice 2
Affectation conditionnelle
Cette instruction modifie l’état d’un signal suivant le résultat d’une condition
logique entre un ou des signaux, valeurs, constantes.
Syntaxe 1:
SIGNAL <= expression1 when condition1
[else expression2 when condition2 ]
[else expression3 when condition3 ]
[else expression4];
Remarque : l’instruction [else expression] n’est pas obligatoire mais elle fortement conseillée, elle
permet de définir la valeur du SIGNAL dans le cas où la condition n’est pas remplie.
34 structure d’une description VHdL
Affectation conditionnelle
Syntaxe 2:
Affectation Sélective
Cette instruction permet d’affecter différentes valeurs à un signal, selon les valeurs
prises par un signal dit de sélection.
Syntaxe 1:
with SIGNAL_DE_SELECTION select
SIGNAL <= expression1 when valeur_de_selection1,
[expression2 when valeur_de_selection2,]
[expression3 when valeur_de_selection3,]
[expression4 when others];
Remarque: l’instruction [expression when others] n’est pas obligatoire mais fortement conseillée,
elle permet de définir la valeur du SIGNAL dans le cas où la condition n’est pas remplie.
36 structure d’une description VHdL
Affectation Sélective
Syntaxe 2:
with SIGNAL_DE_SELECTION select
SIGNAL <= expression1 when valeur_de_selection1,
expression2 when valeur_de_selection2,
expression3 when valeur_de_selection3,
expression4 when others;
37 structure d’une description VHdL
Exercice 3
Exercice 4
Exercice 5
Description structurelle
Description structurelle
component Nom_de_Entité is
port (
Entrée1 , Entrée2 : in std_logic:='0';
Sortie : out std_logic_vector (3 downto 0):=" 0000 "
);
end component;
Remarque: La description des composants utilisés dans l’architecture doit être incorporé dans la zone de
déclaration de l’architecture, avant le début de l’architecture précisé par le mot clé "Begin".
42 structure d’une description VHdL
Description structurelle
Etape 2 : Pour indiquer les connexions entre les pins des composants utilisés et les
pins du composant principal, il existe deux méthodes :
Syntaxe 1 :
Syntaxe 2 :
Composant1: Nom_de_Entité port map (Entrée1 =>E1, Entrée2 =>E2, Sortie=>Y);
Composant1: Nom_de_Entité port map (Entrée1=>E3, Entrée2=>Y, Sortie=>S);
Remarque: Pour la méthode 2, on peut spécifier les connexions entre les pins, sans besoin de respecter
l’ordre.
43 structure d’une description VHdL
Description structurelle
Description structurelle
library IEEE;
use IEEE.STD_LOGIC_1164.ALL
entity ADD_2bits is
port
(
A, B : in std_logic_vector(1 downto 0);
Cin : in std_logic;
S : out std_logic_vector (1 downto 0);
Cout : out std_logic
);
end ADD_2bits;
45 structure d’une description VHdL
Description structurelle
Méthode 1 Méthode 2
Description structurelle
Exercice 6