টু-ওয়্যার ইন্টারফেস: অ্যাড্রেস, পেজ, ব্যাংক ও টাইমিং · স্পেসিফিকেশন ও স্ট্যান্ডার্ড · অপটিক্যাল ট্রান্সিভার ও ক্যাবল · ডকুমেন্টেশন · CodingBox
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 সেট করে (“অ্যাড্রেস পরিবর্তন প্রয়োজন”) এবং A2h সাড়া দেওয়ার আগে একটি ভেন্ডর-নির্দিষ্ট ক্রম চায়।

ট্রানজ্যাকশন

অপারেশনক্রমমন্তব্য
র‍্যান্ডম রিডSTART · ডিভাইস অ্যাড্রেস+W · বাইট অফসেট · START · ডিভাইস অ্যাড্রেস+R · ডেটা… · STOPপ্রতিদিনের পড়া; অফসেট নিজে থেকে বাড়ে
সিকোয়েন্সিয়াল রিডপ্রথম বাইটের পরেও ক্লক চালিয়ে যাওয়াবর্তমান ডিভাইস/পেজ ভিউয়ের ভেতরে 255 → 0-তে ঘুরে আসে
কারেন্ট-অ্যাড্রেস রিডSTART · ডিভাইস অ্যাড্রেস+R · ডেটাশেষ অফসেট থেকে চলতে থাকে; অন্য মাস্টার হস্তক্ষেপ করলে ভঙ্গুর
বাইট রাইটSTART · অ্যাড্রেস+W · অফসেট · ডেটা · STOPতারপর t_WR অপেক্ষা করুন
পেজ রাইটSTART · অ্যাড্রেস+W · অফসেট · ডেটা × n · STOPমেমোরি ডিভাইস দ্বারা সীমিত (সাধারণত 4–16 বাইট) এবং এর অভ্যন্তরীণ পেজ সীমা পার করা চলবে না
অ্যাকনলেজ পোলিংমডিউল ACK না দেওয়া পর্যন্ত START + অ্যাড্রেস+W পাঠানোরাইট চক্র শেষ হয়েছে কি না জানার দ্রুততম উপায়

আপার পেজ পড়তে সবসময় দুটি ট্রানজ্যাকশন লাগে: প্রথমে পেজ-সিলেক্ট বাইটে লিখুন (127, আর CMIS ব্যাংকের জন্য 126), তারপর 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 অ্যাসার্ট হওয়া পর্যন্ত
ডেটা রেডিবাইট 110-এর বিট 0 (SFP), বাইট 2-এর বিট 0 (QSFP)সেট থাকা অবস্থায় পরিমাপকৃত মানে ভরসা করবেন না

সাধারণ সমস্যা ও সমাধান

লক্ষণপ্রোটোকলগত কারণপ্রতিকার
সবকিছু FFhACK নেই: ভুল ডিভাইস অ্যাড্রেস, পেজ বাস্তবায়িত নয়, মডিউল অনুপস্থিত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-এর জন্য ব্যাংক + পেজ। প্রতিটি প্রোগ্রামার প্রোফাইলে বাস-গতি ও লেখার টাইমিং ঠিক করা যায়, আর প্রতিটি লেখা ফেরত পড়ে যাচাই করা হয় (মডিউলে লেখা)।


এই নিবন্ধে কোনো অশুদ্ধ তথ্য বা ভুল পেলে সংশ্লিষ্ট অংশটি নির্বাচন করুন এবং Ctrl+Enter চেপে ।