(57)【要約】【課題】データの規格を拡張することなく、安定した通信を行って、システムの信頼性を向上することを課題とする。【解決手段】通信システム１のデバイス１０は、フレーム送信要求（Ｘ＿ＲＤＹ）をホスト２０に送信した後に、フレーム転送を行う。続いて、送信許可を受信したデバイス１０は、ＳＯＦからＥＯＦまでフレーム転送を行い、その後、転送終了した後に、ＷＴＥＲＭプリミティブを出力しながら、ホストからの受信結果を待つ。そして、ホスト２０は、受信の間、受信中を示すＲ＿ＩＰプリミティブを出力し、受信フレームに問題が無ければ、Ｒ＿ＯＫをデバイス１０に送信する。一方、ホスト２０は、受信フレームに問題がある場合には、受信エラー（Ｒ＿ＥＲＲ）をデバイス１０に対して送信する。その後、デバイス１０は、ホスト２０から受信エラーの返信があった場合には、送信回路の設定を変更する。【選択図】        図１
2009130614.tif 000002
【特許請求の範囲】
【請求項１】
他の通信制御装置にデータを送信し、当該他の通信制御装置から正常にデータを受信できたか否かの通知を受信する通信制御装置であって、
前記他の通信制御装置からデータを正常に受信できなかった旨の通知である受信エラーを受信した場合には、送信回路の設定を変更する設定変更手段を備えることを特徴とする通信制御装置。
【請求項２】
前記設定変更手段は、前記送信回路の設定として、振幅、プリエンファシス量、スルーレート量のいずれか一つまたは複数を変更することを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記設定変更手段は、他の通信制御装置との位相修正を行うためのデータを送信するタイミングで、前記送信回路の設定を変更することを特徴とする請求項１または２に記載の通信制御装置。
【請求項４】
送信回路の設定を制御する複数のレジスタそれぞれに、送信回路の設定用の値を対応付けるとともに、各レジスタが送信回路の設定を制御する順番を所定の記憶部に記憶する設定値記憶手段と、
前記設定変更手段は、前記受信エラーを受信した場合には、前記所定の記憶部に記憶された前記各レジスタの順番に従って、送信回路の設定を変更することを特徴とする請求項１〜３のいずれか一つに記載の通信制御装置。
【請求項５】
前記受信エラーを受信した場合には、送信回路の設定を制御するレジスタの設定値をファームウェアによって書き換えるように制御して、送信回路の設定を変更することを特徴とする請求項１〜３のいずれか一つに記載の通信制御装置。
【請求項６】
他の通信制御装置にデータを送信し、当該他の通信制御装置から正常にデータを受信できたか否かの通知を受信する通信制御方法であって、
前記他の通信制御装置からデータを正常に受信できなかった旨の通知である受信エラーを受信した場合には、送信回路の設定を変更する設定変更ステップを含んだことを特徴とする通信制御方法。
【請求項７】
他の通信制御装置にデータを送信し、当該他の通信制御装置から正常にデータを受信できたか否かの通知を受信する通信制御方法をコンピュータに実行させる通信制御プログラムであって、
前記他の通信制御装置からデータを正常に受信できなかった旨の通知である受信エラーを受信した場合には、送信回路の設定を変更する設定変更手順をコンピュータに実行させることを特徴とする通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、他の通信制御装置にデータを送信し、当該他の通信制御装置から正常にデータを受信できたか否かの通知を受信する通信制御装置、通信制御方法および通信制御プログラムに関する。
【背景技術】
【０００２】
現在、ディスクドライブの新インタフェースとして、シリアルＡＴＡインタフェース（以下、ＳＡＴＡインタフェースと称する）が主流となってきている。このＳＡＴＡインタフェースとは、従来のＡＴＡインタフェース（つまりパラレルＡＴＡインタフェース）と同様に、磁気ディスクドライブに代表される周辺機器とパーソナルコンピュータに代表されるホスト（ホストシステム）との間のインタフェースとして用いられる。
【０００３】
このようなＳＡＴＡインタフェースを持つ周辺機器であるデバイス（例えば、磁気ディスクドライブ（以下、適宜ＨＤＤと称する）は、ホスト（Ｈｏｓｔ Ｂｕｓ Ａｄａｐｔｏｒ）とＳＡＴＡバスにより接続され、ＦＩＳ（Ｆｒａｍｅ Ｉｎｆｏｒｍａｔｉｏｎ Ｓｔｒｕｃｔｕｒｅ）という単位で、通信が行われる。
【０００４】
また、ホスト側は、シャドウタスクファイルレジスタを持ち、アプリケーションがこのレジスタをアクセスすること（例えば、コマンド発行など）によりＦＩＳ（Ｆｒａｍｅ Ｉｎｆｏｒｍａｔｉｏｎ Ｓｔｒｕｃｔｕｒｅ）がデバイスに発行され、デバイス側のタスクファイルレジスタに反映する。そして、デバイスは、反映されたコマンドを解釈して処理する。また、デバイスからのコマンド応答もＦＩＳによって伝達され、ホスト側のシャドウタスクファイルレジスタに反映される。
【０００５】
また、ＳＡＴＡインタフェースにおける規格では、ＳＡＴＡインタフェースを使用したデータ転送において最大１ｍのケーブルが使用できることと定められている。また、受信側での信号振幅の最大レベル及び最小レベルについても、Ｇｅｎｌｉの規格ではそれぞれ６００ｍＶ及び３２５ｍＶと定められている。
【０００６】
ところで、実際にＳＡＴＡインタフェースを用いて機器を接続する場合、ケーブル（ＳＡＴＡバス）によるデータ信号の減衰が起こる。つまり、ＳＡＴＡインタフェースを適用する送信側の機器から出力されたデータ信号がケーブル（ＳＡＴＡバス）で減衰され、受信側では信号振幅が小さくなる問題がある。
【０００７】
そのため、長いケーブルや品質の悪い伝送路で接続されている場合には、振幅や信号品質が劣化し、通信エラーを起こす可能性がある。一方、悪い伝送路を想定して、例えば信号振幅を上げすぎると、上記したＳＡＴＡインタフェースの規格をオーバし、相手装置にダメージを与える可能性もある。
【０００８】
このように、どのような伝送路で接続されるか分からないため、装置起動時に設定される、固定のパラメータを使わざるを得なかった。したがって、図１３に示すように、送信側からＲ＿ＥＲＲが返ってきた場合に、ハードウェアで規定の回数のリトライを行っているが、固定のパラメータを使用していたため、救済される可能性は極めて少なかった。
【０００９】
このため、特許文献１では、或るポートの受信信号の振幅を規格基準と比較し、ポートの送信信号の振幅を操作する方法が開示されている。つまり、受信信号系のレベルに応じて、受信系とは別の送信信号系の振幅を制御する。
【００１０】
また、受信側と送信側とで通信を行って出力信号レベルを調整する方法も知られている。具体的には、受信側が受信信号の品質を測定し、その結果に基づいて送信側に補正要求データを送信する。そして、送信側が受信した補正要求データに従って、送信出力の設定を補正する。
【００１１】
【特許文献１】特開２００５−５０２５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ところで、上記した特許文献１の技術では、二つの独立した信号伝送系が全く同じ振幅をしていると仮定しているので、例えば、受信信号レベルが規格基準より高くて自ポートの送信レベルを下げる（負のフィードバック）場合に、自ポートの送信系がすでに規格基準より低くてもさらに下げてしまうので、相手ポートは現在よりさらに信号レベルを上げてきてラッチアップしてしまう結果、安定した通信が行えずに、システムの信頼性に欠けるという課題があった。
【００１３】
また、上記した受信側と送信側とで通信を行って出力信号レベルを調整する方法では、出力信号レベルを調整するための補正要求データを送受信するので、送信側受信側ともに、補正要求データの規格を拡張する必要がある。
【００１４】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、データの規格を拡張することなく、安定した通信を行って、システムの信頼性を向上することを目的とする。
【課題を解決するための手段】
【００１５】
この装置は、他の通信制御装置にデータを送信し、当該他の通信制御装置から正常にデータを受信できたか否かの通知を受信する通信制御装置であって、前記他の通信制御装置からデータを正常に受信できなかった旨の通知である受信エラーを受信した場合には、送信回路の設定を変更する設定変更手段を備えることを要件とする。
【発明の効果】
【００１６】
開示の装置は、本発明により、受信エラー受信時に送信回路の設定を変更するので、データの規格を拡張することなく、また、伝送系の品質に寄らずに安定した通信が行えるとともに、システムの信頼性を向上するという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、この発明に係る通信制御装置、通信制御方法および通信制御プログラムの実施例を詳細に説明する。
【実施例１】
【００１８】
以下の実施例では、実施例１に係る通信システムの概要および特徴、通信システムの構成および処理の流れを順に説明し、最後に実施例１による効果を説明する。なお、以下では、シリアルＡＴＡインタフェースを持つマザーボード(以下、ホストという）と磁気ディスクドライブ(以下、デバイスという)がＳＡＴＡバスを介して、フレームデータの送受信を行う通信システムの例について説明する。
【００１９】
［実施例１に係る通信システムの概要および特徴］
まず最初に、図１を用いて、実施例１に係る通信システムの概要および特徴を説明する。図１は、実施例１に係る通信システムの概要および特徴を説明するための図である。
【００２０】
実施例１の通信システム１では、デバイス１０がホスト２０にデータを送信し、ホスト２０から正常にデータを受信できたか否かの通知を受信することを概要とする。そして、このデバイス１０では、システムの信頼性を向上する点に主たる特徴がある。なお、以下の説明では、ホスト２０に対してフレーム送信を行うデバイス１０を送信側、デバイス１０からフレーム受信を行うホスト２０を受信側とする場合の例を説明するが、ホストを送信側、デバイスを受信側としてもよい。
【００２１】
この主たる特徴について具体的に説明すると、通信システム１は、ホスト２０に対してフレーム送信を行うデバイス１０と、デバイス１０からフレーム受信を行うホスト２０とで構成され、ＳＡＴＡケーブルを介して接続されている。
【００２２】
このような構成のもと、通信システム１のデバイス１０は、フレーム送信要求（Ｘ＿ＲＤＹ）をホスト２０に送信した後に、フレーム転送を行う（図１の（１）参照）。具体的には、デバイス１０は、フレーム送信要求（Ｘ＿ＲＤＹ）をホスト２０に送信する。そして、フレーム送信要求を受信したホスト２０は、準備が整うと、デバイス１０に対し、送信許可（Ｒ＿ＲＤＹ）を返信する。
【００２３】
続いて、送信許可を受信したデバイス１０は、ＳＯＦからＥＯＦまでフレーム転送（後に説明する、図３参照）を行い、その後、転送終了した後に、ＷＴＥＲＭプリミティブを出力しながら、ホストからの受信結果を待つ。そして、ホスト２０は、受信の間、受信中を示すＲ＿ＩＰプリミティブを出力し、受信フレームに問題が無ければ、Ｒ＿ＯＫをデバイス１０に送信する。一方、ホスト２０は、受信フレームに問題がある場合には、受信エラー（Ｒ＿ＥＲＲ）をデバイス１０に対して送信する（図１の（２）参照）。
【００２４】
その後、デバイス１０は、ホスト２０から受信エラーの返信があった場合には、送信回路の設定を変更する（図１の（３）参照）。例えば、デバイス１０は、受信エラー（Ｒ＿ＥＲＲ）を受信した場合には、デバイスは送信エラーステータスビットをセットし、バスをアイドル状態に移行させる。そして、デバイス１０は、送信エラーステータスビットがセットされている場合には、Ａｌｉｇｎを送信するタイミングで、設定値テーブルを参照してＴＸ振幅パラメータを変更する。その際、デバイス１０は、送信エラーステータスビットはクリアする。
【００２５】
その後、デバイス１０は、再度フレーム送信要求を行って、リトライを行う。なお、図１の例では、設定値テーブルが「リトライ１５回目用」として、設定値が設定されており、最大１５回のリトライを行うようになっている。なお、１５回のリトライでもＲ＿ＥＲＲが返ってきた場合には、割り込みを発生し、処理をファームウェアに戻す。
【００２６】
このように、通信システム１は、上記した主たる特徴のごとく、受信エラー受信時に送信回路の設定を変更するので、データの規格を拡張することなく、また、伝送系の品質に寄らずに安定した通信が行えるとともに、システムの信頼性を向上することが可能である。
【００２７】
［通信システムの通信階層］
次に、図２を用いて、図１に示した通信システム１におけるＳｅｒｉａｌＡＴＡの通信階層を説明する。図２は、実施例１に係る通信システム１のＳｅｒｉａｌＡＴＡの通信階層を示すブロック図である。
【００２８】
同図に示すように、デバイス１０とホスト２０との間のインタフェースとして用いられるＳＡＴＡインタフェースでは、通信プロトコル７層のうち、４つの層、つまり物理（ＰＨＹ）層（Ｐｈｙｓｉｃａｌ  Ｌａｙｅｒ）、リンク（ＬＩＮＫ）層、トランスポート（Ｔｒａｎｓｐｏｒｔ）層、およびアプリケーション（Ａｐｐｌｉｃａｔｉｏｎ）層を使用している。物理層は、シリアルＡＴＡバスを介して高速のシリアルデータ転送（送受信）を実行する機能を有しており、シリアルデータ信号を入出力する。
【００２９】
ここで、図３および図４を用いてフレームの転送制御について説明する。図３に示すように、リンク層は、プリミティブ（ｐｒｉｍｉｔｉｖｅ）と呼ばれる制御コードで転送制御される。プリミティブは、１ダブルワード（４バイト）のデータで、Ｋ２８．３またはＫ２８．５と呼ばれる制御用コード（１バイト目）と、３バイトのデータコードから構成される。
【００３０】
そして、リンク層は、トランスポート層から送られてきたフレームデータのＣＲＣを計算し、フレームデータの最後に付加し、ＳＯＦプリミティブとＥＯＦプリミティブにより挟まれ、先頭と最後の目印を付けられ、８ｂ１０ｂ符号化して物理層に送る。
【００３１】
図４の例を用いて転送制御の簡単な一例を説明する。同図に示すように、送信側であるデバイス１０は、送信フレームがあると、アービトレーションとして、送信側リンク層がＸ＿ＲＤＹで送信要求を受信側であるホスト２０に送信し、受信側リンク層のＲ＿ＲＤＹの返信によって、送信許可を得る。
【００３２】
その後、デバイス１０は、前述のＳＯＦからＥＯＦまでをホスト２０に送信する。その後、デバイス１０は、ＷＴＲＭを送信しながら受信側であるホスト１０の送信ステータスを待つ。ホスト２０は、正常ならＲ＿ＯＫを、また異常があればＲ＿ＥＲＲをデバイス１０に返信する。そして、デバイス１０は、受信エラー（Ｒ＿ＥＲＲ）を受信した場合には、ＴＸ振幅パラメータを変更して再度フレーム送信要求を行って、リトライを行う。
【００３３】
なお、シリアルＡＴＡでは、送信側のクロック源と受信側のクロック源の周波数が必ずしも完全一致していないため、その差を補正しながら受信クロックを生成する。また、長時間経過するとクロックの位相がずれてしまうので、ＳＡＴＡインタフェース規格では、２５６ダブルワードの中に必ず２組(２Ｄワード)以上のＡＬＩＧＮプリミティブを転送し、位相修正を行う。
【００３４】
［デバイスの構成］
次に、図５を用いて、図１に示したデバイス１０の構成を説明する。図５は、実施例１に係るデバイス１０の構成を示すブロック図である。同図に示すように、このデバイス１０は、通信Ｉ／Ｆ１１、制御部１２、記憶部１３を備え、ＳＡＴＡケーブルを介してホスト２０と接続される。以下にこれらの各部の処理を説明する。
【００３５】
通信Ｉ／Ｆ１１は、接続されるホスト２０との間でやり取りする各種情報に関する通信を制御する。具体的には、通信Ｉ／Ｆ１１は、フレーム送信要求（Ｘ＿ＲＤＹ）やフレームデータをホスト２０へ送信し、また、送信許可（Ｒ＿ＲＤＹ）や受信エラー（Ｒ＿ＥＲＲ）をホスト２０から受信する。
【００３６】
記憶部１３は、制御部１２による各種処理に必要なデータおよびプログラムを格納するが、特に本発明に密接に関連するものとしては、記憶部１３には振幅を設定するための振幅設定用レジスタ１３ａを備える。
【００３７】
振幅設定用レジスタ１３ａは、１６ビットレジスタ４個で構成されており、各レジスタの各フィールドに対応したＴＸ振幅の値がセットされている。これらの設定値は、ホスト２０からの受信エラーの返信があった場合に、後述する設定変更部１２ｃによって参照される。具体的には、振幅設定用レジスタ１３ａは、４ビット毎のフィールドに、それぞれ「初期値用」、「リトライ１回目用」、「リトライ２回目用」、・・・と定義されており、デバイス１０が備えるＴＸ信号の振幅を制御する０ｈ〜Ｆｈまでの値を設定する。
【００３８】
そして、振幅設定用レジスタ１３ａは、各レジスタの各フィールドに対応して設定している。例えば、振幅設定用レジスタ１３ａは、図６に例示するように、初期値が０ｘ５（０１０１ｂ）とし、リトライ１回目を０ｘ６に、２回目を０ｘ７に、・・・といった具合に、予め決めておいた値が設定されている。
【００３９】
また、図６に例示する振幅設定用レジスタ１３ａでは、リトライを繰り返す毎に各フィールドで設定されたＴＸ振幅の設定値に設定され、最終リトライでは、初期値のＴＸ振幅の値となるように設定されている。なお、図６例では、レジスタのフィールドの数を１６カ所とした場合を示しているが、４カ所のように少なくし、リトライカウントに応じて、初期値用、リトライ１回目用、リトライ２回目用、リトライ３回目用、初期値用、リトライ１回目用・・・といった具合に、設定値を繰り返す構成であってもよい。
【００４０】
制御部１２は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行するが、特に本発明に密接に関連するものとしては、送信部１２ａ、受信部１２ｂ、設定変更部１２ｃを備える。なお、設定変更部１２ｃは、特許請求の範囲に記載の「設定変更手段」に対応する。
【００４１】
送信部１２ａは、ＳＡＴＡケーブルを介してシリアルデータをホスト２０に送信する。具体的には、送信部１２ａは、フレーム送信要求（Ｘ＿ＲＤＹ）やフレームデータをホスト２０へ送信する。また、受信部１２ｂは、ＳＡＴＡケーブルを介してシリアルデータをホスト２０から受信する。具体的には、受信部１２ｂは、送信許可（Ｒ＿ＲＤＹ）や受信エラー（Ｒ＿ＥＲＲ）をホスト２０から受信し、受信エラー（Ｒ＿ＥＲＲ）および受信正常（Ｒ＿ＯＫ）を受信した場合には、設定変更部１２ｃに受信した旨を通知する。
【００４２】
設定変更部１２ｃは、ホスト２０から受信エラーの返信があった場合には、送信回路の設定を変更する。具体的には、設定変更部１２ｃは、受信エラー（Ｒ＿ＥＲＲ）を受信した旨を受信部１２ｂから受信した場合には、送信エラーステータスビットをセットし、バスをアイドル状態に移行させる。そして、設定変更部１２ｃは、カウンタ値の値を１インクリメントし、そのカウンタ値「Ｎ」が１６未満であるか判定する。その結果、設定変更部１２ｃは、カウンタ値「Ｎ」が１６未満でない場合には、割り込みを発生し、処理をファームウェアに戻す。
【００４３】
また、設定変更部１２ｃは、カウンタ値「Ｎ」が１６未満である場合には、送信エラーステータスビットがセットされていることを条件に、Ａｌｉｇｎを送信するタイミングで、リトライカウンタの値に対応した、振幅設定用レジスタ１３ａを参照してＴＸ振幅パラメータを変更する。その際、設定変更部１２ｃは、送信エラーステータスビットはクリアする。その後、設定変更部１２ｃは、再度フレーム送信要求を行って、リトライを行う。
【００４４】
ここで、Ａｌｉｇｎプリミティブの送信タイミングで設定を変更しているのは、受信しても意味を成さないため、このタイミングで設定を切り替えたことによって、ノイズが生じたとしても、再同期により、通信に影響がないからである。ただし、再同期に失敗する恐れがあるため、Ａｌｉｇｎの送信数を増やして対応する。なお、Ａｌｉｇｎプリミティブ送信時に限定するものではないが、Ａｌｉｇｎプリミティブ以外の送信タイミングで、設定を変更すると、ビット列にノイズやオフセットが生じ、ホストが誤って受信し、ハングする恐れもある。
【００４５】
［デバイスによる処理］
次に、図７を用いて、実施例１に係るデバイス１０による処理を説明する。図７は、実施例１に係るデバイス１０の処理動作を示すフローチャートである。
【００４６】
同図に示すように、デバイス１０は、リトライカウンタ値「Ｎ」を初期値「０」（ＴＸ振幅パラメータ＝０ｘ５）に設定した後（ステップＳ１０１）、ホスト２０に対し、フレーム送信要求（Ｘ＿ＲＤＹ）を送信する（ステップＳ１０２）。そして、デバイス１０は、ホスト２０から送信許可（Ｒ＿ＲＤＹ）を受信すると（ステップＳ１０３）、ＳＯＦからＥＯＦまでフレーム転送を行う（ステップＳ１０４）。その後、デバイス１０は、転送を終了した後、ＷＴＥＲＭプリミティブを出力しながら、ホストからの受信結果を待つ（ステップＳ１０５）。
【００４７】
そして、デバイス１０は、受信正常（Ｒ＿ＯＫ）を受信したか判定する（ステップＳ１０６）。その結果、受信正常（Ｒ＿ＯＫ）を受信した場合には（ステップＳ１０６肯定）、処理を正常に終了する。一方、デバイス１０は、受信正常（Ｒ＿ＯＫ）を受信せずに、受信エラー（Ｒ＿ＥＲＲ）を受信した場合には（ステップＳ１０６否定）、バスをアイドル状態に移行させ、送信エラーステータスビットをセットする（ステップＳ１０７）。そして、デバイス１０は、カウンタ値の値を１インクリメントし、そのカウンタ値「Ｎ」が１６未満であるか判定する（ステップＳ１０８）。その結果、デバイス１０は、カウンタ値「Ｎ」が１６未満でない場合には（ステップＳ１０８否定）、割り込みを発生し、処理をファームウェアに戻す。
【００４８】
また、デバイス１０は、カウンタ値「Ｎ」が１６未満である場合には（ステップＳ１０８肯定）、送信エラーステータスビットがセットされていることを条件に、Ａｌｉｇｎを送信するタイミングで、リトライカウンタの値に対応した、振幅設定用レジスタを参照してＴＸ振幅パラメータを変更する（ステップＳ１０９）。その際、デバイス１０は、送信エラーステータスビットはクリアする。その後、デバイス１０は、Ｓ１０２に戻って、再度フレーム送信要求を行い、リトライを行う。
【００４９】
[実施例１の効果]
上述してきたように、通信システム１は、受信エラー受信時に送信回路の設定を変更するので、データの規格を拡張することなく、また、伝送系の品質に寄らずに安定した通信が行えるとともに、システムの信頼性を向上することが可能である。
【００５０】
また、実施例１によれば、パラメータの変更指示があった時に、データ送信中に切り替えると不連続なオフセット変動やタイミング変動が発生し、さらなるエラーを引き起こすことが考えられる。このため、変更指示に対して、即時に切り替えるのではなく、ＡＧＩＬＮプリミティブ送信時などの通信に影響のないタイミングで設定を反映することにより、通信を切らずに、パラメータの通信途中で通信に影響のないタイミングで設定を反映することが可能である。
【実施例２】
【００５１】
ところで、上記の実施例１では、デバイスがＴＸ信号の振幅を制御する４ビットのフィールドを１６カ所備える場合を説明したが、本発明はこれに限定されるものではなく、デバイスがＴＸ信号の振幅を制御する４ビットのフィールドを１つだけ備えるようにしてもよい。
【００５２】
そこで、以下の実施例２では、デバイス１０ａがＴＸ信号の振幅を制御するレジスタを１つだけ備え、初期値０ｘ５（０１０１ｂ）とし、さらに、ファームウェアがリトライ１回目の設定値「０ｘ６」、２回目の設定値「０ｘ７」、・・・といった具合に、予め決めておいた設定値を記憶するリトライテーブルを記憶部１３に持つ場合として、図８を用いて、実施例２に係るデバイス１０ａの処理について説明する。図８は、実施例２に係るデバイスの処理手順を示すフローチャートである。
【００５３】
同図に示すように、実施例２に係るデバイス１０ａでは、ホスト２０にフレーム送信を行った後（ステップＳ２０１）、ホストからＲ＿ＥＲＲを受信した場合に（ステップＳ２０２否定）、割り込みを発生させ、ファームウェアに処理を移行させる（ステップＳ２０３）。そして、デバイス１０ａは、カウンタ値の値を１インクリメントし、そのカウンタ値「Ｎ」が１６未満であるか判定する（ステップＳ２０４）。その結果、デバイス１０ａは、カウンタ値「Ｎ」が１６未満でない場合には（ステップＳ２０４否定）、エラー処理を行う。
【００５４】
また、デバイス１０は、カウンタ値「Ｎ」が１６未満である場合には（ステップＳ２０４肯定）、ファームウェアがカウント値とリトライテーブルとに応じて、ＴＸ振幅パラメータをレジスタに書き換える（ステップＳ２０５）。つまり、例えば、リトライ値が「Ｎ＝１」である場合には、リトライ１回目であるとし、リトライテーブルに対応する設定値「０ｘ６」のＴＸ振幅パラメータをレジスタに書き換える。
【００５５】
設定は、即座に反映されず、ハードウェアによって、ＡＧＩＬＮプリミティブを送信するタイミングで、設定を反映させる（ステップＳ２０６）。なお、上記ではリトライテーブルを持つ場合を説明したが、テーブルを持たず、計算式によって設定値を求めるような構成であってもよい。
【００５６】
このように、上記の実施例２では、受信エラーを受信した場合には、送信回路の設定を制御するレジスタの設定値をファームウェアによって書き換えるように制御して、送信回路の設定を変更するので、単一のレジスタでデータの規格を拡張することなく、安定した通信を行って、システムの信頼性を向上することが可能である。
【実施例３】
【００５７】
ところで、上記の実施例１では、デバイスが送信側で、Ｒ＿ＥＲＲを受信した場合に、送信側であるデバイスのパラメータを変更する場合を説明したが、本発明はこれに限定されるものではなく、デバイスが受信側で、Ｒ＿ＥＲＲを送信した場合に、受信側であるデバイスのパラメータを変更するようにしてもよい。なお、受信側のデバイスがパラメータを変更する場合、送信側のホストがリトライをするかどうか、不明なため、リトライをするという前提で以下説明する。
【００５８】
そこで、以下の実施例３では、Ｒ＿ＥＲＲを送信した場合に、受信側であるデバイス１０ｂのパラメータを変更する場合として、図９および図１０を用いて、実施例３におけるデバイスの構成と処理について説明する。図９は、実施例３に係るデバイス１０ｂが保持する設定値テーブルであり、図１０は、実施例３に係るデバイス１０ｂの処理手順を示すフローチャートである。
【００５９】
図９に示すように、実施例３に係るデバイス１０ｂでは、ＲＸ信号のスレッショルドを制御する４ビットのフィールドを３箇所備えたレジスタを備えている。このスレッショルドとは、設定した振幅より小さい信号を無視するための設定である。例えば、レジスタは、初期値が０ｘ５（０１０１ｂ）とし、リトライ１回目を０ｘ４に、２回目を０ｘ３に、といった具合に、予め決めておいたスレッショルドの値が設定されている。
【００６０】
例えば、図９に示すように、デフォルト時、２００ｍＶ（０１０１ｂ）とし、リトライ１回目は１７５ｍＶに、２回目は１５０ｍＶに、といった具合に、予め決めておいた値を設定しておく。なお、ここでは、レジスタの数を３個として、ファームウェアの介在なく、リトライに応じる構成について説明したが、レジスタの数を初期値用のみとし、予め決めておいたスレッショルドの設定値を記憶するリトライテーブルを記憶部１３に持つようにして、受信エラーの度に、割り込みを発生し、ファームウェアによって、リトライテーブルに対応するスレッショルドの値をＲＸスレッショルド設定レジスタに書き換え、リトライに応じる構成であってもよい。
【００６１】
次に、実施例３に係るデバイス１０ｂの処理手順について説明する。図１０に示すように、デバイス１０ｂは、ホスト２０が送信したフレーム送信要求（Ｘ＿ＲＤＹ）を受信する（ステップＳ３０１）。そして、デバイス１０ｂは、Ｒ＿ＥＲＲ送信ビットが「０」であるか否か判定し（ステップＳ３０２）、Ｒ＿ＥＲＲ送信ビットが「１」である場合には（ステップＳ３０２否定）、ホストからのＣＯＮＴプリミティブを受信した後、ＲＸスレッショルド設定をリトライ用のレジスタにセットされている値に変更する。例えば、デバイス１０ｂは、リトライ一回目である場合には、ＲＸスレッショルド設定をリトライ１回目用レジスタにセットされている１７５ｍＶに変更する。その際、受信エラーステータスビットはクリアする（ステップＳ３０３）。
【００６２】
その後、ホスト２０からフレーム送信要求（Ｘ＿ＲＤＹ）を来た場合、フレーム送信許可（Ｒ＿ＲＤＹ）を出し、ホスト２０からのデータを受信する（ステップＳ３０４）。ここで、ＣＯＮＴプリミティブとは、通常、繰り返し送信されプリミティブの代わりに送信されるプリミティブで、直前のプリミティブと同じ意味として処理される。例えば、アイドル状態を続ける場合、ＳＹＮＣプリミティブが繰り返し送信される代わりに、ＣＯＮＴプリミティブが送信され、引き続きスクランブルされた任意のＤａｔａ（ＪＵＮＫ）が送信される。
【００６３】
そして、デバイス１０ｂは、ホスト２０に対して送信許可（Ｒ＿ＲＤＹ）を返す（ステップＳ３０４）。ホスト２０は、ＳＯＦからＥＯＦまでフレーム転送を行い（ステップＳ３０５）、転送終了後、ＷＴＥＲＭプリミティブを出力しながら、デバイス１０ｂからの受信結果を待つ（ステップＳ３０６）。デバイス１０ｂは、受信の間、受信中を示すＲ＿ＩＰプリミティブを出力し、正常に受信できたか判定して（ステップＳ３０７）、その結果、受信フレームに問題が無ければ（ステップＳ３０７肯定）、Ｒ＿ＯＫをホスト２０に送信する。
【００６４】
一方、デバイス１０ｂは、正常に受信できなかった場合には（ステップＳ３０７否定）、デバイスはＲ＿ＥＲＲを送信し、Ｒ＿ＥＲＲ送信ビットを「１」にセットする（ステップＳ３０８）。その後、デバイス１０ｂは、ＳＹＮＣプリミティブを送信し、バスをアイドル状態に移行させてステップＳ３０２に戻る。つまり、正常に受信できなかった場合には、ホスト２０からのリトライ要求がある度に、２回目用レジスタ、初期値用、リトライ１回目用・・・といった具合に、設定値を繰り返し、リトライに応じる。
【００６５】
なお、図１０のフローの中では、バスがアイドル状態を意味するＣＯＮＴプリミティブを受信したら、設定を変更しているが、特に、それに限定するものではない。また、リトライで変更するパラメータを受信側のパラメータとして、スレッショルド設定パラメータとしたが、ＰＬＬの応答特性やイコライザ等の設定を変更してもよい。つまり、ループフィルタの特性やダンピングファクタの設定を変更することで、振幅が小さくてエラーが発生していたのが、エラーが発生しなくなるようにできる。
【００６６】
このように実施例３によれば、受信側の受信回路を設定して、データの規格を拡張することなく、安定した通信を行って、システムの信頼性を向上することが可能となる。
【実施例４】
【００６７】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例４として本発明に含まれる他の実施例を説明する。
【００６８】
（１）設定用レジスタ
上記の実施例１では、設定用レジスタとして、リトライを繰り返す毎にＴＸ振幅の値が大きくなるように設定値を設定する場合を説明したが、本発明はこれに限定されるものではなく、図１１に例示するように、初期値を基準として、ＴＸ振幅の値が大きくなる設定値と、小さくなる設定値とが交互になるように設定してもよい。
【００６９】
このように、ＴＸ振幅の値が小さくなる設定値を設けるので、長いケーブルや品質の悪い伝送路で接続されていることが原因で、データ信号の減衰している場合に、信号振幅を上げ、また、ＴＸ振幅が大きいことが原因でジッタが発生して通信エラーが発生している場合に、ＴＸ振幅を小さくして、リトライできる結果、安定した通信を行うことが可能である。
【００７０】
（２）送信回路の設定
また、上記の実施例１では、リトライで変更するパラメータとして、ＴＸ出力信号の振幅パラメータを変更する場合を説明したが、本発明は変更する変更するようにしてもよい。
【００７１】
（３）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、受信部１２ｂと設定変更部１２ｃを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００７２】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００７３】
（４）プログラム
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図１２を用いて、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図１２は、通信制御プログラムを実行するコンピュータを示す図である。
【００７４】
同図に示すように、通信制御装置としてのコンピュータ６００は、ＨＤＤ６１０、ＲＡＭ６２０、ＲＯＭ６３０およびＣＰＵ６４０をバス６５０で接続して構成される。
【００７５】
そして、ＲＯＭ６３０には、上記の実施例と同様の機能を発揮する通信制御プログラム、つまり、図１２に示すように、データ送信プログラム６３１、データ受信プログラム６３２、設定変更プログラム６３３が予め記憶されている。なお、プログラム６３１〜６３３については、図５に示したデバイス１０の各構成要素と同様、適宜統合または分散してもよい。
【００７６】
そして、ＣＰＵ６４０が、これらのプログラム６３１〜６３３をＲＯＭ６３０から読み出して実行することで、図１２に示すように、各プログラム６３１〜６３３は、データ送信プロセス６４１、データ受信プロセス６４２、設定変更プロセス６４３として機能するようになる。各プロセス６４１〜６４３は、図５に示した送信部１２ａ、受信部１２ｂ、設定変更部１２ｃにそれぞれ対応する。
【００７７】
また、ＨＤＤ６１０には、図１２に示すように、設定値テーブル６１１が設けられる。そして、ＣＰＵ６４０は、設定値テーブル６１１に対してデータを登録するとともに、設定値テーブル６１１から設定値データ６２１を読み出してＲＡＭ６２０に格納し、ＲＡＭ６２０に格納された設定値データ６２１に基づいて処理を実行する。
【００７８】
（付記１）他の通信制御装置にデータを送信し、当該他の通信制御装置から正常にデータを受信できたか否かの通知を受信する通信制御装置であって、
前記他の通信制御装置からデータを正常に受信できなかった旨の通知である受信エラーを受信した場合には、送信回路の設定を変更する設定変更手段を備えることを特徴とする通信制御装置。
【００７９】
（付記２）前記設定変更手段は、前記送信回路の設定として、振幅、プリエンファシス量、スルーレート量のいずれか一つまたは複数を変更することを特徴とする付記１に記載の通信制御装置。
【００８０】
（付記３）前記設定変更手段は、他の通信制御装置との位相修正を行うためのデータを送信するタイミングで、前記送信回路の設定を変更することを特徴とする付記１または２に記載の通信制御装置。
【００８１】
（付記４）送信回路の設定を制御する複数のレジスタそれぞれに、送信回路の設定用の値を対応付けるとともに、各レジスタが送信回路の設定を制御する順番を所定の記憶部に記憶する設定値記憶手段と、
前記設定変更手段は、前記受信エラーを受信した場合には、前記所定の記憶部に記憶された前記各レジスタの順番に従って、送信回路の設定を変更することを特徴とする付記１〜３のいずれか一つに記載の通信制御装置。
【００８２】
（付記５）前記受信エラーを受信した場合には、送信回路の設定を制御するレジスタの設定値をファームウェアによって書き換えるように制御して、送信回路の設定を変更することを特徴とする付記１〜３のいずれか一つに記載の通信制御装置。
【００８３】
（付記６）他の通信制御装置にデータを送信し、当該他の通信制御装置から正常にデータを受信できたか否かの通知を受信する通信制御方法であって、
前記他の通信制御装置からデータを正常に受信できなかった旨の通知である受信エラーを受信した場合には、送信回路の設定を変更する設定変更ステップを含んだことを特徴とする通信制御方法。
【００８４】
（付記７）他の通信制御装置にデータを送信し、当該他の通信制御装置から正常にデータを受信できたか否かの通知を受信する通信制御方法をコンピュータに実行させる通信制御プログラムであって、
前記他の通信制御装置からデータを正常に受信できなかった旨の通知である受信エラーを受信した場合には、送信回路の設定を変更する設定変更手順をコンピュータに実行させることを特徴とする通信制御プログラム。
【００８５】
（付記８）他の通信制御装置からデータを受信し、当該他の通信制御装置から正常にデータを受信できたか否かを判定する通信制御装置であって、
前記他の通信制御装置からデータを正常に受信できなかった場合には、受信回路の設定を変更する設定変更手段を備えることを特徴とする通信制御装置。
【００８６】
（付記９）前記設定変更手段は、意味を成さないデータを受信したタイミングで設定を変更することを特徴とする付記８に記載の通信制御装置。
【産業上の利用可能性】
【００８７】
以上のように、本発明に係る通信制御装置、通信制御方法および通信制御プログラムは、他の通信制御装置にデータを送信し、当該他の通信制御装置から正常にデータを受信できたか否かの通知を受信する場合に有用であり、特に、データの規格を拡張することなく、安定した通信が行って、システムの信頼性を向上することに適する。
【図面の簡単な説明】
【００８８】
【図１】実施例１に係る通信システムの概要および特徴を説明するための図である。
【図２】実施例１に係る通信システム１のＳｅｒｉａｌＡＴＡの通信階層を示すブロック図である。
【図３】フレームデータの構成を説明するための図である。
【図４】フレーム転送制御の一例を説明するための図である。
【図５】実施例１に係るデバイスの構成を示すブロック図である。
【図６】実施例１に係るデバイスが保持する振幅設定用レジスタの一例を説明するための図である。
【図７】実施例１に係るデバイスの処理動作を示すフローチャートである。
【図８】実施例２に係るデバイスの処理動作を示すフローチャートである。
【図９】実施例３に係るデバイスが保持する設定用レジスタの一例を説明するための図である。
【図１０】実施例３に係るデバイスの処理動作を示すフローチャートである。
【図１１】実施例４に係るデバイスが保持する設定用レジスタの一例を説明するための図である。
【図１２】通信制御プログラムを実行するコンピュータを示す図である。
【図１３】従来を説明するための図である。
【符号の説明】
【００８９】
１０、１０ａ、１０ｂ  デバイス
１１  通信Ｉ／Ｆ
１２  制御部
１２ａ  送信部
１２ｂ  受信部
１２ｃ  設定変更部
１３  記憶部
１３ａ  振幅設定用レジスタ
２０  ホスト
【図１】
2009130614.tif 000003
【図２】
2009130614.tif 000004
【図３】
2009130614.tif 000005
【図４】
2009130614.tif 000006
【図５】
2009130614.tif 000007
【図６】
2009130614.tif 000008
【図７】
2009130614.tif 000009
【図８】
2009130614.tif 000010
【図９】
2009130614.tif 000011
【図１０】
2009130614.tif 000012
【図１１】
2009130614.tif 000013
【図１２】
2009130614.tif 000014
【図１３】
2009130614.tif 000015