¿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
.xdcpara 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 llamadosumTotaly 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
