Tweedraadsinterface: adressen, pagina’s, banken en timing · Specificaties en standaarden · Optische transceivers en kabels · Documentatie · CodingBox
CodingBox Documentatie

Tweedraadsinterface: adressen, pagina’s, banken en timing

Elke insteekmodule wordt beheerd via dezelfde twee draden — een seriële klok en een seriële datalijn — met het I²C-protocol dat de specificaties de tweedraadsinterface (TWI) noemen. Wat tussen SFP-, QSFP-, XFP- en CMIS-modules verschilt, is hoe de adresruimte daarboven is georganiseerd: afzonderlijke apparaten, gepagineerd geheugen of banken van pagina's. Dit materiaal beschrijft het protocolniveau waarop programmers, hosts en CodingBox vertrouwen.

Fysieke laag

  • Twee open-drainlijnen, SCL en SDA, met pull-upweerstanden aan de hostzijde; 3,3 V-logica.
  • De module is altijd de slave; de host (of programmer) is de master en genereert de klok.
  • Modules kunnen de klok rekken (SCL laag houden) terwijl een microcontroller gegevens ophaalt — de specificaties staan maximaal 500 µs toe.
  • Aanwezigheid en selectie zijn afzonderlijke pinnen, geen bus-transacties: MOD_ABS (SFP), ModPrsL en ModSelL (QSFP-klasse en CMIS). ModSelL laat meerdere modules één bus delen; SFP heeft geen selectiepin, dus hosts geven elke cage een eigen bus of een multiplexer.

Adresruimte per specificatie

FamilieApparaatadressen (8-bit schrijven / 7-bit)OrganisatiePaginaselectie
SFP, SFP+, SFP28 (SFF-8472)A0h / 50h identiteit, A2h / 51h diagnostiekA0h: 256 platte bytes; A2h: 128 platte bytes + optionele gepagineerde bovenste helftA2h byte 127, als A0h byte 64 bit 4 is ingesteld
XFP (INF-8077i)A0h128 platte bytes + gepagineerde bovenste "tabellen"byte 127
QSFP+, QSFP28 (SFF-8636)A0h128 platte bytes + gepagineerde bovenste 128 bytesbyte 127
QSFP-DD, OSFP, SFP-DD… (CMIS)A0h128 platte bytes + banken × pagina's van de bovenste 128 bytesbyte 126 bank, byte 127 pagina

Een SFP heeft dus twee apparaatadressen nodig en geen paginering voor de basis; alles na XFP gebruikt één adres en paginering. Sommige oudere SFP's stellen A0h byte 92 bit 2 ('adreswijziging vereist') in en vereisen een fabrikantsequentie voordat A2h antwoordt.

Transacties

BewerkingReeksOpmerkingen
Lezen op willekeurig adresSTART · apparaatadres+W · byte-offset · START · apparaatadres+R · gegevens… · STOPde gebruikelijke leesbewerking; de offset wordt automatisch verhoogd
Sequentieel lezenna de eerste byte de klok blijven genererenloopt bij 255 → 0 terug binnen de huidige apparaat-/paginaweergave
Lezen vanaf huidig adresSTART · apparaatadres+R · gegevensgaat verder vanaf de laatste offset — kwetsbaar als een andere master ingreep
Byte schrijvenSTART · adres+W · offset · gegevens · STOPwacht daarna op t_WR
Pagina schrijvenSTART · adres+W · offset · gegevens × n · STOPbeperkt door het geheugenapparaat (gewoonlijk 4–16 bytes) en mag de interne paginagrens niet overschrijden
ACK-pollingSTART + adres+W versturen totdat de module ACK geeftde snelste manier om vast te stellen dat een schrijfcyclus is voltooid

Het lezen van een bovenste pagina bestaat altijd uit twee transacties: schrijf de paginaselectiebyte (127 en 126 voor CMIS-banken) en lees vervolgens 128–255. De selectie blijft staan tot zij verandert; daarom is een achtergebleven paginaselectie een klassieke oorzaak van lezingen met ‘onjuiste inhoud’.

