[VGA][Icestudio] Monsterled: siempre hay un led más grande :-)

430 views
Skip to first unread message

Obijuan

unread,
Sep 1, 2017, 8:26:17 AM9/1/17
to FPGAwars: explorando el lado libre
Hola,

  Para aprender sobre controladores de VGA he empezado por hacer el MonsterLED!!!

https://www.youtube.com/watch?v=OyUPV00xi98

:-)

Estoy usando una icezum Alhmabra a la que he conectado a los pines de 3.3v un conector VGA hembra y unas resistencias. La información la he sacado de esta página:

http://www.fpga4fun.com/PongGame.html

La verdad es que mola un montón usar la pantalla como un LED  :-)   Voy a hacer un componente para icestudio

Todavía no tengo la documentación, pero las pruebas preliminares están en este repo de github:



https://github.com/Obijuan/MonsterLED

Saludos, Obijuan

Juan José Luna Espinosa

unread,
Sep 1, 2017, 9:05:21 AM9/1/17
to fpga-wars-explora...@googlegroups.com
Guay! Se podría hacer que imprimiese un pequeño bufer de texto que fuese recibiendo por serie.

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/c1552cc0-dd23-42fd-9981-8aaaa61544dd%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Juanma Rico

unread,
Sep 1, 2017, 10:04:22 AM9/1/17
to FPGAwars: explorando el lado libre
¡¡¡Guauuuuu!!! ¡Estas a tope!
¡Y la idea me encanta! Esto tengo que probarlo... :))

Obijuan

unread,
Sep 1, 2017, 12:59:24 PM9/1/17
to FPGAwars: explorando el lado libre
También he probado con 2 MonsterLEDs :-D

https://www.youtube.com/watch?v=5nk7IDXf6Tg

Saludos, Obijuan

Juanma Rico

unread,
Sep 1, 2017, 1:08:11 PM9/1/17
to FPGAwars: explorando el lado libre

Juan, veo en el código que has tenido que modificar los contadores X e Y para ajustarlo a los 12Mhz del reloj interno (imagino que es por eso).
¿Aparecen bien las franjas con esta frecuencia de reloj en la pantalla?

Gracias, saludos.

Pdta: Espero pronto un vídeo del juego del pong completo, funcionando y rebotando por la pantalla... :)))

Obijuan

unread,
Sep 8, 2017, 5:21:32 AM9/8/17
to FPGAwars: explorando el lado libre
Hola,

  Ya he publicado la documentación del MonsterLED para que cualquiera lo prueba probar en su placa. Es el "Hola Mundo" de la VGA :-)

https://github.com/Obijuan/MonsterLED/wiki


He hecho el bloque VGA-LED-RED, con una entrada de un bit. Cuando es 1, la pantalla se pone roja. Cuando es 0 negra.
El ejemplo "hola mundo" para hacer parpadear la pantalla es:




Saludos, Obijuan


El viernes, 1 de septiembre de 2017, 14:26:17 (UTC+2), Obijuan escribió:
Auto Generated Inline Image 1

Obijuan

unread,
Sep 8, 2017, 7:05:28 AM9/8/17
to FPGAwars: explorando el lado libre
He estado probando la idea de Andrés (Prieto-Moreno) de poner una figura en la pantalla... y me encanta :-)

Aquí podéis ver una animación:

https://twitter.com/Obijuan_cube/status/906102604895223808
https://.chttps://twitter.com/Obijuan_cube/status/906102604895223808om/Obijuan_cube/status/906102604895223808


Saludos, Obijuan

El viernes, 1 de septiembre de 2017, 14:26:17 (UTC+2), Obijuan escribió:
IMG_20170908_120907.jpg

Democrito

unread,
Sep 8, 2017, 7:25:45 AM9/8/17
to FPGAwars: explorando el lado libre
Mola! El corazoncito es un puntazo!

Juan José Luna Espinosa

unread,
Sep 8, 2017, 9:07:34 AM9/8/17
to fpga-wars-explora...@googlegroups.com
8-O Dónde has almacenado la imagen del corazón? cabe en la BRAM?

El 8 de septiembre de 2017, 13:25, Democrito <spo...@gmail.com> escribió:
Mola! El corazoncito es un puntazo!
--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.

