تولزبازار
پیام‌های Vendor Defined در USB PD؛ شناسایی محصول و کابل، Discover Identity و مدیریت Alternate Mode
1405/05/24 8 دقیقه مطالعه

پیام‌های Vendor Defined در USB PD؛ شناسایی محصول و کابل، Discover Identity و مدیریت Alternate Mode

مجموعه مرجع تخصصی USB Power Delivery - مقاله ۱۱ از ۵۲

پیام‌های 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 عرضه یا مصرف می‌شوند اثر بگذارد، اما خود آن قرارداد توان را نمی‌سازد.

1–7 Data Objects

VDM Header همیشه اول است

چه پیام Structured باشد و چه Unstructured، نخستین Object چهار بایتی VDM Header است.

VID / SID

فضای نام یکتا

شناسه ۱۶ بیتی، مالک تعریف Command و محتوای VDO را مشخص می‌کند.

Identity → SVIDs → Modes

کشف قبل از ورود

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 را در اختیار می‌گذارد.

نمودار ساختار Vendor Defined Message شامل Header، VDM Header و صفر تا شش VDO
Figure 6.15 — Vendor Defined Message
قالب 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 چه تفاوتی دارند؟

Unstructured VDM — VDM Type = 0

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 برمی‌گرداند.

Structured VDM — VDM Type = 1

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..16B15B14..0کاربرد اصلی
UnstructuredVID0تعریف سازندهداده اختصاصی داخل Active Mode
StructuredSVID1Version، Position، Type و CommandDiscovery و مدیریت Mode

Structured VDM Header؛ نقشه بیت‌ها

بیت‌هافیلدتفسیر
B31..16SVIDSID استاندارد یا VID سازنده که USB-IF تخصیص داده است.
B15VDM Typeبرای Structured VDM برابر ۱ است.
B14..13Major Version01b برای Version 2.x؛ Version 1.0 منسوخ است و نباید استفاده شود.
B12..11Minor Version00b برای 2.0 و 01b برای 2.1 در Commandهای 0 تا 15.
B10..8Object PositionIndex یک تا شش برای Mode؛ 111b فقط در Exit Mode برای خروج از همه Active Modeها.
B7..6Command Type00b=REQ، 01b=ACK، 10b=NAK، 11b=BUSY.
B5Reservedصفر نوشته می‌شود و گیرنده آن را نادیده می‌گیرد.
B4..0Command1 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 ندارد.

CommandSVIDSOPپاسخ مجازکارکرد
Discover IdentityPD SIDSOP / SOP’ACK / NAK / BUSYهویت و Product Type
Discover SVIDsPD SIDSOP / SOP’ACK / NAK / BUSYفهرست استانداردها و سازندگان Mode
Discover ModesSVID هدفSOP / SOP’ACK / NAK / BUSYModeهای همان SVID
Enter ModeSVID هدفSOP*ACK / NAKفعال‌کردن Mode منتخب
Exit ModeSVID هدفSOP*ACK / NAKخروج از یک یا همه Modeها
AttentionSVID هدفSOP*بدون پاسخ Commandاعلام نیاز به سرویس
GoodCRC ≠ ACK

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 آن‌ها ۱ باقی می‌ماند.

ساختار پاسخ Discover Identity شامل ID Header، Cert Stat، Product و Product Type VDOها
Figure 6.16 — Discover Identity Command response
ترتیب VDM Header، ID Header، Cert Stat، Product و Product Type VDOها.
ساختار پاسخ Discover Identity برای محصول DRD شامل UFP VDO، Pad و DFP VDO
Figure 6.17 — Discover Identity response for a DRD
ترتیب UFP VDO، Pad صفر ۳۲ بیتی و DFP VDO در محصول Dual-Role Data.

زنجیره VDOهای هویت چه اطلاعاتی می‌دهد؟

ID Header 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 + Product VDO

Cert Stat یک XID سی‌ودوبیتی تخصیص‌یافته توسط USB-IF دارد. Product VDO شامل USB Product ID در B31..16 و bcdDevice در B15..0 است. کنار VID، این دو Object هویت سازنده، محصول و نسخه عرضه را قابل‌گزارش می‌کنند.

UFP VDO

برای 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 خوانده می‌شود.

DFP VDO

