bitGateLab Digital · Aprende Abrir el simulador

Aprende › Tema 7

Sumadores binarios: medio sumador, completo y en cascada

Lectura de 8 min · Equipo bitGateLab

Sumar es la operación más importante de una computadora: con ella se resta, se multiplica, se calculan direcciones de memoria y se cuentan eventos. Aquí vas a construir un sumador desde cero: primero el medio sumador de un bit, luego el sumador completo que acepta un acarreo, después el sumador de varios bits en cascada y, al final, cómo el mismo circuito resta usando complemento a 2.

Sumar en binario a mano

Las reglas para sumar dos bits son cuatro: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1 y 1 + 1 = 102, es decir, 0 con acarreo de 1 hacia la siguiente columna. Si además llega un acarreo, 1 + 1 + 1 = 112: resultado 1 y acarreo 1. Igual que en decimal, se suma columna por columna de derecha a izquierda, pasando el acarreo a la izquierda.

Medio sumador

El medio sumador suma dos bits, A y B, y entrega dos salidas: la suma S y el acarreo C.

ABCS
0000
0101
1001
1110

La columna S es la tabla de una XOR y la columna C es la de una AND. Por lo tanto:

S = A ⊕ B    C = AB

AB SC
Medio sumador: la XOR entrega la suma S y la AND entrega el acarreo C. Los puntos marcan donde cada entrada se ramifica hacia las dos compuertas.

Se llama "medio" porque no tiene entrada para el acarreo que viene de una columna anterior, así que solo sirve para el bit menos significativo.

Sumador completo

El sumador completo suma tres bits: A, B y el acarreo de entrada Cin. Entrega la suma S y el acarreo de salida Cout. Fíjate que el par (Cout, S) es, en binario, la cantidad de unos que hay en las entradas.

ABCinCoutS
00000
00101
01001
01110
10001
10110
11010
11111

S vale 1 cuando hay una cantidad impar de unos: S = Σm(1, 2, 4, 7) = A ⊕ B ⊕ Cin. Cout vale 1 cuando hay dos o más unos: Cout = Σm(3, 5, 6, 7), que simplificada es la función de mayoría:

Cout = AB + ACin + BCin

Si en el mapa de Karnaugh de S intentas agrupar, verás que ningún 1 tiene un vecino con 1: es el patrón de tablero de ajedrez típico de la XOR, que no se simplifica en suma de productos.

Sumador completo con dos medios sumadores

Una forma práctica de armarlo es encadenar dos medios sumadores y una OR:

  1. Primer medio sumador: P = A ⊕ B y G = AB.
  2. Segundo medio sumador, con P y Cin: S = P ⊕ Cin y un acarreo parcial P·Cin.
  3. Cout = G + P·Cin = AB + (A ⊕ B)Cin.

Esta expresión es equivalente a la de mayoría: si A y B valen 1, AB ya da el acarreo; si exactamente uno de ellos vale 1, el acarreo depende de Cin. A G se le llama señal de generación y a P señal de propagación.

Sumador de acarreo en cascada

Para sumar números de n bits se conectan n sumadores completos en fila: el Cout de cada etapa entra como Cin de la siguiente. El Cin de la primera etapa se pone en 0, y el Cout de la última es el acarreo final. A esta estructura se le llama sumador de acarreo en cascada o ripple carry, porque el acarreo "se propaga" de etapa en etapa como una onda. En la familia 74HC existe un chip que contiene cuatro sumadores completos ya conectados así (el 74HC283).

Ejemplo 1: 1011 + 0110 con un sumador de 4 bits. En decimal es 11 + 6.

EtapaAiBiCinSiCout
010010
111001
201101
310101

Suma: S3S2S1S0 = 0001 con acarreo final 1, es decir 100012 = 17. Correcto: 11 + 6 = 17, que no cabe en 4 bits y por eso aparece el acarreo final.

