تولزبازار
لایه فیزیکی USB PD؛ کدگذاری 4b5b، Ordered Set و ساختار Packet
1405/05/19 5 دقیقه مطالعه

لایه فیزیکی USB PD؛ کدگذاری 4b5b، Ordered Set و ساختار Packet

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

لایه فیزیکی USB PD؛ کدگذاری Symbol، Ordered Set و ساختار Packet

در مقاله چهارم، پیام USB Power Delivery را تا سطح انتقال واقعی روی لاین CC CC دنبال می‌کنیم: وظایف فرستنده و گیرنده، کدگذاری 4b5b، ترتیب ارسال بیت‌ها، ساختار Preamble / SOP* / Payload / CRC / EOP و تفاوت سیگنال‌های Hard Reset و Cable Reset.

دامنه این مقاله

محتوای این مقاله فقط بر بخش‌های 5.1 تا 5.6 و صفحات ۷۹ تا ۹۰ سند USB Power Delivery Specification, Revision 3.2, Version 1.1, 2024-10 استوار است. مشخصات کامل سیگنال BMC، Collision Avoidance، ویژگی‌های الکتریکی فرستنده و گیرنده و BIST که از بخش 5.7 آغاز می‌شوند، عمداً وارد این مقاله نشده‌اند و در مقالات ۵ و ۶ بررسی خواهند شد.

پیام منطقی چگونه به سیگنال روی لاین CC تبدیل می‌شود؟

لایه Protocol محتوا را تحویل می‌دهد؛ PHY آن محتوا را قاب‌بندی، محافظت، کدگذاری و روی رسانه مشترک ارسال می‌کند.

در مقاله قبل دیدیم Policy Engine تصمیم می‌گیرد چه تبادلی انجام شود و Protocol Layer پیام لازم را می‌سازد. اما Message Header و Data Objectها به‌صورت مستقیم روی کابل قرار نمی‌گیرند. برای اینکه گیرنده بتواند شروع انتقال را تشخیص دهد، ساعت خود را با سیگنال هماهنگ کند، مقصد پیام را بشناسد و خراب‌شدن داده را تشخیص دهد، مجموعه‌ای از اطلاعات فیزیکی باید پیش و پس از Payload افزوده شود. این تبدیل دقیقاً وظیفه Physical Layer یا PHY است.

ارتباط PD میان یک جفت فرستنده و گیرنده روی لاین CC انجام می‌شود و ماهیت آن Half Duplex است؛ یعنی دو طرف نمی‌توانند هم‌زمان روی همان کانال پیام مستقل بفرستند. فرستنده Packet را آماده و منتقل می‌کند و گیرنده در همان رسانه به‌دنبال Preamble، آغاز معتبر Packet و پایان آن می‌گردد. اشاره استاندارد به Collision Avoidance نیز نتیجه همین کانال مشترک است، هرچند قواعد دقیق دسترسی به کانال در مقاله بعدی باز می‌شوند.

PHY فقط یک مبدل بیت به شکل موج نیست. در مسیر ارسال، CRC را محاسبه و به داده اضافه می‌کند، Payload را با 4b5b کدگذاری می‌نماید، نشانه‌های آغاز و پایان را می‌سازد و کل Packet را با BMC روی لاین CC می‌فرستد. در مسیر دریافت، ساعت را از Preamble بازیابی می‌کند، SOP* را تشخیص می‌دهد، داده و CRC را رمزگشایی می‌کند، EOP را می‌یابد و در نهایت اعتبار CRC را می‌سنجد. تنها Packet معتبر به Protocol Layer تحویل می‌شود؛ داده نامعتبر بدون تحویل دور ریخته خواهد شد.

وظایف فرستنده و گیرنده در لایه فیزیکی

مسیر ارسال و دریافت قرینه کامل نیست؛ هر طرف وظایف مشخصی برای آماده‌سازی یا اعتبارسنجی Packet دارد.

Transmitter

از Packet Data تا انتقال BMC

  1. دریافت Packet Data از Protocol Layer.
  2. محاسبه و افزودن CRC به داده.
  3. کدگذاری Packet Data و CRC به‌عنوان Payload.
  4. ساخت Preamble، SOP*، Payload، CRC و EOP.
  5. ارسال کل Packet با BMC روی لاین CC.
