Procesador de video basado en MCU [cerrado]

-1

EDITAR: Aclare el alcance de la pregunta.

Estoy planeando crear una computadora Z80 hecha en casa. Una cosa que me ha decepcionado con respecto a otros diseños es la falta de salida de gráficos en color, todos tenían modo de texto o, rara vez, salida de gráficos monocromáticos.

Mi idea es crear una GPU de 32 colores QQVGA (160x120) o 16 colores QVGA (320x240), utilizando MCU como ATMEL o Microchip en las líneas de ATMega y PIC. Debería poder emitir sobre Compuesto o VGA.

El problema principal es obtener datos útiles del Z80 para esta GPU hecha en casa. ¿Cómo enviaría datos de sprites, selección de color y posición de la pantalla para que esta GPU no use demasiado espacio de direcciones?

Las paletas de colores que pretendo implementar son las paletas DB16 / DB32 .

Publicación anterior en el spoiler a continuación.

  

Estoy buscando diseñar un procesador de video para un diseño de computadora homebrew z80. Estoy planeando producir en VGA usando un Atmel ATMega 328. Mi preocupación es cómo implementar un modo gráfico. Tengo 13 registros disponibles para trabajar (otros tres para salida de solo texto). ¿Cómo puedo hacer 16/32 sprites de color en resoluciones VGA y media VGA? Cualquier idea de implementación sería genial.

    
pregunta Herobrine2Nether

3 respuestas

0

He visto a los procesadores integrados basados en ARM hacer algo similar a sus requisitos. Algo así como el STM32F407 de ST, el reloj a 168 MHz puede generar video VGA usando el acceso directo a la memoria (DMA) que alimenta la RAM local a los pines GPIO de salida en serie. Lo que vi no era color (BW 640x480), pero sus requisitos de resolución más baja deberían permitir una salida de color basta. La señal de sincronización y las solicitudes de DMA se sincronizaron con temporizadores en chip. Se disponía de suficiente potencia para realizar todo el procesamiento de video, mouse & Interfaz de teclado y mucho más, sin duda lo suficiente como para hacer un procesamiento rápido de sprites.
Este procesador es considerablemente más potente que su Z80, y también es considerablemente más difícil de programar. Sin asistencia de hardware, se requiere un procesador de propósito general muy capaz.
 Un Z80 dedicado podría hacer video VGA, pero necesitaría al menos alguna asistencia de hardware. Supongo que este Z80 dedicado podría tener suficiente potencia para realizar el procesamiento de sprites, dependiendo de cómo ayude el hardware. Los detalles de esa asistencia de hardware son demasiado complejos para describirlos aquí.
Los microcontroladores generalmente no tienen suficiente RAM para el (los) búfer (es) de cuadro (s), al menos no los más simples en la línea ATMEL o Microchip que solo pueden acceder a la memoria RAM en chip. Y de todos modos, no tienen suficiente ancho de banda de E / S, para sus requisitos.

    
respondido por el glen_geek
2

El Uzebox hace esto mediante el overclocking de un ATmega644 a 28,636 MHz. Esto funciona, han construido algunos de estos. Por supuesto, también tiene toda la lógica del juego dentro, por lo que no necesitarías tu Z80 en ese momento.

    
respondido por el Janka
0

Un Atmega328 es demasiado lento para generar una señal VGA sobre la marcha. Por lo tanto, necesitaría un chip controlador de video externo que integre un framebuffer y un DAC. En ese punto, notaría que el Atmega tiene muy poca RAM (por LEJOS) para incluso amortiguar un solo cuadro ...

Así que, en otras palabras, llamo "sin sentido" a su reclamo "debería poder implementar VGA fácilmente".

Lo que querrías tener es algo que tenga la velocidad para calcular cada cuadro VGA sobre la marcha desde la representación de la escena almacenada en sus búferes, o algo con suficiente RAM para almacenar dos cuadros completos, y dejar que el DAC genera un cuadro mientras que la CPU procesa el otro, luego intercambia los dos buffers ("blitting"). En cualquier caso, su Atmega no es el dispositivo correcto, a menos que opte por resoluciones no VGA (es decir, muy baja), o encuentre una forma interesante de abordar, por ejemplo. DRAM externo y alimente un DAC directamente a partir de eso (lo que sin duda sería una hazaña interesante, y lejos de "no hay problema").

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas