Add SOUS
Add SOUS
Add SOUS
Correction.
1. Un demi-soustracteur est un circuit qui soustrait simplement un bit d’un autre. Le résultat
est obtenu sur deux bits, S pour le poids faible (la différence), R pour le poids fort (la
retenue). A partir de la table de vérité suivante :
A B R S
0 0 0 0
0 1 1 1
1 0 0 1
1 1 0 0
on obtient :
S = A.B + A.B
= A⊕B
R = A.B
& R
1
L’ajout d’une porte OU EXCL dont une des entrées est la commande C doit donc permettre
de simuler la négation présente dans le demi-soustracteur lorsque C = 1, et l’absence de
cette négation dans le demi-additionneur lorsque C = 0. Il est aisé de vérifier partir de la
table de vérité de OU EXCL qu’il suffit de prendre directement A pour l’autre entrée de la
porte OU EXCL : lorsque C = 0, la sortie de la porte est équivalente à A, lorsque C = 1
cette sortie prend la valeur de A.
C A C ⊕A
0 0 0
0 1 1
1 0 1
1 1 0
Bien entendu, une étude systématique des sorties à partir de toutes les entrées permet de
retrouver les équations booléennes attendues :
C A B R S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 0
1 0 1 1 1
1 1 0 0 1
1 1 1 0 0
on obtient :
R = C.A.B + C.A.B
= (C.A + C.A).B
= (C ⊕ A).B
& R
=1
C
3. La table de vérité de l’additionneur/soustracteur est (avec Re , retenue en entrée et Rs
2
retenue en sortie) :
C Re A B Rs S
0 0 0 0 0 0
0 0 0 1 0 1
0 0 1 0 0 1
0 0 1 1 1 0
0 1 0 0 0 1
0 1 0 1 1 0
0 1 1 0 1 0
0 1 1 1 1 1
1 0 0 0 0 0
1 0 0 1 1 1
1 0 1 0 0 1
1 0 1 1 0 0
1 1 0 0 1 1
1 1 0 1 1 0
1 1 1 0 0 0
1 1 1 1 1 1
on obtient :
Re S
1/2-a-s R2
A
1/2-a-s R1 ≥1 Rs
B
C
3
4. Le schéma d’un additionneur/soustracteur quatre bits par quatre bits s’obtient de façon
toute aussi immédiate :
C
B3 B2 B1 B0
A3 A2 A1 A0
R2 R1 R0
Add/Sou Add/Sou Add/Sou Add/Sou 0
Dépassement
S3 S2 S1 S0
Exercice 2. Etudier un circuit combinatoire à quatre entrées a0, a1, a2, a3, et une sortie Z tel
que Z = 1 chaque fois que le numéro codé par l’entier a3a2a1a0 est divisible entièrement par 4
ou 5.
Correction.
a1 a0
a3 a2 00 01 11 10
00 1
01 1 1
11 1 1
10 1 1
d’où le schéma :
a3 a2 a1 a0
1
&
&
&
1 Z
1
&
&
&
4
Exercice 3. Réalisation d’un multiplicateur 2 bits par 2 bits :
1. Réaliser un circuit qui effectue la multiplication 1 bit par 1 bit.
2. Réaliser un multiplicateur 2 bits par 2 bits
(a) directement à l’aide de portes ET, OU , NON, NON–ET, NON–OU. . .
(b) alternativement, à l’aide du multiplicateur 1 bit par 1 bit réalisé ci-dessus et de demi-
additionneurs.
Correction.
1. Circuit qui effectue la multiplication 1 bit par 1 bit : a et b étant les deux bits à multiplier,
la fonction booléenne P = a.b
2. On note a1a0 les deux bits du premier nombre, et b1b0 les deux bits du deuxième nombre ;
le résultat s’écrit sur 4 bits p3p2p1p0.
(a)
b1 b0 a1 a0 p3 p2 p1 p0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 1 0 0 0 0
0 1 0 0 0 0 0 0
0 1 0 1 0 0 0 1
0 1 1 0 0 0 1 0
0 1 1 1 0 0 1 1
1 0 0 0 0 0 0 0
1 0 0 1 0 0 1 0
1 0 1 0 0 1 0 0
1 0 1 1 0 1 1 0
1 1 0 0 0 0 0 0
1 1 0 1 0 0 1 1
1 1 1 0 0 1 1 0
1 1 1 1 1 0 0 1
p3 = b1.b0.a1.a0
p2 = b1.b0.a1.a0 + b1.b0.a1.a0 + b1.b0.a1.a0
= b1.b0.a1.a0 + b1.b0.a1.a0 + b1.b0.a1.a0 + b1.b0.a1.a0
= b1.b0.a1 + b1.a1.a0
= b1.a1.(b0 + a0)
= b1.a1.b0.a0
p1 = b1.b0.a1.a0 + b1.b0.a1.a0 + b1.b0.a1.a0 + b1.b0.a1.a0 + b1.b0.a1.a0 + b1.b0.a1.a0
= b1.b0.a1 + b1.b0.a0 + b1.b0.(a1 ⊕ a0)
= b1.b0.a1 + b1.(b0.a0 + b0.(a1 ⊕ a0))
p0 = b1.b0.a1.a0 + b1.b0.a1.a0 + b1.b0.a1.a0 + b1.b0.a1.a0
= b1.b0.a0 + b1.b0.a0
= b0.a0
5
(b) Remarquons que (développement polynômial d’un nombre en base 2) :
a1a0 = a1 × 21 + a0 × 20
b1b0 = b1 × 21 + b0 × 20
Rappelons que l’exposant associé à la base correspond au rang de chacun des bits qui
codent le nombre. On a alors :
p0 = a0 × b0
p1 = a1 × b0 + a0 × b1 qui représente une somme de deux bits réalisée avec
un demi–additionneur, et donc génère une retenue R1 de rang supérieur
d’où :
p2 = a1 × b1 + R1 qui représente une somme de deux bits réalisée avec
un demi–additionneur, et donc génère une retenue R2 de rang supérieur
d’où :
p3 = R2
Autrement dit,
Exemple :
11 a1a0 = 11
x 11 b1b0 = 11
----
11
11
----
1001 p3 = 1, p2 = 0, p1 = 0, p0 = 1
A partir des équation de p3, p2, p1, p0 obtenues ci-dessus, on obtient le schéma :
a1 b1 a1 b0 a0 b1 a0 b0
Add 1−1
Add 1−1
p3 p2 p1 p0
6
Exercice 4. Réalisation d’un multiplicateur 4 bits par 4 bits :
1. A l’aide du multiplicateur 2 bits par 2 bits de l’exercice précédent et d’additionneurs 2
bits par 2 bits, réaliser un circuit multiplicateur 4 bits par 4 bits.
Indication : A et B étant des entiers codés sur quatre bits, on considère les nombres écrits
par groupes de deux bits dont la place est, comme dans l’exercice précédent, indiquée
par une notation puissance ; par exemple, A = M N et B = P Q, tels que M , N , P , Q
s’écrivent sur deux bits. On note alors (par exemple) {M P } le résultat (sur quatre bits)
de la multiplication M × P , résultat qui se décompose en {M P }F (les deux bits de poids
fort de {M P }) et {M P }f (les deux bits de poids faible de {M P }), d’où :
Correction. Question subsidiaire : puisque les nombres sont pris par groupes de 2 bits, b = 4.
Comme dans l’exercice précédent, on pose A = M N, B = P Q où M, N, P, Q sont des couples
de bits. Le produit A × B s’écrit alors :
A × B = MN × PQ
= (M × b1 + N × b0 ) × (P × b1 + Q × b0 )
= {M P } × b2 + ({N P } + {M Q}) × b1 + {N Q} × b0
= ({M P }F × b1 + {M P }f × b0 ) × b2 +
({N P }F × b1 + {N P }f × b0 ) × b1 +
({M Q}F × b1 + {M Q}f × b0 ) × b1 +
({N Q}F × b1 + {N Q}f × b0 ) × b0
= {M P }F × b3 +
R2 × b3 + ({M P }f + {N P }F + {M Q}F ) × b2 +
R1 × b2 + ({N P }f + {M Q}f + {N Q}F ) × b1 +
{N Q}f × b0
11 11 10 11 11 01 10 01
F f F f F f F f
01 00 11 00
00 00
Add 2−2 Add 2−2
10 00 01 01 10 11
10 11 01 10
7
Exercice 5. A partir de quatre bascules JK utilisée en mode T (J = K ), réaliser un compteur
binaire asynchrone modulo 16 sur quatre bits.
≥1
I =1 D Q1 D Q2 =1 Y
Q1 Q2
Correction. Notons par Q1 (t) et Q2 (t) les états actuels des bascules, et par A1 (t+1) et A2 (t+1)
leurs états suivants. A partir du schéma, on obtient les équations suivantes :
La table de transition est construite à partir de ces relations : par exemple lorsque le circuit se
trouve dans l’état q2 = (1, 0), caractérisé par Q1 (t) = 1 et Q2 (t) = 0, l’état suivant est
8
– pour I(t) = 0,
Q1 (t + 1) = 0 ⊕ (1 + 0)
= 1
Q2 (t + 1) = 1
Q1 (t + 1) = 1 ⊕ (1 + 0)
= 0
Q2 (t + 1) = 1
0 1
q0 q0 /0 q2 /1
q1 q2 /1 q0 /0
q2 q3 /0 q1 /1
q3 q3 /1 q1 /0
0/0 1/0
q0 q1
0/1
1/1 1/0
1/1
q2 q3
0/0 0/1
En utilisant l’une des méthodes d’analyse exposées, on peut définir le comportement du circuit
séquentiel pour chaque séquence assignées aux entrées. Supposons que la séquence 01001 ait été
assignée à l’entrée unique et que le circuit se trouve dans l’état q2 = (1, 0). Le comportement du
circuit se caractérise par :
– séquence à l’entrée : 0 1 0 0 1 ;
– séquence des états : q2 q3 q1 q2 q3 q1 ;
– séquence à la sortie : 0 0 1 0 0.