एक या दो UART रोक बिट्स?


15

UARTs अक्सर आपको 1, 1.5 और 2 स्टॉप बिट्स के बीच चयन करने देते हैं। 1 स्टॉप बिट पेलोड दक्षता के साथ 80% (8/10) है, 2 स्टॉप बिट्स के साथ जो 72.7% (8/11) तक गिरता है। तो दूसरे स्टॉप बिट का फायदा क्या है?

जवाबों:


19

अतिरिक्त स्टॉप बिट्स एक अतिरिक्त अतिरिक्त प्राप्त करने का प्रसंस्करण समय जोड़ने का एक उपयोगी तरीका हो सकता है, विशेष रूप से उच्च बॉड दरों और / या नरम UART का उपयोग करके, जहां प्राप्त बाइट को संसाधित करने के लिए समय की आवश्यकता होती है।

जहां गति तंग है, और आपका UART केवल 2 की शक्तियों में विभाजन अनुपात प्रदान करता है, एक अतिरिक्त स्टॉपबिट को जोड़ने से अगले सबसे कम बॉड्रेट की तुलना में गति में कम कठोर कमी देने का विकल्प हो सकता है।

मेरा मानना ​​है कि यह एक कारण हो सकता है DMX512 मानक 2 स्टॉपबिट निर्दिष्ट करता है।

एक अन्य स्थिति जहां वे उपयोगी हो सकते हैं, यदि आपके पास बिना किसी बफरिंग या पैकिटिशन के डेटा स्ट्रीम को अग्रेषित करने वाले उपकरण हैं - नोड्स और परिमित नमूने की बारीकियों के बीच घड़ी की दरों में छोटे अंतर के कारण त्रुटियां हो सकती हैं, क्योंकि डेटा प्राप्त होता है और कई नोड्स में पीछे हट जाता है। एक श्रृंखला है, लेकिन यदि डेटा को 2 स्टॉपबिट्स के साथ भेजा जाता है और रिसीवर को एक स्टॉपबिट में सेट किया जाता है, तो यह इन त्रुटियों को समायोजित करने के लिए पर्याप्त मार्जिन जोड़ता है और कम से कम श्रृंखला के नोड्स के लिए कम से कम एक वैध स्टॉपबिट की अवधि को मज़बूती से प्राप्त करने के लिए छोड़ देता है।

मैंने एक ऐसी स्थिति का सामना भी किया है जहां एक बहुत लंबी केबल चलाने से उठने और गिरने के समय में कुछ विषमता होती है, जिसके परिणामस्वरूप अपर्याप्त स्टॉपबिट लंबाई होती है - 2 स्टॉपबिट भेजने और रिसीवर होने के लिए केवल एक को यह निर्धारित करने की आवश्यकता होती है।


6

लंबे समय से चले गए प्रिंटर (लगभग) सभी यांत्रिक निर्माण थे। तब भी कुछ हद तक बॉड्रेट को मानकीकृत किया गया था, इसलिए अतिरिक्त स्टॉप बिट को जोड़ने से प्रिंटर को चरित्र को प्रिंट करने के लिए कुछ अतिरिक्त समय मिलेगा। समय के पहलू अधिक स्पष्ट रूप से वापस आ गए थे। मेरे पहले प्रिंटर के लिए, एक शोर http://en.wikipedia.org/wiki/Teletype_Model_33 , मुझे कैरिज रिटर्न भेजने के बाद दो पात्रों का ठहराव सम्मिलित करना था।


ठीक से समायोजित मॉडल 33 में कैरेज रिटर्न के बाद केवल एक चरित्र की आवश्यकता थी। जब आप लाइनफीड भेजना चाहते हैं! मैं भूल गया कि उन्हें 2 स्टॉप बिट्स की आवश्यकता थी, लेकिन आप सही हैं और इसलिए मैंने रसेल के उत्तर के नीचे जो कहा है वह लागू होता है (लेकिन वे 1.5 स्टॉप बिट्स बॉडॉट हार्डवेयर के लिए थे)। हालाँकि, अतिरिक्त स्टॉप बिट्स (10ms के) ने किसी भी कैरिज रिटर्न देरी में मदद नहीं की।
गब्ररी

