आइए थोड़ा पीछे हटें और UART द्वारा उपयोग किए जाने वाले निम्न स्तर के सिग्नलिंग प्रोटोकॉल के बारे में बात करें। TX और RX डेटा लाइनें हैं, न कि घड़ियां। घड़ियां केवल प्रत्येक UART के अंदर होती हैं, यही वजह है कि बॉड दर क्या है, इसके बारे में भी समझौता करना पड़ता है।
जब पारेषण नहीं होता है तो निष्क्रिय अवस्था में छोड़ दिया जाता है। एक बाइट प्रेषित करने के लिए (उदाहरण के लिए, अन्य डेटा चौड़ाई संभव है), ट्रांसमीटर पहले स्टार्ट बिट भेजता है । रिसीवर स्टार्ट बिट के प्रमुख किनारे के समय का उपयोग करता है और ज्ञात बॉड दर फिर बाकी चरित्र को डिकोड करता है। आइए सरलता के लिए कहें कि 100 kBaud का उपयोग किया जा रहा है। इसका मतलब है कि प्रत्येक बिट समय 10 is लंबा है। इसमें स्टार्ट बिट, डेटा बिट्स और स्टॉप बिट्स शामिल हैं। इसलिए, पहले डेटा बिट का मध्य प्रारंभ बिट के अग्रणी किनारे के बाद 15 the पर होगा, दूसरा 25 the पर, आदि।
जब तक रिसीवर और ट्रांसमीटर घड़ियों समान हैं, यह हमेशा के लिए जा सकता है। हालाँकि, वे कभी भी एक जैसे नहीं होंगे इसलिए यह हमेशा के लिए नहीं चल सकता। ट्रांसमीटर की घड़ी के लिए रिसीवर की घड़ी के पुन: सिंक्रनाइज़ेशन की अनुमति देने के लिए, डेटा चरित्र समाप्त हो जाता है, रेखा को थोड़ा निष्क्रिय छोड़ दिया जाता है, फिर प्रक्रिया को दोहराया जाता है। टाइमिंग की त्रुटियां स्टार्ट बिट के प्रमुख किनारे पर शुरू होती हैं, इसलिए अधिकतम बहाव अंतिम बिट पर होता है। एक बार जब वह पात्र खत्म हो जाता है, तो रिसीवर अगले स्टार्ट बिट की प्रतीक्षा करता है और प्रक्रिया दोहराता है।
8 डेटा बिट्स के साथ, समय के लिए सबसे खराब स्थिति अंतिम बिट का नमूना है। यह समय संदर्भ से 8.5 बिट गुना है, जो कि स्टार्ट बिट का अग्रणी किनारा है। यदि रिसीवर 1/2 बिट या अधिक से बंद है, तो यह एक अलग बिट के दौरान अंतिम बिट का नमूना देगा। स्पष्ट रूप से यह बुरा है। यह 8 1/2 बिट्स या 5.9% में 1/2 बिट की घड़ी आवृत्ति बेमेल पर होता है। यह बेमेल असफल होने की गारंटी है। विश्वसनीयता के लिए, आप आमतौर पर यह सुनिश्चित करना चाहते हैं कि रिसीवर ट्रांसमीटर से उस आधे या 2.9% के भीतर मेल खाता है। यह अंतिम बिट में 1/4 बिट समय त्रुटि का प्रतिनिधित्व करता है।
हालाँकि, यह इतना आसान नहीं है। ऊपर वर्णित परिदृश्य में, रिसीवर अनिवार्य रूप से स्टार्ट बिट के प्रमुख किनारे पर एक स्टॉपवॉच शुरू करता है। यह सिद्धांत एनालॉग इलेक्ट्रॉनिक्स में किया जा सकता है, लेकिन यह जटिल और महंगा होगा और आसानी से डिजिटल चिप्स पर एकीकृत नहीं होगा। इसके बजाय, अधिकांश डिजिटल UART के कार्यान्वयन में एक आंतरिक घड़ी होती है जो अपेक्षित बिट दर 16x पर चलती है। "स्टॉपवॉच" तब इन 16x चक्रों को गिनता है। इसका मतलब है कि सभी बिट नमूनाकरण समय में 1/16 बिट की अतिरिक्त संभावित त्रुटि है, जो पिछले बिट पर .7% घड़ी बेमेल की तरह है।
उम्मीद है कि यह स्पष्ट करता है कि स्टॉप बिट क्या है, बिट टाइमिंग कैसे काम करता है, और 16x घड़ी क्या है। मैं ज्यादातर स्टॉप बिट्स पर छोड़ देता हूं, लेकिन शायद आप खुद देख सकते हैं कि अब कम से कम एक स्टॉप बिट की आवश्यकता क्यों है। मूल रूप से स्टॉप बिट्स वर्णों के बीच न्यूनतम लागू लाइन निष्क्रिय समय है। यह वह समय है जिसके दौरान रिसीवर ने एक चरित्र प्राप्त करना समाप्त कर दिया है और एक शुरुआत बिट के अगले प्रमुख किनारे के लिए तैयार है। यदि स्टॉप बिट नहीं था, तो अंतिम डेटा बिट स्टार्ट बिट के समान ध्रुवीयता हो सकता है और रिसीवर के पास अपनी स्टॉपवॉच को चालू करने के लिए कोई बढ़त नहीं होगी।
बहुत पहले इस प्रोटोकॉल को कैम, लीवर और स्पिनिंग व्हील्स द्वारा डिकोड किया गया था। दो स्टॉप बिट्स का उपयोग अक्सर तंत्र को रीसेट करने की अनुमति देने के लिए किया जाता था। आजकल, डिजिटल लॉजिक में सब कुछ किया जाता है और 1 स्टॉप बिट का उपयोग सार्वभौमिक रूप से किया जाता है। आप अक्सर निम्न स्तर के प्रोटोकॉल को 8-N-1 के रूप में लिखते हैं, जिसका अर्थ है 8 डेटा बिट्स, कोई समानता बिट्स (इन के बारे में भूल जाएं, वे आज शायद ही कभी उपयोग किए जाते हैं), और 1 स्टॉप बिट। स्टार्ट बिट निहित है क्योंकि वहां कोई विकल्प नहीं है।
8-N-1 का उपयोग करके, डेटा का 8 बिट बाइट वास्तव में भेजने के लिए 10 बिट समय लेता है। यह एक कारण है "बिट रेट" और "बॉड रेट" के बीच अंतर है। बॉड दर व्यक्तिगत बिट सिग्नलिंग समय को संदर्भित करता है, जिसमें प्रारंभ और स्टॉप बिट्स शामिल हैं। 100 kBaud में, प्रत्येक बिट जो संचरित होता है, प्रारंभ और रोक बिट्स सहित 10 ud लेता है। पूरे चरित्र में इसलिए 100 100 लगते हैं, लेकिन वास्तविक डेटा के केवल 8 बिट्स को स्थानांतरित किया जाता है। बॉड दर 100 k है, लेकिन उच्च स्तर के दृष्टिकोण से डेटा ट्रांसफर बिट दर केवल 80 kBits / s है।