Multiplieurs |
Multiplieur |
La multiplication vient en second pour la fréquence d'utilisation. |
Porte "AND"
|
Une porte "AND" multiplie 2 bits. Pour multiplier 2 nombres
A et X de n bits chacun, on utilise n2 portes "AND" qui multiplient chaque bit de A par chaque
bit de X. La somme pondérée de ces n2 bits a bien comme valeur le produit P = A * X. Cependant
cet ensemble de bits n'est pas un nombre, bien que sa valeur se calcule comme celle d'un nombre. Comme A < 2n et X < 2n, le produit P < 22n est écrit comme un nombre a 2n bits. |
Multiplication sans signe |
Une structure régulière de portes "AND" (non dessinées) et de cellules "FA" formant un assemblage "cohérent" permet
d'obtenir les produits partiels puis de les réduire pour finalement obtenir le nombre P. Comme chaque cellules
"FA" réduit le nombre de bits de 1 exactement (tout en conservant la valeur de P), la quantité
de cellules "FA" strictement nécessaire est n2 – 2n (nombre de bits entrants – nombre
de bits sortants). Cependant il y en a ici un peu plus car il entre aussi quelques '0'
qu'il faut aussi réduire, plus précisément un '0' par chiffre
de X. La flèche verticale ![]() |
Multiplication signée |
Si le multiplicande A et le multiplieur X sont en complément à 2, alors les produits avec les bits de signe an-1 et xn-1 doivent être inversés et une constante 1 introduite pour obtenir le complément arithmétique des produits de X et A avec ces deux bits. Le bit de signe de P doit également être inversé. |
Multiplieurs rapides |
Plusieurs pistes conduisent à une amélioration de la vitesse de la multiplication et/ou une diminution du coût:
|
Réécrire le multiplieur X dans une base de numération plus grande réduit mécaniquement
le nombre de chiffres de X. |
Cellule "B2BC" du convertisseur de "BC" |
Pour faciliter le produit d'un nombre par un chiffre "BC", on réécrit ce dernier en "signe/valeur
absolue" grâce à une cellule "B2BC". Vérifiez que vous maîtrisez les fonctions
logiques de la cellule "B2BC" qui conserve la somme (comme le fait la cellule "FA") : -2*x3 + x2 + x1 = (-1)s * ( 2*M2 + M1 ) ; |
Multiplieur des bits de A par un chiffre "BC"
|
La multiplication du nombre A par un chiffre "BC" Î {-2, -1, -0, 0,
1, 2} rajoute 2 bits à ceux de A: un pour exprimer A ou 2A, un autre pour la retenue entrante en cas de
soustraction. Si A est signé, il faut étendre son signe sur le bit ajouté. Si A est non signé, il faut encore lui ajouter un bit de signe. La multiplication de A signé (en complément à 2) par un chiffre "BC" requiert autant de cellules "CASS" que de bits de A plus 1. |
La première étape de la multiplication génère à partie de A et de X des bits dont la somme pondérée vaut le produit P. Le bit de poids fort de P est positif pour la multiplication d'entiers sans signe, et négatif pour la multiplication d'entiers en complément à 2. |
La deuxième étape de la multiplication réduit les produits partiels issus de l'étape
précédente à deux nombres, en conservant la somme pondérée des bits. Ces deux
nombres seront additionnés dans la troisième étape. La synthèse des arbres de Wallace suit l'algorithme de Dadda, qui garanti le minimum d'opérateurs de réduction. Si de plus on impose d'effectuer les réductions le plus tôt ou le plus tard possible, alors la solution est unique et synthétisée toujours de la même façon. Les deux nombres binaires à ajouter dans la troisième étape peuvent être vus comme un seul nombre en "CS". |
Exemple d'arbre de réduction |
L'applet suivant réduit 82 produits partiels (le produit de deux nombres sans signe de 8 bits chacun). Les arbres de Wallace réduisent "au plus tard" (touche "tard" de l'applet ci-dessus). La somme pondérée des 16 bits qui sortent vaut après stabilisation la somme pondérée des 64 bits qui entrent. |
La case à cocher en haut à gauche autorise l'usage de cellules "CS" dans la réduction. La flèche verticale ![]() |