FPGA, ASIC और जनरल माइक्रोकंट्रोलर के बीच अंतर और समानताएं क्या हैं?


25

मैंने इस पोस्ट को पढ़ा है और यह मेरे सवाल का पूरी तरह से जवाब नहीं देता है:

मैं एक माइक्रोकंट्रोलर के बारे में सोचता हूं, जिसमें कुछ मेमोरी, रजिस्टर हैं, और LOAD, STORE और ADD जैसे निर्देशों का एक सेट प्रोसेस कर सकते हैं। इसमें लॉजिक गेट्स और इस तरह की भूमिका निभाई जाती है, लेकिन इसका मुख्य कार्य बिट्स का एक सार्वभौमिक प्रोसेसर होना है। मैं एक माइक्रोस्ट्रोलर के रूप में इंटरकनेक्टेड एएसआईसी डिजाइन की एक प्रणाली के रूप में निर्देश और स्टोर करने की क्षमता बनाने के लिए निर्देश देता हूं।

मुझे लगता है कि एक ASIC डिवाइस एक सर्किट के रूप में है जो विशेष रूप से एक एकल कार्य करने के लिए तार्किक और बिजली के घटकों का उपयोग करके बनाया गया है, जिसमें कोई अन्य कार्य ध्यान में नहीं है और न ही अतिरिक्त हार्डवेयर शामिल हैं।

मुझे लगता है कि एक FPGA डिवाइस एक ASIC डिवाइस (एक निम्न-स्तरीय डिवाइस) के रूप में + अप्रयुक्त सामान का एक गुच्छा बचा है, जिसका उपयोग किसी विशेष सत्य तालिका को लागू करने के लिए किया जाता है।

अपने नाम के बावजूद, एक FGPA बहुत "एप्लिकेशन-विशिष्ट" महसूस करता है, क्योंकि यह एक नया और अलग कार्य करने के लिए rewired होना चाहिए। इससे एएसआईसी को भ्रम होता है। यद्यपि, एक FPGA rewiring के मामले में, सभी आवश्यक हार्डवेयर मौजूद होना चाहिए। इसके अलावा, FPGA के प्रोग्राम योग्य हैं, लेकिन ऐसा नहीं है कि एक माइक्रोकंट्रोलर किसके लिए है?

ऊपर जिस पोस्ट का मैंने जिक्र किया है उसमें एचडीएल का भी उल्लेख है, जिससे मैं परिचित हूं। HDL का उपयोग ASIC और FPGA दोनों के लिए नहीं किया जा सकता है, और प्रॉक्सी द्वारा संपूर्ण माइक्रोकंट्रोलर को डिजाइन करने के लिए?


1
यह बहुत स्पष्ट नहीं है कि आपका प्रश्न क्या है। क्या आपने FPGA बनाम ASIC पर संबंधित प्रश्न पढ़े हैं? एचडीएल वास्तव में एएसआईसीएस और एफपीजीए कार्यान्वयन को डिजाइन करने के लिए उपयोग किया जाता है, और आप एचडीएल में एक माइक्रोकंट्रोलर डिजाइन कर सकते हैं।
pjc50

3
अल्टेरा डमीज के लिए FPGAs नामक एक मुफ्त ईबुक प्रदान करता है , जो FPGAs, ASICs और माइक्रोकंट्रोलर के बीच अंतर को अच्छी तरह से बताता है।
kkrambo

@kkrambo तुम मुझे एक डमी कहते हो? :) क्षमा करें, विरोध नहीं कर सका ... मैं इसे देखूंगा।
user58446

मैंने प्रश्न शीर्षक में 'समानताएं' शब्द जोड़ा है, क्योंकि ऐसा लगता है कि मिनट तकनीकी शब्दजाल विवरण हैं जो भ्रमित कर सकते हैं कि तीन अलग-अलग डिवाइस कैसे संबंधित हैं: उदाहरण के लिए एक डिवाइस में अन्य दो उपकरणों में से एक हो सकता है, या इसमें कई हो सकते हैं इसी तरह के घटक लेकिन कुछ महत्वपूर्ण पहलू में भिन्न होते हैं। यह पहले से मौजूद कुछ जवाबों को छू चुका है। धन्यवाद।
यूजर 58446

जवाबों:


28

ASIC बनाम FPGA