برای 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 / PeripheralSOP UFPUFP VDODevice Capability و Alternate Modes
PDUSB Host / Hub / Power BrickSOP DFPDFP VDOHost Capability و Port Number
Passive CableSOP’ = 011bPassive Cable VDOEPR، جریان، ولتاژ و سرعت
Active CableSOP’ = 100bActive Cable VDO1 + VDO2ساختار فعال، دما، Lane و USB4
VCONN Powered USB DeviceSOP’ = 110bVPD VDOCharge 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 را پوشش می‌دهد.

بخش اول جدول Passive Cable VDO شامل نسخه سخت‌افزار، Firmware، EPR و Cable Latency ادامه جدول Passive Cable VDO شامل جریان 3A یا 5A و بالاترین سرعت USB
Table 6.41 — Passive Cable VDO
HW/FW، EPR، Latency، VCONN، Maximum VBUS، 3A/5A و USB Highest Speed.
EPR = 1

تا 48V / 5A طراحی شده

این بیت Static است و صرفاً با ادعای Source یا Sink جایگزین نمی‌شود.

Current = 3A / 5A

سقف عبور VBUS

مقدار Reserved نباید به‌عنوان جریان نامحدود تفسیر شود.

USB2 → USB4 Gen4

بالاترین سرعت

قابلیت توان بالا لزوماً به معنی سرعت داده بالا نیست.

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.

بخش اول جدول Active Cable VDO1 شامل نسخه، EPR، Latency و نوع Termination ادامه جدول Active Cable VDO1 شامل SBU، مسیر VBUS، جریان و سرعت USB
Table 6.42 — Active Cable VDO1
بخش ولتاژ، جریان، EPR، SBU، VBUS و سرعت.
بخش اول جدول Active Cable VDO2 شامل دمای کاری، دمای Shutdown و توان U3 یا CLd ادامه جدول Active Cable VDO2 شامل اتصال مسی یا نوری، Re-driver یا Re-timer، USB4 و Laneها
Table 6.43 — Active Cable VDO2
بخش دما، مصرف، ساختار فعال، 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 و صفر هستند.

جدول VPD VDO شامل Maximum VBUS، Charge Through، Current Support و امپدانس VBUS و Ground
Table 6.44 — VPD VDO
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ها را از ابتدا آغاز می‌کند.

نمونه پاسخ Discover SVIDs با سه SVID و مقدار پایان صفر
3 SVIDs
سه SVID و یک 0x0000.
نمونه پاسخ Discover SVIDs با چهار SVID و VDO پایان صفر
4 SVIDs
چهار SVID و VDO صفر اضافی.
نمونه پاسخ Discover SVIDs با دوازده SVID و پاسخ پایان خالی
12 SVIDs
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 این فهرست است.

نمونه پاسخ Discover Modes برای یک SVID با سه Mode
Figure 6.21 — Discover Modes response with 3 Modes
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 آغاز می‌شود.

توالی موفق Enter Mode بین DFP Initiator و UFP Responder
Successful Enter Mode
Responder پیش از ACK و Initiator پس از ACK وارد Mode می‌شوند.
توالی ناموفق Enter Mode هنگام دریافت پاسخ NAK
Enter Mode with NAK
هیچ‌کدام وارد 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؛ خروج کنترل‌شده و درخواست سرویس

Exit Mode

فقط DFP آن را آغاز می‌کند. Position باید به Mode فعالی اشاره کند که قبلاً با Enter Mode وارد شده است. 111b یعنی خروج از همه Active Modeها. درخواست و پاسخ NDO=1 دارند، VDO اضافی ندارند و BUSY مجاز نیست.

Responder پیش از پاسخ از Mode خارج می‌شود و Initiator با دریافت ACK خارج می‌شود. اگر ACK تا tVDMWaitModeExit نرسد یا NAK/BUSY دریافت شود، Initiator باز هم باید Active Mode را ترک کند.

Attention

برای اعلام نیاز به سرویس در یک Active Mode استفاده می‌شود. Position باید یک Mode فعال باشد و 000b یا 111b مجاز نیست. پیام می‌تواند بدون VDO یا با یک VDO تعریف‌شده توسط Mode ارسال شود.

Attention پاسخ Command ندارد؛ دریافت GoodCRC پایان Command است. بنابراین انتظار ACK، NAK یا BUSY پس از Attention یک خطای Decoder و State Machine محسوب می‌شود.

توالی Exit Mode و بازگشت Initiator و Responder به USB Operation
Figure 6.24 — Exit Mode sequence
ترتیب خروج Responder و سپس Initiator.
توالی Attention Command و پاسخ GoodCRC بدون Command Response
Figure 6.25 — Attention sequence
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 بازمی‌گردد.

