47 / 63 · Konsep
Tombol nyata: sinkronisasi, debounce, dan satu kejadian
Pisahkan sinkronisasi asinkron dan penghilangan bounce, lalu rancang debounce berdasarkan sampel berurutan.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
Satu penekanan dapat menghasilkan beberapa transisi
Sebelum stabil, kontak mekanis dapat berulang kali tersambung dan terputus. Tombol juga berubah tanpa mengikuti clock. Sinkronisasi membawa sinyal ke domain clock; debounce menilai transisi pendek berulang sebagai satu keadaan stabil. Dua flip-flopFlip-flop Elemen yang menangkap masukan pada tepi clock tertentu dan menyimpannya hingga tepi berikutnya. Masukan harus memenuhi setup dan hold. Selengkapnya tidak otomatis menghapus bounce.
- Tombol asinkron: Pantulan kontak dan ketidaksinkronan clock terjadi bersamaan
- Sinkronisasi: Terima level satu bit ke domain clock
- Debounce: Terima perubahan hanya setelah sampel stabil berurutan
- Deteksi tepi: Hasilkan event satu siklus pada 0→1 yang diterima
Alur ini mengasumsikan level satu bit bertahan cukup lama. Pulsa pendek, transfer multibit koheren, dan pemrosesan clock asinkron memerlukan desain lain.
Memerlukan N sampel berturut-turut
Misalkan q keadaan yang diterima, x masukan tersinkron, dan count jumlah sampel berturut-turut yang berbeda dari q. Pada tiap sampel, jika x=q, hapus count ke 0. Jika berbeda, naikkan count; pada sampel berurutan ke-N, ubah q=x dan hapus count ke 0.
Contoh N=3, q awal=0. Kolom adalah waktu pengamatan masukan tersinkron, bukan tegangan kontak fisik.
| Sampel | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| x | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 |
| count sesudah | 0 | 1 | 0 | 1 | 2 | 0 | 0 | 1 | 0 |
| q sesudah | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
| Kejadian naik | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Lihat data gelombang
| Sinyal | Gelombang | Nilai bus |
|---|---|---|
| sample | 234523452 | 0 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 |
| x | 0101...01 | |
| q sesudah | 0....1... | |
| event naik | 0....10.. |
Nyatakan latensi dan lebar pencacah
Dengan interval , penerimaan membutuhkan sekitar hingga menurut fase perubahan, ditambah latensi sinkronisasi. Untuk syarat konservatif “stabil selama 10 ms”, pilih N sambil mempertimbangkan jarak sampel pertama dan terakhir. Transisi di antara sampel dapat tidak terlihat; sampel sama tidak membuktikan tegangan tak pernah berubah di antaranya. Tetapkan karakteristik sakelar dan sampling bersama.
Jika count menyimpan 0 hingga N−1, lebarnya . Tangani N=1 juga: sampel berlawanan pertama harus langsung diterima, sehingga urutan perbandingan N−1 penting.
Mengubah satu penekanan menjadi satu kejadian
Jika q_next adalah keadaan baru yang diterima, . Tabel memunculkan kejadian pada sampel penerimaan yang sama. Membandingkan q dengan q tertunda satu siklus dalam registerRegister Rangkaian penyimpan beberapa bit keadaan. Register sinkron mata kuliah ini menangkap masukan yang ditentukan pada tepi clock. Selengkapnya terpisah dapat menambah latensi menurut pengamatan; tentukan kapan kejadian dikonsumsi.
Coba sendiri
Dengan N=3,q awal=0 dan masukan 1,1,0,1,1,1, kapan keadaan berubah? Untuk N=8 dan count=0–7, berapa lebar minimum?
Baca penjelasan
Nol pada sampel ketiga menghapus hitungan berurutan, sehingga 1 diterima pada sampel keenam. count=0–7 membutuhkan tiga bit. Implementasi yang menyimpan hingga 8 membutuhkan empat; periksa rentang tersimpan dahulu.