[ICESTUDIO] Duda/Problema creación de bloque a partir de otro archivo- Servomotor a dos posiciones

114 views
Skip to first unread message

Julián Caro Linares

unread,
Apr 10, 2017, 1:59:56 PM4/10/17
to FPGAwars: explorando el lado libre
Buenas tardes. A ver si me podéis ayudar, tiene toda la pinta de un fallo conceptual que no pillo muy bien.

Estoy modificando el ejemplo de servo a dos posiciones, le he añadido dos parámetros que configuro mediante el nuevo bloque constante:


Le pongo un generador de bits y dos divisores para ralentizar el cambio ya que estoy simulando el movimiento de un lado de mi hexápodo.

El circuito en su propio proyecto de ICestudio funciona estupendamente.

El problema viene cuando quiero utilizar dicho bloque en otro proyecto:



Le introduzco de nuevo las constantes, sintentizo y cargo y el servomotor no ser mueve. Lo cual no acabo de entender demasiado bien.

¿Qué estoy haciendo mal? Probablemente sea una "tontá" pero ahora mismo no caigo.


un saludo

Julián Caro Linares

unread,
Apr 10, 2017, 2:01:53 PM4/10/17
to FPGAwars: explorando el lado libre
Cabeza la mía, adjunto ambos archivos por si son de utilidad.

Un saludo
prueba_movimiento.ice
servo_two_positions_parametric.ice

Juan Gonzalez Gomez

unread,
Apr 10, 2017, 2:33:25 PM4/10/17
to FPGA-WARS: explorando el lado libre
Hola Julian!

Justo este fin de semana me ha pasado algo parecido. La solución es muy fácil: se te ha olvidado exportar el reloj en el bloque. Tienes que crear un pin verde de reloj, y conectarlo al corazon y al modulo del servo

En el bloque superior se conecta al reloj del sistema

Saludos, Juan

El 10/4/2017 8:01 p. m., "Julián Caro Linares" <jcarol...@gmail.com> escribió:
Cabeza la mía, adjunto ambos archivos por si son de utilidad.

Un saludo

--
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/84cc07ba-4222-4afd-857c-f8958bc17820%40googlegroups.com.

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

Juan Gonzalez Gomez

unread,
Apr 11, 2017, 2:44:21 AM4/11/17
to FPGA-WARS: explorando el lado libre
Así es como quedaría el bloque del servo:

Imágenes integradas 1



y así el top:

Imágenes integradas 2

Adjunto los fichero .ice

Pruébalo Julian y me cuentas

Saludos, Obijuan

El 10 de abril de 2017, 20:33, Juan Gonzalez Gomez <obijua...@gmail.com> escribió:
Hola Julian!

Justo este fin de semana me ha pasado algo parecido. La solución es muy fácil: se te ha olvidado exportar el reloj en el bloque. Tienes que crear un pin verde de reloj, y conectarlo al corazon y al modulo del servo

En el bloque superior se conecta al reloj del sistema

Saludos, Juan
El 10/4/2017 8:01 p. m., "Julián Caro Linares" <jcarol...@gmail.com> escribió:
Cabeza la mía, adjunto ambos archivos por si son de utilidad.

Un saludo

--
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.
prueba_movimiento.ice
servo_two_positions_parametric.ice

Jesús Arroyo

unread,
Apr 11, 2017, 1:17:19 PM4/11/17
to FPGAwars: explorando el lado libre
Efectivamente como dice Juan, falta por configurar el pin de reloj del bloque. Al diseñar un bloque puedes pensar como al crear un módulo de verilog, que tiene sus entradas, salidas y parámetros. Todo bloque que sea secuencial debe tener siempre la señal de reloj.

Hay que tener en cuenta que las "Reglas de la placa" se aplican a la top entity, en Icestudio, al proyecto que se esté editando, por lo tanto se infieren automáticamente las conexiones al pin "CLK" de la FPGA. Sin embargo dentro de los bloques estas reglas no se aplican puesto que no son conexiones con la FPGA si no puertos "virtuales" que debe definir el diseñador.

PD: recomiendo también utilizar nombres "cortos" para que no se amontonen las constantes, por ejemplo en vez de max_angle, min_angle -> max, min. Así queda más legible.

Un saludo.



El martes, 11 de abril de 2017, 8:44:21 (UTC+2), Obijuan escribió:
Así es como quedaría el bloque del servo:

Imágenes integradas 1



y así el top:

Imágenes integradas 2

Adjunto los fichero .ice

Pruébalo Julian y me cuentas

Saludos, Obijuan
El 10 de abril de 2017, 20:33, Juan Gonzalez Gomez <obijua...@gmail.com> escribió:
Hola Julian!

Justo este fin de semana me ha pasado algo parecido. La solución es muy fácil: se te ha olvidado exportar el reloj en el bloque. Tienes que crear un pin verde de reloj, y conectarlo al corazon y al modulo del servo

