Zweidraht-Interface: Adressen, Seiten, Bänke und Timing · Spezifikationen und Standards · Optische Transceiver und Kabel · Dokumentation · CodingBox
CodingBox Dokumentation

Zweidraht-Interface: Adressen, Seiten, Bänke und Timing

Jedes steckbare Modul wird über dieselben zwei Leitungen verwaltet — eine serielle Takt- und eine serielle Datenleitung — mit dem I²C-Protokoll, das die Spezifikationen Two-Wire Interface (TWI) nennen. Was sich zwischen SFP-, QSFP-, XFP- und CMIS-Modulen unterscheidet, ist die Organisation des Adressraums darüber: getrennte Bausteine, seitenweiser Speicher oder Banks von Seiten. Dieses Material ist die Sicht auf Protokollebene, auf die sich Programmiergeräte, Hosts und CodingBox gleichermaßen stützen.

Physikalische Schicht

  • Zwei Open-Drain-Leitungen, SCL und SDA, host-seitig hochgezogen; 3,3-V-Logik.
  • Das Modul ist immer der Slave; der Host (oder das Programmiergerät) ist der Master und erzeugt den Takt.
  • Module dürfen den Takt strecken (SCL auf Low halten), während ein Mikrocontroller Daten holt — die Spezifikationen erlauben bis zu 500 µs.
  • Anwesenheit und Auswahl sind eigene Pins, keine Bus-Transaktionen: MOD_ABS (SFP), ModPrsL und ModSelL (QSFP-Klasse und CMIS). ModSelL lässt mehrere Module einen Bus teilen; SFP hat keinen Select-Pin, daher geben Hosts jedem Käfig einen eigenen Bus oder einen Multiplexer.

Adressraum nach Spezifikation

FamilieGeräteadressen (8-Bit-Schreiben/7-Bit)OrganisationSeitenauswahl
SFP, SFP+, SFP28 (SFF-8472)A0h/50h Identität, A2h/51h DiagnoseA0h: 256 flache Bytes; A2h: 128 flach + optional seitenweise obere HälfteA2h Byte 127, wenn A0h Byte 64 Bit 4 gesetzt ist
XFP (INF-8077i)A0h128 flach + seitenweise obere „Tabellen“Byte 127
QSFP+, QSFP28 (SFF-8636)A0h128 flach + seitenweise obere 128Byte 127
QSFP-DD, OSFP, SFP-DD… (CMIS)A0h128 flach + Banks × Seiten der oberen 128Byte 126 Bank, Byte 127 Seite

Ein SFP braucht daher zwei Geräteadressen und für die Grundfunktionen kein Paging; alles nach XFP verwendet eine Adresse und Paging. Manche ältere SFPs setzen A0h Byte 92 Bit 2 („Adresswechsel erforderlich“) und benötigen eine Herstellersequenz, bevor A2h antwortet.

Transaktionen

OperationAblaufAnmerkungen
Random ReadSTART · Geräteadresse+W · Byte-Offset · START · Geräteadresse+R · Daten… · STOPder alltägliche Lesevorgang; Offset zählt automatisch weiter
Sequential ReadTakten nach dem ersten Byte fortsetzenspringt bei 255 → 0 innerhalb der aktuellen Geräte-/Seitenansicht um
Current-Address ReadSTART · Geräteadresse+R · Datensetzt beim letzten Offset fort — anfällig, falls ein anderer Master eingegriffen hat
Byte WriteSTART · Adresse+W · Offset · Daten · STOPdanach t_WR abwarten
Page WriteSTART · Adresse+W · Offset · Daten × n · STOPbegrenzt durch den Speicherbaustein (typisch 4–16 Byte) und darf dessen interne Seitengrenze nicht überschreiten
Acknowledge PollingSTART + Adresse+W ausgeben, bis das Modul ACK sendetder schnellste Weg, um zu erkennen, dass ein Schreibzyklus abgeschlossen ist

Das Lesen einer oberen Seite ist immer zweistufig: zuerst das Seitenauswahl-Byte schreiben (127, bei CMIS-Banks auch 126), dann 128–255 lesen. Die Auswahl bleibt bestehen, bis sie geändert wird — deshalb ist eine veraltete Seitenauswahl eine klassische Ursache für „falschen Inhalt“ beim Lesen.

