وحدة التحكم وبرنامجها الثابت: DDM وAPC والذاكرة والحماية
يحتوي كل وحدة إرسال واستقبال مُدارة على حاسوب صغير بداخلها. المتحكم الدقيق (MCU) يقيس، وينظّم، ويُبلغ، والأهم من وجهة نظر المبرمج — هو الذاكرة التي تقرؤها وتكتب فيها. وسواء أكانت الوحدة تحتوي EEPROM عادية أم MCU يتظاهر بأنه كذلك فهذا ما يحدد كيفية ترميزها، ولماذا تختفي بعض الكتابات بعد دورة تغذية، ولماذا توجد كلمات المرور أصلًا. وتصف هذه الصفحة ما يفعله المتحكم وكيف يظهر تصميمه على منصة الاختبار.
ما الذي يفعله MCU
| المهمة | التفاصيل | تظهر باسم |
|---|---|---|
| القياس | يأخذ عينات من درجة الحرارة (ثرمستور أو مستشعر على الشريحة)، وVcc، وانحياز الليزر، وتيار PD المراقِب (Tx)، والتيار الضوئي للمستقبل (Rx) عبر ADC بدقة 10–12 بت عدة مرات في الثانية؛ ويطبّق معايرة المصنع | قيم DDM — المعاملات |
| APC — التحكم الآلي في القدرة | يقارن تيار PD المراقِب بهدف المصنع ويضبط DAC انحياز المشغّل | قدرة Tx ثابتة، وانحياز مرتفع — انحياز Tx والتقادم |
| تعويض درجة الحرارة | تضبط جداول البحث تيار التضمين، وعلى PAM4 إعدادات DSP، عبر درجة الحرارة | نسبة إطفاء ثابتة |
| التحكم في TEC | حلقة PID تُبقي درجة حرارة الليزر ثابتة في الوحدات المبرَّدة؛ وتغذية راجعة من مثبِّت الطول الموجي في DWDM | مراقبا درجة حرارة الليزر وتيار TEC |
| العتبات والأعلام | يقارن كل قيمة مراقَبة بعتبات الإنذار/التحذير، ويضبط أعلامًا مُثبَّتة، ويقود IntL | العتبات والإنذارات |
| الدبابيس المنخفضة السرعة | يقرأ TX_DISABLE وRS0/RS1 وLPMode وResetL؛ ويقود TX_FAULT وRX_LOS (أو يبوّب الإشارات العتادية) | سلوك الدبابيس |
| التابع الثنائي السلك | يجيب عند A0h/A2h (SFP) أو A0h بصفحات/مصارف (QSFP، CMIS) | خريطة الذاكرة — الواجهة الثنائية السلك |
| آلات الحالة | حالات وحدة CMIS ومسار البيانات؛ واختيار التطبيق؛ والكتم | CMIS |
| الحماية ووظائف المورّد | كلمات المرور، ومناطق الحماية من الكتابة، وأوامر الحفظ، وفتح قفل المورّد، وتوقيعات المصادقة | أنواع الحماية من الكتابة |
| CDB / تحديث البرنامج الثابت | يستقبل صور برنامج ثابت جديدة ويكتبها في وحدات CMIS | بايتات إصدار البرنامج الثابت |
أجزاء نمطية: وحدات MCU بـ 8 بت (من فئة 8051) بسعة فلاش قليلة الكيلوبايتات في SFP/SFP+ منخفضة التكلفة؛ ووحدات من فئة Cortex-M بـ 32 بت في وحدات 100G+ وCMIS؛ ويستخدم بعض الموردين ASIC مخصصًا للتحكم بوحدة الإرسال والاستقبال يدمج ADC وDAC والتابع الثنائي السلك.
طريقتان لبناء الذاكرة
| التصميم | كيفية تخزين الخريطة | التبعات على البرمجة |
|---|---|---|
| EEPROM منفصلة (مثلًا من فئة AT24C02) لـ A0h، وMCU لـ A2h | بيانات تعريف A0h هي EEPROM تسلسلية حقيقية يتحدث معها المضيف والمبرمج مباشرة؛ ويتولى MCU التشخيص فقط | كتابات A0h هي كتابات EEPROM عادية — احترم t_WR وحجم الصفحة؛ وقد يحجبها دبوس WP العتادي (أنواع الحماية من الكتابة 1–3) |
| خريطة يحاكيها MCU | يجيب MCU عن كل طلب ثنائي السلك من RAM ويعكس التغييرات إلى فلاش/EEPROM الداخلية — أو لا يفعل | تذهب الكتابات إلى حيث يقرر البرنامج الثابت: مقبولة، أو متجاهَلة، أو مشروطة بكلمة مرور، أو تُخزَّن فقط بعد أمر حفظ، أو تُستبدَل من نسخة البرنامج الثابت الخاصة عند الإقلاع التالي (النوعان 4–5) |
| هجين | EEPROM لكتلة المورّد، وMCU للصفحات وكلمات المرور | قواعد مختلطة حسب نطاق البايتات |
وتفسر الخريطة المحاكاة معظم ألغاز منصة الاختبار: FFh من صفحة لا ينفذها البرنامج الثابت، وكتابات «تنجح» ثم تتراجع، وبايتات للقراءة فقط في نطاق وحرة في النطاق التالي، وإطالة الساعة (clock stretching) أثناء انشغال MCU بأخذ العينات (أخطاء القراءة والكتابة في EEPROM).
الإقلاع ونافذة t_init
عند التشغيل يحمّل MCU بيانات المعايرة والتعريف من ذاكرته غير المتطايرة، ويُشغّل ADC، ويُشغّل APC حتى هدفه، ولا يُمكِّن التابع الثنائي السلك ويمسح بيانات غير جاهزة إلا حينئذ. وهذه هي المدة من 300 ms (SFP) إلى 2 s (QSFP/CMIS) التي تسمح بها المواصفات قبل أن يتوقع المضيف إجابات، وسبب أن تعيد القراءة فور الإدخال بيانات عشوائية (ما يفعله المضيف).
المعايرة تعيش هنا
لا تعني قراءات ADC الخام شيئًا دون الثوابت التي قاسها المصنع على محطة اختبار: تيار PD المراقِب مقابل قدرة الإطلاق الفعلية، والتيار الضوئي للمستقبل مقابل قدرة الدخل عند طول موجة الوحدة، ومنحنى الثرمستور، ومقياس DAC الانحياز. وفي الوحدات المعايَرة داخليًا يطبّقها البرنامج الثابت ويبلغ بوحدات فيزيائية؛ وفي الوحدات المعايَرة خارجيًا تُكتب الثوابت في A2h 56–91 ليطبّقها المضيف (المعايرة). والكتابة فوق منطقة المورّد حيث تحتفظ بعض البرامج الثابتة بهذه الثوابت تنتج DDM عبثيًا أو حلقة APC ميتة — وهذه هي الطريقة الكلاسيكية التي «تُعطِّل» بها كتابة غير حذرة وحدةً بالكامل (التصنيع والاختبار).
كيف تُنفَّذ الحماية
| الآلية | التنفيذ | كما تظهر على منصة الاختبار |
|---|---|---|
| كلمة المرور | يقارن البرنامج الثابت البايتات الأربعة المكتوبة في منطقة كلمة المرور (SFP A2h 123–126، QSFP 123–126، CMIS 122–125) بقيمة مخزَّنة؛ ويفتح الكتابة لهذه الجلسة | WRITE FAIL حتى تُدخَل القيمة الصحيحة — كلمات المرور |
| مناطق الحماية من الكتابة | يتجاهل البرنامج الثابت الكتابات إلى نطاقات يعتبرها للقراءة فقط (المجاميع الاختبارية، والعتبات، والمعايرة، ومنطقة المورّد) | تُقرأ البايتات دون تغيير، بلا خطأ |
| دبوس WP العتادي على EEPROM منفصلة | الدبوس مربوط بجهد عالٍ داخل الوحدة أو يقوده MCU | يحتاج إلى لوحة المبرمج لقيادته |
| أمر الحفظ | تستقر الكتابات في RAM؛ ويُثبِّتها في الفلاش تسلسل خاص بالمورّد | تتراجع بعد دورة تغذية ما لم يُرسَل التسلسل |
| انعكاس البرنامج الثابت | يعيد البرنامج الثابت عند الإقلاع كتابة الخريطة من صورته الخاصة | تختفي التغييرات عند كل دورة تغذية — أداة المورّد وحدها يمكنها تغيير الصورة |
| المصادقة | يحسب البرنامج الثابت توقيعًا (تجزئة hash للرقم التسلسلي وبيانات المورّد وسرّ ما) في بايتات المورّد؛ ويتحقق المضيف منه | تعديلات بيانات التعريف تجتاز المجاميع الاختبارية ومع ذلك يرفضها المضيف — قفل المورّد |
كيف يُتعرَّف على كل نوع ويُبرمج: أنواع الحماية من الكتابة، إعادة ترميز EEPROM.
تحديثات البرنامج الثابت
يمكن لوحدات CMIS استقبال برنامج ثابت عبر الناقل الثنائي السلك بأوامر CDB (بدء التنزيل، وكتابة الكتل، والإكمال، والتشغيل، والاعتماد)، غالبًا بمصرفي صور بحيث يمكن التراجع عند فشل التحديث. ولا تملك وحدات SFF-8472/8636 آلية قياسية؛ ويستخدم الموردون تسلسلات خاصة عبر بايتات المورّد. وإصلاحات البرنامج الثابت هي وسيلة الموردين لحل مشكلات توافق تشغيل CMIS (مشكلات CMIS)، وتستحق بايتات إصدار البرنامج الثابت (صفحة CMIS السفلية 39–40، الصفحة 01h 128–129) أن تُسجَّل مع بيانات التعريف.
أنماط أعطال المتحكم
| العَرَض | السبب المرجَّح |
|---|---|
| الوحدة غير مرئية على الناقل، والبصريات سليمة خلاف ذلك | MCU لا يُقلِع: برنامج ثابت تالف، أو هبوط جهد (brown-out)، أو بلّورة تالفة |
| قيم DDM مجمَّدة أو عبثية | تلف ADC أو المعايرة؛ أو تجمُّد البرنامج الثابت |
| انزياح قدرة Tx رغم أن APC يفترض أن يثبتها | عطل PD المراقِب أو ADC، أو تعطيل APC |
| NACK عشوائية، وقراءات بطيئة | MCU محمَّل زيادة (أخذ عينات)، أو تجاوز مبرمج سريع لحدود إطالة الساعة |
| يعمل، لكن كل كتابة تتراجع | انعكاس البرنامج الثابت بالتصميم — وليس عطلًا |
| الوحدة ميتة بعد كتابة | تمت الكتابة فوق منطقة إعدادات البرنامج الثابت أو المعايرة |
في CodingBox
يتعامل CodingBox مع الوحدة كما يعرضها البرنامج الثابت: فهو يكتشف نوع الخريطة، ويطبّق كلمات المرور وبرامج النصوص البرمجية المعروفة لتصاميم أمر الحفظ والتصاميم المنعكسة، ويعيد حساب المجاميع الاختبارية، ويحتفظ بنسخة احتياطية قبل كل كتابة، ويتيح لك استعادتها من code database إذا تصرف المتحكم بشكل سيئ. ويضع EEPROM editor علامات على النطاقات التي تُعرِّفها المواصفة بأنها للقراءة فقط أو خاصة بالمورّد كي تعرف متى تكتب داخل المنطقة الخاصة بالبرنامج الثابت.