(57)【要約】ＯＴＧ（On-The-Go）機能性をインプリメントする ＵＳＢ（Universal Serial Bus）コントローラ技術を提供する。このデバイスは、ＥＨＣＩ（Enhanced Host Controller Interface）対応ホスト制御ユニット、および部分的にはハードウェア、および部分的にはソフトウェア中のＯＴＧ状態マシンをインプリメントするＯＴＧ制御ユニットを有する。このＯＴＧ制御ユニットは、ソフトウェアによりアクセス可能であるＯＴＧ制御レジスタおよびＯＴＧステータスレジスタを含む。さらに、ＵＳＢコントローラ・デバイスは、デバイス機能性をインプリメントするデバイス制御ユニットと、ホスト制御ユニットまたはデバイス制御ユニットのいずれか一方に物理ポートを割り当てるポート・マルチプレクサとを含む。このＯＴＧ制御ユニットは、ポート・マルチプレクサ中に含まれていてもよい。さらに、ソフトウェア・ドライバは、ＵＳＢコントローラ・デバイスからの割り込みを受け取ることに応じてＯＴＧステータスレジスタを読み込み、ＵＳＢコントローラ・デバイスにそのＯＴＧ状態を変更させるようにＯＴＧ制御レジスタに書き込むことができる。
2008522325.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのＵＳＢ周辺機器に、および（または）少なくとも１つのＵＳＢ周辺機器からデータ転送を実行するホスト機能性をインプリメントするのに適した、ＥＨＣＩ（Enhanced Host Controller Interface）対応ホストコントローラを有する、ホスト制御ユニットと、
前記ホスト制御ユニットの動作を制御するＯＴＧ状態マシンをインプリメントするのに適した、ＯＴＧ制御ユニットと、を有しており、
前記ＯＴＧ制御ユニットは、部分的にはハードウェア、および部分的にはソフトウェア中に前記ＯＴＧ状態マシンをインプリメントするようになっている、
ＯＴＧ（On-The-Go）の機能性を有するＵＳＢ（Universal Serial Bus）（ユニバーサルシリアルバス）コントローラデバイス。
【請求項２】
前記ＯＴＧ制御ユニットは、前記ＯＴＧ制御ユニットの動作を制御する制御情報を保持し、ソフトウェアによりアクセス可能であるＯＴＧ制御レジスタを含んでいる、請求項１記載のＵＳＢコントローラデバイス。
【請求項３】
前記ＯＴＧ制御レジスタは、ソフトウェアによって書き込み可能である、請求項２記載のＵＳＢコントローラデバイス。
【請求項４】
前記ＯＴＧ制御ユニットは、前記制御情報の変化に応じてハードウェアスイッチの状態を変化させるようになっている、請求項２記載のＵＳＢコントローラデバイス。
【請求項５】
前記ＯＴＧ制御レジスタは、２つのアドレスの一方に書き込むことによってアドレス可能であり、前記２つのアドレスのうち一方のアドレスへの書き込みは制御情報をセットする一方、前記２つのアドレスのうち他方のアドレスへの書き込みは前記制御情報をクリアする、請求項２記載のＵＳＢコントローラデバイス。
【請求項６】
少なくとも１つのＵＳＢ周辺機器に、および（または）少なくとも１つのＵＳＢ周辺機器からデータ転送を実行するホスト機能性をインプリメントするのに適した、ＥＨＣＩ（Enhanced Host Controller Interface）対応ホストコントローラを有する、ホスト制御ユニットと、
前記ホスト制御ユニットの動作を制御するようになっているＯＴＧ制御ユニットと、を有しており、
前記ＯＴＧ制御ユニットは、前記ＯＴＧ制御ユニットの動作を制御する制御情報を保持するＯＴＧ制御レジスタと、前記ＯＴＧ制御ユニットのステータス情報を保持するＯＴＧステータスレジスタと、を含む、
ＯＴＧ（On-The-Go）の機能性を有するＵＳＢ（Universal Serial Bus）（ユニバーサルシリアルバス）コントローラデバイス。
【請求項７】
前記ＯＴＧ制御レジスタは、タイマ計算条件情報を保持するレジスタ・フィールドを含む、請求項６記載のＵＳＢコントローラデバイス。
【請求項８】
前記ＯＴＧ制御レジスタは、ＯＴＧポート接続ステータスを変化させるように、ソフトウェアによって書き込み可能である書き込みポート接続情報を保持するレジスタ・フィールドを含んでいる、請求項６記載のＵＳＢコントローラデバイス。
【請求項９】
ソフトウェアが前記書き込みポート接続情報レジスタ・フィールドに書き込まない限り、前記ＯＴＧポート接続ステータスはハードウェア制御下にある、請求項８記載のＵＳＢコントローラデバイス。
【請求項１０】
双方ともソフトウェアドライバによってアクセス可能であるＯＴＧ制御レジスタと、ＯＴＧステータスレジスタと、を有するＵＳＢ（Universal Serial Bus）（ユニバーサルシリアルバス）コントローラデバイス中にＯＴＧ（On-The-Go）の機能性を提供する方法であって、
前記ＵＳＢコントローラ・デバイスからの割り込みの受信に応じて、前記ＯＴＧステータスレジスタを前記ソフトウェアドライバによって読み込み、
前記ＵＳＢコントローラ・デバイスにそのＯＴＧ状態を変更させるように、前記ソフトウェアドライバによって前記ＯＴＧ制御レジスタに書き込む、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してＵＳＢ（Universal Serial Bus）（ユニバーサルシリアルバス）コントローラデバイスおよび方法に関し、さらに詳細にはＯＴＧ（On-The-Go）の機能性をインプリメントすることに関する。
【背景技術】
【０００２】
ユニバーサルシリアルバスは、コンピュータシステムに追加の周辺装置の接続を容易にする外部拡張バスの規格として、１９９５年に最初に開発された。ＵＳＢ技術はＰＣ（パーソナルコンピュータ）ホストコントローラハードウェアおよびソフトウェアならびに周辺装置に親和的なマスタ・スレーブプロトコルによって実装され、堅牢な接続およびケーブルアセンブリを実現している。ＵＳＢシステムはマルチポートハブを介して拡張可能である。
【０００３】
ＵＳＢシステムでは、システムソフトウェアの役割はハードウェア実装の詳細を隠すことによって、すべてのアプリケーションソフトウェアに対して、入出力アーキテクチャの統一された見え方を提供することにある。特に、それは周辺装置の動的な取り付けおよび取り外しを管理し、周辺装置と通信してその同一性を認識する。実行時には、ホストは特定の周辺装置に対するトランザクションを発し、各周辺装置はそのトランザクションを受け入れて適切に応答する。
【０００４】
ＵＳＢ周辺装置に対する追加的な接続性を設けるためにハブがシステムに導入され、接続されたデバイスに対して管理された電力を供給する。これらの周辺装置は、ホストから送信された要求トランザクションに応答しなければならないスレーブである。そのような要求トランザクションにはそのデバイスおよびその構成についての詳細な情報に対する要求も含まれる。
これらの機能およびプロトコルはすでにＵＳＢ１．１の規格に規定されているが、この機能はさらに高い性能のインターフェースを提供するために改良されている。図１は、ホストコントローラ１００，複数のＵＳＢデバイス１１５，１２０，１２５，１３０および２つのハブ１０５，１１０を含むＵＳＢ２．０システムの一例を示している。図１のシステムでは、接続性を増加させるためにハブ１０５、１１０を導入したが、他のＵＳＢ２．０システムではＵＳＢデバイスはホストコントローラ１００に直接接続することができる。
【０００５】
上述のように、ＵＳＢ２．０はより高性能なインターフェースを提供し、最大で約４０倍の高速化が実現されている。さらに、図１から明らかなように、同じホストコントローラ１００によって駆動されるＵＳＢ１．１デバイス１２０，１２５，１３０を接続することができることから、ＵＳＢ２．０はＵＳＢ１．１との下方互換性を有する。ＵＳＢ１．１のハブ１１０をも使用することができる。
【０００６】
図１からわかるように、ＵＳＢ１．１のデバイス１２０はＵＳＢ２．０のハブ１０５に直接接続することができる。さらに、それはホストコントローラ１００に直接接続することもできる。これが可能なのは、ＵＳＢ２．０のホストコントローラおよびハブが、デバイス対デバイスの関係において、高速の伝送速度でも、低速の伝送速度でもネゴシエーションをする機能を持つからである。
【０００７】
図２に、ＵＳＢ２．０のシステムのシステムソフトウェアおよびハードウェアを示す。システムの構成要素は、図に示すように、いくつかの層を定義することによって階層的に編成することが可能である。
【０００８】
最上層では、クライアントドライバソフトウェア２００がホストＰＣ上で実施され、特定のＵＳＢデバイス２３０に対応する。このクライアントソフトウェアは通常オペレーティングシステムの一部であり、デバイスと一緒に提供される。
【０００９】
ＵＳＢドライバ２０５はシステムソフトウェア・バスドライバであって、特定のオペレーティングシステムのための特定のホストコントローラドライバ２１０，２２０の詳細を抜き出したものである。ホストコントローラドライバ２１０，２２０は、ドライバとハードウェアのインターフェースを提供するために特定のハードウェア２１５，２２５，２３０とＵＳＢドライバ２０５との間のソフトウェア層を提供する。
【００１０】
これまで議論してきた層はソフトウェアによって実装されるものであるが、最上部のハードウェア部品層としてホストコントローラ２１５，２２５が含まれる。これらのコントローラはエンドユーザ機能を実行するＵＳＢデバイス２３０に接続される。
【００１１】
図面から明らかなように、高速なＵＳＢ２．０機能のための拡張ホストコントローラ（ＥＨＣ）である、ホストコントローラ２２５が設けられている。このホストコントローラはＵＳＢ２．０のＥＨＣＩ（Enhanced Host Controller Interface、拡張ホストコントローラインターフェース）規格に従って動作する。ソフトウェア側では、ホストコントローラ２２５は、それに関連する特別のホストコントローラドライバ（ＥＨＣＤ）２２０を持つ。
【００１２】
さらに、最大速度および低速度の動作のためのホストコントローラ２１５が設けられている。ＵＨＣＩ（Universal Host Controller Interface）またはＯＨＣＩ（Open Host Controller Interface）は、ＵＳＢ１．１ホストコントローラインターフェースを提供するためのユニバーサルな、またはオープンホストコントローラ（ＵＨＣ／ＯＨＣ）２１５において採用されている２つの業界標準である。ホストコントローラ２１５はその最下層のソフトウェアレベルにユニバーサル／オープンホストコントローラドライバ（ＵＨＣＤ／ＯＨＣＤ）２１０を割り当てている。
【００１３】
したがって、ＵＳＢ２．０準拠のホストコントローラシステムは、必ずＥＨＣＩ規格に従ったドライバソフトウェアとホストコントローラハードウェアとを含む。この規格ではレジスタレベルのインターフェースとそれに関連したメモリ常駐のデータ構造とを規定しているが、それに準拠したホストコントローラを構築するために必要なハードウェアアーキテクチャについては定義も説明もしていない。
【００１４】
図３に、一般的なマザーボードレイアウトにおけるハードウェア要素を示す。マザーボード上の基本的な構成要素には、ＣＰＵ（中央処理装置）３００，ノースブリッジ３０５，サウスブリッジ３１０およびシステムメモリ３１５が含まれる。ノースブリッジ３０５は一般に単一チップのコアロジックチップセットであって、プロセッサ３００をシステムメモリ３１５およびＡＧＰ（Accelerated Graphic Port）およびＰＣＩ（Peripheral Component Interface）バスに接続する。ＰＣＩバスはパーソナルコンピュータにおいて一般的に用いられ、プロセッサとビデオカード、サウンドカード、ネットワークインターフェースカードおよびモデムなどの周辺デバイスとの間のデータパスを提供する。ＡＧＰバスは高速のグラフィック拡張バスであって、ディスプレイアダプタとシステムメモリ３１５とを直接接続する。ＡＧＰとＰＣＩバスとは独立して動作する。ノースブリッジを持たないような、またはＡＧＰまたはＰＣＩオプションがないノースブリッジを持つような他のマザーボードレイアウトが存在することに注意してもらいたい。
【００１５】
サウスブリッジ３１０は一般的にシステムコアロジックチップセット中のチップであって、ＩＤＥ（Integrated Drive Electronics）またはＥＩＤＥ（Enhanced IDE）バス、ＵＳＢバスを制御し、プラグアンドプレイサポートを提供し、ＰＣＩ−ＩＳＡ（Industry Standard Architecture）ブリッジを制御し、キーボード／マウスコントローラを管理し、電力管理機能を提供し、他の周辺装置を制御する。
【００１６】
ＵＳＢの機能性は、サウスブリッジデバイスまたはパーソナルコンピュータのチップセットの一部であり得る他のコンパニオンチップ中にしばしばインプリメントされる。
上述したように、この機能性は、サウスブリッジまたはコンパニオンチップ中に構築されたコンピュータと周辺装置との間のデータを交換する、ポピュラーなインターフェースを提供する。
【００１７】
低出力のデバイスが制のあるホスト能力を有することを可能にするために、”ＵＳＢ２．０規格に対するＯＴＧ補足書（"On-The-Go Supplement to the USB 2.0 Specification" ）”が草案されている。
この補足書は、２つのプロトコル、すなわち、周辺機器にＵＳＢ電源をつけれるようにホストに依頼させるＳＲＰ（セッション・リクエスト・プロトコル）、およびは周辺機器にＵＳＢホストにならせるＨＮＰ（ホスト・ネゴシエーション・プロトコル）を定義する。
したがって、ＵＳＢ２．０規格に対する補足書は、ポータブル装置がパーソナルコンピュータのＵＳＢ機能をすべてサポートする負荷のない、制限のあるＵＳＢホストの役割をすることを可能する。
【００１８】
他のものに加えて、ＯＴＧ補足書は、周辺機器としてフルスピードで（および任意にハイスピードで）、およびさらにホストとしてフルスピードで（および任意にハイスピードで）動作し得る、デュアルロールデバイス（dual-role device）を明示する。
さらに、Ａデバイスは、セッションの最初のホストであると明示される。
ある条件下では、Ａデバイスは、デュアルロールＢデバイスにホストの役割を譲るであろう。Ｂデバイスは、セッションの最初の周辺装置である。このデバイスがデュアルロールある場合、Ａデバイスからホストの役割を与えられ得る。
【００１９】
上述した２つのプロトコルであるＳＲＰおよびＨＮＰは、状態図によりＯＴＧ補足書に記載される。
これらの状態図は、複数のＯＴＧ状態、およびこれらの状態間のトランジションが生じる条件を定義する。
しかしながら、ＯＴＧ補足書で指定された状態図に準拠するように状態マシンをインプリメントすることは、一般的に非常に複雑であることが分かる。
特に、状態マシンのインプリメントは、従来のＵＳＢの機能性を提供する回路を変更することを必要とし得る。
このことは、回路の開発規模および製造原価を増加させることにつながる。
【発明の開示】
【発明の概要】
【００２０】
ＯＴＧの機能性をインプリメントする改善されたＵＳＢコントローラ技術は、開発規模の縮小（reduced development）および製造原価の縮小を実現することができるものとして提供される。
【００２１】
ある実施形態の一例においては、ＯＴＧの機能性を有するＵＳＢコントローラ・デバイスが提供される。
ＵＳＢコントローラ・デバイスは、少なくとも１つのＵＳＢ周辺機器に、および（または）少なくとも１つのＵＳＢ周辺機器からデータ転送を実行するホスト機能性をインプリメントするのに適した、ＥＨＣＩ対応ホストコントローラを有する、ホスト制御ユニットを含む。
ＵＳＢコントローラ・デバイスは、ホスト制御ユニットの動作を制御するＯＴＧ状態マシンをインプリメントするのに適した、ＯＴＧ制御ユニットをさらに含む。
ＯＴＧ制御ユニットは、部分的にはハードウェア、および部分的にはソフトウェア中のＯＴＧ状態マシンをインプリメントするようになっている。
【００２２】
他の実施形態においては、ＵＳＢコントローラ・デバイスは、ＯＴＧ機能性を有しているものとして提供される。
このＵＳＢコントローラ・デバイスは、少なくとも１つのＵＳＢ周辺機器に、および（または）少なくとも１つのＵＳＢ周辺機器からデータ転送を実行するホスト機能性をインプリメントするのに適した、ＥＨＣＩ対応ホストコントローラを有する、ホスト制御ユニットを含む。
ＵＳＢコントローラ・デバイスは、ホスト制御ユニットの動作を制御するのに適した、ＯＴＧ制御ユニットをさらに含む。
ＯＴＧ制御ユニットは、ＯＴＧ制御ユニットの動作を制御する制御情報を保持するＯＴＧ制御レジスタと、ＯＴＧ制御ユニットのステータス情報を保持するＯＴＧステータスレジスタと、を含む。ＯＴＧ制御レジスタおよびステータスレジスタは、ソフトウェアによりアクセス可能である。
【００２３】
さらなる実施形態の一例によれば、ＵＳＢコントローラ・デバイスは、少なくとも１つのＵＳＢ周辺機器に、および（または）少なくとも１つのＵＳＢ周辺機器からデータ転送を実行するホスト機能性をインプリメントするのに適した、ＥＨＣＩ対応ホストコントローラを有する、ホスト制御ユニットを含む。
このＵＳＢコントローラ・デバイスは、少なくとも１つのＵＳＢホストデバイスに、および（または）少なくとも１つのＵＳＢホストデバイスからデータ転送を実行するデバイス機能性をインプリメントするのに適した、デバイス制御ユニットをさらに含む。
さらに、ＵＳＢコントローラ・デバイスは、ホスト制御ユニットまたはデバイス制御ユニットのいずれか一方に物理ポートを割り当てるのに適したポート・マルチプレクサと、ＯＴＧ機能性をインプリメントするのに適したＯＴＧ制御ユニットと、を含む。
ＯＴＧ制御ユニットは、ポート・マルチプレクサに含まれる。
【００２４】
またさらに他の実施形態においては、コンピュータ可読記憶媒体は、プロセッサにおいて実行された際、ＥＨＣＩ対応ホストコントローラの動作を制御するＯＴＧ状態マシンの少なくとも一部をインプリメントすることにより、プロセッサに、ＯＴＧ機能性を有するＵＳＢコントローラ・デバイスを動かす指示を格納する。
【００２５】
さらに他の実施形態においては、コンピュータ可読記憶媒体は、プロセッサにおいて実行された際、ＵＳＢコントローラ・デバイスのＯＴＧ制御レジスタおよびＯＴＧステータスレジスタへのアクセスにより、プロセッサに、ＯＴＧ機能性を有しているＵＳＢ制御デバイスを動かす指示を格納する。
このＯＴＧ制御レジスタおよびＯＴＧステータスレジスタは、ＯＴＧ機能性をインプリメントするのに適したＯＴＧ制御情報およびステータス情報を保持する。
【００２６】
さらに、ある実施形態は、双方ともソフトウェア・ドライバによってアクセス可能なＯＴＧ制御レジスタと、ＯＴＧステータスレジスタとを有しているＵＳＢコントローラ・デバイスにおけるＯＴＧ機能性を提供する方法を提供する。
この方法は、ＵＳＢコントローラ・デバイスからの割り込みの受信に応じて、ＯＴＧステータスレジスタをソフトウェアドライバによって読み込み、ＵＳＢコントローラ・デバイスにそのＯＴＧ状態を変更させるように、ソフトウェアドライバによってＯＴＧ制御レジスタに書き込むことを含んでいる。
【発明を実施するための最良の形態】
【００２７】
添付の図面は、本発明の原理を説明する目的において、本明細書に組み込まれ、その一部を構成する。これらの図面は本発明を限定するものと考えるべきではなく、本発明をいかに生産し、使用するかについて図示および説明された例であると考えるべきである。さらに、添付の図面に示されるように、後述のさらに詳細な説明から本発明の特徴および利点が明らかになるであろう。
【００２８】
図面を参照して、本発明の例としての実施形態を説明する。図面において、類似の要素および構造は類似の参照符号で示す。
【００２９】
図面、特に図４を参照すると、本実施形態によるＵＳＢコントローラ・デバイス４００は、ホスト制御ユニット４１５、デバイス制御ユニット４１０、ブリッジ４０５およびポート・マルチプレックス・コントローラ５２０を含む。
この実施形態のポート・マルチプレックス・コントローラ４２０は、ＵＳＢコントローラ・デバイス４００にＯＴＧ機能性をインプリメントする、ＯＴＧコントローラ４２５を含む。
以下に記載から明らかになるように、標準または既製の回路は、単に少し余分なハードウェアを有するホスト制御ユニットおよびデバイス制御ユニットをインプリメントするのに使用することができるので、ポート・マルチプレックス・コントローラ４２０にＯＴＧコントローラ４２５を追加することは、最小の労力でＯＴＧ機能性を得ることができる。
【００３０】
本実施形態においては、ホスト制御ユニット４１５は、ＥＨＣ／ＯＨＣコンビネーションであり、ポート・マルチプレックス・コントローラ４２０は、ホスト制御ユニット４１５およびデバイス制御ユニット４１０の共有の物理ポートに対するアクセスを制御する。
以下により詳細に記載するように、ホスト制御ユニット４１５は、この目的のためのポート・ルート機能を含む。
デバイス制御ユニット４１０は、デバイスＵＴＭＩ（ＵＳＢ２．０トランシーバ・マクロセル・インターフェース）インターフェースによりホスト制御ユニット４１５に接続される。
【００３１】
ブリッジ４０５は、出願の広い範囲において適用することができ、さらに本実施形態のＵＳＢ２．０サブシステムに制限されなくてもよい。
ブリッジ４０５のメインタスクは、バス・プロトコルを変換することである。
さらに、ブリッジ４０５は、他のプロトコルの１つのポートにあるプロトコルのマルチプルポートをマッピングするアービタ（arbiter）またはデコーダとして役立ち得る。
本実施形態においては、このマルチプルポートは、バーストおよびスプリットオペレーションを備えたパケット化されていないバスポート（non-packetized bus port）であり得る。一方、もう１つのポートは厳密にパケット化されていてもよい。
【００３２】
デバイス制御ユニット４１０は、ＵＳＢホストデバイスに、および（または）ＵＳＢホストデバイスからデータ転送を実行するデバイス機能性をインプリメントするのに使用される。
このデバイス制御ユニット４１０は、多数の双方向のロジカル・エンドポイントをサポートし得る。
【００３３】
ホスト制御ユニット４１５は、１つ以上のＵＳＢ周辺機器に、および（または）１つ以上のＵＳＢ周辺機器からデータ転送を実行するホスト機能性をインプリメントするのに使用される。
以下に記載するように、このホスト制御ユニット４１５は、２つ（またはそれ以上）のＵＳＢポート、１つのＥＨＣ、および１つのＯＨＣコンパニオンコントローラをサポートし得る。
【００３４】
図５には、一実施形態によるホストコントローラ４１５の主要な構成要素が記載される。
一般的に、ホストコントローラ４１５，５００は、３つの主要な構成要素を含んでいる。すなわち、エンハンスト・ホストコントローラ（ＥＨＣ）２２５、１つ以上のコンパニオン・ホストコントローラ２１５、およびポート・ルータ５１５を含んでいる。
【００３５】
エンハンスト・ホストコントローラ２２５はＵＳＢ２．０の高速トラフィックをハンドルする。
本実施形態のコンパニオン・ホストコントローラ・ユニット２１５には、２つのＯＨＣＩ対応ホストコントローラ、ＯＨＣ０  ５０５およびＯＨＣ１  ５１０がある。これらのコントローラはすべてのＵＳＢ１．１対応トラフィックをハンドルし、ＵＳＢを認識しない環境のためのレガシーキーボードエミュレーションを含んでいてもよい。
【００３６】
ポートルータ５１５はそれぞれの持ち主に物理ポートインターフェースを割り当てる。
もしＵＳＢ２．０認識のドライバがシステム上に存在しているならば、それはポートを低速度または全速度のデバイスまたはハブ（ＵＳＢ１．１のトラフィック）のためにコンパニオンホストコントローラ５０５、５１０に割り当てるか、または高速度デバイスまたはハブのためにＥＨＣ２２５に割り当てる。
【００３７】
つまり、図５のＵＳＢ２．０ホストコントローラは、ＥＨＣＩ規格に従い、ＵＳＢ１．１物理デバイスの代わりに、ポートルータブロック５１５とインターフェース接続するために必要な最小限の変更によって既存のＯＨＣＩ  ＵＳＢ１．１ホストコントローラを使用することを可能にしている。
【００３８】
図５のＵＳＢ２．０対応ホストコントローラは、ＥＨＣＩ対応ホストコントローラをサウスブリッジ３１０に統合して実装するためのハードウェアアーキテクチャとして定義することができる。
次にホストコントローラは、ＵＳＢ−２アナログ入力／出力ピンとリンクインターフェースモジュールの間に常駐して、システムメモリへのアップストリームのインターフェースを実現、例えばシステムにノースブリッジが存在すれば、ノースブリッジへのインターフェースを提供する。
【００３９】
図５から分かるように、ポートルータ５１５は、デバイス制御ユニット４１０およびポート・マルチプレックス・コントローラ４２０（これは本実施形態においてＯＴＧコントローラ４２５を含む。）へのさらなるインターフェースを有する。デバイスコントローラへのインターフェースは、前述したＵＴＭＩインターフェースである。
ポート・マルチプレックス・コントローラへのインターフェースは、ホスト／デバイス・スイッチングのための制御インタフェースである。
【００４０】
図４を参照すると、ホスト制御ユニット４１５またはデバイス制御ユニット４１０のいずれかに共有の物理的なポートを割り当てることは、ポート・マルチプレックス・コントローラの本実施形態における基本的な機能であり得る。
【００４１】
その機能性を達成するために、本実施形態のポート・マルチプレックス・コントローラ４２０は、能力レジスタ（capability register）およびマルチプレキシング制御レジスタのようなソフトウェアにアクセス可能なレジスターを含んでいる。
双方のレジスタは、与えられたレジスタのフィールドからデータを読むソフトウェア、およびそのようなフィールドにデータを書き込むことによってアクセス可能となり得る。
しかしながら、少なくともフィールドのうちのいくつかは読み出し専用フィールドであり得ることが注目される。
【００４２】
ポート・マルチプレックス・コントローラ能力レジスタには、ポートがデバイス制御ユニット４１０に割り当てられる場合に、ＵＳＢコントローラデバイスのプルアップ・レジスタがどのようにアクティベートするかを制御するのに使用することができる、自動プルアップ・イネーブル情報（automatic pull-up enable information）を格納するレジスタ・フィールドがあり得る。
この自動プルアップ・イネーブル情報は、ソフトウェアがプルアップをアクティベートする必要があるか、またはＵＳＢポート上の電圧が有効な電圧範囲にあるとすぐにプルアップをアクティベートするかどうかを示してもよい。
【００４３】
過電流ハンドリング（overcurrent handling）に関しての過電流極性および情報を格納するポート・マルチプレックス・コントローラ・能力レジスタには、さらなるレジスタ・フィールドがあり得る。例えば、情報は、あるステータスに報告される過電流がどのように扱われるかを制御するために格納され得る。
さらに、能力レジスタは、ポート電源極性、およびホストコントローラからのポート電源制御情報がどのようにマッピングされるかを制御する処理についての情報を保持する。
【００４４】
ポート・マルチプレックス・コントローラ４２０のマルチプレキシング制御レジスタは、ＵＳＢポート上の電圧が有効な範囲（すなわち４．４Ｖ以上）にあるかどうかを示すレジスタ・フィールドと、プルアップがディスエーブルかアクティベートされるかどうかを示す情報と、もしあればポートがどの制御ユニットに割り当てられるかを示すポート・マルチプレクサ制御情報と、を含み得る。
【００４５】
上述したように、本実施形態においては、ＯＴＧプロトコルサポートは、ポート・マルチプレックス・コントローラ４２０の一部としてインプリメントされる。このことは、コントローラ４１０、４１５をインプリメントするために既存既製のユニットを使用することを可能にする。
さらに、本実施形態のＯＴＧ制御ユニット４２５は、ソフトウェアがＯＴＧ補足書において明記されたＯＴＧステートマシン（OTG state machine）の一部をインプリメントすることを可能にする。
ＵＳＢソフトウェアドライバがＯＴＧステートマシンの一部をインプリメントできるようにするために、ＯＴＧ制御ユニット４２５は、図６により詳述されるステータスおよび制御機能を提供し得る。
【００４６】
図から分かるように、ＯＴＧ制御ユニット４２５は、読込み専用モード、または書き込みアクセスモードにおけるソフトウェアによってアクセス可能な複数のレジスタ６００ないし６２０を有している。
図６に示すように、これらのレジスタは、ＯＴＧステータスレジスタ６００、ＯＴＧ制御レジスタ６０５、ＯＴＧタイマレジスタ６１０、ＯＴＧ割込みレジスタ６１５、およびＯＴＧ割込み可能レジスタ６２０を含んでいる。
【００４７】
まず、読込み専用モードにおけるソフトウェアによってアクセス可能であり得るＯＴＧステータスレジスタ６００について説明する。このレジスタは、複数のレジスタ・フィールドでＯＴＧ制御ユニット４２５のステータス情報を保持する。
【００４８】
第１のＯＴＧステータスレジスタ・フィールドにおいては、タイマ終了情報が格納され得る。この情報は、ＯＴＧタイマが終了した場合、ビットがセットされるようにハードウェアによって制御することができる。
タイマが現在カウント中である場合、または停止状態にある場合、ビットは、ディアサートされ得る。
【００４９】
さらなるレジスタ・フィールドにおいては、ＯＴＧステータスレジスタ６００は、ホスト制御ユニット４１５に割り当てられた、またはデバイス制御ユニット４１０に割り当てられたポートが、サスペンドされたか、またはそれぞれの制御ユニットによってサスペンドされることになっているかどうかを示す、ポート・サスペンション情報を保持し得る。
より詳細には、ポートがホストに割り当てられる場合、それぞれのコントローラがポートをサスペンドしたときにこのポート・サスペンション・フィールドビットはセットされ得る。
【００５０】
ＯＴＧステータスレジスタ６００の他のレジスタ・フィールドは、ホスト制御ユニット４１５またはデバイス制御ユニット４１０へのポートの割り当てを示す、ポート結合情報を保持し得る。
より詳細には、ポートがホストに接続される場合、適切なホストコントローラがリモートデバイスへの接続を確立したときにレジスタ・フィールドビットがセットされる。
ポートがデバイスに割り当てられる場合、デバイスコントローラがリモートホストから連絡を受けたときにビットがセットされる。
【００５１】
このレジスタ・フィールドは読込み専用モードのみのソフトウェアによってアクセス可能であるが、ポート接続レジスタ・フィールドビットは、ソフトウェアによっていつでも上書きされ得ることに注意すべきである。
これを達成するために、ＯＴＧ制御レジスタ６０５は、ＯＴＧステータスレジスタのポート接続レジスタ・フィールドの値に上書きするのに使用することができる(書き込み可能)レジスタ・フィールドを含み得る。このことは、以下により詳細に記載される。
【００５２】
ＯＴＧステータスレジスタ６００には、ＯＴＧ制御ユニット４２５に関するステータス情報を提供すべく、さらなるレジスタ・フィールドがあり得る。
例えばＦＳ（フルスピード）出力イネーブル情報、ポート・スピード情報、およびある回線ステータスまたは電圧値が達したかどうかを示す情報を格納するレジスタ・フィールドがあり得る。
【００５３】
次に、ＯＴＧ制御ユニット４２５の処理を制御する制御情報を保持するＯＴＧ制御レジスタ６０５は、また、複数のレジスタ・フィールドを有し得る。
例えば、タイマ計算条件情報および電源がポートに供給されるか否か、ポートに所定の制御ユニットが割り当てられるか否か、または自動的にまたはソフトウェアがプルアップをイネーブルにしたかどうかに関する制御情報を保持するレジスタ・フィールドがあり得る。
【００５４】
ＯＴＧ技術のハードウェア実装およびソフトウェア制御の双方を促進するために、ＯＴＧ制御レジスタ６０５のレジスタ・フィールドのうちのいくつかは、上述したポート・マルチプレックス・コントローラ・レジスタからエイリアスされ得る。
【００５５】
ＯＴＧ制御レジスタ６０５は、書き込みポート接続情報を保持する書き込みポート接続レジスタ・フィールドをさらに含み得る。
上述したように、このレジスタ・フィールドは、ＯＴＧステータスレジスタ６００のポート接続レジスタ・フィールドの値をオーバーライドするのに使用することができる。
すなわち、ソフトウェアは、ＯＴＧステータスレジスタ６００のそれぞれのレジスタ・フィールドビットをアサートまたはディアサートすべく、ＯＴＧ制御レジスタ６０５の書き込みポート接続レジスタ・フィールドに書き込みことができる。
この機能性は、たとえＯＴＧステータスレジスタ６００が読み取り専用レジスタであっても、ソフトウェアによってポート接続ステータスを変更することを可能にする。
【００５６】
より詳細には、ポートがホストに割り当てられる場合、その後、ポートがＥＨＣによって所有され、無事にＨＳ（高速）処理に移行している場合、ポート接続ステータス・レジスタ・フィールドビットは、アサートされる。
さらに、ポートがホストに割り当てられる場合、ＯＨＣが接続を検知してすぐに、ステータスレジスタ・ビットがアサートされる。
ポートがデバイスに割り当てられる場合、ＵＳＢ上のダウンストリームのアクティビティが検知される場合、ステータスレジスタ・ビットがアサートされる。
ポートがホストに割り当てられる場合、ポートがＥＨＣによって所有され、切断（disconnect）を検知してすぐに、ステータスレジスタ・ビットがディアサートされる。同様に、ＯＨＣが切断を検知してすぐに、ビットはディアサートされる。
さらに、ＵＳＢポートの電圧が０．８Ｖ未満に落ちる場合は常に、ビットはディアサートされ得る。この機能性はすべてハードウェア制御下で達成することができる。
【００５７】
ＯＴＧ制御レジスタ６０５の書き込みポート接続レジスタ・フィールドは、ソフトウェアによってステータスビットを変更する可能性を追加する。
このことは、ソフトウェアドライバがＵＳＢ制御デバイスに特定のポート接続状態を入力させることを可能にして、ＯＴＧ制御機能性に柔軟性を加える。  
【００５８】
図６に戻ると、ＯＴＧ制御ユニット４２５はさらなるレジスタを含み得る。
例えば、ＯＴＧタイマレジスタ６１０は、現在のタイマー値（読み出し専用であり得る）およびカウントダウンについてプリロードするプリロード値を格納するレジスタ・フィールドを有し得る。
ＯＴＧ割込みレジスタ６１５は、タイマは終了したか否か、ポートサスペンションまたは接続が変更したか否か、レシーバ・アクティビティが検知されるか否か、ポート・スピードが変化したか否か、ＨＳ切断が検知されるか否か、回線状態が変更したか否か、または所定の電圧範囲となっているか否か、を示す情報をそのフィールドに格納し得る。
ＯＴＧ割込み可能レジスタ６２０は、広域の割り込みメカニズムがイネーブルか否か、または、ＯＴＧ割込みレジスタ６１５に格納された情報についての割り込みがイネーブルか否か、を示す割込みイネーブル情報をそのレジスターフィールドに格納し得る。
【００５９】
上述した様々な実施形態の説明においては、ＵＳＢコントローラ・デバイス技術は、部分的にはハードウェア、および部分的にはソフトウェア中にインプリメントすることができる状態マシンによってコンポーネントを制御することができる方法でＯＴＧ機能性をインプリメントするように提供される。
この目的のために、制御およびステータス情報は、ソフトウェア・ドライバを実行するプロセッサと、ＯＴＧステータスおよび制御レジスタ６００，６０６（および任意の他のＯＴＧレジスタ）によるＯＴＧ制御ユニット４２５との間で渡されてもよい。
制御レジスタビットは、内部および外部スイッチを制御し、またステータスレジスタ・ビットは、ＯＴＧ制御ユニット４２５からの関連する信号のステータスを示す。
【００６０】
ある実施形態においては、ＯＴＧ制御レジスタ６０５は２つのアドレスを有している。一方のアドレスへの書き込みは選択されたビットをセットする一方、他方のアドレスへの書き込みはその選択されたビットをクリアする。
このスキームは、ＵＳＢコントローラ・デバイスの他のコンポーネントと最大の互換性を提供する。
【００６１】
例えば、構成は、デバイス機能性そのもの等を提供するように、不変なポート割り当てを有するように選択することができる。
この場合、ＢＩＯＳ（基本入出力システム）は、コンピュータシステムがブートする時にしたがって、ポート・マルチプレクサをセットする。レジスタ内容はその後、システムが立上がっている限り、変更されない。
しかしながら、ＯＴＧ機能性が使用される他の構成が選択される場合、ＵＳＢポートは、デバイス・ポートまたはユーザのリクエストによりホスト・ポートの役割を果たし、これはいつでも変更することができる。その後、ＯＴＧドライバはポート・マルチプレクサの役に立つ。
したがって、レジスタ・エイリアシングは、これらもまたそのレジスタレベルでＢＩＯＳアクセスおよびＯＴＧドライバアクセスを分離することを可能にする。
このことは、ＢＩＯＳがＯＴＧドライバに関する知識なしで動作することを可能にする。
【００６２】
ある実施形態の一例においては、ＵＳＢコントローラ・デバイスは、以下のＵＳＢ構成を維持することができる。すなわち、（ｉ）少なくとも１つのホスト・ポートおよび１つの周辺機器ポート、（ｉｉ）２つ以上のホスト・ポート、および（ｉｉｉ）１つのデュアルロール・デバイス・ポートおよび少なくとも１つのさらなるホスト・ポート、である。
デュアルロール・デバイス・ポートはまた、ＳＲＰの有能な周辺機器ポートとして使用することができる。
１つのデュアルロールデバイス・ポートに加えて１つの専用ＵＳＢホスト・ポートを有する本実施形態のＵＳＢコントローラ・デバイスを形成する場合、ソフトウェア・ドライバはホストコントローラ状態マシンと分離しているＯＴＧ状態マシンを維持することができる。
【００６３】
上述したように、部分的にはハードウェア、そして部分的にはソフトウェア中にＯＴＧ状態マシンをインプリメントする実施形態が提供される。
このことは、ハードウェア中のいくつかのステータスおよびソフトウェア中の他のステータスのインプリメントにより達成されてもよい。
例えば、デュアルロールデバイス状態マシンを例にとると、ソフトウェア・ドライバは、a_suspend、a_peripheralおよびb_wait_acon状態を除いた状態をすべてインプリメントすることができる。その後、これらの３つの状態をハードウェア中にインプリメントし得る。
さらに、ＯＴＧ状態マシンは、ソフトウェア中のＯＴＧ状態マシンによって明示された状態トランジションのすべてではなくいくつかをインプリメントすることによって、部分的にはハードウェア、および部分的にはソフトウェア中にインプリメントすることができる。
【００６４】
図７を参照すると、ソフトウェア管理状態トランジションがどのように起こり得るかを示すフローチャートが提供される。
ステップ７００において、ＯＴＧ制御ユニット４２５は、ソフトウェア状態マシンにその状態を変更することを要求し得るイベントを検知する。
その後ＯＴＧ制御ユニット４２５は、ＯＴＧステータスレジスタ６００中の各ステータス情報を保存し（ステップ７０５）、プロセッサへの割り込みをかける（ステップ７１０）。
この割り込みに応じて、ＵＳＢソフトウェア・ドライバは、ステータスレジスタを読み込み（ステップ７１５）、現在状況およびステータスレジスタ内容に基づき適切な状態変更を行い（ステップ７２０）、そしてスイッチの設定を変更するために、すなわちＯＴＧハードウェアに適切な変更を加えるために、ＯＴＧ制御レジスタ６０５に書き込む（ステップ７２５）。
【００６５】
本発明は、これにしたがって構築された物理的な実施形態に関して記載されているが、本発明の趣旨および範囲から逸脱することなく、上記の内容に照らして、および添付の請求項の範囲内において、本発明の様々な変更、変形および改善がなされることは当業者に明白である。さらに、当業者に周知であると考えられる領域は、ここに記載された発明を不必要に不明瞭にしないようにここには記載されない。したがって、特定の実施形態の一例によってのみに、本発明は制限されず、しかしながら添付の請求の範囲のみによって制限されることになっていることが理解される。
【産業上の利用可能性】
【００６６】
この発明は一般的に、ＵＳＢ（Universal Serial Bus）コントローラデバイスおよび方法に適用することができる。
【図面の簡単な説明】
【００６７】
【図１】ＵＳＢ２．０対応のシステムの一例を示す図。
【図２】図１のシステムにおけるハードウェアおよびソフトウェア・コンポーネントの層を示す図。
【図３】一般的なマザーボードのレイアウトを示す図。
【図４】一実施形態による、ＯＴＧ機能性を有するＵＳＢコントローラー・デバイスのコンポーネントを示すブロック図。
【図５】一実施形態による、図４の配置の一部であるホストコントローラのコンポーネントを示すブロック図。
【図６】一実施形態による、ＯＴＧコントローラを示す図。
【図７】本実施形態によってどのようにソフトウェア管理状態トランジションを達成することができるかを示すフローチャート。
【図１】
2008522325.tif 000003
【図２】
2008522325.tif 000004
【図３】
2008522325.tif 000005
【図４】
2008522325.tif 000006
【図５】
2008522325.tif 000007
【図６】
2008522325.tif 000008
【図７】
2008522325.tif 000009
【手続補正書】
【提出日】平成18年11月30日(2006.11.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つのＵＳＢ周辺機器に、および（または）少なくとも１つのＵＳＢ周辺機器からデータ転送を実行するホスト機能性をインプリメントするのに適した、ＥＨＣＩ（Enhanced Host Controller Interface）対応ホストコントローラを有する、ホスト制御ユニットと、
前記ホスト制御ユニットの動作を制御するＯＴＧ状態マシンをインプリメントするのに適した、ＯＴＧ制御ユニットと、を有しており、
前記ＯＴＧ制御ユニットは、部分的にはハードウェア、および部分的にはソフトウェア中に前記ＯＴＧ状態マシンをインプリメントするようになっており、前記ＯＴＧ制御ユニットの動作を制御する制御情報を保持し、ソフトウェアによりアクセス可能であるＯＴＧ制御レジスタを含んでおり、
前記ＯＴＧ制御レジスタは、２つのアドレスの一方に書き込むことによってアドレス可能であり、前記２つのアドレスのうち一方のアドレスへの書き込みは制御情報をセットする一方、前記２つのアドレスのうち他方のアドレスへの書き込みは前記制御情報をクリアする、
ＯＴＧ（On-The-Go）の機能性を有するＵＳＢ（Universal Serial Bus）（ユニバーサルシリアルバス）コントローラデバイス。
【請求項２】
前記ＯＴＧ制御レジスタは、ソフトウェアによって書き込み可能である、請求項１記載のＵＳＢコントローラデバイス。
【請求項３】
前記ＯＴＧ制御ユニットは、前記制御情報の変化に応じてハードウェアスイッチの状態を変化させるようになっている、請求項１記載のＵＳＢコントローラデバイス。
【請求項４】
少なくとも１つのＵＳＢ周辺機器に、および（または）少なくとも１つのＵＳＢ周辺機器からデータ転送を実行するホスト機能性をインプリメントするのに適した、ＥＨＣＩ（Enhanced Host Controller Interface）対応ホストコントローラを有する、ホスト制御ユニットと、
前記ホスト制御ユニットの動作を制御するようになっているＯＴＧ制御ユニットと、を有しており、
前記ＯＴＧ制御ユニットは、前記ＯＴＧ制御ユニットの動作を制御する制御情報を保持するＯＴＧ制御レジスタと、前記ＯＴＧ制御ユニットのステータス情報を保持するＯＴＧステータスレジスタと、を含む、
ＯＴＧ（On-The-Go）の機能性を有するＵＳＢ（Universal Serial Bus）（ユニバーサルシリアルバス）コントローラデバイス。
【請求項５】
前記ＯＴＧ制御レジスタは、タイマ計算条件情報を保持するレジスタ・フィールドを含む、請求項４記載のＵＳＢコントローラデバイス。
【請求項６】
前記ＯＴＧ制御レジスタは、ＯＴＧポート接続ステータスを変化させるように、ソフトウェアによって書き込み可能である書き込みポート接続情報を保持するレジスタ・フィールドを含んでいる、請求項４記載のＵＳＢコントローラデバイス。
【請求項７】
ソフトウェアが前記書き込みポート接続情報レジスタ・フィールドに書き込まない限り、前記ＯＴＧポート接続ステータスはハードウェア制御下にある、請求項６記載のＵＳＢコントローラデバイス。
【請求項８】
双方ともソフトウェアドライバによってアクセス可能である、２つのアドレスのうちの一方に書き込むことによってアドレス可能なＯＴＧ制御レジスタと、ＯＴＧステータスレジスタと、を有するＵＳＢ（Universal Serial Bus）（ユニバーサルシリアルバス）コントローラデバイス中にＯＴＧ（On-The-Go）の機能性を提供する方法であって、
前記ＵＳＢコントローラ・デバイスからの割り込みの受信に応じて、前記ＯＴＧステータスレジスタを前記ソフトウェアドライバによって読み込み、
前記ＵＳＢコントローラ・デバイスにそのＯＴＧ状態を変更させるように、前記ソフトウェアドライバによって前記ＯＴＧ制御レジスタに書き込む、
方法。
【国際調査報告】
2008522325.tif 000010
2008522325.tif 000011
2008522325.tif 000012