FPGA प्रोग्रामिंग, जहां शुरू करने के लिए


29

मैं एक सॉफ्टवेयर डेवलपर (C, C ++, ऑब्जेक्टिव-सी, जावा ...) हूं और मुझे FPGAs के प्रोग्राम को सीखने में दिलचस्पी है। अब यह प्रश्न आपको सरल लग सकता है, लेकिन कृपया इस पर मेरी मदद करने के लिए समय निकालें क्योंकि मैं अभी रुका हुआ हूं। मेरी कंपनी ने मुझे तकनीक से परिचित होने और एक जाली उत्पाद पर काम करने के लिए कहा है। मेरा सवाल है कि कहां से शुरू करें? कुछ शोधों के बाद मैंने पाया कि मैं वीएचडीएल और वेरिलोग के बीच चयन कर सकता हूं, मैंने उनमें से किसी का भी इस्तेमाल नहीं किया है। क्या कोई विशेषज्ञ है जो मुझे सुझाव दे सकता है कि मुझे कहां से शुरू करना चाहिए? एक भाषा सीखें, हार्डवेयर घटकों और फिर जाली उत्पाद के बारे में जानें? या सीधे लैटिस उत्पाद से शुरू करें (जैसा कि मैंने पढ़ा कि प्रोग्रामिंग तरीके एफपीजीए विक्रेताओं के बीच बहुत भिन्न हैं)?


3
यदि आप C / C ++ प्रोग्रामिंग से परिचित हैं, तो आपको VHDL के बजाय वेरिलॉग चुनना चाहिए । Verilog के वाक्य रचना सी के समान है
m.Alin

1
@ m.Alin मैं अभी शुरू कर रहा हूं और मुझे पता चला है, कि यह कोई फर्क नहीं पड़ता, अगर यह सी की तरह दिखता है, क्योंकि मैंने पाया कि सबसे कठिन हिस्सा वाक्यविन्यास नहीं था, लेकिन अवधारणाओं में अंतर। शब्दार्थ सी। के भी करीब नहीं हैं
एडगर क्लार्क्स

सबसे बड़ा परिवर्तन मुझे C / C ++ / Java / etc से मिला। यह है कि आपके द्वारा लिखे गए मॉड्यूल (अनुवाद इकाइयों के समतुल्य हैं) विशुद्ध रूप से घटना संचालित हैं। सी में, एक मूल सिद्धांत के लिए सरलीकृत, एक संकलित कार्यक्रम आपके कोड की पंक्ति 1, फिर पंक्ति 2, फिर 3, फिर 4, आदि को आगे बढ़ाएगा। वेरिलोग / वीएचडीएल में ऐसी कोई बात नहीं है, यह एक तस्वीर खींचने जैसा है। : यह इनपुट पिन हर बार मॉड्यूल 1_input, मॉड्यूल 1_output टॉगल स्थिति से जोड़ता है मॉड्यूल 1_input उच्च जाता है। इसके बजाय if(condition)यह है when(condition)। अधिकांश FPGA IDE में ग्राफिक डिज़ाइन इनपुट भी होता है, जैसे कि आप इसे पेपर पर खींच रहे हों।
चार्लीहंसन

जवाबों:


40

सॉफ्टवेयर विकास के साथ डिजिटल डिजाइन में बहुत कुछ नहीं है (शायद सिवाय इसके कि वेरिलॉग सिंटैक्स सी भाषा की तरह थोड़ा सा दिखता है लेकिन यह सिर्फ दिखता है)। इस प्रकार इस प्रश्न का पर्याप्त रूप से उत्तर देना बहुत कठिन है। लेकिन एक आदमी के रूप में जो सॉफ्टवेयर डेवलपमेंट से लेकर हार्डवेयर डिज़ाइन तक का रास्ता तय करता है, मैं इसे शॉट देता हूँ। अपने आप को पीछे देखते हुए, यहाँ बताया गया है कि कैसे मैंने खुद को वापस सलाह दी होगी, अगर मुझे पता था कि मुझे अब क्या पता है:

सहूलियत बिना शुरू करना

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

आपके सीखने के मार्ग में यह हल नहीं है कि सॉफ्टवेयर से आपके मौजूदा ज्ञान के साथ एक आसान समस्या क्या है। क्लासिक उदाहरणों में से एक "लूप के लिए" है। भले ही आप एक लूप के लिए लिख सकते हैं, कहते हैं, verilog - यह एक अलग उद्देश्य प्रदान करता है। यह मुख्य रूप से कोड पीढ़ी के लिए उपयोग किया जाता है। यह लूप के लिए भी हो सकता है क्योंकि सॉफ़्टवेयर डेवलपर इसे देखते हैं, लेकिन यह किसी भी चीज़ के लिए अच्छा नहीं होगा, लेकिन सिमुलेशन (यानी आप उस तरह FPGA प्रोग्राम नहीं कर पाएंगे)।

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

हार्डवेयर और एचडीएल भाषा सीखें

