Altifigence Academy

47 / 63 · Concetto

Pulsanti reali: sincronizzazione, debounce e singolo evento

Distinguere sincronizzazione e rimbalzi e progettare debounce su campioni consecutivi.

Una pressione può produrre molte transizioni

I contatti meccanici possono aprirsi e chiudersi più volte prima di stabilizzarsi. Inoltre il pulsante è asincrono rispetto al clock. Sincronizzare significa ricevere nel dominio di clock; eliminare i rimbalzi significa riconoscere uno stato stabile fra brevi transizioni ripetute. Due flip-flopFlip-flop Acquisisce al fronte di clock specificato e mantiene fino al successivo. Gli ingressi devono rispettare setup e hold. Approfondisci non eliminano automaticamente il bounce.

Distinguere i compiti dei tre stadi
  1. Pulsante asincrono: Coesistono rimbalzo dei contatti e asincronia rispetto al clock
  2. Sincronizzazione: Ricevere un livello a un bit nel dominio di clock
  3. Antirimbalzo: Accettare il cambio di stato solo dopo campioni stabili consecutivi
  4. Rilevamento del fronte: Generare un evento di un ciclo per una transizione 0→1 accettata

Il flusso assume un livello a un bit mantenuto abbastanza a lungo. Impulsi brevi, dati multibit coerenti e gli stessi clock asincroni richiedono progetti distinti.

Regola degli N campioni consecutivi

Siano q lo stato approvato, x l'ingresso sincronizzato e count il numero di campioni consecutivi diversi da q. Con x=q si azzera count. Con x≠q si incrementa; all'N-esimo campione consecutivo si aggiorna q=x e si azzera count.

Con N=3 e q iniziale 0, ogni colonna è un istante di campionamento dell'ingresso sincronizzato, non la tensione fisica del contatto.

Campione012345678
x010111101
count after010120010
q after000001111
rise event000001000
N=3: accettare il valore opposto dopo conferme consecutive
Mostra i dati della forma d’onda
Dati della forma d’onda: ogni carattere è un intervallo; il punto mantiene lo stato precedente; p è un ciclo di clock.
SegnaleForma d’ondaValori del bus
sample2345234520 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8
x0101...01
q after0....1...
rise event0....10..

Esplicitare latenza e larghezza del contatore

Con intervallo TsT_s, la conferma richiede circa (N−1)Ts(N-1)T_s–NTsNT_s secondo la fase dell'ingresso, oltre al ritardo di sincronizzazione. Per richiedere prudentemente «10 ms stabili», considerate anche la distanza fra primo e ultimo campione. Brevi transizioni intermedie possono sfuggire: campioni uguali non dimostrano tensione sempre costante. Definite insieme caratteristiche del pulsante e campionamento.

Se count memorizza solo 0–N−1, servono max⁡(1,⌈log⁡2N⌉)\max(1,\lceil\log_2 N\rceil) bit. Gestite N=1: già il primo campione opposto deve essere approvato, quindi conta l'ordine del confronto N−1.

Una pressione, un evento

Con stato approvato successivo q_next vale rise=q‾ qnextrise=\overline q\,q_{next}. La tabella genera l'evento nello stesso campione della conferma. Confrontare q con una sua copia ritardata in un registroRegistro Memorizza uno stato di più bit. I registri sincroni del corso acquisiscono gli ingressi specificati al fronte di clock. Approfondisci separato può aggiungere latenza secondo l'osservazione. Specificate anche quando consumare l'evento.

Prova tu

Con N=3, q=0 e ingressi 1,1,0,1,1,1, quando cambia q? Quanti bit per count 0–7 con N=8?

Leggi la spiegazione

Lo 0 al terzo campione azzera la serie; il sesto approva 1. Per 0–7 servono tre bit. Un’altra implementazione che memorizza fino a 8 ne richiede quattro: controllate prima l’intervallo.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.