Sie sind auf Seite 1von 168

VHDL

Support de cours
D.Chillet
Daniel.Chillet@enssat.fr
http://r2d2.enssat.fr

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Qu'est ce que a veut dire ?

Vhsic Hardware Description


Language
Vhsic : Very High Speed Integrated Circuit
Langage de description de systmes matriels

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

VHDL
Plan
1 ) Introduction : motivations, historique
2 ) Mthode de conception: modles de description
3 ) Units de conception :
entit, architecture, configuration, paquetage, corps de paquetage

4 ) Les objets : signaux, types, sous types


5 ) Les lments du langage : oprateurs, procdures, fonctions,
affectations
6 ) Instructions concurrentes : processus, blocs
7 ) La gnricit
8 ) La fonction de rsolution
9 ) Simulation et validation, ralisation dun composant de test
10 ) Exemples : paquetage standard et exemples de codes VHDL

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Introduction
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

1) Introduction
q

Un HDL, quest ce que c'est ?

moyen de dcrire un systme matriel :

quest quun systme matriel ?


en gnral, il sagit dun schma mettant en uvre :
un certain nombre de composants
des connexions entre composants

C1

C2

C4
C3

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

1) Introduction

les niveaux de description peuvent tre variables :

niveau logique
niveau transfert de registres
niveau systme

B
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

1) Introduction
q

Un HDL, doit :

permettre la modlisation du systme :

formalisation du problme
partir de briques de base
viter les descriptions ambigu

faciliter la documentation du systme :

VHDL est trs verbeux !!!

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

1) Introduction

la validation du systme :

prouver le fonctionnement du systme dcrit


simulation :

C1

C2

C4
C3

une structure schmatique ne peut tre simule que si on connat le


comportement de chacun des sous systmes
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

1) Introduction

suivre la conception du systme :

si possible pas de changement de langage chaque tape de conception

Systme
Architecture
Registres
Portes
Circuit
Silicium
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

1) Introduction

Outils et objets manipuls

Schmas

Systme
Architecture
Registres
Portes

Outils de synthse
de haut niveau
Description HDL
Equations
boolennes

Circuit
Objets
gomtriques

Structurel

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Silicium

???

Comportemental 10

1) Introduction

VHDL

Schmas

Objets
gomtriques

Structurel

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Systme
Architecture
Registres
Portes

Outils de synthse
de haut niveau
Description HDL
Equations
boolennes

Circuit
Silicium

???

Comportemental

11

1) Introduction
q

Motivations pour une approche mthodologique :

volutions technologiques rapproches :

la dure de vie des quipements est suprieure au laps de temps entre 2


technologies :
donc les systmes doivent pouvoir supporter une volution technologique

se lier une technologie ds la phase de conception peut conduire


mettre sur le march un produit dj dpass

indpendance vis vis des fournisseurs

se lier un fournisseur ds la phase de conception peut conduire revoir toute la


conception si les composants ne sont plus disponibles

besoin de standardisation

ncessit de moyen de description non ambigu des systmes


matriel :

dbut des annes 80

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

12

1) Introduction
q

Rapide historique :

DOD en 81: effort de normalisation entre 83 et 87

Normalisation IEEE en 87 (IEEE 1076) :

efforts de normalisation : Intermetrics, IBM, Texas instrument

Le langage est proche de ADA :

dpartement de la dfense Amricaine

rfrences constantes
ADA a t normalis dfinitivement en 83

Nouvelle norme en 93
Nouvelle normalisation autour de VHDL analogique :

VHDL AMS
pourquoi ?
demande en simulation analogique et en simulation mixte

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

13

1) Introduction
VHDL :

ne vise pas une excution, il est utilis pour :

Langage de
simulation

la simulation
la synthse
la spcification
la documentation

Langage de
synthse

VHDL
Langage de
documentation

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Langage de
modlisation

14

1) Introduction

la brique de base est le composant ou l'entit :

tout systme est bti partir de cette brique.


dans les langages de programmation les briques de base sont les
procdures et les fonctions :
la procdure est appele puis oublie :
activation explicite
le composant existe en soi :
activation implicite par vnements sur ses entres

main()
{
...
resultat = Factorielle(x)

Factorielle

resultat

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

15

1) Introduction

fonctionnement concurrent des composants :

si a et b voluent en mme temps, alors les composants c1 et c2 ont un


fonctionnement parallle (concurrent)
a
C1

s1

s2

C2

notion de signal :

connexion des composants entre eux

s3
C3

C4

la notion de temps est gre :

prise en compte des contraintes rel du matriel :


temps de traverse,
de calcul,
etc.

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

e1
e2

2 ns
s
16

1) Introduction
q

Les avantages de VHDL :

indpendant du constructeur
indpendant de la technologie
indpendant de la dmarche
indpendant du niveau de conception

Standard

Portabilit

IEEE :

reconnu par les vendeurs doutils CAO


grand nombres de bibliothques :
doprateurs
de composants
de fonction

nombreux outils :
compilateur, simulateur
mais aussi des outils de synthse et de spcification

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

17

1) Introduction
Dfinition du langage :
- version 1076-87
- version 1076-93

1076.1
1076

1076.2
1076.3

VHDL
Dans le langage :
dfinition du type bit :
bit ('0' , '1')
un peu juste

1076.4
1076.5

1164
STD LOGIC

Package dfinissant les niveaux logique


ncessaire pour la description des systmes lectronique

Utilis par tous les constructeurs


et par tous les outils
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

18

1) Introduction
q

VHDL :

Langage moderne, puissant, gnral :

Dveloppement parallle facilit :

travail dquipe :

jeu dinstructions complet et trs riche


fort typage des donnes
compilation spare des entits

dcoupage en units de conception


dveloppement et validation parallle
ncessite de bien identifier les interfaces entre les blocs fonctionnels

Simulation du systme :

tous les niveaux :

cahier des charges !!!


modles
ralisation

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Erreurs dcouvertes au plus tt


dans le cycle de conception
19

1) Introduction
1 re anne :
- modlisation
- simulation

Description
informelle

Spcification
en VHDL

2 me anne :
- modlisation
- simulation
- synthse

Synthse

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

20

Mthodes de
conception
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

21

2) Mthodes de conception
q

Descendante :

on part du besoin et descend jusqu'au niveau physique


gnralement, on s'arrte au niveau d'une bibliothque :

d'oprateurs logiques
d'oprateurs arithmtiques
d'oprateurs plus complexes

Ascendante :

on part d'une bibliothque pour remonter, par assemblage, au


systme concevoir
la bibliothque est dcrite un niveau:

oprateurs logiques
oprateurs arithmtiques
oprateurs plus complexes

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

22

2) Mthodes de conception
q

Conception descendante : ddie

concevoir vite, bien

Mthode en 3 temps :

description comportementale
simulation et validation
description structurelle (architecture)

Simulations
Corrections

Spcification
de niveau N
Ce que fait le systme
(cahier des charges)

Etape N

Modle

Comment il le fait
(ralisation)

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Spcification
de niveau N-1

23

2) Mthodes de conception
q

Raffinement successifs des descriptions


(hirarchisation)

un bloc est dfinit comme un assemblage de sous blocs relis entre


eux par des signaux
garantie lquivalence entre les niveaux

Mathmatique

Etape

Application

Comportemental

Etape

Formule

N-1

Structurel

Etape

Algorithme

N-2

Architecture

Conception descendante
Conception ascendante

Un seul langage pour tous les niveaux de conception (VHDL)


Echange entre concepteurs

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

24

2) Mthodes de conception
Langage naturel

Cahier des charges

Etape 1

Modle
mathmatique

Simulateur
comportemental

Etape 2

Modle
comportemental
(algorithmique)

Simulateur
matriel

Etape 3

Modle
structurel

Simulateur
physique

Etape 4

Modle
physique

Math lab

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

25

2) Mthodes de conception
Langage naturel

Cahier des charges

Etape 1

Modle
mathmatique

Etape 2

Modle
comportemental
(algorithmique)

Etape 3

Modle
structurel

Etape 4

Modle
physique

Simulateur

VHDL

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

26

2) Mthodes de conception
q

Modles pour la conception : Synthse de systmes


numriques
Niveaux

Primitives

Reprsentations

Systme

fonctions

Spcif de performances

Module hard

micro, port, ram

Rponse E/S, algorithme

Machine squentielle

Reg, UAL, Bus, mux

Table de vrit, diag


dtats, programme

Logique

Portes

Equations boolennes

Circuit

Transistors, R, L, C

Equations diffrentielles

Silicium

Objets gomtriques

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

27

2) Mthodes de conception
q

Modles de description VHDL :

Structurel

Comportemental

ne fait pas intervenir le temps


dcrit la structure de la fonction ralise
dcrit un schma, des connexions entre composants

algorithme
le temps peut intervenir

Flot de donnes

exprime le flot de donnes sortants par rapport au flot entrant

Possibilit de mlanger ces modles de description


ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

28

2) Mthodes de conception
Intrt de VHDL dans la conception descendante

SANS VHDL

Description
informelle

Equations
boolennes

Schmas

AVEC VHDL

Description
informelle

Spcification
en VHDL

Synthse

Synthse
Le temps,
c'est de l'argent !!!
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

29

2) Mthodes de conception
q

Organisation de la conception :

Dcoupage en units de conception :

ces units sauto suffisent


elles peuvent tre compiles sparment
si la compilation est correcte alors les units sont places dans la
bibliothque de travail

Possibilit de partager les bibliothques de ressources

Bibliothque
de Robert

Bibliothque
de Paul
Bibliothque
commune

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

30

2) Mthodes de conception
q Bibliothques

et librairies

A un instant donn, on travail avec la bibliothque de travail :

choix de cette bibliothque :


fait en dehors du langage VHDL
par une commande lie au systme de dveloppement

Il est possible dutiliser dautres bibliothques qui sont alors des


bibliothques de ressources :
Par dfaut, les bibliothques WORK et STD sont inclues :

elles permettent la manipulation des "objets" standards :

bit
vector de bit
string
integer
time
etc

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

31

Units de
conception
VHDL

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

32

3) Units de conception
q

Elles sont toujours constitues de 2 parties :


vue externe
vue interne

Boite noire
Nom
paramtres
connections

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Description
interne

33

3) Units de conception
q

Exemples :

composants vue externe

A
Additionneur

vue interne

Cout

Cout

Cin

Cin

packages vue externe


dclaration de constantes
dclaration de types
dclaration des enttes des fonctions

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

vue interne
description du corps de toutes
les fonctions (y compris les
fonctions non visible de lextrieur)
34

3) Units de conception
q

5 units de conception disponible en VHDL :

spcification dentits

architecture

(correspondance composants entits)

Liens entre
les entits et
les composants
utiliss

spcification de paquetage

Composant

(intrieur de la boite)

configuration

(vue externe de la boite)

(dcrits les types, et sous programmes)

Paquetage

corps de paquetage

(dcrits le corps des sous programmes)

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

35

3) Units de conception
q

Spcification dentit :

Dfinit la vue externe :

