(57)【特許請求の範囲】
【請求項１】
被送信データをディスティネーションに送信するソースと、
前記ソースと前記ディスティネーションとの間の通信を管理するコントローラとを有し、
前記ソースは、
前記被送信データを複数のセグメントに分割する機能と、
前記セグメントを１つ以上の通信パケットにより前記ディスティネーションに送信する機能と、
前記ソース、前記ディスティネーション及び前記コントローラの通信アドレスを再設定するための処理が生じた場合において、前記セグメントの送信を中断する機能とを有し、
前記コントローラは、
前記ソース、前記ディスティネーション及び前記コントローラの通信アドレスを再設定するための処理が生じた後において、前記ディスティネーションが有する受信バッファの一部を指定するためのオフセットアドレスを前記ディスティネーションに問い合わせる機能と、
前記ソースに対して前記オフセットアドレスを通知する機能とを有し、
前記ソースはさらに、
前記オフセットアドレスに対応するデータから前記セグメントの送信を再開する機能を有することを特徴とするデータ通信システム。
【請求項２】
前記ソース、前記ディスティネーション及び前記コントローラの通信アドレスを再設定するための処理は、ＩＥＥＥ１３９４−１９９５規格で規定されたバスリセットであり、
前記通信パケットは、ＩＥＥＥ１３９４−１９９５規格で規定されたアシンクロナス（Asynchronous）パケットであることを特徴とする請求項１に記載のデータ通信システム。
【請求項３】
前記セグメントのサイズは、前記ディスティネーションが有する受信バッファのサイズに従って決定されることを特徴とする請求項１又は２に記載のデータ通信システム。
【請求項４】
前記ソースはさらに、
前記セグメントの送信が完了した場合において、前記セグメントの送信が完了したことを前記コントローラに通知する機能を有することを特徴とする請求項１乃至３のいずれか１項に記載のデータ通信システム。
【請求項５】
前記コントローラはさらに、
前記ソースが前記セグメントの送信が完了したことを前記コントローラに通知した後において、次のセグメントの送信を前記ソースに指示する機能を有することを特徴とする請求項４に記載のデータ通信システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、被送信データをディスティネーションに送信するソースと、当該ソースと当該ディスティネーションとの間の通信を管理するコントローラとを有するデータ通信システムに関する。
【０００２】
【従来の技術】
従来、パーソナルコンピュータ（以下、ＰＣ）の周辺機器の中で、最も利用頻度が高かったのはハードディスクやプリンタであった。これらの周辺機器は、専用の入出力インタフェース或いはＳＣＳＩ（small computer system interface）インタフェース等の汎用性のあるデジタルインタフェースによってＰＣと接続されていた。
【０００３】
一方、近年、デジタルカメラ、デジタルビデオカメラ等のＡＶ（Audio/Visual）機器もＰＣの周辺装置の１つとして注目を浴びている。これらのＡＶ（Audio/Visual）機器も専用インタフェースを介してＰＣと接続されていた。
【０００４】
従来の専用インタフェースやＳＣＳＩインタフェースでは、特に、ＡＶ機器の有する静止画像や動画像のような大容量のデータを扱う場合において、データ転送レートが低い、パラレル通信のため通信ケーブルが太い、接続できる周辺機器の数と種類が少ない、接続方式に制限がある、リアルタイムなデータ転送が行えない等の多くの問題があった。
【０００５】
このような問題点を解決する次世代の高速、高性能デジタルインタフェースの一つとして、ＩＥＥＥ（The Institute of Electrical and Electronics Engineers，Inc.）１３９４−１９９５規格が知られている。
【０００６】
ＩＥＥＥ１３９４−１９９５規格に準拠したデジタルインタフェース（以下、１３９４インタフェース）には、次のような特徴がある。
（１）データ転送速度が高速である。
（２）リアルタイムなデータ転送方式（即ち、Isochronous転送方式）とAsynchronous転送方式をサポートしている。
（３）自由度の高い接続構成（トポロジ）を構築できる。
（４）プラグ・アンド・プレイ機能と活線挿抜機能をサポートしている。
【０００７】
【発明が解決しようとする課題】
しかしながら、ＩＥＥＥ１３９４−１９９５規格では、コネクタの物理的、電気的な構成、最も基本的な２つのデータ転送方式等については定義しているが、どのような種類のデータを、どのようなデータ・フォーマットで、どのような通信プロトコルに基づいて送受信するのかについては定義していなかった。
【０００８】
又、ＩＥＥＥ１３９４−１９９５規格のＩｓｏｃｈｒｏｎｏｕｓ転送方式では、送出パケットに対する応答が規定されていないため、各Ｉｓｏｃｈｒｏｎｏｕｓパケットが確実に受信されたかは保証されない。したがって、連続性のある複数のデータを確実に転送したい場合、或いは１つのファイルデータを複数のデータに分割して確実に転送したい場合、Ｉｓｏｃｈｒｏｎｏｕｓ転送方式を使用することはできなかった。
【０００９】
又、ＩＥＥＥ１３９４−１９９５規格のＩｓｏｃｈｒｏｎｏｕｓ転送方式では、転送帯域に空きがある場合でも、通信の総数が６４個に制限される。このため、少ない転送帯域で数多くの通信を行いたい場合、Ｉｓｏｃｈｒｏｎｏｕｓ転送方式を使用することはできなかった。
【００１０】
又、ＩＥＥＥ１３９４−１９９５規格では、ノードの電源のＯＮ／ＯＦＦ、ノードの接続／切り離し等に応じてバスリセットが生じた場合、データの転送を中断しなければならない。ところが、ＩＥＥＥ１３９４−１９９５規格では、バスリセットや伝送時のエラーによってデータ転送が中断した場合、どのような内容のデータを失ったのかについては知ることができなかった。更に、一度中断した転送を復帰するためには、非常に煩雑な通信手順を踏む必要があった。
【００１１】
ここで、バスリセットとは、新たなトポロジの認識と各ノードに割り当てられるアドレス（ノードＩＤ）の設定とを自動的に行う機能である。この機能により、ＩＥＥＥ１３９４−１９９５規格では、プラグ・アンド・プレイ機能と活線挿抜機能とを提供することができる。
【００１２】
又、ＩＥＥＥ１３９４−１９９５規格に準拠した通信システムにおいて、リアルタイム性は必要とされないが信頼性が要求される比較的データ量の多いオブジェクトデータ（例えば、静止画像データ、グラフィックスデータ、テキストデータ、ファイルデータ、プログラムデータ等）を、１以上のセグメントに分割し、各セグメント内のデータを連続的に転送するための通信プロトコルは具体的に提案されていなかった。
【００１３】
又、このような通信システムでは、通常、バスリセットが発生した場合、セグメントの伝送を中断し、バスリセット動作の完了後にオブジェクトデータの転送を最初からやり直さなければならなかった。特に、ディスティネーションのバッファ容量が大きく、しかもセグメントの終わりの方でバスリセットが生じた場合は、再送のための時間が多くかかり、同じデータを無駄に再送してしまうという問題があった。
【００１４】
また、このような再送データの無駄を減らすには、ディスティネーションのバッファサイズを小さく設定することで、まるまる廃棄するセグメントと再送データの量とを減らすことができるが、そのようにすると、セグメント単位にデータ通信を指示するコマンドと、それに対するレスポンスの通信が増え、その結果、バスのトラフィックが増加して効率も悪くなるという問題もあった。
【００１５】
本発明は、このような問題を解決するためになされたものであり、中断されたセグメントの伝送を再開する際の再送データの無駄をなくすことができるとともに、バスのトラフィックの増加を抑制できるようにすることを目的とする。
【００１６】
【課題を解決するための手段】
本発明に係るデータ通信システムは、被送信データをディスティネーションに送信するソースと、前記ソースと前記ディスティネーションとの間の通信を管理するコントローラとを有し、前記ソースは、前記被送信データを複数のセグメントに分割する機能と、前記セグメントを１つ以上の通信パケットにより前記ディスティネーションに送信する機能と、前記ソース、前記ディスティネーション及び前記コントローラの通信アドレスを再設定するための処理が生じた場合において、前記セグメントの送信を中断する機能とを有し、前記コントローラは、前記ソース、前記ディスティネーション及び前記コントローラの通信アドレスを再設定するための処理が生じた後において、前記ディスティネーションが有する受信バッファの一部を指定するためのオフセットアドレスを前記ディスティネーションに問い合わせる機能と、前記ソースに対して前記オフセットアドレスを通知する機能とを有し、前記ソースはさらに、前記オフセットアドレスに対応するデータから前記セグメントの送信を再開する機能を有することを特徴とする。
【００２１】
【発明の実施の形態】
以下、本発明のデータ通信システム、データ通信方法、データ通信装置及び記憶媒体の一実施の形態を図面を参照して説明する。
図１は、本実施例の通信システムの構成について説明する図である。図１において、各機器は、ＩＥＥＥ１３９４−１９９５規格（以下、１３９４規格）に準拠したデジタルインタフェース１０５を具備している。
【００２２】
図１の通信システムは、ＴＶ１０１、デジタルビデオテープレコーダ（以下、ＤＶＴＲ）１０２、プリンタ１０３、デジタルカムコーダ（以下、ＤＶＣＲ）１０４により構成されている。
【００２３】
図１において、ＴＶ１０１、ＤＶＴＲ１０２、ＤＶＣＲ１０４は、制御部１０６、信号処理部１０７を具備し、プリンタ１０３は制御部１０６、画像処理部１０９を具備している。各機器は、１３９４規格に準拠した通信ケーブルを介して接続されている。
【００２４】
ここで、通信ケーブルには、４ピンケーブルと６ピンケーブルの２種類がある。４ピンケーブルは、データの転送や調停信号の通信に用いられる２組のシールド付きのより対線により構成されている。６ピンケーブルは、２組のより対線と電源供給用のペア線からなる。２組のより対線を用いて伝送されるデータは、ＤＳ−Ｌｉｎｋ方式により符号化されたデータである。
【００２５】
次に、図２を用いて本実施例のデジタルインタフェース１０５の構成について詳細に説明する。
デジタルインタフェース１０５は、機能的に複数のレイヤ（階層）から構成されている。図２において、デジタルインタフェース１０５は、ＩＥＥＥ１３９４−１９９５規格に準拠した通信ケーブル２０１を介して他の機器のデジタルインタフェース１０５と接続される。又、デジタルインタフェース１０５は、１つ以上の通信ポート２０２を有し、各通信ポート２０２はハードウェア部に含まれるフィジカル・レイヤ２０３と接続される。
【００２６】
図２において、ハードウェア部は、フィジカル・レイヤ２０３とリンク・レイヤ２０４とから構成されている。フィジカル・レイヤ２０３は、他のノードとの物理的、電気的なインタフェース、バスリセットの検出とそれに伴う処理、入出力信号の符号化／復号化、バス使用権の調停等を行う。又、リンク・レイヤ２０４は、通信パケットの生成、各種の通信パケットの送受信、サイクルタイマの制御等を行なう。又、リンク・レイヤ２０４は、後述する通信プロトコルにおいて規定するパケットの生成及び送受信の機能を提供する。
【００２７】
又、図２において、ファームウェア部は、トランザクション・レイヤ２０５とシリアル・バス・マネージメント２０６とを含んでいる。トランザクション・レイヤ２０５は、Asynchronous転送方式を管理し、各種のトランザクション（リード、ライト、ロック）を提供する。
【００２８】
又、トランザクション・レイヤ２０５は、後述する通信プロトコルにおいて規定するトランザクションを管理する機能を提供する。シリアル・バス・マネージメント２０６は、ＩＥＥＥ１２１２ＣＳＲ規格に基づいて、自ノードの制御、自ノードの接続状態の管理、自ノードのＩＤ情報の管理、シリアルバスネットワークの資源管理を行う機能を提供する。又、シリアル・バス・マネージメント２０６は、後述する通信プロトコルに関する各種の処理動作を制御する機能を提供する。
【００２９】
図２に示すハードウェア部及びファームウェア部が実質的に１３９４インタフェースを構成するものであり、それらの基本構成は、ＩＥＥＥ１３９４−１９９５規格により規定されている。
【００３０】
又、ソフトウェア部に含まれるアプリケーション・レイヤ２０７は、使用するアプリケーションソフトによって異なり、どのようなオブジェクトデータをどのように転送するかを制御する。
【００３１】
後述する本実施例の通信プロトコルは、デジタルインタフェース１０５を構成するハードウェア部及びファームウェア部の機能を拡張するものであり、ソフトウェア部に対して新規な転送手順を提供するものである。
【００３２】
上述のデジタルインタフェース１０５では、電源投入時、新たな機器の接続や切り離し等の接続構成の変化に応じてバスリセットを自動的に行う。ここで、バスリセットとは、通信システムを構成する各機器（以下、ノード）が、今までの認識していた通信システムの接続構成と各機器の通信アドレス（以下、ノードＩＤ）とを初期化し、新たな接続構成の再認識と通信アドレスの再設定とを行うため処理である。
【００３３】
以下、バスリセットの処理手順を簡単に説明する。この手順は、通信システムにおける階層的な接続構成の認識と各ノードに対する物理的な通信アドレスの付与からなる。
【００３４】
接続構成の認識は、バスリセットの開始後、各ノードが親子関係を宣言し合うことによって実行される。各ノードは、各ノード間の親子関係を決定することにより、通信システムをツリー構造（階層構造）として認識する。尚、各ノード間の親子関係は、通信システムの接続状態や各ノードの機能に依存するため、バスリセット毎に同じ関係になることはない。
【００３５】
例えば、図１の通信システムにおいて、デジタルインタフェース１０５では、まず、プリンタ１０３（以下、ノードＤ）とＤＶＴＲ１０２（以下、ノードＣ）との間で親子関係を設定する。次に、ＤＶＣＲ１０４（以下、ノードＢ）とＴＶ１０１（以下、ノードＡ）との間、及びノードＣとノードＡとの間で親子関係を設定する。
【００３６】
最終的に全てのノードの親（或いは上位）と認識された機器がルート・ノードとなり、この通信システムのバス使用権の調停を管理する。図１の通信システムでは、ノードＡがルート・ノードとなる。
【００３７】
ルート・ノードの決定後、通信システムを構成する各ノードは、ノードＩＤの設定を自動的に開始する。ノードＩＤの設定は、基本的に親ノードがポート番号の若い通信ポートに接続された子ノードに対して物理アドレスの設定を許可し、更にその子ノードが自分の子ノードに対して順番に設定の許可を与えることによって実行される。自己のノードＩＤを設定したノードは、セルフＩＤパケットを送出し、自己に付与されたノードＩＤを他のノードに対して通知する。最終的に全ての子ノードのＩＤ設定が終了した後、親ノードは自己のノードＩＤを設定する。
【００３８】
以上の処理を繰り返し実行することによって、ルート・ノードのノードＩＤが一番最後に設定される。尚、各ノードに割り当てられるノードＩＤは、各機器の親子関係に依存するため、バスリセット毎に同じノードＩＤが設定されることはない。
【００３９】
次に、図１を用いてノードＩＤの自動設定処理を説明する。尚、以下の説明では、接続構成の認識後、ノードＡがルート・ノードとなった場合について説明する。
【００４０】
図１において、ルート・ノードであるノードＡはまず、「ポート１」の通信ポートに接続されているノード、即ちノードＢに対してノードＩＤの設定を許可する。
【００４１】
ノードＢは、自己のノードＩＤを「＃０」に設定し、その結果をセルフＩＤパケットとして通信システムを構成する全てのノードに対してブロードキャストする。ここで、ブロードキャストとは、所定の情報を不特定多数のノードを宛先として送出することである。
【００４２】
この結果、全てのノードは、「ノードＩＤ「＃０」は割当済である」と認識し、次にノードＩＤの設定を許可されたノードは「＃１」を設定する。
ノードＢの設定後、ノードＡは、「ポート２」の通信ポートに接続されているノード、即ちノードＣに対してノードＩＤの設定を許可する。
【００４３】
ノードＣは更に、子ノードの接続されている通信ポートの内、最も若いポート番号の通信ポートから順に設定の許可を与える。つまり、ノードＤに対して許可を与え、その許可を受けたノードＤがノードＩＤ「＃１」を設定した後、セルフＩＤパケットをブロードキャストする。
【００４４】
ノードＤの設定後、ノードＣが自己のノードＩＤを「＃３」に設定し、最後にルート・ノードであるノードＡが自己のノードＩＤを「＃４」に設定して接続構成の認識を終了する。
【００４５】
このようなバスリセット処理により、各ノードのデジタルインタフェース１０５は、通信システムの接続構成の認識と各ノードの通信アドレスの設定とを自動的に行うことができる。そして各ノードは、この上述のノードＩＤを用いることにより各ノード間の通信を行なうことができる。
【００４６】
次に、デジタルインタフェース１０５の具備するデータ転送方式について、図３を用いて説明する。
図３の通信システムは、データ転送方式としてIsochronous 転送モードとAsynchronous転送モードとを具備している。Isochronous 転送モードは、１通信サイクル期間（125 μs ）毎に一定量のパケットの送受信を保証するため、ビデオデータや音声データのリアルタイムな転送に有効である。
【００４７】
また、Asynchronous転送モードは、制御コマンドやファイルデータ等を必要に応じて非同期に送受信する転送モードであり、Isochronous 転送モードに比べて優先順位が低く設定されている。
【００４８】
図３において、各通信サイクルの始めには、サイクル・スタート・パケット３０１と呼ばれる各ノードの計時するサイクル時間を調整するための通信パケットが送出される。
【００４９】
サイクル・スタート・パケット３０１の転送後、所定の期間がIsochronous 転送モードに設定されている。Isochronous 転送モードでは、Isochronous 転送モードに基づいて転送されるデータの夫々に対してチャネル番号を付すことにより、複数のIsochronous 転送を実行することができる。
【００５０】
例えば、図３において、ＤＶＣＲ１０４からIsochronous 転送されるデータ３０２にチャネル番号「ｃｈ０」、ＤＶＴＲ１０２からIsochronous 転送されるデータ３０３にチャネル番号「ｃｈ１」、ＴＶ１０１からIsochronous 転送されるデータ３０４にチャネル番号「ｃｈ２」が割り当てられている場合、各データは、１通信サイクル期間内において時分割にIsochronous 転送される。
【００５１】
各Isochronous 転送が終了した後、次のサイクル・スタート・パケット３０１の転送される期間までがAsynchronous転送に使用される。例えば、図３では、Asynchronous転送に基づくデータ３０５がＤＶＣＲ１０４からプリンタ１０３に転送される。
【００５２】
図４は、Asynchronous転送モードを用いた本実施の形態の通信プロトコルの基本構成について説明するシーケンスチャートである。図４において、オブジェクトデータ、例えば静止画像を順次Asynchronous転送するノード、即ちソース４０２をＤＶＣＲ１０４とする。また、ソース４０２からAsynchronous転送されたオブジェクトデータを受信するノード、即ちディスティネーション４０３をプリンタ１０３とする。更に、ソース４０２とディスティネーション４０３との間の通信を管理するノード、即ちコントローラ４０１をＴＶ１０１とする。
【００５３】
本実施の形態の通信プロトコルは、３つのフェーズからなっている。第１のフェーズ４０４は、コネクションフェーズで、コントローラ４０１は、ディスティネーション４０３の受信バッファサイズ、後述するディスティネーションオフセット、受信可能か否かを問い合わせ、ディスティネーション４０３を受信待機状態にセットする。また、コントローラ４０１は、ソース４０２からAsynchronous転送されるオブジェクトデータを選択して、ソース４０２を転送待機状態にセットする。
【００５４】
第２のフェーズ４０５は、伝送フェーズで、コントローラ４０１は、ソース４０２とディスティネーション４０３とを制御し、オブジェクトデータを１つ以上のパケットにより順次Asynchronous転送する。
【００５５】
第３のフェーズ４０６は、コネクションリリースフェーズで、コントローラ４０１は、ディスティネーション４０３の受信バッファを自己の管理下から解放し、同様にソース４０２の送信バッファを自己の管理下から解放する。
【００５６】
図５は、ソース４０２からAsynchronous転送されるオブジェクトデータとディスティネーション４０３の受信バッファとの関係を説明する図である。
ソース４０２からAsynchronous転送されるオブジェクトデータ５０１は、コントローラ４０１から通知されたディスティネーション４０３の受信バッファサイズに等しい１つ以上のセグメント５０２に分割される。
【００５７】
それぞれのセグメント５０２に含まれるデータは、１つ以上のAsynchronous転送モードに基づく通信パケット５０３（以下、Asynchronousパケット５０３）にパケッタイズされ、ソース４０２からディスティネーション４０３に順次転送される。
【００５８】
ディスティネーション４０３は、ソース４０２からのAsynchronousパケット５０３を順次受信し、一時的に受信バッファ５０４に書き込む。１セグメント分のオブジェクトデータの転送が終了した後、ディスティネーション４０３は、受信バッファ５０４に格納された１セグメント分のデータを内部メモリ５０５に順次書き込む。
【００５９】
次に、図６は用いて、ディスティネーション４０３を含む全てのノードの有する受信バッファ５０４について詳細に説明する。受信バッファ５０４は、ＩＥＥＥ１２１２ＣＳＲ（Ｃｏｎｔｒｏｌ  ａｎｄ  Ｓｔａｔｕｓ  ＲｅｇｉｓｔｅｒＡｒｃｈｉｔｅｃｔｕｒｅ）規格（又は、ＩＳＯ／ＩＥＣ１３２１３：１９９４規格）に準拠した６４ビットのアドレス空間により管理されている。ＩＥＥＥ１２１２ＣＳＲ規格とは、シリアルバス向けの制御、管理、アドレス割り振りを規定した規格である。
【００６０】
図６（ａ）は、６４ビットのアドレスにより表される論理的なメモリ空間である。又、図６（ｂ）は、図６（ａ）に示すアドレス空間の一部であり、例えば、上位１６ビットがＦＦＦＦ16となるアドレス空間である。受信バッファ５０４は、図６（ｂ）に示すアドレス空間の一部を使用し、アドレスの下位４８ビットを示すデスティネーション・オフセットにより指定される。このデスティネーション・オフセットは、各Asynchronousパケットのヘッダ部により指定される。
【００６１】
図６（ｂ）において、例えば、００００００００００００16〜０００００００００３ＦＦ16は予約された領域であり、実際にオブジェクトデータ５０１の書き込まれる領域は、アドレスの下位４８ビットがＦＦＦＦＦ００００４００16以降となる領域である。
【００６２】
（第１の実施の形態）
以下、本実施の形態の通信プロトコルを図面に基づいて詳細に説明する。
本発明のデータ伝送フェーズ４０５の流れを図８に示す。コネクションフェーズ４０４とコネクションリリースフェーズ４０６は図４と同様である。
【００６３】
本実施の形態において、ソース４０２は、図５に示すように、１つのオブジェクトデータ（例えば、画像データ、音声データ、グラフィックスデータ、テキストデータ等）５０１を１つ以上のセグメント５０２に分割した後、各セグメント５０２を１つ以上のAsynchronousパケット５０３にてAsynchronous転送する。また、ディスティネーション４０３は、ソース４０２からAsynchronous転送された１つ以上のAsynchronousパケット５０３を受信バッファ５０４に書込み、１セグメント５０２毎に内部メモリ５０５に格納する。
【００６４】
更にコントローラ４０１は、ディスティネーション４０３のバッファサイズの問合せ、ソース４０２から転送されるオブジェクトデータの選択、ソース４０２にて生成されるセグメントのサイズの指定等、ソース４０２とディスティネーション４０３との間の通信を管理する。
【００６５】
また、本実施の形態の通信プロトコルは、図４に示すように、３つのフェーズ、即ち、コネクションフェーズ、伝送フェーズ、コネクションリリースフェーズから構成されている。
【００６６】
ここで、本実施の形態におけるコネクションフェーズとコネクションリリースフェーズとは、図４に示す第１のフェーズ４０４、第３のフェーズ４０６と同様に実行することができる。従って、本実施の形態では、伝送フェーズについて詳細に説明する。
【００６７】
図８は、本実施の形態の伝送フェーズについて詳細に説明するシーケンスチャートである。
図８において、コントローラ４０１は、ディスティネーション４０３に対して、いくつかの通信パケットでAsynchronous転送される１セグメントのデータを受信するように指示する（１２０４）。また、コントローラ４０１は、ソース４０２に対して、オブジェクトデータを１つ以上のセグメントに分割し、各セグメントをいくつかの通信パケットでAsynchronous転送するように指示する（１２０５）。
【００６８】
ここで、コントローラ４０１からソース４０２に転送されるコマンドの構成を図８を用いて説明する。このコマンドは、例えば、ソース４０２に１セグメントの転送の開始を指示するコマンド（以下、転送開始コマンド）であり、Asynchronous転送モードにより転送される。
【００６９】
図７において、最初のフィールド８０１には、転送の開始等を指示するコマンドデータが格納される。フィールド８０２には、送信するセグメントの順番を示すセグメントナンバーが格納される。フィールド８０３には、ディスティネーション４０３のノードＩＤが格納される。
【００７０】
フィールド８０４には、ディスティネーション４０３の具備する受信バッファ５０４の先頭アドレスが格納される。フィールド８０５には、ディスティネーション４０３の具備する受信バッファのサイズ、つまり１セグメントのサイズ情報が格納される。フィールド８０６には、ディスティネーション４０３の受信可能な通信パケットの最大サイズ情報が格納される。フィールド８０７には、各種のステータス情報等が格納される。
【００７１】
また、図７において、フィールド８０７の所定の領域には、再送識別ビットを格納する領域８０８が設定されている。ソース４０２は、この領域８０８を読み出すことによって、通常の転送処理を行うか、再送処理を行うかを判断する。例えば、コントローラ４０１が、ソース４０２に対して通常のセグメントの転送を指示する場合、この領域８０８には“０”が格納される。
【００７２】
第１の実施の形態において、転送開始コマンドを受信したソース４０２は、フィールド８０４に格納された受信バッファ５０４の先頭アドレスの値を所定の内部レジスタに格納するように構成されている。ここで、内部レジスタは、各機器の具備するデジタルインタフェース１０５或いは各機器の動作を制御する制御部１０６（図１参照）に含まれている。
【００７３】
図８において、コントローラ４０１からの指示後、ソース４０２は、１セグメント５０２を１つ以上のAsynchronousパケット５０３にパケッタイズし、各Asynchronousパケット５０３をディスティネーション４０３へ順次転送する（１２０６）。
【００７４】
ここで、各Asynchronousパケット５０３には、ディスティネーション４０３の具備する受信バッファ５０４の所定の領域を指定するアドレス（ディスティネーションオフセットアドレス）が格納されている。例えば、あるセグメントの最初のAsynchronousパケット５０３には、コントローラ４０１により通知された受信バッファ５０４の先頭アドレスが格納されている。また、それ以降のAsynchronousパケットには、その受信バッファ５０４の所定の領域を順次指定するオフセットアドレスが格納される。
【００７５】
あるセグメント５０２の転送中にバスリセット７０７が生じた場合、そのソース４０２はそのセグメントの転送を一時中断する。ディスティネーション４０３は、そのセグメントの受信を中断すると共に、バスリセットが発生する前に正常に受信された最後のAsynchronousパケットに含まれるオフセットアドレスを上述の内部レジスタに格納する。また、ディスティネーション４０３は、受信バッファ５０４に格納されたデータ（即ち、途中まで転送されたセグメント）を廃棄せず、そのまま保持する。
【００７６】
バスリセットに伴う処理が終了した後、コントローラ４０１は、ソース４０２とディスティネーション４０３のノードＩＤが変化したか否かを調べる。そのコントローラ４０１は、ディスティネーション４０３に対して、正常に受信した最後のパケットのオフセットアドレスを問い合わせるとともに、受信動作の再開を指示する（１２０８）。これに対して、ディスティネーション４０３は、内部レジスタに格納しておいたオフセットアドレスをコントローラ４０１に知らせる（１２０９）。
【００７７】
コントローラ４０１は、ディスティネーション４０３から知らされたオフセットアドレスをソース４０２に知らせるとともに、送信の再開を指示する（１２１０）。このときコントローラ４０１から送られるコマンドのステータスフィールド８０７内の再送識別ビット８０８は、セグメント伝送の再開を指示する“１”になっている。また、このコマンドフィールド８０４には、ディスティネーション４０３から知らされたバッファのオフセットアドレスが格納されている。
【００７８】
ソース４０２は、セグメントの中から再送を開始するデータを選択する。これは、最初の送信コマンドを受け付けたときに内部レジスタに格納しておいたディスティネーション４０３の受信バッファの先頭アドレスと、再送コマンドのフィールド８０４内の値との差をとることで識別できる。
【００７９】
例えば、図７の通信パケットの構成説明図に示すように、最初の送信コマンドを受け付けたときに内部レジスタに格納しておいたディスティネーション４０３の受信バッファの先頭アドレスの下位16bit が0E00h 、再送コマンドのフィールド８０４内のオフセットアドレスの下位16bit が0E04h であった場合は、ソース４０２は、バスリセットで伝送を中断したセグメントデータの５Byte目のデータ９０１から送信を再開する（１２１５）。
【００８０】
そして、このセグメントの伝送が終了した後、通常通りソース４０２はコントローラ４０１から指示されたセグメントの送信完了をコントローラ４０１に報告する（１２１１）。また、ディスティネーション４０３は、そのセグメントの受信完了をコントローラ４０１に報告する（１２１２）。
【００８１】
上述したセグメントの伝送が終了した後、コントローラ４０１は、次のセグメントの受信をディスティネーション４０３に指示するとともに（１２１３）、次のセグメントの送信をソース４０２に指示する（１２１４）。このとき、コマンドのフィールド８０４はディスティネーション４０３の持つバッファの先頭アドレスになっており、ステータスフィールド８０７内にある再送識別ビット８０８の値は、通常のセグメント伝送であることを示す“０”になっている。以上の処理を各セグメント毎に繰り返し行うことによって、１オブジェクトデータを効率よく、確実に転送することができる。
【００８２】
このように、本実施形態のデータ通信システムは、バスリセットが発生した場合にも各セグメントの伝送をまるまる最初からやり直す必要がなく、再送データの無駄をなくすことができる。また、ディスティネーションのバッファサイズを小さくしなくても良いので、各セグメント以外の通信が多くなってしまうこともなく、バスのトラフィックの増加を抑制して伝送効率をあげることができる。
【００８３】
なお、前記ソース４０２は、前述の内部レジスタに格納されたディスティネーション４０３の具備する受信バッファ５０４の先頭アドレスの値と、ディスティネーション４０３から通知されたオフセットアドレスの値とを比較し、その差をとることにより転送を開始すべきデータを識別している。
【００８４】
例えば、図９に示すように、内部レジスタに格納されている受信バッファ５０４の先頭アドレスの下位16bit が「0E00h 」、前述のオフセットアドレスの下位16bit が「0E04h 」であった場合、ソース４０２は、バスリセットにより転送の中断されたセグメントの内、５Ｂｙｔｅ目のデータ９０１からAsynchronous転送を再開する。
【００８５】
この１セグメントデータのAsynchronous転送が完了した後、ソースは、転送の完了をコントローラ４０１に報告する。また、ディスティネーション４０３も同様に、１セグメントデータの受信が完了したことをコントローラ４０１に報告する。
【００８６】
（本発明の他の実施形態）
本発明は複数の機器（例えば、ホストコンピュータ、インタフェース機器、リーダ、プリンタ等）から構成されるシステムに適用しても１つの機器（例えば、複写機、ファクシミリ装置）からなる装置に適用しても良い。
【００８７】
また、上述した実施形態の機能を実現するべく各種のデバイスを動作させるように、該各種デバイスと接続された装置あるいはシステム内のコンピュータに対し、上記実施形態の機能を実現するためのソフトウェアのプログラムコードを供給し、そのシステムあるいは装置のコンピュータ（ＣＰＵあるいはＭＰＵ）に格納されたプログラムに従って上記各種デバイスを動作させることによって実施したものも、本発明の範疇に含まれる。
【００８８】
また、この場合、上記ソフトウェアのプログラムコード自体が上述した実施形態の機能を実現することになり、そのプログラムコード自体、およびそのプログラムコードをコンピュータに供給するための手段、例えばかかるプログラムコードを格納した記憶媒体は本発明を構成する。かかるプログラムコードを記憶する記憶媒体としては、例えばフロッピーディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００８９】
また、コンピュータが供給されたプログラムコードを実行することにより、上述の実施形態の機能が実現されるだけでなく、そのプログラムコードがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）あるいは他のアプリケーションソフト等の共同して上述の実施形態の機能が実現される場合にもかかるプログラムコードは本発明の実施形態に含まれることは言うまでもない。
【００９０】
さらに、供給されたプログラムコードがコンピュータの機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上述した実施形態の機能が実現される場合にも本発明に含まれることは言うまでもない。
【００９１】
【発明の効果】
本発明によれば、中断されたセグメントの伝送を再開する際の再送データの無駄をなくすことができるとともに、バスのトラフィックの増加を抑制することができる。
【図面の簡単な説明】
【図１】本実施の形態の通信システムの構成を示すブロック図である。
【図２】本実施の形態の１３９４インタフェースの構成を示す図である。
【図３】１３９４インタフェースの有する転送方式を説明する図である。
【図４】本実施の形態の通信プロトコルの基本手順を説明するシーケンスチャートである。
【図５】オブジェクトデータの転送モデルを説明する図である。
【図６】各ノードの有するアドレス空間を説明する図である。
【図７】コントローラからソースに転送される通信パケットの構成を示す図である。
【図８】本実施の形態の通信プロトコルを説明するシーケンスチャートである。
【図９】ソースの具備する内部アドレスを説明する図である。
【符号の説明】
１０１  ＴＶ
１０２  ＤＶＴＲ
１０３  プリンタ
１０４  ＤＶＣＲ
１０５  デジタルインタフェース
１０６  制御部
１０７  信号処理部
４０１  コントローラ
４０２  ソース
４０３  ディスティネーション
【図１】
0004428750.tif 000002
【図２】
0004428750.tif 000003
【図３】
0004428750.tif 000004
【図４】
0004428750.tif 000005
【図５】
0004428750.tif 000006
【図６】
0004428750.tif 000007
【図７】
0004428750.tif 000008
【図８】
0004428750.tif 000009
【図９】
0004428750.tif 000010