دو تار انٹرفیس: ایڈریسز، صفحات، بینکس اور ٹائمنگ
ہر پلگ ایبل ماڈیول ایک ہی دو تاروں — ایک سیریل کلاک اور ایک سیریل ڈیٹا لائن — کے ذریعے 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) | A0h | 128 مسلسل + صفحہ بند بالائی "جدولیں" | بائٹ 127 |
| QSFP+، QSFP28 (SFF-8636) | A0h | 128 مسلسل + صفحہ بند بالائی 128 | بائٹ 127 |
| QSFP-DD، OSFP، SFP-DD… (CMIS) | A0h | 128 مسلسل + بالائی 128 کے بینکس × صفحات | بائٹ 126 بینک، بائٹ 127 صفحہ |
اس لیے بنیادی کام کے لیے SFP کو دو ڈیوائس پتوں کی ضرورت ہوتی ہے، مگر صفحہ بندی کی نہیں؛ XFP کے بعد ہر چیز ایک پتہ اور صفحہ بندی استعمال کرتی ہے۔ کچھ پرانے SFPs، A0h بائٹ 92 بٹ 2 ("ایڈریس تبدیلی درکار") سیٹ کرتے ہیں اور A2h کے جواب دینے سے پہلے وینڈر تسلسل درکار ہوتا ہے۔
ٹرانزیکشنز
| عمل | تسلسل | نوٹس |
|---|---|---|
| بے ترتیب پڑھنا | START · device addr+W · byte offset · START · device addr+R · data… · STOP | روزمرہ پڑھائی؛ آف سیٹ خودکار بڑھتا ہے |
| مسلسل پڑھنا | پہلے بائٹ کے بعد کلاک دینا جاری رکھیں | موجودہ ڈیوائس/صفحہ منظر کے اندر 255 → 0 پر لپٹتا ہے |
| موجودہ پتے سے پڑھنا | START · device addr+R · data | آخری آف سیٹ سے جاری رہتا ہے — اگر دوسرے ماسٹر نے مداخلت کی ہو تو نازک ہے |
| بائٹ تحریر | START · addr+W · offset · data · STOP | پھر t_WR کا انتظار کریں |
| صفحہ تحریر | START · addr+W · offset · data × n · STOP | میموری ڈیوائس کی حد کے تابع (عموماً 4–16 بائٹس) اور اس کی اندرونی صفحہ حد پار نہیں ہونی چاہیے |
| تصدیقی پولنگ | START + addr+W جاری کریں، جب تک ماڈیول ACK نہ کرے | معلوم کرنے کا سب سے تیز طریقہ کہ تحریری چکر مکمل ہوا |
بالائی صفحہ پڑھنا ہمیشہ دو ٹرانزیکشنز ہے: صفحہ انتخاب کا بائٹ (127، اور CMIS بینکس کے لیے 126) لکھیں، پھر 128–255 پڑھیں۔ انتخاب تبدیل ہونے تک برقرار رہتا ہے، اسی لیے پرانا صفحہ انتخاب "غلط مواد" پڑھنے کا ایک معروف سبب ہے۔
رفتار
| تخصیص | کلاک |
|---|---|
| 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 کی نفی سے اس وقت تک جب ماڈیول پوری طرح فعال ہو اور بس جواب دے |
| t_init (QSFP) | 2 s | ابتدا کاری مکمل ہونے اور Data_Not_Ready صاف ہونے تک |
| MgmtInit (CMIS) | ہارڈویئر تخصیصات کے مطابق ≤ 2 s | ماڈیول کے MgmtInit چھوڑنے اور شناخت معتبر ہونے تک |
| t_WR | 40 ms | بائٹ یا مسلسل تحریر کے لیے زیادہ سے زیادہ تحریری چکر؛ ACK کی پولنگ کریں یا انتظار کریں |
| t_clock_hold | 500 µs | ماڈیول کے ذریعے زیادہ سے زیادہ کلاک کھینچنا |
| ton_IntL | 200 ms | فلیگ واقعے سے IntL فعال ہونے تک |
| ڈیٹا تیار | بائٹ 110 بٹ 0 (SFP)، بائٹ 2 بٹ 0 (QSFP) | سیٹ ہونے کے دوران مانیٹرز پر بھروسا نہ کریں |
مسائل اور ان کے حل
| علامت | پروٹوکول سبب | حل |
|---|---|---|
| تمام FFh | ACK نہیں — غلط ڈیوائس پتہ، صفحہ نافذ نہیں، ماڈیول غیر موجود | A0h بمقابلہ A2h، صفحہ بٹس، نشست جانچیں |
| غلط مواد | پرانا صفحہ/بینک انتخاب | ہر بالائی صفحہ رسائی سے پہلے 127 (اور 126) لکھیں |
| خراب بائٹس | کلاک بہت تیز، لمبی تاریں، DDM کو پول کرنے والے ہوسٹ کے ساتھ بس تنازعہ | رفتار کم کریں، کیبل چھوٹی رکھیں، فعال سوئچ میں نہیں بلکہ ٹیسٹ بینچ پر پڑھیں |
| تحریر "کامیاب"، پرانا واپس پڑھا | بہت تیز لکھا، t_WR نظر انداز کیا، صفحہ تحریر کی حد پار کی | انتظار کے ساتھ بائٹ تحریریں یا چھوٹے حصے؛ ACK پولنگ |
| بس اٹک جائے، SCL یا SDA کم سطح پر اٹکی | منقطع ٹرانزیکشن | SCL کے نو نبضیں کلاک کریں، پھر STOP؛ ماڈیول کی بجلی بند کر کے دوبارہ چلائیں |
| سوئچ میں کام کرتا ہے، پروگرامر پر غیر فعال | ماڈیول LPMode کے ختم ہونے یا انتخاب پن کی توقع رکھتا ہے | ModSelL/LPMode کا لحاظ رکھیں؛ t_init کی اجازت دیں |
ان کے ٹیسٹ بینچ تشخیصی طریقے EEPROM پڑھنے اور لکھنے کی خرابیاں میں جمع کیے گئے ہیں؛ بس کے اوپر چلنے والی حفاظتی اسکیمیں (پاس ورڈز، ہارڈویئر WP، محفوظ کرنے کے احکامات) رائٹ پروٹیکشن کی اقسام میں ہیں۔
فعال نظام میں پڑھنا
ایک ہوسٹ ہر چند سیکنڈ میں DDM کو پول کرتا اور فلیگز پر ردعمل دیتا ہے؛ اسی بس پر دوسرا ماسٹر (ایک پروگرامر کلپ، ایک اِن بینڈ ٹول) ٹکراؤ، غلط پتے پر تحریریں، اور بدترین صورت میں غلط آف سیٹ پر لینڈ ہونے والی صفحہ تحریر سے ماڈیول کو ناقابل استعمال بنا دیتا ہے۔ ضرورت ہو تو جگہ پر پڑھیں؛ ٹیسٹ بینچ پر لکھیں۔
CodingBox میں
CodingBox ہر فارم فیکٹر کے لیے ایڈریس ماڈل خودکار طور پر سنبھالتا ہے — SFP کے لیے A0h/A2h، QSFP اور XFP کے لیے صفحہ بندی، CMIS کے لیے بینک + صفحہ — آپ کو پروگرامر پروفائل کے لحاظ سے بس رفتار اور تحریر ٹائمنگ سیٹ کرنے دیتا ہے، اور ہر تحریر کو واپس پڑھ کر تصدیق کرتا ہے (ماڈیول پر لکھنا)۔