پیامهای Vendor Defined در USB PD؛ شناسایی محصول و کابل، Discover Identity و مدیریت Alternate Mode
در مقاله یازدهم، ساختار VDM را از Header تا VDOها باز میکنیم، تفاوت Structured و Unstructured را میبینیم، پاسخ Discover Identity را برای Port، کابل Passive، کابل Active و VPD تحلیل میکنیم و سپس مسیر Discover SVIDs، Discover Modes، Enter Mode، Exit Mode و Attention را مرحلهبهمرحله دنبال میکنیم.
دامنه و منبع این مقاله
این مقاله فقط بر Section 6.4.4، صفحات ۱۶۲ تا ۱۹۵ سند USB Power Delivery Specification, Revision 3.2, Version 1.1, 2024-10 استوار است. پیامهای دادهای Battery، Alert، Country، Enter_USB، EPR و Source_Info از Section 6.4.5 آغاز میشوند و برای مقاله ۱۲ محفوظ ماندهاند.
VDM؛ مسیر توسعه USB PD بدون دستزدن به مذاکره مستقیم توان
VDM فضای استاندارد یا سازنده را برای شناسایی، کشف قابلیت و فعالکردن Modeها فراهم میکند، اما جای Source_Capabilities و Request را نمیگیرد.
Vendor_Defined Message برای تبادل اطلاعاتی تعریف شده که در قالب پیامهای عمومی USB PD قرار نمیگیرد. هر VDM دستکم یک VDO دارد که همان VDM Header است و میتواند حداکثر شش VDO دیگر پس از آن حمل کند. بنابراین Number of Data Objects در Message Header از ۱ تا ۷ است.
برای جلوگیری از تداخل میان استانداردها و سازندگان، همه VDMها باید یک Standard or Vendor ID معتبر داشته باشند که USB-IF آن را تخصیص داده است. همین SVID مشخص میکند Command و VDOهای بعدی متعلق به کدام استاندارد یا سازندهاند. وجود SVID معتبر بهتنهایی تضمین نمیکند Responder آن Command یا Mode را پشتیبانی میکند؛ نتیجه واقعی با ACK، NAK یا BUSY مشخص میشود.
VDM برای مذاکره مستقیم توان مجاز نیست. یک سازنده نمیتواند بهجای Source_Capabilities، Request یا پیامهای EPR از VDM برای تعیین ولتاژ و جریان قرارداد استفاده کند. VDM میتواند Local Policy را تغییر دهد و در نتیجه روی گزینههایی که بعداً با پیامهای عادی PD عرضه یا مصرف میشوند اثر بگذارد، اما خود آن قرارداد توان را نمیسازد.
VDM Header همیشه اول است
چه پیام Structured باشد و چه Unstructured، نخستین Object چهار بایتی VDM Header است.
فضای نام یکتا
شناسه ۱۶ بیتی، مالک تعریف Command و محتوای VDO را مشخص میکند.
کشف قبل از ورود
DFP ابتدا قابلیتها را میشناسد و فقط بعد از Discovery میتواند Mode مناسب را فعال کند.
ساختار کلی Vendor Defined Message
Message Header تعداد Objectها را اعلام میکند. نخستین Object همان VDM Header است و صفر تا شش VDO پس از آن میآید. VDM Header علاوه بر SVID، نوع Structured یا Unstructured بودن پیام را تعیین میکند و در حالت Structured فضای Version، Object Position، Command Type و Command را در اختیار میگذارد.
قالب Header، VDM Header و صفر تا شش Vendor Data Object.
استثنای مهم پیش از Explicit Contract
اصل کلی این است که Structured و Unstructured VDM پس از ایجاد Explicit Contract ارسال و دریافت شوند. استثنا، Discover Identity برای Cable Plug است: Source میتواند در Default یا Implicit Contract و با SOP’ هویت و توانایی کابل را بررسی کند. این استثنا برای دانستن محدودیت جریان، ولتاژ و EPR کابل پیش از مذاکره توان اهمیت دارد.
Unstructured و Structured VDM چه تفاوتی دارند؟
B31..16 همان VID سازنده است و B14..0 کاملاً در اختیار همان سازنده قرار دارد. استاندارد برای این ۱۵ بیت ساختار عمومی تعریف نمیکند. فقط DFP میتواند Initiator باشد و UFP یا Cable Plug پاسخدهندهاند. این پیامها فقط در Modal Operation و پس از ACKشدن Enter Mode استفاده میشوند و SVID آنها باید با Active Mode یکسان باشد.
اگر Hard Reset رخ دهد، Port Partner و Cable Plug باید از هر حالتی که با Unstructured VDM وارد آن شدهاند خارج شوند. دستگاهی که Unstructured VDM یا VID را نمیشناسد، Not_Supported برمیگرداند.
B14..0 ساختار مشخصی دارد و Commandهای عمومی برای Discover Identity، Discover SVIDs، Discover Modes، Enter Mode، Exit Mode و Attention در آن تعریف شدهاند. هر Port میتواند بیشتر Structured VDMها را آغاز کند، اما Enter Mode و Exit Mode فقط از طرف DFP آغاز میشوند.
Cable Plug فقط Responder است. Portی که Structured VDM را پشتیبانی نمیکند Not_Supported میفرستد؛ Cable Plug فاقد این پشتیبانی پیام را نادیده میگیرد. اگر Structured VDM پشتیبانی شود ولی SVID شناخته نشود، پاسخ NAK است.
| نوع | B31..16 | B15 | B14..0 | کاربرد اصلی |
|---|---|---|---|---|
| Unstructured | VID | 0 | تعریف سازنده | داده اختصاصی داخل Active Mode |
| Structured | SVID | 1 | Version، Position، Type و Command | Discovery و مدیریت Mode |
Structured VDM Header؛ نقشه بیتها
| بیتها | فیلد | تفسیر |
|---|---|---|
| B31..16 | SVID | SID استاندارد یا VID سازنده که USB-IF تخصیص داده است. |
| B15 | VDM Type | برای Structured VDM برابر ۱ است. |
| B14..13 | Major Version | 01b برای Version 2.x؛ Version 1.0 منسوخ است و نباید استفاده شود. |
| B12..11 | Minor Version | 00b برای 2.0 و 01b برای 2.1 در Commandهای 0 تا 15. |
| B10..8 | Object Position | Index یک تا شش برای Mode؛ 111b فقط در Exit Mode برای خروج از همه Active Modeها. |
| B7..6 | Command Type | 00b=REQ، 01b=ACK، 10b=NAK، 11b=BUSY. |
| B5 | Reserved | صفر نوشته میشود و گیرنده آن را نادیده میگیرد. |
| B4..0 | Command | 1 Identity، 2 SVIDs، 3 Modes، 4 Enter، 5 Exit، 6 Attention؛ 16 تا 31 مخصوص SVID. |
مذاکره Version چگونه انجام میشود؟
اگر گیرنده Version بالاتری از توان خود ببیند، با بالاترین Version پشتیبانیشده پاسخ میدهد. اگر Version دریافتی پایینتر باشد، همان Version دریافتی را در پاسخ حفظ میکند. Discover Identity پایینترین Version مشترک را مشخص میکند و دو طرف تا Detach با همان Version کار میکنند.
Object Position شماره Mode است
Discover Modes حداکثر شش Mode VDO برمیگرداند. Position=1 به نخستین VDO پس از Header اشاره میکند، Position=2 به دومین و به همین ترتیب. این Position باید در Enter، Exit و Attention با Mode هدف سازگار بماند.
Commandها، SVID و پاسخهای مجاز
Discover Identity و Discover SVIDs فقط با PD SID یعنی 0xFF00 اجرا میشوند. Discover Modes، Enter Mode، Exit Mode و Attention برای SVID هدف معتبرند. Discover Identity، Discover SVIDs و Discover Modes میتوانند ACK، NAK یا BUSY بگیرند؛ Enter و Exit فقط ACK یا NAK دارند و Attention پاسخ Command ندارد.
| Command | SVID | SOP | پاسخ مجاز | کارکرد |
|---|---|---|---|---|
| Discover Identity | PD SID | SOP / SOP’ | ACK / NAK / BUSY | هویت و Product Type |
| Discover SVIDs | PD SID | SOP / SOP’ | ACK / NAK / BUSY | فهرست استانداردها و سازندگان Mode |
| Discover Modes | SVID هدف | SOP / SOP’ | ACK / NAK / BUSY | Modeهای همان SVID |
| Enter Mode | SVID هدف | SOP* | ACK / NAK | فعالکردن Mode منتخب |
| Exit Mode | SVID هدف | SOP* | ACK / NAK | خروج از یک یا همه Modeها |
| Attention | SVID هدف | SOP* | بدون پاسخ Command | اعلام نیاز به سرویس |
GoodCRC فقط تحویل صحیح Packet را تأیید میکند. ACK یعنی Command شناخته و اجرا شده، NAK یعنی نامعتبر یا پشتیبانینشده است و BUSY یعنی Command شناخته شده ولی Responder فعلاً آماده نیست. پس Analyzer باید GoodCRC و نتیجه Command را جدا نمایش دهد.
Discover Identity؛ شناسایی Port Partner، کابل و VPD
Discover Identity به Initiator اجازه میدهد Port Partner را شناسایی کند و به VCONN Source امکان میدهد Cable Plug یا VPD را بررسی کند. نبود GoodCRC در پاسخ SOP’ الزاماً خطای Protocol نیست؛ میتواند نشان دهد کابل یا VPD اصلاً PD-Capable نیست. به همین دلیل نبود GoodCRC در این Discovery نباید خودکار Soft Reset ایجاد کند.
ارسال Discover Identity به SOP فقط پس از Explicit Contract مجاز است. برای SOP’، Source میتواند در Startup و پیش از نخستین Explicit Contract نیز کابل را شناسایی کند، اما باید پس از اعمال VCONN تا tVCONNStable صبر کند. کابل یا VPD دارای PD باید درخواست SOP’ را با Discover Identity ACK پاسخ دهد.
درخواست Discover Identity فقط VDM Header دارد، بنابراین NDO برابر ۱ است. پاسخ ACK حداقل ID Header VDO، Cert Stat VDO و Product VDO را برمیگرداند و بر اساس Product Type، یک یا چند Product Type VDO نیز اضافه میشود. NAK و BUSY VDO اضافی ندارند و NDO آنها ۱ باقی میماند.
ترتیب VDM Header، ID Header، Cert Stat، Product و Product Type VDOها.
ترتیب UFP VDO، Pad صفر ۳۲ بیتی و DFP VDO در محصول Dual-Role Data.
زنجیره VDOهای هویت چه اطلاعاتی میدهد؟
توانایی USB Host و Device، Product Type در نقش UFP، نوع Cable Plug یا VPD، پشتیبانی Modal Operation، Product Type در نقش DFP، نوع Connector و USB Vendor ID را اعلام میکند. Product Type تعیین میکند چه Product Type VDOهایی باید بعداً در پاسخ حضور داشته باشند.
Cert Stat یک XID سیودوبیتی تخصیصیافته توسط USB-IF دارد. Product VDO شامل USB Product ID در B31..16 و bcdDevice در B15..0 است. کنار VID، این دو Object هویت سازنده، محصول و نسخه عرضه را قابلگزارش میکنند.
برای PDUSB Peripheral و PDUSB Hub در نقش UFP ارسال میشود. Device Capability برای USB 2.0، USB 3.2 و USB4، نیاز VCONN و VBUS برای عملکرد Mode، نوع Alternate Mode و بالاترین سرعت USB را نشان میدهد. Connector Type قدیمی در این Object منسوخ و صفر است؛ نوع Connector از ID Header خوانده میشود.
برای PDUSB Host، Hub و Power Brick در نقش DFP ارسال میشود. Host Capability توانایی Host در USB 2.0، USB 3.2 و USB4 را نشان میدهد و Port Number یک شناسه ثابت و یکتا برای هر DFP روی دستگاه چندپورتی است؛ این عدد مستقل از شماره USB Port است.
| Product Type | کد یا جایگاه | Product Type VDO | نکته Decoder |
|---|---|---|---|
| PDUSB Hub / Peripheral | SOP UFP | UFP VDO | Device Capability و Alternate Modes |
| PDUSB Host / Hub / Power Brick | SOP DFP | DFP VDO | Host Capability و Port Number |
| Passive Cable | SOP’ = 011b | Passive Cable VDO | EPR، جریان، ولتاژ و سرعت |
| Active Cable | SOP’ = 100b | Active Cable VDO1 + VDO2 | ساختار فعال، دما، Lane و USB4 |
| VCONN Powered USB Device | SOP’ = 110b | VPD VDO | Charge Through و امپدانس مسیر |
Passive Cable VDO؛ محدودیت واقعی کابل در یک Object
کابل Passive مدار شرطیسازی سیگنال SuperSpeed ندارد، باید مسیر VBUS داشته باشد و فقط به SOP’ پاسخ میدهد. این کابل Discover Identity را پشتیبانی میکند و در ACK خود Passive Cable VDO میفرستد. Analyzer نباید فقط VID و PID کابل را گزارش کند؛ مهمترین خروجی عملی، محدودیت توان و دادهای است که در این VDO ثبت شده است.
EPR Capable فقط زمانی یک میشود که کابل مشخصاً برای کار ایمن تا 48V و 5A طراحی شده باشد. Maximum VBUS Voltage کد 00b برای 20V و 11b برای 50V دارد؛ کدهای قدیمی 30V و 40V منسوخاند و باید مانند 20V تفسیر شوند. Current Handling فقط 3A یا 5A را معتبر میداند.
Cable Latency از کمتر از 10ns تا بیشتر از 70ns کدگذاری میشود و تقریب تقریبی طول کابل را فراهم میکند. Termination Type نیز مشخص میکند VCONN فقط برای Discover Identity لازم است یا باید برای تغذیه ویژگی Cable Plug پیوسته برقرار بماند. USB Highest Speed از USB 2.0 تا USB4 Gen4 را پوشش میدهد.
HW/FW، EPR، Latency، VCONN، Maximum VBUS، 3A/5A و USB Highest Speed.
تا 48V / 5A طراحی شده
این بیت Static است و صرفاً با ادعای Source یا Sink جایگزین نمیشود.
سقف عبور VBUS
مقدار Reserved نباید بهعنوان جریان نامحدود تفسیر شود.
بالاترین سرعت
قابلیت توان بالا لزوماً به معنی سرعت داده بالا نیست.
Active Cable VDO1 و VDO2؛ کابل بهعنوان یک سامانه فعال
کابل Active مدار شرطیسازی سیگنال دارد و ممکن است جهتپذیری SuperSpeed داشته باشد. پاسخ به SOP’ و Discover Identity الزامی است و پشتیبانی SOP’’ اختیاری است. ID Header باید Product Type را Active Cable نشان دهد و ACK شامل هر دو Active Cable VDO1 و VDO2 باشد.
VDO1 بخش حمل توان و ساختار کلی را توصیف میکند: HW/FW، نوع انتهای کابل، EPR، Latency شامل تأخیر مدارها، یک یا دو انتهای Active و نیاز VCONN، سقف VBUS، SBU، جریان 3A یا 5A، وجود مسیر end-to-end برای VBUS، حضور SOP’’ Controller و بالاترین سرعت USB.
VDO2 خصوصیات لایه فعال را کامل میکند: Maximum Operating Temperature، Shutdown Temperature، توان U3/CLd، روش Transition از U3 به U0، مسیر Copper یا Optical، Re-driver یا Re-timer، پشتیبانی USB4، تعداد USB 2.0 Hub Hop مصرفشده، پشتیبانی USB 2.0 و USB 3.2، تعداد Lane، Optical Isolation، USB4 Asymmetric Mode و USB Gen.
بخش ولتاژ، جریان، EPR، SBU، VBUS و سرعت.
بخش دما، مصرف، ساختار فعال، Lane و پروتکلهای داده.
دو Flag با منطق صفر = پشتیبانی
در Active Cable VDO2، USB4 Supported، USB 2.0 Supported و USB 3.2 Supported با صفر به معنی پشتیبانی و یک به معنی عدم پشتیبانی کد میشوند. Decoder نباید این بیتها را با منطق رایج Enable=1 تفسیر کند.
VCONN Powered USB Device؛ شناسایی مسیر Charge Through
VPD دستگاهی است که از VCONN تغذیه میشود و در صورت پشتیبانی از Charge Through میتواند در مسیر توان Source تا Sink قرار بگیرد. VPD VDO نسخه HW و FW، سقف VBUS، توانایی جریان 3A یا 5A، امپدانس VBUS و Ground و Flag پشتیبانی Charge Through را حمل میکند.
VBUS Impedance با گام 2mΩ و Ground Impedance با گام 1mΩ گزارش میشوند. Sink باید این مقادیر را هنگام درخواست جریان لحاظ کند تا افت IR روی VBUS از 0.5V و روی Ground از 0.25V عبور نکند، مگر اینکه خود Sink افت بیشتری را تحمل کند. اگر Charge Through پشتیبانی نشود، فیلدهای وابسته Reserved و صفر هستند.
Charge Through، Current Support و امپدانس مسیر VBUS/Ground.
Discover SVIDs؛ فهرستکردن خانوادههای Mode
Discover SVIDs فهرست SVIDهایی را میگیرد که Responder برای آنها دستکم یک Mode دارد. درخواست و پاسخ از PD SID استفاده میکنند و درخواست فقط VDM Header دارد. هر VDO پاسخ دو SVID شانزدهبیتی حمل میکند.
فهرست همیشه با 0x0000 خاتمه پیدا میکند. اگر تعداد SVIDها فرد باشد، نیمه دوم آخرین VDO صفر است. اگر تعداد زوج باشد، یک VDO اضافی با دو مقدار صفر فرستاده میشود. Responder بدون هیچ SVID باید NAK بدهد و نباید SVIDی را اعلام کند که Discover Modes برای آن هیچ Mode برنمیگرداند.
هر ACK حداکثر ۱۲ SVID واقعی دارد. اگر تعداد SVIDها ۱۲ یا بیشتر باشد، Initiator Discover SVIDs را تکرار میکند تا پیام خاتمهدهنده حاوی صفر برسد. با هر Discover Identity جدید، Responder فهرست SVIDها را از ابتدا آغاز میکند.

سه SVID و یک 0x0000.

چهار SVID و VDO صفر اضافی.

ACK کامل و درخواست بعدی برای خاتمه.
Discover Modes؛ تبدیل SVID به فهرست Modeها
پس از یافتن SVID مشترک، Initiator برای همان SVID درخواست Discover Modes میفرستد. درخواست VDO اضافی ندارد و NDO برابر ۱ است. ACK یک تا شش Mode VDO پس از Header دارد، بنابراین NDO پاسخ از ۲ تا ۷ است. اگر SVID یک VID باشد، سازنده ساختار Mode VDO را تعریف میکند؛ اگر SID باشد، استاندارد مربوط ساختار را تعیین میکند.
Responder بدون Mode باید NAK بدهد. ترتیب Mode VDOها اهمیت مستقیم دارد، زیرا Object Position در Enter Mode، Exit Mode و Attention همان Index این فهرست است.
Header، VDM Header و سه Mode VDO با Positionهای ۱ تا ۳.
Enter Mode؛ لحظه تغییر از USB Operation به Alternate Mode
فقط DFP میتواند Enter Mode را پس از تکمیل Discovery آغاز کند. Object Position باید Mode موردنظر در پاسخ Discover Modes را مشخص کند. درخواست NDO=1 یا 2 دارد و حداکثر یک VDO اختصاصی Mode میتواند همراه آن باشد؛ پاسخ ACK یا NAK فقط Header دارد و BUSY مجاز نیست.
اگر ورود به Mode نیازمند تغییر کارکرد Pinها باشد، Initiator پیش از ارسال Enter Mode آن Pinها را در USB Safe State قرار میدهد. Responder نیز پیش از ورود باید Pinهای مرتبط را در USB Operation یا USB Safe State داشته باشد. این مرحله مانع تغییر ناگهانی سیگنال روی مسیر فعال USB میشود.
Responder در پاسخ ACK، پیش از فرستادن ACK وارد Mode میشود. Initiator پس از دریافت ACK وارد Mode میشود. اگر NAK برسد یا تا tVDMWaitModeEntry پاسخی دریافت نشود، Initiator وارد Mode نمیشود و به USB Operation بازمیگردد. یک دستگاه میتواند چند Active Mode داشته باشد و Modal Operation از ورود به نخستین Mode آغاز میشود.

