¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Semisumador y sumador completo

Después de esta lección: Puedo construir un sumador completo a partir de dos semisumadores.

Lección de 50 min5 comandosLaboratorio de Diseño digital: Verilog, VHDL y yosys en una VM Ubuntu privada

Cómo suma un circuito

Un sumador es el circuito digital que suma números en binario. Está dentro de toda calculadora y de todo procesador. Si entiendes el sumador de un bit, entiendes cómo suman todos los demás.

Una caja registradora que suma 5 euros y 3 euros hace esto en el fondo. Suma columna a columna, y a veces se lleva un bit a la siguiente.

Al final de esta lección

Nota

Puedo construir un sumador completo a partir de dos semisumadores.

Palabras clave

PalabraQué significaEjemplo
Sumael bit que se queda en la columnasum
Acarreoel bit que pasa a la columna de la izquierdacarry
Semisumadorun circuito que suma dos bits
Sumador completoun circuito que suma tres bits
Acarreo de entradael acarreo que llega desde la columna de la derechacin
Sumador en cadenavarios sumadores completos unidos por el acarreo

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un semisumador suma dos bits

Dos bits suman como mucho 2, que en binario es 10. Hacen falta dos bits de salida: la suma, que se queda, y el acarreo, que pasa a la izquierda.

La suma es un XOR de las entradas. El acarreo es un AND: solo vale 1 cuando se suma 1 más 1.

Tabla de verdad del semisumador

abAcarreoSumaResultado
00000 + 0 = 00
01010 + 1 = 01
10011 + 0 = 01
11101 + 1 = 10

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Copia el módulo con el acarreo roto

Comando
sed 's/a & b/a | b/' ~/hdl/half_adder.v > /tmp/ha_badcarry.v

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Compila la copia con el banco de pruebas

Comando
iverilog -o /tmp/ha_bc /tmp/ha_badcarry.v ~/hdl/half_adder_tb.v

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Mira qué pasa con el acarreo

Comando
vvp /tmp/ha_bc

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un sumador completo suma tres bits

En una columna del medio hay que sumar tres bits: a, b y el acarreo que llega de la derecha, cin. Un semisumador no basta, porque solo tiene dos entradas.

La idea: un primer semisumador suma a y b. Un segundo suma ese resultado con cin. Los dos acarreos pasan por una puerta OR, porque nunca valen 1 los dos a la vez.

Ejemplo: los tres bits que se suman

abcinTotalcoutsum
000000
011210
101210
110210
111311

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Varios sumadores completos suman números largos

Para sumar números de cuatro bits se ponen cuatro sumadores completos en fila. El acarreo de cada uno entra en el de su izquierda.

La tabla suma 5 y 3 columna a columna, de derecha a izquierda. El primer sumador no recibe acarreo: su cin vale 0.

Ejemplo: 0101 más 0011

Columnaabcinsumcout
0 (derecha)11001
101101
210101
3 (izquierda)00110

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

La suma de 5 y 3 en binario

Comando
python3 -c "print(bin(5 + 3))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Una suma que no cabe en cuatro bits

Comando
python3 -c "print(bin(15 + 1))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que cada columna se calcula por su cuenta. No es así: cada columna necesita el acarreo de la de su derecha. Por eso el resultado de la última columna no se conoce hasta que el acarreo ha pasado por todas.

Para ir más lejos

En un sumador en cadena, el último bit espera al acarreo de todos los anteriores. Cuanto más largo es el número, más tarda la suma.

Los procesadores reales calculan los acarreos por adelantado para ir más rápido. Piensa qué haría falta saber de cada columna para adivinar su acarreo sin esperar.

Sobre este laboratorio y su código: Laboratorio de Diseño digital: Verilog, VHDL y yosys en una VM Ubuntu privada

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.