Juanma Rico

unread,
Sep 8, 2017, 9:11:11 AM9/8/17
to FPGAwars: explorando el lado libre

¡¡Molaaa!!

¿Cómo has generado la forma?
¿definición de un carácter en la ROM y haciendo un "raster" de la misma según X e Y?

Me gusta mucho.... Ya estoy buscando una placa vieja de PC para quitar el conector hembra.... jajajajajaja

:)



Juan Gonzalez Gomez

unread,
Sep 8, 2017, 9:46:53 AM9/8/17
to FPGA-WARS: explorando el lado libre
Lol!  Creo que no habéis visto bien la foto. La pantalla es un "led" todo o nada: rojo o negro. Vamos, un pixel enorme :-)

Luego he recortado la forma de un corazón en un trozo de cartón y lo he puesto delante del monitor  :-D

Quiro aprender todo el tema este de imagenes y controladores VGA. He empezado por lo básico: un único pixel. Y estoy explorando ideas. Luego pasaré a 2 pixels, 4 píxeles.... etc...   Lo bueno de la FPGA es que podemos generar exactamente el controlador que necesitemos. Si con un único pixel nos vale para una aplicación, dejamos recursos libres para otras cosas :-)

Saludos, Obijuan

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.

Juan José Luna Espinosa

unread,
Sep 8, 2017, 9:53:36 AM9/8/17
to fpga-wars-explora...@googlegroups.com
Facepalm enorme!!!! xDDDDDD

El 8 de septiembre de 2017, 15:46, Juan Gonzalez Gomez <obijua...@gmail.com> escribió:
Lol!  Creo que no habéis visto bien la foto. La pantalla es un "led" todo o nada: rojo o negro. Vamos, un pixel enorme :-)

Luego he recortado la forma de un corazón en un trozo de cartón y lo he puesto delante del monitor  :-D

Quiro aprender todo el tema este de imagenes y controladores VGA. He empezado por lo básico: un único pixel. Y estoy explorando ideas. Luego pasaré a 2 pixels, 4 píxeles.... etc...   Lo bueno de la FPGA es que podemos generar exactamente el controlador que necesitemos. Si con un único pixel nos vale para una aplicación, dejamos recursos libres para otras cosas :-)

Saludos, Obijuan
El 8 de septiembre de 2017, 15:11, Juanma Rico <juan...@gmail.com> escribió:

¡¡Molaaa!!

¿Cómo has generado la forma?
¿definición de un carácter en la ROM y haciendo un "raster" de la misma según X e Y?

Me gusta mucho.... Ya estoy buscando una placa vieja de PC para quitar el conector hembra.... jajajajajaja

:)



--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-lib...@googlegroups.com.

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juan Gonzalez Gomez

unread,
Sep 8, 2017, 10:16:22 AM9/8/17
to FPGA-WARS: explorando el lado libre
😂😂😂😂😂😂😂

Pongo la foto aquí dentro para que se vea mejor


Imágenes integradas 1

Puede servir para la decoración de San valentín. Se ponen "corazones" parpadeantes en monitores VGA viejos. En la FPGA se pueden poner varios VGALEDS  :-)

En fin, pura exploración friki-maker 😂😂😂😂

La idea se le ocurrió a Andrés, que lo quiere probar en halloween con la forma de una calabaza

Saludos, Obijuan




Facepalm enorme!!!! xDDDDDD

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juan José Luna Espinosa

unread,
Sep 8, 2017, 10:51:54 AM9/8/17
to fpga-wars-explora...@googlegroups.com
Ummm... con unas cuantas multiplicaciones y comparaciones se podría calcular la forma del corazón (o cualquier otra). Es decir, que se calcule en cada pixel según (x, y). Si el pixel está fuera de la forma, se pinta blanco. Si está dentro, se pinta del color del LED.

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Juanma Rico

unread,
Sep 8, 2017, 11:29:17 AM9/8/17
to FPGAwars: explorando el lado libre

jajajjajajajajajajajajajajajajaja

¡¡Me la has colao!! jajajajajjajajajaja

Yo ya pensando en código Verilog.... ¡¡y es una cartulina!! jajajajajajajaja

