Additionneurs#
Addition binaire#
En 1ère année, vous avez appris la représentation des entiers en base 2 ainsi que leur addition. Pour retrouver la valeur décimale d'un nombre binaire, on multiplie chaque chiffre par la puissance de 2 qui correspond à sa position, comme dans l'exemple ci-dessous :
Vous avez aussi appris à additionner deux nombres binaires, chiffre par chiffre, en suivant ces règles :
\(0_2 + 0_2 = 0_2\)
\(0_2 + 1_2 = 1_2\) et \(1_2 + 0_2 = 1_2\)
\(1_2 + 1_2 = 10_2\)
\(1_2 + 1_2 + 1_2 = 11_2\)
Pour des nombres à plusieurs bits, le chiffre des deuzaines se reporte sur la colonne de gauche, exactement comme pour une addition en colonne comme vous l'avez appris en primaire. Par exemple, 0110 (6) plus 0011 (3) :
retenues 1 1
0 1 1 0 (6)
+ 0 0 1 1 (3)
-------
1 0 0 1 (9)
Circuit d'addition de 2 bits#
Si l'on considère a et b comme étant des bits à additionner, alors on peut produire la table de vérité suivante, où C est la retenue (carry en anglais) produite par l'addition, et S le chiffre des unités.
|
|
|
somme |
retenue |
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ces deux valeurs peuvent être calculées à partir de a et b avec des opérateurs que nous connaissons déjà bien :
la somme
Svaut1quandaetbsont différents : c'est le OU exclusif,S = a ⊕ b;la retenue
Cne vaut1que lorsqueaetbvalent1: c'est le ET,C = a ∧ b.
Le petit circuit qui réalise ces deux sorties porte un nom : le demi-additionneur.
Le demi-additionneur#
Ce circuit (half adder en anglais) se résume à une porte XOR pour la somme S
et une porte ET pour la retenue C, branchées sur les mêmes entrées a et b.
Circuit d'addition de 3 bits#
Le demi-additionneur a un défaut : il additionne bien deux bits, mais il ne sait
pas tenir compte de la retenue qui arrive de la colonne précédente. Or, dès
la deuxième colonne d'une addition, il faut additionner trois bits : a,
b et la retenue entrante Cin.
Le circuit qui additionne ces trois bits s'appelle un additionneur complet (full adder). Sa table de vérité compte donc huit lignes :
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
La somme
S. Elle vaut1sur quatre lignes, d'où la forme développée :S = (¬a ∧ ¬b ∧ Cin) ∨ (¬a ∧ b ∧ ¬Cin) ∨ (a ∧ ¬b ∧ ¬Cin) ∨ (a ∧ b ∧ Cin)Cette expression peut être réduite à
S = a ⊕ b ⊕ CinLa retenue
Cout. Elle aussi vaut1sur quatre lignes :Cout = (¬a ∧ b ∧ Cin) ∨ (a ∧ ¬b ∧ Cin) ∨ (a ∧ b ∧ ¬Cin) ∨ (a ∧ b ∧ Cin)Cette expression peut être réduite (voir exercices) à :
Cout = (a ∧ b) ∨ (a ∧ Cin) ∨ (b ∧ Cin)
L'additionneur complet#
Il suffit maintenant de câbler ces deux expressions pour obtenir un circuit additionnant 3 bits :
Chainer les additionneurs#
Lorsque l'on veut additionner 2 mots binaires d'une taille arbitraire, un seul additionneur complet ne peut pas suffire. Pour cela, on en met plusieurs à la suite : la retenue
sortante de chaque additionneur devient la retenue entrante de son voisin de
gauche. La toute première retenue entrante vaut 0.
Soient a et b deux mots binaires de 4 bits, dont le bit de poids faible est a0/b0, celui à sa gauche a1/b1, puis a2/b2 et finalement, le bit de poids fort, a3/b3.
Un additionneur 4 bits : la retenue se propage de droite à gauche.#
Le résultat s composé de s3...s0 est la somme de a et b. C'est exactement ce type de circuit, en plus large (32 ou 64 bits), qui se
trouve au cœur de l'unité de calcul d'un processeur.
Exercices#
Exercice 15#
Posez et effectuez les additions binaires suivantes, colonne par colonne, en notant les retenues. Vérifiez votre résultat en repassant en base 10.
0101 + 00110111 + 01101011 + 0111
Solution
0101(5)+ 0011(3)= 1000(8).0111(7)+ 0110(6)= 1101(13).1011(11)+ 0111(7)= 10010(18). Attention : le résultat déborde sur 5 bits, la dernière retenue sortante devient le bit de poids fort.
Exercice 16#
Complétez la table de vérité du demi-additionneur en choisissant la valeur de la
somme S et de la retenue C pour chaque ligne.
|
|
|
|
|---|---|---|---|
|
|
||
|
|
||
|
|
||
|
|
Exercice 17#
On veut retrouver, à partir de la table de vérité de l'additionneur complet,
l'expression simplifiée de la retenue sortante Cout. Construisez le tableau de
Karnaugh de Cout (lignes a, colonnes b et Cin) et donnez son expression.
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Solution
|
|
|
|
|
|---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
Trois groupes de deux cases, qui se chevauchent :
les cases
b·Cin = 11:achange, maisbetCinvalent toujours1, d'oùb ∧ Cin;les cases
a = 1,b·Cin = 01et11:bchange, maisaetCinvalent toujours1, d'oùa ∧ Cin;les cases
a = 1,b·Cin = 11et10:Cinchange, maisaetbvalent toujours1, d'oùa ∧ b.
Cout = (a ∧ b) ∨ (a ∧ Cin) ∨ (b ∧ Cin)
On retrouve bien l'idée intuitive : il y a une retenue dès qu'au moins deux des
trois bits valent 1.