En el bloque superior se conecta al reloj del sistema

Saludos, Juan
El 10/4/2017 8:01 p. m., "Julián Caro Linares" <jcarol...@gmail.com> escribió:
Cabeza la mía, adjunto ambos archivos por si son de utilidad.

Un saludo

--
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.

Julián Caro Linares

unread,
Apr 11, 2017, 2:15:41 PM4/11/17
to fpga-wars-explora...@googlegroups.com
Hola chicos.

¡Perfecto! Ahora sí. Muchas gracias por vuestra ayuda, así da gusto^^. Efectivamente era que el sistema no estaba recibiendo una señal de reloj, si os soy sinceros me lía un poco que algunos bloques "lleven el reloj por defecto" por lo que creo que voy a conectarlo siempre aunque sea redundante para evitar errores similares.

Respecto a los nombres, lo tendré en cuenta Jesús, aún así estaría bien conseguir alguna forma de poder escribir nombres más grandes en futuras versiones, soy muy descriptivo en mis nombres y acaban siendo bastante largos.

Aprovecho para comentarte una cosa curiosa, cuando estas editando un bloque de código (es decir con el ratón activo en la edición de texto del bloque) funcionan  todos los atajos de teclado de verificar, sintetizar, pero no el de subir a la placa, ya que al parecer tiene preferencia el de la librería de editor y con ctrl+u te hace un uppercase poniéndote la palabra activa en mayúscula en vez de iniciar la carga. Esto puede interpretarse si uno no sé da cuenta como que el programa no captura tus ordenes de atajo de teclado en ocasiones.

¡Ya puedo seguir haciendo pruebas!

Lo dicho, os habéis ganado unas cervezas :), un saludo^^

2017-04-11 19:17 GMT+02:00 Jesús Arroyo <jesus...@gmail.com>:
Efectivamente como dice Juan, falta por configurar el pin de reloj del bloque. Al diseñar un bloque puedes pensar como al crear un módulo de verilog, que tiene sus entradas, salidas y parámetros. Todo bloque que sea secuencial debe tener siempre la señal de reloj.

Hay que tener en cuenta que las "Reglas de la placa" se aplican a la top entity, en Icestudio, al proyecto que se esté editando, por lo tanto se infieren automáticamente las conexiones al pin "CLK" de la FPGA. Sin embargo dentro de los bloques estas reglas no se aplican puesto que no son conexiones con la FPGA si no puertos "virtuales" que debe definir el diseñador.

PD: recomiendo también utilizar nombres "cortos" para que no se amontonen las constantes, por ejemplo en vez de max_angle, min_angle -> max, min. Así queda más legible.

Un saludo.



El martes, 11 de abril de 2017, 8:44:21 (UTC+2), Obijuan escribió:
Así es como quedaría el bloque del servo:

Imágenes integradas 1



y así el top:

Imágenes integradas 2

Adjunto los fichero .ice

Pruébalo Julian y me cuentas

Saludos, Obijuan
El 10 de abril de 2017, 20:33, Juan Gonzalez Gomez <obijua...@gmail.com> escribió:
Hola Julian!

Justo este fin de semana me ha pasado algo parecido. La solución es muy fácil: se te ha olvidado exportar el reloj en el bloque. Tienes que crear un pin verde de reloj, y conectarlo al corazon y al modulo del servo

En el bloque superior se conecta al reloj del sistema

Saludos, Juan
El 10/4/2017 8:01 p. m., "Julián Caro Linares" <jcarol...@gmail.com> escribió:
Cabeza la mía, adjunto ambos archivos por si son de utilidad.

Un saludo

--
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 a un tema del grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/fpga-wars-explorando-el-lado-libre/TJieycl5rxk/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, 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.



--
Julián Caro Linares


Jesús Arroyo

unread,
Apr 12, 2017, 3:34:27 AM4/12/17
to FPGAwars: explorando el lado libre
Hola,


El martes, 11 de abril de 2017, 20:15:41 (UTC+2), Julián Caro Linares escribió:
Hola chicos.

¡Perfecto! Ahora sí. Muchas gracias por vuestra ayuda, así da gusto^^. Efectivamente era que el sistema no estaba recibiendo una señal de reloj, si os soy sinceros me lía un poco que algunos bloques "lleven el reloj por defecto" por lo que creo que voy a conectarlo siempre aunque sea redundante para evitar errores similares.



La posibilidad de añadir el Input CLK está siempre ahí. La automatización de las conexiones CLK para la top entity está más orientada para simplificar tutoriales y ejemplos.

 
Respecto a los nombres, lo tendré en cuenta Jesús, aún así estaría bien conseguir alguna forma de poder escribir nombres más grandes en futuras versiones, soy muy descriptivo en mis nombres y acaban siendo bastante largos.