Juan, aunque sea en broma, para una conferencia tienes que hacerlo... agarras un bloque en icestudio para la forma en la pantalla... y cuando la gente pregunte la función del bloque... sacas la cartulina, vas y la colocas en el monitor... jajajajajaja

Es verdad que a veces nos complicamos demasiado la vida y consumimos recursos innecesarios... :))))

Saludos

Juanma Rico

unread,
Sep 8, 2017, 11:37:47 AM9/8/17
to FPGAwars: explorando el lado libre

Sí, Juan José, es correcto...  así lo tiene hecho el chaval en el proyecto "Pong Game" en el que se ha basado Juan, pero claro, él lo hace con formas rectangulares, que son formas más sencillas... por eso yo ya estaba pensando en un carácter en memoria ROM (en la BRAM como tú decías) siendo "rasteada" a modo de tarjeta de vídeo...  De hecho, para no gastar recursos, ya estaba pensando en usar la flash que medio controlo por SPI para guardar las fuentes de las letras o caracteres a rastear... :))))

Vamos, que como siempre que hace algo Obijuan se me va la imaginación más de la cuenta... pero lo de la cartulina no me lo esperaba... jajajajajajajaja

Un saludo a todos.

Juanma Rico

unread,
Sep 16, 2017, 2:23:29 PM9/16/17
to FPGAwars: explorando el lado libre

Buenas a todos/as,

Esta tarde he hecho unas pruebas rápidas con la controladora VGA simple. A mi no me ha ido tan bien.
Imagino que es cosa del monitor. Es un monior antiguo que uso para pruebas y sospecho que no llega ni a tener el apellido de "multifrecuencia".
Al ser un monitor de frecuencia fija es algo más "quisquilloso" con las frecuencias de sincronismo y no se adapta bien.

Os cuento un poco como han ido las pruebas por si os encontráis con este tipo de monitor y os sirve de ayuda para saber que no estáis solos en el mundo. :)))
  1. Las pruebas han sido rápidas, luego las conexiones también (no hagáis estas chapuzas en casa...). :)))



  2. No tenía 3 resistencias de 270Ohms, así que usé 3 de 330Ohms. He leido por ahí que solo afecta a la tensión que llega a los pines RGB. He hecho unos cálculos rápidos y estaban en el límite. solo afectan a la luminosidad de la componente.

  3. Al principio quise usar únicamente una línea de color, la Roja (solo tenía una resistencia de 270Ohms), pero el monitor detecta que no hay tensión en el resto de patillas (G, B), dice no tener señal y se apaga.

  4. Una vez puestas las tres componentes de color y encendido el monitor, se ha probado el MonsterLED, cambiando el D0 por el SW2 (evitamos cables por medio) y ha funcionado, pero los sincronismos ya empezaban a hacer cosas sospechosas y el MegaLED ha salido desplazado.



  5. Con ya todas las líneas de color conectadas también quise probar los distintos colores, así que intenté hacer funcionar el ejemplo de barras "intrelazadas" :), pero creo que el resultado no fue el deseado. Ya estaba claro que el sincronismo no iba bien.


  6. Finalmente he intentado mover alguna nave del Space Invaders de Roland (aunque fueran desincronizadas), he hecho las modificaciones de Obijuan a los pines de salida y listo.
    En este caso ha quedado claro y definitivo que mi monitor no es multifrecuencia... te pide funcionar a una resolución y frecuencia fija (por lo menos parece que tiene protección para evitar calentamientos del transformador y al rato se apaga).



    He intentado dar la resolución y la frecuencia que pide el monitor pero no lo he conseguido. Así que mejor cambiar de monitor. :)


Conclusiones:
  • Las resistencias no son críticas siempre que estemos en unos márgenes adecuados (creo que de 0.27V en los pines de entrada del monitor) .
  • Hay que conectar los tres pines RGB aunque no se usen para que el monitor detecte la señal de vídeo y encienda.
  • Si queréis hacer pruebas mejor un monitor multifrecuencia que no sea tan quisquilloso y se adapte bien.
  • Hacer una conexión con un buen conector hembra ya soldado con las resistencias es lo mejor.

Por hacer:

  • Calmado el SAV, esperar a encontrar otro monitor que no sea tan antiguo y permita multifrecuencia.
  • Soldar en condiciones un conector VGA hembra para las pruebas.