Receiver

از قفل ساعت تا پذیرش Packet

  1. بازیابی Clock و قفل‌شدن روی Packet با Preamble.
  2. تشخیص Ordered Set آغازین SOP*.
  3. رمزگشایی داده دریافت‌شده و CRC.
  4. تشخیص EOP و بررسی CRC.
  5. تحویل داده معتبر یا حذف کامل انتقال نامعتبر.
Protocol Packet Data
CRC + 4b5b + Framing
BMC over CC
Decode + Validate

کدگذاری 4b5b؛ تبدیل هر چهار بیت به یک Symbol پنج‌بیتی

به‌جز Preamble، تمام ارتباط روی خط باید با Line Code کدگذاری شود تا DC Balance مناسبی ایجاد شود و تعداد Transitionها برای طراحی گیرنده کافی باشد. USB PD از 4b5b استفاده می‌کند: هر گروه چهار‌بیتی داده به یک Symbol پنج‌بیتی تبدیل می‌شود و در سمت گیرنده هر Symbol پنج‌بیتی دوباره به Nibble چهار‌بیتی بازمی‌گردد. بنابراین یک Byte هشت‌بیتی پس از این مرحله به ده بیت تبدیل می‌شود.

افزایش طول داده هزینه این انتخاب است، اما جدول کد فضای دیگری نیز فراهم می‌کند: همه ۳۲ ترکیب ممکن پنج‌بیتی برای داده استفاده نمی‌شوند. شانزده ترکیب نماینده ارقام هگزادسیمال 0 تا F هستند، چند ترکیب به K-codeهای کنترلی اختصاص دارند و تعدادی نیز Error محسوب می‌شوند و نباید ارسال شوند. K-codeها برای تعیین مرز Packet، آدرس‌دهی SOP* و ساخت Reset Signaling به کار می‌روند؛ در نتیجه گیرنده می‌تواند میان Payload معمولی و نشانه فیزیکی کنترل تمایز بگذارد.

Name 4b 5b Symbol Meaning
0000011110Hex 0
1000101001Hex 1
2001010100Hex 2
3001110101Hex 3
4010001010Hex 4
5010101011Hex 5
6011001110Hex 6
7011101111Hex 7
8100010010Hex 8
9100110011Hex 9
A101010110Hex A
B101110111Hex B
C110011010Hex C
D110111011Hex D
E111011100Hex E
F111111101Hex F
Sync-1K-code11000Start Sync #1
Sync-2K-code10001Start Sync #2
RST-1K-code00111Hard Reset #1
RST-2K-code11001Hard Reset #2
EOPK-code01101End of Packet
Sync-3K-code00110Start Sync #3

ترکیب‌های پنج‌بیتی 00000، 00001، 00010، 00011، 00100، 00101، 01000، 01100، 10000 و 11111 در جدول استاندارد Error هستند و نباید استفاده شوند. مشاهده چنین Symbolی هنگام Decode خطای Packet محسوب می‌شود، نه داده قابل‌تفسیر.

Ordered Set چیست و ترتیب K-codeها چگونه خوانده می‌شود؟

Ordered Set یک توالی چهارتایی از K-codeها است. معنای آن فقط به حضور چهار Symbol وابسته نیست؛ جای دقیق هر K-code نیز اهمیت دارد. K-code شماره ۱ نخست ارسال می‌شود و سپس شماره‌های ۲، ۳ و ۴ می‌آیند. داخل هر Symbol پنج‌بیتی نیز بیت صفر پیش از بیت‌های بعدی روی خط قرار می‌گیرد. این قرارداد جلوی ابهام در خواندن نمودارها و تحلیل Capture خام را می‌گیرد.

استاندارد Ordered Setهای Cable Reset، Hard Reset، SOP، SOP’، SOP’’ و دو نوع Debug را تعریف می‌کند. واژه SOP* یک نام عمومی است که هر یک از گونه‌های SOP را بسته به مقصد در بر می‌گیرد. بنابراین وقتی قالب Packet به‌صورت Preamble + SOP* نوشته می‌شود، ستاره به معنی بیت اضافه نیست؛ یعنی محل آغاز می‌تواند یکی از Ordered Setهای معتبر خانواده SOP باشد.