nom
entres sorties :
nombre
sens
type de donnes transportes

entity Additionneur is
port ( A, B, Cin : in bit;
S, Cout : out bit)
end Additionneur ;

(paramtres gnriques)

Cin

S
Additionneur

B
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Cout
36

3) Units de conception
q

Spcification darchitecture :

Dfinit ce que fait lentit


3 modles sont utilisables :

comportemental
structurel
flot de donnes

ce que fait lentit


comment elle le fait

Plusieurs architectures peuvent tre dfinies pour une entit


(reprsentation des niveaux dabstraction diffrents)
Comportemental

Fonction
s = a.b + a.b

Structurel

Etape 1

Etape 2
process
if (not a and b)
s <=
else
s <=
end if;
wait
end process;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

or (a and not b) then


1;

a
b
a
b

0;
on a, b;

37

3) Units de conception
q

Modle comportemental :

description du fonctionnement du systme :

algorithme proche de ceux des langages de programmation


le temps peut intervenir :

algorithmes, machine dtats

permet de coller la ralit par le respect des temps de traverse

une description haut niveau est dabord comportementale :

elle sert de rfrence pour la suite de la conception

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

38

3) Units de conception
q

Modle comportemental

algorithmes, quations logique, ...

Additionneur
A
B
Cin

architecture comportementale of
begin
process
if (A = '0' AND
S <= '0
end if;
if (A = '0' AND
S <= '1
end if;
if (A = '0' AND
S <= '1
end if;
wait on A, B;
end process;
end comportementale;

Additionneur is

B = '0' AND Cin = '0') then


after 5 ns; Cout <= '0 after 5 ns;

B = '0' AND Cin = '1') then


after 5 ns; Cout <= '0 after 5 ns;

Cout

B = '1' AND Cin = '0') then


after 5 ns; Cout <= '0 after 5 ns;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

A
0
0
0
0
1
1
1
1

B
0
0
1
1
0
0
1
1

Cin
0
1
0
1
0
1
0
1

S
0
1
1
0
1
0
0
1

Cout
0
0
0
1
0
1
1
1
39

3) Units de conception
q

Modle comportemental

A
B
Cin

algorithme
architecture comportementale2 of Additionneur is
begin
process (A, B, Cin)
begin
if (A = '0' AND B = '0' AND Cin = '0') then
S <= '0 after 5 ns; Cout <= '0 after 5 ns;
end if;
if (A = '0' AND B = '0' AND Cin = '1') then
S <= '1 after 5 ns; Cout <= '0 after 5 ns;
end if;
if (A = '0' AND B = '1' AND Cin = '0') then
S <= '1 after 5 ns; Cout <= '0 after 5 ns;
end if;
end process;
end comportementale2 ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

40

3) Units de conception
q

Modle structurel

description par la structure :

ne fait pas intervenir le temps :

liste dlments
interconnexions
connexions permanentes

une feuille au moment de la simulation ne peut tre dcrite


structurellement

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

41

3) Units de conception
q

Modle structurel
Additionneur

A
B

S2

u0
u1

Cin

u4

S1

S3
u2
u3

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Cout

42

3) Units de conception

architecture

structurelle1 of Additionneur is

component porteOU
port (
e1 : in
e2 : in
s : out
end component;
component porteET
port (
e1 : in
e2 : in
s : out
end component;
component porteXOR
port (
e1 : in
e2 : in
s : out
end component;

bit;
bit;
bit );

bit;
bit;
bit );

bit;
bit;
bit );

begin
u0 : porteET
port map ( A, B, S2);
u1 : porteXOR
port map ( A, B, S1);
u2 : porteET
port map ( S1, Cin, S3);
u3 : porteXOR
port map ( S1, Cin, S);
u4 : porteOU
port map ( S2, S1, Cout);
end structurelle1;

signal S1, S2, S3 : bit;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

43

3) Units de conception
q

Modle structurel : hirarchisation

demi_add

Additionneur
demi_add

A
B

S2

u2

Cout

u0
u0
S1

Cin

S3

u1
u1

demi_add
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

44

3) Units de conception
architecture

structurelle2 of Additionneur is

component porteOU
port (

end component;
component DemiADD
port (

e1 : in bit;
e2 : in bit;
s : out bit );

e1
e2
s1
s2

:
:
:
:

in bit;
in bit;
out bit ;
out bit);

end component;
signal S1, S2, S3 : bit;
begin
u0 : DemiADD
port map ( A, B, S2, S1);
u1 : DemiADD
port map ( S1, Cin, S3, S);
u2 : porteOU
port map ( S2, S3, Cout);
end structurelle2;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

45

3) Units de conception
q

Avec DemiAdd :

Entity DemiAdd is
port (
e1
e2
s1
s2

:
:
:
:

in bit;
in bit;
out bit ;
out bit);

end DemiAdd;
architecture

structurelle of DemiAdd is

component porteET
port (

e1 : in bit;
e2 : in bit;
s : out bit );

end component;
component porteXOR
port (

e1 : in bit;
e2 : in bit;
s : out bit );

end component;
begin
u0 : PorteET
port map ( e1, e2, s1);
u1 : porteXOR
port map ( e1, e2, s2);
end structurelle;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

46

3) Units de conception
q

Modle flot de donnes


Additionneur

S2

Cout

B
S1

architecture flot of Additionneur is


signal S1, S2, S3 : bit ;
begin
S1 <= A xor B after 10 ns ;
S2 <= A and B after 5 ns ;
S3 <= S1 and Cin after 5 ns ;
S
<= S1 xor Cin after 10 ns ;
Cout <= S2 or S3 after 5 ns ;
end flot ;

S3

Cin
S

architecture flot1 of Additionneur is


signal S1, S2, S3 : bit ;
begin
S
<= S1 xor Cin after 10 ns ;
Cout <= S2 or S3 after 5 ns ;
S1 <= A xor B after 10 ns ;
S2 <= A and B after 5 ns ;
S3 <= S1 and Cin after 5 ns ;
end flot ;

L'ordre des descriptions n'a pas d'importance !!!


ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

47

3) Units de conception
q

Spcification de configuration :

Effectue la liaison entre les composants utiliss dans une architecture


et leur ralisation effective
Chaque utilisation dun composant doit donner lieu une
configuration, c.a.d quil faut spcifier le modle dont le composant est
linstance
Indique pour chaque composant, le couple entit / architecture choisie
pour la ralisation
Indique les correspondances entre les ports du composant et de son
modle
Pour les instances label1, label2, etc du composant comp,
on doit utiliser lentit ent associ larchitecture arch
en prenant soin de faire correspondre tels ports
aux ports formels de la mme entit

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

48

3) Units de conception
Soit un systme utilisant un composant Add1 :
Entity Additionneur

Architecture
comportement

Architecture
structurelle1

Architecture
flot

Configuration 1

Configuration 2

Configuration 3

configuration conf1 of Systeme is

configuration conf2 of Systeme is

configuration conf3 of Systeme is

for Add1 : Additionneur


use entity
work.Additionneur (comportement) ;
end for;

for Add1 : Additionneur


use entity
work.Additionneur (structurelle1) ;
end for;

for Add1 : Additionneur


use entity
work.Additionneur (flot) ;
end for;

end -conf1;
conf1;
ENSSAT
Universit de Rennes 1 - France - Anne universitaire 2003end
- 2004

end conf1;

49

3) Units de conception
q

Spcification de package :

package nom

is

constant PI : real ;

-- constante a valeur differee

type boolean is (FALSE, TRUE);


type couleur is (bleu, rouge, vert);
type caracteres is (1, 2, 3, 4, 5, ...., 9, 0,
a, b, ...z );
subtype positif is integer range 0 to integerhigh;
procedure min (a: in integer ; b : in integer ; c : out integer);
function max (a : in integer ; b : in integer )

return integer;

.....
end nom;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

50

3) Units de conception
q

Corps du package :
package body nom

is

constant PI : real := 3.1415 ;


procedure min (a: in integer ; b : in integer ; c : out integer) is
variable ....
begin
....
end min;
function max (a : in integer ; b : in integer )
variable ....
begin
....
return maximum ;
end max;

return integer is

end nom ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

51

Les objets
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

52

4) Les objets
q

Constantes :

Variables :

valeur fixe aprs initialisation


valeur modifiable par affectation (affectation instantane)

Signaux :

spcifiques aux langages de description de matriel


modlisent les informations qui circulent sur les fils ou bus
grs par un pilote (driver)

10 ns

20 ns

30 ns

60 ns

120 ns 300 ns 750 ns

S <= '1', '0' after 10 ns, '1' after 20 ns, '0' after 30 ns,

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

53

4) Les objets
q

Les signaux :

ils sont la base des langages de description de matriel


ils vhiculent les informations entre composants
ils ne sont pas de type pointeur, pas de type fichier

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

54

4) Les objets
q

Affectation de signaux :

2 modes de fonctionnement :

mode inertiel :
filtre les impulsions de longueur insuffisante

mode transmission :
transmission de toutes les impulsions

< 10 ns

< 10 ns

S
S1 <= S after 10 ns;
S2 <= transport S after 10 ns

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

55

4) Les objets

Quel mode utiliser et quand ?

Mode inertiel
pour les composants dont le temps de travers est non nul (tous les
composants dcrits de faon raliste)

Impulsion infrieure 5 ns
1
0

a
ET
Logique
(5 ns)

1
0

1
0

S <= A and B after 5 ns ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

56

4) Les objets

Mode transport

Bus 1

Bus 2

Bus1 <= transport Bus2 ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

57

4) Les objets
q

Affectations concurrentes de signaux :

problme matriel sous jacent :

le contrleur doit s'assurer que les deux sorties de registres ne sont pas
l'tat basse impdance simultanment

R1
cs1

R2
cs2

VHDL permet la constatation d'un problme de ce type :

par la fonction de rsolution


la rsolution du conflit sera ralise durant la simulation du systme

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

58

4) Les objets
Les types
Scalaires :

entiers
flottants
types physiques
numrs

integer
real
time
(bleu, rouge, jaune, ...)

Composites :
tableaux
articles

Accs:
pointeurs

Fichiers (accs
squentiel, typ
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

array
record
access (new, deallocate)
file (read, write, endfile)
59

4) Les objets
q

Le type scalaire :

il dispose dune relation dordre classique

restriction des valeurs possibles :

range valeur1 to valeur2


range valeur3 downto valeur4 (respect des habitudes des lectroniciens, [poids fort .. poids faible])
subtype positif is integer range 0 to integer'high ;

type numr :

on peut les comparer (=, /=, <, >, <= et >=)

on indique les valeurs symboliques qui peuvent tre prise


type couleur is (rouge, vert, bleu);
type etat is (marche, arret, attente);
le type caractre est un type numr,

type physique :

le type time est prdfini dans le paquetage standard

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

60

un type physique est caractris par :

son unit
par des sous units
on peut effectuer des calculs sur ces types

Co
rre
sp
on
da
nc
e

4) Les objets

type TIME is range -LimiteInferieure to LimiteSuperieure