Geschwindigkeit

SpezifikationTakt
SFF-8472 (SFP)100 kHz als Basis; manche Module vertragen 400 kHz
INF-8077i (XFP)100 kHz
SFF-8636 rev 2.x (QSFP)bis zu 400 kHz
CMIS-/QSFP-DD-/OSFP-Hardwarespezifikationenbis zu 400 kHz

Langsamer ist immer zulässig. Für Schreibvorgänge gehen die meisten Programmiergeräte weit unter den Nominaltakt — bis in den niedrigen Kilohertz-Bereich —, weil EEPROM-Schreibzyklen und über Mikrocontroller vermittelte Module viel empfindlicher auf Timing reagieren als Lesevorgänge.

Timing, auf das es ankommt

ParameterTypisches LimitBedeutung
t_init (SFP)300 msvom Einschalten/Aufheben von TX_DISABLE bis das Modul voll betriebsbereit ist und der Bus antwortet
t_init (QSFP)2 sbis die Initialisierung abgeschlossen ist und Data_Not_Ready gelöscht wird
MgmtInit (CMIS)≤ 2 s nach Hardwarespezifikationenbis das Modul MgmtInit verlässt und die Identität gültig ist
t_WR40 msmaximaler Schreibzyklus für einen Byte- oder sequenziellen Schreibvorgang; ACK abfragen oder abwarten
t_clock_hold500 µsmaximale Taktstreckung durch das Modul
ton_IntL200 msvom Flag-Ereignis bis IntL gesetzt ist
Data ReadyByte 110 Bit 0 (SFP), Byte 2 Bit 0 (QSFP)Monitoren nicht trauen, solange gesetzt

Fallstricke und ihre Behebung

SymptomProtokollursacheBehebung
Alles FFhkein ACK — falsche Geräteadresse, Seite nicht implementiert, Modul fehltA0h vs. A2h, Seitenbits, Sitz prüfen
Falscher Inhaltveraltete Seiten-/Bank-Auswahlvor jedem Zugriff auf eine obere Seite 127 (und 126) schreiben
Verfälschte BytesTakt zu schnell, lange Leitungen, Kollision mit einem den DDM abfragenden Hostverlangsamen, kurzes Kabel, auf der Werkbank statt im laufenden Switch lesen
Schreiben „erfolgreich“, liest alten Wert zurückzu schnell geschrieben, t_WR ignoriert, Seitenschreibgrenze überschrittenByte-Schreibvorgänge oder kleine Blöcke mit Wartezeiten; ACK-Polling
Bus hängt, SCL oder SDA bleibt auf Lowunterbrochene Transaktionneun SCL-Impulse austakten, dann STOP; Modul aus- und wieder einstecken
Funktioniert im Switch, tot am ProgrammiergerätModul erwartet freigegebenen LPMode oder einen Select-PinModSelL/LPMode beachten; t_init abwarten

Die werkbankseitige Diagnose dazu ist gesammelt unter Lese- und Schreibfehler im EEPROM; Schutzmechanismen, die auf dem Bus aufsetzen (Passwörter, Hardware-Schreibschutz, Speicherbefehle), stehen unter Arten des Schreibschutzes.

Lesen in einem laufenden System

Ein Host fragt DDM alle paar Sekunden ab und reagiert auf Flags; ein zweiter Master am selben Bus (ein Programmierclip, ein Inband-Tool) verursacht Kollisionen, falsch adressierte Schreibvorgänge und im schlimmsten Fall ein Modul, das durch einen auf dem falschen Offset landenden Page-Write unbrauchbar wird. Wenn nötig, vor Ort lesen; auf der Werkbank schreiben.

In CodingBox

CodingBox handhabt das Adressmodell je Formfaktor automatisch — A0h/A2h für SFP, Paging für QSFP und XFP, Bank + Seite für CMIS —, lässt Sie Busgeschwindigkeit und Schreib-Timing je Programmiergeräte-Profil einstellen und verifiziert jeden Schreibvorgang durch Rücklesen (Ein Modul beschreiben).


Wenn Sie in diesem Artikel eine Ungenauigkeit oder einen Fehler finden, markieren Sie die betreffende Stelle und drücken Sie Ctrl+Enter, um .