4

दो स्टॉप बिट्स एक सिस्टम पर एक से अधिक उपयोगी होने की संभावना नहीं है, जिसमें रुके हुए समय का एक महत्वपूर्ण अनुपात होता है और जो कम शोर (कम बीईआर) वातावरण में काम कर रहा है जैसे कि उपकरणों के लिए आंतरिक या कुछ मीटर के साथ परिधीय इंटरफ़ेस में। केबल और / या बिना मॉडेम-मॉडेम चरण के।

2 स्टॉप बिट्स आपको अधिक से अधिक सिंक्रनाइज़ेशन का समय देते हैं, पात्रों के बीच प्रक्रिया करने के लिए अधिक समय और शायद, हार्डवेयर और एल्गोरिदम के आधार पर, निरंतर डेटा स्ट्रीम के दौरान सिंक्रनाइज़ेशन प्राप्त करने या प्राप्त करने का बेहतर मौका। इंटरचैकर समय आधुनिक प्रणालियों पर बहुत कम मूल्य का है जब घड़ी की गति कम थी और प्रोसेसर थ्रूपुट कम था।

यदि आपके पास एक अनिवार्य रूप से निरंतर डेटा स्ट्रीम है, तो यदि असंबद्ध है, तो कोई भी उच्च बिट स्टॉप बिट की तरह दिखाई देगा। कोई भी उच्च निम्न संक्रमण बाइट सीमा की तरह दिखाई देगा। यदि आपका रिसीवर 10 सीमा पर शुरू होता है और यह एक सच्ची शुरुआत सीमा नहीं है, तो यह केवल 50% समय की खोज की जाएगी) (यानी यदि अंतिम "स्टॉप बिट" वास्तव में कम डेटा बिट पाया जाता है और आप भी रास्ते में वास्तविक स्टॉप / स्टार्ट बाउंड्री पर छोड़ दिया है। औसतन आपके पास बाइट सीमा की 1/4 संभावना 1/0 है और झटके से स्टॉप / स्टार्ट पेयर की तरह दिख रहे हैं। ऊपर दिए गए सुझाव हैं कि यदि आप एक गलत स्टॉप चुनते हैं- जोड़ी शुरू करें तो लगभग 50% संभावना है कि आप निम्नलिखित प्रयास पर एक और एक का चयन करेंगे।

यदि आप 2 स्टॉप बिट्स (11) का उपयोग करते हैं तो एक वैध स्टॉप स्टार्ट अनुक्रम 110 है जिसमें यादृच्छिक डेटा ट्रैफ़िक में 1/8 वां मौका होता है। असंबद्ध प्रवाह में वास्तविक स्टॉप और स्टार्ट बिट्स के मिश्रण से सत्संग थोड़ा बदल जाता है, लेकिन यह अपेक्षाकृत कम संभावना है कि यदि आपको एक चक्र पर एक गलत 110 स्टॉप / स्टार्ट अनुक्रम मिलता है, तो आप वास्तविक 110 से अधिक ठोकर खाने से पहले एक और कोशिश करेंगे। अनुक्रम जो आगे होता है।

जैसा कि आप ध्यान दें, 1 स्टॉप बिट पैदावार 8/10 = 80% अधिकतम थ्रूपुट और 2 स्टॉप बिट उपज 8/11 = 72% दक्षता। उच्चारण सीमा पर थ्रूपुट में अंतर 80% / 72% = ~ 11% अधिक है। यह चरम परिस्थितियों में एक उपयोगी लाभ है, लेकिन विशाल नहीं है और यदि सर्किट न्यूनतम मूल्य के समय के लगभग 10% से अधिक निष्क्रिय है। यदि आपका सर्किट शोर है और कभी-कभी तुल्यकालन हानि का खतरा है, तो अतिरिक्त स्टॉप बिट बहुत मदद कर सकता है। लेकिन अगर आपको परवाह है कि थ्रूपुट के बारे में आप अक्सर बॉड दर (हमेशा नहीं) बढ़ा सकते हैं या पूरी तरह से तुल्यकालिक ऑपरेशन में बदल सकते हैं।


मुझे ऐसे किसी UART के बारे में जानकारी नहीं है जिसे किसी भी स्पष्ट शुरुआत बिट्स को अनदेखा करने के लिए कॉन्फ़िगर किया जा सकता है जो कि अंकन के पूर्ण बिट समय से अधिक नहीं हैं (वास्तव में, अधिकांश एक शुरुआत बिट को स्वीकार करेंगे जो आधे से थोड़ा समय से पहले होता है अंकन, और अन्यथा करने के लिए कॉन्फ़िगर नहीं किया जा सकता है)। इस तरह की सुविधा उपयोगी हो सकती है, हालांकि।
सुपरकैट

आप सही उत्तर पर अड़ गए हैं, अगर हम स्वीकार कर सकते हैं कि यह अभ्यास यांत्रिक दिनों में वापस चला जाता है। इसके बाद, रिसीवर तंत्र को अगले प्रारंभ बिट के लिए तैयार होने के लिए एक स्टॉप पर आने के लिए लगभग 1 बिट समय की आवश्यकता थी। इसलिए ट्रांसमीटर का निर्माण 1.5 बिट स्टॉप बिट के लिए किया गया था। यह आपके द्वारा वर्णित प्रभाव था। यदि सिंक खो गया था, तब तक कई कचरा पात्र हो सकते हैं जब तक आप सिंक को पुनः प्राप्त नहीं करते। हम इलेक्ट्रॉनिक कार्यान्वयन करने के लिए मिल गया है, रिसीवर तुरंत काटा बंद स्तर के लिए संक्रमण देखने पर अगले शुरू करने के लिए इंतजार कर शुरू कर सकता है - यह जरूरत नहीं थी गद्दी
gbarry

@gbarry - methinks आपकी टिप्पणी में ठोकर खाई नहीं है।
रसेल मैकमोहन

वास्तव में, मैं पात्रों से बाहर भाग गया :) कुछ गलत है?
गब्ररी