units fs;
ps = 1000 fs;
ns = 1000 ps;
us = 1000 ns;
ms = 1000 us;
sec = 1000 ms;
36 fs + (20 ps / 2 ) + 2 ns
min = 60 sec;
hr = 60 min;
end units;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

61

4) Les objets
q

Les types composites :

Tableaux et articles (array & record) :

tableau : lments homognes, de mme type


articles : lments htrognes, types diffrents

Les tableaux :

dimensions multiples
les indices sont de type discret (numr ou entier)
2 sortes de tableaux :
contraint : on spcifie le sens de variation des indices

1 to 15

15 downto 1

type mot is array (15 downto 0) of bit;


type memoire is array (0 to 255) of mot;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

62

4) Les objets

Les tableaux non contraint :

permet de repousser la dfinition de la taille plus tard.


la manipulation de ces tableaux demande lutilisation dattributs
range <>

type string is array (positive range <>) of character;


type bus is array (positive range <>) of bit;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

63

4) Les objets
q

Les articles :

des lments de type diffrents


les champs sont dsigns par un nom
les lments sont dsigns par la notation pointe
type article is record
champs1 : integer ;
champs2 : bit ;
end record;

affectation par champs ou globale


A.champs1 := B.champs1 ;
A := B ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

64

4) Les objets
q

Notation par agrgat

indication de la valeur dune variable de type composite


type tableau is array (0 to 4) of integer;
type article is record
champs1 : integer;
champs2 : bit;
champs3 : integer;
end record;

par dfaut : association "positionnelle"


A: tableau := (5, 3, 1, 7, 9);
B : article := (12, 1, 9);

association par nom :


A: tableau := (1=>3, 4=>9, 0=> 5, 2=>1, 3=>7 );
B : article := (champs2=>1,champs3=> 9, champs1=> 12);

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

65

4) Les objets

association mixte :
doit commencer par la partie "nominative"
A: tableau := (4=>9, 0=> 5, others => 0);
B : article := (champs2=>1, others => 0);

quivalents
A := (5, 0, 0, 0, 9);
B := (0, 1, 0);

les champs affects par others doivent tre du mme type


affectation zro d'un bus de type non contraint

type bus is array (positive range <>) of bit;

Pas trs gnrique !!!

...
signal BusData : bus (7 downto 0);
signal BusAddress : bus (15 downto 0);
....
BusData <= (Others => 'Z') ;
BusAddress <= (Others => '0') ;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

BusData <= "ZZZZZZZZ";


BusAddress <= "000000....00000";
66

4) Les objets
q

Le type accs :

Allocation dynamique de mmoire


Pointeur sur un objet de type prdfini
Instructions :

new
deallocate

type article is record


champs1 : integer;
champs2 : bit;
end record;

Peu utilis !

type pointeur is access article;


variable p, q : pointeur;
p:= new pointeur ;
q := new pointeur(14, 0);
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

deallocate(p);
-- Initialisation
67

4) Les objets
q

Le type fichier :

utilis pour :

fichiers de stimuli
charger le contenu dune ROM (par exemple)

Un fichier est typ (pas de pointeur, pas de tableaux plus de 1


dimension, pas de type composite)
3 procdures sont cres implicitement :

lecture ;

criture ; fin de fichier :

type fich_txt is file of string;


type fich_int if file of integer;
txt : fich_txt ; int : fich_int;
mot : string(1 to 10); a : integer;
read (txt, mot);
write(int,a);
if endfile(txt) then
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

68

4) Les objets
q

Les sous types :

compatible avec le type initial :

conserve les proprits


restriction du type de base : restriction de lespace des valeurs
subtype naturel is integer range 0 to integerhigh;
subtype negatif is integer range integerlow to -1;
subtype index is integer range 2 to 5;
-- indice dun tableau
sous type dynamique :
subtype mot is VecteurDeBits (MAX-1 downto 0);

lisibilit des descriptions


sous types de sous types ......

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

69

Les lments
du langage
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

70

5) Les lments du langage


q

Oprations classiques :

q
q
q

+, *, =, /=, ...., mod, and, or, ...


possibilit de surcharger les oprateurs, les fonctions, les procdures
(de leur donner une autre signification)

caractre : X
chanes de caractres : .........
chanes de bits :

XAB08

O037

B001101

: hexadcimale
: octale
: binaire

Commentaires : -- ceci est un commentaire

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

71

5) Les lments du langage


q

Initialisation des donnes, il sagit dune initialisation


par dfaut :

pour les types scalaires : il sagit du premier lment de lnumration


(connue par lattribut left)
pour les types composites : il sagit des premiers lments de chaque
champs
pour les pointeurs : null

type couleur is (rouge, vert, bleu); -- valeur par dfaut est


rouge
subtype positif is integer range 0 to integerhigh;
-- valeur par dfaut est 0
type article is record
champs1 : positif;
champs2 : couleur;
suivant : pointeur;
end record;
-- valeur par dfaut ( 1, rouge, null)
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

72

5) Les lments du langage


q

Les sous programmes : procdures et fonctions

dclaration (optionnelle) : spcifie

le type (fonction ou procdure)


le nom
la liste des paramtres:
mode IN : pris par dfaut, les donnes ne peuvent tre que lues
mode OUT : ne peut tre lu, inutilisable pour appeler un autre sous
programme, inutilisable dans les fonctions (une fonction ne retourne que sa
valeur)
mode INOUT : inutilisable dans les fonctions

le type de valeur de retour

Procedure MIN ( a, b : in integer; c : out integer) ;


Function MAX ( a, b : in integer) return integer ;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

73

5) Les lments du langage


q

Les sous programmes :

corps, contient lalgorithme

exemples

Procedure MIN ( a, b : in integer; c : out integer) is


begin
if a<b then
c := a ;
Function MAX ( a, b : in integer) return integer is
else
begin
c:= b ;
if a<b then
end if;
return b ;
end MIN ;
else
return a ;
end if;
end MAX ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

74

5) Les lments du langage


q

Les sous programmes :

appel de sous programme :

appel dune procdure = instruction


appel dune fonction = expression
passage de paramtres :
par position
par nom

MIN ( var, 5, resultat) ;


MIN ( b=> 5, a=> var, c=> resultat) ;

x := MAX ( var, 5) ;
x := MAX ( b=> 5, a=> var) ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

75

5) Les lments du langage


q

Surcharge doprateurs :

Addition de bit vector :

beaucoup doutils dispose de bibliothques permettant de raliser cette


opration
si elle nest pas prsente, on surcharge loprateur +

function + (A, B : in bit_vector ) return bit_vector; -- oprateur binaire


function + (A : in bit_vector) return bit_vector ;

-- oprateur unaire

signal S1, S2, S3, S : bit_vector ;


....
S <= S1 + S2 ;
ou
S <= + ( S1, S2 );
-- Appel classique des fonctions
S3de Rennes
<= +
(S1)
ENSSAT - Universit
1 - France
- Anne ;
universitaire 2003 - 2004

76

5) Les lments du langage


q

Instructions squentielles :

wait :

suspend lexcution dun processus


plusieurs cas :

suspension jusqu la fin des temps : wait


suspension pendant un temps donne : wait for 10 ns;
suspension jusqu vnement sur signaux : wait on S1, S2
idem prcdent plus condition : wait on S1, S2 until condition
idem prcdent plus dlai maximum dattente :
wait on S1, S2 until condition for 5 ms

interdit lintrieur dune fonction (une fonction rend un rsultat


immdiat, donc pas dattente)

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

77

5) Les lments du langage

assert :

surveillance dune condition


envoie de message sous condition
assert (S1 = S2) report Conflit de signaux severity ERROR;
si la condition est vrai, on ne fait rien sinon on affiche le message
4 niveaux de svrit :
NOTE, WARNING, ERROR, FAILURE

intressant lors de la mise au point de code VHDL

Ne pas hsiter lutiliser et placer des messages clairs,


indiquant le nom de lentit, de larchitecture, etc.
entity Additionneur i s
port (

A, B : in bit;
S : out bit)

end Additionneur;
architecture comportement of Additionneur i s
begin
process (A, B)
begin
assert ((A AND B) = '0') report "Additionneur : Probleme de debordement" severity warning;
S <= A and B after 4 ns;
end process;
end comportement;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

78

5) Les lments du langage


q

Affectation de signaux :

modification des valeurs futurs que prendra le signal


S <= s1 after 10 ns, 0 after 50 ns, 1 after 100 ns;
a <= b after 3 ns;
c <= d ;
-- affectation avec dlai delta

les dlais doivent tre croissants


notion de dlai delta, il existe 2 dimensions du temps

temps rel : cest le temps vu par le concepteur


temps delta : cest le temps gr par le simulateur pour raliser la
succession des affectations

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

79

5) Les lments du langage

soient deux affectations :


Q <= S nand Q ;
Q <= R nand Q ;

Temps vu par :
le simulateur

le concepteur

2 delta

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

80

5) Les lments du langage


q

Modlisation plus raliste :

on tient compte des contraintes technologiques (contraintes


matrielles)
Q <= S nand Q after 5 ns ;
Q <= R nand Q after 5 ns ;
S
R
Q
Q
5 ns

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

81

5) Les lments du langage


q

Instructions conditionnelles :

Structure if then else endif :

if condition_boolenne then
sequence dinstructions 1 ;

else
sequence dinstructions 2 ;

end if;

Structure if then elsif else endif :

if condition_1 then
sequence dinstructions 1 ;

elseif condition_2 then


sequence dinstructions 2 ;

elseif condition_3 then


sequence dinstructions 2 ;

end if;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

82

5) Les lments du langage

Structure case

case expression is
when valeur1
when valeur2 | valeur3
when valeur4 to valeur5
when others
end case;

=> sequence dinstructions ;


=> sequence dinstructions ;
=> sequence dinstructions ;
=> sequence dinstructions ;

Trs intressant pour les descriptions de machine dtats


Cest une structure trs facile gnrer et reconnatre
Les outils de synthse (conception) reconnaissent trs bien cette
structure et savent en faire un schma logique (transistors)
optimis
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

83

5) Les lments du langage


q

Instructions de boucles :

boucle infinie :
loop
squence dinstructions ;
end loop;

boucle while :
while condition loop
squence dinstructions ;
end loop ;

boucle for :

La variable de boucle peut ne pas tre dclares

for i in 1 to 10 loop
squence dinstructions ;
end loop;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

for i in Arange loop


squence dinstructions ;
end loop;
84

5) Les lments du langage


q

Les attributs :

ils permettent de connatre les caractristiques :

des signaux
des tableaux
des types

trs utiliss pour rendre les descriptions gnriques

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

85

5) Les lments du langage

Attributs de signaux :

Sevent :
boolean
true si un vnement vient darriver sur S pendant le cycle de simulation en
cours

Sactive :
boolean
true si il y a eu une transaction (affectation) sur le signal dans le cycle de
simulation en cours

Squiet(T) :
boolean
true si le signal a eu ni transaction ni vnement pendant un temps T

Sstable(T) :
boolean
true si il ny a pas eu d'vnement sur le signal pendant le temps T

