Ejercicio 3 – Medio sumador en Verilog: diseño estructural vs comportamental

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

En este ejercicio se diseña un medio sumador (half adder), un circuito combinacional que permite sumar dos bits y generar dos salidas: una suma (sum) y un acarreo (carry).

El medio sumador se implementa de dos formas distintas:

  • Versión estructural, instanciando módulos de puertas lógicas previamente diseñados (XOR y AND).
  • Versión comportamental, utilizando operadores lógicos directamente en las asignaciones de Verilog.

Ambas versiones se integran en el mismo proyecto y se validan mediante un testbench, el cual compara sus salidas para todas las combinaciones posibles de entrada.

Este ejercicio es clave para entender que, en Verilog, un mismo comportamiento puede describirse de distintas maneras, todas ellas sintetizables a hardware.


Conceptos clave que necesitas entender

El medio sumador

El medio sumador es uno de los bloques fundamentales de la aritmética digital. Su comportamiento se define como:

  • Suma:

sum=a⊕bsum = a \oplus bsum=a⊕b

  • Acarreo:

carry=a∧bcarry = a \land bcarry=a∧b

Aunque simple, este bloque es la base de sumadores más complejos y de unidades aritméticas completas.


Diseño estructural

En el enfoque estructural:

  • El circuito se describe como una interconexión de bloques más pequeños
  • Cada puerta lógica es un módulo independiente
  • El medio sumador se construye instanciando dichos módulos

Este estilo se asemeja a un esquema eléctrico y es muy útil para comprender la arquitectura del hardware.


Diseño comportamental

En el enfoque comportamental:

  • El comportamiento del circuito se describe directamente mediante expresiones lógicas
  • No se instancian explícitamente submódulos
  • El código suele ser más compacto y legible

Ambos enfoques producen el mismo hardware, pero ofrecen distintas ventajas según el contexto del diseño.


Verificación comparativa con testbench

El testbench implementado en este ejercicio:

  • Aplica todas las combinaciones posibles de entrada
  • Compara las salidas de ambas versiones
  • Permite verificar que ambos enfoques son funcionalmente equivalentes

Este tipo de verificación es una práctica común en diseño profesional.


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

Los sumadores están presentes en prácticamente todos los sistemas digitales:

  • Unidades aritméticas y lógicas (ALU)
  • Procesadores y microcontroladores
  • Sistemas de conteo y temporización
  • DSP y aceleradores de hardware
  • Arquitecturas de cómputo digital

Entender bien el medio sumador es un paso indispensable antes de avanzar hacia full adders, sumadores en cascada y sistemas aritméticos más complejos.


Código del ejercicio en GitHub

El repositorio contiene todos los elementos necesarios para implementar y verificar este ejercicio:

  • Código fuente en Verilog HDL
  • Testbench que compara la versión estructural y la comportamental
  • 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 ejecutar primero la simulación y analizar cómo ambas implementaciones producen exactamente los mismos resultados.


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

Para reforzar la diferencia entre estilos de descripción, intenta generar el medio sumador 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 medio sumador en Verilog en dos versiones: una estructural utilizando módulos XOR y AND, y otra comportamental usando operadores lógicos.
Incluye un testbench que compare ambas implementaciones para todas las combinaciones posibles de entrada y verifique que producen los mismos resultados.

Analiza el resultado poniendo atención a:

  • La claridad del código en cada enfoque
  • La equivalencia funcional
  • La separación entre diseño y verificación

Deja un comentario

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

Scroll al inicio