Estoy tomando una introducción al curso ECE como estudiante de informática y para un proyecto final vamos a diseñar un juego codificado en Verilog usando la pantalla VGA en una placa DE1-SoC.
Decidí crear un juego del ahorcado, pero no sé cómo mostrar los personajes en la pantalla VGA. Se me ocurrieron 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 incorporado (encontré información sobre esa parte en línea, pero no puedo encontrar ningún ejemplo del uso it) o simplemente dibujar cada carácter 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 cuál sería la forma más eficiente y fácil de usar para mi juego? Realmente solo aprendimos a mostrar formas en clase, pero no estoy seguro de que dibujar cada letra sea el método más eficiente.
En última instancia, tendrá que enviar datos de píxeles a la pantalla. No hay forma de evitar eso; así es como funciona VGA. El monitor en el otro extremo solo entiende cuadros, el FPGA necesitará generar cuadros completos a la velocidad correcta. La forma más sencilla de hacer esto es tener un búfer de fotogramas que contenga datos de píxeles para toda la pantalla. Esto generalmente requerirá más memoria de la que tendrá internamente el FPGA, lo que significa que su búfer de cuadros tendrá que estar en una memoria externa.
Sin embargo, si lo que pretende mostrar tiene alguna estructura, es posible que no necesite un búfer de cuadro completo. Por ejemplo, si desea hacer una pantalla de solo texto, todo lo que necesita es un búfer de caracteres que indica qué carácter mostrar en cada posición de la pantalla, cada posición corresponde a un cuadro de píxeles del tamaño de un carácter. Luego puede crear un 'mapeo' 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, utilícelos para indexar el búfer de fuentes y luego muestre los píxeles que corresponden a la fila particular en los caracteres seleccionados. Esta sería una tubería de dibujo de texto muy simple. También es posible hacer algo similar con sprites para que pueda hacer gráficos básicos sin requerir un búfer de cuadro completo. Dependiendo de la implementación, puede ser más eficiente usar un motor de dibujo de sprites 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 componen el sprite.
tom carpintero