VGA en FPGA: driver SystemVerilog de 640×480 a 25 MHz

¿Qué es VGA y por qué sigue siendo un gran ejercicio de hardware?

VGA nació en 1987 con la línea PS/2 de IBM y sigue siendo, casi cuatro décadas después, uno de los mejores ejercicios para aprender diseño de hardware digital. Un driver completo para mostrar 640×480 a 60 Hz cabe en un puñado de contadores escritos en SystemVerilog y necesita apenas un reloj de 25.175 MHz. Para un founder, la lección es directa: entender cómo se administra el tiempo a nivel de señal es la misma disciplina que después decide si tu producto responde en 80 o en 800 milisegundos.

VGA es un estándar de video analógico que IBM creó para sus computadoras PS/2 y que fue el formato dominante en equipos compatibles con IBM PC aproximadamente entre 1990 y 2005, según How-To Geek. Usa un conector de 15 pines, el DE-15, y todavía aparece en proyectores de aulas, iglesias y salas de conferencias.

Lo interesante es que VGA fue diseñado para una tecnología que ya no existe: los tubos de rayos catódicos (CRT). Esas pantallas pesaban más de 80 libras y dibujaban la imagen con un solo haz de electrones que barría la pantalla píxel por píxel, no de golpe como los paneles actuales. El haz dispara electrones contra una capa de fósforo que los convierte en luz visible, y necesita tiempo para desplazarse tanto en horizontal como en vertical. Ese movimiento lo gobiernan dos señales: HSync y VSync.

¿Y esto cómo se aplica en tu negocio?

En CAR, dueños de empresa de Latinoamérica y España usan la tecnología para ser más rentables. Empiezas con una ruta de 7 días y terminas con un sistema funcionando en tu negocio.

👥 Probar 7 días

Esa arquitectura serial es justamente lo que hace de VGA un ejercicio tan didáctico: obliga a razonar en tiempo, no en fotogramas.

¿Cómo se construye un driver VGA en SystemVerilog?

El autor del post lo hizo en su laboratorio de Diseño Lógico Digital, sobre una FPGA DE10-Lite de terasIC. El primer obstáculo es el reloj: las tablas de referencia de TinyVGA indican que 640×480 a 60 Hz requiere un reloj de píxel de 25.175 MHz, y la placa solo trae un oscilador de 50 MHz.

La solución no necesita un PLL. Basta un módulo en SystemVerilog que alterna una señal cada dos ciclos de reloj: un divisor de reloj rudimentario que convierte los 50 MHz en 25 MHz. Como el diseño controla HSync y VSync, la pantalla se re-sincroniza sola y la diferencia entre 25 y 25.175 MHz deja de ser un problema.

El segundo obstáculo es saber en qué punto del fotograma estás en cada instante. Para eso hacen falta contadores, y estos son los números que importan:

  • Horizontal: 640 píxeles visibles + 16 de front porch + 96 de sync pulse + 16 de back porch = 800
  • Vertical: 480 líneas visibles + 33 de front porch + 2 de sync pulse + 10 de back porch = 525

Ochocientos cabe cómodamente en 10 bits. Con esos contadores, el diseño sabe que solo puede enviar color entre los valores 35 y 784 en horizontal, y entre 33 y 520 en vertical. Fuera de esa ventana las señales de color se apagan: en un CRT real, disparar electrones contra las paredes del tubo durante el retrazo podía dañar el panel.

¿Cómo se resuelve el problema de los pocos switches?

La DE10-Lite tiene solo 10 switches, y el autor describe la salida de color de VGA como un espacio de 4.096 colores (tres canales de 4 bits cada uno, 12 bits en total). Con 10 entradas no se llega a 12 bits, así que usó un multiplexor para mapear cuatro combinaciones de entrada a valores de 4 bits:

  • 00 → 0000
  • 01 → 0101
  • 10 → 1010
  • 11 → 1111

Es un compromiso: no cubre todo el espacio de color, pero sí una porción mucho más amplia que conectar los switches directo. Y es un buen recordatorio de que en hardware casi nunca tienes los pines que quisieras.

¿Qué pasa cuando pasas de la simulación al hardware?

Simular el driver es solo la mitad del trabajo. La otra mitad es asignar los pines al puerto VGA y comprobar si la pantalla enciende. El autor estima que dedicó más de 10 horas solo a corregir los timings, con varios desvíos que terminaron demostrando que tenía que rehacer partes del diseño.

La segunda parte del laboratorio consistió en mostrar una imagen en lugar de solo color: cargar los datos en la ROM de la FPGA y renderizarlos. Eso implica generar un archivo de inicialización de memoria a partir de la imagen —en su caso, Asterix, el personaje de la historieta— y usar los contadores horizontales y verticales como coordenadas de píxel con un offset dentro de la ROM.

Un detalle revelador: el programa original que generaba ese archivo estaba escrito en Python y arrastraba problemas de dependencias. El autor lo reescribió en Go para entender mejor el formato y hacerlo multiplataforma. Ese trabajo extra le sirvió para conseguir un puesto de asistente de cátedra.

