Professional Documents
Culture Documents
Fonctionnelle
Conception de circuits numriques laide du langage VHDL
C. TANOUGAST - LICM
C. Tanougast
Introduction
Objectif
Rappeler les notions essentielles de la conception de circuits
numriques.
Conception des systmes numriques hirarchiques
Mise en uvre des techniques doptimisation darchitecture
Concevoir des circuits laide d'une description en VHDL
Prrequis
Connaissance des technologies de circuits numriques et de la
conception des circuits combinatoires et squentiels
PLAN
Logique Combinatoire
Logique Combinatoire
Reprsentations
Description VHDL
Macro
- fonctions
2n-1
6,2510 = 110,012
Logique combinatoire
Logique Combinatoire
Le codeur : circuit qui transforme une entre (celle qui est active) parmi plusieurs en un
Entres du circuit
- Entres de porte connectes
Sortie du circuit
C0
n sorties
Le Dcodeur: Active une sortie selon la valeur binaire dun code dentre.
Code dentre C1
C0
Cn-1
Dcodeur
S2n-1
S0
Exemple :
Le dcodeur binaire : suivant la valeur
binaire dentre la sortie de mme valeur
est active (mis 1) les autres restent
dsactives.
N1
S1
ET1
OU1
OU1
S3
S2
ET2
S3
N2
S4
10
Logique Combinatoire
C. TANOUGAST
Exemple :
Le transcodeur binaire 7 segments
(dcodeur binaire 7 segments)
(Cf Projet !)
C0
Cn
Transcodeur
Cx
C0
x sorties
Code de sortie C2
Code gnr
n entres
A
B
C
E2 E1 E0
Cn-1
Circuit
Combinatoire
n entres
Codeur
a
b
c
d
Entres codes
Exemple :
Encodeur dcimal vers le code binaire
pure : Transforme une entre parmi 10
(chacune reprsentant lun des 10 chiffres
dcimales) en un code binaire sur 4 bits
(nombre binaire correspondant au chiffre
dcimal)
Sorties
Sp
C. TANOUGAST
S0
S1
S2
Circuit
Combinatoire
E2
XOR
C. TANOUGAST
E0
E1
E2
entres
1
=1
Seules les valeurs des entres interviennent sur les valeurs des sorties (pas de mmoire du
passe logique squentielle)
n-1
NOT
En
2n
Entres
complment 2 (complment + 1)
binaire dcal codage par excdent pour un nombre N sur n bits
code dfini.
OR
Logique Combinatoire
Entiers
Nc = N10 +
&
Nombres et codes
2n-1
AND
3. Circuit de comparaison
S1 (= 1 si A < B)
An A0
Comparateur
S2 (=1 si A = B)
Bn B0
2n sorties
S3 (= 1 si A > B)
Sorties du dcodeur
11
12
Logique Combinatoire
Logique Combinatoire
C. TANOUGAST
- Circuit permettant daiguiller une entres parmi plusieurs vers une sortie :
- Permet de slection une entre (un bit ou plusieurs) parmi plusieurs partir dune ou
plusieurs entres de slection
-frquemment utilis dans les applications de transmission de donnes (permet un transfert
conditionnel des donnes)
- Porte logique disposant de trois tats possibles en sorties en fonction dune entre de
slection :
0 ou 1 et Z (Haut impdance)
- Z : Haut impdance = circuit ouvert. La sortie est dconnecte et le circuit na aucune
signification logique
An A0
Bn B0
Sortie
00..00
00..01
00..10
An A0
Bn B0
Cn C0
Sortie de
slection
MUX
Xn X0
11 ..11
Xn X0
C. TANOUGAST
S: Entre de slection
S : Entre de slection
Entre de slection
0
1
Sortie X
0
1
E
Z (Hi)
Z (Hi)
E
Modles de description
Fonctions combinatoires
c
0
1
0
1
0
1
0
1
F
1
1
0
1
1
1
1
1
14
Table de transformation
a
0
0
0
0
1
1
1
1
ROM
1
1
0
1
1
1
1
1
0
1
2
3
4
5
6
7
a
Equations logiques
Tables de vrit
Schmas logiques (logigrammes)
Tableaux de Karnaugh
description HDL (Verilog, VHDL)
Limitations
Par le nombre de variables
15
16
C. TANOUGAST
Systme dont les sorties dpendent la fois des entres et de ltat du systme. Un
systme squentiel volue en fonction des squences reues son entre, de son tat
prsent et initial.
Pour une mme combinaison dentres, il est donc possible davoir plusieurs tats du
systmes et de sorties diffrentes = effet mmoire (Par opposition un systme
combinatoire o pour une mme combinaison dentres nous avons toujours les mmes valeurs
de sortie !)
C. TANOUGAST
Entres
Sorties
Circuit
Squentiel
17
18
C. TANOUGAST
Description :
- Fonction de mmorisation o lentre est copie la sortie tant que le signal dhorloge est
actif. Lhorloge est active sur un niveau haut (1) ou bas (0).
D Bistable
Q
D
C. TANOUGAST
Qt+1
0
0
1
1
0
1
0
1
Qt
0
Qt
1
Qt
Qt+1
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
1
0
0
0
1
1
1
D
H
Q
temps
19
20
C. TANOUGAST
Description :
- Fonction de mmorisation o lentre est copie la sortie si activation sur front dun
signal dhorloge. Lhorloge est active sur front montant ou descendant.
Table de vrit :
D Bascule
Q
D
D Bascule
Q
D
C. TANOUGAST
Q t+1
Qt
Qt
ou
ou
Qt
Qt
D
H
Qt : valeur de sortie avant activation
Q
temps
22
C. TANOUGAST
4. Les compteurs
C. TANOUGAST
4. Les compteurs
Description :
- Systme squentiel ralisant un comptage binaire. Lincrmentation seffectue selon un
signal dhorloge. Lhorloge est active sur front montant ou descendant.
Q0 0
Q1 0
Sorties 4 bits
Q2 0
0 0
Q3
10
11
12
13
14 15
Q0
Compteur Q1
H
Q2
Q3
Qn
rco
23
rco
temps
24
Modles de description
Fonctions squentielles
Machine de Moore
Horloge
Entres
E(t)
Circuit d'excitation
Calcul combinatoire
des tats FUTURS
S(t) = F(X(t))
X(t + 1) = G[E(t), X(t)]
26
Machine de Mealy
Horloge
Circuit S(t)
de sortie
X(t)
D Q
!e
A
00
s0
y
1
du systme : G
!y
D
! e 11
C
10
!e
quations de G et F
s2
!y
1
!y
0
y
s3
y
1
Exemple
Compteur 2 bits avec Enable
X(t+1)
S
Etats
de
Conditions Etats initiaux tats futurs
sortie
En dduire les quations logiques d'excitation (G) et de
sortie (F)
29
s1
28
X(t)
B
01 !e
27
Circuit S(t)
de sortie
D Q
25
Entres
X(t)
X(t+1)
du systme : G
E(t)
!e
A
00
!e
D
11
B
01
e
!e
C
10
!e
30
Exemple du compteur
Registre : 2bits Q1 ; Q0
Table de transition
Equations
Q1+ = Q1.(!E+!Q0)+!Q1.Q0.E
Q0+ = E.!Q0+Q0.!E
Q0+ = D0
Q1+ = D1
E Q1 Q0 Q1+ Q0+
0 0
0
0
0
0 0
1
0
1
0 1
0
1
0
0 1
1
1
1
1 0
0
0
1
1 0
1
1
0
1 1
0
1
1
1 1
1
0
0
0
s0
1
!y
0
s1
s2
!y
1
!y
0
y
31
32
Principe
Activations
FSM1
Remdes
Utilisation de langages HDL pour la synthse
Utilisation de fonctions gnriques (compteurs,
registres)
Dcomposition architecturale
Utiliser des graphes de tches
Retours
FSM2
sorties de FSM2
conditions de transition sur FSM1
33
34
Machines hirarchiques
A1
S
0
0
1
0
1
1
1
1
s3
Y X(t) X(t+1)
0 S0 S0
0 S1 S1
0 S2 S2
0 S3 S3
1 S0 S2
1 S1 S0
1 S2 S3
1 S3 S2
Problmes de synchronisation
!E
B1
E
S
A2
B2
Activations
c2/!f
Ai
FSM1
Compteur +
dcodeur 5
Retours
Bn
An
E
!f
cn/f
35
36
Synchronisation et hirarchie
!E
5
tmp
B
SE
tmp
!S !E
Synchronisation et hirarchie
La machine de droite impose une temporisation ltat B de la
machine principale.
1
Compteur
dcodeur 5
B
SE
2
4
3
!tmp
Il apparat lanalyse des chronogrammes une valeur errone de la
temporisation.
En effet au lieu dune temporisation de 5 priodes B est maintenu
pendant 6 priodes
E
FSM2
H
A
0
5
tmp
tmp
!tmp
FSM1
!E
!S !E
tmp
37
38
Conception architecturale
Donnes en entre
consignes
X(n)
Unit
excutive
Unit de
contrle
X(n
- 1)
X(n
-
2)
X(n
-
3)
acquiescement
Y(n)
Donnes en sortie
39
40
1 3
MUX
coef
sel
Contrle
registre
x(n)
registre
x(n-1)
registre
x(n-2)
registre
x(n-3)
ech
M
U
X
ini
Mult
Ressources ncessaires
MUX
ini
Multiplieur : ~ 60 CLB
Additionneur : ~ 8 CLB
Registres : ~ 8 CLB
Multiplexeur ax16 vers 1x16 : ~ 2a CLB
Architecture parallle
3 mult + 5 reg + 3 add
3x60 + 5x8 + 3x8 = 244 CLB
Architecture squentielle
E
fin
Add
registre
Solution squentielle
Acc
y(n)
41
42
FPGA
Pads d'entre-sortie
CLB
CLB
Slew
Rate
Control
S witch
Ma trix
Blocs
logiques
CLB
Output
Buffer
Pad
Input
Buffer
C1 C2 C3 C4
horloge
globale
Delay
H1 DIN S/R EC
S/R
Control
G4
G3
G2
G1
CPLD D'ALTERA
Vcc
CLB
rseau
d'interconnexion local
Pistes
d'interconnexion
rapides
Passive
Pull-Up,
Pull-Down
DIN
G
Func.
Gen.
H'
H
Func.
Gen.
F
Func.
Gen.
EC
RD
G'
H'
S/R
Control
DIN
SD
F'
G'
H'
1
H'
G'
F4
F3
F2
F1
SD
F'
F'
EC
RD
Configurable
Logic Blocks (CLBs)
43
44
Comparatif
Compromis surface/performance
CPLD
FPGA
Cellule logique
Mmoire enfouie
Contrainte de cot
Surface
de Si
Espace de
conception
Contrainte
De temps
Macrocell
Point optimal
A rchite cture
D e nsit
P e rfo rma nc es
Interc o nne xio ns
C P LD
D e typ e P A L
5 0 0 0 0 p o rtes ma x
d la is d te rmin s f > 2 0 0 M H z
to tale (cro ssb a r)
FPGA
d e typ e r sea u d e p o rte s e t re gistre s
jusq u' 2 millio ns d e p o rte s
d la is va ria b le s f 1 0 0 M H z
se gm ente s
45
Temps de
calcul
46
Objectif
A partir de la solution fonctionnelle dcrite
sous forme comportementale
Dduire larchitecture matrielle sous la forme
dun ensemble de constituants interconnects
Cette architecture doit satisfaire la solution
fonctionnelle
2 catgories
Circuits orients contrle
Circuits orients traitement
47
48
Exemple de DFG
A
B C
G=(V,E) o :
- V = {v1, , vn} est un ensemble fini de sommets
- E VxV est une relation asymtrique de
49
50
Oprateurs
Architectures cibles
A
GFD :
or
and
B
C
>
CDFG : Control-data-flow-graph
F
G
51
52
Architecture dexcution
squentielle
A
Mux
Paralllisme de donnes
A
BCDEFG
!E
Mux
0
3
UC
6
4
5
Cot ?
53
Dfinir larchitecture de
calcul
54
Excution pipeline
Op1
Op2
Excution squentielle
Une seule unit de calcul
do
Op1
d1
do
Op2
Op3
Excution pipeline
Trois units de calcul
Op2
d1
Op3
Op1 do
d1
do
Excution pipeline
d1
d2
do
d1 d2
do
Op3
d1
Temps de latence ?
Frquence dhorloge ?
Dbit de donnes ?
Cot ?
Architecture ?
d2
56
VHDL
Description VHDL
Trame principale
Nom du
rpertoire dans
lequel se
trouve
std_logic_1164
Utilis pour :
dcrire le comportement de fonctions
synthtiser un circuit
modliser un circuit (modle logique et technologique)
simuler une description ( description des signaux
d'entre)
Entit et
Architecture sont
les parties
principales d'une
description
57
-- Library Clause
LIBRARY ieee;
-- Use Clause
USE ieee.std_logic_1164.all;
-- Package Declaration (optional)
-- Package Body (optional)
-- Entity Declaration
-- Architecture Body
Description VHDL
58
Entit
Types
: IN STD_LOGIC;
_input_vector_name
: IN STD_LOGIC_VECTOR(high downto low );
_bidir_name, __bidir_name
: IN OUT STD_LOGIC;
_output_name, __output_name : OUT STD_LOGIC );
END __entity_name ;
Exemple :
55
entity XOU is
port (E1, E2 : in bit;
S : out bit);
end XOU;
E1
E2
XOU
Dfinition de l'ensemble
Deux valeurs possibles 0 ou 1
Entiers (nombre positif ou ngatif sur 32 bits)
Rels +ou- nombre.nombre[E +ou- nombre]
Deux valeurs possibles True ou False
Caractres a, b, c ..., 1, 2 ...
Nombre rel de temps fs, ps, ns, us, ms, sec, min, hr
59
Description VHDL
60
10
Vecteurs
Vecteurs
Assigner une valeur un des lments d'un bus: B(3) <= '1
Assigner une valeur un des lments d'un bus: B(3) <= '1
S <= "11001010"; assigne 11001010 aux lments S(7), S(6), ..., S(0).
S <= (7 => '1', 6 => '1', 5 downto 4 => '0', 3 => '1', 2 => '0', 1 => '1', 0
=> '0') ; assigne la valeur 11001010 aux lments S(7), S(6), ..., S(0).
S <= (7 => '1', others => 0'); assigne la valeur 10000000 au vecteur S.
61
Description VHDL
62
Description VHDL
Description VHDL
Description VHDL
63
64
Type Record
numration
Tableau
dfinition de tableau de valeurs de type quelconque.
Exemple :
TYPE Tableau_4x8xbit IS ARRAY (3 downto 0, 7 downto 0) OF bit ;
ou bien encore
TYPE Tableau_8xbit IS ARRAY (7 downto 0) OF bit ;
TYPE Tableau_4x8xbit IS ARRAY (3 downto 0) OF Tableau_8xbit ;
Exemple de type :
TYPE Bus_micro IS RECORD
Nbr_bit_adresse : integer ;
Nbr_bit_donnee : integer ;
Vitesse : time ;
END RECORD ;
Exemple d assignation sur ce type :
Bus_micro.Nbr_bit_adresse <= 24 ;
Bus_micro.Nbr_bit_donnee <= 16 ;
Bus_micro.vitesse <= 10us ;
Description VHDL
65
Description VHDL
66
11
Architecture
Dfinitions
Signal
Le signal est vu dans toute l architecture. Il est synthtis
sous la forme d un quipotentiel. L assignation d une valeur
cre des connexions.
Concurrence
Lorsque l'on tudie une structure logique, il apparat
lvidence que les signaux qui la constituent voluent de
faon indpendante et parallle. Exemple
Assignation simple
-- Generate Statement
Description VHDL
Description VHDL
67
68
Assignation conditionnelle
Exercice
_expression ;
ENTITY fonc_de_base IS
PORT (a, b : IN BIT;
et, ou, non : OUT BIT);
END fonc_de_base ;
Exemple :
a
&
ARCHITECTURE ex OF fonc_de_base IS
BEGIN
et <= a AND b;
ou <= a OR b;
non <= notb ;
END ex;
ENTITY ou IS
PORT (a, b : IN bit;
c
: OUT bit);
END ou ;
et
ou
Description VHDL
Description VHDL
70
Assignation conditionnelle
Description structurelle
A
E1 U1
XOU
Som
E2
E1
U2
ET
Ret
E2
Dclaration du
composant XOU
mux
Dclaration du
composant ET.
Spcification de l'entit
et de l'architecture
utiliser pour les
composants ET et XOU.
Description VHDL
71
ARCHITECTURE conditionnelle OF ou IS
BEGIN
c <= '0' WHEN (a = '0' AND b = '0' ) ELSE
'1';
END conditionnelle;
non
69
Cblage (instanciation)
des composants XOU et
ET appels U1 et U2.
Entit add is
port (A, B : in bit; Som, Ret : out bit);
end add;
architecture Arch_structurelle of add is
component XOU
port (E1, E2 : in bit; S : out bit);
end component;
component ET
port (E1, E2 : in bit; S : out bit);
end component;
for U1 : XOU use entity work.XOU(Ar_XOU);
for U2 : ET use entity work.ET(Ar_ET);
begin
U1 : XOU port map (A, B, Som);
U2 : ET port map (A, B, Ret);
end arch_structurelle;
Description VHDL
72
12
Description comportementale
Le process
Le processus est une instruction concurrente dfinie l aide
d instructions squentielles architecture Arch_comport of add is
Il est activ si un des
signaux de la liste de
sensibilit change d tat
Description du
comportement de la fonction
L'examen squentiel des
instructions a pour
consquence de rendre le
dernier if prioritaire
begin
process (A, B)
begin
if (A = '0' and B = '0') then
Som <= '0'; Ret <= '0'; end if;
if (A = '0' and B = '1') then
Som <= '1'; Ret <= '0'; end if;
if (A = '1' and B = '0') then
Som <= '1'; Ret <= '0'; end if;
if (A = '1' and B = '1') then
Som <= '1'; Ret <= '1';
end if;
end process;
end Arch_comport;
Description comportementale
Interprtation de If, then, elsif,
IF condition1 THEN
instructions squentielles;
ELSIF condition2 THEN
instructions squentielles;
ELSIF condition3 THEN
instructions squentielles;
ELSIF
ELSE
instructions squentielles;
END IF;
ELSIF
Description VHDL
73
74
Description comportementale
Instruction CASE s'utilise dans un process
CASE signal IS
WHEN valeur1 => instructions squentielles ;
WHEN valeur2 => instructions squentielles ;
WHEN valeur3 => instructions squentielles ;
WHEN OTHERS => instructions squentielles ;
END CASE;
Description comportementale
LIBRARY ieee; USE ieee.std_logic_1164.all;
ENTITY combi4 IS
PORT (c :IN INTEGER RANGE 0 TO 3;
e : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S : OUT STD_LOGIC );
END combi4;
75
e(0)
e(1) mux
e(2)
e(3)
76
Description comportementale
Description comportementale
Description VHDL
Description VHDL
78
13
Description comportementale
Exemple d'application de l'instruction for loop
LIBRARY ieee;USE ieee.std_logic_1164.all;
ENTITY adder4 IS
PORT (a,b : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
cin : IN STD_LOGIC; cout : OUT STD_LOGIC;
sum : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );
END adder4 ;
Description comportementale
Signaux, variables et constantes
Ce sont les trois objets manipuls dans une description
VHDL. Les trois objets sont ncessairement typs.
Le signal est connu dans toute l'architecture o il est dclar.
Les ports sont des signaux. Dans un process la dernire
assignation dtermine la valeur attribue au signal.
(assignation : s <= a) (initialisation par s := '0')
La variable ne peut tre utilis que dans un process o elle est
locale. Elle est mise jour instantanment.
(assignation : i := '1')
La constante peut tre utilise partout mais aucune assignation
n'est possible. Seule l'initialisation est prvue exemple :
CONSTANT PI : real := 3.1414
Description VHDL
80
Description comportementale
Description comportementale
ENTITY mux_faux IS
PORT (a, b :IN STD_LOGIC;
e : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S : OUT STD_LOGIC);
END mux_faux;
ARCHITECTURE archi OF mux_faux IS
signal muxval : integer;
BEGIN
PROCESS(a, b, e)
BEGIN
muxval <= 0;
if (a= '1') then
muxval <= muxval + 1; end if;
if (b= '1') then
muxval <= muxval + 2; end if;
CASE muxval IS
WHEN 0 => s<= e(0);
WHEN 1 => s<= e(1);
WHEN 2 => s<= e(2);
WHEN 3 => s<= e(3);
WHEN OTHERS => null ;
END CASE;
END PROCESS;
END archi;
Description VHDL
81
Description VHDL
82
Description comportementale
PROCESS(a, b, e)
variable muxval : integer;
BEGIN
muxval := 0;
Correction :
if (a= '1') then
La variable tant
muxval := muxval + 1; end if ;
mise jour
if (b= '1') then
instantanment,
muxval := muxval + 2; end if ;
la description est
CASE muxval IS
WHEN 0 =>
s<= e(0);
correctement
WHEN 1 =>
s<= e(1);
interprte
WHEN 2 =>
s<= e(2);
WHEN 3 =>
s<= e(3);
WHEN others => null;
END CASE;
END PROCESS; END archi;
Description VHDL
83
84
14
PROCESS(sel, en)
BEGIN
IF (en='1') THEN
CASE sel IS
WHEN "000" => Y(0)<= '1';
WHEN "001" => Y(1)<= '1';
WHEN "010" => Y(2)<= '1' ;
WHEN "011" => Y(3)<= '1' ;
WHEN "100" => Y(4)<= '1' ;
WHEN "101" => Y(5)<= '1' ;
WHEN "110" => Y(6)<= '1' ;
WHEN "111" => Y(7)<= '1' ;
END CASE;
END IF;
END PROCESS;
END numero1;
85
86
Systmes squentiels
Principes fondamentaux
Bascule D
Process (clk)
Begin
IF clk'event AND clk='1' THEN
Q <= D;
END IF;
END Process;
L'erreur frquente
dans les processus est
d'oublier d'attribuer
une valeur par dfaut.
Dans l'exemple lorsque
en=0, alors Y n'est pas
attribue.
Le synthtiseur
affecte dans ce cas un
latch chaque sortie Y
Attribut 'event
vrai lorsque le signal
associ subit une
variation d'tat
Process (clk)
Begin
IF clk'event AND clk='1' THEN
IF reset = '0' then
Q <= '0';
ELSE
Q <= D;
END IF;
END IF;
END Process;
Systmes Squentiels
Systmes Squentiels
87
88
Process (clk)
BEGIN
IF EN = '0' THEN
NULL ; -- Q <= Q ;
ELSIF clk'event AND clk='1' THEN
Q <= D;
END IF;
END Process;
Question : La commande Enable est-elle synchrone ou
asynchrone ?
Systmes Squentiels
89
Systmes Squentiels
90
15
Compteurs
Compteurs
Systmes Squentiels
Systmes Squentiels
91
92
Compteurs
ENTITY cpt3 IS
Machine de Moore
Horloge
PROCESS(razn,h,prepn)
BEGIN
IF razn = '0' THEN test<= 0;
ELSIF (h'EVENT AND h ='1') THEN
IF prepn='0' THEN test<=e;
ELSE test<=test+1; END IF;
ELSE test <= test; END IF;
END PROCESS;
S <= test;
Solution au
problme de port :
Utiliser un signal ou
une variable pour
effectuer les
oprations puis
mettre la sortie jour
la fin.
END archi;
Entres
E(t)
Systmes Squentiels
94
Type numr
Machine de Mealy
numration
E(t)
Entres
S(t) = F(X(t))
X(t + 1) = G[E(t), X(t)]
Systmes Squentiels
Circuit S(t)
de sortie
du systme : G
93
Horloge
X(t)
D Q
Circuit S(t)
de sortie
X(t)
D Q
du systme : G
Systmes Squentiels
95
96
16
Description VHDL
Systmes Squentiels
etat
Ps
Systmes Squentiels
97
98
!E
repos
!M, !P
!F
cyc_2
M , !P
lavage
M, P E
E
F
cyc_1
M, !P
!E
!F
Systmes Squentiels
99
Systmes Squentiels
100
Systmes Squentiels
P3 : process(F, E, etat)
Circuit
begin
d'excitation
case etat is
when repos => if E='1' then
etat_f <= lavage ;
else etat_f <= etat; end if;
when lavage => if E = '0' then
etat_f <= cyc_1 ;
else etat_f <= etat; end if;
when cyc_1 => if E ='1' then
etat_f <= lavage ;
elsif F= '1' then etat_f <= cyc_2 ;
else etat_f <= etat; end if;
when cyc_2 => if E = '1' then
etat_f <= lavage ;
elsif F= '1' then etat_f <= repos ;
else etat_f <= etat; end if;
end process P3;
Systmes Squentiels
102
17
Machine d'tat
Machine d'tat
Simplification de l'criture
Systmes Squentiels
Systmes Squentiels
103
104
Machine d'tat
Instructions avances
P3 : process(F, E, etat)
begin
case etat is
when repos => M <= '0'; P <= '0'
if E='1' then etat_f <= lavage ;
else etat_f <= etat; end if;
when lavage => M <= '1'; P <= '1';
if E = '0' then etat_f <= cyc_1 ;
else etat_f <= etat; end if;
when cyc_1 => M <= '1'; P <= '0';
if E ='1' then etat_f <= lavage ;
elsif F= '1' then etat_f <= cyc_2 ;
else etat_f <= etat; end if;
when cyc_2 => M <= '1'; P <= '0';
if E = '1' then etat_f <= lavage ;
elsif F= '1' then etat_f <= repos ;
else etat_f <= etat; end if;
end process P3;
Generate
Etats de sorties
Etat futur
__generate_label :
FOR __index_variable IN _plage GENERATE
instruction;
_instruction;
END GENERATE;
Description VHDL
Systmes Squentiels
105
106
Generate : exemple
Begin
(d, clk : In std_logic;
q : out std_logic);
z(0) <= a ;
instance : For i In 0 to 3 generate
Dx : D_basc port MAP( z(i), clk, z(i+1));
End Generate;
b <= z(4) ;
End gen_decal;
Use work.std_logic_1164.all;
Entity decalage is
port (a, clk : in std_logic;
b : out std_logic);
end decalage;
Architecture gen_decal of decalage is
component D_basc
port (d, clk : In std_logic;
q : out std_logic);
end component;
signal z : std_logic_vector(0 to 4)
D_basc(0)
Z(0)
D_basc(1)
Z(1)
D_basc(2)
Z(2)
Z(4)
D Q
D Q
D Q
D Q
clk
clk
clk
clk
clk
Description VHDL
107
D_basc(3)
Z(3)
Description VHDL
108
18
Instructions avances
Generic : exemple
Generic
Il est possible de rajouter une dclaration de GENERIC
correspondant des paramtres. Ces paramtres pourront,
par la suite, tre modifis lors de l'utilisation de la
description en temps que composant.
Generic est utilis pour deux applications principales :
dfinition de paramtres de dlai
Paramtrage de la taille des bus
GENERIC(_parameter_name : string := __default_value;
_parameter_name : integer:= __default_value);
Entity OU is
GENERIC (TP : time := 20 ns);
port (E1, E2 : in bit; S1 : out bit);
end OU;
architecture ET of ET is
begin
S1 <= E1 and E2 after TP;
end ET;
architecture OU of OU is
begin
S1 <= E1 or E2 after TP;
end OU;
Description VHDL
Description VHDL
109
110
Packages
begin
U1 : OU generic map ( TP => 5 ns )
port map (A, B, X);
U2 : ET generic map ( TP => 15 ns )
port map (A, B, Y);
end ET_OU;
Description VHDL
Description VHDL
111
112
Exemple d application du
paquetage
Dclaration de la
constante de type time
Initialisation de la
constante 27ns
Use work.exemple.all
entity A is
.......;
end A;
architecture arch_X of A is
begin
......;
S <= E after delai ;
......;
end arch_X;
Package exemple is
constant delai : time;
end exemple ;
package body ex_bod of exemple is
constant delai : time := 27ns;
end ex_bod;
Utilisation
de la mme
constante
de temps
dans deux
entits
A et B
Description VHDL
113
Use work.exemple.all
entity B is
.......;
end B;
architecture arch_X of B is
begin
......;
Sb <= Ex after delai ;
......;
end arch_X;
Conception avance
Fonction
Le langage VHDL permet l'utilisation et la cration de
fonctions ou de procdures que l'on peut appeler partir
d'une architecture. A la diffrence de la procdure la
fonction renvoie une valeur unique.
FUNCTION nom de la fonction ( liste des paramtres de la
fonction avec leur type ) RETURN type du paramtre de retour IS
zone de dclaration des variables ;
BEGIN
...........;
instructions squentielles ;
...........;
19
Conception avance
Conception avance
Exemple 2 : fonction au sein d'un package
Exemple 1 :
FUNCTION bool_vers_bit (X : boolean) RETURN bit IS
BEGIN
if X then
RETURN '1';
else
RETURN '0';
end if;
END;
Description VHDL
Package outil is
function xor3 (a,b,c : bit) return bit ;
end outil;
package body outil is
function xor3 (a,b,c : bit) return bit is
begin
return (a xor b xor c) ;
end xor3 ; end outil;
library work ; use work.outil.all ;
entity exemple2 is port (a,b,c : in bit; sum : out bit);
end exemple2
architecture RTL of exemple2 is
begin
sum <= xor3(a, b, c) ;
Description VHDL
end RTL;
115
116
Conception avance
Macrofonctions combinatoires
Procdure
Dcodeur binaire
Macrofonctions combinatoires
117
118
Macrofonctions
Macrofonctions
Exercice
Raliser un dcodeur BCD-7segments
library IEEE;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_1164.ALL;
ENTITY dec7seg IS
Macrofonctions combinatoires
119
20
Encodeur
Encodeur
Macrofonctions combinatoires
121
Macrofonctions combinatoires
122
Encodeur
Multiplexeur
Macrofonctions combinatoires
Macrofonctions combinatoires
123
124
Multiplexeur
Macrofonction de la bibliothque
Dclaration des
bibliothques
ENTITY cpt2 IS
PORT(
e : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
h, prepn, razn : IN STD_LOGIC;
s : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END cpt2;
Macrofonctions combinatoires
125
Systmes Squentiels
126
21
Macrofonction de la bibliothque
Conversion de type
Ncessit
Instanciation de
la macrofonction
BEGIN
mon_compteur : lpm_counter
GENERIC MAP ( LPM_WIDTH => 4,
LPM_DIRECTION => "UP")
Dclaration
des
paramtres
Connexion des
ports
ENTITY adder IS
END adder;
ARCHITECTURE maxpld OF adder IS
BEGIN
Description VHDL
END maxpld;
127
128
Bibliothques standard
Oprateurs
flottants
& : concatnation ex : a et b sur 2bits
Description VHDL
129
Description VHDL
130
22