क्या होता है जब एक FPGA "क्रमादेशित" है?


13

मैं जो समझता हूं, एक FPGA प्रोग्रामिंग की प्रक्रिया दो भागों में होती है:

  1. बिट्स में हार्डवेयर विवरण को एनकोड करें जिसे FPGA समझ सकता है (यानी कुछ एचडीएल लिखें और इसे संकलित करें)
  2. FPGA पर संकलित HDL लोड करें।

मेरा सवाल है: "संकलित एचडीएल के साथ एफपीजीए क्या करता है?"। फिलहाल, मैं FPGAs को "mouldable हार्डवेयर" के रूप में समझता हूं, जहां तारों और लॉजिक गेट्स को आप जो चाहते हैं उसे ढाला जा सकता है। अच्छी चीजों में से एक यह है कि mouldability स्थायी है: FPGAs को फिर से शुरू किया जा सकता है।

FPGAs संकलित HDL की व्याख्या कैसे करते हैं? स्थायी mouldability कैसे हासिल की जाती है?


4
यह वास्तव में स्थायी नहीं है - FPGA बिटस्ट्रीम को EEPROM से हर बार बिजली लागू होने के बाद पुनः लोड किया जाना है। CPLD के पास यह समस्या नहीं है, और कुछ FPGAs ने EEPROM में बिल्ट-इन बनाया है जो हर पावरअप पर उनके बिटस्ट्रीम को लोड करता है।
एंग्रीईई

2
मुझे लगता है कि उनका मतलब है "मोल्डेबिलिटी स्थायी है" अर्थात कार्यक्रम स्वयं स्थायी नहीं है।
ajs410

जवाबों:


23

आपके अन्य प्रश्न को देखते हुए, आप एक Xilinx आदमी हैं। इसलिए मैं आपके Xilinx चिप के लिए डेटा शीट प्राप्त करने और कार्यात्मक विवरण अध्याय पर जाने का सुझाव देता हूं। स्पार्टन 3 चिप के लिए जो मैं उपयोग करता हूं, यह मजेदार पढ़ने के 42 पेज हैं। यह ठीक से वर्णन करता है कि एक FPGA के अंदर कौन से घटक हैं - IOBs, CLBs, स्लाइस, LUTs, ब्लॉक रैम, मल्टीप्लायर, डिजिटल क्लॉक मैनेजर, क्लॉक नेटवर्क, इंटरकनेक्ट और कुछ बहुत ही बुनियादी कॉन्फ़िगरेशन जानकारी। आपको इस जानकारी को समझने की आवश्यकता है यदि आप जानना चाहते हैं कि "संकलित एचडीएल" कैसा दिखता है।

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

यह बिट फ़ाइल पूरे FPGA प्रोग्राम का वर्णन करती है। उदाहरण के लिए, एक स्पार्टन 3 में सीएलबी स्लाइस से बना होता है, जो एलयूटी से बना होता है, जो सिर्फ 16-एड्रेस 1-बिट एसआरएएम हैं। इसलिए बीआईटी फ़ाइल में एक चीज एसआरएएम के प्रत्येक पते पर ठीक वैसा ही डेटा होगा। BIT फ़ाइल में एक और बात यह है कि कैसे LUT के प्रत्येक इनपुट को कनेक्शन मैट्रिक्स में वायर्ड किया जाता है। BIT फ़ाइल में प्रारंभिक मान शामिल होंगे जो ब्लॉक रैम के अंदर जाते हैं। यह वर्णन करेगा कि प्रत्येक स्लाइस में प्रत्येक फ्लिप फ्लॉप के सेट और रीसेट पिन से क्या जुड़ा हुआ है। यह वर्णन करेगा कि कैरी चेन कैसे जुड़ी है। यह प्रत्येक IOB ​​(LVTTL, LVCMOS, LVDS, आदि) के लिए तर्क इंटरफ़ेस का वर्णन करेगा। यह किसी भी एकीकृत पुल-अप या पुल-डाउन प्रतिरोधों का वर्णन करेगा। मूल रूप से, सब कुछ।

