Giao diện hai dây: địa chỉ, trang, bank, timing · Đặc tả và tiêu chuẩn · Transceiver quang và cáp · Tài liệu · CodingBox
CodingBox Tài liệu

Giao diện hai dây: địa chỉ, trang, bank, timing

Mọi module cắm rút đều được quản lý qua cùng hai dây — một đường xung nhịp nối tiếp và một đường dữ liệu nối tiếp — dùng giao thức I²C mà các đặc tả gọi là giao diện hai dây (TWI). Điều khác nhau giữa module SFP, QSFP, XFP và CMIS là cách không gian địa chỉ được tổ chức bên trên nó: thiết bị riêng biệt, bộ nhớ phân trang, hay các bank của trang. Nội dung này là góc nhìn ở mức giao thức mà bộ lập trình, host và CodingBox đều dựa vào.

Lớp vật lý

  • Hai đường open-drain, SCL và SDA, được kéo lên (pull-up) ở phía host; logic 3,3 V.
  • Module luôn là slave; host (hoặc bộ lập trình) là master và tạo xung nhịp.
  • Module có thể kéo giãn xung nhịp (giữ SCL ở mức thấp) trong khi vi điều khiển lấy dữ liệu — các đặc tả cho phép tới 500 µs.
  • Sự hiện diện và việc chọn module là các chân riêng, không phải giao dịch trên bus: MOD_ABS (SFP), ModPrsL và ModSelL (nhóm QSFP và CMIS). ModSelL cho phép nhiều module dùng chung một bus; SFP không có chân chọn, nên host phải cấp cho mỗi cage một bus riêng hoặc dùng bộ dồn kênh (multiplexer).

Không gian địa chỉ theo từng đặc tả

HọĐịa chỉ thiết bị (ghi 8-bit / 7-bit)Tổ chứcChọn trang
SFP, SFP+, SFP28 (SFF-8472)A0h / 50h thông tin nhận dạng, A2h / 51h chẩn đoánA0h: 256 byte phẳng; A2h: 128 byte phẳng + nửa trên phân trang tùy chọnbyte 127 của A2h, nếu bit 4 của byte 64 ở A0h được bật
XFP (INF-8077i)A0h128 byte phẳng + các “bảng” trên phân trangbyte 127
QSFP+, QSFP28 (SFF-8636)A0h128 byte phẳng + 128 byte trên phân trangbyte 127
QSFP-DD, OSFP, SFP-DD… (CMIS)A0h128 byte phẳng + bank × trang của 128 byte trênbyte 126 chọn bank, byte 127 chọn trang

Do đó một SFP cần hai địa chỉ thiết bị và không cần phân trang cho phần cơ bản; mọi thứ sau XFP dùng một địa chỉ và có phân trang. Một số SFP thế hệ cũ bật bit 2 của byte 92 ở A0h (“cần đổi địa chỉ”) và cần một chuỗi lệnh riêng của nhà sản xuất trước khi A2h phản hồi.

Giao dịch

Thao tácTrình tựGhi chú
Đọc ngẫu nhiênSTART · địa chỉ thiết bị+W · offset byte · START · địa chỉ thiết bị+R · dữ liệu… · STOPkiểu đọc thường dùng hằng ngày; offset tự tăng
Đọc tuần tựtiếp tục cấp xung sau byte đầu tiênquay vòng từ 255 → 0 trong phạm vi thiết bị/trang hiện tại
Đọc tại địa chỉ hiện tạiSTART · địa chỉ thiết bị+R · dữ liệutiếp tục từ offset cuối cùng — dễ lỗi nếu có master khác can thiệp vào giữa chừng
Ghi từng byteSTART · địa chỉ+W · offset · dữ liệu · STOPsau đó chờ t_WR
Ghi theo trangSTART · địa chỉ+W · offset · dữ liệu × n · STOPbị giới hạn bởi thiết bị nhớ (thường 4–16 byte) và không được vượt qua ranh giới trang nội bộ của nó
Thăm dò ACKphát START + địa chỉ+W liên tục cho tới khi module ACKcách nhanh nhất để biết chu kỳ ghi đã xong

Đọc một trang trên luôn cần hai giao dịch: ghi byte chọn trang (127, và 126 cho bank của CMIS), rồi đọc 128–255. Lựa chọn này còn giữ nguyên cho tới khi bị thay đổi, đó là lý do vì sao một lựa chọn trang cũ là nguồn gốc kinh điển của lỗi đọc “sai nội dung”.

