FPGA के माध्यम से PIC प्रोग्रामिंग


9

मैं जानना चाहूंगा कि क्या FPGA कार्ड के माध्यम से पहली बार PIC लिखने का कोई तरीका है (फ़्लैश में लिखें)।

PIC FPGA के लिए पहले से ही सोल्ड है और मैं इसे हटा नहीं सकता। PIC पर कोई बूटलोडर मौजूद नहीं है। इस प्रकार मुझे इसे बूटलोडर के साथ USART / SPI / I2C मोड में प्रोग्राम करना होगा ताकि यह FPGA से डेटा प्राप्त कर सके।

मुझे पता है कि आम तौर पर मुझे इसे अनसॉल्व करना पड़ता है, इसे PICKit जैसे हार्डवेयर प्रोग्रामर से कनेक्ट करें और इसे MPLAB जैसे कंप्यूटर पर एक सॉफ्टवेयर के साथ प्रोग्राम करें, लेकिन मैं ऐसा नहीं कर सकता।

मैं MPLAB के साथ बूटलोडर उत्पन्न कर सकता हूं, जो एक .hex फ़ाइल है, लेकिन मैं इसे FPGA और फिर FPGA पिन के माध्यम से PIC में कैसे स्थानांतरित कर सकता हूं?

PIC का उपयोग माइक्रोचिप PIC12F1822 है।


2
बस जाँच: क्या आप FPGA को पुन: उत्पन्न कर सकते हैं (यानी आपके पास ऐसा करने के लिए आवश्यक सभी उपकरण हैं)?
pjc50

यह किसी तरह का विकास बोर्ड है?
मैट यंग

हां, मेरे पास FPGA को पुन: उत्पन्न करने के लिए आवश्यक सभी उपकरण हैं (यह मानक यूएसबी के माध्यम से कंप्यूटर से जुड़ा है)।
मिस्ट्री

1
नहीं, उन्हें दोषी ठहराया गया क्योंकि उन्होंने यह प्रयास नहीं किया था। दरअसल, मैं एक इंटर्नशिप पर हूं और मैंने पाया कि बहुत ही अनप्रोफेशनल। हालांकि मुझे अभी भी समस्या को ठीक करने की आवश्यकता है। मैं वास्तव में एक बाहरी प्रोग्रामर की तुलना में अन्य तरीकों के साथ इस PIC को फिर से शुरू करने का एक तरीका नहीं देख सकता हूं जो मैं उपयोग नहीं कर सकता क्योंकि पैकेज पहले से ही किया गया है।
मिस्ट्री

2
वहाँ कुछ जम्पर तारों मिलाप करने के लिए कोई रास्ता नहीं है या तो PIC पर निशान या पिन करने के लिए आप इसे एक बाहरी प्रोग्रामर के माध्यम से प्रोग्राम करने के लिए? FPGA के माध्यम से इसे करने की कोशिश एक स्नातक थीसिस परियोजना की तरह लगती है।
15:18

जवाबों:


10

नहीं, आपको जरूरत नहीं है, वास्तव में आप नहीं कर सकते, SPI, UART, या I 2 C का उपयोग PIC को प्रोग्राम करने के लिए करें। PIC में एक नया प्रोग्राम प्राप्त करने का एकमात्र तरीका उस उद्देश्य के लिए विशेष कोड लोड नहीं है (एक बूटलोडर) बाहरी हार्डवेयर प्रोग्रामिंग इंटरफ़ेस का उपयोग करना है। विद्युत रूप से, इसका मतलब Vss, MCLR, PGC और PGD से जुड़ना है। प्रोग्रामर का Vdd से जुड़ा होना उपयोगी हो सकता है, लेकिन इस चिप के लिए आवश्यक नहीं है जब तक Vdd स्तर ज्ञात हो और प्रोग्रामर तदनुसार समायोजित हो जाए।

निम्न स्तर का हार्डवेयर इंटरफ़ेस काफी सरल है। पीजीडी एक डेटा लाइन है, जिसे पीजीसी (घड़ी लाइन) के गिरने वाले किनारे पर पीआईसी द्वारा नमूना किया जाता है। PIC को पहली बार प्रोग्रामिंग मोड में लाने के लिए, MCLR पर विशिष्ट किनारों के सापेक्ष एक विशेष 32 बिट कुंजी क्लॉक की गई है (हालांकि उच्च वोल्टेज प्रोग्रामिंग के बारे में नीचे नोट देखें)।

