Sistema Integrado CPU + GPU
El proyecto definitivo: combina tu CPU y GPU en un sistema de computadora gráfica completo con bus de memoria compartido e interfaz de comandos.
Overview
Este es el proyecto culminante de los proyectos culminantes—un sistema de computadora completo con CPU, GPU, memoria compartida y salida de video. El CPU ejecuta programas que envían comandos a la GPU, que renderiza gráficos en la pantalla. Implementarás E/S mapeada en memoria para la comunicación CPU-GPU, arbitraje de bus para acceso a memoria compartida y sincronización entre los dos procesadores. ¡Esta es una computadora gráfica real y funcional construida con lógica básica!
Components Needed
- 1x Componentes completos del CPU
- 1x Componentes completos de la GPU
- 4x SN74HC245 IC (Transceptor de Bus)
- 2x SN74HC138 IC (Decodificador de Direcciones)
- 4x SRAM (6116 o mayor)
- 1x EEPROM (28C16 o mayor)
- 1x Componentes VGA
- very manyx Cables
Instructions
Diseñar el Mapa de Memoria
Planifica el espacio de direcciones: 0x000-0x0FF para ROM de programa del CPU, 0x100-0x1FF para RAM, 0x200-0x2FF para registros de comando de la GPU, 0x300+ para búfer de cuadro. Los registros de comando de la GPU son la forma en que el CPU se comunica con la GPU.
Construir el Bus Compartido
Crea un bus de direcciones y datos compartido. Usa transceptores 74HC245 para flujo de datos bidireccional. Usa decodificadores de direcciones para habilitar el dispositivo correcto según la dirección.
Implementar el Arbitraje de Bus
Construye la lógica de arbitraje: el CPU tiene prioridad por defecto. Cuando la GPU necesita memoria (para acceso al búfer de cuadro durante el renderizado), solicita el bus. El CPU se pausa hasta que la GPU libera el bus.
Crear la Interfaz de Comandos de la GPU
Añade registros de comando accesibles en direcciones específicas. El CPU escribe el comando, las coordenadas y el color, luego escribe en un registro de "ejecutar" para activar la operación de la GPU.
Añadir la Bandera de Estado/Ocupado
La GPU activa una bandera de "ocupado" mientras procesa. El CPU lee esta bandera para saber cuándo la GPU ha terminado. Esto evita enviar nuevos comandos mientras la GPU está trabajando.
Escribir un Programa de Gráficos
Crea un programa de CPU que: inicialice el sistema, envíe comandos a la GPU para dibujar figuras, espere la finalización y repita para animación. Programa esto en la EEPROM.
Integrar y Depurar
Conecta todos los subsistemas. Usa el modo paso a paso para verificar la comunicación CPU-GPU. Observa las señales del bus con un analizador lógico. Depura los problemas de temporización entre los dos procesadores.
Ejecutar la Demostración
¡Carga tu programa de demostración gráfica. Enciende y observa tu creación: un sistema de computadora completo construido con ICs de lógica básica, ejecutando software que renderiza gráficos en un monitor real!
Challenges
- Añade capacidad de interrupciones para señalización de GPU a CPU
- Implementa una FIFO de comandos para que el CPU pueda encolar múltiples comandos
- Añade entrada de teclado o joystick para interactividad
- Crea un juego simple que se ejecute en tu computadora
- Expande a un conjunto de instrucciones de CPU más potente