Altifigence Academy

47 / 63 · अवधारणा

वास्तविक बटन इनपुट: synchronization, debounce और एक event

अतुल्यकालिक इनपुट synchronization और संपर्क bounce हटाने को अलग करें तथा लगातार samples पर आधारित debouncer बनाएँ।

बटन एक बार दबाने से कई संक्रमण हो सकते हैं

यांत्रिक बटन के संपर्क स्थिर होने से पहले कई बार जुड़ और टूट सकते हैं। साथ ही बटन सिग्नल सिस्टम क्लॉक से स्वतंत्र बदलने वाला अतुल्यकालिक इनपुट है। Synchronization उसे क्लॉक डोमेन में ग्रहण करने की समस्या है; debouncing छोटे दोहराए गए संक्रमणों से एक स्थिर अवस्था तय करने की। केवल दो फ्लिप-फ्लॉपफ्लिप-फ्लॉप निर्दिष्ट क्लॉक एज पर इनपुट संग्रहित करके अगली एज तक बनाए रखता है। इनपुट को setup और hold शर्तें पूरी करनी होती हैं। और पढ़ें जोड़ने से bounce अपने-आप नहीं मिटता।

तीन चरणों की भूमिकाएँ अलग करें
  1. अतुल्यकालिक बटन: संपर्क bounce और क्लॉक से असंबद्धता दोनों मौजूद
  2. Synchronization: क्लॉक डोमेन में एकल-बिट level ग्रहण करें
  3. डिबाउंसिंग: लगातार स्थिर samples पर ही अवस्था परिवर्तन स्वीकारें
  4. किनारा पहचान: स्वीकृत 0→1 पर एक-चक्र event बनाएँ

यह प्रवाह पर्याप्त देर स्थिर रहने वाले एकल-बिट बटन level पर आधारित है। छोटे pulse, सुसंगत बहु-बिट हस्तांतरण और अतुल्यकालिक क्लॉक को स्वयं संसाधित करने के लिए अलग डिज़ाइन चाहिए।

लगातार N samples का नियम

वर्तमान स्वीकृत अवस्था q, synchronized इनपुट x और q से अलग लगातार samples की संख्या count मानें। हर sample पर x=q हो तो count=0 करें। x≠q हो तो count बढ़ाएँ; Nवें लगातार sample पर q=x करें और count फिर 0 करें।

N=3 और प्रारंभिक q=0 का उदाहरण लें। हर स्तंभ synchronized इनपुट देखने का sample क्षण है। यह graph वास्तविक संपर्क की voltage नहीं है।

Sample012345678
x010111101
count बाद में010120010
q बाद में000001111
उदयी event000001000
N=3: विपरीत मान लगातार तीन बार देखकर स्वीकारें
तरंगरूप डेटा देखें
तरंगरूप डेटा: हर अक्षर एक अंतराल है; बिंदु पिछली अवस्था बनाए रखता है; p एक क्लॉक चक्र है।
संकेततरंगरूपबस मान
sample2345234520 → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8
x0101...01
q बाद में0....1...
उदयी event0....10..

विलंब और काउंटर चौड़ाई स्पष्ट करें

Sample अंतराल TsT_s हो, तो इनपुट परिवर्तन की phase के अनुसार स्वीकार करने में लगभग (N−1)Ts(N-1)T_s से NTsNT_s लगते हैं। शुरुआती synchronizer का विलंब अलग जुड़ता है। यदि सावधानीपूर्वक “10 ms तक स्थिर” माँगते हैं, तो N चुनते समय पहले और अंतिम sample के बीच का अंतर भी देखें। Samples के बीच छोटा परिवर्तन दिख नहीं सकता, इसलिए लगातार समान samples से यह सिद्ध नहीं होता कि voltage उस पूरे समय कभी बदली ही नहीं। Switch गुण और sampling शर्तें साथ तय करें।

यदि count केवल 0 से N−1 संग्रहित करता है, तो आवश्यक चौड़ाई max⁡(1,⌈log⁡2N⌉)\max(1,\lceil\log_2 N\rceil) है। N=1 का विशेष मामला भी संभालें। पहले विपरीत sample पर तुरंत स्वीकार करना होगा, इसलिए implementation में N−1 तुलना का क्रम महत्वपूर्ण है।

एक दबाव से एक event

स्वीकृत नई अवस्था q_next हो तो rise=q‾ qnextrise=\overline q\,q_{next} है। ऊपर की तालिका उसी sample में event देती है जिसमें अवस्था स्वीकार हुई। q और उसके एक-चक्र विलंबित रूप की अलग रजिस्टररजिस्टर कई बिटों की अवस्था संग्रहित करता है। इस पाठ्यक्रम के तुल्यकालिक रजिस्टर निर्धारित इनपुट को क्लॉक एज पर संग्रहित करते हैं। और पढ़ें में तुलना करने पर अवलोकन स्थान के अनुसार अतिरिक्त विलंब हो सकता है। इसलिए event कब इस्तेमाल होगा, यह भी निर्दिष्ट करें।

खुद आज़माएँ

N=3, प्रारंभिक q=0 पर इनपुट 1,1,0,1,1,1 देने से किस sample में अवस्था बदलेगी? N=8 का काउंटर 0–7 संग्रहित करे तो न्यूनतम चौड़ाई कितनी है?

व्याख्या पढ़ें

तीसरे sample का 0 लगातार samples की संख्या मिटाता है, इसलिए छठे sample में 1 स्वीकार होगा। Count=0–7 के लिए तीन बिट चाहिए। अलग implementation यदि 8 भी संग्रहित करे तो चार बिट चाहिए; पहले संग्रहण सीमा देखें।

आपका चयन इस ब्राउज़र पर लागू होता है। फ़ुटर से कभी भी बदलें।