[Temporizador][Icestudio] Temporizador en segundos para Icestudio

220 views
Skip to first unread message

Obijuan

unread,
Jul 7, 2017, 11:46:51 AM7/7/17
to FPGAwars: explorando el lado libre
Hola,

  Estoy creando contenido para el taller de "Electrónica digital para makers con FPGAs libres" que daremos Jesús y yo mañana en el Makespace Madrid

He hecho un componente muy útil: un temporizador para activación de señales.  Este es el ejemplo hola mundo:



Al apretar el pulsador, el temporizador arranca, pone a 1 la salida y empieza a contar. Al cabo de 5 segundos se desactiva y pone a 0 la salida
El resultado es que cada vez que se aprieta el pulsador, el led se enciende durante 5 segundos, y luego se apaga

Este componente está hecho a su vez con otros componentes de icestudio:




Al estar implementado con bloques, la gente que no sepa verilog puede entender su funcionamiento y realizar cambios. Por ejemplo, si queremos que en vez de contar segundos, el temporizador cuente ms, u otras unidades, sólo hay que reemplazar el "corazón" por otro que emita pulsos a diferente frecuencia.

También permite estudiar cómo funciona y aprender nuevos bloques

El temporizador es super divertido cuando se usa con Servos. Permite hacer muy rápidamente cosas como:  

1) Al darle a un pulsador, se abre la puerta del garaje, el coche entra y al cabo de unos segundos se cierra
2) Lo mismo, pero con un detector de IR, de forma que al detectar el coche se abre sola, el coche entra y luego se cierra
3) Que una sirena esté funcionando durante un tiempo, una vez activada, y que luego se apague sola
etc...

Saludos, Obijuan

Auto Generated Inline Image 1
Auto Generated Inline Image 2

Obijuan

unread,
Jul 7, 2017, 11:49:15 AM7/7/17
to FPGAwars: explorando el lado libre

Obijuan

unread,
Jul 7, 2017, 2:10:19 PM7/7/17
to FPGAwars: explorando el lado libre
He creado este otro temporizador, para generar pulsos de duración múltiplo de 10 micro-segundos. Este es el circuito de test:



Le indicamos que queremos generar un pulso de 1ms (100 tics de 10 micro-segundos). Esto es lo que se mide con el analizador lógico:



Vemos que efectivamente, se obtiene un pulso de 1ms.  Medir tiempos con el PulseView es muy cómodo: Basta con añadir el protocolo "Timing" y asignárselo a la señal D0

La manera de hacer este temporizador es exactamente igual que la del temporizador de segundos, pero cambiando el coránzon por otro de pulsos de 10 micro-segundos:



¿Y para qué quiero este temporizador? Porque nos permite generar pulsos entre 0 - 2.5ms...  que es el rango típico para el posicionamiento de los servos :-)  Pero eso os lo mostraré en otro hilo


Saludos, Obijuan


El viernes, 7 de julio de 2017, 17:46:51 (UTC+2), Obijuan escribió:
Auto Generated Inline Image 1
Auto Generated Inline Image 2
Auto Generated Inline Image 3

Miquel Servera

unread,
Jul 8, 2017, 3:27:16 AM7/8/17
to FPGAwars: explorando el lado libre
Gracias Obijuan por el tiempo que nos dedicas a la gente como yo.

Saludos, Miquel
Reply all
Reply to author
Forward
0 new messages