क्या 16 बिट DAC बनाने के लिए दो 8 बिट DAC को एक साथ जोड़ना संभव है, 16 बिट शब्द का एक बाइट उनमें से प्रत्येक को भेजा जाएगा


16

दो DAC के लिए, एक को D0-D7 भेजा जा रहा है और दूसरे को D8-D15 भेजा जा रहा है, जिसमें बिजली की आपूर्ति 5V है, अगर 5V को 2 DAC के आउटपुट में जोड़ा जाता है और फिर दो DAC आउटपुट को सारांशित किया जाता है, तो 16 बिट DAC में परिणाम होना चाहिए। दो 8 बिट DACs से बना है।

एकमात्र समस्या यह है कि यदि दूसरे डीएसी में 0x00 इनपुट है तो 5 वी अतिरिक्त को रद्द करने की आवश्यकता है जो मुझे यकीन नहीं है कि कैसे करना है। समिट को एम्पलीफायर द्वारा किया जा सकता है। सर्किट को केवल 10 kHz तक काम करने की आवश्यकता है।

क्या इस विचार के साथ मौलिक रूप से कुछ गलत है?


11
आपके विचार में मौलिक रूप से कुछ भी गलत नहीं है, लेकिन आपको सापेक्ष जटिलता के डिजाइन को संभालने की आवश्यकता होगी। सबसे पहले यह एनालॉग सिग्नल में परिणामों को संक्षेप में रखने की बात नहीं है। राशि से पहले, आपको x256 के एक कारक में MSB DAC को बढ़ाना होगा क्योंकि MSB DAC का प्रत्येक बिट LSB DAC के 256 बिट्स के बराबर है। आपको एलएसबी डीएसी फुलस्केल वोल्ट में इस मूल्य को ऑफसेट करने की आवश्यकता होगी क्योंकि आप दोनों को जोड़ सकते हैं।
PDuarte

7
शोर, विकृति, आपूर्ति क्षमता का उल्लेख नहीं ...
PDuarte

4
यदि यह इतना आसान था, तो हर कोई इसे कर रहा होगा ... सैद्धांतिक रूप से, हां, आप दो डीएसी को जोड़ सकते हैं (आपको इसके अलावा गुणा की आवश्यकता है)। वास्तव में, आप 16बिट्स के पास कहीं भी नहीं जा रहे हैं, प्रदर्शन-वार। बस एक 16bit DAC खरीदें।
uint128_t

2
यदि 256x गुणक मान बहुत बड़ा हो जाता है, तो ऑफसेटिंग की आवश्यकता होती है। मान लीजिए कि 8 बिट डीएसी 1 वोल्ट पूर्ण पैमाने पर देते हैं। गुणा करें कि 256 से 256 V. व्यावहारिक नहीं है ;-)। DAC के साथ करंट सप्लाई करना आसान है, तो आप बस करंट आउटपुट को समानांतर में कनेक्ट कर सकते हैं (बशर्ते कि कोई लोड हो जो वोल्टेज को सही मान पर रखे, वर्चुअल ग्राउंड या ऐसा)।
बिम्पील्रेकी 16

1
क्या होगा अगर सिग्नल को ऊपर और नीचे 8 बिट्स में विभाजित करने के बजाय, आप इसे दो-पास प्रगतिशील सन्निकटन (जैसे प्रगतिशील JPG या PNG रेंडरर्स) के रूप में कार्यान्वित करते हैं, DAC1 के साथ (लगभग) समान संख्या में बिट्स और DAC2 प्रदान करते हैं। आधी शक्ति (फिर से, मोटे तौर पर) विषम संख्या वाली बिट्स। गणित गड़बड़ हो जाएगा, लेकिन मुझे लगता है कि आप सिग्नल की सटीकता के 15 बिट प्राप्त कर सकते हैं।
फू बार

जवाबों:


28

यह संभव है, लेकिन यह अच्छी तरह से काम नहीं करेगा।