نمودار تفسیر Ordered Set در لایه فیزیکی USB Power Delivery و ترتیب ارسال چهار K-code و بیت‌های هر Symbol
Figure 5.1 — Interpretation of Ordered Sets نحوه خواندن چهار K-code و ترتیب ارسال بیت‌های هر Symbol در یک Ordered Set؛ برگرفته از صفحه ۸۱ منبع.
Ordered SetK-code 1K-code 2K-code 3K-code 4Target / Purpose
SOPSync-1Sync-1Sync-1Sync-2Port Partner
SOP’Sync-1Sync-1Sync-3Sync-3Cable Plug / VPD
SOP’’Sync-1Sync-3Sync-1Sync-3Other Cable Plug
SOP’_DebugSync-1RST-2RST-2Sync-3Usage undefined
SOP’’_DebugSync-1RST-2Sync-3Sync-2Usage undefined
Hard ResetRST-1RST-1RST-1RST-2Reset Port Partners
Cable ResetRST-1Sync-1RST-1Sync-3Reset Cable Plugs

اعتبارسنجی Ordered Set؛ چهار K-code کامل یا تحمل یک خرابی

گیرنده باید هر چهار جایگاه K-code را جست‌وجو کند. اگر هر چهار K-code درست و در محل صحیح باشند، Ordered Set الزاماً معتبر است. استاندارد اجازه می‌دهد سه K-code درست از چهار جایگاه نیز به‌عنوان Ordered Set معتبر تفسیر شود؛ یعنی خرابی یک جایگاه می‌تواند قابل تحمل باشد. بااین‌حال گیرنده بهتر است برای جلوگیری از ابهام، در حالت عادی اعتبار هر چهار K-code را احراز کند.

این انعطاف به معنی پذیرش هر توالی ناقص نیست. دو جایگاه خراب، حتی اگر دو K-code دیگر درست باشند، نمونه Invalid محسوب می‌شود. همچنین «درست‌بودن» فقط به K-code بودن Symbol محدود نیست؛ Symbol باید در جایگاهی باشد که ترکیب مورد انتظار آن Ordered Set تعیین می‌کند. این قاعده برای SOP*، Hard Reset و Cable Reset یکسان است.

4 / 4
الزاماً معتبر
چهار K-code درست در چهار جایگاه درست
3 / 4
ممکن است معتبر تلقی شود
فقط یک جایگاه Corrupt است
2 / 4
نامعتبر
دو جایگاه یا بیشتر Corrupt هستند

ترتیب ارسال بیت‌ها؛ از DWord تا Symbol روی لاین CC

دانستن مقدار یک فیلد بدون دانستن ترتیب ارسال آن برای تحلیل سیگنال کافی نیست. استاندارد سه اندازه پایه را نشان می‌دهد: Byte با ۸ بیت خام به ۱۰ بیت کدشده، Word با ۱۶ بیت خام به ۲۰ بیت کدشده و DWord با ۳۲ بیت خام به ۴۰ بیت کدشده تبدیل می‌شود. نسبت افزایش در همه آن‌ها همان 4 به 5 است.

برای DWord، نیمه کم‌ارزش شامل بیت‌های 0 تا 15 پیش از نیمه بیت‌های 16 تا 31 ارسال می‌شود. در هر Word نیز Byte پایین‌تر پیش از Byte بالاتر می‌آید. داخل هر Byte، Nibble بیت‌های 0 تا 3 زودتر از Nibble بیت‌های 4 تا 7 کد می‌شود و در Symbol پنج‌بیتی حاصل، بیت صفر نخست روی لاین CC قرار می‌گیرد. بنابراین نمای عددی چپ‌به‌راست یک مقدار هگزادسیمال لزوماً همان ترتیب زمانی مشاهده‌شده روی لاین CC نیست.

این جزئیات هنگام مقایسه خروجی Logic Analyzer با Message Header یا CRC اهمیت دارد. اگر ابزار بیت‌ها را به ترتیب زمانی نشان دهد اما تحلیلگر آن‌ها را مانند نمایش معمول عدد بخواند، مقدار بازسازی‌شده وارونه یا جابه‌جا به نظر می‌رسد. Figure 5.2 زنجیره این خردشدن را از DWord به Word، Byte، Nibble، Symbol و نهایتاً بیت‌های ارسال‌شده نشان می‌دهد.