Stransaction :
signal
cest un signal de type bit qui change dtats pour chaque transaction du
signal

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

86

5) Les lments du langage

Sdelayed :
signal
cest un signal identique S mais retard de T

Slast_event :
time
rend le temps coul depuis le dernier vnement sur le signal

Slast_active :
time
rend le temps coul depuis la dernire transaction

Slast_value :
type du signal
rend la valeur du signal immdiatement avant le dernier changement de S

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

87

5) Les lments du langage


10 ns 20 ns 30 ns

40 ns

55 ns 60 ns 70 ns 80 ns

S
Sevent

Sactive

T F T

Squiet(T)
Sstable(5 ns)

Sdelayed(2 ns)

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

88

5) Les lments du langage

Utilisation des attributs de signaux :

dtection d'un front montant :

if (Clock'event and Clock = '1') then

dtection d'un front descendant :

Logique synchrone

if (Clock'event and Clock = '0') then

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

89

5) Les lments du langage

Attributs sur les types

type etat is (Arret, Marche, Monter, Descendre) ;


type NewBits ('0', '1', 'X', 'Z') ;
type BitBus is range 15 downto 0;
subtype positif is integer range 0 to integer'high;

positif'base :

renvoie le type de base


dans notre cas renvoie integer

BitBus'high ===> 15
BitBus'low ===> 0
BitBus'left ===> 15
NewBits'left ===> '0'
NewBits'right ===> 'Z'
etat'pos(Marche) ===> 1
etat'val(2) ===> Monter
etat'succ(Marche) ===> Monter

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

90

5) Les lments du langage

etat'pred(Marche) ===> Arret


NewBits'leftof('Z') ===> 'X'
NewBits'rightof('1') ===> 'X'
BitBus'ascending ===> false
positif'ascending ===> true
etat'image(Marche) ===> "Marche"
etat'value("Arret") ===> Arret

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

chane de caractres
du type tat

91

5) Les lments du langage

Attributs de tableaux :

type vecteur is array (1 to 37) of integer;


type matrice is array (6 downto 2, 1 to 7) of real;
variable A : vecteur; variable B : matrice;
left, right, high, low, range, reverse_range, lenght, ascending

A'left ===> 1
Aright ===> 37
Ahigh ===> 37
A'low ===> 1
Alength ===> 37
A'range ===> 1 to 37
A'reverse_range ===> 37 downto 1 A'ascending ===> true

Bleft(1) ===> 6
B'right(1) ===> 2
Blow(1) ===> 2
Blow(2) ===> 1
Blength(1) ===> 5
B'range(1) ===> 16 downto 2
B'range(2) ===> 1 to 7
B'ascending(1)
===>
ENSSAT - Universit de Rennes1 - France
- Anne universitaire 2003
- 2004 false

B'left(2) ===> 1
Bright(2) ===> 7
B'high(1) ===> 6
B'high(2) ===> 7
B'length(2) ===> 7
B'reverse_range(1) ==> 2 to 6
B'reverse_range(2) ==> 7 downto 1
B'ascending(2) ===> true

92

5) Les lments du langage

Utilisation des attributs de tableaux

type vecteur is array (1 to 37) of integer;


variable A : vecteur;

for i in A'range loop

if (A'left = 1) then

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

93

Instructions
concurrentes
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

94

6) Instructions concurrentes
q

Les processus :

ils sont caractriss par :

leur dure de vie dun processus est gale au temps de simulation :

les signaux auxquels ils sont sensibles (liste de sensibilit)


les oprations squentielles contenues
il ne se termine jamais
il peut sendormir (wait)

toute instruction concurrente peut tre traduite en processus (et


notamment les affectations de signaux)
2 possibilits :

liste de sensibilit
utilisation de linstruction wait

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

95

6) Instructions concurrentes
label : process (liste signaux)
dclarations
begin
instructions squentielles

end process label ;

label : process
dclarations
begin
instructions squentielles
....
wait on liste signaux ;

end process label ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Forme peu employe,


il sagit des vestiges des
premires spcifications
du langage

Transformation de ce processus
label : process
dclarations
begin
wait on liste signaux ;
....
instructions squentielles
end process label ;

96

6) Instructions concurrentes

dans un systme assemblant des entits dcrites de faon


comportementale, les processus travaillent de faon concurrente

Systme

Composant 2
Composant 1
Processus 2

1
Processus 1

Composant 3

Composant 4

Processus 4
Processus 3

Processus 2
Processus 3

Simulation
Processus 4
Processus 1
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

97

6) Instructions concurrentes

plusieurs processus peuvent tre prsents dans une architecture

architecture decoupe of systeme is


begin
P1 : process
begin

end process P1;

P2 : process
begin

end process P2;

P3 : process
begin

end process P3;


end decoupe;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

98

6) Instructions concurrentes
q

Les blocs :

Pour runir des instructions concurrentes :

partage de dclarations
garde daffectation :
affectations soumises une condition

bloc1 : bloc (horloge=1 and not horlogestable)


begin
s <= guarded valeur1 after 20 ns;
q <= guarded valeur2 after 40 ns;
end bloc bloc1
t0 t0+20 ns
horloge
s
q
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

t0+40 ns

99

La gnricit
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

100

7) La gnricit
q

Cest un moyen de transmettre une information un


bloc :

Vu de lextrieur du bloc, la gnricit == paramtre


Vu de lintrieur du bloc, paramtres == constantes

Intrts :

description de composants gnraux :

exemples :
registre N bits
additionneur N entres

permettre la rutilisation des composants :

description des bibliothques par des modles gnriques

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

101

7) La gnricit
Intrts de la gnricit :

assure une plus grande rapidit de dveloppement

Bibliothque

enrichissement progressif de la bibliothque de travail


description de la bibliothque par des modles gnriques

Conception 1

Conception 2

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Conception 3

Bibliothque

description de composants gnraux


permettre la rutilisation des composants :

Bibliothque

Bibliothque

Conception N

102

7) La gnricit
q

Gnralement, cest lentit qui est gnrique :

lutilisation de gnrique dans la spcification d'entit


entity . is

generic ( ;
. ;
. );
port (;
;
...);
end .. ;

Mais l'architecture doit aussi tre gnrique :

lutilisation des attributs :

de tableaux
de types
de signaux

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

others, range, left, event, etc, etc


103

7) La gnricit
q

Gnricit des entits :

un registre dont le nombre de bascules est gnrique

8, 16, 32 ???

D
Registre
Load

8, 16, 32 ???

NbBits

Enable

Clock

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

104

7) La gnricit

Description de l'entit

entity registre is
generic (NbBits : INTEGER := 8);
port (D : in std_logic_vector (NbBits-1 downto 0);
Load : in std_logic ;
Enable : in std_logic ;
Clock : in std_logic ;
Q : out std_logic_vector (NbBits-1 downto 0)
);
end registre ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

105

7) La gnricit

Utilisation d'une entit gnrique :

soit le systme suivant :


des registres sont connects des bus dont les tailles sont diffrentes

Reg j

Reg i

Bus de donnes (16 bits)

Bus d'adresse (32 bits)


Systme
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

106

7) La gnricit

Description de l'architecture du systme


architecture structure of Systeme is
-- declaration des composants
-- declaration des signaux
signal BusData : std_logic_vector(15 downto 0);
signal BusAddress : std_logic_vector(31 downto 0);
signal SLoadi, SLoadj, SClock, SEnablei, SEnablej : std_logic;
begin

Regi : Registre
generic map (16)
port map (BusData, SLoadi, SEnablei, SClock, BusData);
Regj : Registre
generic map (32)
port map (BusAddress, SLoadj, SEnablej, SClock, BusAddress);

end structure;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

107

7) La gnricit

Autre exemple : un ET N entres

Entrees

ET

Sortie

entity Et_N is
generic ( N : Natural )
port (
Entrees : in std_logic_vector ( 1 to N ) ;
sortie : out std_logic );
end Et_N ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

architecture comportement of Et_N is


begin
process
variable V : std_logic := 1 ;
begin
for i in 1 to N loop
V := V and Entrees (i) ;
end loop ;
Sortie <= V after 10 ns ;
Wait on Entrees;
end process ;
end comportement;
108

7) La gnricit

Utilisation du ET gnrique :

architecture structure of systeme is


component Et_N
generic ( N : Natural )
port (
Entrees : in std_logic_vector ( 1 to N ) ;
sortie : out std_logic );
end component ;
component OU
port (

Entree : in std_logic ;
sortie : out std_logic );

end component ;
signal Entrees : std_logic_vector(2 downto 0);
signal Sortie : std_logic;
signal E0, E1, E2 : std_logic;
begin
U0 : Et_N
generic map(3)
port map (Entrees, Sortie);
U1 : OU port map( , E1);
U2 : OU port map( , E2);
U3 : OU port map( , E3);
Entrees(0) <= E1;
Entrees(1) <= E2;
Entrees(2) <= E3;
end comportement;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

OU
OU

ET

Sortie

OU

109

7) La gnricit

Autre exemple : additionneur structurelle gnrique :

x(0)

y(0)

ADD
ADD

C(0)

s(0)

x(1)

C(1)

y(1)

ADD
ADD

s(1)

x(N-1)

C(2)

C(N-1)

y(N-1)

ADD
ADD

C(N)

s(N-1)

construit partir dun additionneur 1 bit


assemblage des N additionneurs 1 bit afin de raliser ladditionneur
complet
la valeur de N est inconnue avant linstanciation du composant

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

110

7) La gnricit

On dispose de lentit Add :

entity Add is
port (
A, B, Cin : in std_logic;
S, Cout : out std_logic);
end Add ;

Lentit Additionneur gnrique


scrit :

entity AdditionneurN is
generic (N : Natural := 8);
port (
X, Y : in std_logic_vector ( N-1 downto 0) ;
Cin : in std_logic;
S : out std_logic_vector (N-1 downto 0);
Cout : out std_logic);
end AdditionneurN ;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

architecture structurelle of AdditionneurN is


component Add
port (
A, B, Cin : in std_logic;
S, Cout : out std_logic);
end component;
signal C : std_logic_vector(0 to N);
begin
for I in 0 to N-1 generate
Instance : Add
port map (X(I), Y(I), C(I), S(I), C(i+1));
end generate;
C(0) <= Cin;
Cout <= C(N);
end structurelle ;

111

7) La gnricit
q

Gnricit par les attributs :

std_logic_vector(NbBits -1 downto 0); ;

architecture comportement of registre is


begin
process
variable etat : std_logic_vector(NbBits -1 downto 0);
begin
if (Clock'event and Clock = '1') then
if (Load = '1') then
etat := D;
}
}
if (Enable = '1') then
Q <= etat after 10 ns;
else
Q <= "ZZZZZZZZ" after 10 ns;
end if;
wait on Enable, Clock ;
end process;
end comportement;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Pas trs volutif


(si la taille du registre est autre
que 8 bits, la mise en haute
impdance ne fonctionne plus)

Cette criture assure un bon


fonctionnement quelque soit
la taille du registre

