2012-01-24 56 views
21

विश्वविद्यालय में मैंने सी-जैसी भाषा में एक एफपीजीए प्रोग्राम किया। हालांकि, मुझे यह भी पता है कि आमतौर पर वेरिलोग या वीएचडीएल में एफपीजीए प्रोग्राम होते हैं। क्या यह एक डिजाइनर पसंद है? यदि हां, तो प्रदर्शन कमियां क्या हैं?क्या आप सी-जैसी भाषाओं में एफपीजीए प्रोग्राम कर सकते हैं?

मैं आदर्श रूप से वीएचडीएल की बजाय सी-जैसी भाषा में एफपीजीए प्रोग्राम करना चाहता हूं।

मैं Xilinx Virtex-5 प्राप्त करने के बारे में सोच रहा था अगर इससे कोई फर्क पड़ता है?

+1

VHDL को आपत्ति क्या है - वाक्य रचना या क्षमता? –

+0

शायद ओपनसीएल अधिक पर्याप्त है: https://www.altera.com/products/design-software/embedded-software-developers/opencl/overview.html –

उत्तर

6

संक्षिप्त उत्तर "हाँ, निश्चित रूप से" है।

यहां एफपीजीए और एफपीजीए-आधारित सिस्टम के लिए सी कंपाइलर्स का एक उत्कृष्ट सर्वेक्षण है।

C-to-hardware compiler (HLL synthesis)

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

1

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

+0

क्या कोई हैंडल सी का समर्थन करता है? –

1

आप सी-टू-हार्डवेयर तकनीक पर एक नज़र डालना चाहते हैं, जहां आप सी कोड लिख सकते हैं और इसे संकलित/वीएचडीएल में अनुवादित किया जाएगा या Verilog। This post कुछ कंपाइलर्स सूचीबद्ध करता है। इसे स्वयं इस्तेमाल नहीं किया है इसलिए मुझे इसके साथ कोई अनुभव नहीं है। उम्मीद है की यह मदद करेगा!

1

कई डिज़ाइनर उच्च स्तर की भाषा के बजाय वीएचडीएल/वेरिलोग लिखते हैं, इसी कारण से कई प्रोग्रामर जावा के बजाए असेंबली लिखते हैं (और अभी भी कुछ मामलों में करते हैं): आप संसाधन उपयोग और प्रदर्शन को ट्यून कर सकते हैं निम्न स्तर। वीएचडीएल और वेरिलोग दोनों हार्डवेयर डिजाइन करने के लिए डिज़ाइन की गई भाषाएं हैं। सी नहीं है। पर्याप्त समय दिया गया है, आप हमेशा वीएचडीएल/वेरिलोग में एक प्रोग्राम लिख सकते हैं जो एक उच्च स्तरीय भाषा कार्यक्रम से बेहतर प्रदर्शन करेगा। एचएलएल आपको क्या देता है 1) तेज विकास, 2) रखरखाव में आसानी, और 3) संभवतः अधिक पोर्टेबिलिटी।

एफपीजीए लक्ष्यों के लिए मौजूदा उच्च स्तरीय प्रोग्रामिंग भाषाओं (सी एक है) को संकलित करने के कई प्रयास किए गए हैं। उनमें से ज्यादातर वास्तव में अनुकूलित कोड उत्पन्न करते हैं। इंपल्स सी, उदाहरण के लिए, कुछ ऐड-ऑन लाइब्रेरीज़ के साथ सी का सबसेट है जो प्रक्रिया-स्तर समांतरता का समर्थन करता है, साथ ही एक संकलक जो निर्देश-स्तर समांतरता के लिए सी इनपुट को अनुकूलित करता है। यह पाइपलाइन छोरों, उच्च प्रदर्शन हार्डवेयर पुरातन करने के लिए निश्चित संचालनों के नक्शे यह जानता है अंतर्निहित FPGA परिवार, प्रदान करता है आदि (पूर्ण प्रकटीकरण:। मैं आवेग सी toolchain बनाने में मदद की) C-to-hardware environments सूची कार्टिलो और डेविड सूचक कड़ी है करने के लिए

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

21

एफपीजीए प्रोसेसर नहीं हैं। सी प्रोसेसर के लिए डिज़ाइन की गई एक भाषा है।

हां, सी से एफपीजीए कंपाइलर्स हैं।

