2009-02-13 20 views
5

आवश्यकताओंडिजाइनिंग प्रणाली वास्तविक समय अधिग्रहण के लिए वास्तुकला और 'नियंत्रण'

का संक्षिप्त विवरण (यहाँ अच्छा जवाब में से बहुत सारे हैं, और सभी के लिए धन्यवाद, मैं अगर मैं कभी भी इस उड़ान मिल अपडेट कर देंगे)।

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

इसके बाद, सिस्टम प्रत्येक तरीके के लिए दर्ज बाधाओं को ध्यान में रखते हुए अधिग्रहित डेटा पर गणना/फ़िल्टर/संशोधन की एक श्रृंखला करता है। इस प्रक्रिया का उत्पादन curvilinear दूरी के एक समारोह के रूप में, सुधार की एक श्रृंखला है।

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

अपने इनपुट/टिप्पणी/चेतावनी

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

प्रसंस्करण के लिए, मैं एफ # का उपयोग करूंगा।

एफपीजीए का उपयोग भौतिक मशीन पर जानकारी 'लेखन' के लिए किया जाएगा।

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

मैं आपको जो भी प्रतिक्रिया देना चाहता हूं, उसके लिए मैं बहुत ही शानदार हूं।

अद्यतन Kalman फिल्टर हम एक ही बार में हर 1ms देख रहे हैं के प्रवेश द्वार पर

(अतिरिक्त जानकारी के रूप में और जब यहां जोड़)। लेकिन कलमान फ़िल्टर के दूसरी तरफ, हम हर 1 मीटर का नमूना लेंगे, जिस गति के बारे में हम बात कर रहे हैं, वह लगभग 2 सेकंड होगा।

तो मुझे लगता है कि और अधिक सटीक सवाल होगा:

  1. एक FPGA पर एक Kalman filter को लागू - seemsthatit's संभव है, लेकिन मैं के बारे में पर्याप्त समझ में नहीं आता या तो सिर्फ बाहर काम करने के कैसे सक्षम होने के लिए विषय संभव है यह है।

  2. मुझे यह भी यकीन नहीं है कि एक कलमैन का एफपीजीए कार्यान्वयन प्रत्येक 1ms चक्र में सक्षम होगा या नहीं, हालांकि मुझे लगता है कि यह कोई समस्या नहीं होनी चाहिए।

  3. यदि मैं सही ढंग से समझ गया हूं, तो एफपीजीए में स्मृति की लोड-लोड नहीं है। प्रक्रिया के तीसरे भाग के लिए, जहां मैं लुकअप टेबल के रूप में उपयोग करने के लिए एक (लगभग) 4 x 400 सरणी युगल भेज रहा हूं, क्या यह संभव है?

  4. इसके अलावा, दो प्रक्रियाओं (डेटा पढ़ने/लिखने) के बीच स्वैपिंग करना हर बार एफपीजीए को पुन: प्रोग्रामिंग का संकेत देगा, या इसे दोनों के बीच स्विच करने का निर्देश दिया जा सकता है? (हो सकता है कि दोनों समानांतर में चलें और एक या दूसरे को अनदेखा करें)।

  5. Anotheroption मैंने देखा है VHDL करने के लिए एफ # संकलन है Avalda FPGA Developer उपयोग करते हुए, मुझे लगता है कि जल्द ही कोशिश कर रहा हो जाएगा, मुझे लगता है।

+1

आपका प्रश्न अविश्वसनीय रूप से व्यापक है .. क्या वास्तव में वास्तव में कोई प्रश्न है? कुछ शुरू करने के लिए बेहतर और वास्तव में शुरू होने के बाद विस्तृत प्रश्नों के साथ वापस आएं! –

उत्तर

2

चूंकि आप एक ट्रैक के साथ आगे बढ़ रहे हैं, मुझे लगता है कि नमूना आवृत्ति 10 किलोहर्ट्ज से अधिक नहीं है। आप आसानी से उस दर पर पीसी को डेटा को ऑफ़लोड कर सकते हैं, यहां तक ​​कि 12 एमबी यूएसबी (पूर्ण गति) भी।

गणित डेटा की गंभीर प्रसंस्करण के लिए, मैटलैब जाने का रास्ता है। लेकिन चूंकि मैंने एफ # के बारे में नहीं सुना है, इसलिए मैं टिप्पणी नहीं कर सकता।

4 x 400 युगल कोई समस्या नहीं है। यहां तक ​​कि कम अंत एफपीजीए में 100 केबीबी मेमोरी है।

आपको पढ़ने और लिखने के बीच स्वैप करने के लिए छवियों को बदलने की ज़रूरत नहीं है। यह एफपीजीए में हर समय किया जाता है।

+0

@ ब्रायन कार्लटन, आपके उत्तर के लिए धन्यवाद। एफ # नेट फोल्ड में एक कार्यात्मक भाषा है, मुझे लगता है कि मैटलैब पर लाभ यह है कि यह अधिक आसानी से वितरित करने योग्य है। नुकसान यह है कि आपको इसे सबसे अधिक रोल करना होगा, और यह बहुत खून बह रहा है। – Benjol

1

पीसी से आपका कनेक्शन क्या है? यदि यह नेटवर्क आधारित कनेक्शन है, तो नेट एक अच्छा फिट होगा, क्योंकि आप डेटा इनपुट से निपटने के लिए स्ट्रीम का उपयोग कर सकते हैं।

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

सी # अच्छा होगा यदि आपको एक जीयूआई, विनफॉर्म और जीडीआई + विकसित करने की आवश्यकता है तो आपको एक बड़े प्रयास के बिना कुछ उपयोग करने योग्य होना चाहिए।

हमें डेटा दरों और कनेक्शन के बारे में कुछ और जानकारी दें और शायद हम कुछ और सहायता प्रदान कर सकते हैं?

+0

ठीक है, एफपीजीए और पीसी एक ही स्थान पर होंगे, इसलिए उन्हें किसी भी तरह से जोड़ा जा सकता है। ब्रायन कार्लटन ने क्या कहा, यूएसबी काफी अच्छा लगता है। अब डेटा दरों को देख रहे हैं। – Benjol

+0

प्वाइंट स्टैक ओवरफ्लो के बारे में लिया गया, लेकिन पूंछ रिकर्सन एक बात है जिसे मैंने एफ # (मुझे लगता है) के बारे में समझा है, इसलिए मुझे उम्मीद है कि मैं उस विशेष समस्या से बच सकता हूं। – Benjol

+0

एफ # सीधे सरदारों में सरणी में प्रवेश कर सकते हैं; इसमें संदर्भ प्रकार हो सकते हैं और कॉल करते समय कॉपी-सेमेन्टिक्स का हमेशा उपयोग नहीं करते हैं। इसलिए हम एक इंट के चारों ओर गुजर रहे होंगे, न कि प्रत्येक कॉल सरणी की एक प्रति। इसके अलावा, जीडीआई + सॉफ्टवेयर प्रदान किया जाता है जबकि डब्ल्यूपीएफ जीपीयू-रेंडर किया जाता है, इसलिए जीडीआई + धीमा है! – Henrik

1

माइक्रोसॉफ्ट रोबोटिक्स स्टूडियो: link text में विशेष रूप से वास्तविक समय पहलू के लिए कुछ उपयोगी हो सकता है। सीसीआर - कंसुरेंसी समन्वय रनटाइम में पहले से ही बहुत कुछ सोचा गया है और सिमुलेशन टूल आपको ऐसे मॉडल का निर्माण करने में मदद कर सकता है जो आपके विश्लेषण में मदद करेगा।

1

मुझे लगता है जैसे आप सभी प्रसंस्करण ऑफ लाइन कर सकते हैं। यदि यह मामला है, तो ऑफलाइन जाने का रास्ता है।

  1. डाटा अधिग्रहण
  2. डेटा विश्लेषण
  3. शारीरिक प्रणाली डेटा विश्लेषण के आधार पर सुधार: दूसरे शब्दों में 3 चरणों में प्रक्रिया विभाजित करते हैं।

डेटा अधिग्रहण

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

डेटा विश्लेषण

बार जब आप एक हार्ड ड्राइव पर डेटा मिल गया है, तो आप डेटा विश्लेषण के लिए बहुत सारे विकल्प है। यदि आप पहले से ही एफ # जानते हैं, तो एफ # के साथ जाएं। पायथन और मैटलैब दोनों में बहुत सारे डेटा विश्लेषण पुस्तकालय उपलब्ध हैं।

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

शारीरिक प्रणाली सुधार

