एचडीएमआई वीडियो परियोजनाओं के लिए FPGAs का इतनी बार उपयोग क्यों किया जाता है?


24

अगर आप हैकादे जैसी साइट पर hdmi प्रोजेक्ट्स को देखते हैं , तो आप पाएंगे कि उनमें से हर एक में FPGA शामिल है। मुझे नहीं लगता कि मैंने एचडीएमआई आउटपुट के साथ कोई DIY प्रोजेक्ट देखा है जिसने एफपीजीए का उपयोग नहीं किया है।

पर क्यों? जहां तक ​​मैं बता सकता हूं, FPGAs महंगे हैं, लगभग $ 70- $ 100। तुलना करें कि $ 35 के लिए एक रास्पबेरी पाई के लिए, जो कि अधिक जटिल चीजें और आउटपुट एचडीएमआई कर सकता है। एआरएम का उपयोग क्यों नहीं किया जाता है? या एक सस्ता माइक्रोकंट्रोलर भी?

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


आप सस्ते जी पूस भी पा सकते हैं (जैसे आरपीआई पर)। पकड़ वह है जो एचडीएमआई लाइसेंस का उल्लंघन करते हैं या कुछ (DMCA) देशों में एकमुश्त अवैध हैं। कौन सी ऐसी परियोजनाएं हैं जिन्हें आप करने के लिए लिंक करते हैं। आप एक आईपी ​​कोर जीपीयू खरीद सकते हैं और इसे संशोधित करके ऐसे काम कर सकते हैं ... लेकिन आपके लिए यह फैब कौन है? FPGA गरीब आदमी (या समुद्री डाकू) फैब है।
फ़िज़ूल

जवाबों:


66

मूल रूप से, कोई माइक्रोकंट्रोलर, यहां तक ​​कि रास्पबेरी पाई भी पर्याप्त तेज नहीं है। रास्पबेरी पाई में एक ऑनबोर्ड जीपीयू है जो एचडीएमआई आउटपुट उत्पन्न करता है। और इसके अलावा, रास्पबेरी पाई की I / O क्षमता अविश्वसनीय रूप से सीमित है - एचडीएमआई से अलग उच्चतम बैंडविड्थ इंटरफ़ेस यूएसबी है। एचडीएमआई रूपांतरण परियोजनाओं में से कई में एक अन्य वीडियो स्ट्रीम को एक अजीब प्रारूप में शामिल किया गया है और इसे फिर से काम करना है जो कि एचडीएमआई पर एक मानक एचडीटीवी में भेजा जा सकता है। इसके लिए वीडियो सिग्नल में पढ़ने के लिए कुछ कस्टम इंटरफेसिंग तर्क की आवश्यकता होती है, इसे सुधारने के लिए लॉजिक प्रॉसेसिंग लॉजिक, एचडीएमआई टीएमडीएस एन्कोडिंग लॉजिक, और फिर उच्च गति के धारावाहिकों को वास्तव में एचडीएमआई पोर्ट को चलाने के लिए।

स्ट्रीमिंग, असम्पीडित, हाई डेफिनिशन वीडियो के साथ काम करने के लिए बड़ी मात्रा में डेटा प्रोसेसिंग की आवश्यकता होती है, जो कि सामान्य उद्देश्य सीपीयू पर संभव नहीं है। 30 फ्रेम प्रति सेकंड पर 1080p वीडियो सिग्नल में लगभग 62 मिलियन पिक्सल प्रति सेकंड है। रास्पबेरी पाई 700 मेगाहर्ट्ज पर चलती है, इसलिए आपके पास ओह, पिक्सेल प्रति 11 निर्देश हैं। और यह वास्तविक समय में ऑडबॉल वीडियो प्रारूप में पढ़ने के लिए 11 निर्देश हैं, इसे पुनर्विक्रय करें, आदि, आदि संभव नहीं है। अवधि।

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

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

यह सब लागू करने के लिए, डिजिटल तर्क वास्तव में एकमात्र संभव समाधान है। और अगर आप डिजिटल लॉजिक कर रहे हैं, तो FPGAs एकमात्र संभव समाधान है, क्योंकि यह असतत 7400 लॉजिक के लिए बहुत तेज़ और बहुत जटिल है और ASICs, ठीक है, परिमाण के कई ऑर्डर अधिक महंगे हैं।

