You are on page 1of 14

1

VII- Circuits combinatoires lmentaires


Par circuit combinatoire, on entend que ses sorties sont des fonctions de ses entres. Cela par
opposition aux circuits squentiels, que nous verrons plus loin, o les sorties dpendent aussi
dvnements passs. Pour un circuit combinatoire, chaque vnement dans les entres un
certaine combinaison de 0 et de 1 donne un rsultat en sortie. Cest ce que montre la table de
vrit du circuit, qui prend tous les cas possibles en entre comme nous lavons vu au chapitre
prcdent.
Un circuit intgr est en gnral form dune plaquette de silicium intgrant les portes du
circuit, elle-mme encapsule dans un botier, do sortent des broches, ou des pattes assurant les
connexions lectriques dentre, de sortie, et dalimentation. A cause de son aspect, on lappelle
une puce. Selon la densit du nombre de transistors et de portes quil possde, on distingue
plusieurs catgories de produits :
* SSI (small scale integration) avec moins de 10 portes par circuit.
* MSI (medium scale integration) avec quelques dizaines des portes
* LSI (large scale integration) avec quelques centaines ou milliers de portes, et jusqu 100 000
portes.
* VLSI (very large scale integration) avec plus de 100 000 portes par circuit, et souvent des
millions.
Un cas classique de circuit SSI consiste en quatre portes
NON ET indpendantes, avec pour chacune deux entres et
une sortie. Avec lalimentation lectrique qui demande une
broche mise la masse (0 volt) et une broche avec Vcc =5
volts, cela fait un total de 14 broches pour seulement 4 portes
logiques.
Si lon faisait de mme avec un circuit VLSI de 5 millions de portes, il faudrait 15 millions de
broches, et comme le prcise A. Tanenbaum 1 : Avec un espacement standard de 2,3 mm entre
deux broches, il mesurerait 18 km de long ! Aussi doit-on faire en sorte de maximiser le nombre
de portes par rapport au nombre de broches. Cest ce que nous allons voir dans des cas simples de
circuits MSI que nous allons maintenant tudier, savoir les multiplexeurs, dcodeurs,
comparateurs, additionneurs

1) Le multiplexeur
On a 2n entres, n fils de slection qui sont aussi des entres, et une seule sortie. Quel est le rle
du multiplexeur ? Il slectionne lune des 2n entres pour lenvoyer en sortie. En effet chacune des
2n entres est numrote par un nombre en binaire de longueur n. Le choix se fait par le mot de
longueur n des fils de slection, et cest lentre correspondant ce mot qui passe en sortie. Cela
sappelle plus prcisment un multiplexeur un parmi 2n.

A. Tanenbaum, Architecture de lordinateur, ditions Dunod, 2001.

2
1) Le multiplexeur 1 parmi 2 : il a deux entres e0 e1 et un fil de slection s0 pour choisir lune
des deux entres et la mettre en sortie S. Il est ainsi reprsent :

On a la table de vrit :
s0 e0 e1 S
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1
On en dduit lquation :
S = s0e0 e1 + s0 e0e1 + s0 e0e1 + s0e0e1
= s0 e0 (e1 + e1 ) + s0 e1 (e0 + e0 )
= s0 e0 + s0e1
On peut retrouver cette simplification grce au tableau de Karnaugh :

do S = s0e0 + s0 e1

On en dduit le schma lectronique :

On a donc besoin de trois portes.


2) Le multiplexeur un parmi 4
Pour les mmes raisons que prcdemment, on aboutit au schma suivant :

