Académique Documents
Professionnel Documents
Culture Documents
ENSL1 :
Electronique numérique et synthèse logique
Logique combinatoire
1
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
e0
– Soit le circuit :
e1 s0
… …
sm-1
en-1
2
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Circuits combinatoires
– Décodeurs
• Binaire naturel binaire réfléchi
• Décodeur 24, 38, …
• BCD 7 segments, …
– Encodeurs
• Encodeur 42, 83, …
• Encodeur de priorité
– Multiplexeur
• Multiplexeur 21, 41, …
– Démultiplexeur
• Démultiplexeur 12, 14, …
– Additionneur /Soustracteur
– Comparateur
– Unité Arithmétique et logique (A.L.U)
3
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
4
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
E2 S2
E1 S1
E0 S0
5
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
6
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Décodeur BN BR
(Recherche du schéma) S2 = E2
S1 = E2 E1
– 5/ Etablir le schéma S0 = E1 E0
E2 E2 INPUT
VCC
XOR
OUTPUT S2
S2
E1 E1 INPUT
VCC
OUTPUT S1
S1
inst
XOR
E0 E0 INPUT
VCC
OUTPUT S0 S0
inst2
7
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
8
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
E2 S2
E1 S1
E0 S0
9
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
E2 S2
E1 S1
E0 S0
entity bn_br is
port ( E2,E1,E0 : in std_logic;
S2,S1,S0 : out std_logic
);
end bn_br;
10
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
11
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
– 5/ Déclaration d’architecture
S2 <= E2;
S1 <= E2 xor E1;
S0 <= E1 xor E0;
end bn_br_arch;
bn_br_arch
12
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
entity bn_br is
port ( E2,E1,E0 : in std_logic;
S2,S1,S0 : out std_logic );
end bn_br;
13
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
end bn_br_arch2;
14
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
end bn_br_arch2;
15
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Décodeur 2
4, 3
8, … (Recherche du schéma)
16
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Décodeur 2
4 (Recherche du schéma)
0
1
S3
0
1 E1 S2 1
0
0
1 E0 S1 1
0
S0
1
0
17
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Décodeur 2
4 (Recherche du schéma)
18
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Décodeur 2
4 (Recherche du schéma)
NOT AND2
E1 E1 INPUT
VCC
inst3
OUTPUT S0 S0
NOT inst4
E0 E0 INPUT
VCC
inst
AND2
OUTPUT S1
S1
inst5
AND2
OUTPUT S2
S2
inst6
AND2
OUTPUT S3
S3
inst7
19
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Décodeur 2
4 (Description VHDL)
– 6/ Description complète du décodeur
library ieee;
use ieee.std_logic_1164.all;
entity dec2_4 is
port ( E1,E0 : in std_logic;
S3,S2,S1,S0 : out std_logic );
end dec2_4;
20
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Décodeur BCD
7 segments (Description VHDL)
21
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Décodeur BCD
7 segments (Description VHDL)
– 3/ Table de vérité.
a b c d e f g
E3 E2 E1 E0 S0 S1 S2 S3 S4 S5 S6
0 0 0 0 1 1 1 1 1 1 0
0 0 0 1 0 1 1 0 0 0 0
0 0 1 0 1 1 0 1 1 0 1
0 0 1 1 1 1 1 1 0 0 1
0 1 0 0 0 1 1 0 0 1 1
0 1 0 1 1 0 1 1 0 1 1
0 1 1 0 1 0 1 1 1 1 1
0 1 1 1 1 1 1 0 0 0 0
1 0 0 0 1 1 1 1 1 1 1
1 0 0 1 1 1 1 1 0 1 1
1 0 1 0 1 1 1 0 1 1 1
1 0 1 1 0 0 1 1 1 1 1
1 1 0 0 1 0 0 1 1 1 0
1 1 0 1 0 1 1 1 1 0 1
1 1 1 0 1 0 0 1 1 1 1
1 1 1 1 1 0 0 0 1 1 1
22
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
23
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Décodeur BCD
7 segments (Description VHDL)
– Description VHDL
• Déclaration d’entité
library ieee;
use ieee.std_logic_1164.all;
entity bcd_7seg is
port ( E : in std_logic_vector (3 downto 0) ;
S : out std_logic_vector (0 to 6)
);
end bcd_7seg ;
24
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Décodeur BCD
7 segments (Description VHDL)
a b c d e f g
architecture bcd_7seg_arch of bcd_7seg is
E3 E2 E1 E0 S0 S1 S2 S3 S4 S5 S6 begin
0 0 0 0 1 1 1 1 1 1 0 S <= "1111110" when E="0000" else
0 0 0 1 0 1 1 0 0 0 0 "0110000" when E="0001" else
0 0 1 0 1 1 0 1 1 0 1 "1101101" when E="0010" else
0 0 1 1 1 1 1 1 0 0 1 "1111001" when E="0011" else
0 1 0 0 0 1 1 0 0 1 1 "0110011" when E="0100" else
0 1 0 1 1 0 1 1 0 1 1 "1011011" when E="0101" else
0 1 1 0 1 0 1 1 1 1 1 "1011111" when E="0110" else
0 1 1 1 1 1 1 0 0 0 0 "1110000" when E="0111" else
1 0 0 0 1 1 1 1 1 1 1 "1111111" when E="1000" else
1 0 0 1 1 1 1 1 0 1 1 "1111011" when E="1001" else
1 0 1 0 1 1 1 0 1 1 1 "1110111" when E="1010" else
1 0 1 1 0 0 1 1 1 1 1 "0011111" when E="1011" else
1 1 0 0 1 0 0 1 1 1 0 "1001110" when E="1100" else
1 1 0 1 0 1 1 1 1 0 1 "0111101" when E="1101" else
1 1 1 0 1 0 0 1 1 1 1
"1001110" when E="1110" else
1 1 1 1 1 0 0 0 1 1 1
"1000111" ;
end bcd_7seg_arch;
25
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2009/2010
ENSL1
• Décodeur BCD
7 segments (Description VHDL)
• Multiplexeurs 2
1, 4
1 (Recherche du schéma)
E0
E1
E2 S
E3
sel1 sel0
27
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Multiplexeurs 4
1 (Recherche du schéma)
E0
E1
E2 S
E3
sel1 sel0
– Table de vérité
Sel1 Sel0 S
0 0 E0
0 1 E1
1 0 E2
1 1 E3
– Equation
28
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Multiplexeurs 4
1 (Recherche du schéma)
– Schéma
E3 E3 INPUT
VCC
AND3
inst
AND3
E2 E2 INPUT
VCC OR4
inst7
OUTPUT S S
E1
AND3
E1 INPUT
VCC
inst11
inst8
AND3
E0 E0 INPUT
VCC
inst9
inst12
NOT
Sel0 Sel0 INPUT
VCC
inst13
29
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
– Multiplexeurs 4
1
• ( 1ère Description VHDL utilisant une affectation simple)
library ieee;
use ieee.std_logic_1164.all;
entity mux4_1 is
port ( E3,E2,E1,E0,Sel1,Sel0 : in std_logic;
S: out std_logic
);
end mux4_1;
S <= ((not Sel1) and (not Sel0) and E0) or ((not Sel1) and Sel0 and E1) or
(Sel1 and (not Sel0) and E2) or (Sel1 and Sel0 and E3) ;
end mux4_1_arch1;
30
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
– Multiplexeurs 4
1 (2ème Description VHDL utilisant une affectation
conditionnelle)
• toutes les entrées sont déclarées sous forme de simple bit
library ieee;
use ieee.std_logic_1164.all; Symbole :
mux4_1
entity mux4_1 is
E3 S
port ( E3,E2,E1,E0,Sel1,Sel0 : in std_logic; E2
S: out std_logic ); E1
end mux4_1; E0
Sel1
Sel0
architecture mux4_1_arch2 of mux4_1 is
signal sel : std_logic_vector ( 1 downto 0); inst
begin
sel(1) <= Sel1;
sel(0) <= Sel0;
Sel1 Sel0 S
s <= E0 when sel="00" else 0 0 E0
E1 when sel="01" else 0 1 E1
E2 when sel="10" else 1 0 E2
E3 ; 1 1 E3
end mux4_1_arch2;
31
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
– Multiplexeurs 4
1 ( 3ème Description VHDL utilisant une affectation
sélective )
• les entrées à aiguiller sont déclarées sous forme de simple bit
• les entrées de sélection sont déclarées sous forme de BUS
library ieee;
use ieee.std_logic_1164.all; Symbole :
mux_4_1
entity mux_4_1 is
E3 S
port ( E3,E2,E1,E0 : in std_logic; E2
sel: in std_logic_vector ( 1 downto 0); E1
S: out std_logic ); E0
sel[1..0]
end mux_4_1;
inst1
end mux_4_1_arch3;
32
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Démultiplexeurs 1
2, 1
4 (Recherche du schéma)
33
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Démultiplexeur 1
4 (Recherche du schéma)
S0
S1
E S2
S3
sel1 sel0
– Table de vérité
Sel1 Sel0 S0 S1 S2 S3
0 0 E 0 0 0
0 1 0 E 0 0
1 0 0 0 E 0
1 1 0 0 0 E
– Equations
S0 = Sel1.Sel0.E
S1 = Sel1.Sel0.E
S2 = Sel1.Sel0.E
S3 = Sel1.Sel0.E
34
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• Démultiplexeur 1
4 (Schéma)
S0 = Sel1.Sel0.E
S1 = Sel1.Sel0.E
S2 = Sel1.Sel0.E
S3 = Sel1.Sel0.E
– Schéma
AND3
E E INPUT
VCC OUTPUT S3
S3
inst5
AND3
OUTPUT S2 S2
inst6
AND3
NOT
OUTPUT S1
S1
Sel1 Sel1 INPUT
VCC
inst
inst7
AND3
35
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
– Démultiplexeurs 1
4 ( Description VHDL )
library ieee;
use ieee.std_logic_1164.all; Symbole:
dmux1_4
entity dmux1_4 is
port ( E: in std_logic; E S3
36
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
Gs Q1 Q0
37
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• L’encodeur de priorité 4
2 (Recherche du schéma)
– Table de vérité I3 I2 I1 I0
I3 I2 I1 I0 Gs Q1 Q0
Gs Q1 Q0
0 0 0 0 0 0 0
0 0 0 1 1 0 0
0 0 1 X 1 0 1
0 1 X X 1 1 0
1 X X X 1 1 1
38
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• L’encodeur de priorité 4
2 (Recherche du schéma)
Q0 I1 I0
- Les équations I3 I2 00 01 11 10
I3 I2 I1 I0 Gs Q1 Q0 00 0 0 1 1
0 0 0 0 0 0 0 01
0 0 0 1 1 0 0 0 0 0 0
0 0 1 X 1 0 1
0 1 X X 1 1 0
11 1 1 1 1
1 X X X 1 1 1
10 1 1 1 1
Equations évidentes : Gs = I3 + I2 + I1 + I0
Q1 = I3 + I2
39
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• L’encodeur de priorité 4
2 (Recherche du schéma)
Gs = I3 + I2 + I1 + I0
Q1 = I3 + I2
Q0 = I3 + ( I2 . I1 )
- Le schéma
I3 INPUT
OR4
I3
VCC
I2 I2 INPUT OUTPUT Gs Gs
VCC
I1 I1 INPUT
VCC
inst
I0 I0 INPUT
VCC OR2
OUTPUT Q1 Q1
inst5
NOT
inst6
OR2
OUTPUT Q2 Q0
AND2 inst8
inst7
40
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• L’encodeur de priorité 4
2 cascadable (Recherche du schéma)
– En vue d’associer plusieurs encodeurs entre eux, deux lignes sont rajoutées :
Ei en entrée et Eo en sortie
I3 I2 I1 I0
Ei Eo
Gs Q1 Q0
41
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• L’encodeur de priorité 4
2 cascadable (Recherche du schéma)
- Table de vérité Ei I3 I2 I1 I0 Eo Gs Q1 Q0
0 X X X X 0 0 0 0
1 0 0 0 0 1 0 0 0
1 0 0 0 1 0 1 0 0
1 0 0 1 X 0 1 0 1
1 0 1 X X 0 1 1 0
1 1 X X X 0 1 1 1
- Equations Gs = Ei . ( I3 + I2 + I1 + I0 )
Q1 = Ei . ( I3 + I2 )
Q0 = Ei . ( I3 + ( I2 . I1 ) )
Eo = Ei . ( I3 + I2 + I1 + I0 )
42
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• L’encodeur de priorité 4
2 cascadable (Recherche du schéma)
Gs = Ei . ( I3 + I2 + I1 + I0 )
Q1 = Ei . ( I3 + I2 )
Q0 = Ei . ( I3 + ( I2 . I1 ) )
Eo = Ei . ( I3 + I2 + I1 + I0 )
- Le schéma
NOT AND2
inst10
OUTPUT Eo
Eo
Ei Ei INPUT
VCC inst9
I3
OR4
I3 INPUT AND2
VCC
I2 I2 INPUT
VCC
OUTPUT Gs
Gs
inst4
I1 I1 INPUT
VCC
inst
I0 I0 INPUT
VCC OR2
AND2
OUTPUT Q1
Q1
inst2
inst5
AND2
NOT
inst6
OR2
OUTPUT Q0
Q0
inst3
AND2 inst8
inst7
43
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
• L’encodeur de priorité 8
3 (Recherche du schéma)
I3 I2 I1 I0 I3 I2 I1 I0
‘1’ Ei Eo Ei Eo
Gs Q1 Q0 Gs Q1 Q0
Gs2 Q3 Q2 Gs1 Q1 Q0
?
Gs S2 S1 S0
44
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
E7 E6 E5 E4 ENSL1 E3 E2 E1 E0
I3 I2 I1 I0 I3 I2 I1 I0
‘1’ Ei Eo Ei Eo
Gs Q1 Q0 Gs Q1 Q0
Gs2 Q3 Q2 Gs1 Q1 Q0
?
Gs S2 S1 S0
– Table de vérité - Equations
45
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
En décimal : En binaire:
bit de retenue bits d’entrées
bit de somme
46
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
– Additionneur 4 bits
a3 a2 a1 a0 b3 b2 b1 b0
s4 s3 s2 s1 s0
a3 b3 r3 a2 b2 r2 a1 b1 r1 a0 b0 r0
an bn rn an bn rn an bn rn an bn rn
Add Add Add Add
rn+1 sn rn+1 sn rn+1 sn rn+1 sn
s4 s3 s2 s1 s0
47
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
an bn rn
Add
• Cellule Additionneur (Recherche du schéma) rn+1 sn
rn+1
Table de vérité: Karnaugh: an bn 00 01 11 10
rn
rn an bn rn+1 sn 0 0 0 1 0
0 0 0 0 0 1 0 1 1 1
0 0 1 0 1
0 1 0 0 1 rn+1 = rn.bn + an.bn + rn.an
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0 sn
1 1 0 1 0 an bn 00 01 11 10
rn
1 1 1 1 1
0 0 1 0 1
1 1 0 1 0
sn= rn.an.bn + rn.an.bn + rn.an.bn + rn.an.bn
sn= rn.(an.bn + an.bn) + rn.(an.bn + an.bn)
sn= rn.(an bn) + rn.(an bn) = rn an bn sn= rn an bn
48
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
– Equations: sn= rn an bn
rn+1 = rn.bn + an.bn + rn.an
– Schéma:
Symbole:
an a INPUT
VCC
XOR
bn inst
XOR Add
b INPUT
VCC OUTPUT s sn
rn rin INPUT
VCC AND2
inst3 rin s
a rout
inst1 b
AND2 OR3
OUTPUT rout rn+1 inst
inst2 inst5
AND2
inst4
49
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
– Additionneur 4 bits
Add
s[0]
GND
a[0] rin s
b[0] a rout
b
inst
a[3..0] INPUT
VCC
OUTPUT s[4..0]
Add
b[3..0] INPUT
VCC s[1]
a[1] rin s
b[1] a rout
b
inst1
Add
s[2]
a[2] rin s
b[2] a rout
b
inst2
Add
s[3]
a[3] rin s s[4]
b[3] a rout
b
inst3
50
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
library ieee;
Symbole:
use ieee.std_logic_1164.all;
Add
entity add is
port ( rin,a,b : in std_logic; rin s
s,rout : out std_logic ); a rout
end add;
b
architecture add_arch of add is inst
signal entree : std_logic_vector (2 downto 0);
signal sortie : std_logic_vector (1 downto 0);
begin
entree(2) <= rin; entree(1) <= a; entree(0) <= b; rn an bn rn+1 sn
with entree select
sortie <= "00" when "000" , 0 0 0 0 0
"01" when "001" , 0 0 1 0 1
"01" when "010" ,
"10" when "011" ,
0 1 0 0 1
"01" when "100" , 0 1 1 1 0
"10" when "101" , 1 0 0 0 1
"10" when "110" , 1 0 1 1 0
"11" when others; 1 1 0 1 0
rout <= sortie(1); 1 1 1 1 1
s <= sortie(0);
end add_arch;
51
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
•Comparateur
Principe de la comparaison :
Soit deux nombres A= 01101101 et B= 01110100, simplement en les
observant, on peut dire que
A<B
Il suffit pour cela de comparer leurs bits de même rang, en commençant
par les poids forts :
52
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
sin, ein & iin : bits d’entrée, utilisés lors de la sout eout iout
mise en cascade de plusieurs cellules
53
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
Table de vérité
an bn sout eout iout
0 0 sin ein iin
0 1 0 0 1
1 0 1 0 0
1 1 sin ein iin
54
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
Comp_sch
sout = an.bn + sin.(an . bn) sin sout
e = e .(a . b )
out in n n
ein eout
iin iout
Schéma iout = an.bn + iin.(an . bn) b
a
inst
NOT AND2
bn b INPUT
VCC
inst
OR2
inst6
OUTPUT sout
sout
inst12
AND2
OR2
NOT
an a INPUT
VCC
inst5 inst7
OUTPUT iout iout
inst13
XNOR
AND2
inst9
sin sin INPUT
VCC
inst8
AND2
AND2
55
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
VCC
GND
sin sout
ein eout
b[3..0] INPUT
VCC b[0] iin iout
a[0] b
a[3..0] INPUT
VCC a
inst
Comp_sch
sin sout
ein eout
b[1] iin iout
a[1] b
a
inst1
Comp_sch
sin sout
ein eout
b[2] iin iout
a[2] b
a
inst2
Comp_sch
OUTPUT S
sin sout
OUTPUT E
ein eout
OUTPUT I
b[3] iin iout
a[3] b
a
inst3
56
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
end comp_arch;
57
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
E
50% 50%
S Réalité
90% 90%
50% 50%
10% 10%
tPHL tPLH
tf tr
E
S Représentation
– Alors qu’une fonction ne devrait pas changer d’état, à cause des temps de
propagation, il apparaît un état transitoire de très courte durée où la
fonction change de valeur malgré tout, c’est l’aléa
59
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
BA
C
00 01 11 10
0 0 1 1 1
1 0 0 0 1
A.C A.B
F = A.C + A.B
– L’aléa se rencontre lorsque l’on passe d’une case à une case adjacente de
même valeur n’étant pas dans un même groupement
• Dans notre exemple on risque de rencontrer un aléa sur un changement d’état de
la variable d’entrée A lorsque C=‘0’ et B=‘1’
60
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
NOT
A AND2
A
A INPUT
VCC A.B
inst
OR2
inst2
B
B=‘1’ INPUT
VCC
OUTPUT F
F
AND2
inst4
NOT
C
C=‘0’ INPUT
VCC
A.C
inst1 inst3
C=‘1’
A
Etat transitoire de très courte durée,
A.C 0 1 0
du aux temps de propagation à travers
les portes logiques, où pendant environ
1ns les 2 entrées du « OU » sont à ‘0’.
A.B 1 0 1
Ce qui provoque un aléa.
F
61
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
BA
C
00 01 11 10
0 0 1 1 1 B.C
1 0 0 0 1
A.C A.B
62
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
a3 a2 a1 a0 b3 b2 b1 b0
s4 s3 s2 s1 s0
a3 b3 r3 a2 b2 r2 a1 b1 r1 a0 b0 r0
an bn rn an bn rn an bn rn an bn rn
Add Add Add Add
rn+1 sn rn+1 sn rn+1 sn rn+1 sn
s4 s3 s2 s1 s0
63
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
library ieee;
Symbole:
use ieee.std_logic_1164.all;
Add
entity add is
port ( rin,a,b : in std_logic; rin s
s,rout : out std_logic ); a rout
end add;
b
architecture add_arch of add is inst
signal entree : std_logic_vector (2 downto 0);
signal sortie : std_logic_vector (1 downto 0);
begin
entree(2) <= rin; entree(1) <= a; entree(0) <= b; rn an bn rn+1 sn
with entree select
sortie <= "00" when "000" , 0 0 0 0 0
"01" when "001" , 0 0 1 0 1
"01" when "010" ,
"10" when "011" ,
0 1 0 0 1
"01" when "100" , 0 1 1 1 0
"10" when "101" , 1 0 0 0 1
"10" when "110" , 1 0 1 1 0
"11" when others; 1 1 0 1 0
rout <= sortie(1); 1 1 1 1 1
s <= sortie(0);
end add_arch;
64
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
– Additionneur 4 bits
Add
s[0]
GND
a[0] rin s
b[0] a rout
b
inst
a[3..0] INPUT
VCC
OUTPUT s[4..0]
Add
b[3..0] INPUT
VCC s[1]
a[1] rin s
b[1] a rout
b
inst1
Add
s[2]
a[2] rin s
b[2] a rout
b
inst2
Add
s[3]
a[3] rin s s[4]
b[3] a rout
b
inst3
65
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
Additionneur
a b
Additionneur
s
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
66
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
67
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
68
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
a b cin
sel A.L.U.
y
a[7..0] L.U.
b[7..0]
M
U Y[7..0]
X
A.U.
cin
sel[3..0]
sel[2..0] sel[3]
69
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
70
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011
ENSL1
71
Michel KRAMMER Iut de Toulon – Dépt: GEII - Semestre 1 – 2010/2011