Responder پیش از ACK و Initiator پس از ACK وارد Mode میشوند.

هیچکدام وارد Mode نمیشوند و USB Operation حفظ میشود.
در Modal Operation، DR_Swap ممنوع است
تا زمانی که Port Partnerها در Modal Operation هستند، DR_Swap نباید بین آنها ارسال شود. پایان Active Mode با Exit Mode موفق، Hard Reset، Error Recovery، Detach یا Resetهای مربوط به کابل انجام میشود.
Exit Mode و Attention؛ خروج کنترلشده و درخواست سرویس
فقط DFP آن را آغاز میکند. Position باید به Mode فعالی اشاره کند که قبلاً با Enter Mode وارد شده است. 111b یعنی خروج از همه Active Modeها. درخواست و پاسخ NDO=1 دارند، VDO اضافی ندارند و BUSY مجاز نیست.
Responder پیش از پاسخ از Mode خارج میشود و Initiator با دریافت ACK خارج میشود. اگر ACK تا tVDMWaitModeExit نرسد یا NAK/BUSY دریافت شود، Initiator باز هم باید Active Mode را ترک کند.
برای اعلام نیاز به سرویس در یک Active Mode استفاده میشود. Position باید یک Mode فعال باشد و 000b یا 111b مجاز نیست. پیام میتواند بدون VDO یا با یک VDO تعریفشده توسط Mode ارسال شود.
Attention پاسخ Command ندارد؛ دریافت GoodCRC پایان Command است. بنابراین انتظار ACK، NAK یا BUSY پس از Attention یک خطای Decoder و State Machine محسوب میشود.