Espero pronto tener lista una controladora VGA en condiciones para hacer pruebas con ella. :))


Saludos.



Obijuan

unread,
Sep 17, 2017, 3:39:45 AM9/17/17
to FPGAwars: explorando el lado libre
Hola Juanma!

Gracias por las pruebas! :-)


El sábado, 16 de septiembre de 2017, 20:23:29 (UTC+2), Juanma Rico escribió:Conclusiones:
  • Hay que conectar los tres pines RGB aunque no se usen para que el monitor detecte la señal de vídeo y encienda.

Sí. Siempre tienen que estar conectados. Lo que no es necesario es que tengan la resistencia si no se usan. Es decir, que para pruebas rápidas, pones la resistencia en el Rojo, por ejemplo, y los otros dos los conectas directamente a GND


Te paso este circuito en icestudio para que hagas pruebas con el monitor de frecuencia fija


https://github.com/Obijuan/MonsterLED/raw/master/vga_collection/examples/01-VGA-LED-Tests/04-VGALED-RED-ajuste-sinc.ice



Cambiando el valor donde pone 390, juegas con la frecuencia generada.


Este ejemplo saca una barra vertical gorda, en el centro de la pantalla:




El space invader me funcionó bien en un monitor, pero en otro no (los dos son multifrecuencia)


Con el monsterLED calmé un poco mi SAV de la VGA, pero queda mucho por hacer. Lo primero será hacer un circuito más sencillo para facilitar las pruebas y los ajustes


Saludos, Obijuan







Auto Generated Inline Image 1
Auto Generated Inline Image 2

Juanma Rico

unread,
Sep 17, 2017, 5:50:12 AM9/17/17
to FPGAwars: explorando el lado libre

¡Hola Juan!


El domingo, 17 de septiembre de 2017, 9:39:45 (UTC+2), Obijuan escribió:
Hola Juanma!

Gracias por las pruebas! :-)

De nada, ;-)

El sábado, 16 de septiembre de 2017, 20:23:29 (UTC+2), Juanma Rico escribió:Conclusiones:
  • Hay que conectar los tres pines RGB aunque no se usen para que el monitor detecte la señal de vídeo y encienda.

Sí. Siempre tienen que estar conectados. Lo que no es necesario es que tengan la resistencia si no se usan. Es decir, que para pruebas rápidas, pones la resistencia en el Rojo, por ejemplo, y los otros dos los conectas directamente a GND


¡Es verdad! No se me había ocurrido poner los pines a tierra para engañar la señal de vídeo.... lo tengo que probar, gracias. :))


Te paso este circuito en icestudio para que hagas pruebas con el monitor de frecuencia fija


https://github.com/Obijuan/MonsterLED/raw/master/vga_collection/examples/01-VGA-LED-Tests/04-VGALED-RED-ajuste-sinc.ice



Cambiando el valor donde pone 390, juegas con la frecuencia generada.


¡Genial! Voy a ver si puedo unirlo a tu ejemplo de I2C con el ADC, así pruebo ambos y hago el ajuste de este parámetro "a mano" con el potenciómetro... no prometo nada, pero si lo consigo aviso... :)))
 

Este ejemplo saca una barra vertical gorda, en el centro de la pantalla:




El space invader me funcionó bien en un monitor, pero en otro no (los dos son multifrecuencia)


Sí, habrá que preguntar a Roland (si quisiera contestar se lo agradezco)... en el vgaSI.v (que es el bloque que al parecer genera las señales de sincronismo) utiliza el PLL de la iCE40, para generar una señal de reloj doble??? a partir de la clk (12Mhz), en todos los apuntes de VGA que he mirado utilizan un reloj de 25Mhz para generar la señal, así que tendría sentido generar esa señal doble para tener al menos 24Mhz... sin embargo, en tu definición del fichero PFC haces dclk igual a 21 que es el reloj de 12Mhz de la placa... ¿Esta no tendría que ser la señal clk si realmente el PLL genera la dclk? Como ves no lo tengo muy claro... :((

Por otra parte, si no recuerdo mal, leí en otro hilo que el PLL con yosys no iba como debiera... no sé si puede ser ese el problema o si finalmente se llegó a alguna conclusión que se deba saber para usarlo convenientemente con las herramientas libres... si alguien que haya trabajado con el "hard core" del PLL pudiera concretar los problemas con él, mejor... ;)))


 

