कुछ माइक्रोकंट्रोलर बॉड दरों को कैसे लागू करते हैं, हालांकि यह क्रिस्टल आवृत्ति का उपयोग मानक बॉड दरों के लिए स्केलेबल नहीं है?


16

मुझे बस एहसास हुआ कि 8051 परिवार 11.0592 मेगाहर्ट्ज और इसके गुणकों का उपयोग करता है ताकि मानक बॉड दर उत्पन्न हो सके। लेकिन ऐसे सॉक्स हैं जो 15 मेगाहर्ट्ज का उपयोग करते हैं। फिर वे ऐसा कैसे करते हैं?


5
ज्यादातर वे गैर-शक्ति-दर-दो विभाजक का उपयोग करते हैं, जो मानक बॉड दरों के करीब स्वीकार्य दर उत्पन्न करते हैं।
ब्रायन ड्रमंड बाद

4
क्या अधिक है, यूएआरटी सिग्नल की निगरानी कर सकता है (उदाहरण के लिए 16 नमूने प्रति यूआरटी बिट), जो समय (और शोर) के मुद्दों को हल करता है: Electronicdesign.com/embedded/…
फ़्लोरियन कैस्टेलन

1
रुचि रखने वाले किसी के लिए, AVR USART टाइमिंग एरर टेबल डेटाशीट में आम घड़ियों के लिए उपलब्ध हैं , (इसमें पेज 168 पर बाद में)
सेबी

जवाबों:


22

UART तब तक देखभाल नहीं करता है जब तक यह यथोचित रूप से सटीक है।

15000000230,40065

65230,400=14976000

तो आपका UART 15000 के कारक से बहुत तेज़ होने वाला है। यह1+1पर एक समस्या बन जाता है1500014,9761.002204, आधे से भी जब 11 बिट भर में समय बदलाव है और अधिक एक सा।1+121 11.045


9
यह ध्यान देने योग्य हो सकता है कि ट्रांसमीटर और रिसीवर दोनों में घड़ियां हैं, इसलिए यदि दोनों गलत दिशा में गलती कर रहे हैं ..
Spehro Pefhany

7
इससे भी महत्वपूर्ण बात, प्रासंगिक धारावाहिक प्रोटोकॉल (RS-232 आदि) घड़ियों का उपयोग करते हैं और आगे घड़ियों को सिंक्रनाइज़ करने के लिए बिट्स को रोकते हैं। यहां तक ​​कि अगर दोनों पक्षों के पास 230400 हर्ट्ज घड़ियां थीं, तो संभवत: दोनों घड़ियां चरण से बाहर होंगी। प्रारंभ बिट प्राप्तकर्ता को अपनी घड़ी को प्रेषक को सिंक करने की अनुमति देता है। चूँकि यह प्रत्येक बाइट पर पहले बिट पर हो सकता है, अपूर्ण घड़ियों का अर्थ है अधिक लगातार चरण समायोजन।
एमएसलटर्स

1
व्यवहार में यह इस पद से अधिक होने की संभावना है क्योंकि यह इंगित करता है कि विभक्त प्रणाली 100% लचीली होने की संभावना नहीं है।
पीटर ग्रीन

2
@PeterGreen: यह सच है; सबसे वास्तविक UARTs को एक इनपुट घड़ी की आवश्यकता होती है जो 16x बॉड दर होती है, और प्रोग्रामेबल डिवाइडर को तेज घड़ी का उत्पादन करना चाहिए। इस उदाहरण में, समग्र विभक्त 64 (= 16 x 4), होना चाहिए था और त्रुटि होगा , या + 1.7%, जो अभी भी एक स्वीकार्य मूल्य है। 15एचz/64230,400यू=१.०१,७२५
डेव ट्वीड

2
: वैकल्पिक रूप से, कुछ एक भिन्न विभाजक का उपयोग करते हैं जहां थोड़ा समय सही मूल्य के लिए औसत होता है भले ही व्यक्तिगत बिट्स में> 2% समय त्रुटि हो।
बेन वोइग्ट

12

यहाँ एक अपेक्षाकृत उच्च अंत ARM MCU का 'बड़ा प्रिंट' सुविधाओं का वर्णन है।

यहाँ छवि विवरण दर्ज करें