Q <= (others => 'Z') after 10 ns;


112

7) La gnricit

Autre exemple : le dmultiplexeur

Sortie1
Sortie2

Demux
Entree

NbBits
NbSorties
SortieN

Selection

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

113

7) La gnricit

description de l'entit

entity Demux is
generic (NbBits : Natural := 8;
NbCmd : Natural := 4;
NbSorties : Natural := 16);
port (
Entree : in std_logic_vector(NbBits -1 downto 0) ;
Selection : in std_logic_vector(NbCmd -1 downto 0);
Sorties : out std_logic_vector (NbSorties*NbBits -1 downto 0)
);
end Demux ;
architecture comportement of Demux is
begin
affectations : for i in

Selection'range

generate

Cette criture assure


une volution de la taille
du dmultiplexeur

Sorties((i+1)*NbBits -1 downto i*NbBits) <=


Entree
when conv_positif(Selection) = i
else (others => '0');
end generate affectations ;
Ecriture non volutive :
end comportement;

for i in 0 to 7 generate
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

114

La fonction
de
rsolution

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

115

8) La fonction de rsolution
q

Quel est le problme ?

Soit le schma suivant :

Mmoire
R1

R3
Mult

R2

Add
R4

Signal multi-sources
Plusieurs driver pour le mme signal

PROBLEME

(rgle VHDl : un seul driver par signaux)


ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

116

8) La fonction de rsolution
q

Dfinition dune fonction :

q
q

prenant en compte les diffrentes sources du signal


calculant la valeur rsolue du signal

Ncessaire lorsque lon veut simuler le systme


Caractristiques de cette fonction :

appels raliss (grs) par le simulateur

pas d'appel explicite la fonction

il ny a quun seul paramtre dentre :

ce paramtre est toujours un tableau 1 dimension non contraint

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

117

8) La fonction de rsolution
q

Exemple :

TYPE NewBit IS ('Z','0','1','X') ;


TYPE TableauBits IS ARRAY (INTEGER RANGE <>) OF NewBit;
FUNCTION ResolutionBit4Etats (src : IN TableauBits) RETURN NewBit;
SUBTYPE Bit4Etats IS ResolutionBit4Etats NewBit;

FUNCTION ResolutionBit4Etats (src : IN TableauBits) RETURN NewBit IS


VARIABLE Result : NewBit := 'Z';
BEGIN
FOR i IN src'RANGE LOOP
0
CASE src(i) IS
WHEN '0' =>
0
IF Result = '1' OR Result ='X' THEN
0
ASSERT false report "Conflit de signaux" SEVERITY ERROR;
RETURN 'X';
ELSE
Result := '0';
0
END IF;
X
WHEN '1' =>
1
IF Result = '0' OR Result ='X' THEN
ASSERT false report "Conflit de signaux" SEVERITY ERROR;
RETURN 'X';
ELSE
X
Result := '1';
X
END IF;
WHEN 'X' =>
0
Result := 'X';
WHEN OTHERS =>
END CASE ;
END LOOP;
RETURN Result;
END ResolutionBit4Etats ;
118
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

8) La fonction de rsolution
q

Exemple:

----Extrait du package std_logic_1164.vhd-------------TYPE std_ulogic IS ( 'U','X','0', '1', 'Z', 'W', 'L', 'H', '-' );
TYPE std_ulogic_vector IS ARRAY ( NATURAL RANGE <> ) OF std_ulogic;
CONSTANT resolution_table : stdlogic_table := (
--------------------------------------------------------| U X 0 1 Z W L H | |
--------------------------------------------------------( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- | U |
( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), -- | X |
( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ),
-- | 0 |
( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ),
-- | 1 |
( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ), -- | Z |
( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ), -- | W |
( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ), -- | L |
( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ), -- | H |
( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ) -- | - |
);
FUNCTION resolved ( s : std_ulogic_vector ) RETURN std_ulogic IS
VARIABLE result : std_ulogic := 'Z'; -- weakest state default
BEGIN
IF (s'LENGTH = 1) THEN RETURN s(s'LOW);
ELSE
FOR i IN s'RANGE LOOP
result := resolution_table(result, s(i));
END LOOP;
END IF;
RETURN result;
END resolved;
SUBTYPE std_logic IS resolved std_ulogic
----

0
0

0
1

X
X
0

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

119

Simulations
et validations
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

120

9) Simulation et validation
q

Une bonne matrise de


la conception passe par
la validation de
chaque tape

Spcification
de niveau N
Ce que fait le systme
(cahier des charges)
SIMULATIONS

simulation comportementale :
REFERENCE
simulation structurelle :
COMPARAISON AVEC LA
REFERENCE

Simulations
Corrections

Etape N
SIMULATIONS

Comment il le fait
(ralisation)

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Spcification
de niveau N-1

121

9) Simulation et validation
q

Simulation chaque tape de la conception !!!!!!

Simulations

Cahier des charges

Etape 1

Modle
mathmatique

Etape 2

Modle
comportemental
(algorithmique)

Etape 3

Modle
structurel

Etape 4

Modle
physique

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

122

9) Simulation et validation
q

Comment faire une simulation ?

instanciation du composant tester


initialisation des signaux d'entres
application d'une squence de stimuli :

partir d'un process et d'affectations des signaux d 'entres


partir d'un fichier contenant des vecteurs de test

analyse des rsultats, analyse des transitions des sorties :

affichage des erreurs ventuelles

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

123

9) Simulation et validation
Processus
Systme
Comparaisons

Entit de test
Stimuli
(et rsultats
attendus)

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Messages :
- simulation correcte
- erreur de simulation

124

9) Simulation et validation
q

Description dun composant de test : exemple

Soit une entit additionneur tester :

entity Additionneur is
port (
A, B, Cin : in std_logic ;
S, Cout : out std_logic );
end Additionneur ;
architecture comportement of Additionneur is
...
end comportement;;

Cin

S
Additionneur

B
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Cout
125

9) Simulation et validation

On dclare une entit test englobant le composant de type


Additionneur :

Vue externe du composant Test_Add

entit sans port d'entres sorties, et sans gnrique

entity Test_Add is
end Test_Add ;

Additionneur

Test_Add

Processus
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

126

9) Simulation et validation

Description de l'architecture de l'entit de test :

dclaration du composant tester


dclaration des signaux d'entres sorties
instanciation du composant
description d'un process gnrant les stimuli

architecture comportement of Test_Add is


-- Declaration du composant qui va etre utilise
component Add
port (
A, B, CIn : in std_logic ; S, Cout : out std_logic );
end component ;

-- Declaration des signaux d'entre de l'instance


signal SA, SB, SOut, SCin , SCout : std_logic ;

-- configuration
for U1 : Add use entity Additionneur(comportement);
constant TempsCycle : time := 10 ns ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

begin
-- Instanciation du composant
U1 : Additionneur port map (
A => SA ,
B => SB,
S => SOut,
Cin => SCin ,
Cout => SCout
);
Simulation : process
begin

...
end process;
end comportement;

127

9) Simulation et validation

Description de l'architecture de l'entit de test : process de simulation

affectation des signaux d'entres : rgles :


toujours commencer par un wait for xx ns :
votre simulation commence rellement au temps xx ns;
vite les problmes lis aux initialisations effectues par le simulateur
toujours terminer la simulation un par wait :
vite les rebouclages du process sur lui mme
Simulation : process
begin
wait for TempsCycle ns;
SA <= 0;
SB <= 0;
SCin <= 0;
wait for TempsCycle ns;
SA <= 0;
SB <= 0;
SCin <= 1;
wait for TempsCycle ns;
...
...
SA <= 1;
SB <= 1;
SCin <= 1;
wait ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003


end
- 2004
process;

128

9) Simulation et validation

Description de l'architecture de l'entit de test : process de simulation

affectation des signaux d'entres par une boucle :

architecture comportement of Test_Add is

...
constant TempsCycle : time := 10 ns ;
type TableauEntrees is array (0 to 2) of std_logic;
type TableauVecteur is array (0 to 7) of TableauEntrees;
constant Vecteur : TableauVecteur :=
(
(0, 0, 0),
(0, 0, 1),
(0, 1, 0),
(0, 1, 1),
(1, 0, 0),
(1, 0, 1),
(1, 1, 0),
(1, 1, 1)
);

-- Instanciation du composant
U1 : Additionneur port map ();

Simulation : process
begin
wait for TempsCycle ;
for i in Vecteur'range(1) loop
SA <= Vecteur(i)(0);
SB <= Vecteur(i)(1);
SCin <= Vecteur(i)(2);
wait for TempsCycle;
end loop;
wait ;
end process;

signal SA, SB, SOut, SCin, SCout : std_logic ;

begin

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

129

9) Simulation et validation

Description de l'architecture de l'entit de test : process de simulation

affectation des signaux d'entres par une boucle


analyse des rsultats

architecture comportement of Test_Add is

...
constant TempsCycle : time := 10 ns ;
type TableauEntrees is array (0 to 4) of std_logic;
type TableauVecteur is array (0 to 7) of TableauEntrees;
constant Vecteur : TableauVecteur :=
(
(0, 0, 0, 0, 0),
(0, 0, 1, 0, 1),
(0, 1, 0, 0, 1),
(0, 1, 1, 1, 0),
(1, 0, 0, 0, 1),
(1, 0, 1, 1, 0),
(1, 1, 0, 1, 0),
(1, 1, 1, 1, 1)
);
signal SA, SB, SOut, SCin, SCout : std_logic ;

-- Instanciation du composant
U1 : Additionneur port map ();
Simulation : process
begin
wait for TempsCycle ;
for i in Vecteur'range(1) loop
SA <= Vecteur(i)(0);
SB <= Vecteur(i)(1);
SCIn <= Vecteur(i)(2);
wait for TempsCycle;
assert (SCout = Vecteur(i)(3))
report "Probleme sur la sortie Cout"
severity warning;
assert (SOut = Vecteur(i)(4))
report "Probleme sur la sortie S"
severity warning;
end loop;
wait ;
end process;

begin

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

130

9) Simulation et validation

Description de l'architecture de l'entit de test : process de simulation

lecture des stimuli dans un fichier


affectation des signaux d'entres par une boucle analyse des rsultats

architecture comportement of Test_Add is

...
signal SA, SB, SOut, SCin, SCout : std_logic ;

begin
-- Instanciation du composant
U1 : Additionneur port map ();

Simulation : process
file VecteursIN : integer is in "VecteursIN ";
file VecteursOut : integer is in "VecteursOUT";
variable ligne : line;
variable VA, VB, VCin, VCout, VOut : integer;
variable Tps : integer;
variable TempsCycle : time := 10 ns;

