Altifigence Academy

16 / 63 · Concepto

Sumadores y propagación del acarreo

Derive las ecuaciones del sumador completo y analice función, ancho y retardo del acarreo en cascada.

Represente una suma de un bit mediante dos bits

La suma de ai,bi,cia_i,b_i,c_i va de 0 a 3 y necesita el bit de suma sis_i y el acarreo siguiente ci+1c_{i+1}. La suma vale 1 con un número impar de unos; el acarreo vale 1 con al menos dos.

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

Definiendo generación gi=aibig_i=a_ib_i y propagación pi=ai⊕bip_i=a_i\oplus b_i, resulta ci+1=gi+picic_{i+1}=g_i+p_ic_i, donde ++ es OR. El semisumador es el caso sin acarreo de entrada: suma mediante XOR y acarreo mediante AND.

Cambie las tres entradas y compruebe siempre a+b+cin = sum+2×cout. El acarreo alimenta la posición siguiente y no tiene el mismo peso que sum.

Suma de una posición y acarreo hacia la siguiente

a + b + cin = sum + 2 × cout

Hasta dónde debe propagarse el acarreo

Considere 1111 + 0001 en cuatro bits. El bit 0 genera un acarreo que atraviesa las otras tres posiciones. La suma almacenada es 0000 y el acarreo final, 1. En un sumador ripple-carry, el cálculo de los bits superiores puede esperar al acarreo de las posiciones inferiores.

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

Desarrollar la expresión permite ver cómo calcular acarreos en paralelo. Los sumadores rápidos combinan generación y propagación por grupos, con compromisos de área y retardo que incluyen fan-in, cableado y biblioteca. El + de RTL no obliga a implementar un único tipo ripple-carry.

Conserve en el diseño el ancho de la suma

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

Cinco bits bastan para 15+15+1=3115+15+1=31. Decida primero si solo necesita los bits bajos, si el acarreo pasa a otra etapa o si necesita saturación. El control didáctico comprueba la tabla de verdadTabla de verdad Tabla que enumera todas las combinaciones posibles de entradas y la salida de cada una. La evolución temporal se comprueba por separado en las formas de onda. Más información de una posición del sumador completo; no mide el retardo del circuito sintetizado.

Cambiar las entradas

Inténtalo tú

En unsigned de 4 bits, calcule suma completa, suma de 4 bits y carry para a=9a=9, b=6b=6, cin=1c_{in}=1. Si interpreta el mismo circuito como signed, ¿basta carry para detectar overflow?

Leer la explicación

La suma completa es 16, 10000: sum=0000 y carry=1. Como signed, 1001 representa -7, por lo que −7+6+1=0-7+6+1=0, dentro del rango. Carry y overflow con signo son condiciones distintas.

Tu elección se aplica a este navegador. Puedes cambiarla en el pie de página.