कई पीएलएल और डिवाइडर हैं जिनमें प्रीस्कूलर और पोस्टक्लेर्स हैं जो लगभग किसी भी आवृत्ति को बनाने में सक्षम हैं जो आपको पूर्णांक अनुपात के रूप में आवश्यकता हो सकती है। पीएलएल पलता कुछ पूर्णांक द्वारा अपने इनपुट आवृत्ति, और एक विभक्त कुछ संख्या (द्वारा विभाजित कर सकते हैं नहीं जरूरी प्रत्येक मामले में 2 की शक्तियों)।

आंतरिक अपेक्षाकृत उच्च आवृत्तियों (इस मामले में लगभग आधा गीगाहर्ट्ज) कोई समस्या नहीं है (जैसा कि वे चिप से दूर होंगे) - अपेक्षाकृत कम बिजली की खपत होती है।

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

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


2
(इसके = अधिकार, यह = "यह है" या "यह है"। उदाहरण के लिए देखें कि इसका उपयोग कैसे करें और इसका उपयोग करें ।)
पीटर मॉर्टेंसन

4
@PeterMortensen धन्यवाद, निश्चित। किसी कारण से टाइपोस जैसे (और गलत होममोन रखने वाले) रिपोर्ट लेखन मोड के बजाय एक संवादी सोच मोड में बनाते समय आसान होते हैं।
Spehro Pefhany

10

यह एक न्यूनाधिक का उपयोग करके प्राप्त किया जा सकता है ।

उदाहरण के लिए MSP430x1xx उपयोगकर्ता गाइड देखें । पृष्ठ 260 पर यह कहता है:

USART बॉड दर जनरेटर गैर-मानक स्रोत आवृत्तियों से मानक बॉड दरों का उत्पादन करने में सक्षम है। बॉड दर जनरेटर एक प्रीस्कूलर / डिवाइडर और एक न्यूनाधिक का उपयोग करता है जैसा कि चित्र 13 rate7 में दिखाया गया है। यह संयोजन बॉड दर पीढ़ी के लिए आंशिक विभाजकों का समर्थन करता है।

बॉड दर समय

(ग्रे क्षेत्र पर ध्यान दें)

विभाजन कारक N अक्सर एक गैर-पूर्णांक मान होता है, जिसके पूर्णांक भाग को प्रिस्क्रेलर / विभक्त द्वारा महसूस किया जा सकता है। बॉड दर जनरेटर का दूसरा चरण, न्यूनाधिक, भिन्नात्मक भाग को यथासंभव निकट से पूरा करने के लिए उपयोग किया जाता है।

[...]

BITCLK को समय-समय पर गैर-पूर्णांक विभाजक की आवश्यकता होने पर आवश्यकताओं को पूरा करने के लिए मॉड्यूलेटर के साथ बिट से समायोजित किया जा सकता है। यदि मॉड्यूलेटर बिट mi सेट है, तो प्रत्येक बिट का समय एक BRCLK क्लॉक चक्र द्वारा विस्तारित किया जाता है। हर बार थोड़ा सा प्राप्त या प्रसारित होने के बाद, मॉड्यूलेशन कंट्रोल रजिस्टर में अगला बिट उस बिट के लिए समय निर्धारित करता है। एक सेट मॉड्यूलेशन बिट डिवीजन फैक्टर को एक से बढ़ाता है जबकि एक साफ मॉड्यूलेशन बिट यूएक्सबीआर द्वारा दिए गए डिवीजन फैक्टर को बनाए रखता है

[...]


5

टी

आपके काम करने का तरीका आपके पास एक आंतरिक नमूना घड़ी है। कहते हैं कि आप हर 100ns का नमूना ले सकते हैं। आपको पता है कि प्रत्येक बिट का मध्य कहां है। तो, आप एक नमूना बिंदु उठाते हैं जो मध्य के सबसे करीब है। यह आपको अधिकतम 50ns की त्रुटि देगा।

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

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


3

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


2

8 बिट बाइट को एक सिंगल स्टार्ट बिट के बाद और एक सिंगल स्टॉप बिट के बाद और रिसीवर द्वारा परफेक्ट सैंपलिंग मानने का मतलब है कि 9.5 बिट पीरियड के बाद घड़ी को आधे से कम अवधि से कम होना चाहिए।