Par exemple ce qui passe dans le fil e1, correspondant au numro 01, et qui est envoy en sortie,
est obtenu avec s0=1 et s1=0, tant entendu que la slection scrit s1 s0 dans cet ordre.
Le multiplexeur 1 parmi 4 demande 9 portes
Exercice 1:
1) En sinspirant de ce qui prcde, combien de portes NON comporte un multiplexeur 1 parmi
2n ? Et combien de portes au total ?
2) Vrifier que le multiplexeur 1 parmi 4 peut aussi tre obtenu avec trois multiplexeurs 1
parmi 2 de la faon suivante :
On en dduit un procd rcursif pour construire un
multiplexeur 1 parmi 2n.
Ainsi pour avoir un multiplexeur 1 parmi 8, il faudrait deux
multiplexeurs 1 parmi 4 et un multiplexeur 1 parmi 2. Dans ce
cas, combien faudrait-il de multiplexeurs 1 parmi 2 ? Et
combien de portes ?
En dduire le nombre de portes quil faudrait pour un
multiplexeur 1 parmi 2 construit selon ce procd. Comparer avec le nombre de portes quil
faudrait si on le construisait par la mthode du 1).
n

Exercice 2 : faire le schma dun dmultiplexeur 2 bits : il a une entre, deux fils de slection,
et 4 sorties. Cest linverse du multiplexeur 1 parmi 4. Suivant la slection correspondant un
certain numro (de longueur 2), il envoie ce qui est dans lentre sur la sortie qui porte ce numro.
Intrt du multiplexeur
La conversion parallle-srie. Imaginons une instruction code sur huit bits qui arrive en
parallle sur les huit lignes dun multiplexeur. Si on lche squentiellement les nombres de 000
111 sur les trois lignes de slection, les huit bits passent dans la ligne de sortie S lun aprs lautre.
Cest notamment intressant lorsquil sagit de passer des informations de lordinateur vers une
ligne tlphonique.
*

* Une application du multiplexeur parmi dautres est la fabrication de la fonction majoritaire,


vue prcdemment. Reprenons cette fonction lorsquelle a trois entres a, b, c, et qui sort 1 si deux
au moins des trois entres sont 1, et 0 sinon. Le 1 sort lorsque les nombres abc sont en binaire
011, 101, 110 ou 111, soit 3, 5, 6 ou 7. Le 0 sort lorsque les nombres sont 0, 1, 2, 4. Il suffit alors

4
dutiliser un multiplexeur 1 parmi 8, avec a, b et c comme lignes de slection, et de mettre les
entres 0, 1, 2, 4 0, et les autres entres 1.

* Lexemple prcdent se gnralise toute fonction logique dont on connat la table de vrit.
Il suffit denvoyer en entres les 0 et les 1 obtenus dans la colonne des rsultats dans lordre o ils
apparaissent, et dutiliser comme slections les entres de la table. Par exemple, avec cette table de

vrit associe lquation S = x y + x y :

x y S
0 0 0
0 1 1
1 0 1
1 1 0
on peut construire ce circuit avec un multiplexeur 4 bits :

Exercice 3: Circuit testant la parit du nombre de 1 dans un mot


A lentre du circuit se trouvent n entres, ce qui correspond un mot de n bits. On veut qu la
sortie on ait 1 si le nombre de bits 1 dans le mot dentre est impair, et 0 sinon.
1) On commence par n = 2. Faire la table de vrit du circuit, avec a et b en entres et S en
sortie. Puis donner lquation associe. Quelle porte classique trouve-t-on ?
2) On passe n = 3. Faire la table de vrit, donner lquation de ce circuit, et dessiner le
schma correspondant en utilisant deux portes XOR. On admettra que le XOR est associatif et lon
rappelle que le XOR est la porte de la discorde.
3) On fait n = 4. Donner la table de vrit, en dduire lquation du circuit. Puis en saidant des
questions prcdentes, et en utilisant a b et c d , montrer que le circuit peut tre constitu avec
trois portes XOR, et dessiner le schma correspondant.
4) En gnralisant, combien de portes XOR faut-il pour un circuit ayant un mot de n bits en
entre ?

2) Le dcodeur
Un dcodeur k bits est un circuit k entres et 2k sorties. Les k entres forment un nombre en
binaire de longueur k. Le dcodeur fait en sorte que la sortie qui porte le numro correspondant au
nombre en entre passe 1 (elle est active) tandis que toutes les autres sont 0 (inactives).
Traitons le cas du dcodeur deux bits, k = 2. Sa table de vrit est la suivante :
a0
0
0
1
1