सबसे पहले, दो आउटपुट के संयोजन की समस्या है, जिसमें एक स्केल दूसरे के 1/256 के बराबर है। (चाहे आप 1/256 से एक को जोड़ लें, दूसरे को 256 से बढ़ाएं, या कुछ अन्य व्यवस्था करें, * उदाहरण के लिए 16 और / 16, कोई फर्क नहीं पड़ता)।

हालाँकि बड़ी समस्या यह है कि 8-बिट DAC 8 बिट्स से कुछ बेहतर होने की संभावना है: इसमें 1/4 LSB का "DNL" विनिर्देश और 1 / 2LSB का "INL" विनिर्देश हो सकता है। ये "डिफरेंशियल" और "इंटीग्रल" नॉनलाइनरिटी स्पेसिफिकेशंस हैं, और आस-पास कोड्स के बीच वास्तव में कितना बड़ा कदम है, इसका एक उपाय है। (DNL किसी भी दो आसन्न कोड, INL के बीच किसी भी दो कोड के बीच DAC की पूरी रेंज में गारंटी प्रदान करता है)।

आदर्श रूप से, प्रत्येक चरण पूर्ण पैमाने के मूल्य का 1/256 होगा; लेकिन एक 1 / 4LSB DNL विनिर्देश इंगित करता है कि आसन्न कदम उस आदर्श से 25% भिन्न हो सकते हैं - यह एक डैक में सामान्य रूप से स्वीकार्य व्यवहार है।

मुसीबत यह है कि आपके MSB DAC में 0.25 LSB त्रुटि आपके LSB DAC में 64 LSB त्रुटि (संपूर्ण श्रेणी का 1/4) का योगदान करती है!

दूसरे शब्दों में, आपके 16 बिट DAC में 10 बिट DAC की रैखिकता और विकृति है, जो कि 16 बिट DAC के अधिकांश अनुप्रयोगों के लिए अस्वीकार्य है।

अब यदि आप एक 8-बिट DAC पा सकते हैं जो 16-बिट सटीकता की गारंटी देता है (INL और DNL 1/256 LSB से बेहतर) तो आगे बढ़ें: हालाँकि वे बनाने के लिए आर्थिक नहीं हैं, इसलिए एक को शुरू करने का एकमात्र तरीका है 16-बिट DAC के साथ!

एक अन्य जवाब "सॉफ्टवेयर मुआवजा" का सुझाव देता है ... अपने एमएसबी डीएसी में सटीक त्रुटियों का मानचित्रण करना और एलएसबी डीएसी में उलटा त्रुटि जोड़कर उनके लिए क्षतिपूर्ति करना: ऑडियो इंजीनियरों द्वारा उन दिनों में लंबे समय से कुछ किए गए जब 16-बिट डीएसीएस महंगा था। ..

संक्षेप में, इसे कुछ हद तक काम करने के लिए बनाया जा सकता है, लेकिन अगर 8-बिट DAC तापमान या आयु के साथ बह जाता है (यह संभवतः अल्ट्रा-स्थिर होने के लिए डिज़ाइन नहीं किया गया था), तो मुआवजे के लायक अब सटीक नहीं है जटिलता और खर्च।


1
बहाव के बारे में आपकी बात एक अच्छी है और दो 8-बिट DAC के संयोजन से 20-बिट परिशुद्धता प्राप्त करने की कोशिश करने के लिए इस पद्धति को अव्यवहारिक बना देगा। मुझे लगता है कि 2x8 से 13-14 प्रयोग करने योग्य बिट्स प्राप्त करने की कोशिश करना संभव होगा, हालांकि।
सुपरकैट

19

28=256

216=65536

ध्यान दें कि कैसे गुणा करता है, यह एक जोड़ नहीं है (जैसा कि तब होगा जब आप दो 8 बिट डीएसीएस के आउटपुट का योग करेंगे)।

अगर मैं दो 8 बिट DAC लेता हूं और उनके आउटपुट को योग करता हूं, तो संभावित मूल्य क्या हैं?