Xilinx के लिए, FPGA की मेमोरी तब साफ़ हो जाती है, जब कॉन्फ़िगरेशन शुरू किया जाता है (यानी PROG_B का उपयोग किया जाता है)। एक बार मेमोरी स्पष्ट हो जाने के बाद, INIT_B उस चरण को पूरा करने के लिए उच्च जाता है। BIT फाइल को तब JTAG या फ्लैश चिप इंटरफेस के माध्यम से लोड किया जाता है। एक बार प्रोग्राम लोड होने के बाद, ग्लोबल सेट / रीसेट (GSR) स्पंदित होता है, सभी फ्लिप फ्लॉप को अपनी प्रारंभिक स्थिति में रीसेट करता है। DONE पिन तब उच्च जाती है, जो यह दर्शाता है कि कॉन्फ़िगरेशन पूर्ण है। बिल्कुल एक घड़ी चक्र के बाद, ग्लोबल थ्री-स्टेट सिग्नल (GTS) जारी किया जाता है, जिससे आउटपुट संचालित किया जा सकता है। ठीक एक घंटे बाद, ग्लोबल राइट इनेबल (GWE) जारी किया गया है, जिससे फ्लिप फ्लॉप उनके इनपुट्स के जवाब में स्टेट्स को बदलना शुरू कर सकता है। ध्यान दें कि यहां तक ​​कि इस अंतिम कॉन्फ़िगरेशन प्रक्रिया को बीआईटी फ़ाइल में सेट किए गए झंडे के आधार पर थोड़ा पुन: व्यवस्थित किया जा सकता है।

संपादित करें:

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


6

एचडीएल के परिणामों को थोड़ा पैटर्न में संकलित करना यह दर्शाता है कि एफपीजीए के अंदर कौन से कनेक्शन सक्रिय होने चाहिए। FPGA को अब HDL ​​की व्याख्या नहीं करनी है। बिट पैटर्न को सीरियल लोडर Flash / EEPROM में क्रमादेशित किया जाता है, और इस पैटर्न को बूट करने पर FPGA में स्थानांतरित कर दिया जाता है, जिससे आवश्यक कनेक्शन बन जाते हैं।


1
SYNTHESIS का अर्थ है तीन वाक्यांश 1. नेटलिस्ट पीढ़ी 2. गेट स्तर अनुकूलन 3. प्रौद्योगिकी मानचित्रण।
स्टैंडर्ड सैंडुन

4

संकलन का परिणाम एक बिटस्ट्रीम (शाब्दिक रूप से बिट्स की एक धारा) है जो बिजली के बाद में लोड होता है। यह FPGA के माध्यम से कुछ स्मृति कोशिकाओं (latches) में संग्रहीत किया जा रहा है। ये सेल विभिन्न लॉजिक एंटिटीज, मल्टीप्लेक्सर्स, लुक-अप टेबल, रैम ब्लॉक, मैटरिंग रूट से जुड़े होते हैं और "कॉन्फ़िगरेशन" कहलाते हैं। एक बार बिटस्ट्रीम लोड हो जाने के बाद, FPGA का संचालन शुरू हो जाता है - कॉन्फ़िगरेशन-लैचेस में बिट्स FPGA के प्रत्येक छोटे टुकड़े को "ऑपरेट" करते हैं।

EDIT 24 अप्रैल, 2012: मैंने जिन फ्लिप-फ्लॉप का उल्लेख किया है, वे लुक-अप टेबल या उनके कॉन्फ़िगरेशन के लिए नहीं हैं। जैसा कि @ ajs410 ने कहा कि वे रैम में हैं जो बहुत कम ट्रांजिस्टर हैं। यह फ्लिप-फ्लॉप LUT से डेटा के स्टोरेज के लिए है, यदि स्टोरेज सक्षम है।


एक विशिष्ट FPGA में सर्किटरी का कितना वास्तविक तर्क और मार्ग है, और प्रोग्रामिंग-समर्थन कितना है?
सुपरकैट

तकनीकी रूप से "मेमोरी सेल्स" फ्लिप-फ्लॉप हैं, न कि लैच। यानी वे एज ट्रिगर हैं।
ब्रायन कार्लटन

@BrianCarlton: फ्लिप फ्लॉप वास्तव में सभी कार्यक्रम-भंडारण कोशिकाओं के लिए उपयोग किया जाता है? मेरी समझ से, फ्लिप फ्लॉप को प्रति बिट 12-16 MOSFETs के आदेश पर कुछ चाहिए; इसके विपरीत, अन्य पूरी तरह से स्थैतिक तकनीक के लिए डेटा को केवल 5-8 की आवश्यकता होती है।
सुपरकैट

1
एक LUT आमतौर पर SRAM से बना होता है। फ्लिप फ्लॉप SRAM के आउटपुट से जुड़े होते हैं।
ajs410

1
@supercat: मैंने सुना है कि एक FPGA के 90% मार्ग है ... बाकी तर्क और विन्यास है - नहीं है, हालांकि जल्दी से एक संदर्भ पा सकते हैं :(
मार्टिन थॉम्पसन

1

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

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

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