begin
wait for TempsCycle ;
readline(VecteursIN , ligne);
read(ligne, Tps);
TempsCycle = Tps ns;
while not endfile(VecteursIn ) loop
read(ligne, VA);
read(ligne, VB);
read(ligne, VCin);
read(ligne, VCout);
read(ligne, VOut);
SA <= Integer2Bit(VA);
SB <= Integer2Bit((VB);
SCIn <= Integer2Bit(VCin);
wait for TempsCycle;
assert (SCout = Integer2Bit(VCout))
report "Probleme sur la sortie Cout"
severity warning;
assert (SOut = Integer2Bit(VOut)
report "Probleme sur la sortie S"
severity warning;
end loop;
wait ;
end process;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

131

9) Simulation et validation
q

Test des composants synchrone une horloge :

placer un process gnrant l'horloge ct du process de simulation

entity Test_Registre
end Test_Registre;

architecture comportement of Test_Registre is


-- Declaration du composant qui va etre utilise
component Registre
port (
D, clock, : in std_logic ; Q : out std_logic );
end component ;

begin
-- Instanciation du composant
U1 : Registre port map (
SD, SClock, SQ
);
Simulation : process
begin

...
end process Simulation;

-- Declaration des signaux d'entre de l'instance


signal SD, SClock, SQ : std_logic;

-- configuration
for U1 : Registre use entity Registre(comportement );

Horloge : process
begin
SClock <= '0' ;
wait for 50 ns;
SClock <= '1' ;
wait for 50 ns;
end process Horloge ;

end comportement;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

132

Exemples :
- logique combinatoire
- logique squentielle
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

133

10) Logique combinatoire


q

Exemple simple :

soit la fonction :

a
b

s1

s2

ENTITY Fonc IS
PORT ( a : IN std_logic;
b : IN std_logic;
c : IN std_logic;
d : IN std_logic;
s1 : OUT std_logic;
s2 : OUT std_logic) ) ;
END Fonc ;

ARCHITECTURE flot1 OF Fonc IS


BEGIN
s2 <= (a and b) or (c xor d) after
max(Tand + Tor, Txor + Tor);
s1 <= (a and b) and (c xor d) after
max(Tand + Tand, Tand + Txor);
END flot1 ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

ARCHITECTURE flot2 OF Fonc IS


BEGIN
s1 <= (a and b) and (c xor d) after
max(Tand + Tand, Tand + Txor);
s2 <= (a and b) or (c xor d) after
max(Tand + Tor, Txor + Tor);
END flot2 ;

134

10) Logique combinatoire

Autre description :

a
b
c

introduction des signaux intermdiaires

x1
s1

x2

s2

d
ARCHITECTURE flot3 OF Fonc IS
BEGIN
s1 <= (x1 and x2) after Tand;
s2 <= (x1 or x2) after Tor;
x1 <= (a and b) after tand;
x2 <= (c xor d) after Txor;
END flot3 ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

135

10) Logique combinatoire

Et encore une autre ...


a
b
c

x1

x2

s1
s2

ARCHITECTURE flot4 OF Fonc IS


BEGIN
s1 <= '1' when ((a and b) and (c xor d)) else '0';
s2 <= '1' when ((a and b) or (c xor d)) else '0';
END flot4 ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

136

10) Logique combinatoire


q

Additionneur :

gnricit sur :

le nombre de bits
le temps de calcul

ARCHITECTURE comportementale OF Additionneur IS

NbBits

entree1

BEGIN

NbBits
NbBits

entree2

ENTITY Additionneur IS
GENERIC (Tadd : TIME ;
NbBits : INTEGER );
PORT (
entree1 : IN std_logic_vector(NbBits-1 DOWNTO 0) ;
entree2 : IN std_logic_vector(NbBits-1 DOWNTO 0)
;
sortie : OUT std_logic_vector(NbBits-1 DOWNTO 0) ) ;
END Additionneur ;

Additionneur
Additionneur

ProcessAdditionneur : PROCESS
VARIABLE e1, e2, s : INTEGER;

sortie

BEGIN
e1 := Conv_Integer (entree1) ;
e2 := Conv_Integer (entree2) ;
s := e1 + e2 ;
sortie <= Conv_Std_Logic_Vector (s, NbBits) After Tadd ;
wait on entree1, entree2;
END PROCESS ProcessAdditionneur ;
END comportementale ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

137

10) Logique combinatoire


q

Multiplieur :

gnricit sur :

le nombre de bits
le temps de calcul

ENTITY Multiplieur IS
GENERIC (Tmult : TIME ;
NbBits : INTEGER );
PORT (
entree1 : IN std_logic_vector(NbBits-1 DOWNTO 0) ;
entree2 : IN std_logic_vector(NbBits-1 DOWNTO 0)
;
sortie : OUT std_logic_vector(2*NbBits-1 DOWNTO 0) ) ;
END Multiplieur ;

NbBits

entree1

ARCHITECTURE comportementale OF Multiplieur IS


2*NbBits
NbBits

entree2

Multiplieur
Multiplieur

BEGIN

sortie

ProcessMultiplieur : PROCESS
VARIABLE e1, e2, s : INTEGER;
BEGIN
e1 := Conv_Integer (entree1) ;
e2 := Conv_Integer (entree2) ;
s := e1 * e2 ;
sortie <= Conv_Std_Logic_Vector (s, 2*NbBits) After Tmult ;
wait on entree1, entree2;
END PROCESS ProcessMultiplieur ;
END comportementale ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

138

10) Logique combinatoire


q

Exemple du multiplexeur :
ENTITY Multiplexeur IS
GENERIC (Tmux : TIME ;
NbBits : INTEGER );
PORT (
A : IN std_logic_vector(NbBits-1 DOWNTO 0) ;
B : IN std_logic_vector(NbBits-1 DOWNTO 0)
C : IN std_logic_vector(NbBits-1 DOWNTO 0)
D : IN std_logic_vector(NbBits-1 DOWNTO 0)
cmd : IN std_logic_vector(1 DOWNTO 0)
;
S : OUT std_logic_vector(NbBits-1 DOWNTO 0)
END Multiplexeur ;

ARCHITECTURE flotdedonnees1 OF Multiplexeur IS

;
;
;
);

Cmd

BEGIN
S <=

A WHEN (cmd = "00")


ELSE B WHEN (cmd = "01")
ELSE C WHEN (cmd = "10")
ELSE D;

END flotdedonnees ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

C
D

139

10) Logique combinatoire


q

Exemple du multiplexeur : autre description


ARCHITECTURE flotdedonnees2 OF Multiplexeur IS
BEGIN
WITH cmd SELECT
S <=
A WHEN (cmd = "00")
B WHEN (cmd = "01")
C WHEN (cmd = "10")
D WHEN OTHERS;

Cmd

END flotdedonnees ;

A
B

C
D

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

140

10) Logique combinatoire


q

Exemple du multiplexeur : autre description

ARCHITECTURE comportementale OF Multiplexeur IS


BEGIN
PROCESS
BEGIN
if cmd = "00" THEN
S <= A ;
ELSIF cmd = "01" THEN
S <= B;
ELSIF cmd = "10" THEN
S <= C;
ELSIF cmd = "11" THEN
S <= D;
END IF;
WAIT ON cmd, A, B, C, D;
END PROCESS;
END flotdedonnees ;

Cmd

A
B

C
D

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

141

10) Logique combinatoire


q

Le dcodeur :
entity decodeur is
generic (
NbSorties : integer;
Log2NbSorties : integer
);
port (
sorties : out std_logic_vector (NbSorties - 1 downto 0) ;
cmd : in std_logic_vector (log2NbSorties -1 downto 0)
);
end decodeur;
architecture flot of decodeur is
begin
affectations : for i in sorties'range generate
sorties(i) <= '1' when conv_positif(cmd) = i
else '0';
end generate affectations;
end flot ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

142

10) Logique combinatoire


Ralisation d'une fonction logiques complexes :
passage par la table de vrit :
type TABLE1 is array (0 to 15) of std_logic;
A
0
0
0
0
0
0
0
0
1
1
1
1
..
..

B
0
0
0
0
1
1
1
1
0
0
0
0
..
..

C
0
0
1
1
0
0
1
1
0
0
1
1
..
..

D
0
1
0
1
0
1
0
1
0
1
0
1
..
..

S
1
1
1
0
0
0
0
1
0
0
..

constant codage1 : TABLE1 := (


'1',
'1',
'1',
'0',
'0',
'0',

);
V:= 8 * conv_integer (A) + 4 * conv_integer (B)
+ 2 * conv_integer (C) + 1 * conv_integer (D) ;
S <= codage1 (V) ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

143

10) Logique combinatoire


q

Module de mise en haute impdance :

entity tristate is
port (
e : in std_logic;
oe : in std_logic;
s : out std_logic
);
end tristate ;

oe
architecture flot of tristate is
begin
s <= e when oe = '1' else 'Z';
end flot ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

144

10) Logique squentielle


q

architecture comp of BasculeD is


begin
process
begin
if ena = '1' then
test <= D;
else
test <= test;
end if;
wait on ena, D;
end process;

Bascule D Latch

ena

entity BasculeD is
port (

Q <= test;
end comp;
d, ena : in std_logic;
Q : out std_logic);

end BasculeD ;

ena
D
Q

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

145

10) Logique squentielle


q

architecture comp of BasculeD is


begin
process
begin
if cloc'event and clock = '1' then
test <= D;
else
test <= test;
end if;
wait on clock;
end process;

Bascule D edge triggered (synchrone)

clock

entity BasculeD is
port (

Q <= test;
end comp;
d, clock : in std_logic;
Q : out std_logic);

end BasculeD ;

clock
D
Q

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

146

10) Logique squentielle


Compteur de taille quelconque :
entity Compteur is
generic (taille : integer ; Tps : Time);
port (
clk, raz, up : in Std_logic;
Q : out Std_logic_vector(taille - 1 downto 0));
end Compteur;
architecture comportement of Compteur is
signal etat : Std_logic_vector(taille-1 downto 0);
begin
process
begin
if (raz =0) then
etat <= (others => '0') ;
elsif (clkevent and clk = 1) then
if (up = 1) then
etat <= etat + 1;
else
etat <= etat - 1;
end if;
end if;
wait on clk, raz, up;
end process;
Q <= etat after Tps;
end comportement;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

raz

up

clk

147

10) Logique squentielle


Bascules D avec remise zro asynchrone ou synchrone
entity BDA is
port (

d, raz, clk : in std_logic;


Q : out std_logic);

end BDA;
architecture comp of BDA is
begin
process
begin
if (raz = 0) then
Q <= 0 ;
elsif clkevent and clk = 1 then
Q <= D ;
end if;
wait on clk, raz;
end process;
end comp;

Asynchrone
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

entity BDS is
port (

d, raz, clk : in std_logic;


Q : out std_logic);

end BDS;
architecture comp of BDS is
begin
process
begin
if clkevent and clk = 1 then
if raz = 0 then
Q <= 0 ;
else
Q <= D;
end if;
end if;
wait on clk;
end process;
end comp;

Synchrone
148

10) Logique squentielle


Bascules D asynchrone et synchrone avec blocs gards
entity BDA is
port (

d, raz, clk : in std_logic;


Q : out std_logic);

end BDA;

entity BDS is
port (

d, raz, clk : in std_logic;


Q : out std_logic);

end BDS;

architecture bloc of BDA is


