(57)【特許請求の範囲】
【請求項１】
ＵＳＢ（Universal Serial Bus)を介してデータを送受信するデータ転送制御装置であって、
転送条件情報が設定される転送条件レジスタと、
転送条件レジスタに設定される転送条件情報に基づいて、コントロール転送を含むデータ転送を行う転送コントローラと、
転送データを記憶するパケットバッファのアクセス制御を行うバッファコントローラとを含み、
前記転送コントローラは、
自動コントロール転送の開始が指示された場合に、セットアップステージのトランザクションを自動発生してセットアップステージのパケットを自動転送し、次に、転送すべきデータが存在する場合にはデータステージのトランザクションを自動発生してデータステージのパケットを自動転送し、次に、ステータスステージのトランザクションを自動発生してステータスステージのパケットを自動転送し、
前記転送条件レジスタは、
データステージの有無の情報と、データステージでの転送方向が、転送条件情報として設定され、
前記転送コントローラは、
セットアップステージのトランザクションが完了した場合に、前記転送条件情報として設定されたデータステージでの転送方向とデータステージの有無の情報に基づいて、データステージのＩＮトランザクションの実行、データステージのＯＵＴトランザクションの実行、或いはデータステージ無しのいずれかを選択する回路を含むことを特徴とするデータ転送制御装置。
【請求項２】
請求項１において、
前記転送条件レジスタに、
デバイスリクエストのデータと、データステージでの転送データのトータルサイズが、転送条件情報として設定されることを特徴とするデータ転送制御装置。
【請求項３】
請求項１又は２において、
前記転送条件レジスタに、
マックスパケットサイズが、転送条件情報として設定されることを特徴とするデータ転送制御装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記転送コントローラは、
ステータスステージのトランザクションが完了した場合に、処理部に対して割り込みを発生することを特徴とするデータ転送制御装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記転送コントローラは、
エンドポイントからストールを受信した場合に、自動コントロール転送を中止し、処理部に対して割り込みを発生することを特徴とするデータ転送制御装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記転送コントローラは、
自動コントロール転送の開始が指示された場合に、セットアップステージのトランザクションの開始を指示する回路と、
データステージのＩＮトランザクションの実行が選択された場合には、データステージのＩＮトランザクションの開始を指示し、データステージのＯＵＴトランザクションの実行が選択された場合には、データステージのＯＵＴトランザクションの開始を指示する回路と、
開始したデータステージのＩＮトランザクションが完了した場合には、ステータスステージのＯＵＴトランザクションの開始を指示し、開始したデータステージのＯＵＴトランザクションが完了した場合、或いはデータステージ無しが選択された場合には、ステータスステージのＩＮトランザクションの開始を指示する回路とを含むことを特徴とするデータ転送制御装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記パケットバッファに、
各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域が確保され、
各パイプ領域と各エンドポイントとの間でのデータ転送の転送条件情報が、複数の転送条件レジスタの各転送条件レジスタに設定され、
前記転送コントローラは、
コントロール転送のパイプ領域に対応する転送条件レジスタに設定された転送条件情報に基づいて、コントロール転送のトランザクションを自動発生し、コントロール転送のパイプ領域とコントロール転送のエンドポイントとの間で、自動コントロール転送を行うことを特徴とするデータ転送制御装置。
【請求項８】
請求項７において、
前記パイプ領域は、
コントロール転送のエンドポイントに専用のパイプ領域と、任意のエンドポイントに割り当て可能な汎用のパイプ領域を含み、
前記転送コントローラは、
前記専用のパイプ領域を用いて、自動コントロール転送を行うことを特徴とするデータ転送制御装置。
【請求項９】
請求項１乃至８のいずれかにおいて、
ホストの役割として動作するホスト動作のステートと、ペリフェラルの役割として動作するペリフェラル動作のステートを含む複数のステートの制御を行うステートコントローラを含み、
前記転送コントローラは、
ホスト動作時において、ホストとしてのデータ転送を行うホストコントローラと、
ペリフェラル動作時において、ペリフェラルとしてのデータ転送を行うペリフェラルコントローラとを含み、
前記ホストコントローラは、
ホスト動作時に自動コントロール転送を行うことを特徴とするデータ転送制御装置。
【請求項１０】
請求項１乃至９のいずれかにおいて、
ＵＳＢ（Universal Serial Bus)のＯＴＧ（Ｏｎ−Ｔｈｅ−Ｇｏ）規格に準拠したデータ転送を行うことを特徴とするデータ転送制御装置。
【請求項１１】
請求項１乃至１０のいずれかのデータ転送制御装置と、
前記データ転送制御装置及びＵＳＢを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置と、
前記データ転送制御装置のデータ転送を制御する処理部と、
を含むことを特徴とする電子機器。
【請求項１２】
ＵＳＢ（Universal Serial Bus)を介してデータを送受信するデータ転送制御装置のためのデータ転送制御方法であって、
転送条件レジスタに転送条件情報を設定し、
前記転送条件レジスタに設定される転送条件情報に基づいて、コントロール転送を含むデータ転送を行い、
転送データを記憶するパケットバッファのアクセス制御を行うと共に、
自動コントロール転送の開始が指示された場合に、セットアップステージのトランザクションを自動発生してセットアップステージのパケットを自動転送し、次に、転送すべきデータが存在する場合にはデータステージのトランザクションを自動発生してデータステージのパケットを自動転送し、次に、ステータスステージのトランザクションを自動発生してステータスステージのパケットを自動転送し、
前記転送条件レジスタに、データステージの有無の情報と、データステージでの転送方向を、転送条件情報として設定し、
セットアップステージのトランザクションが完了した場合に、前記転送条件情報として設定されたデータステージでの転送方向とデータステージの有無の情報に基づいて、データステージのＩＮトランザクションの実行、データステージのＯＵＴトランザクションの実行、或いはデータステージ無しのいずれかを選択することを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御装置、電子機器及びデータ転送制御方法に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
ＨＳ（High Speed）モードをサポートするＵＳＢ（Universal Serial Bus)２．０の市場が順調に拡大しているなか、ＵＳＢ  Implementers Forum（ＵＳＢ−ＩＦ）によって、ＵＳＢ Ｏｎ−Ｔｈｅ−Ｇｏ（ＯＴＧ）と呼ばれるインターフェース規格が策定された。ＵＳＢ２．０を拡張する形で策定されたＯＴＧ規格（ＯＴＧ１．０）は、ＵＳＢインターフェースの新たな付加価値を生む可能性を秘めており、その特質を生かしたアプリケーションの登場が待たれている。
【０００３】
このＯＴＧによれば、これまでＵＳＢを介してホスト（パーソナルコンピュータ等）に接続されていたペリフェラル（周辺機器）に、ホスト機能を持たせることができる。これにより、ペリフェラル同士をＵＳＢで接続してデータを転送することが可能になり、例えばデジタルカメラとプリンタとをダイレクトに接続して、デジタルカメラの画像を印刷することが可能になる。また、デジタルカメラやデジタルビデオカメラをストレージ装置に接続して、データを保存することが可能になる。
【０００４】
しかしながら、ＯＴＧによりホスト機能を持たせるペリフェラルには、低性能のＣＰＵ（処理部）が組み込まれているのが一般的である。従って、ホスト機能の追加により、ペリフェラルが有するＣＰＵ（ファームウェア）の処理負荷が重くなったり、処理が複雑化すると、他の処理に支障が生じたり、機器の設計期間が長期化するなどの問題が生じる。
【０００５】
また、ＯＴＧによりホスト機能を持たせることで、データ転送制御装置が大規模化してしまうと、データ転送制御装置の高コスト化や、データ転送制御装置が組み込まれる機器（電子機器）の高コスト化等を招く。
【０００６】
また、ＵＳＢでは４種類の転送方式が定義されており、その中にはコントロール転送と呼ばれる転送方式がある。このコントロール転送は、ペリフェラルの制御に必要な情報をやり取りするための転送方式であり、ＵＳＢ機器はこのコントロール転送を必ずサポートしなければならない。
【０００７】
そして、このコントロール転送は、セットアップステージ、データステージ、ステータスステージで構成されるが、これを各ステージ毎に制御、管理すると、ＣＰＵ（処理部、ファームウェア）の処理負荷が重くなってしまうという問題が生じる。
【０００８】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、コントロール転送時の処理部の処理負荷の軽減等を図れるデータ転送制御装置、電子機器及びデータ転送制御方法を提供することにある。
【０００９】
【課題を解決するための手段】
本発明は、バスを介したデータ転送のためのデータ転送制御装置であって、転送条件情報が設定される転送条件レジスタと、転送条件レジスタに設定される転送条件情報に基づいて、コントロール転送を含むデータ転送を行う転送コントローラと、転送データを記憶するパケットバッファのアクセス制御を行うバッファコントローラとを含み、前記転送コントローラが、自動コントロール転送の開始が指示された場合に、セットアップステージのトランザクションを自動発生してセットアップステージのパケットを自動転送し、次に、転送すべきデータが存在する場合にはデータステージのトランザクションを自動発生してデータステージのパケットを自動転送し、次に、ステータスステージのトランザクションを自動発生してステータスステージのパケットを自動転送するデータ転送制御装置に関係する。
【００１０】
本発明では、処理部（ファームウェア）等により転送条件情報が設定され、自動コントロール転送の開始が指示されると、セットアップステージのトランザクション、データステージのトランザクション（データステージ有りの場合）、ステータスステージのトランザクションがシーケンシャルに自動発生する。そして、各ステージのトランザクションに必要なパケットが自動転送される。このように本発明では、転送条件情報を設定し、自動コントロール転送の開始を指示するだけで、セットアップステージの開始からステータスステージの完了までの一連の処理が、転送コントローラにより自動的に行われる。従って、ステージ単位でデータ転送の制御、管理を行う手法に比べて、コントロール転送時の処理部の処理負荷を軽減できる。
【００１１】
また本発明では、前記転送条件レジスタに、デバイスリクエストのデータと、データステージでの転送データのトータルサイズが、転送条件情報として設定されるようにしてもよい。
【００１２】
このように、デバイスリクエストのデータを転送条件レジスタに設定することで、セットアップステージにおいて、デバイスリクエストのデータを自動転送できるようになる。また、転送データのトータルサイズを転送条件レジスタに設定することで、データステージにおいて、そのトータルサイズのデータを、データパケットを用いて自動転送できるようになる。
【００１３】
また本発明では、前記転送条件レジスタに、データステージの有無の情報と、データステージでの転送方向と、マックスパケットサイズが、転送条件情報として設定されるようにしてもよい。
【００１４】
なお、データステージの有無の情報やデータステージでの転送方向などは、デバイスリクエストのデータ（コマンド）をデコードすることで得るようにしてもよい。
【００１５】
また本発明では、前記転送コントローラが、ステータスステージのトランザクションが完了した場合に、処理部に対して割り込みを発生するようにしてもよい。
【００１６】
このようにすれば、自動コントロール転送の開始を指示した後、割り込みが発生するまでの期間を、処理部が他の処理に使用できるようになり、処理の効率化を図れる。
【００１７】
また本発明では、前記転送コントローラが、エンドポイントからストールを受信した場合に、自動コントロール転送を中止し、処理部に対して割り込みを発生するようにしてもよい。
【００１８】
このようにすれば、エンドポイントからのストールの受信時に、自動コントロール転送を無効にして、適正な処理を行うことが可能になる。
【００１９】
また本発明では、前記転送コントローラが、自動コントロール転送の開始が指示された場合に、セットアップステージのトランザクションの開始を指示する回路と、開始したセットアップステージのトランザクションが完了した場合に、データステージでの転送方向とデータステージの有無の情報に基づいて、データステージのＩＮトランザクションの実行、データステージのＯＵＴトランザクションの実行、或いはデータステージ無しのいずれかを選択する回路と、データステージのＩＮトランザクションの実行が選択された場合には、データステージのＩＮトランザクションの開始を指示し、データステージのＯＵＴトランザクションの実行が選択された場合には、データステージのＯＵＴトランザクションの開始を指示する回路と、開始したデータステージのＩＮトランザクションが完了した場合には、ステータスステージのＯＵＴトランザクションの開始を指示し、開始したデータステージのＯＵＴトランザクションが完了した場合、或いはデータステージ無しが選択された場合には、ステータスステージのＩＮトランザクションの開始を指示する回路とを含むようにしてもよい。
【００２０】
このようにすれば、セットアップステージ、データステージ、ステータスステージの一連のトランザクションを、処理部の介在無しに、自動的に発生できるようになる。
【００２１】
また本発明では、前記パケットバッファに、各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域が確保され、各パイプ領域と各エンドポイントとの間でのデータ転送の転送条件情報が、複数の転送条件レジスタの各転送条件レジスタに設定され、前記転送コントローラが、コントロール転送のパイプ領域に対応する転送条件レジスタに設定された転送条件情報に基づいて、コントロール転送のトランザクションを自動発生し、コントロール転送のパイプ領域とコントロール転送のエンドポイントとの間で、自動転送コントロール転送を行うようにしてもよい。
【００２２】
本発明では、パケットバッファに対して複数のパイプ領域（バッファ領域）が確保（allocate）される。この場合に、各パイプ領域は、バスの各エンドポイントに対応して確保される。また、各パイプ領域には、それに対応する各エンドポイントとの間で転送（送信、受信）されるデータが記憶（バッファリング）される。バッファコントローラは、このようなパイプ領域が確保されたパケットバッファ（バッファ）のアクセス制御（領域管理）を行う。
【００２３】
そして本発明では、各パイプ領域と各エンドポイントとの間でのデータ転送の転送条件情報（エンドポイント情報、パイプ情報）が各転送条件レジスタ（パイプレジスタ）に設定される。この場合にコントロール転送の転送条件情報は、コントロール転送のパイプ領域に割り当てられる転送条件レジスタに設定される。そして、転送コントローラは、この転送条件レジスタに設定された転送条件情報に基づいて、コントロール転送のエンドポイントに対するトランザクションを自動発生し、パイプ領域とエンドポイントとの間で自動コントロール転送を行う。これにより、データ転送制御装置の制御等を行う処理部の処理負荷を軽減できる。
【００２４】
また本発明では、前記パイプ領域が、コントロール転送のエンドポイントに専用のパイプ領域と、任意のエンドポイントに割り当て可能な汎用のパイプ領域を含み、前記転送コントローラが、前記専用のパイプ領域を用いて、自動コントロール転送を行うようにしてもよい。
【００２５】
このように、コントロール転送のエンドポイントに専用のパイプ領域を設けることで、ユーザの混乱等を防止できる。また、任意のエンドポイントに割り当て可能な汎用のパイプ領域を確保することで、パイプ領域とエンドポイントとの対応づけを動的に変化させることが可能になり、データ転送の効率的なスケジューリングが可能になる。
【００２６】
また本発明では、ホストの役割として動作するホスト動作のステートと、ペリフェラルの役割として動作するペリフェラル動作のステートを含む複数のステートの制御を行うステートコントローラを含み、前記転送コントローラが、ホスト動作時において、ホストとしてのデータ転送を行うホストコントローラと、ペリフェラル動作時において、ペリフェラルとしてのデータ転送を行うペリフェラルコントローラとを含み、前記ホストコントローラが、ホスト動作時に自動コントロール転送を行うようにしてもよい。
【００２７】
本発明によれば、例えば、ステートコントローラにより制御されるステートが、ホスト動作のステートになると、ホストコントローラにより、ホストの役割としてのデータ転送が行われる。また、ステートコントローラにより制御されるステートが、ペリフェラル動作のステートになると、ペリフェラルコントローラにより、ペリフェラルの役割としてのデータ転送が行われる。これにより、いわゆるデュアルロール・デバイス機能を実現できるようになる。
【００２８】
そして本発明では、ホストコントローラが、ホスト動作時に、コントロール転送の一連のステージのトランザクションを自動発生する自動コントロール転送を行う。これにより、デュアルロール・デバイス機能を実現しながら、ホスト動作時における処理部の処理負荷を軽減できる。
【００２９】
また本発明では、ＵＳＢ（Universal Serial Bus)のＯＴＧ（Ｏｎ−Ｔｈｅ−Ｇｏ）規格に準拠したデータ転送を行うようにしてもよい。
【００３０】
また本発明は、上記のいずれかのデータ転送制御装置と、前記データ転送制御装置及びバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置と、前記データ転送制御装置のデータ転送を制御する処理部とを含む電子機器に関係する。
【００３１】
また本発明は、バスを介したデータ転送のためのデータ転送制御方法であって、転送条件レジスタに転送条件情報を設定し、転送条件レジスタに設定される転送条件情報に基づいて、コントロール転送を含むデータ転送を行い、転送データを記憶するパケットバッファのアクセス制御を行うと共に、自動コントロール転送の開始が指示された場合に、セットアップステージのトランザクションを自動発生してセットアップステージのパケットを自動転送し、次に、転送すべきデータが存在する場合にはデータステージのトランザクションを自動発生してデータステージのパケットを自動転送し、次に、ステータスステージのトランザクションを自動発生してステータスステージのパケットを自動転送するデータ転送制御方法に関係する。
【００３２】
【発明の実施の形態】
以下、本実施形態について説明する。
【００３３】
なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００３４】
１．ＯＴＧ
まず、ＯＴＧ（ＵＳＢ Ｏｎ−Ｔｈｅ−Ｇｏ）について簡単に説明する。
【００３５】
１．１  Ａデバイス、Ｂデバイス
ＯＴＧでは、コネクタの規格として、図１（Ａ）に示すようなMini-Ａプラグ、Mini-Ｂプラグが定義されている。また、これらのMini-Ａプラグ、Mini−Ｂプラグ（広義にはケーブルの第１、第２のプラグ）の両方を接続できるコネクタとして、Mini-ＡＢレセプタクル（receptacle）が定義されている。
【００３６】
そして例えば図１（Ｂ）のように、ＵＳＢケーブルのMini-Ａプラグに電子機器Ｐが接続され、Mini-Ｂプラグに電子機器Ｑが接続されると、電子機器ＰはＡデバイスに設定され、電子機器ＱはＢデバイスに設定される。一方、図１（Ｃ）に示すように、Mini-Ｂプラグ、Mini-Ａプラグが電子機器Ｐ、Ｑに接続されると、電子機器Ｐ、Ｑは、各々、Ｂデバイス、Ａデバイスに設定される。
【００３７】
Mini-Ａプラグ内ではＩＤピンがＧＮＤに接続されており、Mini-Ｂプラグ内ではＩＤピンはフローティング状態になっている。電子機器は、内蔵するプルアップ抵抗回路を用いて、このＩＤピンの電圧レベルを検出することで、自身がMini-Ａプラグに接続されたのか、或いはMini-Ｂプラグに接続されたのかを判断する。
【００３８】
ＯＴＧでは、Ａデバイス（マスター）が、電源（ＶＢＵＳ）を供給する側（供給元）になり、Ｂデバイス（スレイブ）が、電源の供給を受ける側（供給先）になる。また、Ａデバイスは、デフォルトのステートがホストになり、Ｂデバイスは、デフォルトのステートがペリフェラル（周辺機器）になる。
【００３９】
１．２  デュアルロール・デバイス
ＯＴＧでは、ホスト（簡易ホスト）としての役割とペリフェラルとしての役割の両方を持つことができるデュアルロール・デバイス（Dual-Role Device）が定義されている。
【００４０】
デュアルロール・デバイスは、ホストにもペリフェラルにもなれる。そして、デュアルロール・デバイスに接続された相手が、従来のＵＳＢ規格におけるホストやペリフェラルである場合には、デュアルロール・デバイスの役割は一意に定まる。つまり、接続相手がホストであれば、デュアルロール・デバイスはペリフェラルになり、接続相手がペリフェラルであれば、デュアルロール・デバイスはホストになる。
【００４１】
一方、接続相手がデュアルロール・デバイスである場合には、両方のデュアルロール・デバイスは、お互いにホストとペリフェラルの役割を交換できる。
【００４２】
１．３  ＳＲＰ、ＨＮＰ
デュアルロール・デバイスは、図２（Ａ）、（Ｂ）に示すようなセッション開始要求手順ＳＲＰ（Session Request Protocol）やホスト交換手順ＨＮＰ（Host Negotiation Protocol）の機能を持つ。
【００４３】
ここでセッション開始要求手順ＳＲＰは、ＢデバイスがＡデバイスに対して、ＶＢＵＳ（電源）の供給を要求するプロトコルである。
【００４４】
バスを使用しない場合にＯＴＧでは、ＡデバイスはＶＢＵＳの供給を停止できる。これにより、Ａデバイスが例えば小型の携帯機器であった場合に、無駄な電力消費を防止できる。そして、ＡデバイスがＶＢＵＳの供給を停止した後に、ＢデバイスがＶＢＵＳを供給してもらいたい場合には、このＳＲＰを使用して、Ａデバイスに対してＶＢＵＳの供給の再開を要求する。
【００４５】
図２（Ａ）にＳＲＰの流れを示す。図２（Ａ）に示すように、Ｂデバイスは、データ・ライン・パルシングとＶＢＵＳパルシングを行うことで、Ａデバイスに対してＶＢＵＳの供給を要求する。そして、ＡデバイスによるＶＢＵＳの供給の開始後に、Ｂデバイスのペリフェラル動作（peripheral operation）と、Ａデバイスのホスト動作（host operation）が開始する。
【００４６】
図１（Ａ）〜図１（Ｃ）で説明したように、デュアルロール・デバイス同士の接続では、Mini-Ａプラグが接続された側であるＡデバイスがデフォルトのホストとなり、Mini-Ｂプラグが接続された側であるＢデバイスがデフォルトのペリフェラルになる。そして、ＯＴＧでは、プラグの抜き差しを行わなくても、ホストとペリフェラルの役割を交換できる。ＨＮＰは、このホストとペリフェラルの役割を交換するためのプロトコルである。
【００４７】
ＨＮＰの流れを図２（Ｂ）に示す。デフォルトのホストとして動作するＡデバイスが、バスの使用を終了すると、バスがアイドル状態になる。その後に、Ｂデバイスがデータ信号線ＤＰ（Ｄ＋）のプルアップ抵抗を無効にすると、ＡデバイスがＤＰのプルアップ抵抗を有効にする。これにより、Ａデバイスの役割はホストからペリフェラルに変わり、ペリフェラルとしての動作を開始する。また、Ｂデバイスの役割はペリフェラルからホストに変わり、ホストとしての動作を開始する。
【００４８】
その後、Ｂデバイスが、バスの使用を終了し、ＡデバイスがＤＰのプルアップ抵抗を無効にすると、Ｂデバイスが、ＤＰのプルアップ抵抗を有効にする。これにより、Ｂデバイスの役割はホストからペリフェラルに戻り、ペリフェラルとしての動作を再開する。また、Ａデバイスの役割はペリフェラルからホストに戻り、ホストとしての動作を再開する。
【００４９】
以上に説明したＯＴＧによれば、携帯電話やデジタルカメラなどの携帯機器をＵＳＢのホストとして動作させ、携帯機器同士をピア・ツー・ピアで接続してデータ転送を行うことが可能になる。これにより、ＵＳＢインターフェースに新たな付加価値を生むことができ、これまでには存在しなかったアプリケーションを創出できる。
【００５０】
２．ＯＨＣＩ
さて、従来のＵＳＢでは、ホストであるパーソナルコンピュータが有するデータ転送制御装置（ホストコントローラ）は、マイクロソフト社が提唱したＯＨＣＩ（Open Host Controller Interface）や、ＵＨＣＩ（Universal Host Controller Interface）といった規格に準拠していた。また、使用されるＯＳ（Operating System）も、マイクロソフト社のWindowsやアップル社のマッキントッシュのＯＳなどに限定されていた。
【００５１】
しかしながら、ＯＴＧのターゲット・アプリケーションである小型携帯機器では、組み込まれるＣＰＵのアーキテクチャや、使用されるＯＳは千差万別である。更に、パーソナルコンピュータのホストコントローラ向けに規格化されたＯＨＣＩやＵＨＣＩは、ＵＳＢホストとしての機能をフルに実装することを前提としており、小型携帯機器への実装に最適であるとは言い難い。
【００５２】
例えば、図３（Ａ）に、ＯＨＣＩで使用されるリスト構造のディスクリプタの一例を示す。
【００５３】
図３（Ａ）において、エンドポイントディスクリプタＥＤ１、ＥＤ２、ＥＤ３は、リンクポインタによりリンクされており、エンドポイント１、２、３とのコミュニケーションに必要な情報が含まれている。そして、これらのＥＤ１、ＥＤ２、ＥＤ３には、転送ディスクリプタＴＤ１１〜ＴＤ１３、ＴＤ２１、ＴＤ３１〜ＴＤ３２がリンクポインタにより更にリンクされている。そして、これらの転送ディスクリプタには、エンドポイント１、２、３との間で転送するパケットデータに必要な情報が含まれている。
【００５４】
図３（Ａ）のリスト構造のディスクリプタは、図３（Ｂ）のＣＰＵ６１０（広義には処理部）上で動作するファームウェア（ホストコントローラ・ドライバ）が作成し、システムメモリ６２０に書き込む。即ち、ファームウェアは、システム中のエンドポイントに対してエンドポイントディスクリプタを割り当て、エンドポイント情報等に基づいてエンドポイントディスクリプタ、転送ディスクリプタを作成する。そして、これらのディスクリプタをリンクポインタでリンクさせて、システムメモリ６２０に書き込む。
【００５５】
データ転送制御装置６００（ホストコントローラ）は、システムメモリ６２０に書き込まれたリスト構造のディスクリプタを読み出し、エンドポイントディスクリプタや転送ディスクリプタに記述される情報に基づいて、データ転送を実行する。
【００５６】
具体的には、データ転送制御装置６００（ホストコントローラ）は、ＥＤ１に基づいてエンドポイント１の情報を設定し、ＥＤ１にリンクされるＴＤ１１に基づいて、エンドポイント１との間でデータ転送を行う。次に、ＥＤ２に基づいてエンドポイント２の情報を設定し、ＥＤ２にリンクされるＴＤ２１に基づいて、エンドポイント２との間でデータ転送を行う。同様にして、データ転送制御装置６００は、ＴＤ３１、ＴＤ１２、ＴＤ３２、ＴＤ１３に基づいてデータ転送を実行する。
【００５７】
以上のように、ＯＨＣＩ準拠のデータ転送制御装置（ホストコントローラ）では、ＣＰＵ上で動作するファームウェア（ホストコントローラ・ドライバ）が、図３（Ａ）に示すような複雑な構造のディスクリプタを作成しなければならない。従って、ＣＰＵの処理負荷が非常に重い。
【００５８】
この場合、従来のＵＳＢでは、ホストの役割が割り当てられるのはパーソナルコンピュータだけであり、このパーソナルコンピュータは高性能のＣＰＵを有している。従って、図３（Ａ）に示すような複雑な構造のディスクリプタの作成も、余裕を持って行うことが可能であった。
【００５９】
ところが、ＯＴＧのターゲットアプリケーションである小型携帯機器（デジタルカメラ、携帯電話等）に組み込まれるＣＰＵ（embedded CPU）は、パーソナルコンピュータのＣＰＵに比べて、性能が格段に低いのが一般的である。従って、携帯機器にＯＴＧのホスト動作を行わせると、携帯機器に組み込まれるＣＰＵに過大な負荷がかかり、他の処理に支障が生じたり、データ転送のパフォーマンスが低下するなどの問題が生じる。
【００６０】
３．構成例
図４に、以上のような問題を解決できる本実施形態のデータ転送制御装置の構成例を示す。なお、本実施形態のデータ転送制御装置は、図４の全ての回路ブロックを含む必要はなく、その一部の回路ブロックを省略してもよい。
【００６１】
トランシーバ１０（以下、適宜Ｘｃｖｒと呼ぶ）は、差動データ信号ＤＰ、ＤＭを用いてＵＳＢ（広義にはバス）のデータを送受信する回路であり、ＵＳＢの物理層（ＰＨＹ）回路１２を含む。より具体的にはトランシーバ１０は、ＤＰ、ＤＭのラインステート（Ｊ、Ｋ、ＳＥ０等）の生成、シリアル／パラレル変換、パラレル／シリアル変換、ビットスタッフィング、ビットアンスタッフィング、ＮＲＺＩデコード、ＮＲＺＩエンコードなどを行う。なお、トランシーバ１０をデータ転送制御装置の外部に設けるようにしてもよい。
【００６２】
ＯＴＧコントローラ２０（広義にはステートコントローラ。以下、適宜ＯＴＧＣと呼ぶ）は、ＯＴＧのＳＲＰ機能やＨＮＰ機能（図２（Ａ）、（Ｂ）参照）を実現するための種々の処理を行う。即ち、ＯＴＧコントローラ２０は、ホストの役割として動作するホスト動作のステートや、ペリフェラルの役割として動作するペリフェラル動作のステートなどを含む複数のステートの制御を行う。
【００６３】
より具体的には、ＯＴＧ規格には、デュアルロール・デバイスのＡデバイス時（図１（Ｂ）、（Ｃ）参照）のステート遷移やＢデバイス時のステート遷移が定義されている。ＯＴＧコントローラ２０は、これらのステート遷移を実現するためのステートマシーンを含む。また、ＯＴＧコントローラ２０は、ＵＳＢのデータラインステートや、ＶＢＵＳレベルや、ＩＤピンのステートを検出（監視）する回路を含む。そして、ＯＴＧコントローラ２０が含むステートマシーンは、これらの検出情報に基づいて、そのステート（例えば、ホスト、ペリフェラル、サスペンド又はアイドルなどのステート）を変化させる。この場合のステートの遷移は、ハードウェア回路により実現してもよいし、ファームウェアがステートコマンドをレジスタに設定することで実現してもよい。そして、ステートが遷移すると、ＯＴＧコントローラ２０は、遷移後のステートに基づいて、ＶＢＵＳを制御したり、ＤＰ、ＤＭのプルアップ抵抗／プルダウン抵抗の接続／非接続を制御する。また、ホストコントローラ５０（以下、適宜ＨＣと呼ぶ）、ペリフェラルコントローラ６０（以下、適宜ＰＣと呼ぶ）のイネーブル／ディスエーブルを制御する。
【００６４】
ＨＣ／ＰＣ切り替え回路３０（ＨＣ／ＰＣ・コモン回路）は、トランシーバ１０と、ホストコントローラ５０又はペリフェラルコントローラ６０との間の接続の切り替え制御を行う。また、ＵＳＢのデータ（ＤＰ、ＤＭ）のラインステートの生成の指示をトランシーバ１０に対して行う。なお、接続の切り替え制御は、ＨＣ／ＰＣセレクタ３２により実現され、ラインステートの生成指示は、ラインステートコントローラ３４により実現される。
【００６５】
例えばＯＴＧコントローラ２０が、ホスト動作時（ホストステート時）にＨＣイネーブル信号をアクティブにすると、ＨＣ／ＰＣ切り替え回路３０（ＨＣ／ＰＣセレクタ３２）は、トランシーバ１０とホストコントローラ５０を接続する。一方、ＯＴＧコントローラ２０が、ペリフェラル動作時（ペリフェラルステート時）にＰＣイネーブル信号をアクティブにすると、ＨＣ／ＰＣ切り替え回路３０は、トランシーバ１０とペリフェラルコントローラ６０を接続する。このようにすることで、ホストコントローラ５０とペリフェラルコントローラ６０とを排他的に動作させることが可能になる。
【００６６】
転送コントローラ４０は、ＵＳＢ（広義にはバス）を介したデータ転送を制御する回路であり、ホストコントローラ５０（ＨＣ）とペリフェラルコントローラ６０（ＰＣ）を含む。
【００６７】
ここでホストコントローラ５０は、ホスト動作時（ＯＴＧコントローラ２０からのＨＣイネーブル信号のアクティブ時）に、ホストの役割としてのデータ転送制御を行う回路である。
【００６８】
即ち、ホストコントローラ５０は、ホスト動作時に、ＨＣ／ＰＣ切り替え回路３０によりトランシーバ１０に接続される。そしてホストコントローラ５０は、レジスタ部７０の転送条件レジスタ部７２に設定された転送条件情報に基づいて、エンドポイントに対するトランザクションを自動発生する。そして、パケットバッファ１００に確保（allocate）されたパイプ領域（ＰＩＰＥ０〜ＰＩＰＥｅ。以下、適宜ＰＩＰＥと呼ぶ）と、そのパイプ領域に対応するエンドポイントとの間で、データ（パケット）の自動転送（処理部が介在しないハードウェア回路によるデータ転送）を行う。
【００６９】
より具体的にはホストコントローラ５０は、複数のパイプ転送間の調停、フレームにおける時間管理、転送のスケジューリング、再送の管理などを行う。また、パイプ転送の転送条件情報（オペレーション情報）をレジスタ部７０を介して管理する。また、トランザクションの管理を行ったり、パケットを生成／分解したり、サスペンド／レジューム／リセット状態生成の指示を行う。
【００７０】
そして本実施形態ではホストコントローラ５０が自動コントロール転送を行う。即ち、コントロール転送時に、セットアップステージ、データステージ（データステージ有りの場合）、ステータスステージの各ステージのトランザクションの自動発生（処理部が介在しないハードウェア回路によるトランザクションの自動発生）を行い、これらのトランザクションに必要なパケットを自動転送する。
【００７１】
一方、ペリフェラルコントローラ６０は、ペリフェラル動作時（ＯＴＧコントローラ２０からのＰＣイネーブル信号のアクティブ時）に、ペリフェラルの役割としてのデータ転送制御を行う回路である。
【００７２】
即ち、ペリフェラルコントローラ６０は、ペリフェラル動作時に、ＨＣ／ＰＣ切り替え回路３０によりトランシーバ１０に接続される。そして、レジスタ部７０の転送条件レジスタ部７２に設定された転送条件情報に基づいて、パケットバッファ１００に確保されたエンドポイント領域（ＥＰ０〜ＥＰｅ。以下適宜ＥＰと呼ぶ）とホストとの間でデータを転送する。
【００７３】
より具体的には、ペリフェラルコントローラ６０は、エンドポイント転送の転送条件情報（オペレーション情報）をレジスタ部７０を介して管理する。また、トランザクションの管理を行ったり、パケットを生成／分解したり、リモート・ウェイクアップ信号生成の指示を行う。
【００７４】
なお、エンドポイントは、ユニークなアドレスを割り当てることができる、ペリフェラル（デバイス）上のポイント（部分）である。ホストとペリフェラル（デバイス）との間でのデータ転送は、全て、このエンドポイントを経由して行われる。また、トランザクションは、トークンパケットと、オプショナルなデータパケットと、オプショナルなハンドシェークパケットにより構成される。
【００７５】
レジスタ部７０は、データ転送（パイプ転送、エンドポイント転送）制御、バッファアクセス制御、バッファ管理、割り込み制御、ブロック制御、或いはＤＭＡ制御などを行うための種々のレジスタを含む。なお、レジスタ部７０が含むレジスタは、ＲＡＭなどのメモリにより実現してもよいし、Ｄフリップフロップなどにより実現してもよい。また、レジスタ部７０のレジスタは、１つにまとめずに、各ブロック（ＨＣ、ＰＣ、ＯＴＧＣ、Ｘｃｖｒ等）に分散して配置してもよい。
【００７６】
レジスタ部７０は、転送条件レジスタ部７２を含む。そして、この転送条件レジスタ部７２は、ホスト動作時にパケットバッファ１００に確保されるパイプ領域（ＰＩＰＥ０〜ＰＩＰＥｅ）とエンドポイントとの間でのデータ転送の転送条件情報（転送制御情報）を記憶するレジスタを含む。これらの各転送条件レジスタは、パケットバッファ１００の各パイプ領域に対応して設けられる。
【００７７】
なお、ペリフェラル動作時には、パケットバッファ１００にはエンドポイント領域（ＥＰ０〜ＥＰｅ）が確保される。そして、転送条件レジスタ部７２に設定された転送条件情報に基づいて、データ転送制御装置とホストとの間でのデータ転送が行われる。
【００７８】
バッファコントローラ８０（ＦＩＦＯマネージャ）は、パケットバッファ１００に対するアクセス（リード／ライト）制御や領域管理を行う。より具体的には、ＣＰＵ（広義には処理部）、ＤＭＡ（Direct Memory Access）、ＵＳＢによるパケットバッファ１００へのアクセス・アドレスを生成・管理する。また、ＣＰＵ、ＤＭＡ、ＵＳＢによるパケットバッファ１００へのアクセスの調停を行う。
【００７９】
例えば、ホスト動作時には、バッファコントローラ８０は、インターフェース回路１１０（ＣＰＵ又はＤＭＡ）とパケットバッファ１００の間のデータ転送経路と、パケットバッファ１００とホストコントローラ５０（ＵＳＢ）の間のデータ転送経路を設定（確立）する。
【００８０】
一方、ペリフェラル動作時には、バッファコントローラ８０は、インターフェース回路１１０（ＣＰＵ又はＤＭＡ）とパケットバッファ１００の間のデータ転送経路と、パケットバッファ１００とペリフェラルコントローラ６０（ＵＳＢ）の間のデータ転送経路を設定する。
【００８１】
パケットバッファ１００（ＦＩＦＯ、パケットメモリ、バッファ）は、ＵＳＢを介して転送されるデータ（送信データ又は受信データ）を一時的に記憶（バッファリング）するものである。このパケットバッファ１００は、例えばＲＡＭ（Random Access Memory）などにより構成できる。なお、パケットバッファ１００をデータ転送制御装置の外部に設けてもよい（外付けメモリにしてもよい）。
【００８２】
ホスト動作時には、パケットバッファ１００はパイプ転送用のＦＩＦＯ（First-In First-Out）として使用される。即ち、パケットバッファ１００には、ＵＳＢ（バス）の各エンドポイントに対応するように、パイプ領域ＰＩＰＥ０〜ＰＩＰＥｅ（広義にはバッファ領域）が確保される。また、各パイプ領域ＰＩＰＥ０〜ＰＩＰＥｅには、それに対応する各エンドポイントとの間で転送されるデータ（送信データ又は受信データ）が記憶される。
【００８３】
一方、ペリフェラル動作時には、パケットバッファ１００はエンドポイント転送用のＦＩＦＯとして使用される。即ち、パケットバッファ１００には、エンドポイント領域ＥＰ０〜ＥＰｅ（広義にはバッファ領域）が確保される。また、各エンドポイント領域ＥＰ０〜ＥＰｅには、ホストとの間で転送されるデータ（送信データ又は受信データ）が記憶される。
【００８４】
なお、パケットバッファ１００に確保されるバッファ領域（ホスト動作時にパイプ領域に設定され、ペリフェラル動作時にエンドポイント領域に設定される領域）は、先に入力された情報が先に出力されるような記憶領域（ＦＩＦＯ領域）に設定されている。
【００８５】
また、ＰＩＰＥ０は、コントロール転送用のエンドポイント０に専用のパイプ領域であり、ＰＩＰＥａ〜ＰＩＰＥｅは、任意のエンドポイントに割り当て可能な汎用のパイプ領域である。
【００８６】
即ち、ＵＳＢでは、エンドポイント０がコントロール転送に専用のエンドポイントに設定される。従って、本実施形態のようにＰＩＰＥ０をコントロール転送に専用のパイプ領域にすることで、ユーザが混乱するのを防止できる。また、ＰＩＰＥａ〜ＰＩＰＥｅを、任意のエンドポイントに割り当て可能なパイプ領域にすることで、エンドポイントに対応するパイプ領域を動的に変化させることが可能になる。これにより、パイプ転送のスケジューリングの自由度を向上でき、データ転送の効率化を図れる。
【００８７】
なお本実施形態では、バッファ領域（パイプ領域又はエンドポイント領域）は、マックスパケットサイズMaxPktSize（広義にはページサイズ）とページ数BufferPageにより、その領域サイズRSizeが設定される（RSize=MaxPktSize×BufferPage）。このようにすることで、バッファ領域の領域サイズや面数（ページ数）を任意に設定できるようになり、パケットバッファ１００のリソースの有効利用を図れる。
【００８８】
インターフェース回路１１０は、ＵＳＢとは異なる他のバスであるＤＭＡ（システムメモリ）バスやＣＰＵバスと、パケットバッファ１００との間でのデータ転送を行うための回路である。このインターフェース回路１１０は、パケットバッファ１００と外部のシステムメモリとの間で、ＤＭＡ転送を行うためのＤＭＡハンドラ回路１１２を含む。また、パケットバッファ１００と外部のＣＰＵとの間で、ＰＩＯ（Parallel I/O）転送を行うためのＣＰＵインターフェース回路１１４を含む。なお、ＣＰＵ（処理部）をデータ転送制御装置に内蔵させてもよい。
【００８９】
クロックコントローラ１２０は、内蔵ＰＬＬ又は外部入力クロックに基づいて、データ転送制御装置の内部で使用する各種のクロックを生成する。
【００９０】
４．パイプ領域
本実施形態では図５（Ａ）に示すように、ホスト動作時に、パケットバッファ１００にパイプ領域ＰＩＰＥ０〜ＰＩＰＥｅが確保（allocate）される。そして、この各パイプ領域ＰＩＰＥ０〜ＰＩＰＥｅとペリフェラルの各エンドポイントの間で、データが転送される。
【００９１】
ここで、本実施形態のパイプ領域の「パイプ」は、ＵＳＢで定義される「パイプ」（デバイス上のエンドポイントとホスト上のソフトウェアとの間の関連を表す論理的な抽象化、論理的な経路）とは若干意味合いが異なる。
【００９２】
本実施形態のパイプ領域は、図５（Ａ）に示すように、ＵＳＢ（バス）に接続されるペリフェラルが有する各エンドポイントに対応して、パケットバッファ１００上に確保される。例えば図５（Ａ）において、パイプ領域ＰＩＰＥａはペリフェラル１のエンドポイント１（バルクＩＮ）に対応し、ＰＩＰＥｂはペリフェラル１のエンドポイント２（バルクＯＵＴ）に対応する。また、ＰＩＰＥｃはペリフェラル２のエンドポイント１（バルクＩＮ）に対応し、ＰＩＰＥｄはペリフェラル２のエンドポイント２（バルクＯＵＴ）に対応する。また、ＰＩＰＥｅはペリフェラル３のエンドポイント１（インタラプトＩＮ）に対応する。なお、ＰＩＰＥ０は、コントロール転送のエンドポイント０に専用のパイプ領域である。
【００９３】
そして図５（Ａ）の例では、パイプ領域ＰＩＰＥａとペリフェラル１のエンドポイント１との間でＵＳＢのバルクＩＮ転送が行われ、ＰＩＰＥｂとペリフェラル１のエンドポイント２との間ではバルクＯＵＴ転送が行われる。また、ＰＩＰＥｃとペリフェラル２のエンドポイント１との間ではバルクＩＮ転送が行われ、ＰＩＰＥｄとペリフェラル２のエンドポイント２との間ではバルクＯＵＴ転送が行われる。また、ＰＩＰＥｅとペリフェラル３のエンドポイント１との間ではインタラプトＩＮ転送が行われる。
【００９４】
このように本実施形態では、パイプ領域（汎用）とそれに対応するエンドポイントとの間では、任意のデータ転送（アイソクロナス転送、バルク転送、インタラプト転送）を行うことができる。
【００９５】
そして本実施形態では、パイプ領域とそれに対応するエンドポイントの間では、所与のデータ単位（トータルサイズで指定されるデータ単位）のデータが転送される。この場合のデータ単位としては、例えばＩＲＰ（Ｉ／Ｏリクエストパケット）により転送要求されるデータ単位又はそれを適当なサイズに分割したデータ単位などを考えることができる。エンドポイントに対するこのデータ単位のデータ転送（一連のトランザクション）を、本実施形態における「パイプ」と呼ぶことができる。そして、そのような「パイプ」のデータ（送信データ、受信データ）を記憶する領域がパイプ領域になる。
【００９６】
パイプ領域を用いた所与のデータ単位の転送が終了すると、そのパイプ領域は解放することができる。そして、解放されたパイプ領域は、任意のエンドポイントに割り当てることができる。このように本実施形態では、パイプ領域とエンドポイントとの対応づけを、動的に変化させることができる。
【００９７】
また本実施形態では図５（Ｂ）に示すように、ペリフェラル動作時には、パケットバッファ１００にエンドポイント領域ＥＰ０〜ＥＰｅが確保（設定）される。そして、この各エンドポイント領域ＥＰ０〜ＥＰｅとホスト（ホストコントローラ、システムメモリ）との間で、データが転送される。
【００９８】
このように本実施形態では、パケットバッファ１００のバッファ領域を、ホスト動作時にはパイプ領域に割り当て、ペリフェラル動作時にはエンドポイント領域に割り当てている。これにより、ホスト動作時とペリフェラル動作時とでパケットバッファ１００のリソースを共用（兼用）することが可能になり、パケットバッファ１００の使用記憶容量を節約できる。
【００９９】
なおパイプ領域、エンドポイント領域の個数は６個に限定されず任意である。
【０１００】
５．自動コントロール転送
さて、ＵＳＢでは、アイソクロナス転送、バルク転送、インタラプト転送、コントロール転送という４種類の転送方式が定義されている。この中でコントロール転送は、クライアント・ソフトウェアとファンクションとの間でのコンフィギュレーション／コマンド／ステータスに関するコミュニケーションを、サポートする転送方式である。
【０１０１】
このコントロール転送は、ホストがペリフェラル（デバイス）にデバイスリクエストを送るセットアップステージと、デバイスリクエストで指定される転送方向でデータを転送するデータステージと、データ転送が成功したか否かを伝えるステータスステージとにより構成される。また、各ステージは少なくとも１以上のトランザクションにより構成される。ここでトランザクションは、トークンパケット、オプショナルなデータパケット、オプショナルなハンドシェークパケットにより構成される、エンドポイントに対するサービスである。このコントロール転送により、ペリフェラル（デバイス、エンドポイント）のエニュミレーション（enumeration）、コンフィギュレーション（configuration)などが行われる。
【０１０２】
さて、以上のようなコントロール転送を実現する１つの手法として、ＣＰＵ上で動作するファームウェアがコントロール転送の全てを制御、管理する手法が考えられる。即ち、ファームウェアが、コントロール転送を構成するセットアップステージ、データステージ、ステータスステージの各ステージ（トランザクション）単位で、データ転送を制御、管理する。
【０１０３】
しかしながら、コントロール転送は、少なくともホストによるペリフェラル（デバイス）のエニュメレーション時には必ず発生し、複数回のコントロール転送（デバイスリクエスト）が行われる場合が多い。しかも、コントロール転送はセットアップステージ、データステージ、ステータスステージという複数のシーケンシャルなステージにより構成される。従って、各ステージが行われる毎にファームウェアがデータ転送を制御、管理する上記手法では、ファームウェア（処理部）の処理負荷が重くなってしまうという課題がある。
【０１０４】
このような課題を解決するために、本実施形態では、コントロール転送をハードウェア回路により自動的に行う手法を採用している。この自動コントロール転送手法について、以下、説明する。
【０１０５】
本実施形態では、まず、ファームウェアが図４の転送条件レジスタ部７２の転送条件レジスタ（ＰＩＰＥ０用レジスタ）に、コントロール転送のための転送条件情報を設定する。具体的にはファームウェアは、デバイスリクエストのデータや、データステージでの転送データのトータルサイズを設定する。更に望ましくは、データステージの有無の情報や、データステージでの転送方向や、マックスパケットサイズなどを設定する。
【０１０６】
即ち図６に示すように、ＵＳＢでは、デバイスリクエストの種別により、データステージの有無、データステージでの転送方向、ステータスステージでの転送方向は一意的に決まっており、ファームウェア（ホストのソフトウェア）もそれを認識できる。また、コントロール転送のステージはシーケンシャルな構成となっている。本実施形態では、この２つの点に着目し、ファームウェアによる１回の設定（指示）だけで、ホストコントローラ５０が１つのコントロール転送を完結できるようにした。即ち、ファームウェアは、デバイスリクエストのデータ（コマンド）、データステージの有無、データステージがある場合にはその転送方向、マックスパケットサイズ（データペイロードサイズ）、データステージでの転送データのトータルサイズを、転送条件レジスタ（ホストコントローラ５０内に設けてもよい）に設定し、自動コントロール転送の開始（モード）を指示する。すると、この設定により、ホストコントローラ５０（広義には転送コントローラ、データ転送制御装置又はハードウェア回路。以下の説明でも同様）が、図７に示すようなシーケンス動作を行う。
【０１０７】
即ち、自動コントロール転送の開始が指示されると、ホストコントローラ５０が、セットアップステージのトランザクション（トークンパケット、データパケット、ハンドシェークパケット）を発生する。このセットアップステージでは、まず、ホストコントローラ５０が、ＳＥＴＵＰトークパケットを生成して、ペリフェラルに送信（発行）する。次に、図６に例示されるデバイスリクエストのデータパケットをペリフェラルに送信する。そして、ペリフェラルからＡＣＫ（ACKnowledgement）のハンドシェークパケットが返ってくると、ホストコントローラ５０は、セットアップステージを終了する。
【０１０８】
なお、図７の「Ｈ→Ｐ」は「ホストからペリフェラルにパケットが転送されること」を表し、「Ｐ→Ｈ」は「ペリフェラルからホストにパケットが転送されること」を表す。
【０１０９】
セットアップステージが終了すると、ホストコントローラ５０は、データステージのトランザクションを自動発生する。なお、「データステージ無し」が設定されていた場合には、ステータスステージのトランザクションを自動発生する。
【０１１０】
データステージにおいて、「転送方向ＩＮ」が設定された場合には、ホストコントローラ５０は、ＩＮトランザクションを発生する。このＩＮトランザクションでは、ホストコントローラ５０がＩＮトークンパケットをペリフェラルに送信する。そして、データパケットをペリフェラルから受信すると、ＡＣＫのハンドシェークパケットをペリフェラルに送信する。そして、このＩＮトランザクションを繰り返して、ファームウェアにより設定されたトータルサイズ分のデータの受信が完了すると、データステージを終了する。
【０１１１】
一方、データステージにおいて、「転送方向ＯＵＴ」が設定された場合には、ホストコントローラ５０は、ＯＵＴトランザクションを発生する。このＯＵＴトランザクションでは、ホストコントローラ５０が、ＯＵＴトークンパケットをペリフェラルに送信し、データパケットをペリフェラルに送信する。そして、ＡＣＫのハンドシェークパケットをペリフェラルから受信する。そして、このＯＵＴトランザクションを繰り返して、トータルサイズ分のデータをペリフェラルに送信すると、データステージを終了する。
【０１１２】
データステージが終了した場合又はファームウェアにより「データステージ無し」が設定された場合、ホストコントローラ５０が、ステータスステージを発生する。そして、データステージがＩＮトランザクションであった場合には、ホストコントローラ５０は、ＯＵＴトークンパケットを送信した後、零長のデータパケットをペリフェラルに送信する。そして、ＡＣＫのハンドシェークパケットをペリフェラルから受信すると、ホストコントローラ５０は、ステータスステージを終了する。
【０１１３】
一方、データステージがＯＵＴトランザクションであった場合には、ホストコントローラ５０は、ＩＮトークンパケットをペリフェラルに送信する。そして、零長のデータパケットをペリフェラルから受信すると、ＡＣＫのハンドシェークパケットをペリフェラルに送信し、ステータスステージを終了する。
【０１１４】
図８（Ａ）、（Ｂ）、（Ｃ）に、自動コントロール転送時の信号波形例を示す。
【０１１５】
図８（Ａ）は、ホスト（ホストコントローラ）からペリフェラルにデータを送信する時（書き込み転送時）の信号波形例である。
【０１１６】
ファームウェアがコントロール転送用のＰＩＰＥ０の自動転送の開始指示を行うと、図８（Ａ）のＣ１に示すように、Pipe0TranGo（Pipe0についてのファームウェアからの転送要求信号）がアクティブになる。これにより、ホストコントローラ５０による自動コントロール転送が開始する。そして、Ｃ２、Ｃ３、Ｃ４に示すように、セットアップステージのＳＥＴＵＰトランザクション、データステージのＯＵＴトランザクション、ステータスステージのＩＮトランザクションが発生し、各トランザクションのパケット転送が行われる。そして、ステータスステージが完了すると、Ｃ５に示すようにCTLTranComp（ファームウェアへのコントロール転送終了通知信号）がアクティブになり、このCTLTranCompによる割り込みにより、コントロール転送の全ステージの完了がファームウェアに伝えられる。
【０１１７】
このように本実施形態では、ステータスステージのトランザクションが完了すると、ファームウェア（処理部）に対して割り込みが発生する。そして、ファームウェアは、割り込みの要因（ステータス）を調べることで、コントロール転送が完了したことを知ることができる。
【０１１８】
従って本実施形態によれば、ファームウェアは、転送条件情報（デバイスリクエストデータ、トータルサイズ、マックスパケットサイズ等）を設定した後、割り込み（CTLTranComp）が発生するまでは、自動コントロール転送に関わらなくて済むようになる。これにより、ファームウェアの処理負荷を格段に軽減できる。
【０１１９】
なお、本実施形態では、不正リクエストの送信などの理由で、ペリフェラル（エンドポイント）からストール（STALL）を受信した場合に、自動コントロール転送をその時点で中断し、ファームウェアに対して割り込みを発生するようにしている。
【０１２０】
即ち、ストールは、ペリフェラル（デバイス）がデータを送受信できなかった場合や、コントロール転送のリクエストをペリフェラルがサポートしていない場合等に、ペリフェラルからホストに転送される。このような場合に本実施形態によれば、ファームウェアは、ストール返信を割り込みにより知ることができ、コントロール転送を無効にすることが可能になる。
【０１２１】
図８（Ｂ）は、ホストがペリフェラルからデータを受信する時（読み込み転送時）の信号波形例である。この場合には、Ｃ６に示すように、データステージがＩＮトランザクションになる。また、Ｃ７に示すように、ステータスステージがＯＵＴトランザクションになる。
【０１２２】
図８（Ｃ）は、「データステージ無し」が設定された時の信号波形例である。この場合には、Ｃ８に示すように、データステージが省略される。また、Ｃ９に示すように、ステータスステージがＩＮトランザクションになる。
【０１２３】
図９（Ａ）は、セットアップステージの詳細な信号波形例である。Ｄ１に示すように、PipeTranGo（ホストコントローラ５０内のＨＣシーケンス管理回路からの転送要求信号）がアクティブになると、トークンパケット、デバイスリクエスト（リクエストコマンド）のデータパケットをホストがペリフェラルに送信する。このデバイスリクエストのデータは、ファームウェアにより転送条件レジスタに設定される。そして、ペリフェラルからハンドシェークパケット（ＡＣＫ）を受信すると、Ｄ２に示すようにTranCmpACKがアクティブになる。これによりセットアップステージが終了する。
【０１２４】
図９（Ｂ）は、データ送信時におけるデータステージの詳細な信号波形例である。Ｄ３に示すようにPipeTranGoがアクティブになると、トークンパケット、データパケットをホストがペリフェラルに送信する。そして、ペリフェラルからハンドシェークパケット（ＡＣＫ）を受信すると、Ｄ４に示すようにTranCmpACKがアクティブになる。
【０１２５】
そしてＤ５では、NextTotalSize（残りデータサイズ＝転送データのトータルサイズ−転送済みサイズ）が零になっていない。従って、Ｄ６に示すように、PipeTranGoがアクティブになり、トークンパケット、データパケットをホストがペリフェラルに送信する。そしてペリフェラルからのハンドシェークパケット（ＡＣＫ）の受信後、Ｄ７に示すようにNextTotalSizeが零になっていると、データステージが完了する。
【０１２６】
図９（Ｃ）は、データ受信時におけるデータステージの詳細な信号波形例である。この場合には図９（Ｂ）と異なり、Ｄ８、Ｄ９に示すようにデータパケットをホストがペリフェラルから受信し、Ｄ１０、Ｄ１１に示すようにホストがペリフェラルにハンドシェークパケット（ＡＣＫ）を送信する。
【０１２７】
図１０（Ａ）は、データ送信時又はデータステージ無しの場合におけるステータスステージの詳細な信号波形例である。Ｅ１に示すようにPipeTranGoがアクティブになると、トークンパケットをホストがペリフェラルに送信し、ペリフェラルから零長のデータパケット（空パケット）を受信する。そして、ホストがペリフェラルにハンドシェークパケット（ＡＣＫ）を送信し、Ｅ２に示すようにTranCmpACKがアクティブになる。これによりステータスステージが完了する。
【０１２８】
図１０（Ｂ）は、データ受信時におけるステータスステージの詳細な信号波形例である。この場合には図１０（Ａ）と異なり、Ｅ３、Ｅ４に示すようにホストがペリフェラルにトークンパケット、零長のデータパケットを送信し、Ｅ５に示すようにハンドシェークパケット（ＡＣＫ）をホストがペリフェラルから受信する。
【０１２９】
６．ファームウェアの処理
次に、ファームウェア（処理部）の詳細な処理例について説明する。
【０１３０】
図１１は、自動コントロール転送モード（EnAutoMode）をオンにした場合のファームウェアの処理例を示すフローチャートである。
【０１３１】
まず、ファームウェアは、エンドポイント（転送条件）情報を転送条件レジスタにセットする（ステップＳ５１）。即ち、エンドポイント番号［EPNumber］、ファンクションアドレス［FuncAddr］、マックスパケットサイズ［MaxPktSize］、デバイスリクエストデータ［DeviceReqData]などをセットする。そして、ＨＣのスケジューリング［連続実行回数：Continuity］を指定する（ステップＳ５２）。
【０１３２】
次に、データステージがあるか否かを判断する（ステップＳ５３）。そして、データステージが無い場合には、データステージ無し［NoDataStage=TRUE］を設定し（ステップＳ５４）、ステップＳ６４に移行する。
【０１３３】
一方、データステージがある場合には、パイプ（バッファ）領域を既に確保しているか否かを確認し（ステップＳ５５）、確保している場合にはパイプ領域のデータクリア指示［FIFOClr］を行う（ステップＳ５６）。
【０１３４】
次に、データステージ有り［NoDataStage=FALSE）を設定する（ステップＳ５７）。そして、データステージの転送方向［DataStageDir］を設定し、転送データのトータルサイズ[TotalSize]をセットする（ステップＳ５８、Ｓ５９）。
【０１３５】
なお、ステップＳ５１〜Ｓ５９の設定順序は任意である。
【０１３６】
次に、パイプ（バッファ）領域のページ数［BufferPage］をセットし、パイプ領域確保の指示［SetAllocation］を行う（ステップＳ６０、Ｓ６１）。そして、ＤＭＡを用いるか否かを判断し、用いる場合にはＤＭＡバスの接続指示［JoinDMA］を行う（ステップＳ６２、Ｓ６３）。
【０１３７】
次に、自動トランザクションの開始指示［TranGo］を行う（ステップＳ６４）。そして、割り込みが発生するのを待ち（ステップＳ６５）、正常完了、ＳＴＡＬＬ返答、ハンドシェーク待ちのタイムアウト処理などを行う（ステップＳ６６）。
【０１３８】
本実施形態では、ファームウェアが図１１のステップＳ５１〜Ｓ６４の設定を行うと、ホストコントローラ５０（転送コントローラ）が、自動的にコントロール転送のセットアップステージ、データステージ、ステータスステージを順次発生する。そして、最後のステータスステージが終了するとホストコントローラ５０が割り込みを発生し、これによりファームウェアがステップＳ６６の処理を行う。
【０１３９】
従って、ＤＭＡ転送を利用した場合には、ファームウェアは、図１１のステップＳ５１〜Ｓ６４の設定を行った後、割り込みが発生するまでの期間を、他の処理に使用できるようになる。これにより、ファームウェアの処理の効率化を図れる。
【０１４０】
例えば図１２に、自動コントロール転送モード（EnAutoMode）をオフにした場合のファームウェアの処理のフローチャートを示す。自動コントロール転送モードをオフにした場合には、ファームウェアは、セットアップステージ、データステージ、ステータスステージの全てのステージで、図１２のステップＳ７１〜Ｓ８３の処理を行う必要がある。従って、１つのコントロール転送において、図１２のステップＳ７１〜Ｓ８３の処理を３回分（データステージが無い場合は２回分）行わなければならない。このため、ファームウェアの処理負荷が非常に重くなるという問題が生じる。
【０１４１】
本実施形態によれば、自動コントロール転送モード（EnAutoMode）をオンにすることで、このような問題を解消できる。
【０１４２】
なお、本実施形態では、データステージの有無の情報、データステージでの転送方向等を、ファームウェアが転送条件レジスタに設定しているが、デバイスリクエストのコマンドを、デコーダ回路によりデコードすることで、これらの情報を得るようにしてもよい。この場合には、図１１のステップＳ５４、Ｓ５７、Ｓ５８の設定（データステージ有無、転送方向の設定）等は不要になる。
【０１４３】
７．回路例
図１３に、自動コントロール転送を実現する回路の例を示す。この回路は、図１８（Ａ）に示すホストコントローラ５０のターゲットパイプ管理回路５４内に設けられる。
【０１４４】
パイプ情報管理回路２４０は、ターゲットとなるパイプの情報を管理する回路である。このパイプ情報管理回路２４０は、図１８（Ａ）のＨＣシーケンス管理回路５２からターゲットとなるパイプが指示された場合に、レジスタ部７０の転送条件レジスタから、対応するパイプの情報を選択して、トランザクション管理回路５６やパケットハンドラ回路５８に渡す処理などを行う。
【０１４５】
自動コントロール転送シーケンサ２００は、図７で説明した自動コントロール転送のシーケンスを管理する回路である。この自動コントロール転送シーケンサ２００は、パイプ情報をトランザクション管理回路５６やパケットハンドラ回路５８に渡す前に、このパイプ情報に、自動コントロール転送用の情報（自動コントロール転送の各ステージで必要になる情報）を付加する処理などを行う。
【０１４６】
自動コントロール転送シーケンサ２００は、自動コントロール転送判断回路２０２と、セットアップステージモニタ回路２０４と、データステージ選択回路２１０と、データステージモニタ回路２２０と、ステータスステージモニタ回路２３０を含む。なお、自動コントロール転送シーケンサ２００はこれらの全ての回路ブロックを含む必要はなく、その一部を省略してもよい。
【０１４７】
自動コントロール転送判断回路２０２は、自動コントロール転送モード（EnAutoMode）の信号とターゲットパイプ番号を受け、そのパイプについて自動コントロール転送を行うか否かを判断する。例えば、自動コントロール転送モード信号がアクティブ（オート）になり、ターゲットパイプがコントロール転送用のＰＩＰＥ０であった場合には、自動コントロール転送を行うと判断し、自動コントロール転送イネーブル信号をアクティブにする。これにより自動コントロール転送の開始が指示される。
【０１４８】
セットアップステージモニタ回路２０４は、自動コントロール転送の開始が指示された場合に、セットアップステージのトランザクションの開始を指示する回路である。
【０１４９】
即ち、セットアップステージモニタ回路２０４は、自動コントロール転送イネーブル信号がアクティブになると、セットアップステージイネーブル信号をアクティブにして、そのパイプ（ＰＩＰＥ０）についてのセットアップステージのトランザクションの開始を指示する。そして、セットアップステージが完了すると、セットアップステージ完了信号をアクティブにする。
【０１５０】
データステージ選択回路２１０は、データステージでの転送方向（DataStageDir）とデータステージの有無の情報（NoDataStage）に基づいて、データステージのＩＮトランザクションの実行、データステージのＯＵＴトランザクションの実行、或いは「データステージ無し」のいずれかを選択する回路である。
【０１５１】
即ちデータステージ選択回路２１０は、転送方向が「ＩＮ」であり、「データステージ有り」の場合には、ＩＮデータ・スタートトリガをアクティブにして、ＩＮトランザクションの実行を選択する。また、転送方向が「ＯＵＴ」であり、「データステージ有り」の場合には、ＯＵＴデータ・スタートトリガをアクティブにして、ＯＵＴトランザクションの実行を選択する。一方、「データステージ無し」の場合は、ステータス・スタートトリガをアクティブにして、データステージをバイパスする。
【０１５２】
データステージモニタ回路２２０は、データステージのＩＮトランザクションが選択された場合には、ＩＮトランザクションの開始を指示し、データステージのＯＵＴトランザクションが選択された場合には、ＯＵＴトランザクションの開始を指示する回路である。このデータステージモニタ回路２２０は、ＩＮデータステージモニタ回路２２２とＯＵＴデータステージモニタ回路２２４を含む。
【０１５３】
ここで、ＩＮデータステージモニタ回路２２２は、ＩＮデータ・スタートトリガがアクティブになると、ＩＮデータステージイネーブル信号をアクティブにして、ＩＮトランザクションの開始を指示する。そして、データステージが完了すると、ＯＵＴステータス・スタートトリガをアクティブにする。
【０１５４】
一方、ＯＵＴデータステージモニタ回路２２４は、ＯＵＴデータ・スタートトリガがアクティブになると、ＯＵＴデータステージイネーブル信号をアクティブにして、ＯＵＴトランザクションの開始を指示する。そして、データステージが完了すると、ＩＮステータス・スタートトリガをアクティブにする。
【０１５５】
ステータスステージモニタ回路２３０は、データステージのＩＮトランザクションが完了した場合には、ステータスステージのＯＵＴトランザクションの開始を指示し、データステージのＯＵＴトランザクションが完了した場合、或いは「データステージ無し」が選択された場合には、ステータスステージのＩＮトランザクションの開始を指示する回路である。このステータスステージモニタ回路２３０は、ＯＵＴステータスステージモニタ回路２３２とＩＮステータスステージモニタ回路２３４を含む。
【０１５６】
ここで、ＯＵＴステータスステージモニタ回路２３２は、ＯＵＴステータス・スタートトリガがアクティブになると、ＯＵＴステータスステージイネーブル信号をアクティブにして、ステータスステージのＯＵＴトランザクションの開始を指示する。
【０１５７】
一方、ＩＮステータスステージモニタ回路２３４は、ＩＮステータス・スタートトリガがアクティブになると、ＩＮステータスステージイネーブル信号をアクティブにして、ステータスステージのＩＮトランザクションの開始を指示する。
【０１５８】
図１３に示すような回路構成を採用することで、セットアップステージ、データステージ、ステータスステージの一連のトランザクションを、ファームウェアの介在無しに、自動的に発生できるようになる。
【０１５９】
８．転送条件レジスタ（共用レジスタ）
本実施形態では図１４に示すように、ホスト動作時には、パイプ領域ＰＩＰＥ０〜ＰＩＰＥｅとエンドポイントとの間で行われるデータ転送の転送条件情報（転送方向、転送種別、マックスパケットサイズ又はページ数等）が、転送条件レジスタＴＲＥＧ０〜ＴＲＥＧｅに設定される。即ち、ＰＩＰＥ０、ＰＩＰＥａ、ＰＩＰＥｂ、ＰＩＰＥｃ、ＰＩＰＥｄ、ＰＩＰＥｅの転送条件情報は、各々、ＴＲＥＧ０、ＴＲＥＧａ、ＴＲＥＧｂ、ＴＲＥＧｃ、ＴＲＥＧｄ、ＴＲＥＧｅに設定（記憶）される。この設定は、例えばファームウェア（ＣＰＵ）により行われる。
【０１６０】
そしてホストコントローラ５０（広義には転送コントローラ）は、転送条件レジスタＴＲＥＧ０〜ＴＲＥＧｅに設定された転送条件情報に基づいて、エンドポイントに対するトランザクションを発生する。そして、パイプ領域とそれに対応するエンドポイントとの間で、データ（パケット）を自動転送する。
【０１６１】
このように本実施形態では、各パイプ領域（バッファ領域）に対応して各転送条件レジスタが設けられ、この各転送条件レジスタに設定された転送条件情報に基づいて、各パイプ領域のパイプ転送（所与のデータ単位の転送）がホストコントローラ５０により自動的に行われる。従って、ファームウェア（ドライバ、ソフトウェア）は、転送条件レジスタに転送条件情報を設定した後は、データ転送が完了するまで、データ転送制御に関わらなくて済むようになる。そして、所与のデータ単位のパイプ転送が完了すると割り込みが発生し、転送の完了がファームウェアに伝えられる。これにより、ファームウェア（ＣＰＵ）の処理負荷を格段に低減できる。
【０１６２】
なお、本実施形態では、ＰＩＰＥ０は、エンドポイント０（コントロール転送のエンドポイント）に専用のパイプ領域に設定され、ＰＩＰＥａ〜ＰＩＰＥｅは、任意のエンドポイントに割り当て可能なパイプ領域に設定される。この場合に本実施形態では、ＰＩＰＥ０（コントロール転送のパイプ領域）に対応する転送条件レジスタＴＲＥＧ０に設定された転送条件情報に基づいて、図７で説明したようにコントロール転送のトランザクションを自動発生する。そして、ＰＩＰＥ０とエンドポイント０との間で、データを自動転送する。
【０１６３】
なお、本実施形態では図１５に示すようにペリフェラル動作時には、エンドポイント領域ＥＰ０〜ＥＰｅとホストとの間で行われるデータ転送の転送条件情報（転送方向、転送種別、マックスパケットサイズ又はページ数等）が、転送条件レジスタＴＲＥＧ０〜ＴＲＥＧｅに設定される。そしてペリフェラルコントローラ６０（広義には転送コントローラ）は、転送条件レジスタＴＲＥＧ０〜ＴＲＥＧｅに設定された転送条件情報に基づいて、エンドポイント領域とホストとの間でのデータ転送を行う。
【０１６４】
このように本実施形態では、転送条件レジスタＴＲＥＧ０〜ＴＲＥＧｅが、ホスト動作時とペリフェラル動作時とで共用（兼用）される。これにより、レジスタ部７０のリソースを節約でき、データ転送制御装置を小規模化できる。
【０１６５】
図１６に、レジスタ部７０のレジスタ構成例を示す。なお、レジスタ部７０のレジスタの一部を、各ブロック（ＯＴＧＣ、ＨＣ、ＰＣ、Ｘｃｖｒ等）内に含ませてもよい。
【０１６６】
図１６に示すように、レジスタ部７０の転送条件レジスタ（ＴＲＥＧ０〜ＴＲＥＧｅの各々）は、ホスト動作時（ＨＣ、ＰＩＰＥ）とペリフェラル動作時（ＰＣ、ＥＰ）で共用されるＨＣ／ＰＣ共用レジスタ（共用転送条件レジスタ）を含む。また、ホスト動作時にのみ使用されるＨＣ（ＰＩＰＥ）用レジスタ（ホスト用転送条件レジスタ）を含む。また、ペリフェラル動作時にのみ使用されるＰＣ（ＥＰ）用レジスタ（ペリフェラル用転送条件レジスタ）を含む。また、パケットバッファ（ＦＩＦＯ）のアクセス制御などを行うためのレジスタであり、ホスト動作時とペリフェラル動作時で共用されるアクセス制御レジスタを含む。
【０１６７】
例えば、デュアルロール・デバイスのホスト動作時に、ホストコントローラ５０（ＨＣ）は、ＨＣ／ＰＣ共用レジスタとＨＣ用レジスタに設定される転送条件情報に基づいて、データ（パケット）を転送する。
【０１６８】
一方、ペリフェラル動作時には、ペリフェラルコントローラ６０（ＰＣ）は、ＨＣ／ＰＣ共用レジスタとＰＣ用レジスタに設定される転送条件情報に基づいて、データ（パケット）を転送する。
【０１６９】
また、ホスト動作時、ペリフェラル動作時の両方において、バッファコントローラ８０は、共用アクセス制御レジスタに基づいて、パケットバッファ１００へのアクセス制御（リード／ライト・アドレスの発生、データのリード／ライト、アクセスの調停等）を行うことになる。
【０１７０】
図１６のＨＣ／ＰＣ共用レジスタには、データの転送方向（ＩＮ、ＯＵＴ又はＳＥＴＵＰ等）、転送種別（アイソクロナス、バルク、インタラプト、コントロールなどのトランザクションの種別）、エンドポイント番号（各ＵＳＢデバイスのエンドポイントに関連づけられる番号）、マックスパケットサイズ（エンドポイントが送信又は受信可能なパケットの最大ペイロードサイズ。ページサイズ）が設定される。また、バッファ領域（パイプ領域、エンドポイント領域）のページ数（バッファ領域の面数）が設定される。また、ＤＭＡ接続の有無（ＤＭＡハンドラ回路１１２によるＤＭＡ転送の使用の有無）を指示する情報が設定される。
【０１７１】
ＨＣ（ＰＩＰＥ）用レジスタには、インタラプト転送のトークン発行周期（インタラプト・トランザクションを起動する周期、インターバル）が設定される。また、トランザクションの連続実行回数（パイプ領域間の転送比率を設定する情報。各パイプ領域のトランザクションの連続実行回数）が設定される。また、ファンクションアドレス（エンドポイントを有するファンクションのＵＳＢアドレス）、転送データのトータルサイズ（各パイプ領域を介して転送されるデータのトータルサイズ。ＩＲＰなどのデータ単位）が設定される。また、自動トランザクションの開始指示（ホストコントローラに対する自動トランザクション処理の開始指示）が設定される。また、自動コントロール転送モードの指示（コントロール転送のセットアップステージ、データステージ、ステータスステージのトランザクションを自動発生するモードの指示）が設定される。
【０１７２】
ＰＣ（ＥＰ）用レジスタには、エンドポイントイネーブル（エンドポイントのイネーブルやディスエーブルの指示）、ハンドシェーク指定（各トランザクションで行われるハンドシェークの指定）が設定される。
【０１７３】
パケットバッファ（ＦＩＦＯ）用の共用アクセス制御レジスタには、バッファ・Ｉ／Ｏポート（ＣＰＵによりＰＩＯ転送を行う場合のＩ／Ｏポート）が設定される。また、バッファ・フル／エンプティ（各バッファ領域のフル、エンプティの通知）、バッファ・残りデータサイズ（各バッファ領域の残りデータサイズ）が設定される。
【０１７４】
レジスタ部７０は、インタラプト系レジスタ、ブロック系レジスタ、ＤＭＡ制御レジスタなども含む。
【０１７５】
インタラプト系レジスタは、割り込みのステータス（要因）をＣＰＵに対して示すためのインタラプト・ステータスレジスタ、割り込みのイネーブル、ディスエーブル（非マスク、マスク）を設定するインタラプト・イネーブルレジスタを含む。なお、割り込みには、ＯＴＧコントローラ２０系、ホストコントローラ５０系、ペリフェラルコントローラ６０系の割り込みがある。
【０１７６】
ブロック系レジスタは、ブロック間で共用されるブロック間共用レジスタや、各ブロック（Ｘｃｖｒ、ＯＴＧＣ、ＨＣ、ＰＣ）内で使用されるブロック用レジスタを含む。
【０１７７】
ブロック間共用レジスタには、各ブロックのリセットを指示するレジスタなどがある。ブロック用レジスタには、トランシーバ１０（Ｘｃｖｒ）を制御するためのレジスタや、ＯＴＧコントローラ２０（ＯＴＧＣ）のステートコマンドレジスタや、ホストコントローラ５０（ＨＣ）のステートコマンドレジスタや、フレーム番号を設定するレジスタなどがある。
【０１７８】
以上のように本実施形態では、ホスト動作時とペリフェラル動作時で共用されるレジスタ（ＨＣ／ＰＣ共用レジスタ、共用アクセス制御レジスタ）をレジスタ部７０に設けている。これにより、ホスト動作時用のレジスタとペリフェラル動作時用のレジスタを全く別個に設ける場合に比べて、レジスタ部７０を小規模化できる。また、ＣＰＵ上で動作するファームウェア（ドライバ）から見た共用レジスタのアクセスアドレスを、ホスト動作時とペリフェラル動作時とで同一にできる。従って、ファームウェアは、これらの共用レジスタを同一アドレスで管理できるようになり、ファームウェア処理を簡素化できる。
【０１７９】
また、ＨＣ用レジスタや、ＰＣ用レジスタを設けることで、ホスト動作時（ＰＩＰＥ）の転送やペリフェラル動作時（ＥＰ）の転送に特有の転送条件を設定できる。例えば、トークン発行周期を設定することで、ホスト動作時にインタラプト転送のトークンを所望の周期で発行することが可能になる。また、連続実行回数を設定することで、ホスト動作時にパイプ領域間の転送比率を任意に設定できる。また、トータルサイズを設定することで、ホスト動作時にパイプ領域を介して自動転送されるデータのサイズを任意に設定できる。またファームウェアは、ホスト動作時に、自動トランザクションの開始を指示したり、自動コントロール転送モードのオン／オフを指示できるようになる。
【０１８０】
９．各ブロックの詳細な構成例
次に各ブロックの詳細な構成例について説明する。
【０１８１】
９．１  ＯＴＧコントローラ
図１７に、ＯＴＧコントローラ２０の構成例を示す。
【０１８２】
ＯＴＧコントローラ２０は、ＯＴＧレジスタ部２２を含む。このＯＴＧレジスタ部２２は、ＯＴＧコントローラ２０のモニタレジスタや制御レジスタを含む。またファームウェア（ＣＰＵ）により書き込まれるＯＴＧステートコマンドをデコードする回路を含む。
【０１８３】
またＯＴＧコントローラ２０はＯＴＧ制御回路２３を含む。そして、このＯＴＧ制御回路２３は、ＯＴＧステートの管理を行うＯＴＧ管理回路２４、ＩＤピンの電圧レベルを検出するＩＤ検出回路２５、ＶＢＵＳの電圧レベルを検出するＶＢＵＳ検出回路２６、ＤＰ及びＤＭのラインステートを検出するラインステート検出回路２７を含む。
【０１８４】
またＯＴＧコントローラ２０は、ＯＴＧステートの遷移判断条件の１つである時間を計測するタイマ２８を含む。
【０１８５】
ＯＴＧステートを遷移させるために検出すべき情報は、ＩＤ、ＶＢＵＳの電圧レベル、ＤＰ／ＤＭのラインステートである。本実施形態のＯＴＧコントローラ２０は、これらの情報を検出し、モニタレジスタを介してファームウェア（ＣＰＵ）に伝える。
【０１８６】
ファームウェアは、これらの検出情報に基づいて自身のステートを遷移させると共に、次に遷移すべきステートを、ＯＴＧステートコマンドを用いてＯＴＧコントローラ２０に伝える。
【０１８７】
ＯＴＧコントローラ２０は、ＯＴＧステートコマンドをデコードし、そのデコード結果に基づいて、ＶＢＵＳのドライブ制御、プルアップ／プルダウン抵抗の接続制御等を行い、図２（Ａ）、（Ｂ）で説明したＳＲＰやＨＮＰを実現する。
【０１８８】
このように本実施形態では、ステート毎のＯＴＧ制御はＯＴＧコントローラ２０が担当し、ファームウェアはステートの遷移管理に専念できる。この結果、全てのステート制御をファームウェアで実現する場合に比べて、ファームウェア（ＣＰＵ）の処理負荷を軽減できると共に、効率的なファームウェア開発が可能になる。
【０１８９】
なお、ＯＴＧのステート遷移の判断を、ファームウェアが行わずに、ハードウェア回路が行うようにしてもよい。或いは、ＯＴＧコントローラ２０のほとんど全ての処理（例えばＶＢＵＳ制御、プルアップ／プルダウン抵抗制御、ＩＤ検出、ＶＢＵＳ検出、ラインステート検出以外の処理）をファームウェア（ソフトウェア）により実現してもよい。
【０１９０】
９．２  ホストコントローラ、ペリフェラルコントローラ
図１８（Ａ）に、ホストコントローラ５０の構成例を示す。
【０１９１】
ホストコントローラ５０はＨＣシーケンス管理回路５２を含む。このＨＣシーケンス管理回路５２は、パイプ転送（パイプ領域を用いたデータ転送）の調停、時間管理、パイプ転送のスケジューリング、再送管理などを行う。
【０１９２】
より具体的にはＨＣシーケンス管理回路５２は、フレーム番号のカウントや、ＳＯＦ（Start-Of-Frame）パケットの送信指示を行う。また、アイソクロナス転送を各フレームの先頭で優先的に実行するための処理を行ったり、インタラプト転送をアイソクロナス転送の次に優先的に取り扱うための処理を行う。また、パイプ転送の順序に従って各パイプ転送を指示する処理を行う。また、トランザクションの連続実行回数を管理したり、残りフレーム時間の確認処理を行う。また、ペリフェラルから返ってきたハンドシェークパケット（ＡＣＫ、ＮＡＫ）に対する処理を行う。また、トランザクション実行時のエラー処理を行う。
【０１９３】
ホストコントローラ５０はターゲットパイプ管理回路５４を含む。このターゲットパイプ管理回路５４は、レジスタ部７０の転送条件レジスタに設定された転送条件情報のハンドリング処理などを行う。
【０１９４】
より具体的にはターゲットパイプ管理回路５４は、転送条件情報の選択処理や、割り込み信号の生成処理を行う。また自動トランザクションの開始が指示された場合に、そのパイプ領域の転送データのトータルサイズをロードする。そして、残り転送データサイズのカウント（デクリメント）処理を行う。また、バッファコントローラ８０へのデータの送受信の際にバッファ（ＦＩＦＯ）領域の状態を確認する処理を行う。また、トランザクション管理回路５６への転送指示を行う。また、予期しないショートパケットの受信の判断処理や、マックスパケットサイズ以上のパケットの受信の判断処理を行う。また、零長パケットを自動転送するモードが設定されている場合には、最後の零長パケットの送信をトランザクション管理回路５６に指示する。また、自動コントロール転送モードでのシーケンス管理を行う。
【０１９５】
ホストコントローラ５０はトランザクション管理回路５６を含む。このトランザクション管理回路５６は、転送パケットの種類や転送順序の管理（トランザクションのシーケンス管理）を行う。また、タイムアウトの監視処理を行う。また、トランザクション終了の通知処理を行う。
【０１９６】
ホストコントローラ５０はパケットハンドラ回路５８を含む。このパケットハンドラ回路５８は、パケットの生成、分解処理を行う。また、ＰＩＤのチェックやＣＲＣのデコード、エンコードを行う。また、バッファ領域のパケットのペイロードのリード、ライト処理や、ＳＯＦパケットの送信処理を行う。また、送受信データのカウント処理を行う。
【０１９７】
図１８（Ｂ）にペリフェラルコントローラ６０の構成例を示す。
【０１９８】
ペリフェラルコントローラ６０は、トランザクション管理回路６２、パケットハンドラ回路６４を含む。これらのトランザクション管理回路６２、パケットハンドラ回路６４は、ホストコントローラ５０のトランザクション管理回路５６、パケットハンドラ回路５８とほぼ同様の処理を行う。
【０１９９】
９．３  バッファコントローラ
図１９にバッファコントローラ８０の構成例を示す。
【０２００】
バッファコントローラ８０は領域確保（allocation）回路８２を含む。この領域確保回路８２は、パケットバッファ１００に、バッファ領域（ホスト動作時にパイプ領域に設定され、ペリフェラル動作時にエンドポイント領域に設定される領域）を確保する回路である。
【０２０１】
領域確保回路８２は領域計算回路８３を含む。この領域計算回路８３は、マックスパケットサイズ（広義にはページサイズ）やページ数に基づいて、バッファ領域の領域サイズ、スタートアドレス、エンドアドレスなどを計算する回路である。
【０２０２】
例えば図２０（Ａ）に示すバッファ領域ＰＩＰＥ０／ＥＰ０、ＰＩＰＥａ／ＥＰａ、ＰＩＰＥｂ／ＥＰｂ、ＰＩＰＥｃ／ＥＰｃでは、マックスパケットサイズ（MaxPktSize）が、各々、３２、６４、６４、６４バイトに設定され、ページ数（BufferPage）が、各々、１、１、３、２ページに設定されている。領域計算回路８３は、これらのマックスパケットサイズ、ページ数などに基づいて、バッファ領域ＰＩＰＥ０／ＥＰ０〜ＰＩＰＥｃ／ＥＰｃの領域サイズ、スタートアドレス、エンドアドレスを計算する。例えば図２０（Ａ）において、ＰＩＰＥ０／ＥＰ０、ＰＩＰＥａ／ＥＰａ、ＰＩＰＥｂ／ＥＰｂ、ＰＩＰＥｃ／ＥＰｃの領域サイズは、各々、３２（＝３２×１）、６４（＝６４×１）、１９２（＝６４×３）、１２８（＝６４×２）バイトと計算されることになる。
【０２０３】
ポインタ割り当て回路８４は、各バッファ領域の書き込みポインタＷＰ（ＷＰ０、ＷＰａ、ＷＰｂ、ＷＰｃ）、読み出しポインタＲＰ（ＲＰ０、ＲＰａ、ＲＰｂ、ＲＰｃ）を、ＤＭＡ用ポインタ、ＣＰＵ用ポインタ、ＵＳＢ用ポインタに割り当てる回路である。
【０２０４】
例えば図２０（Ｂ）に示すように、データ送信時（ＤＭＡ又はＣＰＵからパケットバッファ１００を介してＵＳＢ側にデータが転送される時）であり、且つ、ＤＭＡ転送使用時には、そのバッファ領域の書き込みポインタＷＰはＤＭＡ（ＤＭＡアクセス）用のポインタに割り当てられ、読み出しポインタＲＰはＵＳＢ（ＵＳＢアクセス）用のポインタに割り当てられる。また、データ送信時であり且つＣＰＵ（ＰＩＯ）転送使用時には、そのバッファ領域の書き込みポインタＷＰはＣＰＵ（ＣＰＵアクセス）用のポインタに割り当てられ、読み出しポインタＲＰはＵＳＢ用のポインタに割り当てられる。
【０２０５】
一方、図２０（Ｃ）に示すように、データ受信時（ＵＳＢからパケットバッファ１００を介してＤＭＡ又はＣＰＵ側にデータが転送される時）であり、且つ、ＤＭＡ転送使用時には、そのバッファ領域の書き込みポインタＷＰはＵＳＢ用ポインタに割り当てられ、読み出しポインタＲＰはＤＭＡ用ポインタに割り当てられる。また、データ受信時であり且つＣＰＵ転送使用時には、そのバッファ領域の書き込みポインタＷＰはＵＳＢ用ポインタに割り当てられ、読み出しポインタＲＰはＣＰＵ用ポインタに割り当てられる。
【０２０６】
なお、各バッファ領域の書き込みポインタＷＰ、読み出しポインタＲＰのポインタ情報（位置情報）は、レジスタ部７０の各転送条件レジスタ（ＰＩＰＥ／ＥＰレジスタ）に保持される。
【０２０７】
ポインタ管理回路８６は、ポインタの更新を行いながら、パケットバッファ１００にアクセスするための実アドレスを生成する回路である。
【０２０８】
ポインタ管理回路８６は、ＣＰＵ用アドレス生成回路８７、ＤＭＡ用アドレス生成回路８８、ＵＳＢ用アドレス生成回路８９を含む。これらの生成回路８７、８８、８９は、各々、ポインタ割り当て回路８４により割り当てられたＣＰＵ用ポインタ、ＤＭＡ用ポインタ、ＵＳＢ用ポインタに基づいて、ＣＰＵ用アドレス、ＤＭＡ用アドレス、ＵＳＢ用アドレスを生成する。また、ＣＰＵ（ＣＰＵインターフェース回路）、ＤＭＡ（ＤＭＡハンドラ回路）からのアクセス毎に、或いはＵＳＢ（ＨＣ又はＰＣ）のトランザクション終了（ＡＣＫ、ＮＡＫなどのハンドシェーク送受信）毎に、ポインタを更新する処理を行う。なお、更新後のポインタの情報は、領域確保回路８２を介してレジスタ部７０の各転送条件レジスタに書き戻される。
【０２０９】
バッファ管理回路９０は、パケットバッファ１００へのアクセスを管理する回路である。
【０２１０】
バッファ管理回路９０はバッファインターフェース回路９２を含む。このバッファインターフェース回路９２は、ポインタ管理回路８６からのＣＰＵ用アドレス、ＤＭＡ用アドレス、ＵＳＢ用アドレスなどを受け、パケットバッファ１００へのデータの入出力や、アドレス、出力イネーブル、ライトイネーブル、リードイネーブルなどの出力を行う。
【０２１１】
バッファ管理回路９０は調停回路９３を含む。この調停回路９３は、ＣＰＵ（ＣＰＵインターフェース回路）、ＤＭＡ（ＤＭＡハンドラ回路）、ＵＳＢ（ホストコントローラ又はペリフェラルコントローラ）からのアクセスを調停する回路である。この調停結果に基づいて、ＣＰＵ用アドレス、ＤＭＡ用アドレス、ＵＳＢ用アドレスのいずれかが、パケットバッファ１００のアクセス・アドレスとして出力され、ＣＰＵ、ＤＭＡ又はＵＳＢとパケットバッファ１００との間のデータ転送経路が設定される。
【０２１２】
ＨＣ／ＰＣセレクタ９４は、バッファ管理回路９０（バッファコントローラ８０）とホストコントローラ５０（ＨＣ）又はペリフェラルコントローラ６０（ＰＣ）との間の接続の切り替え制御を行う。例えばホスト動作時には、ホストコントローラ５０とバッファ管理回路９０を接続し、ペリフェラル動作時には、ペリフェラルコントローラ６０とバッファ管理回路９０を接続する。なお、この接続の切り替え制御は、ＯＴＧコントローラ２０（ＯＴＧＣ）からのＨＣ／ＰＣイネーブル信号に基づいて行う。
【０２１３】
１０．電子機器
次に、本実施形態のデータ転送制御装置を含む電子機器の例について説明する。
【０２１４】
例えば図２１（Ａ）に電子機器の１つであるプリンタの内部ブロック図を示し、図２２（Ａ）にその外観図を示す。ＣＰＵ５１０（処理部）はシステム全体の制御などを行う。操作部５１１はプリンタをユーザが操作するためのものである。ＲＯＭ５１６には、制御プログラム、フォントなどが格納され、ＲＡＭ５１７（システムメモリ）はＣＰＵ５１０のワーク領域として機能する。ＤＭＡＣ５１８は、ＣＰＵ５１０を介さずにデータ転送を行うためのＤＭＡコントローラである。表示パネル５１９はプリンタの動作状態をユーザに知らせるためのものである。
【０２１５】
ＵＳＢを介してパーソナルコンピュータ、デジタルカメラ、デジタルビデオカメラなどの他の機器から送られてきたシリアルの印刷データ（印字データ、画像データ）は、データ転送制御装置５００によりパラレルの印刷データに変換される。そして、変換後のパラレル印刷データは、ＣＰＵ５１０又はＤＭＡＣ５１８により、印刷処理部（プリンタエンジン）５１２に送られる。そして、印刷処理部５１２においてパラレル印刷データに対して所与の処理が施され、プリントヘッダなどからなる印刷部（データの出力処理を行う装置）５１４により紙に印刷されて出力される。
【０２１６】
図２１（Ｂ）に電子機器の１つであるデジタルカメラの内部ブロック図を示し、図２２（Ｂ）にその外観図を示す。ＣＰＵ５２０はシステム全体の制御などを行う。操作部５２１（シャッターボタン、操作ボタン等）はデジタルカメラをユーザが操作するためのものである。ＲＯＭ５２６には制御プログラムなどが格納され、ＲＡＭ５２７はＣＰＵ５２０のワーク領域として機能する。ＤＭＡＣ５２８はＤＭＡコントローラである。
【０２１７】
ＣＣＤ、レンズなどからなる撮像部（データの取り込み処理を行う装置）５２２により画像が撮像され、撮像された画像のデータは画像処理部５２４により処理される。そして、処理後の画像データは、ＣＰＵ５２０又はＤＭＡＣ５２８によりデータ転送制御装置５００に送られる。データ転送制御装置５００は、このパラレルの画像データをシリアルデータに変換し、ＵＳＢを介してプリンタ、ストレージ装置、パーソナルコンピュータなどの他の機器に送信する。
【０２１８】
図２１（Ｃ）に電子機器の１つであるＣＤ−ＲＷドライブ（ストレージ装置）の内部ブロック図を示し、図２２（Ｃ）にその外観図を示す。ＣＰＵ５３０はシステム全体の制御などを行う。操作部５３１はＣＤ−ＲＷをユーザが操作するためのものである。ＲＯＭ５３６には制御プログラムなどが格納され、ＲＡＭ５３７はＣＰＵ５３０のワーク領域として機能する。ＤＭＡＣ５３８はＤＭＡコントローラである。
【０２１９】
レーザ、モータ、光学系などからなる読み取り＆書き込み部（データの取り込み処理を行う装置又はデータの記憶処理を行うための装置）５３３によりＣＤ−ＲＷ５３２から読み取られたデータは、信号処理部５３４に入力され、エラー訂正処理などの所与の信号処理が施される。そして、信号処理が施されたデータが、ＣＰＵ５３０又はＤＭＡＣ５３８によりデータ転送制御装置５００に送られる。データ転送制御装置５００は、このパラレルのデータをシリアルデータに変換し、ＵＳＢを介して他の機器に送信する。
【０２２０】
一方、ＵＳＢを介して他の機器から送られてきたシリアルのデータは、データ転送制御装置５００によりパラレルのデータに変換される。そして、このパラレルデータは、ＣＰＵ５３０又はＤＭＡＣ５３８により信号処理部５３４に送られる。そして、信号処理部５３４においてこのパラレルデータに対して所与の信号処理が施され、読み取り＆書き込み部５３３によりＣＤ−ＲＷ５３２に記憶される。
【０２２１】
なお、図２１（Ａ）、（Ｂ）、（Ｃ）において、ＣＰＵ５１０、５２０、５３０の他に、データ転送制御装置５００でのデータ転送制御のためのＣＰＵを別に設けるようにしてもよい。
【０２２２】
本実施形態のデータ転送制御装置を電子機器に用いれば、ＯＴＧ機能を有する電子機器を実現できる。即ち、電子機器にホストとしての役割を持たせたり、デバイスとしての役割を持たせることが可能になり、これまでに存在しなかったアプリケーションを創出できる。
【０２２３】
また本実施形態のデータ転送制御装置を電子機器に用いれば、電子機器に組み込まれるＣＰＵ（処理部）の処理負荷が軽減され、安価なＣＰＵを用いることが可能になる。また、ＣＰＵが、データ転送制御処理以外の他の処理を余裕を持って行うことが可能になり、電子機器の性能向上や低コスト化を図れる。また、ＣＰＵ上で動作するファームウェアのプログラムを簡素化でき、電子機器の開発期間の短縮化を図れる。
【０２２４】
なお本実施形態のデータ転送制御装置を適用できる電子機器としては、上記以外にも例えば、種々の光ディスクドライブ（ＣＤ−ＲＯＭ、ＤＶＤ）、光磁気ディスクドライブ（ＭＯ）、ハードディスクドライブ、デジタルビデオカメラ、携帯電話、スキャナ、ＴＶ、ＶＴＲ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、或いはワードプロセッサなど種々のものを考えることができる。
【０２２５】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０２２６】
例えば、本発明のデータ転送制御装置の構成は、図４等で説明した構成に限定されるものではなく、種々の変形実施が可能である。
【０２２７】
また、自動コントロール転送を実現する回路の構成も図１３に示す構成に限定されない。
【０２２８】
また、データ転送制御装置の各ブロック（ＨＣ、ＰＣ、ＯＴＧＣ等）の構成も、本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【０２２９】
また、転送条件レジスタに設定される転送条件情報も、本実施形態で説明した情報に限定されるものではない。
【０２３０】
また、明細書中の記載において広義な用語（ステートコントローラ、処理部、転送コントローラ、バス、転送比率情報、バッファ領域、ページサイズ等）として引用された用語（ＯＴＧコントローラ、ＣＰＵ・ファームウェア、ホストコントローラ・ペリフェラルコントローラ、ＵＳＢ、連続実行回数、パイプ領域・エンドポイント領域、マックスパケットサイズ等）は、明細書中の他の記載においても広義な用語に置き換えることができる。
【０２３１】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０２３２】
また、本実施形態ではＵＳＢのＯＴＧ規格への適用例を説明したが、本発明が適用されるのはＯＴＧ規格に限定されない。例えばＯＴＧ規格と同様の思想に基づく規格やＯＴＧ規格を発展させた規格におけるデータ転送にも本発明は適用できる。
【図面の簡単な説明】
【図１】図１（Ａ）、（Ｂ）、（Ｃ）は、ＵＳＢのＯＴＧ規格について説明するための図である。
【図２】図２（Ａ）、（Ｂ）は、ＳＲＰやＨＮＰの手順について説明するための図である。
【図３】図３（Ａ）、（Ｂ）は、ＯＨＣＩのリスト構造のディスクリプタなどについて説明するための図である。
【図４】本実施形態のデータ転送制御装置の構成例を示す図である。
【図５】図５（Ａ）、（Ｂ）は、パイプ領域、エンドポイント領域について説明するための図である。
【図６】デバイスリクエストについて説明するための図である。
【図７】本実施形態の自動コントロール転送手法について説明するための図である。
【図８】図８（Ａ）、（Ｂ）、（Ｃ）は、自動コントロール転送時の信号波形例を示す図である。
【図９】図９（Ａ）、（Ｂ）、（Ｃ）は、セットアップステージ、データステージでの信号波形例を示す図である。
【図１０】図１０（Ａ）、（Ｂ）は、ステータスステージでの信号波形例を示す図である。
【図１１】自動コントロール転送モードをオンにした時のファームウェアの処理例を示すフローチャートである。
【図１２】自動コントロール転送モードをオフにした時のファームウェアの処理例を示すフローチャートである。
【図１３】自動コントロール転送を実現する回路の例である。
【図１４】データ転送制御装置のホスト時の動作について説明するための図である。
【図１５】データ転送制御装置のペリフェラル時の動作について説明するための図である。
【図１６】レジスタ部について説明するための図である。
【図１７】ＯＴＧコントローラの詳細な構成例を示す図である。
【図１８】図１８（Ａ）、（Ｂ）は、ホストコントローラ、ペリフェラルコントローラの詳細な構成例を示す図である。
【図１９】バッファコントローラの詳細な構成例を示す図である。
【図２０】図２０（Ａ）、（Ｂ）、（Ｃ）は、領域確保手法やポインタ割り当て手法について説明するための図である。
【図２１】図２１（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の内部ブロック図の例である。
【図２２】図２２（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
ＰＩＰＥ０〜ＰＩＰＥｅ  パイプ（バッファ）領域
ＥＰ０〜ＥＰｅ          エンドポイント（バッファ）領域
ＴＲＥＧ０〜ＴＲＥＧｅ  転送条件レジスタ（共用レジスタ）
１０    トランシーバ
１２    物理層回路
２０    ＯＴＧコントローラ（ステートコントローラ）
３０    ＨＣ／ＰＣ切り替え回路
３２    ＨＣ／ＰＣセレクタ
３４    ラインステートコントローラ
４０    転送コントローラ
５０    ホストコントローラ
６０    ペリフェラルコントローラ
７０    レジスタ部
７２    転送条件レジスタ部（共用レジスタ）
８０    バッファコントローラ
１００  パケットバッファ（ＦＩＦＯ、ＲＡＭ）
１１０  インターフェース回路
１１２  ＤＭＡハンドラ回路
１１４  ＣＰＵインターフェース回路
１２０  クロックコントローラ
【図１】
0003636160.tif 000002
【図２】
0003636160.tif 000003
【図３】
0003636160.tif 000004
【図４】
0003636160.tif 000005
【図５】
0003636160.tif 000006
【図６】
0003636160.tif 000007
【図７】
0003636160.tif 000008
【図８】
0003636160.tif 000009
【図９】
0003636160.tif 000010
【図１０】
0003636160.tif 000011
【図１１】
0003636160.tif 000012
【図１２】
0003636160.tif 000013
【図１３】
0003636160.tif 000014
【図１４】
0003636160.tif 000015
【図１５】
0003636160.tif 000016
【図１６】
0003636160.tif 000017
【図１７】
0003636160.tif 000018
【図１８】
0003636160.tif 000019
【図１９】
0003636160.tif 000020
【図２０】
0003636160.tif 000021
【図２１】
0003636160.tif 000022
【図２２】
0003636160.tif 000023