(57)【特許請求の範囲】
【請求項１】
アラーム発生の有無を示すフラグを複数バイト分保持する第1、第2、および第3のテーブルと、
アラーム発生状況を収集して前記第1のテーブルを更新し、更新後の前記第1のテーブルのフラグ群と前記第2のテーブルのフラグ群との論理和の結果を前記第2のテーブルに保存する処理を定期的に行う収集処理部と、
受信用FIFOと、
送信用FIFOと、
該送信用FIFOのバイト長を保持する送信用FIFO長管理テーブルと、
アドレス管理テーブルと、
外部装置から受信したコマンドを前記受信用FIFOに保存し、前記送信用FIFOに保持されたデータを前記外部装置へ送信する回線部と、
制御部とを備え、
前記制御部は、
前記受信用FIFOから取り出したコマンドが前記フラグに対するリードコマンドの場合、該リードコマンドで指定されたアドレスを前記アドレス管理テーブルに保存し、前記第2のテーブルから前記アドレス管理テーブルに保持されたアドレスが指し示す1バイトのフラグ群を前記送信用FIFOおよび前記第3のテーブルに読み出して前記アドレス管理テーブルに保持されたアドレスを1バイトだけ更新する動作を、前記送信用FIFO長管理テーブルに保持されたバイト長だけ繰り返すリードコマンド受信時処理と、
前記送信用FIFOに格納されたフラグ群の先頭1バイトを前記回線部により前記外部装置へ送信し、前記第3のテーブル中の前記送信した先頭1バイトに対応するフラグ群の値を反転し、該反転処理後の前記第3のテーブルのフラグ群と前記第2のテーブルのフラグ群との論理積の結果を前記第2のテーブルに保存するリードコマンド応答処理とを行う
ことを特徴とする光送受信機の制御回路。
【請求項２】
前記制御部は、前記リードコマンド応答処理では、さらに、前記第2のテーブルから前記アドレス管理テーブルに保持されたアドレスが指し示す1バイトのフラグ群を前記送信用FIFOおよび前記第3のテーブルに読み出して前記アドレス管理テーブルに保持されたアドレスを1バイトだけ更新する処理を行う
ことを特徴とする請求項1に記載の光送受信機の制御回路。
【請求項３】
前記制御部は、前記外部装置からの肯定応答を前記受信用FIFOから取り出した場合、前記リードコマンド応答処理を再び実行する
ことを特徴とする請求項2に記載の光送受信機の制御回路。
【請求項４】
前記制御部は、前記マスタ装置からの否定応答を前記受信用FIFOから取り出した場合、前記送信用FIFOに残存している未送信のデータをクリアし、前記アドレス管理テーブルを当該未送信データのバイト分だけデクリメントするコマンド終了処理を行う
ことを特徴とする請求項1乃至3の何れかに記載の光送受信機の制御回路。
【請求項５】
前記回線部と前記外部装置とは、I2C対応のシリアルインタフェースで接続される
ことを特徴とする請求項1乃至4の何れかに記載の光送受信機の制御回路。
【請求項６】
アラーム発生の有無を示すフラグを複数バイト分保持する第1、第2、および第3のテーブルと、収集処理部と、受信用FIFOと、送信用FIFOと、該送信用FIFOのバイト長を保持する送信用FIFO長管理テーブルと、アドレス管理テーブルと、マスタ装置から受信したコマンドを前記受信用FIFOに保存し、前記送信用FIFOに保持されたデータを前記マスタ装置へ送信する回線部と、制御部とを備えた光送受信機の制御回路が実行する制御方法であって、
前記収集処理部が、アラーム発生状況を収集して前記第1のテーブルを更新し、更新後の前記第1のテーブルのフラグ群と前記第2のテーブルのフラグ群との論理和の結果を前記第2のテーブルに保存する処理を定期的に行い、
前記制御部が、
前記受信用FIFOから取り出したコマンドが前記フラグに対するリードコマンドの場合、該リードコマンドで指定されたアドレスを前記アドレス管理テーブルに保存し、前記第2のテーブルから前記アドレス管理テーブルに保持されたアドレスが指し示すフラグ群を前記送信用FIFOおよび前記第3のテーブルに読み出して前記アドレス管理テーブルに保持されたアドレスを1バイトだけ更新する動作を、前記送信用FIFO長管理テーブルに保持されたバイト長だけ繰り返すリードコマンド受信時処理と、
前記送信用FIFOに格納されたフラグ群の先頭1バイトを前記回線部により前記外部装置へ送信し、前記第3のテーブル中の前記送信した先頭1バイトに対応する1バイトのフラグ群の値を反転し、該反転処理後の前記第3のテーブルのフラグ群と前記第2のテーブルのフラグ群との論理積の結果を前記第2のテーブルに保存するリードコマンド応答処理とを行う
ことを特徴とする制御方法。
【請求項７】
前記制御部は、前記リードコマンド応答処理では、さらに、前記第2のテーブルから前記アドレス管理テーブルに保持されたアドレスが指し示す1バイトのフラグ群を前記送信用FIFOおよび前記第3のテーブルに読み出して前記アドレス管理テーブルに保持されたアドレスを1バイトだけ更新する処理を行う
ことを特徴とする請求項6に記載の制御方法。
【請求項８】
前記制御部は、前記マスタ装置からの肯定応答を前記受信用FIFOから取り出した場合、前記リードコマンド応答処理を再び実行する
ことを特徴とする請求項7に記載の制御方法。
【請求項９】
前記制御部は、前記マスタ装置からの否定応答を前記受信用FIFOから取り出した場合、前記送信用FIFOに残存している未送信のデータをクリアし、前記アドレス管理テーブルを当該未送信データのバイト分だけデクリメントするコマンド終了処理を行う
ことを特徴とする請求項6乃至8の何れかに記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、XFP-MSAに準拠するXFPトランシーバ等の光送受信機の制御回路に関する。
【背景技術】
【０００２】
一般に光送受信機は、デジタルデータを受け取りLEDやレーザダイオードを駆動して光ファイバに光信号を送信する光送信機と、光ファイバから受信した光信号を増幅してデジタル信号に変換する光受信機と、光送信機および光受信機を制御すると共に、それらの作動状態を外部の装置へ伝えるモニタ機能を持つ制御回路とから構成される。
【０００３】
このような光送受信機の制御回路では、光送受信機の温度、バイアス、電源電圧、光出力パワー、受光電力などのモニタ対象となる各種パラメータの観測値を予め設定された限界値と比較し、観測値が限界値を超えた場合にそのパラメータに対応するフラグを立てるようにしている。各パラメータに対応するフラグの値は、制御回路内のメモリあるいはレジスタに記憶される。また、制御回路は、外部の装置から受け取ったコマンドおよびアドレスに従って、上記のフラグを記憶する領域にアクセスすることを可能にするシリアルインタフェイスを有している。外部の装置は、このシリアルインタフェイスを通じてフラグの値を読み出すことにより、光送受信機の作動状態を確認することができる。
【０００４】
上述のような光送受信機として、XFP(10 Gigabit Small Form Factor Pluggable)のMSA(Multi-Source Agreement)に準拠した光トランシーバ(以下、XFPトランシーバと記す)がある。
【０００５】
XFPトランシーバにおいては、上述したフラグに関して、Latched Interrupt Flag Fieleds(以下、Latched Flag或いはラッチ付きフラグと記す)というアラーム／ワーニングが規定されている。このラッチ付きフラグは、I2C回線(SCL/SDA/Mod_Dsel)を介したI2Cマスタからリードされた時点で、XFP側でリードクリアする特性を持つ。
【０００６】
本発明に関連するXFP-MSAに準拠した光送受信機の制御回路50の構成例を図10に示す。図10を参照すると、制御回路50は、I2Cマスタ(with Mod_Dsel)40とI2C回線（SCL/SDA/Mod_Dsel）を介して接続される。I2Cマスタ(with Mod_Dsel)40は、I2C回線（SCL/SDA/Mod_Dsel）を介して制御回路50とXFP-MSAに規定された各種I2Cリード／ライトコマンドのI2C通信を行う機能を有する。
【０００７】
制御回路50は、ハードウェア部として、I2C回線部51、RX FIFO52、TX FIFO53を有する。ここで、TX FIFO53の容量は1バイトである。I2C回線部51は、I2C回線(SCL/SDA/Mod_Dsel)を介してI2C マスタ40との間でXFP-MSAに規定された各種I2Cリード／ライトコマンドのI2C通信を終端し、受信データをI2C マスタ40からRX FIFO52に転送し、送信データをTX FIFO53からI2Cマスタ40に転送し、I2CのStop/受信/送信イベントをI2C割込み処理部56に通知する機能を有する。
【０００８】
制御回路50は、ファームウェア部として、I2Cデータ受信処理部54、I2Cプロトコル処理部55、I2C割込み処理部56、I2Cデータ送信処理部57、ラッチ付きフラグクリア処理部58、ラッチ付きフラグ収集処理部59、リアルタイム更新用ラッチ付きフラグ管理テーブル60、XFP-MSA規定ラッチ付きフラグ管理テーブル61、カレントアドレス管理テーブル62を有する。
【０００９】
次に図10の制御回路50の動作を説明する。
【００１０】
[収集処理]
ラッチ付きフラグ収集処理部59は、XFPトランシーバのラッチ付きフラグのアラーム／ワーニング状態(以下、ワーニングを含めて単にアラームと記す)を収集してリアルタイム更新用ラッチ付きフラグ管理テーブル60を更新し、更新後のリアルタイム更新用ラッチ付きフラグ管理テーブル60のフラグ群とXFP-MSA規定ラッチ付きフラグ管理テーブル61のフラグ群との論理和の結果を、XFP-MSA規定ラッチ付きフラグ管理テーブル61に保存する処理を定期的に行うことにより、XFP-MSA規定ラッチ付きフラグ管理テーブル61を更新する。
【００１１】
[リードコマンド受信時処理]
次に図11を参照して、I2Cマスタ40が制御回路50に対してI2Cのラッチ付きフラグに対するリードコマンドを送信してきた場合の動作を説明する。
【００１２】
I2Cマスタ40がI2C回線部51を介してラッチ付きフラグのアドレスを指定してリードコマンドを発行すると(ステップ121)、I2C回線部51がI2Cマスタ40からのリードコマンドをRX FIFO52に送信する(ステップ122)。次にI2C割込み処理部56はHWからRX FIFO割込み信号を受け取り、I2Cプロトコル処理部55がI2Cデータ受信処理部54を介してリードコマンドを受信する(ステップ123)。次にI2Cプロトコル処理部55がI2Cマスタ40から指定されたアドレスをカレントアドレス管理テーブル62に格納する(ステップ124)。
【００１３】
次にI2Cデータ送信処理部57がカレントアドレス管理テーブル62を参照し、XFP-MSA規定ラッチ付きフラグ管理テーブル61から当該アドレスの情報をTX FIFO53に格納し、カレントアドレス管理テーブル62に格納されているアドレス情報をインクリメントする。TX FIFO53の容量は1バイトなので、I2Cデータ送信処理部57は、この処理を1回のみ実施する(ステップ125)。
【００１４】
次にラッチ付きフラグクリア処理部58が、XFP-MSA規定ラッチ付きフラグ管理テーブル61に格納されているフラグ群のうち、TX FIFO53に格納したアドレスの１バイト分のフラグ群をクリアする(ステップ126)。
【００１５】
以上で、制御回路50が、I2Cマスタ40からラッチ付きフラグに対するリードコマンドを受信したときの受信処理を終了する(ステップ127)。
【００１６】
[リードコマンド応答処理]
次に図12を参照して、図11のラッチ付きフラグに対するリードコマンドの受信処理が終了した後のラッチ付きフラグに対するリードコマンド応答処理の動作を説明する。
【００１７】
まずTX FIFO53がI2C回線部51にTX FIFO53内の１Byteデータを送信することにより、ラッチ付きフラグ情報をI2Cマスタ40に送信する(ステップ131)。次にI2C割込み処理部56がHWからTX FIFO割込み信号を受け取り、I2Cプロトコル処理部55がTX FIFO53から１Byteが送信されたことを検出する(ステップ132)。次にI2Cデータ送信処理部57がカレントアドレス管理テーブル62を参照し、XFP-MSA規定ラッチ付きフラグ管理テーブル61から当該アドレスの情報をTX FIFO53に格納し、カレントアドレス管理テーブル62に格納されているアドレス情報をインクリメントする。TX FIFO53の容量は1バイトなので、I2Cデータ送信処理部57は、この処理を1回のみ実施する(ステップ133)。次にラッチ付きフラグクリア処理部58が、XFP-MSA規定ラッチ付きフラグ管理テーブル61に格納されているフラグ群のうち、TX FIFO53に格納したアドレスの１バイト分のフラグ群をクリアする(ステップ134)。
【００１８】
以上で、制御回路50はラッチ付きフラグに対するリードコマンド応答処理を終了する(ステップ135)。
【００１９】
この後、制御回路50は、I2Cマスタ40から送信されてくる応答コマンドをRX FIFO52を通じて受信する。そして、応答コマンドが肯定応答コマンドであれば、図12を参照して説明したリードコマンド応答処理を再び繰り返す。他方、応答コマンドが否定応答コマンドであれば、図13に示すラッチ付きフラグに対するリードコマンド終了処理を実行する。
【００２０】
[リードコマンド終了処理]
次に、図13を参照して、ラッチ付きフラグに対するリードコマンドの終了処理の動作を説明する。I2Cマスタ40から送信されてくる応答コマンドが否定応答の場合、I2C割込み処理部56はHWからI2C STOP割込み信号を受け取り、I2Cプロトコル処理部55がラッチ付きフラグに対するリードコマンドが終了することを検出する(ステップ141)。次にI2Cデータ送信処理部57がカレントアドレス管理テーブル62に格納されているアドレスをTX FIFO内の未送信Byte数である1バイトだけデクリメントする(ステップ142)。
【００２１】
以上で、制御回路50はラッチ付きフラグに対するリードコマンドの終了処理を終える(ステップ143)。
【００２２】
なお、光送受信機の制御回路に関する文献としては、特許文献1、2がある。
【先行技術文献】
【特許文献】
【００２３】
【特許文献１】特許第3822861号公報
【特許文献２】特開2009-273047号
【発明の概要】
【発明が解決しようとする課題】
【００２４】
本発明に関連するXFP-MSAに準拠した光送受信機の制御回路50においては、上述したように、TX FIFO53に送信データをセットする動作に引き続いて、当該アドレスのXFP-MSA規定ラッチ付きフラグ管理テーブル61上のラッチ付きフラグをクリアすることにより、所定の特性、つまりラッチ付きフラグはI2C回線(SCL/SDA/Mod_Dsel)を介したI2Cマスタからリードされた時点でXFP側でリードクリアする特性を満たすようにしている。
【００２５】
しかしながら、制御回路50で採用されている上述した方法はTX FIFO53が1バイト容量であるときには適切に動作するが、2Byte以上のTX FIFOを有し、且つデータ送信処理時にTX FIFOを必ずFullにしなければならない制約があるマイコン等のハードウェアを使用する制御回路の場合、I2Cマスタからリードされていないラッチ付きフラグがクリアされてしまい、I2CマスタにとってXFPのサイレント障害になるという課題がある。その理由は、例えばTX FIFO53を2バイト容量とすると、FullにするためにXFP-MSA規定ラッチ付きフラグ管理テーブル61上の2バイト分のフラグ群がTX FIFO53に格納されると同時にクリアされてしまうけれども、先頭1バイトに続く残り1バイトはI2Cマスタに対して送信されるとは限らないためである。
【００２６】
本発明の目的は、上述したような課題、すなわち、2Byte以上の送信用FIFOを有し、且つデータ送信処理時に送信用FIFOを必ずFullにしなければならない制約があるハードウェアを使用する光送受信機の制御回路では、フラグがリードされないのにクリアされてサイレント障害が発生する、という課題を解決する光送受信機の制御回路を提供することにある。
【課題を解決するための手段】
【００２７】
本発明の一形態にかかる光送受信機の制御回路は、
アラーム発生の有無を示すフラグを複数バイト分保持する第1、第2、および第3のテーブルと、
アラーム発生状況を収集して前記第1のテーブルを更新し、更新後の上記第1のテーブルのフラグ群と上記第2のテーブルのフラグ群との論理和の結果を上記第2のテーブルに保存する処理を定期的に行う収集処理部と、
受信用FIFOと、
送信用FIFOと、
該送信用FIFOのバイト長を保持する送信用FIFO長管理テーブルと、
アドレス管理テーブルと、
外部装置から受信したコマンドを上記受信用FIFOに保存し、上記送信用FIFOに保持されたデータを上記外部装置へ送信する回線部と、
制御部とを備え、
上記制御部は、
上記受信用FIFOから取り出したコマンドがリードコマンドの場合、該リードコマンドで指定されたアドレスを上記アドレス管理テーブルに保存し、上記第2のテーブルから上記アドレス管理テーブルに保持されたアドレスが指し示す1バイトのフラグ群を上記送信用FIFOおよび上記第3のテーブルに読み出して上記アドレス管理テーブルに保持されたアドレスを1バイトだけ更新する動作を、上記送信用FIFO長管理テーブルに保持されたバイト長だけ繰り返すリードコマンド受信時処理と、
上記送信用FIFOに格納されたフラグ群の先頭1バイトを上記回線部により上記外部装置へ送信し、上記第3のテーブル中の上記送信した先頭1バイトに対応する1バイトのフラグ群の値を反転し、該反転処理後の上記第3のテーブルのフラグ群と上記第2のテーブルのフラグ群との論理積の結果を上記第2のテーブルに保存するリードコマンド応答処理とを行う、という構成を採る。
【発明の効果】
【００２８】
本発明は上述したような構成を有するため、2Byte以上の送信用FIFOを有し、且つデータ送信処理時に送信用FIFOを必ずFullにしなければならない制約があるハードウェアを使用する光送受信機の制御回路において、フラグがリードされていないのにクリアされてしまってサイレント障害が発生するのを防止することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明を適用した光送受信機の一例を示すブロック図である。
【図２】本発明の第1の実施形態にかかる光送受信機の制御回路のブロック図である。
【図３】本発明の第2の実施形態にかかる光送受信機の制御回路のブロック図である。
【図４】本発明の第2の実施形態にかかる光送受信機の制御回路におけるリアルタイム更新用ラッチ付きフラグ管理テーブル、XFP-MSA規定ラッチ付きフラグ管理テーブル、カレントアドレス管理テーブル、バックアップ用ラッチ付きフラグ管理テーブル、TX FIFO長管理テーブルの構成例を示す図である。
【図５】本発明の第2の実施形態にかかる光送受信機の制御回路におけるラッチ付きフラグ収集処理部の処理例を示すフローチャートである。
【図６】本発明の第2の実施形態にかかる光送受信機の制御回路がI2Cマスタからフラグリードコマンドを受信した時の動作を示すフローチャートである。
【図７】本発明の第2の実施形態にかかる光送受信機の制御回路がフラグリードコマンドの受信処理が終了した後に行うラッチ付きフラグリードコマンド応答処理の動作を示すフローチャートである。
【図８】本発明の第2の実施形態にかかる光送受信機の制御回路におけるフラグリードコマンドの終了処理の動作を示すフローチャートである。
【図９】本発明に関連するXFPトランシーバの制御回路と本発明の第2の実施形態にかかる制御回路との相違点を説明する図である。
【図１０】本発明に関連するXFPトランシーバの制御回路のブロック図である。
【図１１】本発明に関連するXFPトランシーバの制御回路がI2Cマスタからフラグリードコマンドを受信した時の動作を示すフローチャートである。
【図１２】本発明に関連するXFPトランシーバの制御回路がフラグリードコマンドの受信処理が終了した後に行うラッチ付きフラグリードコマンド応答処理の動作を示すフローチャートである。
【図１３】本発明に関連するXFPトランシーバの制御回路におけるフラグリードコマンドの終了処理の動作を示すフローチャートである。
【発明を実施するための形態】
【００３０】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1を参照すると、本発明を適用した光送受信機4000の一例は、光受信機2000と光送信機3000と制御回路1000とから構成される。光送信機3000は、デジタルデータTXを受け取りLEDやレーザダイオードを駆動して光ファイバ(図示せず)に光信号を送信する機能を有する。また、光受信機2000は、光ファイバ(図示せず)から受信した光信号を増幅してデジタル信号RXに変換する機能を有する。また、制御回路1000は、光送信機3000および光受信機2000を制御すると共に、それらの作動状態を外部の装置へ伝えるモニタ機能を有する。これらのうち、光受信機2000、光送信機3000については、本発明と直接関係がなく特許文献1、2等に記載された技術であるため、その詳細な説明は省略する。
【００３１】
図2を参照すると、本発明の第1の実施形態にかかる光送受信機の制御回路1000は、アラーム発生の有無を示すフラグを複数バイト分保持する容量を有する第1、第2、および第3のテーブル1001、1002、1003と、収集処理部1004と、受信用FIFO1005と、送信用FIFO1006と、この送信用FIFO1006のサイズ(バイト長)を事前に保持する送信用FIFO長管理テーブル1007と、アドレス管理テーブル1008と、回線部1009と、制御部1010とを備えている。また、制御回路1000は、シリアルインタフェイスを通じて外部装置1030に接続されている。
【００３２】
収集処理部1004は、制御回路1000が制御する光送受信機内における各種のアラーム発生状況を収集して第１のテーブル1001に保存する機能を有する。具体的には、収集処理部1004は、光受信機2000および光送信機3000からそれらの作動特性または環境に関するパラメータを示す複数のアナログ信号を受信してデジタル信号に変換し、所定の記憶領域に記憶するアナログ・デジタル変換回路と、記憶した各パラメータのデジタル信号の値を予め記憶した限界値と比較して、その比較結果に対応したフラグ値を生成し、第1のテーブル1001に記憶する比較回路とを有する。また、収集処理部1004は、第1のテーブル1001のフラグ群と第2のテーブル1002のフラグ群との論理和を計算し、その結果を第2のテーブル1002に保存する。例えば、第1のテーブル1001における或るパラメータP1に対応するフラグの値と第2のテーブル1002における同じパラメータP1に対応するフラグの値との論理和を計算し、この論理和の値で第2のテーブル1002における当該パラメータP1に対応するフラグの値を更新する。収集処理部1004は、上記の処理を定期的に行う。
【００３３】
外部装置1030は、上記第2のテーブル1002に保持されたフラグの値を取得する場合、インタフェイス1020を通じてフラグに対するリードコマンドを制御回路1000に対して送信する。制御回路1000の回線部1009は、受信したリードコマンドを受信用FIFO1005を通じて制御部1010に伝達する。
【００３４】
これに応じて制御部1010は、リードコマンド受信時処理を行う。リードコマンド受信時処理では、まず、リードコマンドで指定されたアドレスをアドレス管理テーブル1008に保存する。次に、制御部1010は、第2のテーブル1002からアドレス管理テーブル1008に保存したアドレスが指し示す１バイトのフラグ群を送信用FIFO1006と第3のテーブル1003に読み出し、アドレス管理テーブル1008に保持されたアドレスを１バイト分だけ更新する。例えば、リードコマンドで指定されたアドレスがXである場合、制御部1010は、第2のテーブル1002のアドレスXの1バイトのデータ(フラグ群)を送信用FIFO1006に格納すると共に、第3のテーブル1003のアドレスXに格納し、アドレス管理テーブル1008のアドレスをX+1に更新する。制御部1010は、上記の動作を、送信用FIFO長管理テーブル1007のバイト長分だけ繰り返す。例えば、送信用FIFO1006の容量が2バイトであることが送信用FIFO長管理テーブル1007に保持されている場合、制御部1010は、さらに、第2のテーブル1002のアドレスX+1の1バイトを読み出して送信用FIFO1006と第３のテーブルの同じアドレスX+1の箇所に格納し、アドレス管理テーブル1008をX+2に更新する。
【００３５】
次に、制御部1010は、リードコマンド応答処理を行う。リードコマンド応答処理では、まず、送信用FIFO1006に格納された先頭１バイトを回線部1009により外部装置1030へ送信する。次に、制御部1010は、第3のテーブル1003における上記送信したアドレスXに対応する１バイトのフラグ群の値を反転する。例えば、1バイトのフラグ群の値が、10100101であったとすると、01011010に変更する。次に、制御部1010は、反転処理後の第3のテーブル1003のフラグ群と第2のテーブル1002のフラグ群との論理積を計算し、その結果を第2のテーブル1002に保存する。例えば、第2のテーブル1002のアドレスXのフラグ群に変更がなく、10100101であったとすると、第3のテーブル1003の反転処理後のフラグ群01011010と論理積をとると、その結果は00000000となる。他方、第2のテーブル1002の読取後に収集処理部1004の定期処理が実施され、その結果として、第2のテーブル1002のアドレスXの値が例えば11110101に更新されていたとすると、第3のテーブル1003の反転処理後のフラグ群01011010と論理積をとった場合、その結果は01010000となる。
【００３６】
このように本実施形態によれば、外部装置1030からリードコマンドを受信した場合、そのリードコマンドで指定されたアドレスから送信用FIFO1006の容量分のフラグ群を第2のテーブル1002から読み出してFIFO1006に格納することで、FIFO1006をFull状態にした後、FIFO1006の先頭1バイトを外部装置1030に送信する。このため、データ送信処理時には送信用FIFO1006を必ずFullにしておかなければならないというハードウェアの制約があるマイコンを使用して光送受信機の制御回路を実現する場合でも、支障なく１バイト単位でフラグ群を外部装置へ送信することが可能になる。
【００３７】
そして、FIFO1006をFull状態にするために第2のテーブル1002から2バイト以上のフラグ群をFIFO1006に読み出したとしても、これら読み出した2バイト以上のフラグ群のうち送信済みとして管理するフラグ群はあくまでも実際に送信された1バイトだけであるため、FIFO1006に読み出した全てのバイトのフラグ群を送信済みとして管理する場合のようなサイレント障害の発生を防止することができる。
【００３８】
さらに、FIFO1006に格納されたフラグ群のコピーを第3のテーブル1003に保存し、そのうち送信済みとなった１バイトのフラグ群の値を反転し、この反転したフラグ群と第2のテーブル1002の対応するフラグ群との論理積を計算して、第2のテーブル1002を更新する。このため、第2のテーブル1002の送信済みのバイトを単純にクリアする場合のような誤操作、つまり、第2のテーブル1002の読取後に収集処理部1004の定期処理が実施され、その結果として第2のテーブル1002の送信済みフラグ群の値が変更されているにもかかわらずにそれをクリアしてしまう操作を防止することができる。
【００３９】
なお、制御部1010は、上記リードコマンド応答処理において、続く1バイトの送信に備えて、次のような処理、すなわち、送信用FIFO1006を再びFullにしておくために、第2のテーブル1002からアドレス管理テーブル1008に保持されたアドレスが指し示す1バイトのフラグ群を送信用FIFO1006および第3のテーブル1003に読み出してアドレス管理テーブル1008に保持されたアドレスを1バイトだけ更新する処理を行うようにしてもよい。そして、制御部1010は、外部装置1030からの肯定応答を受信用FIFO1005から取り出した場合、上記リードコマンド応答処理を再び実行するようにしてもよい。また、制御部1010は、外部装置1030からの否定応答を受信用FIFO1005から取り出した場合、送信用FIFO1006に残存している未送信のデータをクリアし、アドレス管理テーブル1008を当該未送信データのバイト分だけデクリメントするコマンド終了処理を行うようにしてもよい。
【００４０】
[第2の実施形態]
図3を参照すると、本発明の第2の実施形態は、2Byte以上のTX FIFO23を有し、且つデータ送信処理時にTX FIFO23を必ずFullにしなければならない特徴を有するハードウェア(例えばマイコン)を具備したXFPトランシーバの制御回路20を示している。
【００４１】
制御回路20は、I2Cマスタ(with Mod_Dsel)10とI2C回線（SCL/SDA/Mod_Dsel）を介して接続される。I2Cマスタ(with Mod_Dsel)10は、I2C回線（SCL/SDA/Mod_Dsel）を介して制御回路20とXFP-MSAに規定された各種I2Cリード／ライトコマンドのI2C通信を行う機能を有する。
【００４２】
制御回路20は、ハードウェア部として、I2C回線部21、RX FIFO22、TX FIFO23を有する。I2C回線部21は、I2C回線(SCL/SDA/Mod_Dsel)を介してI2Cマスタ10との間でXFP-MSAに規定された各種I2Cリード／ライトコマンドのI2C通信を終端し、受信データをI2Cマスタ10からRX FIFO22に転送し、送信データをTX FIFO23からI2Cマスタ10に転送し、I2CのStop/受信/送信イベントをI2C割込み処理部26に通知する機能を有する。
【００４３】
制御回路20は、ファームウェア部として、I2Cデータ受信処理部24、I2Cプロトコル処理部25、I2C割込み処理部26、I2Cデータ送信処理部27、ラッチ付きフラグ更新処理部28、ラッチ付きフラグ収集処理部29、リアルタイム更新用ラッチ付きフラグ管理テーブル30、XFP-MSA規定ラッチ付きフラグ管理テーブル31、カレントアドレス管理テーブル32、バックアップ用ラッチ付きフラグ管理テーブル33、TX FIFO長管理テーブル34を有する。
【００４４】
I2Cデータ受信処理部24は、I2Cプロトコル処理部25の指示に従いRX FIFO22からI2C受信データを取得し、I2Cプロトコル処理部25にI2C受信データを転送する機能を有する。
【００４５】
I2Cプロトコル処理部25は、I2Cマスタ10からのI2Cのラッチ付きフラグリードコマンドをI2C割り込み処理部26からのデータ受信要求を契機にI2Cデータ受信処理部24から受信し、I2Cマスタ10から指定された当該アドレスをカレントアドレス管理テーブル32に格納し、I2Cデータ送信処理部27に対して必要な指示を出す一連のラッチ付きフラグに対するリードコマンド受信時処理機能を有する。
【００４６】
またI2Cプロトコル処理部25は、I2Cマスタ10へのI2Cのラッチ付きフラグに対するリードコマンドの応答送信がTX FIFO23から１Byte送信されたことをI2C割り込み処理部26からのデータ送信報告により認識し、それを契機に、カレントアドレス管理テーブル32に格納されているアドレス情報からTX FIFO長管理テーブル34に格納されているTX FIFO長分を減算し、実際に送信されたアドレス情報を算出し、ラッチ付きフラグ更新処理部28にラッチ付きフラグの更新処理を指示し、I2Cデータ送信処理部27にラッチ付きフラグをI2Cマスタ10にI2Cリードコマンドの応答をTX FIFO23に設定する指示を出す一連のラッチ付きフラグリードコマンド応答処理機能を有する。
【００４７】
さらにI2Cプロトコル処理部25は、I2Cマスタ10からのI2Cのラッチ付きフラグに対するリードコマンド終了要求（I2C STOP)をI2C割り込み処理部26からのI2C STOP報告により認識し、それを契機に、I2Cデータ送信処理部27にTX FIFO23内の未送信Byte数をクリアし、カレントアドレス管理テーブル32に格納されているアドレスをTX FIFO23内の未送信Byte数分デクリメントするように指示を出す、一連のラッチ付きフラグに対するリードコマンド終了処理機能を有する。
【００４８】
I2Cデータ送信処理部27は、I2Cプロトコル処理部25の指示に従いカレントアドレス管理テーブル32を参照しXFP-MSA規定ラッチ付きフラグ管理テーブル31の当該アドレスのラッチ付きフラグをTX FIFO23およびバックアップ用ラッチ付きフラグ管理テーブル33に格納し、カレントアドレス管理テーブル32内のカレントアドレスをインクリメントする一連の処理を、TX FIFO長管理テーブル34内のTX FIFO長を参照して、TX FIFO23に空きByte数が無くなるまで繰り返し実施する機能を有する。
【００４９】
またI2Cデータ送信処理部27は、I2Cプロトコル処理部25のI2C STOPの指示に従い、TX
FIFO内の未送信となったByte数をTX FIFO23を参照して算出し、TX FIFO23を未送信Byte数分クリアし、カレントアドレス管理テーブル32に格納されているアドレスをTX FIFO内の未送信Byte数分デクリメントする機能を有する。
【００５０】
ラッチ付きフラグ更新処理部28は、TX FIFO23から１ByteデータがI2Cマスタ側に送信されたタイミングでI2Cプロトコル処理部25の指示に従いカレントアドレス管理テーブル32およびTX FIFO長管理テーブル34を参照し、カレントアドレスからTXFIFO長を減算し、実際に送信されたアドレス情報を得て、バックアップ用ラッチ付きフラグ管理テーブル33から実際に送信された当該アドレスを参照してラッチ付きフラグをbit反転し、XFP-MSA規定ラッチ付きフラグ管理テーブル31の当該アドレスのラッチ付きフラグとの論理積（AND）を演算し、ANDの結果をXFP-MSA規定ラッチ付きフラグ管理テーブル31に格納し、XFP-MSA規定ラッチ付きフラグ管理テーブル31のラッチ付きフラグを更新する機能を有する。
【００５１】
ラッチ付きフラグ収集処理部29は、制御回路20のラッチ付きフラグのアラーム／ワーニング状態を周期処理により収集しており、アラーム／ワーニングが発生している場合にリアルタイム更新用ラッチ付きフラグ管理テーブル30の当該アラーム／ワーニングのbitを１に設定し、アラーム／ワーニングが発生していない場合にリアルタイム更新用ラッチ付きフラグ管理テーブル30の当該アラーム／ワーニングのbitを0に設定し、リアルタイム更新用ラッチ付きフラグ管理テーブル30からXFP-MSA規定ラッチ付きフラグ管理テーブル31に論理和（OR）を演算し、ORの結果をXFP-MSA規定ラッチ付きフラグ管理テーブル31に格納し、XFP-MSA規定ラッチ付きフラグ管理テーブル31のラッチ付きフラグを更新する機能を有する。
【００５２】
図4は、リアルタイム更新用ラッチ付きフラグ管理テーブル30、XFP-MSA規定ラッチ付きフラグ管理テーブル31、カレントアドレス管理テーブル32、バックアップ用ラッチ付きフラグ管理テーブル33、TX FIFO長管理テーブル34の構成例を示す。この例では、リアルタイム更新用ラッチ付きフラグ管理テーブル30、XFP-MSA規定ラッチ付きフラグ管理テーブル31、およびバックアップ用ラッチ付きフラグ管理テーブル33は、それぞれ８Byteの容量を持つ。また、それら8ByteのアドレスをByte#80〜Byte#87とするとき、カレントアドレス管理テーブル32はByte#XXを保持する。また、TX FIFO23の容量を#n Byteとするとき、TX FIFO長管理テーブル34には事前に#n Byteが保持されている。
【００５３】
次に図3の制御回路20の動作を、図5、図6、図7および図8に示すフローチャートを参照して説明する。
【００５４】
[収集処理]
図5を参照すると、ラッチ付きフラグ収集処理部29は、XFPトランシーバのラッチ付きフラグのアラーム／ワーニング状態を周期処理により収集しており(ステップ71)、アラーム／ワーニングが発生しているかどうかを判別し(ステップ72)、アラーム／ワーニングが発生していることを検出した場合にリアルタイム更新用ラッチ付きフラグ管理テーブル30の当該アラーム／ワーニングのbitを1に設定し(ステップ73)、アラーム／ワーニングが発生していないことを検出した場合にリアルタイム更新用ラッチ付きフラグ管理テーブル30の当該アラーム／ワーニングのbitを0に設定している(ステップ80)。
【００５５】
上記の設定を一通り終えると、ラッチ付きフラグ収集処理部29は、リアルタイム更新用ラッチ付きフラグ管理テーブル30からXFP-MSA規定ラッチ付きフラグ管理テーブル31に論理和（OR）を演算し、ORの結果をXFP-MSA規定ラッチ付きフラグ管理テーブル31に格納することにより、XFP-MSA規定ラッチ付きフラグ管理テーブル31のラッチ付きフラグを最新の状態に更新する(ステップ74)。
【００５６】
以上で、制御回路20のラッチ付きフラグのアラーム／ワーニングの或る周期における収集処理を終了する(ステップ75)。
【００５７】
[リードコマンド受信時処理]
次に図6を参照して、I2Cマスタ10がXFPモジュール20に対してI2Cのラッチ付きフラグに対するリードコマンドを送信してきた場合の動作を説明する。
【００５８】
I2Cマスタ10がI2C回線部21を介してラッチ付きフラグのアドレスを指定してリードコマンドを発行すると(ステップ91)。I2C回線部21がI2Cマスタ10からのリードコマンドをRX FIFO22に送信する(ステップ92)。次にI2C割込み処理部26はHWからRX FIFO割込み信号を受け取り、I2Cプロトコル処理部25がI2Cデータ受信処理部24を介してリードコマンドを受信する(ステップ93)。次にI2Cプロトコル処理部25がI2Cマスタ10から指定された当該アドレスをカレントアドレス管理テーブル32に格納する(ステップ94)。
【００５９】
次にI2Cデータ送信処理部27がカレントアドレス管理テーブル32を参照し、XFP-MSA規定ラッチ付きフラグ管理テーブル31から当該アドレスの情報をTX FIFO23およびバックアップ用ラッチ付きフラグ管理テーブル33に格納し、カレントアドレス管理テーブル32に格納されているアドレス情報をインクリメントする。I2Cデータ送信処理部27は、この処理をTX FIFO長管理テーブル34に格納されているByte数分繰り返す(ステップ95)。
【００６０】
以上で、制御回路20が、I2Cマスタ10からラッチ付きフラグに対するリードコマンドを受信したときの受信処理を終了する(ステップ96)。
【００６１】
[リードコマンド応答処理]
次に図7を参照して、図6のラッチ付きフラグリードコマンドの受信処理が終了した後のラッチ付きフラグに対するリードコマンド応答処理の動作を説明する。
【００６２】
まずTX FIFO23がI2C回線部21にTX FIFO23内の先頭１Byteデータを送信し、ラッチ付きフラグ情報をI2Cマスタ10に送信する(ステップ101)。次にI2C割込み処理部26がHWからTX FIFO割込み信号を受け取り、I2Cプロトコル処理部25がTX FIFO23から先頭１Byteが送信されたことを検出する(ステップ102)。次にI2Cプロトコル処理部25がカレントアドレス管理テーブル32に格納されているアドレス情報からTX FIFO長管理テーブル34に格納されているTX FIFO長分を減算し、実際に送信されたアドレス情報を算出する(ステップ103)。
【００６３】
次にラッチ付きフラグ更新処理部28が実際に送信されたアドレス情報から該当するバックアップ用ラッチ付きフラグ管理テーブル33のbitを反転し、この反転情報とXFP-MSA規定ラッチ付きフラグ管理テーブル31の論理積(AND)を実施し、XFP-MSA規定ラッチ付きフラグ管理テーブル31を更新する(ステップ104)。次にI2Cデータ送信処理部27がカレントアドレス管理テーブル32を参照し、XFP-MSA規定ラッチ付きフラグ管理テーブル31から当該アドレスの情報をTX FIFO23およびバックアップ用ラッチ付きフラグ管理テーブル33に格納し、カレントアドレス管理テーブル32に格納されているアドレス情報をインクリメントする(ステップ105)。
【００６４】
以上で、制御回路20はラッチ付きフラグに対するリードコマンド応答処理を終了する(ステップ106)。
【００６５】
この後、制御回路20は、I2Cマスタ10から送信されてくる応答コマンドをRX FIFO22を通じて受信する。そして、応答コマンドが肯定応答コマンドであれば、図7を参照して説明したリードコマンド応答処理を再び繰り返す。他方、応答コマンドが否定応答コマンドであれば、図8に示すラッチ付きフラグに対するリードコマンド終了処理を実行する。
【００６６】
[リードコマンド終了処理]
次に、図8を参照して、ラッチ付きフラグに対するリードコマンドの終了処理の動作を説明する。I2Cマスタ10から送信されてくる応答コマンドが否定応答の場合、I2C割込み処理部26はHWからI2C STOP割込み信号を受け取り、I2Cプロトコル処理部25がラッチ付きフラグに対するリードコマンドが終了することを検出する(ステップ111)。I2Cプロトコル処理部25からの指示により、I2Cデータ送信処理部27がTX FIFO内の未送信となったByte数をTX FIFO23を参照して算出し、TX FIFO23を未送信Byte数分クリアし、カレントアドレス管理テーブル32に格納されているアドレスをTX FIFO23内の未送信Byte数分デクリメントする(ステップ112)。
【００６７】
以上で、制御回路20はラッチ付きフラグに対するリードコマンドの終了処理を終える(ステップ113)。
【００６８】
次に図9を参照して、図10に示した本発明に関連するXFPトランシーバの制御回路50と本実施形態にかかる制御回路20との相違点について説明する。
【００６９】
図10に示した本発明に関連するXFPトランシーバの制御回路50では、1Byte容量のTX
FIFO53を使用して、1Byte単位でデータの送信を行う。このとき、XFP-MSA規定ラッチ付きフラグ管理テーブル61から1ByteをTX FIFO53に格納した時点で(ステップ133)、XFP-MSA規定ラッチ付きフラグ管理テーブル61上の当該1Byteをクリアする(ステップ134)。この方法を本実施形態におけるnByteのTX FIFO23に適用すると、XFP-MSA規定ラッチ付きフラグ管理テーブル31からnByteをTX FIFO23に格納した時点で、XFP-MSA規定ラッチ付きフラグ管理テーブル31上の当該nByteをクリアすることになり、サイレント障害が発生する。
【００７０】
これに対して本実施形態では、XFP-MSA規定ラッチ付きフラグ管理テーブル31からnByteをTX FIFO23およびバックアップ用ラッチ付きフラグ管理テーブル33に格納し(ステップ95)、TX FIFO23から1Byte送信後、実際に送信されたアドレス情報を算出し(ステップ103)、実際に送信されたアドレス情報から該当するバックアップ用ラッチ付きフラグ管理テーブル33のbitを反転し、この反転情報とXFP-MSA規定ラッチ付きフラグ管理テーブル31の論理積(AND)を実施し、XFP-MSA規定ラッチ付きフラグ管理テーブル31を更新する(ステップ104)。これにより、TX FIFO23がnByte容量であっても、I2Cマスタ40からリードされた1Byteのラッチ付きフラグだけをクリアすることができる。
【００７１】
以上説明したように、本実施形態においては、以下に記載するような効果を奏する。
【００７２】
第1の効果は、2Byte以上のTX FIFOを有し、且つデータ送信処理時にTX FIFOを必ずFullにしなければならない制限のあるハードウェア部により構成される光送受信機の制御回路20において、ファームウェア部にてバックアップ用ラッチ付きフラグ管理テーブルおよびTX FIFO長を予め保持しておくTX FIFO長管理テーブルを設け、ファームウェアの処理でラッチ付きフラグを更新するタイミングをTX FIFOに格納する時からTX FIFOから1Byte送信された時に変更することで、ラッチ付きフラグがTX FIFOから未送信なラッチ付きフラグに対して更新を実施せず、TX FIFOから送信されたラッチ付きフラグを対象に更新することができることである。つまり、制御回路20のファームウェア部がTX FIFOから未送信のラッチ付きフラグを更新しないためI2CマスタにとってXFPのサイレント障害となることはない。
【００７３】
第2の効果は、2Byte以上のTX FIFOを有し、且つデータ送信処理時にTX FIFOを必ずFullにしなければならない特徴を有するマイコン(ハードウェア部)を使用した光送受信機の制御回路20でも、1ByteのTX FIFOを具備するマイコンを使用した光送受信機の制御回路20でもファームウェア部を共通ファームウェアとすることができることである。
【００７４】
なお、本実施形態では、I2C割込み処理部26が、ハードウェアからの割込みによってリードコマンドの受信等を検出しているが、XFPファームウェアによる周期的なポーリング処理によってリードコマンドの受信等を検出するようにしてもよい。
【産業上の利用可能性】
【００７５】
通信事業者の商用の光ネットワーク網にて、光ケーブルを終端するXFPを利用しているネットワーク機器の分野にて利用できる。また、通信デバイス開発事業者のXFP開発にて、ハードウェア原価低減およびXFPファームウェア開発費の低減に利用できる。
【符号の説明】
【００７６】
1000  光送受信機の制御回路
1001  第１のテーブル
1002  第2のテーブル
1003  外部装置
1003  第3のテーブル
1004  収集処理部
1005  受信用FIFO
1006  送信用FIFO
1007  送信用FIFO長管理テーブル
1008  アドレス管理テーブル
1009  回線部
1010  制御部
【図１】
0005516175.tif 000002
【図２】
0005516175.tif 000003
【図３】
0005516175.tif 000004
【図４】
0005516175.tif 000005
【図５】
0005516175.tif 000006
【図６】
0005516175.tif 000007
【図７】
0005516175.tif 000008
【図８】
0005516175.tif 000009
【図９】
0005516175.tif 000010
【図１０】
0005516175.tif 000011
【図１１】
0005516175.tif 000012
【図１２】
0005516175.tif 000013
【図１３】
0005516175.tif 000014