Interfaz de dos hilos: direcciones, páginas, bancos y tiempos · Especificaciones y normas · Transceptores y cables ópticos · Documentación · CodingBox
CodingBox Documentación

Interfaz de dos hilos: direcciones, páginas, bancos y tiempos

Todo módulo enchufable se gestiona a través de los mismos dos hilos — una línea de reloj serie y una línea de datos serie — mediante el protocolo I²C que las especificaciones llaman interfaz de dos hilos (TWI). Lo que difiere entre los módulos SFP, QSFP, XFP y CMIS es cómo se organiza el espacio de direcciones sobre esta base: dispositivos separados, memoria paginada o bancos de páginas. Este material es la visión a nivel de protocolo en la que se apoyan tanto los programadores como los hosts y CodingBox.

Capa física

  • Dos líneas de drenador abierto, SCL y SDA, con resistencias de pull-up en el lado del host; lógica de 3,3 V.
  • El módulo siempre es el esclavo; el host (o el programador) es el maestro y genera el reloj.
  • Los módulos pueden estirar el reloj (mantener SCL en bajo) mientras un microcontrolador obtiene los datos — las especificaciones permiten hasta 500 µs.
  • La presencia y la selección son pines independientes, no transacciones de bus: MOD_ABS (SFP), ModPrsL y ModSelL (clase QSFP y CMIS). ModSelL permite que varios módulos compartan un bus; el SFP no tiene pin de selección, por lo que los hosts dan a cada jaula su propio bus o un multiplexor.

Espacio de direcciones por especificación

FamiliaDirecciones de dispositivo (escritura de 8 bits / 7 bits)OrganizaciónSelección de página
SFP, SFP+, SFP28 (SFF-8472)A0h / 50h identidad, A2h / 51h diagnósticoA0h: 256 bytes planos; A2h: 128 planos + mitad superior paginada opcionalbyte 127 de A2h, si el bit 4 del byte 64 de A0h está activado
XFP (INF-8077i)A0h128 planos + "tablas" superiores paginadasbyte 127
QSFP+, QSFP28 (SFF-8636)A0h128 planos + 128 superiores paginadosbyte 127
QSFP-DD, OSFP, SFP-DD… (CMIS)A0h128 planos + bancos × páginas de 128 superioresbyte 126 banco, byte 127 página

Por eso un SFP necesita dos direcciones de dispositivo y ninguna paginación para lo básico; todo lo posterior al XFP usa una dirección y paginación. Algunos SFP antiguos activan el bit 2 del byte 92 de A0h ("cambio de dirección requerido") y necesitan una secuencia del fabricante antes de que A2h responda.

Transacciones

OperaciónSecuenciaNotas
Lectura aleatoriaSTART · dirección de dispositivo+W · desplazamiento de byte · START · dirección de dispositivo+R · datos… · STOPla lectura habitual; el desplazamiento se autoincrementa
Lectura secuencialcontinuar el reloj después del primer byteda la vuelta en 255 → 0 dentro de la vista actual de dispositivo/página
Lectura de dirección actualSTART · dirección de dispositivo+R · datoscontinúa desde el último desplazamiento — frágil si otro maestro intervino
Escritura de byteSTART · dirección+W · desplazamiento · dato · STOPdespués esperar t_WR
Escritura de páginaSTART · dirección+W · desplazamiento · dato × n · STOPlimitada por el dispositivo de memoria (típicamente 4–16 bytes) y no debe cruzar su límite interno de página
Sondeo de confirmaciónemitir START + dirección+W hasta que el módulo confirme (ACK)la forma más rápida de saber que un ciclo de escritura terminó

Leer una página superior siempre son dos transacciones: escribir el byte de selección de página (127, y 126 para los bancos de CMIS), después leer 128–255. La selección persiste hasta que se cambia, por lo que una selección de página obsoleta es una fuente clásica de lecturas con "contenido incorrecto".

Velocidad

EspecificaciónReloj
SFF-8472 (SFP)100 kHz de referencia; algunos módulos toleran 400 kHz
INF-8077i (XFP)100 kHz
SFF-8636 rev 2.x (QSFP)hasta 400 kHz
Especificaciones de hardware CMIS / QSFP-DD / OSFPhasta 400 kHz

Más lento siempre es válido. Para las escrituras, la mayoría de los programadores bajan mucho el reloj nominal — a los pocos kilohercios — porque los ciclos de escritura de la EEPROM y los módulos mediados por microcontrolador son mucho más sensibles a la temporización que las lecturas.

Temporización que importa

ParámetroLímite típicoSignificado
t_init (SFP)300 msdesde el encendido / la desactivación de TX_DISABLE hasta que el módulo está totalmente operativo y el bus responde
t_init (QSFP)2 shasta que se completa la inicialización y se borra Data_Not_Ready
MgmtInit (CMIS)≤ 2 s según las especificaciones de hardwarehasta que el módulo sale de MgmtInit y la identidad es válida
t_WR40 msciclo de escritura máximo para una escritura de byte o secuencial; sondear ACK o esperar
t_clock_hold500 µsestiramiento de reloj máximo por parte del módulo
ton_IntL200 msdesde el evento del indicador hasta que se activa IntL
Datos listosbyte 110, bit 0 (SFP), byte 2, bit 0 (QSFP)no confiar en los monitores mientras esté activado

Fallos habituales y sus soluciones

SíntomaCausa en el protocoloSolución
Todo FFhsin ACK — dirección de dispositivo incorrecta, página no implementada, módulo ausentecomprobar A0h frente a A2h, bits de página, asentamiento
Contenido incorrectoselección de página/banco obsoletaescribir 127 (y 126) antes de cada acceso a página superior
Bytes corruptosreloj demasiado rápido, cables largos, contención con un host que sondea DDMreducir la velocidad, cable corto, leer en el banco de pruebas y no en un switch en producción
La escritura "tiene éxito" pero se lee lo antiguose escribió demasiado rápido, se ignoró t_WR, se cruzó un límite de escritura de páginaescrituras de byte o fragmentos pequeños con esperas; sondeo de ACK
El bus se cuelga, SCL o SDA atascados en bajotransacción interrumpidagenerar nueve pulsos de SCL, después STOP; apagar y encender el módulo
Funciona en el switch, muerto en el programadorel módulo espera que se libere LPMode o un pin de selecciónrespetar ModSelL/LPMode; permitir t_init

Los diagnósticos de banco para estos casos están recopilados en Errores de lectura y escritura de EEPROM; los esquemas de protección que se apoyan sobre el bus (contraseñas, WP por hardware, comandos de guardado) están en Tipos de protección contra escritura.

Leyendo en un sistema en producción

Un host sondea DDM cada pocos segundos y reacciona a los indicadores; un segundo maestro en el mismo bus (una pinza de programador, una herramienta en banda) provoca colisiones, escrituras mal dirigidas y, en el peor de los casos, un módulo inutilizado por una escritura de página que cae en el desplazamiento equivocado. Lea en el sitio si debe hacerlo; escriba en el banco.

En CodingBox

CodingBox gestiona el modelo de direcciones por factor de forma automáticamente — A0h/A2h para SFP, paginación para QSFP y XFP, banco + página para CMIS —, permite ajustar la velocidad de bus y la temporización de escritura por perfil de programador, y verifica cada escritura leyendo de vuelta (Escribir un módulo).


Si encuentra una inexactitud o un error en este material, seleccione el fragmento correspondiente y pulse Ctrl+Enter para .