Sunteți pe pagina 1din 46

TechnologieVHDL

Wajdi Elhamzi
elhamziwajdi@yahoo.fr

AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

Introduction
Mthode classique

A E S
0 1 0

S = .E+A

1 0 1

Nouvelle mthode

CAO

HDL
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

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

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)
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

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;

Cest un langage simple comprendre et difficile


matriser.
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

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

Conception Numrique FPGA/VHDL


W.Elhamzi

Avantages
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)
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

11/02/2015

Conception Numrique FPGA/VHDL


W.Elhamzi

11/02/2015

Conception Numrique FPGA/VHDL


W.Elhamzi

11/02/2015

10

11/02/2015

11

11/02/2015

Conception Numrique FPGA/VHDL


W.Elhamzi

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

Simulation tous les niveaux dabstraction pour

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

Structure gnrale dun programme (1)


Dclaration bibliothques

Dclaration dentit

Bibliothque: appel a des fonctions,


types, paquetages comme en C/C++
(#include<stdio.h>

Entit: description des entres et


sorties du circuit
Dclaration darchitecture

Architecture: description interne du


fonctionnement du circuit

AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

14

Structure gnrale dun programme (2)


Vue externe
A
B

HALF
ADDER

S
R

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.

Vue externe
A
B
Cin

11/02/2015

FULL
ADDER

Entit: description des entres et


sorties du circuit

Conception Numrique FPGA/VHDL


W.Elhamzi

15

Structure gnrale dun programme (3)


A

Half
ADDER

S
R

Une quation pour chacune des


sorties, ce qui dcrit le
comportement de chaque circuit,
cest la vue interne.

Vue interne

S= A xor B
R= A and B
A
B
Cin

FULL
ADDER

Vue interne
11/02/2015

Architecture: description interne du


fonctionnement du circuit

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

Conception Numrique FPGA/VHDL


W.Elhamzi

18

Dclaration de larchitecture (1)


L'architecture est la description interne du circuit:
Elle est toujours associe une entit.

Une mme entit peut avoir plusieurs architectures.


Architecture Mon_architecture of Moncircuit is
Begin
--description du circuit
End Mon_architecture ;

AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

19

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 (<=).
Des instanciation de composant avec le mot cl port map

AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

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

Exemple simple: porte ET 2 entres


Library ieee;
Use ieee.std_logic_1164.all;
Nom de lentit
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 <= in1 and in2 ;
End arch;
Nom de larchitecture
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

In1

In2

out

22

Exemple : porte OU 2 entres


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 <= in1 or in2 ;
End arch;
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

In1

In2

out

23

Exemple : comparateur 8 bits non sign


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 <= '1' when A >= B else '0';

end archi;
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

24

Les 4 units de conception


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
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

25

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
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

26

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
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

27

VHDL: types prdfinis et de base


catgorie

type
ou soustype
boolean
bit

FALSE et TRUE
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
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

plage minimale de 231 + 1 231 1


0 231 1
1 231 1
typiquement
1.7014111E308 1.7014111E308
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)

Conception Numrique FPGA/VHDL


W.Elhamzi

28

VHDL: types prdfinis et de base

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

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

AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

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

Conception Numrique FPGA/VHDL


W.Elhamzi

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

Conception Numrique FPGA/VHDL


W.Elhamzi

31

VHDL: oprateurs
type de
loprande
de gauche

catgorie

oprateurs

logique

and, or, nand, nor, xor, xnor,


not

relation

=, /=, <, <=, >, >=

dcalage

sll (dc. logique gauche),


srl (dc. logique droite),
sla (dc. arithmtique
gauche),
sra (dc. arithmtique droit),
rol (rotation gauche),
ror (rotation droite)

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

Conception Numrique FPGA/VHDL


W.Elhamzi

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

Conception Numrique FPGA/VHDL


W.Elhamzi

33

Fonctionnement concurrent: instructions


Architecture comp of RS is
begin
Q <= S nand NQ;
NQ <= R nand Q;
end comp;

Ces deux instructions s'excutent en mme temps. Elles sont


concurrentes ; leur ordre d'criture n'est pas significatif ; quel
que soit l'ordre de ces instructions, la description reste
inchange.
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

34

Fonctionnement squentiel: Process


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.

AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

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

Conception Numrique FPGA/VHDL


W.Elhamzi

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

Il est aussi possible dinterrompre un processus en


utilisant linstruction wait ou wait on

AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

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

Conception Numrique FPGA/VHDL


W.Elhamzi

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.

Process (a,b,c) -- liste de sensibilit


begin

end process;
AU: 2013/2014

process
begin

wait on a,b,c; -- liste de


sensibilit
end process;

Conception Numrique FPGA/VHDL


W.Elhamzi

39

Assignations
concurrentes/squentielles
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
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

40

Exemple avec Process : bascule D FlipFlop


library ieee ;
use ieee.std_logic_1164.all;
entity dff is
port( data_in: in std_logic;
clock: in std_logic;
D
data_out: out std_logic );
end dff;
architecture behv of dff is
CLK
begin
process(data_in, clock)
begin
if (clock='1' and clock'event) then
data_out <= data_in;
end if;
end process;
end behv;
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

FlipFlop
/Q

41

Exemple avec Process: bascule D latch


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 <= data_in;
end if;
end process;

Latch
En

/Q

end behv;
AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

42

Les principaux objets manipuls


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.

AU: 2013/2014

Conception Numrique FPGA/VHDL


W.Elhamzi

43

Objets: 1. constant et generic


library IEEE;
use IEEE.STD_LOGIC_1164.all;

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.

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;

Conception Numrique FPGA/VHDL


W.Elhamzi

44

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.

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;

Pour assigner une valeur un


port
on utilise loprateur Conception Numrique FPGA/VHDL
AU: 2013/2014
W.Elhamzi
<=

45

Objets: 3. variable
library IEEE;
use IEEE.STD_LOGIC_1164.all;

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 :=

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;
Conception
FPGA/VHDL
endNumrique
process;
46
W.Elhamzi
end comportementale3;

S-ar putea să vă placă și