a1
0
1
0
1

S0
1
0
0
0

S1
0
1
0
0

S2
0
0
1
0

S3
0
0
0
1

Les quations du circuit sen dduisent : S0 = a0 a1 , S1 = a0 a1 , S2 = a0 a1 , S3 = a0 a1


On en dduit son schma lectronique :

ainsi dessin symboliquement

Intrt des dcodeurs


* Un dcodeur est un dispositif essentiel lentre de lunit logique et arithmtique (UAL) de
lunit centrale de lordinateur. Nous allons donner une version trs simplifie de cette unit
logique et arithmtique en supposant quelle est capable dexcuter quatre oprations : le ET, le
OU, le NON et laddition, partir de deux nombres binaires a et b de un bit chacun. A la sortie on
aura le rsultat de lopration concerne sur un bit. Il sagit dune UAL de 1 bit.

Rappelons-nous : lunit de commande de lunit centrale recueille dans un registre le nombre


cod associ une opration raliser, et portant sur les deux oprandes a et b. Elle se charge de
dcoder cette opration pour quelle soit dirige vers lopration concerne dans lUAL. Cest l
quintervient le dcodeur. Le code deux chiffres de linstruction entre dans le dcodeur par les fils
e0 et e1. Le dcodeur a quatre fils en sortie, et selon lopration raliser un de ces fils est activ
(mis 1) tandis que les autres restent 0. On en dduit ce schma de lUAL :

Nous avons pris lexemple o linstruction 00 place dans e0 e1 est le code du ET, cest le
cblage qui le veut. Sur les quatre lignes dactivation la sortie du dcodeur, la ligne 0 est active,
elle est 1, tandis que les autres restent 0. Seul le rsultat ab traverse les portes jusqu la sortie.
Pour ladditionneur, nous laissons son schma en attente, nous le verrons plus tard.
* Une autre application des dcodeurs se situe lentre de la mmoire principale. Imaginons
une mmoire dun Mo, cest--dire 106 = (103)2 =(210)2 = 220 octets. En supposant quun octet
occupe une cellule mmoire, il faudrait utiliser 220 fils dadresses pour pouvoir accder nimporte
quelle cellule mmoire. Cela est impensable.

Aussi met-on en place une autre organisation, avec un dcodeur et un multiplexeur qui vont
permettre de rduire le nombre de fils de transfert dadresses lentre de la mmoire. Dabord la
mmoire est rendue rectangulaire, avec des lignes et des colonnes, par exemple avec 210 colonnes et
autant de lignes. Chaque cellule a son adresse dfinie par la ligne et la colonne o elle se trouve.
Dautre part on utilise 20 fils o passent les adresses, une adresse ayant pour longueur 20, soit
a19 a18 a1 a0. Ces adresses sont ensuite coupes en deux : a19 a18 a10, et a9 a8 a1 a0. La
demi-adresse a9 a8 a1 a0 est envoye sur les 10 lignes dentre dun dcodeur qui les dispatche
en sortie sur les 210 lignes de la mmoire rectangulaire (ici carre). On accde ainsi la ligne o se
trouve la cellule concerne. Reste trouver sa colonne, ce qui donnera la position exacte de la
cellule dont on pourra envoyer le contenu en sortie. Pour cela on utilise un multiplexeur avec 10
fils de slection contenant lautre moiti de ladresse, soit a19 a18 a10 correspondant ladresse
de la colonne concerne. Ce multiplexeur a aussi 210 lignes dentre provenant des 210 colonnes de
la mmoire, permettant grce aux fils de slection datteindre la colonne o se trouve la cellule
concerne, et denvoyer dans le fil de sortie le contenu de la cellule.