El costo es el tiempo. La etapa 3 no puede dar su resultado definitivo hasta que le llegue el acarreo de la etapa 2, que a su vez espera al de la etapa 1. Si cada etapa tarda dos niveles de compuerta en producir su acarreo, un sumador de n bits tarda del orden de 2n retardos de compuerta en el peor caso. Para 64 bits eso es demasiado lento, por eso los procesadores usan sumadores con acarreo anticipado, que calculan los acarreos en paralelo a partir de las señales G y P. En el cronograma del simulador puedes ver cómo las salidas cambian por pasos hasta estabilizarse.

Restar con el mismo sumador

Como se explica en sistemas numéricos, en complemento a 2 el negativo de B es B + 1. Entonces:

A − B = A + B + 1

Para obtenerlo basta con poner una XOR en cada bit de B, con la otra entrada conectada a una línea de control M, y conectar M también al Cin de la primera etapa. Con M = 0 las XOR dejan pasar B y Cin = 0: el circuito suma. Con M = 1 las XOR invierten B y Cin = 1 aporta el "+1": el circuito resta.

Ejemplo 2: restas de 4 bits.

  1. 9 − 5: A = 1001, B = 0101, B = 1010. 1001 + 1010 + 1 = 1 0100. Se descarta el acarreo final: 0100 = 4.
  2. 5 − 9: A = 0101, B = 1001, B = 0110. 0101 + 0110 + 1 = 0 1100. Sin acarreo final. 1100 en complemento a 2 vale −8 + 4 = −4.

Cuando restas números sin signo, el acarreo final indica si hubo préstamo: 1 significa que A ≥ B y 0 significa que A < B.

Para números con signo, el desbordamiento se detecta con una sola XOR: V = C3 ⊕ C4, donde C3 es el acarreo que entra a la última etapa y C4 el que sale de ella. Si son distintos, el resultado no cabe en 4 bits con signo.

Errores comunes

Pruébalo en el simulador

Armar un sumador en el editor es el mejor puente entre las compuertas y la aritmética. Empieza con un bit y crece hasta cuatro.

  1. Coloca dos entradas, una XOR y una AND, y conéctalas como en el diagrama del medio sumador. Genera su tabla de verdad.
  2. Arma un sumador completo con dos medios sumadores y una OR, y verifica sus 8 renglones contra la tabla de este artículo.
  3. Copia el sumador completo cuatro veces y encadena los acarreos. Pon el primer Cin en 0.
  4. Cambia las entradas a 1011 y 0110 y observa que la salida sea 0001 con acarreo final 1.
  5. Abre el cronograma, cambia una entrada que obligue al acarreo a recorrer las cuatro etapas (por ejemplo 1111 + 0001) y observa cómo se estabilizan las salidas.

Ejercicios

  1. Calcula S y Cout de un sumador completo con A = 1, B = 0, Cin = 1.
    Respuesta

    Hay dos unos: S = 0 y Cout = 1 (1 + 0 + 1 = 102).

  2. Suma 0111 + 0101 con un sumador de 4 bits e indica los acarreos de cada etapa.
    Respuesta

    Etapa 0: 1 + 1 = 0, acarreo 1. Etapa 1: 1 + 0 + 1 = 0, acarreo 1. Etapa 2: 1 + 1 + 1 = 1, acarreo 1. Etapa 3: 0 + 0 + 1 = 1, acarreo 0. Resultado 1100 = 12 (7 + 5).

  3. Con un sumador-restador de 4 bits calcula 6 − 3 y escribe qué valor tiene M.
    Respuesta

    M = 1. 0110 + 1100 + 1 = 1 0011. Se descarta el acarreo: 0011 = 3.

  4. Interpretando como números con signo de 4 bits, ¿hay desbordamiento en 0111 + 0101?
    Respuesta

    Sí. 7 + 5 = 12 no cabe en el rango −8 a +7. El resultado 1100 se leería como −4. Los acarreos son C3 = 1 y C4 = 0, y V = 1 ⊕ 0 = 1.