[Coleccion][Icestudio] Iceinput: bloques para entradas de 1 bit

252 views
Skip to first unread message

Obijuan

unread,
Feb 4, 2021, 2:13:20 PM2/4/21
to FPGAwars: explorando el lado libre

Hola,

La colección Jedi tiene muchos bloques, y es un cajón desastre. Así que poco a poco la estoy descomponiendo en colecciones más pequeñas, que están en inglés, y que incluyen traducciones a otros idiomas (de momento Español)

Una de estas colecciones es la Iceinputs (de momento está en desarrollo y tiene muy pocos componentes):


En ella estoy metiendo los componentes necesarios para la gestión de entradas de 1 bit, como pulsadores, switches, sensores básicos, etc... Ahí estarán los bloques de sincronización, activación de pull-ups internos,  antirrebotes, detección de clicks, dobles clicks, clicks largos, repeticiones, etc.....

A la vez que voy realizando la documentación en este cuaderno técnico:


estoy añadiendo los componentes en la colección iceInput, y los ejemplos

Acabo de añadir un bloque muy útil: un pull-up para varios pulsadores. Permite activar todas las resistencias de pull-up a la vez. Os adjunto una imagen de un ejemplo en que se conectan dos pulsadores externos con su pull-ups activadas, y la salida se lleva a dos leds para comprobar el funcionamiento

Esto es especialmente útil para conectar, por ejemplo, arrays de micro-switches

Saludos, Obijuan


etapa-2-12-pull-up-x02.png

Juan Gonzalez Gomez

unread,
Feb 4, 2021, 2:40:46 PM2/4/21
to FPGA-WARS: explorando el lado libre
Os adjunto un vídeo mostrando cómo cambian los comentarios de los circuitos al cambiar el idioma

Tengo abierto el ejemplo 1 de la colección IceInputs, que por defecto está en inglés:

2021-02-04_20-35.png
Al cambiar a español se cambian los comentarios. Pero también cambia el texto que está dentro de los bloques. Y también el comentario emergente que aparece cuando dejas el ratón sobre un bloque durante un tiempo

2021-02-04_20-35.png

La posibilidad de traducir las colecciones está implementado en icestudio desde el comienzo, pero todavía no se habían hecho ejemplos

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...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/49d8f0ef-b2dc-491e-901a-a245c0cf74f4n%40googlegroups.com.
Peek 2021-02-04 20-33.mp4

charli va

unread,
Feb 4, 2021, 3:26:38 PM2/4/21
to fpga-wars-explora...@googlegroups.com

ANDRES AMAUTA GONZALESZAPATA

unread,
Feb 4, 2021, 4:53:21 PM2/4/21
to fpga-wars-explora...@googlegroups.com
gracias Obijuan !


Advertencia legal: 
Este mensaje y, en su caso, los archivos anexos son confidenciales, especialmente en lo que respecta a los datos personales, y se dirigen exclusivamente al destinatario referenciado. Si usted no lo es y lo ha recibido por error o tiene conocimiento del mismo por cualquier motivo, le rogamos que nos lo comunique por este medio y proceda a destruirlo o borrarlo, y que en todo caso se abstenga de utilizar, reproducir, alterar, archivar o comunicar a terceros el presente mensaje y ficheros anexos, todo ello bajo pena de incurrir en responsabilidades legales. Las opiniones contenidas en este mensaje y en los archivos adjuntos, pertenecen exclusivamente a su remitente y no representan la opinión de la Universidad de Cuenca salvo que se diga expresamente y el remitente esté autorizado para ello. El emisor no garantiza la integridad, rapidez o seguridad del presente correo, ni se responsabiliza de posibles perjuicios derivados de la captura, incorporaciones de virus o cualesquiera otras manipulaciones efectuadas por terceros.

Juan Gonzalez Gomez

unread,
Feb 5, 2021, 12:25:07 PM2/5/21
to FPGA-WARS: explorando el lado libre
Aquí os muestro un pantallazo del ejemplo 7 de la colección, que usa el bloque pull-up-x04 para activar las resistencia de pull-up de 4 microinterruptores. La salida se conecta directamente a los LEDs para comprobar el funcionamiento. Usar los switches es muy fácil y rápido:

2021-02-05_18-15.png
En este vídeo podéis ver las pruebas:


Los bloques de activación de los pull-ups tienen dos versiones: una hecha a partir de otros bloques en icestudio, y otros hechos en verilog. Los de verilog son genéricos, y permiten establecer el número de pull-ups con un parámetro

Saludos, Obijuan







Juan Gonzalez Gomez

unread,
Feb 13, 2021, 2:23:15 PM2/13/21
to FPGA-WARS: explorando el lado libre
Ya he añadido a la colección IceInputs los bloques de sincronización, de 1 bit y de varios bits, para evitar los problemas de metaestabilidad, y registrar las entradas para cumplir con las normas del diseño síncrono

En este pantalla podeis ver un ejemplo de conexión de 8 switches a los LEDs. Se activan las resistencias de pull-up y se añaden los bloques de sincronización:

image.png

Estos bloques multibit simplifican mucho los circuitos. Las implementaciones están tanto en bloques como en verilog. En el caso de verilog se han hecho paramétricas para adaptarlas fácilmente a buses de más bits

Las pruebas del bloque Sync están hechas usando el analizador lógico integrado en Icestudio (IceRok), que añadió Charli (¡Gracias!). Este es el circuito de prueba del bloque de sincronización de 1 un bit. Se introduce un pulso (tic) al apretar el pulsador, y en las mediciones podemos ver lo que ocurre en la salida

etapa-3-05-sync-04.png

Con el Pulseview vemos las capturas:

etapa-3-06-sync-04.png

Comprobamos que efectivamente el tic de salida está retrasado 2 ciclos de reloj, ya que el bloque sync está formado por la conexión en cascada de 2 biestables D

Todo esto lo estoy documentado en el cuaderno técnico 10, que estoy escribiendo (no está terminado todavía)

Sé que muchos no sabéis manejar IceRok, y habéis preguntado sobre cómo usarlo. En cuanto pueda hago un tutorial escrito o en vídeo... pero de momento no me da la vida para la cantidad de cosas que tengo en la lista de tareas...

Saludos, Obijuan


charli va

unread,
Feb 14, 2021, 3:28:16 PM2/14/21
to fpga-wars-explora...@googlegroups.com
Está super bien Maestro! no había podido probrarlo hasta hoy, me ha gustado mucho el enfoque.

De IceRok estoy cambiando bastantes cosas , no eches tiempo en documentarlo que en breve va a cambiar bastante y de paso intentaré yo dejarlo ya documentado y te quito esa taréa.

Gracias!!

--
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...@googlegroups.com.

Juan Gonzalez Gomez

unread,
Apr 7, 2021, 7:29:20 AM4/7/21
to FPGA-WARS: explorando el lado libre
Hola!

Ya está liberada la versión 0.1.0 de la Colección IceInputs


Lo más destacables es que el bloque de lectura de los pulsadores (bloque button) está implementado a partir de otros bloques (que también están en la colección) de forma que es más fácil entender su funcionamiento y modificarlo (En la versińo anterior sólo estaba la implementación en verilog)

Además, el bloque button incluye el parámetro pup para habilitar la resistencia de pull-up interna de las FPGAs ice40, y conectar de forma más fácil los pulsadores.  He hecho pruebas con muchas placas con pulsadores y funciona bastante bien

Este es un ejemplo "hola mundo" de lectura de un pulsador de la Alhambra II. Es como el ejemplo que ya conocemos y que se ha usado muchas veces, pero ahora está implementado con el nuevo bloque button


image.png

Si nos metemos dentro del bloque button veremos los bloques que lo forman:

image.png

Cada bloque es una etapa diferente del procesado. La primera es para el pull-up, que por defecto está desactivado. La segunda es para sincronizar la entrada y evitar los problemas de la metaestabilidad. La tercera es una etapa de normalización para que la señal que se obtenga sea de lógica positiva. Esta etapa es simplemente una puerta NOT condicional: Si se activa el parámetro not se coloca, y si se pone a 0 se trata de un simple cable