Data UnitUnencodedAfter 4b5bExpansion
Byte8 bits10 bits2 symbols
Word16 bits20 bits4 symbols
DWord32 bits40 bits8 symbols
نمودار ترتیب ارسال داده در USB PD از DWord و Word تا Byte، Nibble، سمبل 4b5b و بیت‌های لاین CC
Figure 5.2 — Transmit Order for Various Sizes of Data
ترتیب شکستن DWord به Word، Byte و Nibble، تبدیل هر Nibble به Symbol پنج‌بیتی 4b5b و ترتیب نهایی ارسال بیت‌ها روی لاین CC.

ساختار Packet در USB Power Delivery

Packet کامل از Preamble، یک SOP*، داده Packet شامل Message Header، CRC و EOP ساخته می‌شود. Protocol Layer بخش Message Header و داده پیام را فراهم می‌کند؛ Physical Layer مسئول Preamble، SOP*، CRC و EOP است. این تفکیک نشان می‌دهد Packet روی لاین CC بزرگ‌تر از Message منطقی است و برای مشاهده درست باید سربار Framing و حفاظت خطا نیز در نظر گرفته شود.

Preamble تنها بخش Packet است که 4b5b نمی‌شود. SOP*، Message Header، Data Bytes، CRC و EOP با Symbolهای 4b5b نمایش داده می‌شوند. بااین‌حال تمام بیت‌های Packet، حتی Preamble، با BMC روی لاین CC منتقل می‌شوند. عبارت «Preamble کدگذاری نمی‌شود» فقط به 4b5b مربوط است و نباید با نبود BMC اشتباه گرفته شود.

نمودار قالب Packet در USB Power Delivery شامل Preamble، Ordered Set خانواده SOP، Message Header، داده پیام، CRC و EOP و مرز مسئولیت لایه فیزیکی و لایه پروتکل
Figure 5.3 — USB Power Delivery Packet Format
ساختار کامل Packet و تفکیک مسئولیت‌ها؛ Protocol Layer بخش Message Header و Data را فراهم می‌کند و Physical Layer اجزای Preamble، SOP*، CRC و EOP را به آن می‌افزاید.
Preamble
قفل Clock گیرنده
SOP*
شروع و مقصد ارتباط
Payload
Header و Data
CRC-32
حفاظت یکپارچگی
EOP
پایان Packet

Preamble و خانواده SOP*؛ قفل‌شدن گیرنده و تعیین مخاطب

انتقال با Preamble آغاز می‌شود تا گیرنده روی Carrier قفل شود. این بخش دقیقاً ۶۴ بیت متناوب 0 و 1 دارد، با 0 شروع می‌شود و با 1 پایان می‌یابد. توالی متناوب، فرکانس متوسط را برابر Carrier Frequency قرار می‌دهد و Clock Recovery را ممکن می‌کند. پس از این Training Sequence، گیرنده آماده تشخیص Ordered Set آغازین است.

SOP برای ارتباط دو Port Partner است. Source و Sink دارای PD باید Packetهای SOP را تشخیص دهند و با آن‌ها ارتباط برقرار کنند، درحالی‌که Cable Plug و VPD نباید SOP ارسال یا دریافت کنند. حتی محصولی که ظاهر کابل‌مانند دارد ولی از نظر استاندارد PDUSB Device است، مانند AMA، همچنان باید به SOP پاسخ دهد؛ ظاهر فیزیکی به‌تنهایی نقش ارتباطی را تعیین نمی‌کند.

SOP’ برای ارتباط Port با Cable Plug یا VPD دارای این قابلیت است. یک Port می‌تواند در همان اتصال با SOP با Port Partner و با SOP’ با Cable Plug صحبت کند. پیش از وجود Explicit Contract یا در زمان Implicit Contract، Sink نباید SOP’ ارسال کند و باید Packetهای SOP’ را دور بریزد. این محدودیت نشان می‌دهد دسترسی به منطق فعال کابل نیز تابع وضعیت قرارداد است.