उत्तर: 0, 1, 2, ..., 256, 257, 258, .... 511, 512 और यह है!

एक 16 बिट डीएसी 0,1,2 कर सकता है ..., 65535, 65536 यह बहुत अधिक है!

सैद्धांतिक रूप से संभव है, लेकिन फिर आपको 8 बिट DACs में से एक का उत्पादन बिल्कुल 256 से गुणा करना होगा और LSB बिट्स को 1x DAC और MSB बिट्स को 256x DAC से जोड़ना होगा। लेकिन आश्चर्य नहीं है अगर सटीकता और रैखिकता ग्रस्त है!


ओह, अच्छा। मुझे इस बात का अहसास नहीं था ...
क्वांटम 231 15

1
यदि कोई 256 से कम के गुणन कारक का उपयोग करता है तो सॉफ्टवेयर में गैर-रैखिकता के लिए क्षतिपूर्ति कर सकता है। डिफरेंशियल नॉन-लीनियरिटी कम से कम छोटे DAC के स्टेप साइज के बराबर होगी, लेकिन दो 8-बिट DAC का उपयोग करने वाला व्यक्ति वास्तविक रूप से एक मोनोटोनिक 14-बिट DAC का प्रबंधन कर सकता है यदि कोई सटीक रूप से यह निर्धारित कर सके कि कौन से मुआवजे के कारकों को लागू किया जाए
Supercat

2
यदि आप एक DAC के आउटपुट को 257/256 से गुणा कर सकते हैं और उन्हें जोड़ सकते हैं, यदि आपको यह पता लगाने की गणितीय चुनौती का आनंद मिलता है कि किसी दिए गए कुल आउटपुट को किस DAC को भेजना है। अन्यथा, कॉलगें समान हैं :)
hobbs

@ ओह: मुझे नहीं लगता कि यह काफी काम करता है। यदि एक DAC 256 के चरणों में 0 से 65280 और दूसरे 257 के चरणों में 0 से 65535 तक आउटपुट देता है, तो 65280 और 65535 के बीच सभी आउटपुट मान प्राप्त करने में सक्षम होगा, लेकिन सीमा में कोई भी हासिल नहीं कर पाएगा उदाहरण के लिए 32639 और 32768 के बीच। यह वास्तव में एक एकल 8-बिट DAC से बहुत बेहतर नहीं है।
सुपरकैट

@ सुपरकैट आप सही कह रहे हैं, मैंने गणित को फुलफिल किया। मुझे लगता है कि एक संस्करण है जो काम करता है यदि आप नकारात्मक जा सकते हैं, लेकिन यह उस तरह से काम नहीं करता है जैसे मैंने इसे लिखा था। ज्यादातर किसी भी तरह से हास्य का एक प्रयास था।
हॉब

6

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

BTW, पुराने सरू PSOC चिप डिजाइन (मैं नए लोगों के बारे में नहीं जानता) दो छह-बिट DAC का उपयोग करके नौ-बिट DAC का अनुकरण करता है जो एक दूसरे के सापेक्ष स्केल किए जाते हैं। यह सॉफ्टवेयर रैखिकता सुधार का उपयोग नहीं करता है, लेकिन यह केवल छह बिट के लिए तीन बिट्स परिशुद्धता जोड़ने की कोशिश कर रहा है। सॉफ्टवेयर मुआवजे का उपयोग किए बिना किसी भी प्रकार के डीएसी के लिए 3-4 से अधिक बिट्स को सटीक रूप से जोड़ने की कोशिश करने की संभावना है कि यह बहुत अच्छा काम नहीं करेगा।


4