3

"सॉफ्ट UART" के साथ समय प्राप्त करने के बारे में mikeselectricstuff के बिंदु को बढ़ाना, एक प्राप्त आवेदन जो हमेशा जानता होगा कि डेटा कब स्वीकार करना है और मतदान के आधार पर ऐसा करना अक्सर तेज बॉड दरों को संभाल सकता है, जो एक बाधित-चालित नरम UART के साथ व्यावहारिक होगा। हालांकि, ऐसे एप्लिकेशन केवल एक बाइट के स्टॉप बिट और अगले बाइट के स्टार्ट बिट के बीच के समय में आने वाले डेटा को प्रोसेस कर सकते हैं; प्रत्येक बाइट को संसाधित करने के लिए आवश्यक समय संचार गति के लिए सीमित कारक होता है। 115,200-N-8-2 पर डेटा संसाधित करना 57,600-N-8-1 पर इसे संसाधित करने की तुलना में बहुत अधिक मांग नहीं है, लेकिन यह 80% से अधिक तेज है।

कभी-कभी कोई प्रतीत होने वाले-कम-कुशल डेटा प्रारूपों का उपयोग करके चीजों को और भी आगे बढ़ा सकता है। उदाहरण के लिए, प्रत्येक प्रत्येक बाइट को दो टुकड़ों में भेज सकता है, एक सात बिट्स के साथ और एक एक के साथ (एमएसबी एक-बिट भाग के सभी सेट हैं)। यदि कोई ऐसा करता है, यहां तक ​​कि केवल एक स्टॉप बिट के साथ, एक बाइट-पेयर के अंत और अगले की शुरुआत के बीच अंकन के आठ बिट समय होंगे, तो इस प्रकार एक बिट दर को चार गुना अधिक धक्का देने की अनुमति देगा जितना कि एक केवल दो स्टॉप बिट्स के साथ कर सकते हैं (और आठ गुना अधिक के रूप में एक व्यक्ति के साथ क्या कर सकता है)। कई बार बाइट्स भेजने के बावजूद, डेटा दर में चार गुना वृद्धि एक बड़ी जीत होगी। इसके अलावा, हालांकि प्रत्येक प्रेषित बाइट जोड़ी को आठ बिट डेटा भेजने के लिए इस्तेमाल किया जा सकता है, जबकि 256 संभावित बाइट मानों में से केवल 130 का उपयोग एन्कोडिंग द्वारा किया जाएगा।