इसका मतलब है कि ट्रांसमीटर और रिसीवर के बीच अधिकतम सहनीय घड़ी का अंतर लगभग 5% है। हालाँकि लिंक के दोनों सिरों पर त्रुटि हो सकती है और रिसीवर्स सिंक्रोनाइज़ेशन सही नहीं हो सकता है। इसलिए आमतौर पर मैं इस बात पर भरोसा करूंगा कि वास्तविक बॉड दर नाममात्र बॉड दर के 1% के भीतर रखी गई है।

माइक्रोकंट्रोलर्स मैं सबसे परिचित हैं, जो PIC18 डिवाइस हैं। इनमें से पुराने मॉडल बॉड्रेट को स्केल करने के लिए एक लचीले 8 बिट काउंटर का उपयोग करते हैं जबकि नए लोगों के पास लचीला 16 बिट काउंटर होता है। वैकल्पिक "उच्च" और "कम" गति मोड भी हैं जो चार के एक कारक द्वारा बॉड्रेट को बदलते हैं।

20 मेगाहर्ट्ज इनपुट घड़ी के साथ इस पीढ़ी योजना का 8 बिट संस्करण 1800 से 19200 तक सभी दरों के लिए मामूली बॉड दर के 0.25% के भीतर प्राप्त करने के लिए पर्याप्त है। 16 बिट संस्करण आपको निम्न गति से भी नीचे जाने देता है।

http://www.nicksoft.info/el/calc/?ac=spbrg&subpres=1&mcu=+Generic+16bit+BRG&Fosc=20&FoscMul=1000000&FoscMutoSelector=0&MaxBaudRateError=1 (सिंक की उपेक्षा करें) = वे 1 कॉलम्स हैं। तुल्यकालिक मोड)

UL सीरियल के लिए PLL, आंशिक अंश आदि की वास्तव में आवश्यकता नहीं है।


0

धारावाहिक डेटा का आदान-प्रदान करने के लिए, एक नियंत्रक को "आदर्श" समय की एक निश्चित विंडो के भीतर डेटा का नमूना या नमूना करना चाहिए। हालांकि एक नियंत्रक होना सबसे सरल है, जो एक प्रोग्राम प्रोग्राम कारक द्वारा एक घड़ी को विभाजित करता है और फिर एक अतिरिक्त हार्ड-कोडित कारक द्वारा, कोई आवश्यकता नहीं है कि बिट्स को समान अंतराल पर पढ़ा या लिखा जाए। यदि कनेक्शन का दूर अंत बॉड दर से मिलते-जुलते समान अंतराल पर बिट्स को आउटपुट करता है, तो एक रिसीवर किसी भी नमूने दर के साथ प्राप्त कर सकता है जो बॉड दर से दोगुना से अधिक होता है बशर्ते वह सही समय पर चीजों का नमूना लेता है। उदाहरण के लिए, मान लीजिए कि डेटा 19,200 पर आउटपुट है और ठीक 48,000Hz (2.5x) पर एक नमूना है।

जब कोई गिरते हुए किनारे को देखता है, तो एक को पता चलेगा कि स्टॉप बिट 0 और 1 के बीच नमूना लेना शुरू हो गया है। यदि कोई पहला नमूना लेबल करता है जहां प्रारंभ बिट समय 0 के रूप में देखा गया था, तो बिट 0 1.5 और 2.5 के बीच कहीं शुरू होगा; बिट 1 कहीं 4.0 और 5.0 के बीच शुरू होगा, बिट 2 कहीं 6.5 और 7.5 के बीच शुरू होगा, और बिट 3 कहीं 9.0 और 10.0 के बीच में शुरू होगा। समय पर लिया गया एक नमूना इस प्रकार बिट 0 पर कब्जा करने की गारंटी होगी [जो कि 1.5 और 2.5 के बीच शुरू होता है, और 4.0 और 5.0 के बीच समाप्त होता है]। इसी तरह, 6 के समय में लिया गया एक नमूना बिट 1 पर कब्जा कर लेगा, और 8, 11, 13, 16, 18, और 20 के समय में लिया गया नमूना बिट्स 2-7 पर कब्जा कर लेगा।

तेजी से नमूना दर का उपयोग करने से रिसीवर स्रोत में खामियों के प्रति अधिक सहिष्णु हो जाएगा, लेकिन सिर्फ 2.5x बिट दर के नमूने दर के साथ मार्जिन बहुत भयानक नहीं होता है [लगभग 1/5 थोड़ा समय]।

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