viernes, 18 de julio de 2025

105 - Circuito Sumador

Circuito Sumador

Fig1. Sumador binario
Bienvenido a este blog relacionado con la electrónica digital. En esta serie de entradas abordaremos en un inicio el diseño de circuitos lógicos combinatorios (CLC), Describiendo de manera breve y según el caso los siguientes aspectos:

  • Tabla de verdad
  • Función lógica simplificada
  • Esquema del circuito
  • Descripción con HDL
  • Implementacion 

Veremos como realizar la descripción del circuito con el lenguaje Verilog, por lo que es recomendable que tengas conocimientos básicos sobre el uso de lenguajes de descripción de hardware HDL. Te dejo aquí un par de enlaces interesantes <Sitio1><Sitio2>. En vista que no realizaremos una implementación física como tal, vamos a verificar la funcionalidad lógica del circuito mediante simulación utilizando el software ModelSIM  que viene instalado con la suite Quartus/Intel que al día de hoy se llama QuestaSIM.

Aquí te dejo los enlaces para la descarga gratuita del software necesario previo registro:

Introducción

Dentro del contexto de la electrónica digital; Un sumador es un circuito que realiza la suma aritmética de dos números binarios. En su forma mas simple este circuito opera con dos bits de entrada (A, B) y dos salidas, una para el resultado de la suma (S) y otro para el indicador de acarreo (co) conformando asi un circuito conocido como sumador medio (Half Adder); si a este sumado agregamos una entrada de acarreo (ci), el circuito corresponderá con un sumador completo (Full Adder), tal como se observa en la figura 2.

Fig2. Sumador Medio (HA) y Completo (FA)

Los sumadores que se muestran en la figura 2, operan con entradas de 1-bit, pero pueden interconectarse fácilmente para incrementar el ancho de bits en la suma, el circuito resultante se conoce también como Sumador Paralelo. La figura 3 por ejemplo ilustra la composición de un sumador completo de 4-bits.

Fig3. Sumador paralelo de 4-bit
Notara que en el esquema del sumador paralelo que los dos primeros bits del numero se conectan a un sumador medio (HA) y el resto a sumadores completos (FA) en paralelo, de ahí su nombre. Los bits de acarreo se conectan en cascada, empezando por la salida (co) del primer sumador (HA) que ingresa a la entrada (ci) del siguiente sumador (FA) continuando así hasta el ultimo sumador cuya salida (co) representa el bit de mayor peso en el resultado, por esta razón es que el ancho de bit en la salida del sumador paralelo sera un bit mayor que los números de entrada.

Diseño Lógico del Circuito

Tomando en practica el dicho "divide y vencerás", nos bastara analizar el funcionamiento logico que tiene el sumador medio (HA) empezando por la tabla de verdad de dos entradas para obtener la suma de productos (mini-terminos) y una función final simplificada para cada salida. En la figura 4 que muestra este analisis junto al esquema de circuito.

Fig4. Diseño del sumador medio (HA)

De la misma manera en la figura 5 se analiza el sumador completo y el esquema del circuito. Notara que es una extensión al sumador medio.

Fig5. Diseño del sumador completo (FA)

Implementacion

En esta parte veremos como implementar el circuito utilizando el lenguaje Verilog y la creación de módulos descriptivos.

Tomaremos como ejemplo la función lógica de ambas salidas del sumador completo analizado en la figura 5. Para este nivel de descripción utilizaremos la palabra de asignación concurrente assign junto a los operadores lógicos del lenguaje, quedando el modulo con la siguiente codificación:

module fa(a,b,ci,s,co);
input a, b, ci;
//Entradas del sumador + acarreo
output s, co;  
//Salida del sumador + acarreo
assign co = (a&b)|(ci & (a^b));
//Función del acarreo Co
assign s = a^(b^ci);
//Función de salida S
endmodule

Ahora si consideramos implementar el sumador paralelo de 4-bit que se ve en la figura 3, podemos realizar la descripción del modulo utilizando varios sumadores completos, declarando instancias del modulo fa, algo similar a la llamada de procedimientos utilizados en los lenguajes de programación. Entonces nuestra codificación del modulo quedara así:

module adder4bit(a, b, s);
input [3:0] a, b;
//Entradas del sumador
output [4:0] s; 
//Salida del sumador + 1bit
wire c1, c2, c3;
//Puntos de interconexión
fa un1(a[0], b[0],  0, s[0], c1);
fa un2(a[1], b[1], c1, s[1], c2);
fa un3(a[2], b[2], c2, s[2], c3);
fa un4(a[3], b[3], c3, s[3], s[4]);
endmodule

Podemos optar también por utilizar el operador binario (+) en la asignación para un mayor nivel de abstracción en la codificación, lo que resulta muy útil al no necesitar una funciona lógica como tal, basta saber como opera la suma aritmética para lo cual nos bastara tomar como referencia un diagrama de bloques como el de la figura 6.  Entonces el sumador final quedara así:

Fig6. Esquema de sumador

module adder4bit(a, b, s);
input [3:0] a, b;
//Entradas del sumador
output [4:0] s; 
//Salida del sumador + 1-bit
assign s = a + b;
//Asigna la suma
endmodule

 
 
Conclusiones

Hemos visto de forma general como es la lógica y estructura de sumador paralelo de 4-bit que fácilmente se adapta a cualquier ancho. Se elaboro la descripción del circuito con lenguaje Verilog para su implementación en un dispositivo logico programable con la idea de ganar mas experiencia en este campo. Una alternativa para ver la implementación de este sumador, es utilizar un circuito integrado de función fija como ser el 74LS283.

Para finalizar solo quiero agradecer tu visita a mi blog, espero que el contenido de esta entrada hubiera sido de ayuda en tu formación educativa, favor cualquier consulta al respecto pueden escribirme a:

pablinzte@gmail.com / pablinza@me.com

@blinzar (Twitter) 

Pablo Cesar Zárate.