USB में कई परतें हैं, जो USB 2.0 विनिर्देश में वर्णित हैं । यदि आप OSI स्तरित नेटवर्क मॉडल से परिचित हैं, तो आप इस तरह से सोच सकते हैं:
- सत्र परत = अध्याय 10 USB होस्ट हार्डवेयर और सॉफ़्टवेयर (डिवाइस ड्राइवर)
- ट्रांसपोर्ट लेयर = चैप्टर 9 यूएसबी डिवाइस फ्रेमवर्क
- नेटवर्क परत = अध्याय 8 प्रोटोकॉल परत (बिटस्ट्रीम)
- डेटा लिंक परत = अध्याय 7 इलेक्ट्रिकल (सर्किट)
- भौतिक परत = अध्याय 6 मैकेनिकल (केबल और कनेक्टर)
वैचारिक रूप से USB डेटा की धाराओं पर आधारित है, जिसे एंडपॉइंट्स कहा जाता है , जो या तो IN (होस्ट को) या OUT (होस्ट से) हो सकता है। प्रत्येक डिवाइस में एंडपॉइंट 0 होता है, जिसका उपयोग नियंत्रण और स्थिति के लिए किया जाता है। डिवाइस में एप्लिकेशन डेटा के लिए अतिरिक्त समापन बिंदु हो सकते हैं। प्रत्येक समापन बिंदु एक FIFO बफर की तरह व्यवहार करता है।
डेटा को एक समापन बिंदु पर या तो बल्क (जैसे टीसीपी / आईपी, हर बाइट आता है और सही क्रम में), या Isochronous (जैसे UDP / IP, ताजा होने की गारंटी देता है, लेकिन पैकेट गिरा सकते हैं) के रूप में स्थानांतरित किया जाता है। " इंटरप्ट " स्थानांतरण प्रकार का एक भ्रामक नाम है , जो वास्तव में केवल मेजबान द्वारा प्रदूषित है।
USB 2.0 datalink के लिए एक अंतर जोड़ी का उपयोग करता है। मैं ज्यादा विस्तार में नहीं जाऊँगा क्योंकि यह USB 2.0 युक्ति अध्याय 7 से आच्छादित है। आम तौर पर पीसीबी लेआउट पर हम इसे एक मैच्योर-लेंथ, डिफरेंशियल पेयर के रूप में मानते हैं, और जो भी USB PHY (भौतिक) आवश्यक श्रृंखला प्रतिरोधों में डालते हैं इंटरफ़ेस) का उपयोग किया जा रहा है। USB परिधीय D + या D- लाइनों में से एक पर उच्च मान अवरोधक का उपयोग करता है ताकि मेजबान को सूचित किया जा सके कि यह एक उच्च गति या कम गति वाला परिधीय है।
जैसे ही USB होस्ट को पता चलता है कि डिवाइस मौजूद है, होस्ट डिवाइस से डिस्क्रिप्टर के एक गुच्छा का अनुरोध करता है। FTDI चिप द्वारा पर्दे के पीछे का ध्यान रखा जाता है। वर्णन 9.5 अध्याय में वर्णित हैं । इनमें डिवाइस डिस्क्रिप्टर , कॉन्फिगरेशन डिस्क्रिप्टर , इंटरफेस डिस्क्रिप्टर्स , एंडपॉइंट डिस्क्रिप्टर्स , स्ट्रिंग डिस्क्रिप्टर्स शामिल हैं , शायद रिपोर्ट डिस्क्रिप्टर्स भी छिपा सकते हैं ।
डिवाइस डिस्क्रिप्टर यूएसबी शामिल VID (विक्रेता पहचान) और पीआईडी (उत्पाद पहचान) नंबर। ऑपरेटिंग सिस्टम VID_PID संख्याओं के इस जोड़े का उपयोग करता है, यह निर्धारित करने के लिए कि इस डिवाइस के लिए किस डिवाइस ड्राइवर का उपयोग किया जाएगा। ध्यान दें कि VID संख्या USB कार्यान्वयन फोरम में सदस्यता के द्वारा जारी की जाती है, इसलिए यदि आप एक व्यक्तिगत आविष्कारक हैं तो यह एक समस्या है।
इसके अतिरिक्त, HID (ह्यूमन इंटरफेस डिवाइस) क्लास ड्राइवर है, जो कीबोर्ड / माउस / आदि के लिए कुछ सामान्य इनपुट प्रदान करता है, साथ ही साथ कोई भी जेनेरिक इनपुट / आउटपुट। HID का एक फायदा यह है कि इसे कस्टम डिवाइस ड्राइवर प्रदान करने की आवश्यकता नहीं होती है, लेकिन कस्टम बल्क ड्राइवर की तुलना में इसका थ्रूपुट कुछ हद तक सीमित होता है। छिपाई के वर्णनकर्ताओं के बारे में एक पूरी अन्य विनिर्देश दस्तावेज है ; और एक छिपाई उपयोग तालिका दस्तावेज़ जो सभी कोड संख्याओं का विवरण देता है जो किसी दिए गए मानव इंटरफेस डिवाइस पर उपलब्ध विभिन्न विशेषताओं का वर्णन करता है।
FTDI चिप जैसे FT220X डेटाशीट USB "सीरियल इंटरफ़ेस इंजन" (SPI धारावाहिक या RS220 सीरियल के साथ भ्रमित नहीं होना) प्रदान करता है। यह अध्याय 6, 7, और 8 में वर्णित निम्न-स्तर के अधिकांश सामान की देखभाल करता है।
एफटीडीआई एक EEPROM (FT2232H पर ऑफचिप, FT22032 पर ऑन-चिप) का उपयोग करता है जिसमें विवरणकर्ताओं में जाने वाली थोड़ी जानकारी होती है। आप VID / PID मानों को कस्टमाइज़ कर सकते हैं, और कस्टम विवरण स्ट्रिंग्स प्रदान कर सकते हैं।