begin
B : block ((clk event and clk = 1)
or raz =0)
begin
Q <= guarded 0 when raz = 0 ;
else d when clk = 1 ;
else Q;
end block B;
end bloc;

Asynchrone
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

architecture bloc of BDS is


begin
B : block (clk = 1 and clkevent)
begin
Q <= guarded 0 when raz = 0 ;
else d when clk = 1 ;
else Q;
end block B;
end bloc;

Synchrone
149

10) Logique squentielle


q

Ralisation du contrleur
dun ascenseur :

il sagit de commander :

le moteur douverture et de
fermeture des portes
le moteur de monter et de
descente de lascenseur
dassurer une temporisation
entre louverture et la fermeture
des portes

Etage 2

Monte

Etage 1

on dispose :

dune information indiquant,


tout moment, ltage courant
de capteurs dappel de
lascenseur
de capteur de porte ferme

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

Rdc

Ouverture
fermeture

Descente

150

10) Logique squentielle


Matrialisation dune machine dtats
Attente
Etage > Appel

Monte

Etage = Appel

Etage = Appel

Ouverture
porte

Etage <> Appel

Descente

Etage = Appel

Etage <> Appel

Etage < Appel

porte
ferme

Temporisation

Fermeture
porte
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

151

Logique
combinatoire
LC2

Sorties

state

LC1

REGISTRE

Logique
combinatoire

nextstate

Entres

10) Logique squentielle

clk
raz
Modlisations envisageables :
1) 1processus : (LC1 + REGISTRE + LC2)
2) 2 processus : (LC1 + REGISTRE) et LC2
ou LC1 et (REGISTRE + LC2)
3) 3 processus : LC1, REGISTRE et LC2
entity Controleur is
port (

Vue externe

Appel, Etage : in integer ;


Open, Close, clk, raz : in bit ;
Monter, Descendre, Ouvrir, Fermer : out bit );

end Controleur ;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

152

10) Logique squentielle


Vue interne
architecture comportement of Ascenseur is
type etat is (Attente, Descente, Montee, Ouverture, Fermeture);
signal state : etat := Attente;
signal nextstate : etat;
signal Etage : integer := 0;
begin
LC1 : process
begin
-- calcul letat suivant en fonction des entrees
...
-- et de ltat courant
wait on Etage, Appel, Open, Close, state;
end process LC1 ;
REGISTRE : process
begin
-- change dtat au front montant de lhorloge

wait on clk, raz;


end process REGISTRE ;
LC2 : process
begin
-- calcul letat des sorties en fonction de letat
...
-- courant
wait on state;
end process LC2 ;
end comportement;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

153

10) Logique squentielle


LC1 : process
begin
case state is
when Attente =>
if Etage > Appel then
elsif Etage < Appel then
else
end if ;
when Descente =>
if Etage = Appel then
else
end if ;
when Montee =>
if Etage = Appel then
else
end if ;
when Ouverture =>
if Open = 1 then
else
end if ;
when Fermeture =>
if Close = 1 then
else
endif ;
end case ;
wait on Etage, Appel, Open, Close, state;
end process LC1 ;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

nextstate <= Descente;


nextstate <= Montee;
nextstate <= Ouverture;

nextstate <= Ouverture ;


nextstate <= Descente ;

nextstate <= Ouverture ;


nextstate <= Montee ;

nextstate <= Fermeture ;


nextstate <= Ouverture ;

nextstate <= Attente ;


nextstate <= Fermeture ;

154

10) Logique squentielle


LC2 : process
variable m, d, o, f : bit;
begin
case state is
when Attente =>
m := 0; d := 0; o := 0; f := 0 ;
REGISTRE : process
when Montee =>
begin
m := 1; d := 0; o := 0; f := 0 ;
if raz = 0 then
when Descente =>
state <= Attente ;
m := 0; d := 1; o := 0; f := 0 ;
elsif clkevent and clk = 1 then
when Ouverture =>
state <= nextstate ;
m := 0; d := 0; o := 1; f := 0 ;
end if;
when Fermeture =>
wait on clk, raz;
m := 0; d := 0; o := 0; f := 1 ;
end process REGISTRE ;
end case ;
Monter
<= m;
Descendre <= d;
Ouvrir
<= o;
Fermer
<= f;
wait on state;
end process LC2 ;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

155

Packages
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

156

11) Paquetages standards


q

Paquetages standards : 2 paquetages :

standard :

rassemble les dclarations de types, de sous types, de fonctions


extrmement utiles (voir indispensable)

textio :

fournit les primitives dentres sorties ASCII de VHDL


utilis pour le dialogue avec une console (debuggage par exemple)
Ce paquetage est un rat de VHDL tout ne rpond pas la grammaire de
vhdl
Consquences :
chaque constructeur de compilateur a propos son paquetage textio
donc plus vraiment un standard

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

157

11) Paquetages standards


Package standard : Dfinition
q package standard is

type BOOLEAN is (FALSE, TRUE);


type BIT is (0, 1);
type CHARACTER is (NUL, ..., 0,1,2, ... ,a, .., z)
type SEVERITY_LEVEL is (NOTE, WARNING, ERROR, FAILURE);
type INTEGER is range -2 147 483 648 to 2 147 483 647;
type real is range -16. 10(32) to 16. 10(32);
type TIME is range -2(64) to 2(64)
units fs
ps = 1000 fs;
ns = 1000 ps
ms = 1000 ns

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

158

11) Paquetages standards

function Now return time ;


subtype Natural is integer range 0 to integerhigh ;
subtype Positive is integer range 1 to integerhigh ;
type string is array (Positive range <>) of character ;
type bit_vector is array (Natural range <>) of bit ;

end standard ;

chane : string (1 to N) ;
V : bit_vector ( 15 downto 0) ;

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

159

11) Paquetages standards


Package Textio : Dfinition
q package textio is

type LINE is access string ;


-- pointeur sur une ligne
type text is file of string ;
-- fichier de caracteres
type SIDE is ( right, left );
-- justifier gauche ou droite
subtype width is natural ; -- Cest un simple renommage
-- utilis pour les longueurs de chaines
file input : text is in std_input ; -- clavier
file output : text is out std_out ; -- cran
procedure readline (variable F : in text ; L : out line) ;
procedure writeline (variable F : out text ; L : in line );

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

160

11) Paquetages standards

16 procdures read :

8 procdures write :

extraction de la valeur du type demand dans la ligne (LINE)


ces procdures rendent la suite de la ligne
permettent de construire la ligne (dans une variable LINE) avant de lcrire

function endline (L : in Line) return Boolean ;


function endfile (F : in text) return Boolean ;

end textio ;
Belles surcharges !!

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

161

11 ) Paquetages IEEE
q

Les paquetages normaliss :

package std_logic_1164 :

dfinition des types :


std_logic
std_logic_vector

dfinition des fonctions logiques de base sur ces types :


AND, OR, NOR, XOR, etc

package std_logic_arith :

surcharge des oprateurs de base :


+, -, *,

surcharge des comparateurs de base :


<=, >=, /=, =

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

162

11 ) Paquetages IEEE

package std_logic_signed :

surcharge des oprateurs de base :


+, -, *,

surcharge des comparateurs de base :


<=, >=, /=, =

dfinition d'une fonction de conversion :


std_logic_vector ====> Integer
prise en compte du signe

package std_logic_unsigned :

surcharge des oprateurs de base :


+, -, *,

surcharge des comparateurs de base :


<=, >=, /=, =

dfinition d'une fonction de conversion :


std_logic_vector ====> Integer
prise en compte du signe

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

163

11 ) Paquetages IEEE
q

Attention :

ces paquetages sont d'une utilisation dlicate :


on ne peut utiliser les 2 paquetages signed ey unsigned
simultanment
les fonctions de conversion renvoient des valeurs diffrentes (fonction
du bit de signe)
tous les oprateurs de base ne sont pas surchargs
etc etc

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

164

11 ) Paquetages IEEE
-- ---------------------------------------------------------------------- Title : std_logic_1164 multi-value logic system
-- Library : This package shall be compiled into a library
-: symbolically named IEEE.
-:
-- Developers: IEEE model standards group (par 1164)
-- Purpose : This packages defines a standard for designers
-: to use in describing the interconnection data types
-: used in vhdl modeling.
-:
-- Limitation: The logic system defined in this package may
-: be insufficient for modeling switched transistors,
-: since such a requirement is out of the scope of this
-: effort. Furthermore, mathematics , primitives,
-: timing standards, etc. are considered orthogonal
-: issues as it relates to this package and are therefore
-: beyond the scope of this effort.
-:
-- Note
: No declarations or definitions shall be included in,
-: or excluded from this package. The "package declaration"
-: defines the types, subtypes and declarations of
-: std_logic_1164. The std_logic_1164 package body shall be
-: considered the formal definition of the semantics of
-: this package. Tool developers may choose to implement
-: the package body in the most efficient manner available
-: to them.
-:
-- --------------------------------------------------------------------- modification history :
-- --------------------------------------------------------------------- version | mod. date:|
-- v4.200 | 01/02/92 |
-- -------------------------------------------------------------------PACKAGE std_logic_1164 IS
-------------------------------------------------------------------- logic state system (unresolved)
-------------------------------------------------------------------

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

TYPE std_ulogic IS ( 'U', -- Uninitialized


'X', -- Forcing Unknown
'0', -- Forcing 0
'1', -- Forcing 1
'Z', -- High Impedance
'W', -- Weak Unknown
'L', -- Weak 0
'H', -- Weak 1
'-' -- Don't care
);
-------------------------------------------------------------------- unconstrained array of std_ulogic for use with the resolution function
------------------------------------------------------------------TYPE std_ulogic_vector IS ARRAY ( NATURAL RANGE <> ) OF std_ulogic;
-------------------------------------------------------------------- resolution function
------------------------------------------------------------------FUNCTION resolved ( s : std_ulogic_vector ) RETURN std_ulogic;
-------------------------------------------------------------------- *** industry standard logic type ***
------------------------------------------------------------------SUBTYPE std_logic IS resolved std_ulogic;
-------------------------------------------------------------------- unconstrained array of std_logic for use in declaring signal arrays
------------------------------------------------------------------TYPE std_logic_vector IS ARRAY ( NATURAL RANGE <>) OF std_logic;
-------------------------------------------------------------------- common subtypes
------------------------------------------------------------------SUBTYPE X01 IS resolved std_ulogic RANGE 'X' TO '1'; -- ('X','0','1')
SUBTYPE X01Z IS resolved std_ulogic RANGE 'X' TO 'Z'; -- ('X','0','1','Z')
SUBTYPE UX01 IS resolved std_ulogic RANGE 'U' TO '1'; -- ('U','X','0','1')
SUBTYPE UX01Z IS resolved std_ulogic RANGE 'U' TO 'Z'; -('U','X','0','1','Z')
-------------------------------------------------------------------- overloaded logical operators
------------------------------------------------------------------FUNCTION "and" ( l : std_ulogic; r : std_ulogic ) RETURN UX01;
FUNCTION "nand" ( l : std_ulogic; r : std_ulogic ) RETURN UX01;

165

