Altifigence Academy

16 / 63 · Concetto

Sommatori e propagazione del riporto

Derivare le formule del sommatore completo e analizzare funzione, larghezza e ritardo del ripple-carry.

Due bit per la somma di una posizione

La somma di ai,bi,cia_i,b_i,c_i va da 0 a 3 e richiede il bit somma sis_i e il riporto ci+1c_{i+1}. Un numero dispari di 1 produce sum=1; almeno due 1 producono carry=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

Definendo generate gi=aibig_i=a_ib_i e propagate pi=ai⊕bip_i=a_i\oplus b_i, si ottiene ci+1=gi+picic_{i+1}=g_i+p_ic_i, con ++ inteso come OR. Il mezzo sommatore è il caso senza carry in ingresso: somma XOR e riporto AND.

Cambiate i tre ingressi e verificate sempre a+b+cin = sum+2×cout. Il carry entra nella posizione successiva e non ha lo stesso peso di sum.

Somma di una cifra e riporto alla successiva

a + b + cin = sum + 2 × cout

Quanto lontano si propaga il riporto?

Nell'addizione a quattro bit 1111 + 0001, il carry nasce al bit 0 e attraversa le altre tre posizioni. La somma memorizzata è 0000, il carry finale è 1. Nella struttura ripple-carry, le posizioni alte possono dover attendere il riporto delle basse.

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

Espandere la formula mostra come calcolare i riporti in parallelo. I sommatori veloci combinano propagate e generate di gruppo, con compromessi fra area e ritardo che includono fan-in, collegamenti e libreria di celle. L'operatore RTL + non implica necessariamente un sommatore ripple-carry.

Rendere esplicita la larghezza della somma

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];

Cinque bit bastano per 15+15+1=3115+15+1=31. Stabilite prima se servono solo i bit bassi, il carry verso lo stadio successivo o la saturazione. L'elemento interattivo controlla la tabella di veritàTabella di verità Elenco completo delle combinazioni d’ingresso e delle rispettive uscite. Le variazioni temporali si esaminano separatamente nelle forme d’onda. Approfondisci di una posizione del sommatore completo; non misura il ritardo del risultato di sintesi.

Modifica gli ingressi

Prova tu

Con quattro bit unsigned e a=9a=9, b=6b=6, cin=1c_{in}=1, calcolate somma completa, somma a quattro bit e carry. Il solo carry rileva l’overflow interpretando il circuito come signed?

Leggi la spiegazione

La somma completa è 16=10000, quindi sum=0000 e carry=1. Interpretando signed, 1001 vale −7 e −7+6+1=0-7+6+1=0 è rappresentabile. Carry e overflow signed sono condizioni diverse.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.