Ejercicio 4 – Sumador completo en Verilog: comparación estructural y comportamental

¿Qué vamos a construir y para qué sirve?

En este ejercicio se implementa un sumador completo (full adder) de un bit, un bloque combinacional capaz de sumar tres entradas binarias: dos bits de datos (in_a, in_b) y un bit de acarreo de entrada (cin).

El diseño se desarrolla utilizando dos enfoques distintos:

  • Versión estructural, construida mediante la interconexión de puertas lógicas básicas (AND, OR y XOR).
  • Versión comportamental, descrita directamente con operadores lógicos en Verilog.

Ambas versiones se integran dentro de un módulo superior llamado sumTotal, lo que permite observar y comparar sus salidas en paralelo.

El objetivo principal de este ejercicio es consolidar la comprensión de los dos estilos de descripción en Verilog y verificar que ambos producen el mismo comportamiento funcional.


Conceptos clave que necesitas entender

El sumador completo

El sumador completo es una extensión natural del medio sumador y se define por las siguientes ecuaciones lógicas:

  • Suma:

sum=a⊕b⊕cinsum = a \oplus b \oplus cinsum=a⊕b⊕cin

  • Acarreo de salida:

cout=(a∧b)∨(cin∧(a⊕b))cout = (a \land b) \lor (cin \land (a \oplus b))cout=(a∧b)∨(cin∧(a⊕b))

Este bloque es la base de todos los sumadores multi-bit utilizados en sistemas digitales.


Diseño estructural

En la versión estructural:

  • El circuito se construye a partir de puertas lógicas básicas
  • Se interconectan múltiples bloques para obtener la funcionalidad deseada
  • El diseño refleja directamente la arquitectura lógica del sumador

Este enfoque es especialmente útil para entender cómo se implementa físicamente la operación de suma a nivel de compuertas.


Diseño comportamental

En la versión comportamental:

  • El comportamiento del sumador se describe mediante expresiones lógicas
  • No se instancian explícitamente las puertas
  • El código suele ser más compacto y legible

Ambos enfoques son funcionalmente equivalentes y sintetizables en FPGA.


Verificación exhaustiva mediante testbench

El testbench asociado:

  • Aplica todas las combinaciones posibles de entradas (in_a, in_b, cin)
  • Compara las salidas de ambas implementaciones
  • Muestra los resultados en consola para facilitar la validación

Este tipo de verificación exhaustiva es una práctica estándar en diseño digital.


¿Dónde se usa esto en el mundo real?

Los sumadores completos son bloques esenciales en numerosos sistemas digitales:

  • Sumadores de múltiples bits por cascada
  • Unidades aritméticas y lógicas (ALU)
  • Procesadores y microcontroladores
  • Sistemas de conteo y acumulación
  • Aceleradores de hardware y DSP

Comprender este bloque es indispensable para avanzar hacia diseños aritméticos más complejos.


Código del ejercicio en GitHub

El repositorio incluye todo lo necesario para implementar y verificar este ejercicio:

  • Código fuente en Verilog HDL
  • Testbench que valida ambas versiones del sumador completo
  • Archivo de restricciones .xdc para la tarjeta Nexys A7-100T

👉 Repositorio de ejercicios en Verilog HDL para FPGA (código Verilog + XDC + testbench):

Se recomienda analizar la salida de la simulación y comprobar que ambas implementaciones generan los mismos resultados para todas las combinaciones de entrada.


Reto: genera tu propia versión con ayuda de IA

Para reforzar los conceptos trabajados en este ejercicio, intenta generar el sumador completo con ayuda de una herramienta de IA.

Prompt sugerido:

Actúa como un ingeniero experto en diseño digital con FPGA y Verilog HDL.
Diseña un sumador completo de un bit en Verilog en dos versiones: una estructural basada en puertas lógicas AND, OR y XOR, y otra comportamental usando operadores lógicos.
Integra ambas versiones en un módulo superior llamado sumTotal y crea un testbench que pruebe todas las combinaciones posibles de entrada y muestre los resultados en consola.

Al revisar el resultado, fíjate especialmente en:

  • La claridad de cada estilo de descripción
  • La equivalencia funcional entre ambas versiones
  • La correcta implementación del testbench

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio