क्या आप वास्तव में गलत तरीके से प्रोग्रामिंग करके एक FPGA को तोड़ सकते हैं?


26

क्या आप वास्तव में गलत तरीके से प्रोग्रामिंग करके एक FPGA को तोड़ सकते हैं ?

मैं वास्तव में एक सॉफ्टवेयर आदमी हूँ। यह कोई रहस्य नहीं है कि यदि आपका सॉफ़्टवेयर गलत है, तो आप सभी प्रकार के महत्वपूर्ण डेटा को नष्ट कर सकते हैं, और शायद पूरी मशीन को भी क्रैश कर सकते हैं। लेकिन किसी कंप्यूटर को सिर्फ प्रोग्रामिंग करके उसे नुकसान पहुंचाना वास्तव में मुश्किल है।

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

एक FPGA के साथ, आप (कम से कम नाममात्र) एक साथ व्यक्तिगत सर्किट वायरिंग कर रहे हैं। यह पूरी तरह से प्रशंसनीय लगता है कि गलती होने पर शारीरिक क्षति हो सकती है।

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

यह भी गलती से संश्लेषण उपकरण में FPGA के गलत मॉडल को लेने के लिए काफी संभव लगता है, और इस प्रकार कुछ पूरी तरह से अलग मॉडल के लिए इच्छित बिटस्ट्रीम के साथ अपनी चिप को प्रोग्राम करने की कोशिश कर रहा है। मुझे नहीं पता कि वह क्या करेगा, लेकिन मुझे संदेह है कि यह "बुरा" होगा।

उस मामले के लिए, आप निश्चित रूप से FPGA चिप को बाकी सर्किट से गलत तरीके से जोड़ सकते हैं। उदाहरण के लिए, यदि आप पिन नंबरों को गड़बड़ करते हैं, तो हो सकता है कि आप एक I / O पिन को चलाने की कोशिश कर रहे बोर्ड के साथ समाप्त हो जाएं जिसे FPGA खुद भी ड्राइव करने की कोशिश कर रहा है। क्या ऐसी गलती के प्रति I / O पिन आमतौर पर कोई "सुरक्षा" है? या चिप सिर्फ तलना होगा?


3
कुछ FPGAs में सुरक्षा विशेषताएं हैं जो केवल बाहरी मेमोरी से एन्क्रिप्टेड और हस्ताक्षर किए गए बिटस्ट्रीम को लोड करने की अनुमति देती हैं। एफपीजीए और प्रोग्रामेबल में केवल एक बार चाबी रखी जाती है। यदि आप इस तरह की सुविधा को दुर्घटना से सक्षम करते हैं या चाबी को ढीला करते हैं, तो आपके पास अनिवार्य रूप से "ईटेड" एफपीजीए है।
filo

2
"लेकिन यह वास्तव में सिर्फ प्रोग्रामिंग से कंप्यूटर को शारीरिक रूप से नुकसान पहुंचाना मुश्किल है।" आपको ऐसा लगता है? एक बार हार्ड डिस्क हेड को नियंत्रित करने के लिए ड्राइवर पर निर्भर था - एक वायरस आपके हार्ड डिस्क पर जन्मदिन को खुश कर सकता है। BIOS प्रशंसकों को नियंत्रित करता है - इसे ज़्यादा गरम करने से नुकसान होने की अनुमति मिलती है (हो सकता है कि इसमें कुछ सुरक्षा निर्मित हो, लेकिन यदि आप इसे तेज़ी से गर्म करते हैं तो इसे बचाया नहीं जा सकता है)। BIOS आपके CPU में 20V डालने की कोशिश करने का निर्णय भी ले सकता है .... सॉफ्टवेयर बहुत आसानी से कंप्यूटर को नुकसान पहुंचाने के लिए जिम्मेदार हो सकता है यदि आप जानते हैं कि किस सॉफ्टवेयर के साथ फिड करना है।
UKMonkey



2
@UKMonkey आपके सिस्टम के सेट होने के आधार पर, मुझे पूरा यकीन है कि आप पर्याप्त प्रयास के साथ किसी भी सीपीयू को पिघला सकते हैं। अधिकांश कंप्यूटर - AFAIK कुछ भी नहीं विशुद्ध रूप से निष्क्रिय ठंडा - शीतलन प्रणाली को नियंत्रित करने का एक तरीका होगा। आप BIOS के माध्यम से थर्मल थ्रॉटलिंग, रक्षा की एक और पंक्ति को अक्षम कर सकते हैं, जिसका अर्थ है कि यह कर्नेल द्वारा प्रोग्रामेटिक रूप से किया जा सकता है। उस विशिष्ट मामले में, यह जानबूझकर होना चाहिए, लेकिन यह निश्चित रूप से संभव है।
निधि मोनिका का मुकदमा

जवाबों:


31

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

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

यह हिस्सा स्वयं भी आम तौर पर स्टार्ट अप करने से इंकार कर देगा यदि बिटस्ट्रीम के साथ प्रोग्राम किया जाता है जो बिल्कुल सही लंबाई नहीं है (और यह अलग-अलग चिप्स के लिए बिटस्ट्रीम के लिए एक ही लंबाई के लिए बहुत असामान्य है)।

आप निश्चित रूप से FPGA चिप को बाकी सर्किट से गलत तरीके से जोड़ सकते हैं। उदाहरण के लिए, यदि आप पिन नंबरों को गड़बड़ करते हैं, तो हो सकता है कि आप एक I / O पिन को चलाने की कोशिश कर रहे बोर्ड के साथ समाप्त हो जाएं जिसे FPGA खुद भी ड्राइव करने की कोशिश कर रहा है।

गलत प्रोग्रामिंग के साथ FPGA को नुकसान पहुंचाने का यह सबसे संभावित तरीका है।

एक और तरीका यह हो सकता है कि आप एक बहुत ही संसाधन गहन डिजाइन का कार्यक्रम बना सकें और इसे उच्च आवृत्ति पर चला सकें (ताकि उच्च शक्ति की खपत हो), और फिर इसे FPGA पर पर्याप्त गर्मी सिंक के बिना चलाएं।

क्या ऐसी गलती के प्रति I / O पिन आमतौर पर कोई "सुरक्षा" है? या चिप सिर्फ तलना होगा?

आउटपुट पिन "अक्सर" कुछ सेकंड या मिनट के लिए भी शॉर्ट सर्किट की स्थिति से बचे रहेंगे। लेकिन कुछ भी गारंटी नहीं है।


1
दिलचस्प। क्या FPGAs के लिए सक्रिय शीतलन की आवश्यकता है? ओह, मुझे लगता है कि यह अपने आप में एक संपूर्ण प्रश्न है। (और मुझे लगता है कि उत्तर कई चीजों पर निर्भर करता है - जैसे कि आपने £ 15 या £ 15,000 FPGA खरीदा है!)
गणितीयऑक्रिड

4
@ मैटमैटिकऑर्किड, जरूरी नहीं कि सक्रिय शीतलन हो, लेकिन हीट और मजबूर हवा बहुत आम हैं। FPGA विक्रेताओं आमतौर पर निर्धारित करने के लिए एक बहुत ही जटिल स्प्रेडशीट प्रदान करते हैं (भाग, डिजाइन, घड़ी आवृत्ति, आदि के आधार पर) कितना बड़ा गर्मी सिंक और कितना बड़ा प्रशंसक आवश्यक है।
फोटॉन