SOP’’ برای Cable Plug دیگر در کابل‌هایی به کار می‌رود که چنین ارتباطی را پشتیبانی می‌کنند. VPD نباید SOP’’ داشته باشد و هیچ کابلی مجاز نیست فقط SOP’’ را پشتیبانی کند؛ Cable Plug دیگر باید SOP’ را داشته باشد. Port پشتیبان SOP’’ نیز باید SOP’ را پشتیبانی و ارتباط SOP* را برای جلوگیری از Collision هماهنگ کند. دو Ordered Set نوع Debug هم تعریف شده‌اند، اما کاربرد آن‌ها در این نسخه استاندارد همچنان Undefined است.

قاعده مشترک دریافت SOP*

اگر Ordered Set مورد انتظار به‌صورت معتبر تشخیص داده نشود، کل انتقال دور ریخته می‌شود. گیرنده نباید با تفسیر Payload قبل از احراز آغاز صحیح Packet، مقصد یا نوع تبادل را حدس بزند.

Payload، CRC و EOP؛ حفاظت از محتوا و بستن Packet

Packet Data از Protocol Layer می‌آید و با کدهای Hex جدول 4b5b کدگذاری می‌شود. بلافاصله بعد از Payload، فیلد CRC قرار می‌گیرد و سپس یک K-code منفرد EOP پایان CRC و Packet را مشخص می‌کند. پس از دریافت EOP، گیرنده CRC Residual را بررسی می‌کند: نتیجه نامعتبر باعث حذف کل انتقال می‌شود و نتیجه معتبر اجازه می‌دهد Packet به Protocol Layer تحویل گردد.

EOP می‌تواند برای پایان زودهنگام Packet نیز استفاده شود؛ نمونه صریح استاندارد، قطع Message جاری پیش از Hard Reset Signaling است. در این وضعیت EOP به گیرنده می‌گوید انتقال قبلی بسته شده، سپس توالی مستقل Reset می‌تواند آغاز شود. بنابراین EOP فقط یک جداکننده تزئینی نیست و در کنترل گذارهای سطح PHY نقش دارد.

پارامترهای CRC-32

  • Polynomial: 04C1_1DB7h
  • Initial value: FFFF_FFFFh
  • Residual: C704_DD7Bh
  • Remainder پیش از ارسال Complement می‌شود.
  • پیاده‌سازی با CRC مورد استفاده در USB 3.2 یکسان است.

چه چیزی وارد محاسبه CRC می‌شود؟

تمام Byteهای Payload، شامل Message Header و Data، از Byte 0 Bit 0 تا Bit 7 هر Byte وارد محاسبه می‌شوند. Preamble، SOP* و EOP چون Packet Framing Symbol هستند از محاسبه کنار گذاشته می‌شوند. فیلد CRC خودِ نتیجه محاسبه است و پس از Payload قرار می‌گیرد.

نمودار تولید CRC-32 در USB Power Delivery شامل ترتیب ورود بایت‌های Payload، مولد CRC و نگاشت معکوس بیت‌های نتیجه در فیلد ۳۲ بیتی CRC
Figure 5.4 — CRC-32 Generation
ترتیب ورود Byteهای Payload به مولد CRC-32 و نگاشت معکوس بیت‌های نتیجه در فیلد ۳۲بیتی CRC؛ از Result Bit 31 برای CRC-32 Bit 0 تا Result Bit 0 برای CRC-32 Bit 31.

جدول نگاشت CRC در منبع نشان می‌دهد CRC-32 Bit 0 در Result Bit 31 قرار می‌گیرد و این نگاشت تا CRC-32 Bit 31 در Result Bit 0 ادامه دارد. در عمل نگاشت خروجی معکوس است؛ Figure 5.4 هم ترتیب ورود Byteها و هم ترتیب قرارگرفتن بیت‌های نتیجه در فیلد ۳۲بیتی را کنار ساختار مولد نشان می‌دهد.

Packet Detection Error؛ چه زمانی GoodCRC ارسال نمی‌شود؟

