Circuito antirrebotes

2

Click here to load reader

description

Uploaded from Google Docs

Transcript of Circuito antirrebotes

Page 1: Circuito antirrebotes

Departamento de Tecnología Electrónica

Diseño digital con VHDL - - 11/12/2008 10-1

10. Circuito antirrebotes En esta práctica se plantea el circuito antirrebotes que evita que el presionar un pulsador recibamos más de un pulso. Este circuito es interesante para pulsadores que no tienen circuito antirrebotes en la propia placa. En la figura 10.1 se muestran los circuitos de los pulsadores de las placas Pegasus y Basys. A la izquierda se muestra el circuito que conecta el pulsador de la placa Pegasus. Este circuito tiene un condensador que hace filtrar los pulsos espurios que se producen por los rebotes al mecánicos al hacer contacto el pulsador. Sin embargo, la placa Basys no tiene estos condensadores, y por tanto, se producen más transiciones espurias. Estas transiciones pueden provocar que al pulsar una vez, el circuito interprete que se ha pulsado varias veces. Así que tenemos que realizar un circuito antirrebotes en VHDL.

4,7kΩ

PIN pulsador59 BTN058 BTN157 BTN2154 BTN3

Spartan-II3,3V

4,7kΩ 0,1µF

PEGASUS

4,7kΩ

PIN pulsador69 BTN048 BTN147 BTN241 BTN3

Spartan-3E3,3V

4,7kΩ

BASYS

4,7kΩ

PIN pulsador59 BTN058 BTN157 BTN2154 BTN3

Spartan-II3,3V

4,7kΩ 0,1µF

4,7kΩ

PIN pulsador59 BTN058 BTN157 BTN2154 BTN3

Spartan-II3,3V

4,7kΩ 0,1µF

PEGASUS

4,7kΩ

PIN pulsador69 BTN048 BTN147 BTN241 BTN3

Spartan-3E3,3V

4,7kΩ

BASYS

4,7kΩ

PIN pulsador69 BTN048 BTN147 BTN241 BTN3

Spartan-3E3,3V

4,7kΩ

BASYS

Figura 10.1: Esquema de los pulsadores en la placa Pegasus y en la placa Basys

La figura10.2 muestra el cronograma resultante del detector de flancos (PULSO_BTN) cuando hay rebotes en la entrada (BTN). Como para este ejemplo existen 4 flancos de subida, el detector de flancos producirá cuatro pulsos. Sin embargo, sólo queremos que se produzca uno.

4 flancos de subida

El detector de flancos producirá 4 pulsos

BTN

PULSO_BTN

4 flancos de subida

El detector de flancos producirá 4 pulsos

4 flancos de subida

El detector de flancos producirá 4 pulsos

BTN

PULSO_BTN

Figura 10.2: Cronograma de la salida del detector de flancos (PULSO_BTN) cuando hay rebotes en la entrada (BTN)

Para evitar los rebotes basta con eliminar todos los pulsos que se generen durante los siguientes 300 milisegundos después de haber detectado un flanco de subida. Si conseguimos hacer este circuito, la salida filtrada (FILTRO_BTN) sería como la mostrada en la figura 10.3.

4 flancos de subida

Sólo después de 300 milisegundos podrá haber un nuevo pulso

BTN

FILTRO_BTN

300 ms

4 flancos de subida

Sólo después de 300 milisegundos podrá haber un nuevo pulso

BTN

FILTRO_BTN

300 ms

Figura 10.3: Cronograma de la salida del filtro antirrebotes (FILTRO_BTN) cuando hay rebotes en la entrada (BTN)

¿Cómo podríamos realizar este circuito? pues con una máquina de estados similar al detector de flancos pero con temporizador. El esquema del circuito se muestra en la figura 10.4. En este esquema propuesto, el temporizador se habilita cuando se ha detectado un flanco de subida. A partir de entonces no se producirá ningún pulso de subida hasta que el temporizador dé la señal de que han pasado 3 milisegundos. Después de esto, se podrá detectar un nuevo flanco de subida.

Page 2: Circuito antirrebotes

Departamento de Tecnología Electrónica Ejercicio 10. Circuito antirrebotes

Diseño digital con VHDL - 11/12/2008 10-2

BTN0

Máquina de estados

Clk

Reset

Clk

Reset

Temporizador

Clk Reset

fin3msEnable

enablecontfin3ms

Filtro_BTN0BTN0

Máquina de estados

Clk

Reset

Clk

Reset

Temporizador

Clk Reset

fin3msEnable

enablecontfin3ms

Filtro_BTN0

Figura 10.4: Esquema del circuito que filtra los rebotes de la entrada

Intenta pensar por ti mismo el diagrama de estados. Si no se te ocurre, puedes mirar la figura 10.5.

estadofiltro_btn0enablecont

BTN0,fin3ms

Leyenda entradas

salidas

inic00

s000

0X

1X

0X

1X

s0110

X1

espera01

XXX0

estadofiltro_btn0enablecont

BTN0,fin3ms

Leyenda entradas

salidas

inic00

s000

0X

1X

0X

1X

s0110

X1

espera01

XXX0

Figura 10.5: Diagrama de estados del circuito que filtra los pulsos

Para cada pulsador habría que realizar un circuito similar. Implementa el contador manual de la sección 5.4 con estos filtros. Utiliza una placa Basys para comprobar que realmente funciona bien.