क्या वे एक अच्छा विचार हैं? मैं कहूंगा। जिस डिजाइन के साथ आप समाप्त होने जा रहे हैं वह है (मैंने जो देखा है) सामान्य रूप से एक राज्य मशीन जिसमें सी में कोड की प्रति पंक्ति एक राज्य है। राज्य मशीन तब राज्यों के माध्यम से चलती है एल्गोरिदम। कोड को निष्पादित करने के लिए या तो उस या किसी अन्य प्रकार की ट्यूरिंग मशीन लगाई गई है।

यह एफपीजीए डिज़ाइन में कुशल कोई भी आम तौर पर किसी समस्या से संपर्क करेगा। यह धीमा, और संभावित रूप से गेट भूख तरीके से काम कर रहा है।

एक ही तरीका है कि अंग्रेजी फोरट्रान से एक उपन्यास लिखने के लिए एक बेहतर भाषा है, VHDL और Verilog बेहतर भाषाओं सी

से लॉजिक सर्किट वर्णन करने के लिए आप FPGAs का उपयोग के बारे में गंभीर हैं, तो एक भाषा का प्रयोग कर रहे हैं जो तर्क सर्किट का वर्णन करने के लिए डिज़ाइन किया गया है। यह एक सीधी सीखने की अवस्था हो सकती है, लेकिन परिणाम आईएमएचओ बेहतर होंगे।

+0

बेशक, सी प्रोग्रामों को वीएचडीएल या वेरिलोग में [सी से एचडीएल] (https://en.wikipedia.org/wiki/C_to_HDL) कंपाइलर का उपयोग करना भी संभव है। –

1

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

2011 में, Xilinx ने कंपनी ऑटोईएसएल खरीदा जिसने SystemC के साथ उच्च स्तरीय संश्लेषण विकसित किया था। Xilinx ने अपना उत्पाद "ऑटोईएसएल" जारी किए जाने पर नाम का पुन: उपयोग किया है। खासकर अपने नए सर्किट ज़िनक के साथ, एफपीजीए तर्क के साथ एक दोहरी कोर एआरएम कॉर्टेक्स ए 9 एम्बेडेड है, यह शायद सिस्टम विकास के लिए एक शक्तिशाली उपकरण बन जाएगा।

4

आप एक नरम प्रोसेसर कोर एफपीजीए तर्क के अंदर स्थापित कर सकते हैं, और वर्चुअल प्रोसेसर के अंदर अपना सी कोड चला सकते हैं। Xilinx में Microblaze (लाइसेंस प्राप्त) और Picoblaze (मुफ्त) कोर है। ऐसे अन्य सॉफ्ट कोर भी हैं जिन्हें आप कार्यान्वित कर सकते हैं (एमआईपीएस, x86, 8051, आदि)।

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

इसका प्रकार लेगोस का एक बैग खरीदने और ईंटों से बाहर हथौड़ा और नाखूनों के सेट की तरह है। यह काम कर सकता है, लेकिन आप पाउंड नाखूनों के लिए हथौड़ा खरीदने से बेहतर हैं, और लेगोस के साथ कास्टल्स, स्पेस शिप और फायर स्टेशनों के निर्माण से बेहतर हैं।

2

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

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

जबकि सी जैसी भाषाओं सीमित उपयोग के मामलों में एक महान उत्पादकता उपकरण हैं, इन compilers निश्चित रूप से आप अचानक कैसे हार्डवेयर डिजाइन करने के लिए यदि आप

आशा इस मदद करता है सी से परिचित हैं पता करने के लिए,

की अनुमति नहीं है
0

मैं कुछ ऐसा जोड़ना चाहता हूं जो मुझे विश्वास है कि ओपी के प्रश्न का सबसे नज़दीकी उत्तर है।यदि आप सी-जैसी भाषा की तलाश में हैं (जो सी के समान नहीं है), तो आपको निश्चित रूप से Synflow देखें। विचार एक आधुनिक भाषा है जो आपको वीएचडीएल/वेरिलोग के सीखने की वक्र के बिना और बिना किसी ओवरहेड के तेजी से डिजाइन करने की अनुमति देती है। यह भी मुफ्त और खुला स्रोत है!

प्रकटीकरण: मैं सह संस्थापक हूँ Synflow की :-)