सबसे लोकप्रिय एचडीएल भाषाएं वेरिलोग और वीएचडीएल हैं। AHDL (Altera HDL) जैसे विक्रेता-विशिष्ट भी हैं। चूँकि उन भाषाओं का उपयोग हार्डवेयर घटकों का वर्णन करने के लिए किया जाता है, इसलिए वे सभी समान रूप से एक समान फैशन में एक अलग सिंटैक्स के साथ व्यक्त करने के लिए उपयोग किए जाते हैं।

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

ध्यान में रखते हुए, मैं VHDL से घूरने की सलाह दूंगा। हालांकि वेरिलॉग भी ठीक है, जब तक कि ऊपर को ध्यान में रखा जाता है।

एक महत्वपूर्ण बात यह है कि आपको यह समझना चाहिए कि आप उस भाषा के साथ क्या व्यक्त कर रहे हैं। किस तरह के हार्डवेयर का "वर्णन" किया जा रहा है और यह कैसे काम करता है।

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

एक सिम्युलेटर प्राप्त करें

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

एक विकास बोर्ड प्राप्त करें

जब आपको आगे बढ़ने का मन हो, तो एक विकास बोर्ड प्राप्त करें। यदि आप जानते हैं कि आपका नियोक्ता जाली के साथ जाना चाहता है, तो जाली बोर्ड प्राप्त करें।

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

मैं यह भी सुनिश्चित करूँगा कि बोर्ड उन घटकों के साथ आए जिन्हें आप उपयोग करने की योजना बना रहे हैं या जो विस्तार योग्य हैं। उदाहरण के लिए, यदि आप एक नेटवर्क डिवाइस को राउटर की तरह डिजाइन करना चाहते हैं, तो सुनिश्चित करें कि बोर्ड में ईथरनेट PHY है या इसे HSMC कनेक्टर, आदि के माध्यम से बढ़ाया जा सकता है।

बोर्ड आमतौर पर एक अच्छा संदर्भ, उपयोगकर्ता गाइड और डिजाइन उदाहरण के साथ आते हैं। उनका अध्ययन करें।

किताबें पढ़ें

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

मैंने व्यक्तिगत रूप से इनसे शुरुआत की:

FPGA के विक्रेताओं के पास सर्वोत्तम प्रथाओं के साथ बहुत सारी कुकबुक हैं। संदर्भ डिजाइन के साथ उनका अध्ययन करें। यहाँ उदाहरण के लिए, Altera से एक है।

अधिक विशिष्ट प्रश्नों के साथ वापस आएं

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


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

5
बहुत बढ़िया जवाब।
असद अब्राहिम

स्कूल में वापस, हमने VHDL सीखने से पहले C ++ सीखा। यह समझने में बहुत परेशानी हो रही थी लेकिन जब सब कुछ क्लिक किया गया तो वह बिंदु यह था कि जब मैं समझ गया था कि सब कुछ वास्तविक समय में और समानांतर (समानांतर, नोड्ज की तरह अतुल्यकालिक नहीं) में होता है। सॉफ्टवेयर विकास एक क्रमिक प्रवाह का अनुसरण करता है, लेकिन एचडीएल में, सब कुछ एक बार (ज्यादातर समय) होता है। यदि आपके पास "x = 1; y = 2; y = x; x = y" जैसा कुछ है, तो SW में, अंत में y बराबर 1 होगा, HDL में, आपके पास दौड़ की स्थिति है जैसे कि x और y दोनों की कोशिश करेंगे एक ही समय में एक दूसरे में बदलते हैं। बस यह याद रखें और जीवन आपके लिए आसान हो सकता है।
PGT

@PGT आप उम्मीद करेंगे कि y का मान 1 के अलावा कुछ और होगा यदि 'y' एकल कोर या एकाधिक कोर पर चलने वाली कई प्रक्रियाओं के लिए सुलभ है, जो एक कमजोर प्रक्रिया पर अपना अधिकार लगा सकता है।
आदित्य

1

एक विकल्प के रूप में, आप कुछ उच्च-स्तरीय संश्लेषण तकनीकों का उपयोग कर सकते हैं जैसे कि Xilinx का विवाडो HLS और Altera का OpenCL समाधान। शायद यह आपके सॉफ़्टवेयर पृष्ठभूमि पर विचार करते हुए, हार्डवेयर विवरण भाषाओं को सीखने के लिए आपके वक्र को कम करेगा।


-1

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

पुस्तक पढ़ने के लिए: http://www.amazon.com/Advanced-FPGA-Design-Architecture-Implementation/dp/0470054379

परफेक्ट लैंग्वेज सिंटेक्स नॉलेज बाद के लिए है, पहले डिजिटल डिज़ाइन और मुद्दों को समझें।


यूरोप में VHDL का उपयोग किया जाता है, यूएस वेरिलॉग में। बिल्कुल भी सच नहीं है ...
मैट यंग

दरअसल, मैंने वेरिलॉग सीखा और मैं यूके से हूं। यह उन भाषाओं में से एक में सिखाई गई भाषा है जो मैंने uni (यूके में भी) में की थी।
टॉम कारपेंटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.