Tốc độ

Đặc tảXung nhịp
SFF-8472 (SFP)nền tảng 100 kHz; một số module chịu được 400 kHz
INF-8077i (XFP)100 kHz
SFF-8636 rev 2.x (QSFP)tới 400 kHz
Thông số phần cứng CMIS / QSFP-DD / OSFPtới 400 kHz

Chạy chậm hơn luôn hợp lệ. Khi ghi, phần lớn bộ lập trình giảm tốc độ xuống thấp hơn nhiều so với xung nhịp danh định — xuống mức kilohertz thấp — vì chu kỳ ghi EEPROM và các module qua trung gian vi điều khiển nhạy cảm với thời gian hơn nhiều so với khi đọc.

Các mốc thời gian quan trọng

Tham sốGiới hạn điển hìnhÝ nghĩa
t_init (SFP)300 mstừ khi cấp nguồn / bỏ TX_DISABLE cho tới khi module hoạt động đầy đủ và bus phản hồi
t_init (QSFP)2 scho tới khi khởi tạo hoàn tất và Data_Not_Ready được xóa
MgmtInit (CMIS)≤ 2 s theo thông số phần cứngcho tới khi module rời khỏi MgmtInit và thông tin nhận dạng hợp lệ
t_WR40 mschu kỳ ghi tối đa cho một byte hoặc ghi tuần tự; thăm dò ACK hoặc chờ
t_clock_hold500 µsmức kéo giãn xung nhịp tối đa mà module được phép
ton_IntL200 mstừ khi có sự kiện cờ tới khi IntL được kích hoạt
Dữ liệu sẵn sàngbit 0 của byte 110 (SFP), bit 0 của byte 2 (QSFP)đừng tin các giá trị giám sát khi bit này còn được bật

Các lỗi thường gặp và cách khắc phục

Triệu chứngNguyên nhân giao thứcCách khắc phục
Toàn FFhkhông có ACK — sai địa chỉ thiết bị, trang chưa triển khai, module vắng mặtkiểm tra A0h so với A2h, bit trang, độ cắm khít
Sai nội dunglựa chọn trang/bank đã cũghi 127 (và 126) trước mỗi lần truy cập trang trên
Byte bị hỏngxung nhịp quá nhanh, dây dẫn quá dài, tranh chấp với host đang thăm dò DDMgiảm tốc độ, dùng cáp ngắn, đọc trên bàn thử thay vì trên switch đang hoạt động
Ghi “thành công” nhưng đọc lại vẫn thấy dữ liệu cũghi quá nhanh, bỏ qua t_WR, vượt qua ranh giới ghi trangghi từng byte hoặc từng đoạn nhỏ kèm thời gian chờ; thăm dò ACK
Bus treo, SCL hoặc SDA kẹt ở mức thấpgiao dịch bị ngắt giữa chừngcấp ra chín xung SCL, rồi STOP; tắt/bật lại nguồn module
Hoạt động trên switch nhưng không hoạt động trên bộ lập trìnhmodule cần được giải phóng LPMode hoặc cần chân chọntôn trọng ModSelL/LPMode; chờ đủ t_init

Cách chẩn đoán trên bàn thử cho các trường hợp này được tập hợp trong Lỗi đọc và ghi EEPROM; các cơ chế bảo vệ vận hành bên trên bus (mật khẩu, WP phần cứng, lệnh lưu) nằm trong Các kiểu bảo vệ ghi.

Đọc trong hệ thống đang hoạt động

Host thăm dò DDM mỗi vài giây và phản ứng theo cờ; một master thứ hai trên cùng bus (kẹp của bộ lập trình, công cụ in-band) gây ra xung đột, ghi sai địa chỉ và, tệ nhất, làm hỏng module vĩnh viễn do một lần ghi trang rơi vào sai offset. Nếu bắt buộc, hãy đọc tại chỗ; còn ghi thì thực hiện trên bàn thử.

Trong CodingBox

CodingBox tự động xử lý mô hình địa chỉ theo từng form factor — A0h/A2h cho SFP, phân trang cho QSFP và XFP, bank + trang cho CMIS — cho phép bạn đặt tốc độ bus và thời gian ghi theo từng hồ sơ bộ lập trình, và xác minh mỗi lần ghi bằng cách đọc lại (Ghi vào module).


Nếu bạn phát hiện thông tin chưa chính xác hoặc lỗi trong bài viết này, hãy chọn đoạn liên quan và nhấn Ctrl+Enter để .