CodingBox दस्तावेज़

टू-वायर इंटरफ़ेस: एड्रेस, पेज, बैंक और टाइमिंग

हर प्लगेबल मॉड्यूल को उन्हीं दो तारों पर मैनेज किया जाता है — एक सीरियल क्लॉक और एक सीरियल डेटा लाइन — I²C प्रोटोकॉल का इस्तेमाल करते हुए, जिसे स्पेसिफ़िकेशन टू-वायर इंटरफ़ेस (TWI) कहते हैं। SFP, QSFP, XFP और CMIS मॉड्यूल के बीच जो अलग होता है वह यह है कि एड्रेस स्पेस को इसके ऊपर कैसे व्यवस्थित किया गया है: अलग डिवाइस, पेज्ड मेमोरी, या पेज के बैंक। यह मटीरियल वह प्रोटोकॉल-लेवल नज़रिया है जिस पर प्रोग्रामर, होस्ट और CodingBox सभी निर्भर करते हैं।

फ़िज़िकल लेयर

  • दो ओपन-ड्रेन लाइन, SCL और SDA, होस्ट साइड पर पुल-अप की गई; 3.3 V लॉजिक।
  • मॉड्यूल हमेशा स्लेव होता है; होस्ट (या प्रोग्रामर) मास्टर होता है और क्लॉक जनरेट करता है।
  • मॉड्यूल क्लॉक स्ट्रेच कर सकते हैं (SCL को लो रखते हुए) जब तक कोई माइक्रोकंट्रोलर डेटा फ़ेच करता है — स्पेसिफ़िकेशन 500 µs तक की अनुमति देते हैं।
  • प्रेज़ेंस और सिलेक्शन अलग पिन हैं, बस ट्रांज़ैक्शन नहीं: MOD_ABS (SFP), ModPrsL और ModSelL (QSFP-क्लास और CMIS)। ModSelL कई मॉड्यूल को एक बस शेयर करने देता है; SFP में कोई सिलेक्ट पिन नहीं है, इसलिए होस्ट हर केज को अपनी बस या एक मल्टीप्लेक्सर देते हैं।

स्पेसिफ़िकेशन के हिसाब से एड्रेस स्पेस

फ़ैमिलीडिवाइस एड्रेस (8-बिट राइट / 7-बिट)ऑर्गनाइज़ेशनपेज सिलेक्ट
SFP, SFP+, SFP28 (SFF-8472)A0h / 50h पहचान जानकारी, A2h / 51h डायग्नोस्टिक्सA0h: 256 फ़्लैट बाइट; A2h: 128 फ़्लैट + ऑप्शनल पेज्ड अपर हाफ़A2h बाइट 127, अगर A0h बाइट 64 बिट 4 सेट हो
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 A0h बाइट 92 बिट 2 (“address change required”) सेट करते हैं और A2h के जवाब देने से पहले एक वेंडर सीक्वेंस चाहिए होता है।

ट्रांज़ैक्शन

ऑपरेशनसीक्वेंसनोट्स
रैंडम रीडSTART · डिवाइस addr+W · बाइट ऑफ़सेट · START · डिवाइस addr+R · डेटा… · STOPरोज़मर्रा की रीड; ऑफ़सेट ऑटो-इंक्रीमेंट होता है
सीक्वेंशियल रीडपहले बाइट के बाद क्लॉकिंग जारी रखेंमौजूदा डिवाइस/पेज व्यू के भीतर 255 → 0 पर रैप होता है
करंट-एड्रेस रीडSTART · डिवाइस addr+R · डेटापिछले ऑफ़सेट से जारी रहती है — अगर कोई और मास्टर बीच में आ जाए तो नाज़ुक
बाइट राइटSTART · addr+W · ऑफ़सेट · डेटा · STOPफिर t_WR का इंतज़ार करें
पेज राइटSTART · addr+W · ऑफ़सेट · डेटा × n · STOPमेमोरी डिवाइस से सीमित (आमतौर पर 4–16 बाइट) और इसकी इंटरनल पेज बाउंड्री पार नहीं करनी चाहिए
एक्नॉलेज पोलिंगजब तक मॉड्यूल ACK न करे, START + addr+W भेजते रहेंयह जानने का सबसे तेज़ तरीक़ा कि राइट साइकल पूरी हो गई

किसी अपर पेज को पढ़ना हमेशा दो ट्रांज़ैक्शन होते हैं: पेज-सिलेक्ट बाइट (127, और CMIS बैंक के लिए 126) लिखें, फिर 128–255 पढ़ें। सिलेक्शन तब तक बना रहता है जब तक बदला न जाए, यही वजह है कि पुराना पेज सिलेक्ट “wrong content” रीड का एक क्लासिक कारण है।

