(57)【特許請求の範囲】
【請求項１】
バスを介したデータ転送のためのデータ転送制御装置であって、
１つのエンドポイントを介して転送される情報として第１、第２の情報を含む複数種類の情報が割り当てられている場合に、第１の情報用の第１の記憶領域と第２の情報用の第２の記憶領域とが１つのエンドポイントに対応して用意されるバッファと、
バスを介して第１の情報が転送される第１のフェーズでは、ホストからエンドポイントに向けて転送される情報を、第１の情報用の前記第１の記憶領域に書き込み、バスを介して第２の情報が転送される第２のフェーズでは、ホストからエンドポイントに向けて転送される情報を、第２の情報用の前記第２の記憶領域に書き込むバッファ管理回路とを含み、
第１の情報用に用意された前記第１の記憶領域が、情報のランダムアクセスが可能な領域に設定され、
第２の情報用に用意された前記第２の記憶領域が、先に入力された情報が先に出力される領域に設定されていることを特徴とするデータ転送制御装置。
【請求項２】
請求項１において、
第１の情報が記憶される前記第１の記憶領域の先頭アドレス以外の領域に、第２の情報の転送を指示するコマンドブロック及びコマンドブロックにより転送が指示される第２の情報の長さ情報の少なくとも一方が書き込まれることを特徴とするデータ転送制御装置。
【請求項３】
バスを介したデータ転送のためのデータ転送制御装置であって、
１つのエンドポイントを介して転送される情報として第１、第２の情報を含む複数種類の情報が割り当てられている場合に、第１の情報用の第１の記憶領域と第２の情報用の第２の記憶領域とが１つのエンドポイントに対応して用意されるバッファと、
バスを介して第１の情報が転送される第１のフェーズでは、ホストからエンドポイントに向けて転送される情報を、第１の情報用の前記第１の記憶領域に書き込み、バスを介して第２の情報が転送される第２のフェーズでは、ホストからエンドポイントに向けて転送される情報を、第２の情報用の前記第２の記憶領域に書き込むバッファ管理回路とを含み、
前記第１のフェーズのデータ転送についてのアクノリッジがホストに返されたことを条件に、ホストからエンドポイントに向けて転送される情報の書き込み領域が、前記第１の記憶領域から前記第２の記憶領域に切り替えられ、
ホストとの間でトランザクションのシーケンスを同期化するためのデータトグルビットにエラーが生じた場合には、アクノリッジがホストに返された場合でも、前記第１の記憶領域から前記第２の記憶領域への切り替えを行わないことを特徴とするデータ転送制御装置。
【請求項４】
請求項３において
第１の情報用に用意された前記第１の記憶領域が、情報のランダムアクセスが可能な領域に設定され、
第２の情報用に用意された前記第２の記憶領域が、先に入力された情報が先に出力される領域に設定されていることを特徴とするデータ転送制御装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記第１の情報が、コマンドブロックのパケットであり、
前記第２の情報が、前記コマンドブロックの指示により転送されるデータのパケットであることを特徴とするデータ転送制御装置。
【請求項６】
バスを介したデータ転送のためのデータ転送制御装置であって、
１つのエンドポイントを介して転送される情報として第１、第２の情報を含む複数種類の情報が割り当てられている場合に、第１の情報用の第１の記憶領域と第２の情報用の第２の記憶領域とが１つのエンドポイントに対応して用意されるバッファと、
バスを介して第１の情報が転送される第１のフェーズでは、ホストからエンドポイントに向けて転送される情報を、第１の情報用の前記第１の記憶領域に書き込み、バスを介して第２の情報が転送される第２のフェーズでは、ホストからエンドポイントに向けて転送される情報を、第２の情報用の前記第２の記憶領域に書き込むバッファ管理回路とを含み、
前記第１の情報が、コマンドブロックのパケットであり、
前記第２の情報が、前記コマンドブロックの指示により転送されるデータのパケットであり、
処理手段が前記コマンドブロックのパケットを解釈している間に、データのパケットが前記第２の記憶領域に書き込まれることを特徴とするデータ転送制御装置。
【請求項７】
請求項６において
第１の情報用に用意された前記第１の記憶領域が、情報のランダムアクセスが可能な領域に設定され、
第２の情報用に用意された前記第２の記憶領域が、先に入力された情報が先に出力される領域に設定されていることを特徴とするデータ転送制御装置。
【請求項８】
請求項１乃至７のいずれかにおいて、
ＵＳＢ（Universal Serial Bus)の規格に準拠したデータ転送を行うことを特徴とするデータ転送制御装置。
【請求項９】
請求項１乃至８のいずれかのデータ転送制御装置と、
前記データ転送制御装置及びバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置と、
を含むことを特徴とする電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御装置及び電子機器に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
近年、パーソナルコンピュータと周辺機器（広義には電子機器）とを接続するためのインターフェース規格として、ＵＳＢ（Universal Serial Bus)が注目を集めている。このＵＳＢには、従来は別々の規格のコネクタで接続されていたマウスやキーボードやプリンタなどの周辺機器を、同じ規格のコネクタで接続できると共にいわゆるプラグ＆プレイやホットプラグも実現できるという利点がある。
【０００３】
一方、このＵＳＢには、同じくシリアルバスインターフェース規格として脚光を浴びているＩＥＥＥ１３９４に比べて、転送速度が遅いという問題点がある。
【０００４】
そこで、従来のＵＳＢ１．１の規格に対する互換性を持ちながら、ＵＳＢ１．１に比べて格段に高速な４８０Ｍｂｐｓ（ＨＳモード）のデータ転送速度を実現できるＵＳＢ２．０規格が策定され、注目を浴びている。
【０００５】
さて、このＵＳＢ２．０では、ＨＳ（High Speed）モード時には４８０Ｍｂｐｓでデータ転送が行われる。従って、高速な転送速度が要求されるハードディスクドライブや光ディスクドライブなどのストレージ機器のインターフェースとして用いることができるという利点がある。
【０００６】
しかしながら、その一方で、ＵＳＢバスに接続されるデータ転送制御装置は、４８０Ｍｂｐｓという高速で転送されてくるデータを処理しなければならない。従って、データ転送制御装置の処理速度や、データ転送制御装置を制御するファームウェア（ＣＰＵ）の処理速度が遅いと、実効的な転送速度を確保できず、バス帯域をロスしてしまうという課題がある。
【０００７】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、実効的なバスの転送速度を向上できるデータ転送制御装置及び電子機器を提供することにある。
【０００８】
【課題を解決するための手段】
上記課題を解決するために本発明は、バスを介したデータ転送のためのデータ転送制御装置であって、１つのエンドポイントを介して転送される情報として第１、第２の情報を含む複数種類の情報が割り当てられている場合に、第１の情報用の第１の記憶領域と第２の情報用の第２の記憶領域とが１つのエンドポイントに対応して用意されるバッファと、バスを介して第１の情報が転送される第１のフェーズでは、ホストからエンドポイントに向けて転送される情報を、第１の情報用の前記第１の記憶領域に書き込み、バスを介して第２の情報が転送される第２のフェーズでは、ホストからエンドポイントに向けて転送される情報を、第２の情報用の前記第２の記憶領域に書き込むバッファ管理回路とを含むことを特徴とする。
【０００９】
本発明によれば、所与のエンドポイントに割り当てられる第１の情報用の第１の記憶領域と、同じエンドポイントに割り当てられる第２の情報用の第２の記憶領域とが、バッファに用意される。そして、第１のフェーズ（第１のトランスポート）では、ホストからエンドポイントに向けて転送される情報が第１の記憶領域に書き込まれ、第２のフェーズ（第２のトランスポート）では、ホストからエンドポイントに向けて転送される情報が第２の記憶領域に書き込まれる。例えば、第１のフェーズから第２のフェーズに切り替わった場合に、エンドポイントに向けられた情報の書き込み領域が、第１の記憶領域から第２の記憶領域に切り替わる。
【００１０】
このようにすることで、１つのエンドポイントに複数種類の情報が割り当てられている場合にも、第１の記憶領域に書き込まれた第１の情報について処理を行いながら、第２の記憶領域に第２の情報を書き込むことが可能になる。従って、データ転送制御装置の処理速度の向上や、第１の情報を処理する手段の負荷を軽減することが可能になり、実効的なバスの転送速度を向上できる。
【００１１】
また本発明は、第１の情報用に用意された前記第１の記憶領域が、情報のランダムアクセスが可能な領域に設定され、第２の情報用に用意された前記第２の記憶領域が、先に入力された情報が先に出力される領域に設定されていることを特徴とする。
【００１２】
このようにすれば、第１の記憶領域に書き込まれた第１の情報を処理する手段の処理速度の向上等を図れる。
【００１３】
また本発明は、第１の情報が記憶される前記第１の記憶領域の先頭アドレス以外の領域に、第２の情報の転送を指示するコマンドブロック及びコマンドブロックにより転送が指示される第２の情報の長さ情報の少なくとも一方が書き込まれることを特徴とする。
【００１４】
このような場合にも本発明によれば、コマンドブロックや長さ情報をランダムアクセスで読み出すことが可能になり、第１の情報を処理する手段の処理速度の向上等を図れる。
【００１５】
また本発明は、前記第１のフェーズのデータ転送についてのアクノリッジがホストに返されたことを条件に、ホストからエンドポイントに向けて転送される情報の書き込み領域が、前記第１の記憶領域から前記第２の記憶領域に切り替えられることを特徴とする。
【００１６】
このようにすれば、誤りの無い確実な領域切り替えを、少ない処理負荷で実現できるようになる。
【００１７】
また本発明は、ホストとの間でトランザクションのシーケンスを同期化するためのデータトグルビットにエラーが生じた場合には、アクノリッジがホストに返された場合でも、前記第１の記憶領域から前記第２の記憶領域への切り替えを行わないことを特徴とする。
【００１８】
このようにすれば、データトグルビットにエラーが生じた場合（トグルミスの場合）にも、適正なデータ転送処理を実現できる。
【００１９】
また本発明は、前記第１の情報が、コマンドブロックのパケットであり、前記第２の情報が、前記コマンドブロックの指示により転送されるデータのパケットであることを特徴とする。
【００２０】
但し、本発明においては、第１、第２の記憶領域に記憶される第１、第２の情報の種類は任意に設定できる。
【００２１】
また本発明は、処理手段が前記コマンドブロックのパケットを解釈している間に、データのパケットが前記第２の記憶領域に書き込まれることを特徴とする。
【００２２】
このようにすれば、コマンドフェーズ（コマンドトランスポート）からデータフェーズ（データトランスポート）への切り替え時などにおいて、第２の記憶領域を介したデータの転送処理の開始タイミングを早めることなどが可能になり、バスの実効的な転送速度を向上できる。
【００２３】
また本発明は、バスを介したデータ転送のためのデータ転送制御装置であって、１つのエンドポイントを介して転送される情報としてコマンドブロックのパケットとデータのパケットとが割り当てられている場合に、コマンドブロック用のコマンド記憶領域とデータ用のデータ記憶領域とが１つのエンドポイントに対応して用意されるバッファと、バスを介してコマンドブロックのパケットが転送されるコマンドフェーズから、バスを介してデータのパケットが転送されるデータフェーズに切り替わった場合に、情報の書き込み領域をコマンドブロック用の前記コマンド記憶領域からデータ用のデータ記憶領域に切り替え、ホストからエンドポイントに向けて転送されるデータのパケットを前記データ記憶領域に書き込むバッファ管理回路とを含むことを特徴とする。
【００２４】
本発明によれば、所与のエンドポイントに割り当てられるコマンドブロックパケット用のコマンド記憶領域と、同じエンドポイントに割り当てられるデータパケット用のデータ記憶領域とが、バッファに用意される。そして、コマンドフェーズ（コマンドトランスポート）からデータフェーズ（データトランスポート）に切り替わった場合に、エンドポイントに向けられた情報の書き込み領域が、コマンド記憶領域からデータ記憶領域に切り替わる。
【００２５】
このようにすることで、１つのエンドポイントにコマンドブロックパケットとデータパケットが割り当てられている場合にも、コマンド記憶領域に書き込まれたコマンドブロックパケットについて処理を行いながら、データ記憶領域にデータパケットを書き込むことが可能になる。従って、データ転送制御装置の処理速度の向上や、コマンドブロックパケットを処理する手段の負荷を軽減することが可能になり、実効的なバスの転送速度を向上できる。
【００２６】
また本発明は、ＵＳＢ（Universal Serial Bus)の規格に準拠したデータ転送を行うことを特徴とする。
【００２７】
但し、本発明はＵＳＢ以外の規格（ＵＳＢの思想を受け継ぐ規格）に準拠したデータ転送に適用することも可能である。
【００２８】
また本発明に係る電子機器は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及びバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置とを含むことを特徴とする。
【００２９】
本発明によれば、データ転送制御装置のデータ転送を制御する処理手段（ファームウェア等）の処理負荷を軽減できるため、電子機器の低コスト化、小規模化などを図れる。また、本発明によれば、高速な転送モードでデータ転送を行うことも可能になるため、電子機器の処理の高速化を図れる。
【００３０】
【発明の実施の形態】
以下、本実施形態について図面を用いて詳細に説明する。
【００３１】
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を何ら限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００３２】
１．ＵＳＢ
１．１  データ転送手法
まず、ＵＳＢ（ＵＳＢ２．０）のデータ転送手法について簡単に説明する。
【００３３】
ＵＳＢでは、ＩＥＥＥ１３９４等とは異なり、データ転送の主導権をホストが有している。即ち、データ転送のトランザクションを起動するのはホスト側であり、データ転送に関する大部分の制御はホストが行う。このため、ホストの処理負荷は重くなるが、ホストとなるＰＣ（パーソナルコンピュータ）等は高速で高性能なＣＰＵ（プロセッサ）を有しているため、このように負荷の重い処理もそれほど問題にはならない。
【００３４】
一方、ＵＳＢにおいては、デバイス（ターゲット）はホストからの要求に対して単に応えるだけでよいため、デバイス側の処理、構成については簡素化できる。従って、デバイス側ではホストのような高性能で高速なＣＰＵを使用する必要が無く、低価格なＣＰＵ（マイコン）を使用できるようになり、低コスト化を図れる。
【００３５】
さて、ＵＳＢではこのようなホスト主導のデータ転送を実現するために、図１（Ａ）に示すようなエンドポイント（ＥＰ０〜１５）がデバイス側に用意される。ここで、エンドポイントは、ホストとデバイスとの間でデータ転送を行うためのバッファ（ＦＩＦＯ）の入り口に相当するものであり、ＵＳＢでのデータ転送は、全て、このエンドポイントを経由して行われる。
【００３６】
そして、このエンドポイントは、デバイスアドレスとエンドポイント番号により一義的にアドレス指定できるようになっている。即ちホストは、デバイスアドレスとエンドポイント番号を指定することで、所望のエンドポイントへのデータ送信や、所望のエンドポイントからのデータ受信を自由に行うことができる。
【００３７】
また、エンドポイントの設定はデバイス側の任意であり、エンドポイント番号の割り当てや、各エンドポイントに割り当てられる記憶領域のデータサイズ等は、エニミュレーション（enumeration）処理時にホストは知ることができる。
【００３８】
なお、ＵＳＢにおいては、データ転送のタイプとして、コントロール転送、アイソクロナス転送、インタラプト転送、バルク転送が用意されている。
【００３９】
ここで、コントロール転送は、ホストとデバイス（ターゲット）との間でコントロールエンドポイントを介して行われる制御用の転送モードである。このコントロール転送により、デバイスの初期化のためのコンフィグレーション情報等が転送される。
【００４０】
アイソクロナス転送は、画像データや音声データのように、データの正当性よりもバンド幅の確保が優先されるデータの転送のために用意された転送モードである。このアイソクロナス転送では、一定周期に一定量のデータを転送できることが保証されるため、データのリアルタイム性が重要なアプリケーションに有効な転送モードとなる。
【００４１】
インタラプト転送は、比較的低い転送速度で少量のデータを転送するために用意された転送モードである。
【００４２】
バルク転送は、不定期に発生する大量のデータを転送するために用意された転送モードである。このバルク転送では、アイソクロナス転送やインタラプト転送により使用された時間以外の空いた時間においてデータ転送が行われると共に、データの正当性がチェックされる。従って、リアルタイム性はあまり重要ではないが、データの信頼性は確保したいデータの転送に有効な転送モードである。
【００４３】
１．２  トランザクション構成
さて、図１（Ｂ）に示すように、ＵＳＢのバルク転送におけるトランザクションは基本的に、トークンパケット、データパケット、ハンドシェークパケットという３つのパケットにより構成される。なお、アイソクロナス転送の場合は、ハンドシェークパケットは不要になる。
【００４４】
ここでトークンパケットは、ホストがデバイス（ターゲット）のエンドポイントのリードやライトを要求する場合等に使用されるパケットである。このトークンパケットは、例えば、ＰＩＤ（ＯＵＴ、ＩＮ、ＳＯＦ、ＳＥＴＵＰなどのパケットＩＤ）、ＡＤＤＲ（デバイスアドレス）、ＥＮＤＰ（エンドポイント番号）、ＣＲＣ（Cyclic Redundancy Check）のフィールドを有する。
【００４５】
また、データパケットは、データの実体を送るためのパケットであり、ＰＩＤ（ＤＡＴＡ０、ＤＡＴＡ１）、ＤＡＴＡ（データの実体）、ＣＲＣのフィールドを有する。
【００４６】
また、ハンドシェークパケットは、データ受信に成功したか否かを受信側が送信側に伝えるためのパケットであり、ＰＩＤ（ＡＣＫ、ＮＡＫ、ＳＴＡＬＬ）のフィールドを有する。
【００４７】
ＯＵＴトランザクション（ホストがデバイスに情報を出力するトランザクション）では、図１（Ｃ）に示すように、まず、ホストがデバイスに対してＯＵＴトークンパケットを転送する。次に、ホストはデバイスに対してＯＵＴのデータパケットを転送する。そして、デバイスは、ＯＵＴのデータパケットの受信に成功すると、ホストに対してＡＣＫのハンドシェークパケットを転送する。
【００４８】
一方、ＩＮトランザクション（ホストがデバイスから情報を入力するトランザクション）では、図１（Ｄ）に示すように、まず、ホストがデバイスに対してＩＮトークンパケットを転送する。そして、ＩＮトークンパケットを受信したデバイスは、ホストに対してＩＮのデータパケットを転送する。そして、ホストは、ＩＮのデータパケットの受信に成功すると、デバイスに対してＡＣＫのハンドシェークパケットを転送する。
【００４９】
なお、図１（Ｃ）、（Ｄ）において、”Ｄ←Ｈ”は、ホストからデバイスに対して情報が転送されることを意味し、”Ｄ→Ｈ”は、デバイスからホストに対して情報が転送されることを意味する（以下の説明及び図でも同様）。
【００５０】
１．３  Ｂｕｌｋ−Ｏｎｌｙ
さて、ＵＳＢのデバイスは種々のクラスに分類される。そして、ハードディスクドライブや光ディスクドライブなどのデバイスは、マスストレージと呼ばれるクラスに属し、このマスストレージクラスには、電子機器のベンダ等により作成されたＣＢＩ（Control/Bulk/Interrupt)やＢｕｌｋ−Ｏｎｌｙなどの仕様がある。
【００５１】
そして、ＣＢＩ仕様では図２（Ａ）に示すように、デバイスは、コントロール、バルクアウト、バルクイン、インタラプトのエンドポイントＥＰ０、１、２、３を用意する。ここで、エンドポイントＥＰ０では、ＵＳＢ層のコントロールのパケットや、コマンドのパケットが転送される。また、ＥＰ１ではＯＵＴデータ（ホストからデバイスに転送されるデータ）、ＥＰ２ではＩＮデータ（デバイスからホストに転送されるデータ）、ＥＰ３ではインタラプトＩＮのパケットが転送される。なお、ＥＰ１〜１５のいずれを、バルクアウト、バルクイン、インタラプトＩＮのエンドポイントに割り当てるかは、デバイス側の任意である。
【００５２】
一方、Ｂｕｌｋ−Ｏｎｌｙ仕様では図２（Ｂ）に示すように、デバイスは、コントロール、バルクアウト、バルクインのエンドポイントＥＰ０、１、２を用意する。ここで、エンドポイントＥＰ０では、ＵＳＢ層のコントロールのパケットが転送される。また、ＥＰ１ではコマンド（ＣＢＷ）及びＯＵＴデータ、ＥＰ２ではステータス（ＣＳＷ）及びＩＮデータのパケットが転送される。なお、ＥＰ１〜１５のいずれを、バルクアウト、バルクインのエンドポイントに設定するかは、デバイス側の任意である。
【００５３】
ここで、ＣＢＷ（Command Block Wrapper）は、コマンドブロック及びこれに関連する情報を含むパケットであり、図３にそのフォーマットが示される。また、ＣＳＷ（Command Status Wrapper）は、コマンドブロックのステータスを含むパケットであり、図４にそのフォーマットが示される。
【００５４】
図３において、dCBWSignatureは、当該パケットをＣＢＷとして識別するための情報であり、dCBWTagは、コマンドブロックのタグであり、dCBWDataTransferLengthはデータフェーズにおいて転送されるデータの長さを指定する。また、bmCBWFlagsは転送方向等を指定するためのフラグであり、dCBWLUNはロジカルユニット番号であり、bCBWCBLengthはコマンド長であり、CBWCBは、ＡＴＡ／ＡＴＡＰＩやＳＣＳＩなどのコマンドがカプセル化されて記述されるコマンドブロックである。
【００５５】
また図４において、dCSWSignatureは、当該パケットをＣＳＷとして識別するための情報である。また、dCSWTagは、ステータスブロックのタグであり、当該ＣＳＷに対応するＣＢＷのdCBWTagの値が書き込まれる。また、CSWDataResidueは、ＣＢＷのdCBWDataTransferLengthにより指定されたデータの長さとデバイスが実際に処理したデータの長さの差であり、bCSWStatusはステータスブロックである。
【００５６】
次に、図２（Ｂ）のＢｕｌｋ−Ｏｎｌｙ仕様におけるデータの書き込み処理、読み出し処理について、図５（Ａ）、（Ｂ）を用いて説明する。
【００５７】
ホストがデバイスにデータを書き込む場合には、図５（Ａ）に示すように、まず、ホストがＣＢＷをデバイスに転送するコマンドフェーズ（コマンドトランスポート）が行われる。具体的には、ホストが、エンドポイントＥＰ１を指定するトークンパケットをデバイスに転送し、次に、ＣＢＷ（図２（Ｂ）のＡ１、図３参照）をデバイスのエンドポイントＥＰ１に転送する。このＣＢＷにはライトコマンドが含まれる。そして、デバイスからホストにＡＣＫのハンドシェーク（Ｈ.Ｓ）が返却されると、コマンドフェーズが終了する。
【００５８】
コマンドフェーズ（コマンドトランスポート）が終了するとデータフェーズ（データトランスポート）に移行する。このデータフェーズでは、まず、ホストが、エンドポイントＥＰ１を指定するトークンパケットをデバイスに転送し、次に、ＯＵＴデータ（図２（Ｂ）のＡ２参照）をデバイスのエンドポイントＥＰ１に転送する。そして、デバイスからホストにＡＣＫのハンドシェークが返却されると、１つのトランザクションが終了する。そして、このようなトランザクションが繰り返され、ＣＢＷのdCBWDataTransferLength（図３参照）で指定されるデータ長の分だけデータが転送されると、データフェーズが終了する。
【００５９】
データフェーズ（データトランスポート）が終了するとステータスフェーズ（ステータストランスポート）に移行する。このステータスフェーズでは、まず、ホストが、エンドポイントＥＰ２を指定するトークンパケットをデバイスに転送する。すると、デバイスが、エンドポイントＥＰ２にあるＣＳＷ（図２（Ｂ）のＡ３、図４参照）をホストに転送する。そして、ホストからデバイスにＡＣＫのハンドシェークが返却されると、ステータスフェーズが終了する。
【００６０】
ホストがデータを読み出す場合は、図５（Ｂ）に示すように、まず、ホストが、エンドポイントＥＰ１を指定するトークンパケットをデバイスに転送し、次に、ＣＢＷをデバイスのエンドポイントＥＰ１に転送する。このＣＢＷはリードコマンドを含む。そして、デバイスからホストにＡＣＫのハンドシェークが返却されると、コマンドフェーズが終了する。
【００６１】
コマンドフェーズが終了するとデータフェーズに移行する。このデータフェーズでは、まず、ホストが、エンドポイントＥＰ２を指定するトークンパケットをデバイスに転送する。すると、デバイスが、エンドポイントＥＰ２にあるＩＮデータ（図２（Ｂ）のＡ４参照）をホストに転送し、ホストからデバイスにＡＣＫのハンドシェークが返却されると、１つのトランザクションが終了する。そして、このようなトランザクションが繰り返され、ＣＢＷのdCBWDataTransferLengthで指定されるデータ長の分だけデータが転送されると、データフェーズが終了する。
【００６２】
データフェーズが終了するとステータスフェーズに移行する。このステータスフェーズの処理は図５（Ａ）のデータの書き込み処理の場合と同様である。
【００６３】
２．本実施形態の特徴
２．１  領域切り替え
さて、図２（Ａ）に示すＣＢＩ仕様では、ホストが一定期間毎にトークンをデバイスに転送する仕様になっている。このため、ホストの処理負荷や、このトークンを受けるデバイスの処理負荷が重くなってしまうという欠点がある。
【００６４】
このため、現在では、図２（Ｂ）のＢｕｌｋ−Ｏｎｌｙ仕様が主流になってきている。
【００６５】
ところが、このＢｕｌｋ−Ｏｎｌｙ仕様では、１つのエンドポイントを介して転送される情報として、複数種類の情報が割り当てられている。具体的には、図２（Ｂ）では、バルクアウトエンドポイントＥＰ１を介して転送される情報として、コマンド（ＣＢＷ）及びＯＵＴデータが割り当てられ、バルクインエンドポイントＥＰ２を介して転送される情報として、ステータス（ＣＳＷ）及びＩＮデータが割り当てられている。従って、ホスト及びデバイスは、各エンドポイントを介して転送される情報がどの情報なのかを判別する必要があり、Ｂｕｌｋ−Ｏｎｌｙ仕様では、現在のフェーズがどのフェーズなのかをホスト及びデバイスが判断して、この情報の判別を行っている。
【００６６】
例えば、図５（Ａ）、（Ｂ）のＢ１、Ｂ２では、現在のフェーズがコマンドフェーズであるため、エンドポイントＥＰ１を介して転送される情報はＣＢＷ（コマンド）であると判断される。また、Ｂ３、Ｂ４では、現在のフェーズがデータフェーズであるため、エンドポイントＥＰ１を介して転送される情報はＯＵＴデータであると判断され、エンドポイントＥＰ２を介して転送される情報はＩＮデータであると判断される。また、Ｂ５、Ｂ６では、現在のフェーズがステータスフェーズであるため、エンドポイントＥＰ２を介して転送される情報はＣＳＷ（ステータス）であると判断される。
【００６７】
そして、Ｂｕｌｋ−Ｏｎｌｙ仕様ではホストとデバイスとの間で常にフェーズが一致するようにデータ転送が行われるため、１つのエンドポイントに対して複数の情報（ＣＢＷとＯＵＴデータ、ＣＳＷとＩＮデータ）が割り当てられている場合にも、適正なデータ転送が可能になる。
【００６８】
ところが、Ｂｕｌｋ−Ｏｎｌｙ仕様には、次のような問題があることが判明した。
【００６９】
例えば図６（Ａ）〜（Ｄ）に本実施形態の比較例の手法を示す。この比較例では、図６（Ａ）に示すように、コマンドフェーズにおいて、エンドポイントＥＰ１を入り口とするＦＩＦＯ（ＥＰ１）６００に対して、ホストからのＣＢＷ（コマンド）が書き込まれる。
【００７０】
すると図６（Ｂ）に示すように、デバイス側のＣＰＵ（ファームウェア、処理手段）は、このＦＩＦＯ６００に書き込まれたＣＢＷを先入れ先出し方式で読み出して、コマンド解釈を行う。この場合、ＣＰＵのコマンド解釈が終了するまでは、ＦＩＦＯ６００に対してホストからのデータを書き込むことはできない。従って図６（Ｃ）に示すように、データフェーズに移行して、ホストからＯＵＴデータを転送するトークンが出された場合にも、デバイスはホストに対してＮＡＫを返すことになる。
【００７１】
そして図６（Ｄ）に示すように、ＣＰＵのコマンド解釈が終了し、ＦＩＦＯ６００が空になったことを条件に、ホストからのＯＵＴデータがＦＩＦＯ６００に書き込まれ、このＯＵＴデータが、後段のハードディスクドライブなどのデバイスにＤＭＡ転送されることになる。
【００７２】
このように図６（Ａ）〜（Ｄ）の比較例では、ＣＰＵがコマンド解釈を行っている期間は、ＦＩＦＯ６００にＯＵＴデータを書き込めない。従って、その期間の分だけデバイス側の処理が遅れてしまい、実効的なデータ転送速度が低下してしまう。
【００７３】
この場合、ＵＳＢ１．１ではバスの転送速度が低かったため、図６（Ｂ）、（Ｃ）に示すようなデバイス側の処理の遅れは、ほとんど問題にならなかった。
【００７４】
ところが、ＵＳＢ２．０のＨＳモードでは高速な４８０Ｍｂｐｓでデータ転送が行われる。従って、ホストからはＵＳＢを介して高速にデータが転送されてくる。このため、デバイス側の処理が遅れてしまい、この高速に転送されてくるデータの処理にデバイスが対応できなると、システム全体の実効的なデータ転送速度が大幅に低下する。
【００７５】
特に、デバイス側では、低コスト化の要請から、例えば２０〜５０ＭＨｚ程度のクロック周波数で動作する安価なＣＰＵが使用される場合が多い。従って、図６（Ｂ）、（Ｃ）のコマンド解釈に非常に時間を費やしてしまい、実効的なデータ転送速度の遅れは更に深刻なものになる。
【００７６】
そこで本実施形態では、このような問題を解決するために、フェーズ（トランスポート）の切り替えに応じてバッファの記憶領域を切り替える手法を採用している。
【００７７】
より具体的には図７（Ａ）に示すように本実施形態では、ＯＵＴデータ（第２の情報）を書き込むためのＥＰ１領域１０（第２の記憶領域。データ記憶領域）の他に、ＣＢＷ（第１の情報。コマンドブロック）を書き込むためのＣＢＷ領域１２（第１の記憶領域。コマンド記憶領域）を、パケット格納手段であるバッファ上に用意する。
【００７８】
ここで、ＥＰ１領域１０及びＣＢＷ領域１２は共にバルクアウトのエンドポイントＥＰ１を入り口とする記憶領域である。また、ＥＰ１領域１０は、先に入力された情報が先に出力されるように設定（ＦＩＦＯ設定）されており、ＣＢＷ領域１２は、情報のランダムアクセスが可能になるように設定（ランダムアクセス設定）されている。
【００７９】
そして本実施形態では、コマンドフェーズ（第１のフェーズ）においてはスイッチＳＷ（切り替え手段）がＣＢＷ領域１２側に切り替えられており、ホストから転送されてきたＣＢＷはＣＢＷ領域１２に書き込まれる。すると、ＣＰＵ（ファームウェア、処理手段）は、このＣＢＷ領域１２に書き込まれているＣＢＷを読み出して、コマンド解釈を行う。この場合に、ＣＢＷ領域１２はランダムアクセス可能に設定されているため、ＣＰＵは、ＣＢＷ領域１２の任意のアドレスの情報を高速に読み出すことができる。
【００８０】
そして図７（Ｂ）に示すように、コマンドフェーズ（第１のフェーズ）からデータフェーズ（第２のフェーズ）に移行すると、スイッチＳＷがＥＰ１領域１０側に切り替わる。これにより、ホストからのＯＵＴデータをＥＰ１領域１０に書き込むことが可能になる。そして、ＣＰＵのコマンド解釈が終了すると、ＥＰ１領域１０のＯＵＴデータを後段のハードディスクドライブ等のデバイスに転送するＤＭＡ転送が起動する。
【００８１】
例えば図６（Ｃ）の比較例では、ＣＰＵがコマンド解釈を行っている間は、ホストからのＯＵＴデータを受け入れることができず、ホストに対してＮＡＫを返さざるを得なかった。
【００８２】
これに対して本実施形態では図７（Ｂ）に示すように、ＣＰＵがコマンド解釈を行っている間も、ホストからのＯＵＴデータを受け入れて、ＥＰ１領域１０に書き込むことが可能になる。従って、ホストに対してＡＣＫを返すことが可能になり、処理の高速化を図れる。
【００８３】
特にＵＳＢ２．０では、ホストからデータが高速に転送されてくる。従って、図６（Ｃ）の比較例のようにホストに対してＮＡＫを返し続けると、バス帯域がロスしてしまい、ＵＳＢ２．０の高速データ転送を活用できない。
【００８４】
これに対して本実施形態では、図７（Ｂ）に示すようにホストにＡＣＫを返すことが可能になるため、バス帯域のロスを最小限に抑えることができ、ＵＳＢ２．０の高速データ転送を生かすことができ、実効的なデータ転送速度を向上できる。
【００８５】
また比較例では、図８（Ａ）に示すように、ＣＢＷは先入れ先出しのＦＩＦＯ６００に記憶される。従って、ＣＰＵは、コマンド解釈の際にＦＩＦＯ６００の先頭アドレスから順にＣＢＷを読み出す必要がある。この結果、コマンド解釈に重要なデータ長（図３のdCBWDataTransferLength）やコマンド（CBWCB）を読み出すまでに時間がかかってしまい、コマンド解釈の処理が更に遅れてしまう。
【００８６】
これに対して本実施形態では、図８（Ｂ）に示すように、ＣＢＷはランダムアクセス可能なＣＢＷ領域１２に記憶される。従って、ＣＰＵは、コマンド解釈に重要なデータ長やコマンドを先に読み出すことが可能になり、コマンド解釈の処理時間を節約できる。これにより、実効的なデータ転送速度を更に向上できる。
【００８７】
このように本実施形態では、ＣＢＷ領域１２（第１の情報が記憶される第１の記憶領域）の先頭アドレス以外の領域に、データ長（第２の情報の長さ情報）やコマンド（第２の情報の転送を指示するコマンドブロック）が書き込まれている場合にも、ＣＢＷ領域１２がランダムアクセス可能に設定されているため、データ長やコマンドを先に読み出すことが可能になり、実効的なデータ転送速度の向上を図れる。
【００８８】
なお、後段のデバイス（ハードディスクドライブ等）に対してデータを効率良くＤＭＡ転送するためには、ＥＰ１領域１２については、情報が先入れ先出しされる領域に設定（ＦＩＦＯ設定）することが望ましい。この場合、ＥＰ１領域１２を、直列接続のレジスタ、メモリ等で構成することで、先入れ先出しの領域に設定してもよいし、後述するようにＲＡＭのアドレス制御を工夫することで、先入れ先出しの領域に設定してもよい。
【００８９】
２．２  構成例
図９に本実施形態のデータ転送制御装置の構成例を示す。
【００９０】
本実施形態のデータ転送制御装置は、トランシーバマクロ２０、ＳＩＥ３０、エンドポイント管理回路４０、バッファ管理回路５０、バッファ６０、バルク転送管理回路７０、ＤＭＡＣ８０を含む。なお、本発明のデータ転送制御装置は、図９に示す回路ブロックの全てを含む必要はなく、それらの一部を省略する構成としてもよい。
【００９１】
ここで、トランシーバマクロ２０は、ＵＳＢ（第１のバス）のＦＳモードやＨＳモードでのデータ転送を実現するための回路である。このトランシーバマクロ２０としては、例えばＵＳＢ２．０の物理層回路や、論理層回路の一部についてのインターフェースを定義したＵＴＭＩ（USB2.0 Transceiver Macrocell Interface）に準拠したマクロセルを用いることができる。このトランシーバマクロ２０は、トランシーバ回路２２、クロック生成回路２４を含む。
【００９２】
トランシーバ回路２２は、差動信号ＤＰ、ＤＭを用いてＵＳＢ（第１のバス）上のデータを送受信するアナログフロントエンド回路（受信回路、送信回路）を含む。また、ビットスタッフィング、ビットアンスタッフィング、シリアル・パラレル変換、パラレル・シリアル変換、ＮＲＺＩデコード、ＮＲＺＩエンコード、サンプリングクロック生成などの処理を行う回路を含む。
【００９３】
またクロック生成回路２４は、データ転送制御装置が使用する動作クロックや、サンプリングクロックの生成に使用されるクロックなどを生成する回路であり、４８０ＭＨｚや６０ＭＨｚのクロックを生成するＰＬＬや発振回路などを含む。
【００９４】
ＳＩＥ（Serial Interface Engine）は、ＵＳＢのパケット転送処理などの種々の処理を行う回路であり、パケットハンドラ回路３２、サスペンド＆レジューム制御回路３４、トランザクション管理回路３６を含む。
【００９５】
パケットハンドラ回路３２は、ヘッダ及びデータからなるパケットの組み立て（生成）や分解などを行う回路であり、ＣＲＣの生成や解読を行うＣＲＣ処理回路３３を含む。
【００９６】
サスペンド＆レジューム制御回路３４は、サスペンドやレジューム時のシーケンス制御を行う回路である。
【００９７】
トランザクション管理回路３６は、トークン、データ、ハンドシェークなどのパケットにより構成されるトランザクションを管理する回路である。具体的には、トークンパケットを受信した場合には、自分宛か否かを確認し、自分宛の場合には、ホストとの間でデータパケットの転送処理を行い、その後に、ハンドシェークパケットの転送処理を行う。
【００９８】
エンドポイント管理回路４０は、バッファ６０の各記憶領域の入り口となるエンドポイントを管理する回路であり、エンドポイントの属性情報を記憶するレジスタ（レジスタセット）などを含む。
【００９９】
バッファ管理回路５０は、例えばＲＡＭなどで構成されるバッファ６０を管理する回路である。より具体的には、書き込みアドレスや読み出しアドレスを生成し、バッファ６０へのデータの書き込み処理やバッファ６０からのデータの読み出し処理を行う。
【０１００】
バッファ６０（パケット記憶手段）は、ＵＳＢを介して転送されるデータ（パケット）を一時的に記憶するものであり、ＵＳＢ（第１のバス）でのデータ転送速度と、ＥＢＵＳ（第２のバス）でのデータ転送速度との速度差を補償する機能などを有する。なお、ＥＢＵＳは、ハードディスクドライブやＣＤドライブなどのデバイス（マスストレージデバイス）に接続される外部バスである。
【０１０１】
そして本実施形態では、１つのエンドポイントを介して転送される情報として複数種類の情報が割り当てられている場合に、第１の情報（例えばコマンドブロック）用の第１の記憶領域（例えばコマンド記憶領域）と第２の情報（例えばデータ）用の第２の記憶領域（例えばデータ記憶領域）とが、このバッファ６０上に用意（確保）される。
【０１０２】
バルク転送管理回路７０は、ＵＳＢにおけるバルク転送を管理するための回路である。
【０１０３】
ＤＭＡＣ８０は、ＥＢＵＳを介してＤＭＡ転送を行うためのＤＭＡコントローラであり、ＤＭＡカウンタ８２を含む。そしてＤＭＡカウンタ８２は、ＥＢＵＳを介して転送されるデータのサイズ（転送数）をカウントする回路である。
【０１０４】
２．３  詳細な構成例
図１０に、トランザクション管理回路３６（ＳＩＥ）、エンドポイント管理回路４０、バッファ管理回路５０、バッファ６０の詳細な構成例を示す。
【０１０５】
バッファ６０（ＲＡＭ）は、エンドポイントＥＰ１に割り当てられた情報であるＣＢＷ（コマンドブロック）を記憶するＣＢＷ領域６１、ＥＰ０に割り当てられた情報であるコントロールを記憶するＥＰ０領域６２、ＥＰ１に割り当てられた情報であるＯＵＴデータを記憶するＥＰ１領域６３、ＥＰ２に割り当てられた情報であるＩＮデータを記憶するＥＰ２領域６４を含む。
【０１０６】
そして図１０では、ＣＢＷ領域６１については、ＣＰＵ（ファームウェア、処理手段）によるランダムアクセスが可能になるように設定されている。一方、ＥＰ０、ＥＰ１、ＥＰ２領域６２、６３、６４は、先に入力された情報が先に出力されるように設定（ＦＩＦＯ設定）されている。
【０１０７】
トランザクション管理回路３６は、ＵＳＢを介して転送される書き込みデータＳＩＥＷｒＤａｔａ（書き込みパケット）をバッファ６０に出力し、読み出しデータＳＩＥＲｄＤａｔａ（読み出しパケット）をバッファ６０から入力する。
【０１０８】
またトランザクション管理回路３６は、バッファ管理回路５０に対して書き込み要求信号ＳＩＥＷｒＲｅｑ、読み出し要求信号ＳＩＥＲｄＲｅｑを出力し、バッファ管理回路５０から書き込みアクノリッジ信号ＳＩＥＷｒＡｃｋ、読み出しアクノリッジ信号ＳＩＥＲｄＡｃｋを受ける。
【０１０９】
またトランザクション管理回路３６は、エンドポイント管理回路４０に対して、トランザクション終了信号ＴｒａｎＥｎｄＰｕｌｓｅ、トランザクションステータス信号ＴｒａｎＳｔａｔｕｓ、エンドポイント番号指定信号ＥＰｎｕｍ、転送方向指定信号Ｄｉｒｅｃｔｉｏｎを出力し、エンドポイント管理回路４０から、エンドポイント存在信号ＥＰｅｘｉｓｔを受ける。
【０１１０】
エンドポイント管理回路４０は、エンドポイントの属性情報（エンドポイント番号、最大パケットサイズ等）を記述するためのレジスタ（レジスタセット）４２、４３、４４を含む。そして、トランザクション管理回路３６からの各種信号と、レジスタの属性情報とに基づいて、エンドポイント選択信号ＥＰｓｅｌを生成して、バッファ管理回路５０に出力する。
【０１１１】
またエンドポイント管理回路４０は、バッファ管理回路５０に対して、ＣＰＵからの書き込み要求信号ＣＰＵＷｒＲｅｑ、読み出し要求信号ＣＰＵＲｄＲｅｑを出力し、バッファ管理回路５０から、ＣＰＵへの書き込みアクノリッジ信号ＣＰＵＷｒＡｃｋ、読み出しアクノリッジ信号ＣＰＵＲｄＡｃｋを受ける。
【０１１２】
エンドポイント管理回路４０が含むＥＰ０レジスタ４２は、ＵＳＢ仕様によりデフォルトで定義されるコントロールエンドポイントの属性情報を記述するためのレジスタである。
【０１１３】
またＥＰ１、ＥＰ２レジスタ４３、４４は、ＢＵＬＫ−Ｏｎｌｙ仕様により定義されるバルクアウトやバルクインのエンドポイントの属性情報を記述するためのレジスタである。なお、エンドポイントＥＰ１〜１５のいずれを、バルクアウト又はバルクインのエンドポイントに設定するかはデバイス側の任意である。
【０１１４】
ＥＰ１レジスタ４３では、データの転送方向を表すフラグＤＩＲがＯＵＴに設定されており、ＥＰ１はバルクアウトのエンドポイントに設定されている。
【０１１５】
また、ＥＰ１レジスタ４３では、フラグＥｎＣＢＷが１に設定されている。このＥｎＣＢＷは、エンドポイントをバッファ６０のＣＢＷ領域６１に接続するためのフラグであり、ＥｎＣＢＷが１に設定されるエンドポイントはＣＢＷ領域６１に接続されることになる。
【０１１６】
ＥＰ２レジスタ４４では、データの転送を方向を表すフラグＤＩＲがＩＮに設定されており、ＥＰ２はバルクインのエンドポイントに設定されている。
【０１１７】
また、ＥＰ２レジスタ４４では、ＥｎＣＢＷが０に設定されている。
【０１１８】
バッファ管理回路５０は、トランザクション管理回路３６やエンドポイント管理回路４０からの書き込み・読み出し要求信号や、エンドポイント管理回路４０からのエンドポイント選択信号ＥＰｓｅｌを受け、アドレスＡｄｄｒｅｓｓや書き込みパルスｘＷＲ（ｘは負論理を意味する）をバッファ６０に出力する。このバッファ管理回路５０は、ＣＢＷ、ＥＰ０、ＥＰ１、ＥＰ２のアドレス生成回路５１、５２、５３、５４とセレクタ５６を含む。
【０１１９】
ここでＣＢＷアドレス生成回路５１は、ＣＢＷ領域６１（先頭アドレスａ０）についての、ＳＩＥＷｒＤａｔａ、ＳＩＥＲｄＤａｔａの書き込み又は読み出しアドレスＡＤ０を生成する。
【０１２０】
また、ＥＰ０、ＥＰ１、ＥＰ２のアドレス生成回路５２、５３、５４は、各々、ＥＰ０、ＥＰ１、ＥＰ２の領域６２、６３、６４（先頭アドレスａ１、ａ２、ａ３）についての、ＳＩＥＷｒＤａｔａ、ＳＩＥＲｄＤａｔａの書き込み又は読み出しアドレスＡＤ１、ＡＤ２、ＡＤ３を生成する。具体的には、ａ１、ａ２、ａ３を先頭アドレスとして順次インクリメント（又はデクリメント）するアドレスＡＤ１、ＡＤ２、ＡＤ３を生成する。
【０１２１】
セレクタ５６は、信号ＥＰｓｅｌに基づいてアドレスＡＤ０〜３のいずれかを選択し、Ａｄｄｒｅｓｓとしてバッファ６０に出力すると共に、書き込みパルスｘＷＲをバッファ６０に出力する。具体的には、ＥＰｓｅｌによりＣＢＷが選択指示された場合にはＡＤ０を選択し、ＥＰ０が選択指示された場合にはＡＤ１を選択し、ＥＰ１が選択指示された場合にはＡＤ２を選択し、ＥＰ２が選択指示された場合にはＡＤ３を選択して、Ａｄｄｒｅｓｓとしてバッファ６０に出力する。
【０１２２】
なお、ＣＢＷ領域６１は、ＣＰＵによるＣＰＵＲｄＤａｔａの読み出しが可能になっている。この場合には、バッファ管理回路５０は、エンドポイント管理回路４０からのＥＰｓｅｌやＣＰＵＲｄＲｅｑに基づいて、ＣＰＵＲｄＤａｔａの読み出しのためのＡｄｄｒｅｓｓをバッファ６０に出力することになる。
【０１２３】
図１１に、トランザクション管理回路３６、エンドポイント管理回路４０、バッファ管理回路５０、バッファ６０の他の構成例を示す。
【０１２４】
図１０と異なり図１１では、バッファ６０が、ＣＢＷ、ＥＰ０、ＥＰ１、ＥＰ２用のＦＩＦＯ６５、６６、６７、６８（例えば直列接続されたレジスタ、メモリ）を含む。
【０１２５】
そしてバッファ管理回路５０が含むセレクタ５７は、エンドポイント管理回路４０からのＥＰｓｅｌに基づいて、トランザクション管理回路３６からのＳＩＥＷｒＤａｔａを、ＷｒＤａｔａＣＢＷ、ＷｒＤａｔａＥＰ０、ＷｒＤａｔａＥＰ１、ＷｒＤａｔａＥＰ２のいずれかとしてバッファ６０に出力する。
【０１２６】
或いは、セレクタ５７は、ＥＰｓｅｌに基づいて、バッファ６０からのＲｄＤａｔａＣＢＷ、ＲｄＤａｔａＥＰ０、ＲｄＤａｔａＥＰ１、ＲｄＤａｔａＥＰ２のいずれかを選択して、ＳＩＥＲｄＤａｔａとしてトランザクション管理回路３６に出力する。
【０１２７】
より具体的には、ＥＰｓｅｌによりＣＢＷが選択指示された場合には、ＷｒＤａｔａＣＢＷ、ＲｄＤａｔａＣＢＷが選択され、ＥＰ０が選択指示された場合には、ＷｒＤａｔａＥＰ０、ＲｄＤａｔａＥＰ０が選択され、ＥＰ１が選択指示された場合には、ＷｒＤａｔａＥＰ１、ＲｄＤａｔａＥＰ１が選択され、ＥＰ２が選択指示された場合には、ＷｒＤａｔａＥＰ２、ＲｄＤａｔａＥＰ２が選択されることになる。
【０１２８】
そして、バッファ６０へのデータの書き込みは、トランザクション管理回路３６からの書き込みパルスＳＩＥＷＲにより行われ、バッファ６０からのデータの読み出しは、トランザクション管理回路３６からの読み出しパルスＳＩＥＲＤにより行われる。
【０１２９】
なお図１１において、ＦＩＦＯ６５（ＣＢＷ）をランダムアクセス可能な記憶領域に設定するようにしてもよい。
【０１３０】
２．４  動作
図１２〜図１６に、本実施形態のデータ転送制御装置の詳細な動作を説明するためのタイミング波形図の例を示す。
【０１３１】
２．４．１  成功時
図１２はコマンドフェーズ（図５（Ａ）のＢ１参照）の開始時でのタイミング波形図であり、図１３はコマンドフェーズの終了時でのタイミング波形図である。
【０１３２】
図１２のＣ１、Ｃ２に示すようにトランザクション管理回路３６がＥＰｎｕｍを１（エンドポイント番号＝１）に設定し、ＤｉｒｅｃｔｉｏｎをＯＵＴに設定すると、バルクアウトエンドポイントＥＰ１のレジスタ４３（図１０参照）が存在するため、エンドポイント管理回路４０は、Ｃ３に示すようにＥＰｅｘｉｓｔをアクティブ（Ｈレベル）にする。
【０１３３】
この時、Ｃ４に示すようにエンドポイントＥＰ１のＥｎＣＢＷがＨレベル（１）に設定されているため、エンドポイント管理回路４０は、Ｃ５に示すようにＣＢＷ領域６１のアドレスＡＤ０を選択指示するＥＰｓｅｌを、バッファ管理回路５０に対して出力する。これにより、バッファ管理回路５０のセレクタ５６は、ＣＢＷアドレス生成回路５１により生成されるアドレスＡＤ０を選択するようになる。
【０１３４】
そして、Ｃ６に示すように、トランザクション管理回路３６がＳＩＥＷｒＲｅｑをアクティブにすると、Ｃ７に示すように、バッファ管理回路５０は、ＣＢＷアドレス生成回路５１からのＡＤ０＝ａ０をＡｄｄｒｅｓｓとしてバッファ６０に出力すると共に、Ｃ８に示すように、ｘＷＲをアクティブ（Ｌレベル）にする。これにより、バッファ６０のＣＢＷ領域６１のａ０を先頭アドレスとして、Ｃ９に示すようにＣＢＷ（ＳＩＥＷｒＤａｔａ）の０〜３バイトが書き込まれる。その後、Ｃ１０に示すようにＳＩＥＷｒＡｃｋがアクティブにされ、トランザクション管理回路３６にアクノリッジを返される。
【０１３５】
次に、Ｃ１１に示すようにトランザクション管理回路３６がＳＩＥＷｒＲｅｑをアクティブにすると、Ｃ１２、Ｃ１３に示すように、バッファ管理回路５０は、ＡＤ０＝ａ０＋４をＡｄｄｒｅｓｓとしてバッファ６０に出力すると共にｘＷＲをアクティブにする。これにより、ＣＢＷ領域６１のａ０＋４を先頭アドレスとして、Ｃ１４に示すようにＣＢＷ（ＳＩＥＷｒＤａｔａ）の４〜７バイトが書き込まれる。その後、Ｃ１５に示すようにＳＩＥＷｒＡｃｋがアクティブにされ、トランザクション管理回路３６にアクノリッジを返される。
【０１３６】
以上のような書き込み処理を繰り返すことで、図１３のＣ１６に示すように、ＣＢＷの全ての０〜３０バイト（合計で３１バイト）がＣＢＷ領域６１に書き込まれる。
【０１３７】
そして、Ｃ１７に示すようにホストに対してＡＣＫが適正に返されると、Ｃ１８に示すようにトランザクション管理回路３６がＴｒａｎＥｎｄＰｕｌｓｅをアクティブにすると共に、Ｃ１９に示すようにＴｒａｎＳｔａｔｕｓをＳｕｃｃｅｓｓに設定して、トランザクションが成功したことをエンドポイント管理回路４０に伝える。
【０１３８】
すると、Ｃ２０に示すようにエンドポイントＥＰ１（図１０のレジスタ４３）のＥｎＣＢＷがＬレベル（０）に設定される。これにより、エンドポイント管理回路４０は、Ｃ２１に示すようにＥＰ１領域６３のアドレスＡＤ２を選択指示するＥＰｓｅｌを、バッファ管理回路５０に対して出力する。この結果、次のデータフェーズ（図５（Ａ）のＢ３参照）においては、バッファ管理回路５０のセレクタ５６は、ＥＰ１領域６３のアドレスＡＤ２を、バッファ６０に出力するＡｄｄｒｅｓｓとして選択するようになる。
【０１３９】
このように本実施形態では、コマンドフェーズ（第１のフェーズ）のデータ転送についてのアクノリッジＡＣＫがホストに返されたことを条件に（Ｃ１７参照）、エンドポイントＥＰ１のＥｎＣＢＷがＬレベルに設定され（Ｃ２０参照）、ホストからエンドポイントＥＰ１に向けて転送されるデータの書き込み領域が、ＣＢＷ領域６１（第１の記憶領域）からＥＰ１領域６３（第２の記憶領域）に切り替わる（Ｃ２１参照）。そして、データフェーズおいては、ホストからのデータは、切り替え後のＥＰ１領域６３に書き込まれるようになる。
【０１４０】
このように、ＡＣＫの返却の有無に応じて領域切り替えを行うようにすれば、誤りの無い確実な領域切り替えを、少ない処理負荷で実現できるようになる。
【０１４１】
２．４．２  データ長のエラー、ＣＲＣエラー
図１４は、コマンドフェーズで書き込まれたデータ長（ＣＢＷの長さ）にエラーがあった場合のタイミング波形図である。
【０１４２】
データ長にエラーがあった場合（データ長が短かったり、長かった場合）には、図１４のＤ１に示すように、ホストに対してＡＣＫは返されず、ＮＡＫが返される。そして、トランザクション管理回路３６はエンドポイント管理回路４０に対して、Ｄ２に示すようにデータ長にエラーがあったことを示すＴｒａｎＳｔａｔｕｓを出力する。すると、この場合には、図１３のＣ２０の場合とは異なり、図１４のＤ３に示すようにエンドポイントＥＰ１のＥｎＣＢＷはＬレベルにならない。このため、Ｄ４に示すようにＥＰｓｅｌも変化せず、ＣＢＷ領域６１からＥＰ１領域６３への領域切り替えは行われない。また、データ長にエラーがあるということは、ホストとデバイスとの間でフェーズが整合していない可能性があるため、このエンドポイントはストールされる。
【０１４３】
図１５は、コマンドフェーズにおいてＣＲＣエラーが生じた場合のタイミング波形図である。
【０１４４】
ＣＲＣエラーが生じた場合には、図１５のＥ１に示すようにホストに対してＡＣＫは返されない。そして、トランザクション管理回路３６はエンドポイント管理回路４０に対して、Ｅ２に示すようにＣＲＣエラーを示すＴｒａｎＳｔａｔｕｓを出力する。すると、この場合には、図１３のＣ２０の場合とは異なり、図１５のＥ３に示すようにエンドポイントＥＰ１のＥｎＣＢＷはＬレベルにならない。このため、Ｅ４に示すようにＥＰｓｅｌも変化せず、ＣＢＷ領域６１からＥＰ１領域６３への領域切り替えは行われない。この結果、ＡＣＫを受け取らなかったホストがリトライ処理を行い、ＣＢＷを再転送してきた場合には、そのＣＢＷはＥＰ１領域６３ではなくＣＢＷ領域６１に書き込まれるようになる。これにより適正なデータ転送処理を実現できる。
【０１４５】
２．４．３  トグルミス
図１６は、コマンドフェーズにおいてトグルミスが生じた場合のタイミング波形図である。
【０１４６】
まず、トグルミスについて図１７（Ａ）、（Ｂ）を用いて説明する。
【０１４７】
ＵＳＢにおいては、ホストとデバイスとの間でトランザクションのシーケンスを同期化するために、図１７（Ａ）に示すように、データのＰＩＤとしてＤＡＴＡ０及びＤＡＴＡ１を用意とすると共に、ホスト及びデバイスにトグルビット（ホストとデバイスとの間でトランザクションのシーケンスを同期化するためのビット）を持たせている。
【０１４８】
そして図１７（Ａ）に示すように、ホスト及びデバイスは、トランザクションが成功したと判断したことを条件に、データのＰＩＤに含まれるＤＡＴＡ０及びＤＡＴＡ１とトグルビットをトグルさせる。
【０１４９】
例えば図１７（Ａ）のＧ１に示すように、ホストは、送信したデータ（ＤＡＴＡ１）に対してＡＣＫが適正に返却されてくると、トランザクションは成功したと判断して、ホスト側のトグルビットをトグルさせる。
【０１５０】
また、Ｇ２に示すように、デバイスは、次に来るべきデータ（ＰＩＤ＝ＤＡＴＡ１）がホストから転送され、ＡＣＫをホストに返却すると、トランザクションは成功したと判断して、デバイス側のトグルビットをトグルさせる。
【０１５１】
一方、図１７（Ｂ）のＧ３に示すように、ホストは、送信したデータ（ＰＩＤ＝ＤＡＴＡ１）に対してＡＣＫが適正に返却されなかった場合には、トランザクションは不成功であると判断して、ホスト側のトグルビットをトグルさせない。そして、Ｇ４に示すように、ＰＩＤ＝ＤＡＴＡ１のデータをデバイスに対して再送する。
【０１５２】
すると、Ｇ５に示すように、デバイスは、ＰＩＤ＝ＤＡＴＡ０のデータを待っていたいのに、ＰＩＤ＝ＤＡＴＡ１のデータが転送されてきたため、トグルミスであると判断し、デバイス側のトグルビットをトグルさせない。そして、この場合にデバイスは、このＰＩＤ＝ＤＡＴＡ１のデータを破棄すると共に、ホストに対してＡＣＫを返却する。このようにすることで、ホストとデバイスとの間でトランザクションの連続性を確保できるようになる。
【０１５３】
本実施形態では、このようなトグルミスが発生した場合には、ホストに対してアクノリッジＡＣＫを返却しても、ＣＢＷ領域６１からＥＰ１領域６３への領域切り替えを行わないようにしている。
【０１５４】
即ち、トグルミスの場合には、図１６のＦ１に示すようにホストに対してＡＣＫを返す。そして、トランザクション管理回路３６はエンドポイント管理回路４０に対して、Ｆ２に示すようにトグルミスを示すＴｒａｎＳｔａｔｕｓを出力する。すると、この場合には、図１６のＦ３に示すようにエンドポイントＥＰ１のＥｎＣＢＷはＬレベルにならない。このため、Ｆ４に示すようにＥＰｓｅｌも変化せず、ＣＢＷ領域６１からＥＰ１領域６３への領域切り替えは行われない。これにより、トグルミスの場合にも適正なデータ転送処理を実現できる。
【０１５５】
２．５  比較例と本実施例との比較
図１８（Ａ）に比較例（図６（Ａ）〜（Ｄ））のタイミング波形図の例を示し、図１８（Ｂ）に本実施形態のタイミング波形図の例を示す。図１８（Ａ）、（Ｂ）では、バッファの記憶領域がダブルバッファ構造である場合のタイミング波形図である。
【０１５６】
例えば図１８（Ａ）の比較例では、コマンドフェーズにおいて、Ｈ１に示すようにホストからのＣＢＷがＥＰ１用のＦＩＦＯ（図６（Ａ）の６００）に書き込まれる。この際、ＦＩＦＯがダブルバッファ構造の場合には、Ｈ２に示すように、ホストからの１つめのＯＵＴデータについてはＦＩＦＯに書き込むことができる。しかしながら、次のＯＵＴデータについてはＦＩＦＯに書き込むことができないため、Ｈ３に示すように、ホストからの次のＯＵＴデータの要求に対しては、ＮＹＥＴを返すことになる。
【０１５７】
そして、その後にＨ４に示すように、ホストがＦＩＦＯに空きがあるかを問い合わせるＰＩＮＧパケットを送ってきても、Ｈ５に示すようにデバイスはＮＡＫを返すことになる。即ち、ＣＰＵのコマンド解釈が終了するまで、デバイスはホストに対してＮＡＫを返し続ける。そして、コマンド解釈が終了して、ＦＩＦＯに空きが生じると、Ｈ６に示すようにホストからのＯＵＴデータを受け入れて、ＦＩＦＯに書き込むことが可能になる。
【０１５８】
これに対して本実施形態では、図１８（Ｂ）のＨ７に示すようにＣＢＷ領域にＣＢＷが書き込まれ、適正にＡＣＫが返されると、Ｈ８に示すようにＥｎＣＢＷがＬレベルになる（図１３のＣ２０参照）。すると、図７（Ｂ）で説明したように、ＣＢＷ領域からＥＰ１領域への切り替えが行われ、エンドポイントＥＰ１はＥＰ１領域に接続されるようになる。
【０１５９】
従って、Ｈ９に示すように、データフェーズでのホストからのＯＵＴデータを、このＥＰ１領域に書き込むことができ、ホストに対してＡＣＫを返すことができる。そして、Ｈ１０に示すようにコマンド解釈が終了すると、Ｈ１１に示すように、その後はこのＥＰ１領域を用いて後段のハードディスクドライブ等との間でのＤＭＡ転送を開始できるようになり、ＵＳＢからのデータを効率良く転送できるようになる。
【０１６０】
このように本実施形態では、データのＤＭＡ転送を比較例に比べて早く開始できるようになるため、バス帯域のロスを最小限に抑えることができ、比較例に比べて実効的なデータ転送速度を向上できるようになる。
【０１６１】
図１９（Ａ）に比較例の場合のファームウェア（ＣＰＵ）の処理のフローチャートを示し、図１９（Ｂ）に本実施形態の場合のファームウェアの処理のフローチャートを示す。
【０１６２】
図１９（Ａ）の比較例では、ファームウェアは、まず、ＯＵＴトランザクションが完了したか否かを判断する（ステップＳ１）。即ち、図１８（Ａ）のＨ１のＡＣＫがデバイスから返却されるのを待つ。
【０１６３】
そして、ＯＵＴトランザクションが完了したと判断した場合には、ファームウェアは、ＥＰ１用のＦＩＦＯからＣＢＷを読み込む（ステップＳ２）。そして、データ長が３１バイトか否か（データ長が適正か否か）を判断し（ステップＳ３）、３１バイトの場合はコマンド解釈を行い（ステップＳ４）、コマンド処理に移行する（ステップＳ５）。一方、３１バイトでない場合には、エラー処理に移行する（ステップＳ６）。
【０１６４】
図１９（Ｂ）の本実施形態では、ファームウェアは、まず、図１８（Ｂ）のＨ７に示すＣＢＷのトランザクション（ＣＢＷ領域への書き込み）が適正に完了したか否かを判断する（ステップＳ１１）。そして、ＣＢＷのトランザクションが完了していない場合には、ＣＢＷエラーか否かを判断し（ステップＳ１２）、ＣＢＷエラーの場合にはエラー処理に移行する（ステップＳ１６）。一方、ＣＢＷエラーではない場合には、ステップＳ１１に戻り、ＣＢＷのトランザクションの完了を待つ。
【０１６５】
例えば図１４のデータ長エラーの場合には、ＣＢＷエラーと判断され、ステップＳ１６のエラー処理に移行する。一方、図１６のトグルミスの場合には、ＣＢＷエラーとは判断されずに、ステップＳ１２からステップＳ１１に戻る。
【０１６６】
一方、図１３のデータ転送成功の場合には、ＣＢＷのトランザクションが完了したと判断され、ＥｎＣＢＷがＬレベルになる。そして、ファームウェアは、ＣＢＷ領域からＣＢＷを読み込み（ステップＳ１３）、コマンド解釈を行い（ステップＳ１４）、コマンド処理に移行する（ステップＳ１５）。この場合に、図８（Ａ）、（Ｂ）で説明したように、本実施形態ではＣＢＷ領域がランダムアクセス可能に設定されているため、比較例に比べてコマンド解釈を早期に終了させることが可能になり、早期にＤＭＡ転送に移行できる。
【０１６７】
３．電子機器
次に、本実施形態のデータ転送制御装置を含む電子機器の例について説明する。
【０１６８】
例えば図２０（Ａ）に電子機器の１つであるプリンタの内部ブロック図を示し、図２１（Ａ）にその外観図を示す。ＣＰＵ（マイクロコンピュータ）５１０はシステム全体の制御などを行う。操作部５１１はプリンタをユーザが操作するためのものである。ＲＯＭ５１６には、制御プログラム、フォントなどが格納され、ＲＡＭ５１７はＣＰＵ５１０のワーク領域として機能する。ＤＭＡＣ５１８は、ＣＰＵ５１０を介さずにデータ転送を行うためのＤＭＡコントローラである。表示パネル５１９はプリンタの動作状態をユーザに知らせるためのものである。
【０１６９】
ＵＳＢを介してパーソナルコンピュータなどの他のデバイスから送られてきたシリアルの印字データは、データ転送制御装置５００によりパラレルの印字データに変換される。そして、変換後のパラレル印字データは、ＣＰＵ５１０又はＤＭＡＣ５１８により、印字処理部（プリンタエンジン）５１２に送られる。そして、印字処理部５１２においてパラレル印字データに対して所与の処理が施され、プリントヘッダなどからなる印字部（データの出力処理を行う装置）５１４により紙に印字されて出力される。
【０１７０】
図２０（Ｂ）に電子機器の１つであるスキャナの内部ブロック図を示し、図２１（Ｂ）にその外観図を示す。ＣＰＵ５２０はシステム全体の制御などを行う。操作部５２１はスキャナをユーザが操作するためのものである。ＲＯＭ５２６には制御プログラムなどが格納され、ＲＡＭ５２７はＣＰＵ５２０のワーク領域として機能する。ＤＭＡＣ５２８はＤＭＡコントローラである。
【０１７１】
光源、光電変換器などからなる画像読み取り部（データの取り込み処理を行う装置）５２２により原稿の画像が読み取られ、読み取られた画像のデータは画像処理部（スキャナエンジン）５２４により処理される。そして、処理後の画像データは、ＣＰＵ５２０又はＤＭＡＣ５２８によりデータ転送制御装置５００に送られる。データ転送制御装置５００は、このパラレルの画像データをシリアルデータに変換し、ＵＳＢを介してパーソナルコンピュータなどの他のデバイスに送信する。
【０１７２】
図２０（Ｃ）に電子機器の１つであるＣＤ−ＲＷドライブの内部ブロック図を示し、図２１（Ｃ）にその外観図を示す。ＣＰＵ５３０はシステム全体の制御などを行う。操作部５３１はＣＤ−ＲＷをユーザが操作するためのものである。ＲＯＭ５３６には制御プログラムなどが格納され、ＲＡＭ５３７はＣＰＵ５３０のワーク領域として機能する。ＤＭＡＣ５３８はＤＭＡコントローラである。
【０１７３】
レーザ、モータ、光学系などからなる読み取り＆書き込み部（データの取り込み処理を行う装置又はデータの記憶処理を行うための装置）５３３によりＣＤ−ＲＷ５３２から読み取られたデータは、信号処理部５３４に入力され、エラー訂正処理などの所与の信号処理が施される。そして、信号処理が施されたデータが、ＣＰＵ５３０又はＤＭＡＣ５３８によりデータ転送制御装置５００に送られる。データ転送制御装置５００は、このパラレルのデータをシリアルデータに変換し、ＵＳＢを介してパーソナルコンピュータなどの他のデバイスに送信する。
【０１７４】
一方、ＵＳＢを介して他のデバイスから送られてきたシリアルのデータは、データ転送制御装置５００によりパラレルのデータに変換される。そして、このパラレルデータは、ＣＰＵ５３０又はＤＭＡＣ５３８により信号処理部５３４に送られる。そして、信号処理部５３４においてこのパラレルデータに対して所与の信号処理が施され、読み取り＆書き込み部５３３によりＣＤ−ＲＷ５３２に記憶される。
【０１７５】
なお、図２０（Ａ）、（Ｂ）、（Ｃ）において、ＣＰＵ５１０、５２０、５３０の他に、データ転送制御装置５００でのデータ転送制御のためのＣＰＵを別に設けるようにしてもよい。
【０１７６】
本実施形態のデータ転送制御装置を電子機器に用いれば、ＵＳＢ２．０におけるＨＳモードでのデータ転送を適正に行うことが可能になる。従って、ユーザがパーソナルコンピュータなどによりプリントアウトの指示を行った場合に、少ないタイムラグで印字が完了するようになる。また、スキャナへの画像取り込みの指示の後に、少ないタイムラグで読み取り画像をユーザは見ることができるようになる。また、ＣＤ−ＲＷからのデータの読み取りや、ＣＤ−ＲＷへのデータの書き込みを高速に行うことができるようになる。
【０１７７】
また、本実施形態のデータ転送制御装置を電子機器に用いれば、製造コストが安い通常の半導体プロセスでも、ＨＳモードでのデータ転送が可能なデータ転送制御装置を製造できるようになる。従って、データ転送制御装置の低コスト化を図れ、電子機器の低コスト化も図れるようになる。また、データ転送の信頼性を向上でき、電子機器の信頼性も向上できるようになる。
【０１７８】
また本実施形態のデータ転送制御装置を電子機器に用いれば、ＣＰＵ上で動作するファームウェアの処理負荷が軽減され、安価なＣＰＵを用いることが可能になる。更に、データ転送制御装置の低コスト化、小規模化を図れるため、電子機器の低コスト化、小規模化も図れるようになる。
【０１７９】
なお本実施形態のデータ転送制御装置を適用できる電子機器としては、上記以外にも例えば、種々の光ディスクドライブ（ＣＤ−ＲＯＭ、ＤＶＤ）、光磁気ディスクドライブ（ＭＯ）、ハードディスクドライブ、ＴＶ、ＶＴＲ、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、ワードプロセッサなど種々のものを考えることができる。
【０１８０】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１８１】
例えば、本発明のデータ転送制御装置の構成は、図９、図１０、図１１に示す構成に限定されるものではなく、種々の変形実施が可能である。
【０１８２】
また、本実施形態では、第１の記憶領域がＣＢＷ領域（コマンド記憶領域）であり、第２の記憶領域がＥＰ１領域（データ記憶領域）である場合について説明したが、本発明はこれに限定されない。即ち、第１、第２の記憶領域に記憶される情報の種類は任意である。また、エンドポイントに設定される情報の数は３以上であってもよいし、情報の種類も任意である。
【０１８３】
また本実施形態では、ＵＳＢのＢｕｌｋ−Ｏｎｌｙ仕様への適用例を説明したが、本発明が適用されるのは、ＵＳＢのＢｕｌｋ−Ｏｎｌｙ仕様に限定されるものではない。
【０１８４】
また、第１、第２の記憶領域の切り替え手法も、図７（Ａ）〜図１９（Ｂ）で詳細に説明した手法に限定されず、種々の変形実施が可能である。
【０１８５】
また、本発明は、ＵＳＢ２．０でのデータ転送に適用されることが特に望ましいが、これに限定されるものではない。例えばＵＳＢ２．０と同様の思想に基づく規格やＵＳＢ２．０を発展させた規格におけるデータ転送にも本発明は適用できる。
【図面の簡単な説明】
【図１】図１（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）は、ＵＳＢのエンドポイントやトランザクション構成について説明するための図である。
【図２】図２（Ａ）、（Ｂ）は、ＣＢＩ仕様とＢｕｌｋ−Ｏｎｌｙ仕様について説明するための図である。
【図３】ＣＢＷのフォーマットについて示す図である。
【図４】ＣＳＷのフォーマットについて示す図である。
【図５】図５（Ａ）、（Ｂ）は、Ｂｕｌｋ−Ｏｎｌｙにおけるデータの書き込み処理、読み出し処理について説明するための図である。
【図６】図６（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）は、比較例の手法について説明するための図である。
【図７】図７（Ａ）、（Ｂ）、（Ｃ）は、本実施形態の手法について説明するための図である。
【図８】図８（Ａ）、（Ｂ）は、ＣＢＷ領域をランダムアクセス可能に設定する手法の利点について説明するための図である。
【図９】本実施形態のデータ転送制御装置の構成例を示す図である。
【図１０】トランザクション管理回路、エンドポイント管理回路、バッファ管理回路、バッファの詳細な構成の一例を示す図である。
【図１１】トランザクション管理回路、エンドポイント管理回路、バッファ管理回路、バッファの詳細な構成の他の例を示す図である。
【図１２】コマンドフェーズ開始時での本実施形態の動作について説明するためのタイミング波形図である。
【図１３】データ転送成功の場合の本実施形態の動作について説明するためのタイミング波形図である。
【図１４】データ長エラーの場合の本実施形態の動作について説明するためのタイミング波形図である。
【図１５】ＣＲＣエラーの場合の本実施形態の動作について説明するためのタイミング波形図である。
【図１６】トグルミスの場合の本実施形態の動作について説明するためのタイミング波形図である。
【図１７】図１７（Ａ）、（Ｂ）は、トグルビットやトグルミスについて説明するための図である。
【図１８】図１８（Ａ）、（Ｂ）は、比較例と本実施形態のタイミング波形図である。
【図１９】図１９（Ａ）、（Ｂ）は、比較例と本実施形態でのファームウェアの処理を示すフローチャートである。
【図２０】図２０（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の内部ブロック図の例である。
【図２１】図２１（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
１０    ＥＰ１領域（第２の記憶領域）
１２    ＣＢＷ領域（第１の記憶領域）
ＳＷ    スイッチ（切り替え手段）
２０    トランシーバマクロ
２２    トランシーバ回路
２４    クロック生成回路
３０    ＳＩＥ
３２    パケットハンドラ回路
３３    ＣＲＣ処理回路
３４    サスペンド＆レジューム回路
３６    トランザクション管理回路
４０    エンドポイント管理回路
４２    ＥＰ０レジスタ
４３    ＥＰ１レジスタ
４４    ＥＰ２レジスタ
５０    バッファ管理回路
５１    ＣＢＷアドレス生成回路
５２    ＥＰ０アドレス生成回路
５３    ＥＰ１アドレス生成回路
５４    ＥＰ２アドレス生成回路
５６    セレクタ
５７    セレクタ
６０    バッファ
６１    ＣＢＷ領域（第１の記憶領域）
６２    ＥＰ０領域
６３    ＥＰ１領域（第２の記憶領域）
６４    ＥＰ２領域
６５    ＦＩＦＯ（ＣＢＷ）
６６    ＦＩＦＯ（ＥＰ０）
６７    ＦＩＦＯ（ＥＰ１）
６８    ＦＩＦＯ（ＥＰ２）
７０    バルク転送管理回路
８０    ＤＭＡＣ
８２    ＤＭＡカウンタ
【図１】
0003680762.tif 000002
【図２】
0003680762.tif 000003
【図３】
0003680762.tif 000004
【図４】
0003680762.tif 000005
【図５】
0003680762.tif 000006
【図６】
0003680762.tif 000007
【図７】
0003680762.tif 000008
【図８】
0003680762.tif 000009
【図９】
0003680762.tif 000010
【図１０】
0003680762.tif 000011
【図１１】
0003680762.tif 000012
【図１２】
0003680762.tif 000013
【図１３】
0003680762.tif 000014
【図１４】
0003680762.tif 000015
【図１５】
0003680762.tif 000016
【図１６】
0003680762.tif 000017
【図１７】
0003680762.tif 000018
【図１８】
0003680762.tif 000019
【図１９】
0003680762.tif 000020
【図２０】
0003680762.tif 000021
【図２１】
0003680762.tif 000022