Altifigence Academy

47 / 63 · Concept

Boutons réels : synchronisation, anti-rebond et événement unique

Séparer synchronisation et anti-rebond, puis concevoir un filtre par échantillons consécutifs.

Une pression peut créer plusieurs transitions

Avant stabilisation, un contact mécanique peut s'ouvrir et se fermer plusieurs fois. Le bouton change aussi indépendamment de l'horloge. Synchroniser l'intègre au domaine d'horloge ; filtrer les rebonds transforme les transitions brèves répétées en état stable reconnu. Deux basculesBascule Élément capturant l'entrée au front d'horloge spécifié et la conservant jusqu'au suivant. L'entrée doit respecter setup et hold. En savoir plus ne suppriment pas automatiquement les rebonds.

Distinguer le rôle des trois étapes
  1. Bouton asynchrone: Rebond des contacts et asynchronisme d'horloge coexistent
  2. Synchronisation: Recevoir un niveau d'un bit dans un domaine d'horloge
  3. Anti-rebond: Accepter un changement après des échantillons stables consécutifs
  4. Détection de front: Produire un événement d'un cycle pour un 0→1 accepté

Ce flux suppose un niveau d'un bit maintenu assez longtemps. Impulsions courtes, transfert multibit cohérent et traitement d'une horloge asynchrone exigent d'autres conceptions.

Exiger N échantillons consécutifs

Notons q l'état accepté, x l'entrée synchronisée et count le nombre de valeurs consécutives différentes de q. À chaque échantillon, si x=q, remettez count à 0. Sinon, incrémentez-le ; au Nᵉ échantillon consécutif, faites q=x et remettez count à 0.

Exemple N=3, q initial=0. Les colonnes sont les instants d'échantillonnage de l'entrée synchronisée, pas la tension physique du contact.

Échantillon012345678
x010111101
count après010120010
q après000001111
Événement montant000001000
N=3 : accepter la valeur opposée après trois observations consécutives
Voir les données du chronogramme
Données du chronogramme : chaque caractère représente un intervalle ; un point maintient l'état précédent ; p représente un cycle d'horloge.
SignalForme d'ondeValeurs du bus
sample2345234520 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8
x0101...01
q après0....1...
événement montant0....10..

Préciser délai et largeur du compteur

Avec un intervalle TsT_s, la reconnaissance prend environ (N−1)Ts(N-1)T_s à NTsNT_s selon la phase du changement, plus la synchronisation amont. Pour exiger prudemment « stable pendant 10 ms », choisissez N en considérant l'écart entre premier et dernier échantillons. Des transitions entre échantillons peuvent être invisibles : N lectures identiques ne prouvent pas une tension inchangée entre elles. Définissez ensemble caractéristiques du contact et échantillonnage.

Si count stocke 0 à N−1, sa largeur vaut max⁡(1,⌈log⁡2N⌉)\max(1,\lceil\log_2 N\rceil). Traitez aussi N=1 : la première lecture opposée doit être acceptée immédiatement, donc l'ordre du test N−1 compte.

Transformer une pression en événement unique

Si q_next est le nouvel état accepté, rise=q‾ qnextrise=\overline q\,q_{next}. Le tableau émet l'événement au même échantillon que l'acceptation. Comparer q à un q retardé d'un cycle dans un registreRegistre Circuit stockant plusieurs bits d'état. Les registres synchrones du cours capturent leur entrée définie sur un front d'horloge. En savoir plus séparé peut ajouter de la latence selon l'observation ; spécifiez quand l'événement est consommé.

Essayez vous-même

Avec N=3,q initial=0 et les entrées 1,1,0,1,1,1, quand l'état change-t-il ? Pour N=8 et count=0–7, quelle largeur minimale ?

Lire l’explication

Le 0 du troisième échantillon réinitialise la série ; 1 est accepté au sixième. count=0–7 demande trois bits. Une autre réalisation stockant jusqu'à 8 en demanderait quatre : vérifiez d'abord la plage réellement stockée.

Votre choix s’applique à ce navigateur. Modifiez-le à tout moment en bas de page.