La última etapa es el antirrebotes, que a su vez se ha implementando también con bloques, para entender mejor su funcionamiento y que la gente que no sepa verilog lo pueda estudiar y modificar:

image.png

El funcionamiento está explicado en el cuaderno técnico 10 de FPGAs libres[1]

Por defecto los comentarios están en Inglés, pero también incluye la traducción al Español (si tienes configurado el idioma español en Icestudio los comentarios de los circuitos y bloques te aparecerán en español) 
Por supuesto se puede traducir a cualquier otro idioma. Sólo hay que incluir el fichero .po con las traducciones en su carpeta correspondiente dentro de la carpeta locale

En cuanto pueda hago instrucciones sobre cómo hacer las traducciones. Antes quiero terminar la organización de las colecciones, para que luego entre todos podamos meter componentes a saco y traducirlas a los idiomas correspondientes


Saludos, Obijuan


charli va

unread,
Apr 7, 2021, 11:26:33 AM4/7/21
to fpga-wars-explora...@googlegroups.com
Gracias Juan!! me encanta todo este trabajo que estás haciendo desde los cimientos.

Un abrazo y ánimo con el cuatrimestre! 

--
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...@googlegroups.com.

Obijuan

unread,
Apr 7, 2021, 1:37:48 PM4/7/21
to FPGAwars: explorando el lado libre
Vídeo 1: Pulsadores (I). Etapas de procesamiento de las entradas

Vistazo general a las etapas

Obijuan

unread,
Apr 8, 2021, 3:25:51 PM4/8/21
to FPGAwars: explorando el lado libre
Vídeo 2: La etapa física. Pulsadores y placas


Saludos, Obijuan


Obijuan

unread,
Apr 13, 2021, 4:27:09 PM4/13/21
to FPGAwars: explorando el lado libre

Obijuan

unread,
May 4, 2021, 3:07:56 PM5/4/21
to FPGAwars: explorando el lado libre
Vídeo 4. Etapa 3: Sincronización


El jueves, 4 de febrero de 2021 a las 20:13:20 UTC+1, Obijuan escribió:

ANDRES AMAUTA GONZALESZAPATA

unread,
May 4, 2021, 10:24:35 PM5/4/21
to fpga-wars-explora...@googlegroups.com
Felicidades 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...@googlegroups.com.

Jo mo

unread,
May 5, 2021, 4:41:49 AM5/5/21
to FPGAwars: explorando el lado libre

Gracias Obijuan,

Your courses are very clear & usefull for electronics beginers and refreshing for "pre-Fpga world" electronicians like me :-)

Joaquim

Obijuan

unread,
May 6, 2021, 1:50:40 PM5/6/21
to FPGAwars: explorando el lado libre
Thanks Joaquim! 😀️

Obijuan

unread,
May 6, 2021, 1:51:41 PM5/6/21
to FPGAwars: explorando el lado libre
Vídeo 5: Etapa 4: Normalización


Saludos, Obijuan

El jueves, 4 de febrero de 2021 a las 20:13:20 UTC+1, Obijuan escribió:

Obijuan

unread,
May 8, 2021, 6:45:27 AM5/8/21
to FPGAwars: explorando el lado libre

Obijuan

unread,
May 9, 2021, 2:08:45 PM5/9/21
to FPGAwars: explorando el lado libre
Este es el último vídeo del cuaderno Técnico:

Vídeo 7: Pulsadores. Ejemplos de uso

Saludos, Obijuan
El jueves, 4 de febrero de 2021 a las 20:13:20 UTC+1, Obijuan escribió:

charli va

unread,
May 9, 2021, 2:10:40 PM5/9/21
to fpga-wars-explora...@googlegroups.com
Estas on fire!!

Gracias!!

--
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...@googlegroups.com.

Obijuan

unread,
May 9, 2021, 2:19:59 PM5/9/21
to FPGAwars: explorando el lado libre
jajajj ¡Ya ves! Se nota que ya estoy llegando al final de las clases de la Uni, y tengo un poco más de tiempo. En una semana y media ya se abrán acabado y podré frikear mucho más!!! 😀️

¡¡Vamooooos!!!
Reply all
Reply to author
Forward
0 new messages