Interfaccia a due fili: indirizzi, pagine, banchi e timing · Specifiche e standard · Ricetrasmettitori ottici e cavi · Documentazione · CodingBox
CodingBox Documentazione

Interfaccia a due fili: indirizzi, pagine, banchi e timing

Ogni modulo pluggable è gestito sugli stessi due fili — una linea di clock seriale e una linea dati seriale — usando il protocollo I²C che le specifiche chiamano interfaccia a due fili (TWI). Ciò che differisce tra i moduli SFP, QSFP, XFP e CMIS è come lo spazio di indirizzi è organizzato sopra questo livello: dispositivi separati, memoria paginata, o banchi di pagine. Questo materiale è la visione a livello di protocollo su cui si basano programmatori, host e CodingBox.

Livello fisico

  • Due linee open-drain, SCL e SDA, con pull-up lato host; logica a 3,3 V.
  • Il modulo è sempre lo slave; l’host (o il programmatore) è il master e genera il clock.
  • I moduli possono allungare il clock (mantenere SCL basso) mentre un microcontroller recupera i dati — le specifiche consentono fino a 500 µs.
  • Presenza e selezione sono pin separati, non transazioni sul bus: MOD_ABS (SFP), ModPrsL e ModSelL (classe QSFP e CMIS). ModSelL permette a più moduli di condividere un bus; l’SFP non ha un pin di selezione, quindi gli host assegnano a ogni gabbia il proprio bus o un multiplexer.

Spazio di indirizzi per specifica

FamigliaIndirizzi dispositivo (scrittura a 8 bit / 7 bit)OrganizzazioneSelezione pagina
SFP, SFP+, SFP28 (SFF-8472)A0h / 50h identità, A2h / 51h diagnosticaA0h: 256 byte piatti; A2h: 128 piatti + metà superiore paginata opzionalebyte 127 di A2h, se il bit 4 del byte 64 di A0h è impostato
XFP (INF-8077i)A0h128 piatti + «tabelle» superiori paginatebyte 127
QSFP+, QSFP28 (SFF-8636)A0h128 piatti + 128 superiori paginatibyte 127
QSFP-DD, OSFP, SFP-DD… (CMIS)A0h128 piatti + banchi × pagine di 128 superioribyte 126 banco, byte 127 pagina

Un SFP richiede quindi due indirizzi dispositivo e nessuna paginazione per le funzioni di base; tutto ciò che viene dopo l’XFP usa un indirizzo e la paginazione. Alcuni SFP legacy impostano il bit 2 del byte 92 di A0h («cambio di indirizzo richiesto») e necessitano di una sequenza del produttore prima che A2h risponda.

Transazioni

OperazioneSequenzaNote
Lettura casualeSTART · indirizzo dispositivo+W · offset di byte · START · indirizzo dispositivo+R · dati… · STOPla lettura di uso quotidiano; l’offset si autoincrementa
Lettura sequenzialecontinuare il clock dopo il primo bytericomincia da 255 → 0 all’interno della vista corrente di dispositivo/pagina
Lettura all’indirizzo correnteSTART · indirizzo dispositivo+R · daticontinua dall’ultimo offset — fragile se un altro master è intervenuto
Scrittura di byteSTART · indirizzo+W · offset · dati · STOPpoi attendere t_WR
Scrittura di paginaSTART · indirizzo+W · offset · dati × n · STOPlimitata dal dispositivo di memoria (tipicamente 4–16 byte) e non deve attraversare il proprio limite interno di pagina
Polling di confermaemettere START + indirizzo+W finché il modulo non conferma (ACK)il modo più rapido per sapere che un ciclo di scrittura è terminato

Leggere una pagina superiore sono sempre due transazioni: scrivere il byte di selezione pagina (127, e 126 per i banchi CMIS), poi leggere 128–255. La selezione persiste finché non viene cambiata, motivo per cui una selezione di pagina obsoleta è una fonte classica di letture con «contenuto errato».

Velocità

SpecificaClock
SFF-8472 (SFP)100 kHz di base; alcuni moduli tollerano 400 kHz
INF-8077i (XFP)100 kHz
SFF-8636 rev 2.x (QSFP)fino a 400 kHz
Specifiche hardware CMIS / QSFP-DD / OSFPfino a 400 kHz

Più lento è sempre lecito. Per le scritture la maggior parte dei programmatori scende molto al di sotto del clock nominale — nell’ordine dei pochi kilohertz — perché i cicli di scrittura dell’EEPROM e i moduli mediati da microcontroller sono molto più sensibili alla temporizzazione rispetto alle letture.

Tempistiche importanti

ParametroLimite tipicoSignificato
t_init (SFP)300 msdall’accensione / dalla negazione di TX_DISABLE finché il modulo è pienamente operativo e il bus risponde
t_init (QSFP)2 sfinché l’inizializzazione si completa e Data_Not_Ready si azzera
MgmtInit (CMIS)≤ 2 s secondo le specifiche hardwarefinché il modulo esce da MgmtInit e l’identità è valida
t_WR40 msciclo di scrittura massimo per una scrittura di byte o sequenziale; eseguire il polling dell’ACK o attendere
t_clock_hold500 µsallungamento massimo del clock da parte del modulo
ton_IntL200 msdall’evento di flag all’asserzione di IntL
Dati prontibyte 110 bit 0 (SFP), byte 2 bit 0 (QSFP)non fidarsi dei monitor finché è impostato

Insidie e le relative soluzioni

SintomoCausa nel protocolloSoluzione
Tutto FFhnessun ACK — indirizzo dispositivo errato, pagina non implementata, modulo assenteverificare A0h rispetto ad A2h, bit di pagina, inserimento
Contenuto erratoselezione di pagina/banco obsoletascrivere 127 (e 126) prima di ogni accesso a pagina superiore
Byte corrotticlock troppo veloce, cavi lunghi, contesa con un host che esegue il polling DDMrallentare, cavo corto, leggere al banco e non in uno switch in produzione
La scrittura «riesce», la rilettura mostra il vecchio valorescrittura troppo rapida, t_WR ignorato, superato un limite di scrittura di paginascritture di byte o piccoli blocchi con attese; polling dell’ACK
Il bus si blocca, SCL o SDA bloccati a bassotransazione interrottagenerare nove impulsi SCL, poi STOP; spegnere e riaccendere il modulo
Funziona nello switch, morto sul programmatoreil modulo si aspetta che LPMode sia rilasciato o un pin di selezionerispettare ModSelL/LPMode; consentire t_init

La diagnostica da banco per questi casi è raccolta in Errori di lettura e scrittura EEPROM; gli schemi di protezione che si appoggiano sopra il bus (password, WP hardware, comandi di salvataggio) sono in Tipi di protezione in scrittura.

Lettura in un sistema in produzione

Un host esegue il polling DDM ogni pochi secondi e reagisce ai flag; un secondo master sullo stesso bus (una clip di programmazione, uno strumento in-band) provoca collisioni, scritture indirizzate in modo errato e, nel peggiore dei casi, un modulo reso inutilizzabile da una scrittura di pagina che cade sull’offset sbagliato. Leggere sul posto se necessario; scrivere al banco.

In CodingBox

CodingBox gestisce automaticamente il modello di indirizzi per fattore di forma — A0h/A2h per SFP, paginazione per QSFP e XFP, banco + pagina per CMIS —, permette di impostare la velocità del bus e la temporizzazione di scrittura per profilo di programmatore, e verifica ogni scrittura rileggendo (Scrittura di un modulo).


Se trovi un’imprecisione o un errore in questo articolo, seleziona il passaggio corrispondente e premi Ctrl+Enter per .