(57)【要約】【課題】ホスト装置におけるＳＴＡＬＬパケットの誤認識時に、適切な回避動作を実現することができる通信デバイスを提供すること。【解決手段】デバイス１２はＵＳＢインターフェースを介してホストＰＣ１１とデータ通信を行う。デバイス１２のコントローラ１９は、ＣＦ検出部１９ａとＳＴ送信部１９ｂとを備える。デバイス１２が正常なパケットをホストＰＣ１１に送信したとき、該ホストＰＣ１１が異常パケットであるＳＴＡＬＬパケットを受信したものと誤認識すると、該ホストＰＣ１１はクリアフィーチャーコマンドを発行する。コントローラ１９のＣＦ検出部１９ａがそのクリアフィーチャーコマンドを検出することで、ホストＰＣ１１におけるＳＴＡＬＬパケットの誤認識を検出し、ＳＴ送信部１９ｂがＳＴＡＬＬパケットを送信する。【選択図】        図１
2004178074.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢインターフェースを介してホスト装置とデータ通信を行う通信デバイスであって、
第１のパケットを前記ホスト装置に送信したときに該ホスト装置が前記第１のパケットとは異なる第２のパケットを受信したと誤認識することを検出する検出手段と、
前記第２のパケットの誤認識時に第２のパケットを送信する送信手段と
を備えたことを特徴とする通信デバイス。
【請求項２】
通信方式がバルクオンリー通信方式であり、
前記ホスト装置との間で送受信されるパケットとして、ＡＣＫパケット、ＮＡＣパケット、及び前記第２のパケットのハンドシェークパケットを含むものであり、
前記検出手段は、前記ＡＣＫパケット又はＮＡＣパケットを送信したにもかかわらず前記ホスト装置が前記第２のパケットを受信したと認識したときに該ホスト装置から出力される所定のコマンドに基づいて、前記ホスト装置の誤認識を検出することを特徴とする請求項１に記載の通信デバイス。
【請求項３】
前記所定のコマンドの受信回数を計数する第１計数手段と、
前記第２のパケットの送信回数を計数する第２計数手段と、
前記受信回数と送信回数とに基づいて、通信システムの異常を計測する異常計測手段と
を備えたことを特徴とする請求項２に記載の通信デバイス。
【請求項４】
前記第２のパケットがＳＴＡＬＬパケットであることを特徴とする請求項１〜３のいずれかに記載の通信デバイス。
【請求項５】
ＵＳＢインターフェースを介して通信デバイスとデータ通信を行うホスト装置であって、
前記通信デバイスから出力された第１のパケットを該パケットとは異なる第２のパケットと誤認識したことによるプロトコルフェーズのずれを回避するために、該プロトコルフェーズのずれの有無を確認するための補助プロトコルを実行するようにしたことを特徴とするホスト装置。
【請求項６】
前記補助プロトコルとして、前記通信デバイスから受け取ったパケットを２度連続して前記第２のパケットであると認識したときに所定のコマンドを送信するようにしたことを特徴とする請求項５に記載のホスト装置。
【請求項７】
ホスト装置と通信デバイスとがＵＳＢインターフェースを介してデータ通信を行う通信方法であって、
前記通信デバイスから前記ホスト装置に送信された第１のパケットに対し、そのホスト装置が前記第１のパケットとは異なる第２のパケットを受信したと誤認識したときに該ホスト装置から出力される所定のコマンドを検出し、
前記第２のパケットの誤認識時に前記通信デバイスが第２のパケットを送信することを特徴とする通信方法。
【請求項８】
前記通信デバイスが所定のコマンドを受信する受信回数を計数し、前記通信デバイスが第２のパケットを送信する送信回数を計数し、前記受信回数と送信回数とに基づいて、通信システムの異常を計測することを特徴とする請求項７に記載の通信方法。
【請求項９】
ホスト装置と通信デバイスとがＵＳＢインターフェースを介してデータ通信を行う通信方法であって、
前記ホスト装置が、前記通信デバイスから受け取ったパケットを２度連続して第１のパケットとは異なる第２のパケットであると認識したときに所定のコマンドを前記通信デバイスに送信するようにしたことを特徴とする通信方法。
【請求項１０】
前記第２のパケットがＳＴＡＬＬパケットであることを特徴とする請求項７〜９のいずれかに記載の通信方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＵＳＢインターフェースによりデータ通信を行う通信デバイス、ホスト装置、通信方法に関するものである。
【０００２】
近年、ホスト機能を有するコンピュータ（ホスト装置）とそれに接続した周辺機器（デバイス）との間で通信を行うためのシリアルインターフェースの一種として、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェースが普及している。そのＵＳＢインターフェースによりデータ通信を行う通信システムにおいて、ホスト装置がデバイスのエラーを誤認識することがあり、その誤認識に基づくプロトコルフェーズのずれを回避する技術が要求されている。
【０００３】
【従来の技術】
通常、ＵＳＢインターフェースを用いたデータ通信はトランザクションとよばれる単位で行われる。トランザクションは複数のパケットで構成され、それらパケットとしては、ＳＯＦパケット、トークンパケット、データパケット、ハンドシェークパケットが使用される。
【０００４】
図８は、各パケットのフォーマットを示す説明図である。
ＳＯＦパケットＰ１は、ホスト装置が１ｍｓ毎に発行するフレームの始まりを示すパケットであり、トークンパケットＰ２は、ホスト装置がトランザクションの開始時に発行するパケットである。また、データパケットＰ３は、データ転送時に使用するパケットであり、ハンドシェークパケットＰ４は、トランザクションの結果を報告するために使用するパケットである。
【０００５】
ＳＯＦパケットＰ１は、同期（Ｓｙｎｃｈｒｏｎｉｚｅ：ＳＹＮＣ）フィールド、パケットＩＤ（ＰＩＤ）フィールド、フレーム番号（Ｆｒａｍｅ  Ｎｕｍｂｅｒ）フィールド、エラー判定（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ：ＣＲＣ）フィールド、終了（ＥＮＤ  ｏｆ  Ｐａｃｋｅｔ：ＥＯＰ）フィールドを持つ。
【０００６】
トークンパケットＰ２は、ＳＹＮＣフィールド、ＰＩＤフィールド、アドレス（ＡＤＤＲ）フィールド、エンドポイント番号（ＥＮＤＰ）フィールド、ＣＲＣフィールド、ＥＯＰフィールドを持つ。
【０００７】
データパケットＰ３は、ＳＹＮＣフィールド、ＰＩＤフィールド、データ（ＤＡＴＡ）フィールド、ＣＲＣフィールド、ＥＯＰフィールドを持つ。
ハンドシェークパケットＰ４は、ＳＹＮＣフィールド、ＰＩＤフィールド、ＥＯＰフィールドを持つ。
【０００８】
全てのパケットＰ１〜Ｐ４は８ビット長のＳＹＮＣフィールドで始まり、そのＳＹＮＣフィールドの直後には、８ビット長のＰＩＤフィールドが設けられている。ＳＹＮＣフィールドは、通信信号の同期をとるために用いられ、ＰＩＤフィールドは、パケットの種類を判別するために用いられる。また、全てのパケットＰ１〜Ｐ４は、２ビット長のＥＯＰフィールドで終了する。
【０００９】
ＳＯＦパケットＰ１における１１ビット長のフレーム番号フィールドは、トランザクションのフレーム番号を示すために用いられ、５ビット長のＣＲＣフィールドは、フレーム番号フィールドのデータに対するエラーチェックに用いられる。
【００１０】
トークンパケットＰ２における７ビット長のＡＤＤＲフィールドは、受信先のデバイスを指定するために用いられ、４ビット長のＥＮＤＰフィールドは、デバイスのエンドポイントを判別するために用いられる。エンドポイントとは、データ転送のために使用されるＦＩＦＯバッファである。また、トークンパケットＰ２における５ビット長のＣＲＣフィールドは、ＡＤＤＲフィールド及びＥＮＤＰフィールドのデータに対するエラーチェックに用いられる。
【００１１】
データパケットＰ３におけるＤＡＴＡフィールドは、データ転送のために用いられ、１６ビット長のＣＲＣ１６フィールドは、ＤＡＴＡフィールドのエラーチェックに用いられる。
【００１２】
ハンドシェークパケットは、ＳＹＮＣフィールド、ＰＩＤフィールド、ＥＯＰフィールドのみで構成される。ハンドシェークパケットの種類としては、データ受信の成功を通知するためのＡＣＫパケット、データの再送信等を要求するためのＮＡＫパケット、データの送受信ができない旨を通知するためのＳＴＡＬＬパケットがある。
【００１３】
図９には、ＵＳＢのバルクオンリー通信プロトコルに準じた（ＵＳＢ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｂｕｌｋ  Ｏｎｌｙ  Ｔｒａｎｓｐｏｒｔ  １．０  に準じた）通信システムにおいて、デバイス側でエラーが生じた場合の動作を示している。
【００１４】
図９に示すように、デバイスでエラーが発生したとき、そのデバイスがホスト装置にＳＴＡＬＬパケットを送信する（ステップ１）。ホスト装置は、そのＳＴＡＬＬパケットを受信すると、デバイスがデータ転送フェーズを停止したことを認識する。これにより、ホスト装置からのデータ転送が停止される仕組みになっている。
【００１５】
その後、ホスト装置は、デバイスにクリアフィーチャー（Ｃｌｅａｒ  Ｆｅａｔｕｒｅ）コマンドを送信する（ステップ２）。デバイスは、クリアフィーチャーコマンドに応答してエンドポイントをクリアした後、ステータス情報（ＣＳＷ）を送信する（ステップ３）。そして、ホスト装置はデバイスからのステータス情報を読み取り、そのステータス情報に対するトランザクションを実行することでデータ転送を再開する。
【００１６】
因みに、通信システムにおける故障回復または故障発生を検出できるようにした装置が特許文献１に開示されている。また、データを送信し、それに対する応答信号に基づいて送信確認を行う方法が特許文献２に開示されている。
【００１７】
【特許文献１】
特開平７−２６４１８５号公報
【特許文献２】
特開昭５４−８９５１０号公報
【００１８】
【発明が解決しようとする課題】
ところで、図９に示すエラー処理のプロトコルにおいて、デバイスがＳＴＡＬＬパケットを送信していないにもかかわらず、ホスト装置がデバイスの異常を誤認識する状況に陥ることがある。
【００１９】
例えば、外部ノイズの影響や、クロック生成用のＰＬＬ回路におけるジッターの影響等によりパケットの信号が誤って伝達されることがある。通常、このようなエラーが発生した場合には、パケットにおけるＣＲＣフィールドの情報を照合することにより、パケットが無効であると判断される。しかし、ＡＣＫパケット、ＮＡＣパケット、ＳＴＡＬＬパケット等のハンドシェークパケットＰ４は、他のパケットＰ１〜Ｐ３とは異なりＣＲＣフィールドを持たず（図８参照）、ＰＩＤフィールドの情報のみで整合性が検査される。具体的には、ＰＩＤフィールドにおいて、４ビットでパケットの種類が示され、残りの４ビットによりエラーがチェックされる。ＰＩＤフィールドでは、パケットの種類を示す４ビットのデータに対し、残りの４ビットは、論理レベルが反転されたデータになっている。従って、ＰＩＤフィールドにおける２ビットのずれが生じると、パケットを誤認識する可能性がある。
【００２０】
特に、車載デバイス、携帯情報端末、宇宙で使用される通信機器等の外部ノイズの影響を受けやすいデバイスや、クロックのジッターが大きいデバイスにおいては、複数のビット誤りが同時に発生しやすいことが確認されている。
【００２１】
ハンドシェークパケットＰ４の誤認識のなかで顕著な例としては、ＡＣＫパケットまたはＮＡＣパケットをＳＴＡＬＬパケットであると誤認識する場合がある。ＡＣＫパケット及びＮＡＫパケットは、パケット転送によるデータ受領の確認のために発行され、ＳＴＡＬＬパケットは、データ転送を中止するために発行される。従って、ホスト装置がＡＣＫパケットまたはＮＡＫパケットをＳＴＡＬＬパケットであると誤認識した場合には、ホスト装置のみがデータ転送を中止し、一方、デバイスは正常なデータ転送のプロトコルを継続しようとする、いわゆる、プロトコルフェーズのずれが生じてしまう。
【００２２】
図１０には、デバイスからのＡＣＫパケットまたはＮＡＫパケットをホスト装置がＳＴＡＬＬパケットであると誤認識した場合の動作を示している。
先ず、正常に動作しているデバイスがＡＣＫパケットまたはＮＡＫパケットを送信する（ステップ１ａ）。そして、ホスト装置がＳＴＡＬＬパケットを受信したと誤認識すると、デバイスにクリアフィーチャー（Ｃｌｅａｒ  Ｆｅａｔｕｒｅ）コマンドを発行し（ステップ２ａ）、その後、ステータス情報（ＣＳＷ）に対するトランザクションを実行しようとする。
【００２３】
しかし、デバイスはそもそもＳＴＡＬＬパケットを送っておらず、エラーが発生したという認識はないため、そのまま通常のプロトコルに従いデータ転送を続ける（ステップ３ａ）。このとき、ホスト装置側とデバイス側とでプロトコルフェーズにずれが生じることになる。すなわち、デバイスは、データを送信するが、ホスト装置は、そのデータをステータス情報（ＣＳＷ）であると解釈することになる。ここで、送り手と受け手の意図するデータが異なるといった問題が起きる。
【００２４】
この場合、ホスト装置は、ステップ３ａによる受信データに関し、ステータス情報であるものとして、それに含まれるシグネーチャ情報を検査するが、シグネーチャ情報が正常値と一致しないのでデバイスが異常であることを知ることになる。そして、その異常を検知したホスト装置は、デバイスをリセットする。つまり、デバイスは正常に動作しデータ転送が可能であるにもかかわらず、ホスト装置の誤認識によってデバイスがリセットされてしまう。このように、正常なデバイスをリセットするとその回復のために秒単位の処理時間が必要になるため、システムの信頼性が損なわれることとなる。
【００２５】
特に、ＵＳＢのバルクオンリー通信プロトコルにおいては、データを転送するためのポートとステータス情報を転送するためのポートとが共通使用されている。そのため、上述したプロトコルフェーズのずれを判別することが困難であり、ハンドシェークパケットの誤認識に伴うシステム信頼性の低下が問題となっている。
【００２６】
本発明は上記問題点を解決するためになされたものであって、その目的は、ハンドシェークパケットの誤認識時に、適切な回避動作を実現することができる通信デバイス、ホスト装置、及び通信方法を提供することにある。
【００２７】
【課題を解決するための手段】
上記目的を達成するため、請求項１又は７に記載の発明によれば、ＵＳＢインターフェースを介してホスト装置とデータ通信が行われる。このデータ通信において、第１のパケットをホスト装置に送信したにもかかわらず、該ホスト装置により、その第１のパケットとは異なる第２のパケットを受信したと誤認識されることがあるが、その第２のパケットの誤認識が検出手段により検出される。その検出時に、送信手段により第２のパケットが送信されることにより、ホスト装置と通信デバイスとにおけるプロトコルフェーズがずれることが回避される。
【００２８】
請求項２に記載の発明によれば、ホスト装置との間で行われる通信方式としてバルクオンリー通信方式が用いられる。また、ホスト装置との間で送受信されるパケットとして、ＡＣＫパケット、ＮＡＣパケット、及び第２のパケットのハンドシェークパケットを含む。ここで、ＡＣＫパケット又はＮＡＣパケットを送信したにもかかわらず、ホスト装置が第２のパケットを受信したと認識したときには、該ホスト装置から所定のコマンドが出力されるため、そのコマンドに基づいて、ホスト装置の誤認識が検出される。
【００２９】
請求項３又は８に記載の発明によれば、所定のコマンドの受信回数が計数されるとともに、第２のパケットの送信回数が計数される。そして、受信回数と送信回数とに基づいて通信システムの異常が計測される。ＵＳＢの通信プロトコルにおいては、デバイスからホスト装置に第２のパケットが送られた後、ホスト装置から所定のコマンドが送信される。そして、異常計測手段によって、所定のコマンドの受信回数と第２のパケットの送信回数との差が演算されることで、通信システムの異常が発生する回数を計測することが可能となる。
【００３０】
請求項４，１０に記載の発明によれば、第２のパケットは、データ転送を中止した旨を通知するためのＳＴＡＬＬパケットである。
請求項５に記載の発明によれば、ＵＳＢインターフェースを介して通信デバイスとデータ通信が行われる。このデータ通信において、通信デバイスから出力された第１のパケットをそれとは異なる第２のパケットを受信したと誤認識することがあるが、その誤認識によるプロトコルフェーズのずれを回避するために、該プロトコルフェーズのずれの有無を確認するための補助プロトコルが実行される。
【００３１】
具体的には、補助プロトコルとして、請求項６又は９に記載の発明のように、ホスト装置が受け取ったパケットを２度連続して第１のパケットとは異なる第２のパケットであると認識したときに該ホスト装置から所定のコマンドが送信される。
【００３２】
【発明の実施の形態】
（第１実施形態）
以下、本発明を通信装置に具体化した第１実施形態を図面に従って説明する。
【００３３】
図１は、ＵＳＢインターフェース規格に準拠したデータ転送を行う通信システムのブロック図である。同図に示されるように、ＵＳＢによる通信を管理するホストＰＣ（ホスト装置）１１は、デバイス１２とＵＳＢバス１３を介して相互に接続されている。デバイス１２は、例えば、ＵＳＢ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｂｕｌｋ  ＯｎｌｙＴｒａｎｓｐｏｒｔ  １．０  に準拠したハードディスク装置である。なお、図１には、デバイス１２におけるデータ転送のための回路のみを示している。
【００３４】
デバイス１２は、物理層回路（ＰＨＹ）１４、リンク層回路（ＬＩＮＫ）１５、第１〜第３のエンドポイント１６，１７，１８、及びコントローラ１９を備えている。
【００３５】
デバイス１２における物理層回路１４は、ＵＳＢバス１３を介してホストＰＣ１１に接続されている。また、物理層回路１４は、リンク層回路１５に接続され、該リンク層回路１５は、各エンドポイント１６〜１８に接続されている。さらに、各エンドポイント１６〜１８にはコントローラ１９が接続されている。
【００３６】
物理層回路１４は、ＵＳＢバス１３を介して入力される電気的信号をリンク層回路１５が扱う論理的な信号に変換して該信号をリンク層回路１５に出力する。また、物理層回路１４は、リンク層回路１５から入力された論理的信号を電気的信号に変換してＵＳＢバス１３に出力する。
【００３７】
リンク層回路１５は、受信したパケットの種類を判別して第１のエンドポイント１６又は第３のエンドポイント１８に出力する。また、リンク層回路１５は、第１のエンドポイント１６又は第２のエンドポイント１７から送信パケットを取り込み、そのパケットに応じた論理信号を物理層回路１４に出力する。
【００３８】
第１のエンドポイント（Ｃｏｎｔｒｏｌ  Ｅｎｄ  Ｐｏｉｎｔ）１６は、送受信型の転送機能を持つＦＩＦＯバッファであって、主にデバイス１２の初期化を行うために用いられる。第２のエンドポイント（Ｂｕｌｋ−ＩＮ  Ｅｎｄ  Ｐｏｉｎｔ）１７、第３のエンドポイント（Ｂｕｌｋ−Ｏｕｔ  Ｅｎｄ  Ｐｏｉｎｔ）１８は、それぞれ送信型の転送機能、受信型の転送機能を持つＦＩＦＯバッファである。これらのエンドポイント１７，１８は図示しないデータ記録部へのデータの読み書き及びコマンドの転送に用いられる。
【００３９】
即ち、デバイス１２において、初期化動作のためのコマンド（クリアフィーチャーコマンドを含む）の送受信には第１のエンドポイント１６が使用される。また、データ送信には第２のエンドポイント１７が使用され、データ受信には第３のエンドポイント１８が使用される。
【００４０】
コントローラ１９は、データ転送を制御する回路であって、ＣＦ検出部１９ａとＳＴ送信部１９ｂとを備える。ＣＦ検出部１９ａは、ホストＰＣ１１が発行したクリアフィーチャーコマンドを検出するための回路であり、ＳＴ送信部１９ｂは、ＳＴＡＬＬパケットを送信するための回路である。
【００４１】
本実施形態のデバイス１２において、ホストＰＣ１１から受信したクリアフィーチャーコマンドは、第１のエンドポイント１６を経由してコントローラ１９のＣＦ検出部１９ａに伝達される。また、ＳＴＡＬＬパケットは、コントローラ１９のＳＴ送信部１９ｂから第２のエンドポイント１７を経由して送信される。
【００４２】
図２に示すように、ＣＦ検出部１９ａは、ＣＦ−ＰａｋｅｔＤａｔａ列検出回路２０ａと、ＵＳＢコントロールレジスタ２０ｂとを備える。ＣＦ−ＰａｋｅｔＤａｔａ列検出回路２０ａは、第１のエンドポイント（Ｃｏｎｔｒｏｌ  Ｅｎｄ  Ｐｏｉｎｔ）１６のデータパケットを監視し、Ｃｌｅａｒ  ＦｅａｔｕｒｅのＤａｔａ列を検出すると、ＵＳＢコントロールレジスタ２０ｂにＣｌｅａｒ  Ｆｅａｔｕｒｅ検出ビットＢｃｆを設定する。
【００４３】
次に、本実施形態における通信システムの動作を説明する。
図３に示すように、正常に動作しているデバイス１２がＡＣＫパケットまたはＮＡＫパケットを送信する（ステップ２１）。このとき、外部ノイズによりパケットが誤って伝送され、ホストＰＣ１１がＳＴＡＬＬパケットを受信したと誤認識すると、そのホストＰＣ１１は、デバイス１２にクリアフィーチャー（Ｃｌｅａｒ  Ｆｅａｔｕｒｅ）コマンドを含むパケットを送信する（ステップ２２）。
【００４４】
デバイス１２は、そのクリアフィーチャーのパケットを受信する。このとき、デバイス１２は、自身が正常に動作しており、ＳＴＡＬＬパケットを送信していないにもかかわらず、クリアフィーチャーコマンドをＣＦ検出部１９ａで検出することになる。従って、デバイス１２は、ホストＰＣ１１に向けて、確認のためのＳＴＡＬＬパケットを送信する（ステップ２３）。このＳＴＡＬＬパケットを送信することにより、ホストＰＣ１１が、ＳＴＡＬＬパケットの誤認識をしているか否かにかかわらず、ホストＰＣ１１側とデバイス１２側とにおけるプロトコルフェーズが一致する。
【００４５】
その後、ホストＰＣ１１は再度クリアフィーチャーのパケットを送信する（ステップ２４）。このとき、デバイス１２は、ステップ２３で送信したＳＴＡＬＬパケットに対するクリアフィーチャーコマンドを受信した旨を判断し、そのクリアフィーチャーコマンドに応答してステータス情報（ＣＳＷ）を送信する。なお、このステータス情報は、第２のエンドポイント１７を経由してバルクインのデータパケットとして送信される。これにより、ホストＰＣ１１とデバイス１２との間で、ステータス情報の授受が行われる。そして、そのステータス情報に対するトランザクションが実行されることでデータ転送が再開される。
【００４６】
また、デバイス１２がホストＰＣ１１から受信した信号をクリアフィーチャーコマンドであると誤認識した場合、デバイス１２がホストＰＣ１１にＳＴＡＬＬパケットを送ることにより、双方のプロトコルフェーズがずれることが防止される。
【００４７】
以上記述したように、上記実施形態によれば、下記の効果を奏する。
（１）ホストＰＣ１１がＳＴＡＬＬパケットを誤認識した場合、その誤認識がＣＦ検出部１９ａにて検出される。具体的には、デバイス１２がＡＣＫパケット又はＮＡＣパケットを送信したにもかかわらず、ホストＰＣ１１がＳＴＡＬＬパケットを受信したと認識したときには該ホストＰＣ１１からクリアフィーチャーコマンドが出力されるため、そのクリアフィーチャーコマンドによりホストＰＣ１１の誤認識が検出される。そして、その誤認識時には、ＳＴ送信部１９ｂによってプロトコルフェーズのずれを調整するようＳＴＡＬＬパケットが送信される。これにより、ステータス情報の受け渡しを正しく実行することができるため、デバイス１２をリセットすることなくデータ転送を再開できる。
【００４８】
（２）デバイス１２のリセットに伴うシステムダウンの問題が回避されるので、通信システムの信頼性を向上することができる。
（第２実施形態）
以下、本発明を具体化した第２実施形態を説明する。
【００４９】
上記第１実施形態の通信システムでは、デバイス１２側の制御により、プロトコルフェーズのずれを回避するものであったが、本実施形態の通信システムではホストＰＣ側での制御により、プロトコルフェーズのずれを回避するよう構成している。
【００５０】
図４に示すように、ホストＰＣ３１がデバイス３２とＵＳＢバス３３を介して相互に接続されている。デバイス３２は、ＵＳＢ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ｃｌａｓｓ  Ｂｕｌｋ  Ｏｎｌｙ  Ｍｏｄｅ  １．０  に準拠したハードディスク装置である。なお、図４には、ホストＰＣ３１におけるデータ転送のための回路のみを示している。
【００５１】
ホストＰＣ３１は、物理層回路（ＰＨＹ）３４、リンク層回路（ＬＩＮＫ）３５、メモリ３６、及びコントローラ３７を備えている。物理層回路３４は、ＵＳＢバス３３を介してデバイス３２に接続されている。また、物理層回路３４は、リンク層回路３５に接続され、該リンク層回路３５には、コントローラ３７が接続されている。さらに、リンク層回路３５には、ＰＣＩバス３８を介してメモリ３６が接続され、該メモリ３６にはコントローラ３７が接続されている。
【００５２】
物理層回路３４は、ＵＳＢバス３３を介して入力される電気的信号をリンク層回路３５が扱う論理的な信号に変換して該信号をリンク層回路３５に出力する。また、物理層回路３４は、リンク層回路３５から入力された論理的信号を電気的信号に変換してＵＳＢバス３３に出力する。
【００５３】
リンク層回路３５は、受信パケットをＰＣＩバス３８を介してメモリ３６に格納したり、メモリ３６からＰＣＩバス３８を介して取り込んだ送信パケットに対応する論理信号を物理層回路３４に出力したりする。
【００５４】
コントローラ３７は、リンク層回路３５とメモリ３６との間のデータの授受を管理してデータ転送を制御する。
次に、本実施形態における通信システムの動作を説明する。
【００５５】
図５に示すように、デバイス３２でエラーが発生し、ホストＰＣ３１からのデータ転送要求に対する応答ができないときには、デバイス３２がＳＴＡＬＬパケットを送信する（ステップ４１）。ホストＰＣ３１は、そのＳＴＡＬＬパケットを受信する。本実施形態において、ホストＰＣ３１は、ＳＴＡＬＬパケットを受信したとき、直ちにクリアフィーチャーコマンドを送信するのではなく、データ転送要求を再度実行する（ステップ４２）。
【００５６】
その後、デバイス３２が２度目のＳＴＡＬＬパケットを送信し（ステップ４３）、ホストＰＣ３１は、そのＳＴＡＬＬパケットを受信することにより、デバイス３２におけるデータ転送フェーズが停止されていると判断する。そして、ホストＰＣ３１は、デバイス３２にクリアフィーチャー（Ｃｌｅａｒ  Ｆｅａｔｕｒｅ）コマンドを送信する（ステップ４４）。デバイス３２は、クリアフィーチャーコマンドに応答してエンドポイントをクリアした後、バルクインのエンドポイントからステータス情報（ＣＳＷ）を送信する（ステップ４５）。これにより、ホストＰＣ３１とデバイス３２との間でステータス情報の授受が行われる。その後、そのステータス情報に対するトランザクションが実行されることでデータ転送が再開される。
【００５７】
次に、デバイス３２が送信したＡＣＫパケットまたはＮＡＫパケットをホストＰＣ３１がＳＴＡＬＬパケットであると誤認識した場合の動作を説明する。
図６に示すように、正常に動作しているデバイス３２がＡＣＫパケットまたはＮＡＫパケットを送信する（ステップ５１）。そのパケットが外部ノイズの影響により誤って伝送され、ホストＰＣ３１がＳＴＡＬＬパケットを受信したと誤認識する。このとき、ホストＰＣ３１は、直ちにクリアフィーチャーコマンドを送信するのではなく、データ転送要求を再度実行する（ステップ５２）。
【００５８】
その後、デバイス３２は、データ転送要求に応答して、ＡＣＫパケットまたはＮＡＫパケットを送信する（ステップ５３）。そして、ホストＰＣ３１は正常パケット（ＡＣＫパケットまたはＮＡＫパケット）を受信することにより、デバイス３２が正常に動作している旨を判断してデータ転送要求を実行する（ステップ５４）。以降の処理では、ホストＰＣ３１とデバイス３２との間で通常のデータ転送が行われる（ステップ５５、ステップ５６）。
【００５９】
以上記述したように、上記実施形態によれば、下記の効果を奏する。
（１）デバイス３２からホストＰＣ３１が受け取ったパケットを２度連続してＳＴＡＬＬパケットであると認識したときにホストＰＣ３１からクリアフィーチャーコマンドが送信される。このようにすると、ホストＰＣ３１がＳＴＡＬＬパケットの誤認識をしたときにも、データ転送のトランザクションレベルで復帰が可能である。従って、ホストＰＣ３１の誤認識によるプロトコルフェーズのずれが回避され、デバイス３２をリセットする必要がない。
【００６０】
（２）デバイス３２のリセットに伴うシステムダウンの問題が回避され、通信システムの信頼性を向上することができる。
（３）本実施形態では、データ転送のトランザクションレベルで復帰が可能であることから、第１実施形態と比較して、ＳＴＡＬＬパケットの誤認識時における回避処理のためのオーバヘッドを少なくすることができる。
【００６１】
（第３実施形態）
以下、本発明を具体化した第３実施形態を説明する。但し、以下には第１実施形態との相違点を中心に説明する。
【００６２】
図７に示すように、本実施形態のデバイス１２におけるコントローラ１９は、ＣＦ検出部１９ａ、ＳＴ送信部１９ｂに加え、ＣＦ計数部１９ｃ、ＳＴ計数部１９ｄ、異常計測部１９ｆを備えている。
【００６３】
ＣＦ計数部１９ｃは、ＣＦ検出部１９ａが検出したクリアフィーチャーコマンドの受信回数を計数し、その受信回数を異常計測部１９ｆに出力する。ＳＴ計数部１９ｄは、ＳＴ送信部１９ｂが送信したＳＴＡＬＬパケットの送信回数を計数し、その送信回数を異常計測部１９ｆに出力する。異常計測部１９ｆは、クリアフィーチャーコマンドの受信回数と、ＳＴＡＬＬパケットの送信回数とに基づいて、フェーズ異常の回数を計測する。
【００６４】
つまり、ＵＳＢの通信プロトコルにおいては、デバイス１２からホストＰＣ１１にＳＴＡＬＬパケットが送られた後、ホストＰＣ１１からデバイス１２にクリアフィーチャーコマンドが発行される。そのため、フェーズ異常が発生しなければ、ＳＴＡＬＬパケットの送信回数とクリアフィーチャーコマンドの受信回数は等しくなる。従って、ＳＴＡＬＬパケットの送信回数とクリアフィーチャーコマンドの受信回数との差を演算することにより、フェーズ異常の発生事象の回数を求めることができる。なお、フェーズ異常の発生事象の回数とは、ホストＰＣ１１がＳＴＡＬＬパケットを誤認識した事象、またはそれに準じる予期しないプロトコルの食い違いが発生した事象の回数である。
【００６５】
異常計測部１９ｆが演算したフェーズ異常の回数は、自己診断のためのデータとして用いられる。具体的には、デバイス１２に表示部（ディスプレイ）が設けられている場合、フェーズ異常が頻繁に発生するときにそのフェーズ異常の回数に応じた警告を表示部に表示させる。また例えば、ホストＰＣ１１からのデータ転送要求に応答して、フェーズ異常の回数をホストＰＣ１１に送信することにより、同ホストＰＣ１１の表示部にフェーズ異常の警告を表示させるようにしてもよい。
【００６６】
以上記述したように、上記実施形態によれば、下記の効果を奏する。
（１）ＣＦ計数部１９ｃにてクリアフィーチャーコマンドの受信回数が計数され、ＳＴ計数部１９ｄにてＳＴＡＬＬパケットの送信回数が計数され、それら受信回数と送信回数とに基づいて通信システムにおけるフェーズ異常の回数を計測することができる。
【００６７】
（２）異常計測部１９ｆで計測したフェーズ異常の回数を用いることで通信システムの信頼性の評価を行うことができる。
上記各実施形態は、次に示すように変更することもできる。
【００６８】
・各実施形態では、ハードディスク装置に適用したが、ＭＯや、ＤＶＤ，ＣＤなどのＡＴＡ／ＡＴＡＰＩデバイス、或いはプリンタ，スキャナなどのパソコン周辺装置等、他のデバイスに適用してもよい。
【００６９】
・コントローラ１９において、ＣＦ検出部１９ａ、ＳＴ送信部１９ｂ、ＣＦ計数部１９ｃ、ＳＴ計数部１９ｄ、及び異常計測部１９ｆは、所定の回路を形成することで実現されるが、これに限定されるものではなく、コントローラ１９が実行するプログラムにより、各部１９ａ〜１９ｆの機能を実現してもよい。
【００７０】
以上の様々な実施の形態をまとめると、以下のようになる。
（付記１）ＵＳＢインターフェースを介してホスト装置とデータ通信を行う通信デバイスであって、
第１のパケットを前記ホスト装置に送信したときに該ホスト装置が前記第１のパケットとは異なる第２のパケットを受信したと誤認識することを検出する検出手段と、
前記第２のパケットの誤認識時に第２のパケットを送信する送信手段と
を備えたことを特徴とする通信デバイス。
（付記２）通信方式がバルクオンリー通信方式であり、
前記ホスト装置との間で送受信されるパケットとして、ＡＣＫパケット、ＮＡＣパケット、及び前記第２のパケットのハンドシェークパケットを含むものであり、
前記検出手段は、前記ＡＣＫパケット又はＮＡＣパケットを送信したにもかかわらず前記ホスト装置が前記第２のパケットを受信したと認識したときに該ホスト装置から出力される所定のコマンドに基づいて、前記ホスト装置の誤認識を検出することを特徴とする付記１に記載の通信デバイス。
（付記３）前記所定のコマンドの受信回数を計数する第１計数手段と、
前記第２のパケットの送信回数を計数する第２計数手段と、
前記受信回数と送信回数とに基づいて、通信システムの異常を計測する異常計測手段と
を備えたことを特徴とする付記２に記載の通信デバイス。
（付記４）前記第２のパケットがＳＴＡＬＬパケットであることを特徴とする付記１〜３のいずれかに記載の通信デバイス。
（付記５）前記送信手段は、前記第２のパケットの誤認識時にプロトコルフェーズのずれを調整するよう第２のパケットを送信することを特徴とする付記１に記載の通信デバイス。
（付記６）前記所定のコマンドはクリアフィーチャーコマンドであることを特徴とする付記２又は３に記載の通信デバイス。
（付記７）ＵＳＢインターフェースを介して通信デバイスとデータ通信を行うホスト装置であって、
前記通信デバイスから出力された第１のパケットを該パケットとは異なる第２のパケットと誤認識したことによるプロトコルフェーズのずれを回避するために、該プロトコルフェーズのずれの有無を確認するための補助プロトコルを実行するようにしたことを特徴とするホスト装置。
（付記８）前記補助プロトコルとして、前記通信デバイスから受け取ったパケットを２度連続して前記第２のパケットであると認識したときに所定のコマンドを送信するようにしたことを特徴とする付記７に記載のホスト装置。
（付記９）ホスト装置と通信デバイスとがＵＳＢインターフェースを介してデータ通信を行う通信方法であって、
前記通信デバイスから前記ホスト装置に送信された第１のパケットに対し、そのホスト装置が前記第１のパケットとは異なる第２のパケットを受信したと誤認識したときに該ホスト装置から出力される所定のコマンドを検出し、
前記第２のパケットの誤認識時に前記通信デバイスが第２のパケットを送信することを特徴とする通信方法。
（付記１０）前記通信デバイスが所定のコマンドを受信する受信回数を計数し、前記通信デバイスが第２のパケットを送信する送信回数を計数し、前記受信回数と送信回数とに基づいて、通信システムの異常を計測することを特徴とする付記９に記載の通信方法。
（付記１１）ホスト装置と通信デバイスとがＵＳＢインターフェースを介してデータ通信を行う通信方法であって、
前記ホスト装置が、前記通信デバイスから受け取ったパケットを２度連続して第１のパケットとは異なる第２のパケットであると認識したときに所定のコマンドを前記通信デバイスに送信するようにしたことを特徴とする通信方法。
（付記１２）前記第２のパケットがＳＴＡＬＬパケットであることを特徴とする付記９〜１１のいずれかに記載の通信方法。
（付記１３）前記第２のパケットの誤認識時にプロトコルフェーズのずれを調整するよう前記通信デバイスが第２のパケットをホスト装置に送信することを特徴とする付記９に記載の通信方法。
（付記１４）前記所定のコマンドはクリアフィーチャーコマンドであることを特徴とする付記９〜１１のいずれかに記載の通信方法。
【００７１】
【発明の効果】
以上詳述したように、本発明によれば、ホスト装置と通信デバイスとがＵＳＢインターフェースを介してデータ通信を行う通信システムにおいて、ハンドシェークパケットであるＳＴＡＬＬパケットの誤認識時に、適切な回避動作を実現することができる。
【図面の簡単な説明】
【図１】第１実施形態を示すブロック図である。
【図２】ＣＦ検出部を示すブロック図である。
【図３】誤認識時の動作を示す説明図である。
【図４】第２実施形態を示すブロック図である。
【図５】デバイスのエラー時の動作を示す説明図である。
【図６】誤認識時の動作を示す説明図である。
【図７】第３実施形態を示すブロック図である。
【図８】パケットのフォーマットを示す説明図である。
【図９】デバイスのエラー時の動作を示す説明図である。
【図１０】誤認識時の動作を示す説明図である。
【符号の説明】
１１，３１  ホスト装置としてのホストＰＣ
１２，３２  通信デバイスとしてのデバイス
１９ａ  検出手段としてのＣＦ検出部
１９ｂ  送信手段としてのＳＴ送信部
１９ｃ  第１計数手段としてのＣＦ計数部
１９ｄ  第２計数手段としてのＳＴ計数部
１９ｆ  異常計測手段としての異常計測部
【図１】
2004178074.tif 000003
【図２】
2004178074.tif 000004
【図３】
2004178074.tif 000005
【図４】
2004178074.tif 000006
【図５】
2004178074.tif 000007
【図６】
2004178074.tif 000008
【図７】
2004178074.tif 000009
【図８】
2004178074.tif 000010
【図９】
2004178074.tif 000011
【図１０】
2004178074.tif 000012