कुछ एडीसी / डीएसी उपकरणों में उनके डेटा को 2 के पूरक रूप में आउटपुट / इनपुट करने के विकल्प हैं।
दो के पूरक रूप में डिजिटल डेटा का प्रतिनिधित्व करने के क्या फायदे हैं जब आप बस सीधे बाइनरी कोड रख सकते हैं और रूपांतरण का समय बचा सकते हैं?
कुछ एडीसी / डीएसी उपकरणों में उनके डेटा को 2 के पूरक रूप में आउटपुट / इनपुट करने के विकल्प हैं।
दो के पूरक रूप में डिजिटल डेटा का प्रतिनिधित्व करने के क्या फायदे हैं जब आप बस सीधे बाइनरी कोड रख सकते हैं और रूपांतरण का समय बचा सकते हैं?
जवाबों:
हस्ताक्षरित पूर्णांक के दो तारीफ प्रतिनिधित्व हार्डवेयर में हेरफेर करना आसान है। उदाहरण के लिए, नकार (यानी x = -x ) केवल संख्या में सभी बिट्स को फ़्लिप करके और एक को जोड़कर किया जा सकता है। कच्चे बाइनरी में एक ही ऑपरेशन करना (जैसे साइन बिट के साथ) आमतौर पर बहुत अधिक काम शामिल होता है, क्योंकि आपको विशेष रूप से स्ट्रीम में कुछ बिट्स का इलाज करना चाहिए। समान इसके अलावा जाता है - नकारात्मक संख्याओं के लिए ऐड ऑपरेशन सकारात्मक संख्याओं के लिए ऐड ऑपरेशन के समान है, इसलिए नकारात्मक मामले को संभालने के लिए कोई अतिरिक्त तर्क (कोई दंड नहीं) की आवश्यकता है।
हालांकि इसका मतलब यह नहीं है कि यह आपके दृष्टिकोण से आसान है, इस डेटा के उपभोक्ता के रूप में, यह डिवाइस के डिज़ाइन प्रयास और जटिलता को कम करता है, इस प्रकार संभवतः इसे सस्ता बनाता है।
ADC डेटा को परिवर्तित कर सकता है (0 और 5V के बीच इनपुट वोल्टेज कहिए) और आपको या तो उस डेटा को अहस्ताक्षरित (0V = 0, 5V = अधिकतम कोड) या हस्ताक्षरित (2.5V = 0, 0V = max -ve, 5V = अधिकतम) की आवश्यकता होगी + ve)।
हस्ताक्षरित डेटा के लिए कंप्यूटर के सामान्य प्रतिनिधित्व के 2 के पूरक के अलावा, ऊपर वर्णित दो प्रारूपों के बीच रूपांतरण पूरी तरह से तुच्छ है: एमएसबी को उल्टा करना!
यह ADC के आंतरिक तर्क को जोड़ने के लिए अविश्वसनीय रूप से सस्ता है और ADC को डेटशीट पर एक अन्य विक्रय बिंदु देता है ...
यदि आपको ऋणात्मक संख्याओं के अभ्यावेदन पर गणित करने की आवश्यकता है, तो द्विआधारी पूरक ऑफसेट बाइनरी की तुलना में आसान बनाता है, जो "हस्ताक्षरित इंट" डेटा प्रकार के साथ मेल खाएगा। आपके कंपाइलर को आसानी से पता चल जाएगा कि इससे कैसे निपटना है। अन्यथा, आप घड़ी की टिक को आगे और पीछे परिवर्तित करने में खर्च करते हैं।
प्रश्न में, यह निहित प्रतीत होता है कि ADC को सीधे बाइनरी की तुलना में 2 के पूरक रूप में मान वापस करने में अधिक समय लगता है। हालांकि यह एडीसी के कुछ विशेष कार्यान्वयन में मामला हो सकता है, यह सामान्य रूप से सही नहीं है (उदाहरण के लिए माइक्रो-नियंत्रक की MSP430 श्रृंखला में एडीसी परिधीय चिप है जो सीधे बाइनरी या 2 के पूरक में मूल्य की रिपोर्ट करेगा, लेकिन यह दोनों मामलों में समान संख्या में चक्र) लेता है।
उस रास्ते से, 2 के पूरक और सीधे बाइनरी के बीच का विकल्प ज्यादातर यह बताता है कि आपके ट्रांसड्यूसर कैसे काम करते हैं और आप अपने डेटा को कैसे संसाधित करना चाहते हैं।
सीधे बाइनरी मोड में, एडीसी आपको एक संख्या दे रहा है जो मापा गया एनालॉग मात्रा के परिमाण (लगभग हमेशा वोल्टेज) और पूर्ण पैमाने पर संदर्भ मात्रा के बीच के अनुपात का प्रतिनिधित्व करता है। उदाहरण के लिए, 10-बिट एडीसी 0 से 1023 (समावेशी) से मान लौटा सकता है। यदि आप एक वोल्टेज (कहते हैं, तो 1.25 वोल्ट) जो एडीसी के संदर्भ वोल्टेज का आधा है (जैसे, 2.50 वोल्ट), आपके द्वारा पढ़ा गया बाइनरी कोड आपके द्वारा पढ़े जाने वाले अधिकतम मूल्य का आधा होगा - इसलिए, 512, या उसके स्थान पर एडीसी में गोलाई और गैर-रैखिकता के अधीन।
उदाहरण के लिए, मान लें कि आपके पास एक ट्रांसड्यूसर है जो एक टैंक में रॉकेट ईंधन की मात्रा की रिपोर्ट करता है। 0V का मतलब है कि टैंक खाली है और 2.5V वोल्ट का मतलब है कि यह भरा हुआ है। तो आप बस अपने एडीसी से ट्रांसड्यूसर को कनेक्ट करें, और आप चले जाएं!
लेकिन ध्यान दें कि उपरोक्त पैराग्राफ में, नकारात्मक वोल्टेज को मापने का कोई तरीका नहीं है। क्या होगा यदि हम टैंक के अंदर और बाहर रॉकेट ईंधन के प्रवाह को मापना चाहते थे (और हमारे पास ऐसा करने के लिए एक ट्रांसड्यूसर था)? ADC नकारात्मक संख्याओं को माप नहीं सकता है, इसलिए हमारे पास एक समस्या है। हालांकि, 2 के पूरक मोड का उपयोग करके इसे नकली करने का एक आसान तरीका है: इस मामले में, ट्रांसड्यूसर आउटपुट फिर से पक्षपाती है ताकि एडीसी के दो संदर्भ वोल्टेज के बीच शून्य बिंदु आधा हो जाए। दूसरे शब्दों में, सकारात्मक प्रवाह 1.25V और 2.50V के बीच वोल्टेज द्वारा दर्शाए जाते हैं, और नकारात्मक प्रवाह 1.25V से 0V तक दर्शाए जाते हैं - इसलिए टैंक में बहने वाले ADC को 512 से 1023 तक का कोड देगा और धन्यवाद से बहेगा। 511 से 0 के कोड (सीधे द्विआधारी प्रारूप में)।
अब यह बहुत ही असुविधाजनक है। हमें इसके साथ कुछ भी करने से पहले प्रत्येक माप से 512 को घटाना होगा, जो -512 से +511 की सीमा में नंबर देता है। 2 के पूरक मोड की बात यह है कि यह आपके लिए ऐसा करता है!
हालाँकि, आप अभी भी एक ट्रांसड्यूसर के साथ सीधे बाइनरी का उपयोग करना चाह सकते हैं जो हस्ताक्षरित परिणाम उत्पन्न करता है। उदाहरण के लिए, आपके ट्रांसड्यूसर में विभेदक आउटपुट हो सकते हैं: इस मामले में आप उल्टे आउटपुट को गैर-उल्टे आउटपुट से वैसे भी घटाना चाहेंगे, इसलिए 2 के पूरक का उपयोग करने का कोई फायदा नहीं है।
दो के पूरक प्रणाली उपयोग में है, क्योंकि यह उपजी है कि कैसे सरल हार्डवेयर स्वाभाविक रूप से संचालित होता है। उदाहरण के लिए सोचें कि आप कार का ओडोमीटर, जिसे आपने शून्य पर रीसेट किया है। फिर गियर को रिवर्स पर रखें, और 1 मील के लिए पीछे की ओर ड्राइव करें (कृपया वास्तविकता में ऐसा न करें)। आपका ओडोमीटर (यदि यह यांत्रिक है) 0000 से 9999 तक रोल करेगा। दोनों का पूरक सिस्टम समान व्यवहार करता है।
कृपया ध्यान दें कि मैं वास्तव में यहां कोई नई जानकारी नहीं दे रहा हूं, बस ओडोमीटर उदाहरण जो किसी को उपयोगी हो सकता है - इससे मुझे दो पूरक प्रणाली के औचित्य को समझने में मदद मिली जब मैं छोटा था। उसके बाद, मेरे लिए यह सहज रूप से स्वीकार करना आसान था कि योजक, सबट्रैक्टर आदि दो की पूरक प्रणाली के साथ अच्छी तरह से काम करते हैं।
और हां, मेरे निसान का ओडोमीटर इस तरह से काम करता है।
दूसरों ने पहले ही जवाब दिया है कि क्यों द्विआधारी तारीफ बाइनरी कंप्यूटर हार्डवेयर के लिए सुविधाजनक है। हालांकि, आप पूछ रहे हैं कि ए / डी "सीधे बाइनरी" (जो भी आपको लगता है कि वास्तव में इसका मतलब है) के बजाए ट्वीस तारीफ का उत्पादन करेगा।
अधिकांश ए / डीएस 0 से 2 एन -1 तक के एक साधारण अहस्ताक्षरित बाइनरी मूल्य का उत्पादन करते हैं , जहां एन ए बिट्स की संख्या बिट्स ए / डी में परिवर्तित होती है। ध्यान दें कि यह भी जुड़वाँ प्रशंसा संकेतन माना जा सकता है, बस यह कि मूल्य कभी भी नकारात्मक नहीं होंगे। यदि आप केवल सकारात्मक संख्या के साथ काम कर रहे हैं, तो अधिकांश द्विआधारी प्रतिनिधित्व समान हैं। इसमें जुड़वाँ प्रशंसा और हस्ताक्षर परिमाण शामिल हैं।
कुछ ए / डीएस, विशेष रूप से जो माइक्रोकंट्रोलर्स में निर्मित होते हैं, उनके पास अपनी सीमा के निचले आधे हिस्से के लिए नकारात्मक मान पैदा करने का विकल्प होता है। द्विध्रुवी संकेत को मापते समय यह एक कथित लाभ हो सकता है।
कम से कम एक माइक्रोकंट्रोलर में, यह आम तौर पर मूर्खतापूर्ण है। कुछ मामलों में आप बिना किसी रूपांतरण के सीधे ए / डी मूल्यों का उपयोग कर सकते हैं। उस स्थिति में, आपने पहले से ही अन्य सभी मानों को ए / डी श्रेणी में बदल दिया है। यह प्रतिबंधित करना कि सभी गैर-नकारात्मक संख्या वास्तव में चीजों को सरल बनाती है।
अन्यथा, आप आंतरिक रूप से मूल्यों के लिए जो भी इकाइयों का उपयोग करते हैं, उन्हें प्राप्त करने के लिए वैसे भी ए / डी रीडिंग में कुछ स्केलिंग और ऑफसेट लागू करने जा रहे हैं। यहां फिर से ए / डी से सीधे आने वाले अहस्ताक्षरित मूल्यों के लिए कोई नकारात्मक पहलू नहीं है। वास्तव में, मैं आमतौर पर किसी भी स्केलिंग और ऑफसेट से पहले कच्चे मूल्यों पर कुछ कम पास फ़िल्टरिंग लागू करता हूं। उन मूल्यों को जानना कभी भी नकारात्मक नहीं होगा, गणनाओं को थोड़ा सरल करता है। अहस्ताक्षरित मूल्यों पर स्केलिंग करना भी कभी-कभी चीजों को थोड़ा सरल बनाता है।
मुझे 100 माइक्रोकंट्रोलर परियोजनाओं में एक भी मामला याद नहीं आ रहा है, जहाँ मैंने ए / डी का उपयोग कुछ भी नहीं किया है, लेकिन अहस्ताक्षरित आउटपुट प्रारूप में।
तो इस सवाल का जवाब देने के लिए कि ए / डी आउटपुटिंग "ट्वोस तारीफ" के क्या फायदे हैं, दो जवाब हैं:
समर्पित हार्डवेयर में, नकारात्मक इनपुट वोल्टेज का संकेत देने वाले नकारात्मक मानों के लिए कुछ लाभ हो सकते हैं, इस मामले में मानों की श्रेणी से निपटने के लिए twos तारीफ सबसे आसान तरीका है। ध्यान दें कि यदि इनपुट वोल्टेज रेंज 0 के बारे में सममित नहीं है, तो यह लाभ चला जाता है।
यह 'स्ट्रेट बाइनरी कोड' क्या है? मेरा मानना है कि आपके पास एक संकेत बिट है जो नकारात्मक के लिए '1' और सकारात्मक (या इसके विपरीत ) के लिए '0' है । यह दो से अधिक नुकसान है टोमोस पूरक जो अभी तक उल्लेख नहीं किया गया है: एक बड़े पैमाने पर अप्रासंगिक इन दिनों और एक महत्वपूर्ण।
बड़े पैमाने पर अप्रासंगिक एक यह है कि आप एक कम संख्या का प्रतिनिधित्व कर सकते हैं - यानी 8 बिट्स में 255 नंबर। जब आप 32 या 64 बिट प्राप्त करते हैं तो यह बहुत ही अप्रासंगिक है, लेकिन जब आपके पास काम करने के लिए कुछ 4 या 6 बिट्स होते हैं तो यह महत्वपूर्ण होता है।
अधिक महत्वपूर्ण यह है कि अब एक ही संख्या का प्रतिनिधित्व करने के दो तरीके हैं - विशेष रूप से, 0 - +0 और -0, लेकिन +0 और -0 समान संख्या हैं, इसलिए आपके कार्यान्वयन को यह सुनिश्चित करने की आवश्यकता है कि आप इनकी तुलना नहीं कर रहे हैं हर बार जब आप एक समानता की जाँच करते हैं।