VHDL
Support de cours
D.Chillet
[email protected]
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