3) Le comparateur
Ce circuit logique prend deux nombres A et B de n bits chacun en entre, soit 2n entres. La
sortie est 1 si A est gal B, et 0 sinon.
Si les deux nombres ont un bit chacun, il suffit de faire jouer la porte de la discorde. On sait que
a b donne 0 si a et b sont diffrents et 1 sils sont gaux. La ngation de ce rsultat est ce qui est
attendu en sortie.
Cela se gnralise deux nombres ayant un nombre quelconque de bits. Par exemple pour n = 4,
les deux nombres A et B scrivent a0 a1 a2 a3 et b0 b1 b2 b3. On envoie les 4 chiffres respectifs de
chacun des deux nombres sur quatre portes XOR. Il y aura galit de A et B si et seulement si les
quatre portes sortent un 0. On envoie alors ces rsultats dans une porte NON OU, qui sort 1 en cas
dgalit de A et B, et 0 sinon.

Exercice 4 : Conception dun circuit logique


Ce circuit comporte k entres notes a1, a2, , ak, et une sortie S. Appelons s le nombre
dentres gales 1. Le nombre s est compris entre 0 et k. On veut que la sortie S ramne 0 si s = 0,
et sinon quelle ramne as , cest--dire la valeur de lentre numro s lorsque s est compris entre 1
et k.
Pour traiter ce problme, on commence par les cas les plus simples.
1) k = 1. On a comme table de vrit
a1 s S
0 0 0
1 1 1

do lquation S = a1.
2) k = 2. La table de vrit est encore trs simple :
a1
0
0
1
1

do S = a1.

a2
0
1
0
1

s
0
1
1
2

S
0
0
1
1

8
3) k = 3.
a1
0
0
0
0
1
1
1
1

a2
0
0
1
1
0
0
1
1

a3
0
1
0
1
0
1
0
1

s
0
1
1
2
1
2
2
3

S
0
0
0
1
1
0
1
1

On en dduit lquation : S = a1 a2 a3 + a1 a2 a3 + a1 a2 a3 + a1 a2 a3
Simplification :
S = a1 a2 a3 + a1 a2 a3 + a1 a3 a2 + a1 a3 a2
= ( a1 + a1 ) a2 a3 + a1 a3 ( a2 + a2 )
= a2 a3 + a1 a3
Cela se retrouve aussi par le tableau de Karnaugh

S = a2 a3 + a1 a3

Le dessin du circuit en dcoule

On reconnat le schma dun multiplexeur deux bits, avec a1 et a2 en entre, et a3 qui joue le rle
du slectionneur.
4) k = 4. A faire.

Nous allons maintenant passer aux circuits proprement arithmtiques. Comme nous lavons vu,
toutes les oprations ralises en binaire, quil sagisse dadditions, de soustractions ou de
multiplications, se font avec des additions, avec en plus des dcalages quand on pratique une
multiplication ou une division. Cest notamment le cas pour les multiplications ou les divisions par
2 qui sont des dcalages. Des additions particulires, et trs courantes, consistent ajouter ou
retrancher 1, elles sont appeles incrmentation ou dcrmentatation, lincrmentation jouant
notamment dans le compteur de programme (PC ou compteur ordinal). Deux circuits arithmtiques
se dgagent de cela : le dcaleur et ladditionneur.

4) Le dcaleur
On a un mot avec n bits en entres, ainsi quune entre sens note s, et n sorties. Si s = 1, il se
produit un dcalage du mot dun cran vers la droite. Par exemple pour n = 4, le mot d c b a en
entre devient 0 d c b. Si s = 0, le dcalage se fait vers la gauche, le mot d c b a devient c b a 0 en
sortie. Sauf aux deux extrmits du mot o lon nutilise quune porte ET, les bits intermdiaires
ont chacun deux portes ET, lune tant 0 sa sortie et lautre laissant passer le bit, comme
indiqu sur le dessin dans le cas o s = 1 :

5) Ladditionneur
Commenons par laddition de deux bits a et b en entre, avec en sortie la somme S et la retenue
R. Cela sappelle le demi-additionneur, parce quil ne tient pas compte de la retenue qui peut aussi
arriver en entre, provenant de calculs prcdents.