3
@ मैमाटिकलिकल ऑर्चिड मैंने 250 मेगाहर्ट्ज तक वर्ग तरंगों को मापने के लिए एक आवृत्ति काउंटर के रूप में एक एफपीजीए का उपयोग किया है। इसे ठंडा करने की आवश्यकता थी क्योंकि मैंने एक 220 मेगाहर्ट्ज घड़ी मापी, लेकिन उचित शीतलन स्थापित करने के बजाय मैंने सिर्फ 5 सेकंड से अधिक समय तक मापना सुनिश्चित नहीं किया। इसमें 5 W @ 220Mhz की खपत हुई और IC लगभग 2 cm ^ 2 थी। बहुत तेज गर्मी हुई।
हैरी स्वेन्सन

@HarrySvensson जो एक आवृत्ति काउंटर के लिए गर्मी की एक पागल राशि की तरह लगता है।
user253751

1
@HarrySvensson यह अभी भी पागल है कि 5 वाट लेना चाहिए।
user253751

20

कुछ प्रसिद्ध अपवादों के साथ, उपकरण आम तौर पर आपको वास्तविक सिलिकॉन प्राइमेटिक्स तक पहुंच नहीं देते हैं, इसलिए एक एंड-यूज़र इंजीनियर के लिए एक विद्युत-अवैध रूप से डिजाइन * को SRAM- आधारित FPGA में लोड करना कठिन होता है, सिवाय शायद अनजाने में किसी उपकरण की खोज करने से बग।

फ्लैश आधारित FPGAs निश्चित रूप से कुछ अवैध भारों से क्षतिग्रस्त होने से उनकी पुनः-प्रोग्रामनीयता हो सकती है। OTP FPGAs निहित " वैध " भी एक वैध द्वारा क्षतिग्रस्त हैं कॉन्फ़िगरेशन लोड , क्योंकि इसे कभी भी नहीं बदला जा सकता है।

अंतत: जो आप पूछने के लिए प्रतीत हो रहे हैं, और आपके HCF उदाहरण के सबसे करीब आता है, एक विन्यास होगा जो असहिष्णु तापीय तनाव का उत्पादन करता है। बिजली की खपत घड़ी की दर और उपयोग किए गए तर्क की गतिविधि * द्वारा काफी प्रत्यक्ष रूप से संचालित होती है, इसलिए यदि आप उपकरण को अधिकतम घड़ी में चिप पर फ्लिप फ्लॉप के सबसे अधिक बेकार कर सकते हैं (वहाँ तरीके ...) तो आप उत्पादन कर सकते हैं एक बहुत प्रभावी हीटर जो साधारण उपयोग के लिए अधिकांश शीतलन प्रणाली को पार कर जाएगा। तब यह सिर्फ एक सवाल है अगर कुछ खाना पकाने से पहले सुरक्षात्मक रूप से बंद कर देता है। और निश्चित रूप से उपकरण में बिजली अनुमान मॉडल हैं, जो संभावित रूप से अनुमानित हैं यदि आप प्रदान किए गए घड़ी सिग्नल के बारे में उनसे झूठ नहीं बोल रहे हैं।

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


2
आप बीच में एक इन्वर्टर के साथ हर फ्लॉप को चेन कर सकते हैं और बहुत अधिक गर्मी उत्पन्न कर सकते हैं। क्या किसी भी FPGAs के पास घड़ी को गर्म करने के लिए सुरक्षा सर्किट हैं? घड़ी का पेड़ अक्सर उनके नियंत्रण से बाहर होता है।
बेन जैक्सन

@ जेनकेसन: प्रत्येक लॉजिक एलीमेंट में कुछ अलग-अलग पेड़ों के बीच चयन करने में सक्षम घड़ी घड़ी अधिक या कम हार्ड वायर्ड नहीं है? घड़ी का स्रोत स्वयं उनके नियंत्रण से बाहर हो सकता है, लेकिन वे घड़ी के पेड़ के बफ़र्स को बंद कर सकते हैं यदि यह बहुत गर्म हो जाता है। या मुझे लगता है कि वे आपूर्ति बंद कर सकते हैं।
माइकल