उच्च स्तर का प्रोटोकॉल अधिक जटिल हो जाता है। अधिकांश चीजें 6 बिट कमांड के साथ की जाती हैं, जिनमें से कुछ 14 बिट डेटा शब्दों के बाद होती हैं। आपको प्रोग्रामिंग कल्पना को ध्यान से पढ़ना होगा। ध्यान दें कि प्रोग्रामिंग कल्पना डेटाशीट से एक अलग दस्तावेज़ है। माइक्रोचिप वेब साइट पर अपने विशेष PIC के लिए उत्पाद पृष्ठ पर जाएं, और आपको दस्तावेज़ अनुभाग में प्रोग्रामिंग युक्ति का लिंक मिलेगा।

उच्च वोल्टेज प्रोग्रामिंग के बारे में जोड़ा गया

इस प्रकार के PIC में प्रोग्रामिंग मोड, हाई वोल्टेज (HVP) और लो वोल्टेज (LVP) दर्ज करने के दो तरीके हैं। उच्च वोल्टेज विधि को 8 से 9 वोल्ट के बीच एमसीएलआर बढ़ाने और प्रोग्रामिंग के दौरान इसे वहां रखने की आवश्यकता होती है। यह विधि हमेशा काम करती है, भले ही PIC में प्रोग्राम किए गए किसी भी संभावित डेटा की परवाह किए बिना।

प्रोग्रामिंग मोड में प्रवेश करने की निम्न वोल्टेज विधि, MCLR को उच्च ड्राइविंग से शुरू करती है, फिर निम्न, फिर सामान्य रूप से PGC और PGD का उपयोग करके एक विशेष 32 बिट कुंजी अनुक्रम में क्लॉकिंग। भाग सही कुंजी अनुक्रम पर प्रोग्रामिंग मोड में प्रवेश करेगा, और जब तक MCLR को कम रखा जाता है, तब तक प्रोग्रामिंग मोड में रहेगा।

कम वोल्टेज विधि को कॉन्फ़िगर बिट्स में से एक द्वारा अक्षम किया जा सकता है। हालांकि, कॉन्फ़िगर बिट की मिटाया हुआ स्थिति कम वोल्टेज प्रोग्रामिंग की अनुमति देता है, इसे उस तरह से कारखाने से भेज दिया जाता है, और यह कॉन्फ़िगरेशन बिट केवल LVP को अस्वीकार करने के लिए सेट किया जा सकता है यदि प्रोग्रामिंग उच्च वोल्टेज विधि के साथ दर्ज किया गया था। इसलिए, LVP को सक्षम नहीं करने के लिए, निम्नलिखित सभी को सही होना चाहिए:

  1. PIC को आखिरी बार एचवीपी-सक्षम प्रोग्रामर के साथ प्रोग्राम किया गया था, और एचवीपी प्रोग्राम एंट्री मोड का उपयोग किया गया था।

  2. HEX फाइल को PIC में प्रोग्राम किया गया है जो जानबूझकर एलवीपी बिट को गैर-मिटाए गए राज्य में 2 शब्द में सेट करता है।

चूंकि LVP को अक्षम करने के लिए एक जानबूझकर कार्रवाई और सही प्रोग्रामर की आवश्यकता होती है, इसलिए यह अभी भी सक्षम है। यदि यह किसी अजीब कारण से जानबूझकर अक्षम किया गया था, तो आपको बल्क एरेस (जो फिर से LVP को पुन: सक्षम करता है) करने के लिए PIC को प्रोग्रामिंग मोड में PIC को कम से कम लंबे समय तक प्राप्त करने के लिए 8-9 V की आपूर्ति करनी होगी।


3

PIC को प्रोग्रामिंग करने के लिए एक उच्च वोल्टेज की आवश्यकता होती है। हां, PIC को "LVP", या लो-वोल्टेज प्रोग्रामिंग मोड में बदलना संभव है, लेकिन ऐसा करने के लिए आपको एक उच्च वोल्टेज प्रोग्रामर की आवश्यकता होती है।

यदि आपका PIC को पहले ही LVP मोड में डाल दिया गया है, तो हाँ, आप FPGA से PIC को आसानी से प्रोग्राम कर सकते हैं। डेटाशीट में चिप को प्रोग्राम करने के लिए आवश्यक प्रोग्रामिंग वेवफॉर्म होते हैं, इसलिए यह FPGA में आपके अपने PIC प्रोग्रामर डिवाइस के निर्माण का मामला होगा।

