--
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/d199dfd8-4c64-4b70-9d21-a34e791bda4b%40googlegroups.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.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/ab8c3010-c75b-4b77-a3fb-c8578694dece%40googlegroups.com.
¿Cómo que gracias? :)))
¡¡Gracias a ti por probarlo!!
¿Lo has probado tal y como está el controlador de VGA, o le has cambiado la frecuencia a 85Hz?
Saludos
Juan Manuel Rico
--
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/b256517d-2311-4d62-9785-0c7beea9c133%40googlegroups.com.
@@ -45,15 +45,15 @@ module dinamic (
// Velocity increment in both direction.
wire pixel;
reg [9:0] incx = 1; // Increment in a x direction.
reg [9:0] incy = 2; // Increment in a y direction.
- reg [5:0] delay = 15; // Delay for animation.
+ reg [5:0] delay = 16; // Delay for animation.
reg [31:0] counter = 0; // Counter for delay.
// Increment and decrement animation.
- always @(posedge counter[20])
+ always @(posedge counter[22])
begin
if (inc_vel) delay = delay + 1;
if (dec_vel) delay = delay - 1;
end
--
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/e911742c-3eef-44c0-8b03-3522133b3114%40googlegroups.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.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/b1a68fcd-5430-4170-afd3-178edafe981b%40googlegroups.com.
Justo debajo de los includes, añades esta línea:Hola Juanma!Ya lo he estado revisando. La solución está incluida en el pull-request que te envié el finde en el repositiorio screen-logo. Lo puedes mirar ahí, en el fichero screen-logo.ice
https://github.com/juanmard/screen-logolocalparam LOGO = "logo.list";Con ella, icestudio incluirá logo.list como un fichero de proyecto internoSaludos, Obijuan
El 3 de octubre de 2017, 21:03, Juanma Rico <juan...@gmail.com> escribió:
¡¡Gracias Juan!!
Espero esa línea... :)))
Saludos
Juan Manuel Rico
--
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.
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/b1a68fcd-5430-4170-afd3-178edafe981b%40googlegroups.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.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/CABqu7xqH19efUJf24%3DLva_7Y-DAkvx90O0RojmUrqqdrz%2BBp2g%40mail.gmail.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/CABqu7xqH19efUJf24%3DLva_7Y-DAkvx90O0RojmUrqqdrz%2BBp2g%40mail.gmail.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
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/CAOPL7BmpifBTjwnxdroxCn0yGc3D2sha_Q%2Bb6X8ddDQ2DR-2Jg%40mail.gmail.com.
Saludos
Juan Manuel Rico
--
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/e050715d-d73d-416f-9a27-16cd3b0cdffd%40googlegroups.com.
Juan Manuel Rico
--
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/d15dcfba-08cc-486f-a2e6-d398607850ef%40googlegroups.com.
Saludos, ObijuanSi encuentro un hueco luego, lo miroLo he estado probando, pero no me ha funcionado. Sale la pantalla blanca. Mirando los recursos que ocupa, he visto que sólo consume 28 PLBs, mientras que la versión que sí funciona requiere 150 PLBs. Es mucha diferencia. Tengo la sensación de que hay algo que no está conectado y Yosys por tanto lo eliminaHola Juanma!Tiene una pinta increible!! 😊
El 4 de octubre de 2017, 13:05, Juanma Rico <juan...@gmail.com> escribió:
Buenaaasssss.... :))
¡¡Ya está listo!! En un ratillo antes de comer lo he preparado... :)
No he podido probarlo (no dispongo de la iceZum Alhambra) pero corrigiendo los errores ha pasado la verificación desde el fichero principal (screen-logo.ice)
Debería funcionar.. pero he hecho muchos cambios y no estoy seguro. Por si lo queréis probar (o por lo menos ver como lo he construído por bloques) os adjunto un comprimido. Ya me contáis.
Saludos.
Juan Manuel Rico
--
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.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.
--
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/eabf8d4c-8028-4a4b-8893-55c47d6b69dc%40googlegroups.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.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/1694c0ab-f424-4e20-98df-0ecd6e0d4efb%40googlegroups.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.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/fd07d4ec-f2b3-46d5-a3fe-fab22a2980c6%40googlegroups.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.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/b7821562-8190-45e8-9475-714f40801d55%40googlegroups.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.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/2a96a6fc-6a34-454f-876f-5c1d7f163d10%40googlegroups.com.
//@include "..\logo.v"
¿Qué te parece? :)))
Ya me cuentas.
Saludos.
Juan Manuel Rico
--
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/aa77535e-c0b9-4fd6-8cec-2522c5481cb4%40googlegroups.com.
> Para publicar en este grupo, envía un correo electrónico a
Perfecto... pues te pregunto... :)))
En las comparaciones para cambiar de sentido la velocidad hay dos opciones que no termino de entender...(para la x y la y)if (x_logo>=x_logo_max || x_logo>=(VISIBLECOLS-SPEED-border) || x_logo<border || x_logo<SPEED)....if (y_logo>=y_logo_max || y_logo>=(VISIBLEROWS-SPEED-border) || y_logo<border || y_logo<SPEED)
¿Por qué esas comparaciones lógicas en rojo? ¿Qué evitan si ya están las de límites de borde? ¿Por qué no usas x_logo_min? Además, "dimensionalmente" no me cuadran... estamos comparando una posición con el resultado de una operación que contiene una velocidad con otras posiciones y dimensiones... e incluso directamente al final se compara una posición como x_logo (metros) con una velocidad como SPEED (metros/segundo) ¿qué sentido tienen?¿Por qué son necesarias?
Por otra parte, en la actualización de las coordenadas....
// update the X coordinate
if (dx==0)
x_logo = x_logo+SPEED;
else
x_logo = x_logo-SPEED;
Comparas con cero (en rojo), en lugar de lo lógico que es comparar como positivo o negativo... ya que dx es una dirección (positiva o negativa)... ¿Comparar con cero es mucho mejor que con "mayor" o "menor"?¿Se obtiene un mejor sintetizado?¿Más eficiente?¿En qué afecta que se defina "signed" la señal y se compare con mayor o menor?
Aprovecho este mismo trozo de código que he pegado... este mismo código está dentro de un bloque "always @(posedge clk)".
No sé mucho de Verilog, pero no paro de leer por todos sitios (sin dar una explicación única... sino como una receta) que en un bloque sincronizado con el reloj (síncrono) no se deben poner asignaciones no-bloqueantes (=), sino bloqueantes (<=). ¿Por qué las utilizas aquí?¿Qué ventajas/desventajas tienen?¿Por qué son necesarias?¿Podrían ser no-bloqueantes?¿A qué se debe esta "receta" que no paro de leer y que nadie me explica? :)))
Otra pregunta... en el bloque de inicialización...
// initialization of logo location, direction and speed
initial
begin
x_logo <= (640 - width_logo)/4;
y_logo <= (480 - height_logo)/4;
dx <=0;
dy <=0;
SPEED <= 1;
end
En este caso sí utilizas asignaciones no-bloqueantes... pero cuando yo hago esto mismo, luego tengo problemas: Por un lado me aparecen comportamientos no previstos, como que al hacer un hard-reset de la FPGA, en algunos casos, no se vuelve a inicializar. Es como si por algún motivo no ejecutara este bloque de inicializacion (He leido que es porque este bloque solo es para los test-bench y no se termina de sintetizar bien... aunque también he leido lo contrario...), o bien, con el bloque de inicialización, me aparecen errores de "drivers" duplicados si, además de estas, hago asignaciones no-bloqueantes dentro del bloque síncrono involucrando a las mismas variables (con el reset asíncrono tuve muchos problemas y verás que está comentado en el código y no se usa). ¿A qué se debe esto? ¿Qué estoy haciendo mal? ¿A ti te funciona siempre este bloque de inicialización con un hard-reset?¿Y con uno soft-reset?¿Te funciona?
Bueno, igual me he animado y te he preguntado demasiado... Cuando puedas... :)))
Saludos
Juan Manuel Rico
--
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/32b7380b-bf4d-42fe-af11-3401b3064d5f%40googlegroups.com.
Hola Juanma,soy bastante novato con verilog, como te comentaba vengo de utilizar VHDL y otros lenguajes de síntesis de alto nivel. De hecho, la modificación de dynamic.v es una adaptación de un código VHDL que escribí hace muchos años, por lo que no tomes mi código como una referencia de buenas prácticas.Inserto mis respuestas a tus preguntas
El viernes, 27 de octubre de 2017, 1:56:04 (UTC+2), Juanma Rico escribió:
Perfecto... pues te pregunto... :)))
En las comparaciones para cambiar de sentido la velocidad hay dos opciones que no termino de entender...(para la x y la y)if (x_logo>=x_logo_max || x_logo>=(VISIBLECOLS-SPEED-border) || x_logo<border || x_logo<SPEED)....if (y_logo>=y_logo_max || y_logo>=(VISIBLEROWS-SPEED-border) || y_logo<border || y_logo<SPEED)
¿Por qué esas comparaciones lógicas en rojo? ¿Qué evitan si ya están las de límites de borde? ¿Por qué no usas x_logo_min? Además, "dimensionalmente" no me cuadran... estamos comparando una posición con el resultado de una operación que contiene una velocidad con otras posiciones y dimensiones... e incluso directamente al final se compara una posición como x_logo (metros) con una velocidad como SPEED (metros/segundo) ¿qué sentido tienen?¿Por qué son necesarias?
x_logo+width > visiblerows controla que el logo no supere la zona de visualizaciónx_logo+speed > visiblerows controla que la siguiente posición del logo no supere la zona de visualización
speed es la velocidad en pixels/frame, o de otro modo, el incremento en pixels de x_logo (cada frame). Como el valor de x_logo se actualiza cada frame x_logo+speed nos dice la posición del logo en el siguiente frame
Por otra parte, en la actualización de las coordenadas....
// update the X coordinate
if (dx==0)
x_logo = x_logo+SPEED;
else
x_logo = x_logo-SPEED;
Comparas con cero (en rojo), en lugar de lo lógico que es comparar como positivo o negativo... ya que dx es una dirección (positiva o negativa)... ¿Comparar con cero es mucho mejor que con "mayor" o "menor"?¿Se obtiene un mejor sintetizado?¿Más eficiente?¿En qué afecta que se defina "signed" la señal y se compare con mayor o menor?<SC> dx es un registro de 1bit de forma que la codificación de las direcciones será 0: hacia la dcha., 1:hacia la izq. Si la definimos como registro "signed" necesitaríamos 2bit para codificar.
Aprovecho este mismo trozo de código que he pegado... este mismo código está dentro de un bloque "always @(posedge clk)".
No sé mucho de Verilog, pero no paro de leer por todos sitios (sin dar una explicación única... sino como una receta) que en un bloque sincronizado con el reloj (síncrono) no se deben poner asignaciones no-bloqueantes (=), sino bloqueantes (<=). ¿Por qué las utilizas aquí?¿Qué ventajas/desventajas tienen?¿Por qué son necesarias?¿Podrían ser no-bloqueantes?¿A qué se debe esta "receta" que no paro de leer y que nadie me explica? :)))<SC> Ambas asignaciones se pueden utilizar en un bloque sincronizado por reloj. La diferencia entre ellas estriba en que un conjunto de asignaciones bloqueantes (=) se realizan siempre de forma secuencial. Es decir la segunda asignación no se realiza hasta que termina la primera (por eso se le llama bloqueante). Si todas las asignaciones son tipo (<=), estas se realizan simultáneamente (la primera no bloquea a las siguientes).ej:
f1=1; f2=2; f0=0;always@(posedge clk) always@(posedge clk) // en el mismo ciclo se realizan ambas asignaciones
f1=f0; f1<=f0;if (f1==1) if (f1==1)f2=f1; f2<=f1;else elsef2=3; f2=3;f0 0 1 0 f0 0 1 0f1 1 0 1 0 f1 1 0 1 0f2 2 3 1 3 f2 2 1 3 1Caso =: f0=0 entonces f1=0 se comprueba el if (false) y f2=3; f0=1 entonces f1=1 se comprueba el if (true) y f2=1Caso <=: f0=0 entonces f1=0 simultáneamente se comprueba el if (con el valor anterior de f1) (true) y f2=1; etc...
En nuestro caso:Supongamos que d=0 (hacia la derecha) y x_logo>x_logo_max, entonces al entrar en la zona de blanking (endframe) 1) dx cambia de dirección y 2) x_logo=x_logo - speed. En el siguiente frame el logo se visualiza lejos del borde vertical.Ahora cambiamos las asignaciones por <=. Como x_logo>x_logo_max entonces dx cambia de dirección (izq) y simultáneamente x_logo=x_logo + speed. Fíjate que x_logo se sigue incrementando porque todavía no ha detectado el cambio en dx (se ha actualizado simultáneamente). En el siguiente frame el logo se sale parcialmente de la zona de visualización. Volvemos a la zona de blanking y de nuevo x_logo>x_logo_max, entonces dx cambia (dcha) y x_logo =x_logo - speed. El resultado es que el logo no se mueve.
Saludos
Juan Manuel Rico
--
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/789c8e5c-62ef-4a8d-b25f-1f5d3c6138ec%40googlegroups.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 una entrada 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 este debate en la Web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/fdd892d4-07b4-41f6-90ac-001e7c38cf0c%40googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.


