Buenas Roland,
Gracias por saciar mi curiosidad... ;))
Estoy con
Obijuan, tu proyecto es muy inspirador y para mi lo fue en su momento, por eso también... ¡gracias!. :)))
Lo de las tildes no te lo puedo perdonar... hoy día que ya hasta
Windows permite caracteres kanji, hiragana y katakana japoneses.... en varios tipos de teclados... una "ñ" y unas cuantas tildes seguro que no deben plantearte problemas en tu sistema operativo... jejejejejeje :P
Y sí, te he de pedir perdón, no vi la lista TODO del
readme.md... actualicé el proyecto y me fui directamente al código para probarlo... culpa mia.
Respecto a incluir o no el PLL en la simulación y el
Makefile, igual puedes resolver esto rápido y eliminarlo de tu lista si le echas un vistazo al proyecto de
Alexandre (uno de los últimos afectados por el
"virus de la VGA"... jejejejeje). En este proyecto
experimenta con los caracteres y la VGA. Él no usa apio ni icestudio, como tú, pero sí tiene hecho un
Makefile y se
salta el PLL en la simulación, con lo que mantiene todo en el mismo fichero
vga_sync.v (en tu caso en el
vga_controller.v).
Respecto a lo de hacer pasar el registro
rgb por la controladora... por experiencia te diré que eso al final trae problemas. Es parecido, no digo que sea igual, a esa
"realimentación de información" (perdona
Unai, pero aún no encontré la palabra correcta) del color del pixel que yo hacía en mis primeros proyectos y que me terminó dando problemas, teniéndolo que desechar. Me limitaba mucho para hacer crecer los proyectos VGA (posiblemente por mi ignorancia en como tratarla correctamente, ahora sé que con un
"pipeline" bien construido se puede salvar...).
No digo que tengas que cambiar tu proceso mental; pero, por si tienes curiosidad, yo lo hago fuera de la controladora, simplemente envío una señal desde la controladora de
"activevideo" para pasar a cero los píxeles no visibles. Puedes ver el esquema
aquí en la adaptación que hice para tu juego.
Visto lo visto te preguntarás qué ventajas tiene esto... al fin y al cabo es lo mismo, en lugar de hacerlo dentro, lo haces fuera del módulo de la controladora... :)))
Bueno, tienes razón, pero para mi tiene una gran ventaja. De esta manera, en proyectos grandes o que impliquen una dinámica independiente de la visualización, puedes actualizar la dinámica en momentos en los que no se esté dibujando en pantalla (cuando no esté activa la señal "activevideo", a la frecuencia del "frame"), con lo que la imagen es más estable y no parpadea (esto me lo enseñó Sergio con su colección iPxs, gracias Sergio... ;)).
Esto el ojo humano no lo detecta, pero al final el cerebro sí y ves algo raro que al final te cansa la vista.
Incluso en la foto que te adjunté puede verse que hay un marciano "fantasma" a la izquierda... se está dibujando, pero ya no estaba allí en el siguiente
"frame" (imagino que a 85Hz en tu monitor esto ni se nota, pero a 72Hz se puede incluso fotagrafiar este efecto... curioso al menos ;) )
He estado echando un vistazo (muy rápido) al proyecto MIST, es muy interesante, inconvenientes que le veo: usa como idioma HDL de síntesis VHDL y no Verilog y por otra parte la FPGA que forma parte y es el corazón de la placa MiST es una
Altera Cyclone EP3C25, que sospecho que tardará mucho en ser una FPGA que se pueda programar con herramientas libres...
Así que sin tener un GHDL en condiciones y sin la FPGA con la ingeniería inversa hecha... sospecho que el trabajo de traducir a Verilog y adaptarlo a otra placa con características similares a la MiST (que yo sepa aún no está desarrollada), se me antoja un trabajo muy arduo para el poco tiempo que disponemos todos...
Pero... ¡Oye! Si te animas y quieres ser de nuevo una inspiración para el grupo... ¡Adelante! Yo estaré ahí para dejarme inspirar... :)))
Un saludo
Juan Manuel Rico