خطای CRC و خطایی که هنگام Decode یک Symbol با جدول کدگذاری پیدا شود، رفتار یکسانی دارند: Message دور ریخته می‌شود و گیرنده نباید GoodCRC بازگرداند. نبود GoodCRC در این سطح به معنی نپذیرفتن انتقال است و فرستنده نباید آن را معادل پذیرش محتوا تلقی کند.

اگر گیرنده هنگام پردازش Packet ببیند CC در هر لحظه به حالت Idle رفته است، باید پردازش را متوقف و Packet را حذف کند؛ در این حالت نیز GoodCRC فرستاده نمی‌شود. تعریف دقیق BMC Idle در بخش 5.8.6.1 قرار دارد و به مقاله بعدی مربوط است، اما نتیجه عملی همین‌جا روشن است: قطع غیرمنتظره حامل پیش از پایان معتبر Packet، انتقال قابل‌قبولی نمی‌سازد.

Hard Reset Signaling؛ Reset در سطح PHY بدون Packet معمولی

Hard Reset یک Ordered Set فیزیکی برای تشخیص مستقیم توسط PHY است: سه RST-1 و سپس یک RST-2. دریافت معتبر آن دستگاه را ملزم می‌کند Hard Reset را طبق رفتار تعریف‌شده Protocol انجام دهد. Cable Plug نیز وقتی این سیگنال را میان Port Partnerها تشخیص می‌دهد، باید Hard Reset را اجرا کند. اگر Ordered Set معتبر تشخیص داده نشود، انتقال کامل دور ریخته می‌شود.

ارسال Hard Reset توالی کنترل‌شده‌ای دارد. اگر PHY در حال ارسال Message باشد، ابتدا با EOP آن را قطع و باقی Message را حذف می‌کند. اگر CC Idle نیست، تا Idle شدن صبر می‌کند؛ سپس tInterFrameGap را رعایت می‌نماید. اگر کانال همچنان Idle بود، Preamble و چهار K-code مربوط به Hard Reset ارسال می‌شوند. پس از آن Channel غیرفعال، PHY Reset و Protocol Layer مطلع می‌شود؛ فعال‌سازی دوباره Channel نیز با درخواست Protocol Layer صورت می‌گیرد.

64-bit Preamble
RST-1
RST-1
RST-1
RST-2

بازسازی HTML از Figure 5.5 — Preamble با BMC ولی بدون 4b5b؛ Ordered Set با 4b5b و BMC.

Cable Reset؛ Reset کردن Cable Plug بدون Hard Reset طرفین

Cable Reset نیز یک Ordered Set در سطح PHY است، اما ترکیب آن RST-1، Sync-1، RST-1 و Sync-3 است. فقط DFP اجازه ارسال این سیگنال را دارد. هدف، Reset کردن Cable Plugها بدون نیاز به Hard Reset کردن Port Partnerها است؛ یعنی کنترلرهای فعال داخل کابل به حالت معادل Power Cycle بازمی‌گردند، درحالی‌که Reset کامل دو دستگاه انتهایی هدف این توالی نیست.

تفاوت Hard Reset و Cable Reset را باید هم در مقصد و هم در Pattern فیزیکی دید. هر دو پس از Preamble می‌آیند و هر دو توسط PHY تشخیص داده می‌شوند، اما Hard Reset از سه RST-1 و یک RST-2 ساخته می‌شود و دستگاه‌های انتهایی و Cable Plugها را درگیر می‌کند؛ Cable Reset توالی ترکیبی RST و Sync دارد و به‌طور اختصاصی Cable Plugها را هدف می‌گیرد.

64-bit Preamble
RST-1
Sync-1
RST-1
Sync-3

بازسازی HTML از Figure 5.6 — Line format of Cable Reset.

تفاوت Packet معمولی، Hard Reset و Cable Reset

نوع انتقالساختار پس از PreamblePayload و CRCهدف اصلینتیجه
Normal PacketSOP* + Header/Data + CRC + EOPداردتبادل Message با Port یا Cable Plugتحویل Packet معتبر به Protocol
Hard ResetRST-1 + RST-1 + RST-1 + RST-2نداردReset سطح PHY و رفتار Hard ResetReset Port Partners و Cable Plug
Cable ResetRST-1 + Sync-1 + RST-1 + Sync-3نداردReset Cable Plug توسط DFPحالت معادل Power Cycle کابل

