(57)【特許請求の範囲】
【請求項１】
接続相手がＵＳＢ（Universal Serial Bus）規格におけるホストとして動作する場合にはＵＳＢ規格におけるペリフェラルとして動作し、接続相手が前記ペリフェラルとして動作する場合には前記ホストとして動作するためのコントローラを内蔵するデータ転送制御装置であって、
前記コントローラを制御するための各ステートに対応したステートコマンドが設定されるコントロールレジスタと、
データライン及び電源ラインの少なくとも１つの信号状態を検出する信号状態検出回路と、
前記ステートコマンドをデコードして、前記データライン及び前記電源ラインの少なくとも１つの信号状態を制御するコントロール信号を生成するステートコマンドデコーダとを含み、
前記データ転送制御装置が前記ホストとして前記データラインのラインステートをアイドル状態にした場合に、前記ペリフェラルとして動作する接続相手が前記ホストの動作を行うことを要求したことを前記データラインを介して前記データ転送制御装置が検出したとき、前記ペリフェラルの動作制御を行うためのステートに対応したステートコマンドが前記コントロールレジスタに設定されて前記ペリフェラルとして動作することを特徴とするデータ転送制御装置。
【請求項２】
接続相手がＵＳＢ（Universal Serial Bus）規格におけるホストとして動作する場合にはＵＳＢ規格におけるペリフェラルとして動作し、接続相手が前記ペリフェラルとして動作する場合には前記ホストとして動作するためのコントローラを内蔵するデータ転送制御装置であって、
前記コントローラを制御するための各ステートに対応したステートコマンドが設定されるコントロールレジスタと、
データライン及び電源ラインの少なくとも１つの信号状態を検出する信号状態検出回路と、
前記ステートコマンドをデコードして、前記データライン及び前記電源ラインの少なくとも１つの信号状態を制御するコントロール信号を生成するステートコマンドデコーダとを含み、
前記データ転送制御装置が前記ペリフェラルとして動作している場合であって、前記接続相手が前記データラインのラインステートをアイドル状態とした場合に、前記ホストとして動作することを要求するためのステートコマンドが前記コントロールレジスタに設定されて、接続相手に対して自身がホストとして動作することを前記データラインを介して要求し、
該接続相手が前記信号状態を所与の状態に遷移させたことを条件に、前記ホストの動作制御を行うためのステートに対応したステートコマンドが前記コントロールレジスタに設定されて前記ホストとして動作することを特徴とするデータ転送制御装置。
【請求項３】
請求項１又は２において、
前記信号状態検出回路によって検出された信号状態を割り込み信号により所与の処理部に通知し、
前記所与の処理部が、該信号状態に基づいて遷移先のステートを決定すると共に該遷移先のステートに対応するステートコマンドを前記コントロールレジスタに設定し、
前記所与の処理部は、前記コントロールレジスタに設定された第１のステートコマンドに対応したステートにおいて所与のタイムアウト時間のカウントを開始し、前記所与のタイムアウト時間が経過したとき、前記信号状態検出回路の検出結果に応じて遷移するステートに対応したステートコマンドを、前記コントロールレジスタに設定することを特徴とするデータ転送制御装置。
【請求項４】
請求項３において、
前記第１のステートコマンドは、
アイドル状態から遷移して前記電源ラインの電圧が所与の閾値電圧に達するまで待つステートに対応したステートコマンドであることを特徴とするデータ転送制御装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記信号状態検出回路は、
前記データラインの信号状態を検出するデータライン検出回路と、
電源ラインの信号状態を検出する電源ライン検出回路と、
を含み、
前記データライン検出回路及び前記電源ライン検出回路のうち少なくとも１つは、
前記コントロールレジスタに設定されたステートコマンドに応じて、検出すべき信号状態を変更することを特徴とするデータ転送制御装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記コントロールレジスタに設定されたステートコマンドに対応するステートから、次のステートに対応するステートコマンドを生成するステート生成回路を含み、
前記コントロールレジスタは、
前記所与の処理部により生成された遷移先のステートに対応するステートコマンド、又はステート生成回路によって生成されたステートコマンドが設定されることを特徴とするデータ転送制御装置。
【請求項７】
請求項６において、
前記ステート生成回路は、
サスペンド状態から遷移してデータ転送を開始するステートに対応するステートコマンドを生成することを特徴とするデータ転送制御装置。
【請求項８】
請求項１乃至７のいずれか記載のデータ転送制御装置と、
前記データ転送制御装置及びバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置と、
を含むことを特徴とする電子機器。
【請求項９】
接続相手がＵＳＢ（Universal Serial Bus）規格におけるホストとして動作する場合にはＵＳＢ規格におけるペリフェラルとして動作し、接続相手が前記ペリフェラルとして動作する場合には前記ホストとして動作するためのデータ転送制御方法であって、
データライン及び電源ラインの少なくとも１つの信号状態を検出し、
検出された前記信号状態を割り込み信号により所与の処理部に通知し、
前記所与の処理部が、該信号状態に基づいて遷移先のステートを決定すると共に該遷移先のステートに対応するステートコマンドをコントロールレジスタに設定し、
前記ステートコマンドをデコードして、前記データライン及び前記電源ラインの少なくとも１つの信号状態を制御し、
自身が前記ホストとして動作して前記データラインのラインステートをアイドル状態にした場合に、前記ペリフェラルとして動作する接続相手が前記ホストの動作を行うこと要求したことを、前記データラインを介して検出し、
前記ペリフェラルの動作制御を行うためのステートに対応したステートコマンドを前記コントロールレジスタに設定して前記ペリフェラルとして動作することを特徴とするデータ転送制御方法。
【請求項１０】
接続相手がＵＳＢ（Universal Serial Bus）規格におけるホストとして動作する場合にはＵＳＢ規格におけるペリフェラルとして動作し、接続相手が前記ペリフェラルとして動作する場合には前記ホストとして動作するためのデータ転送制御方法であって、
データライン及び電源ラインの少なくとも１つの信号状態を検出し、
検出された前記信号状態を割り込み信号により所与の処理部に通知し、
前記所与の処理部が、該信号状態に基づいて遷移先のステートを決定すると共に該遷移先のステートに対応するステートコマンドをコントロールレジスタに設定し、
前記ステートコマンドをデコードして、前記データライン及び前記電源ラインの少なくとも１つの信号状態を制御し、
自身が前記ペリフェラルとして動作している場合であって、前記接続相手が前記データラインのラインステートをアイドル状態とした場合に、前記ホストの動作を行うことを要求するためのステートコマンドを前記コントロールレジスタに設定して、接続相手に対し自身がホストとして動作することを前記データラインを介して要求し、
該接続相手が前記信号状態を所与の状態に遷移させたことを条件に、前記ホストの動作制御を行うためのステートに対応したステートコマンドを前記コントロールレジスタに設定して前記ホストとして動作することを特徴とするデータ転送制御方法。
【請求項１１】
請求項９又は１０において、
前記所与の処理部は、
前記コントロールレジスタに設定された第１のステートコマンドに対応したステートにおいて所与のタイムアウト時間のカウントを開始し、前記所与のタイムアウト時間が経過したとき、前記信号状態の検出結果に応じたステートに遷移させることを特徴とするデータ転送制御方法。
【請求項１２】
請求項１１において、
前記第１のステートコマンドは、
アイドル状態から遷移して前記電源ラインの電圧が所与の閾値電圧に達するまで待つステートに対応したステートコマンドであることを特徴とするデータ転送制御方法。
【請求項１３】
請求項９乃至１２のいずれかにおいて、
データライン及び電源ラインの少なくとも１つは、
前記ステートコマンドに応じて、検出すべき信号状態が変更されることを特徴とするデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ転送制御装置、電子機器及びデータ転送制御方法に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
近年、パーソナルコンピュータと周辺機器（広義には電子機器）とを接続するためのインタフェース規格として、ＵＳＢ（Universal Serial Bus）規格が注目を集めている。ところが、ＵＳＢ規格では必ずホストが必要であり、これまで周辺機器間でＵＳＢ規格のデータ転送を行うことができなかった。そこでＵＳＢ２．０規格の追加規格として、「ＵＳＢ  Ｏｎ−Ｔｈｅ−Ｇｏ（ＯＴＧ）１．０」規格（以下では、ＯＴＧ規格と略す。）が策定され、周辺機器間でもＵＳＢ規格のデータ転送を行うことができる。
【０００３】
ＯＴＧ規格では、ＵＳＢ規格におけるデバイスとして動作するペリフェラルに、ホストとして動作するために必要なホスト機能を持たせることができる。これによって、従来のＵＳＢ規格におけるデバイスだった周辺機器同士を相互に接続することができ、従来のＵＳＢ規格におけるホストを介することなく、データ転送を行うことができる。
【０００４】
そのためＯＴＧ規格では、デュアルロールデバイス（Dual-role Device）が規定される。デュアルロールデバイスとなる機器は、ホストとしてもペリフェラルとしても動作することができるようになる。したがって、デュアルロールデバイスとなる場合、例えばＯＴＧ規格において示されるステート遷移により制御が行われる。ＯＴＧ規格では数多くのステートが存在し、各ステートに対応した信号状態の生成や検出の制御を行う必要がある。
【０００５】
このようなステート遷移の制御を例えばソフトウェア（ファームウェア）のみで行うと、遷移したステートごとに信号状態の検出等をソフトウェア（ファームウェア）制御する必要があり、ＣＰＵが末端のＯＴＧ制御までを管理しなければならず、ソフトウェア（ファームウェア）設計が複雑になるという問題がある。一方、このステート遷移の制御を例えばハードウェアのみで行うと、設計変更の柔軟性を低下させるばかりでなく、ミリ秒（ｍｓ）単位のタイマ回路が必要となることから回路規模の増大を招くという問題がある。
【０００６】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、例えばＯＴＧ規格のホスト機能及びペリフェラル機能のように複数のステート間の遷移を行う場合に、ステート遷移制御の最適化を図るデータ転送制御装置、電子機器及びデータ転送制御方法を提供することにある。
【０００７】
【課題を解決するための手段】
上記課題を解決するために本発明は、複数のステート間を遷移することによりホスト機能及びペリフェラル機能の動作制御を行うコントローラを内蔵するデータ転送制御装置であって、前記コントローラを制御するための各ステートに対応したステートコマンドが設定されるコントロールレジスタと、データライン及び電源ラインの少なくとも１つの信号状態を検出する信号状態検出回路と、前記ステートコマンドをデコードして、前記データライン及び前記電源ラインの少なくとも１つの信号状態を制御するコントロール信号を生成するステートコマンドデコーダとを含み、所与の処理部において前記信号状態検出回路の検出結果に基づき生成された遷移先のステートに対応するステートコマンドが、前記コントロールレジスタに設定されるデータ転送制御装置に関係する。
【０００８】
ここで、ホスト機能とは、マスタ側として、ペリフェラル機能を有する装置との間でデータ転送を制御する機能であって、例えばＵＳＢ２．０規格で定義されるＵＳＢホストの機能をいう。またペリフェラル機能とは、スレーブ側として、ホスト機能を有する装置との間で該ホスト機能を有する装置からの要求に応答してデータ転送を行う機能であって、例えばＵＳＢ２．０規格で定義されたＵＳＢデバイスの機能をいう。
【０００９】
また処理部は、例えばＣＰＵがソフトウェア若しくはファームウェアの内容を読み込むことで実現することができる。
【００１０】
本発明においては、信号状態検出回路により信号状態を検出し、処理部においてその検出結果を遷移条件としてステート間の遷移制御を行う。そして、該処理部が遷移先のステートに対応したステートコマンドをコントロールレジスタに設定する。更に、コントロールレジスタに設定されたステートコマンドを、ステートコマンドデコーダによりデコードして、コントロール信号を生成する。このコントロール信号は、例えば信号状態を制御することができる。これにより、ソフトウェア（ファームウェア）のみでステート遷移制御を行う場合に比べて、データ転送制御の末端部まで管理する必要がなくなり、ソフトウェア（ファームウェア）の簡素化を図ることができる。また、ハードウェアのみでステート遷移制御を行う場合に比べて、回路規模の増大を回避することができる。したがって、設定されたステートコマンドをデコードするだけでよく、処理部の簡素化と、回路規模の増大を抑え、データ転送制御装置において必要とされる複数のステート間の遷移制御の最適化を図ることができる。
【００１１】
また本発明に係るデータ転送制御装置は、前記所与の処理部は、前記コントロールレジスタに設定された第１のステートコマンドに対応したステートにおいて所与のタイムアウト時間のカウントを開始し、前記所与のタイムアウト時間が経過したとき、前記信号状態検出回路の検出結果に応じて遷移するステートに対応したステートコマンドを、前記コントロールレジスタに設定することができる。
【００１２】
本発明によれば、タイムアウト時間の計測が必要であった場合でも、当該ステートにおいてファームウェアにタイマ機能を実行させた上でステートの遷移制御を行わせることができ、回路規模の増大を抑えてステート制御の最適化を図ることができる。
【００１３】
また本発明に係るデータ転送制御装置は、前記第１のステートコマンドは、アイドル状態から遷移して前記電源ラインの電圧が所与の閾値電圧に達するまで待つステートに対応したステートコマンドであってもよい。
【００１４】
本発明によれば、電源ラインの電圧が所与の閾値電圧に達するまでに計測が必要なタイムアウト時間がミリ秒或いはそれ以上であっても、ステート制御の簡素化を図ることができる。
【００１５】
また本発明に係るデータ転送制御装置は、前記信号状態検出回路は、前記データラインの信号状態を検出するデータライン検出回路と、電源ラインの信号状態を検出する電源ライン検出回路とを含み、前記データライン検出回路及び前記電源ライン検出回路のうち少なくとも１つは、前記コントロールレジスタに設定されたステートコマンドに応じて、検出すべき信号状態を変更することができる。
【００１６】
本発明によれば、ラインステート及び電源ラインの状態に応じて遷移したステートに応じて検出条件を変更することで、ファームウェアの負荷をかけることなく、ファームウェアのステート遷移制御の最適化を図る。
【００１７】
また本発明に係るデータ転送制御装置は、前記コントロールレジスタに設定されたステートコマンドに対応するステートから、次のステートに対応するステートコマンドを生成するステート生成回路を含み、前記コントロールレジスタは、前記所与の処理部により生成された遷移先のステートに対応するステートコマンド、又はステート生成回路によって生成されたステートコマンドが設定されてもよい。
【００１８】
本発明によれば、ファームウェアによる処理でステート遷移が間に合わない遷移については、ハードウェアでステート制御させることができる。なお、ステート遷移制御の一貫性を保ち、制御を簡素化するため、ファームウェアでも同様の遷移条件を用いてステート遷移を行って、ハードウェアによる設定後に同じ遷移先のステートに対応するステートコマンドを設定することが望ましい。
【００１９】
また本発明に係るデータ転送制御装置は、前記ステート生成回路は、サスペンド状態から遷移してデータ転送を開始するステートに対応するステートコマンドを生成することができる。
【００２０】
本発明によれば、データ転送を行うためにバスの駆動開始時間の制約上、ファームウェアで処理できないステートへの遷移制御に対応することができる。
【００２１】
また本発明に係るデータ転送制御装置は、前記コントローラは、ＵＳＢ（Universal Serial Bus）のＯＴＧ（On-The-Go）規格にしたがって、ホスト機能及びペリフェラル機能の切り替え制御を行うことができる。
【００２２】
本発明によれば、ＯＴＧ規格のデュアルロールデバイスの制御に適用することができる。これにより、ペリフェラル同士であってもＵＳＢ転送を行うことができる。
【００２３】
また本発明に係る電子機器は、上記いずれか記載のデータ転送制御装置と、前記データ転送制御装置及びバスを介して転送されるデータの出力処理又は取り込み処理又は記憶処理を行う装置とを含むことができる。
【００２４】
本発明によれば、ソフトウェア（ファームウェア）の負荷を軽減し、ホスト機能及びペリフェラル機能の切り替え可能なデータ転送を行う電子機器を提供することができる。
【００２５】
また本発明は、複数のステート間を遷移することによりホスト機能及びペリフェラル機能の動作制御を行うコントローラのデータ転送制御方法であって、データライン及び電源ラインの少なくとも１つの信号状態を検出し、所与の処理部が前記信号状態の検出結果に基づいて遷移先のステートを判断すると共に該ステートに対応するステートコマンドを設定し、前記ステートコマンドに基づいて、データライン及び電源ラインの少なくとも１つの信号状態を制御するデータ転送制御方法に関係する。
【００２６】
本発明においては、処理部において信号状態の検出結果を遷移条件としてステート間の遷移制御を行う。そして、該処理部が遷移先のステートに対応したステートコマンドをデコードして、コントロール信号を生成する。このコントロール信号は、例えば信号状態を制御することができる。これにより、ソフトウェア（ファームウェア）のみでステート遷移制御を行う場合に比べて、データ転送制御の末端部まで管理する必要がなくなり、ソフトウェア（ファームウェア）の簡素化を図ることができる。また、ハードウェアのみでステート遷移制御を行う場合に比べて、回路規模の増大を回避することができる。したがって、設定されたステートコマンドをデコードするだけでよく、処理部の簡素化と、回路規模の増大を抑え、複数のステート間の遷移制御の最適化を図ることができる。
【００２７】
また本発明に係るデータ転送制御方法は、前記所与の処理部は、前記コントロールレジスタに設定された第１のステートコマンドに対応したステートにおいて所与のタイムアウト時間のカウントを開始し、前記所与のタイムアウト時間が経過したとき、前記信号状態の検出結果に応じたステートに遷移させることができる。
【００２８】
本発明によれば、タイムアウト時間の計測が必要であった場合でも、当該ステートにおいてファームウェアにタイマ機能を実行させた上でステートの遷移制御を行わせることができ、回路規模の増大を抑えてステート制御の最適化を図ることができる。
【００２９】
また本発明に係るデータ転送制御方法は、前記第１のステートコマンドは、アイドル状態から遷移して前記電源ラインの電圧が所与の閾値電圧に達するまで待つステートに対応したステートコマンドであってもよい。
【００３０】
本発明によれば、電源ラインの電圧が所与の閾値電圧に達するまでに計測が必要なタイムアウト時間がミリ秒或いはそれ以上であっても、ステート制御の簡素化を図ることができる。
【００３１】
また本発明に係るデータ転送制御方法は、データライン及び電源ラインの少なくとも１つは、前記ステートコマンドに応じて、検出すべき信号状態が変更されてもよい。
【００３２】
本発明によれば、ラインステート及び電源ラインの状態に応じて遷移したステートに応じて検出条件を変更することで、ファームウェアの負荷をかけることなく、ファームウェアのステート遷移制御の最適化を図る。
【００３３】
また本発明に係るデータ転送制御方法は、前記コントローラは、ＵＳＢ（Universal Serial Bus）のＯＴＧ（On-The-Go）規格にしたがって、ホスト機能及びペリフェラル機能の切り替え制御を行うことができる。
【００３４】
本発明によれば、ＯＴＧ規格のデュアルロールデバイスの制御に適用することができる。これにより、ペリフェラル同士であってもＵＳＢ転送を行うことができる。
【００３５】
【発明の実施の形態】
以下、本発明の好適な実施の形態について図面を用いて詳細に説明する。なお、以下に説明する実施の形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また以下で説明される構成の全てが本発明の必須構成要件であるとは限らない。
【００３６】
１．  ＯＴＧ（On-The-Go）規格
１．１  ＡデバイスとＢデバイス
まず、ＯＴＧ規格について簡単に説明する。
【００３７】
ＵＳＢ（Universal Serial Bus）規格は、ホスト（host）（例えばパーソナルコンピュータ）と１又は複数のペリフェラル（peripheral）（例えば周辺機器）との間のデータ転送を行うための規格であり、ホスト側でデータ転送制御が行われる。その一方で、ＵＳＢ規格においてペリフェラルであった携帯機器等において処理するデータ量が増大し、ホストを介在させることなく、低消費電力でＵＳＢ規格のデータ転送する要求が高まっている。
【００３８】
このような背景の下、ＯＴＧ規格はＵＳＢ２．０規格の追加規格として策定された。ＯＴＧ規格では、コネクタの小型化や、ホストとして動作するために必要なホスト機能をペリフェラルに持たせるデュアルロールデバイス等についての規格が新たに盛り込まれている。
【００３９】
ＯＴＧ規格によるデータ転送を行う場合、例えば図１（Ａ）に示すように、その両端にＭｉｎｉ−Ａプラグ（plug）及びＭｉｎｉ−Ｂプラグが設けられたＵＳＢケーブルにより、ホストとペリフェラルとが接続される。Ｍｉｎｉ−Ａプラグは、Ｍｉｎｉ−Ａレセプタクル（receptacle）及びＭｉｎｉ−ＡＢレセプタクルに挿入可能な構造を有している。Ｍｉｎｉ−Ｂプラグは、Ｍｉｎｉ−Ｂレセプタクル及びＭｉｎｉ−ＡＢレセプタクルに挿入可能な構造を有している。デュアルロールデバイスの場合、Ｍｉｎｉ−ＡＢレセプタクルを備えておく必要がある。
【００４０】
ところで、ＵＳＢ規格では、ＶＢＵＳ（電源）、ＧＮＤ（グラウンド）及び２本のデータ信号線（Ｄ＋、Ｄ−）のみでホストとペリフェラルとを接続することができる。ＶＢＵＳは、ホスト側から供給される。データ信号線Ｄ＋、Ｄ−は、差動で用いられる。
【００４１】
ＯＴＧ規格では、図１（Ｂ）に示すようにＭｉｎｉ−Ａプラグが接続されたデュアルロールデバイスは、Ａデバイス（A-Device）となる。Ａデバイスは、セッション開始時においてホストとして動作し、所与の条件の下で、Ｂデバイスに対してホスト機能を譲ることができる。一方、Ｍｉｎｉ−Ｂプラグが接続されたデュアルロールデバイスは、Ｂデバイス（B-Device）となる。Ｂデバイスは、セッション開始時においてペリフェラルとして動作し、Ａデバイスからホストとして動作することが許可される。なおＡデバイスが、ＶＢＵＳを供給する。
【００４２】
デュアルロールデバイスにおいて、Ｍｉｎｉ−ＡＢレセプタクルに挿入されたプラグの種類を判別するため、図１（Ｃ）に示すように、これまでのコネクタの端子（ＶＢＵＳ、Ｄ−、Ｄ＋、ＧＮＤ）の他に、ＩＤ端子が定義されている。Ｍｉｎｉ−ＡプラグではＩＤ端子がＧＮＤに接続され、Ｍｉｎｉ−ＢプラグではＩＤ端子がオープン状態である。
【００４３】
図２に、ＵＳＢケーブルが接続されたデュアルロールデバイスの例を模式的に示す。
【００４４】
Ｍｉｎｉ−Ａプラグが接続されたデュアルロールデバイス１０と、Ｍｉｎｉ−Ｂプラグが接続されたデュアルロールデバイス２０とは、ＵＳＢケーブルを介して接続されている。デュアルロールデバイス１０、２０は、ＩＤ検出回路１２、２２を含む。ＩＤ検出回路１２、２２は、それぞれＩＤ端子と電気的に接続される信号線をプルアップし、該信号線の電圧に応じて、ＩＤ端子が接地されているか否かを検出する。図２におけるＩＤ検出回路１２は、ＩＤ端子に接続される信号線が接地されるため、Ｍｉｎｉ−Ａプラグであることを検出することができる。一方、ＩＤ検出回路２２は、ＩＤ端子に接続される信号線がプルアップされるため、Ｍｉｎｉ−Ｂプラグであることを検出する。
【００４５】
デュアルロールデバイス１０では、ホスト及びペリフェラルとして動作するため、データ信号線Ｄ＋をプルアップするためのプルアップ抵抗Ｒ１と、データ信号線Ｄ＋をプルダウンするためのプルダウン抵抗Ｒ２とを有している。プルアップ抵抗Ｒ１は、プルアップのオン／オフを切り替えるために、スイッチ回路ＳＷ１を介して電源電圧線に接続される。プルダウン抵抗Ｒ２は、プルダウンのオン／オフを切り替えるために、スイッチ回路ＳＷ２を介して接地線に接続される。スイッチ回路ＳＷ１、ＳＷ２については、いずれか一方がオンのとき、他方がオフとなるように排他的に制御される。
【００４６】
デュアルロールデバイス２０も同様に、データ信号線Ｄ＋をプルアップするためのプルアップ抵抗Ｒ３と、データ信号線Ｄ＋をプルダウンするためのプルダウン抵抗Ｒ４とを有している。プルアップ抵抗Ｒ３は、プルアップのオン／オフを切り替えるために、スイッチ回路ＳＷ３を介して電源電圧線に接続される。プルダウン抵抗Ｒ４は、プルダウンのオン／オフを切り替えるために、スイッチ回路ＳＷ４を介して接地線に接続される。スイッチ回路ＳＷ３、ＳＷ４については、いずれか一方がオンのとき、他方がオフとなるように排他的に制御される。
【００４７】
デュアルロールデバイス１０、２０では、データ信号線Ｄ−はプルダウンされている。
【００４８】
またデュアルロールデバイス１０、２０は、共にＡデバイスになり得るため、ＶＢＵＳに電流を供給する電源制御回路ＶＢＡ、ＶＢＢを含む。図２では、デュアルロールデバイス１０が、電源制御回路ＶＢＡによりＶＢＵＳに電流を供給する。
【００４９】
１．２  ＳＲＰ（Session Request Protocol）
ＯＴＧ規格では、バス上でやり取りがないとき、ＡデバイスがＶＢＵＳへの電流供給を停止することができる。したがって、バッテリで動作する携帯機器等がホストとして動作した場合でも無駄な電力消費を削減し、低消費電力化を図ることができるようになっている。この状態でＢデバイスがセッションを開始してデータ転送を行う場合、ＳＲＰと呼ばれる手順にしたがってＡデバイスに対しＶＢＵＳへの電流供給を要求することができる。ここで、セッションとはＶＢＵＳの電圧が所与の閾値電圧を越えている期間をいう。
【００５０】
図３に、図２に示したデュアルロールデバイスの構成を参照しながら、ＦＳモードにおけるＳＲＰの実行手順を説明するための図を示す。
【００５１】
ＦＳモードでは、ホスト側のデータ信号線Ｄ＋はプルダウンされ（スイッチ回路ＳＷ１がオフ、スイッチ回路ＳＷ２がオン）、ペリフェラル側のデータ信号線Ｄ＋はプルアップされている（スイッチ回路ＳＷ３がオン、スイッチ回路ＳＷ４がオフ）。
【００５２】
バス上のやり取りがなくＡデバイスがＶＢＵＳへの電流供給を停止すると（Ｓ１０）、ＶＢＵＳの電圧が下がり「Ｖｂ＿ｓｅｓｓ＿ｖｌｄ」レベル（B-Device Session Valid未満）となる（Ｓ１１）。Ｂデバイスは、これを検出すると、スイッチ回路ＳＷ３によりデータ信号線Ｄ＋のプルアップ抵抗を無効にする（Ｓ１２）。これにより、データ信号線のラインステートは「ＳＥ０」状態（ＦＳモードでは、データ信号線Ｄ＋が「Ｌ」レベル、データ信号線Ｄ−が「Ｌ」レベルの状態）となる（Ｓ１３）。
【００５３】
ＶＢＵＳの電圧が「Ｖｂ＿ｓｅｓｓ＿ｅｎｄ」（B-Device Session End）より小さく、かつラインステートの「ＳＥ０」状態が２ｍｓ以上継続すると、ＢデバイスがＳＲＰを開始（initiate）することができる。ＳＲＰは、データラインパルシング（Data-line Pulsing）又はＶＢＵＳパルシング（VBUS Pulsing）により行うことができる。データラインパルシングは、ラインステートを「ＳＥ０」状態、「Ｊ」状態（ＦＳモードでは、データ信号線Ｄ＋が「Ｈ」レベル、データ信号線Ｄ−が「Ｌ」レベルの状態）、「ＳＥ０」状態に遷移させる方法である。ＶＢＵＳパルシングは、ＢデバイスからＶＢＵＳに電流を供給し、ＶＢＵＳの電圧を「Ｌ」レベル（Ｖｂ＿ｓｅｓｓ＿ｅｎｄ未満）、「Ｈ」レベル（Ｖａ＿ｓｅｓｓ＿ｖｌｄより大）、「Ｌ」レベルの状態に遷移させる方法である（Ｓ１４、Ｓ１５）。
【００５４】
Ａデバイスは、データ信号線又はＶＢＵＳの電圧を監視して、いずれかの方法によりＳＲＰが行われたことを検出すると、ＡデバイスがＶＢＵＳへの電流供給を開始する（Ｓ１６）。これにより、ＶＢＵＳの電圧が「Ｖｂ＿ｓｅｓｓ＿ｖｌｄ」以上となる（Ｓ１７）。
【００５５】
Ｂデバイスは、ＶＢＵＳの電圧が「Ｖｂ＿ｓｅｓｓ＿ｅｎｄ」以上になったことを検出すると、スイッチ回路ＳＷ３によりデータ信号線Ｄ＋のプルアップ抵抗を有効にして（Ｓ１８）、ラインステートを「Ｊ」状態に遷移させ（Ｓ１９）、ペリフェラルとして動作開始する。
【００５６】
Ａデバイスは、ラインステートが「Ｊ」状態になったことを検出すると、ホストとして動作開始する（Ｓ２０）。
【００５７】
１．３  ＨＮＰ（Host Negotiation Protocol）
ＯＴＧ規格では、接続されたプラグによりＡデバイスかＢデバイスかが決まるが、そのプラグを差し替えることなく、ホスト機能とペリフェラル機能とを交換することができる。ＨＮＰは、このホスト機能とペリフェラル機能とを交換するための手順である。
【００５８】
図４に、図２に示したデュアルロールデバイスの構成を参照しながら、ＦＳモードにおけるＨＮＰの実行手順を説明するための図を示す。
【００５９】
Ａデバイスがホストとして動作し、Ｂデバイスがペリフェラルとして動作し、ＨＮＰがイネーブルの状態であるものとする。
【００６０】
Ａデバイスがバスの使用を終了すると（Ｓ３０）、ラインステートをアイドル状態（ＦＳモードでは、「Ｊ」状態）にする（Ｓ３１）。
【００６１】
Ｂデバイスは、３ｍｓ以上「Ｊ」状態であることを検出すると、スイッチ回路ＳＷ３によりデータ信号線Ｄ＋のプルアップ抵抗を無効にして（Ｓ３２）、ラインステートを「ＳＥ０」状態にする（Ｓ３３）。Ａデバイスは、ラインステートが「ＳＥ０」状態であることを検出すると、スイッチ回路ＳＷ１によりデータ信号線Ｄ＋のプルアップ抵抗を有効（プルダウン抵抗を無効）にする（Ｓ３４）。これにより、ラインステートが「Ｊ」状態となるので（Ｓ３５）、Ａデバイスはペリフェラルとして動作を開始し、Ｂデバイスはラインステートが「Ｊ」状態であることを検出してホストとして動作を開始することができる（Ｓ３６）。
【００６２】
Ｂデバイスが、ホストとしてバスの使用を終了すると（Ｓ３７）、スイッチ回路ＳＷ３、ＳＷ４によりラインステートをアイドル状態にする（Ｓ３８）。Ａデバイスは、これを検出するとデータ信号線Ｄ＋のプルアップ抵抗を無効にして（Ｓ３９）、ラインステートを「ＳＥ０」状態に遷移させる（Ｓ４０）。Ｂデバイスは、ラインステートが「ＳＥ０」状態であることを検出すると、スイッチ回路ＳＷ３によりデータ信号線Ｄ＋のプルアップ抵抗を有効（プルダウン抵抗を無効）にする（Ｓ４１）。これにより、ラインステートが「Ｊ」状態となるので（Ｓ４２）、Ｂデバイスはペリフェラルとして動作を開始し、Ａデバイスはラインステートが「Ｊ」状態であることを検出してホストとして動作を開始することができる（Ｓ４３）。
【００６３】
このようなプロトコルによるデータ転送制御は、それぞれの状態を規定したステート間を遷移条件にしたがって遷移させることで、実現することができる。
【００６４】
以下では、Ａデバイス及びＢデバイスのステート遷移について説明する。
【００６５】
１．４  Ａデバイスのステート遷移
図５に、Ａデバイスのステート遷移を説明するための図を示す。
【００６６】
Ａデバイスは、ａ＿ｉｄｌｅステートが開始ステートである（ＳＴ１）。
【００６７】
デュアルロールデバイスのＭｉｎｉ−ＡＢレセプタクルに、ＵＳＢケーブルのＭｉｎｉ−Ａプラグが挿入されていないとき、プルアップされたＩＤ端子は「Ｈ」レベル（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/）、ｂ＿ｐｅｒｉｐｈｅｒａｌに遷移する（ＳＴ３８）。このとき、Ａデバイスは、Ｂデバイスのｂ＿ｂｕｓ＿ｓｕｓｐｅｎｄとして検出することができ、Ａデバイスではａ＿ｐｅｒｉｐｈｅｒａｌステートからａ＿ｗａｉｔ＿ｂｃｏｎステートに遷移する。この結果、Ａデバイスのプルアップがオフされる。ｂ＿ｐｅｒｉｐｈｅｒａｌステートでは、Ｂデバイスはプルアップがオンされる。また、ｂ＿ｈｏｓｔステートにおいて、Ｍｉｎｉ−Ａプラグが挿入されたとき（id/）、又はＶＢＵＳの電圧が所与の閾値電圧を下回るとき（b_sess_vld/）、ｂ＿ｉｄｌｅステートに遷移する（ＳＴ３９）。
【００８３】
Ｂデバイスは、Ａデバイスがサスペンド状態のときＳＲＰによりセッション開始を要求することができる。すなわち、ｂ＿ｉｄｌｅステートにおいて、Ｂデバイスの上位アプリケーションからのバス使用要求があり（b_bus_req）、ＶＢＵＳの電圧がＢデバイスのセッション終了閾値電圧を下回った状態で（b_sess_end）、かつラインステートが「ＳＥ０」の状態で規定時間以上経過したとき（b_se0_srp）、ｂ＿ｓｒｐ＿ｉｎｉｔステートに遷移する（ＳＴ４０）。
【００８４】
ｂ＿ｓｒｐ＿ｉｎｉｔステートでは、ＳＲＰによりセッション開始をＡデバイスに対して要求する。ＢデバイスがＳＲＰを終了したとき（b_srp_done）、又はＭｉｎｉ−Ａプラグが挿入されたとき（id/）、ｂ＿ｉｄｌｅステートに遷移する（ＳＴ４１）。
【００８５】
２．  本実施形態の説明
本実施形態におけるデータ転送制御装置は、上述したステート遷移により、デュアルロールデバイスとしての動作を実現することができる。すなわち、Ａデバイス又はＢデバイスとして、それぞれホスト及びペリフェラルとして機能を切り替えながら、ＵＳＢ転送の制御を行うことができる。
【００８６】
なお以下では、ＦＳモードを例に説明する。
【００８７】
図７に、本実施形態におけるデータ転送制御装置の原理的構成図を示す。
【００８８】
データ転送制御装置１００は、ステートコントローラ１１０、信号ライン制御回路１２０を含む。ステートコントローラ１１０は、遷移される各ステートに対応したコントロール信号を生成し、データ転送制御を行う。信号ライン制御回路１２０は、コントロール信号に基づいて、データ信号線（Ｄ＋、Ｄ−）（データライン）と電源ライン（ＶＢＵＳ、ＧＮＤ）からなる信号ラインのうち少なくとも１つの信号状態を制御する。
【００８９】
またデータ転送制御装置１００は、ホスト機能の動作制御を行うホストコントローラ（Host Controller：ＨＣ）又はペリフェラル機能の動作制御を行うペリフェラルコントローラ（Peripheral Controller：ＰＣ）を含むことができる。この場合においても、ステートコントローラ１１０で生成されたコントロール信号により、ＨＣ及びＰＣが動作制御される。
【００９０】
このようなステートコントローラ１１０は、コントロールレジスタ１１２、ステートコマンドデコーダ１１４、信号状態検出回路１１６を含むことができる。コントロールレジスタ１１２には、ＣＰＵ（Central Processing Unit）（処理部）１３０により、遷移先のステートに対応したステートコマンドが設定される。ステートコマンドデコーダ１１４は、コントロールレジスタ１１２に設定されたステートコマンドをデコードし、当該ステートに対応したコントロール信号を生成する。信号状態検出回路１１６は、データ信号線及びＶＢＵＳ及びＩＤ端子の監視結果を用いて、所与の条件を満たしたか否かを検出する。検出すべき条件は、コントロールレジスタ１１２に設定されたステートコマンド又はステートコマンドデコーダ１１４のデコード結果に応じて変更することができる。すなわち、コントロールレジスタ１１２で設定されたステートコマンドに対応したステートに応じて、検出条件を変更することができる。
【００９１】
信号状態検出回路１１６は、ラインステート検出回路１３２と、電源ライン検出回路１３４とＩＤ検出回路１３６とを含む。ラインステート検出回路１３２は、接続状態及び非接続状態を含むデータ信号線Ｄ＋、Ｄ−の信号状態を検出する。これにより、ラインステートの状態（「Ｊ」状態、「Ｋ」状態及び「ＳＥ０」状態）を検出することができる。「Ｊ」状態は、データ信号線Ｄ＋が「Ｈ」レベルで、データ信号線Ｄ−が「Ｌ」レベルの状態である。「Ｋ」状態は、データ信号線Ｄ＋が「Ｌ」レベルで、データ信号線Ｄ−が「Ｈ」レベルの状態である。「ＳＥ０」状態は、データ信号線Ｄ＋が「Ｌ」レベルで、データ信号線Ｄ−が「Ｌ」レベルの状態である。他に「ＳＥ１」状態として、データ信号線Ｄ＋、Ｄ−が共に「Ｈ」レベルの状態を検出することも可能である。電源ライン検出回路１３４は、ＶＢＵＳの電圧が、セッション開始及びセッション終了の検出に必要な閾値電圧を越えているか否かを検出することができる。ＩＤ検出回路１３６は、ＩＤ端子の信号のレベルを検出することができる。ラインステート検出回路１３２及び電源ライン検出回路１３４及びＩＤ検出回路１３６のうち少なくとも一方において、ステートに応じて検出された内容は、ハードウェア（Ｈ／Ｗ）割り込みの割り込み要因としてＣＰＵ１３０に通知される。
【００９２】
図８に、ＣＰＵ１３０で行われるステート遷移制御の処理内容の概要を示す。
【００９３】
ＣＰＵ１３０は、Ｈ／Ｗ割り込みを受け付け、その割り込み要因を解析する（ステップＳ１５０）。所与の遷移タイミングまで当該ステートにおいて、Ｈ／Ｗ割り込みを受け付ける（ステップＳ１５１：Ｎ）。そして、所与の遷移タイミングで（ステップＳ１５１：Ｙ）、当該ステートで受け付けた割り込み要因から遷移先のステートを判断し、遷移制御を行う（ステップＳ１５２）。
【００９４】
続いて、遷移先のステートに対応するステートコマンドを生成し、コントロールレジスタ１１２に設定する（ステップＳ１５４）。
【００９５】
ＣＰＵ１３０は、以上のような処理内容のファームウェア（ソフトウェア）に基づき、ステートの遷移制御を行うことができる。
【００９６】
このように本実施形態におけるデータ転送制御装置１００では、ＣＰＵ１３０によるファームウェアの処理でステートの遷移制御が行われ、遷移先のステートが求められ、遷移先のステートに対応したステートコマンドがステートコントローラ１１０に設定される。そして、ステートコントローラ１１０が、設定されたステートコマンドをデコードしてコントロール信号を生成し、各ステートに対応した制御を実現する。またステートコントローラ１１０は、ファームウェアで処理されるステートの遷移条件を検出し、Ｈ／Ｗ割り込みにより通知することができる。
【００９７】
これにより、ステートコントローラ１１０は、設定されたステートコマンドをデコードするだけでよく、ＣＰＵ１３０は、データ転送制御装置１００のステートに対応したコントロール信号を管理する必要がなくなる。
【００９８】
特にＯＴＧ規格では、ステートの遷移条件を検出するために、ミリ秒単位のタイマが必要となる。ミリ秒単位のタイマ回路を設けることは、回路規模の増大を招く。したがって本実施形態では、所与のステートコマンドに対応したステートにおいてミリ秒或いはそれ以上のタイムアウト時間の計測が必要な場合には、該ステートにおいてファームウェアにタイマ機能を実行させた上でステートの遷移制御を行わせることができる。この場合、ステートコントローラ１１０に遷移先のステートに対応したステートコマンドを設定してステートごとに必要なコントロール信号を生成させることができ、回路規模の増大を抑えてステート制御の最適化を図ることができる。
【００９９】
例えば、図５に示すａ＿ｗａｉｔ＿ｖｒｉｓｅステート（広義には、アイドル状態から遷移して電源ラインの電圧が所与の閾値電圧に達するまで待つステート）において、ファームウェアにより、該ステートに対応したステートコマンド（第１のステートコマンド）を設定し、所与のタイムアウト時間を計測してａ＿ｗａｉｔ＿ｖｒｉｓｅ＿ｔｍｏｕｔを検出させるようにすることができる。或いは、ファームウェアにより、ａ＿ｗａｉｔ＿ｂｃｏｎステートにおいて、ａ＿ｗａｉｔ＿ｂｃｏｎ＿ｔｍｏｕｔを検出させるようにすることができる。更に、ファームウェアにより、ａ＿ｓｕｓｐｅｎｄステートにおいて、ａ＿ａｉｄｌ＿ｂｄｉｓ＿ｔｍｏｕｔを検出させるようにすることができる。更にまた図６に示すｂ＿ｗａｉｔ＿ａｃｏｎステートにおいて、ファームウェアによりｂ＿ａｓｅ０＿ｂｒｓｔ＿ｔｍｏｕｔを検出させるようにすることができる。
【０１００】
２．１  データ転送制御装置の具体的な構成
次に、本実施形態におけるデータ転送制御装置を、ＯＴＧデバイスコントローラＩＣに適用した場合について説明する。
【０１０１】
図９に、ＯＴＧデバイスコントローラＩＣの機能ブロック図を示す。
【０１０２】
ＯＴＧデバイスコントローラＩＣ２００は、ＯＴＧコントローラ２１０、ＨＣ２２０、ＰＣ２３０、レジスタ部２４０、パケットバッファ２５０、バッファコントローラ２６０、ホスト／ペリフェラル切り替え回路２７０、トランシーバ２８０、ＣＰＵインタフェース（InterFace：Ｉ／Ｆ）２９０、ＤＭＡハンドラ２９２、クロックコントローラ２９４、テストモジュール２９６を含む。
【０１０３】
ＯＴＧコントローラ２１０は、図７に示したステートコントローラ１１０の機能を含むことができる。ＨＣ２２０、ＰＣ２３０、ホスト／ペリフェラル切り替え回路２７０及びトランシーバ２８０は、図７に示した信号ライン制御回路１２０の機能を含むことができる。
【０１０４】
ＯＴＧコントローラ２１０は、データライン及びＶＢＵＳの状態を監視しながら各ステートに応じたコントロール信号を生成し、例えばホスト及びペリフェラルの切り替え制御を行ってデータライン制御を行う。
【０１０５】
このようなＯＴＧコントローラ２１０は、ＯＴＧ管理回路２１２、ＩＤ検出回路２１４、ＶＢＵＳ検出回路２１６、ラインステート検出回路２１８を含む。ＯＴＧ管理回路２１２は、デュアルロールデバイスとして機能するためのＯＴＧステート（図５及び図６に示す各ステート）の管理を行う。より具体的には、ＯＴＧ管理回路２１２は、ＣＰＵから設定されたＯＴＧステートに対応したＯＴＧステートコマンドに基づいて、当該ＯＴＧステートに対応したコントロール信号を生成する。ＩＤ検出回路２１４は、図２に示したようにＩＤ端子の状態を検出する。ＶＢＵＳ検出回路２１６は、ＶＢＵＳの状態が、ＯＴＧステートに応じた検出条件を満たしたか否かを検出する。ラインステート検出回路２１８は、トランシーバ２８０から通知されるラインステートが、ＯＴＧステートに応じた検出条件を満たしたか否かを検出する。
【０１０６】
ＩＤ信号は、ＩＤ端子に接続される信号である。ＩＤ検出回路２１４は、ＩＤ信号によりＡデバイスかＢデバイスかを判別することができる。
【０１０７】
１．０Ｖレベル検出信号ＣＯＭＰＩＮ１０は、ＶＢＵＳ／２の電圧が１．０Ｖ以上であるか否かを示す検出信号である。２．２Ｖレベル検出信号ＣＯＭＰＩＮ２２は、ＶＢＵＳ／２の電圧が２．２Ｖ以上であるか否かを示す検出信号である。ＶＢＵＳ検出回路２１６は、１．０Ｖレベル検出信号ＣＯＭＰＩＮ１０又は２．２Ｖレベル検出信号ＣＯＭＰＩＮ２２を参照することで、ＶＢＵＳの状態が、所与のステートにおける検出条件を満たすか否かを検出することができる。
【０１０８】
ＶＢＵＳドライブ信号ＢＵＳＰＷＲＳＥＬは、５Ｖ電源使用時において、ＶＢＵＳに供給する電流の８ｍＡ又は５００ｍＡのいずれかに切り替えるためのイネーブル信号である。ＶＢＵＳドライブ信号ＶＢＵＳＤＲＶ５は、５Ｖ電源でＶＢＵＳに電流を供給するためのイネーブル信号である。ＶＢＵＳドライブ信号ＶＢＵＳＤＲＶ３は、３．３Ｖ電源でＶＢＵＳに電流を供給するためのイネーブル信号である。Ｒｐｕイネーブル信号ｘＲＰＵＥＮは、データ信号線Ｄ＋のプルアップのイネーブル信号である。Ｒｐｄイネーブル信号ＲＰＤＥＮは、データ信号線Ｄ＋のプルダウンのイネーブル信号である。
【０１０９】
ＯＴＧ管理回路２１２は、当該ＯＴＧステートに対応して、コントロール信号（ＶＢＵＳドライブ信号ＢＵＳＰＷＲＳＥＬ、ＶＢＵＳＤＲＶ５、ＶＢＵＳＤＲＶ３、Ｒｐｕイネーブル信号ｘＲＰＵＥＮ、Ｒｐｄイネーブル信号ＲＰＤＥＮ、ＨＣイネーブル信号ＨＣＥｎｂ、ＰＣイネーブル信号ＰＣＥｎｂなど）を生成することができる。
【０１１０】
ＨＣ２２０は、ＯＴＧコントローラ２１０からのＨＣイネーブル信号ＨＣＥｎｂによりイネーブルにされたときホスト機能の動作制御を行う。ＨＣ２２０のステート制御は、ＣＰＵ（ファームウェア）により行うことができる。より具体的には、ファームウェアが、種々のイベント（例えばＯＴＧステートａ＿ｈｏｓｔに遷移したことを示すイベント）をトリガとしてホストのステート遷移を行い、ホストの遷移先のステート（Ｓｕｓｐｅｎｄ、Ｒｅｓｅｔ、Ｏｐｒａｔｉｏｎａｌ、Ｒｅｓｕｍｅ）に対応したＨＣステートコマンドを所与のコントロールレジスタに設定することによって各ステートにおけるＵＳＢデータライン状態（「Ｊ」、「Ｋ」、「ＳＥ０」）の生成をＨＣに指示することができる。ＨＣ２２０は、設定されたステートコマンドに応じて、データライン状態の生成を行う。当該ステートにおいて時間制限（タイムアウト条件）がある場合にはファームウェアが時間計測を行ってステート遷移制御を行うことができる。ＨＣ２２０がＡデバイスでイネーブルにされたとき、図１０に示すようなフローでホストのステート遷移を行う。「Ｏｐｅｒａｔｉｏｎａｌ」ステートにおいて、ＵＳＢ転送が行われる。またＨＣ２２０がＢデバイスでイネーブルにされたとき、図１１に示すようなフローでホストのステート遷移を行う。
【０１１１】
ＰＣ２３０は、ＯＴＧコントローラ２１０からのＰＣイネーブル信号ＰＣＥｎｂによりイネーブルにされたときペリフェラル機能の動作制御を行う。ＰＣ２３０は、ＯＴＧコントローラ２１０によって検出されたラインステート等に基づくＯＴＧステートの遷移においてペリフェラルのとき、リセット検出、サスペンド検出及びレジューム検出を行い、割り込みによりＣＰＵに通知する。またＯＴＧステートの遷移においてホストのとき、リモートウェイクアップ検出が有効になる。ＨＣ２２０とＰＣ２３０とは、排他的にイネーブル制御される。
【０１１２】
レジスタ部２４０は、ホスト及びペリフェラルとして動作制御するためのレジスタ群である。
【０１１３】
パケットバッファ２５０は、ホスト又はペリフェラルとして転送されるパケットを蓄積するバッファである。
【０１１４】
バッファコントローラ２６０は、ＣＰＵ  Ｉ／Ｆ２９０又はＤＭＡハンドラ２９２を介して入出力されるパケットバッファ２５０へのアクセスアドレスの管理や、ＵＳＢ転送を行う場合に入出力されるパケットバッファ２５０へのアクセスアドレスの管理の制御を行う。
【０１１５】
ホスト／ペリフェラル切り替え回路２７０は、ラインステートコントローラ２７２、ＨＣ／ＰＣセレクタ２７４を含む。ラインステートコントローラ２７２は、トランシーバ２８０に対して信号ライン状態の生成の指示を行う。ＨＣ／ＰＣセレクタ２７４は、トランシーバ２８０と、ＨＣ２２０又はＰＣ２３０とを接続するための、経路切り替えを行う。
【０１１６】
トランシーバ２８０は、ＵＳＢデータ信号の送受信、ＵＳＢデータライン状態の生成、パラレル／シリアル変換処理やビットスタッフィング／アンスタッフィング処理等を行う。ＵＳＢ正極信号ＤＰは、データ信号線Ｄ＋に出力される。ＵＳＢ負極信号ＤＭは、データ信号線Ｄ−に出力される。
【０１１７】
ＣＰＵインタフェース２９０は、ＰＩＯ転送の制御を行うと共に、ＣＰＵへの割り込み信号を生成する。ＣＰＵアドレスＣＡ［７：０］は、ＣＰＵアドレスバスである。ＣＰＵデータＣＤ［１５：０］は、ＣＰＵデータバスであり、ＤＭＡデータバスと共用される。チップセレクトｘＣＳは、チップセレクト信号である。リードストローブｘＲＤは、ＣＰＵリートストローブであり、ＤＭＡリードストローブと共用される。ライトストローブｘＷＲは、ＣＰＵライトストローブであり、ＤＭＡライトストローブと共用される。ウェイト信号ｘＷＡＩＴは、ＣＰＵへのウェイト信号である。割り込み信号ｘＩＮＴは、ＣＰＵへの割り込み信号である。
【０１１８】
ＤＭＡハンドラ２９２は、ＤＭＡ転送制御を行う。ＤＭＡ要求ｘＤＲＥＱは、ＤＭＡ転送要求信号である。ＤＭＡアクノリッジｘＤＡＣＫは、ＤＭＡ転送許可信号である。
【０１１９】
クロックコントローラ２９４は、上述した各ブロックに供給されるクロック信号の分配や動作制御を行う。クロックコントローラ２９４は、発振子入力ＸＩ及び発振子出力ＸＯに接続された発振子を用いた発振出力を、ＰＬＬ回路で逓倍してクロック信号を生成する。ＰＬＬフィルタＶＣには、ＰＬＬフィルタ回路が接続される。クロックコントローラ２９４は、クロック選択信号ＣＬＫＳＥＬ［１：０］により、外部クロック入力ＣＬＫＩＮからのクロック信号、又は発振子を使用したクロック信号のいずれかを選択することができるようになっている。
【０１２０】
テストモジュール２９６は、ＯＴＧデバイスコントローラＩＣ２００の各部の動作確認テストを行うためのモジュールである。テストイネーブルＴＥＳＴによりテストモードに設定されると、テストモードＴＩＮ［１：０］で選択されたテストモードでテストを行い、テストモニタＴＥＳＴＭＯＮを介して内部テストをモニタすることができる。
【０１２１】
このような構成のＯＴＧデバイスコントローラＩＣ２００では、ＯＴＧコントローラ２１０によって検出された遷移条件が、ＣＰＵインタフェース２９０を介してＣＰＵに対し割り込み信号として通知され、ＣＰＵ（ファームウェア）にステート遷移を制御させる。そして、ＣＰＵインタフェース２９０を介して、遷移先のＯＴＧステートに対応したＯＴＧステートコマンドがＯＴＧコントローラ２１０に設定される。ＯＴＧコントローラ２１０は、設定されたＯＴＧステートコマンドに対応したコントロール信号を生成し、各ブロックを制御する。すなわち、各ステート間は、ファームウェアにより遷移制御される。上述したＨ／Ｗ割り込み信号又は上位アプリケーション（ソフトウェア）からの指示が、ステートの遷移条件となる。
【０１２２】
またＨＣ２２０において、ホスト機能を実行するための各ステートを遷移させる場合にも同様に制御することができる。より具体的には、図１０及び図１１に示したように、ファームウェアによりＨＣステートのステート遷移制御を行い、遷移先のＨＣステートに対応したＨＣステートコマンドが設定されたＨＣ２２０が、該ＨＣステートコマンドに応じたコントロール信号によりホスト制御を行う。
【０１２３】
こうすることで、図１２に示すように、ＨＮＰによりホスト機能及びペリフェラル機能を切り替えながらデュアルロールデバイスとしての動作を実現することができる。図１２では、割り込み信号により、ファームウェアがＯＴＧステートコマンド及びＨＣステートコマンドを設定して、デュアルロールデバイスの動作制御を行っている。
【０１２４】
２．２  ＯＴＧコントローラ
図１３に、図９に示すデバイスコントローラＩＣのＯＴＧコントローラの構成の一例を示す。
【０１２５】
ＯＴＧコントローラ２１０は、ＯＴＧ管理回路４００と、ＯＴＧ制御コア回路４１０とを含む。ＯＴＧ管理回路４００は、モニタレジスタ４０２、コントロールレジスタ４０４、ステートコマンドデコーダ４０６を含む。ＯＴＧ制御コア回路４１０は、図９に示すＩＤ検出回路２１４、ＶＢＵＳ検出回路２１６及びラインステート検出回路２１８と同等の機能を有し、ステートに応じて検出された条件を割り込み信号として通知することができる。
【０１２６】
モニタレジスタ４０２は、図１４に示すようなビットフィールドに、ＬＳ（Low Speed）のデバイスが接続されたかを示すＬＳＣｏｎｎｅｃｔ、ＩＤ端子の状態を示すＩＤ、データ信号線のラインステート（「Ｊ」状態、「Ｋ」状態、「ＳＥ０」状態、「ＳＥ１」状態）を示すＬｉｎｅＳｔａｔｅ［１：０］、２．０Ｖコンパレータ出力結果を示すＣｏｍｐ２０Ｖ、４．４Ｖコンパレータ出力結果を示すＣｏｍｐ４４Ｖの各値が設定される。ＣＰＵからは、モニタレジスタ４０２の設定値を読み出すことができる。
【０１２７】
コントロールレジスタ４０４は、図１４に示すビットフィールドに、リモートウェイクアップ信号の検出のイネーブル／ディセーブルするためのＡｌｌｏｗＲｍｔＷｋｕＰ、ＶＢＵＳの許容電流を８ｍＡ又はそれ以外にするかを設定するためのＢｕｓＰｗｒＳｅｌ、ＯＴＧステートコマンドが設定されるＯＴＧＳｔａｔｅＣｍｄ［３：０］の各値が設定される。コントロールレジスタ４０４の設定値は、ＣＰＵからリード又はライトすることができる。更に、コントロールレジスタ４０４に対し、ＯＴＧ制御コア回路４１０が直接設定することができるようになっている。この場合、ＯＴＧ制御コア回路４１０がステート生成回路として、ラインステートやＶＢＵＳの電圧等を監視して、次に遷移すべきステートに対応したステートコマンドを生成し、コントロールレジスタ４０４に設定する。例えば、図５に示すａ＿ｓｕｓｐｅｎｄステート（広義には、サスペンド状態）からａ＿ｈｏｓｔステート（広義には、データ転送を開始するステート）へ遷移させる場合に、ｂ＿ｂｕｓ＿ｒｅｓｕｍｅをハードウェアで検出してａ＿ｈｏｓｔステートに対応するステートコマンドを、ＯＴＧ制御コア回路４１０で生成させることも可能である。
【０１２８】
これにより、ファームウェアによる処理でステート遷移が間に合わない遷移については、ハードウェアでステート制御させることができる。なお、ステート遷移制御の一貫性を保ち、制御を簡素化するため、ファームウェアでも同様の遷移条件を用いてステート遷移を行って、ハードウェアによる設定後に同じ遷移先のステートに対応するステートコマンドを設定することが望ましい。
【０１２９】
ステートコマンドデコーダ４０６は、コントロールレジスタ４０４のＯＴＧＳｔａｔｅＣｍｄ［３：０］に基づいて、ＲＰＤＥＮ、ｘＲＰＵＥＮ、ＶＢＵＳＤＲＶ３、ＶＢＵＳＤＲＶ５，ＢＵＳＰＷＲＳＥＬ、ＰＣＥｎｂ、ＨＣＥｎｂ等のコントロール信号を生成する。
【０１３０】
信号ライン制御回路４２０は、図９に示すトランシーバ２８０を含む。ＶＢＵＳコンパレータ４３０は、ＯＴＧデバイスコントローラＩＣ２００の外部に設けることも可能である。
【０１３１】
図１５及び図１６に、ＯＴＧデバイスコントローラＩＣ２００を用いたデータ転送制御の一例を示す。
【０１３２】
ここでは、デフォルト状態のｂ＿ｉｄｌｅステートからＡデバイスとしてａ＿ｈｏｓｔステートに遷移するまでの間で行われるファームウェアの処理と、接続相手とのやり取りを示している。
【０１３３】
Ｃｏｎｎｅｃｔ（Ｊ）Ｄｅｔは、接続相手と接続されたか否かを検出するためにラインステートが「Ｊ」状態であることを検出する機能をいう。Ｄｉｓｃｏｎｎｅｃｔ（ＳＥ０）Ｄｅｔは、接続相手と切断されたか否かを検出するためにラインステートが「ＳＥ０」状態であることを検出する機能をいう。
【０１３４】
更に、図１７に、デフォルト状態のｂ＿ｉｄｌｅステートからＡデバイスとしてａ＿ｈｏｓｔステートに遷移するまでの間のバス上の信号のタイミングチャートの一例を示す。
【０１３５】
上述したようにデュアルロールデバイスは、デフォルト状態ではｂ＿ｉｄｌｅステートである。
【０１３６】
その後、接続相手にはＭｉｎｉ−Ｂプラグが挿入され、ＯＴＧデバイスコントローラＩＣ２００にＭｉｎｉ−Ａプラグが挿入されると、ＩＤ信号が変化したことを示すＣｈｎａｇｅＩＤ割り込みがＣＰＵ（ファームウェア）に通知される。なお、ＣＰＵに通知される割り込み信号は、ＣＰＵにより非アクティブになるように制御される。
【０１３７】
ＣＰＵは、図５に示したように、遷移先のステートがａ＿ｉｄｌｅステートであると判断して、ＯＴＧステートコマンドを設定する。したがって、ＯＴＧデバイスコントローラＩＣ２００では、ａ＿ｉｄｌｅステートにおけるコントロール信号に基づいて各ブロックが制御される。
【０１３８】
続いて、上位アプリケーションからバスの使用要求があると（ａ＿ｂｕｓ＿ｒｅｑ）、ＣＰＵは、遷移先のステートがａ＿ｗａｉｔ＿ｖｒｉｓｅステートであると判断して、ＯＴＧステートコマンドを設定する。
【０１３９】
ａ＿ｗａｉｔ＿ｖｒｉｓｅステートに対応したステートコマンド（第１のステートコマンド）が設定されてａ＿ｗａｉｔ＿ｖｒｉｓｅステートに遷移すると、ＣＰＵは２００ｍｓのタイマを起動する。そして、ＶＢＵＳの電圧が所与の閾値電圧を越えたことが検出されると、Ｃｒｏｓｓ４４Ｖ割り込みにより、当該ステートにおけるタイマを停止すると共に、遷移先のステートがａ＿ｗａｉｔ＿ｂｃｏｎステートであると判断して、ＯＴＧステートコマンドを設定する。なお、ＣＰＵは起動したタイマが２００ｍｓになってタイムアウトとなった場合にも、ａ＿ｗａｉｔ＿ｂｃｏｎステートに遷移するものと判断し、ａ＿ｗａｉｔ＿ｂｃｏｎステートに対応するＯＴＧステートコマンドを設定することができる。
【０１４０】
ａ＿ｗａｉｔ＿ｂｃｏｎステートに遷移すると、ＣＰＵは２００ｍｓのタイマを起動する。そして、ラインステートが「Ｊ」状態であることを規定時間、検出するとＣｈａｎｇｅＣｏｎｎＳｔａｔ割り込みにより、タイマを停止すると共に、遷移先のステートがａ＿ｈｏｓｔステートであると判断して、ＯＴＧステートコマンドを設定する。
【０１４１】
以下、同様にしてステート遷移が行われる。
【０１４２】
３．  電子機器
次に本実施形態のデータ転送制御装置を含む電子機器の例について説明する。例えば図１８（Ａ）に電子機器の１つであるプリンタの内部ブロック図を示し、図１９（Ａ）にその外観図を示す。ＣＰＵ（マイクロコンピュータ）５１０はシステム全体の制御などを行う。操作部５１１はプリンタをユーザが操作するためのものである。ＲＯＭ５１６には、制御プログラム、フォントなどが格納され、ＲＡＭ５１７はＣＰＵ５１０のワーク領域として機能する。ＤＭＡＣ５１８は、ＣＰＵ５１０を介さずにデータ転送を行うためのＤＭＡコントローラである。表示パネル５１９はプリンタの動作状態をユーザに知らせるためのものである。
【０１４３】
ＵＳＢを介してパーソナルコンピュータなどの他のデバイスから送られてきたシリアルの印字データは、データ転送制御装置５００によりパラレルの印字データに変換される。そして、変換後のパラレル印字データは、ＣＰＵ５１０又はＤＭＡＣ５１８により、印字処理部（プリンタエンジン）５１２に送られる。そして、印字処理部５１２においてパラレル印字データに対して所与の処理が施され、プリントヘッダなどからなる印字部（データの出力処理を行う装置）５１４により紙に印字されて出力される。
【０１４４】
図１８（Ｂ）に電子機器の１つであるデジタルカメラの内部ブロック図を示し、図１９（Ｂ）にその外観図を示す。ＣＰＵ５２０はシステム全体の制御などを行う。操作部５２１はデジタルカメラをユーザが操作するためのものである。ＲＯＭ５２６には制御プログラムなどが格納され、ＲＡＭ５２７はＣＰＵ５２０のワーク領域として機能する。ＤＭＡＣ５２８はＤＭＡコントローラである。
【０１４５】
ＣＣＤなどからなる撮像部５２２により撮影対象の画像が読み取られ、読み取られた画像のデータは画像処理部５２４により処理される。そして、処理後の画像データは、ＣＰＵ５２０又はＤＭＡＣ５２８によりデータ転送制御装置５００に送られる。データ転送制御装置５００は、このパラレルの画像データをシリアルデータに変換し、ＵＳＢを介してパーソナルコンピュータなどの他のデバイスに送信する。
【０１４６】
図１８（Ｃ）に電子機器の１つであるＣＤ−ＲＷドライブの内部ブロック図を示し、図１９（Ｃ）にその外観図を示す。ＣＰＵ５３０はシステム全体の制御などを行う。操作部５３１はＣＤ−ＲＷをユーザが操作するためのものである。ＲＯＭ５３６には制御プログラムなどが格納され、ＲＡＭ５３７はＣＰＵ５３０のワーク領域として機能する。ＤＭＡＣ５３８はＤＭＡコントローラである。
【０１４７】
レーザ、モータ、光学系などからなる読み取り＆書き込み部（データの取り込み処理を行う装置又はデータの記憶処理を行うための装置）５３３によりＣＤ−ＲＷ５３２から読み取られたデータは、信号処理部５３４に入力され、エラー訂正処理などの所与の信号処理が施される。そして、信号処理が施されたデータが、ＣＰＵ５３０又はＤＭＡＣ５３８によりデータ転送制御装置５００に送られる。データ転送制御装置５００は、このパラレルのデータをシリアルデータに変換し、ＵＳＢを介してパーソナルコンピュータなどの他のデバイスに送信する。
【０１４８】
一方、ＵＳＢを介して他のデバイスから送られてきたシリアルのデータは、データ転送制御装置５００によりパラレルのデータに変換される。そして、このパラレルデータは、ＣＰＵ５３０又はＤＭＡＣ５３８により信号処理部５３４に送られる。そして、信号処理部５３４においてこのパラレルデータに対して所与の信号処理が施され、読み取り＆書き込み部５３３によりＣＤ−ＲＷ５３２に記憶される。
【０１４９】
なお、図１８（Ａ）、（Ｂ）、（Ｃ）において、ＣＰＵ５１０、５２０、５３０の他に、データ転送制御装置５００でのデータ転送制御のためのＣＰＵを別に設けるようにしてもよい。
【０１５０】
本実施形態のデータ転送制御装置を電子機器に用いれば、ホスト動作を行うパーソナルコンピュータと接続することなく、ＵＳＢ転送を行うことができる。特に携帯型の電子機器に用いることによって、ユーザはパーソナルコンピュータを持ち歩く必要がなくなり、手軽にＵＳＢ転送を行うことができる。例えば、パーソナルコンピュータを介することなく、プリンタや、ＣＤ−ＲＷとの間でＵＳＢ転送を行うことができる。
【０１５１】
また本実施形態のデータ転送制御装置を電子機器に用いれば、ＣＰＵ上で動作するファームウェアの処理負荷が軽減され、安価なＣＰＵを用いることが可能になる。更に、データ転送制御装置の低コスト化、小規模化を図れるため、電子機器の低コスト化、小規模化も図れるようになる。
【０１５２】
なお本実施形態のデータ転送制御装置を適用できる電子機器としては、上記以外にも例えば、種々の光ディスクドライブ（ＣＤ−ＲＯＭ、ＤＶＤ）、光磁気ディスクドライブ（ＭＯ）、ハードディスクドライブ、ＴＶ、ＶＴＲ、ビデオカメラ、オーディオ機器、電話機、プロジェクタ、パーソナルコンピュータ、電子手帳、ワードプロセッサなど種々のものを考えることができる。
【０１５３】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【０１５４】
また、本発明は、ＯＴＧ規格でのデータ転送に適用されることが特に望ましいが、これに限定されるものではない。例えばＯＴＧ規格と同様の思想に基づく規格やＯＴＧ規格を発展させた規格におけるデータ転送にも本発明は適用できる。
【０１５５】
更に上述した実施形態において、転送に先立ってＭｉｎｉ−Ａプラグが挿入されたデバイスをＡデバイス、Ｍｉｎｉ−Ｂプラグが挿入されたデバイスをＢデバイスであるものとして説明したが、転送制御中に、Ａデバイス及びＢデバイスを入れ替え、例えばＶＢＵＳの供給源を切り替えるようにした場合でも、本発明は適用できる。
【図面の簡単な説明】
【図１】図１（Ａ）は、その両端にＭｉｎｉ−Ａプラグ及びＭｉｎｉ−Ｂプラグを有するＵＳＢケーブルの概要を示す模式図である。図１（Ｂ）は、Ａデバイス及びＢデバイスについて説明するための図である。図１（Ｃ）は、端子表を示す図である。
【図２】ＵＳＢケーブルが接続されたデュアルロールデバイスの例を模式的に示す図である。
【図３】ＳＲＰについて説明するための図である。
【図４】ＨＮＰについて説明するための図である。
【図５】Ａデバイスのステート遷移を説明するための図である。
【図６】Ｂデバイスのステート遷移を説明するための図である。
【図７】本実施形態におけるデータ転送制御装置の原理的構成を示す構成図である。
【図８】本実施形態におけるファームウェアの処理の一例を示す図である。
【図９】ＯＴＧデバイスコントローラＩＣの機能ブロック図である。
【図１０】ＯＴＧデバイスコントローラＩＣがＡデバイスのとき、ＨＣで行われるステート遷移の一例を示すフロー図である。
【図１１】ＯＴＧデバイスコントローラＩＣがＢデバイスのとき、ＨＣで行われるステート遷移の一例を示すフロー図である。
【図１２】ＯＴＧデバイスコントローラＩＣによるＨＮＰの動作タイミングの一例を示すタイミングチャートである。
【図１３】ＯＴＧデバイスコントローラＩＣのＯＴＧコントローラの具体的な構成例を示す構成図である。
【図１４】ＯＴＧコントローラのレジスタマップの一例を示す説明図である。
【図１５】ＯＴＧデバイスコントローラＩＣのシーケンスの一例の前半部を示す図である。
【図１６】ＯＴＧデバイスコントローラＩＣのシーケンスの一例の後半部を示す図である。
【図１７】ＯＴＧデバイスコントローラＩＣの動作の一例を示すタイミングチャートである。
【図１８】図１８（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の内部ブロック図の例である。
【図１９】図１９（Ａ）、（Ｂ）、（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
１０、２０  デュアルロールデバイス（Dual-role Device）
１２、２２、２１４  ＩＤ検出回路
１００、５００  データ転送制御装置
１１０  ステートコントローラ
１１２、４０４  コントロールレジスタ
１１４、４０６  ステートコマンドデコーダ
１１６  信号状態検出回路
１２０、４２０  信号ライン制御回路
１３０、５１０、５２０、５３０  ＣＰＵ（処理部）
１３２  ラインステート検出回路
１３４  電源ライン検出回路
２００  ＯＴＧデバイスコントローラＩＣ（データ転送制御装置）
２１０  ＯＴＧコントローラ
２１２、４００  ＯＴＧ管理回路
２１６  ＶＢＵＳ検出回路
２１８  ラインステート検出回路
２２０  ホストコントローラ（ＨＣ）
２３０  ペリフェラルコントローラ（ＰＣ）
２４０  レジスタ部
２５０  パケットバッファ（ＦＩＦＯ）
２６０  バッファコントローラ
２７０  ホスト／ペリフェラル切り替え回路
２７２  ラインステートコントローラ
２７４  ＨＣ／ＰＣセレクタ
２８０  トランシーバ
２９０  ＣＰＵインタフェース
２９２  ＤＭＡハンドラ
２９４  クロックコントローラ
２９６  テストモジュール
４０２  モニタレジスタ
４１０  ＯＴＧ制御コア回路
４３０  ＶＢＵＳコンパレータ
５１１、５２１、５３１  操作部
５１２  印字処理部
５１４  印字部
５１６、５２６  ＲＯＭ
５１７、５２７  ＲＡＭ
５１８、５２８  ＤＭＡＣ
５１９  表示パネル
５２２  撮像部
５２４  画像処理部
５３２  ＣＤ−ＲＷ
５３３  読み取り＆書き込み部
５３４  信号処理部
【図１】
0003722217.tif 000002
【図２】
0003722217.tif 000003
【図３】
0003722217.tif 000004
【図４】
0003722217.tif 000005
【図５】
0003722217.tif 000006
【図６】
0003722217.tif 000007
【図７】
0003722217.tif 000008
【図８】
0003722217.tif 000009
【図９】
0003722217.tif 000010
【図１０】
0003722217.tif 000011
【図１１】
0003722217.tif 000012
【図１２】
0003722217.tif 000013
【図１３】
0003722217.tif 000014
【図１４】
0003722217.tif 000015
【図１５】
0003722217.tif 000016
【図１６】
0003722217.tif 000017
【図１７】
0003722217.tif 000018
【図１８】
0003722217.tif 000019
【図１９】
0003722217.tif 000020