Visualización de caracteres en Verilog con VGA

2

Estoy tomando una introducción al curso de ECE como estudiante de CS y para un proyecto final, vamos a diseñar un juego codificado en Verilog utilizando la pantalla VGA en un tablero DE1-SoC.

Decidí crear un juego de ahorcado, pero estoy atascado en cómo mostrar los personajes en la pantalla VGA. He encontrado tres opciones: hacer el alfabeto y los guiones bajos como imágenes y subirlos a la pantalla VGA, usar algún tipo de búfer de caracteres integrado (encontré información sobre esa parte en línea pero no puedo encontrar ningún ejemplo de uso de it) o simplemente dibuja cada personaje píxel por píxel.

La forma píxel por píxel parece extremadamente complicada, pero al mismo tiempo, casi no hay recursos que pueda encontrar sobre los otros dos métodos. ¿Alguien puede decirme de qué manera sería más eficiente y fácil trabajar con mi juego? Solo aprendimos realmente cómo mostrar formas en clase, pero no estoy seguro de que dibujar cada letra sea el método más eficiente.

    
pregunta nigerianmahogany

1 respuesta

1

En última instancia, tendrá que enviar datos de píxeles a la pantalla. No hay manera de evitar eso; Así es como funciona VGA. El monitor en el otro extremo solo comprende marcos, el FPGA necesitará generar marcos completos a la velocidad correcta. La forma más sencilla de hacerlo es tener un búfer de cuadros que contenga datos de píxeles para toda la pantalla. Esto generalmente requerirá más memoria que la que tendrá el FPGA internamente, por lo que eso significa que su búfer de cuadros tendrá que estar en una memoria externa.

Sin embargo, si lo que pretende mostrar tiene cierta estructura, es posible que no necesite un búfer de cuadros completo. Por ejemplo, si desea hacer una visualización de solo texto, todo lo que necesita es un búfer de caracteres que indique qué carácter mostrar en cada posición de la pantalla, cada posición correspondiente a una caja de píxeles del tamaño de un carácter. Luego, puede crear una 'asignación' entre los caracteres en el búfer y los píxeles en la pantalla: un búfer de fuente. Para generar una línea de video, extraiga los caracteres de la fila correspondiente en el búfer de caracteres, úselo para indexar el búfer de fuente y luego muestre los píxeles que corresponden a la fila en particular en los caracteres seleccionados. Esto sería una línea de dibujo de texto muy simple. También es posible hacer algo similar con sprites para que pueda hacer gráficos básicos sin necesidad de un búfer de cuadros completo. Dependiendo de la implementación, puede ser más eficiente usar un motor de dibujo de sprite de hardware ya que mover el sprite solo implica actualizar la posición en el motor de dibujo en lugar de reescribir todos los píxeles que forman el sprite.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas