FPGA का उपयोग कब किया जा सकता है और माइक्रोकंट्रोलर / डीएसपी नहीं?


28

मुझे उन्नत माइक्रोकंट्रोलर पर एक कोर्स और उन्नत एफपीजीए पर एक कोर्स के बीच चयन करना है।

मेरे पास दोनों विषयों में परिचयात्मक पाठ्यक्रम हैं, और अब जो मुझे परेशान करता है वह यह है कि मैं माइक्रोकंट्रोलर के लिए फर्मवेयर विकास में पहले से ही बहुत अच्छा हूं, और मैं यह देखने में विफल हूं कि मैं एक एफपीजीए के साथ क्या उत्पाद / परियोजनाएं बना सकता हूं और एक माइक्रोकंट्रोलर / डीएसपी के साथ नहीं कर सकता

क्या आप कुछ अनुप्रयोगों / उत्पादों / परियोजनाओं के साथ आ सकते हैं जहां एक माइक्रोकंट्रोलर या डीएसपी पर्याप्त नहीं होगा, और क्यों?

कैमरा? हाई-स्पीड कैमरे? उच्च गति छवि प्रसंस्करण?


4
मुख्य कारण बहुत अधिक हैं 1. 100% नियतात्मक प्रतिक्रियाएं, 2. समानता के लिए बड़े पैमाने पर क्षमता। हालांकि, कई डिज़ाइन FPGA में एक सॉर्ट-कोर सीपीयू को शामिल करते हैं, क्योंकि यह प्रोसेसर के लिए पागल तर्क को प्रोग्राम करना बहुत आसान है, क्योंकि यह हार्डवेयर के लिए है।
दजार्दा

प्रत्येक डिवाइस के साथ क्या संभव है, इसके बीच का अंतर बहुत स्पष्ट नहीं है। प्रत्येक के फायदे हैं और दोनों तरफ समस्याओं के समाधान हैं। हेवन ने प्रत्येक पर परिचयात्मक पाठ्यक्रम लिया, मुझे उम्मीद है कि आप इसे समझते हैं, इसलिए मैं आश्चर्यचकित हूं कि आप क्या पूछ रहे हैं।
फिल फ्रॉस्ट

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

4
आपके परिचयात्मक पाठ्यक्रम पर आपको कौन सा समझने में आसानी हुई? तब दूसरे पर उन्नत चुनें, क्योंकि (शायद) आप अपने आप से आसान अध्ययन कर पाएंगे।
वोलिविराज

जवाबों:


21

FPGA के बनाम माइक्रोकंट्रोलर भी देखें

हाई-स्पीड इमेज या वीडियो प्रोसेसिंग एक अच्छा उदाहरण है। या ऐसी 'इमेजेस' को प्रोसेस करना जो सीधे-सीधे ऑप्टिकल इमेज नहीं हैं, जैसे कि रडार या लेजर-आधारित सिस्टम।

विचार करने के लिए महत्वपूर्ण बात थ्रूपुट और विलंबता आवश्यकताओं है। एक माइक्रोकंट्रोलर माइक्रोसेकंड के अनुसार एक बार (बहुत मोटे तौर पर) एक सर्विस को बाधित कर सकता है। यह केवल एक ही बार में एक सेवा को बाधित कर सकता है। यदि आपको इसे विस्तृत रूप से संसाधित करने की आवश्यकता है, तो यह सीमित करता है कि आप किसी विशेष समय में कितने सेवा कर सकते हैं।

एक FPGA के साथ, आप आम तौर पर तुरंत एक इनपुट घटना का जवाब दे सकते हैं (अच्छी तरह से, अगले घड़ी चक्र पर)। आपके पास समानांतर में बहुत सारी प्रसंस्करण इकाइयाँ हो सकती हैं। यदि आप जानते हैं कि आपका फ़िल्टर 20 चक्र लेता है, तो यह पूरी तरह से स्वतंत्र है जो किसी और चीज़ पर चल रहा है।

उच्च-समानांतर पूर्णांक गहन संगणना FPGAs पर सबसे अच्छा काम करती है, खासकर अगर जटिल डेटा निर्भरता हो। हालाँकि, उनके पास बहुत अधिक ऑनबोर्ड मेमोरी नहीं है; आप कुछ DRAM को साइड में जोड़ सकते हैं लेकिन लेटेंसी की कीमत पर।

आप बाह्य उपकरणों के लिए भी एक चाहते हैं, या कुछ उच्च गति डिजिटल बस बोल सकते हैं। आप एक माइक्रोकंट्रोलर में या उससे बाहर एचडीएमआई को धमाका नहीं कर सकते। आप एक के आसपास एक PCI कार्ड नहीं बना सकते।


16

खैर, मैं FPGAs में HD वीडियो के वास्तविक समय प्रसंस्करण करते हैं। मैं जो कुछ कर सकता हूं वह एक GPU चिप में किया जा सकता है, लेकिन एक माइक्रोकंट्रोलर या DSP पर नहीं। FPGA अधिक लचीला है।

कई सिस्टम दोनों दुनिया का सर्वश्रेष्ठ पाने के लिए FPGAs और MCU / DSPs को मिलाते हैं। एक परियोजना जिस पर मैं जल्द ही काम कर सकता हूं, उसमें वीडियो स्ट्रीम में ऑब्जेक्ट पहचान शामिल है। प्रारंभिक कदम (शोर को हटाने, सामान्यीकरण, बढ़त का पता लगाने, आदि) FPGA में सबसे अच्छा किया जाता है, लेकिन उच्च-स्तरीय तर्क जो यह तय करता है कि निम्न-स्तर की विशेषताओं को पहचाने जाने वाली वस्तुओं के कुछ भाग सीपीयू पर सबसे अच्छा किया जाता है (या तो) FPGA के अंदर या बाहर)।

अंततः, आप दोनों क्षेत्रों में बातचीत करना चाहेंगे, इसलिए यह वास्तव में सिर्फ एक सवाल है कि आप पहले क्या करते हैं।


14

संक्षेप में, FPGAs अच्छे हैं जहां आपको बहुत अधिक डेटा पर थोड़ा प्रसंस्करण करने की आवश्यकता होती है, और सीपीयू अच्छे होते हैं जहाँ आपको थोड़ा डेटा पर बहुत अधिक प्रसंस्करण करने की आवश्यकता होती है।

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

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

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

जब आप एक कीबोर्ड कंट्रोलर को FPGA से बाहर कर सकते हैं, तो एक माइक्रोकंट्रोलर सस्ता होने वाला है, कम बिजली की खपत करता है, और एक FPGA की तुलना में उन्नत कीबोर्ड सॉफ़्टवेयर (मैक्रोज़, गेमिंग फ़ंक्शंस, रीमैपिंग) को विकसित करना आसान होता है।

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


12

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

एक FPGA तर्क करता है क्योंकि इसके हार्डवेयर गेट तार्किक रूप से ऐसा करने के लिए वायर्ड हैं। इसका मतलब है कि यह बहुत तेजी से चीजें कर सकता है, और एक ही समय में ऐसी कई चीजें। यह एक FPGA में एक ही तर्क को बनाने और डिबग करने के लिए आम तौर पर अधिक जटिल और कठिन है, क्योंकि आप अतिरिक्त गति और कम विलंबता आवश्यक होने पर FPGA का उपयोग करते हैं।


8

एक आवेदन जो मैंने अभी तक नहीं देखा है वह माइक्रोइलेक्ट्रॉनिक इंजीनियरिंग या स्वयं एमसीयू / सीपीयू / जीपीयू / एएसआईसी चिप्स का डिज़ाइन है। इन चिप्स को अक्सर एचडीएल में डिजाइन करके और फिर एक FPGA में लागू करके प्रोटोटाइप किया जाता है। यह उन्हें आसान, सस्ता और तेज बनाता है और प्रोसेसर या ASIC में वास्तविक सिलिकॉन के उत्पादन के लिए आवश्यक लेआउट बनाने के लिए HDL का उपयोग करने से पहले परीक्षण और संशोधित करने के लिए बनाता है।

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

यदि इस तरह का अनुप्रयोग कुछ ऐसा है जो आपको रुचिकर बनाता है , तो OpenCores पर एक नज़र डालें कि क्या संभव है।


6

हम रडार उपकरणों (ज्यादातर सिंथेटिक एपर्चर) का निर्माण करते हैं जो बड़े पैमाने पर FPGAs का उपयोग करते हैं। मुझे नहीं लगता कि तंग समय की आवश्यकताओं को एक माइक्रोकंट्रोलर द्वारा आसानी से पूरा किया जा सकता है। मेरा मानना ​​है कि बहुत सारे LIDAR उपकरण FPGAs का भी उपयोग करते हैं।

मूल रूप से कुछ भी जहां समय की आवश्यकताएं नैनोसेकंड में होती हैं उन्हें FPGAs या ASICs की आवश्यकता होती है।


5

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