Snelheid

SpecificatieKlok
SFF-8472 (SFP)basislijn van 100 kHz; sommige modules verdragen 400 kHz
INF-8077i (XFP)100 kHz
SFF-8636 rev 2.x (QSFP)tot 400 kHz
CMIS / QSFP-DD / OSFP-hardware-specificatiestot 400 kHz

Langzamer is altijd toegestaan. Voor schrijfbewerkingen verlagen de meeste programmers de klok ver onder de nominale waarde, tot lage kilohertzwaarden, omdat EEPROM-schrijfcycli en modules die door een microcontroller worden aangestuurd veel gevoeliger zijn voor timing dan leesbewerkingen.

Timing die ertoe doet

ParameterTypische limietBetekenis
t_init (SFP)300 msvanaf inschakelen / opheffen van TX_DISABLE totdat de module volledig operationeel is en de bus antwoordt
t_init (QSFP)2 stotdat de initialisatie is voltooid en Data_Not_Ready wordt gewist
MgmtInit (CMIS)≤ 2 s volgens de hardwarespecificatiestotdat de module MgmtInit verlaat en de identiteit geldig is
t_WR40 msmaximale schrijfcyclus voor een byte of sequentiële schrijfbewerking; ACK pollen of wachten
t_clock_hold500 µsmaximale klokrekking door de module
ton_IntL200 msvanaf vlaggebeurtenis tot IntL wordt geactiveerd
Gegevens gereedbyte 110 bit 0 (SFP), byte 2 bit 0 (QSFP)vertrouw de meetwaarden niet zolang de bit is ingesteld

Valkuilen en oplossingen

SymptoomProtocoloorzaakOplossing
Alle FFhgeen ACK — verkeerd apparaatadres, pagina niet geïmplementeerd, module afwezigcontroleer A0h versus A2h, paginabits en plaatsing
Onjuiste inhoudachtergebleven pagina-/bankselectieschrijf 127 (en 126) vóór elke toegang tot een bovenste pagina
Beschadigde bytesklok te snel, lange leidingen, contentie met een host die DDM polltvertraag, gebruik een korte kabel en lees op de werkbank, niet in een actieve switch
Schrijven ‘slaagt’, leest oude waarde terugte snel geschreven, t_WR genegeerd, grens van een paginaschrijfbewerking overschredenschrijf bytes of kleine blokken met wachttijden; ACK-polling
Bus hangt, SCL of SDA blijft laagonderbroken transactiegeef negen SCL-pulsen, dan STOP; schakel de module uit en weer in
Werkt in switch, niet op programmermodule verwacht dat LPMode is opgeheven of een selectiepinrespecteer ModSelL/LPMode; houd rekening met t_init

De diagnoses op de werkbank hiervoor staan verzameld in EEPROM-lees- en schrijffouten; beschermingsmechanismen boven op de bus (wachtwoorden, hardware-WP, opslagopdrachten) staan in Typen schrijfbeveiliging.

Lezen in een live systeem

Een host pollt DDM elke paar seconden en reageert op vlaggen; een tweede master op dezelfde bus (een programmerclip, een in-bandtool) veroorzaakt botsingen, verkeerd geadresseerde schrijfbewerkingen en in het slechtste geval een module die door een paginaschrijfbewerking op de verkeerde offset onbruikbaar wordt. Lees op locatie als het moet; schrijf op de werkbank.

In CodingBox

CodingBox verwerkt het adresmodel per vormfactor automatisch: A0h/A2h voor SFP, paginering voor QSFP en XFP, bank + pagina voor CMIS. U kunt de bussnelheid en schrijftiming per programmerprofiel instellen; elke schrijfbewerking wordt geverifieerd door terug te lezen (Een module schrijven).


Vindt u een onjuistheid of fout in dit materiaal? Selecteer het betreffende fragment en druk op Ctrl+Enter om .