डेटा विश्लेषण के परिणाम ले लो और फिर इंटरफेस कार्ड के माध्यम से खिला उचित आदानों ट्रैक के साथ डिटेक्टर चलाते हैं।

1

मैंने आपके द्वारा वर्णित हाइब्रिड सिस्टम सहित बहुत से एम्बेडेड इंजीनियरिंग किए हैं। डेटा दरों और आकारों पर आपको प्रक्रिया करने की आवश्यकता है, मुझे संदेह है कि आपको एक एफपीजीए चाहिए ... बस अपने पीसी में प्लग करने के लिए शेल्फ डेटा अधिग्रहण प्रणाली को बंद करें।

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

3

आप अपने लक्ष्यों को, ग्राहकों, बजट, विश्वसनीयता या समय सीमा का उल्लेख नहीं है, इसलिए इस जवाब देना मुश्किल है, लेकिन ...

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

यदि आपके पास बजट है, तो मैं पहले LabView को देखता हूं।

http://www.ni.com/labview/

http://www.ni.com/dataacquisition/

LabView आप एक ही पीसी पर डाटा अधिग्रहण प्रणाली और उपयोगकर्ता जीयूआई सभी देना होगा। मेरे अनुभव में, डेवलपर्स LabView का चयन नहीं करते हैं क्योंकि यह 'वास्तविक' प्रोग्रामिंग वातावरण की तरह नहीं लगता है, लेकिन मैं निश्चित रूप से आपके द्वारा वर्णित समस्या के लिए अनुशंसा करता हूं।

आप संकलित भाषाओं का उपयोग करने के लिए निर्धारित कर रहे हैं, तो मैं वास्तविक समय डाटा अधिग्रहण घटक एक RTOS के साथ एक एम्बेडेड लक्षित करने के लिए अलग चाहते हैं, और अधिमानतः एक है कि समय-निर्धारण और धागा अलगाव के लिए MMU का लाभ लेता है और आप लिखते हैं की सुविधा देता है सी में। यदि आपको असली आरटीओएस मिलता है, तो आपको वास्तविक रूप से उन प्रक्रियाओं को शेड्यूल करने में सक्षम होना चाहिए जिन्हें चलाने की आवश्यकता है, और यदि आवश्यकता हो तो उन्हें डीबग करने में भी सक्षम होना चाहिए! इस ऑफ-टार्गेट सिस्टम को परिभाषित इंटरफेस के साथ यथासंभव सरल रखें। आपको आवश्यक डेटा प्राप्त करने के लिए बस इतना करें।

मैं रखरखाव के लिए एक सामान्य इंटरफेस फ़ाइल का उपयोग कर इंटरफेस को पीसी जीयूआई में वापस कार्यान्वित करता हूं। पीसी में डेटा ट्रांसफर के लिए मानक इंटरफेस का उपयोग करें, यूएसबी 2 या ईथरनेट जैसी कुछ। इस सामान के लिए एफटीडीआई चिप्स बहुत अच्छे हैं।

+0

मुझे लगता है कि इसका मतलब है कि लैबव्यू तब आपकी रूचि नहीं रखता है? :) – BenB

+0

लैब व्यू प्रोटोटाइप के संभावित विकल्प के रूप में समीक्षा अधीन है। – Benjol

2

यहां एक सुझाव है।

एफपीजीए अवधारणा को डंप करें। टीआई से डीएसपी मूल्यांकन बोर्ड प्राप्त करें आपको खुश करने के लिए पर्याप्त गीगाफ्लॉप के साथ एक चुनें। अपने कामकाजी सेट को स्टोर करने के लिए पर्याप्त रैम।

सी। टीआई में इसे एक छोटा आरटी कर्नेल प्रदान करता है।

यह एक सीरियल पोर्ट या ईथरनेट कहता है, यह पीसी से बात करता है, जो भी हो।

यह पीसी पके हुए डेटा को हैंडशेक के साथ भेजता है ताकि डेटा खो न जाए। पीसी के वरिष्ठ क्षणों के दौरान आपके डेटा को स्टोर करने के लिए डीपीएस में पर्याप्त रैम है।

डीएसपी के साथ कोई प्रदर्शन समस्या नहीं है।

रीयलटाइम बिट रीयलटाइम करता है, एमपी के राम के साथ। प्रसंस्करण तेजी से है, और जीयूआई समय-महत्वपूर्ण नहीं है।

संबंधित मुद्दे