(57)【要約】【課題】記憶回路の記憶容量を増加することなく、プログラムの更新を適切に行う。【解決手段】光トランシーバ１は、光信号を送受信する複数の光送受信部５と、複数の光送受信部５を制御する複数のサブＣＰＵ３と、メモリ４と、外部装置から複数のサブＣＰＵ３で共通に用いられる更新用プログラムを受信してメモリ４に格納するメインＣＰＵ２と、を備え、メインＣＰＵ２は、サブＣＰＵ３から更新前プログラムに含まれる設定情報の設定値を受信してメモリ４に格納し、更新用プログラムをサブＣＰＵ３に送信して更新前プログラムを更新用プログラムに更新してサブＣＰＵ３を再起動させ、サブＣＰＵ３が通信待機状態にあるときにメモリ４に格納されている設定値をサブＣＰＵ３に送信して、サブＣＰＵ３が有する更新用プログラムに書き込ませる。【選択図】図１
2017005608.tif 000002
【特許請求の範囲】
【請求項１】
光信号を送受信する複数の光送受信部と、
それぞれ第１プログラムを有し、前記第１プログラムを使用して起動し、前記第１プログラム及び前記第１プログラムに含まれる設定情報を使用して前記複数の光送受信部を制御する複数の第１制御部と、
記憶回路と、
前記複数の第１制御部に共通に使用可能な第２プログラムを外部装置から受信して前記記憶回路に格納するとともに前記複数の第１制御部の一つから前記設定情報を受信して前記記憶回路に格納し、前記記憶回路に格納された前記第２プログラムを前記複数の第１制御部の一つに送信して前記複数の第１制御部の一つが有する前記第１プログラムを前記第２プログラムに更新して前記複数の第１制御部の一つを再起動させ、前記第２プログラムを使用して起動した前記複数の第１制御部の一つが待機状態にあるときに前記記憶回路に格納された前記設定情報を前記待機状態にある前記複数の第１制御部の一つに送信して前記複数の第１制御部の一つが有する前記第２プログラムの内部に書込ませる第２制御部と、
を備え、
前記第２プログラムを使用して起動した前記複数の第１制御部は、前記第２プログラム及び前記第２プログラムに書き込まれた前記設定情報を用いて前記複数の光送受信部を制御する、光トランシーバ。
【請求項２】
前記第２プログラムは、別の設定情報と、前記別の設定情報が有効か無効かを示す有効性情報を含み、
前記複数の第１制御部の一つは、前記第２プログラムを使用して起動する際に、前記第２プログラムに含まれる前記有効性情報が有効を示すか無効を示すか判定し、
前記有効性情報が有効を示す場合には、前記第２プログラム及び前記別の設定情報を用いて前記光送受信部を制御し、
前記有効性情報が無効を示す場合には、前記待機状態になり、前記記憶回路に格納された前記設定情報を前記第２制御部から受信して前記別の設定情報を前記設定情報に書き換えるとともに前記有効性情報を有効を示すように変更し、前記第２プログラム及び前記第２プログラムに書き込まれた前記設定情報を用いて前記光送受信部を制御する、請求項１に記載の光トランシーバ。
【請求項３】
前記設定情報は、前記光送受信部の動作条件を設定するための個別設定パラメータを含む、請求項１または請求項２に記載の光トランシーバ。
【請求項４】
前記設定情報は、前記光送受信部の動作状態の制御に使用される制御パラメータを含む、請求項１〜請求項３のいずれか一項に記載の光トランシーバ。
【請求項５】
光信号を送受信する複数の光送受信部と、
それぞれ第１プログラムを有し、前記第１プログラムを使用して起動し、前記第１プログラム及び前記第１プログラムに含まれる設定情報を使用して前記複数の光送受信部を制御する複数の第１制御部と、
記憶回路と、
外部装置、前記複数の第１制御部、及び前記記憶回路のそれぞれと通信可能な第２制御部と、
を有する光トランシーバの制御方法であって、
前記第２制御部が、別の設定情報と前記別の設定情報の有効性を示す有効性情報とを含む第２プログラムを前記外部装置から受信して前記記憶回路に格納するステップと、
前記第２制御部が、前記複数の第１制御部の一つから前記設定情報を受信して前記記憶回路に格納するステップと、
前記複数の第１制御部の一つが、前記記憶回路に格納された前記第２プログラムを前記第２制御部から受信して、前記複数の第１制御部の一つが有する前記第１プログラムを前記第２プログラムに更新するステップと、
前記複数の第１制御部の一つが前記第２プログラムを使用して起動する際に、前記第２プログラムに含まれる前記有効性情報が有効を示すか無効を示すか判定するステップと、
前記判定するステップにおいて、前記有効性情報が有効を示すと判定された場合には、前記複数の第１制御部の一つが前記第２プログラム及び前記別の設定情報を用いて前記光送受信部を制御するステップと、
前記判定するステップにおいて、前記有効性情報が無効を示すと判定された場合には、前記複数の第１制御部の一つが待機状態となり、前記複数の第１制御部の一つが前記記憶回路に格納された前記設定情報を前記第２制御部から受信して前記別の設定情報を前記設定情報に書き換えるとともに前記有効性情報を有効を示すように変更して、前記第２プログラム及び前記第２プログラムに書き込まれた前記設定情報を用いて前記光送受信部を制御するステップと、
を備え、
前記第２プログラムは、前記複数の第１制御部で共通に用いられる、光トランシーバの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、光トランシーバ及び光トランシーバの制御方法に関する。
【背景技術】
【０００２】
近年、伝送帯域を大きくするために、複数の伝送レーンを有する光トランシーバが用いられる。例えば、特許文献１には、外部との通信を行うメインＣＰＵ（Central Processing Unit）と、内部デバイスの制御及び監視を行う複数のサブＣＰＵと、を備える光トランシーバが開示されている。この光トランシーバでは、サブＣＰＵごとにプログラムがＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）に格納されている構成と、複数のサブＣＰＵで共通化されたプログラムがＥＥＰＲＯＭに格納されている構成と、のいずれかが採用される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−７３１２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メインＣＰＵと複数のサブＣＰＵとを有する光トランシーバにおいて、サブＣＰＵごとに異なるプログラムを使用する構成とすると、サブＣＰＵのプログラムを更新する場合に、それぞれのプログラムを外部装置から受信する必要があるのでプログラムの更新に時間が掛かり、全てのサブＣＰＵのプログラムを一時的に格納するための記憶回路の記憶容量が増大するおそれがある。一方、同様の光トランシーバにおいて、複数のサブＣＰＵで共通化されたプログラムを使用する構成とすると、サブＣＰＵ内部には、サブＣＰＵによる制御及び監視の対象となる個々の光デバイス及び通信用ＩＣ（Integrated Circuit）等に合わせた固有の設定値が保持される必要があるが、この固有の設定値がサブＣＰＵのプログラム更新時にクリアされてしまう。その場合に、例えば個々の光デバイスの制御が適切に行われなくなるおそれがある。
【０００５】
本発明の一態様は、記憶回路の記憶容量を増加することなく、外部装置との通信を介してプログラムの適切な更新が可能な光トランシーバ及び光トランシーバの制御方法を提供する。
【課題を解決するための手段】
【０００６】
本発明の一態様に係る光トランシーバは、光信号を送受信する複数の光送受信部と、それぞれ第１プログラムを有し、第１プログラムを使用して起動し、第１プログラム及び第１プログラムに含まれる設定情報を使用して複数の光送受信部を制御する複数の第１制御部と、記憶回路と、複数の第１制御部に共通に使用可能な第２プログラムを外部装置から受信して記憶回路に格納するとともに複数の第１制御部の一つから設定情報を受信して記憶回路に格納し、記憶回路に格納された第２プログラムを複数の第１制御部の一つに送信して複数の第１制御部の一つが有する第１プログラムを第２プログラムに更新して複数の第１制御部の一つを再起動させ、第２プログラムを使用して起動した複数の第１制御部の一つが待機状態にあるときに記憶回路に格納された設定情報を待機状態にある複数の第１制御部の一つに送信して複数の第１制御部の一つが有する第２プログラムの内部に書込ませる第２制御部と、を備える。第２プログラムを使用して起動した複数の第１制御部は、第２プログラム及び第２プログラムに書き込まれた設定情報を用いて複数の光送受信部を制御する。
【発明の効果】
【０００７】
本発明の一態様によれば、記憶回路の記憶容量を増加することなく、外部装置との通信を介してプログラムの更新を適切に行うことができる。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係る光トランシーバを模式的に示す構成図である。
【図２】サブＣＰＵのプログラムの一構成例を示す図である。
【図３】図２のプログラムを用いた場合の光トランシーバのプログラム更新処理を示すフローチャートである。
【図４】サブＣＰＵのプログラムの別の構成例を示す図である。
【図５】図４のプログラムを用いた場合の光トランシーバのプログラム更新処理を示すフローチャートである。
【図６】サブＣＰＵのプログラムのさらに別の構成例を示す図である。
【発明を実施するための形態】
【０００９】
［本願発明の実施形態の説明］
最初に本発明の実施形態の内容を列記して説明する。
【００１０】
本発明の一態様に係る光トランシーバは、光信号を送受信する複数の光送受信部と、それぞれ第１プログラムを有し、第１プログラムを使用して起動し、第１プログラム及び第１プログラムに含まれる設定情報を使用して複数の光送受信部を制御する複数の第１制御部と、記憶回路と、複数の第１制御部に共通に使用可能な第２プログラムを外部装置から受信して記憶回路に格納するとともに複数の第１制御部の一つから設定情報を受信して記憶回路に格納し、記憶回路に格納された第２プログラムを複数の第１制御部の一つに送信して複数の第１制御部の一つが有する第１プログラムを第２プログラムに更新して複数の第１制御部の一つを再起動させ、第２プログラムを使用して起動した複数の第１制御部の一つが待機状態にあるときに記憶回路に格納された設定情報を待機状態にある複数の第１制御部の一つに送信して複数の第１制御部の一つが有する第２プログラムの内部に書込ませる第２制御部と、を備える。第２プログラムを使用して起動した複数の第１制御部は、第２プログラム及び第２プログラムに書き込まれた設定情報を用いて複数の光送受信部を制御する。
【００１１】
この光トランシーバによれば、複数の第１制御部で共通化された第２プログラムが使用されるので、１つの第２プログラムを用いて全ての第１制御部の第１プログラムを更新できる。このため、第１制御部の数が増えたとしても、第２プログラムを格納するための記憶容量の増加を抑えることができる。また、設定情報が、第１制御部の第１プログラムを第２プログラムに更新する前に第１制御部から取得されて、記憶回路に格納され、第１制御部の第１プログラムを第２プログラムに更新した後に、記憶回路に記憶されている設定情報が第１制御部に送信され、第１制御部によって光送受信部の制御に用いられる。このため、第１制御部の設定情報がプログラムの更新によって消失することを防止でき、プログラム更新後の第１制御部がプログラム更新前の設定情報を用いることが可能となる。その結果、記憶回路の記憶容量を増加することなく、プログラムの更新を適切に行うことが可能となる。
【００１２】
第２プログラムは、別の設定情報と、別の設定情報が有効か無効かを示す有効性情報を含んでもよい。複数の第１制御部の一つは、第２プログラムを使用して起動する際に、第２プログラムに含まれる有効性情報が有効を示すか無効を示すか判定してもよく、有効性情報が有効を示す場合には、第２プログラム及び別の設定情報を用いて光送受信部を制御してもよく、有効性情報が無効を示す場合には、待機状態になり、記憶回路に格納された設定情報を第２制御部から受信して別の設定情報を設定情報に書き換えるとともに有効性情報を有効を示すように変更し、第２プログラム及び第２プログラムに書き込まれた設定情報を用いて光送受信部を制御してもよい。この場合、第２プログラムに含まれている有効性情報によって、第２プログラムに含まれている別の設定情報を用いるか、記憶回路に格納された設定情報を用いるかを切り替えることができる。このため、例えば、第１制御部において、プログラム更新における再起動時には記憶回路に格納された設定情報が用いられるようにし、他の場合の再起動時には第２プログラムに含まれている別の設定情報が用いられるように制御することができる。
【００１３】
設定情報は、光送受信部の動作条件を設定するための個別設定パラメータを含んでいてもよい。個別設定パラメータは光送受信部ごとに個々に設定されているので、プログラム更新時に個別設定パラメータが消失すると、光送受信部が正しく動作できないおそれがある。このため、第１制御部の個別設定パラメータが、第１制御部のプログラム更新時に記憶回路に退避され、第１制御部のプログラム更新後に第１制御部に送信されることによって、プログラム更新後に光送受信部を正しく動作させることが可能となる。
【００１４】
設定情報は、光送受信部の動作状態の制御に使用される制御パラメータを含んでいてもよい。プログラム更新に要する時間では、光トランシーバの周囲の環境が大きく変わらないことが想定されるので、制御状態パラメータの設定値は大きく変更されないと考えられる。このため、プログラム更新後の第１制御部は、プログラム更新前と同じ制御状態パラメータの設定値を用いて、光送受信部を制御することによって、引き続き光送受信部を制御することが可能となる。したがって、プログラム更新後に光通信を一旦停止することなく、光通信を継続した状態で、第１制御部のプログラムを更新することが可能となる。
【００１５】
本発明の別の態様に係る光トランシーバの制御方法は、光信号を送受信する複数の光送受信部と、それぞれ第１プログラムを有し、第１プログラムを使用して起動し、第１プログラム及び第１プログラムに含まれる設定情報を使用して複数の光送受信部を制御する複数の第１制御部と、記憶回路と、外部装置、複数の第１制御部、及び記憶回路のそれぞれと通信可能な第２制御部と、を有する光トランシーバの制御方法である。この光トランシーバの制御方法は、第２制御部が、別の設定情報と別の設定情報の有効性を示す有効性情報とを含む第２プログラムを外部装置から受信して記憶回路に格納するステップと、第２制御部が、複数の第１制御部の一つから設定情報を受信して記憶回路に格納するステップと、複数の第１制御部の一つが、記憶回路に格納された第２プログラムを第２制御部から受信して、複数の第１制御部の一つが有する第１プログラムを第２プログラムに更新するステップと、複数の第１制御部の一つが第２プログラムを使用して起動する際に、第２プログラムに含まれる有効性情報が有効を示すか無効を示すか判定するステップと、判定するステップにおいて、有効性情報が有効を示すと判定された場合には、複数の第１制御部の一つが第２プログラム及び別の設定情報を用いて光送受信部を制御するステップと、判定するステップにおいて、有効性情報が無効を示すと判定された場合には、複数の第１制御部の一つが待機状態となり、複数の第１制御部の一つが記憶回路に格納された設定情報を第２制御部から受信して別の設定情報を設定情報に書き換えるとともに有効性情報を有効を示すように変更して、第２プログラム及び第２プログラムに書き込まれた設定情報を用いて光送受信部を制御するステップと、を備える。第２プログラムは、複数の第１制御部で共通に用いられる。
【００１６】
この光トランシーバの制御方法によれば、複数の第１制御部で共通化された第２プログラムが使用されるので、１つの第２プログラムを用いて全ての第１制御部の第１プログラムを更新できる。このため、第１制御部の数が増えたとしても、第２プログラムを格納するための記憶容量の増加を抑えることができる。また、設定情報が、第１制御部の第１プログラムを第２プログラムに更新する前に第１制御部から取得されて、記憶回路に格納され、第１制御部の第１プログラムを第２プログラムに更新した後に、記憶回路に記憶されている設定情報が第１制御部に送信され、第１制御部の第２プログラムに含まれる別の設定情報が設定情報に書き換えられ、第１制御部によって光送受信部の制御に用いられる。このため、第１制御部の設定情報がプログラムの更新によって消失することを防止でき、プログラム更新後の第１制御部がプログラム更新前の設定情報を用いることが可能となる。その結果、記憶回路の記憶容量を増加することなく、プログラムの更新を適切に行うことが可能となる。
【００１７】
［本願発明の実施形態の詳細］
本発明の実施形態に係る光トランシーバの具体例を、以下に図面を参照しつつ説明する。なお、本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【００１８】
（第１実施形態）
図１は、第１実施形態に係る光トランシーバを模式的に示す構成図である。図１に示されるように、光トランシーバ１は、複数のレーンを備える光トランシーバである。レーンとは、電気信号をある波長の光信号に変換して外部に出力する送信経路または外部から入力されたある波長の光信号を電気信号に変換する受信経路である。この例では、レーン数は送信と受信とでそれぞれ１６であるが、これに限られない。光トランシーバ１は、不図示の光ファイバを介して別の光トランシーバと接続されている。例えば、各レーンから出力された互いに異なる波長を持つ光信号は、光合波器によって一つの波長多重信号に多重化されて光ファイバを介して別の光トランシーバに送信される。別の光トランシーバから光ファイバを介して入力された波長多重信号は、光分波器によって互いに異なる波長を持つ光信号に分離されて各レーンに入力される。このように、２つの光トランシーバの一方の送信部（送信器）と他方の受信部（受信器）とが光合波器（不図示）及び一本の光ファイバを介して波長多重通信を行い、他方の送信部（送信器）と一方の受信部（受信器）とが別の光ファイバ及び光分波器（不図示）を介して波長多重通信を行い、それらにより双方向で同時に送受信が行われる。この例では、送信部及び受信部は光送受信部５に含まれる。
【００１９】
光トランシーバ１は、外部通信インタフェースＢ１を介してホスト装置等の外部装置に通信可能に接続されている。外部通信インタフェースＢ１は、例えば、シリアルバスである。光トランシーバ１がＣＦＰ  ＭＳＡ（100G Form-factor Pluggable Multi-Source Agreement）に準拠した光トランシーバである場合、外部通信インタフェースＢ１はＭＤＩＯ（Management Data Input/Output）バスである。光トランシーバ１がＣＦＰ以外の光トランシーバである場合には、外部通信インタフェースＢ１は、例えば、Ｉ２Ｃ（Inter Integrated Circuit）バス、ＳＰＩ（SerialPeripheral Interface）バス等である。
【００２０】
光トランシーバ１は、メインＣＰＵ２（第２制御部）と、複数のサブＣＰＵ３（複数の第１制御部）と、メモリ４（記憶回路）と、複数の光送受信部５と、を備えている。複数の光送受信部５のそれぞれは、複数のサブＣＰＵ３のいずれかによって監視及び制御され、光信号を送受信する部分である。光送受信部５は、光トランシーバ１に接続された光ファイバを介して、上述した通り別の光トランシーバと光信号を送受信する。光送受信部５は、レーンごとに設けられている。光送受信部５は、ＣＤＲ（Clock Data Recovery）、レーザダイオード（ＬＤ：Laser Diode）、レーザダイオード駆動回路（ＬＤＤ：Laser Diode Driver）、フォトダイオード（ＰＤ：Photodiode）、トランスインピーダンスアンプ（ＴＩＡ：Transimpedance Amplifier）、リミッティングアンプ（ＬＩＡ：LimitingAmplifier）（いずれも不図示）等を備えている。
【００２１】
ＣＤＲは、外部装置から出力された電気信号のデータを復元するとともに信号波形を整形して、データ復元及び波形整形後の電気信号をＬＤＤに出力する。ＬＤＤは、ＣＤＲから出力された電気信号に基づいてＬＤを駆動するための電気信号を生成し、生成した電気信号をＬＤに出力する。ＬＤは、ＬＤＤから出力された電気信号に基づいて光信号を生成し、生成した光信号を出力する。ＰＤは、光ファイバを介して入力された光信号に基づいて生成した電気信号（光電流）をＴＩＡに出力する。ＴＩＡは、ＰＤから出力された光電流を電圧信号に変換して、変換後の電圧信号をＬＩＡに出力する。ＬＩＡは、ＴＩＡから出力された電圧信号をさらに増幅し、増幅された電圧信号をＣＤＲに出力する。ＣＤＲは、ＬＩＡから出力された電圧信号のデータを復元するとともに信号波形を整形して、データ復元及び波形整形後の電圧信号を外部装置に出力する。
【００２２】
メインＣＰＵ２は、外部装置、複数のサブＣＰＵ３、及びメモリ４のそれぞれと通信可能なデバイスである。メインＣＰＵ２は、外部通信インタフェースＢ１を介して電気的に外部装置に接続されており、外部装置との通信制御を行う。メインＣＰＵ２は、例えば、外部装置との通信用のレジスタ（不図示）を備えている。メインＣＰＵ２は、外部通信インタフェースＢ１を介して外部装置からサブＣＰＵ３の更新用プログラム（第２プログラム）とともにサブＣＰＵ３のプログラム更新命令を受信し、更新用プログラムをメモリ４に一時的に格納する。更新用プログラムは、複数のサブＣＰＵ３において共通に用いられる。
【００２３】
図２は、サブＣＰＵ３のプログラムの一構成例を示す図である。図２に示されるように、プログラムＰｓｕｂは、実行プログラムＲ１と、有効性領域Ｒ２と、個別設定パラメータ領域Ｒ３と、を含んでいる。実行プログラムＲ１は、光送受信部５の制御及び監視を行うためのサブＣＰＵ３のメインプログラムである。有効性領域Ｒ２は、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が有効であるか無効であるかを示す有効性情報を格納する領域である。個別設定パラメータ領域Ｒ３は、個別設定パラメータの設定値を格納する領域である。なお、個別設定パラメータとは、サブＣＰＵ３に割り当てられた光送受信部５の光デバイス等の動作条件を設定するために、光デバイスの個体差に応じて設定値が用意されるパラメータである。設定値は、それぞれのサブＣＰＵ３に固有の値である。個別設定パラメータとしては、例えば、レーザバイアス電流値、レーザ変調電流値、レーザ温度、光出力パワーのモニタ値等が挙げられる。また、図２では、更新対象の領域が示されているが、プログラムＰｓｕｂには、これらの領域の他、更新用プログラムによって更新されない領域が含まれていてもよい。例えば、サブＣＰＵ３のプログラムＰｓｕｂには、ブートプログラムが格納されている領域、プログラムを更新するためのプログラムが格納されている領域等が存在する場合がある。
【００２４】
外部装置から受信した更新用プログラムでは、有効性領域Ｒ２に、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が無効であることを示す有効性情報が格納され、個別設定パラメータ領域Ｒ３に実行プログラムＲ１を実行するときに全ての光デバイスに対して共通に使用することができる設定値としてデフォルト値（初期設定値）が格納されている。以下、メインＣＰＵ２によるプログラム更新時の処理を説明する。
【００２５】
外部通信インタフェースＢ１経由で外部装置からサブＣＰＵ３の更新用プログラムを受信して、サブＣＰＵ３のプログラムを更新する際には、メインＣＰＵ２は、一旦、更新用プログラムをメモリ４に格納し、その更新用プログラムをサブＣＰＵ３に送信することによって、サブＣＰＵ３のプログラムを更新する。メインＣＰＵ２は、例えば、複数のサブＣＰＵ３のプログラム更新を順番に行う。メインＣＰＵ２は、サブＣＰＵ３のプログラムを更新用プログラムによって更新する際に、サブＣＰＵ３内に格納されプログラムによって使用されていた個別設定パラメータの設定値をサブＣＰＵ３から取得してメモリ４に格納した後、更新用プログラムをサブＣＰＵ３に送信し、更新用プログラムによってサブＣＰＵ３のプログラムが更新された後、メモリ４に格納されている個別設定パラメータの設定値をサブＣＰＵ３に送信する。ここで、サブＣＰＵ３から取得した個別設定パラメータの設定値をメモリ４に一旦格納してから元のサブＣＰＵ３にそれを送信する操作は、サブＣＰＵ３のプログラムを更新プログラムによって更新するときに、サブＣＰＵ３に格納されている個別設定パラメータの設定値が更新操作（例えばプログラムが格納されているＦｌａｓｈ−ＲＯＭへの上書き）によって消失してしまうのを防ぐために行われる。
【００２６】
具体的に説明すると、メインＣＰＵ２は、サブＣＰＵ３のプログラム更新命令を受信したことに応じて、複数のサブＣＰＵ３の一つ一つについて以下に述べる更新操作を行う。なお、以下の説明において、更新対象のサブＣＰＵ３とは、複数のサブＣＰＵ３のうちある時点で更新操作の対象となっているある一つのサブＣＰＵ３のことを意味する。メインＣＰＵ２は、更新対象のサブＣＰＵ３にそのサブＣＰＵ３が格納している個別設定パラメータの設定値を送信させるために、個別設定パラメータ要求を更新対象のサブＣＰＵ３に送信する。次に、メインＣＰＵ２は、更新対象のサブＣＰＵ３から送信された個別設定パラメータの設定値を受信し、それに更新対象のサブＣＰＵ３を一意に識別可能な識別情報を付加してメモリ４に格納する。次に、メインＣＰＵ２は、プログラム書換要求とともに更新用プログラムを更新対象のサブＣＰＵ３に送信する。つまり、メインＣＰＵ２は、外部装置から更新用プログラムを受信してメモリ４に格納するとともに複数のサブＣＰＵ３の一つから個別設定パラメータの設定値を受信してメモリ４に格納し、メモリ４に格納された更新用プログラムを更新対象のサブＣＰＵ３に送信して更新前プログラムを更新用プログラムに更新して更新対象のサブＣＰＵ３を再起動させる。メインＣＰＵ２は、更新対象のサブＣＰＵ３のプログラムが更新され、更新対象のサブＣＰＵ３から後述の通信待機状態であることが通知されると、通信待機状態であることを通知したサブＣＰＵ３と識別情報によって識別されるサブＣＰＵ３が一致することを確認した上で識別情報とともに格納されている個別設定パラメータの設定値をメモリ４から取得し、取得した個別設定パラメータの設定値を識別情報によって識別されるサブＣＰＵ３に送信する。つまり、メインＣＰＵ２は、更新対象のサブＣＰＵ３を再起動させる際に、更新対象のサブＣＰＵ３が通信待機状態にあるときにメモリ４に格納された個別設定パラメータの設定値を更新対象のサブＣＰＵ３に送信する。このときに、更新対象のサブＣＰＵ３、通信待機状態であることを通知したサブＣＰＵ３、及び識別情報によって識別されるサブＣＰＵ３はいずれも同一のサブＣＰＵ３を指していることになる。メインＣＰＵ２は、このようにある一つのサブＣＰＵ３についてプログラムの更新を終了すると、上述した通り、まだ更新を行っていない残りのサブＣＰＵ３についても同じようにプログラムの更新を行う。
【００２７】
ところで、サブＣＰＵ３のプログラムが更新用プログラムによって更新される場合に、例えば、更新によって変更される実行プログラムＲ１の中身が制御及び監視とは直接的に関係しないような場合には、上述したように更新の前後で同じ個別設定パラメータを使用できる。一方、更新される前のプログラム（更新前プログラム；第１プログラム）と更新用プログラムとの間で制御及び監視に関する変更が行われるような場合に、その変更内容によっては、更新前プログラムの実行に使用していた個別設定パラメータの設定値が更新用プログラムの実行にはそのまま使用できないという状況が起こり得る。例えば、更新用プログラムによって行われる制御のために新しい個別設定パラメータの設定値が必要となるような場合には、その設定値は更新前プログラムを実行していたサブＣＰＵ３に格納されていないので、更新前に使用していた個別設定パラメータの設定値をそのまま使用すると、更新用プログラムを適当に実行するのが困難になるおそれがある。そのような場合には、サブＣＰＵ３が格納している個別設定パラメータの設定値をメモリ４に一旦格納しておいても、それをプログラムの更新後にサブＣＰＵ３に送信する必要はなくなる。したがって、更新用プログラムの有効性領域Ｒ２に格納されている有効性情報は、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値（初期設定値）が有効であることを示すように設定され、更新用プログラムの実行には、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値（初期設定値）が使用される。この場合には、プログラム書換要求とともに更新用プログラムがサブＣＰＵ３に送信されるが、サブＣＰＵ３が再起動した後にメモリ４に一旦格納された個別設定パラメータの設定値はサブＣＰＵ３には送信されない。
【００２８】
複数のサブＣＰＵ３は、共通化されたプログラムを使用して起動し、プログラム及びプログラムに含まれる個別設定パラメータを使用して光送受信部５の制御及び監視を行うプログラム可能なデバイス（プログラマブルデバイス）である。サブＣＰＵ３は、内部の記憶情報の書き換えが可能な不揮発性メモリ（例えば、フラッシュＲＯＭ）を有し、当該メモリにサブＣＰＵ３のプログラムを格納している。サブＣＰＵ３は、プログラム更新機能を有しており、不揮発性メモリに格納されているプログラムを更新する。各サブＣＰＵ３には、複数の光送受信部５のうちのいくつかの光送受信部５が割り当てられており、サブＣＰＵ３は、割り当てられた光送受信部５の制御及び監視を行う。サブＣＰＵ３は、メインＣＰＵ２に内部通信インタフェースＢ２を介して電気的に接続され、割り当てられた光送受信部５に内部通信インタフェースＢ３を介して電気的に接続されている。内部通信インタフェースＢ２及び内部通信インタフェースＢ３は、例えば、Ｉ２Ｃバス、ＳＰＩバス等である。
【００２９】
サブＣＰＵ３は、例えば、割り当てられた光送受信部５の光信号の出力パワー（光出力パワー）、光信号の消光比、ＬＤのバイアス電流及び変調電流、ＬＤの温度等を制御及び監視する。つまり、サブＣＰＵ３は、更新前プログラム及び更新前プログラムに含まれる個別設定パラメータを使用して割り当てられた光送受信部５を制御する。サブＣＰＵ３は、メインＣＰＵ２から個別設定パラメータ要求を受信すると、不揮発性メモリに格納されているプログラムの個別設定パラメータ領域Ｒ３から個別設定パラメータの設定値を読み出し、個別設定パラメータの設定値をメインＣＰＵ２に送信する。サブＣＰＵ３は、メインＣＰＵ２から更新用プログラムとともにプログラム書換要求を受信すると、受信した更新用プログラムで不揮発性メモリ内のプログラムを書き換える。サブＣＰＵ３は、プログラム書換を完了したことに応じて、再起動を行う。
【００３０】
サブＣＰＵ３は、起動時（再起動時）の処理において、不揮発性メモリ内のプログラムの有効性領域Ｒ２に格納されている有効性情報を読み出し、有効性情報が、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が有効であることを示しているか、無効であることを示しているかを判定する。つまり、サブＣＰＵ３は、更新用プログラムを使用して起動する際に、更新用プログラムに含まれる有効性情報が有効を示すか無効を示すか判定する。有効性情報が、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が有効であることを示している場合には、サブＣＰＵ３は、通常状態で起動し、不揮発性メモリ内のプログラム及び個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値を用いて光送受信部５の制御及び監視を開始する。なお、プログラム更新直後においては、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータは、初期設定値である。この場合に、例えば初期設定値は制御及び監視の初期値として使用され、実行プログラムＲ１の実行によって光デバイスの個体差に応じて光信号に係る特性が好適となるように制御及び監視が行われる。
【００３１】
有効性情報が、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が無効であることを示している場合には、サブＣＰＵ３は、通信待機状態で起動するとともに、メインＣＰＵ２に通信待機状態であることを通知する。通信待機状態とは、メインＣＰＵ２からの所定のパラメータの設定値を待機する状態である。サブＣＰＵ３は、通信待機状態である場合には光送受信部５の制御及び監視等を行わない。通信待機状態のサブＣＰＵ３は、メインＣＰＵ２から個別設定パラメータの設定値を受信した場合、受信した個別設定パラメータの設定値を個別設定パラメータ領域Ｒ３に格納し、有効性領域Ｒ２に格納されている有効性情報を、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が有効であることを示すように変更するとともに、通常状態で起動し、不揮発性メモリ内のプログラム及び個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータを用いて光送受信部５の制御及び監視を行う。つまり、有効性情報が無効であることを示している場合には、サブＣＰＵ３は通信待機状態になり、メモリ４に格納された個別設定パラメータの設定値をメインＣＰＵ２から受信して、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値を、メインＣＰＵ２から受信した設定値に書き換えるとともに、有効性情報を有効を示すように変更して起動し、メインＣＰＵ２から受信した設定値を用いて光送受信部５を制御する。要するに、サブＣＰＵ３は、更新用プログラムによってプログラムを更新して再起動した後、有効性情報が、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が無効であることを示している場合、メインＣＰＵ２から送信された個別設定パラメータの設定値を用いて光送受信部５の制御及び監視を行う。
【００３２】
メモリ４は、メインＣＰＵ２に電気的に接続されており、外部装置から送信されたサブＣＰＵ３の更新用プログラムを一時的に格納する記憶素子である。メモリ４は、サブＣＰＵ３の個別設定パラメータの設定値を一時的に格納する。メモリ４は、例えば、ＲＡＭ（Random Access Memory）である。メモリ４は、メインＣＰＵ２に内蔵されていてもよく、メインＣＰＵ２の外部に設けられていてもよい。
【００３３】
次に、光トランシーバ１のプログラム更新処理を説明する。図３は、図２のプログラムを用いた場合の光トランシーバ１のプログラム更新処理を示すフローチャートである。図３に示される一連の処理は、外部装置が外部通信インタフェースＢ１を介してメインＣＰＵ２にサブＣＰＵ３の更新用プログラムとともにサブＣＰＵ３のプログラム更新命令を送信することによって開始される。例えば、外部通信インタフェースＢ１がＭＤＩＯインタフェースである場合、一つのＭＤＩＯフレームによって光トランシーバ１が受信できるデータの大きさは１６ビット（２バイト）なので、実際の更新プログラム（例えば、数百〜数千バイトの大きさ）の受信には例えば、数百〜数千回のＭＤＩＯフレームの受信が必要となる。数百〜数千回のＭＤＩＯフレームの受信を経て更新プログラムの全てのデータをメモリ４に格納してからプログラム更新命令を受信することによって図３の一連の処理は開始される。なお、複数のサブＣＰＵ３は、それぞれ更新前プログラムを有し、更新前プログラムを使用して起動し、更新前プログラム及び更新前プログラムに含まれる個別設定パラメータを使用して光送受信部５を制御している。
【００３４】
まず、メインＣＰＵ２が、外部装置から送信されたサブＣＰＵ３の更新用プログラム及びプログラム更新命令を外部通信インタフェースＢ１を介して受信し、サブＣＰＵ３の更新用プログラムをメモリ４に格納する（ステップＳ０１）。そして、メインＣＰＵ２は、複数のサブＣＰＵ３のうちの１つのサブＣＰＵ３に個別設定パラメータ要求を送信する（ステップＳ０２）。そして、サブＣＰＵ３は、メインＣＰＵ２から送信された個別設定パラメータ要求を受信すると、サブＣＰＵ３の不揮発性メモリに格納されているプログラムの個別設定パラメータ領域Ｒ３から個別設定パラメータの設定値（設定情報）を読み出し、読み出した個別設定パラメータの設定値をメインＣＰＵ２に送信する（ステップＳ０３）。
【００３５】
そして、メインＣＰＵ２は、サブＣＰＵ３から送信された個別設定パラメータの設定値を受信し、受信した個別設定パラメータの設定値をメモリ４に格納する（ステップＳ０４）。なお、このとき、メインＣＰＵ２は、サブＣＰＵ３から送信された個別設定パラメータの設定値にサブＣＰＵ３を一意に識別可能な識別情報を付加してメモリ４に格納してもよい。続いて、メインＣＰＵ２は、メモリ４に格納されている更新用プログラムとともにプログラム書換要求をサブＣＰＵ３に送信する（ステップＳ０５）。外部装置から更新プログラム及びプログラム更新命令が光トランシーバ１に送信される時点で、更新プログラムによる更新前プログラムに対する変更内容は確定しているので、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が無効とされるべきか有効とされるべきかは予め決めることができる。更新プログラム内の有効性領域Ｒ２に格納されている有効性情報は、予め設定されて更新プログラムは送信される。例えば、サブＣＰＵ３が格納している個別設定パラメータの設定値が更新プログラムの実行にも使用できる場合には、無効と設定される。
【００３６】
そして、サブＣＰＵ３は、メインＣＰＵ２から更新用プログラムとともにプログラム書換要求を受信すると、受信した更新用プログラムで不揮発性メモリ内のプログラムを書き換える（ステップＳ０６）。このとき、プログラム内の個別設定パラメータの設定値も更新用プログラムによって書き換えられる。例えば、更新前プログラムも更新用プログラムも共に図２に示されるような構成になっていて、更新用プログラムはメモリ４に格納されたイメージのままサブＣＰＵ３内の不揮発性メモリ内の更新前プログラムの領域に上書きされる。そして、サブＣＰＵ３は、プログラムの書き換えを完了すると、再起動を行う（ステップＳ０７）。
【００３７】
続いて、サブＣＰＵ３は、再起動時の処理において、不揮発性メモリ内のプログラムの有効性領域Ｒ２に格納されている有効性情報を読み出し、有効性情報が、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値（別の設定情報）が有効であることを示しているか、無効であることを示しているかを判定する（ステップＳ０８）。ステップＳ０８において、有効性情報が、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が無効であることを示していると判定された場合（ステップＳ０８：Ｎｏ）、サブＣＰＵ３は光送受信部５の制御及び監視等を行うことなく通信待機状態で起動する（ステップＳ０９）。そして、サブＣＰＵ３は通信待機状態であることをメインＣＰＵ２に通知する（ステップＳ１０）。なお、メインＣＰＵ２とサブＣＰＵ３との通信に使用される内部通信インタフェースＢ２が、例えばＳＰＩインタフェースであって、メインＣＰＵ２がマスターとして、サブＣＰＵ３がスレーブとして動作するような場合には、メインＣＰＵ２からのポーリングによってサブＣＰＵ３が通信待機状態にあることがメインＣＰＵ２によって検出されてもよい。
【００３８】
そして、メインＣＰＵ２は、サブＣＰＵ３から通信待機状態であることが通知される（または、上述したようにメインＣＰＵ２が、サブＣＰＵ３が通信待機状態にあることを検出する）と、メモリ４に格納されているサブＣＰＵ３の個別設定パラメータの設定値をサブＣＰＵ３に送信する（ステップＳ１１）。なお、メモリ４に格納されたサブＣＰＵ３の個別設定パラメータの設定値に上述の識別情報が付加されている場合には、通信待機状態にあるサブＣＰＵ３と識別番号によって識別されるサブＣＰＵ３とが一致することを確認した上で、メモリ４に格納されている個別設定パラメータの設定値がサブＣＰＵ３に送信されるようにしてもよい。そのように識別情報に基づいてサブＣＰＵ３を確認することによって、あるサブＣＰＵ３から受信した個別設定パラメータの設定値を誤って別のサブＣＰＵ３に書き込んでしまうという不都合を回避することができる。そして、サブＣＰＵ３は、メインＣＰＵ２から送信された個別設定パラメータの設定値を受信し、受信した個別設定パラメータの設定値をプログラム内の個別設定パラメータ領域Ｒ３に格納する（ステップＳ１２）とともに、プログラム内の有効性領域Ｒ２に格納されている有効性情報を、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が有効であることを示すように変更する（ステップＳ１３）。そして、サブＣＰＵ３は、通常状態で起動し、プログラム及び個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値を用いて、光送受信部５の制御及び監視等を行う（ステップＳ１４）。
【００３９】
ステップＳ０８において、有効性情報が、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値（初期設定値）が有効であることを示していると判定された場合（ステップＳ０８：Ｙｅｓ）、サブＣＰＵ３は、通常状態で起動し、プログラム及び個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値（初期設定値）を用いて、光送受信部５の制御及び監視等を開始する（ステップＳ１４）。この場合に、初期設定値は制御及び監視の初期値として使用され、実行プログラムＲ１の実行によって光デバイスの個体差に応じて光信号に係る特性が好適となるように制御及び監視が行われる。
【００４０】
続いて、メインＣＰＵ２は、次のサブＣＰＵ３に個別設定パラメータ要求を送信する（ステップＳ０２）。以降、サブＣＰＵ３ごとにステップＳ０２〜ステップＳ１４の処理が繰り返される。なお、サブＣＰＵ３のプログラム更新順序は予め定められていてもよく、例えば、アドレスの小さいサブＣＰＵ３から順にプログラムの更新が行われてもよい。
【００４１】
以上、光トランシーバ１では、複数のサブＣＰＵ３で共通化されたプログラムが使用されるので、１つの更新用プログラムを用いて全てのサブＣＰＵ３のプログラムを更新することができる。このため、例えばレーン数が増えることによりサブＣＰＵ３の数が増えたとしても、更新用プログラムを格納するための記憶容量の増加を抑えることができる。また、サブＣＰＵ３に固有の個別設定パラメータの設定値が、サブＣＰＵ３のプログラムの更新前にサブＣＰＵ３から取得されて、メモリ４に格納され、サブＣＰＵ３のプログラムの更新後に、メモリ４に格納されている設定値がサブＣＰＵ３に送信され、サブＣＰＵ３によって光送受信部５の制御に用いられる。このため、サブＣＰＵ３の固有の個別設定パラメータの設定値がプログラムの更新によって消失することを防止でき、プログラム更新後のサブＣＰＵ３が固有の個別設定パラメータの設定値を用いて光送受信部５の制御を行うことが可能となる。つまり、個別設定パラメータの設定値は、通常動作時にはサブＣＰＵ３に保存されているので、レーン数が増えても、メモリ４の記憶領域を消費することはない。一方、サブＣＰＵ３のプログラム更新時には、個別設定パラメータの設定値を一時的に格納するためにメモリ４の記憶領域が用いられるので、サブＣＰＵ３は別途記憶領域を備える必要がない。その結果、メモリ４の記憶容量を増加することなく、プログラムの更新を適切に行うことが可能となる。
【００４２】
個別設定パラメータは光送受信部５ごとに個々に設定されているので、サブＣＰＵ３のプログラム更新時に個別設定パラメータが消失すると、プログラム更新後に光送受信部５が正しく動作できないおそれがある。このため、サブＣＰＵ３の個別設定パラメータが、サブＣＰＵ３のプログラム更新時にメモリ４に退避され、サブＣＰＵ３のプログラム更新後にサブＣＰＵ３に送信されることによって、サブＣＰＵ３のプログラム更新後に光送受信部５を正しく動作させることが可能となる。
【００４３】
また、プログラムＰｓｕｂの有効性領域Ｒ２に含まれている有効性情報によって、個別設定パラメータ領域Ｒ３に含まれている個別設定パラメータの設定値を用いるか、メインＣＰＵ２から送信された個別設定パラメータの設定値を用いるかを切り替えることができる。また、サブＣＰＵ３は、メインＣＰＵ２から送信された個別設定パラメータの設定値を受信した場合、その設定値を個別設定パラメータ領域Ｒ３に格納し、有効性領域Ｒ２に含まれている有効性情報を、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が有効であることを示すように変更する。このため、プログラム更新後の再起動時においては、サブＣＰＵ３は、メインＣＰＵ２に退避しておいた個別設定パラメータの設定値を用いて光送受信部５の制御を行い、その他の電源投入時または再起動時では、プログラムＰｓｕｂの個別設定パラメータ領域Ｒ３に含まれている個別設定パラメータの設定値を用いて光送受信部５の制御を行うことが可能となる。
【００４４】
メインＣＰＵ２は、複数のサブＣＰＵ３のプログラム更新を順番に行うので、メモリ４は、サブＣＰＵ３のプログラム更新時に、１つの更新用プログラムと更新対象の１つのサブＣＰＵ３の個別設定パラメータの設定値（サブＣＰＵ３の識別情報が付加されていてもよい）とを格納すればよいので、レーン数または光送受信部５の数が増加することによりサブＣＰＵ３の数が増加しても、メモリ４の記憶容量を増加する必要がない。
【００４５】
（第２実施形態）
次に、第２実施形態に係る光トランシーバ１について説明する。第２実施形態に係る光トランシーバ１は、第１実施形態に係る光トランシーバ１と比較して、サブＣＰＵ３のプログラム及びサブＣＰＵ３のプログラム更新処理において相違している。
【００４６】
図４は、第２実施形態に係る光トランシーバ１によって用いられるサブＣＰＵのプログラムの一構成例を示す図である。図４に示されるように、プログラムＰｓｕｂは、第１実施形態に係る光トランシーバ１によって用いられるプログラムＰｓｕｂと比較して、有効性領域Ｒ２及び個別設定パラメータ領域Ｒ３に代えて有効性領域Ｒ４及び初期設定値領域Ｒ５を含む点で相違している。
【００４７】
有効性領域Ｒ４は、初期設定値領域Ｒ５に格納されている初期設定値が有効であるか無効であるかを示す有効性情報を格納する領域である。初期設定値領域Ｒ５は、制御状態パラメータの初期設定値を格納する領域である。制御状態パラメータとは、サブＣＰＵ３に割り当てられた光送受信部５の光デバイス等の動作状態の制御に使用されるパラメータである。この制御状態パラメータは、例えばサブＣＰＵ３内の揮発性メモリ（ＲＡＭ）に格納され、光トランシーバ１の電源投入直後は不揮発性メモリ内の初期設定値領域Ｒ５に格納されている初期設定値と同じ値に設定され、その後、実行プログラムＲ１の実行に伴って動作環境の変化及び光デバイスの特性変動等に応じて随時その設定値が更新される。つまり、制御状態パラメータの設定値（更新値）は、光デバイスの特性及び動作状態に応じて決まるので、個々のサブＣＰＵ３に固有の動的な情報である。制御状態パラメータとして同じ設定値が設定されることによって、同じ光デバイスに対して同じ制御状態が再現できることが保証される。制御状態パラメータとしては、例えば、ＤＡＣ（Digital-to-Analog Converter）の出力電圧設定値（デジタル値）、モード設定（ＴｘＤｉｓａｂｌｅ／Ｅｎａｂｌｅ状態及びＥｔｈｅｒｎｅｔ（登録商標）／ＯＴＵ設定）等が挙げられる。初期設定値は、例えば、光トランシーバ１の電源投入直後等に光送受信部５の光デバイス等の制御状態パラメータの初期値として使用される。初期設定値は、光デバイスの個々の特性には依存しないので、各サブＣＰＵ３において共通に使用される。
【００４８】
外部装置から受信した更新用プログラムでは、後述するようにプログラムの更新前後で光送受信部５の動作をほぼ同じ状態で継続させる場合には、有効性領域Ｒ４に、初期設定値領域Ｒ５に格納されている初期設定値が有効であることを示す有効性情報が格納される。以下、メインＣＰＵ２によるプログラム更新時の処理を説明する。
【００４９】
メインＣＰＵ２は、例えば、複数のサブＣＰＵ３のプログラム更新を順番に行う。メインＣＰＵ２は、サブＣＰＵ３のプログラムを更新用プログラムによって更新する際に、制御状態パラメータの設定値をサブＣＰＵ３から取得してメモリ４に格納した後、更新用プログラムをサブＣＰＵ３に送信し、更新用プログラムによってサブＣＰＵ３のプログラムが更新された後、メモリ４に格納されている制御状態パラメータの設定値をサブＣＰＵ３に送信する。サブＣＰＵ３は、メインＣＰＵ２から受信した制御状態パラメータの設定値をサブＣＰＵ３内の揮発性メモリ（ＲＡＭ）上の所定の場所に格納する。
【００５０】
具体的に説明すると、メインＣＰＵ２は、サブＣＰＵ３のプログラム更新命令を受信したことに応じて、サブＣＰＵ３に制御状態パラメータの設定値を送信させるために、制御状態パラメータ要求を更新対象のサブＣＰＵ３に送信する。メインＣＰＵ２は、更新対象のサブＣＰＵ３から送信された制御状態パラメータの設定値を、更新対象のサブＣＰＵ３を一意に識別可能な識別情報とともにメモリ４に格納する。外部装置から更新プログラム及びプログラム更新命令が光トランシーバ１に送信されたときに、プログラム更新の前後で光送受信部５をほぼ同じ状態で動作を継続させる場合には、プログラム更新後に、サブＣＰＵ３が、初期設定値領域Ｒ５に格納されている制御状態パラメータの初期設定値を使用せずに、プログラム更新前にサブＣＰＵ３の揮発性メモリ（ＲＡＭ）上の所定の場所に格納された制御状態パラメータの設定値をメモリ４に一旦格納しておき、メモリ４に格納された値をサブＣＰＵ３の不揮発性メモリ（ＲＡＭ）上の所定の場所に複製することが好適となる。このため、更新プログラム内の有効性領域Ｒ４に格納されている有効性情報は、無効に設定される。一方で、プログラムの更新後に、例えば電源投入時と同様に初期設定値領域Ｒ５に格納されている制御状態パラメータの初期設定値がサブＣＰＵ３の揮発性メモリ（ＲＡＭ）上の所定の場所に設定される（格納される）場合には、更新プログラム内の有効性領域Ｒ４に格納されている有効性情報は、有効と設定される。メインＣＰＵ２は、プログラム書換要求とともに更新用プログラムをサブＣＰＵ３に送信する。メインＣＰＵ２は、サブＣＰＵ３のプログラムが更新され、サブＣＰＵ３から通信待機状態であることが通知されると、通信待機状態であることを通知したサブＣＰＵ３の制御状態パラメータの設定値をメモリ４から取得し、取得した制御状態パラメータの設定値をサブＣＰＵ３に送信する。
【００５１】
ところで、サブＣＰＵ３のプログラムが更新用プログラムによって更新される場合に、例えば、更新によって変更される実行プログラムＲ１の中身が制御及び監視とは直接的に関係しないような場合には、上述したように更新の前後で同じ制御状態パラメータを使用できる。しかし、更新される前のプログラム（更新前プログラム）と更新用プログラムとの間で制御及び監視に関する変更が行われるような場合に、その変更内容によっては、更新前プログラムの実行に使用していた制御状態パラメータの設定値が更新用プログラムの実行にはそのまま使用できないという状況が起こり得る。例えば、更新用プログラムによって行われる制御のために新しい制御状態パラメータの設定値が追加されるような場合には、その設定値は更新前プログラムを実行していたサブＣＰＵ３には格納されていないので、更新前に使用していた制御状態パラメータの設定値をそのまま使用すると、更新用プログラムを適当に実行するのが困難になるおそれがある。そのような場合には、サブＣＰＵ３が格納している制御状態パラメータの設定値をメモリ４に一旦格納しておいたとしても、それをプログラムの更新後にサブＣＰＵ３に送信する必要はなくなる。したがって、更新用プログラムの有効性領域Ｒ４に格納されている有効性情報は、初期設定値領域Ｒ５に格納されている制御状態パラメータの初期設定値が有効であることを示すように設定され、更新用プログラムの実行には、初期設定値領域Ｒ５に格納されている制御状態パラメータの初期設定値が使用される。この場合には、プログラム書換要求とともに更新用プログラムがサブＣＰＵ３に送信されるが、サブＣＰＵ３が再起動した後にメモリ４に一旦格納された制御状態パラメータの設定値はサブＣＰＵ３には送信されない。
【００５２】
更新対象のサブＣＰＵ３は、メインＣＰＵ２から制御状態パラメータ要求を受信すると、揮発性メモリ（ＲＡＭ）上の所定の場所に格納されている制御状態パラメータの設定値を読み出し、制御状態パラメータの設定値をメインＣＰＵ２に送信する。更新対象のサブＣＰＵ３は、メインＣＰＵ２から更新用プログラムとともにプログラム書換要求を受信すると、受信した更新用プログラムで不揮発性メモリ内のプログラムを書き換える。更新対象のサブＣＰＵ３は、プログラム書換を完了したことに応じて、再起動を行う。
【００５３】
更新対象のサブＣＰＵ３は、プログラム更新直後の起動時（再起動時）の処理において、不揮発性メモリ内のプログラム（更新用プログラム）の有効性領域Ｒ４に格納されている有効性情報を読み出し、有効性情報が、初期設定値領域Ｒ５に格納されている初期設定値が有効であることを示しているか、無効であることを示しているかを確認する。有効性情報が、初期設定値領域Ｒ５に格納されている初期設定値が有効であることを示している場合には、サブＣＰＵ３は、通常状態で起動し、不揮発性メモリ内のプログラムとともに初期設定値領域Ｒ５に格納されている初期設定値を制御状態パラメータの設定値として用いて光送受信部５の制御及び監視を開始する。
【００５４】
有効性情報が、初期設定値領域Ｒ５に格納されている初期設定値が無効であることを示している場合には、サブＣＰＵ３は、通信待機状態で起動するとともに、メインＣＰＵ２に通信待機状態であることを通知する。なお、メインＣＰＵ２とサブＣＰＵ３との通信に使用される内部通信インタフェースＢ２が、例えばＳＰＩインタフェースであって、メインＣＰＵ２がマスターとして、サブＣＰＵ３がスレーブとして動作するような場合には、メインＣＰＵ２からのポーリングによってサブＣＰＵ３が通信待機状態にあることがメインＣＰＵ２によって検出されてもよい。通信待機状態のサブＣＰＵ３は、メインＣＰＵ２から制御状態パラメータの設定値を受信した場合、受信した制御状態パラメータの設定値を揮発性メモリ（ＲＡＭ）上の所定の場所に格納し、有効性領域Ｒ４に格納されている有効性情報を、初期設定値領域Ｒ５に格納されている初期設定値が有効であることを示すように変更するとともに、通常状態として揮発性メモリ（ＲＡＭ）上の所定の場所に格納されている制御状態パラメータの設定値を用いて光送受信部５の制御及び監視を開始する（これによりプログラムの更新を行う前とほぼ同じ状態で制御及び監視を再開する）。なお、例えばサブＣＰＵ３は電源ＯＮの状態でリセットが行われるため、揮発性メモリ（ＲＡＭ）に格納されているデータが消えてしまうことはない。通信待機状態にあったサブＣＰＵ３は、更新用プログラムによってプログラムを更新して再起動した後、有効性情報が、初期設定値領域Ｒ５に格納されている初期設定値が無効であることを示している場合、メインＣＰＵ２から受信した制御状態パラメータの設定値を用いて光送受信部５の制御及び監視を開始する。これによって、サブＣＰＵ３はプログラムの更新前後で同じ制御状態パラメータの設定値を継続して使用することによって、制御及び監視を中断することなくほぼ同じ状態で光送受信部５を動作させることができる。
【００５５】
次に、光トランシーバ１のプログラム更新処理を説明する。図５は、図４のプログラムを用いた場合の光トランシーバ１のプログラム更新処理を示すフローチャートである。図５に示される一連の処理は、外部装置が外部通信インタフェースＢ１を介してメインＣＰＵ２にサブＣＰＵ３の更新用プログラムとともにサブＣＰＵ３のプログラム更新命令を送信することによって開始される。例えば、外部通信インタフェースＢ１がＭＤＩＯインタフェースである場合、一つのＭＤＩＯフレームによって光トランシーバ１が受信できるデータの大きさは１６ビット（２バイト）なので、実際の更新プログラム（例えば、数百〜数千バイトの大きさ）の受信には例えば、数百〜数千回のＭＤＩＯフレームの受信が必要となる。数百〜数千回のＭＤＩＯフレームの受信を経て更新プログラムの全てのデータをメモリ４に格納してからプログラム更新命令を受信することによって図５の一連の処理は開始される。なお、複数のサブＣＰＵ３は、それぞれ更新前プログラムを有し、更新前プログラムを使用して起動し、更新前プログラム及び更新前プログラムに含まれる制御状態パラメータを使用して光送受信部５を制御している。
【００５６】
まず、メインＣＰＵ２が、外部装置から送信されたサブＣＰＵ３の更新用プログラム及びプログラム更新命令を外部通信インタフェースＢ１を介して受信し、サブＣＰＵ３の更新用プログラムをメモリ４に格納する（ステップＳ２１）。そして、メインＣＰＵ２は、複数のサブＣＰＵ３のうちの更新対象の１つのサブＣＰＵ３に制御状態パラメータ要求を送信する（ステップＳ２２）。そして、更新対象のサブＣＰＵ３は、メインＣＰＵ２から送信された制御状態パラメータ要求を受信すると、更新対象のサブＣＰＵ３の揮発性メモリ（ＲＡＭ）の所定の場所に格納されている制御状態パラメータの設定値（更新値）を読み出し、読み出した制御状態パラメータの設定値（更新値）をメインＣＰＵ２に送信する（ステップＳ２３）。
【００５７】
そして、メインＣＰＵ２は、更新対象のサブＣＰＵ３から送信された制御状態パラメータの設定値を受信し、受信した制御状態パラメータの設定値をメモリ４に格納する（ステップＳ２４）。なお、このときに、メインＣＰＵ２は、更新対象のサブＣＰＵ３から送信された制御状態パラメータの設定値に更新対象のサブＣＰＵ３を一意に識別可能な識別情報を付加してメモリ４に格納してもよい。続いて、メインＣＰＵ２は、メモリ４に格納されている更新用プログラムとともにプログラム書換要求を更新対象のサブＣＰＵ３に送信する（ステップＳ２５）。このとき、外部装置から更新プログラム及びプログラム更新命令が光トランシーバ１に送信されるまでに初期設定値領域Ｒ５に格納されている制御状態パラメータの設定値が無効とされるべきか有効とされるべきかは決まっている。したがって、更新プログラム内の有効性領域Ｒ４に格納されている有効性情報は、更新プログラムが更新対象のサブＣＰＵ３に送信される時点でいずれかに設定されている。例えば、上述したように、プログラム更新前後で光送受信部５がほぼ同じ状態で動作することが選択される場合には、更新プログラムの実行の際に更新前にメモリ４に一旦格納した制御状態パラメータの設定値がサブＣＰＵ３に送信されて使用されるように、無効と設定される。
【００５８】
そして、更新対象のサブＣＰＵ３は、メインＣＰＵ２から更新用プログラムとともにプログラム書換要求を受信すると、受信した更新用プログラムで不揮発性メモリ内のプログラムを書き換える（ステップＳ２６）。そして、更新対象のサブＣＰＵ３は、プログラムの書き換えを完了すると、再起動を行う（ステップＳ２７）。
【００５９】
続いて、更新対象のサブＣＰＵ３は、再起動時の処理において、不揮発性メモリ内のプログラムの有効性領域Ｒ４に格納されている有効性情報を読み出し、有効性情報が、初期設定値領域Ｒ５に格納されている初期設定値が有効であることを示しているか、無効であることを示しているかを判定する（ステップＳ２８）。ステップＳ２８において、有効性情報が、初期設定値領域Ｒ５に格納されている初期設定値が無効であることを示していると判定された場合（ステップＳ２８：Ｎｏ）、サブＣＰＵ３は光送受信部５の制御及び監視等を行うことなく通信待機状態で起動する（ステップＳ２９）。そして、サブＣＰＵ３は通信待機状態であることをメインＣＰＵ２に通知する（ステップＳ３０）。なお、メインＣＰＵ２とサブＣＰＵ３との通信に使用される内部通信インタフェースＢ２が、例えばＳＰＩインタフェースであって、メインＣＰＵ２がマスターとして、サブＣＰＵ３がスレーブとして動作するような場合には、メインＣＰＵ２からのポーリングによってサブＣＰＵ３が通信待機状態にあることがメインＣＰＵ２によって検出されてもよい。
【００６０】
そして、メインＣＰＵ２は、サブＣＰＵ３から通信待機状態であることが通知される（または、上述したようにメインＣＰＵ２が、サブＣＰＵ３が通信待機状態にあることを検出する）と、メモリ４に格納されているサブＣＰＵ３の制御状態パラメータの設定値をサブＣＰＵ３に送信する（ステップＳ３１）。なお、メモリ４に格納されたサブＣＰＵ３の制御状態パラメータの設定値に上述の識別情報が付加されている場合には、通信待機状態にあるサブＣＰＵ３と識別番号によって識別されるサブＣＰＵ３とが一致することを確認した上で、メモリ４に格納されている制御状態パラメータの設定値がサブＣＰＵ３に送信されるようにしてもよい。そのように識別情報に基づいてサブＣＰＵ３を確認することによって、あるサブＣＰＵ３から受信した制御状態パラメータの設定値を誤って別のサブＣＰＵ３に書き込んでしまうという不都合を回避することができる。そして、更新対象のサブＣＰＵ３は、メインＣＰＵ２から送信された制御状態パラメータの設定値を受信し、受信した制御状態パラメータの設定値を揮発性メモリ（ＲＡＭ）に格納する（ステップＳ３２）とともに、プログラム内の有効性領域Ｒ４に格納されている有効性情報を、初期設定値領域Ｒ５に格納されている初期設定値が有効であることを示すように変更する（ステップＳ３３）。そして、サブＣＰＵ３は、揮発性メモリ（ＲＡＭ）に格納されている制御状態パラメータの設定値を揮発性メモリ（ＲＡＭ）上の所定の場所に格納して更新プログラムを実行する（ステップＳ３４）。そして、サブＣＰＵ３は通常状態で起動し、光送受信部５の制御を開始する（ステップＳ３６）。
【００６１】
一方、ステップＳ２８において、有効性情報が、初期設定値領域Ｒ５に格納されている初期設定値が有効であることを示していると判定された場合（ステップＳ２８：Ｙｅｓ）、更新対象のサブＣＰＵ３は、プログラムの初期設定値領域Ｒ５に格納されている初期設定値を揮発性メモリ（ＲＡＭ）上の所定の場所に制御初期値として設定する（ステップＳ３５）。そして、サブＣＰＵ３は通常状態で起動し、光送受信部５の制御を開始する（ステップＳ３６）。
【００６２】
続いて、メインＣＰＵ２は、次の更新対象となったサブＣＰＵ３に制御状態パラメータ要求を送信する（ステップＳ２２）。以降、複数のサブＣＰＵ３について更新対象のサブＣＰＵ３を順次替えるごとにステップＳ２２〜ステップＳ３６の処理が繰り返される。なお、サブＣＰＵ３のプログラム更新の順序は予め定められていてもよく、例えば、シリアル通信インタフェース等でスレーブを識別するために割り当てられるアドレスの小さい順にサブＣＰＵ３のプログラムの更新が行われてもよい。プログラム更新を伴わない次回以降の起動時には、有効性領域Ｒ４に格納されている有効性情報が、初期設定値領域Ｒ５に格納されている初期設定値が有効であることを示しているので、サブＣＰＵ３は初期設定値領域Ｒ５に格納されている安全な初期設定値を用いて起動する。より具体的には、このときに、初期設定値領域Ｒ５に格納されている初期設定値が、制御状態パラメータの格納場所として予め定められたサブＣＰＵ内の揮発性メモリ（ＲＡＭ）の所定の場所に書き込まれて、実行プログラムＲ１がその値を参照及び更新して光送受信部５の制御及び監視が行われる。なお、ここで安全な初期設定値というのは、例えば、設計上想定している光デバイスの個体差の範囲よりも、仮に実際の光デバイスの特性が少し外側に振れたような場合でも、実行プログラムＲ１の実行によって異常な動作にはならずに正常に制御及び監視が行われることを意味する。
【００６３】
以上、第２実施形態の光トランシーバ１においても、上記第１実施形態の光トランシーバ１と同様の効果が奏される。つまり、複数のサブＣＰＵ３で共通化されたプログラムが使用されるので、１つの更新用プログラムを用いて全てのサブＣＰＵ３のプログラムを更新することができ、例えばレーン数が増えることによりサブＣＰＵ３の数が増えたとしても、更新用プログラムを格納する記憶容量の増加を抑えることができる。また、メインＣＰＵ２は、複数のサブＣＰＵ３のプログラム更新を順番に行うので、メモリ４は、サブＣＰＵ３のプログラム更新時に、１つの更新用プログラムと更新対象の１つのサブＣＰＵ３の個別設定パラメータの設定値とを格納すればよく、レーン数が増加することによりサブＣＰＵ３の数が増加しても、メモリ４の記憶容量を増加する必要がない。
【００６４】
また、第２実施形態の光トランシーバ１では、サブＣＰＵ３に固有の制御状態パラメータの設定値が、サブＣＰＵ３のプログラムの更新前に更新対象のサブＣＰＵ３から取得されて、メモリ４に格納され、サブＣＰＵ３のプログラムの更新後に、メモリ４に格納されている設定値が更新対象のサブＣＰＵ３に送信され、更新対象のサブＣＰＵ３によって光送受信部５の制御に用いられる。このため、サブＣＰＵ３個々の固有の制御状態パラメータの設定値がプログラムの更新によって消失することを防止でき、プログラム更新後のサブＣＰＵ３それぞれが固有の制御状態パラメータの設定値を用いて光送受信部５の制御を行うことが可能となる。その結果、メモリ４の記憶容量を増加することなく、プログラムの更新を適切に行うことが可能となる。
【００６５】
サブＣＰＵ３は、送信制御としてＬＤＤ及びＣＤＲを監視しながら、制御状態パラメータの適切な設定値を設定（更新）している。同様に、サブＣＰＵ３は、受信制御として、ＬＩＡ及びＣＤＲを監視しながら、制御状態パラメータの適切な設定値を設定（更新）している。第１実施形態の光トランシーバ１では、サブＣＰＵ３は、起動時に、制御状態パラメータの設定値を安全な初期設定値にしてから光送受信部５の制御を開始する。このため、初期設定値が光トランシーバ１の周囲の環境に応じた値になるまで、サブＣＰＵ３のプログラムの更新時に光通信が一旦停止することは避けられない。しかし、プログラム更新に要する時間では、光トランシーバ１の周囲の環境が大きく変わらないことが想定されるので、制御状態パラメータの設定値は大きく変更されないと考えられる。このため、第２実施形態の光トランシーバ１では、プログラム更新後のサブＣＰＵ３は、プログラム更新前と同じ制御状態パラメータの設定値を用いて、光送受信部５を制御する。これにより、サブＣＰＵ３は、プログラム更新前に引き続き光デバイスに関してほぼ同じ動作状態で光送受信部５を制御することが可能となる。したがって、プログラム更新後に光通信を一旦停止することなく、光通信を継続した状態で、サブＣＰＵ３のプログラムを更新することが可能となる。
【００６６】
つまり、各サブＣＰＵ３が担当する光送受信部５の光デバイスに対して、サブＣＰＵ３がアナログ電圧及びデジタルデータ等を制御状態パラメータの設定値として付与することによって、光送受信部５の各光デバイスが光送受信部５のリアルタイム制御を自律して行う。このため、プログラム更新中は光送受信部５によって光通信が継続される。そして、設定値の変化がわずかな時間（数秒程度）の間にプログラムが更新されることによって、プログラム更新前の制御状態パラメータの設定値を用いて、プログラム更新後のサブＣＰＵ３が、光送受信部５の制御を光デバイスに関してほぼ同じ動作状態で継続することができる。その結果、光通信を継続した状態で、サブＣＰＵ３のプログラムを更新することが可能となる。
【００６７】
また、プログラムＰｓｕｂの有効性領域Ｒ４に含まれている有効性情報によって、初期設定値領域Ｒ５に含まれている制御状態パラメータの初期設定値を用いるか、メインＣＰＵ２から送信された制御状態パラメータの設定値を用いるかを切り替えることができる。また、サブＣＰＵ３は、メインＣＰＵ２から送信された制御状態パラメータの設定値を受信した場合、有効性領域Ｒ４に含まれている有効性情報を、初期設定値領域Ｒ５に格納されている初期設定値が有効であることを示すように変更する。このため、プログラム更新後の再起動時においては、サブＣＰＵ３は、メインＣＰＵ２に退避しておいた制御状態パラメータの設定値を用いて光送受信部５の制御を行い、その他の再起動時では、プログラムＰｓｕｂの初期設定値領域Ｒ５に含まれている安全な初期設定値を用いて光送受信部５の制御を行うことが可能となる。
【００６８】
なお、本発明に係る光トランシーバ及び光トランシーバの制御方法は上記実施形態に限定されない。例えば、メインＣＰＵ２は、サブＣＰＵ３のプログラムを必ずしも一つ一つ順番に更新する必要はなく、２以上のサブＣＰＵ３のプログラムを並行して更新してもよい。この場合、メインＣＰＵ２は、サブＣＰＵ３のプログラムを更新する際に、更新対象の複数のサブＣＰＵ３の個別設定パラメータまたは制御状態パラメータの設定値をメモリ４に格納しておき、サブＣＰＵ３のプログラムの更新後に、それぞれのサブＣＰＵ３の個別設定パラメータまたは制御状態パラメータの設定値を正しい対応関係を維持しながらそれぞれのサブＣＰＵ３に送信してもよい。
【００６９】
有効性領域Ｒ４に格納されている有効性情報は、初期設定値領域Ｒ５に格納されている初期設定値の有効性を示しているが、サブＣＰＵ３が揮発性メモリ（ＲＡＭ）に格納している制御状態パラメータの設定値の有効性を示してもよい。この構成では、初期設定値領域Ｒ５に格納されている初期設定値が有効である場合には、有効性情報は無効を示し、初期設定値領域Ｒ５に格納されている初期設定値が無効である場合には、有効性情報は有効を示す。
【００７０】
また、図６に示されるように、プログラムＰｓｕｂは、実行プログラムＲ１、有効性領域Ｒ２、個別設定パラメータ領域Ｒ３、有効性領域Ｒ４及び初期設定値領域Ｒ５を含んでいてもよい。この場合、光トランシーバ１では、図３に示される一連の処理と、図５に示される一連の処理とが組み合わされて実行される。例えば、メインＣＰＵ２は、更新対象のサブＣＰＵ３に個別設定パラメータ要求及び制御状態パラメータ要求を送信し、サブＣＰＵ３は、個別設定パラメータの設定値及び制御状態パラメータの設定値を送信する。また、更新対象のサブＣＰＵ３は、再起動後に、プログラムＰｓｕｂの有効性領域Ｒ２に格納されている有効性情報及び有効性領域Ｒ４に格納されている有効性情報を読み出し、有効性領域Ｒ２に格納されている有効性情報が、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータの設定値が有効であることを示しており、有効性領域Ｒ４に格納されている有効性情報が、初期設定値領域Ｒ５に格納されている初期設定値が有効であることを示している場合に、初期設定値領域Ｒ５に設定されている初期設定値を制御初期値に設定するとともに、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータを用いて、通常状態で起動する。それ以外の場合には、更新対象のサブＣＰＵ３は、通信待機状態で起動し、メインＣＰＵ２から個別設定パラメータの設定値及び制御状態パラメータの設定値の少なくともいずれかを受信する。そして、更新対象のサブＣＰＵ３は、個別設定パラメータの設定値を個別設定パラメータ領域Ｒ３に格納し、制御状態パラメータの設定値を揮発性メモリ（ＲＡＭ）に格納して、プログラムＰｓｕｂ内の有効性領域Ｒ２に格納されている有効性情報を、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータが有効であることを示すように変更するとともに、有効性領域Ｒ４に格納されている有効性情報を、初期設定値領域Ｒ５に格納されている初期設定値が有効であることを示すように変更する。そして、サブＣＰＵ３は、個別設定パラメータ領域Ｒ３に格納されている個別設定パラメータを用い、揮発性メモリ（ＲＡＭ）に格納されている制御状態パラメータを用いて通常状態で起動する。
【符号の説明】
【００７１】
１…光トランシーバ、２…メインＣＰＵ（第２制御部）、３…サブＣＰＵ（第１制御部）、４…メモリ（記憶回路）、５…光送受信部、Ｐｓｕｂ…プログラム。
【図１】
2017005608.tif 000003
【図２】
2017005608.tif 000004
【図３】
2017005608.tif 000005
【図４】
2017005608.tif 000006
【図５】
2017005608.tif 000007
【図６】
2017005608.tif 000008