Additionneurs spéciaux |
Additionneurs spéciaux |
Certains algorithmes arithmétiques peuvent être réalisées en modifiant un additionneur. Par exemple :
Le coût et le délai du nouvel opérateur restent proches de ceux d'un additionneur. |
Les additionneurs spéciaux de cette page sont construits autour de l'additionneur rapide de Sklansky, qui est rappelé ici pour faciliter la comparaison. |
La sortie des cellules "BK" vaut 'P', 'G' ou 'K' (2 bits) cependant les entrées de portes disjonction "XOR" valent '0' ou '1' (1 bit), 'K' donne '0', 'G' donne '1' et 'P'
est impossible car dans cet additionneur la cellule "HA" la plus à droite est modifiée
pour exclure la valeur 'P'. Les "additionneurs spéciaux" qui suivent dépendent de la façon dont on traite le 'P'. |
Les additionneurs exécutent spontanément des additions modulo 2n si on néglige
la retenue sortante cn dans le résultat S. Pour obtenir l'opposé -B d'un nombre B, on
complémente logiquement chacun de ses bits puis on lui ajoute 1. L'addition de B et du -B obtenu
ainsi donne 2n c'est à dire 0. On se sert de la retenue entrante c0 d'un additionneur pour ajouter le signal a/s et de disjonctions pour complémenter chaque bits de B. Cette "boîte à opérations" effectue l'addition si la commande a/s = '0' et la soustraction si a./s = '1'. Un additionneur/soustracteur traite des entiers signés. |
Si les valeurs de la retenue cn et de la retenue cn-1 sont différentes, il y a un débordement et la somme S est arithmétiquement fausse:
|
Additionneur/ soustracteur/ comparateur |
Lorsqu'on effectue une soustraction S = A – B, le signe de S indique A ³ B ou au contraire A < B. Si de plus pour une soustraction on donne à c0 la valeur 'P', la valeur 'P' de la retenue sortante cn ne peut qu'avoir été propagée sur toutes les positions et indique donc A = B. Aux entrées des disjonctions, 'K' donne '0', 'P' ou 'G' donnent '1' . |
Pour comparer deux nombres A et B, il n'est pas nécessaire de calculer complètement leur différence. Le signe de la différence A – B, qui est donné par la retenue sortante, suffit. Ce comparateur est plus simple (moins de cellules "BK") et plus rapide (moins de sortance) qu'un soustracteur. |
Si la retenue entrante c0 d'un additionneur S = A + B + c0 est prête plus tard que les entrées A et B, un additionneur à retenue entrante retardée est adéquat. Le délai entre l'entrée c0 et les sorties si est petit et indépendant du nombre de bits. |
Si la retenue entrante c0 arrivait en même temps que les entrées A et B, une architecture semblable à celle de l'additionneur/soustracteur serait plus indiquée car moins coûteuse en cellules "BK". |
Pour obtenir cet additionneur, on duplique les disjonctions de l'additionneur S = A + B + c0 . Puis pour la sortie S on substitue à c0 la valeur '0' et pour l'autre sortie S' on substitue à c0 la valeur '1'. On construit ainsi un additionneur calculant simultanément S = A + B et S' = A + B + 1 . |
La sortie des cellules "BK" vaut 'P', 'G' ou 'K' (2 bits) 'K' donne '0', 'G' donne '1' .
|
On veut calculer S = A + B, S' = A + B + 1, S" = A + B + 2. Pour calculer S et S" on calcule préalablement sans propagation de retenue deux nombres X et Y tels que X + Y = A + B. On obtient ainsi s0 et s"0 qui ont la même valeur. Ensuite on additionne les n-1 bits poids forts de X et Y avec l'additionneur à deux sorties précédent. |
Où est la troisième sortie S' = A + B + 1 ? Le calcul de S' à partir de S et S", soit S' = S + 1 ou bien S' = S" – 1, ne demande qu'un inverseur et des multiplexeurs à 2 entrées..
|
De semblable façon on peut également calculer S = A + B – 1, S' = A + B, S" = A + B + 1 en calculant deux nombres X et Y tels que X + Y = A + B + 2n – 1 avec les cellules HA' , duales des cellules HA. |
Avec quatre légères modifications l'additionneur de Sklansky à retenue entrante retardée rend S = ½ A – B ½.
|
Comme pour le comparateur, la valeur 'P' de cn indique que A = B, donc S = 0. |
Un additionneur rend spontanément une somme modulo 2n. Avec une légère modification l'additionneur de Sklansky à retenue entrante retardée rend une somme modulo 2n – 1.
Dans les deux cas on a S = ½ A + B ½ modulo
(2n– 1). |
On se ramène à l'additionneur modulo 2n en calculant préalablement sans propagation de retenue deux nombres X et Y tels que X + Y = A + B + 2n – 1 avec les cellules HA' , duales de HA.
Donc le signal "rebouclage" horizontal qui contrôle "+1" est le "nand" de xn et (cn = 'G' ). Le bit poids fort sn est le "and" de xn et (cn = 'P' ) . |
L'insertion de multiplexeurs dans le circuit d'addition traîte trois cas particuliers négligés
par l'additionneur précédent. si A = 2n et B = 2n alors A + B modulo 2n – 1 = 1. si A = 2n et B < 2n alors A + B modulo 2n – 1 = B complémenté + 2. si A < 2n et B = 2n alors A + B modulo 2n – 1 = A complémenté + 2. |