CodingBox الوثائق

الواجهة الثنائية الأسلاك: العناوين والصفحات والبنوك والتوقيت

تُدار كل وحدة قابلة للإدخال عبر السلكين نفسيهما — خط ساعة تسلسلي وخط بيانات تسلسلي — باستخدام بروتوكول I²C الذي تسمّيه المواصفات الواجهة الثنائية الأسلاك (TWI). والفرق بين وحدات SFP وQSFP وXFP وCMIS هو كيفية تنظيم مساحة العناوين فوق هذا البروتوكول: أجهزة منفصلة، أو ذاكرة مقسَّمة إلى صفحات، أو بنوك من الصفحات. وهذه المادة هي المنظور على مستوى البروتوكول الذي تعتمد عليه المبرمجات والمضيفات وCodingBox جميعًا.

الطبقة الفيزيائية

  • خطان بمخرج مفتوح (open-drainSCL وSDA، مسحوبان لأعلى من جهة المضيف؛ منطق 3.3 V.
  • الوحدة هي دائمًا التابع (slave)؛ والمضيف (أو المبرمج) هو المتحكم (master) ويولّد الساعة.
  • يجوز للوحدات إطالة الساعة (clock stretching) (إبقاء SCL منخفضًا) أثناء جلب المتحكم الدقيق للبيانات — وتسمح المواصفات بحد أقصى 500 µs.
  • الحضور والاختيار طرفان منفصلان، لا معاملتان على الناقل: MOD_ABS (في SFP)، وModPrsL وModSelL (في فئة QSFP وCMIS). ويتيح ModSelL لعدة وحدات مشاركة ناقل واحد؛ ولا يملك SFP طرف اختيار، فتخصّص المضيفات لكل قفص ناقله الخاص أو مقسّمًا (multiplexer).

مساحة العناوين حسب المواصفة

العائلةعناوين الجهاز (كتابة 8 بت / 7 بت)التنظيماختيار الصفحة
SFP، وSFP+، وSFP28 (SFF-8472)بيانات التعريف A0h / 50h، والتشخيصات A2h / 51hA0h: 256 بايت مسطّحة؛ A2h: 128 بايت مسطّحة + نصف علوي اختياري مقسَّم إلى صفحاتالبايت 127 من A2h، إذا كان البت 4 من البايت 64 في A0h مضبوطًا
XFP (INF-8077i)A0h128 بايت مسطّحة + «جداول» علوية مقسَّمة إلى صفحاتالبايت 127
QSFP+، وQSFP28 (SFF-8636)A0h128 بايت مسطّحة + 128 بايت علوية مقسَّمة إلى صفحاتالبايت 127
QSFP-DD، وOSFP، وSFP-DD… (CMIS)A0h128 بايت مسطّحة + بنوك × صفحات من الـ128 بايت العلويةالبايت 126 للبنك، والبايت 127 للصفحة

لذلك تحتاج وحدة SFP إلى عنوانَي جهاز اثنين ولا تحتاج تقسيمًا إلى صفحات في الأساسيات؛ في حين يستخدم كل ما بعد XFP عنوانًا واحدًا وتقسيمًا إلى صفحات. وتضبط بعض وحدات SFP القديمة البت 2 من البايت 92 في A0h («يلزم تغيير العنوان») وتحتاج تسلسلًا خاصًا بالمورّد قبل أن تستجيب A2h.

المعاملات

العمليةالتسلسلملاحظات
قراءة عشوائيةSTART · عنوان الجهاز+W · إزاحة البايت · START · عنوان الجهاز+R · بيانات… · STOPالقراءة المعتادة؛ تتزايد الإزاحة تلقائيًا
قراءة تسلسليةمواصلة التوقيت (clocking) بعد البايت الأولتلتف من 255 → 0 ضمن عرض الجهاز/الصفحة الحالي
قراءة عند العنوان الحاليSTART · عنوان الجهاز+R · بياناتتكمل من آخر إزاحة — هشّة إذا تدخّل متحكم آخر
كتابة بايتSTART · العنوان+W · الإزاحة · بيانات · STOPثم انتظر t_WR
كتابة صفحةSTART · العنوان+W · الإزاحة · بيانات × n · STOPمحدودة بجهاز الذاكرة (عادةً 4–16 بايت) ويجب ألا تتجاوز حدود صفحته الداخلية
استطلاع الإقرار (ACK)إصدار START + العنوان+W حتى تُقرّ الوحدة (ACK)أسرع طريقة لمعرفة انتهاء دورة الكتابة

قراءة صفحة علوية هي دائمًا معاملتان: الكتابة في بايت اختيار الصفحة (127، و126 لبنوك CMIS)، ثم قراءة 128–255. ويبقى الاختيار قائمًا حتى يتغيّر، ولهذا يُعَدّ اختيار الصفحة القديم مصدرًا كلاسيكيًا لقراءات «المحتوى الخطأ».

السرعة

المواصفةالساعة
SFF-8472 (SFP)100 kHz أساسًا؛ وتتحمّل بعض الوحدات 400 kHz
INF-8077i (XFP)100 kHz
SFF-8636 المراجعة 2.x (QSFP)حتى 400 kHz
مواصفات عتاد CMIS / QSFP-DD / OSFPحتى 400 kHz

الأبطأ مسموح به دائمًا. وفي الكتابة تخفض معظم المبرمجات الساعة كثيرًا دون القيمة الاسمية — إلى نطاق الكيلوهرتز المنخفض — لأن دورات كتابة EEPROM والوحدات التي يتوسّطها متحكم دقيق أكثر حساسية للتوقيت من القراءة بكثير.

التوقيتات المهمة

المُعاملالحد النموذجيالدلالة
t_init (SFP)300 msمن التشغيل / إلغاء تفعيل TX_DISABLE حتى تصبح الوحدة جاهزة تمامًا للعمل ويستجيب الناقل
t_init (QSFP)2 sحتى تكتمل التهيئة ويُمسح Data_Not_Ready
MgmtInit (CMIS)≤ 2 s وفق مواصفات العتادحتى تخرج الوحدة من MgmtInit وتصبح بيانات التعريف صالحة
t_WR40 msأقصى مدة لدورة كتابة بايت أو كتابة تسلسلية؛ استطلع ACK أو انتظر
t_clock_hold500 µsأقصى إطالة للساعة من الوحدة
ton_IntL200 msمن حدث العلم إلى تفعيل IntL
جاهزية البياناتالبت 0 من البايت 110 (SFP)، والبت 0 من البايت 2 (QSFP)لا تثق بالقيم المقيسة أثناء ضبطه

المطبّات وإصلاحاتها

العَرَضسبب البروتوكولالإصلاح
كل القيم FFhبلا ACK — عنوان جهاز خطأ، أو صفحة غير مطبَّقة، أو الوحدة غائبةتحقّق من A0h مقابل A2h، وبتات الصفحة، والتركيب في المقبس
محتوى خطأاختيار صفحة/بنك قديماكتب في 127126) قبل كل وصول إلى صفحة علوية
بايتات تالفةساعة سريعة جدًا، وأسلاك طويلة، وتنازع مع مضيف يستطلع DDMأبطئ الساعة، وقصّر الكبل، واقرأ على منصة الاختبار لا في مبدّل قيد التشغيل
الكتابة «تنجح» لكن القراءة تُظهر القديمكتابة سريعة جدًا، وتجاهل t_WR، وتجاوز حدود كتابة الصفحةكتابة بايت بايت أو بأجزاء صغيرة مع انتظار؛ واستطلاع ACK
تجمّد الناقل، وSCL أو SDA عالقان منخفضينمعاملة مقطوعةأصدر تسع نبضات SCL، ثم STOP؛ وأعد تدوير قدرة الوحدة
تعمل في المبدّل، ولا تستجيب على المبرمجتتوقّع الوحدة تحرير LPMode أو طرف اختيارراعِ ModSelL/LPMode؛ وامنح الوقت لـ t_init