Para el crédito adicional implementó transparencia usando el canal alfa guardado en el último byte de cada píxel, y probó tres caminos:

  • Chequeo booleano: mostrar el píxel solo si es totalmente opaco. Funciona, pero los bordes quedan escalonados.
  • Composición alfa con desplazamientos de bits: un truco para evitar multiplicaciones, que en hardware consumen muchas compuertas. Funcionó, pero introducía errores de redondeo que alteraban el color de fondo.
  • Multiplicación real: la versión que terminó presentando, porque el resultado era fiel al fondo original.

¿Qué significa esto para tu startup?

Aunque sea un proyecto de laboratorio, hay tres lecciones que aplican directo a construir producto.

El timing es producto, no un detalle de implementación. El autor pasó más de 10 horas ajustando contadores. En software, ese mismo problema se llama latencia, y suele ser lo que decide si un usuario se queda o se va. Si tu producto depende de video, audio, datos en tiempo real o cualquier flujo continuo, el presupuesto de tiempo es una decisión de arquitectura, no una optimización que se deja para el final.

Los recursos escasos fuerzan buenas decisiones. Diez switches para representar 12 bits de color obligaron a un multiplexor y a una tabla de mapeo. En una startup el recurso escaso es el equipo, el capital o la capacidad de cómputo. La pregunta útil no es «¿cómo consigo más?», sino «¿qué mapeo me da la mayor cobertura con lo que ya tengo?».

El trabajo que nadie pidió es el que se nota. Reescribir en Go una herramienta que ya funcionaba en Python no era parte del laboratorio, y le abrió una puerta concreta. Ese patrón se repite en startups: quien arregla lo que nadie pidió arreglar suele terminar liderando.

Tres acciones concretas para esta semana

  • Define el presupuesto de tiempo de tu flujo crítico. Elige la ruta más importante de tu producto, calcula cuántos milisegundos tiene disponibles y mide el consumo real. Sin ese número, cualquier discusión de performance es opinión.
  • Convierte tus scripts internos en herramientas públicas. Si escribiste algo para resolver un problema tuyo, hazlo multiplataforma y publícalo. Es la vía más barata a reputación técnica que existe, y funciona igual para un desarrollador que para un founder.
  • Si quieres entrar a hardware o embedded, empieza por un proyecto con salida visible. Un driver VGA, un sensor con dashboard, un controlador de motor. El feedback físico acorta el ciclo de aprendizaje de una forma que ningún tutorial logra.

¿Por qué el hardware vuelve a importar?

VGA es un estándar analógico que las conexiones digitales como HDMI ya reemplazaron en el consumo masivo, según How-To Geek. Pero la FPGA que usa el laboratorio sigue siendo una plataforma vigente, y la habilidad de diseñar lógica digital no se jubiló con el conector DE-15.

Para un founder hispanohablante hay una lectura práctica: el talento de hardware y embedded es escaso en la región, y proyectos de robótica, agrotech, logística o dispositivos médicos lo necesitan. Aprender SystemVerilog no te convierte en fabricante de chips, pero te permite conversar de igual a igual con un equipo de hardware, evaluar si un proveedor está exagerando sus capacidades y prototipar antes de comprometer capital.

Conclusión

El proyecto del autor no es un producto ni una startup. Es un laboratorio de facultad que le tomó más de 10 horas de depuración y que terminó con un personaje de historieta renderizado en una pantalla. Pero contiene, en miniatura, casi todo lo que hace difícil construir hardware: presupuesto de tiempo, recursos contados, verificación contra la realidad y decisiones de compromiso.

La lección para un founder es simple: los fundamentos que parecen obsoletos —un estándar de 1987, un conector que ya casi nadie usa— suelen ser el mejor gimnasio para las habilidades que sí vas a necesitar.

Fuentes

¿te gustó o sirvió lo que leíste?, Por favor, comparte.

¿Y esto cómo se aplica en tu negocio?

En CAR, dueños de empresa de Latinoamérica y España usan la tecnología para ser más rentables. Empiezas con una ruta de 7 días y terminas con un sistema funcionando en tu negocio.

👥 Probar 7 días

Daily Shot: Tu ventaja táctica

Lo que pasó en las últimas 24 horas, resumido para que tú no tengas que filtrarlo.

Suscríbete para recibir cada mañana la curaduría definitiva del ecosistema startup e inversionista. Sin ruido ni rodeos, solo la información estratégica que necesitas para avanzar:

  • Venture Capital & Inversiones: Rondas, fondos y movimientos de capital.
  • IA & Tecnología: Tendencias, Web3 y herramientas de automatización.
  • Modelos de Negocio: Actualidad en SaaS, Fintech y Cripto.
  • Propósito: Erradicar el estancamiento informativo dándote claridad desde tu primer café.

📡 El Daily Shot Startupero

Noticias del ecosistema startup en 2 minutos. Gratis, todos los días.

Share to...