cours technologie vhdl we - v1.1
DESCRIPTION
vhdl langageTRANSCRIPT
-
TechnologieVHDL
Wajdi Elhamzi [email protected]
1 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
mailto:[email protected] -
HDL
Nouvelle mthode
CAO
S = .E+A
A E S
0 1 0
1 0 1
Mthode classique
2 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Introduction
-
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.
3 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Prsentation de VHDL
-
4 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Historique du VHDL
1980: Dbut du projet, financ par le DoD (400M $US) 1982: Contrat pour Intermetrics, IBM et Texas 1985: Version 7.2 dans le domaine public 1987: Standard IEEE 1076 (VHDL-87) 1993: Nouvelle version du standard (VHDL-93) 2001: Nouvelle version du standard (VHDL-2001) 2008: Nouvelle version du standard (VHDL-2008)
-
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;
Cest un langage simple comprendre et difficile matriser.
5 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Caractristiques
-
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.
Caractristiques du VHDL
6 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
-
Langage standardis: Disponibilit des outils
Interface entre plusieurs outils
Permet lcriture de code dcrivant des circuits complexes
Permet de crer des bibliothques de modules rutilisables
Chaque module peut tre valid sparment par simulation
Description portable (indpendante de la technologie FPGA, ASIC)
7 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Avantages
-
11/02/2015 8 Conception Numrique FPGA/VHDL
W.Elhamzi
-
11/02/2015 9 Conception Numrique FPGA/VHDL
W.Elhamzi
-
11/02/2015 10
-
11/02/2015 11
-
11/02/2015 12 Conception Numrique FPGA/VHDL
W.Elhamzi
-
Description H. N.
Synthse
Netlist FPGA/ASIC
P & R
FPGA ASIC
S I M U L A T I O N
Description de haut niveau avec VHDL et
validation de la syntaxe
Simulation tous les niveaux dabstraction pour
vrifier le fonctionnement
Synthse: passage dun niveau dabstraction un
autre
Obtention dun netlist de la technologie cible :
ASIC ou FPGA
La validation et le test
13 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Flot de conception
-
Bibliothque: appel a des fonctions, types, paquetages comme en C/C++ (#include
Entit: description des entres et sorties du circuit
Architecture: description interne du fonctionnement du circuit
Dclaration dentit
Dclaration darchitecture
14 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Structure gnrale dun programme (1)
Dclaration bibliothques
-
11/02/2015 15
A
B
S
R
Vue externe
A
B
S
R Cin
Vue externe
HALF ADDER
Chaque circuit peut donc tre modlis comme le montre la figure: Un rectangle ou un symbole indiquant les entres et les sorties avec leurs noms, cest la vue externe.
Entit: description des entres et sorties du circuit
FULL ADDER
Conception Numrique FPGA/VHDL W.Elhamzi
Structure gnrale dun programme (2)
-
11/02/2015 16
Architecture: description interne du fonctionnement du circuit
A
B
S
R
Vue interne
A
B
S
R Cin
S= A xor B R= A and B
Vue interne S= A xor B xor C
R= (A and B) or ((A xor B) and Cin)
Half ADDER
Une quation pour chacune des sorties, ce qui dcrit le comportement de chaque circuit, cest la vue interne.
FULL ADDER
Conception Numrique FPGA/VHDL W.Elhamzi
Structure gnrale dun programme (3)
-
17 Langage de description VHDL
B.ATTIA
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
Dclaration du bibliothque
-
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;
18 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Dclaration de lentit
Moncircuit
x
y
R
3
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
-
Architecture Mon_architecture of Moncircuit is Begin --description du circuit
End Mon_architecture ;
L'architecture est la description interne du circuit:
Elle est toujours associe une entit.
Une mme entit peut avoir plusieurs architectures.
19 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Dclaration de larchitecture (1)
-
20 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Dclaration de larchitecture (2)
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 (
-
21
-- 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
Entity/Architecture
-
Library ieee;
Use ieee.std_logic_1164.all;
Entity and2port is
Port( in1:in std_logic;
in2:in std_logic;
out: out std_logic);
End and2port;
Architecture arch of and2port is
Begin
out
-
Library ieee;
Use ieee.std_logic_1164.all;
Entity ou2port is
Port( in1:in std_logic;
in2:in std_logic;
out: out std_logic);
End ou2port;
Architecture arch of ou2port is
Begin
out
-
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity comparator_1 is port(A,B : in std_logic_vector(7 downto 0); CMP : out std_logic); end comparator_1; architecture archi of comparator_1 is begin CMP = B else '0'; end archi;
24 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Exemple : comparateur 8 bits non sign
-
Entity: dcrit la vue externe du circuit indpendamment de limplmentation
Architecture: dcrit la vue interne (fonctionnement) du circuit
Package: contient des informations commune plusieurs design (types, fonctions, procdures)
Configuration: permet dassocier une architecture une entit
25 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Les 4 units de conception
-
VHDL est un langage fortement typ: toute donne doit tre dclar avant utilisation, en indiquant son type.
Les types prdfinis sont: scalaire:
integer,
real,
enumerated ,
physical
compos: array,
record
pointeur: acces
I/O: file
26 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Les types en VHDL
-
VHDL est un langage fortement typ: toute donne doit tre dclar avant utilisation, en indiquant son type.
Les types prdfinis sont: scalaire:
integer,
real,
enumerated ,
physical
compos: array,
record
pointeur: acces
I/O: file
27 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Les types en VHDL
-
28 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
catgorie type
ou sous-type
source de la dfinition
valeurs
scalaires
boolean type prdfini FALSE et TRUE bit type prdfini 0 et 1
character type prdfini
256 caractres de la norme ISO 8859-1, avec des abrviations reconnues et certaines qui sont propres VHDL
Les 128 premiers sont les caractres ASCII.
integer type prdfini plage minimale de 231 + 1 231 1
natural sous-type prdfini
0 231 1
positive sous-type prdfini
1 231 1
real type prdfini typiquement 1.7014111E308 1.7014111E308
std_logic Package
std_logic_1164
U : valeur inconnue, pas initialise
X : valeur inconnue force
0 : 0 forc
1 : 1 forc
Z : haute impdance (pas connect)
W : inconnu faible
L : 0 faible
H : 1 faible
- : peu importe (dont care)
VHDL: types prdfinis et de base
-
29 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
composs
bit_vector type prdfini tableau de bit
string type prdfini tableau de character
std_logic_vector
Package
std_logic_1164 tableau de std_logic
unsigned Package
numeric_std
tableau de std_logic, interprt comme un nombre binaire non sign
signed Package
numeric_std
tableau de std_logic, interprt comme un nombre binaire sign en complment deux
VHDL: types prdfinis et de base
-
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);
30 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Types et sous-types
-
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'
31 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Le type std_logic
VCC
1
0
VCC
Z
VCC
X
-
32 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
catgorie oprateurs type de
loprande de gauche
type de loprande de
droite type de lexpression
logique and, or, nand, nor, xor, xnor,
not bit, boolean
relation =, /=, = scalaire ou tableau boolean
dcalage
sll (dc. logique gauche), srl (dc. logique droite), sla (dc. arithmtique
gauche), sra (dc. arithmtique droit),
rol (rotation gauche), ror (rotation droite)
tableau de bit
ou boolean integer
comme loprande de gauche
arithmtique
+, -, *, /, abs (valeur absolue),
mod (modulo), rem (reste)
type numrique
type numrique type
numrique
** (exponentiation) integer
concatnation & tableau ou type numr tableau
VHDL: oprateurs
-
33 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
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 (
-
Architecture comp of RS is
begin
Q
-
En VHDL, les instructions squentielles ne sutilisent qu lintrieur des processus. Un processus est un groupe dlimit dinstructions, dot de trois caractristiques essentielles :
Le processus sexcute chaque changement dtat dun des signaux auxquels il est dclar sensible.
Les instructions du processus sexcutent squentiellement.
Les modifications apportes aux valeurs de signaux par les instructions prennent effet la fin du processus.
35 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Fonctionnement squentiel: Process
-
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
36 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
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
Il est aussi possible dinterrompre un processus en utilisant linstruction wait ou wait on
37 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
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;
38 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Processus en VHDL
-
La partie excutable d'un processus n'est active que si un vnement (changement d'tat) survient sur au moins un signal dit sensible.
Process (a,b,c) -- liste de sensibilit begin end process;
process begin wait on a,b,c; -- liste de sensibilit end process;
Liste de sensibilit
39 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
-
Instruction squentielle :instruction lintrieur dun process
Instruction concurrente :instruction lextrieur des process.
Rappel :les instructions se placent toujours uniquement entre le begin et le end de larchitecture
40 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Assignations concurrentes/squentielles
-
library ieee ; use ieee.std_logic_1164.all; entity dff is port( data_in: in std_logic; clock: in std_logic; data_out: out std_logic ); end dff; architecture behv of dff is begin
process(data_in, clock) begin if (clock='1' and clock'event) then data_out
-
library ieee ; use ieee.std_logic_1164.all; 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
-
Les constantes et les gnriques : Une constante peut tre assimile un signal interne (au circuit) auquel est associe une valeur fixe et dfinitive.
Les signaux : sont spcifiques la description matrielle. Ils servent modliser les informations qui passent sur les fils ou les bus.
Les variables : capable de retenir une valeur pendant une dure limite. Elle ne peut tre employe qu lintrieur dun process.
43 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Les principaux objets manipuls
-
44 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Objets: 1. constant et generic
Une constant (et un generic) peuvent contenir une valeur unique qui ne change pas.
Un objet generic est une constante spciale permettant dappliquer un paramtre une entit lors de son instanciation.
Un objet constant peut tre dfini pour une architecture ou un processus.
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 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
-
45 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Objets: 2. signal et port Un signal est dclar dans
la partie dclarative dune architecture et est visible partout dans celle-ci.
Un signal reprsente peu prs un fil ou un groupe de fils dans un circuit.
Un port dune entit est implicitement un signal dans toutes les architectures de cette entit. Un port de direction in est
comme un signal qui ne peut pas tre crit.
Un port de direction out est comme un signal qui ne peut pas tre lu.
Pour assigner une valeur un port on utilise loprateur
-
46 AU: 2013/2014 Conception Numrique FPGA/VHDL
W.Elhamzi
Objets: 3. variable
Une variable peut contenir une valeur temporaire.
Les variables ne peuvent tre utilises qu lintrieur des processus.
Les objets variable sont utiles pour stocker des valeurs intrimaires dans les calculs.
Pour assigner une valeur une variable on utilise loprateur :=
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 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