21 साल पहले जब मैं एक गरीब कॉलेज स्टूडेंट था (और केवल 8-बिट DAC का खर्च उठा सकता था), मैंने इस तकनीक का इस्तेमाल दो 8-बिट DACs को एक उच्च-बिट DAC में संयोजित करने के लिए किया, यह जानते हुए कि मुझे 16 बिट्स सटीकता प्राप्त नहीं होगी, क्योंकि का अभिन्न गैर linearity (लीग) और अंतर nonlinearity (DNL)। सबसे महत्वपूर्ण-बाइट डीएसी पर डीएनएल इस मामले में हत्यारा है; यदि आपके पास INL है तो आउटपुट विकृत है लेकिन फिर भी सुचारू है। DNL आकार को एक DAC चरण से अगले तक निर्धारित करता है, और यदि यह पर्याप्त रूप से भिन्न होता है, तो आप 8-बिट सीमाओं को पार करते समय डिसकंटिन्यू या रिवर्सल देखेंगे: 0x07ff <-> 0x0800 उदाहरण के लिए, जैसा कि MSB DAC 0x07 से बदलता है <-> 0x08, यह LSB DAC के आदर्श 256 काउंट्स से नहीं बदल सकता है, लेकिन 384 काउंट्स या 128 काउंट्स (अपने स्वयं के कम से कम महत्वपूर्ण बिट का) 1/2) के द्वारा। एक अच्छे डीएसी में केवल 1/2 एलएसबी डीएनएल होगा, औसत दर्जे का डीएसी खराब डीएनएल होगा, हालांकि यह कठिन रूप से उच्च रिज़ॉल्यूशन प्राप्त करता है, इसलिए 8-बिट डीएसी में 1/2 एलएसबी डीएनएल को खोजने में काफी आसान होना चाहिए, लेकिन नहीं 16-बिट DAC में।

मुझे याद नहीं है कि मेरे मामले में क्या प्रभावी प्रस्ताव था, शायद 12 या 13 बिट्स का, और मुझे एक पोटेंशियोमीटर के साथ मैन्युअल रूप से 2 चरण का लाभ हासिल करना था।


2

मैंने इसे डायनामिक रेंज बढ़ाने के लिए एचपीएलसी यूवी डिटेक्टर पर अभ्यास में देखा है। DAC में से एक जरूरत की राशि से दूर है। 1 DAC को 0 से 10 V तक और 2 हैंडल को 10 से 20 वोल्ट कहते हैं।


1
क्या यह केवल एक बिट नहीं जोड़ेगा?
स्किडोर

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

1

यह संभव है और यह पहले भी किया जा चुका है। EDN.com http://www.edn.com/design/analog/4329365/Combine-two-8-bit-outputs-to-make-one-16-bit-DAC पर यह उत्कृष्ट कार्यान्वयन देखें


कृपया इस उत्तर को कम से कम लिंक में मौजूद डेटा को संक्षेप में संपादित करें। लिंक जो केवल लिंक पर होते हैं, पर डूब जाते हैं क्योंकि लिंक अक्सर मृत हो जाते हैं।
Bort

0

मैं इस पर एक अलग ले रहा हूँ ... बस एक 8 बिट DAC का उपयोग करें। आपने उल्लेख किया है कि इसे केवल 10 हर्ट्ज तक काम करने की आवश्यकता है, इसलिए आप केवल एक डीएसी (जो शायद 100kHz तक काम कर सकते हैं) का उपयोग कर सकते हैं, और इसे एक न्यूनाधिक के रूप में उपयोग कर सकते हैं। मूल विचार MSB मूल्य के 256 चक्रों के उत्पादन के साथ-साथ एक बिट ओवरफ्लो / कैरी फ्लैग को 8 बिट संचायक से एलएसबी प्रत्येक चक्र में जोड़ा जाता है। आपको एलएसबी से अतिरिक्त 'मॉड्यूलेटिंग बिट' के कारण अधिकतम एमएसबी के रूप में सिर्फ 254 मिलते हैं लेकिन यह सीमा को कम नहीं करता है।

उदाहरण: यदि आप 30kHz पर साइकिल चलाते हैं, तो 256 चक्र 117Hz पर दोहराए जाते हैं, इसलिए आप आउटपुट पर 50Hz कम-पास फिल्टर को काफी सहज और सटीक सिग्नल के लिए रख सकते हैं जो आपके लिए आवश्यक दर तक काम कर सकता है।

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

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