FPGA - DIY प्रोग्रामिंग


9

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

मेरा विशिष्ट प्रश्न: क्या कोई FPGA फ़ंक्शन होगा, अगर मैंने क्वार्टस, विवाडो, iCEcube, आदि द्वारा उत्पन्न बिटमैप फ़ाइल को लिया, तो इसे एक एसपीआई फ्लैश मेमोरी चिप से शुरू किया, जो पते 0 पर शुरू हुई थी (कहते हैं, एक एफटी 2232 एच के माध्यम से), और फ्लैश मेमोरी को कनेक्ट किया एक FPGA के SPI पिन (MODE विन्यास ठीक से सेट के साथ)?

मैं आंशिक काल्पनिक के लिए माफी माँगता हूँ; मुझे पूरा यकीन है कि यह सब लैटिस का डायमंड प्रोग्रामर करता है, लेकिन मुझे आश्चर्य है कि अगर यह दृष्टिकोण अलग-अलग निर्माताओं से FPGA के लिए काम करेगा, या क्या कहें, तो क्वार्टस ने इसे लिखते समय अतिरिक्त "विंडो ड्रेसिंग" या हेडर को मेमोरी में जोड़ा।

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


"बिटमैप" से आपका मतलब बिट-स्ट्रीम है?
यूजीन श।

इस सवाल को पहले एक अलग अवतार में पूछा गया है
वोल्टेज स्पाइक

1
आपके पहले FPGA बोर्ड डिज़ाइन पर, मैं आपको डिवाइस प्रोग्रामिंग के 2 तरीके प्रदान करने का सुझाव दूंगा (साथ ही विक्रेता का JTAG हेडर)। जम्पर स्थानों को रखें ताकि आप आवश्यकतानुसार मोड पिन बदल सकें। इनको गड़बड़ाना बहुत आसान है और बैक-अप योजनाओं के लिए अच्छा है। इसके अलावा INIT और DONE (या प्रोग्रामिंग स्टेट को इंगित करने के लिए जो भी जाली का उपयोग करता है) के लिए टेस्टप्वाइंट प्रदान करना सुनिश्चित करें।
फोटॉन

2
BGA को माउंट करने के लिए आवश्यक प्रक्रिया नियंत्रण, विशेष रूप से उच्च पिन काउंट वाले एक QFP की तरह कुछ की तुलना में तंग है। तथ्य यह है कि अधिक गेंदें हैं मतलब ब्रिजिंग या खराब कनेक्शन की अधिक संभावना है और जब से वे छिपे हुए हैं आप समस्याओं का पता लगाने में सक्षम नहीं होंगे (जब तक कि आपके पास एक्स-रे है) बात चलाने से पहले यह देखने के लिए कि क्या आपके पास है कोई परेशानी। और यदि आप घटक को रिमूव करते हैं तो आपको इसे पुनः स्थापित करना होगा जिसके लिए अधिक सुसज्जितीकरण की आवश्यकता है। FPGAs भी महंगे चिप्स हैं जिन्हें आप नुकसान नहीं पहुंचाना चाहते हैं। बड़े BGAs वे होते हैं जहाँ PCB प्रीहिटर्स जैसी चीजें आवश्यक हो जाती हैं।
DKNguyen

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

जवाबों:


12

हाँ, यह ठीक काम करेगा।

दरअसल, अधिकांश FPGAs के लिए विकास उपकरण आपको FPGA के स्वयं के JTAG कनेक्शन के माध्यम से सीधे बाहरी फ्लैश को प्रोग्राम करने की अनुमति देते हैं, जिससे फ्लैश के लिए एक अलग प्रोग्रामिंग इंटरफ़ेस की आवश्यकता समाप्त हो जाती है।


1
और कुछ, जैसे Lattice Mach X02 में फ्लैश ऑन-बोर्ड है, इसलिए आपको Lattice प्रोग्रामिंग पॉड से कनेक्ट करने के लिए बस कुछ प्रतिरोधों और 5x2 हेडर की आवश्यकता है।
स्पेरो पेफेनी

मुझे पता था कि आप सीधे JTAG के माध्यम से फ्लैश को प्रोग्राम कर सकते हैं जैसे कि Vivado / Quartus जैसे उपकरणों से, जो मैं उम्मीद कर रहा था कि यह एक विक्रेता-विशिष्ट केबल खरीदने की आवश्यकता के बिना करने में सक्षम था - बस एक FT2232H का उपयोग करें और बिटस्ट्रीम लिखें (नहीं बिटमैप?) खुद। मुझे नहीं लगता कि चिप को क्वार्ट्स द्वारा समर्थित है, हालांकि, और विवाडो द्वारा खुले तौर पर समर्थित नहीं है (भले ही वे इसे नेक्सिस और बेसिस बोर्ड पर उपयोग करते हैं)।
लुकास

1
हां, आप अन्य साधनों का उपयोग करके बिट फ़ाइल के साथ फ्लैश को प्रोग्राम कर सकते हैं। आपके MCUs के लिए आपका एक प्रोग्रामर शायद यह कर सकता है। मुझे पता है कि मेरा सेगर J- लिंक निश्चित रूप से कर सकता है।
DKNguyen

