(57)【要約】【課題】  種々のデータ転送速度をサポートし、データ転送処理能力を低下させることなく低消費電力化を図るデータ転送制御装置、電子機器及びデータ転送制御方法を提供する。【解決手段】  データ転送制御装置３０は、シリアルバスを介してシリアルデータを転送するシリアルデータ処理部３２と、シリアルデータを変換したパラレルデータのデータ転送処理を行うパラレルデータ処理部３４と、シリアルバスのデータ転送モードを検出する転送モード検出部３６と、各部に供給される動作クロックを生成するクロック生成部３８とを含む。クロック生成部３８は、データ転送モードが高速な第１の転送モードであると判断されたとき、シリアルデータ処理部３２及びパラレルデータ処理部３４の動作クロックの周波数の低減制御を省略する。データ転送モードが低速な第２の転送モードであると判断されたとき、シリアルデータ処理部３２の動作クロックの周波数の低減制御を省略し、パラレルデータ処理部３４の少なくとも一部の動作クロックの周波数の低減制御を行う。【選択図】      図３
2005122303.tif 000002
【特許請求の範囲】
【請求項１】
シリアルバスを介したデータ転送のためのデータ転送制御装置であって、
前記シリアルバスに接続され、該シリアルバスを介してシリアルデータを転送するシリアルデータ処理部と、
前記シリアルデータ処理部によって転送される前記シリアルデータを変換したパラレルデータのデータ転送処理を行うパラレルデータ処理部と、
前記シリアルバスのデータ転送モードが高速な第１の転送モードか、又は低速な第２の転送モードかを検出する転送モード検出部と、
前記データ転送制御装置の各部に供給される動作クロックを生成するクロック生成部と、
を含み、
前記クロック生成部は、
前記転送モード検出部の検出結果により前記データ転送モードが前記第１の転送モードであると判断されたとき、前記シリアルデータ処理部の動作クロック及び前記パラレルデータ処理部の動作クロックの周波数の低減制御を省略し、
前記転送モード検出部の検出結果により前記データ転送モードが前記第２の転送モードであると判断されたとき、前記シリアルデータ処理部の動作クロックについてはその周波数の低減制御を省略する一方で、前記パラレルデータ処理部の少なくとも一部の動作クロックについてはその周波数の低減制御を行うことを特徴とするデータ転送制御装置。
【請求項２】
請求項１において、
前記パラレルデータ処理部は、
前記シリアルデータ処理部によって各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域が確保されるパケットバッファと、
パイプ領域と該パイプ領域に対応するエンドポイントとの間でのデータ転送を制御する転送コントローラと、
前記複数のパイプ領域を前記パケットバッファに確保すると共に、前記パケットバッファのアクセス制御を行うバッファコントローラと、
前記バッファコントローラによってアクセスされたデータが転送される第２のバスのインターフェース処理を行うインターフェース部とを含み、
前記クロック生成部は、
前記転送モード検出部の検出結果により前記データ転送モードが前記第２の転送モードであると判断されたとき、前記インターフェース部の動作クロックについてその周波数の低減制御を省略することを特徴とするデータ転送制御装置。
【請求項３】
請求項２において、
前記シリアルバスは、電源ラインを含み、
前記パラレルデータ処理部は、
前記電源ラインの状態を検出する電源ライン検出回路と、
ホストの役割として動作するホスト動作のステートと、ペリフェラルの役割として動作するペリフェラル動作のステートとを含む複数のステートのステート間の遷移制御を行うステートコントローラとを含み、
前記電源ライン検出回路が、
前記電源ラインの電圧と基準電圧とを比較するコンパレータと、
前記電源ライン検出回路の動作クロックに基づき前記コンパレータの出力を取り込むモニタ部とを含み、
前記転送コントローラが、
ホスト動作時においてホストとしてのデータ転送を行うホストコントローラと、
ペリフェラル動作時においてペリフェラルとしてのデータ転送を行うペリフェラルコントローラとを含み、
前記クロック生成部が、
前記転送モード検出部の検出結果により前記データ転送モードが前記第２の転送モードであると判断されたとき、前記ホストコントローラの動作クロック、前記電源ライン検出回路の動作クロック、及び前記ステートコントローラの動作クロックのうち少なくとも１つについてはその周波数の低減制御を行うことを特徴とするデータ転送制御装置。
【請求項４】
請求項３において、
前記クロック生成部は、
前記ステートコントローラ用の前記第１の転送モードにおける高速な第１の動作クロック及び前記第２の転送モードにおける低速な第２の動作クロック、前記ホストコントローラ用の前記第１の転送モードにおける高速な第３の動作クロック及び前記第２の転送モードにおける低速な第４の動作クロック、前記ペリフェラルコントローラの動作クロック、及び前記インターフェース部の動作クロックを生成し、
前記クロック生成部は、
前記転送モード検出部の検出結果に基づいて第１及び第２の動作クロックの一方を前記ステートコントローラの動作クロックとして出力する第１のセレクタと、
前記転送モード検出部の検出結果に基づいて第３及び第４の動作クロックの一方を前記ホストコントローラの動作クロックとして出力する第２のセレクタとを含むことを特徴とするデータ転送制御装置。
【請求項５】
請求項４において、
前記クロック生成部は、
前記第１のセレクタの出力を停止させる制御を行うステートコントローラ用動作クロック生成回路と、
前記第２のセレクタの出力を停止させる制御を行うホストコントローラ用動作クロック生成回路と、
前記インターフェース部の動作クロックの出力を停止させる制御を行うインターフェース用動作クロック生成回路とを含み、
前記ステートコントローラ用動作クロック生成回路、前記ホストコントローラ用動作クロック生成回路、及び前記インターフェース用動作クロック生成回路の各動作クロック生成回路は、
前記ステートコントローラによって遷移制御された遷移先のステートに応じて、その出力を停止させることを特徴とするデータ転送制御装置。
【請求項６】
請求項５において、
前記ステートコントローラによって遷移制御された遷移先のステートに対応したクロックコマンドが設定されるクロックコマンドレジスタと、
前記クロックコマンドレジスタに設定された内容をデコードするクロックコマンドデコーダとを含み、
前記ステートコントローラ用動作クロック生成回路、前記ホストコントローラ用動作クロック生成回路、及び前記インターフェース用動作クロック生成回路の各動作クロック生成回路は、
前記クロックコマンドデコーダのデコード結果に基づいて、その出力を停止させることを特徴とするデータ転送制御装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
ＵＳＢ（Universal Serial Bus）のＯＴＧ（On-The-Go）規格に準拠したデータ転送を行うことを特徴とするデータ転送制御装置。
【請求項８】
請求項１乃至７のいずれか記載のデータ転送制御装置と、
前記データ転送制御装置及び前記シリアルバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置と、
前記データ転送制御装置のデータ転送を制御する処理部と、
を含むことを特徴とする電子機器。
【請求項９】
シリアルバスを介したデータ転送のためのデータ転送制御方法であって、
前記シリアルバスのデータ転送モードが高速な第１の転送モードか、又は低速な第２の転送モードかを検出し、
前記データ転送モードが前記第１の転送モードであると判断されたとき、前記シリアルバスに接続され該シリアルバスを介してシリアルデータを転送するシリアルデータ処理部の動作クロック、及び前記シリアルデータを変換したパラレルデータのデータ転送処理を行うパラレルデータ処理部の動作クロックの周波数の低減制御を省略し、前記データ転送モードが前記第２の転送モードであると判断されたとき、前記シリアルデータ処理部の動作クロックについてはその周波数の低減制御を省略すると一方で前記パラレルデータ処理部の少なくとも一部の動作クロックについてはその周波数の低減制御を行うことを特徴とするデータ転送制御方法。
【請求項１０】
請求項９において、
前記データ転送モードが前記第２の転送モードであると判断されたとき、前記パラレルデータが転送される第２のバスのインターフェース処理を行うインターフェース部の動作クロックの周波数の低減制御を省略することを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送制御装置、電子機器及びデータ転送制御方法に関する。
【背景技術】
【０００２】
ＵＳＢ（Universal Serial Bus）１．１規格では、種々のパーソナルコンピュータ周辺機器にとって必要とされる１２Ｍビット毎秒（bit per second：ｂｐｓ）（ＦＳ（Full Speed）モード）、或いはより低コストな周辺機器との接続を目的とした１．５Ｍｂｐｓ（ＬＳ（Low Speed）モード）のデータ転送速度が定義されている。そして近年、このＵＳＢ１．１規格に対する互換性を持ちながら、ＵＳＢ１．１規格に比べて格段に高速な４８０Ｍｂｐｓ（ＨＳ（High Speed）モード）のデータ転送速度を実現できる規格として、ＵＳＢ２．０規格が策定され、注目を浴びている。
【特許文献１】特開２００２−１３５１３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＨＳモードをサポートするＵＳＢ２．０規格に準拠した製品の市場が順調に拡大しているなか、ＵＳＢ  Ｉｍｐｌｅｍｅｎｔｅｒｓ  Ｆｏｒｕｍ（ＵＳＢ−ＩＦ）によって、ＵＳＢ規格の簡易ホストを実現する規格の１つとしてＵＳＢ  Ｏｎ−Ｔｈｅ−Ｇｏ（ＯＴＧ）が策定された。ＵＳＢ２．０規格を拡張する形で策定されたＯＴＧ規格（ＯＴＧ１．０）は、ＵＳＢインターフェースの新たな付加価値を生む可能性を秘めており、その特質を生かしたアプリケーションの登場が待たれている。
【０００４】
ＯＴＧ規格等により実現される簡易ホストを利用すれば、これまでＵＳＢを介してホスト（パーソナルコンピュータ等）に接続されていたペリフェラル（周辺機器）に、ホスト機能を持たせることができる。これにより、ペリフェラル同士をＵＳＢで接続してデータを転送することが可能となる。例えばデジタルカメラとプリンタとをダイレクトに接続して、デジタルカメラの画像を印刷したり、デジタルカメラやデジタルビデオカメラをストレージ装置に接続して、画像データや映像データを保存することが可能となる。
【０００５】
このようにＯＴＧ規格等により実現される簡易ホストを利用することで、ペリフェラルはＵＳＢを介してホストに接続する必要がなくなり、例えば内蔵バッテリで駆動される携帯機器への応用が期待される。そのため、ペリフェラルの低消費電力化がますます重要となってくる。
【０００６】
ＵＳＢ規格では、ホストが、種々のデータ転送速度を有するデバイスをサポートする必要がある。そのため、ＦＳモードのデータ転送速度を有するデバイス（ＦＳデバイス）と接続される場合、ホストは、ＦＳモードのデータ転送速度に合わせて、ＵＳＢのインターフェース部分のクロックのみを１２ＭＨｚに変更することが考えられる。同様に、ＬＳモードのデータ転送速度を有するデバイス（ＬＳデバイス）と接続される場合、ホストは、ＬＳモードのデータ転送速度に合わせて、ＵＳＢのインターフェース部分のクロックのみを１．５ＭＨｚに変更することが考えられる。この場合、ＦＳデバイスとＬＳデバイスのいずれと接続される場合であっても、ホスト内においてインターフェース部分で送受信される転送データを処理するデータ転送処理部のクロックの周波数が一定となる。
【０００７】
しかしながら、ホスト内のデータ転送処理部のクロックをＬＳモードのデータ転送速度に合わせると、ＦＳデバイスのデータ転送処理が間に合わなくなる場合が生ずる。また、ホスト内のデータ転送処理部のクロックをＦＳモードのデータ転送速度に合わせると、ＬＳデバイスと接続された場合であっても、該データ転送処理部の消費電力は、ＦＳデバイスと接続された場合とほぼ同じになってしまう。
【０００８】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、種々のデータ転送速度をサポートし、データ転送処理能力を低下させることなく低消費電力化を図るデータ転送制御装置、電子機器及びデータ転送制御方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために本発明は、シリアルバスを介したデータ転送のためのデータ転送制御装置であって、前記シリアルバスに接続され、該シリアルバスを介してシリアルデータを転送するシリアルデータ処理部と、前記シリアルデータ処理部によって転送される前記シリアルデータを変換したパラレルデータのデータ転送処理を行うパラレルデータ処理部と、前記シリアルバスのデータ転送モードが高速な第１の転送モードか、又は低速な第２の転送モードかを検出する転送モード検出部と、前記データ転送制御装置の各部に供給される動作クロックを生成するクロック生成部とを含み、前記クロック生成部は、前記転送モード検出部の検出結果により前記データ転送モードが前記第１の転送モードであると判断されたとき、前記シリアルデータ処理部の動作クロック及び前記パラレルデータ処理部の動作クロックの周波数の低減制御を省略し、前記転送モード検出部の検出結果により前記データ転送モードが前記第２の転送モードであると判断されたとき、前記シリアルデータ処理部の動作クロックについてはその周波数の低減制御を省略する一方で、前記パラレルデータ処理部の少なくとも一部の動作クロックについてはその周波数の低減制御を行うデータ転送制御装置に関係する。
【００１０】
本発明においては、シリアルバスのデータ転送モードに関わらず、シリアルデータ処理部の動作クロックの周波数を変化させない。その一方で、パラレルデータ処理部の少なくとも一部の動作クロックについては、シリアルバスのデータ転送モードに応じて、その周波数を低減させる制御を行う。こうすることで、シリアルバスのデータ転送モードが高速な第１の転送モードであっても低速な第２の転送モードであっても、シリアルデータ処理部には、シリアルバスのデータ転送速度に合わせて動作クロックを供給でき、正常なデータ転送を実現する。その一方、第１の転送モードでは、パラレルデータ処理部への動作クロックの周波数を変化させないため、第１の転送モードのデータ転送速度に合わせてパラレルデータ処理部のデータ転送処理を実行できる。パラレルデータ処理部は第１の転送モードのデータ転送速度を満足させるデータ転送能力を有していることになるため、第２の転送モードでは、パラレルデータ処理部への動作クロックの周波数を低減させることができ、パラレルデータ処理部の消費電力を削減できる。
【００１１】
また本発明に係るデータ転送制御装置では、前記パラレルデータ処理部は、前記シリアルデータ処理部によって各エンドポイントとの間で転送されるデータが各パイプ領域に記憶される複数のパイプ領域が確保されるパケットバッファと、パイプ領域と該パイプ領域に対応するエンドポイントとの間でのデータ転送を制御する転送コントローラと、前記複数のパイプ領域を前記パケットバッファに確保すると共に、前記パケットバッファのアクセス制御を行うバッファコントローラと、前記バッファコントローラによってアクセスされたデータが転送される第２のバスのインターフェース処理を行うインターフェース部とを含み、前記クロック生成部は、前記転送モード検出部の検出結果により前記データ転送モードが前記第２の転送モードであると判断されたとき、前記インターフェース部の動作クロックについてその周波数の低減制御を省略することができる。
【００１２】
本発明よれば、高速なアクセスが要求される第２のバスを介したデータ転送能力を低下させることがなくなる。これにより、データ転送制御装置の低消費電力化とデータ転送処理能力の低下の防止とを両立させることができる。
【００１３】
また本発明に係るデータ転送制御装置では、前記シリアルバスは、電源ラインを含み、前記パラレルデータ処理部は、前記電源ラインの状態を検出する電源ライン検出回路と、ホストの役割として動作するホスト動作のステートと、ペリフェラルの役割として動作するペリフェラル動作のステートとを含む複数のステートのステート間の遷移制御を行うステートコントローラとを含み、前記電源ライン検出回路が、前記電源ラインの電圧と基準電圧とを比較するコンパレータと、前記電源ライン検出回路の動作クロックに基づき前記コンパレータの出力を取り込むモニタ部とを含み、前記転送コントローラが、ホスト動作時においてホストとしてのデータ転送を行うホストコントローラと、ペリフェラル動作時においてペリフェラルとしてのデータ転送を行うペリフェラルコントローラとを含み、前記クロック生成部が、前記転送モード検出部の検出結果により前記データ転送モードが前記第２の転送モードであると判断されたとき、前記ホストコントローラの動作クロック、前記電源ライン検出回路の動作クロック、及び前記ステートコントローラの動作クロックのうち少なくとも１つについてはその周波数の低減制御を行うことができる。
【００１４】
本発明によれば、ホストが、例えば第１又は第２のデータ転送速度を有するペリフェラルとの間のデータ転送を実現する場合であっても、データ転送処理能力を低下させることなく、低消費電力化を図ることができる。
【００１５】
また本発明に係るデータ転送制御装置では、前記クロック生成部は、前記ステートコントローラ用の前記第１の転送モードにおける高速な第１の動作クロック及び前記第２の転送モードにおける低速な第２の動作クロック、前記ホストコントローラ用の前記第１の転送モードにおける高速な第３の動作クロック及び前記第２の転送モードにおける低速な第４の動作クロック、前記ペリフェラルコントローラの動作クロック、及び前記インターフェース部の動作クロックを生成し、前記クロック生成部は、前記転送モード検出部の検出結果に基づいて第１及び第２の動作クロックの一方を前記ステートコントローラの動作クロックとして出力する第１のセレクタと、前記転送モード検出部の検出結果に基づいて第３及び第４の動作クロックの一方を前記ホストコントローラの動作クロックとして出力する第２のセレクタとを含むことができる。
【００１６】
本発明によれば、簡素な構成で、その周波数の低減制御が行われるステートコントローラの動作クロック及びホストコントローラの動作クロックを生成できる。
【００１７】
また本発明に係るデータ転送制御装置では、前記クロック生成部は、前記第１のセレクタの出力を停止させる制御を行うステートコントローラ用動作クロック生成回路と、前記第２のセレクタの出力を停止させる制御を行うホストコントローラ用動作クロック生成回路と、前記インターフェース部の動作クロックの出力を停止させる制御を行うインターフェース用動作クロック生成回路とを含み、前記ステートコントローラ用動作クロック生成回路、前記ホストコントローラ用動作クロック生成回路、及び前記インターフェース用動作クロック生成回路の各動作クロック生成回路は、前記ステートコントローラによって遷移制御された遷移先のステートに応じて、その出力を停止させることができる。
【００１８】
また本発明に係るデータ転送制御装置では、前記ステートコントローラによって遷移制御された遷移先のステートに対応したクロックコマンドが設定されるクロックコマンドレジスタと、前記クロックコマンドレジスタに設定された内容をデコードするクロックコマンドデコーダとを含み、前記ステートコントローラ用動作クロック生成回路、前記ホストコントローラ用動作クロック生成回路、及び前記インターフェース用動作クロック生成回路の各動作クロック生成回路は、前記クロックコマンドデコーダのデコード結果に基づいて、その出力を停止させることができる。
【００１９】
本発明によれば、ステートの遷移によって、各部の動作クロックの出力を停止させるため、上記の効果に加えて、より一層の低消費電力化を実現できる。
【００２０】
また本発明に係るデータ転送制御装置では、ＵＳＢ（Universal Serial Bus）のＯＴＧ（On-The-Go）規格に準拠したデータ転送を行うことができる。
【００２１】
また本発明は、上記のいずれか記載のデータ転送制御装置と、前記データ転送制御装置及び前記シリアルバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置と、前記データ転送制御装置のデータ転送を制御する処理部とを含む電子機器に関係する。
【００２２】
本発明によれば、データ転送処理能力を低下させることなく、低消費電力化を図る電子機器を提供できる。
【００２３】
また本発明は、シリアルバスを介したデータ転送のためのデータ転送制御方法であって、前記シリアルバスのデータ転送モードが高速な第１の転送モードか、又は低速な第２の転送モードかを検出し、前記データ転送モードが前記第１の転送モードであると判断されたとき、前記シリアルバスに接続され該シリアルバスを介してシリアルデータを転送するシリアルデータ処理部の動作クロック、及び前記シリアルデータを変換したパラレルデータのデータ転送処理を行うパラレルデータ処理部の動作クロックの周波数の低減制御を省略し、前記データ転送モードが前記第２の転送モードであると判断されたとき、前記シリアルデータ処理部の動作クロックについてはその周波数の低減制御を省略すると一方で前記パラレルデータ処理部の少なくとも一部の動作クロックについてはその周波数の低減制御を行うデータ転送制御方法に関係する。
【００２４】
また本発明に係るデータ転送制御装置では、前記データ転送モードが前記第２の転送モードであると判断されたとき、前記パラレルデータが転送される第２のバスのインターフェース処理を行うインターフェース部の動作クロックの周波数の低減制御を省略することができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成のすべてが本発明の必須構成要件であるとは限らない。
【００２６】
１．  簡易ホスト
１．１  Ａデバイス、Ｂデバイス
まず、簡易ホストを実現する規格の一例としてＯＴＧ（USB On-The-Go）について説明する。但し本発明の手法は、ＯＴＧ規格のデータ転送制御手法に限定されるものではない。
【００２７】
ＯＴＧでは、コネクタの規格として、図１（Ａ）に示すようなＭｉｎｉ−Ａプラグ（plug）、Ｍｉｎｉ−Ｂプラグが定義されている。また、これらのＭｉｎｉ−Ａプラグ、Ｍｉｎｉ−Ｂプラグの両方を接続できるコネクタとしてＭｉｎｉ−ＡＢレセプタクル（receptacle）が定義されている。
【００２８】
そして図１（Ｂ）のように、ＵＳＢケーブルのＭｉｎｉ−Ａプラグに電子機器Ｐが接続され、Ｍｉｎｉ−Ｂプラグに電子機器Ｑが接続されると、電子機器Ｐ、Ｑは、それぞれＡデバイス、Ｂデバイスに設定される。一方、図１（Ｃ）に示すように、Ｍｉｎｉ−Ｂプラグ、Ｍｉｎｉ−Ａプラグが電子機器Ｐ、Ｑに接続されると、電子機器Ｐ、Ｑは、それぞれＢデバイス、Ａデバイスに設定される。電子機器は、Ｍｉｎｉ−Ａプラグ及びＭｉｎｉ−ＢプラグのＩＤピンの電圧レベルを検出することで、自身がどちらのタイプのプラグに接続されたのか判断する。
【００２９】
図２に、ＵＳＢケーブルが接続される電子機器Ｐ、Ｑを模式的に示す。ＵＳＢケーブルは、ＶＢＵＳ（電源）、ＧＮＤ及び２本のデータ信号線（ＤＰ、ＤＭ）を有する。２本のデータ信号線ＤＰ、ＤＭの信号は、差動対を構成する。電子機器Ｐ、Ｑは、ＩＤ検出回路１２、２２を含む。ＩＤピンと電気的に接続される信号線をプルアップし、ＩＤ検出回路１２、２２が、該信号線の電圧レベルを検出することでＩＤピンが接地されているか否かを検出する。ＩＤ検出回路１２はＩＤピンに接続される信号線が接地されたことを検出するため、電子機器ＰはＭｉｎｉ−Ａプラグが接続されたと判断する。ＩＤ検出回路２２はＩＤピンに接続される信号線がプルアップされたことを検出するため、電子機器ＱはＭｉｎｉ−Ｂプラグが接続されたと判断する。
【００３０】
このような電子機器Ｐは、データ信号線ＤＰをプルアップするためのプルアップ抵抗Ｒ１、データ信号線ＤＰをプルダウンするためのプルダウン抵抗Ｒ２を有する。プルアップ抵抗Ｒ１は、スイッチ回路ＳＷ１を介してプルアップ用電源線に接続される。プルダウン抵抗Ｒ２は、スイッチ回路ＳＷ２を介してプルダウン用電源線に接続される。電子機器Ｑは、電子機器Ｐと同様に、データ信号線ＤＰをプルアップするためのプルアップ抵抗Ｒ３、データ信号線ＤＰをプルダウンするためのプルダウン抵抗Ｒ４を有する。プルアップ抵抗Ｒ３は、スイッチ回路ＳＷ３を介してプルアップ用電源線に接続される。プルダウン抵抗Ｒ４は、スイッチ回路ＳＷ４を介してプルダウン用電源線に接続される。電子機器Ｐ、Ｑでは、データ信号線ＤＭはプルダウンが可能な構成となっている。
【００３１】
ＯＴＧでは、Ａデバイス（マスタ）が、（図２では電源制御回路ＶＢＡにより）電源（ＶＢＵＳ）を供給する側（供給元）になり、Ｂデバイス（スレーブ）が、電源の供給を受ける側（供給先）になる。またＡデバイスは、デフォルト状態においてホストになり、Ｂデバイスは、デフォルト状態においてペリフェラル（周辺機器）になる。
【００３２】
ＯＴＧでは、データ信号線ＤＰ、ＤＭの状態により規定されるラインステートを変化させることで、ホストとペリフェラルとの間のデータ転送制御を実現する。ラインステートの変化は、上記のプルアップ抵抗やプルダウン抵抗により実現される。
【００３３】
１．２  ＳＲＰ、ＨＮＰ
ＯＴＧでは、ホスト（簡易ホスト）としての役割とペリフェラルとしての役割の両方を持つことができるデュアルロール・デバイス（Dual-Role Device）が定義されている。
【００３４】
デュアルロール・デバイスは、ホストにもペリフェラルにもなることができる。デュアルロール・デバイスに接続された装置が、従来のＵＳＢ規格におけるホストやペリフェラルである場合には、デュアルロール・デバイスの役割は一意に定まる。つまり、接続相手がホストであれば、デュアルロール・デバイスはペリフェラルに設定され、接続相手がペリフェラルであれば、デュアルロール・デバイスはホストに設定される。一方、接続相手がデュアルロール・デバイスである場合には、両方のデュアルロール・デバイスは、互いにホストの役割とペリフェラルの役割を交換できる。
【００３５】
デュアルロール・デバイスは、セッション開始要求手順ＳＲＰ（Session Request Protocol）やホスト交換手順ＨＮＰ（Host Negotiation Protocol）に従って制御される。
【００３６】
ＯＴＧでは、バス上のやり取りがないとき、Ａデバイスが電源供給を停止して、低消費電力化を図ることができる。ＳＲＰは、Ｂデバイスがセッションを開始してデータ転送を行う場合に、ＢデバイスがＡデバイスに対してＶＢＵＳ（電源）の供給を要求するプロトコルである。
【００３７】
またＯＴＧでは、上述のようにデュアルロール・デバイス同士の接続では、Ｍｉｎｉ−Ａプラグが接続された側であるＡデバイスがデフォルトのホストとなり、Ｍｉｎｉ−Ｂプラグが接続された側であるＢデバイスがデフォルトのペリフェラルとなる。そしてプラグの抜き差しを行わなくても、ホストの役割とペリフェラルの役割とを交換でき、ＨＮＰではこの役割交換を実現するプロトコルである。
【００３８】
２．  データ転送制御装置
ＯＴＧでは、内蔵バッテリで動作する携帯機器への適用を容易にするため、低消費電力化を図る種々の規格が規定されているが、ＯＴＧ規格を実現するだけでは十分な低消費電力化を実現できない。
【００３９】
ところでＵＳＢ規格では、ホストが、種々のデータ転送速度を有するデバイスをサポートする必要がある。これは、ＯＴＧの簡易ホストであっても同様である。ＵＳＢ規格では、ＨＳモード、ＦＳモード及びＬＳモードが定義されており、ホストは、ペリフェラルのデータ転送速度に合わせて、ＵＳＢのインターフェース部分のクロックのみを変更することが考えられる。
【００４０】
従って、ＨＳデバイス、ＦＳデバイス及びＬＳデバイスのいずれと接続される場合であっても、ホスト内においてインターフェース部分によって送受信される転送データを処理するデータ転送処理部のクロックは一定となる。そのため、ホスト内のデータ転送処理部のクロックをＬＳモードのデータ転送速度に合わせると、ＨＳデバイスやＦＳデバイスのデータ転送処理が間に合わなくなる。一方、ホスト内のデータ転送処理部のクロックをＨＳモードやＦＳモードのデータ転送速度に合わせると、ＬＳデバイスと接続された場合であっても、該データ転送処理部の消費電力は、ＨＳデバイスやＦＳデバイスと接続された場合とほぼ同じになってしまい、無駄な電力が消費されてしまう。
【００４１】
本実施形態におけるデータ転送制御装置では、以上のような問題を解決できる。
【００４２】
図３に、本実施形態のデータ転送制御装置の構成の概要を示す。本実施形態におけるデータ転送制御装置３０は、図３の一部の機能ブロックを省略する構成としてもよい。また図３に示す機能ブロックは、ハードウェア回路のみにより実現してもよいし、ハードウェア回路とファームウェア（ソフトウェア）の両方により実現してもよい。
【００４３】
本実施形態におけるデータ転送制御装置３０は、シリアルバス（例えばＵＳＢ）を介して接続される外部装置４０との間でデータ転送を行う。ここで外部装置４０は、高速な第１の転送モード、又は低速な第２の転送モードにより、データ転送制御装置３０との間でシリアルデータの転送を行うようになっている。シリアルバスのデータ転送モードが第１の転送モードのとき、高速なデータ転送速度でシリアルデータの転送を行う。シリアルバスのデータ転送モードが第２の転送モードのとき、低速なデータ転送速度でシリアルデータの転送を行う。
【００４４】
データ転送制御装置３０は、シリアルデータ処理部３２を含む。シリアルデータ処理部３２は、シリアルバスに接続され、該シリアルバスを介して外部装置４０との間でシリアルデータを転送（送信又は受信）する。
【００４５】
データ転送制御装置３０は、パラレルデータ処理部３４を含む。パラレルデータ処理部３４は、シリアルデータ処理部３２によって転送されるシリアルデータを変換したパラレルデータのデータ転送処理を行う。ここでデータ転送処理は、物理層の上位の層の処理を含む。
【００４６】
データ転送制御装置３０は、転送モード検出部３６を含む。転送モード検出部３６は、シリアルバスのデータ転送モードが高速な第１の転送モードか、又は低速な第２の転送モードかを検出する。転送モード検出部３６は、例えばシリアルバスのラインステートを検出したり、外部装置４０との間の転送データ（ヘッダ部）の内容を参照したりして、シリアルバスのデータ転送モードを検出する。
【００４７】
なおデータ転送制御装置３０と外部装置４０との間のネゴシエーションによってシリアルバスのデータ転送モードを定める場合、転送モード検出部３６は、外部装置４０のデータ転送モードを検出するようにしてもよい。
【００４８】
本発明は、転送モード検出部３６によるデータ転送モードの検出方式に限定されるものではない。
【００４９】
データ転送制御装置３０は、クロック生成部３８を含む。クロック生成部３８は、データ転送制御装置３０の各部に供給される動作クロックを生成する。クロック生成部３８は、シリアルデータ処理部３２、パラレルデータ処理部３４及び転送モード検出部３６のうち、少なくともシリアルデータ処理部３２及びパラレルデータ処理部３４に対して動作クロックを供給する。そして、転送モード検出部３６の検出結果に基づいて、シリアルバスのデータ転送モードが第１の転送モードであると判断されたとき、クロック生成部３８はシリアルデータ処理部３２の動作クロック及びパラレルデータ処理部３４の動作クロックの周波数の低減制御を行わない（省略する）。一方、転送モード検出部３６の検出結果により、データ転送モードが第２の転送モードであると判断されたとき、クロック生成部３８は、シリアルデータ処理部３２の動作クロックの周波数の低減制御を行わず（省略すると共に）、パラレルデータ処理部３４の少なくとも一部の動作クロックの周波数を低減させて出力する。
【００５０】
例えばＵＳＢ規格において、第１の転送モードをＨＳモードとすると、第２の転送モードをＦＳモード又はＬＳモードとすることができる。或いは第１の転送モードをＦＳモードとすると、第２の転送モードをＬＳモードとすることができる。
【００５１】
こうすることで、シリアルバスが（高速な）第１の転送モード（例えばＦＳモード）で転送される場合、シリアルデータ処理部３２及びパラレルデータ処理部３４の動作クロックの周波数は変化しない。そのため、シリアルデータ処理部３２は、第１の転送モードのデータ転送速度（例えばＦＳモードの１２Ｍｂｐｓ）に合わせてシリアルデータの転送を実現し、パラレルデータ処理部３４は第１の転送モードのデータ転送速度に応じたデータ転送処理を実行できる。
【００５２】
これに対して、シリアルバスが（低速な）第２の転送モード（例えばＬＳモード）で転送される場合、シリアルデータ処理部３２の動作クロックの周波数は変化せず、パラレルデータ処理部３４の少なくとも一部の動作クロックの周波数が低くなる。ここでパラレルデータ処理部３４に供給される動作クロックすべての周波数を低くしてもよい。そのため、シリアルデータ処理部３２は、第２の転送モードのデータ転送速度（例えばＬＳモードの１．５Ｍｂｐｓ）に合わせてシリアルデータの転送を実現し、パラレルデータ処理部３４は、低速な第２の転送モードのデータ転送速度に応じたデータ転送処理を実行でき、パラレルデータ処理部３４の消費電力を低減できる。
【００５３】
このような構成によりシリアルバスのデータ転送モードに応じてパラレルデータ処理部３４の動作クロックの周波数を制御することで、例えばパラレルデータ処理部３４が第２のバスを介して他の装置との間でパラレルデータの転送を行う場合であっても、該パラレルデータの転送処理能力を低減させることなく、消費電力の低減を図ることができる。
【００５４】
なお、図３において外部装置４０は、データ転送制御装置３０との間でシリアルバスに接続される装置であればよく、外部装置４０がデータ転送制御装置３０内に設けられていてもよい。
【００５５】
以下では、このような本実施形態におけるデータ転送制御装置３０を、ＯＴＧ規格に準拠したデータ転送制御装置に適用した場合について説明する。しかしながら、本発明は、ＯＴＧ規格を発展させた規格に準拠したデータ転送制御装置や、ＯＴＧ規格に準拠しないデータ転送制御装置にも適用できる。例えばデュアルロール・デバイスの機能を持たず、簡易ホストとしての機能だけを持つようなデータ転送制御装置にも本発明を適用できる。
【００５６】
図４に、図３に示すデータ転送制御装置が適用されたＯＴＧ規格に準拠したデータ転送制御装置の構成例を示す。図３に示すデータ転送制御装置が適用されたデータ転送制御装置は、図４の一部の機能ブロックを省略する構成としてもよい。また図４に示す機能ブロックは、ハードウェア回路のみにより実現してもよいし、ハードウェア回路とファームウェア（ソフトウェア）の両方により実現してもよい。
【００５７】
データ転送制御装置１００は、トランシーバ（以下、適宜Ｘｃｖｒと呼ぶ）１１０を含む。このトランシーバ１１０は、差動対を構成するデータ信号線ＤＰ、ＤＭの信号を用いてＵＳＢのデータを送受信する回路である。トランシーバ１１０は、ＵＳＢの物理層（ＰＨＹ）回路１１２を含む。より具体的には、トランシーバ１１０は、データ信号線ＤＰ、ＤＭのラインステート（Ｊ、Ｋ、ＳＥ０等）の生成、シリアル・パラレル変換、パラレル・シリアル変換、ビットスタッフィング、ビットアンスタッフィング、ＮＲＺＩデコード、ＮＲＺＩエンコード等を行う。なおトランシーバ１１０をデータ転送制御装置１００の外部に設けるようにしてもよい。
【００５８】
データ転送制御装置１００は、ＯＴＧコントローラ（広義にはステートコントローラ。以下、適宜ＯＴＧＣと呼ぶ）１２０を含む。このＯＴＧコントローラ１２０は、ＯＴＧのＳＲＰ機能やＨＮＰ機能を実現するための処理を行う。このためＯＴＧコントローラ１２０は、ホストの役割として動作するホスト動作のステートや、ペリフェラルの役割として動作するペリフェラル動作のステート等を含む複数のステートの制御を行う。
【００５９】
より具体的には、ＯＴＧ規格には、デュアルロール・デバイスのＡデバイスに設定された状態のステート遷移やＢデバイスに設定された状態のステート遷移が定義されている。ＯＴＧコントローラ１２０は、これらのステート遷移を実現するステートマシーンの機能を有する。またＯＴＧコントローラ１２０は、ＵＳＢのラインステートやＩＤピンの状態を検出（監視）する回路を含む。そしてＯＴＧコントローラ１２０は、これらの検出状態や、ＶＢＵＳコンパレータ１３０の検出状態に基づいてそのステート（例えば、ホスト、ペリフェラル、サスペンド又はアイドル等のステート）を変化させる。この場合のステート遷移は、ハードウェア回路により実現してもよいし、ファームウェアがステートコマンドをレジスタに設定することで実現してもよい。そしてステートが遷移すると、ＯＴＧコントローラ１２０は、遷移後のステートに応じて、ＶＢＵＳを制御したり、データ信号線ＤＰ、ＤＭのプルアップ制御、プルダウン制御を行う。またホストコントローラ（以下、適宜ＨＣと呼ぶ）１５０、ペリフェラルコントローラ（以下、適宜ＰＣと呼ぶ）１６０のイネーブル又はディセーブルを制御する。
【００６０】
データ転送制御装置１００は、ＶＢＵＳコンパレータ１３０を含む。このＶＢＵＳコンパレータ１３０は、ＵＳＢ（バス）のＶＢＵＳ（電源ライン）の電圧レベルを検出する。より具体的にはＶＢＵＳコンパレータ１３０は、ＶＢＵＳの電圧レベルが所与の基準電圧レベルを越えたか否かを検出し、その検出結果をＯＴＧコントローラ１２０に通知する。なおＶＢＵＳコンパレータ１３０をＯＴＧコントローラ１２０に内蔵するようにしてもよい。
【００６１】
データ転送制御装置１００は、ＨＣ／ＰＣ切り替え回路（ＨＣ／ＰＣ・コモン回路）１４０を含む。このＨＣ／ＰＣ切り替え回路１４０は、トランシーバ１１０と、ホストコントローラ１５０又はペリフェラルコントローラ１６０との間の接続の切り替えを制御する。またＵＳＢのデータ信号線ＤＰ、ＤＭのラインステートの生成の指示をトランシーバ１１０に対して行う。なお接続の切り替え制御は、ＨＣ／ＰＣセレクタ１４２により実現され、ラインステートの生成指示は、ラインステートコントローラ１４４により実現される。
【００６２】
例えばＯＴＧコントローラ１２０がホスト動作時にＨＣイネーブル信号（ＨＣ＿Ｅｎａｂｌｅ）をアクティブにすると、ＨＣ／ＰＣ切り替え回路１４０（ＨＣ／ＰＣセレクタ１４２）は、トランシーバ１１０とホストコントローラ１５０とを接続する。一方、ＯＴＧコントローラ１２０がペリフェラル動作時にＰＣイネーブル信号（ＰＣ＿Ｅｎａｂｌｅ）をアクティブにすると、ＨＣ／ＰＣ切り替え回路１４０は、トランシーバ１１０とペリフェラルコントローラ１６０とを接続する。これにより、ホストコントローラ１５０とペリフェラルコントローラ１６０とを排他的に動作させる。
【００６３】
データ転送制御装置１００は、転送コントローラ１７０を含む。この転送コントローラ１７０は、ＵＳＢを介したデータ転送を制御する回路であり、ホストコントローラ（ＨＣ）１５０と、ペリフェラルコントローラ（ＰＣ）１６０とを含む。なお簡易ホスト機能だけを実現する場合には、転送コントローラ１７０にペリフェラルコントローラ１６０を含ませない構成としてもよい。
【００６４】
ホストコントローラ１５０は、ホスト動作時にホストの役割としてのデータ転送制御を行う回路である。即ちホストコントローラ１５０は、ホスト動作時にＨＣ／ＰＣ切り替え回路１４０によりトランシーバ１１０に接続される。そしてホストコントローラ１５０は、レジスタ部１８０の転送条件レジスタ部１８２に設定された転送条件情報に基づき、エンドポイントに対するトランザクションを（自動）発生する。そしてパケットバッファ１９０に、確保（allocate）されたパイプ領域（ＰＩＰＥ０〜ＰＩＰＥｅ。以下、適宜ＰＩＰＥと呼ぶ）と、そのパイプ領域に対応するエンドポイントとの間で、データ（パケット）の自動転送（処理部が介在しないハードウェア回路によるデータ転送）を行う。
【００６５】
より具体的にはホストコントローラ１５０は、複数のパイプ転送間の調停、フレームにおける時間管理、転送のスケジューリング、再送の管理等を行う。またパイプ転送の転送条件情報（オペレーション情報）をレジスタ部１８０を介して管理する。またトランザクションの管理を行ったり、パケットを生成又は分解したり、サスペンド、レジューム又はリセット状態の生成の指示を行う。
【００６６】
ペリフェラルコントローラ１６０はペリフェラル動作時にペリフェラルの役割としてのデータ転送制御を行う回路である。即ちペリフェラルコントローラ１６０は、ペリフェラル動作時にＨＣ／ＰＣ切り替え回路１４０によりトランシーバ１１０に接続される。そしてレジスタ部１８０の転送条件レジスタ部１８２に設定された転送条件情報に基づき、パケットバッファ１９０に確保されたエンドポイント領域（ＥＰ０〜ＥＰｅ。以下適宜ＥＰと呼ぶ）とホストとの間でデータを転送する。
【００６７】
より具体的には、ペリフェラルコントローラ１６０は、エンドポイント転送の転送条件情報（オペレーション情報）をレジスタ部１８０を介して管理する。また、トランザクションの管理を行ったり、パケットを生成又は分解したり、リモート・ウェイクアップ信号の生成の指示を行う。
【００６８】
なおエンドポイントは、ユニークなアドレスを割り当てることができる、ペリフェラル（デバイス）上のポイント（部分）である。ホストとペリフェラル（デバイス）との間のデータ転送のすべては、このエンドポイントを経由して行われる。またトランザクションは、トークンパケットが発行されるフェーズと、オプショナルなデータパケットが発行されるフェーズと、オプショナルなハンドシェークパケットが発行されるフェーズとにより構成される。
【００６９】
データ転送制御装置１００は、レジスタ部１８０を含む。このレジスタ部１８０は、データ転送（パイプ転送、エンドポイント転送）制御、バッファアクセス制御、バッファ管理、割り込み制御、ブロック制御、クロック制御、或いはＤＭＡ制御等を行うための種々のレジスタを含む。なおレジスタは、ＲＡＭ（Random Access Memory）等のメモリにより実現してもよいし、Ｄフリップフロップ等により実現してもよい。またレジスタ部１８０のレジスタは、１つにまとめず、各ブロック（ＨＣ、ＰＣ、ＯＴＧＣ、Ｘｃｖｒ等）に分散して配置してもよい。
【００７０】
レジスタ部１８０は、転送条件レジスタ部１８２を含む。この転送条件レジスタ部１８２は、ホスト動作時にパケットバッファ１９０に確保されるパイプ領域（ＰＩＰＥ０〜ＰＩＰＥｅ）とエンドポイントとの間でのデータ転送の転送条件情報を記憶するレジスタを含む。これらの各転送条件レジスタは、パケットバッファ１９０の各パイプ領域に対応して設けられる。
【００７１】
なおペリフェラル動作時には、パケットバッファ１９０にエンドポイント領域（ＥＰ０〜ＥＰｅ）が確保される。そして転送条件レジスタ部１８２に設定された転送条件情報に基づいて、データ転送制御装置１００とホストとの間でのデータ転送が行われる。
【００７２】
レジスタ部１８０は、低消費電力モード設定レジスタ部１８４を含む。この低消費電力モード設定レジスタ部１８４は、ホスト動作時に、ＵＳＢ（バス）のデータ転送モード（或いはペリフェラルのデータ転送モード）に応じてデータ転送制御装置１００の各部の動作クロックの周波数の低減制御をイネーブル又はディセーブルにするためのデータが設定される。データ転送制御装置１００の各部の動作クロックは、クロックコントローラ２００により生成される。低消費電力モード設定レジスタ部１８４の設定データにより低消費電力モードがイネーブル状態に設定されている場合、ＵＳＢ（バス）がＦＳモードか、ＬＳモードかに応じて、各部に供給される動作クロックの周波数の低減制御が行われたり、該低減制御が省略されたりする。
【００７３】
データ転送制御装置１００はバッファコントローラ（ＦＩＦＯマネージャ）２１０を含む。このバッファコントローラ２１０は、パケットバッファ１９０に、パイプ領域やエンドポイント領域を確保する処理を行う。またパケットバッファ１９０に対するアクセス制御や領域管理を行う。より具体的にはバッファコントローラ２１０は、ＣＰＵからのアクセス（処理部側からのアクセス）、ＤＭＡからのアクセス（アプリケーション層デバイスからのアクセス）、ＵＳＢからのアクセス（転送コントローラからのアクセス）の制御を行ったり、これらのアクセスの調停を行ったり、これらのアクセスに必要なアドレスの生成及び管理を行う。
【００７４】
データ転送制御装置１００は、パケットバッファ（ＦＩＦＯ、パケットメモリ、データバッファ）１９０を含む。このパケットバッファ１９０は、ＵＳＢを介して転送されるデータ（送信データ又は受信データ）を一時的に記憶（バッファリング）するものである。このパケットバッファ１９０は、例えばＲＡＭ等により構成できる。なおパケットバッファ１９０の一部又は全部を、外付けメモリとしてデータ転送制御装置１００の外部に設けてもよい。
【００７５】
ホスト動作時には、パケットバッファ１９０はパイプ転送用のＦＩＦＯ（First-In First-Out）として用いられる。即ち、ＵＳＢ転送の各エンドポイントに対応するパイプ領域ＰＩＰＥ０〜ＰＩＰＥｅ（広義にはバッファ領域）が、パケットバッファ１９０に確保される。またパイプ領域ＰＩＰ０〜ＰＩＰＥｅの各パイプ領域には、パイプ領域に対応するエンドポイントとの間で転送されるデータ（送信データ又は受信データ）が記憶される。
【００７６】
一方、ペリフェラル動作時には、パケットバッファ１９０はエンドポイント転送用のＦＩＦＯとして用いられる。即ち、エンドポイント領域ＥＰ０〜ＥＰｅ（広義にはバッファ領域）がパケットバッファ１９０に確保される。またエンドポイント領域ＥＰ０〜ＥＰｅの各エンドポイント領域には、ホストとの間で転送されるデータ（送信データ又は受信データ）が記憶される。
【００７７】
なおパケットバッファ１９０に確保されるバッファ領域（ホスト動作時にパイプ領域に設定され、ペリフェラル動作時にエンドポイント領域に設定される領域）は、先に入力された情報が先に出力されるような記憶領域（ＦＩＦＯ領域）に設定されている。またＰＩＰＥ０は、コントロール転送用のエンドポイント０として割り当てられる専用のパイプ領域であり、ＰＩＰＥａ〜ＰＩＰＥｅは、任意のエンドポイントに割り当て可能な汎用のパイプ領域である。即ち、ＵＳＢ転送では、エンドポイント０がコントロール転送に専用のエンドポイントに設定される。従って本実施形態のようにＰＩＰＥ０をコントロール転送に専用のパイプ領域にすることで、ユーザが混乱するのを防止したり、ユーザによるパイプ領域の設定を簡素化できる。またＰＩＰＥａ〜ＰＩＰＥｅを任意のエンドポイントに割り当て可能な汎用のパイプ領域にすることで、エンドポイントに対応するパイプ領域を動的に変化させることが可能になる。これにより、パイプ転送のスケジューリングの自由度を向上でき、データ転送を効率化できる。
【００７８】
なお本実施形態では、マックスパケットサイズMaxPktSize（広義にはページサイズ）とページ数BufferPageにより、バッファ領域の領域サイズRsizeが設定される（Rsize=MaxPktSize×BuuferPage）。転送条件レジスタ部１８２は、バッファ領域ごとに、マックスパケットサイズMaxPktSize及びページ数BufferPageが設定されるレジスタを含む。このようにすることで、バッファ領域の領域サイズやページ数を任意に設定できるようになり、パケットバッファ１９０のリソースを有効利用できる。
【００７９】
データ転送制御装置１００は、インターフェース部２２０を含む。このインターフェース部２２０は、ＵＳＢとは異なる他のバスであるＤＭＡ（Direct Memory Access）バスやＣＰＵバス（第２のバス）と、パケットバッファ１９０との間のデータ転送を行うためのものである。インターフェース部２２０は、パケットバッファ１９０と外部のシステムメモリとの間でＤＭＡ転送を行うためのＤＭＡハンドラ回路２２２を含む。またパケットバッファ１９０と外部のＣＰＵとの間でＰＩＯ（Parallel I/O）転送を行うためのＣＰＵインターフェース回路２２４を含む。なお、ＣＰＵ（広義には処理部）をデータ転送制御装置に内蔵させてもよい。
【００８０】
データ転送制御装置１００は、クロックコントローラ２００を含む。このクロックコントローラ２００は、内蔵するＰＬＬ（Phase Locked Loop）回路が生成するクロックに基づいて、データ転送制御装置１００の各部に供給されるクロックを生成する。
【００８１】
より具体的には、クロックコントローラ２００は、１又は複数の機能ブロックを１つの回路ブロックとし、この回路ブロックごとに動作クロックを生成し、図４に示す各機能ブロックに対して動作クロックを供給する。そして低消費電力モード設定レジスタ部１８４の設定データにより低消費電力モードに設定されたとき、クロックコントローラ２００は、所定の回路ブロックごとに生成された動作クロックの周波数を低減させて出力する。
【００８２】
２．１  詳細な構成例
次に、各ブロックの詳細な構成例について説明する。
【００８３】
２．１．１  ＯＴＧコントローラ
図５に、ＯＴＧコントローラ１２０の構成例のブロック図を示す。
【００８４】
ＯＴＧコントローラ１２０は、ＯＴＧレジスタ部１２２を含む。このＯＴＧレジスタ部１２２は、ＯＴＧコントローラ１２０の状態をモニタするためのモニタレジスタや制御レジスタを含む。またファームウェア（ＣＰＵ）により設定されるステートコマンドをデコードする回路を含む。
【００８５】
ＯＴＧコントローラ１２０は、ＯＴＧ制御回路１２４を含む。このＯＴＧ制御回路１２４は、ステートの管理を行うＯＴＧ管理回路１２５、ＩＤピンの電圧レベルを検出するＩＤ検出回路１２６、ＵＳＢバスの状態（リセット、レジューム等）を検出するラインステート検出回路１２７を含む。
【００８６】
またＯＴＧコントローラ１２０は、時間計測を行うタイマ１２８を含む。ラインステート検出回路１２７は、トランシーバ１１０からのラインステート情報（Ｊ、Ｋ、ＳＥ０等）と、このタイマ１２８の時間計測情報とに基づいて、ＵＳＢ（バス）の状態を検出する。
【００８７】
ホスト動作のステートや、ペリフェラル動作のステートを遷移させるために検出すべき情報として、ＩＤピンの状態、ＶＢＵＳの電圧レベル、データ信号線ＤＰ、ＤＭのラインステートがある。ＯＴＧコントローラ１２０は、これらの情報を、モニタレジスタを介してファームウェア（ＣＰＵ）に伝える。ファームウェアは、これらの情報に基づいて自身のステートを遷移させると共に、遷移先のステートに対応したステートコマンドを制御レジスタに設定することで、遷移先のステートをＯＴＧコントローラ１２０に伝える。ＯＴＧコントローラ１２０は、ステートコマンドをデコードし、そのデコード結果に基づいて、ＶＢＵＳの電源供給制御、データ信号線ＤＰ（ＤＭ）のプルアップ制御及びプルダウン制御を行い、上述のＳＲＰやＨＮＰの機能を実現する。
【００８８】
本実施形態では、ステートごとの制御はＯＴＧコントローラ１２０が担当し、ファームウェアはステートの遷移管理に専念できる。この結果、すべてのステート制御をファームウェアで実現する場合に比べて、ファームウェア（ＣＰＵ）の処理負荷を軽減し、効率的なファームウェアを提供できる。
【００８９】
なおステート遷移の判断を、ファームウェアが行わずにハードウェアが行うようにしてもよい。或いはＯＴＧコントローラ１２０のほとんどの処理（例えばＶＢＵＳの電源供給制御、データ信号線ＤＰ（ＤＭ）のプルアップ制御及びプルダウン制御、ＩＤピンの検出、ラインステート検出以外の処理）をファームウェア（ソフトウェア）により実現してもよい。
【００９０】
２．１．２  ＶＢＵＳコンパレータ
図６に、ＶＢＵＳコンパレータ１３０の構成例の回路図を示す。
【００９１】
ＶＢＵＳコンパレータ（電源ライン検出回路）１３０は、コンパレータ１３２と、モニタ部１３４とを含む。コンパレータ１３２は、基準電圧Ｖｒｅｆの電圧レベルと、ＶＢＵＳ（電源ライン）の電圧レベルとの比較結果に対応した信号を出力する。より具体的には、コンパレータ１３２は、基準電圧Ｖｒｅｆの電圧レベルの半分（Ｖｒｅｆ／２）と、ＶＢＵＳラインの電圧レベルの半分（ＶＢＵＳ／２）とを比較し、この比較結果に対応した電圧レベルの信号を出力する。このように、基準電圧Ｖｒｅｆ及びＶＢＵＳの電圧それぞれの半分の電圧レベルを比較することで、コンパレータ１３２を構成する回路に必要な耐圧を低くできる。
【００９２】
モニタ部１３４は、例えばＤフリップフロップにより構成される。Ｄフリップフロップのデータ入力端子Ｄには、コンパレータ１３２の出力が接続される。Ｄフリップフロップのクロック入力端子Ｃには、ＯＴＧコントローラ１２０に供給される動作クロックＯＴＧＣ＿ＣＬＫが入力される。Ｄフリップフロップのデータ出力端子Ｑの出力信号が、ＯＴＧコントローラ１２０に供給される。
【００９３】
このような構成により、ＶＢＵＳの電圧レベルに対応した信号が、モニタ部１３４に取り込まれる。そしてモニタ部１３４の出力が、ＯＴＧコントローラ１２０に供給される。
【００９４】
ここでは、ＶＢＵＳコンパレータ１３０の動作クロックとして、ＯＴＧコントローラ１２０の動作クロックＯＴＧＣ＿ＣＬＫを供給しているが、これに限定されるものではなく、ＶＢＵＳコンパレータ１３０に専用の動作クロックであってもよい。
【００９５】
２．１．３  転送コントローラ
図７に、ホストコントローラ１５０の構成例のブロック図を示す。
【００９６】
ホストコントローラ１５０は、ＨＣシーケンス管理部１５２を含む。このＨＣシーケンス管理部１５２は、パイプ転送（パイプ領域を用いたデータ転送）の調停、時間管理、パイプ転送のスケジューリング、再送管理等を行う。
【００９７】
より具体的にはＨＣシーケンス管理部１５２は、フレーム番号のカウントや、ＳＯＦ（Start-Of-Frame）パケットの送信指示を行う。またアイソクロナス転送を各フレームの先頭で優先的に実行するための処理を行ったり、インタラプト転送をアイソクロナス転送の次に優先的に取り扱うための処理を行う。またパイプ転送の順序に従って各パイプ転送を指示する処理を行う。またトランザクションの連続実行回数を管理したり、残りフレーム時間の確認処理を行う。またペリフェラルから返ってきたハンドシェークパケット（ＡＣＫ、ＮＡＫ）に対する処理を行う。また、トランザクション実行時のエラー処理を行う。
【００９８】
ホストコントローラ１５０は、ターゲットパイプ管理部１５４を含む。このターゲットパイプ管理部１５４は、転送条件レジスタ部１８２に設定された転送条件情報のハンドリング処理等を行う。またトランザクション管理部１５６への転送指示を行う。
【００９９】
ホストコントローラ１５０は、トランザクション管理部１５６を含む。このトランザクション管理部１５６は、転送パケットの種類や転送順序の管理（トランザクションのシーケンス管理）を行う。また、タイムアウトの監視処理を行う。また、トランザクション終了の通知処理を行う。
【０１００】
ホストコントローラ１５０は、パケットハンドラ部１５８を含む。このパケットハンドラ部１５８は、パケットの生成、分解処理を行う。また、ＰＩＤ（Packet ID）のチェックやＣＲＣのデコード、エンコードを行う。また、バッファ領域のパケットのペイロードのリード、ライト処理や、ＳＯＦパケットの送信処理を行う。また、送受信データのカウント処理を行う。
【０１０１】
ホストコントローラ１５０の各部は、ハードウェアにより実現してもよいし、ファームウェアとハードウェアの両方により実現してもよい。
【０１０２】
図８に、ペリフェラルコントローラ１６０の構成例のブロック図を示す。
【０１０３】
ペリフェラルコントローラ１６０は、トランザクション管理部１６２、パケットハンドラ部１６４を含む。トランザクション管理部１６２は、ホストコントローラ１５０のトランザクション管理部１５６とほぼ同様の処理を行う。パケットハンドラ部１６４は、ホストコントローラ１５０のパケットハンドラ部１５８とほぼ同様の処理を行う。
【０１０４】
ペリフェラルコントローラ１６０の各部は、ハードウェアにより実現してもよいし、ファームウェアとハードウェアの両方により実現してもよい。
【０１０５】
２．１．４  バッファコントローラ
図９に、バッファコントローラ２１０の構成例のブロック図を示す。
【０１０６】
バッファコントローラ２１０は、領域確保（allocation）部２１２を含む。この領域確保部２１２は、バッファ領域（ホスト動作時にパイプ領域に設定され、ペリフェラル動作時にエンドポイント領域に設定される領域）を、パケットバッファ１９０に確保する。
【０１０７】
領域確保部２１２では、ページサイズとしてのマックスパケットサイズMaxPktSizeと、ページ数BufferPageとにより、バッファ領域の領域サイズ、スタートアドレス、エンドアドレス等が計算される。そして、各バッファ領域の書き込みポインタ、読み出しポインタが、データの転送方向に合わせて、ＤＭＡ用ポインタ、ＣＰＵ用ポインタ、ＵＳＢ用ポインタに割り当てられる。各バッファ領域の書き込みポインタ、読み出しポインタのポインタ情報（位置情報）は、レジスタ部１８０の転送条件レジスタ部１８２に保持される。転送条件レジスタ部１８２は、バッファ領域ごとにポインタ情報を保持する。
【０１０８】
バッファコントローラ２１０は、ポインタ管理部２１４を含む。このポインタ管理部２１４は、上記の各ポインタの更新を行いながら、パケットバッファ１９０にアクセスするための実アドレスを生成する。より具体的には、領域確保部２１２によって割り当てられた各種ポインタに基づいて、ＣＰＵ用アドレス、ＤＭＡ用アドレス、ＵＳＢ用アドレスを生成する。またＣＰＵ（ＣＰＵインターフェース回路）、ＤＭＡ（ＤＭＡハンドラ回路）からのアクセスごとに、或いはＵＳＢ（ＨＣ又はＰＣ）のトランザクション終了（ＡＣＫ、ＮＡＫ等のハンドシェークパケット送受信）ごとに、ポインタを更新する処理を行う。なお、更新後のポインタの情報は、領域確保部２１２を介してレジスタ部１８０の転送条件レジスタ部１８２に書き戻される。
【０１０９】
バッファコントローラ２１０は、バッファ管理部２１６を含む。このバッファ管理部２１６は、パケットバッファ１９０へのアクセスを管理する。バッファ管理部２１６は、ポインタ管理部２１４からのアドレスを受け、パケットバッファ１９０へのデータの入出力や、アドレス、出力イネーブル、ライトイネーブル、リードイネーブル等の出力を行う。
【０１１０】
またバッファ管理部２１６は、ＣＰＵ（ＣＰＵインターフェース回路）、ＤＭＡ（ＤＭＡハンドラ回路）、ＵＳＢ（ＨＣ又はＰＣ）からのアクセスを調停する。この調停結果に基づいて、ＣＰＵ用アドレス、ＤＭＡ用アドレス、ＵＳＢ用アドレスのいずれかが、パケットバッファ１９０のアクセスアドレスとして出力され、ＣＰＵ、ＤＭＡ又はＵＳＢとパケットバッファ１９０との間のデータ転送経路が設定される。
【０１１１】
バッファコントローラ２１０は、ＨＣ／ＰＣセレクタ２１８を含む。このＨＣ／ＰＣセレクタ２１８は、バッファ管理部２１６とホストコントローラ１５０又はペリフェラルコントローラ１６０との間の接続の切り替え制御を行う。例えばホスト動作時には、ホストコントローラ１５０とバッファ管理部２１６とを接続し、ペリフェラル動作時には、ペリフェラルコントローラ１６０とバッファ管理部２１６とを接続する。なお、この接続の切り替え制御は、ＯＴＧコントローラ１２０からのＨＣイネーブル信号（ＨＣ＿Ｅｎａｂｌｅ）、ＰＣイネーブル信号（ＰＣ＿Ｅｎａｂｌｅ）に基づいて行う。
【０１１２】
バッファコントローラ２１０の各部は、ハードウェアにより実現してもよいし、ファームウェアとハードウェアの両方により実現してもよい。
【０１１３】
２．２  パイプ領域、エンドポイント領域
本実施形態では、図１０（Ａ）に示すように、ホスト動作時にパケットバッファ１９０にパイプ領域ＰＩＰＥ０〜ＰＩＰＥｅが確保される。そしてこの各パイプ領域とペリフェラルの各エンドポイントの間でデータが転送される。
【０１１４】
ここで、本実施形態のパイプ領域の「パイプ」は、ＵＳＢ規格で定義される「パイプ」（デバイス上のエンドポイントとホスト上のソフトウェアとの間の関連を表す論理的な抽象化、論理的な経路）とは若干意味合いが異なる。
【０１１５】
本実施形態のパイプ領域は、図１０（Ａ）に示すように、ＵＳＢ（バス）に接続されるペリフェラルが有する各エンドポイント領域に対応して、パケットバッファ１９０上に確保される。例えば図１０（Ａ）において、パイプ領域ＰＩＰＥａは、ペリフェラル１のエンドポイント１（バルクＩＮ）に対応し、パイプ領域ＰＩＰＥｂは、ペリフェラル１のエンドポイント２（バルクＯＵＴ）に対応する。またパイプ領域ＰＩＰＥｃは、ペリフェラル２のエンドポイント１（バルクＩＮ）に対応し、パイプ領域ＰＩＰＥｄは、ペリフェラル２のエンドポイント２（バルクＯＵＴ）に対応する。またパイプ領域ＰＩＰＥｅは、ペリフェラル３のエンドポイント１（インタラプトＩＮ）に対応する。なおパイプ領域ＰＩＰＥ０は、コントロール転送のエンドポイント０に専用のパイプ領域である。
【０１１６】
そして図１０（Ａ）の例では、パイプ領域ＰＩＰＥａとペリフェラル１のエンドポイント１との間でＵＳＢ規格のバルクＩＮ転送が行われ、パイプ領域ＰＩＰＥｂとペリフェラル１のエンドポイント２との間でバルクＯＵＴ転送が行われる。またパイプ領域ＰＩＰＥｃとペリフェラル２のエンドポイント１との間ではバルクＩＮ転送が行われ、パイプ領域ＰＩＰＥｄとペリフェラル２のエンドポイント２との間でバルクＯＵＴ転送が行われる。またパイプ領域ＰＩＰＥｅとペリフェラル３のエンドポイント１との間ではインタラプトＩＮ転送が行われる。以上のように本実施形態では、パイプ領域（汎用）とそれに対応するエンドポイントとの間では、任意のデータ転送（アイソクロナス転送、バルク転送、インタラプト転送）を行うことができる。
【０１１７】
そして本実施形態では、パイプ領域とそれに対応するエンドポイントの間では所与のデータ単位（トータルサイズで指定されるデータ単位）のデータが転送される。このデータ単位としては、例えばＩＲＰ（Ｉ／Ｏリクエストパケット）により転送要求されるデータ単位又はそれを適当なサイズに分割したデータ単位を想定できる。エンドポイントに対するこのデータ単位のデータ転送（一連のトランザクション）を本実施形態における「パイプ」と呼ぶことができ、「パイプ」のデータ（送信データ、受信データ）を記憶する領域がパイプ領域になる。
【０１１８】
パイプ領域を用いた所与のデータ単位の転送が終了すると、そのパイプ領域は解放される。そして解放されたパイプ領域は新たに任意のエンドポイントに割り当てられる。このように本実施形態では、パイプ領域とエンドポイントとの対応付けを動的に変化させることができる。
【０１１９】
また本実施形態では図１０（Ｂ）に示すように、ペリフェラル動作時にはパケットバッファ１９０にエンドポイント領域ＥＰ０〜ＥＰｅが確保される。そして各エンドポイント領域とホストとの間でデータが転送される。
【０１２０】
このように本実施形態では、パケットバッファ１９０のバッファ領域を、ホスト動作時にはパイプ領域に割り当て、ペリフェラル動作時にはエンドポイント領域に割り当てている。これにより、ホスト動作時とペリフェラル動作時とでパケットバッファ１９０のリソースを共用（兼用）でき、パケットバッファ１９０の使用記憶容量を節約できる。なおパイプ領域、エンドポイント領域の個数は６個に限定されず任意である。
【０１２１】
２．３  動作クロック制御
データ転送制御装置１００は、図３に示すデータ転送制御装置３０の機能を有する。このためデータ転送制御装置１００の機能ブロックを、図３に示すようなシリアルデータ処理部又はパラレルデータ処理部に割り当てることができる。更にパラレルデータ処理部を、高速処理部と低速処理可能部とに分ける。高速処理可能部では、ＵＳＢ（バス）のデータ転送モードに関わらず、動作クロックの周波数の低減制御が省略される（動作クロックの周波数が変化しない）。低速処理可能部では、ＵＳＢ（バス）のデータ転送モードに応じて、動作クロックの周波数の低減制御が行われる。
【０１２２】
以下では、データ転送制御装置１００がＦＳモード及びＬＳモードのみをサポートする場合について説明するが、データ転送制御装置１００が更にＨＳモードをサポートする場合であっても同様である。
【０１２３】
図１１に、データ転送制御装置１００の機能ブロックを、シリアルデータ処理部又はパラレルデータ処理部に割り当てた例の模式図を示す。
【０１２４】
シリアルデータ処理部３００は、物理層回路１１２と、ＵＳＢ（バス）を介して転送されるシリアルデータを扱う回路（リンク層回路）とを含む。即ちシリアルデータ処理部３００には、回線速度処理部３０２として、ＵＳＢ（バス）のデータ転送速度に合わせた動作クロックが供給される。これは、データ転送を正常に行うために、回線速度処理部３０２の動作クロックをデータ転送速度に合わせる必要があるからである。
【０１２５】
例えばＵＳＢ（バス）のデータ転送モードがＦＳモードの場合、物理層回路１１２及びＵＳＢ（バス）を介して転送されるシリアルデータを扱う回路ではＦＳモードのデータ転送速度に対応する１２ＭＨｚの動作クロックが供給される。また、ＵＳＢ（バス）のデータ転送モードがＬＳモードの場合、物理層回路１１２及びＵＳＢ（バス）を介して転送されるシリアルデータを扱う回路ではＬＳモードのデータ転送速度に対応する１．５ＭＨｚの動作クロックが供給される。
【０１２６】
パラレルデータ処理部３１０は、ＯＴＧコントローラ１２０、ＶＢＵＳコンパレータ１３０、ホストコントローラ１５０、ペリフェラルコントローラ１６０、パケットバッファ１９０、クロックコントローラ２００のＰＬＬ回路、バッファコントローラ２１０、インターフェース部２２０を含む。
【０１２７】
パラレルデータ処理部３１０の低速処理可能部３２０は、ＯＴＧコントローラ１２０、ＶＢＵＳコンパレータ１３０、ホストコントローラ１５０を含む。
【０１２８】
ＵＳＢ規格では、ホスト動作時においてＦＳモード及びＬＳモードのデバイスの接続をサポートする必要がある。そのため、ＬＳモードではホストコントローラ１５０の動作クロックの周波数を低くしてもＵＳＢを介したデータ転送に影響を与えないため、ホストコントローラ１５０を低速処理可能部３２０に割り当てることができる。一方、ＦＳモードでは、高速な周波数の動作クロックを供給することで、データ転送処理の低下を防止する。こうすることで、データ転送処理能力の低下を防止し、かつ低消費電力化を図ることができる。
【０１２９】
また、ＯＴＧコントローラ１２０は、ホスト動作又はペリフェラル動作のステート制御を行う。そのため、クロック周波数の低減制御が行われるホスト動作を行うホストコントローラ１５０と同じ低速処理可能部３２０に割り当てることが望ましい。
【０１３０】
更にセッションを確認したりＳＲＰを行ったりするＶＢＵＳコンパレータ１３０の比較結果は、ミリ秒単位で監視され、精度や速度が要求されない。また、ＵＳＢのデータ転送に関わらないため、ＶＢＵＳコンパレータ１３０を、低速処理可能部３２０に割り当てることができる。
【０１３１】
例えばＵＳＢ（バス）のデータ転送モードがＦＳモードの場合、低速処理可能部３２０の各部には、ＦＳモードでのデータ転送処理が可能な例えば４８ＭＨｚの動作クロックが供給される。また、ＵＳＢ（バス）のデータ転送モードがＬＳモードの場合、低速処理可能部３２０の各部には、ＬＳモードでのデータ転送処理が可能な例えば３ＭＨｚの動作クロックが供給される。
【０１３２】
高速処理部３３０は、ペリフェラルコントローラ１６０、パケットバッファ１９０、クロックコントローラ２００のＰＬＬ回路、バッファコントローラ２１０、インターフェース部２２０を含む。これら各部は、ＵＳＢ（バス）のデータ転送モードがＦＳモードであってもＬＳモードであっても、ＣＰＵやＤＭＡの高速アクセスを実現する必要があり、高速処理部３３０に割り当てることが望ましいからである。
【０１３３】
ＵＳＢ（バス）のデータ転送モードに関わらず、高速処理部３３０の各部には、例えば４８ＭＨｚの動作クロックが供給される。
【０１３４】
図１１においては、転送コントローラ１７０を構成するホストコントローラ１５０及びペリフェラルコントローラ１６０が、それぞれ低速処理可能部３２０及び高速処理部３３０に割り当てられている。しかしながら、設計や制御等の簡素化のため、転送コントローラ１７０を構成するホストコントローラ１５０及びペリフェラルコントローラ１６０を低速処理可能部３２０に割り当ててもよい。
【０１３５】
またクロックコントローラ２００は、図３に示すクロック生成部３８の機能を有する。転送モード検出部３６の機能は、トランシーバ１１０又はＯＴＧコントローラ１２０に持たせることができる。
【０１３６】
なお低速処理可能部３２０及び高速処理部３３０は、図１１に示すものに限定されるものではなく、図１１の一部の機能ブロックを省略してもよい。
【０１３７】
以上のように、パラレルデータ処理部３１０は、転送コントローラ１７０と、パケットバッファ１９０と、バッファコントローラ２１０と、インターフェース部２２０とを含み、ＵＳＢ（バス）のデータ転送モードがＬＳモード（第２の転送モード）であると判断されたとき、クロック生成部としてのクロックコントローラ２００は、少なくともインターフェース部２２０の動作クロックの周波数の低減制御を省略すると言うことができる。
【０１３８】
更に、データ転送制御装置１００において、パラレルデータ処理部３１０は、電源ライン検出回路としてのＶＢＵＳコンパレータ１３０と、ステートコントローラとしてのＯＴＧコントローラ１２０とを含み、転送コントローラ１７０が、ホストコントローラ１５０と、ペリフェラルコントローラ１６０とを含む。そして、ＵＳＢ（バス）のデータ転送モードがＬＳモード（第２の転送モード）であると判断されたとき、クロックコントローラ２００が、ホストコントローラ１５０の動作クロック、ＶＢＵＳコンパレータ１３０の動作クロック（ＶＢＵＳの電圧レベルの比較結果をモニタするためのモニタ部の動作クロック）、及びＯＴＧコントローラ１２０の動作クロックのうち少なくとも１つの周波数の低減制御を行うと言うことができる。
【０１３９】
なおＵＳＢ（バス）のデータ転送モードがＦＳモードである場合、低速処理可能部３２０及び高速処理部３３０の動作クロックの周波数を４８ＭＨｚとしたのは１つの例である。パケットバッファ１９０へのアクセス時間が許容範囲内であって、かつシリアルデータ処理部３００のデータ転送に支障を来たさない（即ち、理論上のデータ転送速度がＦＳモードの１２ＭＨｚを下回らない）範囲においては、低速処理可能部３２０の動作クロックの周波数を更に低くしてもよい。
【０１４０】
同様にＵＳＢ（バス）のデータ転送モードがＬＳモードである場合、低速処理可能部３２０の動作クロックの周波数を３ＭＨｚとしたのは１つの例である。シリアルデータ処理部３００のデータ転送に支障を来たさない（即ち、理論上のデータ転送速度がＬＳモードの１．５ＭＨｚを下回らない）範囲においては、低速処理可能部３２０の動作クロックの周波数を更に低くしてもよい。
【０１４１】
２．３．１  動作クロック制御の動作例
以下では、パラレルデータ処理部３１０の低速処理可能部３２０に対して行われる動作クロックの周波数の低減制御について説明する。
【０１４２】
低消費電力モードに設定されているとき、ＵＳＢ（バス）のデータ転送モードに応じて、低速処理可能部３２０に対して、動作クロックの周波数の低減制御が行われる。レジスタ部１８０の低消費電力モード設定レジスタ部１８４にオンに対応する値を設定することで、低消費電力モードに移行する。
【０１４３】
図１２に、低消費電力モードへの移行フローの一例を示す。
【０１４４】
まず初期状態では、低消費電力モードがオンの状態となっている（ステップＳ１０）。即ち、レジスタ部１８０の低消費電力モード設定レジスタ部１８４には、オンに対応する値が設定されている。
【０１４５】
次に、外部装置としての機器が、（ＵＳＢ）ポートに接続されたか否かを判別する（ステップＳ１１）。ポートに機器が接続されていないと判別されたとき（ステップＳ１１：Ｎ）、ステップＳ１１に戻り、ウェイト状態となる。
【０１４６】
ポートに機器が接続されたと判別されたとき（ステップＳ１１：Ｙ）、ホストコントローラ１５０がイネーブル状態であるか否かを判別する（ステップＳ１２）。これは、ＯＴＧコントローラ１２０が出力するＨＣイネーブル信号（ＨＣ＿Ｅｎａｂｌｅ）を参照することで判別できる。
【０１４７】
ステップＳ１２において、ホストコントローラ１５０がイネーブル状態ではないと判別されたとき（ステップＳ１２：Ｎ）、一連の動作を終了する（エンド）。
【０１４８】
一方、ホストコントローラ１５０がイネーブル状態であると判別されたとき（ステップＳ１２：Ｙ）、接続された機器のデータ転送モードがＦＳモードであるＦＳ機器であるか否かを判別する（ステップＳ１３）。
【０１４９】
接続された機器がＦＳ機器であると判別されたとき（ステップＳ１３：Ｙ）、ＵＳＢ（バス）のデータ転送モードがＦＳモードであると判断し、低消費電力モードをオフに設定する（ステップＳ１４）。
【０１５０】
接続された機器がＦＳ機器ではないと判別されたとき（ステップＳ１３：Ｎ）、即ちＬＳ機器であると判別されたとき、ＵＳＢ（バス）のデータ転送モードがＦＳモードであると判断し、ステップＳ１５に進む。或いはステップＳ１４の後に、ステップＳ１５に進む。
【０１５１】
ステップＳ１５では、接続された機器がポートより切断されたか否かを判別する（ステップＳ１５）。接続された機器がポートより切断されたと判別されたとき（ステップＳ１５：Ｙ）、低消費電力モードをオンに設定して（ステップＳ１６）、ステップＳ１１に戻る。ステップＳ１５において、接続された機器がポートより切断されていないと判別されたとき（ステップＳ１５：Ｎ）、ステップＳ１５に戻る。
【０１５２】
このような移行フローは、外部装置としての機器がＵＳＢ（バス）に接続されたことによるラインステートの変化を検出するハードウェアによって実現される。
【０１５３】
図１３に、低消費電力モードにおいて低速処理可能部３２０に対して行われる動作クロックの周波数の低減制御を実現する回路の構成要部を示す。
【０１５４】
図１３におけるＦＳ接続検出部３５０、セレクタ３６０は、トランシーバ１１０又はＯＴＧコントローラ１２０に含めることができる。以下では、ＵＳＢ（バス）のデータ転送モードが、外部装置のデータ転送モードにより一意に決まるものとして説明する。
【０１５５】
ＦＳ接続検出部（広義には転送モード検出部）３５０は、ＵＳＢ（バス）を介して外部装置としての機器の接続の有無、及び該機器のデータ転送モードを検出する。より具体的には、ＨＣイネーブル信号（ＨＣ＿Ｅｎａｂｌｅ）がアクティブのとき、ＦＳ接続検出部３５０は、ＦＳ機器の接続の検出を行い、その検出結果に対応したＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔを出力する。ＦＳ機器が接続されたことが検出されたとき、ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔを１（Ｈレベル）とし、ＦＳ機器が接続されたことが検出されないとき、ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔを０（Ｌレベル）とするものとする。このようなＦＳ接続検出部３５０は、トランシーバ１１０からのデータ信号線ＤＰのシングルエンドのデータレシーバの受信信号ＳｉｎｇｌｅＥｎｄ＿ＤＰと、データ信号線ＤＭのシングルエンドのデータレシーバの受信信号ＳｉｎｇｌｅＥｎｄ＿ＤＭとを用いて、ＦＳ機器の接続の検出を行う。
【０１５６】
クロックコントローラ２００は、ＯＴＧコントローラ１２０用の例えば４８ＭＨｚの動作クロックＣＬＫｆ（ＦＳモードにおける高速な第１の動作クロック）及び例えば３ＭＨｚの動作クロックＣＬＫｓ（ＬＳモードにおける低速な第２の動作クロック）を生成する。またクロックコントローラ２００は、ホストコントローラ１５０用の例えば４８ＭＨｚの動作クロックＣＬＫｆ（ＦＳモードにおける高速な第３の動作クロック）及び例えば３ＭＨｚの動作クロックＣＬＫｓ（ＬＳモードにおける低速な第４の動作クロック）を生成する。更にクロックコントローラ２００は、ＶＢＵＳコンパレータ１３０用の例えば４８ＭＨｚの動作クロックＣＬＫｆ（ＦＳモードにおける高速な第５の動作クロック）及び例えば３ＭＨｚの動作クロックＣＬＫｓ（ＬＳモードにおける低速な第６の動作クロック）を生成する。更にまたクロックコントローラ２００は、ペリフェラルコントローラ１６０の動作クロック、及びインターフェース部２２０の動作クロックのクロックを生成する。
【０１５７】
そして、クロックコントローラ２００は、ＦＳ接続検出信号ＳＦＣｏｎｎｅｃｔに基づいて（広義には転送モード検出部の検出結果に基づいて）動作クロックＣＬＫｆ、ＣＬＫｓの一方をＯＴＧコントローラ１２０用の動作クロックとして出力する第１のセレクタを含む。またクロックコントローラ２００は、ＦＳ接続検出信号ＳＦＣｏｎｎｅｃｔに基づいて（広義には転送モード検出部の検出結果に基づいて）動作クロックＣＬＫｆ、ＣＬＫｓの一方をホストコントローラ１５０用の動作クロックとして出力する第２のセレクタを含む。
【０１５８】
図１３では、第１及び第３の動作クロックとして、４８ＭＨｚの動作クロックＣＬＫｆを共用している。また第２及び第４の動作クロックとして、３ＭＨｚの動作クロックＣＬＫｓを共用している。更に第１及び第２のセレクタとして、セレクタ３６０を共用している。
【０１５９】
より具体的には、図１３において、クロックコントローラ２００は、ＰＬＬ回路３７０を含む。ＰＬＬ回路３７０は、例えば４８ＭＨｚの高速な動作クロックＣＬＫｆと、例えば３ＭＨｚの低速な動作クロックＣＬＫｓを生成する。セレクタ３６０は、ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔが１のとき、動作クロックＣＬＫｆを選択動作クロックＳＥＬ＿ＣＬＫとして出力し、ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔが０のとき、動作クロックＣＬＫｓを選択動作クロックＳＥＬ＿ＣＬＫとして出力する。選択動作クロックＳＥＬ＿ＣＬＫが、低速処理可能部３２０のＯＴＧコントローラ１２０、ＶＢＵＳコンパレータ１３０、ホストコントローラ１５０の動作クロックとなる。
【０１６０】
まずトランシーバ１１０の構成例について説明する。
【０１６１】
図１４に、トランシーバ１１０の構成例のブロック図を示す。
【０１６２】
トランシーバ１１０は、物理層回路１１２、ビットスタッフ＆ＮＲＺＩエンコード部４００、ビットアンスタッフ＆ＮＲＺＩデコード部４０２、パラレル・シリアル変換部４０４、シリアル・パラレル変換部４０６、セレクタ４０８、分周部４１０を含む。
【０１６３】
ビットスタッフ＆ＮＲＺＩエンコード部４００は、パラレル・シリアル変換部４０４からのシリアル送信データＤａｔａＯｕｔ＿ｓに対して、スタッフビットを挿入して、ＮＲＺＩ（Non Return to Zero Invert）エンコードを行ってシリアル送信信号ＬｉｎｅＤａｔａＯｕｔとして物理層回路１１２に出力する。
【０１６４】
ビットアンスタッフ＆ＮＲＺＩデコード部４０２は、物理層回路１１２からのシリアル受信信号ＬｉｎｅＤａｔａＩｎに対して、ＮＲＺＩデコードを行った後、スタッフビットを削除し、シリアル受信データＤａｔａＩｎ＿ｓとしてシリアル・パラレル変換部４０６に出力する。
【０１６５】
パラレル・シリアル変換部４０４は、転送コントローラ１７０からのパラレルデータＤａｔａＯｕｔ（例えば８ビット）を、パラレルデータ処理クロックＰＡＣＬＫによって一旦保持した後、シリアルデータ処理クロックＳＲＣＬＫによってシリアル化し、シリアル送信データＤａｔａＯｕｔ＿ｓとして出力する。
【０１６６】
シリアル・パラレル変換部４０６は、シリアルデータ処理クロックＳＲＣＬＫに同期してシリアル受信データＤａｔａＩｎ＿ｓを順次保持してパラレル化した後、パラレルデータ処理クロックＰＡＣＬＫに同期してパラレルデータＤａｔａＩｎ（例えば８ビット）として出力する。
【０１６７】
パラレルデータ処理クロックＰＡＣＬＫは、セレクタ４０８の出力である。セレクタ４０８には、ホストコントローラ１５０の動作クロックとして図１３に示す選択動作クロックＳＥＬ＿ＣＬＫと、ペリフェラルコントローラ１６０の動作クロックＰＣ＿ＣＬＫが入力される。ＨＣイネーブル信号（ＨＣ＿Ｅｎａｂｌｅ）が１（Ｈレベル）のとき、セレクタ４０８は選択動作クロックＳＥＬ＿ＣＬＫを出力し、ＨＣイネーブル信号（ＨＣ＿Ｅｎａｂｌｅ）が０（Ｌレベル）のとき、セレクタ４０８は動作クロックＰＣ＿ＣＬＫを出力する。ここで、動作クロックＰＣ＿ＣＬＫは、動作クロックＣＬＫｆとすることができる。
【０１６８】
シリアルデータ処理クロックＳＲＣＬＫは、トランシーバクロックＸｃｖｒ＿ＣＬＫを分周する分周部４１０の出力である。トランシーバクロックＸｃｖｒ＿ＣＬＫは、例えば４８ＭＨｚの周波数の動作クロックである。ＦＳモードのとき、分周部４１０はトランシーバクロックＸｃｖｒ＿ＣＬＫを分周して１２ＭＨｚのシリアルデータ処理クロックＳＲＣＬＫを出力し、ＬＳモードのとき、分周部４１０はトランシーバクロックＸｃｖｒ＿ＣＬＫを分周して１．５ＭＨｚのシリアルデータ処理クロックＳＲＣＬＫを出力するようになっている。
【０１６９】
トランシーバ１１０では、物理層回路１１２、ビットスタッフ＆ＮＲＺＩエンコード部４００、ビットアンスタッフ＆ＮＲＺＩデコード部４０２を回線速度処理部３０２に割り当てることができる。またトランシーバ１１０では、パラレル・シリアル変換部４０４、シリアル・パラレル変換部４０６を低速処理可能部３２０に割り当てることができる。
【０１７０】
図１５に、物理層回路１１２の構成例の回路図を示す。
【０１７１】
物理層回路１１２は、ＬＳ／ＦＳドライバ４５０、ＬＳ／ＦＳ差動データレシーバ４５２、シングルエンドレシーバ４５４、４５６を含む。
【０１７２】
ＬＳ／ＦＳドライバ４５０は、ＬＳモード及びＦＳモードにおいて、ビットスタッフ＆ＮＲＺＩエンコード部４００からのシリアル送信信号ＬｉｎｅＤａｔａＯｕｔにより、データ信号線ＤＰ、ＤＭを駆動する。
【０１７３】
ＬＳモード及びＦＳモードにおいて、ＬＳ／ＦＳ差動データレシーバ４５２にはデータ信号線ＤＰ、ＤＭの差動信号が入力され、該差動信号に対応したシリアル受信信号ＬｉｎｅＤａｔａＩｎを出力する。
【０１７４】
シングルエンドレシーバ４５４には、データ信号線ＤＰの信号が入力され、該信号に対応した受信信号ＳｉｎｇｌｅＥｎｄ＿ＤＰを出力する。
【０１７５】
シングルエンドレシーバ４５６には、データ信号線ＤＭの信号が入力され、該信号に対応した受信信号ＳｉｎｇｌｅＥｎｄ＿ＤＭを出力する。
【０１７６】
データ信号線ＤＰは、プルアップ抵抗イネーブル信号Ｒｐｕ＿Ｅｎａｂｌｅ信号によってプルアップ制御が行われる。
【０１７７】
図１６に、ＦＳ接続検出部３５０の構成例のブロック図を示す。
【０１７８】
ＦＳ接続検出部３５０は、物理層回路１１２からの受信信号ＳｉｎｇｌｅＥｎｄ＿ＤＰ、ＳｉｎｇｌｅＥｎｄ＿ＤＭにより、ラインステートを検出する。このＦＳ接続検出部３５０は、ＳＥ０検出部３５２、ＦＳ＿Ｊ検出部３５３、ＬＳ＿Ｊ検出部３５４、ラインステート検出タイマ３５６を含む。
【０１７９】
ＳＥ０検出部３５２は、受信信号ＳｉｎｇｌｅＥｎｄ＿ＤＰが０、かつ受信信号ＳｉｎｇｌｅＥｎｄ＿ＤＭが０のとき、検出信号Ｌｉｎｅ＿ＳＥ０を１にする。
【０１８０】
ＦＳ＿Ｊ検出部３５３は、受信信号ＳｉｎｇｌｅＥｎｄ＿ＤＰが１、かつ受信信号ＳｉｎｇｌｅＥｎｄ＿ＤＭが０のとき、検出信号Ｌｉｎｅ＿ＦＳ＿Ｊを１にする。
【０１８１】
ＬＳ＿Ｊ検出部３５３は、受信信号ＳｉｎｇｌｅＥｎｄ＿ＤＰが０、かつ受信信号ＳｉｎｇｌｅＥｎｄ＿ＤＭが１のとき、検出信号Ｌｉｎｅ＿ＬＳ＿Ｊを１にする。
【０１８２】
ラインステート検出タイマ３５６は、検出信号Ｌｉｎｅ＿ＳＥ０、Ｌｉｎｅ＿ＦＳ＿Ｊ、Ｌｉｎｅ＿ＬＳ＿Ｊに基づいて、ＳＥ０状態、ＦＳモードのＪ状態又はＬＳモードのＪ状態を検出する。
【０１８３】
より具体的には、ラインステート検出タイマ３５６は、検出信号Ｌｉｎｅ＿ＳＥ０が１である状態が２．５μ秒以上継続したとき、ＳＥ０状態を検出したと判断し、検出信号Ｄｅｔｅｃｔ＿ＳＥ０として、１となるパルスを出力する。ラインステート検出タイマ３５６は、検出信号Ｌｉｎｅ＿ＦＳ＿Ｊが１である状態が２．５μ秒以上継続したとき、ＦＳモードのＪ状態を検出したと判断し、検出信号Ｄｅｔｅｃｔ＿ＦＳ＿Ｊとして、１となるパルスを出力する。ラインステート検出タイマ３５６は、検出信号Ｌｉｎｅ＿ＬＳ＿Ｊが１である状態が２．５μ秒以上継続したとき、ＬＳモードのＪ状態を検出したと判断し、検出信号Ｄｅｔｅｃｔ＿ＬＳ＿Ｊとして、１となるパルスを出力する。
【０１８４】
検出信号Ｄｅｔｅｃｔ＿ＳＥ０、Ｄｅｔｅｃｔ＿ＬＳ＿Ｊの論理和演算結果が、セレクタ３５７の切り替え制御信号となる。セレクタ３５７の出力が、セレクタ３５８の一方に入力される。検出信号Ｄｅｔｅｃｔ＿ＦＳ＿ＪとＨＣイネーブル信号（ＨＣ＿Ｅｎａｂｌｅ）の論理積演算結果が、セレクタ３５８の切り替え制御信号となる。セレクタ３５８の出力が、Ｄフリップフロップ３５９において４８ＭＨｚの動作クロックＣＬＫｆに同期して取り込まれ、ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔとして出力される。このＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔは、セレクタ３５７の一方にも入力され、ループを形成する。
【０１８５】
まずリセット信号ＸＲｓｔによりＤフリップフロップ３５９が初期化される。このとき、ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔが０となる。そして、ＨＣイネーブル信号（ＨＣ＿Ｅｎａｂｌｅ）が１となり、ＦＳモードのＪ状態（ＦＳ機器が接続され、かつアイドル状態）を検出すると、セレクタ３５８の出力が１となる。そして、セレクタ３５８の出力がＤフリップフロップ３５９に取り込まれた結果、ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔが１となる。
【０１８６】
ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔが１になると、検出信号Ｄｅｔｅｃｔ＿ＳＥ０、Ｄｅｔｅｃｔ＿ＬＳ＿Ｊの少なくとも一方が１にならない限り、即ちリセット状態（機器の切断状態）又はＬＳモードのＪ状態（ＬＳ機器が接続され、かつアイドル状態）が検出されない限り、ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔが０にならない。
【０１８７】
図１７に、図１３に示す構成の動作例のタイミング図を示す。
【０１８８】
リセット信号ＸＲｓｔにより初期化された後、ＨＣイネーブル信号（ＨＣ＿Ｅｎａｂｌｅ）が１になるものとする。ＦＳ接続検出部３５０は、ＦＳ機器の接続を検出すると、ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔを１にする。
【０１８９】
ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔがＬレベル（０）のとき、セレクタ３６０は、動作クロックＣＬＫｓをＯＴＧコントローラ１２０、ＶＢＵＳコンパレータ１３０及びホストコントローラ１５０に対して供給する。従って、低速処理可能部３２０の低消費電力化を実現できる。そして、ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔがＨレベル（１）になると、動作クロックＣＬＫｆをＯＴＧコントローラ１２０、ＶＢＵＳコンパレータ１３０及びホストコントローラ１５０に対して供給する。従って、低速処理可能部３２０のデータ転送処理の遅延を回避できる。
【０１９０】
３．  変形例
上述の実施形態では、シリアルバスのデータ転送モードに応じて動作クロックの周波数を変化させていたが、本変形例では、更にデータ転送制御装置の各部に供給する動作クロックの出力の停止制御も行うことで、より低消費電力化を図ることができる。本変形例では、ＯＴＧコントローラ１２０によって制御されるステートに応じて動作クロックの出力の停止制御行う。
【０１９１】
まず、適宜図２を参照しながら、ＯＴＧコントローラ１２０によって制御されるＡデバイス及びＢデバイスのステート遷移について説明する。
【０１９２】
３．１  Ａデバイスのステート遷移
図１８に、Ａデバイスのステート遷移を説明するための図を示す。
【０１９３】
Ａデバイスは、ａ＿ｉｄｌｅステートが開始ステートである（ＳＴ１）。
【０１９４】
デュアルロール・デバイスのＭｉｎｉ−ＡＢレセプタクルに、ＵＳＢケーブルのＭｉｎｉ−Ａプラグが挿入されていないとき、プルアップされたＩＤピンはＨレベル（id）となるため、ｂ＿ｉｄｌｅステートに遷移する（ＳＴ２）。即ち、デュアルロール・デバイスでは、デフォルトでＢデバイスとなる。一方、Ｍｉｎｉ−Ａプラグが挿入されると、ＩＤピンがＬレベル（id/）となるためａ＿ｉｄｌｅステートとなる（ＳＴ１）。
【０１９５】
ａ＿ｉｄｌｅステートでは、ＶＢＵＳへの電流供給が停止される。またデータ信号線ＤＰのプルアップが無効化（オフ）される（プルダウンが有効化される。より具体的には、図２に示すスイッチ回路ＳＷ１がオフ、スイッチ回路ＳＷ２がオン）。従って、ラインステートはＳＥ０状態となる。上位アプリケーションからＶＢＵＳの電圧を落とす要求がないとき（a_bus_drop/）であって、ＵＳＢ転送を行いたいとき（a_bus_req）又はＢデバイスからのＳＲＰを検出したとき（a_srp_det）、ａ＿ｗａｉｔ＿ｖｒｉｓｅステートに遷移する（ＳＴ３）。
【０１９６】
ａ＿ｗａｉｔ＿ｖｒｉｓｅステートでは、ＶＢＵＳへの電流供給が開始され、ＶＢＵＳの電圧が上がる。Ｍｉｎｉ−Ａプラグが抜かれたとき（id）、上位アプリケーションからＶＢＵＳの電圧を落とす要求があったとき（a_bus_drop）、ＶＢＵＳの電圧が所与の閾値電圧を越えたとき（a_vbus_vld）、又は当該ステートに規定時間以上経過したとき（a_wait_vrise_tmout）、ａ＿ｗａｉｔ＿ｂｃｏｎステートに遷移する（ＳＴ４）。
【０１９７】
ａ＿ｗａｉｔ＿ｂｃｏｎステートでは、Ａデバイス側のデータ信号線ＤＰのプルアップがオフとなる。このときＢデバイスによりデータ信号線ＤＰのプルアップが有効化（オン）（図２に示すＢデバイスのスイッチ回路ＳＷ３がオン、スイッチ回路ＳＷ４がオフ）され、データ信号線ＤＰがＨレベルになったとき（ラインステートがＪ状態）（b_conn）、ａ＿ｈｏｓｔステートに遷移する（ＳＴ５）。なお、Ｍｉｎｉ−Ａプラグが抜かれたとき（id）、上位アプリケーションからＶＢＵＳの電圧を落とす要求があったとき（a_bus_drop）、又は当該ステートで規定時間以上経過したとき（a_wait_bcon_tmout）、ａ＿ｗａｉｔ＿ｖｆａｌｌステートに遷移する（ＳＴ６）。また、何らかの原因で、ＶＢＵＳの電圧が所与の閾値電圧を下回ったとき（a_vbus_vld/）、ａ＿ｖｂｕｓ＿ｅｒｒステートに遷移する（ＳＴ７）。
【０１９８】
即ちデュアルロール・デバイスは、デフォルト状態ではＢデバイスであるため、Ａデバイスについては、ａ＿ｗａｉｔ＿ｂｃｏｎステートまで、データ信号線ＤＰはプルダウンされた状態のままである。ａ＿ｗａｉｔ＿ｖｒｉｓｅステートにおいてＶＢＵＳへの電流供給が開始されると、Ｂデバイスのプルアップがオンとなる。これにより、データ信号線ＤＰがプルダウンされた状態であるＡデバイスはホストとして動作し、データ信号線ＤＰがプルアップされた状態であるＢデバイスはペリフェラルとして動作する。
【０１９９】
ａ＿ｈｏｓｔステートでは、ＡデバイスがＵＳＢ規格のホストとして動作する。より具体的には、ホストとしてペリフェラルをエニュメレート（enumerate）するため、バスリセットするためのリセット信号として、ＳＥ０状態にデータ信号線を駆動する。そして、所与の規定時間だけその状態を継続させることにより、ペリフェラルではリセット処理が行われる。その後、ホストは、コントロール転送を用いて、コンフィギュレーション情報の転送やアドレスの割り当て等を行い、ＵＳＢ転送を開始する。当該ステートにおいて、ホストになったがバスを使わなくなったとき（a_bus_req/）、又はサスペンド状態への遷移要求があるとき（a_suspend_req）、ａ＿ｓｕｓｐｅｎｄステートに遷移する（ＳＴ８）。また、Ｍｉｎｉ−Ａプラグが抜かれたとき（id）、ラインステートがＪ状態からＳＥ０の状態になったとき（b_conn/）、又は上位アプリケーションからＶＢＵＳの電圧を落とす要求があったとき（a_bus_drop）、ａ＿ｗａｉｔ＿ｂｃｏｎステートに遷移する（ＳＴ９）。また、何らかの原因で、ＶＢＵＳの電圧が所与の閾値電圧を下回ったとき（a_vbus_vld/）、ａ＿ｖｂｕｓ＿ｅｒｒステートに遷移する（ＳＴ１０）。
【０２００】
ａ＿ｓｕｓｐｅｎｄステートでは、ＳＯＦ（Start Of Frame）パケットの送出が停止される。このとき、Ｂデバイスはペリフェラルとして動作しており、Ｂデバイスではｂ＿ｐｅｒｉｐｈｅｒａｌステートのままである。このとき、ＡデバイスがＢデバイスに対して上述のＨＮＰを許可し（a_set_b_hnp_en）、ＢデバイスにおいてプルアップがオフされてラインステートがＳＥ０状態になると（b_conn/）、ａ＿ｐｅｒｉｐｈｅｒａｌステートに遷移する（ＳＴ１１）。また、Ａデバイスがバスを使用したいとき（a_bus_req）、又はＢデバイスがラインステートをＫ状態にしたとき（b_bus_resume）、ａ＿ｈｏｓｔステートに遷移する（ＳＴ１２）。更にまたＡデバイスがＢデバイスに対して上述のＨＮＰを許可せず（a_set_b_hnp_en/）、ＢデバイスにおいてプルアップがオフされてラインステートがＳＥ０状態になると（b_conn/）、ａ＿ｗａｉｔ＿ｂｃｏｎステートに遷移する（ＳＴ１３）。更にまたＭｉｎｉ−Ａプラグが抜かれたとき（id）、上位アプリケーションからＶＢＵＳの電圧を落とす要求があったとき（a_bus_drop）、又はａ＿ｓｕｓｐｅｎｄステートで規定時間以上経過したとき（a_aidl_bdis_tmout）、ａ＿ｗａｉｔ＿ｖｆａｌｌステートに遷移する（ＳＴ１４）。また、何らかの原因で、ＶＢＵＳの電圧が所与の閾値電圧を下回ったとき（a_vbus_vld/）、ａ＿ｖｂｕｓ＿ｅｒｒステートに遷移する（ＳＴ１５）。
【０２０１】
ａ＿ｐｅｒｉｐｈｅｒａｌステートでは、Ａデバイスではプルアップをオンにし、Ｂデバイスでは後述するようにＡデバイスからＨＮＰのイネーブルによりＢデバイス側のプルアップがオフされるため、Ａデバイスがペリフェラルとなり、Ｂデバイスがホストになる。ホストとなったＢデバイスがデータ転送を終えた場合のようにＢデバイスがバスを使わないとき（b_bus_suspend）、ａ＿ｗａｉｔ＿ｂｃｏｎステートに遷移する（ＳＴ１６）。ａ＿ｗａｉｔ＿ｂｃｏｎステートでは、上述したようにＡデバイスのプルアップがオフされる。また、ａ＿ｐｅｒｉｐｈｅｒａｌステートにおいて、Ｍｉｎｉ−Ａプラグが抜かれたとき（id）、又は上位アプリケーションからＶＢＵＳの電圧を落とす要求があったとき（a_bus_drop）、ａ＿ｗａｉｔ＿ｖｆａｌｌステートに遷移する（ＳＴ１７）。また、何らかの原因で、ＶＢＵＳの電圧が所与の閾値電圧を下回ったとき（a_vbus_vld/）、ａ＿ｖｂｕｓ＿ｅｒｒステートに遷移する（ＳＴ１８）。
【０２０２】
ａ＿ｂｕｓ＿ｅｒｒステートでは、過電流状態となるため、例えばファームウェアによりＶＢＵＳの電圧を落とすように要求される。このようなステートにおいては、Ｍｉｎｉ−Ａプラグが抜かれたとき（id）、又は上位アプリケーションからＶＢＵＳの電圧を落とす要求があったとき（a_bus_drop）、ａ＿ｗａｉｔ＿ｖｆａｌｌステートに遷移する（ＳＴ１９）。
【０２０３】
ａ＿ｗａｉｔ＿ｖｆａｌｌステートでは、ＶＢＵＳへの電流供給が停止される。Ｍｉｎｉ−Ａプラグが抜かれたとき（id）、バスを使いたいとき（a_bus_req）、又はＶＢＵＳの電圧が所与の閾値電圧を下回った状態で（a_sess_vld/）ＢデバイスにおいてプルアップがオフされてラインステートがＳＥ０状態になると（b_conn/）、ａ＿ｉｄｌｅステートに遷移する（ＳＴ２０）。
【０２０４】
３．２  Ｂデバイスのステート遷移
図１９に、Ｂデバイスのステート遷移を説明するための図を示す。
【０２０５】
Ｂデバイスは、ｂ＿ｉｄｌｅステートが開始ステートである（ＳＴ３０）。
【０２０６】
ｂ＿ｉｄｌｅステートでは、ＶＢＵＳへの電流供給は停止される。従って、ＶＢＵＳの電圧は、所与の閾値電圧を下回る。またデータ信号線ＤＰのプルアップがオフされる。このとき、Ｍｉｎｉ−Ａプラグが挿入されると、ＩＤピンがＬレベル（id/）となるためａ＿ｉｄｌｅステートとなる（ＳＴ３１）。またＶＢＵＳの電圧が所与の閾値電圧を越えると（b_sess_vld）、ｂ＿ｐｅｒｉｐｈｅｒａｌステートに遷移する（ＳＴ３２）。
【０２０７】
ｂ＿ｐｅｒｉｐｈｅｒａｌステートでは、データ信号線ＤＰのプルアップがオンとなるため、Ａデバイスのａ＿ｗａｉｔ＿ｂｃｏｎステートにおいてｂ＿ｃｏｎｎの検出を行うことができる。ｂ＿ｐｅｒｉｈｅｒａｌステートでは、Ａデバイスからの要求に応答して、ペリフェラルとして動作する。Ｂデバイスがホストになるときは、Ａデバイスがａ＿ｓｕｓｐｅｎｄになったことを検出し（a_bus_suspend）、Ｂデバイスの上位アプリケーションからのホスト動作要求（b_bus_req）があって、かつＡデバイスからＨＮＰをイネーブルに設定されているとき（b_hnp_en）、ｂ＿ｗａｉｔ＿ａｃｏｎステートに遷移する（ＳＴ３３）。またｂ＿ｐｅｒｉｐｈｅｒａｌステートにおいて、Ｍｉｎｉ−Ａプラグが挿入されたとき（id/）、又はＶＢＵＳの電圧が所与の閾値電圧を下回ったとき（b_sess_vld/）、ｂ＿ｉｄｌｅステートに遷移する（ＳＴ３４）。この結果、ｂ＿ｉｄｌｅステートにおいてプルアップがオフされ、例えばＡデバイスはａ＿ｗａｉｔ＿ｖｆａｌｌステートからａ＿ｉｄｌｅステートに遷移することができる。
【０２０８】
ｂ＿ｗａｉｔ＿ａｃｏｎステートでは、Ｂデバイスのデータ信号線ＤＰのプルアップがオフされ、Ａデバイス側でデータ信号線ＤＰがプルアップされるのを待つ。そして、Ａデバイス側でデータ信号線ＤＰのプルアップがオンされると（a_conn）、ｂ＿ｈｏｓｔステートに遷移する（ＳＴ３５）。またｂ＿ｗａｉｔ＿ａｃｏｎステートにおいて、ＡデバイスがラインステートをＫ状態にしたことを検出したとき（a_bus_resume）、又はｂ＿ｗａｉｔ＿ａｃｏｎステートで規定時間以上経過すると（b_ase0_brst_tmout）、ｂ＿ｐｅｒｉｐｈｅｒａｌステートに遷移する（ＳＴ３６）。また、Ｍｉｎｉ−Ａプラグが挿入されたとき（id/）、又はＶＢＵＳの電圧が所与の閾値電圧を下回るとき（b_sess_vld/）、ｂ＿ｉｄｌｅステートに遷移する（ＳＴ３７）。
【０２０９】
ｂ＿ｈｏｓｔステートでは、ホスト処理が行われる。即ち、バスリセットを行って、ＳＯＦパケットの生成を開始する。Ａデバイスは、ホストとして動作するＢデバイスからの要求に応答することになる。Ｂデバイスが、ホストとして転送するデータがなくなりバスを使用しないとき（b_bus_req/）、又はＡデバイスにおいてプルアップがオフされたことが検出されたとき（a_conn/）、ｂ＿ｐｅｒｉｐｈｅｒａｌに遷移する（ＳＴ３８）。このとき、Ａデバイスは、Ｂデバイスのb_bus_suspendとして検出することができ、Ａデバイスではａ＿ｐｅｒｉｐｈｅｒａｌステートからａ＿ｗａｉｔ＿ｂｃｏｎステートに遷移する。この結果、Ａデバイスのプルアップがオフされる。ｂ＿ｐｅｒｉｐｈｅｒａｌステートでは、Ｂデバイスはプルアップがオンされる。また、ｂ＿ｈｏｓｔステートにおいて、Ｍｉｎｉ−Ａプラグが挿入されたとき（id/）、又はＶＢＵＳの電圧が所与の閾値電圧を下回るとき（b_sess_vld/）、ｂ＿ｉｄｌｅステートに遷移する（ＳＴ３９）。
【０２１０】
Ｂデバイスは、Ａデバイスがサスペンド状態のときＳＲＰによりセッション開始を要求することができる。即ち、ｂ＿ｉｄｌｅステートにおいて、Ｂデバイスの上位アプリケーションからのバス使用要求があり（b_bus_req）、ＶＢＵＳの電圧がＢデバイスのセッション終了閾値電圧を下回った状態で（b_sess_end）、かつラインステートがＳＥ０の状態で規定時間以上経過したとき（b_se0_srp）、ｂ＿ｓｒｐ＿ｉｎｉｔステートに遷移する（ＳＴ４０）。
【０２１１】
ｂ＿ｓｒｐ＿ｉｎｉｔステートでは、ＳＲＰによりセッション開始をＡデバイスに対して要求する。ＢデバイスがＳＲＰを終了したとき（b_srp_done）、又はＭｉｎｉ−Ａプラグが挿入されたとき（id/）、ｂ＿ｉｄｌｅステートに遷移する（ＳＴ４１）。
【０２１２】
３．３  回路ブロック
本変形例では、以下に示す回路ブロック単位で動作クロックを供給すると共に、この回路ブロック単位で動作クロックの停止制御を行う。
【０２１３】
図２０に、本変形例におけるクロックコントローラの停止制御単位である回路ブロックの一例を説明するための図を示す。ここでは、図４に示すデータ転送制御装置１００の機能ブロックと同一部分には同一符号をしている。
【０２１４】
本変形例におけるデータ転送制御装置５００では、５つの回路ブロックに分割し、各回路ブロック単位に動作クロックを生成すると共に出力の停止制御を行う。即ち、各回路ブロック単位に生成される動作クロックは、上述の実施形態で説明したようにその周波数の低減制御が行われ、かつその出力の停止制御も行われる。
【０２１５】
クロックコントローラ５１０は、トランシーバクロックＸｃｖｒ＿ＣＬＫ、ＨＣクロックＨＣ＿ＣＬＫ、ＰＣクロックＰＣ＿ＣＬＫ、メインクロックＭａｉｎ＿ＣＬＫ、ＯＴＧＣクロックＯＴＧＣ＿ＣＬＫを生成する。トランシーバクロックＸｃｖｒ＿ＣＬＫは、トランシーバ１１０に供給される。ＨＣクロックＨＣ＿ＣＬＫは、ホストコントローラ１５０に供給される。ＰＣクロックＰＣ＿ＣＬＫは、ペリフェラルコントローラ１６０に供給される。メインクロックＭａｉｎ＿ＣＬＫは、レジスタ部１８０、パケットバッファ１９０、バッファコントローラ２１０及びＤＭＡハンドラ回路２２２に供給される。ＯＴＧＣクロックＯＴＧＣ＿ＣＬＫは、ＯＴＧコントローラ１２０、ＨＣ／ＰＣ切り替え回路１４０及びＣＰＵインターフェース回路２２４に供給される。
【０２１６】
本変形例では、図２０に示した回路ブロックを単位として、図１８及び図１９に示したステートに応じて動作クロックの停止制御を行うか否かを示すクロック制御パターンに従って、動作クロックの停止制御を行う。
【０２１７】
３．４  クロック制御パターン
図２１に、クロック制御パターンの一例を示す。
【０２１８】
クロック制御パターンでは、ステートごとに、「ｏｎ」又は「ｏｆｆ」が指定される。
「ｏｎ」として指定される回路ブロックについては、動作クロックが供給される。「ｏｆｆ」として指定される回路ブロックについては、動作クロックが、例えばＬレベルに固定され、停止制御が行われる。
【０２１９】
データ転送制御装置５００では、ファームウェアでステート遷移制御が行われる。そして、遷移先のステートに応じたステートコマンドがＯＴＧコントローラ１２０に設定され、該ステートコマンドをデコードして当該ステートの制御を行うコントロール信号が生成される。そのためデータ転送制御装置５００では、原則としてファームウェアによりステートコマンドが設定されるため、ステートに応じたコントロール信号を生成するＯＴＧコントローラ１２０と、該ステートに対応したステートコマンドを設定するためのＣＰＵインターフェース回路２２４に対しては動作クロックを供給しておく必要がある。従って、ＯＴＧＣクロックＯＴＧＣ＿ＣＬＫは、ほとんどのステートで供給される。
【０２２０】
Ａデバイスに設定された場合、ａ＿ｉｄｌｅステートでは、ＶＢＵＳへの電流供給が行われず、かつデータ信号線ＤＰ、ＤＭが駆動されない。しかしながらＡデバイスとしては、接続相手のＢデバイスからのＳＲＰを検出する必要があるため、ＯＴＧコントローラ１２０及びＣＰＵインターフェース回路２２４に動作クロックを供給しておく必要がある。そこで、ａ＿ｉｄｌｅステートでは、ＯＴＧＣクロックＯＴＧＣ＿ＣＬＫのみ供給する。
【０２２１】
ａ＿ｗａｉｔ＿ｖｒｉｓｅステートはＶＢＵＳの電圧が所与の閾値電圧に達するのを待つステートであり、ａ＿ｗａｉｔ＿ｂｃｏｎステートはＢデバイスでデータ信号線がプルアップされるのを待つステートである。そのため、両ステートではＯＴＧコントローラ１２０及びＣＰＵインターフェース回路２２４に動作クロックを供給しておく必要がある。
【０２２２】
ａ＿ｈｏｓｔステートでは、ホストコントローラ１５０によりホスト動作が行われる。従って、ホスト機能と排他的に切り替えられるペリフェラル機能の動作制御を行うペリフェラルコントローラ１６０については動作クロックを供給する必要がない。そのためａ＿ｈｏｓｔステートでは、ＰＣクロックＰＣ＿ＣＬＫのみ供給を停止させることにより、低消費電力化を図ることができる。
【０２２３】
ａ＿ｓｕｓｐｅｎｄステートでは、ＢデバイスはＳＲＰやＨＮＰを開始することができる。そのため、ＯＴＧコントローラ１２０及びＣＰＵインターフェース回路２２４に動作クロックを供給しておく必要がある。
【０２２４】
ａ＿ｐｅｒｉｐｈｅｒａｌステートでは、ペリフェラルコントローラ１６０によりペリフェラル動作が行われる。従って、ペリフェラル機能と排他的に切り替えられるホスト機能の動作制御を行うホストコントローラ１５０については動作クロックを供給する必要がない。そのためａ＿ｐｅｒｉｐｈｅｒａｌステートでは、ＨＣクロックＨＣ＿ＣＬＫのみ供給を停止させることにより、低消費電力化を図ることができる。
【０２２５】
ａ＿ｗａｉｔ＿ｖｆａｌｌステートは、ＶＢＵＳの電圧が所与の閾値電圧を下回るのを待つステートである。そのため、ＯＴＧコントローラ１２０及びＣＰＵインターフェース回路２２４に動作クロックを供給しておく必要がある。
【０２２６】
ａ＿ｖｂｕｓ＿ｅｒｒステートでは、過電流によりＶＢＵＳの電圧が下がるのを待つステートである。そのため、ＯＴＧコントローラ１２０及びＣＰＵインターフェース回路２２４に動作クロックを供給しておく必要がある。
【０２２７】
一方、Ｂデバイスに設定された場合、ｂ＿ｉｄｌｅステートは、ＵＳＢケーブルが接続されていないときのデフォルトのステートである。従って、データ転送制御を行うことなく電流が消費されてしまう事態を回避するため、データ転送制御装置５００の各部への動作クロックの供給を停止する。ｂ＿ｉｄｌｅステートから他のステートに遷移するときは、まず遷移条件に対応した割り込み（例えば、ＣｈａｎｇｅＩＤ割り込みやＣｒｏｓｓ４４Ｖ割り込み）をトリガとしてＰＬＬ回路の動作を開始させる。その後、クロックが安定して供給されてＯＴＧコントローラ１２０及びＣＰＵインターフェース回路２２４にステートコマンドを設定可能になった後に、遷移先のステートに対応したステートコマンドが設定される。
【０２２８】
ｂ＿ｓｒｐ＿ｉｎｉｔステートでは、ＢデバイスがＳＲＰを開始するステートである。ｂ＿ｓｒｐ＿ｉｎｉｔステートでは、ＳＲＰによりデータラインパルシング及びＶＢＵＳパルシングを行うために、ＯＴＧコントローラ１２０及びＣＰＵインターフェース回路２２４に動作クロックを供給しておく必要がある。
【０２２９】
ｂ＿ｐｅｒｉｐｈｅｒａｌステートでは、ペリフェラルコントローラ１６０によりペリフェラル動作が行われる。従って、ペリフェラル機能と排他的に切り替えられるホスト機能の動作制御を行うホストコントローラ１５０については動作クロックを供給する必要がない。そのためｂ＿ｐｅｒｉｐｈｅｒａｌステートでは、ＨＣクロックＨＣ＿ＣＬＫのみ供給を停止させることにより、低消費電力化を図ることができる。
【０２３０】
ところが、ｂ＿ｐｅｒｉｈｅｒａｌステートであっても、ＵＳＢ２．０規格によれば、ダウンストリームデバイス（the downstream device）としてのＢデバイスは、接続相手であるアップストリームデバイス（the upstream device）としてのＡデバイスが３ｍｓ以上バスをサスペンド状態にしたことを検出すると、ＡデバイスはＵＳＢホストのサスペンド状態となる。この場合、ホストとして動作するＡデバイスがＵＳＢサスペンド状態であるため、Ｂデバイスは動作することができないため、すべてのブロックへのクロックの供給を停止させることで、低消費電力化を図ることができる。
【０２３１】
ｂ＿ｗａｉｔ＿ａｃｏｎステートは、ＨＮＰによりＡデバイスがペリフェラルになるのを待つステートである。従って、ＯＴＧコントローラ１２０及びＣＰＵインターフェース回路２２４のみ動作クロックを供給させればよい。しかしながら、ｂ＿ｗａｉｔ＿ａｃｏｎステートは、通常の場合、ｂ＿ｐｅｒｉｈｅｒａｌステートからｂ＿ｈｏｓｔステートへの遷移途中である。そこで、ｂ＿ｗａｉｔ＿ａｃｏｎステートの期間が短い場合には、ｂ＿ｐｅｒｉｐｈｅｒａｌステートと同じクロック供給制御を行う方が制御が簡素化される。従って、図２１ではｂ＿ｐｅｒｉｐｈｅｒａｌステートと同じクロック制御パターンになっている。
【０２３２】
ｂ＿ｈｏｓｔステートでは、ホストコントローラ１５０によりホスト動作が行われる。しかしながら、ホスト機能と排他的に切り替えられるペリフェラル機能の動作制御を行うペリフェラルコントローラ１６０については動作クロックを供給する必要がない。そのためｂ＿ｈｏｓｔステートでは、ＰＣクロックＰＣ＿ＣＬＫのみ供給を停止させることにより、低消費電力化を図ることができる。
【０２３３】
その他、テストモードでは全機能ブロックについて所与の検査を行うために、全機能ブロックにクロックが供給されるようにしてもよい。
【０２３４】
以上のようにＡデバイス及びＢデバイスの各ステートについて、回路ブロック単位でクロック制御を行う場合、クロック制御パターンは、Ｗａｉｔモード、Ｈｏｓｔモード、Ｐｅｒｉｐｈｅｒａｌモード、ＡｌｌＳｌｅｅｐモード、ＡｌｌＡｃｔｉｖｅモードの５パターンである。
【０２３５】
Ｗａｉｔモードでは、ＯＴＧコントローラ１２０、ＣＰＵインターフェース回路２２４及びＨＣ／ＰＣ切り替え回路１４０にのみ動作クロック（ＯＴＧＣクロックＯＴＧＣ＿ＣＬＫ）が供給される。
【０２３６】
Ｈｏｓｔモードでは、ＯＴＧコントローラ１２０、ＣＰＵインターフェース回路２２４、ＨＣ／ＰＣ切り替え回路１４０及びホストコントローラ１５０に動作クロック（ＯＴＧＣクロックＯＴＧＣ＿ＣＬＫ、ＨＣクロックＨＣ＿ＣＬＫ）が供給される。
【０２３７】
Ｐｅｒｉｐｈｅｒａｌモードでは、ＯＴＧコントローラ１２０、ＣＰＵインターフェース回路２２４、ＨＣ／ＰＣ切り替え回路１４０及びペリフェラルコントローラ１６０にのみクロック（ＯＴＧＣクロックＯＴＧＣ＿ＣＬＫ、ＰＣクロックＰＣ＿ＣＬＫ）が供給される。
【０２３８】
ＡｌｌＳｌｅｅｐモードでは、全機能ブロックのみならず、ＰＬＬ回路の発振動作も停止される。
【０２３９】
ＡｌｌＡｃｔｉｖｅモードでは、全機能ブロックに対して動作クロックが供給される。
【０２４０】
このような５パターンのいずれかのパターンに対応したクロックコマンドが、ファームウェアによりクロックコントローラ５１０に設定される。クロックコントローラ５１０では、このクロックコマンドをデコードして、回路ブロック単位で動作クロックの停止制御が行われる。
【０２４１】
３．５  クロックコントローラ
図２２に、クロックコントローラ５１０の構成例のブロック図を示す。
【０２４２】
クロックコントローラ５１０は、クロック生成回路６００、クロック出力制御回路６１０を含む。
【０２４３】
クロック生成回路６００は、発振回路６０２、ＰＬＬ回路６０４、クロック分配制御回路６０６を含む。発振回路６０２は、外部に接続された発振子の発振周波数に応じた発振出力をＰＬＬ回路６０４に供給する。ＰＬＬ回路６０４は、その発振出力を逓倍したＰＬＬクロックＰＬＬ＿ＣＬＫ（ＣＬＫｆ）（例えば４８ＭＨｚ）、ＣＬＫｓ（例えば３ＭＨｚ）を生成する。クロック分配制御回路６０６は、ＰＬＬクロックＰＬＬ＿ＣＬＫ又はＣＬＫｓを用いて回路ブロックごとに供給される動作クロックを生成し、各回路ブロックに分配する。
【０２４４】
発振回路６０２は、発振イネーブル信号ＯＳＣｅｎ（広義には出力制御信号）により、発振動作を開始又は停止する。ＰＬＬ回路６０４は、ＰＬＬイネーブル信号ＰＬＬｅｎ（広義には出力制御信号）により、ＰＬＬ発振動作を開始又は停止し、或いはＰＬＬクロックの出力を停止する。
【０２４５】
クロック分配制御回路６０６は、クロック出力制御回路６１０からのクロック分配制御信号（広義には出力制御信号）により、回路ブロックごとに動作クロックの出力制御を行って、回路ブロックに動作クロックを供給する
クロック出力制御回路６１０は、クロックコントロールレジスタ６１２、クロックモニタレジスタ６１４、クロックコマンドレジスタ６１６、クロックコマンドデコーダ６１８、起動回路６３０を含む。
【０２４６】
クロックコントロールレジスタ６１２には、ファームウェアによりクロックコントロールデータが設定される。クロックコントロールデータとして、例えば発振回路又はＰＬＬ回路を安定させるまでのウェイト数がある。
【０２４７】
クロックモニタレジスタ６１４には、クロック出力制御回路６１０によるクロック生成回路６００の監視結果が設定される。この監視結果として、例えば起動回路６３０から出力される発振イネーブル信号ＯＳＣｅｎの状態が設定されたり、クロックコマンドデコーダ６１８から出力される出力制御信号の状態が設定されたりする。ファームウェアを処理するＣＰＵは、例えばクロックモニタレジスタ６１４から読み出されたクロックモニタデータを参照することができる。
【０２４８】
クロックコマンドレジスタ６１６には、ファームウェア若しくはハードウェアによりクロックコマンドが設定される。クロックコマンドは、回路ブロック単位に動作クロックの出力を停止制御するか否かを示すクロック制御パターンに対応したコマンドである。
【０２４９】
クロックコマンドデコーダ６１８は、クロックコマンドレジスタ６１６に設定されたクロックコマンドをデコードして出力制御信号を生成する。この出力制御信号により、発振回路６０２、ＰＬＬ回路６０４又はクロック分配制御回路６０６の出力制御を行うことができる。
【０２５０】
起動回路６３０は、トリガ信号が入力されると、発振回路６０２の発振動作を開始させる発振イネーブル信号ＯＳＣｅｎとＰＬＬイネーブル信号ＰＬＬｅｎを出力する。起動回路６３０では、クロックコマンドデコーダ６１８のデコード結果を用いて、発振制御又はＰＬＬ発振制御が行われる。また起動回路６３０は、クロックコントロールレジスタ６１２の設定内容に基づき、発振制御又はＰＬＬ発振制御を行うことができるようにしてもよい。
【０２５１】
クロック出力制御回路６１０の起動回路６３０は、発振回路起動タイマ６２０、ＰＬＬ回路起動タイマ６２２、発振回路ウェイクアップ（OSCWakeUp）回路６２４、ＰＬＬウェイクアップ（PLLWakeUp）回路６２６を含む。
【０２５２】
発振回路起動タイマ６２０は、クロックコントロールレジスタ６１２に設定されたウェイト数を発振出力安定期間とし、タイマ起動後、該ウェイト数分を経過したときに、ＰＬＬ回路起動信号を出力し、ＰＬＬ回路６０４のＰＬＬ発振を開始させると共にＰＬＬ回路起動タイマ６２２を起動させる。
【０２５３】
ＰＬＬ回路起動タイマ６２２は、クロックコントロールレジスタ６１２に設定されたウェイト数をＰＬＬ発振出力安定期間とし、タイマ起動後、該ウェイト数分を経過したときに、ＰＬＬ回路ウェイクアップ信号をＰＬＬウェイクアップ回路６２６に出力する。
【０２５４】
発振回路ウェイクアップ回路６２４には、クロックコマンドデコーダ６１８から出力される発振回路発振イネーブル信号が入力される。発振回路発振イネーブル信号によりイネーブル状態になった発振回路ウェイクアップ回路６２４は、レジュームトリガ信号により起動され、発振イネーブル信号ＯＳＣｅｎを発振回路６０２に出力する。より具体的には、発振回路発振イネーブル信号によりイネーブル状態になった発振回路ウェイクアップ回路６２４は、リモート・ウェイクアップ（RemoteWakeUp）トリガ又はローカルウェイクアップ（LocalWakeUp）トリガにより起動され、発振イネーブル信号ＯＳＣｅｎを発振回路６０２に出力する。リモートウェイクアップトリガは、Ａデバイスが、ａ＿ｓｕｓｐｅｎｄステートからａ＿ｈｏｓｔステートに遷移するとき、ＢデバイスがラインステートをＫ状態にしたことを検出したときにアクティブとなる。ローカルウェイクアップトリガは、ＣｈａｎｇｅＩＤ割り込み、ＤｅｔｎｏｎＪ割り込み又はＣｒｏｓｓ４４Ｖ割り込みが発生したときにアクティブとなる。ここでＣｈａｎｇｅＩＤ割り込みは、例えばｂ＿ｉｄｌｅステートからａ＿ｉｄｌｅステートに遷移するときに、Ｍｉｎｉ−Ａプラグが挿入されたときのようにＩＤピンの変化をトリガとして発生する。ＤｅｔｎｏｎＪ割り込みは、ｂ＿ｉｄｌｅステートからｂ＿ｐｅｒｉｐｈｅｒａｌステートに遷移するときに、ラインステートがＪ状態でないことを検出したときに発生する。Ｃｒｏｓｓ４４Ｖ割り込みは、ＡデバイスにおいてＶＢＵＳの電圧が所与の閾値電圧が４．４Ｖを境に変化したときに発生する。
【０２５５】
ＰＬＬウェイクアップ回路６２６には、クロックコマンドデコーダ６１８から出力されるＰＬＬ回路発振イネーブル信号が入力される。ＰＬＬ回路発振イネーブル信号によりイネーブル状態になったＰＬＬウェイクアップ回路６２６は、ＰＬＬ回路起動タイマ６２２からのＰＬＬ回路ウェイクアップ信号により起動され、ＰＬＬ回路出力イネーブル信号を生成する。
【０２５６】
クロックコントロールレジスタ６１２には、書き込みイネーブル信号ＣＰＵ＿Ｃｔｌ＿ｗｒに基づき、ファームウェアにより発振回路又はＰＬＬ回路のウェイト数がＣＰＵ＿ＷＤａｔａとして設定される。
【０２５７】
クロックコマンドレジスタ６１６には、ファームウェアからの書き込みイネーブル信号ＣＰＵ＿Ｃｍｄ＿ｗｒ又はＯＴＧコントローラ１２０からの書き込みイネーブル信号ＯＴＧＣ＿Ｃｍｄ＿ｗｒに基づき、ファームウェアからのクロックコマンド又はＯＴＧコントローラ１２０からのクロックコマンドが設定される。なお、書き込みイネーブル信号ＯＴＧＣ＿Ｃｍｄ＿ｗｒには、ラインステートの監視結果に基づいて生成されるトリガ信号（例えばリモートウェイクアップトリガやローカルウェイクアップ）も含まれる。
【０２５８】
クロックモニタレジスタ６１４には、発振回路ウェイクアップ回路６２４から出力される発振イネーブル信号ＯＳＣｅｎの状態がＥｎＯＳＣとして割り当てられているクロックモニタレジスタ６１４のビットフィールドに設定される。また発振回路起動タイマ６２０から出力されるＰＬＬイネーブル信号ＰＬＬｅｎの状態が、ＥｎＰＬＬとして割り当てられているクロックモニタレジスタ６１４のビットフィールドに設定される。更にＰＬＬウェイクアップ回路６２６から出力されるＰＬＬ回路出力イネーブル信号の状態が、ＰＬＬＣｌｋＡｃｔｉｖｅとして割り当てられているクロックモニタレジスタ６１４のビットフィールドに設定される。更にまた、クロックコマンドデコーダ６１８から出力されるクロック分配制御信号ＯＴＧＣＳｌｅｅｐの状態が、ＣＰＵＣｌｋＡｃｔｉｖｅとして割り当てられているクロックモニタレジスタ６１４のビットフィールドに設定される。このようなクロックモニタレジスタ６１４の内容は、ファームウェアからの読み出しイネーブル信号ＣＰＵ＿Ｍｏｎ＿ｒｄに基づき、ＣＰＵ＿ＲＤａｔａとして読み出される。
【０２５９】
クロックコマンドデコーダ６１８は、クロックコマンドレジスタ６１６に設定されたクロックコマンドをデコードして、発振回路発振イネーブル信号、ＰＬＬ回路発振イネーブル信号、クロック分配制御信号ＸｃｖｒＳｌｅｅｐ、ＨＣＳｌｅｅｐ、ＰＣＳｌｅｅｐ、ＭａｉｎＳｌｅｅｐ、ＯＴＧＣＳｌｅｅｐ（広義には出力制御信号）を生成する。クロック分配制御信号は、クロック分配制御回路６０６に供給される。
【０２６０】
図２３に、クロック分配制御回路６０６の構成例の回路図を示す。
【０２６１】
クロック分配制御回路６０６は、Ｘｃｖｒ＿ＣＬＫ生成回路６５０、ＨＣ＿ＣＬＫ生成回路６５２、ＰＣ＿ＣＬＫ生成回路６５４、Ｍａｉｎ＿ＣＬＫ生成回路６５６、ＯＴＧＣ＿ＣＬＫ生成回路６５８を含む。
【０２６２】
Ｘｃｖｒ＿ＣＬＫ生成回路６５０は、トランシーバクロックＸｃｖｒ＿ＣＬＫを生成する。より具体的には、Ｘｃｖｒ＿ＣＬＫ生成回路６５０は、ＰＬＬ回路６０４からのＰＬＬクロックＰＬＬ＿ＣＬＫ（ＣＬＫｆ）に基づいてトランシーバクロックＸｃｖｒ＿ＣＬＫを生成する。クロック分配制御信号ＸｃｖｒＳｌｅｅｐがＬレベル（０）のとき、Ｘｃｖｒ＿ＣＬＫ生成回路６５０はＰＬＬクロックＰＬＬ＿ＣＬＫをトランシーバクロックＸｃｖｒ＿ＣＬＫとして出力する。クロック分配制御信号ＸｃｖｒＳｌｅｅｐがＨレベル（１）のとき、Ｘｃｖｒ＿ＣＬＫ生成回路６５０はその出力をＬレベルに固定してトランシーバクロックＸｃｖｒ＿ＣＬＫを停止させる。
【０２６３】
ＨＣ＿ＣＬＫ生成回路（ホストコントローラ用動作クロック生成回路）６５２は、ＨＣクロックＨＣ＿ＣＬＫを生成する。より具体的には、ＨＣ＿ＣＬＫ生成回路６５２は、セレクタＳＥＬ２（第２のセレクタ）の出力に基づいてＨＣクロックＨＣ＿ＣＬＫを生成する。クロック分配制御信号ＨＣＳｌｅｅｐがＬレベル（０）のとき、ＨＣ＿ＣＬＫ生成回路６５２はセレクタＳＥＬ２の出力Ｓｅｌ＿ＨＣ＿ＣＬＫをＨＣクロックＨＣ＿ＣＬＫとして出力する。クロック分配制御信号ＨＣＳｌｅｅｐがＨレベル（１）のとき、ＨＣ＿ＣＬＫ生成回路６５２はその出力をＬレベルに固定してＨＣクロックＨＣ＿ＣＬＫを停止させる。
【０２６４】
ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔが１のとき、セレクタＳＥＬ２はＰＬＬ回路６０４によって生成された例えば４８ＭＨｚのＰＬＬクロックＰＬＬ＿ＣＬＫを出力する。ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔが０のとき、セレクタＳＥＬ２はＰＬＬ回路６０４によって生成された例えば３ＭＨｚの動作クロックＣＬＫｓを出力する。
【０２６５】
ＰＣ＿ＣＬＫ生成回路６５４は、ＰＣクロックＰＣ＿ＣＬＫを生成する。より具体的には、ＰＣ＿ＣＬＫ生成回路６５４は、ＰＬＬ回路６０４からのＰＬＬクロックＰＬＬ＿ＣＬＫ（ＣＬＫｆ）に基づいてＰＣクロックＰＣ＿ＣＬＫを生成する。クロック分配制御信号ＰＣＳｌｅｅｐがＬレベル（０）のとき、ＰＣ＿ＣＬＫ生成回路６５４はＰＬＬクロックＰＬＬ＿ＣＬＫをＰＣクロックＰＣ＿ＣＬＫとして出力する。クロック分配制御信号ＰＣＳｌｅｅｐがＨレベル（１）のとき、ＰＣ＿ＣＬＫ生成回路６５４はその出力をＬレベルに固定してＰＣクロックＰＣ＿ＣＬＫを停止させる。
【０２６６】
Ｍａｉｎ＿ＣＬＫ生成回路６５６は、メインクロックＭａｉｎ＿ＣＬＫを生成する。より具体的には、Ｍａｉｎ＿ＣＬＫ生成回路６５６は、ＰＬＬ回路６０４からのＰＬＬクロックＰＬＬ＿ＣＬＫ（ＣＬＫｆ）に基づいてメインクロックＭａｉｎ＿ＣＬＫを生成する。クロック分配制御信号ＭａｉｎＳｌｅｅｐがＬレベル（０）のとき、Ｍａｉｎ＿ＣＬＫ生成回路６５６はＰＬＬクロックＰＬＬ＿ＣＬＫをメインクロックＭａｉｎ＿ＣＬＫとして出力する。クロック分配制御信号ＭａｉｎＳｌｅｅｐがＨレベル（１）のとき、Ｍａｉｎ＿ＣＬＫ生成回路６５６はその出力をＬレベルに固定してメインクロックＭａｉｎ＿ＣＬＫを停止させる。
【０２６７】
ＯＴＧＣ＿ＣＬＫ生成回路（ステートコントローラ用動作クロック生成回路、又はインターフェース用動作クロック生成回路）６５８は、ＯＴＧＣクロックＯＴＧＣ＿ＣＬＫを生成する。より具体的には、ＯＴＧＣ＿ＣＬＫ生成回路６５８は、セレクタＳＥＬ１（第１のセレクタ）の出力に基づいてＯＴＧＣクロックＯＴＧＣ＿ＣＬＫを生成する。クロック分配制御信号ＯＴＧＣＳｌｅｅｐがＬレベル（０）のとき、ＯＴＧＣ＿ＣＬＫ生成回路６５２はセレクタＳＥＬ２の出力Ｓｅｌ＿ＯＴＧＣ＿ＣＬＫをＯＴＧＣクロックＯＴＧＣ＿ＣＬＫとして出力する。クロック分配制御信号ＯＴＧＣＳｌｅｅｐがＨレベル（１）のとき、ＯＴＧＣ＿ＣＬＫ生成回路６５８はその出力をＬレベルに固定してＯＴＧＣクロックＯＴＧＣ＿ＣＬＫを停止させる。
【０２６８】
ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔが１のとき、セレクタＳＥＬ１はＰＬＬ回路６０４によって生成された例えば４８ＭＨｚのＰＬＬクロックＰＬＬ＿ＣＬＫを出力する。ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔが０のとき、セレクタＳＥＬ１はＰＬＬ回路６０４によって生成された例えば３ＭＨｚの動作クロックＣＬＫｓを出力する。
【０２６９】
図２４に、クロック分配制御回路６０６の動作例のタイミング図を示す。
【０２７０】
ここでは低消費電力モードがオンに設定されている状態でＡデバイスでのＢデバイス検知待ち状態からホスト状態に遷移した後に、ＦＳ機器に接続されたときのタイミングを示している。
【０２７１】
Ａデバイスにおいて、ａ＿ｗａｉｔ＿ｂｃｏｎステートでは、図２１に示すようにクロック制御パターンはＷａｉｔモードである。そのため、クロックコマンドレジスタ６１６にはＷａｉｔモードに対応したクロックコマンドが設定されている。従ってクロック分配制御信号ＨＣＳｌｅｅｐ、ＰＣＳｌｅｅｐ、ＭａｉｎＳｌｅｅｐ、ＸｃｖｒＳｌｅｅｐがＨレベルで、クロック分配制御信号ＯＴＧＣＳｌｅｅｐがＬレベルとなる。この結果、ＨＣクロックＨＣ＿ＣＬＫ、ＰＣクロックＰＣ＿ＣＬＫ、メインクロックＭａｉｎ＿ＣＬＫ、トランシーバクロックＸｃｖｒ＿ＣＬＫはＬレベルに固定される。また、このときホストに移行していないためＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔがＬレベルであり、セレクタＳＥＬ１は動作クロックＣＬＫｓを出力するため、ＯＴＧＣ＿ＣＬＫ生成回路６５８は、例えば３ＭＨｚのＯＴＧＣクロックＯＴＧＣ＿ＣＬＫを出力する。
【０２７２】
続いて、ａ＿ｗａｉｔ＿ｂｃｏｎステートからａ＿ｈｏｓｔステートに遷移するものとする。図２１に示すようににおいて、ａ＿ｈｏｓｔステートでは、クロック制御パターンはＨｏｓｔモードである。そのため、クロックコマンドレジスタ６１６にはＨｏｓｔモードに対応したクロックコマンドが、ファームウェアにより設定される。この結果、クロック分配制御信号ＰＣＳｌｅｅｐがＨレベルで、クロック分配制御信号ＨＣＳｌｅｅｐ、ＭａｉｎＳｌｅｅｐ、ＸｃｖｒＳｌｅｅｐ、ＯＴＧＣＳｌｅｅｐがＬレベルとなる。従って、ＰＣクロックＰＣ＿ＣＬＫのみがＬレベルに固定される。そして、Ｘｃｖｒ＿ＣＬＫ生成回路６５０、Ｍａｉｎ＿ＣＬＫ生成回路６５６は、例えば４８ＭＨｚのトランシーバクロックＸｃｖｒ＿ＣＬＫ、メインクロックＭａｉｎ＿ＣＬＫを出力する。また、このときホストに移行していないためＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔがＬレベルであり、セレクタＳＥＬ１は動作クロックＣＬＫｓを出力するため、ＯＴＧＣ＿ＣＬＫ生成回路６５８は、例えば３ＭＨｚのＯＴＧＣクロックＯＴＧＣ＿ＣＬＫを出力する。同様に、セレクタＳＥＬ２は動作クロックＣＬＫｓを出力するため、ＨＣ＿ＣＬＫ生成回路６５２は、例えば３ＭＨｚのＨＣクロックＨＣ＿ＣＬＫを出力する。
【０２７３】
次に、ホストに移行した後に、ＦＳ機器の接続が検出されたものとする。これにより、ＦＳ接続検出信号ＦＳＣｏｎｎｅｃｔがＨレベルとなる。セレクタＳＥＬ１はＰＬＬクロックＰＬＬ＿ＣＬＫを出力するため、ＯＴＧＣ＿ＣＬＫ生成回路６５８は、例えば４８ＭＨｚのＯＴＧＣクロックＯＴＧＣ＿ＣＬＫを出力する。同様に、セレクタＳＥＬ２はＰＬＬクロックＰＬＬ＿ＣＬＫを出力するため、ＨＣ＿ＣＬＫ生成回路６５２は、例えば４８ＭＨｚのＨＣクロックＨＣ＿ＣＬＫを出力する。
【０２７４】
このように本変形例によれば、遷移先のステートに応じて、更に回路ブロック単位に動作クロックを停止させることができるので、データ転送処理能力を低下させることなく、より低消費電力化を図ることができるようになる。
【０２７５】
４．  電子機器
図２５に、本実施形態又は本変形例のデータ転送制御装置を含む電子機器の構成例を示す。この電子機器８００は、本実施形態又は本変形例のデータ転送制御装置８１０、ＡＳＩＣ等で構成されるアプリケーション層デバイス８２０、ＣＰＵ（処理部）８３０、ＲＯＭ８４０、ＲＡＭ８５０、表示部８６０、操作部８７０を含む。なおこれらの機能ブロックの一部を省略する構成としてもよい。
【０２７６】
ここでアプリケーション層デバイス（広義にはデータ転送制御装置８１０及びシリアルバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置）８２０は、例えばハードディスクドライブ、光ディスクドライブ、或いはプリンタを制御するデバイスや、ＭＰＥＧエンコーダ、ＭＰＥＧデコーダ等を含むデバイス等である。ＣＰＵ８３０（処理部）はデータ転送制御装置８１０や電子機器全体の制御を行う。ＲＯＭ８４０は制御プログラムや各種データを記憶する。ＲＡＭ８５０はＣＰＵ８３０やデータ転送制御装置８１０のワーク領域やデータ格納領域として機能する。表示部８６０は種々の情報をユーザに表示する。操作部８７０はユーザが電子機器を操作するためのものである。
【０２７７】
なお図２５ではＤＭＡバスとＣＰＵバスが分離されているが、これらを共通化してもよい。またＣＰＵ８３０をデータ転送制御装置８１０に内蔵させたり、データ転送制御装置８１０を制御するＣＰＵと、電子機器を制御するＣＰＵとを別々に設けてもよい。また本実施形態又は本変形例が適用できる電子機器としては、光ディスクドライブ（ＣＤ−ＲＯＭ、ＤＶＤ）、光磁気ディスクドライブ（ＭＯ）、ハードディスクドライブ、ＴＶ、ＴＶチューナ、ＶＴＲ、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、或いはワードプロセッサ等の種々のものがある。
【０２７８】
なお、本発明は上記の実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０２７９】
例えば、本発明のデータ転送制御装置の構成は図３又は図４等で説明した構成に限定されるものではなく、種々の変形実施が可能である。例えば図４のＯＴＧコントローラ１２０、ＨＣ／ＰＣ切り替え回路１４０、ペリフェラルコントローラ１６０等の構成が省略され、ペリフェラル機能を持たず簡易ホスト機能だけを持つデータ転送制御装置にも、本発明は適用できる。
【０２８０】
また、明細書や図面中の記載において広義な用語（ステートコントローラ、処理部、転送コントローラ、バス、バッファ領域等）として引用された用語（ＯＴＧコントローラ、ＣＰＵ・ファームウェア、ホストコントローラ・ペリフェラルコントローラ、ＵＳＢ、パイプ領域・エンドポイント領域等）は、明細書や図面中の他の記載においても広義な用語に置き換えることができる。
【０２８１】
また、本発明のうち従属請求項に係る発明においては、従属先の請求項の構成要件の一部を省略する構成とすることもできる。また、本発明の１の独立請求項に係る発明の要部を、他の独立請求項に従属させることもできる。
【０２８２】
また、上記の実施形態ではＵＳＢのＯＴＧ規格への適用例を説明したが、本発明が適用されるのはＯＴＧ規格に限定されない。例えばＯＴＧ規格と同様の思想に基づく規格やＯＴＧ規格を発展させた規格におけるデータ転送にも本発明は適用できる。
【図面の簡単な説明】
【０２８３】
【図１】図１（Ａ）、（Ｂ）、（Ｃ）はＵＳＢのＯＴＧ規格の説明図。
【図２】Ｍｉｎｉ−Ａプラグ、Ｍｉｎｉ−Ｂプラグの説明図。
【図３】本実施形態のデータ転送制御装置の構成の概要のブロック図。
【図４】図３に示すデータ転送制御装置が適用されたＯＴＧ規格に準拠したデータ転送制御装置の構成例のブロック図。
【図５】ＯＴＧコントローラの構成例のブロック図。
【図６】ＶＢＵＳコンパレータの構成例の回路図。
【図７】ホストコントローラの構成例のブロック図。
【図８】ペリフェラルコントローラの構成例のブロック図。
【図９】バッファコントローラの構成例のブロック図。
【図１０】図１０（Ａ）、（Ｂ）はパイプ・エンドポイント領域の説明図。
【図１１】データ転送制御装置の機能ブロックをシリアルデータ処理部又はパラレルデータ処理部に割り当てた例を示す模式図。
【図１２】低消費電力モードへの移行例を示すフロー図。
【図１３】低速処理可能部に対して行われる動作クロックの周波数の低減制御を実現するための構成要部のブロック図。
【図１４】トランシーバの構成例のブロック図。
【図１５】物理層回路の構成例の回路図。
【図１６】ＦＳ接続検出部の構成例のブロック図。
【図１７】図１３に示す構成の動作例のタイミング図。
【図１８】Ａデバイスのステート遷移の説明図。
【図１９】Ｂデバイスのステート遷移の説明図。
【図２０】本変形例におけるクロックコントローラの停止制御単位である回路ブロックの一例の説明図。
【図２１】クロック制御パターンの説明図。
【図２２】本変形例におけるクロックコントローラの構成例のブロック図。
【図２３】クロック分配制御回路の構成例のブロック図。
【図２４】クロック分配制御回路の動作例のタイミング図。
【図２５】電子機器の構成例のブロック図。
【符号の説明】
【０２８４】
３０  データ転送制御装置、３２  シリアルデータ処理部、３４  パラレルデータ処理部、  ３６  転送モード検出部、３８  クロック生成部、４０  外部装置
【図１】
2005122303.tif 000003
【図２】
2005122303.tif 000004
【図３】
2005122303.tif 000005
【図４】
2005122303.tif 000006
【図５】
2005122303.tif 000007
【図６】
2005122303.tif 000008
【図７】
2005122303.tif 000009
【図８】
2005122303.tif 000010
【図９】
2005122303.tif 000011
【図１０】
2005122303.tif 000012
【図１１】
2005122303.tif 000013
【図１２】
2005122303.tif 000014
【図１３】
2005122303.tif 000015
【図１４】
2005122303.tif 000016
【図１５】
2005122303.tif 000017
【図１６】
2005122303.tif 000018
【図１７】
2005122303.tif 000019
【図１８】
2005122303.tif 000020
【図１９】
2005122303.tif 000021
【図２０】
2005122303.tif 000022
【図２１】
2005122303.tif 000023
【図２２】
2005122303.tif 000024
【図２３】
2005122303.tif 000025
【図２４】
2005122303.tif 000026
【図２５】
2005122303.tif 000027