आइए एक उच्च-स्तर का अवलोकन करें कि आस्टसीलस्कप क्या है:
पहले हमारे पास एनालॉग फ्रंट-एंड है। यहां हमारे पास जांच के लिए प्रतिबाधा-मिलान नेटवर्क है (लेकिन जांच में समाई मिलान वाला भाग भी होगा), क्षीणन खंड (बहुत महत्वपूर्ण है, इसलिए हम एडीसी को अधिभार नहीं देते हैं या उच्च वोल्टेज में जाने देते हैं), ट्रिगर और कनेक्शन के लिए एनॉलॉग से डिजिटल परिवर्तित करने वाला उपकरण। मैं इस बारे में बहुत ज्यादा बात नहीं करूंगा, क्योंकि मैं एनालॉग सामान के साथ बहुत अच्छा नहीं हूं, लेकिन नीचे की रेखा है: इस खंड में हम पाई के साथ कुछ भी नहीं कर सकते हैं।
अगला हमारे पास डिजिटल कनवर्टर भाग का एनालॉग है। आपको प्रत्येक चैनल के लिए कम से कम एक ADC की आवश्यकता होगी। अधिक का उपयोग उच्च नमूना दर के लिए किया जा सकता है। पारंपरिक दायरे में, ADC एक ASIC या FPGA डिवाइस से जुड़ा होता है। उनका उपयोग इसलिए किया जाता है क्योंकि ADC द्वारा उपलब्ध कराए गए डेटा को संसाधित करने के लिए पारंपरिक कंप्यूटर वास्तविक समय के लिए पर्याप्त नहीं हैं (और तेज़ी के साथ वास्तविक समय को भ्रमित नहीं करते हैं)। उस डेटा को तब किसी प्रकार की रैम में संग्रहीत किया जाता है। कुछ डिवाइस स्टेटिक रैम का उपयोग करेंगे, कुछ अन्य डायनामिक रैम का उपयोग करेंगे। सामान्य तौर पर SRAM दृष्टिकोण अधिक पारंपरिक है और बड़े-नाम वाले निर्माताओं में देखा जाता है, जबकि DRAM का उपयोग सबसे सस्ता चीनी-डिज़ाइन इकाइयों में देखा गया नया दृष्टिकोण है।
रैम की मात्रा और इसकी गति यह निर्धारित करेगी कि कितने नमूने संग्रहीत किए जा सकते हैं। लगभग हमेशा ADC 8-बिट ADC होगा, इसलिए एक megasample के लिए हमें 8 b गुणा 100000 = 8 Mb या 1 MB RAM की आवश्यकता होगी। एक एमएसए / एस के लिए, हमें रैम की आवश्यकता होगी जो उस गति पर काम कर सकती है। आज, यह प्राप्त करना अपेक्षाकृत आसान होना चाहिए। FPGA आमतौर पर रैम को सीधे चलाता है और इसमें डेटा संग्रहीत करने के लिए जिम्मेदार है। यह नमूना मेमोरी को भरने के द्वारा काम करता है, जबकि अभी भी खाली कमरा है और फिर इसे पूर्ण होने पर इसे ओवरराइट कर देता है। जब प्रति चैनल में कई एडीसी होते हैं, तो एफपीजीए उन्हें सेट करेगा ताकि पहले नमूना शुरू हो, फिर अगली घड़ी दूसरी और इसी तरह। जब वे नमूना खत्म करते हैं, तो पहले एडीसी का नमूना पहले मेमोरी में लिखा जाएगा, फिर दूसरा एडीसी का नमूना। इससे यह लगेगा कि एडीसी तेजी से नमूना ले रहे हैं, फिर वे वास्तव में हैं।
इस खंड में अगला बिंदु यह है कि नमूने समय में समतुल्य होने चाहिए। यह ऑसीलोस्कोप में पीसी के उपयोग के साथ मुख्य समस्या है और यही कारण है कि एफपीजीए और एएसआईसी प्रमुख हैं। यदि कुछ नमूने देर से या जल्दी आते हैं, तो स्क्रीन पर प्रदर्शित छवि गलत होगी।
इस भाग में हम पाई का पहला संभव उपयोग देखते हैं। यदि नमूना दर काफी कम है, तो हम सीधे ADCs को Pi से ड्राइव करने और Pi के RAM में उनके परिणामों को संग्रहीत करने में सक्षम हो सकते हैं। हम कितनी तेजी से जा सकते हैं यह इस बात पर निर्भर करता है कि ADC पाई से जुड़ा हुआ है और Pi अपना I / O कैसे करता है। मैंने जो पढ़ा है, उसमें से पाई की I ^ 2C पोर्ट की उच्चतम गति 150 MHz है (GNU / Linux में इसे प्राप्त करना कितना आसान है) एक और प्रश्न है, जबकि उच्चतम मानकीकृत गति 5 MHz है और SPI में उच्चतम गति है पाई 250 मेगाहर्ट्ज है। मुझे यकीन नहीं है कि एसपीआई की उच्चतम मानक गति क्या है, लेकिन मुझे उम्मीद है कि यह अधिकतम 100 मेगाहर्ट्ज रेंज में कहीं होगा।
तो सिद्धांत रूप में, हमारे पास कम एमएसए / एस रेंज में एडीसी चलाने के लिए पाई पर पर्याप्त गति से अधिक है। मुझे लगता है कि RAM की गति यहाँ एक समस्या नहीं होगी, लेकिन मेरे पास इसे वापस करने के लिए कोई डेटा नहीं है। यदि ऐसा है, तो हमें सामान्य स्कोपों पर एक बड़ा लाभ होगा: कैप्चर मेमोरी की बहुत बड़ी मात्रा उपलब्ध होगी। उदाहरण के लिए यदि हम सैंपल मेमोरी के लिए प्रोग्राम में 32 MiB RAM समर्पित करते हैं और हमारे पास दो चैनल हैं, जो हमें प्रत्येक चैनल के लिए 16 MiB या प्रति चैनल 134 एमबी से अधिक या 134 megasamples के साथ छोड़ देगा। यही कारण है कि आज भी कई ऑसिलोस्कोप नहीं हैं।
नकारात्मक पक्ष यह है कि हमें सटीक नमूना लेने में सक्षम होने के लिए ऑपरेटिंग सिस्टम के लिए भारी संशोधनों की आवश्यकता होगी। मुझे वास्तविक समय के लिनक्स के साथ कोई अनुभव नहीं है, इसलिए मुझे पता है कि यह कितना आसान होगा।
वैसे भी, हम अगले चरण पर आते हैं। इसलिए हमारे पास एक नमूना प्रणाली है जो रैम को भर रही है। अगला भाग ट्रिगर है। ट्रिगर स्क्रीन ताज़ा दर से निकटता से संबंधित है। यह मूल रूप से क्या करता है एक दिलचस्प नमूना ढूंढ रहा है और इसे स्मृति में पकड़ रहा है। जब स्कोप ट्रिगर होता है, तो यह ट्रिगर के बाद नमूना जारी रखता है जब तक कि यह मेमोरी को भर नहीं देता है और फिर इसे संसाधित करने और स्क्रीन पर प्रदर्शित होने के लिए भेजता है। जबकि डेटा संसाधित किया जा रहा है, नमूना प्रणाली अगर अक्सर जमे हुए है और डेटा प्रदर्शित होने की प्रतीक्षा कर रहा है। इसीलिए लो-एंड स्कोप्स में रिफ्रेश रेट्स कम होते हैं जबकि हाई-एंड स्कोप्स में स्पेशल हाई रिफ्रेश रेट डिस्प्ले होते हैं और डेटा के डिस्प्ले होने के इंतजार में काफी कम समय बिताते हैं।
इस खंड में अक्सर एक और ASIC या FPGA होगा जो नमूनों पर सिग्नल प्रोसेसिंग करेगा, कोई भी प्रोटोकॉल डिकोडिंग अगर स्कोप इसका समर्थन करता है और वास्तव में डिस्प्ले को चला रहा है।
यह वह हिस्सा है जहां से मैं पाई को देख सकता हूं जो वास्तव में चमक सकता है। यह एक अच्छा 1920x1080 डिस्प्ले ड्राइव कर सकता है (जबकि स्कोप अक्सर उप 800x600 भूमि में होते हैं) और बहुत अच्छी तरह से डिकोडिंग प्रोटोकॉल कर सकते हैं। एकमात्र समस्या जो मुझे दिखाई दे रही है वह गति होगी और प्रसंस्करण होल्ड-ऑफ समय को कैसे प्रभावित करेगा। यदि हम कम ताज़ा दर के लिए जाते हैं, तो हम इसके साथ एक बहुत अच्छा तर्क विश्लेषक प्राप्त कर सकते हैं।
अंत में USB ऑसिलोस्कोप के बारे में एक शब्द और इस प्रकार की परियोजना के लिए USB सामान्य रूप से खराब क्यों है: पारंपरिक USB ऑसिलोस्कोप इनपुट और सैंपलिंग करता है और प्रसंस्करण के लिए नमूना डेटा पीसी पर भेजता है जिसके लिए एक होस्ट एप्लिकेशन मौजूद है। मूल रूप से कुछ ऐसा ही पाई के साथ भी किया जाएगा। आमतौर पर पीसी एप्लिकेशन बुरी तरह से डिजाइन और बग से भरे होते हैं। अगला खराब हिस्सा USB ही है। इसे तेज़ बस के रूप में विज्ञापित किया गया है जो 480 एमबी / एस को "हाई-स्पीड" मोड में कर सकती है। सच्चाई यह है कि एक यूएसबी नियंत्रक को खोजने के लिए यह बहुत दुर्लभ है जो इस तरह की उच्च गति का समर्थन कर सकता है (औसत मैंने जो देखा है, उससे लगभग 250 एमबी / एस लगता है) और यह कि प्रोटोकॉल के रूप में यह किसी भी वास्तविक के लिए बहुत अनुकूल नहीं है -समय आवेदन। पहले यह एक हब पर सभी उपकरणों के बीच साझा किया जाता है (और Pi में केवल एक यूएसबी पोर्ट है जिससे ईथरनेट + यूएसबी हब जुड़ा हुआ है), अपेक्षाकृत अधिक ओवरहेड है (जब एसपीआई कहने की तुलना में) और उच्च विलंबता है (याद रखें कि 1 एमएसए / एस प्रत्येक नमूना सिर्फ 1 माइक्रोन तक रहता है, इसलिए हमारे पास हमारे बोर्ड पर मेमोरी होनी चाहिए क्योंकि हम वास्तविक समय में नमूने नहीं भेज सकते हैं USB पर)। अंत में USB का उपयोग करने से डेटा अधिग्रहण भाग ओ स्कोप सिर्फ एक और USB आस्टसीलस्कप बन जाएगा और यहीं पर हम Pi का उपयोग करने के किसी भी लाभ को ढीला कर देते हैं: पारंपरिक डेस्कटॉप कंप्यूटर बहुत अधिक सामान्य, तेज, अधिक आसानी से प्राप्त होते हैं और इनमें बेहतर USB क्षमताएं होती हैं।
EDIT
मैंने Gert van Loo द्वारा एक अपेक्षाकृत हाल की पोस्ट पढ़ी है और उनके अनुसार, Pi की I ^ 2C के लिए यथार्थवादी दरें 400 kHz और SPI के लिए 20 MHz हैं।