@ तूर: वास्तव में यह एक विक्रेता-विशिष्ट केबल नहीं है, लेकिन इसमें अभी भी विक्रेता उपकरणों में हार्डकोड का समर्थन है, और सेगर एफटी 2232 एच की तुलना में काफी अधिक महंगा है।
बेन Voigt

2
बहुत सारे सभी प्रमुख विक्रेता कस्टम टूल के साथ निर्धारित अपलोड बिटस्ट्रीम (FPGA और कस्टम कॉन्फिग फ्लैश दोनों) के लिए इंजीनियरिंग दस्तावेज़ प्रदान करते हैं, क्योंकि यह कभी-कभी एकीकृत सिस्टम या टेस्ट रिग में वांछनीय होता है। यह विक्रेता के समर्थित गियर (विशेष रूप से पहले) का उपयोग करने के लिए सबसे सरल हो सकता है, लेकिन मैंने वर्षों में कई बार विशिष्ट परियोजनाओं के लिए विकल्प लागू किया है। एक मूल FPGA बोर्ड प्रोजेक्ट का सबसे कठिन हिस्सा बोर्ड पर FPGA की जरूरत के सभी समर्थन हो सकता है - कई अलग-अलग वोल्टेज के लिए अक्सर मार्ग और बाईपास के लिए बहुत सारे बिजली जोड़े।
क्रिस स्ट्रैटन

3

जब आप "[sic] बिटमैप [sic] फ़ाइल जनरेट करते हैं", तो उत्तर मिलता है कि हां जब तक आप सही को चुनते हैं - आपने निश्चित लेख का उपयोग करके थोड़ी सी त्रुटि की क्योंकि तब केवल एक फ़ाइल उत्पन्न नहीं हुई है ।

उदाहरण के लिए, क्वार्टस SOF, POF और JIC फ़ाइलों का उत्पादन कर सकता है। अंतिम वह है जो आप FPGA JTAG के माध्यम से अप्रत्यक्ष प्रोग्रामिंग के लिए उपयोग करते हैं। यह लिखने के लिए उपयोगी नहीं होगा कि SPI फ़्लैश। एसटीएफ आपके डिजाइन को एफपीजीए में क्षणिक रूप से चलाने के लिए जेटीएजी पर लोड करने के लिए है। पीओएफ वह है जिसे आपको फ्लैश चिप में लोड करना है।

FPGA देखें : बिटस्ट्रीम बनाम SRAM ऑब्जेक्ट फ़ाइल विभिन्न उपयोगी जानकारी के लिए विभिन्न विक्रेताओं में से प्रत्येक से अलग-अलग फ़ाइलों का क्या अर्थ है।


1

अगर मैं ... FPGA के SPI पिन से फ्लैश मेमोरी को कनेक्ट करता है तो FPGA फ़ंक्शन करेगा (MODE कॉन्फिगरेशन ठीक से होने के साथ)?

अगर मैं आपके प्रश्न को सही ढंग से समझता हूं, तो आप एक SPI EEPROM या SPI फ़्लैश के लिए FPGA कॉन्फ़िगरेशन (जैसे आपका संकलित HDL मॉडल) लिखना चाहते हैं और आप चाहते हैं कि FPGA SPI IC पर डेटा का उपयोग करके स्वयं प्रोग्राम करे।

(यदि मैं डेव ट्वीड के उत्तर को सही ढंग से समझता हूं, तो उन्होंने आपके प्रश्न को एक अलग तरीके से समझा।)

कम से कम कई एसपीआई फ्लैश मेमोरी डिवाइस काम नहीं करेंगे क्योंकि एसपीआई फ्लैश मेमोरी आईसी को एक निश्चित तरंग (जैसे पढ़ने के लिए पता) की आवश्यकता होती है ताकि डेटा को आईसी से बाहर पढ़ा जाए।

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

FPGA के मोड पिन को सही तरीके से सेट करते समय, FPGA कुछ तरंग भेजेगा जो कुछ सीरियल मेमोरी डिवाइस को डेटा भेजने का निर्देश देता है। हालाँकि, क्योंकि अलग-अलग IC के लिए अलग-अलग तरंगों की आवश्यकता होती है, तरंग को सभी Flash IC द्वारा नहीं समझा जाएगा, लेकिन केवल कुछ प्रकारों से।

मुझे पता है कि एल्टर विशेष IC या EEPROM IC का उत्पादन करता है जो उनके FPGAs के लिए अनुकूल है।


स्पष्ट रूप से एक एसडी कार्ड काम नहीं करेगा, क्योंकि कोई भी FPGA (मेरी जानकारी के लिए) कॉन्फ़िगरेशन प्रोटोकॉल के रूप में SD / MMC का समर्थन नहीं करता है। अधिकांश FPGAs AT24 / AT26 / AT45 से चिपके रहते हैं।
दिमित्री ग्रिगोरीव

1

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

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

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