Академический Документы
Профессиональный Документы
Культура Документы
Langage VHDL
1. Introduction
1. Introduction
L'intrt d'une telle description rside dans son caractre excutable : une
spcification dcrite en VHDL peut tre vrifie par simulation, avant que la
conception dtaille ne soit termine.
1. Introduction
Ce langage permet daller dun niveau dabstraction trs leve, par une
description algorithmique, jusqu' un niveau proche du matriel, o lon
dcrit le systme par un ensemble de porte logique et dinterconnexion
( gate level ).
Entre les deux, se trouve le niveau RTL (Register Transfer Level), qui
permet de dfinir le systme par une architecture de type machine de
Moore ou Mealy.
1. Introduction
Lavantage du code RTL est quil est indpendant des technologies utilises
dans la cible programmer, alors quau niveau gate , il faut prendre en
compte la technologie du circuit cible, car tout nest pas permis.
A partir de ce langage, on peut dfinir un systme par une structure hirarchique
de fonctions, par une structure matrielle, en encore par une modlisation
temporelle (mme si elle nest pas utilisable pour faire du code synthtisable).
1. Introduction
Cest le niveau RTL que lon utilise de plus, quand on fait de la synthse.
En effet, le niveau algorithmique nest pas forcement synthtisable, il est
plutt utilis pour faire du testbench ou de la simulation.
La syntaxe du VHDL est tire du langage Ada, dont les mots clefs ont t
adapts la conception matrielle.
1. Introduction
1. Introduction
1. Introduction
1. Introduction
Autres langages proches
Verilog concurrent et plus ancien. La syntaxe est proche de celle
du langage C.
VHDL-AMS Langage de modlisation mixte numriqueanalogique IEEE.1076.1-1999. Il est entirement compatible
avec VHDL. Uniquement pour la modlisation.
HDL assimilable aux langages logiciels de haut niveau
1. Introduction
Historique
Fin des annes 70 : lancement du programme VHSIC par le ministre
de la dfense amricaine
1981 : Premires rflexions sur le VHDL
1987 : IEEE 1076 : Dfinition dun langage unique pour
. La description
. La modlisation
. La simulation
. La synthse
. La documentation
1993 : IEEE 1164 : Normalisation des signaux logiques multivaleurs
MVL9 (multivalued logic, nine values).
1996 : IEEE 1076.3 : Normalisation pour la synthse. Implantation
d un nombre sign
Modlisation et synthse
Limites actuelles du VHDL
12
Modlisation et synthse
Modlisation
Tout le langage:
Logique + Temporel
Un modle peut tre
comportemental, structurel ou
de type data-flow
Exemple: cre des
programmes de test
Synthse
Langage simplifi. Le style
dcriture anticipe une
primitive circuit.
La synthse demande une
bonne connaissance du circuit
et de la technologie.
13
Modlisation et synthse
indpendant du constructeur
Portabilit
indpendant de la technologie
indpendant de la dmarche
indpendant du niveau de
conception
14
Units de conception
Dfinition:
Lunit de conception (design unit) est le plus petit module
compilable sparment.
15
Units de conception
16
Units de conception
Entit et architecture:
17
Units de conception
Dclaration de lentit:
18
Units de conception
Exemple:
19
Units de conception
Dclaration de larchitecture:
20
Units de conception
Trois descriptions darchitectures sont possibles:
Algorithme
21
Units de conception
Description comportementale:
22
Units de conception
23
Units de conception
Description structurelle:
24
Units de conception
Dclaration et instanciation dun composant:
25
Units de conception
Exemple de description structurelle:
26
Units de conception
27
Units de conception
Configuration
28
Units de conception
Configuration
Si l'entit A est utilise au sein de l'architecture arch_princ de l'entit princ, et si on
a plusieurs architectures pour cette entit A. Lors de la synthse ou de la
simulation de l'entit princ, il va tre ncessaire de spcifier quelles sont les
architectures utiliser. Cette spcification peut tre faite grce l'utilisation d'une
configuration.
Units de conception
Package:
Dans le langage VHDL, il est possible de crer des package
et package body dont les rles sont de permettre le
30
Units de conception
Package:
Package Body:
31
Units de conception
Package:
package PACK is
-- dclarations de types, sous types, signaux, composants
-- constantes, sous programmes (sans code)
-- aucune variable
end PACK;
Package Body:
Package body PACK is
-- dclarations identiques (sauf signaux)
-- corps des SP de la partie dclarative
end PACK;
32
Units de conception
Exemple:
use work.geometrie.pi;
use work.geometrie.aire_cercle;
..........
calc: process(h)
variable aire, perim :real ;
begin
.....
aire_cercle (rayon,aire);
perim := 2*pi*rayon;
.....
end process calc;
.......
33
1. Introduction
Environnement de dveloppement intgr
Les principaux fabricants de circuits logiques programmables proposent une version gratuite mais limit de leurs outils.
diteur
Produit
Licence
Synthtiseur
Simulateur
Remarques
Xilinx
ISE Webpack4
Propritaire, gratuite,
illimit
Oui
Oui
Altera
Quartus II Web
Edition5
Propritaire, gratuite, 6
mois renouvelable
Oui
Oui
Lattice
ispLever starter6
Propritaire, gratuite, 6
mois renouvelable
Oui
Non
Actel
Libero7
Propritaire, gratuite, 1
an renouvelable
Oui
Oui
Simulateurs uniquement
Aldec
Active-HDL
Student Edition8
Propritaire, gratuite, 1
an
Tiers partie
Oui
Mentor
Graphics
ModelSim PE
Student Edition9
Propritaire, gratuite
Non
Oui
2. Elments de base
. Entity/Architecture : Brique de base de complexit trs variable
Fonctionnement interne
Interface externe
. Package :
- Pour une conception modulaire et hirarchique
- Les entits/architectures rutiliser sont places dans des packages
. Library :
Out 1
Bloc A
In 2
In 3
Out 2
In 3
Bloc B
Bloc C
Out 1
Bloc D
Bloc E
Out 2
cette entit
- Instanciation d'un composant (component)
R/W
Adresse
Donnes
Mmoire
Busy
Erreur
In
Out
Inout
Buffer
. Exemple :
ENTITY adder_pip IS
PORT(
clk : IN bit;
a,b : IN bit_vector(7 DOWNTO 0);
cin : IN bit;
s : OUT bit_vector(7 DOWNTO 0);
cout : OUT bit);
END adder_pip;
2.2. Architecture
. Spcification de la fonctionnalit.
. Plusieurs architectures peuvent tre dfinies pour le mme modle.
. Dclaration
ARCHITECTURE nomdelarchitecture OF nomdelentit IS
dclarations de procdures, de types, de constantes,
de composants, de signaux.
BEGIN
dfiniton de processus
et/ou
d'instances de composants, ...
END nomdelarchitecture;
2.2. Architecture
. Exemple
2.2. Architecture
.3
Types de description :
. Description comportementale
- Description purement fonctionnelle du circuit
- Portabilit, lisibilit, maintenance, volutivit
2.2. Architecture
Description structurelle
2.2. Architecture
Description mixte
Au sein dune mme architecture, il est possible d utiliser des
modules dcrits de manire comportementale ou structurelle
haut niveau
ARCHITECTURE haut_niveau OF adder IS
BEGIN
S <= A + B;
END haut_niveau;
. Description
. Description
bas niveau
Q
Horloge
Q
Q-1
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
ENTITY basculed IS
PORT
(
d,clk : IN bit;
q: OUT bit);
END basculed;
ARCHITECTURE comportementale OF basculed IS
BEGIN
PROCESS(clk)
BEGIN
IF (clk='1') THEN q<=d;END IF;
END PROCESS;
END comportementale;
VHDL
S(0)
A(1)
B(1)
A(0)
B(0)
S(1)
reset
D
b
a
Adder
S_inter
clk
s
VHDL
3. Types
. Types :
. Types disponibles
- Scalaires (Scalar)
. Entiers (integer)
. Flottants (Real)
. Enumrs (Enumerated)
. Physiques (Physical)
- Composs (Composite)
. Tableaux (Array)
- Collection dobjets de mme type
. Enregistrements (Record)
- Collection dobjets de type diffrent
- Access et File
. Types pour la manipulation de fichiers ou sur les pointeurs
3. Types
. Sous-types :
. 2 sous-types prdfinis
SUBTYPE natural IS integer RANGE 0 TO higher_integer;
SUBTYPE positive IS integer RANGE 1 TO higher_integer;
. Sous-types : Exemples
3. Types
entiers :
-231 + 1 entier 231 - 1
TYPE chiffre_ascendant IS RANGE 0 TO 9;
TYPE chiffre_descendant IS RANGE 9 DOWNTO 0;
Notations de valeurs
147
-154
2#01010111# (binaire)
. Types
16#3FFF# hxadcimal
flottants :
Approximation discrte de l'ensemble des rels dans un intervalle donn
TYPE tension IS RANGE 0 TO 5;
numrs :
physiques :
Valeurs numriques de quantits physiques
enregistrements
Integer
Natural
Positive
bit
Boolean
Bit-vector
- time : non
- real : non
- integer : Favoriser les entiers borns
Real
Time
. Types dfinis
CONSTANT pi : real:=3.141592 ;
Variables (Variable)
. Objets permettant de conserver une valeur pendant un certain temps
. Utilisable qu'au sein d'un processus (dfinition dans le process)
. Peu utilis en synthse logique
. Exemple:
. Signaux (signal)
. Utilisation en mode concurrent et squentiel
. Dclaration dans une "zone" concurrente
. Signaux internes, temporaires
. Synthse (reprsentation matrielle : un fil ou une mmoire)
. Absence de mode
. Synthse d'une VARIABLE Synthse d'un SIGNAL
. Une valeur courante et une valeur future
(signal)
a
b
Tmp (fil)
a
b
Tmp (fil)
5. Attributs
. Informations supplmentaires sur les types et objets
. Utilisation : toto'att avec toto un objet ou un type et att un attribut
. Attributs d'un scalaire
T'left
T'right
T'low
T'high
-> Limite
-> Limite
-> Limite
-> Limite
gauche de T
droite de T
basse de T
haute de T
5. Attributs
. Exemples - Attributs d'un scalaire
Type adr is integer range 7 downto 0;
adr
adr
adr
adr
left = 7
right = 0
low = 0
high = 7
5. Attributs
5. Attributs
exemples :
type MOT is bit_vector(7 downto 0);
type TAB is array (4 downto 0) of MOT;
signal NOM : MOT;
signal TABLEAU : TAB;
MOT'LEFT renvoie 7;
MOT'LENGTH renvoie 8;
TABLEAU'RIGHT renvoie 0;
TABLEAU'RANGE renvoie 4 downto 0;
5. Attributs
. Exemples : Attributs d'un tableau
type word is bit_vector(31 downto 0);
type memory is array(7 downto 0) of word;
variable mem:memory;
mem'left = 7
mem'left(3) = 31
mem'right = 0
mem'low = 0
mem'high = 7
mem high(5) = 31
mem'range = 7 downto 0
mem range(3) = 31 downto 0
mem'reverse_range = 0 to 7
mem'length = 8
memlength(3) = 32
. Excution parallle
. Excution par dfaut
. Les instructions au sein d'une architecture sont excutes en parallle ou de
manire concurrente
. Excution concurrente = Excution combinatoire
. Chaque opration dans une architecture est excute chaque instant
. Excution squentielle
. Ncessit d'utiliser un PROCESS
. Le process est excut chaque fois qu'un signal dclar dans sa liste de
sensibilit change de valeur.
. Les instructions sont excutes squentiellement
. Les modifications des signaux (signal) sont effectives la fin du process
a
b
Comparateur
q
clk
Reset
qs
7. Instructions
. Deux
I1
I2
I3
I1
I2
I3
. Assignation conditionnelle
. Instruction GENERATE
label : FOR variable_boucle IN val_iniale TO val_finale GENERATE
{instructions parallles}
END GENERATE label
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY quisuisje IS
GENERIC(N : integer := 4);
PORT(
a,b : IN std_logic_vector(N DOWNTO 1);
cin : IN std_logic;
s : OUT std_logic_vector(N DOWNTO 1);
cout : OUT std_logic);
END quisuisje
ARCHITECTURE structurel OF quisuisje IS
COMPONENT ADDER PORT(a,b,cin : IN std_logic;s,cout : OUT std_logic); END COMPONENT
SIGNAL carry : std_logic_vector(N-1 DOWNTO 1);
BEGIN
gene : FOR i IN 1 TO N GENERATE
ls_bit : IF i=1 GENERATE
ls_cell : adder PORT MAP(a(1),b(1),cin,s(1), carry(1));
END GENERATE ls_bit;
middle_bit : IF (i>1 and i<N) GENERATE
middle_cell : adder PORT MAP(a(i),b(i),carry(i-1),s(i), carry(i));
END GENERATE middle_bit;
ms_bit : IF i=N GENERATE
ms_cell : adder y MAP(a(N),b(N),carry(N-1),s(N), cout);
END GENERATE ms_bit;
END GENERATE gene;
END structurel;
Said najah___________________________________________________
PROCESS
BEGIN
-- Corps du process
[label] : PROCESS
BEGIN
WAIT UNTIL (liste_signaux)
-- Corps du process
Exemple :
Dans l'exemple suivant, a,b,c sont des signaux et x une variable.
Enfin de processus, a et b vont prendre la valeur a+1 aprs un deltacycle
process
(a) la valeur a aprs un delta-cycle.
alors que
c prendre
variable x : std_logic;
begin
x := a+1;
a <= a+1;
b <= x;
c <= a;
end if;
end process;
. Instruction IF
IF expresssion_booleenne THEN
END IF;
instructions_sequentielles
IF up_down = 1 THEN
s <= s + 1;
ELSE
s <= s - 1;
END IF;
. Instruction CASE
CASE expresssion is
{WHEN valeur_expression => instructions_sequentielles};
{WHEN OTHERS => instructions_sequentielles};
END CASE;
CASE selection IS
WHEN '0' => s <= a;
WHEN '1' => s <= b;
WHEN OTHERS => NULL;
END CASE;
. Instruction LOOP
instruction_pour_iteration LOOP
instructions_sequentielles
END LOOP;
. Instruction EXIT
PROCESS(clk)
BEGIN IF clk='1' THEN
ASSERT d'STABLE(15 ns);
REPORT "setup non respect" SEVERITY warning;
END IF;
END PROCESS;
Multiplexeur 8 bits
4 vers 1
Entres
Entree1
Entree2
Entree3
Entree4
Sorties
8
8
8
Multiplexeur 8 bits
4 vers 1
Sel1 Sel2
Sortie
- Solution 1 : Instruction IF
- Solution 2 : Instruction CASE
8. Oprateurs standards
. Remarque :
. Oprateurs
logiques
Nom
Type oprandes
Signification
And
Et
Nand
Non et
Or
Ou
Nor
Xor
Boolean
Bit ou Bit_vector
Non ou
Ou exculsif
Xnor
Egal
Not
Non
8. Oprateurs standards
. Oprateurs
.
logiques
Exemple 1
a(0)
b(0)
Synthse
c(0)
a(0)
c(0)
b(0)
Exemple 2
SIGNAL d, e, f, g : bit;
g <= (d AND e) AND f;
Synthse
d
e
f
8. Oprateurs standards
. Oprateurs relationnels
Nom
Type oprandes
=
/=
<
<=
>
>=
Exemple
Synthse
Signification
Egal
Non gal
Infrieur
Infrieur ou gal
Suprieur
Suprieur ou gal
a0
a1
!b0
a0
!b1
!b0
a1
!b1
8. Oprateurs standards
. Oprateurs
Nom
de dcalages
Type oprandes
Sll
Srl
Rol
A gauche
Bit_vector
Ror
Signification
A droite
Circulaire gauche
Circulaire droit
Exemple
Synthse
a0
a1
b0
a2
b1
a3
b2
'0'
b3
clk
8. Oprateurs standards
Oprateurs
arithmtiques
Nom
Type oprandes
Signification
Incrmentation de 1 ou addition
Dcrmentaion de 1 ou soustraction
Integer, Real
Multiplication
Division
abs
Valeur absolue
**
Exponentiel
Integer
mod
Modulo
rem
Autres
Reste
oprateurs
Nom
Type oprandes
Signification
&
Bit, Bit_vector
Concatnation
8. Oprateurs standards
. Exemple
: addition
S = (A + B) + (C - 1)
T = ((A + B) + C - 1)
Synthse
B
C
-1
B
C
-1
Exemple : multiplication
- Contraintes
- Nature des entres (puissance de 2)
- Bibliothques de composants disponibles (Package standard de synthse)
8. Oprateurs standards
. Oprateur
de concatnation
Nom
Type oprandes
Signification
&
Bit, Bit_vector
Concatnation
ARCHITETCURE ...
SIGNAL A : BIT_VECTOR(2 DOWNTO 0 );
SIGNAL B : BIT;
SIGNAL C : BIT_VECTOR(5 DOWNTO 0 );
BEGIN
C <= not B & "101" & not A(2 DOWNTO 1);
A(1)
C(0)
A(2)
C(1)
VDD
GND
VDD
C(2)
C(3)
C(4)
C(5)
9. Description hirarchique
. Amlioration de la modularit
. Utilisation d'un objet dcrit l'extrieur de la description utilisatrice
- 2 fichiers VHDL distincts
. Compilation distincte :
- le composant
- l'entit utilisatrice de ce composant
. Entit compile : Stockage dans la bibliothque WORK
Adder1.vhd
ENTITY half_adder IS
PORT( a,b,cin : IN bit;
cout,s : OUT bit);
END half_adder
ARCHITECTURE arch_half OF
half_adder IS
BEGIN
s <= a xor b XOR cin;
cout <= (a AND b) OR (a AND c)
OR (b AND c);
END arch_half;
Adder2.vhd
ENTITY
ENTITYfull_adder
full_adderISIS
PORT(
PORT(
a,b
a,b: IN
: INbit_vector(1
bit_vector(1DOWNTO
DOWNTO0);
0);
cin
cin: IN
: INbit;
bit;
cout
cout: OUT
: OUTbit;
bit;
s s: out
: outbit_vector(1
bit_vector(1DOWNTO
DOWNTO0));
0));
END
ENDfull_adder
full_adder
ARCHITECTURE
ARCHITECTUREarch_full
arch_fullOF
OFfull_adder
full_adderISIS
SIGNAL
SIGNALinter
inter: bit;
: bit;
COMPONENT
COMPONENThalf_adder
half_adderPORT
PORT(a,b,cin
(a,b,cin: IN
: INbit;
bit;
cout,s
cout,s: OUT
: OUTbit);
bit);
END
ENDCOMPONENT;
COMPONENT;
BEGIN
BEGIN
u1:half_adder
u1:half_adderPORT
PORTMAP
MAP
(a(0),b(0),cin,inter,s(0));
(a(0),b(0),cin,inter,s(0));
u2:half_adder
u2:half_adderPORT
PORTMAP
MAP(a(1),b(1),inter,s(1));
(a(1),b(1),inter,s(1));
END
ENDarch_full;
arch_full;
ENTITY adder is
Dclaration d'un
additionneur
PORT(
END adder;
ARCHITECTURE arch_adder OF adder IS
BEGIN
s <= a + b;
END arch_adder;
Instanciation avec
une largeur de 16 bits
. Les standards IEEE 1164 et IEEE 1076.3 sont accessibles via des packages
Package
Library Contents:
maxplus2.vhd
maxplus2
altera
megacore.vhd
megacore
altera
std1164.vhd
std1164b.vhd
std_logic_1164
ieee
lpm_pack.vhd
lpm_components
lpm
arith.vhd
arithb.vhd
std_logic_arith
ieee
signed.vhd
signedb.vhd
std_logic_signed
ieee
unsigned.vhd
unsignedb.vhd
std_logic_unsigned
ieee
. 2 parties :
--body of data_to_int
END data_to_int;
FUNCTION int_to_data(velue:integer) RETURN data IS;
--body of int_to_data
END int_to_data;
end data_types;