कंट्रोलर और उसका फ़र्मवेयर: DDM, APC, मेमोरी, प्रोटेक्शन
हर मैनेज्ड ट्रांसीवर के अंदर एक छोटा कंप्यूटर होता है। माइक्रोकंट्रोलर (MCU) मापता है, रेगुलेट करता है, रिपोर्ट करता है और — प्रोग्रामर के नज़रिए से सबसे ज़रूरी बात — वही वह मेमोरी है जिसे आप पढ़ते और लिखते हैं। किसी मॉड्यूल में एक साधारण EEPROM है या एक MCU जो उसका नाटक कर रहा है, यह तय करता है कि इसे कैसे कोड किया जा सकता है, कुछ राइट पावर साइकल के बाद क्यों ग़ायब हो जाते हैं और पासवर्ड आख़िर होते ही क्यों हैं। यह पेज बताता है कि कंट्रोलर क्या करता है और इसका डिज़ाइन बेंच पर कैसे दिखता है।
MCU क्या करता है
| टास्क | तफ़सील | किस रूप में दिखता है |
|---|---|---|
| मेज़रमेंट | एक 10–12-बिट ADC के ज़रिए प्रति सेकंड कई बार तापमान (थर्मिस्टर या ऑन-चिप सेंसर), Vcc, लेज़र बायस, मॉनिटर-PD करंट (Tx) और रिसीवर फ़ोटोकरंट (Rx) सैंपल करता है; फ़ैक्ट्री कैलिब्रेशन लागू करता है | 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 मॉड्यूल पर, नई फ़र्मवेयर इमेज रिसीव और फ़्लैश करता है | फ़र्मवेयर वर्ज़न बाइट |
सामान्य पार्ट: लो-कॉस्ट SFP/SFP+ में कुछ kB फ़्लैश वाले 8-बिट MCU (8051-क्लास); 100G+ और CMIS मॉड्यूल में 32-बिट Cortex-M क्लास; कुछ विक्रेता एक डेडिकेटेड ट्रांसीवर-कंट्रोलर ASIC इस्तेमाल करते हैं जो ADC, DAC और टू-वायर स्लेव को इंटीग्रेट करता है।
मेमोरी बनाने के दो तरीक़े
| डिज़ाइन | मैप कैसे स्टोर होता है | प्रोग्रामिंग के लिए नतीजे |
|---|---|---|
| A0h के लिए डिस्क्रीट EEPROM (जैसे, AT24C02-क्लास), A2h के लिए MCU | A0h पहचान जानकारी एक असली सीरियल EEPROM है जिससे होस्ट और प्रोग्रामर सीधे बात करते हैं; MCU सिर्फ़ डायग्नोस्टिक्स हैंडल करता है | A0h राइट साधारण EEPROM राइट हैं — t_WR और पेज साइज़ का ध्यान रखें; एक हार्डवेयर WP पिन इन्हें ब्लॉक कर सकता है (राइट-प्रोटेक्शन के प्रकार 1–3) |
| MCU-एमुलेटेड मैप | MCU हर टू-वायर रिक्वेस्ट का जवाब RAM से देता है और बदलावों को अपने इंटरनल फ़्लैश/EEPROM में मिरर करता है — या नहीं करता | राइट वहाँ जाते हैं जहाँ फ़र्मवेयर तय करता है: स्वीकार, इग्नोर, पासवर्ड-गेटेड, सिर्फ़ एक सेव कमांड के बाद स्टोर, या अगले बूट पर फ़र्मवेयर की अपनी कॉपी से ओवरराइट (प्रकार 4–5) |
| हाइब्रिड | वेंडर ब्लॉक के लिए EEPROM, पेज और पासवर्ड के लिए MCU | बाइट रेंज के हिसाब से मिले-जुले नियम |
एक एमुलेटेड मैप बेंच के ज़्यादातर रहस्य समझा देता है: एक ऐसे पेज से FFh जिसे फ़र्मवेयर इम्प्लीमेंट नहीं करता, ऐसे राइट जो “सफल” होते हैं और फिर पलट जाते हैं, ऐसे बाइट जो एक रेंज में रीड-ओनली हैं और अगली में फ़्री, MCU के सैंपलिंग में व्यस्त रहते हुए क्लॉक स्ट्रेचिंग (EEPROM रीड और राइट एरर)।
बूट और t_init विंडो
पावर-अप पर MCU अपने नॉन-वोलेटाइल स्टोर से कैलिब्रेशन और पहचान जानकारी लोड करता है, ADC शुरू करता है, APC को उसके टारगेट तक चलाता है और तभी टू-वायर स्लेव को एनेबल करके data-not-ready को क्लियर करता है। यही वह 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) में लिखे गए 4 बाइट की तुलना एक स्टोर की गई वैल्यू से करता है; सेशन के लिए राइट अनलॉक करता है | सही वैल्यू डालने तक WRITE FAIL — पासवर्ड |
| राइट-प्रोटेक्ट रीजन | फ़र्मवेयर उन रेंज पर राइट इग्नोर करता है जिन्हें वह रीड-ओनली मानता है (चेकसम, थ्रेशोल्ड, कैलिब्रेशन, वेंडर एरिया) | बाइट बिना बदले वापस पढ़े जाते हैं, कोई एरर नहीं |
| एक डिस्क्रीट EEPROM पर हार्डवेयर WP पिन | पिन मॉड्यूल के अंदर हाई पर टाइड है या MCU से ड्राइव होता है | इसे ड्राइव करने के लिए प्रोग्रामर बोर्ड चाहिए |
| सेव कमांड | राइट RAM में जाते हैं; एक वेंडर-स्पेसिफ़िक सीक्वेंस इन्हें फ़्लैश में कमिट करता है | सीक्वेंस भेजे बिना पावर साइकल के बाद पलट जाता है |
| फ़र्मवेयर मिरर | बूट पर फ़र्मवेयर अपनी ही इमेज से मैप को फिर से लिखता है | हर पावर साइकल पर बदलाव ग़ायब हो जाते हैं — सिर्फ़ विक्रेता का टूल ही इमेज बदल सकता है |
| ऑथेंटिकेशन | फ़र्मवेयर वेंडर बाइट में एक सिग्नेचर (सीरियल, वेंडर डेटा और एक सीक्रेट का हैश) कैलकुलेट करता है; होस्ट इसे वेरिफ़ाई करता है | पहचान जानकारी में बदलाव चेकसम पास कर जाते हैं फिर भी होस्ट रिजेक्ट कर देता है — विक्रेता लॉक |
हर टाइप को कैसे पहचाना और प्रोग्राम किया जाता है: राइट-प्रोटेक्शन के प्रकार, EEPROM रीकोडिंग।
फ़र्मवेयर अपडेट
CMIS मॉड्यूल CDB कमांड (स्टार्ट डाउनलोड, राइट ब्लॉक, कम्प्लीट, रन, कमिट) के ज़रिए टू-वायर बस पर फ़र्मवेयर रिसीव कर सकते हैं, अक्सर दो इमेज बैंक के साथ ताकि फ़ेल हुआ अपडेट वापस गिर सके। SFF-8472/8636 मॉड्यूल में कोई स्टैंडर्ड मैकेनिज़्म नहीं होता; विक्रेता वेंडर बाइट के ज़रिए प्रोप्राइटरी सीक्वेंस इस्तेमाल करते हैं। विक्रेता CMIS इंटरऑपरेबिलिटी की समस्याएँ फ़र्मवेयर फ़िक्स से ही सुलझाते हैं (CMIS समस्याएँ), और फ़र्मवेयर वर्ज़न बाइट (CMIS लोअर पेज 39–40, पेज 01h 128–129) को पहचान जानकारी के साथ रिकॉर्ड करना उपयोगी है।
कंट्रोलर के फ़ेल्योर मोड
| लक्षण | संभावित कारण |
|---|---|
| मॉड्यूल बस पर इनविज़िबल, बाक़ी ऑप्टिक्स ठीक | MCU बूट नहीं हो रहा: करप्टेड फ़र्मवेयर, ब्राउन-आउट, ख़राब क्रिस्टल |
| DDM वैल्यू फ़्रोज़न या बेतुकी | ADC या कैलिब्रेशन करप्शन; फ़र्मवेयर हैंग |
| Tx पावर ड्रिफ़्ट कर रही है जबकि APC को इसे रोके रखना चाहिए | मॉनिटर-PD या ADC फ़ॉल्ट, APC डिसेबल्ड |
| रैंडम NACK, धीमी रीड | MCU ओवरलोडेड (सैंपलिंग), एक तेज़ प्रोग्रामर से क्लॉक-स्ट्रेच लिमिट पार |
| काम करता है, पर हर राइट पलट जाता है | डिज़ाइन के हिसाब से फ़र्मवेयर मिरर — कोई ख़राबी नहीं |
| राइट के बाद मॉड्यूल डेड | फ़र्मवेयर कॉन्फ़िगरेशन या कैलिब्रेशन एरिया ओवरराइट हो गया |
CodingBox में
CodingBox मॉड्यूल को वैसे ही ट्रीट करता है जैसे फ़र्मवेयर इसे पेश करता है: यह मैप टाइप डिटेक्ट करता है, सेव-कमांड और मिरर्ड डिज़ाइन के लिए जाने-पहचाने पासवर्ड और प्रोग्रामिंग स्क्रिप्ट लागू करता है, चेकसम को फिर से कैलकुलेट करता है, हर राइट से पहले एक बैकअप रखता है और अगर कंट्रोलर बुरी तरह रिएक्ट करे तो आपको इसे code database से रीस्टोर करने देता है। EEPROM editor उन रेंज को मार्क करता है जिन्हें स्पेसिफ़िकेशन रीड-ओनली या वेंडर-स्पेसिफ़िक बताता है ताकि आपको पता रहे कि आप कब फ़र्मवेयर के निजी इलाक़े में लिख रहे हैं।