एक ठोस उदाहरण: केन पेर्लिन अपने सिम्पलेक्स शोर एल्गोरिथ्म के एक हार्डवेयर कार्यान्वयन का सुझाव देता है। यह पारंपरिक सीपीयू या माइक्रोकंट्रोलर के साथ अपेक्षाकृत तेजी से किया जा सकता है, लेकिन कस्टम हार्डवेयर के साथ सुपर फास्ट बनाया जा सकता है। चूंकि मुझे संदेह है कि एक डीएसपी इसके लिए काम करेगा, सबसे आसान चीज एक एफपीजीए होगी। निश्चित रूप से, कठिन तरीका आपके लिए एक वास्तविक, शारीरिक चिप बनाना होगा, जो अविश्वसनीय रूप से महंगा है। http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf


5

एक उत्तर जो यहां नहीं है वह डेटा अधिग्रहण है। यदि आप 200Mhz पर एक सिग्नल (उदाहरण के लिए, RF सिग्नल) का नमूना लेने के लिए ADC का उपयोग करना चाहते हैं और इसे प्रोसेस करते हैं, तो एक माइक्रोकंट्रोलर बस डेटा को तेजी से प्रोसेस करने में सक्षम नहीं होगा। एक विशिष्ट DAQ FPGA बोर्ड एक डीडीसी प्राप्त करेगा, फ़िल्टर करेगा, और एक सीपीयू को RF डेटा को बहुत कम आवृत्ति पर पास करेगा। FPGAs आरएफ स्पेक्ट्रम पर FFTs और चैनलाइज़ेशन ऑपरेशन भी कर सकते हैं।

एक अन्य अनुप्रयोग पैकेट रूटिंग है, उदाहरण के लिए एक उपकरण जो एक (या एकाधिक) XAUI ईथरनेट इंटरफेस को 10Gb / s पर संचालित करता है। ये FPGAs विभिन्न गंतव्यों के लिए पैकेट कतारों को फ़िल्टर और शेड्यूल करते हैं। एक माइक्रोकंट्रोलर / पारंपरिक सीपीयू इन इंटरफेस की बैंडविड्थ को संभालने में सक्षम नहीं होगा।


4

माइक्रोप्रोसेसरों और माइक्रोकंट्रोलरों के मौलिक कारण सर्किटरी की तुलनात्मक रूप से बहुत कम मात्रा में ऐसा कर सकते हैं कि यदि माइक्रो को प्रति सेकंड 1,000 बार कुछ जटिल गणना करने की आवश्यकता होती है और इसमें 20 माइक्रोसेकंड लगते हैं (इसलिए माइक्रो गणना 2 पर काम कर रहा होगा) समय का%), उस गणना के लिए उपयोग किए जाने वाले अधिकांश हार्डवेयर का उपयोग अन्य प्रयोजनों के लिए शेष 98% समय के लिए किया जा सकता है। इस प्रकार माइक्रोकंट्रोलर बहुत अधिक संख्या में विभिन्न प्रकार के कार्य करने के लिए हार्डवेयर की एक मामूली राशि का उपयोग कर सकते हैं, इसलिए जब तक कि फ़ंक्शन एक साथ आवश्यक न हों।

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


1

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


जैसा कि मैंने कहा, यह anythings को लागू कर सकता है, इसलिए, यह आश्चर्य की बात नहीं है कि आप उच्च प्रदर्शन के साथ अपने विकास को सुविधाजनक बनाने के लिए कार्यात्मक ब्लॉक के साथ MCU को लागू कर सकते हैं। Xilinx द्वारा आपके लिए MCU को एम्बेडेड करने के लिए प्रदान किया गया एक कार्यात्मक ब्लॉक है, जिसे माइक्रोब्लेज़ कहा जाता है। इसलिए आप FPGA में एम्बेडेड सिस्टम प्रोग्राम भी निष्पादित कर सकते हैं।


उदाहरण के लिए, आप एक प्रोग्रामेबल ऑडियो इक्वलाइज़र लागू करना चाहेंगे और सबसे भारी कम्प्यूटेशन पार्ट जैसे FFT को सॉफ्टवेयर गणना चलाने के बजाय फंक्शनल ब्लॉक द्वारा लागू किया जा सकता है। लेकिन कुछ सरल कार्य जैसे एलसीडी, आई / ओ इंटरफेस एमसीयू द्वारा किया जा सकता है। और FPGA आपको एक ही समय में MCU एम्बेडेड सिस्टम और हार्डवेयर फ़ंक्शनल ब्लॉक करने की अनुमति देता है।

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