एक फील्ड प्रोग्रामेबल गेट ऐरे को एप्लीकेशन के इंटीग्रेटेड इंटीग्रेटेड सर्किट के प्रोटोटाइप चरण के रूप में देखा जा सकता है: ASIC निर्माण के लिए बहुत महंगे हैं, और एक बार यह बन जाने के बाद वापस नहीं जाना है (क्योंकि सबसे महंगी निश्चित लागत मास्क है [विनिर्माण का प्रकार] स्टेंसिल "] और उनका विकास)। FPGAs कई बार reprogrammable हैं, हालांकि इस तथ्य के कारण कि आपके लक्ष्य को पूरा करने के लिए फाटकों का एक सामान्य सरणी जुड़ा हुआ है, यह ASICs की तरह अनुकूलित नहीं है। इसके अलावा, FPGAs मूल रूप से गतिशील उपकरण हैं जिसमें यदि आप इसे बंद कर देते हैं, तो आप न केवल वर्तमान स्थिति बल्कि आपके कॉन्फ़िगरेशन को भी ढीला कर सकते हैं। हालांकि अब बोर्ड मौजूद हैं जो स्टार्टअप पर कॉन्फ़िगरेशन को लोड करने के लिए एक फ्लैश चिप और / या एक माइक्रोकंट्रोलर जोड़ते हैं ताकि यह एक कम महत्वपूर्ण तर्क हो। ASIC और FPGAs दोनों को हार्डवेयर विवरण भाषाओं के साथ कॉन्फ़िगर किया जा सकता है, और कभी-कभी FPGAs का उपयोग अंतिम उत्पाद के लिए किया जाता है। लेकिन आम तौर पर जब डिजाइन तय हो जाता है तो ASIC किक मारते हैं।

FPGA बनाम माइक्रोकंट्रोलर

माइक्रोकंट्रोलर और FPGA के बीच अंतर के लिए, आप एक माइक्रोकंट्रोलर को एक ASIC मान सकते हैं जो मूल रूप से FLASH / ROM में कोड को क्रमिक रूप से प्रोसेस करता है। आप FPGAs के साथ माइक्रोकंट्रोलर बना सकते हैं भले ही यह अनुकूलित न हो, लेकिन इसके विपरीत नहीं। FPGAs को केवल इलेक्ट्रॉनिक सर्किट की तरह तार-तार किया जाता है, ताकि आपके पास वास्तव में समानांतर सर्किट हो, न कि एक माइक्रोकंट्रोलर की तरह, जहां प्रोसेसर अच्छे-से-समान समानता का अनुकरण करने के लिए कोड के एक टुकड़े से दूसरे में कूदता है। हालांकि, क्योंकि FPGAs को समानांतर कार्यों के लिए डिज़ाइन किया गया है, इसलिए अनुक्रमिक कोड को माइक्रोकंट्रोलर में लिखना उतना आसान नहीं है।

उदाहरण के लिए, आम तौर पर यदि आप pseudocode "Let C A XOR B" में लिखते हैं, तो एक FPG पर जिसका अनुवाद "लेगो ईंटों के साथ एक XOR गेट बनाने में किया गया है (लुकअप टेबल और लैचेस), और इनपुट के रूप में A / B कनेक्ट करें और C आउटपुट के रूप में "जिसे C का उपयोग किया गया है या नहीं, इसकी परवाह किए बिना हर घड़ी चक्र अपडेट किया जाएगा।" जबकि एक माइक्रोकंट्रोलर पर जिसे "रीड इंस्ट्रक्शन" में अनुवाद किया जाएगा - यह पता ए और एड्रेस बी के रैम पर चर का एक XOR है, जिसके परिणामस्वरूप पता सी। स्टोर करने के लिए अंकगणित तर्क इकाइयां लोड होती हैं, फिर ALU को XOR करने के लिए कहें, फिर RAM के एड्रेस सी पर आउटपुट रजिस्टर कॉपी करें। हालांकि उपयोगकर्ता की ओर से, दोनों निर्देश कोड की 1 पंक्ति थे। यदि हम ऐसा करते हैं, तो कुछ और, एचडीएल में हमें परिभाषित करना होगा कि कृत्रिम रूप से अनुक्रम करने के लिए एक प्रक्रिया क्या है - समानांतर कोड से अलग। जबकि एक माइक्रोकंट्रोलर में ऐसा करने के लिए कुछ भी नहीं है। दूसरी ओर, एक माइक्रोकंट्रोलर से "समानता" (वास्तव में और बाहर ट्यूनिंग) प्राप्त करने के लिए, आपको थ्रेड्स के साथ जॉगिंग करने की आवश्यकता होगी जो तुच्छ नहीं है। काम करने के अलग-अलग तरीके, अलग-अलग उद्देश्य।

संक्षेप में:

ASIC बनाम FPGA: निश्चित, अधिक संख्या में छोटे उत्पादों के लिए महंगा (उच्च मात्रा के लिए सस्ता), लेकिन अधिक अनुकूलित।

ASIC बनाम माइक्रोकंट्रोलर: निश्चित रूप से एक हथौड़ा के साथ एक उपकरण की तुलना करना।

FPGA बनाम माइक्रोकंट्रोलर: अनुक्रमिक कोड प्रसंस्करण के लिए अनुकूलित नहीं है, लेकिन वास्तव में समानांतर कार्यों को बहुत आसानी से कर सकते हैं। आम तौर पर FPGAs को एचडीएल में प्रोग्राम किया जाता है, सी / असेंबली में माइक्रोकंट्रोलर

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

यह लिखने के बाद मुझे एक त्वरित खोज क्या मिली: यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें

इस बहुत मंच पर FPGA बनाम माइक्रोकंट्रोलर


14

FPGAs को पुन: प्रोग्रामिंग द्वारा "पुनः वायर्ड" किया जा सकता है। जब यह संचालित होता है तो एक FPGA लोड होता है यह विन्यास योग्य तर्क कोशिकाओं में होता है । इसका मतलब यह है कि हार्डवेयर में कोई बदलाव नहीं करने के साथ इसे फिर से प्रोग्राम किया जा सकता है।

ASICs केवल सिलिकॉन फाउंड्री में फोटोलिटोग्राफ़िक मास्क को संशोधित करके फिर से तार कर सकते हैं।

एक माइक्रोकंट्रोलर एक प्रकार का एएसआईसी है, जो एक प्रोग्राम को निष्पादित करता है और परिणामस्वरूप सामान्य चीजें कर सकता है। हालाँकि, यदि आप निर्देश सेट को बदलना चाहते हैं, या ऐसा ही कुछ करना चाहते हैं, तो आपको वास्तविक सिलिकॉन आईसी लेआउट को संशोधित करना होगा।


एक FPGA और MCU के बीच का अंतर अधिक फजी है। मूल रूप से, एक FPGA क्या है, हार्डवेयर स्तर पर, कई छोटे SRAM सेल होते हैं, जो सभी मल्टीप्लेक्सर्स के घने मैट्रिक से जुड़े होते हैं। मूल रूप से, एक FPGA असतत तर्क का एक पूरा ढेर है जो इलेक्ट्रॉनिक रूप से मल्टीप्लेक्सर्स और SRAM कोशिकाओं को पुन: उत्पन्न करके "पुन: वायर्ड" ** हो सकता है।

जैसे, आप वास्तव में एक FPGA के भीतर MCU को लागू कर सकते हैं , क्योंकि MCU तर्क कोशिकाओं का एक निश्चित विन्यास है। वास्तव में, FPGAs का उपयोग आमतौर पर MCU की डिजाइन प्रक्रिया में किया जाता है।

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


FPGAs कुछ अनुप्रयोगों में उपयोगी होते हैं , क्योंकि वे तर्क संरचनाओं को इस तरह से लागू कर सकते हैं जो MCUs नहीं कर सकते। उदाहरण के लिए, यदि आपको X1 + Y1, X2 + Y2, X3 + Y3 और X4 + Y4 को जोड़ना है, तो MCU को प्रत्येक ऑपरेशन को अनुक्रम * में करना होगा। एक FPGA में एक ही समय में 4 अलग-अलग ALU हो सकते हैं, इसलिए यह एक चौथाई समय में एक ही ऑपरेशन कर सकता है (दोनों उपकरणों को एक ही दर पर देखा जाता है)।

यह वह जगह है जहां FPGAs (या एक ही कार्य के लिए डिज़ाइन किए गए ASIC) वास्तव में चमक सकते हैं, इस तथ्य में कि आप एक साथ कई काम कर सकते हैं , जो एक एकल-प्रक्रिया केवल क्रमिक रूप से कर सकती है।

* (ध्यान दें: मैं कुछ चीजों को अनदेखा कर रहा हूँ जैसे कि SIMD)


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

धन्यवाद। जवाब बनने के करीब है ... यद्यपि 10 महीने बाद। अमेंड्स बनाने के लिए +1।
user58446

6

यह अच्छा प्रश्न है,

मूल रूप से एक माइक्रो कंट्रोलर और एक ASIC में हार्डवेयर (अक्सर सिलिकॉन के रूप में संदर्भित) होता है जो पत्थर में सेट होता है और इसे बदला नहीं जा सकता है। एक FPGA को कई अलग-अलग प्रकार के हार्डवेयर का प्रतिनिधित्व करने के लिए कॉन्फ़िगर किया जा सकता है (इसमें माइक्रो कंट्रोलर शामिल हो सकते हैं)।

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

FPGAs का उपयोग आमतौर पर उन डिज़ाइनों को उत्पन्न करने के लिए किया जाता है जो ASICs के बीच के अंतर के लिए प्रतिबद्ध होते हैं, यदि आप FPGA के आंतरिक कामकाज को अपडेट करना चाहते हैं या कार्यात्मक ब्लॉक को जोड़ना / हटाना चाहते हैं, तो आपको यह फर्मवेयर अपडेट करने की आवश्यकता है। एएसआईसी पर किया जाना चाहिए क्योंकि आंतरिक कामकाज सिलिकॉन के लिए प्रतिबद्ध है, यह पुन: योग योग्य नहीं है।

तो संक्षेप में, एक माइक्रो प्रोसेसर के साथ आप विभिन्न प्रोग्रामों को चलाने के लिए एक ही हार्डवेयर का उपयोग करते हैं, एक FPGA के साथ आप विभिन्न कार्यों को करने के लिए हार्डवेयर को पुन: कॉन्फ़िगर कर रहे हैं और ASIC एक माइक्रो कंट्रोलर की तरह हैं जिसमें हार्डवेयर को बदला नहीं जा सकता है लेकिन आमतौर पर प्रदर्शन करने के लिए डिज़ाइन किया गया है एक समारोह बहुत कुशलता से।

ASICs और FPGAs दोनों में माइक्रो कंट्रोलर हो सकते हैं और अगर वे करते हैं तो आप उनके लिए प्रोग्राम लिख सकते हैं क्योंकि आप अकेले एक माइक्रो कंट्रोलर खड़े करेंगे, इसका एक उदाहरण Altera का NIOS II एम्बेडेड प्रोसेसर है।

यदि यह अभी भी भ्रमित है, तो मुझे बताएं कि इसके बारे में क्या स्पष्ट है और मैं अपना उत्तर स्पष्ट करने के लिए अपनी पूरी कोशिश करूंगा।

जिप्सी


3

ठीक है, किसी FPGA को विद्युत संकेतों द्वारा क्रमादेशित नहीं किया जाता है यदि फाटकों के एक विशिष्ट संग्रह की तरह व्यवहार किया जाता है, तो कुछ FPGAs में इस कॉन्फ़िगरेशन को संग्रहीत करने के लिए फ्लैश मेमोरी शामिल है, कुछ को प्रत्येक पावर रीसेट के बाद पुन: शुरू नहीं किया जाना चाहिए।

पहले से कॉन्फ़िगर की गई उत्पादन लाइन से एक ASIC आता है।

FPGA बग को फर्मवेयर अपग्रेड के साथ ठीक किया जा सकता है, ASIC बग्स की आर्थिक रूप से मरम्मत नहीं की जा सकती है।


2

अपने नाम के बावजूद, एक FGPA बहुत "प्रशंसा-विशिष्ट" महसूस करता है, क्योंकि यह एक नया और अलग कार्य करने के लिए rewired होना चाहिए।

इसके विपरीत "अनुप्रयोग-विशिष्ट" का अर्थ है। आप इसे फिर से शुरू करके एक से अधिक एप्लिकेशन के लिए FPGA का उपयोग कर सकते हैं। आप एक ASIC नहीं बदल सकते हैं, इसलिए यह केवल एक कार्य पर लागू किया जा सकता है (यह कार्य एक माइक्रोकंट्रोलर लागू कर सकता है)।

यद्यपि, एक FPGA rewiring के मामले में, सभी आवश्यक हार्डवेयर मौजूद होना चाहिए।

निश्चित नहीं इसका क्या मतलब। आमतौर पर FPGA को रीप्रोग्राम करने के लिए एक सॉफ्टवेयर इंटरफ़ेस होता है। यह एक ऐसा ASIC है जिसके लिए लाखों [मुद्रा इकाई] हार्डवेयर की आवश्यकता होती है।

FPGA के प्रोग्राम योग्य हैं, लेकिन ऐसा नहीं है कि एक माइक्रोकंट्रोलर किसके लिए है?

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

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