Aprovecho para comentarte una cosa curiosa, cuando estas editando un bloque de código (es decir con el ratón activo en la edición de texto del bloque) funcionan  todos los atajos de teclado de verificar, sintetizar, pero no el de subir a la placa, ya que al parecer tiene preferencia el de la librería de editor y con ctrl+u te hace un uppercase poniéndote la palabra activa en mayúscula en vez de iniciar la carga. Esto puede interpretarse si uno no sé da cuenta como que el programa no captura tus ordenes de atajo de teclado en ocasiones.

Es verdad! Voy a ver cómo puedo evitar la acción del editor y permitir hacer Ctrl+U con foco en el bloque. Gracias por detectarlo!
 

¡Ya puedo seguir haciendo pruebas!
 

Lo dicho, os habéis ganado unas cervezas :), un saludo^^

Un saludo.
 

2017-04-11 19:17 GMT+02:00 Jesús Arroyo <jesus...@gmail.com>:
Efectivamente como dice Juan, falta por configurar el pin de reloj del bloque. Al diseñar un bloque puedes pensar como al crear un módulo de verilog, que tiene sus entradas, salidas y parámetros. Todo bloque que sea secuencial debe tener siempre la señal de reloj.

Hay que tener en cuenta que las "Reglas de la placa" se aplican a la top entity, en Icestudio, al proyecto que se esté editando, por lo tanto se infieren automáticamente las conexiones al pin "CLK" de la FPGA. Sin embargo dentro de los bloques estas reglas no se aplican puesto que no son conexiones con la FPGA si no puertos "virtuales" que debe definir el diseñador.

PD: recomiendo también utilizar nombres "cortos" para que no se amontonen las constantes, por ejemplo en vez de max_angle, min_angle -> max, min. Así queda más legible.

Un saludo.



El martes, 11 de abril de 2017, 8:44:21 (UTC+2), Obijuan escribió:
Así es como quedaría el bloque del servo:

Imágenes integradas 1



y así el top:

Imágenes integradas 2

Adjunto los fichero .ice

Pruébalo Julian y me cuentas

Saludos, Obijuan
El 10 de abril de 2017, 20:33, Juan Gonzalez Gomez <obijua...@gmail.com> escribió:
Hola Julian!

Justo este fin de semana me ha pasado algo parecido. La solución es muy fácil: se te ha olvidado exportar el reloj en el bloque. Tienes que crear un pin verde de reloj, y conectarlo al corazon y al modulo del servo

En el bloque superior se conecta al reloj del sistema

Saludos, Juan
El 10/4/2017 8:01 p. m., "Julián Caro Linares" <jcarol...@gmail.com> escribió:
Cabeza la mía, adjunto ambos archivos por si son de utilidad.

Un saludo

--
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.

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/fpga-wars-explorando-el-lado-libre/TJieycl5rxk/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, 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/5680ddfd-d766-4a6d-b962-a0b89cda62a7%40googlegroups.com.

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

Miquel Servera

unread,
Apr 12, 2017, 5:16:52 PM4/12/17
to FPGAwars: explorando el lado libre
Buenas noches, una duda que tengo, de que sirve crear donde ingresar diferentes valores como constantes si el servo no cambia de posición a no ser que cambies los valores dentro del código.

Gracias.

Julián Caro Linares

unread,
Apr 12, 2017, 5:44:16 PM4/12/17
to fpga-wars-explora...@googlegroups.com
Hola Miquel

si te refieres a que dentro del código verilog hay :

min_angle=ANGLE_45;

Y equivalente para max_angle llevas razón. Esto se debe a que me puse a realizar pruebas para aislar el error lo compartí por aquí sin cambiar,el el código debería ser:

min_angle=in_min_angle;

Y equivalente para max angle.

Son simples pruebas, pero si quieres el código corregido lo tienes en:


Espero que te sirva de ayuda.

Un saludo

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 a un tema del grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/fpga-wars-explorando-el-lado-libre/TJieycl5rxk/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, 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.



--
Julián Caro Linares


--
Has recibido este mensaje porque estás suscrito a un tema del grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/fpga-wars-explorando-el-lado-libre/TJieycl5rxk/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, 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.

Miquel Servera

unread,
Apr 13, 2017, 10:39:36 AM4/13/17
to FPGAwars: explorando el lado libre
Gracias Julián por la aclaración, una vez clonado el repositorio y podido constatar lo que comentas entiendo el porque por mucho que cambiara el valor dentro de los bloque constant no variaba la posición del servo.

Saludo.
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.

--
Has recibido este mensaje porque estás suscrito a un tema del grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este tema, visita https://groups.google.com/d/topic/fpga-wars-explorando-el-lado-libre/TJieycl5rxk/unsubscribe.
Para cancelar la suscripción a este grupo y a todos sus temas, 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.



--
Julián Caro Linares


Reply all
Reply to author
Forward
0 new messages