11 ) Paquetages IEEE
FUNCTION "or" ( l : std_ulogic; r : std_ulogic ) RETURN UX01;
FUNCTION "nor" ( l : std_ulogic; r : std_ulogic ) RETURN UX01;
FUNCTION "xor" ( l : std_ulogic; r : std_ulogic ) RETURN UX01;
function "xnor" ( l : std_ulogic; r : std_ulogic ) return ux01;
FUNCTION "not" ( l : std_ulogic
) RETURN UX01;
-------------------------------------------------------------------- vectorized overloaded logical operators
------------------------------------------------------------------FUNCTION "and" ( l, r : std_logic_vector ) RETURN std_logic_vector;
FUNCTION "and" ( l, r : std_ulogic_vector ) RETURN std_ulogic_vector;
FUNCTION "nand" ( l, r : std_logic_vector ) RETURN std_logic_vector;
FUNCTION "nand" ( l, r : std_ulogic_vector ) RETURN std_ulogic_vector;
FUNCTION "or" ( l, r : std_logic_vector ) RETURN std_logic_vector;
FUNCTION "or" ( l, r : std_ulogic_vector ) RETURN std_ulogic_vector;
FUNCTION "nor" ( l, r : std_logic_vector ) RETURN std_logic_vector;
FUNCTION "nor" ( l, r : std_ulogic_vector ) RETURN std_ulogic_vector;
FUNCTION "xor" ( l, r : std_logic_vector ) RETURN std_logic_vector;
FUNCTION "xor" ( l, r : std_ulogic_vector ) RETURN std_ulogic_vector;
function "xnor" ( l, r : std_logic_vector ) return std_logic_vector;
function "xnor" ( l, r : std_ulogic_vector ) return std_ulogic_vector;
FUNCTION "not" ( l : std_logic_vector ) RETURN std_logic_vector;
FUNCTION "not" ( l : std_ulogic_vector ) RETURN std_ulogic_vector;

-------------------------------------------------------------------- strength strippers and type convertors


------------------------------------------------------------------FUNCTION To_X01 ( s : std_logic_vector ) RETURN std_logic_vector;
FUNCTION To_X01 ( s : std_ulogic_vector ) RETURN std_ulogic_vector;
FUNCTION To_X01 ( s : std_ulogic
) RETURN X01;
FUNCTION To_X01 ( b : BIT_VECTOR
) RETURN std_logic_vector;
FUNCTION To_X01 ( b : BIT_VECTOR
) RETURN std_ulogic_vector;
FUNCTION To_X01 ( b : BIT
) RETURN X01;
FUNCTION To_X01Z ( s : std_logic_vector ) RETURN std_logic_vector;
FUNCTION To_X01Z ( s : std_ulogic_vector ) RETURN std_ulogic_vector;
FUNCTION To_X01Z ( s : std_ulogic
) RETURN X01Z;
FUNCTION To_X01Z ( b : BIT_VECTOR
) RETURN std_logic_vector;
FUNCTION To_X01Z ( b : BIT_VECTOR
) RETURN std_ulogic_vector;
FUNCTION To_X01Z ( b : BIT
) RETURN X01Z;
FUNCTION To_UX01
FUNCTION To_UX01
FUNCTION To_UX01
FUNCTION To_UX01
FUNCTION To_UX01
FUNCTION To_UX01

( s : std_logic_vector ) RETURN std_logic_vector;


( s : std_ulogic_vector ) RETURN std_ulogic_vector;
( s : std_ulogic
) RETURN UX01;
( b : BIT_VECTOR
) RETURN std_logic_vector;
( b : BIT_VECTOR
) RETURN std_ulogic_vector;
( b : BIT
) RETURN UX01;

-------------------------------------------------------------------- edge detection


------------------------------------------------------------------FUNCTION rising_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN;
FUNCTION falling_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN;

-------------------------------------------------------------------------------------------------------------------------------------- conversion functions


-- object contains an unknown
------------------------------------------------------------------------------------------------------------------------------------FUNCTION To_bit
( s : std_ulogic;
xmap : BIT := '0') RETURN BIT;
FUNCTION Is_X ( s : std_ulogic_vector ) RETURN BOOLEAN;
FUNCTION To_bitvector ( s : std_logic_vector ; xmap : BIT := '0') RETURN BIT_VECTOR;
FUNCTION Is_X ( s : std_logic_vector ) RETURN BOOLEAN;
FUNCTION To_bitvector ( s : std_ulogic_vector; xmap : BIT := '0') RETURN BIT_VECTOR;
FUNCTION To_StdULogic
( b : BIT
) RETURN std_ulogic;
FUNCTION Is_X ( s : std_ulogic
) RETURN BOOLEAN;
FUNCTION To_StdLogicVector ( b : BIT_VECTOR
) RETURN std_logic_vector;
FUNCTION To_StdLogicVector ( s : std_ulogic_vector ) RETURN std_logic_vector;
END std_logic_1164;
FUNCTION To_StdULogicVector ( b : BIT_VECTOR
) RETURN std_ulogic_vector;
FUNCTION To_StdULogicVector ( s : std_logic_vector ) RETURN std_ulogic_vector;
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

166

11 ) Paquetages IEEE
-------------------------------------------------------------------------function "+"(L: UNSIGNED; R: SIGNED) return SIGNED;
--attribute builtin_subprogram of
-- Copyright (c) 1990,1991,1992 by Synopsys , Inc. All rights reserved. -"+"[UNSIGNED, SIGNED return SIGNED]: function is "stdarith_plus_uss";
---- This source file may be used and distributed without restriction -function "+"(L: SIGNED; R: UNSIGNED) return SIGNED;
-- provided that this copyright statement is not removed from the file -attribute builtin_subprogram of
-- and that any derivative work contains this copyright notice.
-"+"[SIGNED, UNSIGNED return SIGNED]: function is "stdarith_plus_sus ";
---- Package name: STD_LOGIC_ARITH
-function "+"(L: UNSIGNED; R: INTEGER) return UNSIGNED;
--attribute builtin_subprogram of
-- Purpose:
-"+"[UNSIGNED, INTEGER return UNSIGNED]: function is "stdarith_plus_uiu";
-- A set of arithemtic, conversion, and comparison functions
--- for SIGNED, UNSIGNED, SMALL_INT, INTEGER,
-- function "+"(L: INTEGER; R: UNSIGNED) return UNSIGNED;
-- STD_ULOGIC, STD_LOGIC, and STD_LOGIC_VECTOR.
attribute
-builtin_subprogram of
--"+"[INTEGER, UNSIGNED return UNSIGNED]: function is "stdarith_plus_iuu";
-------------------------------------------------------------------------function "+"(L: SIGNED; R: INTEGER) return SIGNED;
--------------------------------------------------attribute builtin_subprogram of
-- Attributes added to invoke MTI builtin functions
"+"[SIGNED, INTEGER return SIGNED]: function is "stdarith_plus_sis ";
--------------------------------------------------function "+"(L: INTEGER; R: SIGNED) return SIGNED;
library IEEE;
attribute builtin_subprogram of
use IEEE.std_logic_1164.all;
"+"[INTEGER, SIGNED return SIGNED]: function is "stdarith_plus_iss";
package std_logic_arith is
type UNSIGNED is array (NATURAL range <>) of STD_LOGIC;
type SIGNED is array (NATURAL range <>) of STD_LOGIC;
subtype SMALL_INT is INTEGER range 0 to 1;
attribute builtin_subprogram : string;

function "+"(L: UNSIGNED; R: STD_ULOGIC) return UNSIGNED;


attribute builtin_subprogram of
"+"[UNSIGNED, STD_ULOGIC return UNSIGNED]: function is "stdarith_plus_uxu";
function "+"(L: STD_ULOGIC; R: UNSIGNED) return UNSIGNED;
attribute builtin_subprogram of
"+"[STD_ULOGIC, UNSIGNED return UNSIGNED]: function is "stdarith_plus_xuu";

---------------function "+"(L: SIGNED; R: STD_ULOGIC) return SIGNED;


-- add operators
attribute builtin_subprogram of
---------------"+"[SIGNED, STD_ULOGIC return SIGNED]: function is "stdarith_plus_sxs ";
function "+"(L: UNSIGNED; R: UNSIGNED) return UNSIGNED;
attribute builtin_subprogram of
function "+"(L: STD_ULOGIC; R: SIGNED) return SIGNED;
"+"[UNSIGNED, UNSIGNED return UNSIGNED]: function is "stdarith_plus_uuu";
attribute builtin_subprogram of
"+"[STD_ULOGIC, SIGNED return SIGNED]: function is "stdarith_plus_xss";
function "+"(L: SIGNED; R: SIGNED) return SIGNED;
attribute builtin_subprogram of
"+"[SIGNED, SIGNED return SIGNED]: function is "stdarith_plus_sss";
ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

167

11 ) Paquetages IEEE
function "+"(L: UNSIGNED; R: UNSIGNED) return STD_LOGIC_VECTOR;
attribute builtin_subprogram of
"+"[UNSIGNED, UNSIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_uuu";
function "+"(L: SIGNED; R: SIGNED) return STD_LOGIC_VECTOR;
attribute builtin_subprogram of
"+"[SIGNED, SIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_sss";
function "+"(L: UNSIGNED; R: SIGNED) return STD_LOGIC_VECTOR;
attribute builtin_subprogram of
"+"[UNSIGNED, SIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_uss";
function "+"(L: SIGNED; R: UNSIGNED) return STD_LOGIC_VECTOR;
attribute builtin_subprogram of
"+"[SIGNED, UNSIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_sus ";
function "+"(L: UNSIGNED; R: INTEGER) return STD_LOGIC_VECTOR;
attribute builtin_subprogram of
"+"[UNSIGNED, INTEGER return STD_LOGIC_VECTOR]: function is "stdarith_plus_uiu";
function "+"(L: INTEGER; R: UNSIGNED) return STD_LOGIC_VECTOR;
attribute builtin_subprogram of
"+"[INTEGER, UNSIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_iuu";
function "+"(L: SIGNED; R: INTEGER) return STD_LOGIC_VECTOR;
attribute builtin_subprogram of
"+"[SIGNED, INTEGER return STD_LOGIC_VECTOR]: function is "stdarith_plus_sis ";
function "+"(L: INTEGER; R: SIGNED) return STD_LOGIC_VECTOR;
attribute builtin_subprogram of
"+"[INTEGER, SIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_iss";
function "+"(L: UNSIGNED; R: STD_ULOGIC) return STD_LOGIC_VECTOR;
attribute builtin_subprogram of
"+"[UNSIGNED, STD_ULOGIC return STD_LOGIC_VECTOR]: function is "stdarith_plus_uxu";
function "+"(L: STD_ULOGIC; R: UNSIGNED) return STD_LOGIC_VECTOR;
attribute builtin_subprogram of
"+"[STD_ULOGIC, UNSIGNED return STD_LOGIC_VECTOR]: function is "stdarith_plus_xuu";

ENSSAT - Universit de Rennes 1 - France - Anne universitaire 2003 - 2004

168