(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-10
(45)【発行日】2023-01-18
(54)【発明の名称】光トランシーバの制御方法及び光トランシーバ
(51)【国際特許分類】
H04B 10/077 20130101AFI20230111BHJP
H04B 10/50 20130101ALI20230111BHJP
H04B 10/60 20130101ALI20230111BHJP
【FI】
H04B10/077
H04B10/50
H04B10/60
(21)【出願番号】P 2019034582
(22)【出願日】2019-02-27
【審査請求日】2021-12-21
(73)【特許権者】
【識別番号】000002130
【氏名又は名称】住友電気工業株式会社
(74)【代理人】
【識別番号】100088155
【氏名又は名称】長谷川 芳樹
(74)【代理人】
【識別番号】100113435
【氏名又は名称】黒木 義樹
(74)【代理人】
【識別番号】100136722
【氏名又は名称】▲高▼木 邦夫
(74)【代理人】
【識別番号】100174399
【氏名又は名称】寺澤 正太郎
(74)【代理人】
【識別番号】100171583
【氏名又は名称】梅景 篤
(72)【発明者】
【氏名】田中 弘巳
【審査官】佐藤 敬介
(56)【参考文献】
【文献】特開2012-028910(JP,A)
【文献】国際公開第2006/090473(WO,A1)
【文献】特表2009-535677(JP,A)
【文献】特開2007-052515(JP,A)
【文献】特開2010-141774(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04B 10/077
H04B 10/50
H04B 10/60
(57)【特許請求の範囲】
【請求項1】
外部のホスト装置から送信されるクロック信号に同期して、内部のデータ記憶部に格納されている監視用データを前記ホスト装置に送信する光トランシーバの制御方法であって、
周期処理を周期的に行うステップと、
前記周期処理を一時的に中断するとともに、前記クロック信号をストレッチして前記監視用データを送信するための割込み処理を行うステップと、
送信レジスタに格納されている前記監視用データを、前記クロック信号に同期して前記ホスト装置に1ビットずつ送信するステップと、
前記周期処理を一周期行うのに要する処理時間が所定値よりも小さいとき、前記割込み処理の処理モードを第1処理モードに設定し、前記処理時間が前記所定値よりも大きいとき、前記処理モードを第2処理モードに設定するステップと、
を備え、
前記割込み処理を行うステップは、
前記処理モードが前記第1処理モードに設定されている場合に行うステップであって、前記監視用データである第1データを前記送信レジスタに格納して前記クロック信号のストレッチを解除した後に、前記第1データの次に送信される前記監視用データである第2データを前記データ記憶部から読み出すステップと、
前記処理モードが前記第2処理モードに設定されている場合に行うステップであって、前記第1データを前記送信レジスタに格納して前記第2データを前記データ記憶部から読み出した後に、前記クロック信号のストレッチを解除するステップと、
を含む、光トランシーバの制御方法。
【請求項2】
前記周期処理を周期的に行うステップは、
電気信号を光信号に変換する光送信素子の動作を制御するステップと、
光信号を電気信号に変換する光受信素子の動作を制御するステップと、
前記光送信素子の動作を制御するステップ及び前記光受信素子の動作を制御するステップにおいて得られた結果に応じて前記データ記憶部に格納されている前記監視用データを更新するステップと、を含む、請求項1に記載の光トランシーバの制御方法。
【請求項3】
前記ホスト装置への前記監視用データの送信は、I
2C(Inter-Integrated Circuit)規格に準拠して行われ、
前記クロック信号の周波数は、400kHz~1MHzである、請求項1または請求項2に記載の光トランシーバの制御方法。
【請求項4】
外部のホスト装置から送信されるクロック信号に同期して、監視用データを前記ホスト装置に送信する光トランシーバであって、
周期処理を周期的に行うプロセッサと、
前記監視用データが格納されるデータ記憶部と、
前記データ記憶部から読み出された前記監視用データを一時的に格納するとともに前記クロック信号に同期して前記監視用データを前記ホスト装置に1ビットずつ送信する送信レジスタと、
を備え、
前記プロセッサは、前記周期処理を一時的に中断するとともに、前記クロック信号をストレッチして前記データ記憶部に格納されている前記監視用データを送信するための割込み処理を行い、
前記プロセッサは、前記周期処理を一周期行うのに要する処理時間が所定値よりも小さいとき、前記割込み処理の処理モードを第1処理モードに設定し、前記処理時間が前記所定値よりも大きいとき、前記処理モードを第2処理モードに設定し、
前記プロセッサは、前記割込み処理において、前記処理モードが前記第1処理モードに設定されている場合、前記監視用データである第1データを前記送信レジスタに格納して前記クロック信号のストレッチを解除した後に、前記第1データの次に送信する前記監視用データである第2データを前記データ記憶部から読み出し、
前記プロセッサは、前記割込み処理において、前記処理モードが前記第2処理モードに設定されている場合、前記第1データを前記送信レジスタに格納するとともに前記第2データを前記データ記憶部から読み出した後に、前記クロック信号のストレッチを解除する、
光トランシーバ。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、光トランシーバの制御方法及び光トランシーバに関する。
【背景技術】
【0002】
特許文献1には、I2C(Inter-Integrated Circuit)インタフェース仕様に準拠した通信方式が用いられたデータ送信制御方法が記載されている。この特許文献1に記載のデータ送信制御方法では、スレーブ装置は、マスタ装置から1バイトのデータを受信すると、クロックストレッチを設定し、受信したデータがスレーブ装置からマスタ装置へのデータ送信要求であると判定した場合に、確認応答情報をマスタ装置に送信する。その後、スレーブ装置は、クロックストレッチを解除して、送信レジスタに格納されているデータを送信するとともに、データ記憶部から次に送信するデータを読み出して送信レジスタへ格納している。これにより、データの読み出し時間に起因した送出タイミングの遅延が抑制されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
I2Cインタフェース仕様に準拠した通信方式(以下、「I2C通信方式」という。)を用いて、上位のホスト装置との間でデータの送受信を行う光トランシーバがある。この光トランシーバに搭載される制御装置は、ホスト装置とのデータの送受信(I2Cスレーブ処理)に加えて、他の処理を周期的に行う場合がある。周期的に行う処理(周期処理)として、例えば、光トランシーバに搭載されるTOSA(Transmitter Optical Sub-Assembly)から出力されている光信号の監視等が挙げられる。この場合、制御装置は、ホスト装置からデータの送信要求があると、I2Cスレーブ処理を割込み処理として優先して行う。つまり、制御装置は、割込み処理を行っていない間に周期処理を行う必要がある。
【0005】
特許文献1に記載のデータ送信制御方法を用いてホスト装置にデータを送信しつつ周期処理を行う場合、制御装置は、ホスト装置からのデータ送信要求の判定を行ってから次に送信するデータを読み出して送信レジスタへ格納するまでの処理を割込み処理として行う。特許文献1に記載のデータ送信制御方法では、クロックストレッチが解除された後に、送信レジスタに格納されているデータの送信と並行して、次に送信するデータが読み出されている。このような場合に、制御装置とホスト装置との間の通信速度が速くなるにつれて1バイトのデータを送信する時間が短くなるので、1つの割込み処理が終了してから次の割込み処理までの時間間隔が短くなる。このため、周期処理を行う時間が十分に確保されずに、周期処理が滞ってしまうおそれがある。
【0006】
本開示では、上位のホスト装置にデータを送信しつつ、周期処理を適切に行うことが可能な光トランシーバの制御方法及び光トランシーバが提供される。
【課題を解決するための手段】
【0007】
本開示の一側面に係る光トランシーバの制御方法は、外部のホスト装置から送信されるクロック信号に同期して、内部のデータ記憶部に格納されている監視用データをホスト装置に送信する光トランシーバの制御方法である。この制御方法は、周期処理を周期的に行うステップと、周期処理を一時的に中断するとともに、クロック信号をストレッチして監視用データを送信するための割込み処理を行うステップと、送信レジスタに格納されている監視用データを、クロック信号に同期してホスト装置に1ビットずつ送信するステップと、周期処理を一周期行うのに要する処理時間が所定値よりも小さいとき、割込み処理の処理モードを第1処理モードに設定し、処理時間が所定値よりも大きいとき、処理モードを第2処理モードに設定するステップと、を備える。割込み処理を行うステップは、処理モードが第1処理モードに設定されている場合に行うステップであって、監視用データである第1データを送信レジスタに格納してクロック信号のストレッチを解除した後に、第1データの次に送信される監視用データである第2データをデータ記憶部から読み出すステップと、処理モードが第2処理モードに設定されている場合に行うステップであって、第1データを送信レジスタに格納して第2データをデータ記憶部から読み出した後に、クロック信号のストレッチを解除するステップと、を含む。
【発明の効果】
【0008】
本開示によれば、上位のホスト装置にデータを送信しつつ、周期処理を適切に行うことが可能となる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、一実施形態に係る光トランシーバの概略構成を示すブロック図である。
【
図2】
図2は、
図1に示されるCPUのハードウェア構成を示すブロック図である。
【
図3】
図3は、レジスタのメモリマップの構成例を示す図である。
【
図4】
図4は、
図1に示されるCPUのRAM領域内のメモリマップの構成例を示す図である。
【
図5】
図5は、
図1に示されるCPU内のホスト装置とのI
2C通信に関するハードウェア構成を示すブロック図である。
【
図6】
図6は、周期処理の一例を示すフローチャートである。
【
図7】
図7は、プロセッサが行うI
2Cスレーブ処理のタイミングを説明するための図である。
【
図8】
図8は、プロセッサが行うI
2Cスレーブ処理を示すフローチャートである。
【
図9】
図9は、周期処理の時間に応じた処理を実行するI
2Cスレーブ処理を示すフローチャートである。
【
図10】
図10は、I
2C通信とI
2Cスレーブ処理との関係を説明するためのタイミングチャートである。
【
図11】
図11は、I
2C通信とI
2Cスレーブ処理との関係を説明するためのタイミングチャートである。
【
図12】
図12は、I
2C通信とI
2Cスレーブ処理との関係を説明するためのタイミングチャートである。
【発明を実施するための形態】
【0010】
[本開示の実施形態の説明]
最初に本開示の実施形態の内容を列記して説明する。
【0011】
本開示の一側面に係る光トランシーバの制御方法は、外部のホスト装置から送信されるクロック信号に同期して、内部のデータ記憶部に格納されている監視用データをホスト装置に送信する光トランシーバの制御方法である。この制御方法は、周期処理を周期的に行うステップと、周期処理を一時的に中断するとともに、クロック信号をストレッチして監視用データを送信するための割込み処理を行うステップと、送信レジスタに格納されている監視用データを、クロック信号に同期してホスト装置に1ビットずつ送信するステップと、周期処理を一周期行うのに要する処理時間が所定値よりも小さいとき、割込み処理の処理モードを第1処理モードに設定し、処理時間が所定値よりも大きいとき、処理モードを第2処理モードに設定するステップと、を備える。割込み処理を行うステップは、処理モードが第1処理モードに設定されている場合に行うステップであって、監視用データである第1データを送信レジスタに格納してクロック信号のストレッチを解除した後に、第1データの次に送信される監視用データである第2データをデータ記憶部から読み出すステップと、処理モードが第2処理モードに設定されている場合に行うステップであって、第1データを送信レジスタに格納して第2データをデータ記憶部から読み出した後に、クロック信号のストレッチを解除するステップと、を含む。
【0012】
この光トランシーバの制御方法では、割込み処理の処理モードが第1処理モードに設定されている場合、クロック信号のストレッチが解除された後に、第1データの次に送信される第2データがデータ記憶部から読み出される。クロック信号のストレッチが解除されると、送信レジスタに格納されている第1データがホスト装置に送信されるので、第1処理モードでは、第1データがホスト装置に送信されている間、第2データの読み出しを含む割込み処理が行われる。一方、割込み処理の処理モードが第2処理モードに設定されている場合、第2データがデータ記憶部から読み出された後に、クロック信号のストレッチが解除される。つまり、第2処理モードでは、第2データの読み出しを含む割込み処理が終了した後に、送信レジスタに格納されている第1データがホスト装置に送信される。これにより、処理モードが第2処理モードに設定されている場合には、割込み処理の終了後において第1データがホスト装置に送信されている間、周期処理を行う時間が確保される。周期処理を一周期行うのに要する処理時間が所定値よりも大きい場合には、割込み処理によって周期処理が滞っていると考えられる。上記構成では、処理時間が所定値よりも大きいときに、処理モードが第2処理モードに設定されるので、周期処理を行う時間が確保される。その結果、上位のホスト装置にデータを送信しつつ、周期処理を適切に行うことが可能となる。
【0013】
周期処理を周期的に行うステップは、電気信号を光信号に変換する光送信素子の動作を制御するステップと、光信号を電気信号に変換する光受信素子の動作を制御するステップと、光送信素子の動作を制御するステップ及び光受信素子の動作を制御するステップにおいて得られた結果に応じてデータ記憶部に格納されている監視用データを更新するステップと、を含んでいてもよい。
【0014】
この場合、光送信素子及び光受信素子の制御、並びに監視用データの更新を適切に行うことができるので、光トランシーバによる光信号の適切な送受信が継続され、光トランシーバ内の異常の有無を適切なタイミングで把握することが可能となる。
【0015】
ホスト装置への監視用データの送信は、I2C(Inter-Integrated Circuit)規格に準拠して行われてもよい。クロック信号の周波数は、400kHz~1MHzであってもよい。
【0016】
1つの監視用データを送信する時間は、クロック信号の周期と当該監視用データのビット数とに応じて定まる。クロック信号の周期が1マイクロ秒~2.5マイクロ秒であると、1つの監視用データである第1データを送信する時間に対して、次に送信する監視用データである第2データを読み出す処理に要する時間が大きくなり、周期処理を行う時間が確保されないおそれがある。上記構成では、クロック信号の周期が1マイクロ秒~2.5マイクロ秒であっても、周期処理の処理時間が大きいと、割込み処理の処理モードが第2処理モードに設定されるので、周期処理を行う時間が確保され周期処理を適切に行うことが可能となる。
【0017】
本開示の他の側面に係る光トランシーバは、外部のホスト装置から送信されるクロック信号に同期して、監視用データをホスト装置に送信する光トランシーバである。この光トランシーバは、周期処理を周期的に行うプロセッサと、監視用データが格納されるデータ記憶部と、データ記憶部から読み出された監視用データを一時的に格納するとともにクロック信号に同期して監視用データをホスト装置に1ビットずつ送信する送信レジスタと、を備える。プロセッサは、周期処理を一時的に中断するとともに、クロック信号をストレッチしてデータ記憶部に格納されている監視用データを送信するための割込み処理を行う。プロセッサは、周期処理を一周期行うのに要する処理時間が所定値よりも小さいとき、割込み処理の処理モードを第1処理モードに設定し、処理時間が所定値よりも大きいとき、処理モードを第2処理モードに設定する。プロセッサは、割込み処理において、処理モードが第1処理モードに設定されている場合、監視用データである第1データを送信レジスタに格納してクロック信号のストレッチを解除した後に、第1データの次に送信する監視用データである第2データをデータ記憶部から読み出す。プロセッサは、割込み処理において、処理モードが第2処理モードに設定されている場合、第1データを送信レジスタに格納するとともに第2データをデータ記憶部から読み出した後に、クロック信号のストレッチを解除する。
【0018】
この光トランシーバでは、割込み処理の処理モードが第1処理モードに設定されている場合、クロック信号のストレッチが解除された後に、第1データの次に送信される第2データがデータ記憶部から読み出される。クロック信号のストレッチが解除されると、送信レジスタに格納されている第1データがホスト装置に送信されるので、第1処理モードでは、第1データがホスト装置に送信されている間、第2データの読み出しを含む割込み処理が行われる。一方、割込み処理の処理モードが第2処理モードに設定されている場合、第2データがデータ記憶部から読み出された後に、クロック信号のストレッチが解除される。つまり、第2処理モードでは、第2データの読み出しを含む割込み処理が終了した後に、送信レジスタに格納されている第1データがホスト装置に送信される。これにより、処理モードが第2処理モードに設定されている場合には、割込み処理の終了後において第1データがホスト装置に送信されている間、周期処理を行う時間が確保される。周期処理を一周期行うのに要する処理時間が所定値よりも大きい場合には、割込み処理によって周期処理が滞っていると考えられる。上記構成では、処理時間が所定値よりも大きいときに、処理モードが第2処理モードに設定されるので、周期処理を行う時間が確保される。その結果、上位のホスト装置にデータを送信しつつ、周期処理を適切に行うことが可能となる。
【0019】
[本開示の実施形態の詳細]
次に、本開示の実施形態に係る光トランシーバ及び光トランシーバの制御方法の具体例を、図面を参照しつつ以下に説明する。図面の説明において同一又は相当する部分には同一の符号を付し、重複する説明を省略する。
【0020】
(光トランシーバの構成)
図1は、一実施形態に係る光トランシーバの概略構成を示すブロック図である。
図2は、
図1に示されるCPUの構成を示すブロック図である。
図3は、レジスタのメモリマップの構成例を示す図である。
図4は、
図1に示されるCPUのRAM領域内のメモリマップの構成例を示す図である。
図5は、
図1に示されるCPU内のI
2C通信に関するハードウェア構成を示すブロック図である。
【0021】
図1に示される光トランシーバ2は、光通信システム等で光信号を送受信するために使用される機器である。光トランシーバ2は、光-電気相互変換機能、及び電気波形整形機能等を備える。光トランシーバ2は、例えば、QSFP28 MSA(Quad Small Form-factor Pluggable 28 Multi-Source Agreement)規格に準拠して伝送速度が100Gbps以上である光通信を実現する。
図1に示されるように、光トランシーバ2は、外部のホスト装置90(上位のホスト装置)と通信線L1,L2を介して通信可能に接続される。光トランシーバ2は、TOSA4と、LDD(Laser Diode Driver)6と、CDR(Clock Data Recovery)8と、ROSA(Receiver Optical Sub-assembly)10と、TIA(Transimpedance Amplifier)12と、CDR14と、CPU(Central Processing Unit)20と、を備える。
【0022】
TOSA4は、電気信号を光信号に変換して当該光信号を送信するためのデバイスである。TOSA4は、例えば4チャネルの光信号(それぞれが互いに異なるピーク波長を有する4つの光信号)を生成するための発光素子である4つのレーザダイオード、及び光合波器を内蔵している。TOSA4内のレーザダイオードは、電気信号を光信号に変換する光送信素子である。ここで、チャネルは、電気信号あるいは光信号を伝達する伝送路を意味する。複数のチャネルは、互いに並行に設置され、それぞれ独立な信号を伝送する複数の伝送路を意味する。TOSA4は、外部のホスト装置90から送信される4チャネルの電気信号(電気入力信号)TXに基づいて、それぞれ波長の異なる4チャネルの光信号を生成し、それらの光信号を光合波器で合成(多重化)して、多重化光信号Ooutとして出力する。多重化光信号Ooutは、互いに異なる波長を有し、それぞれ独立した情報を伝達する4つの光信号を含んでいる。
【0023】
LDD6は、TOSA4内の4つのレーザダイオードを駆動する回路ユニットである。LDD6は、4チャネルの電気信号TXに基づいてTOSA4内の4つのレーザダイオードをそれぞれ駆動する。具体的には、LDD6は、TOSA4内の4つのレーザダイオードをそれぞれ駆動する4つの駆動信号を生成する。TOSA4は、駆動信号に応じて変調された光信号を4つのレーザダイオードそれぞれから出力させる。なお、LDD6は、TOSA4に内蔵されていてもよい。CDR8は、4つの電気信号TXを波形整形する回路ユニットである。波形整形によってLDD6に入力される電気信号の波形品質が向上すると駆動信号の波形品質も向上する。結果として、レーザダイオードから出力される光信号の波形品質が向上して、光トランシーバ2の通信性能の向上に寄与する。
【0024】
ROSA10は、光信号を受信して当該光信号を電気信号に変換するためのデバイスである。ROSA10は、4チャネルの光信号を受信するための受光素子である4つのフォトダイオード、及び光分波器を内蔵している。ROSA10内のフォトダイオードは、光信号を電気信号に変換する光受信素子である。ROSA10は、外部から多重化光信号Oinを受け、光分波器によって多重化光信号Oinを互いに波長の異なる4チャネルの光信号に分波する。ROSA10は、4チャネルの光信号を生成して、それらの光信号を光電流(電気信号)にそれぞれ変換する。
【0025】
TIA12は、光電流を電気信号(電気出力信号)RXに変換する回路ユニットである。TIA12は、ROSA10内に設けられた4チャネルのフォトダイオードから出力された4つの光電流を電気信号RXにそれぞれ変換する。なお、TIA12は、ROSA10に内蔵されていてもよい。CDR14は、TIA12からの4つの電気信号RXを波形整形する回路ユニットである。TIA12から出力される電気信号のジッタは大きいが、CDR14によってジッタが除去されて、ディジタル信号として扱いやすいジッタの小さい電気信号が出力される。CDR8,14を構成する回路は、集積回路(IC:Integrated Circuit)であってもよい。CDR8,14は、一体に構成されていてもよい。換言すると、光トランシーバ2は、送受信一体型のCDRを備えていてもよい。CDRを構成するICは、SERDES(シリアライザ/デシリアライザ)又はGearBox ICであってもよい。
【0026】
CPU20は、光トランシーバ2内の各要素を制御するコントローラ(演算装置)として機能する。CPU20は、ワンチップマイクロコントローラによって構成されている。なお、光トランシーバ2内に設けられるコントローラが、FPGA(Field Programmable Gate Array)あるいはCPLD(Complex Programmable Logic Device)等のロジック回路、又はこれらの組み合わせによって構成される場合もある。本実施形態に係る光トランシーバ2では、周期処理及びI2Cスレーブ処理を実行する単一のCPU20が設けられている。周期処理は、光トランシーバ2において周期的に繰り返して行われる処理である。I2Cスレーブ処理は、I2C通信方式に基づいてホスト装置90からの送信要求等に応じて行う割込み処理である。つまり、I2Cスレーブ処理は周期処理よりも優先して行われる。周期処理及びI2Cスレーブ処理の具体例については後述する。
【0027】
CPU20は、内蔵する内部メモリ(後述のフラッシュROM24)に格納されたプログラム(ファームウェア)を実行して、例えば、多重化光信号Oout及び電気信号RXを出力するための動作制御を行う。ホスト装置90とCPU20との間の通信線L1を介した通信は、I2C通信方式に基づいて行われる。このI2C通信方式においては、ホスト装置90が「マスタ装置」として機能し、光トランシーバ2(CPU20)が「スレーブ装置」として機能する。通信線L1には、ホスト装置90からCPU20へのI2C通信方式に基づいたクロック信号の送信に利用されるクロック信号線(以下、「SCL信号線」という。)、及びホスト装置90とCPU20との間においてデータの送受信に利用されるデータ信号線(以下、「SDA信号線」という。)が含まれる。
【0028】
このI2C通信方式に基づいた通信が行われることにより、ホスト装置90において、光トランシーバ2の動作状態の監視、又は光トランシーバ2の動作制御が可能とされている。クロック信号の周波数は、一例として400kHz~1MHzであってもよい。なお、本明細書において「クロック信号」及び「クロック信号の周波数」とは、I2C通信方式において用いられるクロック信号、及び当該クロック信号の周波数をそれぞれ意味する。また、以下の説明において、クロック信号を「SCL信号」と称することもあり、ホスト装置90と光トランシーバ2との間で送受されるデータを「SDA信号」と称することもある。
【0029】
CPU20は、アラーム信号を通知するための通信線L2を介してホスト装置90に接続される。アラーム信号は、光トランシーバ2内のいずれかの要素が異常状態であることを示す信号である。CPU20には、LDD6、CDR8,14及びTIA12と、SPI(Serial Peripheral Interface)又はI2C通信方式等のシリアル通信を用いて接続するための内部通信バスL3が接続される。CPU20には、LDD6にTxDISABLE信号を送信するための内部通信線L4が接続される。CPU20には、CDR8からLOS(Loss Of Signal)信号及びLOL(Loss Of Lock)信号を受信するための内部通信線L5が接続される。CPU20には、TIA12からLOS信号を受信するための内部通信線L6が接続される。CPU20には、CDR14からLOL信号を受信するための内部通信線L7が接続される。LOS信号は、信号(例えば光トランシーバ2に入力される光信号)の消失を通知するための信号である。LOL信号は、CDR8,14のクロックリカバリがロックから外れていることを通知するための信号である。TxDISABLE信号は、TOSA4から出力される多重化光信号Ooutをオフ状態又はオン状態に切り替えるための信号である。なお、オン状態又はオフ状態への切り替えは、4チャネルの光信号のそれぞれについて個別に行うことができる。
【0030】
図2に示されるように、CPU20は、例えば、プロセッサ(演算回路)22と、フラッシュROM(Read Only Memory)24と、RAM(Random Access Memory)26と、温度センサ28と、通信インタフェース回路30,32と、タイマカウンタ34と、ADC(Analog to Digital Converter;アナログ-ディジタル変換回路)36と、外部入力ピン38と、外部出力ピン40と、これらを内部で通信可能に接続する内部バスBUSとを備える。以下では、プロセッサ22が内部バスBUSを介して通信又は制御する上述の各構成要素を機能ブロックと称する。
【0031】
プロセッサ22は、CPU20内の各機能ブロックを制御する。各機能ブロックの制御は、フラッシュROM24に格納されたプログラム(ファームウェア)に従って行われる。光トランシーバ2内に実装可能なサイズ及び光トランシーバ2内において使用できる消費電力等を考慮して、プロセッサ22として、例えば8bitコア又は32bitコアが用いられてもよい。また、CPU20のクロック周波数は、一例として50MHz~90MHz程度であってもよい。温度センサ28は、CPU20内の温度を測定する。通信インタフェース回路30は、通信線L1を介してホスト装置90との通信を行うための外部通信用の回路である。通信インタフェース回路30には、通信線L1を介してI2C通信方式に基づいた通信を行うためのインタフェース回路が含まれる。通信インタフェース回路32は、例えば、内部通信バスL3を介して光トランシーバ2内の各要素(例えばLDD6)との通信を行うための内部通信用の回路である。
【0032】
タイマカウンタ34は、例えば一定周期のCPU20内のクロックをカウントすることで、ある基準からの経過時間を計測する。ADC36は、光トランシーバ2内の各要素から不図示の接続線を介してアナログ信号(電気信号)を受信し、受信したアナログ信号をディジタル信号に変換する。外部入力ピン38には、例えば、ホスト装置90とCPU20との間の通信バス(不図示)を介してホスト装置90からの制御信号が入力される。また、外部入力ピン38には、例えば、内部通信線L5,L6,L7を介してTIA12及びCDR8,14からのLOS信号又はLOL信号が入力される。外部出力ピン40は、例えば、通信線L2を介してホスト装置90にアラーム信号を出力する。また、外部出力ピン40は、例えば、内部通信線L4を介してTxDISABLE信号をLDD6に出力する。
【0033】
フラッシュROM24は、プロセッサ22により参照又は実行されるデータ及びプログラムを格納する。RAM26(データ記憶部)は、光トランシーバ2内の各要素からADC36を介して取得したデータ、及びホスト装置90との間で送受信されるデータを格納する。RAM26には、QSFP28 MSA規格に準拠したレジスタのメモリマップが割り当てられ、各レジスタに当該レジスタに対応するデータが格納される。
【0034】
図3には、QSFP28 MSA規格に準拠したレジスタのメモリマップが示されている。各レジスタにはアクセス権が設定されている。このようなメモリマップでは、アラーム(Interrupt Flags)又はモニタ値のようにリードのみが許可されたレジスタ(Memory Address「3-21」,「22-23」,「26-27」,「34-57」参照)、Page Select又は各種Controlのようにリード及びライトが可能なレジスタ(Memory Address「127」参照)、並びにパスワード(Password Entry)のようにライトのみが許可されたレジスタ(Memory Address「123-126」参照)が混在する。I
2C通信方式に基づいたデータの送受信が行われる際には、これらのアクセス権がチェックされる。
図4には、
図3に示されるメモリマップをCPU20に含まれるRAM26内の領域(アドレス空間)に割り当てたメモリマップの一例が示されている。
【0035】
CPU20(プロセッサ22)は、光トランシーバ2とホスト装置90との間においてI
2C規格に準拠して行われる通信(I
2C通信)を制御する。この制御では、上述したように、「マスタ装置」となるホスト装置90が「スレーブ装置」となる光トランシーバ2(CPU20)に所定のコマンドおよびデータを送信し、光トランシーバ2(CPU20)がコマンド等に対して所定の応答を行う。
図5は、
図1に示されるCPU内のホスト装置とのI
2C通信に関するハードウェア構成を示すブロック図である。通信インタフェース回路30は、ホスト装置90とのI
2C通信に関するハードウェア構成として、例えば、I
2C制御部42と、シフトレジスタ44と、アドレスレジスタ46と、ステータスレジスタ48と、セレクタ50と、を備える。
図5に示されるハードウェア構成は、
図2に示される通信インタフェース回路30のうちのI
2C通信に関する部分に対応する。
【0036】
I2C制御部42は、例えばプロセッサ22からの動作指示に基づいて動作する。I2C制御部42は、CPU20内の内部バスBUSを介してRAM26(内部メモリ)に接続されている。I2C制御部42は、RAM26にアクセスすることによって、RAM26内のデータを読み書きすることができる。
【0037】
シフトレジスタ44は、I2C通信方式に基づいたデータ(SDA信号)の送受信に用いられるレジスタである。例えば、CPU20がホスト装置90からデータを受信する時には、クロック信号(SCL信号)に同期してSDA信号線を介して送信されるデータが先頭から1ビットずつシフトレジスタ44に読み込まれる。この場合、シフトレジスタ44は受信レジスタとして機能する。また、CPU20からホスト装置90にデータを送信する時には、クロック信号に同期してシフトレジスタ44内に格納されているデータが先頭から1ビットずつセレクタ50を介してSDA信号線に出力される。この場合、シフトレジスタ44は送信レジスタとして機能する。シフトレジスタ44とI2C制御部42とは、例えば8ビットの信号線により並列に接続されている。これにより、シフトレジスタ44とI2C制御部42との間において、8ビットのデータ(電文)について、パラレル伝送によって相互に書き込み及び読み出しが可能となっている。
【0038】
アドレスレジスタ46は、I
2C通信方式において、個々の光トランシーバ(スレーブ装置)に割り振られた固有のアドレス情報を格納するレジスタである。ホスト装置90から送信される固有の光トランシーバを示すアドレス情報(以下、「スレーブアドレス情報」という。)がアドレスレジスタ46に格納されているアドレス情報に一致する場合に、ホスト装置90から送られる電文が自身(光トランシーバ2)に向けられていると認識される。そして、自身に電文の送信が向けられていることが認識されると、ステータスレジスタ48内にAck信号(アクノリッジ信号)を示す情報が設定される。そして、I
2C制御部42は、ステータスレジスタ48からAck信号をホスト装置90に送信し、続いて、ホスト装置90から送られてくるデータの処理(受信等)を行う。I
2C制御部42は、内部バスBUSを介して、内部メモリ(フラッシュROM24又はRAM26)内の所定のアドレスに格納されたスレーブアドレス情報(例えば
図3に示される「1010 000xb」)を取得し、当該スレーブアドレス情報をアドレスレジスタ46に予め格納している。
【0039】
I2C制御部42は、SDA制御信号(SDA Control)を使用してデータの送受信、並びにAck信号及びNack信号(ノンアクノリッジ信号)の出力を制御する。例えば、SDA信号線(端子52)からデータを受信する際には、I2C制御部42は、シフトレジスタ44内のデータ、及びステータスレジスタ48からのステータス情報(コントロールステータス情報)をSDA信号線に出力しないようにセレクタ50を制御する。ステータス情報とは、Ack信号を送信すべき状態であるか、Nack信号を送信すべき状態であるかを示す情報である。SDA信号線(端子52)を介してホスト装置90にデータの送信を行うときには、I2C制御部42は、SDA制御信号によってシフトレジスタ44内のデータがSDA信号線に出力されるようにセレクタ50を制御する。また、I2C制御部42は、Ack信号又はNack信号をホスト装置90に送信するときには、ステータスレジスタ48内のステータス情報をSDA信号線に出力するようにセレクタ50を制御する。
【0040】
I2C制御部42は、SCL制御信号(SCL Control)を使用して、必要に応じてクロックストレッチを設定する(クロック信号をストレッチする)。このクロックストレッチは、ホスト装置90(マスタ装置側)から送信されるクロック信号をCPU20(スレーブ装置側)がローレベルに維持することによって、データの送受信を待機させ、次に処理が進まないようにするI2C規格の仕組みである。例えば、I2C制御部42は、SCL制御信号をローレベルに設定することによって、クロックストレッチを設定する。SCL制御信号は、SCL信号線(端子54)にワイヤードAND接続を介して出力されてもよい。I2C制御部42によりSCL制御信号がローレベルに設定されることによってクロック信号がローレベルに維持され、クロックストレッチが行われる。クロックストレッチを解除する(クロック信号のストレッチを解除する)ときには、I2C制御部42は、SCL制御信号をローレベルからハイレベルに戻す。
【0041】
CPU20では、ホスト装置90からI2C制御部42に向けて送信される電文の解析が行われる。この解析では、シフトレジスタ44を介して受信したデータが、メモリアドレス(Memory Address)に関する情報(以下、「メモリアドレス情報」という。)であるか否か、ホスト装置90からの受信データであるか否か、又はホスト装置90からのデータ送信要求に関する指示であるか否かといった判別が行われる。シフトレジスタ44を介して受信したデータが、ホスト装置90からの受信データであると判別されたときには、メモリアドレス情報によって指定されたRAM26のアドレスに内部バスBUSを介して、シフトレジスタ44を介して受信したデータが書き込まれる。また、シフトレジスタ44を介して受信したデータが、ホスト装置90からのデータ送信要求に関する指示であると判別されたときには、I2C制御部42は、ホスト装置90に送信するデータをシフトレジスタ44に転送した後に、シフトレジスタ44内の当該データをSDA信号線に出力するようにSDA制御信号によってセレクタ50を制御する。
【0042】
(周期処理)
次にCPU20において実行される周期処理について説明する。
図6は、周期処理の一例を示すフローチャートである。まず、CPU20のプロセッサ22は、光トランシーバ2が稼働状態となった際に、フラッシュROM24から所定のプログラム(ファームウェア)を読み出し、プログラムに従って初期処理を実行する(ステップS01)。ステップS01では、例えば、プロセッサ22がCPU20内の初期設定、及び割込みポートの設定を行う。このステップS01の処理は、周期処理が開始される前に行われる。なお、以下に詳細に説明する周期処理もファームウェアに従って実行される。
【0043】
続いて、プロセッサ22は、周期処理に関する処理時間を計測するために、当該処理時間の計測(タイマーのカウント)を開始する(ステップS02)。例えば、ステップS02では、プロセッサ22が、タイマカウンタ34に処理時間の計測を開始させる。続いて、プロセッサ22は、I2C関連処理を行う(ステップS03)。ステップS03では、プロセッサ22が、時間を要するためにI2Cスレーブ処理では実行することができないI2C通信に関する処理を行う。例えば、プロセッサ22は、I2C通信方式に基づいてホスト装置90から送信されたデータを、フラッシュROM24に書き込む処理を行う。
【0044】
続いて、プロセッサ22は、光トランシーバ2内の各要素の動作状況を取得する状況取得処理を実行する(ステップS04)。例えば、ステップS04の状況取得処理には、各種モニタ項目に関する測定値を取得する処理、測定値をモニタ値に換算する処理、及びアラーム(ワーニング)判定処理が含まれる。各種モニタ項目に関する測定値を取得する処理では、例えば、プロセッサ22が、光トランシーバ2の温度及び光トランシーバ2を駆動するための電源電圧に関する測定値(例えば電圧値)をADC36を介して取得する。また、プロセッサ22は、TOSA4内のレーザダイオードへのバイアス変調電流、TOSA4から出力される多重化光信号Ooutの光パワー、及びROSA10に入力される多重化光信号Oinの光パワーに関する測定値をADC36を介して取得する。
【0045】
各種モニタ項目に関する測定値を取得する処理において得られる測定値は、実際の物理量に応じた値である。このため、測定値をモニタ値に換算する処理において、プロセッサ22は、予め定められた対応テーブルに基づいて、各種測定値(電圧値)をモニタ値(物理量)に変換する。例えば、プロセッサ22は、多重化光信号Ooutの光パワーに関する測定値(電圧値)を、光パワーのモニタ値(電力値)に変換する。アラーム判定処理では、プロセッサ22が、測定値を換算することで得られたモニタ値が異常値(正常値)であるかどうかを判定する。例えば、プロセッサ22は、モニタ値を予め定められた閾値と比較することによって、モニタ値の取得対象の要素が、正常状態であるか又は異常状態であるかを判定する。例えば、プロセッサ22は、ステップS04の処理を行うことで得たモニタ値等に関する情報をRAM26内の所定のアドレスに記憶する。
【0046】
続いて、プロセッサ22は、APC(Automatic Power Control)制御を実行する(ステップS05)。ステップS05では、プロセッサ22が、多重化光信号Ooutの光パワーが一定となるように、TOSA4内のレーザダイオードに流すバイアス変調電流の設定値を調整する。例えば、プロセッサ22は、多重化光信号Ooutの光パワーに関するモニタ値と目標値とを比較することにより、上記バイアス変調電流の設定値を調整する。なお、モニタ値の取得、及び取得したモニタ値と目標値との比較は、4チャネルの光信号のそれぞれについて個別に行うことができる。
【0047】
続いて、プロセッサ22は、TIA12、及びCDR8,14からLOS/LOL信号をそれぞれ取得するリード処理を実行する(ステップS06)。ステップS06では、例えば、プロセッサ22が、外部入力ピン38を介してLOS/LOL信号に関する情報を取得する。
【0048】
続いて、プロセッサ22は、光トランシーバ2内の各要素についてアラーム情報を更新する処理を行う(ステップS07)。ステップS07では、例えば、プロセッサ22が、ステップS04において判定した光トランシーバ2内の各要素が異常状態であるか、又は正常状態であるかの情報をRAM26内の所定のアドレスに記憶する。また、プロセッサ22は、TIA12、及びCDR8,14から取得したLOS/LOL信号に関する情報をRAM26内の所定のアドレスに記憶する。これにより、RAM26内に記憶されているアラーム情報が更新される。さらに、光トランシーバ2内の一の要素が異常状態である場合、プロセッサ22は、外部出力ピン40及び通信線L2を介して、当該要素が異常状態であることを示すアラーム信号をホスト装置90に出力する。
【0049】
続いて、プロセッサ22は、処理時間の計測(タイマーのカウント)を停止する(ステップS08)。ステップS08では、例えばプロセッサ22が、タイマカウンタ34によるカウントを停止させ、処理時間の計測開始から計測停止までの時間をタイマ値として取得する。このタイマ値は、ステップS03~S07の処理(周期処理)を一周期行うのに要する処理時間(以下、単に「周期処理の処理時間」という。)を示す。ステップS08においてタイマ値の取得後、プロセッサ22は、タイマカウンタ34による処理時間のカウントをリセットしてもよい。なお、「周期処理の処理時間」には、ステップS03~S07の処理をプロセッサ22が実際に行う時間(処理を実行している時間)だけでなく、I2Cスレーブ処理等の割込み処理によりステップS03~S07のいずれかの処理が一時的に中断している時間も含まれ得る。換言すると、割込み処理の頻度、及び割込み処理に要する時間に応じて、周期処理の処理時間(タイマ値)は変動する。
【0050】
続いて、プロセッサ22は、ステップS08において取得したタイマ値が、予め定められた閾値Th(所定値)よりも小さいかどうかを判断する(ステップS09)。タイマ値が閾値Thよりも小さいと判断された場合(ステップS09:YES)、周期処理が滞ることなく行われているので、プロセッサ22は、BusyフラグをOFFに設定する(ステップS10)。タイマ値が閾値Th以上であると判断された場合(ステップS09:NO)、周期処理が滞っている可能性が高いので、プロセッサ22は、BusyフラグをONに設定する(ステップS11)。プロセッサ22は、Busyフラグの設定(処理モードの設定)に関する情報をRAM26内に記憶してもよい。BusyフラグがOFFに設定されることで、I2Cスレーブ処理の処理モードが第1処理モードに設定される。一方、BusyフラグがONに設定されることで、I2Cスレーブ処理の処理モードが第2処理モードに設定される。第1処理モード及び第2処理モードについては後述する。
【0051】
ステップS10又はステップS11の処理の終了後、プロセッサ22は、ステップS02~S11の処理を繰り返す。これにより、ステップS03~S07の周期処理が繰り返される。ステップS03~S07の周期処理自体の処理時間(割込み処理による待機時間を除く処理時間)は、一例として、5ミリ秒(5msec)程度である。この場合、閾値Thは、10ミリ秒に設定されてもよい。なお、ステップS02~S11の処理を繰り返すときに、上述の「周期処理の処理時間」以外にステップS02、S08~S11を処理するための時間も必要となる。しかし、ステップ02、S08~S11は比較的単純な演算あるいは処理であるため、それらの処理に要する時間は「周期処理の処理時間」よりもかなり小さいので無視できる程度である。ステップ02、S08~S11を行うのに必要な時間は、例えば、数マイクロ秒から数十マイクロ秒程度である。すなわち、S02~S11を処理するのに要する時間は、「周期処理の処理時間」にほぼ等しいと考えてもよい。換言すると、本開示の実施形態において周期処理に加わる処理(ステップS02、S8~S11)によって実質的に「周期処理の処理時間」が影響を受けることはない。
【0052】
このように、プロセッサ22が行うステップS03~S07の周期処理には、レーザダイオード及びフォトダイオードの動作を制御する処理(ステップS04)と、ステップS04の処理において得られた結果に応じて、RAM26に格納されているデータを更新する処理(ステップS07)と、が含まれる。なお、レーザダイオード(フォトダイオード)の動作を制御する処理には、当該レーザダイオード(フォトダイオード)を制御するためのバイアス変調電流等のモニタ値を取得することも含まれる。
【0053】
なお、プロセッサ22が周期的に実行する周期処理は、
図6に示される一連の処理に限られない。例えば、プロセッサ22が実行する周期処理に、
図6に示される処理のうちの一部の処理が含まれていなくてもよい。一例として、プロセッサ22が実行する周期処理に、ステップS03におけるI
2C関連処理が含まれていなくてもよい。また、周期ごとに、周期処理内において実行される処理内容が異なってもよく、周期処理に含まれる一部の処理が省略されてもよい。あるいは、プロセッサ22が実行する周期処理に、
図6に示される処理以外の処理が含まれていてもよい。
図6に例示される周期処理において、各ステップが行われる順番が入れ替えられてもよい。
【0054】
(I
2Cスレーブ処理)
次に、CPU20において実行されるI
2Cスレーブ処理について説明する。ここでは、I
2C通信方式に基づいて、光トランシーバ2(CPU20)からホスト装置90にデータを送信する場合について説明する。光トランシーバ2からホスト装置90に送られるデータには、複数ビット(ここでは8ビット)の監視用データが含まれる。この監視用データの内容に応じてホスト装置90は光トランシーバ2の制御を行う。つまり、監視用データは、ホスト装置90による光トランシーバ2に対する制御を目的として使用され得るデータである。なお、光トランシーバ2は、ホスト装置90により、
図3に示されるメモリマップに割り当てられた各レジスタ内の情報をI
2C通信方式に基づいた通信経由で送信することを要求され、光トランシーバ2には、所定のタイミング内で適切に光トランシーバ2内の内部データを返送することを求められる。
【0055】
図7は、プロセッサが行うI
2Cスレーブ処理のタイミングを説明するための図である。
図8は、プロセッサが行うI
2Cスレーブ処理を示すフローチャートである。
図9は、周期処理の時間に応じた処理を実行するI
2Cスレーブ処理を示すフローチャートである。
【0056】
まず
図7を参照して、ホスト装置90からの送信要求により、光トランシーバ2からN個(Nは2以上の整数)の監視用データ「Data1」~「DataN」をホスト装置90に送信する場合を例に、光トランシーバ2とホスト装置90との間の一連のデータ送信処理について説明する。
図7において、上段に示される「I2C通信」は、ホスト装置90と光トランシーバ2との間で行われる通信内容を示している。下段に示される「I2Cスレーブ処理」は、上記通信内容に応じてプロセッサ22によって行われるI
2Cスレーブ処理の実行タイミングを示している。
【0057】
図7に示されるように、まず、ホスト装置90は、期間T1において、ホスト装置90と光トランシーバ2との間のデータ伝送を開始するための条件であるスタート条件Sを生成する。期間T1では、ホスト装置90が、SCL信号(クロック信号)がハイレベルである間に、SDA信号をハイレベルからローレベルに変化させることで、スタート条件Sを生成する。続いて、期間T2において、ホスト装置90は、通信先である光トランシーバを特定するためのスレーブアドレス情報(例えば7ビットのスレーブアドレス)、及び次に送信する情報(ここではメモリアドレス情報)の伝送方向を示す1ビットの情報(以下、「R/Wビット情報」という。)を送信する。この例では、次に送信する情報の伝送方向は、ホスト装置90から光トランシーバ2であるので、R/Wビット情報は、「Write」を示すビット値(例えば、ローレベル)に設定される。
【0058】
続いて、期間T3において、光トランシーバ2のプロセッサ22はI2Cスレーブ処理M01を実行する。このI2Cスレーブ処理M01では、プロセッサ22が、まずクロックストレッチを設定する。そして、プロセッサ22は、ホスト装置90から送信されたスレーブアドレス情報と、自身に割り当てられたスレーブアドレス情報(アドレスレジスタ46に格納されているスレーブアドレス情報)とを比較する。プロセッサ22は、両者のアドレス情報が一致した場合に、確認応答情報としてAck信号を示す情報をステータスレジスタ48に設定し、I2C制御部42によりホスト装置90に向けてAck信号を送信させる。この際、プロセッサ22は、クロックストレッチを解除する。以下の説明において、Ack信号を示す情報をステータスレジスタ48に設定する処理を「Ack設定処理」という。なお、クロックストレッチの設定又は解除は、プロセッサ22がI2C制御部42を制御することにより行われる。
【0059】
続いて、期間T4において、ホスト装置90は、RAM26内のデータ格納領域のアドレスを示すメモリアドレス情報を光トランシーバ2に送信する。続いて、期間T5において、プロセッサ22はI2Cスレーブ処理M02を実行する。I2Cスレーブ処理M02では、プロセッサ22が、まずクロックストレッチを設定する。そして、プロセッサ22は、ホスト装置90から送られたメモリアドレス情報を格納する。その後、プロセッサ22は、Ack設定処理を行う。この際、プロセッサ22は、クロックストレッチを解除する。
【0060】
なお、I2Cスレーブ処理M02において、プロセッサ22は、ホスト装置90からのメモリアドレス情報が示すアドレス内のデータに含まれる複数ビット(例えば8ビット)の監視用データ(Data1)を準備する。具体的には、プロセッサ22は、ホスト装置90からのメモリアドレス情報によって、光トランシーバ2からホスト装置90へのデータ送信処理が行われると予測し、最初に送信する予定の監視用データ「Data1」をRAM26から読み出して、シフトレジスタ44とは異なるレジスタ(例えばI2C制御部42内のデータレジスタ)に格納する。監視用データ「Data1」を準備する前後のいずれかにて、プロセッサ22はクロックストレッチを解除する。
【0061】
続いて、期間T6において、ホスト装置90は、最初にスタート条件Sを生成する。スタート条件Sの生成の次に、ホスト装置90は、通信先である光トランシーバ2を特定するためのスレーブアドレス情報、及び次に送信する情報(ここでは、監視用データ「Data1」)の伝送方向を示すR/Wビット情報を送信する。この例では、次に送信する情報の伝送方向は、光トランシーバ2からホスト装置90であるので、R/Wビット情報は、「Read」を示すビット値(例えば、ハイレベル)に設定される。
【0062】
続いて、期間T7内の期間T71において、プロセッサ22はI2Cスレーブ処理M03を実行する。I2Cスレーブ処理M03では、プロセッサ22が、まずクロックストレッチを設定する。そして、プロセッサ22は、ホスト装置90から送信されたスレーブアドレス情報と、自身に割り当てられたスレーブアドレス情報とを比較する。プロセッサ22は、両者のアドレス情報が一致した場合にAck設定処理を行う。また、R/Wビット情報が「Read」を示すビット値に設定されているので、プロセッサ22は、I2C制御部42により監視用データ「Data1」をシフトレジスタ44にセットさせる。
【0063】
さらに、プロセッサ22は、監視用データ「Data1」の次に送信する予定の監視用データ「Data2」を準備する。例えば、プロセッサ22は、当該監視用データをRAM26から読み出して、シフトレジスタ44とは異なるレジスタ(例えばI2C制御部42内のデータレジスタ)に格納しておく。監視用データ「Data2」を準備する前後のいずれかにて、プロセッサ22はクロックストレッチを解除する。このクロックストレッチの解除により、シフトレジスタ44内にセットされた監視用データ(Data1)のホスト装置90への送信が開始される。
【0064】
期間T7内の期間T72において、シフトレジスタ44に格納されている監視用データ「Data1」がホスト装置90に1ビットずつ送信される。この期間T72は、期間T71において、クロックストレッチが解除されることによって開始される。なお、期間T72のうちのI2Cスレーブ処理M03の終了後の期間において、監視用データ「Data1」の送信中に、プロセッサ22は上述した周期処理を含む他の処理を行うことができる。
【0065】
続いて、期間T8において、監視用データ「Data1」を受信した後に、ホスト装置90が光トランシーバ2にAck信号を送信する。そして、プロセッサ22は、ホスト装置90からのAck信号を受信すると、I2Cスレーブ処理M04を実行する。I2Cスレーブ処理M04では、プロセッサ22が、予めRAM26から読み出しておいた監視用データ「Data2」をI2C制御部42によりシフトレジスタ44にセットさせる。また、プロセッサ22は、監視用データ「Data2」の次に送信する予定の監視用データ「Data3」を準備する。監視用データ「Data3」を準備する前後のいずれかにて、プロセッサ22は、クロックストレッチを解除する。このクロックストレッチの解除により、シフトレジスタ44内にセットされた監視用データ(Data2)のホスト装置90への送信が開始される。以降、期間T8において、プロセッサ22は、同様の手順で監視用データのシフトレジスタ44へのセット、及び次の監視用データの準備(RAM26からの読出し)を繰り返す。
【0066】
続いて、最後に送信される監視用データ「DataN」の送信後、期間T9において、ホスト装置90は送信終了情報としてNack信号を光トランシーバ2に送信する。その後、ホスト装置90は、一連の送受信処理の終了を示すストップ条件Pを生成する。プロセッサ22は、ホスト装置90からNack信号を受信すると、I2Cスレーブ処理M05を実行し、ストップ条件Pが生成されると、I2Cスレーブ処理M06を実行する。I2Cスレーブ処理M05,M06では、プロセッサ22が、割込みリセット、及び1電文受信後処理を行う。ホスト装置90は、SCL信号がハイレベルである間に、SDA信号をローレベルからハイレベルに変化させることで、ストップ条件Pを生成する。これにより、一連のデータ送信処理が終了する。プロセッサ22は、I2Cスレーブ処理M01~M06を実行していない期間では、上述した周期処理を実行する。
【0067】
図8には、プロセッサ22が行うI
2Cスレーブ処理の一例を示すフローチャートが示されている。
図8には、処理モードが第1処理モードに設定されているときのI
2Cスレーブ処理が示されており、処理モードが第2処理モードに設定されているときには、クロックストレッチの解除が行われるタイミングについて異なる場合がある。
図8に示される一連の処理は、ホスト装置90からI
2C通信に関する情報が送信されることによって開始される。まず、プロセッサ22は、ホスト装置90から送信される情報(以下、「送信情報」という。)を受信すると、クロックストレッチを設定する。
【0068】
クロックストレッチの設定後、プロセッサ22は、送信情報がスレーブアドレス情報であるかどうかを判別する(ステップS21)。送信情報がスレーブアドレス情報であると判別された場合(ステップS21:YES)、プロセッサ22は、ステップS22~S26又はステップS22,S23,S27を順に実行する。なお、ステップS22,S23,S27の処理は、I2Cスレーブ処理M01に対応する。ステップS22~S26の処理は、I2Cスレーブ処理M03に対応する。ステップS22では、プロセッサ22が、Ack設定処理を行う。ステップS23では、プロセッサ22が、R/Wビット情報がハイレベルであるかどうかを判別する。
【0069】
R/Wビット情報がハイレベル(「Read」)である場合(ステップS23:YES)、プロセッサ22はステップS24~S26を順に実行する。ステップS24では、プロセッサ22が、I2C制御部42に最初の監視用データ(Data1)をシフトレジスタ44にセットさせる。ステップS25では、プロセッサ22がクロックストレッチを解除する。このクロックストレッチの解除により、ステップS24においてシフトレジスタ44内にセットされた監視用データ(Data1)のホスト装置90への送信が開始される。ステップS26では、プロセッサ22が、RAM26内から監視用データ(Data2)を読み出すことによって、当該監視用データの送信の準備を行う。R/Wビット情報がローレベル(「Write」)である場合(ステップS23:NO)、プロセッサ22はステップS27を実行する。ステップS27では、プロセッサ22がクロックストレッチを解除する。なお、R/Wビット情報がハイレベルである場合、ステップS25,S26が実行される順番は処理モードによって異なる。以上により、プロセッサ22は、送信情報がスレーブアドレス情報である場合のI2Cスレーブ処理を終了する。
【0070】
ステップS21において、送信情報がスレーブアドレス情報ではないと判別された場合(ステップS21:NO)、プロセッサ22は、送信情報がメモリアドレス情報であるかどうかを判別する(ステップS31)。送信情報がメモリアドレス情報であると判別された場合(ステップS31:YES)、プロセッサ22は、ステップS32~S34を順に実行する。ステップS32~S34の処理は、I2Cスレーブ処理M02に対応する。ステップS32では、プロセッサ22がメモリアドレス情報を内部メモリ(例えばRAM26)に格納する。ステップS33では、プロセッサ22がAck設定処理を行い、クロックストレッチを解除する。ステップS34では、プロセッサ22が、RAM26内から最初に送信する監視用データ(Data1)を読み出すことによって、当該監視用データの送信の準備を行う。なお、クロックストレッチを解除するタイミングは、処理モードによっては、ステップS34の後であってもよい。以上により、プロセッサ22は、送信情報がメモリアドレス情報である場合のI2Cスレーブ処理を終了する。
【0071】
ステップS31において、送信情報がメモリアドレス情報ではないと判別された場合(ステップS31:NO)、プロセッサ22は、送信情報がホスト装置90からのデータであるかどうかを判別する(ステップS41)。送信情報がホスト装置90からのデータであると判別された場合(ステップS41:YES)、プロセッサ22は、ステップS42,S43を順に実行する。ステップS42では、プロセッサ22が受信したデータを内部メモリ(例えばRAM26)に格納する。ステップS43では、プロセッサ22がステップS33と同様の処理を行う。以上により、プロセッサ22は、送信情報がホスト装置90からのデータである場合のI2Cスレーブ処理を終了する。
【0072】
ステップS41において、送信情報がホスト装置90からのデータではないと判別された場合(ステップS41:NO)、プロセッサ22は、送信情報がホスト装置90からのAck信号であるかどうかを判別する(ステップS51)。送信情報がAck信号であると判別された場合(ステップS51:YES)、プロセッサ22は、ステップS52~S54を順に実行する。ステップS52~S54の処理は、I2Cスレーブ処理M04に対応する。ステップS52では、プロセッサ22が、予め準備していた監視用データをI2C制御部42にシフトレジスタ44にセットさせる(一時的に格納させる)。
【0073】
ステップS53では、プロセッサ22がクロックストレッチを解除する。これにより、ステップS52においてシフトレジスタ44にセットされた監視用データのホスト装置90への送信が開始される。ステップS54では、プロセッサ22が次の監視用データをRAM26から読み出すことによって、次の監視用データの送信の準備を行う。例えば、プロセッサ22は、RAM26から読み出した次の監視用データをI2C制御部42内のデータレジスタに一時的に格納する。なお、ステップS53,S54が実行される順番は、処理モードによって異なる。以上により、プロセッサ22は、送信情報がホスト装置90からのAck信号である場合のI2Cスレーブ処理を終了する。
【0074】
ステップS51において、送信情報がホスト装置90からのAck信号ではないと判別された場合(ステップS51:NO)、プロセッサ22は、送信情報がホスト装置90により生成されたストップ条件Pであるかどうかを判別する(ステップS61)。送信情報がストップ条件Pであると判別された場合(ステップS61:YES)、プロセッサ22は、ステップS62,S63を順に実行する。ステップS62,S63の処理は、I2Cスレーブ処理M06に対応する。ステップS62,S63では、プロセッサ22が割込みリセット及び1電文受信後処理をそれぞれ行う。以上により、プロセッサ22は、送信情報がストップ条件Pである場合のI2Cスレーブ処理を終了する。
【0075】
ステップS61において送信情報がストップ条件Pではないと判別された場合(ステップS61:NO)、プロセッサ22は、送信情報がNack信号であるかどうかを判別する(ステップS71)。
図8に示される例では、送信情報がNack信号であるかどうかによらず、プロセッサ22は、ステップS62と同様の処理であるステップS72を実行する。ステップS72の処理は、I
2Cスレーブ処理M05に対応する。以上により、プロセッサ22は、送信情報がNack信号である場合のI
2Cスレーブ処理を終了する。
【0076】
図8に示されるフローチャートでは省略されているが、プロセッサ22は、周期処理の処理時間に応じて設定される処理モードによってI
2Cスレーブ処理におけるクロックストレッチを解除するタイミングを異ならせる。
図9には、処理モードによってクロックストレッチの解除のタイミングが異なるI
2Cスレーブ処理の一例を示すフローチャートが示されている。なお、
図9に示されるフローチャートでは、
図8に示されるフローチャートの一部の処理が簡略化されて示されている。プロセッサ22は、ホスト装置90から送信情報が送られてくるとクロックストレッチを設定する。
【0077】
クロックストレッチの設定後、プロセッサ22は、ホスト装置90からの送信情報に応じたスレーブ処理を実行する(ステップS81)。ステップS81のスレーブ処理は、I2Cスレーブ処理のうちの一部の処理であり、送信情報によって処理内容が異なる。送信情報がスレーブアドレス情報である場合、ステップS81の処理は、ステップS22のAck設定処理に対応する。送信情報がメモリアドレス情報である場合、ステップS81の処理は、ステップS33のうちのAck設定処理及びステップS32に対応する。送信情報がホスト装置90からのデータである場合、ステップS81の処理は、ステップS43のうちのAck設定処理及びステップS42に対応する。送信情報がホスト装置90からのAck信号である場合、ステップS81の処理は、ステップS52に対応する。
【0078】
続いて、プロセッサ22は、I2Cスレーブ処理の処理モードが、第1処理モードに設定されているかどうかを判断する(ステップS82)。処理モードが第1処理モードに設定されている場合(ステップS82:YES)、プロセッサ22は、クロックストレッチを解除する(ステップS83)。一方、処理モードが第1処理モードに設定されていない場合(ステップS82:NO)、プロセッサ22はステップS83を実行しない。換言すると、処理モードが第2処理モードに設定されている場合、プロセッサ22はステップS83を実行しない。
【0079】
続いて、プロセッサ22は、次に送信する予定の監視用データの送信準備が必要かどうかを判断する(ステップS84)。例えば、プロセッサ22は、監視用データの送信開始後にホスト装置90からAck信号を受けた場合(
図8のステップS51参照)、次の監視用データの送信準備が必要であると判断する。監視用データの送信準備が必要であると判断された場合(ステップS84:YES)、プロセッサ22は、次に送信する予定の監視用データをRAM26から読み込むことで、当該監視用データの送信準備を行う(ステップS85)。監視用データの送信準備が不要であると判断された場合(ステップS84:NO)、プロセッサ22は、ステップS85を実行しない。
【0080】
続いて、プロセッサ22は、I2Cスレーブ処理の処理モードが、第2処理モードに設定されているかどうかを判断する(ステップS86)。処理モードが第2処理モードに設定されている場合(ステップS86:YES)、プロセッサ22は、クロックストレッチを解除する(ステップS87)。一方、処理モードが第2処理モードに設定されていない場合(ステップS86:NO)、プロセッサ22はステップS87を実行しない。換言すると、処理モードが第1処理モードに設定されている場合、プロセッサ22はステップS87を実行しない。なお、処理モードが第1処理モードに設定されている場合には、既にステップS83の処理が行われることで、クロックストレッチは解除されている。以上により、I2Cスレーブ処理が終了する。
【0081】
このように、次の監視用データを送信するためのI2Cスレーブ処理では、処理モードが第1処理モード及び第2処理モードのどちらに設定されているかによってクロックストレッチの解除のタイミングが異なる。このような監視用データを送信するためのI2Cスレーブ処理において処理モードが第1処理モードに設定されている場合には、プロセッサ22は、監視用データ(第1データ)をシフトレジスタ44に格納してクロック信号のストレッチを解除した(ステップS81,S83)後に、第1データの次に送信される監視用データ(第2データ)をRAM26から読み出す(ステップS85)。処理モードが第2処理モードに設定されている場合には、プロセッサ22は、第1データをシフトレジスタ44に格納して第2データをRAM26から読み出した(ステップS81,S85)後に、クロック信号のストレッチを解除する(ステップS87)。
【0082】
処理モードが第1処理モードに設定されている場合、監視用データの準備の前にクロックストレッチが解除されるので、割込み開始からクロックストレッチの解除までの処理時間は、一例として1マイクロ秒(1μsec)程度である。処理モードが第2処理モードに設定されている場合、監視用データの準備の後にクロックストレッチが解除されるので、割込み開始からクロックストレッチの解除までの処理時間は、一例として20マイクロ秒程度である。なお、これらの処理時間は、CPU20(プロセッサ22)の処理能力及び動作クロックに依存する。
【0083】
(本実施形態の効果)
以上説明したように、本実施形態に係る光トランシーバ2及び光トランシーバ2の制御方法では、I2Cスレーブ処理の処理モードが第1処理モードに設定されている場合、クロック信号のストレッチが解除された後に、次の監視用データがRAM26から読み出される。クロック信号のストレッチが解除されると、シフトレジスタ44に格納されている監視用データがホスト装置90に送信されるので、第1処理モードでは、当該監視用データがホスト装置90に送信されている間、次の監視用データの読み出しを含むI2Cスレーブ処理が行われる。当該I2Cスレーブ処理が行われた後、次の割込み処理が開始されるまでの間に、周期処理が行われる。当該I2Cスレーブ処理に時間がかかると、周期処理を行うための時間が十分に確保されないおそれがある。
【0084】
一方、I2Cスレーブ処理の処理モードが第2処理モードに設定されている場合、次の監視用データがRAM26から読み出された後に、クロック信号のストレッチが解除される。つまり、第2処理モードでは、次の監視用データの読み出しを含むI2Cスレーブ処理が終了した後に、シフトレジスタ44に格納されている監視用データがホスト装置90に送信される。これにより、処理モードが第2処理モードに設定されている場合には、I2Cスレーブ処理の終了後において監視用データがホスト装置90に送信されている間、周期処理を行うことができる。つまり、周期処理を行う時間が確実に確保される。周期処理の処理時間が閾値Thよりも大きい場合には、I2Cスレーブ処理によって周期処理が滞っていると考えられる。上記構成では、上記処理時間が閾値Thよりも大きいときに、処理モードが第2処理モードに設定されるので、周期処理を行う時間が確保される。その結果、上位のホスト装置90に監視用データを送信しつつ、周期処理を適切に行うことが可能となる。
【0085】
ここで、
図10~
図12を参照して、本実施形態に係る作用効果を詳細に説明する。
図10~
図12は、I
2C通信とI
2Cスレーブ処理との関係を説明するためのタイミングチャートである。
図10には、クロック信号の周波数が100kHz(Standard Mode)に設定され、周期処理の処理時間に関わらず処理モードが第1処理モードに設定されている場合のI
2Cスレーブ処理が、第1比較例として示されている。
図11には、クロック信号の周波数が400kHz(Fast-mode)に設定され、周期処理の処理時間に関わらず処理モードが第1処理モードに設定されている場合のI
2Cスレーブ処理が、第2比較例として示されている。
図12には、クロック信号の周波数が1MHz(Fast-mode Plus)に設定され、周期処理の処理時間に応じて処理モードを変更する場合のI
2Cスレーブ処理(本実施形態に係るI
2Cスレーブ処理)が示されている。
【0086】
第1比較例に係るタイミングチャートでは、クロック信号の1クロックあたりの時間は10マイクロ秒であり、1クロック内のローレベルが継続する時間(以下、「時間tl」という。)は4.7マイクロ秒である。このため、監視用データの送信準備を行わないI2Cスレーブ処理(例えばI2Cスレーブ処理M01)が行われる場合、時間tl内に(1マイクロ秒内に)処理が終了するので、クロックストレッチの設定に伴う波形は観測されず、ホスト装置90を待たせたようには見えない。なお、ホスト装置90に監視用データを送信する場合、スレーブアドレス、メモリアドレス、及び指定されたページ番号に応じて対象とする監視用データを準備する必要がある。監視用データを準備してから当該監視用データの送信を開始させるまでを、1つのI2Cスレーブ処理内で行う場合、この全ての処理をクロックストレッチの解除まで(時間tl内で)終えることができない。このため、当該I2Cスレーブ処理(例えばI2Cスレーブ処理M03)の前のI2Cスレーブ処理(例えばI2Cスレーブ処理M02)において、クロックストレッチの解除後に監視用データの準備が行われる。
【0087】
第1比較例に係るI2Cスレーブ処理は、必要なアドレス又はデータ、及びステータスを取込み、クロックストレッチを解除する第1処理と、第1処理の後、取り込んだデータ等に基づいて次のデータを準備する第2処理とを含む。第1処理が時間tl内に行われ、かつ、第2処理が、次のI2Cスレーブ処理が来るまで(10マイクロ秒×8=80マイクロ秒以内)に行われると、クロックストレッチの設定による波形が観測されずにI2Cスレーブ処理が行われたこと(ホスト装置90に応答したこと)になる。第1処理が開始されてから第2処理が完了するまでの所要時間を20マイクロ秒程度とすると、一のI2Cスレーブ処理の終了から、次のI2Cスレーブ処理の開始までの空き時間は60マイクロ秒程度となる。なお、上述の計算は、説明の便宜のためにAck信号の送受が行われる1ビット分の期間を考慮せずに行っている。
【0088】
QSFP28ファームファクタでのI
2C通信方式における通信速度は、最大で400kHzである。QSFP-DD(Double Density)又はOSFP(Octal Small Form Factor Pluggable)等の規格において、400Gbpsの光通信を実現する光トランシーバでのI
2C通信方式における通信速度として、最大で1MHz又は1MHz以上の速度が求められる。クロック信号の周波数が400kHz又は1MHzである場合、1クロックあたりの時間が2.5マイクロ秒又は1マイクロ秒と第1比較例に比べて短くなる。時間tlも同様に、それぞれ1.3マイクロ秒又は0.5マイクロ秒と第1比較例に比べて短くなる。このため、第1処理の終了後から次のI
2Cスレーブ処理の開始までの時間が、それぞれ、(Ack信号の1ビット分を除き)2.5マイクロ秒×8=20マイクロ秒又は1マイクロ秒×8=8マイクロ秒となる。その結果、
図11に示されるように、プロセッサ22により行われる処理が、I
2Cスレーブ処理(割込み処理)に占有されてしまう。すなわち、クロック信号の周波数が400kHz又は1MHzである場合に、第1比較例と同様の方法をそのまま適用すると、周期処理が滞ってしまい、この周期処理が適切に行われないおそれがある。つまり、上述した特許文献1に示されるデータ送信制御方法を用いてホスト装置90に監視用データを送信しつつ周期処理を行う場合、I
2C通信方式における通信速度(クロック信号の周波数)によっては、周期処理が滞るおそれがある。
【0089】
この周期処理が滞るおそれについて、比較のための具体的な数値を用いて更に説明する。10ミリ秒あたりに、光トランシーバ2からホスト装置90に送信されるデータ数と、この通信に要する時間(通信時間)とを表1に示す。なお、
図5に示される周期処理が10ミリ秒ごとに行われ、周期処理自体に要する時間は5ミリ秒であると仮定して説明する。割込み処理が5ミリ秒以内に完了する場合には、残りの時間は空き時間とされる。
【表1】
【0090】
クロック信号の周波数が100kHzである場合、1クロックあたりの時間は10マイクロ秒であり、監視用データの送信単位である8ビット分の時間は80マイクロ秒である。光トランシーバ2からホスト装置90に送信するデータ数(以下、単に「データ数」という。)を100バイト(byte)とし、スレーブアドレス及びメモリマップ等の送信によりデータ数が3バイト増加すると仮定すると、クロックストレッチが設定されない場合には、通信時間は103×80マイクロ秒=8240マイクロ秒となる。1回あたりの割込み処理に要する時間が20マイクロ秒であるとすると、この通信時間のうちの100バイト分のI2Cスレーブ処理の処理時間(割込み時間)は、100×20マイクロ秒=2000マイクロ秒となる。つまり、周期処理の処理時間が5ミリ秒であり、割込み処理に要する時間が2ミリ秒となるので、プロセッサ22の1周期内(10ミリ秒内)の処理時間は、合計で7ミリ秒である。なお、残りの3ミリ秒は空き時間となる。
【0091】
クロック信号の周波数が400kHzである場合、データ数として100kHzの場合の4倍である400バイトを10ミリ秒の間に送信すると仮定し、同様に計算を行うと、クロックストレッチが設定されない場合には、通信時間は8060マイクロ秒となる。この場合には、周期処理の処理時間が5ミリ秒であり、割込み処理に要する時間が8ミリ秒程度となるので、プロセッサ22が1周期内に実行しなければならない処理時間が合計で13ミリ秒程度となる。このため、1周期内でのプロセッサ22の処理時間が、仮定した10ミリ秒に対して3ミリ秒程度超過してしまう。更に、クロック信号の周波数が1MHzである場合、データ数として100kHzの場合の10倍である1000バイトを10ミリ秒の間に送信すると仮定し、同様に計算を行うと、クロックストレッチが設定されない場合には、通信時間は8024マイクロ秒となる。この場合には、周期処理の処理時間が5ミリ秒であり、割込み処理に要する時間が20ミリ秒程度となるので、プロセッサ22が1周期内に実行しなければならない処理時間が合計で25ミリ秒程度となる。このため、1周期内でのプロセッサ22の処理時間が、仮定した10ミリ秒に対して15ミリ秒程度超過してしまう。このように、クロック信号の周波数が400kHz又は1MHzである場合に、比較例1,2では、プロセッサ22により実行される処理が、I2Cスレーブ処理に占有されてしまい、周期処理が実行できないことが懸念される。
【0092】
これに対して、本実施形態では、周期処理の処理時間に応じて、I
2Cスレーブ処理の処理モードが、第1処理モード及び第2処理モードのいずれか一方に設定される。周期処理の処理時間が閾値Thよりも小さく、処理モードが第1処理モードに設定されている場合には、第1比較例と同様に、クロックストレッチを解除してから、次の監視用データの準備が行われる。一方、周期処理の処理時間が閾値Th以上であり、処理モードが第2処理モードに設定されている場合には、次の監視用データの準備が行われた後、I
2Cスレーブ処理内の最後においてクロックストレッチが解除される。この場合、
図12に示されるように、I
2Cスレーブ処理において、クロックストレッチが設定されたまま、次の監視用データの準備が行われ、クロックストレッチが解除された後に、監視用データがホスト装置90に送信される。例えば、I
2Cスレーブ処理M03において、クロックストレッチが設定されたまま、次の監視用データ「Data2」の準備が行われ、クロックストレッチが解除された後に、監視用データ「Data1」がホスト装置90に送信される。
【0093】
本実施形態において処理モードが第2処理モードに設定されている場合には、一のI2Cスレーブ処理が終了してから、クロック信号が8クロック分(又は9クロック分)送られる間、次のI2Cスレーブ処理(割込み処理)が入らない。例えば、クロック信号の周波数が400kHz又は1MHzである場合には、一のI2Cスレーブ処理の終了から次のI2Cスレーブ処理の開始までの時間は、それぞれ、20マイクロ秒又は8マイクロ秒程度であり、プロセッサ22は、当該期間を周期処理の実行に割り当てることができる。以上のように、光トランシーバ2の制御方法では、上位のホスト装置90に監視用データを送信しつつ、周期処理を適切に行うことが可能となる。
【0094】
この光トランシーバ2の制御方法では、プロセッサ22が周期的に実行する周期処理には、TOSA4内のレーザダイオードの動作を制御する処理と、ROSA10内のフォトダイオードの動作を制御する処理と、これらのレーザダイオード及びフォトダイオードの動作を制御する処理の結果に応じてRAM26に格納されている監視用データを更新する処理と、を含む。
【0095】
この制御方法では、TOSA4内のレーザダイオード及びROSA10内のフォトダイオードの制御、並びに監視用データの更新を適切に行うことができるので、光トランシーバ2による光信号の適切な送受信が継続され、光トランシーバ2内の異常の有無を適切なタイミングで把握することが可能となる。
【0096】
ホスト装置90への監視用データの送信は、I2C規格に準拠して行われる。クロック信号の周波数は、一例として400kHz~1MHzである。
【0097】
1つの監視用データを送信する時間は、クロック信号の周期(1クロックあたりの時間)と当該監視用データのビット数とに応じて定まる。クロック信号の周期が1マイクロ秒~2.5マイクロ秒であると、1つの監視用データである第1データを送信する時間に対して、次に送信する監視用データである第2データを読み出す処理に要する時間が大きくなり、周期処理を行う時間が確保できないおそれがある。上記構成では、クロック信号の周期が1マイクロ秒~2.5マイクロ秒であっても、周期処理の処理時間が大きいと、割込み処理の処理モードが第2処理モードに設定されるので、周期処理を行う時間が確保され周期処理を適切に行うことが可能となる。
【0098】
なお、本発明は、上記実施形態における例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【0099】
ホスト装置90と光トランシーバ2との間でのI2C通信以外の他のシリアル通信において、本実施形態に係る光トランシーバ2の制御方法が用いられてもよい。
【0100】
クロック信号の周波数は、400kHz~1MHzに限られない。クロック信号の周波数は、400kHzよりも小さくてもよく、1MHzよりも大きくてもよい。
【0101】
上記実施形態では、タイマ値が閾値Thに等しい場合には、処理モードが第2処理モード(BusyフラグがON)に設定されているが、タイマ値が閾値Thに等しい場合に、処理モードが第1処理モード(BusyフラグがOFF)に設定されてもよい。
【符号の説明】
【0102】
2…光トランシーバ、4…TOSA、6…LDD、8,14…CDR、10…ROSA、12…TIA、20…CPU、22…プロセッサ、24…フラッシュROM、26…RAM、44…シフトレジスタ。