• Outils de programmation
• Structure d’un programme
• Entité
• Architecture
• Les différentes descriptions d’une architecture:
de type flot de données,
comportementale ou procédurale,
structurale et
architecture de test
1
Le VHDL
• VHDL: VHSIC = VHSIC (very-high-speed integrated circuits)
Hardware Description Language
• Développé dans les années 80 aux États-Unis Défense américaine,
• VHDL est devenu une norme IEEE numéro 1076 en 1987.
• Révisée en 1993 pour supprimer quelques ambiguïtés et améliorer
la portabilité du langage, cette norme est vite devenue un standard
en matière d'outils de description de fonctions logiques.
• le langage VHDL sert à:
concevoir des ASICs,
programmer des composants programmables de
type PLD, CPLD et FPGA,
concevoir des modèles de simulations numériques
ou des bancs de tests.
2
Structure d’une description VHDL
En VHDL, une structure logique est décrite à
l'aide d'une entité et d'une architecture de la
façon suivante :
Entrées Sorties
Structure Logique
3
Entité et Architecture
Entité (ENTITY):
L'entité donne les informations concernant les
signaux d'entrées et de sorties de la structure
ainsi que leurs noms et leurs types.
L'entité est une vue de l'extérieur du composant
(interface) .
4
Syntaxe:
std_logic : 1 bit
std_logic_vector: 1 vecteur de bits
5
Les types
• VHDL est un langage fortement typé.
• Tous les objets définis en VHDL doivent
appartenir à un type avant d'être utilisés.
• Deux objets sont compatibles s’ils ont la même
définition de type.
• Un type définit l'ensemble des valeurs que peut
prendre un objet ainsi que l'ensemble des
opérations disponibles sur cet objet.
6
7
Dans le paquetage STANDARD de la bibliothèque STD,
plusieurs types énumérés sont définis :
type boolean is (FALSE, TRUE);
type bit is ('0', '1');
type severity_level is (NOTE, WARNING, ERROR, FAILURE);
type character is ( NUL, SOH, STX, ETX,..., '0','1', ...);
type std_ulogic is ('U', 'X, 'O', '1', 'Z', 'W', 'L', 'H', '-');
8
Ceci permet d'avoir 9 états significatifs de la logique.
9
Au démarrage les signaux sont dans un état inconnu 'U'.
'X' indique un conflit, le signal lui est affecté d'un côté à
'1' et d'un autre à '0'.
'0' et '1' correspondant aux valeurs booléennes du
signal.
'Z' correspond à l'état haute 'impédance".
'W' est la valeur d'un signal relié à 2 résistances de
tirage, une tirant à 0 (pull down) et l'autre à 1 (pull up).
'H' et 'L' sont des valeurs d'un signal relié
respectivement à une résistance de tirage à 1 et à 0.
'-' est un état indifférent. Utile pour décrire les tables de
vérité.
10
Au niveau de la syntaxe, pour indiquer la valeur
d'un bit, scalaire, on met le symbole entre
apostrophes : '1'
11
Architecture:
L'architecture décrit le comportement de l'entité.
l'architecture explicitera les liens entre les entrées et les
sorties (implémentation).
Syntaxe:
13
Modèle VHDL d’un circuit combinatoire
simple
14
library IEEE; Librairie: définition de type, fonctions,
use IEEE.std_logic_1164.all; …etc.
entity add3bits is
Port (
Cin: in std_logic;
X: in std_logic;
Y: in std_logic; Entité: interface avec le monde extérieur
Définit les ports, leurs types et leurs
Cout: out std_logic; directions
S: out std_logic
);
End add3bits;
15
Architecture flotdedonnees of add3bits is
signal T1: std_logic; Architecture: partie
déclarative et corps.
signal T2: std_logic;
signal T3: std_logic; Décrit le comportement
begin du circuit.
S<=T1 xor Cin;
Cout<= T3 or T2;
T1<=X xor Y;
T2<=X and Y;
T3<= Cin and T3;
end flotdedonnees;
Structurale
comportementale
17
Description structurale
18
Blocs (sous-systèmes) Circuit numérique
19
Exemple de description structurale
20
entity NAND2 is
port (
I0, I1 : in std_logic;
O : out std_logic
);
end NAND2;
21
entity XOR2 is
port (
I0, I1 : in std_logic;
O : out std_logic
);
end XOR2;
22
entity INV is
port (
I : in std_logic;
O : out std_logic
);
end INV;
23
library ieee;
use ieee.std_logic_1164.all;
entity combinatoire1 is
port (
A, B, C : in std_logic;
F : out std_logic
);
end combinatoire1;
24
architecture structurale of combinatoire1 is
component INV
port (I: in std_logic; O: out std_logic);
end component;
component NAND2
port (I0, I1: in std_logic; O: out std_logic);
end component;
component XOR2
port (I0, I1: in std_logic; O: out std_logic);
end component;
signal S1, S2 : std_logic;
Begin
Instanciation
U1: NAND2 port map (I0 => S2, I1 => A, O => F);
de composants
U2: XOR2 port map (I0 => S1, I1 => B, O => S2);
U3: INV port map (I => C, O => S1);
end structurale; 25
Exemple de description structurale
S1 S2
26
Description par flot de données
entity combinatoire1 is
port (
A, B, C : in std_logic;
F : out std_logic
);
end combinatoire1;
28
Sélection
architecture flotdedonnees2 of combinatoire1 is
signal entree : std_logic_vector (2 downto 0);
begin
entree <= (A,B,C);
with entree select
F <=
‘1’ when "000" ;
‘1’ when "001" ;
‘1’ when "010" ;
‘1’ when "011" ;
………….
…………
‘0’ when others ;
end flotdedonnees2;
29
Enoncé conditionnel
30
Description comportementale
• Une description comportementale utilise des
énoncés similaires à ceux d’un langage procédural
comme C ou java, incluant les structures de contrôle
(condition, répétition).
• Les descriptions comportementales en VHDL se font
à l’aide de l’énoncé " process " à l’intérieur d’une
architecture.
• Un processus (process) décrit une partie du circuit
qui s’exécute de façon concurrente à d’autres
processus et à des affectations concurrentes de
signaux.
31
• Le défi: garder en tête la nature du circuit désiré et
l’inventaire des composants matériels disponibles pour
que la description soit synthétisable.
32
• Chaque composant interne du système est un
processus (process) de l'architecture.
33
34
Exemple 1 de description comportementale
library ieee;
use ieee.std_logic_1164.all;
entity combinatoire1 is
port (
A, B, C : in std_logic;
F : out std_logic
);
end combinatoire1;
35
architecture comportementale1 of combinatoire1 is
begin
process (A, B, C)
begin
F <= not(A and (B xor not (C)));
end process;
end comportementale1;
37
Un autre exemple: porte ET à 4 entrées
library ieee;
use ieee.std_logic_1164.all;
entity porteET4 is
port (
I : in std_logic_vector (3 downto 0);
F : out std_logic
);
end porteET4 ;
38
architecture comportementale1 of porteET4 is
begin
process (I)
begin
F <= I(3) and I(2) and I(1) and I(0); end process;
end comportementale1;
39
architecture comportementale2 of porteET4 is
begin
process (I)
variable sortie: std_logic;
begin
sortie:=1;
for k in 3 downto 0 loop
sortie := sortie and I(k);
end loop;
F <= sortie;
end process;
end comportementale2;
40
Entité paramétrable
library ieee;
use ieee.std_logic_1164.all;
entity porteET is
generic (
w : positive := 8 -- nombre d’entrées de la porte ET
);
port (
I : in std_logic_vector (w-1 downto 0);
F : out std_logic
);
end porteET;
41
architecture comportementale of porteET is
begin
process (I)
variable sortie: std_logic;
begin
sortie:=1;
for k in w-1 downto 0 loop
sortie := sortie and I(k);
end loop;
F <= sortie;
end process;
end comportementale;
42
FIN DU COURS
43