Mini GPU

Construye una GPU mínima que combina procesamiento paralelo con salida VGA—renderiza gráficos simples usando aceleración por hardware.

Overview

Este proyecto combina la unidad de procesamiento paralelo con la salida VGA para crear una GPU mínima. La GPU puede ejecutar operaciones gráficas simples como rellenar rectángulos, dibujar líneas o copiar bloques de píxeles—todo acelerado por hardware paralelo. Así es como funcionaban los primeros aceleradores de gráficos 2D antes de que las GPUs 3D se volvieran comunes.

Components Needed

  • 4x SN74LS181 IC (ALU)
  • 4x SN74HC374 IC (Registro)
  • 4x SN74HC393 IC (Contador)
  • 3x SN74HC138 IC (Decodificador)
  • 2x SRAM (6116 o similar)
  • 1x Componentes VGA
  • manyx Cables

Instructions

  1. Diseñar la Arquitectura

    Planifica tu mini GPU: registros de comando (operación, coordenadas, color), procesadores de píxeles paralelos, memoria de búfer de cuadro y etapa de salida VGA. Define comandos simples como FILL, LINE, COPY.

  2. Construir los Registros de Comando

    Crea registros para almacenar: coordenadas X1, Y1, X2, Y2, valor de color y código de operación. Estos definen qué operación gráfica realizar y dónde.

  3. Implementar el Relleno de Rectángulo

    Construye hardware que recorre las coordenadas X e Y dentro del rectángulo definido, escribiendo el valor de color en cada ubicación del búfer de cuadro. Usa contadores para X/Y y comparadores para detectar los bordes.

  4. Añadir Procesamiento Paralelo de Píxeles

    Usa múltiples canales ALU para procesar varios píxeles por reloj. Por ejemplo, rellena 4 píxeles horizontales a la vez teniendo 4 rutas de escritura paralelas al búfer de cuadro.

  5. Conectar a la Salida VGA

    Conecta el búfer de cuadro al controlador VGA. El sistema VGA lee continuamente el búfer de cuadro mientras tu GPU escribe comandos gráficos en él.

  6. Probar los Comandos Gráficos

    ¡Carga coordenadas y color en los registros de comando. Activa la operación de relleno. Observa cómo el rectángulo aparece en el monitor, dibujado por tu hardware!

Challenges

  • Implementa el algoritmo de línea de Bresenham en hardware
  • Añade capacidad de renderizado de caracteres/fuentes
  • Construye un motor de sprites simple
  • Crea un blitter para copias de bloques de memoria
  • Añade transparencia/mezcla alfa