Con el monsterLED calmé un poco mi SAV de la VGA, pero queda mucho por hacer. Lo primero será hacer un circuito más sencillo para facilitar las pruebas y los ajustes


Saludos, Obijuan



Gracias Juan, volveré a montar el "chiringuito" de cables e intentar ajustar ese parámetro con el programa que pasaste.
Ya cuento algo si tengo algún avance.

Saludos.

Juanma Rico

unread,
Sep 17, 2017, 10:57:45 AM9/17/17
to FPGAwars: explorando el lado libre



Buenas,

Ya está probado el programa de sincronización de Obijuan. Ya parece que está más centrada la cosa. :))


He modificado el programa básico de Obijuan para que se pueda modificar el parámetro de sincronismo pulsando los botones de la iceZum Alhambra para incrementar y decrementar (no he conseguido hacerlo con el potenciómetro) y los bits menos significativos del parámetro mostrarlos por los leds.

Como icestudio no deja modificar las entradas y salidas una vez creado el bloque de código (sin tener que borrar las conexiones), he modificado directamente el fichero de texto (04-VGALED-RED-ajuste-sinc.ice), con lo que he añadido las dos entradas al bloque (los dos pulsadores) y la salida (bus de 9 bits) del parámetro hacia los leds.



Mientras Obijuan acepta el pull-request podéis encontrar los cambios en este enlace.

He tenido que incluir un contador de retraso para la pulsación de los botones, sino el valor se disparaba sin control (siento la chapucilla, pero era lo más rápido de implemtar) el contador salta cada 2^23 clicks de reloj, es decir con el reloj de 12Mhz cada (2^23)/12*10^6 = 0.6991 segundos, suficiente para incrementar y decrementar sin problemas si se deja pulsado.

De todas formas mi monitor es demasiado sensible y cambia con apenas unas pulsaciones para un lado u otro, descontrolándose demasiado. Sospecho que los 12Mhz andan justillos para generar las señales de sincronismo.

Conclusiones:
  • La FPGA es más rápida de lo que parece, no nos hacemos ni una idea... un contador directamente conectado a una señal exterior (pulsador) "vuela" y es capaz de actualizarse a tal velocidad que parece que no cambia.
  • Los 12Mhz andan muy justos para generar las señales de sincronismo que necesita la VGA. En los monitores de frecuencia fija (al menos en el mio) esto se hace evidente.
  • Modificar directamente los ficheros de icestudio (*.ice) a veces sale a cuenta si las modificaciones son pequeñas y simples. El no tener que repetir el trabajo de definición y conexionado sobre un fichero nuevo se agradece.
Por hacer:
  •   Cuando se suelde una plaquita con el conector VGA aprovechar e incluir un oscilador de más de 25MHz e introducir la señal de reloj desde un pin de propósito general para generar las señales de sincronismo con mayor margen "de juego".
  • Integrar el convertidor AD para modificar el parámetro de sincronismo.

Saludos.
Auto Generated Inline Image 1

Obijuan

unread,
Sep 18, 2017, 1:09:27 AM9/18/17
to FPGAwars: explorando el lado libre
Hola,



El domingo, 17 de septiembre de 2017, 16:57:45 (UTC+2), Juanma Rico escribió:

Como icestudio no deja modificar las entradas y salidas una vez creado el bloque de código (sin tener que borrar las conexiones),


Sí se puede hacer, sin problemas. Haz doble click en el marco del bloque de código. Añade las nuevas salidas/entradas. Y listo. El resto de conexiones permanecen igual que como las tuvieses. No borra ninguna conexión, simplemente añade las nuevas

Icestudio 0.3 ó superior

Saludos, Obijuan


Juanma Rico

unread,
Sep 18, 2017, 3:41:20 AM9/18/17
to FPGAwars: explorando el lado libre

Gracias Juan,

Actué así realmente por "miedo". :))

La última vez que lo hice como indicas me borró todas las conexiones y alguna que otra entrada... y grabé sin copia de seguriad... :(((
Se ve que tengo muy abandonado el icestudio y la cosa se ha corregido, en cualquier caso está claro que es culpa mia por no investigar lo suficiente. :)))

