आपके अन्य प्रश्न को देखते हुए, आप एक 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 कार्यक्रम के लिए गैर-वाष्पशील भंडारण के रूप में उदाहरण के लिए फ़्लैश चिप्स की आवश्यकता होती है, ताकि जब भी डिवाइस चालू हो तो इसे लोड किया जा सके।