التشخيصات الخاصة بمنصة الاختبار لهذه الحالات مجموعة في أخطاء قراءة وكتابة EEPROM؛ وأنظمة الحماية التي تعمل فوق الناقل (كلمات المرور، والحماية العتادية من الكتابة، وأوامر الحفظ) في أنواع الحماية من الكتابة.

القراءة في نظام قيد التشغيل

يستطلع المضيف DDM كل بضع ثوانٍ ويتفاعل مع الأعلام؛ ووجود متحكم ثانٍ على الناقل نفسه (مِلقط مبرمج، أو أداة في النطاق) يسبّب تصادمات، وكتابات بعنوان خاطئ، وفي أسوأ الأحوال تعطّل الوحدة بسبب كتابة صفحة تقع على إزاحة خاطئة. اقرأ في الموضع نفسه إن لزم الأمر؛ واكتب على منصة الاختبار.

في CodingBox

تتعامل CodingBox مع نموذج العناوين حسب عامل الشكل تلقائيًا — A0h/A2h لـ SFP، والتقسيم إلى صفحات لـ QSFP وXFP، والبنك + الصفحة لـ CMIS — وتتيح لك ضبط سرعة الناقل وتوقيت الكتابة حسب ملف تعريف المبرمج، وتتحقق من كل كتابة بقراءتها مرة أخرى (كتابة وحدة).


إذا وجدت معلومة غير دقيقة أو خطأً في هذه المادة، فحدِّد المقطع المعني واضغط Ctrl+Enter .