ترتیب خروج Responder و سپس Initiator.

Attention و GoodCRC بدون Command response.
Command Process؛ تحویل Packet با تکمیل Command فرق دارد
در Commandهای معمول Structured VDM، Initiator درخواست را میفرستد، Responder GoodCRC میدهد، سپس ACK/NAK/BUSY را ارسال میکند و Initiator برای پاسخ GoodCRC میفرستد. Command زمانی کامل میشود که GoodCRC پاسخ Command با موفقیت به Responder برسد.
Responder باید Enter Mode را در tVDMEnterMode، Exit Mode را در tVDMExitMode و درخواستهای دیگر را در tVDMReceiverResponse کامل کند. Initiator نیز با tVDMWaitModeEntry، tVDMWaitModeExit یا tVDMSenderResponse Timeout را تشخیص میدهد و به PE_SRC_Ready یا PE_SNK_Ready بازمیگردد.
Request، GoodCRC، Command response و GoodCRC نهایی.
ACK
SVID و Command شناخته شده و همین حالا پردازش شده است.
NAK
SVID یا Command ناشناخته، پشتیبانینشده یا دارای پارامتر/VDO نامعتبر است.
BUSY
Command شناخته شده ولی فعلاً قابل پردازش نیست؛ تکرار پس از tVDMBusy ممکن است.
فرآیند کامل Discovery، Enter و Exit
- ۱. قرارداد PD برقرار میشود.
VDMهای عادی پس از Explicit Contract اجرا میشوند؛ شناسایی Cable Plug استثنای مشخص دارد.
- ۲. Identity بررسی میشود.
VID/PID/XID، Product Type و قابلیتهای Port، کابل یا VPD استخراج میشوند.
- ۳. فهرست SVIDها دریافت میشود.
Initiator فقط SVIDهای مشترک و قابلاستفاده را برای مرحله بعد نگه میدارد.
- ۴. Modeهای هر SVID کشف میشوند.
هر Mode یک VDO و Position مشخص در فهرست دارد.
- ۵. DFP Mode مناسب را وارد میکند.
Pinها در Safe State قرار میگیرند و فقط ACK ورود موفق را قطعی میکند.
- ۶. دو طرف در Active Mode کار میکنند.
Attention و Commandهای SVID-specific در همین زمینه معنا پیدا میکنند.
- ۷. Mode بهشکل Managed یا Unmanaged پایان مییابد.
Exit Mode پایان کنترلشده است؛ Hard Reset، Detach یا Error Recovery پایان مدیریتنشده ایجاد میکنند.
جریان کامل Discover SVIDs، Discover Modes، Enter Mode، کار در Mode و بازگشت به USB.
VDM نباید AMSهای عادی PD را مختل کند
زمانبندی و قرارگرفتن Structured و Unstructured VDM بین پیامهای عادی باید بهگونهای باشد که AMSهای PD را بههم نزند. VDM یک مسیر توسعه است، نه مجوز قطع توالیهای حیاتی مذاکره و انتقال توان.
روش عملی Decode و اعتبارسنجی VDM
- ۱. SOP Type و وضعیت Contract را ثبت کنید.
SOP برای Port Partner و SOP’/SOP’’ برای Cable Plug است. VDM پیش از Explicit Contract فقط در استثنای Discover Identity کابل معتبر است.
- ۲. B15 را پیش از Decode بیتهای پایین بخوانید.
اگر صفر باشد B14..0 Vendor-defined است؛ اگر یک باشد Structured Header اعمال میشود.
- ۳. SVID، Version و Command Type را Resolve کنید.
REQ را از ACK/NAK/BUSY جدا کنید و تطبیق SVID پاسخ با درخواست را بررسی کنید.
- ۴. پاسخ Identity را با Product Type تطبیق دهید.
وجود UFP، DFP، Passive Cable، Active Cable یا VPD VDO باید با ID Header سازگار باشد.
- ۵. کابل را از نظر توان و داده جدا ارزیابی کنید.
EPR، Maximum VBUS، 3A/5A، سرعت، مسیر VBUS، SBU و Active Element هرکدام محدودیت مستقلی میسازند.
- ۶. فهرستهای SVID و Mode را Stateful نگه دارید.
Position فقط در زمینه آخرین Discover Modes همان SVID معنا دارد.
- ۷. GoodCRC را از نتیجه Command جدا کنید.
تحویل Packet موفق ممکن است با NAK یا BUSY ادامه پیدا کند و Attention اصلاً پاسخ Command ندارد.
- ۸. تغییر State را در لحظه درست ثبت کنید.
در Enter، Responder قبل از ACK و Initiator بعد از ACK وارد Mode میشوند؛ در Exit ترتیب مشابه برای خروج اجرا میشود.
اشتباههای رایج در VDM و شناسایی کابل
VDM بهجای مذاکره توان: VDM قرارداد ولتاژ و جریان نمیسازد و فقط میتواند Local Policy را تحتتأثیر قرار دهد.
ارسال زودهنگام VDM: بهجز Discover Identity کابل، VDM پیش از Explicit Contract معتبر نیست.
تفسیر B14..0 بدون B15: Structured و Unstructured Header نقشه بیت متفاوت دارند.
GoodCRC بهعنوان ACK: GoodCRC فقط دریافت صحیح Packet است و نتیجه Command نیست.
انتظار BUSY برای Enter/Exit: این دو Command فقط ACK یا NAK دارند.
انتظار پاسخ برای Attention: پایان Attention با GoodCRC است و پاسخ Command ارسال نمیشود.
Position بدون Discover Modes: Object Position شماره ثابت یک قابلیت نیست و فقط Index آخرین فهرست Mode همان SVID است.
۵ آمپر بدون Cable Identity: جریان و EPR باید از Cable VDO معتبر خوانده شوند، نه از توان Advertiseشده شارژر.
توان بالا مساوی سرعت بالا: Current Handling و USB Highest Speed فیلدهای مستقلاند.
Active Cable با یک VDO: پاسخ Active Cable باید VDO1 و VDO2 را هر دو داشته باشد.
منطق Enable=1 برای همه Flagها: چند Flag پشتیبانی در Active Cable VDO2 با صفر فعال هستند.
خروج نامشخص از Mode: Exit Mode، Hard Reset، Error Recovery و Detach اثرهای مشخص و زمانبندی جدا دارند.
جمعبندی مقاله ۱۱
هر VDM از VDM Header و حداکثر شش VDO اضافی تشکیل میشود و SVID معتبر، مالک تعریف پیام را مشخص میکند.
Unstructured VDM محتوای اختصاصی سازنده را در Active Mode حمل میکند؛ Structured VDM قالب مشترک Discovery و مدیریت Mode را فراهم میسازد.
Discover Identity زنجیره ID Header، Cert Stat، Product و Product Type VDOها را برمیگرداند و از روی آن میتوان Port، Passive Cable، Active Cable و VPD را شناسایی کرد.
Passive و Active Cable VDOها محدودیت EPR، ولتاژ، جریان و سرعت را اعلام میکنند؛ کابل Active علاوه بر آن ساختار فعال، دما، Lane، USB4 و نوع اتصال را توصیف میکند.
Discovery با SVIDها و Modeهای مشترک ادامه پیدا میکند؛ DFP با Object Position وارد Mode میشود، Attention سرویس میخواهد و Exit Mode بازگشت کنترلشده به USB را انجام میدهد.
GoodCRC فقط تحویل Packet را میگوید؛ ACK، NAK و BUSY نتیجه منطقی Command را تعیین میکنند و Attention پاسخ Command ندارد.
در مقاله بعدی
مقاله ۱۲ پیامهای دادهای Battery، Alert، Country، Enter_USB، EPR و Source_Info را در Sections 6.4.5 تا 6.4.12 و صفحات ۱۹۶ تا ۲۱۴ بررسی میکند.