स्पीड

स्पेसिफ़िकेशनक्लॉक
SFF-8472 (SFP)100 kHz बेसलाइन; कुछ मॉड्यूल 400 kHz बर्दाश्त करते हैं
INF-8077i (XFP)100 kHz
SFF-8636 rev 2.x (QSFP)400 kHz तक
CMIS / QSFP-DD / OSFP हार्डवेयर स्पेक्स400 kHz तक

धीमा होना हमेशा वैध है। राइट के लिए ज़्यादातर प्रोग्रामर नॉमिनल क्लॉक से काफ़ी नीचे चले जाते हैं — लो किलोहर्ट्ज़ तक — क्योंकि EEPROM राइट साइकल और माइक्रोकंट्रोलर-मध्यस्थ मॉड्यूल रीड के मुक़ाबले टाइमिंग के लिए कहीं ज़्यादा संवेदनशील होते हैं।

टाइमिंग जो मायने रखती है

पैरामीटरसामान्य लिमिटअर्थ
t_init (SFP)300 msपावर-अप / TX_DISABLE negation से लेकर मॉड्यूल के पूरी तरह ऑपरेशनल होने और बस के जवाब देने तक
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 असर्टेड होने तक
डेटा रेडीबाइट 110 बिट 0 (SFP), बाइट 2 बिट 0 (QSFP)सेट रहते हुए मॉनिटर पर भरोसा न करें

दिक़्क़तें और उनके फ़िक्स

लक्षणप्रोटोकॉल कारणफ़िक्स
सब FFhकोई ACK नहीं — ग़लत डिवाइस एड्रेस, पेज लागू नहीं, मॉड्यूल ग़ायबA0h बनाम A2h, पेज बिट, सीटिंग जाँचें
ग़लत कॉन्टेंटपुराना पेज/बैंक सिलेक्टहर अपर-पेज एक्सेस से पहले 127 (और 126) लिखें
करप्टेड बाइटक्लॉक बहुत तेज़, लंबी लीड, DDM पोल करने वाले होस्ट से कंटेंशनधीमा करें, छोटी केबल, लाइव स्विच में नहीं बेंच पर पढ़ें
राइट “succeeds”, पुराना ही वापस पढ़ा जाता हैबहुत तेज़ लिखा, t_WR इग्नोर किया, पेज-राइट बाउंड्री पार कीवेट के साथ बाइट राइट या छोटे चंक; ACK पोलिंग
बस हैंग, SCL या SDA लो पर अटकीट्रांज़ैक्शन बीच में रुकीनौ SCL पल्स क्लॉक आउट करें, फिर STOP; मॉड्यूल पावर-साइकल करें
स्विच में काम करता है, प्रोग्रामर पर डेडमॉड्यूल को LPMode रिलीज़ या एक सिलेक्ट पिन चाहिएModSelL/LPMode का ध्यान रखें; t_init के लिए समय दें

इनके लिए बेंच-साइड डायग्नोस्टिक्स EEPROM रीड और राइट त्रुटियाँ में जमा हैं; बस के ऊपर चलने वाली प्रोटेक्शन स्कीम (पासवर्ड, हार्डवेयर WP, सेव कमांड) राइट-प्रोटेक्शन के प्रकार में हैं।

लाइव सिस्टम में पढ़ना

एक होस्ट हर कुछ सेकंड में DDM पोल करता है और फ़्लैग पर रिएक्ट करता है; उसी बस पर एक दूसरा मास्टर (एक प्रोग्रामर क्लिप, कोई इन-बैंड टूल) कोलिज़न, ग़लत-एड्रेस वाली राइट, और सबसे बुरी स्थिति में, ग़लत ऑफ़सेट पर पड़ने वाली पेज राइट से “ब्रिक” हुआ मॉड्यूल पैदा करता है। ज़रूरी हो तो जगह पर ही पढ़ें; लिखने का काम बेंच पर करें।

CodingBox में

CodingBox हर फ़ॉर्म फ़ैक्टर के हिसाब से एड्रेस मॉडल अपने आप हैंडल करता है — SFP के लिए A0h/A2h, QSFP और XFP के लिए पेजिंग, CMIS के लिए बैंक + पेज — आपको प्रोग्रामर प्रोफ़ाइल के हिसाब से बस स्पीड और राइट टाइमिंग सेट करने देता है, और हर राइट को वापस पढ़कर वेरिफ़ाई करता है (मॉड्यूल में लिखना)।


अगर आपको इस सामग्री में कोई अशुद्धि या त्रुटि दिखे, तो संबंधित अंश चुनें और Ctrl+Enter दबाकर