47 / 63 · Concetto
Pulsanti reali: sincronizzazione, debounce e singolo evento
Distinguere sincronizzazione e rimbalzi e progettare debounce su campioni consecutivi.
Le lezioni sono gratuite. Iscriviti per salvare i progressi.
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.
- Pulsante asincrono: Coesistono rimbalzo dei contatti e asincronia rispetto al clock
- Sincronizzazione: Ricevere un livello a un bit nel dominio di clock
- Antirimbalzo: Accettare il cambio di stato solo dopo campioni stabili consecutivi
- 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.
| Campione | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| x | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 |
| count after | 0 | 1 | 0 | 1 | 2 | 0 | 0 | 1 | 0 |
| q after | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| rise event | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Mostra i dati della forma d’onda
| Segnale | Forma d’onda | Valori del bus |
|---|---|---|
| sample | 234523452 | 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 |
| x | 0101...01 | |
| q after | 0....1... | |
| rise event | 0....10.. |
Esplicitare latenza e larghezza del contatore
Con intervallo , la conferma richiede circa – 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 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 . 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.