توالی Command Request، GoodCRC، Command Response و GoodCRC نهایی
Figure 6.26 — Command request/response sequence
Request، GoodCRC، Command response و GoodCRC نهایی.

ACK

SVID و Command شناخته شده و همین حالا پردازش شده است.

NAK

SVID یا Command ناشناخته، پشتیبانی‌نشده یا دارای پارامتر/VDO نامعتبر است.

BUSY

Command شناخته شده ولی فعلاً قابل پردازش نیست؛ تکرار پس از tVDMBusy ممکن است.

فرآیند کامل Discovery، Enter و Exit

  1. ۱. قرارداد PD برقرار می‌شود.

    VDMهای عادی پس از Explicit Contract اجرا می‌شوند؛ شناسایی Cable Plug استثنای مشخص دارد.

  2. ۲. Identity بررسی می‌شود.

    VID/PID/XID، Product Type و قابلیت‌های Port، کابل یا VPD استخراج می‌شوند.

  3. ۳. فهرست SVIDها دریافت می‌شود.

    Initiator فقط SVIDهای مشترک و قابل‌استفاده را برای مرحله بعد نگه می‌دارد.

  4. ۴. Modeهای هر SVID کشف می‌شوند.

    هر Mode یک VDO و Position مشخص در فهرست دارد.

  5. ۵. DFP Mode مناسب را وارد می‌کند.

    Pinها در Safe State قرار می‌گیرند و فقط ACK ورود موفق را قطعی می‌کند.

  6. ۶. دو طرف در Active Mode کار می‌کنند.

    Attention و Commandهای SVID-specific در همین زمینه معنا پیدا می‌کنند.

  7. ۷. Mode به‌شکل Managed یا Unmanaged پایان می‌یابد.

    Exit Mode پایان کنترل‌شده است؛ Hard Reset، Detach یا Error Recovery پایان مدیریت‌نشده ایجاد می‌کنند.

فرآیند کامل Discover SVIDs، Discover Modes، Enter Mode و Exit Mode
Figure 6.27 — Enter/Exit Mode Process
جریان کامل Discover SVIDs، Discover Modes، Enter Mode، کار در Mode و بازگشت به USB.

VDM نباید AMSهای عادی PD را مختل کند

زمان‌بندی و قرارگرفتن Structured و Unstructured VDM بین پیام‌های عادی باید به‌گونه‌ای باشد که AMSهای PD را به‌هم نزند. VDM یک مسیر توسعه است، نه مجوز قطع توالی‌های حیاتی مذاکره و انتقال توان.

روش عملی Decode و اعتبارسنجی VDM

  1. ۱. SOP Type و وضعیت Contract را ثبت کنید.

    SOP برای Port Partner و SOP’/SOP’’ برای Cable Plug است. VDM پیش از Explicit Contract فقط در استثنای Discover Identity کابل معتبر است.

  2. ۲. B15 را پیش از Decode بیت‌های پایین بخوانید.

    اگر صفر باشد B14..0 Vendor-defined است؛ اگر یک باشد Structured Header اعمال می‌شود.

  3. ۳. SVID، Version و Command Type را Resolve کنید.

    REQ را از ACK/NAK/BUSY جدا کنید و تطبیق SVID پاسخ با درخواست را بررسی کنید.

  4. ۴. پاسخ Identity را با Product Type تطبیق دهید.

    وجود UFP، DFP، Passive Cable، Active Cable یا VPD VDO باید با ID Header سازگار باشد.

  5. ۵. کابل را از نظر توان و داده جدا ارزیابی کنید.

    EPR، Maximum VBUS، 3A/5A، سرعت، مسیر VBUS، SBU و Active Element هرکدام محدودیت مستقلی می‌سازند.

  6. ۶. فهرست‌های SVID و Mode را Stateful نگه دارید.

    Position فقط در زمینه آخرین Discover Modes همان SVID معنا دارد.

  7. ۷. GoodCRC را از نتیجه Command جدا کنید.

    تحویل Packet موفق ممکن است با NAK یا BUSY ادامه پیدا کند و Attention اصلاً پاسخ Command ندارد.

  8. ۸. تغییر 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 و صفحات ۱۹۶ تا ۲۱۴ بررسی می‌کند.

منبع

USB Power Delivery Specification, Revision 3.2, Version 1.1

دیدگاه‌ها (0)

برای ثبت دیدگاه لازم است

هنوز دیدگاهی برای این مقاله ثبت نشده است.