Traitement des rebonds

Dans la réalité, aucun bouton poussoir ne fonctionne simplement comme on le souhaiterait: lorsqu'on appuie sur le bouton, la lame métallique qui bouge pour assurer le contact se met à vibrer et rebondir, si bien que pendant un certain temps, le circuit se ferme et s'ouvre plusieurs fois avant de se stabiliser. Vous avez remarqué que c'est le cas sur votre maquette. Le but de ce qui va suivre est de concevoir un système électronique qui remédie à ce problème.

 

4.1. Analyse des rebonds

  • Tout d'abord, il faut analyser les types de défauts des boutons-poussoir (rebonds), en les observant sur les boutons réels, ceux de votre maquette. On a déjà connecté les sondes de l'analyseur pour visualiser le signal du bouton.
  • L'analyseur logique est connecté sur les signaux suivants:
    • lclk

      S0 pour le signal du bouton A

      S1 pour le signal du bouton B

  • Observez la forme des signaux.
  • Déterminez la durée maximale des rebonds (en nombre de périodes de l'horloge lclk) sur les signaux S0 et S1

4.2. Conception d'un système "anti-rebonds"

L'idée générale d'un système anti-rebonds (ou "filtre anti-rebonds") est de ne pas accorder de signification aux changements rapides du signal pendant la durée qui correspond à celle des rebonds. C'est une stratégie possible car la durée de ces rebonds (quelques microsecondes) est très inférieure à la durée d'appui sur le bouton (de l'ordre de la seconde). Il n'y a donc pas de confusion possible entre les rebonds d'une part, et l'action manuelle de l'opérateur d'autre part. Pour pouvoir dire cela, il faut avoir une bonne connaissance de la durée maximale possible des rebonds, ce que vous venez d'observer et de mesurer.

  1. Imaginez un système anti-rebonds, basé sur un registre à décalage, permettant de filtrer les signaux d'entrée A et B. Ce système, nommé AR, sera intercalé sur les signaux des boutons, avant les GEN_TOP (voir figure suivante).

 

  1. Comme les fois précédentes, vous commencerez par des chronogrammes, puis vous ferez un schéma, puis vous traduirez ce schéma en HDL. Complétez le fichier anti_reb.sv.
  2. Adaptez le fichier cd.sv pour inclure les filtres anti-rebonds.
  3. Simulez le fonctionnement de l'ensemble en exécutant la commande make simu_rebonds. Avec cette commande, les signaux A et B du testbench vérifient le fonctionnement de votre AR. Corrigez d'éventuelles erreurs.
  4. Synthétisez l'ensemble (make syn) et reprogrammez la carte (make program).
  5. Vérifiez le fonctionnement réel de votre système, en actionnant manuellement les boutons. Vérifiez que vous filtrez correctement les rebonds.

L'usage d'un registre à décalage consomme beaucoup de bascules si la durée des rebonds est très grande devant la période d'horloge. On peut faire plus économique en bascules, qui sont des circuits comportant beaucoup de transistors.

  1. Imaginez un nouveau système anti-rebonds basé sur un compteur.
  2. Reprenez les étapes précédentes et vérifiez le bon fonctionnement.