User EEPROM
Standard
SFF-8472
defines user EEPROM space at A2h, bytes 128..247.
This page is an effort to standardize the user EEPROM space for use in
systems that enhance calibration for
improved time accuracy.
Common-header
The following common header applies to all formats that are defined:
Address A2H
===========
+------+--------+---------------------+-------------------------------------------------------------+
| A2H | #Bytes | Name | Description |
+------+--------+---------------------+-------------------------------------------------------------+
| Page 00h |
+------+--------+---------------------+-------------------------------------------------------------+
| 128 | 2 | Magic/Format number | 16 bit magic number |
| 130 | 1 | Version | The version number of the calibration. Current version = 1 |
| 131 | 3 | Calibration date | The date of the calibration |
| 134 | 3 | OUI resp. | Organizationally Unique Identifier (Calibration responsible)|
| 137 | 1 | Generation/Stratum | Calibration Generation/stratum. 0 being highest precision |
| 138 | 2 | Reserved | All bytes 0x00 |
| 140 | 108 | : | : |
+------+--------+---------------------+-------------------------------------------------------------+
- 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 1
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)
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.
For now this is determined to be the OHWR vendor ID:
byte 0 1 2
+----------+----------+----------+
| 0x00 | OHWR-MSB | OHWR-LSB |
+----------+----------+----------+
Generation/Stratum
Calibration accuracy decreases with each calibrator generation. The n-th generation has Stratum-n (0 being the highest highest accuracy).
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 00h |
| 128 | 12 | Common header | |
| | | | |
| 140 | 4 | Elec Opt Dly | TX: Electric => Optical delay (q16.16, ps) |
| 144 | 4 | Opt Elec Dly | RX: Optical => Electric delay (q16.16, ps) |
| 148 | 4 | Rx_Pwr_Dly(0) | RX Optical power dependent delay, single precision float |
| 152 | 4 | Rx_Pwr_Dly(1) | RX Optical power dependent delay, single precision float |
| 156 | 4 | Rx_Pwr_Dly(2) | RX Optical power dependent delay, single precision float |
| 160 | 4 | Rx_Pwr_Dly(3) | RX Optical power dependent delay, single precision float |
| 164 | 4 | Rx_Pwr_Dly(4) | RX Optical power dependent delay, single precision float |
| 168 | 2 | T_Detun(Offset) | Temperature de-tuning, q7.8 |
| 170 | 2 | T_Detun(Slope) | Temperature de-tuning, q7.8 |
| 172 | 75 | 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 picoseconds, using fixed point
16.16 format. This gives 1/2^16 picoseconds granularity and a range from
0..65ns.
Note: this format is conform the 32 least significant bits of the
UInteger64 specified for delays in the WR
Specification.
Opt Elc Dly
Optical to electrical delay (RX), in picoseconds, using fixed point
16.16 format. This gives 1/2^16 picoseconds granularity and a range from
0..65ns.
Note: this format is conform the 32 least significant bits of the
UInteger64 specified for delays in the WR
Specification.
Rx_Pwr_Dly
Rx power delay curve. Input is Rx_PWR (see SFF-8472, 9.3), which is the received power in uW, output is the delay in ps. For internally calibrated SFPs the fixed point ADC value must be converted to float first.
Rx_Pwr_Dly (ps) = Rx_Pwr_Dly(4) * Rx_PWR^4 (float) +
Rx_Pwr_Dly(3) * Rx_PWR^3 (float) +
Rx_Pwr_Dly(2) * Rx_PWR^2 (float) +
Rx_Pwr_Dly(1) * Rx_PWR^1 (float) +
Rx_Pwr_Dly(0)
T_Detun
Temperature dependent wavelength de-tuning, with respect to the specified wavelength.
Input is the calibrated temperature in fixed point 7.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 7.8 value in steps of 0.1nm. This means the detuning can range from -12.8nm up to 12.7nm, from the specified wavelength.
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 00h |
| 128 | 12 | Common header | |
| | | | |
| 140 | 4 | Tx-to-Rx Dly | delay from looped back Tx to Rx port (q16.16, ps) |
| 144 | 4 | Tx-to-Out Dly | delay from Tx port to Output SMA (q16.16, ps) |
| 148 | 4 | Rx-to-Out Dly | delay from Rx port to Output SMA (q16.16, ps) |
| 152 | 95 | 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 picoseconds, using fixed point 16.16 format. This gives 1/2^16
picoseconds granularity and a range from 0..65ns.
Note: this format is conform the 32 least significant bits of the
UInteger64 specified for delays in the WR
Specification.
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 picoseconds, using fixed point 16.16 format. This gives
1/2^16 picoseconds
granularity and a range from 0..65ns.
Note: this format is conform the 32 least significant bits of the
UInteger64 specified for delays in the WR
Specification.
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 picoseconds, using fixed point 16.16 format. This gives
1/2^16 picoseconds
granularity and a range from 0..65ns.
Note: this format is conform the 32 least significant bits of the
UInteger64 specified for delays in the WR
Specification.
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: 01 Dec 2020