Interface deux fils : adresses, pages, banques et temporisation · Spécifications et normes · Transceivers et câbles optiques · Documentation · CodingBox
CodingBox Documentation

Interface deux fils : adresses, pages, banques et temporisation

Chaque module enfichable est géré sur les deux mêmes fils — une horloge série et une ligne de données série — via le protocole I²C que les spécifications appellent l’interface à deux fils (TWI). Ce qui diffère entre les modules SFP, QSFP, XFP et CMIS, c’est la façon dont l’espace d’adressage est organisé par-dessus : dispositifs séparés, mémoire paginée, ou banques de pages. Ce contenu est la vue au niveau protocole sur laquelle s’appuient les programmateurs, les hôtes et CodingBox.

Couche physique

  • Deux lignes à drain ouvert, SCL et SDA, tirées au niveau haut côté hôte ; logique 3,3 V.
  • Le module est toujours esclave ; l’hôte (ou le programmateur) est le maître et génère l’horloge.
  • Les modules peuvent étirer l’horloge (maintenir SCL bas) pendant qu’un microcontrôleur récupère des données — les spécifications autorisent jusqu’à 500 µs.
  • La présence et la sélection sont des broches séparées, pas des transactions de bus : MOD_ABS (SFP), ModPrsL et ModSelL (classe QSFP et CMIS). ModSelL permet à plusieurs modules de partager un même bus ; le SFP n’a pas de broche de sélection, donc les hôtes donnent à chaque cage son propre bus ou un multiplexeur.

Espace d’adressage par spécification

FamilleAdresses de dispositif (écriture 8 bits / 7 bits)OrganisationSélection de page
SFP, SFP+, SFP28 (SFF-8472)identité A0h / 50h, diagnostics A2h / 51hA0h : 256 octets plats ; A2h : 128 plats + moitié supérieure paginée facultativeoctet 127 de A2h, si le bit 4 de l’octet 64 de A0h est positionné
XFP (INF-8077i)A0h128 plats + « tables » supérieures paginéesoctet 127
QSFP+, QSFP28 (SFF-8636)A0h128 plats + 128 supérieurs paginésoctet 127
QSFP-DD, OSFP, SFP-DD… (CMIS)A0h128 plats + banques × pages de 128 supérieursoctet 126 banque, octet 127 page

Un SFP a donc besoin de deux adresses de dispositif et d’aucune pagination pour l’essentiel ; tout ce qui vient après le XFP utilise une seule adresse et la pagination. Certains SFP anciens positionnent le bit 2 de l’octet 92 de A0h (« changement d’adresse requis ») et nécessitent une séquence fournisseur avant que A2h ne réponde.

Transactions

OpérationSéquenceRemarques
Lecture aléatoireSTART · adresse dispositif+W · décalage d’octet · START · adresse dispositif+R · données… · STOPla lecture courante ; le décalage s’incrémente automatiquement
Lecture séquentiellepoursuite de l’horloge après le premier octetboucle de 255 → 0 dans la vue courante du dispositif/de la page
Lecture à l’adresse couranteSTART · adresse dispositif+R · donnéesreprend au dernier décalage — fragile si un autre maître est intervenu
Écriture d’octetSTART · addr+W · décalage · données · STOPpuis attendre t_WR
Écriture de pageSTART · addr+W · décalage · données × n · STOPlimitée par le dispositif mémoire (typiquement 4–16 octets) et ne doit pas franchir sa frontière de page interne
Interrogation d’acquittementémettre START + addr+W jusqu’à ce que le module envoie un ACKle moyen le plus rapide de savoir qu’un cycle d’écriture est terminé

Lire une page supérieure est toujours deux transactions : écrire l’octet de sélection de page (127, et 126 pour les banques CMIS), puis lire 128–255. La sélection persiste jusqu’à modification, ce qui explique qu’une sélection de page obsolète soit une cause classique de lectures au « mauvais contenu ».

Vitesse

SpécificationHorloge
SFF-8472 (SFP)base 100 kHz ; certains modules tolèrent 400 kHz
INF-8077i (XFP)100 kHz
SFF-8636 rev 2.x (QSFP)jusqu’à 400 kHz
Spécifications matérielles CMIS / QSFP-DD / OSFPjusqu’à 400 kHz

Une vitesse plus lente est toujours autorisée. Pour les écritures, la plupart des programmateurs descendent bien en dessous de l’horloge nominale — jusque dans les kilohertz bas — car les cycles d’écriture EEPROM et les modules à microcontrôleur sont bien plus sensibles à la temporisation que les lectures.

Temporisations importantes

ParamètreLimite typiqueSignification
t_init (SFP)300 msde la mise sous tension / négation de TX_DISABLE jusqu’à ce que le module soit pleinement opérationnel et que le bus réponde
t_init (QSFP)2 sjusqu’à ce que l’initialisation se termine et que Data_Not_Ready s’efface
MgmtInit (CMIS)≤ 2 s selon les spécifications matériellesjusqu’à ce que le module quitte MgmtInit et que l’identité soit valide
t_WR40 mscycle d’écriture maximal pour une écriture d’octet ou séquentielle ; interroger l’ACK ou attendre
t_clock_hold500 µsétirement d’horloge maximal par le module
ton_IntL200 msde l’événement d’indicateur à l’activation d’IntL
Données prêtesbit 0 de l’octet 110 (SFP), bit 0 de l’octet 2 (QSFP)ne pas se fier aux moniteurs tant que positionné

Pièges et corrections

SymptômeCause protocolaireCorrection
Tout à FFhpas d’ACK — mauvaise adresse de dispositif, page non mise en œuvre, module absentvérifier A0h contre A2h, les bits de page, l’insertion
Mauvais contenusélection de page/banque obsolèteécrire 127 (et 126) avant chaque accès à une page supérieure
Octets corrompushorloge trop rapide, câbles longs, conflit avec un hôte qui interroge le DDMralentir, câble court, lire sur banc plutôt que dans un commutateur en production
L’écriture « réussit », relit l’ancienne valeurécriture trop rapide, t_WR ignoré, franchissement d’une frontière d’écriture de pageécritures d’octet ou petits blocs avec attentes ; interrogation d’ACK
Bus bloqué, SCL ou SDA maintenu bastransaction interrompuegénérer neuf impulsions SCL, puis STOP ; réinitialiser l’alimentation du module
Fonctionne dans le commutateur, mort sur le programmateurle module attend LPMode relâché ou une broche de sélectionrespecter ModSelL/LPMode ; laisser le temps t_init

Les diagnostics correspondants côté banc sont réunis dans Erreurs de lecture et d’écriture EEPROM ; les mécanismes de protection qui se superposent au bus (mots de passe, WP matérielle, commandes de sauvegarde) figurent dans Types de protection en écriture.

Lecture dans un système en production

Un hôte interroge le DDM toutes les quelques secondes et réagit aux indicateurs ; un second maître sur le même bus (une pince de programmateur, un outil in-band) provoque des collisions, des écritures mal adressées et, au pire, un module briqué par une écriture de page tombant sur le mauvais décalage. Lisez en place si nécessaire ; écrivez sur le banc.

Dans CodingBox

CodingBox gère automatiquement le modèle d’adressage selon le facteur de forme — A0h/A2h pour le SFP, pagination pour le QSFP et le XFP, banque + page pour CMIS —, vous permet de régler la vitesse de bus et la temporisation d’écriture par profil de programmateur, et vérifie chaque écriture par relecture (Écrire un module).


Si vous trouvez une inexactitude ou une erreur dans cet article, sélectionnez le passage concerné et appuyez sur Ctrl+Enter pour .