Antarmuka dua kawat: alamat, halaman, bank, dan timing · Spesifikasi dan standar · Transceiver optik dan kabel · Dokumentasi · CodingBox
CodingBox Dokumentasi

Antarmuka dua kawat: alamat, halaman, bank, dan timing

Setiap modul pluggable dikelola lewat dua kawat yang sama — satu jalur clock serial dan satu jalur data serial — menggunakan protokol I²C yang oleh spesifikasi disebut antarmuka dua kawat (TWI). Yang berbeda antara modul SFP, QSFP, XFP, dan CMIS adalah cara ruang alamat diorganisasi di atasnya: perangkat terpisah, memori berhalaman, atau bank berisi halaman. Materi ini adalah sudut pandang tingkat protokol yang menjadi acuan programmer, host, dan CodingBox.

Lapisan fisik

  • Dua jalur open-drain, SCL dan SDA, ditarik naik (pull-up) di sisi host; logika 3,3 V.
  • Modul selalu menjadi slave; host (atau programmer) adalah master dan membangkitkan clock.
  • Modul dapat meregangkan clock (menahan SCL tetap low) saat mikrokontroler mengambil data — spesifikasi mengizinkan hingga 500 µs.
  • Keberadaan dan pemilihan modul adalah pin terpisah, bukan transaksi bus: MOD_ABS (SFP), ModPrsL dan ModSelL (kelas QSFP dan CMIS). ModSelL memungkinkan beberapa modul berbagi satu bus; SFP tidak memiliki pin pemilihan, sehingga host memberi setiap cage bus tersendiri atau sebuah multiplekser.

Ruang alamat menurut spesifikasi

KeluargaAlamat perangkat (tulis 8-bit / 7-bit)OrganisasiPemilihan halaman
SFP, SFP+, SFP28 (SFF-8472)identitas A0h / 50h, diagnostik A2h / 51hA0h: 256 byte datar; A2h: 128 byte datar + separuh atas opsional berhalamanbyte 127 A2h, jika bit 4 byte 64 A0h diset
XFP (INF-8077i)A0h128 datar + “tabel” atas berhalamanbyte 127
QSFP+, QSFP28 (SFF-8636)A0h128 datar + 128 atas berhalamanbyte 127
QSFP-DD, OSFP, SFP-DD… (CMIS)A0h128 datar + bank × halaman dari 128 atasbyte 126 bank, byte 127 halaman

Karena itu, SFP membutuhkan dua alamat perangkat dan tanpa paging untuk hal dasar; semuanya setelah XFP memakai satu alamat dan paging. Sebagian SFP lawas mengatur bit 2 byte 92 A0h (“perlu perubahan alamat”) dan membutuhkan urutan khusus vendor sebelum A2h merespons.

Transaksi

OperasiUrutanCatatan
Baca acakSTART · alamat perangkat+W · offset byte · START · alamat perangkat+R · data… · STOPpembacaan sehari-hari; offset naik otomatis
Baca sekuensialterus menghasilkan clock setelah byte pertamamelingkar di 255 → 0 dalam tampilan perangkat/halaman saat ini
Baca alamat-saat-iniSTART · alamat perangkat+R · datamelanjutkan dari offset terakhir — rapuh jika ada master lain yang ikut campur
Tulis byteSTART · addr+W · offset · data · STOPlalu tunggu t_WR
Tulis halamanSTART · addr+W · offset · data × n · STOPdibatasi oleh perangkat memori (biasanya 4–16 byte) dan tidak boleh melewati batas halaman internalnya
Polling acknowledgekeluarkan START + addr+W hingga modul memberi ACKcara tercepat mengetahui sebuah siklus penulisan selesai

Membaca halaman atas selalu berupa dua transaksi: tulis byte pemilihan halaman (127, dan 126 untuk bank CMIS), lalu baca 128–255. Pilihan ini bertahan sampai diubah, sehingga pemilihan halaman yang basi menjadi sumber klasik pembacaan “isi yang salah”.

Kecepatan

SpesifikasiClock
SFF-8472 (SFP)dasar 100 kHz; sebagian modul mentolerasi 400 kHz
INF-8077i (XFP)100 kHz
SFF-8636 rev 2.x (QSFP)hingga 400 kHz
Spesifikasi perangkat keras CMIS / QSFP-DD / OSFPhingga 400 kHz

Lebih lambat selalu diperbolehkan. Untuk penulisan, sebagian besar programmer turun jauh di bawah clock nominal — ke kisaran kilohertz rendah — karena siklus penulisan EEPROM dan modul yang diperantarai mikrokontroler jauh lebih sensitif terhadap timing dibandingkan pembacaan.

Timing yang penting

ParameterBatas tipikalArti
t_init (SFP)300 msdari power-up / negasi TX_DISABLE hingga modul beroperasi penuh dan bus merespons
t_init (QSFP)2 shingga inisialisasi selesai dan Data_Not_Ready bersih
MgmtInit (CMIS)≤ 2 s menurut spesifikasi perangkat kerashingga modul keluar dari MgmtInit dan identitas valid
t_WR40 mssiklus penulisan maksimum untuk byte tunggal atau penulisan sekuensial; poll ACK atau tunggu
t_clock_hold500 µsperegangan clock maksimum oleh modul
ton_IntL200 msdari event flag hingga IntL aktif
Data readybit 0 byte 110 (SFP), bit 0 byte 2 (QSFP)jangan percaya monitor selama bit ini diset

Jebakan dan solusinya

GejalaPenyebab protokolSolusi
Semua FFhtidak ada ACK — alamat perangkat salah, halaman tidak diterapkan, modul tidak adaperiksa A0h vs A2h, bit halaman, dudukan modul
Isi salahpemilihan halaman/bank yang basitulis 127 (dan 126) sebelum setiap akses halaman atas
Byte rusakclock terlalu cepat, kabel panjang, rebutan dengan host yang mem-poll DDMperlambat, kabel pendek, baca di meja kerja bukan di switch yang hidup
Penulisan “berhasil”, baca kembali nilai lamamenulis terlalu cepat, mengabaikan t_WR, melewati batas penulisan halamantulis per byte atau blok kecil dengan jeda; polling ACK
Bus macet, SCL atau SDA tertahan lowtransaksi terputuskeluarkan sembilan pulsa SCL, lalu STOP; power-cycle modul
Berfungsi di switch, mati di programmermodul menunggu LPMode dilepas atau pin pemilihanpatuhi ModSelL/LPMode; beri waktu t_init

Diagnostik sisi meja kerja untuk semua ini terkumpul di Error baca & tulis EEPROM; skema proteksi yang berjalan di atas bus (kata sandi, WP perangkat keras, perintah simpan) ada di Jenis write-protection.

Membaca dalam sistem yang hidup

Host mem-poll DDM setiap beberapa detik dan bereaksi terhadap flag; master kedua pada bus yang sama (klip programmer, tool in-band) menyebabkan tabrakan, penulisan salah alamat, dan yang terparah, modul yang rusak total karena penulisan halaman mendarat di offset yang salah. Baca di tempat jika Anda terpaksa; tulis di meja kerja.

Di CodingBox

CodingBox menangani model alamat per faktor bentuk secara otomatis — A0h/A2h untuk SFP, paging untuk QSFP dan XFP, bank + halaman untuk CMIS — memungkinkan Anda mengatur kecepatan bus dan timing penulisan per profil programmer, dan memverifikasi setiap penulisan dengan membaca kembali (Menulis modul).


Jika Anda menemukan ketidakakuratan atau kesalahan dalam artikel ini, pilih bagian teks yang bersangkutan lalu tekan Ctrl+Enter untuk .