मैंने सुना है कि D + और D- डिफरेंशियल सिग्नल हैं, क्या इससे कोई फर्क नहीं पड़ता कि मैं कंप्यूटर पर यूएसबी डिवाइस कनेक्ट करते समय उन्हें स्वैप करता हूं?
मैंने सुना है कि D + और D- डिफरेंशियल सिग्नल हैं, क्या इससे कोई फर्क नहीं पड़ता कि मैं कंप्यूटर पर यूएसबी डिवाइस कनेक्ट करते समय उन्हें स्वैप करता हूं?
जवाबों:
निष्क्रिय अवस्था में प्रवेश करने और बाहर निकलने पर, ध्रुवीयता महत्वपूर्ण है और डी + और डी-लाइनों को स्वैप करने से समस्याएं पैदा होंगी।
USB डेटा NRZ- कोडित है जैसे कि "एक" का भौतिक स्तर में कोई परिवर्तन नहीं होता है, और "शून्य" का भौतिक स्तर में परिवर्तन द्वारा प्रतिनिधित्व किया जाता है (नीचे आंकड़ा देखें)। इसलिए, सिग्नल को निष्क्रिय करना (उदाहरण के लिए, D + और D- स्वैप करके) डेटा ट्रांसमिशन के दौरान कोई कार्यात्मक परिवर्तन नहीं होता है। लेकिन डेटा ट्रांसमिशन से पहले और बाद में समस्याएं हो सकती हैं जो डिवाइस के साथ संचार को मार सकती हैं।
होस्ट में प्रत्येक डेटा लाइन पर 15 k host पुल-डाउन रेसिस्टर्स शामिल हैं। जब कोई उपकरण कनेक्ट नहीं होता है, तो यह दोनों डेटा लाइनों को तथाकथित "सिंगल-एंडेड जीरो" स्थिति (USB प्रलेखन में SE0) में खींचता है, और एक रीसेट या डिस्कनेक्ट कनेक्शन को इंगित करता है। एक USB डिवाइस 1.5 kor रोकने वाले के साथ डेटा लाइनों में से एक को खींचती है। यह मेजबान में पुल-डाउन प्रतिरोधों में से एक को ओवरपॉवर करता है और "जे" नामक एक निष्क्रिय अवस्था में डेटा लाइनों को छोड़ देता है। यूएसबी 1.x के लिए, डेटा लाइन का विकल्प इंगित करता है कि डिवाइस किस सिग्नल दरों में सक्षम है; पूर्ण-बैंडविड्थ डिवाइस D + उच्च खींचते हैं, जबकि कम-बैंडविड्थ डिवाइस D। उच्च खींचते हैं।
जबकि डेटा एनआरजेडआई-एनकोडेड है, सिंक्रनाइज़ेशन अनुक्रम और ईओपी को निर्धारित राज्यों (जे / के / एसई 0) के संदर्भ में परिभाषित किया गया है। जब D + और D- स्विच किए जाते हैं, तो J राज्य K और SE0 के साथ स्विच किया जाता है, फिर भी SE0 (दोनों लाइनें कम) हैं। तो सिंक अनुक्रम और ईओपी उलटा होने पर गलत हो जाएगा। USB 1.x में, यदि D + और D- की अदला-बदली की जाती है, तो एक पूर्ण-बैंडविड्थ उपकरणों को कम-बैंडविड्थ और इसके विपरीत के रूप में पहचाना जाता है। तो डिवाइस मेजबान के समान गति पर भी संचार नहीं करेगा।
एक USB पैकेट का अंत, जिसे EOP (एंड-ऑफ-पैकेट) कहा जाता है, ट्रांसमीटर द्वारा SE0 के 2 बिट बार (D + और D− दोनों अधिकतम से नीचे) और J स्टेट के 1 बिट समय को इंगित करता है। इसके बाद, ट्रांसमीटर D + / D and लाइनों को चलाने के लिए बंद हो जाता है और ऊपर खींचे गए प्रतिरोधों को जम्मू (निष्क्रिय) स्थिति में पकड़ लेता है।
D + / D- स्वैप किए गए ड्राइवर के साथ, होस्ट सही (SE0, SE0, J) के बजाय अनुक्रम (SE0, SE0, K) को देखेगा। मेजबान फिर पैकेट के अंत को पहचानने में विफल हो सकता है, जिससे समस्याएं पैदा होंगी।
यदि डिवाइस और होस्ट USB विनिर्देशों का कड़ाई से पालन करते हैं, तो D + और D- पिन को स्वैप करने से विफलता होगी। इसकी बोधगम्यता यह है कि मेजबान के डिजाइनर ने इस तरह के एक विफलता मोड का निर्माण किया, और इसके लिए अनुकूलता का निर्माण किया। लेकिन इस तरह की अदला-बदली केबल व्यवहार में कार्यात्मक होगी या नहीं, यह निश्चित रूप से विनिर्देशों का पालन नहीं करेगा।
एक अन्य सदस्य, एंड्रयू कोहल्स्मिथ ने इसका अनुभव किया जब एक यूएसबी हब के पिनों को गलती से स्वैप किया गया था। समस्या खुद को कनेक्टेड डिवाइस के रूप में प्रकट होती है जो दिखाई नहीं दे रही है। यूएसबी डिवाइस यह दिखाएगा कि यह संचालित था लेकिन इसे हब के ऊपर की तरफ कंप्यूटर द्वारा मान्यता प्राप्त नहीं था (जो होस्ट को सही ढंग से वायर्ड किया गया था)।
संपादित करें: टिप्पणी करने वालों को धन्यवाद। मैंने आपके उपयोगी नोट्स से जोर और विवरण जोड़ा।
मैंने देखा है कि उपकरणों को केवल d + और d- स्वैप किए जाने पर कम गति के रूप में बातचीत करते हैं। यह एक पूर्ण गति (12mbps) डिवाइस और एक VIA चिपसेट आधारित पोर्ट के साथ था।