Altifigence Academy

16 / 63 · Concept

Additionneurs et propagation de la retenue

Dériver l'additionneur complet et analyser ensemble fonction, largeur et retard de propagation de retenue.

Représenter une somme d'un bit sur deux bits

La somme de ai,bi,cia_i,b_i,c_i vaut de 0 à 3 : il faut le bit de somme sis_i et la retenue suivante ci+1c_{i+1}. Un nombre impair d'entrées à 1 donne une somme à 1 ; au moins deux entrées à 1 donnent une retenue à 1.

si=ai⊕bi⊕cis_i=a_i\oplus b_i\oplus c_i
ci+1=aibi+(ai⊕bi)cic_{i+1}=a_ib_i+(a_i\oplus b_i)c_i

En définissant la génération gi=aibig_i=a_ib_i et la propagation pi=ai⊕bip_i=a_i\oplus b_i, on obtient ci+1=gi+picic_{i+1}=g_i+p_ic_i, où ++ signifie OR. Le demi-additionneur est le cas sans retenue entrante : sa somme est XOR et sa retenue AND.

Changez les trois entrées et vérifiez toujours a+b+cin = sum+2×cout. La retenue alimente le rang suivant ; elle n'a pas le même poids que sum.

Somme d'un rang et retenue vers le suivant

a + b + cin = sum + 2 × cout

Jusqu'où la retenue se propage-t-elle ?

Pour 1111 + 0001 sur quatre bits, le bit 0 génère une retenue transmise aux trois rangs suivants. La somme stockée est 0000 et la retenue finale vaut 1. Dans une structure à propagation de retenue, les rangs hauts peuvent devoir attendre la retenue des rangs bas.

c2=g1+p1g0+p1p0c0c_2=g_1+p_1g_0+p_1p_0c_0

Développer l'expression révèle la possibilité de calculer les retenues en parallèle. Les additionneurs rapides combinent génération et propagation par groupes, avec un compromis aire-retard dépendant du fan-in, des liaisons et de la bibliothèque. Le + RTL n'impose pas un additionneur à propagation de retenue.

Expliciter la largeur de la somme

SystemVerilog
logic [3:0] a, b, sum;
logic cin, cout;
logic [4:0] wide_sum;
assign wide_sum = {1'b0, a} + {1'b0, b} + {4'b0000, cin};
assign sum = wide_sum[3:0];
assign cout = wide_sum[4];

Comme 15+15+1=3115+15+1=31, cinq bits suffisent. Décidez d'abord si seuls les bits bas sont nécessaires, si la retenue doit être transmise ou si une saturation est requise. L'élément interactif vérifie la table de véritéTable de vérité Tableau énumérant toutes les combinaisons d'entrée et leur sortie. Les évolutions temporelles s'examinent séparément sur un chronogramme. En savoir plus d'un seul additionneur complet ; il ne mesure pas le retard d'un circuit synthétisé.

Modifier les entrées

Essayez vous-même

Sur quatre bits non signés, calculez somme complète, somme sur quatre bits et retenue pour a=9a=9, b=6b=6, cin=1c_{in}=1. La retenue seule indique-t-elle le dépassement si l'on interprète le même circuit en signé ?

Lire l’explication

La somme complète vaut 16, soit 10000 : sum=0000 et carry=1. En signé, 1001 vaut -7, donc −7+6+1=0-7+6+1=0, dans la plage. Retenue et dépassement signé sont deux conditions différentes.

Votre choix s’applique à ce navigateur. Modifiez-le à tout moment en bas de page.