コントローラーとファームウェア:DDM、APC、メモリ、保護
マネージド対応のトランシーバーには、必ず小さなコンピューターが内蔵されています。マイクロコントローラー(MCU)は、測定し、制御し、報告します。そして — プログラマーの視点からもっとも重要なことに — 読み書きするメモリそのものでもあります。モジュールが単純な EEPROM を持つのか、それとも EEPROM のふりをする MCU を持つのかによって、どのようにコーディングできるか、なぜ一部の書き込みが電源再投入後に消えるのか、そしてそもそもなぜパスワードが存在するのかが決まります。このページでは、コントローラーが何を行うか、そしてその設計がベンチ上にどう現れるかを説明します。
MCU が行うこと
| タスク | 詳細 | 現れ方 |
|---|---|---|
| 測定 | 温度(サーミスターまたはオンチップセンサー)、Vcc、レーザーバイアス、モニター PD 電流(Tx)、受信器の光電流(Rx)を、10–12 ビット ADC で毎秒数回サンプリングし、工場校正値を適用する | DDM 値 — パラメーター |
| APC — 自動パワー制御 | モニター PD 電流を工場設定の目標値と比較し、ドライバーのバイアス DAC を調整する | Tx パワーは一定、バイアスは上昇 — Tx バイアスと経年劣化 |
| 温度補償 | ルックアップテーブルが、温度に応じて変調電流と(PAM4 では)DSP 設定を調整する | 安定した消光比 |
| TEC 制御 | 冷却モジュールでレーザー温度を保持する PID ループ。DWDM では波長ロッカーのフィードバックも | レーザー温度、TEC 電流のモニター値 |
| しきい値とフラグ | すべてのモニター値をアラーム/警告のしきい値と比較し、ラッチされたフラグを設定し、IntL を駆動する | しきい値とアラーム |
| 低速ピン | TX_DISABLE、RS0/RS1、LPMode、ResetL を読み取り、TX_FAULT、RX_LOS を駆動する(またはハードウェア信号をゲートする) | ピンの挙動 |
| 2線スレーブ | A0h/A2h(SFP)、またはページ/バンク付きの A0h(QSFP、CMIS)で応答する | メモリマップ — 2線インターフェース |
| ステートマシン | CMIS のモジュールおよびデータパスの状態;アプリケーション選択;スケルチ | CMIS |
| 保護機能とベンダー機能 | パスワード、書き込み保護領域、保存コマンド、ベンダーアンロック、認証署名 | 書き込み保護の種類 |
| CDB/ファームウェア更新 | CMIS モジュールでは、新しいファームウェアイメージを受信し書き込む | ファームウェアバージョンのバイト |
典型的な部品:低コストの SFP/SFP+ では、数 kB のフラッシュを備えた8ビット MCU(8051クラス)。100G 以上や CMIS モジュールでは32ビットの Cortex-M クラス。一部のベンダーは、ADC、DAC、2線スレーブを統合した専用のトランシーバーコントローラー ASIC を使用します。
メモリを構築する2つの方法
| 設計 | マップの保存方法 | プログラミングへの影響 |
|---|---|---|
| A0h に独立した EEPROM(例:AT24C02クラス)、A2h に MCU | A0h の識別情報は、ホストとプログラマーが直接やり取りする実物のシリアル EEPROM。MCU は診断機能のみを担当 | A0h への書き込みは通常の EEPROM 書き込み — t_WR とページサイズを守る必要がある。ハードウェアの WP ピンがそれを阻止することがある(書き込み保護の種類1–3) |
| MCU エミュレーションマップ | MCU がすべての2線リクエストに RAM から応答し、変更を内部の flash/EEPROM に反映する(反映しないこともある) | 書き込みはファームウェアが決めるところへ行く:受理される、無視される、パスワードで制限される、保存コマンドの後にのみ保存される、あるいは次回起動時にファームウェア自身のコピーで上書きされる(種類4–5) |
| ハイブリッド | ベンダーブロックには EEPROM、ページとパスワードには MCU | バイト範囲ごとにルールが異なる |
エミュレーションマップは、ベンチ上のほとんどの謎を説明します。ファームウェアが実装していないページからの FFh、「成功」したのに元に戻ってしまう書き込み、ある範囲では読み取り専用なのに次の範囲では自由に書き込めるバイト、MCU がサンプリングでビジー状態のときに発生するクロックストレッチです(EEPROM の読み書きエラー)。
起動と t_init ウィンドウ
電源投入時、MCU は不揮発性ストレージから校正値と識別情報を読み込み、ADC を起動し、APC を目標値まで実行してから、ようやく2線スレーブを有効化し、データ未準備状態を解除します。これが、仕様がホストに応答を期待させるまでに許容する300 ms(SFP)から2 s(QSFP/CMIS)の時間であり、挿入直後の読み取りが不正な値を返す理由です(ホストが行うこと)。
校正はここに存在する
生の ADC カウント値は、工場が試験ステーションで測定した定数がなければ意味を持ちません。モニター PD 電流対実際の送出パワー、受信器の光電流対モジュールの波長での入力パワー、サーミスターカーブ、バイアス DAC のスケールです。内部校正モジュールでは、ファームウェアがこれらを適用して物理単位で報告します。外部校正モジュールでは、定数が A2h 56–91 に書き込まれ、ホスト側で適用します(校正)。一部のファームウェアがこれらの定数を保持しているベンダー領域を上書きすると、DDM が異常な値になったり、APC ループが機能しなくなったりします — 不用意な書き込みがモジュールを「文鎮化」させる典型的な原因です(製造と試験)。
保護機能の実装方法
| 仕組み | 実装方法 | ベンチでの見え方 |
|---|---|---|
| パスワード | ファームウェアが、パスワード領域(SFP A2h 123–126、QSFP 123–126、CMIS 122–125)に書き込まれた4バイトを保存された値と比較する。セッション中の書き込みをアンロックする | 正しい値が入力されるまで WRITE FAIL — Passwords |
| 書き込み保護領域 | ファームウェアが、読み取り専用とみなす範囲(チェックサム、しきい値、校正値、ベンダー領域)への書き込みを無視する | 読み戻すとバイトは変化しておらず、エラーも出ない |
| 独立した EEPROM のハードウェア WP ピン | モジュール内部でピンがハイに固定されているか、MCU が駆動する | プログラマーボード側で駆動する必要がある |
| 保存コマンド | 書き込みはまず RAM に入る。ベンダー固有のシーケンスがそれを flash に確定する | シーケンスを送らない限り、電源再投入後に元に戻る |
| ファームウェアミラー | 起動時に、ファームウェアが自身のイメージからマップを書き直す | 電源を入れ直すたびに変更が消える — イメージを変更できるのはベンダーのツールだけ |
| 認証 | ファームウェアが署名(シリアル番号、ベンダーデータ、秘密鍵のハッシュ)を計算してベンダーバイトに書き込み、ホストが検証する | 識別情報を編集してもチェックサムは通るが、ホストには拒否される — ベンダーロック |
それぞれの種類の見分け方とプログラム方法について:書き込み保護の種類、EEPROM の再コーディング。
ファームウェアの更新
CMIS モジュールは、CDB コマンド(ダウンロード開始、ブロック書き込み、完了、実行、コミット)を通じて2線バス経由でファームウェアを受信できます。更新に失敗した場合に備えて、多くの場合2つのイメージバンクを持ちます。SFF-8472/8636 モジュールには標準的な仕組みがなく、ベンダーはベンダーバイトを通じた独自のシーケンスを使用します。ファームウェアの修正は、ベンダーが CMIS の相互運用性の問題を解決する手段であり(CMIS の問題)、ファームウェアバージョンのバイト(CMIS の下位ページ39–40、ページ01h 128–129)は識別情報とあわせて記録する価値があります。
コントローラーの故障モード
| 症状 | 考えられる原因 |
|---|---|
| バス上でモジュールが認識されない。光学系自体は正常 | MCU が起動していない:ファームウェアの破損、瞬時電圧低下、水晶発振子の損傷 |
| DDM 値が固まる、または異常な値になる | ADC または校正値の破損;ファームウェアのハング |
| APC が保持しているはずなのに Tx パワーが変動する | モニター PD または ADC の故障、APC が無効化されている |
| ランダムな NACK、読み取りの遅延 | MCU の過負荷(サンプリング中)、高速なプログラマーがクロックストレッチの限界を超えている |
| 動作はするが、書き込みがすべて元に戻る | 設計上のファームウェアミラー — 故障ではない |
| 書き込み後にモジュールが動作しなくなる | ファームウェアの設定領域または校正領域が上書きされた |
CodingBox では
CodingBox は、ファームウェアが提示するとおりにモジュールを扱います。マップの種類を検出し、保存コマンド式やミラー式の設計に対しては既知のパスワードとプログラミングスクリプトを適用し、チェックサムを再計算し、書き込みのたびにバックアップを保持し、コントローラーの反応が思わしくない場合には code database から復元できるようにします。EEPROM editor は、仕様が読み取り専用またはベンダー固有と定めている範囲に印を付けるため、ファームウェアの私的領域に書き込もうとしていることが分かります。