[Icezum Alhambra] Ejemplo de antirrebotes

385 views
Skip to first unread message

Obijuan

unread,
Dec 6, 2016, 7:09:23 AM12/6/16
to FPGAwars: explorando el lado libre
Hola,

  He añadido a los ejemplos del repo de icestudio un antirrebotes:

  https://github.com/FPGAwars/icestudio-examples/tree/master/icezum/Antirrebotes

Anteriormente tenía una hecho para el ACC, pero he encontrado una implementación mejor en VHDL [1] y la he migrado a Verilog

Este es el ejemplo hola mundo:




El código del bloque antirrebotes es este:

//-- Debouncer Circuit
//-- It produces a stable output when the
//-- input signal is bouncing

reg btn_prev = 0;
reg btn_out_r = 0;

reg [16:0] counter = 0;


always @(posedge clk) begin

  //-- If btn_prev and btn_in are differents
  if (btn_prev ^ btn_in == 1'b1) begin
   
      //-- Reset the counter
      counter <= 0;
     
      //-- Capture the button status
      btn_prev <= btn_in;
  end
   
  //-- If no timeout, increase the counter
  else if (counter[16] == 1'b0)
      counter <= counter + 1;
     
  else
    //-- Set the output to the stable value
    btn_out_r <= btn_prev;

end

assign btn_out = btn_out_r;





Saludos, Obijuan


[1] http://www.digilogic.es/pulsador-antirrebote-en-vhdl-debouncing/


Auto Generated Inline Image 1

Juan Gonzalez Gomez

unread,
Dec 6, 2016, 10:11:39 AM12/6/16
to FPGA-WARS: explorando el lado libre
En la versión de development de Icestudio acabamos de incluir el antirrebotes. Este sería al circuito "Hola mundo":

Imágenes integradas 1

No sabía qué símbolo usar para el antirrebotes, así que he creado de momento ese, con muchos pulsos espúreos y una X roja indicando que se eliminan

Este circuito tan sencillo es un pulsador con memoria. Al hacer click se enciende el led. Al volver a hacer click se apaga

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.
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/6b26b8ed-30b7-4c8b-a9a5-bd240d2737ea%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Julián Caro Linares

unread,
Dec 6, 2016, 1:35:57 PM12/6/16
to FPGAwars: explorando el lado libre
¡Genial!

El símbolo es perfecto.

He estado probando el código con el multiplexor al que le adapte un antirrebotes ayer por curiosidad que encontré por internet (os dejo el link si a alguno le pica la curiosidad) y lo he cambiado por este antirebotes.

Con este antirebotes funciona igual de bien, es perfecto.

Dejo el código completo pasado por Juan al que le he añadido su declaración de modulo correspondiente, por si alguien necesita utilizarlo como tal. El código está probado, pero si alguien ve alguna declaración o algo erróneo, por favor decidlo, me queda mucho Verilog que aprender aún:


//-- Debouncer Circuit
//-- It produces a stable output when the
//-- input signal is bouncing

module  debouncer
(
input wire clk, input wire btn_in, // inputs
output wire btn_out // output
);

reg btn_prev = 0;
reg btn_out_r = 0;

reg [16:0] counter = 0;


always @(posedge clk) begin

  //-- If btn_prev and btn_in are differents
  if (btn_prev ^ btn_in == 1'b1) begin

      //-- Reset the counter
      counter <= 0;

      //-- Capture the button status
      btn_prev <= btn_in;
  end

  //-- If no timeout, increase the counter
  else if (counter[16] == 1'b0)
      counter <= counter + 1;

  else
    //-- Set the output to the stable value
    btn_out_r <= btn_prev;

end

assign btn_out = btn_out_r;

endmodule



Un saludo a todos

Jose Antonio Vacas Martinez

unread,
Dec 8, 2016, 2:36:25 AM12/8/16
to FPGAwars: explorando el lado libre

A mi también me gusta el símbolo, es muy intuitivo.
Una pregunta sobre el tema de incluir nuevos bloques en IceStudio ¿cómo podemos ayudar para incluir nuevos bloques (como el que controla los servos) en IceStudio?

¿Hay algún roadMap de desarrollo de IceStudio?

Saludos

Juan José Luna Espinosa

unread,
Dec 8, 2016, 3:11:29 AM12/8/16
to FPGAwars: explorando el lado libre
> Una pregunta sobre el tema de incluir nuevos bloques en IceStudio ¿cómo podemos ayudar para incluir nuevos bloques (como el que controla los servos) en IceStudio?

En el menú "Archivo" puedes tanto exportar el diseño actual a fichero de bloque de icestudio (.iceb) como importar un fichero .iceb existente y usarlo como un módulo más en tu proyecto.


> ¿Hay algún roadMap de desarrollo de IceStudio?

Sí, bueno, en realidad sólo un wishlist, en el proyecto de github: https://github.com/FPGAwars/icestudio/wiki/Wishlist:-proposed-features

Jose Antonio Vacas Martinez

unread,
Dec 8, 2016, 3:56:12 AM12/8/16
to FPGAwars: explorando el lado libre
Ok, eso sí que lo había visto, me refiero a incluirlos en la siguiente versión, por ejemplo añadir un bloque PWM o Servo


--
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/qoJN1S49ai0/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...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
José Antonio Vacas Martínez

Juan José Luna Espinosa

unread,
Dec 8, 2016, 4:20:12 AM12/8/16
to FPGAwars: explorando el lado libre
Ah, ok. Pues la mejor vía parece ser contribuyendo vía pull requests a los diferentes repositorios de github de fpgawars. Incluso uno de ellos está destinado exclusivamente a compartir ficheros .iceb (aunque todavía está vacío :-P

Los repositorios: https://github.com/FPGAwars
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.

Jesús Arroyo

unread,
Dec 9, 2016, 1:28:14 AM12/9/16
to FPGAwars: explorando el lado libre
Buenas,

Hay dos "roadmaps":

  • El primero consiste en incrementar la funcionalidad de la versión actual, partiendo de la wishlist y las necesidades a nivel práctico, de experimentación o exploración. En esa línea se van a añadir bloques constante, buses, etc. Además estamos planteando cómo organizarlo para que sea fácil añadir contenido (bloques, ejemplos, proyectos...). Vamos a plantearlo para que sea descentralizado y esté organizado mendiante categorías, grupos o "workbenches". Os comunicaremos cuando esté listo el mecanismo de contribución.
  • El segundo consiste en reescribir la aplicación de nuevo, ahora que tenemos bastante más claro el concepto (esto sería a largo plazo), con nuevas herramientas:
    • Electron: actualmente me parece una opción más interesante que nwjs
    • Angular 2: quiero explorar este nuevo framework ya que parece más organizado
    • Tests: utilizar tests unitarios y a nivel gráfico
    • No JoinJS: aunque jointJS es muy flexible y potente hay muchas cosas que he tenido que reescribir y tiene limitaciones como el tratamiento de cables, problemas de integración con HTML, no resuelve la grid a nivel de puertos, escalado, etc. La idea es crear una herramienta nueva orientada a bloques de electrónica digital.
    • Modularizado: la idea es crear módulos independientes con distinta funcionalidad: parte gráfica, compilador, etc para que sea más flexible y hackeable
    • ... muchas cosas más ...
Prácticamente todo esto tenemos que aprenderlo y estudiarlo desde cero, así que el progreso depende del tiempo que tengamos disponible. Si queréis hacer contribuciones o implementaciones de prueba podemos crear un hilo para comentar esta nueva versión, pero serían pruebas o implementaciones concretas para que sea más práctico.

Por ahora nos centramos en el primero, crear contenido, nuevos bloques y ver qué necesidades van surgiendo y cuál es la mejor forma de organizar el contenido, proyectos, libs, etc en Icestudio.

Un saludo.

Jose Antonio Vacas Martinez

unread,
Dec 9, 2016, 3:46:38 AM12/9/16
to FPGAwars: explorando el lado libre
Hola, gracias Jesús.
Totalmente de acuerdo en centrarnos en la primera opción. Ahora el grupo de usuarios va a crecer bastante y creo que vamos a poder aportar mucho contenido si es medianamente fácil incluirlo.

Sobre las limitaciones de la plataforma, ahí eres tu el que más sabes del tema y tendrás que decidir cuando una limitación impide una mejora o no
A día de hoy mi opinión es que las dos plataformas (apio y IceStudio) son funcionales

¿Qué mecanismo usamos para hacer sugerencias/propuestas? ¿Issues en github o propuestas en la lista?

Saludos

Para cancelar la suscripción a este grupo y a todos sus temas, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.
--
José Antonio Vacas Martínez

--
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/qoJN1S49ai0/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...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a fpga-wars-explora...@googlegroups.com.

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

Cristóbal Contreras Rubio

unread,
Dec 9, 2016, 4:07:21 AM12/9/16
to fpga-wars-explora...@googlegroups.com
Buenas,

Jesus con respecto a la segunda parte del roadmap me gustaría preguntar un par de cosas. ¿Por que Javascript para un IDE? Soy fan de las apps en Electron, de hecho son las apps más bonitas que puedes ver porque en HTML5+CSS3 están saliendo las cosas más bonitas últimamente (Slack, Telegram, próximamente Taiga 😊). Pero esa tecnología es un comerecursos, y Atom es un ejemplo de ello. Soy usuario y defensor de Atom, pero es innegable que a mucha gente le va mal porque es un come recursos, como todo lo que sea con tecnología web (no hablemos de los navegadores oficiales ya...).

Dado que uno de los puntos fuertes de las herramientas libres es lo livianas que son, ¿por que no usar para la migración a largo plazo una tecnología que permita tanto la multiplataforma como que sea liviano? Yo personalmente estaba pensando en Qt, que permite lo que he dicho, es Open Source, tiene una de las mejores herramientas para hacer GUIs e incluso permite usarlo con Python (PyQt / PySide aunque no soy partidario de estas opciones).

Lo pregunto solo como alternativa, yo no trato de imponerle a nadie una tecnología que desconoce, o no se siente cómodo con ella o lo que sea. Más que nada porque seguramente por tiempo no pueda ayudar en el desarrollo, y lo que debería de hacer en todo caso es empezar yo a hacer un nuevo IDE en Qt a ver si cuaja y no decirle a los demás que lo hagan por mi. Sea como sea, ¿has valorado Qt u otro framework para GUIs?

Si por contra el futuro desarrollo pasa por que icestudio sea una herramienta en la nube, pues del tirón hay que seguir con el camino que ya tienes trazado 😉

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.
--
José Antonio Vacas Martínez

--
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/qoJN1S49ai0/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.
--
José Antonio Vacas Martínez

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

Jesús Arroyo

unread,
Dec 9, 2016, 2:12:43 PM12/9/16
to FPGAwars: explorando el lado libre
Buenas Jose Antonio,

Sí, la idea es conseguir una versión "superestable" de apio e Icestudio. Por ahora podemos discutir las sugerencias y propuestas en la lista, creo que es más cómodo y más accesible, pero en cuanto definamos el mecanismo para contribuir utilizaremos pull requests e issues. A lo mejor es una buena oportunidad para utilizar los "Projectos" de GitHub, habrá que investigar.

Un saludo.
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.
--
José Antonio Vacas Martínez

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

Jesús Arroyo

unread,
Dec 9, 2016, 2:23:50 PM12/9/16
to FPGAwars: explorando el lado libre
Buenas Cristo,

Efectivamente se puede hacer de muchas formas. Nosotros estamos utilizando tecnologías web porque me parece que tienen un potencial increible, tanto en la parte de desarrollo como en aplicación, y es una buena excusa para aprender más sobre esto. Mucha gente y empresas como Google o GitHub están apostando por las aplicaciones web y están creando un ecosistema de desarrollo brutal, y la mejor manera de estar al día de eso es desarrollando un proyecto.

Si alguien quiere desarrollar utilizando otros recursos, adelante!!, todo suma ;)
Reply all
Reply to author
Forward
0 new messages