SFF standardization
Currently, work is on progress to standardize storage of parameters used for enhance calibration for high accuracy timing. The Standard SFF-8472 User-EEPROM space was defined as a first proposal for storage of calibration parameters. The definition in User-EEPROM is in use until further notice.
Definition of time reference planes
-
Electrical reference plane
- SFP edge connector: the landing spot of the contact finger on the SFP edge connector, pins TD+/‐ and RD+/‐.
- SMA connector (see SFP-Loopback Module): as specified in MIL-STD-348B.
-
Optical reference plane
- LC/FC/APC connector: the physical contact plane.
Common-header
The following common header applies to all formats that are defined:
Address A2H
===========
+------+--------+---------------------+-------------------------------------------------------------+
| A2H | #Bytes | Name | Description |
+------+--------+---------------------+-------------------------------------------------------------+
| Page 03h |
+------+--------+---------------------+-------------------------------------------------------------+
| 128 | 2 | Magic/Format number | 16 bit magic number |
| 130 | 1 | Version | The version number of the calibration. Current version = 2 |
| 131 | 3 | Calibration date | The date of the calibration |
| 134 | 6 | CUI resp. | Calibration Unique Identifier (Calibration responsible) |
| 140 | 1 | Stratum | Calibration Stratum. 0 being highest precision |
| 141 | 7 | Reserved | All bytes 0xFF |
| 148 | 100 | : | : |
+------+--------+---------------------+-------------------------------------------------------------+
- All 16, 24 and 32 bit values are stored in network byte order (big-endian).
Magic/Format number
Magic/Format number determines if user EEPROM space contains a valid entry. One of the following valid value determines the format of the definition. The following user space EEPROM formats are defined:
- 0xCA1B => 'CALB' Calibration EEPROM format
- 0x100B => 'LOOB' SFP-Loopback Module EEPROM format
Version
This is the version of the calibration EEPROM format. For this specification it is 2
Calibration date
This is the date the calibration was executed. A number (up to 128) is
assigned such that multiple calibrations
done in one day, can be distinguished.
byte 0 1 2
+----------+----------+----------+
| yyyyyyyy | mmmmdddd | dnnnnnnn |
+----------+----------+----------+
y = year = uint(8) + 2000 (all ones not valid)
m = month = uint(4) (all ones not valid)
d = day = uint(5)+1 (all ones not valid)
n = number = uint(7), start at 0 (all ones not valid)
Calibration Unique Identifier (CUI)
Organizationally Unique Identifier (OUI)
The ID organization responsible for the calibration. This ID can be linked to a calibration entity.
Additional information about the calibration, such as an official certificate, measurement procedures, metrological standards used and traceability information can be received from this entity and linked to the transceiver installed in the system.
The CUI consists of:
- a 48 bit OUI/CID (Organizational Unique Identifier, assigned by IEEE or Company IDentifier)
- a 48 bit OSI (Organizational Specific Identifier) assigned by the calibration responsible for internal identification (device, version , etc).
byte 0 1 2 3 4 5
+----------+----------+----------+----------+----------+----------+
| OUI/CID | OSI |
+----------+----------+----------+----------+----------+----------+
Stratum
Calibration accuracy decreases with each calibrator generation. The n-th generation has Stratum-n (0 being the highest highest accuracy). When Stratum is unused or undefined this byte should read 0xFF.
byte 0
+-----------+
| Stratum |
+-----------+
Calibration-EEPROM-format
Additional EEPROM calibration parameter storage:
- Transceiver nominal RX and TX delays
- Optical power dependent RX delay curve
- Temperature dependent delay
By storing SFP specific delays in the SFP EEPROM, these transceivers can be delay-calibrated.
When inserting a calibrated SFP transceiver, no additional calibration will be required, Since
all information is 'self contained'. Read more on the WR Calibration wiki.
The transceiver nominal delays can be set to 0 in systems with a traditional, relative, calibration scheme, or the difference in delay with regard to the standard transceiver can be set.
RX power can be measured, and the optical power dependent delay can be found using the power
dependent delay curve, and included in the round-trip delay calculation.
Address A2H
===========
+------+--------+-----------------+----------------------------------------------------------------+
| A2H | #Bytes | Name | Description |
+------+--------+-----------------+----------------------------------------------------------------+
| Page 03h |
| 128 | 20 | Common header | |
| | | | |
| 148 | 6 | Elec Opt Dly | TX: Electric => Optical delay (q24.24, ns) |
| 154 | 6 | Opt Elec Dly | RX: Optical => Electric delay (q24.24, ns) |
| 160 | 4 | Rx_Pwr_Dly(0) | RX Optical power dependent delay (q7.24, ns), 0 if unused |
| 164 | 4 | Rx_Pwr_Dly(1) | RX Optical power dependent delay (q7.24, ns), 0 if unused |
| 168 | 4 | Rx_Pwr_Dly(2) | RX Optical power dependent delay (q7.24, ns), 0 if unused |
| 172 | 4 | Rx_Pwr_Dly(3) | RX Optical power dependent delay (q7.24, ns), 0 if unused |
| 176 | 4 | Rx_Pwr_Dly(4) | RX Optical power dependent delay (q7.24, ns), 0 if unused |
| 180 | 2 | T_Detun(Offset) | Temperature de-tuning, q7.8, 0 if unused |
| 182 | 2 | T_Detun(Slope) | Temperature de-tuning, q7.8, 0 if unused |
| 184 | 63 | reserved | All bytes 0xFF |
| 247 | 1 | CC_CALIB | Checkcode over bytes 128 to 246 |
+------+--------+-----------------+----------------------------------------------------------------+
- All 16, 24 and 32 bit values are stored in network byte order (big-endian).
Common header
This header is common for all format definitions. The header is defined here.
Elec Opt Dly
Fixed electric to optical (TX) delay, in nanoseconds, using fixed point UInteger48 q24.24 format.
This gives 1/2^24 nanoseconds (= 60 as) granularity and a range from 0..16,7ms.
Note: this format is aligned with scaledNs defined in IEEE-1588.
Opt Elec Dly
Optical to electrical delay (RX), in nanoseconds, using fixed point UInteger48 q24.24 format.
This gives 1/2^24 nanoseconds (= 60 as) granularity and a range from 0..16,7ms.
Note: this format is aligned with scaledNs defined in IEEE-1588.
Rx_Pwr_Dly
Rx power delay curve. Input is Rx_PWR (see also SFF-8472, 9.3) in dBm, output is the delay in nanoseconds (fixed point Integer48 q7.24). This gives 1/2^24 nanoseconds (= 60 as) granularity and a range from +/- 128 ns. When unused then Rx_Pwr_Dly(4:0) should all be set to zero.
Rx_Pwr_Dly (ns) = Rx_Pwr_Dly(4) * Rx_PWR^4 (q7.24, ns) +
Rx_Pwr_Dly(3) * Rx_PWR^3 (q7.24, ns) +
Rx_Pwr_Dly(2) * Rx_PWR^2 (q7.24, ns) +
Rx_Pwr_Dly(1) * Rx_PWR^1 (q7.24, ns) +
Rx_Pwr_Dly(0) (q7.24, ns)
T_Detun
Temperature dependent wavelength de-tuning, with respect to the specified wavelength.
Input is the calibrated temperature in fixed point q7.8 format. For internally calibrated this is the ADC value, for externally calibrated this is the output of the equation 1 from SFF-8472, 9.3. Output is fixed point q7.8 value in steps of 0.1nm. This means the detuning can range from -12.8nm up to 12.7nm, from the specified wavelength. When unused then T_Detun(Slope) and T_Detun(Offset) should be set to zero.
T_Detun (0.1nm) = T_Detun(Slope) * T(C) + T_Detun(Offset)
CC_CALIB
This check code is a one byte code that can be used to verify that the 119 bytes of calibration configuration data are correct. It uses byte 128 to 246 inclusive. (The same as all check codes, CC_*, from SFF-8472 )
SFP-Loopback-Module-EEPROM-format
Address A2H
===========
+------+--------+-----------------+----------------------------------------------------------------+
| A2H | #Bytes | Name | Description |
+------+--------+-----------------+----------------------------------------------------------------+
| Page 03h |
| 128 | 20 | Common header | |
| | | | |
| 148 | 6 | Tx-to-Rx Dly | delay from looped back Tx to Rx port (q24.24, ns) |
| 154 | 6 | Tx-to-Out Dly | delay from Tx port to Output SMA (q24.24, ns) |
| 160 | 6 | Rx-to-Out Dly | delay from Rx port to Output SMA (q24.24, ns) |
| 166 | 81 | reserved | All bytes 0xFF |
| 247 | 1 | CC_CALIB | Checkcode over bytes 128 to 246 |
+------+--------+-----------------+----------------------------------------------------------------+
- All 16, 24 and 32 bit values are stored in network byte order (big-endian).
Common header
This header is common for all format definitions. The header is defined here.
Tx-to-Rx Dly
The SFP-Loopback module connects Tx and Rx ports on the electrical SFP connector.
Tx-to-Rx Dly is the fixed electric delay from Tx to Rx port, in nanoseconds, using fixed point UInteger48 q24.24 format.
This gives 1/2^24 nanoseconds (= 60 as) granularity and a range from 0..16,7ms.
Note: this format is aligned with scaledNs defined in IEEE-1588.
Tx-to-Out Dly
The SFP-Loopback module connects Tx and Rx ports on the electrical SFP connector and has a spy on this loopback connection to the output SMA connectors.
Tx-to-Out Dly is the fxed electric delay from Tx port to the SMA outputs, in nanoseconds, using fixed point UInteger48 q24.24 format.
This gives 1/2^24 nanoseconds (= 60 as) granularity and a range from 0..16,7ms.
Note: this format is aligned with scaledNs defined in IEEE-1588.
Rx-to-Out Dly
The SFP-Loopback module connects Tx and Rx ports on the electrical SFP connector and has a spy on this loopback connection to the output SMA connectors.
Rx-to-Out Dly is the fxed electric delay from Rx port to the SMA outputs, in nanoseconds, using fixed point UInteger48 q24.24 format.
This gives 1/2^24 nanoseconds (= 60 as) granularity and a range from 0..16,7ms.
Note: this format is aligned with scaledNs defined in IEEE-1588.
CC_CALIB
This check code is a one byte code that can be used to verify that the 119 bytes of calibration configuration data are correct. It uses byte 128 to 246 inclusive. (The same as all check codes, CC_*, from SFF-8472 )
Last updated: 18 Mar 2021