JTAG का उपयोग करके कई FPGAs प्रोग्रामिंग


9

मेरे पास एक JTAG श्रृंखला है जो 4 स्पार्टन 6 FPGAs को जोड़ती है जो कि मैं ISE iMPACT का उपयोग करता हूं। सॉफ्टवेयर किसी भी क्रम में, और किसी भी क्रम में 4 FPGAs के किसी भी सख्त सबसेट को प्रोग्राम कर सकता है। हालाँकि, जब मैं सभी चार FPGAs को प्रोग्राम करने का प्रयास करता हूं, तो अंतिम FPGA का डोन पिन उच्च नहीं होता है, और प्रोग्रामिंग विफल हो जाती है।

इस अजीब व्यवहार के कारण क्या हो सकता है?

टिप्पणियाँ:

  1. FPGAs के तीन प्रोग्रामिंग करने के बाद, चौथे FPGA के लिए INIT_B बिट स्टेटस रजिस्टर 0 है, हालांकि INIT_B पिन अधिक है। तीसरे FPGA की प्रोग्रामिंग करने से ठीक पहले, वह बिट 1 था। इससे पता चलता है कि चौथे FPGA ने ताला लगा दिया है।
  2. जब SelectMap के साथ प्रोग्रामिंग, मैं किसी भी समस्या के बिना सभी चार FPGAs कार्यक्रम कर सकते हैं।
  3. जब मैं SelectPG के उपयोग से FPGAs के तीन प्रोग्राम करता हूं, तो चौथे को अभी भी JTAG का उपयोग करके प्रोग्राम नहीं किया जा सकता है।
  4. चार किए गए पिंस में से प्रत्येक को 4.7K ओम प्रतिरोधों के माध्यम से 3V3 तक खींच लिया जाता है, और फिर एक साथ बांधा जाता है।

चीजें जो मैंने कोशिश की हैं :

  1. श्रृंखला से FPGAs में से एक को डिस्कनेक्ट करने से शेष 3 FPGAs को अभी भी प्रोग्राम किया जा सकता है।

  2. एक 330 ओम अवरोधक के लिए पिछले FPGA के 4.7K ओम पुल-अप प्रतिरोध को स्वैप करने से समस्या हल नहीं होती है।


2
"अंतिम FPGA" से आपका क्या अभिप्राय है? क्योंकि उपयोगकर्ता गाइड में कहते हैं कि "The first device in a serial daisy chain is the last to be configured."क्या आप का मतलब श्रृंखला में अंतिम है या अंतिम रूप से कॉन्फ़िगर किया जाना है (श्रृंखला में पहली)? क्या आप एक योजनाबद्ध प्रदान कर सकते हैं?
एम्बेडेड।

2
P59 पर यह कथन मुझे अन्यथा सोचने पर मजबूर करता है,"If the Spartan-6 device is configured via JTAG, the configuration instructions occur independent from the mode pins."
एम्बेड।

उपयोगकर्ता गाइड के साथ खुद को परिचित करने के बाद (यह लगभग 6 महीने हो गया है क्योंकि मैंने एफपीजीए काम किया है), मैं आपकी शब्दावली से थोड़ा भ्रमित हूं। डेज़ी श्रृंखला का उपयोग धारावाहिक प्रोग्रामिंग के संयोजन में किया जाता है। जिस स्थिति में, DONEपिन एक साथ बंधे होते हैं। JTAG के लिए, कई डिवाइस प्रोग्रामिंग को बाउंड्री-स्कैन चेन कहा जाता है। में Chapter 3: Boundary-Scan and JTAG Configuration, केवल का उल्लेख DONEपिन है "If JTAG is the only configuration mode, then PROGRAM_B, INIT_B, and DONE can be tied High to a 330 resistor."तो है DONEपिन कम ही समस्या? क्या यह सही ढंग से कार्यक्रम करता है?
एम्बेड।


