[Icestudio][Bloque] Bloque de control mediante flechas del teclado

57 views
Skip to first unread message

Julián Caro Linares

unread,
Jul 24, 2017, 2:35:47 PM7/24/17
to FPGAwars: explorando el lado libre
¡Buenas!

Os comparto un bloque que he creado esta tarde, me suena que alguien había hecho algo similar pero no he sido capaz de encontrarlo:

La idea del bloque es sencilla, dependiendo de la flecha pulsada del teclado, por la salida out[7:0] saldrá un byte con un valor distinto. Que byte sale dependiendo de la flecha depende de las 4 constantes up,dw, L, R.

Siendo sus tripas:


El bloque está formado por el receptor puerto serie 115200 y un multiplexor que toma "data" como selección y dependiendo del valor de la tecla recibida selecciona una de las entradas.


Por supuesto podría simplificarse mucho más el bloque siendo las entradas directamente constantes y demás, pero me ha parecido interesante dejarlo con esta estructura para modificar el bloque de múltiples maneras más adelante si es necesario. Puede que en el futuro lo mejore/cambie.


Un ejemplo simple para comprobar que funciona:



El ejemplo enciende el led 0,1,2,3 de la Icezum alhambra dependiendo de la tecla pulsada.



Un video de funcionamiento usando el robot Doodle:


https://youtu.be/iLbfmXyjN_g




Como todo lo que estoy creando, se puede encontrar el bloque en:


https://github.com/jcarolinares/fpga-biorobots/tree/master/icestudio_blocks



Es realmente interesante que se pueda hacer esto de una forma tan sencilla por hardware^^


Un saludo






Juan Gonzalez Gomez

unread,
Jul 24, 2017, 3:01:30 PM7/24/17
to FPGA-WARS: explorando el lado libre
Muy interesante Julian! Me encanta! :-)

Saludos, Juan

--
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/7057234d-3c6e-4071-b0e2-4f14a156f521%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Juan José Luna Espinosa

unread,
Jul 24, 2017, 4:06:01 PM7/24/17
to fpga-wars-explora...@googlegroups.com
Hola! Muy curioso. Qué tal si el módulo sacara 4 'wires' up, down, left, right?

El 24 de julio de 2017, 21:01, Juan Gonzalez Gomez <obijua...@gmail.com> escribió:
Muy interesante Julian! Me encanta! :-)

Saludos, Juan


El 24/7/2017 8:35 p. m., "Julián Caro Linares" <jcarol...@gmail.com> escribió:
¡Buenas!

Os comparto un bloque que he creado esta tarde, me suena que alguien había hecho algo similar pero no he sido capaz de encontrarlo:

La idea del bloque es sencilla, dependiendo de la flecha pulsada del teclado, por la salida out[7:0] saldrá un byte con un valor distinto. Que byte sale dependiendo de la flecha depende de las 4 constantes up,dw, L, R.

Siendo sus tripas:


El bloque está formado por el receptor puerto serie 115200 y un multiplexor que toma "data" como selección y dependiendo del valor de la tecla recibida selecciona una de las entradas.


Por supuesto podría simplificarse mucho más el bloque siendo las entradas directamente constantes y demás, pero me ha parecido interesante dejarlo con esta estructura para modificar el bloque de múltiples maneras más adelante si es necesario. Puede que en el futuro lo mejore/cambie.


Un ejemplo simple para comprobar que funciona:



El ejemplo enciende el led 0,1,2,3 de la Icezum alhambra dependiendo de la tecla pulsada.



Un video de funcionamiento usando el robot Doodle:


https://youtu.be/iLbfmXyjN_g




Como todo lo que estoy creando, se puede encontrar el bloque en:


https://github.com/jcarolinares/fpga-biorobots/tree/master/icestudio_blocks



Es realmente interesante que se pueda hacer esto de una forma tan sencilla por hardware^^


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

Jesús Arroyo

unread,
Jul 25, 2017, 4:36:22 AM7/25/17
to FPGAwars: explorando el lado libre
Qué bueno Julián!

Quizá para que quede más simplificado se podría encapsular el bloque con los valores de las teclas ya definidos. Así tendría sólamente RX y data y sería más sencillo de utilizar. También se me ocurre que como son 4 estados podrías utilizar sólo 2 bit codificados en un sólo bloque constante...

Es un concepto muy chulo! :D

Un saludo.
Saludos, Juan


Julián Caro Linares

unread,
Jul 26, 2017, 6:59:27 AM7/26/17
to fpga-wars-explora...@googlegroups.com
¡Hola!

Gracias por las sugerencias :)

La verdad es que utilizando bloques en Icestudio me he dado cuenta de que hay numerosas posibilidades a la hora de crear bloques o módulos ¿Debería estar el propio lector de puerto serie dentro o mejor fuera? ¿Ser un bloque predefinido sencillo tal cómo sugiere Jesús o el avanzado que te permitie desde fuera decidir que señal saldrá de cada tecla? Sí se hace sencillo con dos bits uno puede necesitar luego añadir la lógica adicional externamente sí como es mi caso necesitas cadenas de un byte u otros casos.

En conclusión siempre que empaqueto un módulo o bloque me ocurre lo mismo, que decidir dejar dentro o fuera y cual es la decisión más "correcta" . De momento lo que suele suceder es que acabo creando dos versiones. Una muy simple y menos flexible y otra más paramétrica como está. A ver si me acuerdo y creo la versión simple de este caso.

Respecto a las salidas simples de 4 cables claro que se puede hacer :)

Un saludo



Saludos, Juan


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

Jose Pico

unread,
Jul 28, 2017, 8:19:28 AM7/28/17
to FPGAwars: explorando el lado libre
Mola!
Es cierto q con poco se puede hacer mucho.

Saludos y Gracias

Reply all
Reply to author
Forward
0 new messages