Intentaré actualizar la versión e investigarlo más en profundidad para una próxima vez, todo antes de cambiar directamente el fichero... :)))

Saludos.

Jose Pico

unread,
May 30, 2018, 6:16:16 PM5/30/18
to FPGAwars: explorando el lado libre
Mi primer intento de Monster Led y me he tropezado ya con mi monitor.

Se puso en rojo unos segundos y luego apareció el mensaje y nunca más vi el rojo.

Saludos


El sábado, 16 de septiembre de 2017, 20:23:29 (UTC+2), Juanma Rico escribió:

Juanma Rico

unread,
May 30, 2018, 6:45:14 PM5/30/18
to FPGAwars: explorando el lado libre
Buenas Jose,

Por situarnos...

¿Qué controladora VGA usaste al sintetizar? ¿La de 640x480@72Hz de los ejemplos "screen-xxxx" y de la biblioteca iPxs?
¿O la de 640x480@85Hz del "space invaders" de Roland?

Por otro lado... ¿Usas la icezum Alhambra o la TinyFPGA para las pruebas?

Si yo pude dominar mi cutre-monitor tú puedes con el tuyo... ¡Eso tiene que funcionar! :)))

Un saludo
Juan Manuel Rico

Gorka Guardiola

unread,
May 31, 2018, 3:19:00 AM5/31/18
to fpga-wars-explora...@googlegroups.com
Sí, se puede hacer con una cardioide bien elegida 

(x^2+y^2-1)^3-x^2y^3<0 ⇒ 
 

http://www.wolframalpha.com/input/?i=(x%5E2%2By%5E2-1)%5E3-x%5E2y%5E3%3C0

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
- curiosity sKilled the cat

Juan José Luna Espinosa

unread,
May 31, 2018, 10:26:19 AM5/31/18
to fpga-wars-explora...@googlegroups.com
Anda!, esa forma (ecuación) me suena vagamente, la debí ver hace muchos años. Pero no la recordaba.
Un saludo





--
- curiosity sKilled the cat

--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el-lado-libre+unsubscribe@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explorando-el-lado-li...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.

Jose Pico

unread,
Jun 3, 2018, 5:51:38 PM6/3/18
to FPGAwars: explorando el lado libre


El jueves, 31 de mayo de 2018, 0:45:14 (UTC+2), Juanma Rico escribió:
Buenas Jose,

Por situarnos...

¿Qué controladora VGA usaste al sintetizar? ¿La de 640x480@72Hz de los ejemplos "screen-xxxx" y de la biblioteca iPxs?
¿O la de 640x480@85Hz del "space invaders" de Roland?
     
    Directamente el Monster LED de Obijuan 

Por otro lado... ¿Usas la icezum Alhambra o la TinyFPGA para las pruebas?

   Icestick 

Si yo pude dominar mi cutre-monitor tú puedes con el tuyo... ¡Eso tiene que funcionar! :)))
  
    Seguro que sí.  Saludos 

Juanma Rico

unread,
Jun 3, 2018, 11:52:21 PM6/3/18
to FPGAwars: explorando el lado libre

Buenas Jose,

Pues resulta que justo el MonsterLED no usa "controladora estándar"... es decir, si miras el código verás que no usa el PLL de la FPGA y por tanto la frecuencia del pixel es de 12Mhz (el reloj de la icezum Alhambra) y las cuentas de los pixels que generan los sincronismos horizontal y vertical van de 390x512 (pixeles invisibles incluídos), es decir, las frecuencias de sincronismos no son exactamente las del estándar.

El código en el que se basa Obijuan para el MonsterLED es el de la página fpga4fun. En el apartado "Frecuency generator" verás que explica como intenta conseguir un estándar 640x480@60Hz, pero lo hace para un reloj de 25Mhz y de forma aproximada; sin seguir el estándar, pero confiando en la adaptación de los monitores multifrecuencia.

En el caso del MonsterLED, tampoco se sigue ningún estándar y lo que es peor, el reloj de pixel es de 12Mhz, con lo que para la frecuencia horizontal tenemos 12Mhz/390=30.769kHz (el estándar es de 31.5kHz) y para la frecuencia vertical 12Mhz/(390*512) = 60.096Hz (el estándar es de 60Hz) con lo que es bastante aproximado en estos dos parámetros, pero no en el resto (tiempos de activación de la señal de sincronismo, los back y front porch... etc).

