Práctica 1 · Bloques combinacionales en Verilog
viernes 28 de agosto · 16:00–17:40 · en 6 días
GUÍA 28-08-26 Laboratorio de Arquitecturas Computacionales
LA116 · viernes 28/08/2026 · 16:00-17:40 · Sesión 3
Práctica 1 · Bloques combinacionales en Verilog
OBJETIVO DE LA PRÁCTICA
Descripción en Verilog e implementación en FPGA de bloques combinacionales y secuenciales básicos. Hoy la parte combinacional.
BLOQUES A CONSTRUIR
- Compuertas básicas y funciones booleanas.
- Multiplexor 2 a 1, 4 a 1 y 8 a 1, parametrizado en ancho.
- Decodificador 3 a 8 con habilitación.
- Codificador con prioridad.
- Comparador de magnitud.
PARAMETRIZAR DESDE EL PRINCIPIO
Escribir el multiplexor con parameter WIDTH = 32 en vez de fijarlo en 8. En las prácticas siguientes se van a necesitar los mismos bloques con anchos distintos, y reescribirlos cada vez es tiempo perdido.
- module mux2 #(parameter WIDTH = 32) (input [WIDTH-1:0] a, b, input sel, output [WIDTH-1:0] y);
LOS ESTILOS
- assign y = sel ? b : a; — el operador ternario es la forma idiomática del multiplexor en Verilog.
- always @(*) con case — conviene cuando hay muchas opciones.
EL DEFAULT OBLIGATORIO
Todo case en un bloque combinacional necesita default, y todo if necesita else. Sin ellos se infiere un latch, la síntesis genera algo distinto de lo simulado, y el error aparece semanas después.
VERIFICACIÓN
Con cuatro entradas hay dieciséis combinaciones: la prueba puede ser exhaustiva. Escribir el testbench con un ciclo for que las recorra todas y compare contra el valor esperado con $display.
IMPLEMENTACIÓN
Asignar entradas a interruptores y salidas a LED según el manual de la tarjeta, programar y verificar físicamente cada combinación.
PARA LA PRÓXIMA SESIÓN
La parte secuencial y la entrega de la Práctica 1.
Nada anotado en esta sesión todavía.