Altifigence Academy

47 / 63 · Konsep

Tombol nyata: sinkronisasi, debounce, dan satu kejadian

Pisahkan sinkronisasi asinkron dan penghilangan bounce, lalu rancang debounce berdasarkan sampel berurutan.

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.

Pisahkan peran ketiga tahap
  1. Tombol asinkron: Pantulan kontak dan ketidaksinkronan clock terjadi bersamaan
  2. Sinkronisasi: Terima level satu bit ke domain clock
  3. Debounce: Terima perubahan hanya setelah sampel stabil berurutan
  4. 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.

Sampel012345678
x010111101
count sesudah010120010
q sesudah000001111
Kejadian naik000001000
N=3: terima nilai berlawanan setelah tiga pengamatan berurutan
Lihat data gelombang
Data gelombang: setiap karakter mewakili satu interval; titik mempertahankan keadaan sebelumnya; p adalah satu siklus clock.
SinyalGelombangNilai bus
sample2345234520 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8
x0101...01
q sesudah0....1...
event naik0....10..

Nyatakan latensi dan lebar pencacah

Dengan interval TsT_s, penerimaan membutuhkan sekitar (N−1)Ts(N-1)T_s hingga NTsNT_s 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 max⁡(1,⌈log⁡2N⌉)\max(1,\lceil\log_2 N\rceil). 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, rise=q‾ qnextrise=\overline q\,q_{next}. 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.

Pilihan berlaku di peramban ini. Ubah kapan saja di bagian bawah halaman.