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.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
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.
- Bouton asynchrone: Rebond des contacts et asynchronisme d'horloge coexistent
- Synchronisation: Recevoir un niveau d'un bit dans un domaine d'horloge
- Anti-rebond: Accepter un changement après des échantillons stables consécutifs
- 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.
| Échantillon | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| x | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 |
| count après | 0 | 1 | 0 | 1 | 2 | 0 | 0 | 1 | 0 |
| q après | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| Événement montant | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Voir les données du chronogramme
| Signal | Forme d'onde | Valeurs du bus |
|---|---|---|
| sample | 234523452 | 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 |
| x | 0101...01 | |
| q après | 0....1... | |
| événement montant | 0....10.. |
Préciser délai et largeur du compteur
Avec un intervalle , la reconnaissance prend environ à 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 . 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é, . 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.