a) Le demi-additionneur
Sa table de vrit scrit :
a
0
0
1
1

b
0
1
0
1

S
0
1
1
0

R
0
0
0
1

On en dduit les quations S = a b et R = ab, do le schma du circuit, avec sa droite son


dessin simplifi, HA signifiant half adder (demi-additionneur en anglais) :

10

b) Ladditionneur un bit complet


On tient maintenant compte de la retenue r provenant ventuellement dun calcul en amont.
Ladditionneur complet a trois entres a, b et r, ainsi que deux sorties S et R. Avec comme table de
vrit :
a
0
0
0
0
1
1
1
1

b
0
0
1
1
0
0
1
1

r
0
1
0
1
0
1
0
1

S
0
1
1
0
1
0
0
1

R
0
0
0
1
0
1
1
1

Cela donne comme quations :


S = abr + abr + abr + abr
= r (a b + a b) + r (ab + a b)
= r (a b) + r (a b)
= r ( a b) = a b r
R = a b r + a b r + a b r + a b r = ab + ar + br
Pour les simplifications, nous avons utilis des formules lies au XOR dans S, et nous avons
reconnu dans R la fonction majorit (cf. chapitre 5). Cela permet de construire le circuit
additionneur, mais on peut encore le simplifier en utilisant la formule

R = a b + r (a b) .
On pourra vrifier la validit de cette formule en prenant sa table de vrit et en la comparant
avec celle de R = ab + ar + br.

11

Exercice 5 : Faire le circuit de ladditionneur complet en utilisant deux demi-additionneurs


La somme de a et b obtenue par le premier semi-additionneur est envoye dans le deuxime
avec en mme temps la retenue dentre r. Il en sort la somme finale, et les deux retenues sorties
des deux demi-additionneurs passent par une porte OU pour donner finalement la retenue finale R.

c) Ladditionneur n bits par propagation de la retenue


La mthode manuelle pour additionner deux nombres se traduit par un circuit o lon met des
additionneurs 1 bit en srie, la retenue de sortie de lun devenant la retenue dentre du suivant, ce
qui correspond la propagation de la retenue de droite gauche. Par exemple un additionneur 4
bits, pour les nombres A = a3 a2 a1 a0 et B = b3 b2 b1 b0 se construit de la faon suivante, avec une
propagation de droite gauche :

Un tel circuit, o les calculs se font lun aprs lautre, a le dfaut de demander un temps assez
long. Avec des nombres de 16 bits, et a fortiori de 32 ou 64 bits, on utilise dautres mthodes,
comme celle par anticipation de la retenue.

12

Exercice 6 : Additionneur soustracteur


Construire un additionneur-soustracteur en utilisant un signal de slection Cmd qui, lorsquil
vaut 0, provoque laddition A + B, et lorsquil vaut 1 donne A B. Rappelons que soustraire revient
ajouter le complmentaire de B et ajouter 1.
Il suffit de placer le signal Cmd en R0, la retenue dorigine. On met ce signal 0 pour laddition,
et 1 pour la soustraction, ce qui revient ajouter 1. Pour avoir le complmentaire de B, il suffit
de placer des portes XOR ayant deux entres : bi et Cmd = 1. Si bi vaut 0, la porte XOR dlivre 1,
et si bi vaut 1, XOR ramne 0, justement ce que lon veut.

Exercice 7 : Rajout dindicateurs ladditionneur-soustracteur 4 bits