एक अन्य आवश्यक घटक केबल के नीचे भेजे जाने वाले समानांतर धारावाहिक डेटा धाराओं को उत्पन्न करने के लिए वास्तविक उच्च गति धारावाहिक और अंतर चालक हैं। सामान्य उद्देश्य सीपीयू से प्रति सेकंड एक गीगाबिट के क्रम पर सीरियल डेटा को बिट-बैंग करना संभव नहीं है, इसके लिए विशेष हार्डवेयर की आवश्यकता होती है। रास्पबेरी पाई में एक ऑनबोर्ड जीपीयू है जो ऐसा करता है, लेकिन यह इस बात तक सीमित है कि जीपीयू क्या सक्षम है, दस्तावेज क्या है इसका उल्लेख नहीं करना। अधिकांश FPGAs में कम से कम आवश्यक अंतर ड्राइवर और DDR फ्लिप फ्लॉप होते हैं जो कम-रिज़ॉल्यूशन वीडियो का समर्थन करने के लिए पर्याप्त होते हैं और कुछ FPGAs होते हैं जिनमें पूर्ण धारा प्रवाह उत्पन्न करने के लिए आवश्यक धारावाहिक (यानी Xilinx OSERDES ब्लॉक) होते हैं। मत भूलो कि धारावाहिक 'बेसबैंड' नहीं है एक सामान्य सीरियल पोर्ट की तरह जहां वास्तविक डेटा को कुछ फ़्रेमिंग सूचनाओं के साथ शब्दशः भेजा जाता है, लेकिन डेटा को वास्तव में कुछ विद्युत विशेषताओं को देने के लिए TMDS (संक्रमण-न्यूनतम अंतर सिग्नलिंग) के साथ एन्कोड किया गया है। वास्तविक उच्च गति धारावाहिकों के अतिरिक्त इसे लागू करने के लिए थोड़ा तर्क आवश्यक है। यह सब शुद्ध डिजिटल लॉजिक में अच्छी तरह से करना आसान है (वैसे भी, एन्कोडिंग - सीरीज़र्स यकीनन एनालॉग हैं, या कम से कम मिश्रित संकेत) या तो एक ASIC या FPGA पर।

यह वास्तव में समग्र डिजिटल / एम्बेडेड सिस्टम डिज़ाइन प्रक्रिया का एक बहुत ही महत्वपूर्ण हिस्सा है, यह पता लगाने के लिए कि सिस्टम के किन हिस्सों को सॉफ़्टवेयर में लागू किया जा सकता है और किन लोगों को हार्डवेयर की आवश्यकता होती है, या तो ऑफ-द-शेल्फ विशेष चिप्स, FPGAs, कस्टम के रूप में ASICs, हार्ड या सॉफ्ट IP (HDL, netlists, GDSII), आदि। इस मामले में यह स्पष्ट है- वीडियो सिग्नल जेनरेशन के लिए विशेष हार्डवेयर की आवश्यकता होती है, यह एक सामान्य उद्देश्य CPU, FPGA के साथ इंटीग्रल हार्ड या मुलायम सीपीयू कोर या बाहरी सीपीयू के साथ जोड़ा जाता है, या कुछ और विशेष।

संपादित करें: मुझे बस एहसास हुआ कि fpga4fun साइट और नव भू वीडियो परियोजना दोनों पूर्ण HD के बजाय 640x480 पर चलते हैं। हालांकि, यह वास्तव में यह नहीं करता है जबकि ऑपरेशन बहुत सरल है। 250 पिक्सेल की एक बिट घड़ी के साथ, न्यूनतम पिक्सेल घड़ी 25 मेगाहर्ट्ज है। इसका मतलब यह है कि एफपीजीए को वास्तव में एचडीएमआई प्रसारित करने के लिए धारावाहिकों की आवश्यकता नहीं होती है, केवल डीडीआर फ्लिप फ्लॉप। यह अभी भी वीडियो डेटा पर पढ़ने के मुद्दे को कम नहीं करता है, हालांकि। यदि आप ऐसा करना चाहते हैं तो बिना किसी हार्डवेयर सहायता के रास्पबेरी पाई पर, आपको GPIO से लगातार 25 मेगाहर्ट्ज पर पढ़ना होगा। जो हर 175 निर्देशों को पढ़ा जाता है। संभावना के दायरे में प्रवेश करना, लेकिन जिस तरह से आप उस काम को करेंगे वह केवल हाथ से कोडित असेंबली के साथ नंगे धातु (कोई लिनक्स) पर नहीं है।


2
अब जब मैंने 7400 तर्क का उल्लेख किया है ... मुझे आश्चर्य है कि अगर असतत तर्क के साथ एचडीएमआई संकेत उत्पन्न करना संभव है। Fpga4fun साइट में 250 Mbit / sec या 125 MHz DDR की थोड़ी दर के लिए 25 MHz HDMI घड़ी के साथ 640x480 वीडियो का उदाहरण है। यह इतना अधिक नहीं है कि असतत तर्क चिप्स के साथ यह संभव हो सकता है। किसी के लिए एक दिलचस्प परियोजना हो सकती है।
alex.forencich

प्रति पिक्सेल 11 निर्देश - आपने उस संख्या की गणना कैसे की है? क्या आप घड़ी की टिक प्रति एक निर्देश मान रहे हैं?
गोरोस्तज

700 MHz / 62 Mpps = 11.3। सिंगल कोर सीपीयू के लिए क्लॉक साइकिल प्रति 1 सीपीयू की बॉलपार्क धारणा।
alex.forencich

और दूसरी धारणा है कि मुझे लगता है कि मैंने उल्लेख नहीं किया है कि इनपुट वीडियो सिग्नल को बिना किसी हार्डवेयर सहायता के GPIO पिन में थोड़ा धमाका किया जाएगा, इसलिए उसके लिए निर्देश किसी भी तरह से सही समय के साथ इंटरलेय किए जाएंगे।
alex.forencich

15
TL; DR: हार्डवेयर में किया जाना है। सॉफ्टवेयर बहुत धीमा है।
जेएस।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.