Cargando y mostrando en el monitor VGA una imagen de fondo en la SDRAM de DE2-115

0

Me gustaría cargar una imagen de fondo que actualmente tengo guardada como .bmp en la SDRAM del DE2-115. Luego me gustaría mostrar esta imagen de fondo en un monitor VGA (640x480). Luego dibujaré imágenes adicionales superpuestas a esta imagen de fondo.

Por cierto, estoy usando NIOS II.

He implementado juegos utilizando un controlador VGA como el rompe ladrillos, pero simplemente tenían colores sólidos que dibujaba en código .sv con bastante facilidad.

Si quiero dibujar este .bmp en el monitor, ¿qué pasos debo seguir? ¿Debo dibujarlo desde el software en C o desde el hardware utilizando un controlador vga y leyendo desde la memoria? Por último, ¿cómo debo subir el .bmp a la SDRAM?

Gracias.

ACTUALIZACIÓN !!: Probablemente debería explicar más del proyecto. Así que estoy tratando de desarrollar un juego de Texas Hold Em. La imagen de fondo fija es una mesa de póquer y en ubicaciones fijas de la mesa quiero superponer las cartas de 2 jugadores, así como las 5 cartas comunes. La mesa de póquer será un .bmp así como cada carta. Basándonos en el juego actual estaremos mostrando diferentes cartas. Tendremos que mostrar varias cartas a la vez.

Así que, efectivamente, lo que quería saber es cómo debo lidiar con mostrar todo lo anterior para un juego determinado. Tengo el juego completamente configurado, sé que solo tengo que determinar cómo almacenaré todos estos .bmp en la memoria y leerlos y mostrarlos durante un juego. Tengo una configuración de controlador VGA y un asignador de colores, pero se usaron para un juego de romper ladrillos que no requería leer de la memoria para dibujar.

    
pregunta user3501476

1 respuesta

2

Necesitas algo como una memoria de video como la que se encuentra en las tarjetas gráficas casuales.

Cambie el controlador VGA para que lea los píxeles repetidamente de la memoria de video. Actualice esta memoria de video con el programa NIOS-II de acuerdo con su juego, por ejemplo, copiando el mapa de bits de la SDRAM a la memoria de video en la ubicación deseada.

La memoria de video requerirá dos puertos, uno para el controlador VGA y otro para el NIOS-II. Para el primer paso, puede usar la memoria de bloque de un chip del FPGA que ofrece dos puertos. Pero la memoria disponible es bastante pequeña (solo ~ 0.5 MB en el FPGA de su placa), por lo que si comienza con 640x480, entonces solo tendrá unos pocos bits por color por píxel. Otra opción sería una memoria de video con una resolución de 320x240 píxeles y luego emitir cada píxel cuatro veces para obtener 640x480.

Para resoluciones más altas (color), normalmente necesita SRAM externa (pero solo 2 MB disponibles en su tarjeta FPGA). Pero si esto ya está ocupado por el NIOS-II, puede asignar estáticamente parte de él para la memoria de video. Para permitir la lectura desde la memoria por parte del controlador VGA, la conexión del bus NIOS-II con la memoria debe extenderse a algún tipo de bus multi-maestro.

Notas adicionales : Para cargar la imagen hay varias posibilidades: tarjeta SD, Gigabit Ethernet, puerto RS232.

    
respondido por el Martin Zabel

Lea otras preguntas en las etiquetas