Ces indicateurs sont :
* N pour ngatif, ramenant 1 si le rsultat de laddition A + B est ngatif, et 0 sinon.
* Z pour zro, ramenant 1 si le A + B est nul.
* C pour retenue, indiquant, dans le cas dentiers sans signe, si le rsultat provoque une retenue
finale, provoquant un dbordement avec un bit supplmentaire. En tenant compte de cette retenue,
le rsultat est juste.
* O pour overflow (dbordement) dans le cas dentiers signs, auquel cas lopration devient
fausse.
Pour lindicateur N, il suffit dutiliser la dernire sortie S3. Si elle ramne 1, le nombre est bien
ngatif, et si cest 0 il est positif ou nul.
Pour avoir lindicateur Z, il suffit de prendre les quatre sorties S3 S2 S1 S0, et de les faire passer
par une porte NON OU. La sortie donne Z.
Pour lindicateur C, on prend la dernire retenue R4.
Pour lindicateur O, on a vu dans le chapitre 4 que le dpassement de capacit se produisait
lorsque les bits en position n et n 1 (pour des nombres de longueur n) valaient 0 1 ou 1 0. Pour
savoir sil y a overflow, il suffit de faire Rn Rn1 .
Exercice 8 : Incrmenteur-dcrmenteur 4 bits
On utilise une commande de slection Cmd qui, lorsquelle vaut 0, fait passer du nombre A au
nombre A + 1, et lorsquelle vaut 1, fait passer de A A 1. Pour obtenir cela, il suffit damnager
ladditionneur- soustracteur 4 bits. Pour Cmd = 0, on additionne le nombre A avec le nombre 0,
mais en prenant 1 comme retenue initiale. Pour Cmd = 1, on ajoute A le nombre B = 1111, avec
comme retenue initiale 0.

13

d) Ladditionneur avec anticipation de la retenue


En fait il ny a pas vraiment anticipation. Les retenues sont calcules simultanment dans un
autre circuit. Plaons-nous au niveau du bit numro i (i de 0 n 1 pour un nombre an-1 a3 a2 a1 a0
de n bits). On distingue deux types de retenues. Dabord celle qui est provoque par les deux bits ai
et bi des deux nombres. On sait quil sagit de gi = ai bi (g pour gnrateur de retenue). Mais il y a
aussi celle, Ri, qui arrive de laddition prcdente, et dont il sagit de savoir si elle se propage la
sortie ou non, dans ce que nous appellerons ri+1, indpendamment de lautre retenue gi. Dabord si
la retenue qui arrive est 0, elle ne peut que rester 0 en sortie. Par contre, si elle vaut 1 en arrivant,
elle peut soit devenir 0 en sortie, soit rester 1. Voici les cas qui se prsentent :

On en dduit que ri+1 = Ri (ai + bi) = pi Ri en posant pi = ai + bi (p signifiant propagation).2


Finalement la retenue sortante est la somme de la retenue gi et de ri+1, soit :
Ri+1 = gi + pi Ri.
Pour un additionneur 4 bits, cela donne :
R1 = g 0 + p0 R0
R2 = g1 + p1R1 = g1 + p1 g 0 + p1 p0 R0
R3 = g 2 + p2 R2 = g 2 + p2 g1 + p2 p1g 0 + p2 p1 p0 R0
R4 = g3 + p3 R3 = g3 + p3 g 2 + p3 p2 g1 + p3 p2 p1g 0 + p3 p2 p1 p0 R0

Nous avons gard R0 mais si lon se contente de faire une addition (et pas une soustraction), on
peut prendre R0 = 0. Toujours est-il que les quatre retenues sont calcules uniquement partir des gi
et des pi. Or ces derniers peuvent tre obtenus simultanment partir des quatre additionneurs 1 bit.
Do le schma :

Certains auteurs prennent pi = ai bi au lieu de pi = ai + bi . Cest faux. Mais si lon prend la formule

finale Ri+1 = gi + pi Ri , elle donne le mme rsultat que lon prenne lun ou lautre des pi. Le fait dutiliser
ai bi a alors lavantage dtre une opration dj traite dans ladditionneur.

14

Il a suffi dajouter des sorties supplmentaires pi et gi chaque additionneur. Cela dit, si ce


circuit est performant en termes de vitesse, il ncessite de nombreuses portes pour faire le calcul
des retenues, comme la complexit des formules prcdentes lindique dj pour un nombre de
quatre bits. Pour des nombres de 16 bits, on est amen utiliser quatre blocs de 4 bits mis en
cascade, avec quelques amnagements supplmentaires.

You might also like