आप स्टार्ट-अप किनारे पर एक रुकावट पैदा करके और पूरे बाइट के लिए इंटरप्ट कोड के अंदर रहकर सॉफ्ट-यूएआर हाई बाउड्रेट्स (250K और ऊपर) भी कर सकते हैं - एक अतिरिक्त स्टॉपबिट यहां बहुत उपयोगी हो सकता है।
mikeselectricstuff

@ मिसेइलेक्ट्रिकस्टफ: एक अतिरिक्त स्टॉप बिट बहुत उपयोगी हो सकता है, क्योंकि प्रत्येक बाइट में केवल कुछ बिट्स का उपयोग किया जा सकता है (यह आवश्यक है कि प्रत्येक बाइट के एलएसबी को सेट किया जा सकता है, क्योंकि कोई उस बिट के बढ़ते किनारे से समय निकाल सकता है, यहां तक ​​कि अगर बीच में थोड़ा ढलान हो सकता है तो व्यवधान उत्पन्न होता है)। बिट-इंटरप्ट-ट्रिगर-ऑन-स्टार्ट-बिट दृष्टिकोण का एक प्रमुख सीमा, हालांकि, यह है कि आने वाले डेटा आने पर डेटा भेजने का कोई अच्छा तरीका नहीं है। या तो प्रेषित डेटा या प्राप्त डेटा (या दोनों) खोने जा रहा है।
सुपरकैट

2

एक बार एक समय में इलेक्ट्रोमैकेनिकल मॉन्स्टर थे जिन्हें टेलेटिप कहा जाता था। अधिकांश एसी मोटर्स पर पावर लाइन आवृत्ति के साथ सिंक्रोनाइज़ किया गया। इस प्रकार हमेशा एक मौका था कि दो संचार मशीनों को एक ही पावर ग्रिड के लिए सिंक्रनाइज़ नहीं किया गया होगा या यहां तक ​​कि उस मामले के लिए विभिन्न आवृत्तियों का उपयोग करके वैकल्पिक चालू पर चलाया जा सकता है।

इस प्रकार, एक धीमी मशीन को पकड़ने और सिंक से बाहर नहीं निकलने देने के लिए, दो स्टॉप बिट्स भेजे गए थे।

अन्य प्रयोजनों के लिए जैसे कि मुद्रण गाड़ी के लिए एक नई लाइन की शुरुआत में लौटने की अनुमति, एक सीआर, एलएफ प्लस दो रूबआउट भेजे गए (सभी एक 8 स्तर टेप पर छेद)।

यह केवल 110 बौड और धीमी गति से चलने वाले सर्किट के लिए प्रथागत था।


1

प्राप्त यांत्रिक उपकरणों की सुस्ती, अतिरिक्त स्टॉप बिट्स को जोड़ने के पीछे का कारण था, हालांकि आज डिवाइस काफी तेज हैं और अतिरिक्त स्टॉप बिट की आवश्यकता के बिना भी उच्च बॉड दरों पर काम करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.