Por tanto, según el código del MonsterLED la controladora sería de unos 390x512@60.1(*) del que yo no he encontrado estándar ninguno ni aproximado.

----------------------------------------
(*) NOTA: No serían tampoco 390x512, ya que hay píxeles que se utilizarán para la sincronización (los invisibles), así que la resolución será mucho menor que esta... como referencia, para el estándar 640x480@60Hz, realmente tenemos 800x524 píxeles con una frecuencia de reloj necesaria de 25.14Mhz, de los cuales el monitor solo mostrará estos 640x480 píxeles... :))

En el caso del MonsterLED en el código solo hace visible los píxeles desde 30 al 344 luego se puede suponer que la resolución horizontal es de 314... pero también se puede tener un pixel visible en negro... así que no sabría decirte la resolución exacta, el que mejor te puede responder a la resolución que se prentende conseguir es el propio Obijuan. :))
----------------------------------------

La cuestión es que según sea de "quisquilloso" tu monitor, funcionará o no funcionará esta controladora integrada en el MonsterLED (en el caso de mi monitor ya te digo que tampoco funcionaba y le pasaba lo mismo, al rato se apaga).

Para asegurarnos lo suyo es tomar un estándar, mantener la resolución y dar la señal de reloj necesaria a cada pixel, pero.... ¿Cómo conseguir una señal de 25.17Mhz a partir de una frecuencia menor del sistema (12Mhz)? Pues con un bloque de la FPGA que aumenta la frecuencia de reloj... un bloque llamado PLL.

Y eso es lo que hizo Roland en su "Space Invaders" adaptando el reloj del pixel para un estándar de 640x480@85Hz, pero mi monitor tampoco se lo tragaba por ser una frecuencia muy alta, así que yo modifiqué la controladora VGA de Roland para un estándar 640x480@72Hz (60Hz no se puede obtener de forma exacta con 12Mhz) y parece que muchos monitores se lo tragan sin problemas.

Por la tarjeta icestick no hay problemas (va también a 12Mhz), creo que Alexandre (o Matthew, no recuerdo) la usa y le funciona la VGA. Por cierto Matthew usa otra controladora VGA distinta a la que yo uso, también puedes probarla (aunque directamente en Verilog, sin pasar por icestudio).

Depués de toda esta "turra"... ;))

Mi consejo: Para hacer pruebas y quedarte tranquilo de que no es del cableado ni nada similar y sólo es cuestión de que tu monitor es tan "quisquilloso" como lo fue el mio en su momento con el MonsterLED, prueba otros ejemplos, el "Space invaders" de Roland (a 85Hz) o alguno de la serie "screen" de los mios (a 72Hz) ... o incluso, si te animas, la colección de Sergio (aunque la controladora es la misma, ya que Sergio se basó en la controladora de 640x480@72Hz para generar los sincronismos en el stream VGA).

De todas formas, si quieres ir a lo sencillo, sencillo... yo hice un test con una barra central y otras de colores para icestudio, puedes probar el test y ver si todo sigue funcionando... y como digo así te quedas tranquilo. :)))


Simplemente descarga o clona el repositorio y abre los ficheros *.ice, sintetiza y prueba.
Ya nos cuentas si el monitor deja de quejarse... :)))

Jose Pico

unread,
Jun 4, 2018, 5:08:46 PM6/4/18
to FPGAwars: explorando el lado libre
 Hola Juanma:

 Muchas gracias por tu explicación.
Está claro que una de las cosas que primero tenía que hacer es comprender el protocolo de VGA.
Una vez entendido  ( ya se lo de las zonas visible-invisibles, como tienen que ser los sincronismos horizontales y veritcales... ) el protocolo todo me será más fácil. Ya he visto que el MonsterLED no sigue ningún estandar por lo que ahora  podré seguir con más fe.
En poder empezaré viendo tus ejemplos que funcionan para ir asimilando bien las bases del VGA.

De nuevo muchas Gracias por tu dedicación.
Reply all
Reply to author
Forward
0 new messages