CodingBox ドキュメント

内部校正と外部校正

フォトダイオードは dBm を出力せず、サーミスタも °C を出力しません。どこかの時点で、生のセンサー値を工学的な値に変換する必要があります。SFF-8472 では、モジュールが提供する定数を使って、この変換をモジュール内部またはホスト側のどちらかで行うことを認めています。これを誤ると、正常に動作しているモジュールに対してスイッチが非現実的な DDM 値を表示する、よくある原因になります。

2つの校正モード

モード宣言する場所変換する側モニターバイトの内容
内部校正A0h バイト 92 ビット5モジュールのマイクロコントローラー標準単位に変換済みの最終値(1/256 °C、100 µV、2 µA、0.1 µW)
外部校正A0h バイト 92 ビット4ホスト生の A/D カウント値。ホストが A2h 56–95 の定数を適用する

現代のモジュールのほとんどは内部校正です。外部校正のモジュールは、旧世代またはコスト最適化された設計であり、変換を行わないホストではその値は意味をなしません。

外部校正定数(A2h バイト 56–95)

バイト定数形式適用対象
56–75Rx_PWR(4) … Rx_PWR(0)IEEE 754 単精度浮動小数点数 5個Rx パワー(4次多項式)
76–77Tx_I slope符号なし固定小数点(8.8)Tx バイアス
78–79Tx_I offset符号付き16ビットTx バイアス
80–81Tx_PWR slope符号なし 8.8Tx パワー
82–83Tx_PWR offset符号付き16ビットTx パワー
84–85T slope符号なし 8.8温度
86–87T offset符号付き16ビット温度
88–89V slope符号なし 8.8Vcc
90–91V offset符号付き16ビットVcc
92–94予約済み
95CC_DMIバイト 0–94 のチェックサム

変換式

Rx_PWR (µW)      = Rx4·raw⁴ + Rx3·raw³ + Rx2·raw² + Rx1·raw + Rx0
Tx_I   (µA)      = Tx_I_slope · raw + Tx_I_offset
Tx_PWR (0.1 µW)  = Tx_PWR_slope · raw + Tx_PWR_offset
T      (1/256 °C)= T_slope · raw + T_offset
V      (100 µV)  = V_slope · raw + V_offset

内部校正のモジュールでは、これらの定数は無視されます。それでも多くのベンダーは恒等値(slope 1.0、offset 0、Rx の多項式は 0,0,0,1,0)を書き込んでおり、誤って適用するホストがあっても正しい結果が得られるようにしています。

平均パワーと OMA

A0h バイト 92 のビット3は、Rx パワーがどちらの形式で表されているかを示します。平均パワー(1)か、OMA(光変調振幅、0)です。ほとんどのモジュールは平均パワーを報告します。OMA は、規格がその形式で受信感度を規定している一部のマルチモードイーサネット光学部品で見られます。OMA の数値を平均パワーの受信感度仕様と比較すると、最大で約 3 dB の誤差が生じます。

校正の問題が疑われる兆候

症状考えられる原因
温度が 0 °C や −128 °C、Vcc が 0.00 Vホストが外部校正モジュールの生カウント値を変換せずに読み取っている
Rx パワーが非現実的に高い(+10 dBm)、または常に −40 dBm校正モードの想定を誤っている、または定数がゼロになっている
同じモジュールでも、スイッチの機種によって値が大きく異なる一方のホストはバイト 92 に従い、もう一方は内部校正と決め打ちしている
ロット内のすべてのモジュールで Tx パワーが同一校正の問題ではなく、Tx が定数になっている(DDM の値を参照)

CodingBox では

CodingBox はバイト 92 を読み取り、モジュールが宣言していれば外部校正定数を適用し、生値と変換後の値の両方を表示します。そのため、スイッチが誤って表示するモジュールでも、ベンチ上で正しく判断できます。定数ブロック 56–95 は EEPROM editor で編集可能で、CC_DMI は自動的に再計算されます。校正領域が上書きされてしまったモジュールの修復に役立ちます。

工場の試験ステーションでこれらの定数がどのように生成されるか、ファームウェアがそれをどこに保持しているか:製造と試験コントローラーとファームウェア


この記事に不正確な点や誤りを見つけた場合は、該当する箇所を選択して Ctrl+Enter を押すと、できます。