मुझे लगता है कि तथ्य यह है कि आप 3 प्राप्त कर सकते हैं लेकिन 4 एक सुराग नहीं है। JTAG प्रोग्रामर गाइड ऑफ़ डिजाइनिंग बाउंड्री-स्कैन सिस्टम्स के अध्याय 4 को देखें: xilinx.com/support/sw_manuals/2_1i/download/jtag.pdf
एम्बेडेड

जवाबों:


6

DONEJTAG प्रोग्रामिंग के दौरान उपयोग नहीं किया जाने वाला पिन और उच्च बंध किया जा सकता है:

यदि JTAG एकमात्र कॉन्फ़िगरेशन मोड है, तो PROGRAM_B, INIT_B, और DONE को एक 330x अवरोधक से उच्च पर बांधा जा सकता है। (P57)

हालांकि, यदि सीरियल प्रोग्रामिंग का उपयोग किया जाता है, तो सभी DONEपिनों को एक साथ बांधा DriveDoneजाना चाहिए और पहले को छोड़कर सभी उपकरणों के लिए अक्षम होना चाहिए:

धारावाहिक डेज़ी श्रृंखला में सभी उपकरणों के लिए DONE पिन को जोड़ना महत्वपूर्ण है। DONE पिन कनेक्ट करने में विफल होने के कारण कॉन्फ़िगरेशन विफल हो सकता है। (P135)

पहले को छोड़कर सभी डिवाइस को ड्रोन पिन पर ड्राइवर को अक्षम करना चाहिए। (P135)

यदि दोनों का उपयोग किया जाना है, तो दो विकल्प हैं:

वैकल्पिक रूप से, ड्राइवर को सभी डिन पिंस के लिए अक्षम किया जा सकता है और सिग्नल को खींचने के लिए एक बाहरी पुल-अप अवरोधक जोड़ा जा सकता है, सभी डिवाइसों को इसे जारी करने के बाद उच्च। (P135)

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

आपके मामले में, मुझे लगता है कि उन्हें कनेक्ट करना और DONEपिन को अक्षम करते समय उन सभी को उच्च स्तर पर बांधना सबसे अच्छा तरीका है।

सभी पेज नंबर उपयोगकर्ता गाइड का संदर्भ देते हैं


हम्मम ... यदि आपने स्टेटस रजिस्टर में INIT_Bउच्च और INIT_Bबिट को बांधा है, तो यह मेरे लिए एक हार्डवेयर विफलता का संकेत होगा। जब तक आप स्वतंत्र रूप से उस चिप को प्रोग्राम नहीं कर सकते जो मुझे लगता है कि आपने कहा था कि आप कर सकते हैं। DONEप्रोग्रामिंग, जबकि इसलिए मैं नहीं जानता कि क्या स्थिति रजिस्टर उस बिंदु के दौरान करता है पिन उच्च जेड चला जाता है। यदि पिछले FPGA स्थिति रजिस्टर का LSB 1 है, तो यह उस डिवाइस में CRC त्रुटि को इंगित करता है जो अगले की प्रोग्रामिंग को रोक सकता है।
एम्बेड।

समस्या मिली (मेरा समाधान देखें)। आपके सहयोग के लिए धन्यवाद।
Randomblue

3

यह पता चला कि अपराधी INIT_Bपिन था । हालाँकि, उच्च खींचा हुआ, जैसा कि पहले कुछ FPGAs प्रोग्राम किए गए थे, INIT_Bपिन को धीरे-धीरे नीचे और नीचे खींच दिया गया था क्योंकि आंतरिक पुल-डाउन था।

तीन FPGAs प्रोग्राम किए जाने के बाद, INIT_Bचौथे FPGA के लिए INIT_Bतर्क कम के रूप में व्याख्या करने के लिए पिन को काफी कम खींचा गया , जिससे चौथे FGPA को JTAG के साथ प्रोग्राम करने से रोका जा सके।


मूल कारण साझा करने के लिए धन्यवाद। मैं इस प्रश्न के उत्तर के लिए जाँच करता रहा क्योंकि यह इतना अजीब व्यवहार था। समस्या का हल क्या था? 330 से अधिक मजबूत पुलअपΩ?
एम्बेडेड।

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