چگونه Capture خام PD را مرحله‌به‌مرحله بخوانیم؟

تحلیل از تشخیص Preamble آغاز می‌شود، نه از حدس‌زدن Header. ابتدا باید توالی ۶۴بیتی متناوب دیده شود و گیرنده روی Carrier قفل کند. سپس چهار K-code آغازین مشخص می‌کنند انتقال برای Port Partner است یا برای یکی از Cable Plugها. اگر آغاز معتبر نیست، تفسیر ادامه بیت‌ها به‌عنوان Payload از نظر استاندارد پایه‌ای ندارد.

پس از SOP*، Symbolهای پنج‌بیتی با جدول 4b5b به Nibbleها بازگردانده می‌شوند. Nibbleها طبق ترتیب انتقال به Byte، Word و DWord تبدیل می‌شوند. سپس Message Header و داده باید جدا شوند و CRC فقط روی Byteهای Payload محاسبه گردد. Preamble، SOP* و EOP نباید وارد CRC شوند. در پایان، EOP و Residual معتبر باید دیده شوند؛ در غیر این صورت انتظار GoodCRC منطقی نیست.

اگر بعد از Preamble به‌جای SOP* الگوی RST-1/RST-1/RST-1/RST-2 دیده شود، انتقال Message معمولی نیست و باید به‌عنوان Hard Reset خوانده شود. الگوی RST-1/Sync-1/RST-1/Sync-3 نیز Cable Reset است. این تشخیص جلوی خطای رایجی را می‌گیرد که هر فعالیت BMC روی لاین CC به‌عنوان Packet دارای Header تفسیر شود.

1. Preamble
2. SOP* / Reset
3. 4b5b Decode
4. CRC Check
5. Deliver / Discard
نکته محوری مقاله چهارم
روی لاین CC فقط «داده پیام» حرکت نمی‌کند؛ PHY با Preamble گیرنده را آماده، با SOP* مقصد را مشخص، با 4b5b Symbolها را قابل‌تشخیص، با CRC محتوا را محافظت و با EOP مرز پایان Packet را قطعی می‌کند.

جمع‌بندی

PHY ارتباط Half Duplex را روی یک لاین CC اجرا می‌کند. فرستنده CRC، کدگذاری و Framing را می‌سازد و گیرنده Clock، SOP*، EOP و اعتبار CRC را بررسی می‌کند.

4b5b هر Nibble چهار‌بیتی را به Symbol پنج‌بیتی تبدیل می‌کند. شانزده Symbol برای داده هگزادسیمال، K-codeها برای Sync، Reset و EOP و ده ترکیب برای Error کنار گذاشته شده‌اند.

Ordered Set از چهار K-code در جایگاه‌های مشخص ساخته می‌شود. چهار K-code درست الزاماً معتبرند؛ سه مورد درست می‌توانند معتبر تلقی شوند، اما دو خرابی نمونه نامعتبر است.

Packet معمولی از Preamble، SOP*، Message Header/Data، CRC و EOP تشکیل می‌شود. Preamble 4b5b نمی‌شود، ولی مانند همه بخش‌های Packet با BMC انتقال می‌یابد.

CRC-32 فقط Payload را پوشش می‌دهد و Framing را شامل نمی‌شود. خطای CRC، Symbol نامعتبر یا Idle شدن زودهنگام CC باعث حذف Message و عدم ارسال GoodCRC می‌شود.

Hard Reset و Cable Reset Packet معمولی نیستند؛ هر دو Ordered Set فیزیکی پس از Preamble هستند، اما Pattern، مقصد و نتیجه متفاوتی دارند.

ادامه مجموعه

مقاله ۵: Collision Avoidance و مبانی سیگنالینگ BMC

در مقاله بعدی، Sections 5.7 تا 5.8.3 و صفحات ۹۱ تا ۱۰۴ بررسی می‌شوند: جلوگیری از برخورد در کانال مشترک، BMC Bit Encoding، Preamble و قواعد زمان‌بندی سیگنال روی لاین CC.

مرجع اصلی مقاله
Universal Serial Bus Power Delivery Specification, Revision 3.2, Version 1.1

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

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

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