हालांकि, अगर PIC को LVP मोड में नहीं डाला गया है, तो आपको प्रोग्रामिंग मोड में प्रवेश करने के लिए एक उच्च वोल्टेज (आमतौर पर 10V) उत्पन्न करना होगा और इसे MCLR पिन पर सही समय पर लागू करना होगा । यदि आपके पास इस तरह का हार्डवेयर पहले से ही आपके बोर्ड में नहीं है तो इसके लिए अतिरिक्त हार्डवेयर की आवश्यकता होती है जिसे अंततः FPGA द्वारा नियंत्रित किया जाता है जब इसे ट्रिगर किया जाता है।

अधिकांश पीआईसी प्रोग्रामर में वोल्टेज रेगुलेशन को प्रबंधित करने के लिए PIC ऑनबोर्ड का उपयोग करके 5V को 10V तक ले जाने के लिए एक छोटा बूस्टर रेगुलेटर (वोल्टेज डबललर) शामिल होता है। वे अक्सर PIC से PWM और PIC पर ADC इनपुट से एक साधारण बूस्ट रेगुलेटर के रूप में उपयोग करते हैं।

आपको सार्वजनिक रूप से उपलब्ध PICkit2 स्कीमैटिक्स पर एक नज़र डालनी चाहिए।


1
नहीं, संभावना है कि उच्च वोल्टेज की आवश्यकता नहीं है। 12F1xxx / 16F1xxx श्रृंखला के सभी सहित अधिकांश नए भाग, प्रोग्रामिंग मोड में प्रवेश करने के लिए एक महत्वपूर्ण अनुक्रम का उपयोग कर सकते हैं। इस अनुक्रम में उच्च वोल्टेज की आवश्यकता नहीं होती है। इसे कॉन्फ़िगरेशन में अक्षम किया जा सकता है, लेकिन भाग कारखाने से आता है जिसमें कुंजी विधि सक्षम होती है। जब तक कोई जानबूझकर कुंजी अनुक्रम प्रोग्राम मोड प्रविष्टि को अक्षम नहीं करता है, तब भी यह उपलब्ध होना चाहिए। यदि यह अक्षम है, तो हाँ, आपको प्रोग्रामिंग मोड में आने के लिए एमसीएलआर को 8-9 वी तक बढ़ाना होगा।
ओलिन लेथ्रोप

मुख्य प्रोग्रामिंग मोड LVP मोड है। यह विन्यास में LVP = 1 पर निर्भर करता है। ऐसा लगता है कि चिप एलवीपी = 1 को डिफॉल्ट करता है, लेकिन यह उस विशिष्ट चिप पर = 1 है, या इसे एलवीपी = 0 के साथ पहले ही प्रोग्राम किया गया है? कौन जाने? जैसे मैंने कहा - अगर यह LVP मोड में है तो आपको HV की आवश्यकता नहीं है, अन्यथा आप करते हैं।
मजेंको

तो LVP मोड में प्रोग्राम करने के लिए, मुझे अपने FPGA में कुछ "डिजिटल" PIC प्रोग्रामर (VHDL) को लागू करने की आवश्यकता है? मैं वास्तव में ऐसा करने का एक तरीका नहीं सोच सकता। क्या आप इसे बनाने में मेरी मदद कर सकते हैं?
मिस्ट्री

नहीं, मैं नहीं कर सकता। आपके पास उपलब्ध पिकिट 2 के लिए योजनाबद्ध हैं, इसलिए आपको पता है कि संकेतों की क्या आवश्यकता है। आपके पास उपलब्ध पिकिट 2 फर्मवेयर के लिए स्रोत है, इसलिए आप जानते हैं कि कैसे संवाद करना है। आपके पास प्रोग्रामिंग डेटा शीट उपलब्ध है, इसलिए आप जानते हैं कि उन्हें भेजने के लिए क्या निर्देश हैं और उन्हें कैसे भेजें। आप अपने कंप्यूटर से PIC के लिए फर्मवेयर कैसे संवाद करते हैं यह पूरी तरह से आप पर निर्भर है। आप अपने FPGA में कितनी बुद्धिमत्ता चाहते हैं, और PC अंत में कितना चाहते हैं?
मजेंको

ठीक है धन्यवाद। पहली जगह में, मैं सीधे PICKIT 3 के साथ PIC को प्रोग्राम करने की कोशिश करने जा रहा हूं। PICKIT के बारे में (जो कि मेरी फर्म ने इस उद्देश्य के लिए खरीदी है), मैं इसे सीधे PIC के पिन से जोड़ने से डरता हूं क्योंकि ये हैं FPGA से भी जुड़ा है। मुझे चिंता है कि कुछ वोल्टेज बंद किए गए FPGA के माध्यम से जा सकते हैं और कुछ नुकसान कर सकते हैं। क्या यह उचित चिंता है?
मिस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.