Pero cuando quiero ver el codigo del principal, me sale muy poco codigo, me gustaria verlo todo, para ver como funciona.
--
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.
Visita este grupo en https://groups.google.com/group/fpga-wars-explorando-el-lado-libre.
Para ver este debate en la Web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/8b5c50f2-cfec-4a3c-8ef7-344e211e1ed3%40googlegroups.com.
Buenas chicos/as,
En espera de los integrados de memoria RAM con protocolo SPI para el proyecto del "Cold/Warm boot" en el que estoy embarcado, he estado jugueteando este fin de semana con la controladora VGA y otros varios conceptos de desarrollo por bloques que me han llevado a un nuevo proyecto: el proyecto screen-logo. :)
Se trata de hacer un simple "salvapantallas" haciendo rebotar un logo por el monitor (por supuesto el de "FPGAWars").
Para ello me he basado en los proyectos de Roland y de Obijuan, la primera idea la plasmé en un papel como diagrama de bloques:
Básicamente son tres bloques, un controlador de vídeo que trabaja a 640x480@60Hz (vga_controller.v), uno de sonido (sound_controller.v, aún sin desarrollar) y un bloque que hace las veces de imagen en pantalla (logo.v). Este logo a su vez tiene una parte gráfica (graphics.v) y una dinámica (dinamic.v).
La parte gráfica toma la posición actual del pixel que se está representando en pantalla y que le entrega la controladora (x_px y y_px) y la posición actual del logo (x_logo y y_logo), según estas posiciones (y su relación entre ellas) envía de vuelta a la controladora el color del pixel que debe representar (color_px), en este caso blanco o verde. La "forma" del logo a su vez lo toma de otro módulo (image.v) que lo obtiene según la posición relativa dada por x_img e y_img.
Realmente suena más complejo de lo que es, el dibujo del diagrama de bloques ayuda en estos casos, como véis con muchos tachones a lo largo del desarrollo, pero tras traducir sin muchos problemas a bloques de Verilog y descubrir algunas peculiaridades del funcionamiento de la FPGA, creo que el proyecto está lo suficientemente avanzado como para compartir.
Os dejo un vídeo del aspecto que tiene actualmente el proyecto funcionando. Cuando conectas la iceZum Alhambra a un monitor VGA aparece esto en pantalla:
Aún queda por desarrollar el módulo de sonido (sound_controller.v) para que suene un buzzer o similar al rebotar, pero me pareció una buena idea que si alguien en alguna charla lo lleva, crea el público asistente que moviendo el ratón va a encontrar un Windows, Linux o algo así por debajo... y se quede con la boca abierta cuando sepa que no son más que unas puertas lógicas bien dispuestas y ordenadas en una FPGA dentro de una placa como la iceZum Alhambra... :)) ¡¡Y todo con herramientas libres!! jejejejeje
Como os digo el proyecto aún necesita de un módulo de sonido, pero lo básico ya lo podéis encontrar aquí, en mi cuenta de github. Si queréis cambiar el logo que rebota os he descrito con detalle como generarlo con GIMP y Matlab (he buscado como obtener el texto desde la imagen con algún plugin o alguna herramienta libre, pero no lo he encontrado... si alguien averigua como, que lo diga... ;D)
Para los que no se manejen con github y quieran probarlo calmando el SAV lo antes posible, os adjunto un comprimido con los ficheros necesarios.
Simplemente descomprimir en una carpeta y escribir apio upload. Si aparecen "warnings" del módulo de sonido es normal, está a medio construir.
Ya me contáis, cualquier duda... en este hilo. :))
Saludos.
Juan Manuel Rico
Pdta: Yo he adaptado el controlador VGA a mi monitor de frecuencia fija de 60Hz, si disponéis de un monitor que admita los 85Hz podéis usar los parámetros del PLL del proyecto de Roland, que debe funcionar sin problemas (aunque yo con mi "cutre monitor" no puedo probarlo).
Pdta2: Para los que no les gusten los ficheros de código he intentado pasar los bloques de Verilog a bloques de código en icestudio, pero me he quedado atascado a la primera al intentar utilizar el PLL desde icestudio. Desgraciadamente sin controladora VGA no podemos hacer ninguna prueba real. Si alguien sabe cómo integrar el PLL en icestudio le estaría agradecido me dijera y así puedo seguir con ello, de hecho si tiene mucho, mucho interés y se anima le paso lo que yo he hecho hasta ahora en icestudio para que continúe el trabajo. :))
Bueno, mejor voy a esperar a avanzar en el curso de obijuan, creo que quiero correr mas de lo que mis pies pueden.
--
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/f912e797-b982-4fac-bd1e-9d8c09a5f6f7%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.