Documente Academic
Documente Profesional
Documente Cultură
Dpartement GEII
V. Fischer, F. Bernard
Septembre 2011
Viktor Fischer
Professeur lUniversit de Saint-Etienne
Contact :
IUT, GEII
fischer@univ-st-etienne.fr
Consultations :
Lundi aprs-midi
Structure du cours :
4 h CMs
26 x 1,5 h TDs
2 x 3 h TPs
Examen :
Septembre 2011
Comptences minimales :
- Savoir dcomposer une fonction en blocs
combinatoires et squentiels,
- Savoir choisir et mettre en oeuvre un circuit
numrique conventionnel ou programmable,
- Savoir utiliser une chane de dveloppement
(simulation et synthse),
- Savoir concevoir, simuler et tester un circuit
logique programmable.
Septembre 2011
Septembre 2011
http://www.enseirb.fr/~nouel
http://www.eda.org/
Septembre 2011
Chapitre 4
Mthodes de conception
de circuits logiques
Septembre 2011
En TP
Septembre 2011
Septembre 2011
10
Langage VHDL
Langage VHDL
Septembre 2011
11
Septembre 2011
12
Type de simulation
Simulation fonctionnelle :
Beaucoup plus rapide, moins prcise
Objectif - la preuve formelle du fonctionnement pour chaque
lment du systme
Aucun dlai de propagation n'est pris en compte, le systme
physique est considr comme parfait
Septembre 2011
13
Banc de test
pour la simulation
Description comportementale
en HDL
Dcomposition hirarchique
en blocs fonctionnels
Simulation
fonctionnelle
Description structurelle
en HDL
Synthse logique
et optimisation
Simulation
fonctionnelle
Librairie cible
de primitives
Simulation
fonctionnelle
14
Chapitre 5
Langage VHDL
- Introduction
Septembre 2011
15
Prambule
Caractristiques du langage VHDL :
A noter :
Dans les chapitres suivants nous allons utiliser un sous-ensemble du
langage VHDL structures de base utilises pour la synthse logique !
Septembre 2011
16
Units de conception
Une description VHDL comporte un certain nombre dunits de
conception. Une unit de conception constitue un sous ensemble de la
structure logique pouvant tre compil sparment, stock dans un
fichier indpendant et sauvegard dans une librairie. Une unit de
conception peut se trouver :
Dans un fichier *.vhd (une ou plusieurs units dans un fichier)
Dans un rpertoire (de travail), dans plusieurs fichiers *.vhd
Dans une librairie (un paquetage)
Mthode applique
Units de conception :
en ENSL1
Non utilis
en ENSL1
17
Entit de conception
entit de conception
dclaration
de lentit
architecture
Dclaration de l'entit
Nom
Paramtres (optionnels)
Entres/sorties
Architecture
Structure interne de l'entit
Septembre 2011
18
Dclaration dentit
Dcrit le nom et linterface du composant
(signaux dentres et sorties)
Nom dentit
Types de ports
Noms de ports
ENTITY and2_op IS
PORT(
a, b: IN STD_LOGIC;
z
: OUT STD_LOGIC
);
END and2_op;
Point-virgule, sauf
la dernire ligne
Sans point-virgule
A noter :
Nous n'utiliserons pas les possibilits de paramtrer des modules.
Septembre 2011
19
Description darchitecture
Architecture - dcrit la structure ou le comportement du
composant
Plusieurs architectures pour la mme entit (module) peuvent
exister. Ce cas est similaire la possibilit d'implanter une fonction
logique soit en utilisant des portes NAND ou en utilisant des portes
NOR ou d'autres portes logiques.
Nom darchitecture
Nom dentit
Mots rservs
pour le dbut
et la fin du corps
de larchitecture
Septembre 2011
Espace de dclaration
pour l'architecture
Corps de
l'architecture
(Ici : Affectation du
signal de sortie)
20
Dclaration
de l'entit
Description de
l'architecture
Septembre 2011
ENTITY and2_op IS
PORT(
a, b: IN STD_LOGIC;
z
: OUT STD_LOGIC);
END and2_op;
Dclaration de la
bibliothque IEEE ncessaire pour des
signaux logiques
standards
21
Modes de ports
Ils spcifient la direction du transfert des donnes
vis--vis du composant
IN : port dentre (unidirectionnel) - les donnes arrivant sur ce port
peuvent tre lus lintrieur du composant, elles peuvent donc se
trouver seulement droite dans lexpression daffectation dun signal
ou dune variable.
OUT : port de sortie (unidirectionnel) - les donnes sortant peuvent tre
seulement mises jour (et non pas lus) lintrieur du composant,
elles peuvent se trouver seulement gauche de lexpression
daffectation.
INOUT : port dentre/sortie (bi-directionnel) les donnes peuvent
tre mises jour et lus lintrieur du composant, elles peuvent se
trouver gauche ou droite de lexpression daffectation.
A noter : Il existe un autre mode (Buffer) que nous n'utiliserons pas
Septembre 2011
22
Signaux (SIGNAL)
Variables (VARIABLE)
Constantes (CONSTANT)
Types de donnes
Entiers (INTEGER)
Bits (BIT)
Boolens (BOOLEAN)
Caractres (CHARACTER)
Rels (REAL)
Physiques (TIME)
numrs (ENUMERATED)
Logique standard (STD_LOGIC)
Bibliothque standard
Bibliothque IEEE
Composition de donnes
Septembre 2011
23
flot de
donnes
Expressions
concurrentes
structurel
Composants et
interconnexions
Septembre 2011
comportemental
Expressions
squentielles
Registres
Machines dtats
Bancs de test
24
Exemple : XOR3
U1
U2
a
b
ENTITY xor3
PORT(
a
:
b
:
c
:
resul :
);
END xor3;
Septembre 2011
resul
IS
IN STD_LOGIC;
IN STD_LOGIC;
IN STD_LOGIC;
OUT STD_LOGIC
25
U2
u1_out
a
b
resul
Nom darchitecture
Nom dentit
Dclaration
du signal interne
END xor3_flotdon;
Septembre 2011
26
Septembre 2011
27
i1
i2
y
XOR2
u1_out
resul
i1
y
i2
u1
i1
c
XOR3
y
i2
u2
28
Septembre 2011
29
COMPONENT xor2 IS
PORT(
i1 : IN STD_LOGIC;
i2 : IN STD_LOGIC;
y : OUT STD_LOGIC
);
END COMPONENT;
u1: xor2 PORT MAP (i1 => a,
i2 => b,
y => u1_out);
Nom de linstanciation
Septembre 2011
Dclaration du composant
(dans la partie dclarations
de larchitecture)
Instanciation du composant
(dans le corps de larchitecture)
Nom du composant
V. Fischer, F. Bernard: ENSL1
30
31
Chapitre 6
Ralisation de fonctions
logiques combinatoires
dans le matriel
Septembre 2011
32
Septembre 2011
33
Instanciation de composant
Duplication du matriel
tiquette : FOR variable_de_boucle IN intervalle GENERATE
{instruction(s) concurrente(s)}
END GENERATE tiquette;
34
Entit multiplexeurs
Architecture rtl
a
sel
a
b
b
sel
a
b
sel
sel
35
a
x
y
b
z
sel
Septembre 2011
36
...
signal_cible
valeur2
conditionN-1
valeur1
condition2
condition1
37
sel1
-- affectation conditionnelle
y <= a WHEN sel1 = '1' ELSE
b WHEN sel2 = '1 ELSE
c;
sel2
a
y
La slection du signal a
avec le signal sel1 est
prioritaire
devant b et c !
q = (sel1 AND a)
OR ((NOT sel1) AND sel2 AND b)
OR ((NOT sel1) AND (NOT sel2) AND c)
Septembre 2011
38
signal_cible
MUX
selecteur
Septembre 2011
39
y = (a AND
OR (b
OR (c
OR (d
Septembre 2011
sans priorit !
40
Ver 1 :
y <= a AND b;
Ver 2 :
Ver 3 :
Ver 4 :
Concatnation
s <= a & b;
de a et b
WITH s SELECT
Noubliez pas les
y <= 1 WHEN "11"
branches alternatives !!!
0 WHEN OTHERS;
Septembre 2011
41
42
Fonctions combinatoires :
Gnrateurs de parit
Gnrateur de parit gnrent le bit de parit qui permet de
dtecter les erreurs survenues pendant la transmission ou la
sauvegarde (dans la mmoire) de donnes
Principe le bit de parit est gal un si le nombre de uns dans la
donne est impaire pour une donne de N bits on peut le raliser
avec une fonction logique OU EXCLUSIF N entres
A noter : le nombre paire derreurs nest pas dtect
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY parity IS
PORT (a
: IN std_logic_vector(7 DOWNTO 0);
par_out : OUT std_logic);
END parity;
ARCHITECTURE rtl OF parity IS
BEGIN
-- assignation inconditionnelle
par_out <= a(7) XOR a(6) XOR a(5) XOR a(4)
XOR a(3) XOR a(2) XOR a(1) XOR a(0);
END rtl;
Septembre 2011
43
Fonctions combinatoires :
Gnrateur de parit paramtrable
Fonction gnrique fonction universelle, adaptable aux besoins
la largeur du gnrateur peut tre dfinie par le paramtre N
data(1)
Septembre 2011
data(2)
par_out
data(3)
data(4)
data(5)
data(6)
data(7)
44
Fonctions combinatoires :
Gnrateur de parit paramtrable (suite)
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY parity IS
GENERIC (WIDTH : INTEGER := 8);
PORT (data
: IN std_logic_vector(WIDTH-1 DOWNTO 0);
par_out : OUT std_logic);
END parite;
ARCHITECTURE rtl OF parite IS
SIGNAL par_int : std_logic_vector(WIDTH-1 DOWNTO 0);
45
Fonctions combinatoires :
Multiplexeurs et dmultiplexeurs
Multiplexeurs permettent de slectionner un parmi plusieurs
signaux dentre
Dmultiplexeurs permettent de rediriger la valeur prsente
lentre vers une parmi plusieurs sorties
Schma du principe :
Multiplexeur
Dmultiplexeur
Symbole :
a
b
c
d
a
b
c
d
.
.
.
MUX
sel
a b
c d a b
c d
46
Fonctions combinatoires :
Implantation dun multiplexeur 4 entres
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY multiplexer
PORT (a, b, c, d :
sel
:
y
:
END multiplexer;
IS
IN std_logic;
IN std_logic_vector(1 DOWNTO 0);
OUT std_logic);
y = (a AND
OR (b
OR (c
OR (d
Septembre 2011
sans priorit !
47
Fonctions combinatoires :
Codeurs et dcodeurs
Codeurs permettent de coder une donne (binaire) dune
manire plus efficace ou dune manire plus avantageuse
Dcodeurs ralisent une opration inverse par rapport au
codage et permettent de reprsenter une information dune
manire mieux comprhensible ou plus facile utiliser
Exemple : Codeur 1 sur N binaire
Codeur
1 sur 8 binaire
b(7)=0
b(6)=0
b(5)=1
b(4)=0
b(3)=0
b(2)=0
b(1)=0
b(0)=0
Valeur 1 sur 8
Septembre 2011
Dcodeur
binaire 1 sur 8
bin(2) = 1
bin(1) = 0
bin(0) = 1
5
Valeur binaire
b(7)=0
b(6)=0
b(5)=1
b(4)=0
b(3)=0
b(2)=0
b(1)=0
b(0)=0
Bit 5 gale un
( chaque instant
donn, seulement
un bit peut tre gal
un)
Valeur 1 sur 8
48
Fonctions combinatoires :
Codeurs et dcodeurs (suite)
Codeur avec priorit donne le numro (en binaire) du canal
gal un ; si plusieurs canaux sont gaux un, cest le
numro du canal prioritaire, qui est donn la sortie
Exemple Codeur 1 sur 3 binaire avec priorit
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY priority_encod IS
PORT (a, b, c : IN std_logic;
bin_out : OUT std_logic_vector(1 DOWNTO 0));
END priority_encod;
ARCHITECTURE rtl OF priority_encod IS
BEGIN
-- assignation conditionnelle
bin_out <= "01" WHEN a = '1' ELSE
"10" WHEN b = '1' ELSE
"11" WHEN c = '1' ELSE
"00";
END rtl;
Septembre 2011
a est prioritaire
devant b, qui
est prioritaire
devant c
49
Fonctions combinatoires :
Codeurs et dcodeurs (suite)
Dcodeur code binaire code afficheur sept segments
permet dafficher une valeur binaire de 4 bits en hexadcimal
sur un afficheur (avec les diodes LED) de sept segments
Schma dinterconnexion :
Codage de segments :
VCC
Afficheur 7 segments
anode commune
a
f
a
b
c
d
e
f
g
c
d
Septembre 2011
50
Fonctions combinatoires :
Blocs arithmtiques
Oprations arithmtiques peuvent tre ralises en VHDL
Tableau de vrit
x
y
FA
cout
cin
cout
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
0
1
1
0
1
0
0
1
cin
Somme :
s = x XOR y XOR cin
Retenue :
cout = (x AND y) OR (cin AND X)
OR (cin AND Y)
Septembre 2011
51
Fonctions combinatoires :
Blocs arithmtiques (suite)
Ralisation dun additionneur de quatre bits
bas sur un additionneur complet
b3 a3
c4 = cout
FA
s3
b2 a2
c3
FA
s2
b1 a1
c2
FA
Chemin
critique
b0 a0
c1
s1
FA
c0 = cin
s0
Ici nous avons 5 sorties, donc 5 fonctions logiques (cout, s0, s1, s2, s3),
les fonctions les plus complexes sont cout et s3. elles reprsentent les
chemins critiques du bloc
Septembre 2011
52
Fonctions combinatoires :
Blocs arithmtiques (suite)
Ralisation dun additionneur de quatre bits en utilisant un oprateur
arithmtique (haut niveau dabstraction)
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY addition
PORT (a, b
:
s
:
c_out
:
END addition;
IS
IN std_logic_vector(3 DOWNTO 0);
OUT std_logic_vector(3 DOWNTO 0);
OUT std_logic);
53
Fonctions combinatoires :
Blocs arithmtiques (suite)
Unit arithmtique et logique
C_out
Op1 Op0 Opration
A
R
B
R=A+B
R=A-B
R = A and B
R = A or B
Op1 Op0
Septembre 2011
54
Fonctions combinatoires :
Blocs arithmtiques (suite)
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_signed.ALL;
ENTITY alu IS
PORT (a, b
op1, op0
r
c_out
END alu;
:
:
:
:
BEGIN
oper
<= op1 & op0; -- code operation
c_out <= int(8);
r
<= int(7 DOWNTO 0);
WITH oper SELECT
int <= (('0'& a) + ('0'& b)) WHEN "00",
(('0'& a) - ('0'& b)) WHEN "01",
('0' & (a AND b))
WHEN "10",
('0' & (a OR b))
WHEN OTHERS;
END rtl;
Septembre 2011
55
Fonctions combinatoires :
Sorties commandes
Sorties trois tats
oe
-- assignation conditionnelle
y <= a WHEN oe = '1' ELSE
'Z';
Septembre 2011
oe
56
Fonctions combinatoires :
Sorties commandes (suite)
Collecteur ouvert
seulement deux tats la sortie sont possibles : Z et 0
oe
oe
-- assignation conditionnelle
y <= '0' WHEN oe = '1' ELSE
'Z';
Septembre 2011
oe
57
Fonctions combinatoires :
Sorties commandes (suite)
Entre sortie bidirectionnelle
oe
a_out
a_in = y
y_out
y
bus
externe
oe
a_out
y
a_in
y_out
58
Fonctions combinatoires :
Sorties commandes (suite)
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY es_bidir IS
PORT (y
: INOUT std_logic;
oe
: IN std_logic;
a_log2bus : IN std_logic;
a_bus2log : OUT std_logic);
END es_bidir;
oe
a_log2bus
a_bus2log
Septembre 2011
59
Chapitre 7
Fonctions de base
de la logique squentielle
Septembre 2011
60
Septembre 2011
61
Septembre 2011
Q
_
Q
Tableau de vrit
S
Q+
nQ+
tat suivant
-Q
-nQ
tat prcdent
Mise zro
Mise un
Ambigut
Interdit
62
Verrouillage
S
Q
Ena
_
Q
R
Septembre 2011
Tableau de vrit
Ena
Q+
nQ+
-Q
-nQ
-Q
-nQ
-Q
-nQ
-Q
-nQ
-Q
-nQ
Ambigut
63
Tableau de vrit
Ena
Q+
nQ+
-Q
-nQ
Ena
-Q
-nQ
Q
Verrou
Septembre 2011
Passante Verrou
Passante
64
Description flot de
donnes base sur
la figure prcdente,
difficile destimer
son comportement
Solution :
Description
comportementale,
voir la suite
65
Structure conditionnelle
IF condition THEN
{instruction(s) squentielle(s)}
[ELSIF
{instruction(s) squentielle(s)}]
[ELSE
{Instruction(s) squentielle(s)}]
...
END IF;
Septembre 2011
Parties
optionnelles
66
Septembre 2011
Partie optionnelle,
mais conseille
67
PROCESS
Suite dinstructions VHDL avec un comportement squentiel
Ordre dinstructions lintrieur du PROCESS - important !
Trois phases du PROCESS :
Repos, activation, excution
Syntaxe :
[tiquette:] PROCESS [(liste de sensibilit)]
[partie dclarative]
BEGIN
{instruction(s) squentielle(s)}
END PROCESS [tiquette];
Optionnelles
Optionnelles
Septembre 2011
68
69
.
.
.
Signaux
L'ordre nest
pas important
Process 2
Septembre 2011
70
71
Bascule D
Bascule JK
Bascule T
Bascule RS
zones denregistrement
horloge
donnes
sortie
Septembre 2011
parasite
V. Fischer, F. Bernard: ENSL1
Tableau de vrit
clk _
Q
sensibilit au front montant
clk
D
clk
Q+
nQ+
-Q
-nQ
-Q
-nQ
-Q
-nQ
Q
Septembre 2011
73
Laffectation dans la
partie synchrone du
PROCESS implique la
cration dune bascule
74
Tableau de vrit
clk _
Q
K
sensibilit au front montant
Septembre 2011
clk
Q+
nQ+
tat suivant
-Q
-nQ
tat prcdent
-Q
-nQ
tat prcdent
-Q
-nQ
tat prcdent
-Q
-nQ
tat prcdent
Mise un
Mise zro
-nQ
-Q
Inversion
75
76
CLR
clk
Q+
nQ+
-Q
-nQ
-Q
-nQ
-Q
-nQ
clk _
Q
CLR
Septembre 2011
Tableau de vrit
77
78
Types de compteurs
Compteurs asynchrones les bascules ne basculent pas en
mme temps
Compteurs synchrones toutes les bascules basculent au
mme moment
Septembre 2011
79
clk
Clk Q
Clk Q
cnt(0)
Clk Q
cnt(1)
Clk Q
cnt(2)
cnt(3)
clk
cnt(3..0)
n+1
n+2
n+3
tat indtermin
Septembre 2011
80
C0
Clk Q
C1
Compteur synchrone
sur 4 bits
bas sur les bascules D
cnt(1)
Clk Q
C2
cnt(0)
cnt(2)
Clk Q
cnt(3)
Clk Q
C3
Septembre 2011
81
updn
clk
rst
CMPT
82
d
load
clk
rst
CMPT
83
d
en
load
clk
rst
ARCHITECTURE logic OF compt_charg IS
CMPT
SIGNAL int_q : std_logic_vector(15 DOWNTO 0);
BEGIN
PROCESS(rst, clk)
BEGIN
IF rst = '0' THEN
int_q <= (OTHERS => '0');
ELSIF rising_edge(clk) THEN
IF load = '1' THEN int_q <= d;
ELSIF en = '1' THEN int_q <= int_q + 1;
END IF;
END IF;
Il manque ELSE, donc il sagit dune
END PROCESS;
mmorisation implicite du signal int_q
q <= int_q;
END logic;
Septembre 2011
84
par_in(2) par_in(1)
par_in(0)
load
Sortie
srie
D
Entre
srie
Convertisseur srie/parallle
D
clk
Convertisseur parallle/srie
par_out(3) par_out(2) par_out(1) par_out(0)
Septembre 2011
Sortie parallle
85
86
Chapitre 8
Machines dtats
Septembre 2011
87
Machines dtats
Machine dtat automate squentiel cadenc par un signal
dhorloge et spcifi par :
un jeu dtats possibles
un jeu de transitions (orientes) entre ces tats
un jeu de conditions (expressions logiques bases sur les
entres de la machine) lies ces transitions
un jeu dquations spcifiant les valeur la sortie
Diagramme tats - transitions
n_rd n_wr
raz
n_rd n_wr
lec1
ecr1
adr = 1
wr =1
(n_rd n_wr)
+
(n_rd n_wr)
repos
adr = 2
rd = 1
adr = 0
rd = 0
wr = 0
lec2
ecr2
adr = 1
wr = 0
Septembre 2011
adr = 2
rd = 0
V. Fischer, F. Bernard: ENSL1
Entres :
- clk
- raz
- n_wr
- n_rd
Sorties :
- adr(1..0)
- rd
- wr
88
89
(2/4)
tats de la machine
n_rd n_wr
lec1
ecr1
repos
adr = 1
wr =1
adr = 0
rd = 0
wr = 0
ecr2
adr = 1
wr = 0
adr = 2
rd = 1
lec2
adr = 2
rd = 0
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY machine IS
PORT (clk, raz, n_rd, n_wr : IN std_logic;
adr : OUT std_logic_vector(1 DOWNTO 0);
rd, wr : OUT std_logic);
END machine;
Type numr
90
(3/4)
BEGIN
Spcification de transitions
PROCESS(raz, clk)
BEGIN
dans un PROCESS
IF raz = '1' THEN
ma_machine <= repos;
Remise zro
ELSIF risig_edge(clk) THEN
CASE ma_machine IS
asynchrone
WHEN repos =>
IF n_wr = '0' AND n_rd = '1' THEN
ma_machine <= ecr1;
END IF;
IF n_wr = '1' AND n_rd = '0' THEN
ma_machine <= lec1;
END IF;
raz n_rd n_wr
n_rd n_wr
WHEN ecr1 =>
lec1
adr = 2
ma_machine <= ecr2;
ecr1
rd = 1
repos
adr = 1
WHEN ecr2 =>
adr = 0
wr =1
rd = 0
ma_machine <= repos;
wr = 0
lec2
WHEN lec1 =>
ecr2
adr = 2
ma_machine <= lec2;
adr = 1
rd = 0
WHEN lec2 =>
wr = 0
ma_machine <= repos;
WHEN OTHERS =>
ma_machine <= repos;
END CASE;
END IF;
2
suivre
END PROCESS;
Septembre 2011
91
(3/4)
Spcification de sorties
(structures concurrentes)
wr <= '1' WHEN ma_machine = ecr1
ELSE '0';
Structures conditionnelles
n_rd n_wr
repos
adr = 1
wr =1
adr = 2
rd = 1
adr = 0
rd = 0
wr = 0
ecr2
adr = 1
wr = 0
Septembre 2011
n_rd n_wr
lec1
ecr1
Structure slective
raz
lec2
adr = 2
rd = 0
92
Chemin critique !
n_rd
Comb
Next1
Comb
Next2
clk
Comb
Next3
adr(0)
Comb
Out3
rd
DFF3
raz
Septembre 2011
Comb
Out2
q
DFF2
Passage
ltat
suivant
adr(1)
DFF1
n_wr
Comb
Out1
Comb
Out4
wr
Sorties
93
94
Comb
Out1
Comb
Next1
DFF
adr(0)
n_wr
Comb
Out2
DFF1
Comb
Next2
DFF
rd
Comb
Out3
DFF2
Comb
Next3
clk
wr
DFF3
raz
Septembre 2011
Comb
Out4
95
3
1
Logique
dtat
Suivant
Registres
dtat
011
Logique
de Sortie
3
1
0
2
Logique
dtat
Suivant
Registres
dtat
Logique
de Sortie
01000
96
Avantages
Le nombre dentres dans la partie combinatoire est rduit
Quantit rduite de signaux rends le routage plus simple
La partie combinatoire (pour la logique dtat suivant et pour
la logique de sortie) est rduite
Rduction de la partie combinatoire raccourcie le chemin
critique et augmente donc la vitesse de la machine
A noter : Le choix (machine avec tats cods/dcods) se fait au
niveau du compilateur pendant la synthse
Septembre 2011
97
Entres
tat actuel
Logique
dtat
Suivant
Registres
dtat
Logique
de Sortie
Sorties
Logique
de Sortie
Sorties
tat suivant
Machine de Mealy
Entres
Logique
dtat
Suivant
Septembre 2011
Entres
Registres
dtat
Logique
dtat
Suivant
Registres
dtat
Logique
de Sortie
Registres Sorties
de Sortie
98
Machine de Moore
Caractristique principale
Avantages
Inconvnients
Septembre 2011
99
ENTITY machine IS
PORT (clk, raz, n_rd, n_wr : IN std_logic;
adr : OUT std_logic_vector(1 DOWNTO 0);
rd, wr : OUT std_logic);
END machine;
ARCHITECTURE comport OF machine IS
TYPE mes_etats IS (repos, ecr1, ecr2, lec1, lec2);
SIGNAL ma_machine : mes_etats;
BEGIN
PROCESS(raz, clk)
BEGIN
IF raz = '1' THEN
ma_machine <= repos;
ELSIF rising_edge(clk) THEN
CASE ma_machine IS
WHEN repos =>
IF n_wr = '0' AND n_rd = '1' THEN
ma_machine <= ecr1;
END IF;
IF n_wr = '1' AND n_rd = '0' THEN
ma_machine <= lec1;
END IF;
WHEN ecr1 =>
clk
ma_machine <= ecr2;
raz
WHEN ecr2 =>
ma_machine <= repos;
n_rd
WHEN lec1 =>
ma_machine <= lec2;
n_wr
WHEN lec2 =>
ma_m
ma_machine <= repos;
WHEN OTHERS =>
adr
ma_machine <= repos;
END CASE;
rd
END IF;
wr
END PROCESS;
Septembre 2011
Glitches !
100
Machine de Mealy
Caractristique principale
Avantages
Inconvnients
Les quations pour les sorties sont plus complexes cause de leur
dpendance de ltat actuel et dentres
Le routage est plus complexe, parce que les entres ont deux
destinations (la logique combinatoire pour ltat suivant et pour les
sorties)
Sorties combinatoires peuvent comporter les glitches
(perturbations artificielles causes par des retards diffrents de
signaux du code dtat lentre dune porte logique plus de deux
entres)
Septembre 2011
101
ELSE
Glitches !
rd
wr
Septembre 2011
102
Suppression de glitches
dans les machines de Moore et de Mealy
Solution
Avantages
Sans glitches
Inconvnients
Entres
Septembre 2011
Logique
dtat
Suivant
Registres
dtat
Logique
de Sortie
Registres Sorties
de Sortie
103
Septembre 2011
IF rising_edge(clk) THEN
CASE ma_machine IS
WHEN ecr1 =>
adr <= "01";
WHEN ecr2 =>
adr <= "01";
WHEN lec1 =>
adr <= "10";
WHEN lec2 =>
adr <= "10";
WHEN OTHERS =>
adr <= "00";
END CASE;
IF ma_machine = ecr1 THEN
wr <= '1';
ELSE
wr <= '0';
END IF;
IF ma_machine = lec1 THEN
rd <= '1';
ELSE
rd <= '0'; Les sorties sont retardes par
END IF;
priode dhorloge, mais sans
END IF;
END PROCESS;
glitches !
END comport;
une
104
Machine RNS
Caractristique principale
Avantages
Inconvnients
Septembre 2011
105
END comport;
wr
Septembre 2011
106
Chapitre 9
Conception hirarchique
de systmes logiques
Septembre 2011
107
haut.vhd
entit-architecture haut
composant moyen_a
composant moyen_b
moyen_a.vhd
entit-architecture moyen_a
component bas_a
component bas_b
bas_a.vhd
entit-architecture bas_a
Septembre 2011
moyen_b.vhd
entit-architecture moyen_b
component bas_b
bas_b.vhd
entit-architecture bas_b
108
Point-virgule
Sans point-virgule
Instanciation du composant
<nom_instance> : <nom_du_composant_niveau_plus_bas>
PORT MAP (<nom_port_niveau_bas> => <nom_signal_niveau_actuel>,
.
Obligatoire
.
<nom_port_niveau_bas> => <nom_signal_niveau_actuel>
);
Sans virgule
Septembre 2011
109
110
Paramtrage de modules
Permet daugmenter la portabilit de diffrents modules
Apporte une grande flexibilit aux description de composants
Constitue le principe dutilisation de la bibliothque LPM (Library of
Parameterized Modules) utilise pour proposer les fonctions adaptes
au matriel par les fabricants doutils CAO
Ralis par la structure GENERIC, exemple :
Valeur par dfaut
ENTITY multiplexeur IS
GENERIC (LARGEUR : integer := 4);
PORT(sel : IN bit;
a, b : IN bit_vector(LARGEUR-1 DOWNTO 0);
c : OUT bit_vector(LARGEUR-1 DOWNTO 0));
END multiplexeur;
ARCHITECTURE a_mux OF multiplexeur IS
BEGIN
Valeur actuelle
c <= a WHEN sel = 0 ELSE b;
END a_mux;
Instanciation du composant :
mux_inst: multiplexeur GENERIC MAP (LARGEUR => 8)
PORT MAP(sel => selh, a => ah, b => bh, c => ch);
Septembre 2011
111
Chapitre 10
Familles technologiques
de circuits intgrs logiques
Septembre 2011
V. Fischer : ENSL1
112
Septembre 2011
V. Fischer : ENSL1
113
Niveaux logiques
Niveau "1" = 5 V
Niveau "0" = 0 V
5V
Niveau "1"
VOLMax = 0,4 V
VOHMin = 2,7 V
VILMax = 0,8 V
VIHMin = 2,0 V
Niveau "1"
VOHMin
VNH
VIHMin
VILMax
VNL = 0,4 V
VNH = 0,7 V
Septembre 2011
0V
Niveau "0"
Sorties
V. Fischer : ENSL1
VOLMax
VNL
Niveau "0"
Entres
114
IOLMax = + 8 mA (consommation)
IOHMin = - 0,4 mA (production)
IILMax = -0,4 mA
IIHMin = + 20 uA
VOL
IOL
Commande
VOH
IOH
Commande
IOL = IIL
IIL
Charge
IIH
Charge
IOH = IIH
V. Fischer : ENSL1
115
tPLH
Consommation
Courant consomm pour les sorties au niveau haut : ICCH
Courant consomm pour les sorties au niveau bas : ICCL
Puissance moyenne : PMOY = VCC (ICCH + ICCL )/2
74 N XXX
Standard
74 S XXX
Schottky
74 LS XXX
Low Power
Schottky
74 ALS XXX
Advanced
LS
74 F XXX
Fast
10
10
Consommation (mW)
10
20
35
80
40
70
150
Sries
Septembre 2011
V. Fischer : ENSL1
116
Septembre 2011
V. Fischer : ENSL1
117
CMOS :
VCC = 5 V (2-6 V)
LVCMOS : VCC = 3,3 V (2-3,6 V)
Niveaux logiques
Niveau "1"
VNH
VIHMin
VILMax
Niveau "0"
Sorties
Septembre 2011
Niveau "1"
VOHMin
V. Fischer : ENSL1
VOLMax
VNL
Niveau "0"
Entres
118
Septembre 2011
V. Fischer : ENSL1
119
tPLH
4000
74 HC XXX
74 AC XXX
74 AHC
XXX
74 LVC
XXX
74 ALVC
XXX
Retard de propagation tP
(ns)
100
12
50
160
170
100
150
Sries
Consommation
Puissance : PD = (CL + CPD ) * f * VCC
CL capacit de charge en sortie
CPD capacit interne de dissipation de lordre de 25 pF
Septembre 2011
V. Fischer : ENSL1
120
Septembre 2011
V. Fischer : ENSL1
121
Chapitre 11
Familles fonctionnelles
de circuits intgrs logiques
Septembre 2011
122
Septembre 2011
123
Annes 90
Circuits logiques gnriques et processeurs plus performants,
ASICs et Circuits Logiques Programmables de la premire
gnration (PLA, PLD)
Circuits LSI et VLSI
Aujourd'hui
SSI, MSI, LSI, VLSI - Small-, Middle-, Large-, Very Large-Scale Integration
Septembre 2011
124
Inconvnients
Fonction logique du circuit relativement simple un grand
nombre de circuits est ncessaire pour concevoir les systme
complexes
Fiabilit relativement faible du systme bas sur des circuits
standards (circuit imprim soudures)
volution (modification) du systme difficile
Mauvaise utilisation de la surface de circuit imprim
Vitesse relativement faible
Septembre 2011
125
Inconvnients
volution (modification) pratiquement impossible
Conception trs chre
Septembre 2011
126
Inconvnients
Piratage plus facile
Vitesse leve, mais plus base que pour les ASICs
Plus chers que les ASICs pour une grande quantit, mais moins
chers pour faibles quantits
Septembre 2011
127
Chapitre 12
Circuits logiques
configurables
Septembre 2011
128
Septembre 2011
129
I/O
I/O
I/O
Interconnexions segmentes
configurables
Pour interconnecter la
logique et les E/S
Commutateurs d'interconnexions
I/O
Septembre 2011
130
Termes de produits
Tableaux de vrit (LUT Look-up Tables)
Multiplexeurs
Septembre 2011
131
C
Terme de produit
f1 = A B C + A B C
f2 = A B + A B C
Commutateur programmable
Plan produits
Septembre 2011
132
Macrocellule Altera
Famille CPLD (Complex Programmable Logic Device) MAX 7000
Inverseur programmable
Partie combinatoire
Septembre 2011
Partie squentielle
133
0
0
0
0
0
0
0
0
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
0
1
1
0
0
1
1
0
0
1
0
1
0
1
0
1
0
1
0
1
0
0
1
1
1
0
1
1
1
0
1
1
1
1
1
1
0
1
1
1
1
0
0
1
1
0
1
0
1
0
0
0
Tableau de vrit
Septembre 2011
A
B
C
D
LUT
Z
C
D
134
Partie squentielle
Sorties
Sq.
Combin.
LUTs
Sq.
Multiplexeurs
configurables
Septembre 2011
135
Interconnexions configurables
Trois niveaux hirarchiques d'interconnexions
Interconnexions globales
Signaux accessibles partout dans le circuit
Nombre trs limit
Vitesse relativement faible (grande longueur)
Interconnexions rgionales
Signaux accessible localement (colonnes et lignes, quadrants)
Nombre important
Vitesse moyenne
Interconnexions locales
Signaux accessibles sur un voisinage (~ 8 cellules)
Nombre globalement trs important (mais localement limit)
Grande vitesse
Septembre 2011
136
Entres/sorties configurables
Caractristiques de type
Septembre 2011
137
Registre OE
OE
Broche E/S
Registre de sortie
Sortie
Entre
Registre d'entre
lment E/S
Septembre 2011
138
Septembre 2011
139
Septembre 2011
140
Configurations volatiles
Septembre 2011
141
Transmission
Transmission srie
Plus lente
Moins de broches utilises
Transmission parallle
Plus rapide
Plus de broches utilises
Configuration
Dchiffrement de donnes de configuration (optionnel)
Dcompression de donnes de configuration (optionnelle)
Calcul et vrification de la valeur condense (Checksum - CRC)
Enregistrement de donnes de configuration dans la mmoire
Initialisation
Mise l'tat initial de toutes le bascules et de toutes les entres
sorties
Septembre 2011
142
Annexes
Langage VHDL
Septembre 2011
143
Prambule
Caractristiques du langage VHDL :
A noter :
Dans les chapitres suivants nous allons utiliser un sous-ensemble du
langage VHDL structures de base utilises pour la synthse logique !
Septembre 2011
144
Units de conception
Une description VHDL comporte un certain nombre dunits de
conception. Une unit de conception constitue un sous ensemble de la
structure logique pouvant tre compil sparment, stock dans un
fichier indpendant et sauvegard dans une librairie. Une unit de
conception peut se trouver :
Dans un fichier *.vhd (une ou plusieurs units dans un fichier)
Dans un rpertoire (de travail), dans plusieurs fichiers *.vhd
Dans une librairie (un paquetage)
Mthode applique
Units de conception :
en ENSL1
Non utilis
en ENSL1
145
Entit de conception
entit de conception
dclaration
de lentit
architecture
Dclaration de l'entit
Nom
Paramtres (optionnels)
Entres/sorties
Architecture
Structure interne de l'entit
Septembre 2011
146
Dclaration dentit
Dcrit le nom et linterface du composant
(signaux dentres et sorties)
Nom dentit
Types de ports
Noms de ports
ENTITY and2_op IS
PORT(
a, b: IN STD_LOGIC;
z
: OUT STD_LOGIC
);
END and2_op;
Point-virgule, sauf
la dernire ligne
Sans point-virgule
A noter :
Nous n'utiliserons pas les possibilits de paramtrer des modules.
Septembre 2011
147
Description darchitecture
Architecture - dcrit la structure ou le comportement du
composant
Plusieurs architectures pour la mme entit (module) peuvent
exister. Ce cas est similaire la possibilit d'implanter une fonction
logique soit en utilisant des portes NAND ou en utilisant des portes
NOR ou d'autres portes logiques.
Nom darchitecture
Nom dentit
Mots rservs
pour le dbut
et la fin du corps
de larchitecture
Septembre 2011
Espace de dclaration
pour l'architecture
Corps de
l'architecture
(Ici : Affectation du
signal de sortie)
148
Dclaration
de l'entit
Description de
l'architecture
Septembre 2011
ENTITY and2_op IS
PORT(
a, b: IN STD_LOGIC;
z
: OUT STD_LOGIC);
END and2_op;
Dclaration de la
bibliothque IEEE ncessaire pour des
signaux logiques
standards
149
Modes de ports
Ils spcifient la direction du transfert des donnes
vis--vis du composant
IN : port dentre (unidirectionnel) - les donnes arrivant sur ce port
peuvent tre lus lintrieur du composant, elles peuvent donc se
trouver seulement droite dans lexpression daffectation dun signal
ou dune variable.
OUT : port de sortie (unidirectionnel) - les donnes sortant peuvent tre
seulement mises jour (et non pas lus) lintrieur du composant,
elles peuvent se trouver seulement gauche de lexpression
daffectation.
INOUT : port dentre/sortie (bi-directionnel) les donnes peuvent
tre mises jour et lus lintrieur du composant, elles peuvent se
trouver gauche ou droite de lexpression daffectation.
A noter : Il existe un autre mode (Buffer) que nous n'utiliserons pas
Septembre 2011
150
Mode de port IN
Signal du port
en mode IN
Entit
Ex. :
C <= A;
Signal interne
Septembre 2011
Entre
151
u1:ex_mode_in
ENTITY ex_mode_in IS
PORT(
a, b: IN STD_LOGIC;
v, y: OUT STD_LOGIC);
END ex_mode_in;
d=a
c
b
ARCHITECTURE a1 OF ex_mode_in IS
SIGNAL c, d : STD_LOGIC;
BEGIN
d <= a;
c <= d AND b;
v <= c;
y <= a AND b;
END a1;
Septembre 2011
Signaux d'entre a et b
peuvent se trouver
seulement droite (ils
reprsentent la source)
152
B <= A;
Le signal est gnr
lintrieur de lentit
C <= B;
Signal interne
153
u1:ex_mode_in
ENTITY ex_mode_in IS
PORT(
a, b: IN STD_LOGIC;
v, y: OUT STD_LOGIC);
END ex_mode_in;
Septembre 2011
d=a
c
b
ARCHITECTURE a1 OF ex_mode_in IS
SIGNAL c, d : STD_LOGIC;
BEGIN
d <= a;
c <= d AND b;
v <= c;
y <= a AND b;
END a1;
Signaux de sortie v et y
peuvent se trouver
seulement gauche (ils
reprsentent la destination)
154
Int B
Sortie
en mode OUT
Signal interne
Septembre 2011
Int <= A;
B
<= Int;
C
<= Int;
155
u1:ex_mode_in
a
d=a
c
ARCHITECTURE a1 OF ex_mode_in IS
SIGNAL c, d : STD_LOGIC;
BEGIN
Signaux internes c et y
d <= a;
peuvent se trouver
c <= d AND b;
gauche ou droite
v <= c;
y <= a AND b;
A noter : Signaux internes ne sont pas ici
END a1;
les
signaux supplmentaires (mais peuvent l'tre)
Septembre 2011
156
Signal du bus
externe
Affectations :
B <= A;
A <= C;
Si I est ferm :
A est gnr
par l'entit
B
Si I est ouvert :
A est gnr
par le bus
Signal lu
l'extrieur
Le signal peut tre gnr
lintrieur ou lextrieur de lentit
157
Signaux (SIGNAL)
Variables (VARIABLE)
Constantes (CONSTANT)
Types de donnes
Entiers (INTEGER)
Bits (BIT)
Boolens (BOOLEAN)
Caractres (CHARACTER)
Rels (REAL)
Physiques (TIME)
numrs (ENUMERATED)
Logique standard (STD_LOGIC)
Bibliothque standard
Bibliothque IEEE
Composition de donnes
Septembre 2011
158
Le VHDL est un langage fortement typ toutes les donnes ont un type
qui doit tre dclar et aucune conversion de type automatique nest
effectue.
Visibilit de donnes
Septembre 2011
159
160
Signal initialis
flag
: std_logic := '0';
Signal non initialis
zero, c : std_logic;
cnt1
: std_logic_vector(0 TO 3) := "1100";
cnt2
: std_logic_vector(15 DOWNTO 0);
Types de signaux
<=
<=
<=
<=
'0';
"1111";
X"C12F";
zero;
A noter :
Dans une architecture ( lextrieur dun processus) toutes les affectations de signaux sont
concurrentes, cest donc une erreur (smantique) daffecter plus dune valeur un signal !
Septembre 2011
161
Les constantes sont utilises pour associer une valeur fixe un signal
Visibilit de constants
Syntaxe de dclaration
162
Entiers (INTEGER)
Valeurs entires de 32 bits max. (-2147483648 +2147483647)
numrs (ENUMERATED)
Une liste explicite de valeurs est donne
Bits (BIT)
Valeurs '0' ou '1, il sagit en fait dun type numr
Boolens (BOOLEAN)
Valeurs logiques 'vrais' (TRUE) ou 'faux' (FALSE), type numr
Caractres (CHARACTER)
Type numr : lettres + chiffres + caractres de contrle (tableau ASCII)
Rels (REAL)
Utilisables pour la simulation, mais pas pour la synthse
Physiques (TIME)
Valeurs physiques utilises pour gnrer un temps dattente
Septembre 2011
163
Sous-types
Types composs
Septembre 2011
164
Signification
Simul.
Synth.
Septembre 2011
165
'X'
Forage fort un niveau inconnu
Ex. : Le signal est gnr par deux gnrateurs qui donnent deux
valeurs diffrentes
'1'
X
'0'
Septembre 2011
166
La logique trois tats : pour viter le conflit, au moins une sortie doit tre
haute impdance Z
Bus
A
'Z'
'1'
'0'
'0'
Septembre 2011
'0'
A
Z
Z
Z
1
0
1
0
0
1
B
Z
1
0
Z
Z
1
0
1
0
Bus
Z
1
0
1
0
1
0
X
X
Commentaire
Sans conflit
Sans conflit
Sans conflit
Sans conflit
Sans conflit
Conflit potentiel
Conflit potentiel
Conflit sur le bus !
Conflit sur le bus !
167
VDD
VDD
'1'
'H'
'W'
'Z'
(non connect)
'0'
Septembre 2011
'L'
168
Tableau de vrit
du collecteur ouvert :
VDD
In Out
0
Z
1
0
X Y A B Bus
0 0 Z Z H
0 1 Z 0
0
1 0 0 Z
0
1 1 0 0
0
Commentaire
Sans conflit
Sans conflit
Sans conflit
Sans conflit
Inconvnient :
Vitesse de commutation rduite cause de la rsistance externe relativement lev !
Septembre 2011
169
Septembre 2011
170
sim
syn
character (num)
bit (num)
boolean (num)
real (flott)
integer (entier)
time (physique)
sim
syn
string
bit_vector
array of integer
sim
syn
sim
syn
std_ulogic
std_ulogic_vector
std_logic (signaux)
171
172
or
nand
nor
xor
not
xnor
Oprateurs relationnels
=
/=
<
<=
>
>=
Septembre 2011
/=
or
not
<
<=
nand
nor
>
xor
>=
xnor
173
Septembre 2011
174
Oprateurs arithmtiques
Oprateurs additifs
+
- addition
- soustraction
&
- concatnation de deux vecteurs et non pas ET logique !
Oprateurs multiplicatifs - viter pour la synthse
*
- multiplication
/
- division
mod - division modulo
rem - reste de la division
175
a <= "0000";
b <= "1111";
c <= a & b;
-- c <= "00001111"
-- d <= "00001111"
e <= '0' & '0' & '0' & '0' & '1' & '1' & '1' & '1';
-- e <= "00001111
f <= "0000" & (OTHERS => '1');
-- f <= "00001111
Septembre 2011
176
Types doprandes
Rsultat
bits ou boolens
bit ou boolen
tous types
boolen
Additifs
+ &
entiers ou rels
tableaux (concatnation)
entier ou rel
tableau
Signe
+ -
entier ou rel
entier ou rel
* /
mod rem
entiers ou rels
entiers
entier ou rel
entier
** abs
not
entiers ou rels
bit ou boolen
entier ou rel
bit ou boolen
Classe
Logiques
Relationnels
Multiplicatifs
Divers
Septembre 2011
177
flot de
donnes
Expressions
concurrentes
structurel
Composants et
interconnexions
Septembre 2011
comportemental
Expressions
squentielles
Registres
Machines dtats
Bancs de test
178
Exemple : XOR3
U1
U2
a
b
ENTITY xor3
PORT(
a
:
b
:
c
:
resul :
);
END xor3;
Septembre 2011
resul
IS
IN STD_LOGIC;
IN STD_LOGIC;
IN STD_LOGIC;
OUT STD_LOGIC
179
U2
u1_out
a
b
resul
Nom darchitecture
Nom dentit
Dclaration
du signal interne
END xor3_flotdon;
Septembre 2011
180
Septembre 2011
181
i1
i2
y
XOR2
u1_out
resul
i1
y
i2
u1
i1
c
XOR3
y
i2
u2
182
Septembre 2011
183
COMPONENT xor2 IS
PORT(
i1 : IN STD_LOGIC;
i2 : IN STD_LOGIC;
y : OUT STD_LOGIC
);
END COMPONENT;
u1: xor2 PORT MAP (i1 => a,
i2 => b,
y => u1_out);
Nom de linstanciation
Septembre 2011
Dclaration du composant
(dans la partie dclarations
de larchitecture)
Instanciation du composant
(dans le corps de larchitecture)
Nom du composant
V. Fischer, F. Bernard: ENSL1
184
Septembre 2011
185
186
Structures concurrentes
Instructions concurrentes
Instanciation de composant
Duplication du matriel
tiquette : FOR variable_de_boucle IN intervalle GENERATE
{instruction(s) concurrente(s)}
END GENERATE tiquette;
187
Entit multiplexeurs
Architecture rtl
a
sel
a
b
b
sel
a
b
sel
sel
188
a
x
y
b
z
sel
Septembre 2011
189
...
signal_cible
valeur2
conditionN-1
valeur1
condition2
condition1
190
sel1
-- affectation conditionnelle
y <= a WHEN sel1 = '1' ELSE
b WHEN sel2 = '1 ELSE
c;
sel2
a
y
La slection du signal a
avec le signal sel1 est
prioritaire
devant b et c !
q = (sel1 AND a)
OR ((NOT sel1) AND sel2 AND b)
OR ((NOT sel1) AND (NOT sel2) AND c)
Septembre 2011
191
signal_cible
MUX
selecteur
Septembre 2011
192
y = (a AND
OR (b
OR (c
OR (d
Septembre 2011
sans priorit !
193
Structure conditionnelle
IF condition THEN
{instruction(s) squentielle(s)}
[ELSIF
{instruction(s) squentielle(s)}]
[ELSE
{Instruction(s) squentielle(s)}]
...
END IF;
Septembre 2011
Parties
optionnelles
194
Septembre 2011
Partie optionnelle,
mais conseille
195
PROCESS
Suite dinstructions VHDL avec un comportement squentiel
Ordre dinstructions lintrieur du PROCESS - important !
Trois phases du PROCESS :
Repos, activation, excution
Syntaxe :
[tiquette:] PROCESS [(liste de sensibilit)]
[partie dclarative]
BEGIN
{instruction(s) squentielle(s)}
END PROCESS [tiquette];
Optionnelles
Optionnelles
Septembre 2011
196
197
Types de PROCESS
PROCESS asynchrone
Sensible tous les signaux qui sont
valus (tests) dans le PROCESS
Exemple
PROCESS(a, b, sel)
d
ena
ENA
PROCESS synchrone
Sensible au signal dhorloge et ventuellement aux autres signaux (asynchrones)
Exemple
PROCESS(clr, clk)
clk
CLRN
clr
La liste de sensibilit ne contient pas lentre D,
seulement lhorloge et les signaux asynchrones
Septembre 2011
198
sel
PROCESS squentiel
Une condition daffectation nest pas
traite
Exemple
IF (ena = 1) THEN q <= d;
d
ena
ENA
199
.
.
.
Signaux
L'ordre nest
pas important
Process 2
Septembre 2011
200
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY simp_prc IS
PORT(a,b : IN std_logic;
x : OUT std_logic);
END simp_prc;
ARCHITECTURE exem OF simp_prc IS
SIGNAL c : STD_LOGIC;
BEGIN
process1: PROCESS(a, b)
BEGIN
c <= a and b;
END PROCESS process1;
process2: PROCESS(c)
BEGIN
x <= c;
END PROCESS process2;
END exem;
201
a
b
c
x
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY simp_prc IS
PORT(a,b : IN std_logic;
x : OUT std_logic);
END simp_prc;
ARCHITECTURE exem OF simp_prc IS
SIGNAL c : STD_LOGIC;
BEGIN
PROCESS(a, b)
BEGIN
c <= a and b;
x <= c;
END PROCESS;
END exem;
Simulation
fonctionnelle du B
a
b
c
x
202
Septembre 2011
203
Instructions
Squentielles
Affectation concurrente
<=
Affectation squentielle
<=
Affectation conditionnelle
<= WHEN ELSE
Structure conditionnelle
IF THEN ELSE END IF
Affectation slective
WITH SELECT
<= WHEN
Structure slective
CASE IS
WHEN =>
END CASE
Structures GENERATE
FOR GENERATE
IF GENERATE
Boucles LOOP
FOR LOOP
WHILE LOOP
Septembre 2011
204