Académique Documents
Professionnel Documents
Culture Documents
Wajdi Elhamzi
elhamziwajdi@yahoo.fr
AU: 2013/2014
Introduction
Mthode classique
A E S
0 1 0
S = .E+A
1 0 1
Nouvelle mthode
CAO
HDL
AU: 2013/2014
Prsentation de VHDL
VHDL signifie: VHSIC Hardware Description
Language o VHSIC signifie Very High Speed
Integrated Circuit
Dfini vers 1980 par le dpartement de la
dfense amricaine
Accept comme standard en 1987 et
tendu en 1993, 2001 et 2008.
AU: 2013/2014
Historique du VHDL
1980: Dbut du projet, financ par le DoD (400M $US)
1982: Contrat pour Intermetrics, IBM et Texas
Caractristiques
Langage de description des circuits numriques trs
rpandu (avec Verilog);
Permet la hirarchie (dcomposition);
Offre plusieurs niveaux dabstraction;
Supporte la concurrence, le timing et les horloges;
Caractristiques du VHDL
Le VHDL est un langage instructions concurrentes :
Les instructions sont values en mme temps.
Lordre dans lequel elles sont crites na aucune importance.
Le langage VHDL ne fait pas de distinction entre majuscules et
minuscules.
En langage VHDL les commentaires sont prcds par -- et
sarrtent au retour la ligne.
AU: 2013/2014
Avantages
Langage standardis:
Disponibilit des outils
Interface entre plusieurs outils
11/02/2015
11/02/2015
11/02/2015
10
11/02/2015
11
11/02/2015
12
Flot de conception
Description de haut niveau avec VHDL et
validation de la syntaxe
Description
H. N.
S
I
M
U
L
A
T
I
O
N
Synthse
vrifier le fonctionnement
Synthse: passage dun niveau dabstraction un
autre
Obtention dun netlist de la technologie cible :
Netlist
FPGA/ASIC
P&R
ASIC ou FPGA
La validation et le test
AU: 2013/2014
FPGA
Conception Numrique FPGA/VHDL
W.Elhamzi
ASIC
13
Dclaration dentit
AU: 2013/2014
14
HALF
ADDER
S
R
Vue externe
A
B
Cin
11/02/2015
FULL
ADDER
15
Half
ADDER
S
R
Vue interne
S= A xor B
R= A and B
A
B
Cin
FULL
ADDER
Vue interne
11/02/2015
S= A xor B xor C
R= (A and B) or ((A xor B) and Cin)
Conception Numrique FPGA/VHDL
W.Elhamzi
16
Dclaration du bibliothque
library IEEE;
--Dfinie la bibliothque utilise
use IEEE.STD_LOGIC_1164.all;
--Dfinie lelement du bibliothque. Par exemple
STD_LOGIC_1164 dfinie 1 comme tat logique haut et
0comme tat logique bas.
Plusieurs bibliothques existent comme:
IEEE.standard -- dfinition du type bit, vecteur de bit, etc
IEEE.std_logic_1164 -- oprations signes ou non signes
IEEE.numeric_std -- oprations signes ou non signes
IEEE.std_logic_arith
Langage de description VHDL
B.ATTIA
17
Dclaration de lentit
Le mot cl Entity est utilis
pour dfinir les ports et les
constantes gnriques
Il sagit de la description de
la boite noire
Les ports peuvent tre des
entres, sorties ou
bidirectionnels
Mode: in, out ou inout
Entity Moncircuit is
Port (
x,y: in bit;
R: out bit_vector(3 downto 0));
End Moncircuit;
AU: 2013/2014
x
R
y
Moncircuit
L'entit prcise :
le nom du circuit
Les ports d'entre-sortie :
Leurs noms
Leurs directions (in, out, inout,...)
Leur type (bit, bit_vector, integer,
std_logic,...)
Les paramtres ventuels pour les
modles gnriques
18
AU: 2013/2014
19
AU: 2013/2014
20
Entity/Architecture
-- dclaration des ressources externes
library NOM_DE_LA_BIBLIOTHEQUE ;
use ELEMENT_DE_LA_BIBLIOTHEQUE ;
-- description de lentit vue comme une boite noire avec des entres et des sorties
entity NOM_DE_LENTITE is
port(NOM_DE_Port_ENTREES_SORTIES : direction type,
.
NOM_DE_Port_ENTREES_SORTIES : direction type) ;
end NOM_DE_LENTITE ;
--description de larchitecture lintrieure de lentit
architecture NOM_DE_LARCHITECTURE of NOM_DE_LENTITE is
--Zone de dclaration (type, objet, signal, composant, constantes, fonctions);
begin
--Instruction concurrente
--Instruction concurrente
end NOM_DE_LARCHITECTURE ;
Langage de description VHDL
B.ATTIA
21
In1
In2
out
22
In1
In2
out
23
end archi;
AU: 2013/2014
24
25
compos:
array,
record
pointeur: acces
I/O: file
AU: 2013/2014
26
compos:
array,
record
pointeur: acces
I/O: file
AU: 2013/2014
27
type
ou soustype
boolean
bit
FALSE et TRUE
0 et 1
character
type prdfini
integer
type prdfini
sous-type
prdfini
sous-type
prdfini
positive
AU: 2013/2014
valeurs
type prdfini
type prdfini
natural
scalaires
source
de la dfinition
real
type prdfini
std_logic
Package
std_logic_1164
28
composs
bit_vector
string
type prdfini
type prdfini
tableau de bit
tableau de character
std_logic_ve
ctor
Package
std_logic_1164
tableau de std_logic
unsigned
Package
numeric_std
signed
Package
numeric_std
AU: 2013/2014
29
Types et sous-types
Sous-types:
Subtype nom is nomtype dbut to fin
Subtype Chiffre is integer 0 to 9;
Tableaux:
Type tab is array (7 downto 0) of std_logic
Types numrs:
Type etat is (etat_0,etat_1,etat_2);
Type lumiere is (allum,teint,clignotant);
AU: 2013/2014
30
Le type std_logic
Une donne de type std_logic possde
une valeur parmi neuf possibles:
U : non initialis,
X : niveau inconnu, forage fort,
0 : niveau 0, forage fort,
1 : niveau 1, forage fort,
Z : haute impdance,
W : niveau inconnu, forage
faible,
L : niveau 0, forage faible,
H : niveau 1, forage faible,
- : quelconque
Pour une affectation, les valeurs
utilises sont: 'X', '0', '1', 'Z'
AU: 2013/2014
VCC
0
1
VCC
VCC
Z
31
VHDL: oprateurs
type de
loprande
de gauche
catgorie
oprateurs
logique
relation
dcalage
arithmtique
+, -, *, /,
abs (valeur absolue),
mod (modulo),
rem (reste)
AU: 2013/2014
&
type de lexpression
bit, boolean
scalaire ou tableau
tableau de bit
ou boolean
type
numrique
** (exponentiation)
concatnation
type de
loprande de
droite
integer
type
numrique
boolean
comme loprande de
gauche
type
numrique
integer
tableau ou type numr
tableau
32
Instructions et Architecture
Dans le corps de larchitecture se trouvent les 3 types
dinstructions concurrentes de VHDL. Elles peuvent tre crites
dans nimporte quel ordre :
Des processus avec le mot cl Process
Des instructions concurrentes daffectation de signaux (<=).
Des instanciation de composant avec le mot cl port map
AU: 2013/2014
33
34
AU: 2013/2014
35
Processus en VHDL
Un processus est un bloc de commande dans une
architecture
Chaque processus excute ses instructions de
manire squentielle
Il y a un rebouclage implicite la fin du processus
Plusieurs processus dfinissent des oprations qui
se droulent en parallle dans un systme
Les processus sont persistants et ne se terminent
jamais
AU: 2013/2014
36
Processus en VHDL
Liste de sensibilit statique
Soit process (N1,N2,N3)
Au dpart tous les processus sont excuts une fois
Une fois le corps du processus excut, celui-ci attend un
vnement sur le signal Nx pour sexcuter nouveau
Les instructions du processus sont excutes si au moins
UN des signaux de la liste est modifi
AU: 2013/2014
37
Processus en VHDL
Process (signal1,siganl2.,signalN)
dclaration de type;
dclaration de variable;
dclaration de constante;
dfinition de fonction;
begin
Instruction squentielle;
Instruction squentielle;
end process;
AU: 2013/2014
38
Liste de sensibilit
La partie excutable d'un processus n'est active que si un vnement
(changement d'tat) survient sur au moins un signal dit sensible.
end process;
AU: 2013/2014
process
begin
39
Assignations
concurrentes/squentielles
Instruction squentielle :instruction lintrieur
dun process
Instruction concurrente :instruction lextrieur
des process.
40
FlipFlop
/Q
41
entity D_latch is
port( data_in: in std_logic;
enable: in std_logic;
data_out: out std_logic );
end D_latch;
architecture behv of D_latch is
begin
process(data_in, enable)
begin
if (enable='1') then
data_out <= data_in;
end if;
end process;
Latch
En
/Q
end behv;
AU: 2013/2014
42
AU: 2013/2014
43
AU: 2013/2014
entity vote is
generic (
W : positive := 4
);
port (
lesvotes: in std_logic_vector(W - 1 downto 0);
approbation : out std_logic
);
end vote;
architecture comportementale3 of vote is
constant nMin : natural := W / 2;
begin
process(lesvotes)
variable compte : natural range 0 to lesvotes'length;
begin
compte := 0;
for k in lesvotes'range loop
if lesvotes(k) = '1' then
compte := compte + 1;
end if;
end loop;
if compte > nMin then
approbation <= '1';
else
approbation <= '0';
end if;
end process;
end comportementale3;
44
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity vote is
generic (
W : positive := 4
);
port (
lesvotes: in std_logic_vector(W - 1 downto 0);
approbation : out std_logic
);
end vote;
architecture flotdonnees2 of vote is
signal A, B, C, D : std_logic;
begin
(A, B, C, D) <= lesvotes;
approbation <=
(not(A) and B and C and D)
or (A and not(B) and C and D)
or (A and B and not(C) and D)
or (A and B and C and not(D))
or (A and B and C and D);
end flotdonnees2;
45
Objets: 3. variable
library IEEE;
use IEEE.STD_LOGIC_1164.all;
AU: 2013/2014
entity vote is
generic (
W : positive := 4
);
port (
lesvotes: in std_logic_vector(W - 1 downto 0);
approbation : out std_logic
);
end vote;