5

सबसे संभावित चीज GPIO पर वर्तमान रेटिंग का उल्लंघन कर रही है जो पहले से ही चलाए जा रहे पिन को चलाकर। कुछ FPGA के पास वर्तमान सीमा या परिवर्तनशील आउटपुट ड्राइवर हैं, इसलिए यदि आप अपने पोर्ट मैप को सही नहीं पाते हैं तो यह आपकी मदद कर सकता है / आपको चोट पहुँचा सकता है। आपको प्रोग्रामिंग से पहले किसी भी तरह से अपने पोर्ट की सूची को डबल चेक करना चाहिए क्योंकि स्वैपिंग पिन जैसी गलतियों को हल करने में घंटों लग सकते हैं, यह गलतियों से आगे निकलने के लिए सबसे अच्छा है और वास्तव में पता है कि फर्मवेयर क्या करने का इरादा था। (जब तक आपको कोई त्रुटि खोजने का रोमांच पसंद नहीं है)

स्वयं एचडीएल आमतौर पर आपको दो आउटपुट को एक ही तार से जोड़ने की अनुमति नहीं देता है और यह संश्लेषित करना बंद कर देगा और आपकी गलती को ठीक कर देगा यदि आपके पास ऐसा कोड है जो ऐसा करता है।

एक जगह जो समस्याएं पैदा कर सकती है वह है द्वि-दिशात्मक बंदरगाह, लेकिन आपके पास उन पर वर्तमान सीमित प्रतिरोध होना चाहिए।


" दो आउटपुट को एक ही तार से कनेक्ट करें": क्या आप दो तीन-स्टेट बफ़र्स के आउटपुट को एक साथ कनेक्ट नहीं कर सकते हैं यदि आप संश्लेषण उपकरण का वादा करते हैं दोनों को एक ही समय में सक्षम नहीं करते हैं? क्या उपकरण आपके वादे की जांच कर सकता है, भले ही तर्क बफ़र्स के "सक्षम" ड्राइविंग बहुत दृढ़ है?
एडगर बोनट

@EdgarBonet हाँ आप इस तरह से टकराव का कारण बन सकते हैं। तार्किक रूप से बल आउटपुट की कोई आवश्यकता नहीं होती है, यह विशेष रूप से अनन्य होने में सक्षम होता है, अगर कुछ तर्क (जिसमें FPGA के लिए स्टेटफुल लॉजिक और / या हार्डवेयर / सॉफ्टवेयर शामिल हो सकते हैं) दो परस्पर विरोधी OE के सक्रिय होने का कारण बनता है, जब तक कि रोकना नहीं है। OE के लिए तर्क को स्पष्ट रूप से रोकने के लिए कोडित किया गया है।
रॉडने

@EdgarBonet आप कर सकते हैं, लेकिन आमतौर पर थ्रैस्टेट तार FPGA के लिए बाहरी होते हैं क्योंकि आपको ड्राइवर / ट्रान्सीवर की आवश्यकता होती है और जो GPIO पर पाए जाते हैं। मैंने कभी भी FPGA में थ्रेस्टेट के साथ डिज़ाइन नहीं किया है और मुझे नहीं लगता कि एक FPGA में हार्डवेयर तीन स्थिति का समर्थन करता है। आप एक ही समय में दो बफ़र्स को चालू कर सकते हैं, भौतिक डिज़ाइन आपको उन्हें जलने से रोकना चाहिए।
वोल्टेज स्पिक

4

माइक्रोकंट्रोलर्स की तरह, आप हमेशा प्रत्येक पिन से अधिकतम करंट (या अधिक) खींचकर IO बैंक के प्रति अधिकतम कुल करंट को पार कर सकते हैं। जब तक FPGA ने ऐसी स्थिति के खिलाफ अंतर्निहित सुरक्षा नहीं की है, इससे नुकसान हो सकता है।

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

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

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