(57)【要約】【課題】複数のＵＳＢデバイスをオンチップしたとき必要なＵＳＢインタフェース制御のための回路規模を縮小することができるデータプロセッサを提供する。【解決手段】外部のＵＳＢホスト（１１）に接続されるＵＳＢインタフェース回路（６）を有するデータプロセッサ（１）において、前記ＵＳＢインタフェース回路は、ＣＰＵ（２）と所定の回路モジュールとを用いて実現される複数のＵＳＢデバイス毎にその属性を定義する情報を保有するためのデバイス制御レジスタ部（３０〜３３）を有し、ＵＳＢホストから入力されるパケットの情報に基づいて前記デバイス制御レジスタ部の中から一つのＵＳＢデバイスに対応する属性情報を選択し、選択した属性情報を用いて前記パケットの指示に応答するインタフェース制御を行い、これに用いるエンドポイントが割り当てられる通信バッファメモリを前記複数のＵＳＢデバイスで共有する。【選択図】図１
2011248822.tif 000002
【特許請求の範囲】
【請求項１】
命令を実行するＣＰＵと前記ＣＰＵの制御を受ける複数の回路モジュールとを有するデータプロセッサであって、
前記回路モジュールの一つとして前記データプロセッサの外部のＵＳＢホストに接続されるＵＳＢインタフェース回路を有し、
前記ＵＳＢインタフェース回路は、複数のＵＳＢデバイスの夫々のディスクリプタ情報と前記ＵＳＢホストによって設定されるコンフィギュレーション情報とを前記ＵＳＢデバイス毎に保有するためのデバイス制御レジスタ部と、
前記ＵＳＢデバイスと前記ＵＳＢホストとの間の通信に用いるために前記複数のＵＳＢデバイスに共有される通信バッファメモリと、
前記ＵＳＢホストから入力されるパケットの情報に基づいて前記デバイス制御レジスタ部の中から一つのＵＳＢデバイスに対応するディスクリプタ情報を選択し、選択したディスクリプタ情報を用いて前記パケットによる指示に応答するインタフェース制御を行うインタフェース制御回路と、を有するデータプロセッサ。
【請求項２】
前記インタフェース制御回路は、前記選択したディスクリプタ情報に従って前記通信バッファメモリの利用形態を決定する、請求項１記載のデータプロセッサ。
【請求項３】
物理接続トポロジにおいて前記複数のＵＳＢデバイスは、前記ＵＳＢインタフェース回路が備え前記ＵＳＢホストに接続する仮想ハブデバイスと、前記仮想ハブデバイスに接続し前記ＣＰＵと所定の回路モジュールとを用いて実現される複数のファンクションデバイスとである、請求項２記載のデータプロセッサ。
【請求項４】
前記デバイス制御レジスタ部は、仮想ハブデバイスのディスクリプタ情報として、前記仮想ハブデバイスに前記複数個のファンクションデバイスが接続されることを示す接続トポロジ情報、及びエンドポイント毎に割り当てられる前記通信バッファメモリ上のアドレスエリア情報を有し、
前記コンフィギュレーション情報としてＵＳＢホストによって割り当てられるＵＳＢデバイスアドレスを有する、請求項３記載のデータプロセッサ。
【請求項５】
前記デバイス制御レジスタ部は、ファンクションデバイスのディスクリプタ情報として、エンドポイント毎に割り当てられる前記通信バッファメモリ上のアドレスエリア情報を有し、
前記コンフィギュレーション情報としてＵＳＢホストによって割り当てられるＵＳＢデバイスアドレスを有する、請求項４記載のデータプロセッサ。
【請求項６】
前記ＣＰＵはパワーオンリセットの解除に応答して前記デバイス制御レジスタ部に対するディスクリプタ情報の初期設定を行う、請求項５記載のデータプロセッサ。
【請求項７】
前記インタフェース制御回路は、前記デバイス制御レジスタ部がディスクリプタ情報として保有するアドレスエリア情報で指定されるメモリ領域をＦＩＦＯバッファとして用いるためのＦＩＦＯアドレス制御ポインタを有し、前記デバイス制御レジスタ部から選択するディスクリプタ情報を切換えるとき前記ＦＩＦＯアドレス制御ポインタを初期化する、請求項６記載のデータプロセッサ。
【請求項８】
前記インタフェース制御回路は、パケットに含まれるパケット識別子がＵＳＢデバイスに対するセットアップを示すトークンパケットである場合には、当該パケットに含まれるＵＳＢデバイスアドレスに基づいて前記デバイス制御レジスタ部から仮想ハブデバイスのディスクリプタ情報を選択し、選択されたディスクリプタ情報に基づいて定義されるＦＩＦＯバッファを用いてＵＳＢホストにＵＳＢデバイス毎のディスクリプタ情報を与え、ＵＳＢホストからＵＳＢデバイス毎のコンフィギュレーション情報を受け取るインタフェース制御を行う、請求項７記載のデータプロセッサ。
【請求項９】
前記インタフェース制御回路は、パケットに含まれるパケット識別子がＵＳＢホストへのデータ転送を示すトークンパケットである場合には、当該パケットに含まれるＵＳＢデバイスアドレスに基づいて前記デバイス制御レジスタ部から対応するファンクションデバイスのディスクリプタ情報を選択し、選択されたディスクリプタ情報に基づいて定義されるＦＩＦＯバッファを用いてファンクションデバイスから前記ＵＳＢホストへデータを転送する制御を行う、請求項７記載のデータプロセッサ。
【請求項１０】
前記インタフェース制御回路は、パケットに含まれるパケット識別子がファンクションデバイスへのデータ転送を示すトークンパケットである場合には、当該パケットに含まれるＵＳＢデバイスアドレスに基づいて前記デバイス制御レジスタ部から対応するファンクションデバイスのディスクリプタ情報を選択し、選択されたディスクリプタ情報に基づいて定義されるＦＩＦＯバッファを用いてＵＳＢホストからファンクションデバイスへデータを転送する制御を行う、請求項７記載のデータプロセッサ。
【請求項１１】
前記ファンクションデバイスの一つはＣＰＵインタフェースレジスタである、請求項１０記載のデータプロセッサ。
【請求項１２】
前記ファンクションデバイスの一つはＣＰＵがデバッグモニタを実行して得られるデバッグ支援環境としてのデバッグ支援デバイスである、請求項１０記載のデータプロセッサ。
【請求項１３】
前記回路モジュールとして、前記ＣＰＵのワーク領域として利用されるＲＡＭ、及び前記ＣＰＵの制御を受けるその他の周辺回路をさらに有し、１個の半導体基板に形成された、請求項１０記載のデータプロセッサ。
【請求項１４】
命令を実行するＣＰＵと前記ＣＰＵの制御を受ける複数の回路モジュールとを有するデータプロセッサであって、
前記回路モジュールの一つとして前記データプロセッサの外部のＵＳＢホストに接続されるＵＳＢインタフェース回路を有し、
前記ＵＳＢインタフェース回路は、複数のＵＳＢデバイスの夫々のディスクリプタ情報と前記ＵＳＢホストによって設定されるコンフィギュレーション情報とをＵＳＢデバイス毎に保有するためのデバイス制御レジスタ部と、
前記ＵＳＢデバイスと前記ＵＳＢホストとの間の通信に用いるために前記複数のＵＳＢデバイスに共有される通信バッファメモリと、
前記ＵＳＢホストから入力されるパケットの情報に基づいて前記デバイス制御レジスタ部から一つのＵＳＢデバイスに対応するディスクリプタ情報を選択し、選択したディスクリプタ情報に従って前記通信バッファメモリを初期化してこれに割り当てるエンドポイントのアドレスマッピングを決定するインタフェース制御回路とを有する、データプロセッサ。
【請求項１５】
前記インタフェース制御回路は、前記アドレスマッピングを決定したエンドポイント毎にＦＩＦＯバッファを構成するためのＦＩＦＯアドレス制御ポインタを有し、前記デバイス制御レジスタ部から選択するディスクリプタ情報を切換えるとき前記ＦＩＦＯアドレス制御ポインタを初期化する、請求項１４記載のデータプロセッサ。
【請求項１６】
ＣＰＵと、外部のＵＳＢホストに接続され前記ＣＰＵによって制御されるＵＳＢインタフェース回路とを有するデータプロセッサであって、
前記ＵＳＢインタフェース回路は、複数のＵＳＢデバイスの夫々の属性を定義する情報を前記ＵＳＢデバイス毎に保有するためのデバイス制御レジスタ部と、
ＵＳＢホストから入力されるパケットの情報に基づいて前記デバイス制御レジスタ部から一つのＵＳＢデバイスに対応する属性情報を選択し、選択した属性情報を用いて前記パケットの指示に応答するインタフェース制御を行うインタフェース制御回路と、
前記インタフェース制御に用いるエンドポイントが割り当てられ前記複数のＵＳＢデバイスが共有するバッファメモリとを有する、データプロセッサ。
【請求項１７】
前記インタフェース制御回路は、前記インタフェース制御用に割り当てられたエンドポイント毎にＦＩＦＯバッファを構成するためのＦＩＦＯアドレス制御ポインタを有し、前記デバイス制御レジスタ部から選択する属性情報を切換えるとき前記ＦＩＦＯアドレス制御ポインタを初期化する、請求項１６記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データプロセッサの内部に構成されるＵＳＢ（Universal Serial Bus）デバイスを外部のＵＳＢホストにインタフェースするためのＵＳＢインタフェース技術に関し、例えばデータプロセッサにオンチップされたＵＳＢデバイスのシステムデバッグに利用して有効な技術に関する。
【背景技術】
【０００２】
ＣＰＵを有するデータプロセッサにオンチップされたＵＳＢデバイスをシステムデバッグする場合に、デバッグを支援するためのデバッグモニタをデータプロセッサが搭載して前記ＣＰＵで実行可能なデバッグ支援環境を用いるには、ＵＳＢデバイスそれ自体はシステムデバッグの性質上データプロセッサの外部でＵＳＢホストに相当する機器に接続されて動作されることが必要であり、さらに、データプロセッサは評価用ホスト機器に接続されてデバッグモニタの実行を制御することが必要になる。要するに、ＵＳＢデバイスをシステムデバッグするためにＵＳＢデバイス本来のＵＳＢインタフェースの他にデバッグ支援のためのデバッグインタフェースが必要である。デバッグインタフェース回路にＵＳＢインタフェースを用いようとする場合にはデバッグモニタに関しても一つのＵＳＢデバイスを構成し、さらに、複数個のＵＳＢデバイスを結合してＵＳＢホストに接続するためのハブ（hub）デバイスも必要になる。ハブデバイスンの代わりに特許文献１に記載のＵＳＢコンポジット通信装置を用いることも可能である。
【０００３】
このＵＳＢコンポジット通信装置は接続されるＵＳＢデバイスの数が増えることによって増大するＵＳＢホストの負担を軽減することを目的とするものであり、ＵＳＢコントローラと複数のＵＳＢデバイスの間に配置され、通信用のバッファであるエンドポイントを識別するエンドポイント情報をそれぞれのＵＳＢデバイスから取得してユニークなエンドポイント情報を生成し、この生成したユニークなエンドポイント情報とＵＳＢデバイスから取得したエンドポイント情報とを関連付けて管理テーブルに記憶し、前記取得したエンドポイント情報を用いて前記ＵＳＢデバイスと通信し、前記取得したエンドポイント情報に対応するユニークなエンドポイント情報を使用して前記コントローラと通信を行うようにするものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１２３４１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＵＳＢハブを用いる場合にはハブデバイス及びファンクションデバイスとしてのＵＳＢデバイスのそれぞれがエンドポイントを構成するためのＦＩＦＯバッファのようなバッファメモリを個別に備えなければならず、それらのために確保すべきメモリ領域が大きくなってしまう。ＵＳＢコンポジット通信装置を用いる場合にもエンドポイントを構成するためのＦＩＦＯバッファのようなバッファメモリをＵＳＢデバイス毎に個別に備えなければならない事情は同じである。また、ハブデバイスが不要になる分だけハブデバイスのエンドポインタは不要になってもエンドポイントの管理テーブルが増えることによって削減できるメモリ領域は減らない。
【０００６】
特に、ＵＳＢデバイスがデータプロセッサにオンチップされて構成され、そのデバイスの数が固定化されるという事情を考慮したとき、そのような数や機能があらかじめ決まっている複数個のＵＳＢデバイスのためのＵＳＢインタフェース回路をＵＳＢデバイス毎に個別に設けること自体も物理的な回路規模の増大を招く一因になることが本発明者によって明らかにされた。
【０００７】
本発明の目的は、複数のＵＳＢデバイスをオンチップしたとき必要なＵＳＢインタフェース制御のための回路規模を縮小することができるデータプロセッサを提供することにある。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
すなわち、外部のＵＳＢホストに接続されるＵＳＢインタフェース回路を有するデータプロセッサにおいて、前記ＵＳＢインタフェース回路は、前記ＣＰＵと所定の回路モジュールとを用いて実現される複数のＵＳＢデバイス毎にその属性を定義する情報を保有するためのデバイス制御レジスタ部を有し、ＵＳＢホストから入力されるパケットの情報に基づいて前記デバイス制御レジスタ部の中から一つのＵＳＢデバイスに対応する属性情報を選択し、選択した属性情報を用いて前記パケットの指示に応答するインタフェース制御を行い、これに用いるエンドポイントが割り当てられる通信バッファメモリを前記複数のＵＳＢデバイスで共有する。
【００１１】
デバイス制御レジスタ部から選択する属性情報の選択を切り換えるから、切換えて選択される情報を用いてインタフェース制御を行う回路を複数のＵＳＢデバイスのそれぞれに対応して個別に持つことを要せず複数のＵＳＢデバイス間で共用することができる。また、通信バッファメモリも前記複数のＵＳＢデバイスで共有されるからＵＳＢデバイス毎に固有の記憶領域を割り当てることも要しない。
【発明の効果】
【００１２】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１３】
すなわち、複数のＵＳＢデバイスをオンチップしたとき必要なＵＳＢインタフェース制御のための回路規模を縮小することができる。
【図面の簡単な説明】
【００１４】
【図１】図１はＵＳＢインタフェース回路の詳細な一例を示すブロック図である。
【図２】図２は本発明の一実施の形態に係るデータプロセッサのブロック図である。
【図３】図３は図１のＵＳＢインタフェース回路の仮想ハブデバイスとファンクションデバイスの物理接続トポロジを例示する説明図である。
【図４】図４は図１のＵＳＢインタフェース回路におけるＦＩＦＯバッファの共有の様子を示す概念図である。
【図５】図５はハブデバイスとファンクションデバイスが個別にＵＳＢインタフェースを備える場合の物理接続トポロジを示す比較例の説明図である。
【図６】図６はＵＳＢホストからのパケットによってＵＳＢデバイスアドレス２が指定されている場合の仮想パイプ生成機能を例示する概念図である。
【図７】図７はＵＳＢホストからのパケットによってＵＳＢデバイスアドレス３が指定されている場合の仮想パイプ生成機能を例示する概念図である。
【発明を実施するための形態】
【００１５】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１６】
〔１〕＜デバイスアドレスに応ずる属性情報の選択＞
本発明の代表的な実施の形態に係るデータプロセッサ（１）は、命令を実行するＣＰＵ（２）と前記ＣＰＵの制御を受ける複数の回路モジュールとを有し、前記回路モジュールの一つとして前記データプロセッサの外部のＵＳＢホスト（１１）に接続されるＵＳＢインタフェース回路（６）を有する。前記ＵＳＢインタフェース回路は、複数のＵＳＢデバイスの夫々のディスクリプタ情報と前記ＵＳＢホストによって設定されるコンフィギュレーション情報とを前記ＵＳＢデバイス毎に保有するためのデバイス制御レジスタ部（３０〜３３）と、前記ＵＳＢデバイスと前記ＵＳＢホストとの間の通信に用いるために前記複数のＵＳＢデバイスに共有される通信バッファメモリ（５０）と、インタフェース制御回路（４１〜４５）とを有する。インタフェース制御回路は、前記ＵＳＢホストから入力されるパケットの情報に基づいて前記デバイス制御レジスタ部の中から一つのＵＳＢデバイスに対応するディスクリプタ情報を選択し、選択したディスクリプタ情報を用いて前記パケットによる指示に応答するインタフェース制御を行う。
【００１７】
デバイス制御レジスタ部から選択するディスクリプタ情報の選択を切り換えるから、切換えて選択される情報を用いてインタフェース制御を行う回路を複数のＵＳＢデバイスのそれぞれに対応して個別に持つことを要せず複数のＵＳＢデバイス間で共用することができ、この点で、複数のＵＳＢデバイスをオンチップしたとき必要なＵＳＢインタフェース制御のための回路規模を縮小することができる。
【００１８】
〔２〕＜通信バッファメモリの利用形態＞
項１のデータプロセッサにおいて、前記インタフェース制御回路は、前記選択したディスクリプタ情報に従って前記通信バッファメモリの利用形態を決定する。
【００１９】
複数のＵＳＢデバイスが共有する通信バッファメモリをどのＵＳＢデバイスがどのような形態で使用するかの制御が容易化になる。
【００２０】
〔３〕＜仮想ハブデバイス経由＞
項１又は２のデータプロセッサにおける物理接続トポロジにおいて前記複数のＵＳＢデバイスは、前記ＵＳＢインタフェース回路が備え前記ＵＳＢホストに接続する仮想ハブデバイス（２１）と、前記仮想ハブデバイスに接続し前記ＣＰＵと所定の回路モジュールとを用いて実現される複数のファンクションデバイス（２２，２３）とである。
【００２１】
上記物理接続トポロジの採用により、ＵＳＢホストはＵＳＢ規格に準拠した手順でデバイスの接続及びデータ転送の通信制御が可能になる。
【００２２】
〔４〕＜仮想ハブデバイスのディスクリプタ情報＞
項３のデータプロセッサにおいて、前記デバイス制御レジスタ部は、仮想ハブデバイスのディスクリプタ情報として、前記仮想ハブデバイスに前記複数個のファンクションデバイスが接続されることを示す接続トポロジ情報、及びエンドポイント毎に割り当てられる前記通信バッファメモリ上のアドレスエリア情報を有する。前記コンフィギュレーション情報としてＵＳＢホストによって割り当てられるＵＳＢデバイスアドレスを有する。
【００２３】
デバイス制御レジスタが保有する情報の点において、ＵＳＢホストはＵＳＢ規格に準拠した手順によるデバイスの接続及びデータ転送の通信制御が容易になる。
【００２４】
〔５〕＜ファンクションデバイスのディスクリプタ情報＞
項４のデータプロセッサにおいて、前記デバイス制御レジスタ部は、ファンクションデバイスのディスクリプタ情報として、エンドポイント毎に割り当てられる前記通信バッファメモリ上のアドレスエリア情報を有する。前記コンフィギュレーション情報としてＵＳＢホストによって割り当てられるＵＳＢデバイスアドレスを有する。
【００２５】
デバイス制御レジスタが保有する情報の点において、ＵＳＢホストはＵＳＢ規格に準拠した手順によるデバイスの接続及びデータ転送の通信制御が容易になる。
【００２６】
〔６〕＜ＣＰＵによるディスクリプタ情報の初期設定＞
項４又は５のデータプロセッサにおいて、前記ＣＰＵはパワーオンリセットの解除に応答して前記デバイス制御レジスタ部に対するディスクリプタ情報の初期設定を行う。
【００２７】
これにより、ＣＰＵの動作プログラムを用いてディスクリプタ情報の初期設定を容易に行うことができる。
【００２８】
〔７〕＜ＦＩＦＯアドレス制御ポインタ＞
項４乃至６のいずれかの前記インタフェース制御回路は、前記デバイス制御レジスタ部がディスクリプタ情報として保有するアドレスエリア情報で指定されるメモリ領域をＦＩＦＯバッファとして用いるためのＦＩＦＯアドレス制御ポインタ（ＡＰＩＮＴ＃１〜ＡＰＩＮＴ＃３）を有し、前記デバイス制御レジスタ部から選択するディスクリプタ情報を切換えるとき前記ＦＩＦＯアドレス制御ポインタを初期化する。
【００２９】
ＦＩＦＯアドレス制御ポインタの初期化により、デバイス制御レジスタ部から選択するディスクリプタ情報の切換えに伴うエンドポイントの初期化が容易になる。
【００３０】
〔８〕＜仮想ハブに対するエンドポイントへのトークンパケットの場合の制御＞
項７のデータプロセッサにおいて、前記インタフェース制御回路は、パケットに含まれるパケット識別子（ＰＩＤ）がＵＳＢデバイスに対するセットアップを示すトークンパケットである場合には、当該パケットに含まれるＵＳＢデバイスアドレスに基づいて前記デバイス制御レジスタ部から仮想ハブデバイスのディスクリプタ情報を選択し、選択されたディスクリプタ情報に基づいて定義されるＦＩＦＯバッファを用いて、ＵＳＢホストにＵＳＢデバイス毎のディスクリプタ情報を与え、ＵＳＢホストからＵＳＢデバイス毎のコンフィギュレーション情報を受け取るインタフェース制御を行う。
【００３１】
ＵＳＢホストはＵＳＢ規格に準拠した手順によりＵＳＢデバイスのセットアップを容易に行うことができる。
【００３２】
〔９〕＜ＵＳＢホストへのデータ転送制御＞
項７のデータプロセッサにおいて、前記インタフェース制御回路は、パケットに含まれるパケット識別子がＵＳＢホストへのデータ転送を示すトークンパケットである場合には、当該パケットに含まれるＵＳＢデバイスアドレスに基づいて前記デバイス制御レジスタ部から対応するファンクションデバイスのディスクリプタ情報を選択し、選択されたディスクリプタ情報に基づいて定義されるＦＩＦＯバッファを用いてファンクションデバイスから前記ＵＳＢホストへデータを転送する制御を行う。
【００３３】
ＵＳＢホストはＵＳＢ規格に準拠した手順によりファンクションデバイスから前記ＵＳＢホストへデータパケットのデータをインタフェースする制御を容易に行うことができる。
【００３４】
〔１０〕＜ファンクションデバイスへのデータ転送制御＞
項７のデータプロセッサにおいて、前記インタフェース制御回路は、パケットに含まれるパケット識別子がファンクションデバイスへのデータ転送を示すトークンパケットである場合には、当該パケットに含まれるＵＳＢデバイスアドレスに基づいて前記デバイス制御レジスタ部から対応するファンクションデバイスのディスクリプタ情報を選択し、選択されたディスクリプタ情報に基づいて定義されるＦＩＦＯバッファを用いてＵＳＢホストからファンクションデバイスへデータを転送する制御を行う。
【００３５】
ＵＳＢホストはＵＳＢ規格に準拠した手順によりＵＳＢホストからファンクションデバイスへデータパケットのデータをインタフェースする制御を容易に行うことができる。
【００３６】
〔１１〕＜ＣＰＵインタフェースレジスタ＞
項１乃至１０のいずれかのデータプロセッサにおいて、前記ファンクションデバイスの一つはＣＰＵインタフェースレジスタ（２２）である。
【００３７】
ＣＰＵが実行するＵＳＢインタフェースを用いるアプリケーションプログラムに従ってデータプロセッサを外部とＵＳＢインタフェースすることができる。
【００３８】
〔１２〕＜デバッグモニタ＞
項１１のデータプロセッサにおいて、前記ファンクションデバイスの一つはＣＰＵがデバッグモニタを実行して得られるデバッグ支援環境としてのデバッグ支援デバイス（２３）である。
【００３９】
これにより、データプロセッサにオンチップされたＵＳＢデバイスの一つであるＣＰＵインタフェースレジスタをシステムデバッグする場合に、データプロセッサがＵＳＢ支援デバイスを他のＵＳＢデバイスとして保有するから、システムデバッグの支援にもＵＳＢインタフェースを用いることができる。システムデバッグを支援するためにＳＣＩ等の他のシリアルインタフェースを備えることを要しない。
【００４０】
〔１３〕＜半導体集積回路化＞
項１乃至１２のいずれかのデータプロセッサは、前記回路モジュールとして、前記ＣＰＵのワーク領域として利用されるＲＡＭ、及び前記ＣＰＵの制御を受けるその他の周辺回路をさらに有し、１個の半導体基板に形成される。
【００４１】
〔１４〕＜通信バッファメモリの初期化毎のエンドポイントのマッピング＞
本発明の別の観点によるデータプロセッサ（１）は、命令を実行するＣＰＵ（２）と前記ＣＰＵの制御を受ける複数の回路モジュールとを有する。前記回路モジュールの一つとして前記データプロセッサの外部のＵＳＢホスト（１１）に接続されるＵＳＢインタフェース回路（６）を有する。前記ＵＳＢインタフェース回路は、複数のＵＳＢデバイスの夫々のディスクリプタ情報と前記ＵＳＢホストによって設定されるコンフィギュレーション情報とをＵＳＢデバイス毎に保有するためのデバイス制御レジスタ部（３０〜３３）と、前記ＵＳＢデバイスと前記ＵＳＢホストとの間の通信に用いるために前記複数のＵＳＢデバイスに共有される通信バッファメモリ（５０）と、インタフェース制御回路（４１〜４５）とを有する。インタフェース制御回路は、前記ＵＳＢホストから入力されるパケットの情報に基づいて前記デバイス制御レジスタ部から一つのＵＳＢデバイスに対応するディスクリプタ情報を選択し、選択したディスクリプタ情報に従って前記通信バッファメモリを初期化してこれに割り当てるエンドポイントのアドレスマッピングを決定する。
【００４２】
これにより、通信バッファメモリも前記複数のＵＳＢデバイスで共有されるから、ＵＳＢデバイス毎に固有の記憶領域を割り当てておくことを要せず、この点で、複数のＵＳＢデバイスをオンチップしたとき必要なＵＳＢインタフェース制御のための回路規模を縮小することができる。
【００４３】
〔１５〕＜ＦＩＦＯアドレス制御ポインタ＞
項１４のデータプロセッサにおいて、前記インタフェース制御回路は、前記アドレスマッピングを決定したエンドポイント毎にＦＩＦＯバッファを構成するためのＦＩＦＯアドレス制御ポインタ（ＡＰＩＮＴ＃１）〜ＡＰＩＮＴ＃３）を有し、前記デバイス制御レジスタ部から選択するディスクリプタ情報を切換えるとき前記ＦＩＦＯアドレス制御ポインタを初期化する。
【００４４】
ＦＩＦＯアドレス制御ポインタの初期化により、デバイス制御レジスタ部から選択するディスクリプタ情報の切換えに伴うエンドポイントの初期化が容易になる。
【００４５】
〔１６〕＜デバイス制御レジスタの選択と信バッファメモリの共有＞
本発明の別の観点によるデータプロセッサ（１）は、ＣＰＵと、外部のＵＳＢホストに接続され前記ＣＰＵによって制御されるＵＳＢインタフェース回路（６）とを有する。前記ＵＳＢインタフェース回路は、複数のＵＳＢデバイスの夫々の属性を定義する情報を前記ＵＳＢデバイス毎に保有するためのデバイス制御レジスタ部（３０〜３３）と、ＵＳＢホストから入力されるパケットの情報に基づいて前記デバイス制御レジスタ部から一つのＵＳＢデバイスに対応する属性情報を選択し、選択した属性情報を用いて前記パケットの指示に応答するインタフェース制御を行うインタフェース制御回路（４１〜４５）と、前記インタフェース制御に用いるエンドポイントが割り当てられ前記複数のＵＳＢデバイスが共有する信バッファメモリ（５０）とを有する。
【００４６】
これにより、デバイス制御レジスタ部から選択する属性情報の選択を切り換えるから、切換えて選択される情報を用いてインタフェース制御を行う回路を複数のＵＳＢデバイスのそれぞれに対応して個別に持つことを要せず複数のＵＳＢデバイス間で共用することができ、また、通信バッファメモリも前記複数のＵＳＢデバイスで共有されるからＵＳＢデバイス毎に固有の記憶領域を割り当てることも要しない。したがって、複数のＵＳＢデバイスをオンチップしたとき必要なＵＳＢインタフェース制御のための回路規模を縮小することができる。
【００４７】
〔１７〕＜ＦＩＦＯアドレス制御ポインタ＞
項１６のデータプロセッサにおいて、前記インタフェース制御回路は、前記インタフェース制御用に割り当てられたエンドポイント毎にＦＩＦＯバッファを構成するためのＦＩＦＯアドレス制御ポインタを有し、前記デバイス制御レジスタ部から選択する属性情報を切換えるとき前記ＦＩＦＯアドレス制御ポインタを初期化する。
【００４８】
ＦＩＦＯアドレス制御ポインタの初期化により、デバイス制御レジスタ部から選択する属性情報の切換えに伴うエンドポイントの初期化が容易になる。
【００４９】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００５０】
図２には本発明の一実施の形態に係るデータプロセッサが示される。同図に示されるデータプロセッサ１は、特に制限されないが、相補型ＭＯＳ集積回路製造技術などによって単結晶シリコンのような１個の半導体基板に形成される。
【００５１】
データプロセッサ１はフェッチした命令を解読して実行するＣＰＵ（Central Processing Unit）２とＣＰＵ２の制御を受ける複数の回路モジュールを有し、それらは内部バス３に接続される。複数の回路モジュールとして、ＣＰＵ２が実行する命令セットを用いて記述されたプログラムなどを格納するフラッシュメモリのようなＲＯＭ４、ＣＰＵ２のワーク領域又はデータの一時記憶領域とされるＳＲＡＭのようなＲＡＭ５、ＵＳＢインタフェース回路（ＵＳＢＩＦ）６、及びその他の周辺回路（ＰＲＰＨＲＬ）７が代表的に図示される。
【００５２】
ＵＳＢインタフェース回路６はＵＳＢインタフェースケーブル１０を用いてデータプロセッサ１の外部のＵＳＢホスト（ＨＳＴ）１１に接続され、ＣＰＵ２によって制御される。ＵＳＢインタフェース回路６がインタフェース制御の対象とするＵＳＢデバイスは、例えば、ＵＳＢインタフェース回路６の中で仮想的に構成されるハブ（仮想ハブデバイス）と、ＣＰＵ２と所定の回路モジュールとを用いて実現され前記仮想ハブデバイスに夫々接続される複数のファンクションデバイスとである。図３には仮想ハブデバイスと複数のファンクションデバイスの接続関係が物理接続トポロジとして例示される。図３において２１は仮想ハブデバイス（ＶＨＵＢ）であり、２２，２３はファンクションデバイス（ＦＮＣＤＶ）である。ファンクションデバイス２２は、例えばユーザデバイス（ＦＮＣＤＶ＿ＵＳＲ）としてのＣＰＵインタフェースレジスタ（ＣＰＵ＿ＩＦ＿Ｒｅｇ）である。これはＵＳＢインタフェース６を用いる所定のアプリケーションプログラムをＣＰＵ２が実行することによってデータプロセッサ１を外部とＵＳＢインタフェースすることを可能にするものであり、例えば、ＵＳＢインタフェースを用いる所定のアプリケーションプログラムの実行によって操作される所定の周辺回路の入出力レジスタである。図２ではＵＡＰＰＬがアプリケーションプログラムを総称する。図３において、ファンクションデバイス２３は、例えばデバッグ支援用のプログラムであるデバッグモニタを実行することによって実現するデバッグ支援環境としてのデバッグ支援デバイス（ＦＮＣＤＶ＿ＤＢＧ）である。図２ではＤＢＧＭＮＴがデバッグモニタを総称する。このような例において、データプロセッサ１にオンチップされたＵＳＢデバイスの一つであるＣＰＵインタフェースレジスタ２２をシステムデバッグする場合に、データプロセッサ１がＣＰＵ２で実行可能なデバッグモニタＤＢＧＭＮＴを備えていてＣＰＵ２がデバッグモニタを実行することによって実現するデバッグ支援環境をもう一つのＵＳＢデバイス２３として保有するから、システムデバッグの支援にもＵＳＢインタフェース回路６を用いることができる。したがって、ＵＳＢインタフェースを操作するためのアプリケーションプログラムを実行しながらシステムデバッグを支援するためにもＵＳＢインタフェース回路６を用いることができる。
【００５３】
ＵＳＢインタフェース回路６は上記ＵＳＢデバイス２１〜２３とＵＳＢホスト１１との間のデータ転送を行うために仮想パイプを定義し、定義した仮想パイプの生成消滅もしくは仮想パイプの切換えを制御するものとして把握することができる。この観点にしたがって、図２には仮想ハブデバイスのための仮想パイプ（仮想ハブ用仮想パイプ）ＶＰＨＵＢ、デバッグ支援環境デバイス２３用の仮想パイプ（デバッグモニタ用仮想パイプ）ＶＰＤＢＧ、及びＣＰＵインタフェースレジスタ２２に代表されるユーザデバイス用の仮想パイプ（ユーザデバイス用仮想パイプ）ＶＰＵＳＲが明示的に列挙される。
【００５４】
図１にはＵＳＢインタフェース回路において仮想パイプの生成消滅もしくは切換えを制御するための回路構成が例示される。
【００５５】
６０はＵＳＢインタフェースケーブル１０を介してＵＳＢホスト１１に接続されるアナログフロントエンド（ＡＦＥ）であり、６１は内部バス３を介してＣＰＵ２などに接続されるバスインタフェース部（ＢＩＵ）である。
【００５６】
ＵＳＢインタフェース回路６は前記ＵＳＢデバイス２１〜２３の夫々の属性を定義する情報をＵＳＢデバイス毎に保有するデバイス制御レジスタとして、複数のデバイス制御レジスタ３０，３１，３２及びデバイスアドレスレジスタ（ＲＥＧＡＤＤＲ）３３を有し、更に、前記ＵＳＢデバイスとしての仮想ハブデバイス（ＶＨＵＢ）、デバッグ支援デバイス（ＦＮＣＤＶ＿ＤＢＧ）又はユーザデバイス（ＦＮＣＤＶ＿ＵＳＲ）と、前記ＵＳＢホスト１１との間の通信に用いるために前記複数のＵＳＢデバイスに共有される通信バッファメモリ（ＢＵＦＭＥＭ）５０を備える。通信バッファメモリ５０には例えばＳＲＡＭを採用することができる。
【００５７】
３０は前記仮想ハブデバイス（ＶＨＵＢ）用のハブデバイス制御レジスタ（ＲＥＧＨＵＢ）であり、３１は前記デバッグ支援デバイス（ＦＮＣＤＶ＿ＤＢＧ）用のデバッグデバイス制御レジスタ（ＲＥＧＤＢＧ）であり、３２は前記ユーザデバイス（ＦＮＣＤＶ＿ＵＳＲ）用のユーザデバイス制御レジスタ（ＲＥＧＵＳＲ）である。夫々のデバイス制御レジスタ３０，３１，３２が格納することになるＵＳＢデバイスの属性を定義する情報は、例えばＣＰＵ２によって初期設定されるＵＳＢデバイスのディスクリプタ情報である。デバイスアドレスレジスタ（ＲＥＧＡＤＤＲ）３３が格納するＵＳＢデバイスの属性を定義する情報はＵＳＢホスト１１によって設定されるコンフィギュレーション情報であり、例えば仮想ハブデバイス（ＶＨＵＢ）、デバッグ支援デバイス（ＦＮＣＤＶ＿ＤＢＧ）及びユーザデバイス（ＦＮＣＤＶ＿ＵＳＲ）の夫々に割り当てるデバイスアドレスである。
【００５８】
ハブデバイス制御レジスタ（ＲＥＧＨＵＢ）３０に設定されるディスクリプタ情報は、仮想ハブデバイス（ＶＨＵＢ）にデバッグ支援デバイス（ＦＮＣＤＶ＿ＤＢＧ）とユーザデバイス（ＦＮＣＤＶ＿ＵＳＲ）が接続されることを示す接続トポロジ情報、当該仮想ハブデバイス（ＶＨＵＢ）のエンドポイント毎に割り当てられる前記通信バッファメモリ５０上のアドレスエリア情報、エンドポイント数、消費電力、転送方向、最大パケットサイズなどの情報含む。アドレスエリア情報で指定されるメモリ領域は後述するようにＦＩＦＯバッファ領域として利用されることになる。
【００５９】
デバッグデバイス制御レジスタ（ＲＥＧＤＢＧ）３１に設定されるディスクリプタ情報は、当該デバッグ支援デバイス（ＦＮＣＤＶ＿ＤＢＧ）のエンドポイント毎に割り当てられる前記通信バッファメモリ５０上のアドレスエリア情報、エンドポイント数、消費電力、転送方向、最大パケットサイズなどの情報含む。アドレスエリア情報で指定されるメモリ領域は後述するようにＦＩＦＯバッファ領域として利用されることになる。
【００６０】
ユーザデバイス制御レジスタ（ＲＥＧＵＳＲ）３２に設定されるディスクリプタ情報は、当該デバッグ支援デバイス（ＦＮＣＤＶ＿ＤＢＧ）のエンドポイント毎に割り当てられる前記通信バッファメモリ５０上のアドレスエリア情報、エンドポイント数、消費電力、転送方向、最大パケットサイズなどの情報含む。アドレスエリア情報で指定されるメモリ領域は後述するようにＦＩＦＯバッファ領域として利用されることになる。
【００６１】
デバイスアドレスレジスタ３３に設定されるコンフィギュレーション情報は、夫々ＵＳＢホスト１１によって割り当てられる仮想ハブデバイス（ＶＨＵＢ）のＵＳＢデバイスアドレス、デバッグデバイス（ＶＦＮＣ＿ＤＢＧ）のＵＳＢデバイスアドレス、及びユーザデバイス（ＦＮＣＤＶ＿ＵＳＲ）のＵＳＢデバイスアドレスを含む。
【００６２】
前記デバイス制御レジスタ３０，３１，３２、デバイスアドレスレジスタ３３及び通信バッファメモリ５０を用いてＵＳＢデバイス毎の仮想パイプの生成消滅もしくは切換えを制御するためのインタフェース制御回路として、デバイス制御レジスタ切換え回路（ＲＥＧＣＨＧ）４１、割り込み制御回路（ＩＮＴＣＴＲＬ）４２、ポート（ＰＯＲＴ）４３、パイプ制御回路（ＰＩＰＣＴＲＬ））４４、及びプロトコル制御回路（ＰＲＴＣＬ）４５を有する。それらの回路要素で構成されるインタフェース制御回路は、前記ＵＳＢホストから入力されるパケットの情報に基づいてデバイスレジスタ３０〜３２の中から一つのデバイス制御レジスタを選択し、選択したデバイス制御レジスタのディスクリプタ情報で定義されたアドレスエリア情報によって決まる通信バッファメモリ５０上のＦＩＦＯバッファを仮想パイプとして用いることによってデータ転送を制御する。
【００６３】
前記割り込みコントローラ４２はアナログフロントエンド６０、プロトコルコントローラ４５、及びパイプコントローラ４４における所要のイベントの発生を検出してＣＰＵ２への割り込み要求を出力する。
【００６４】
アナログフロントエンド６０はパケットの送受信を行い、プロトコルコントローラ４５は受信パケットの解析と送信パケットの生成を行う。受信パケットに対してプロトコルコントローラ４５はパケット識別子（ＰＩＤ）によって受信パケットがトークンパケット、データパケット、又はハンドシェークパケットなどの何れであるかを判別し、判別結果に従ってパケットの情報を分解して内部転送する。
【００６５】
例えば、ＵＳＢホストのエニュメーション処理は以下のように動作される。
【００６６】
最初にＵＳＢホスト１１とＵＳＢインタフェーイ回路６との接続が確認されると、ＵＳＢインタフェース回路６はハブであることをホストに伝えると、ホストは、仮想ハブデバイス(VHUB)とのエニュメレーションを開始する。このエニュメレーションで使用するＦＩＦＯ領域は、ＦＩＦＯバッファ領域の先頭からバッファ領域の最後までのフルの領域となる。その後、ホストより仮想ハブ用のデバイスアドレスが送信されてくるので、このデバイスアドレスをデバイスアドレスレジスタ３３にセットする。ホストはハブの接続を認識すると、ハブの下に新たなデバイスが接続されたかどうかを定期的に仮想ハブに問い合わせを行い、仮想ハブはユーザデバイス(FUNCDV_USR)が新たに接続されたことをホストに通知すると、ホストは、ユーザデバイス(FUNCDV_USR)とのエニュメレーションを開始する。このエニュメレーションで使用するＦＩＦＯも上記と同様にＦＩＦＯバッファの先頭アドレスからバッファ領域の最後までのフルの領域となる。その後、ホストよりユーザデバイス(FUNCDV_USR)用のデバイスアドレスが送信されてくるので、このアドレスをデバイスアドレスレジスタ33にセットする。更に、ホストは、仮想ハブに対して定期的に新規デバイス接続の問い合を行い、仮想ハブはデバッグ支援デバイス(FUNCDV_DBG)が新たに接続されたことをホストに通知すると、ホストは、デバッグ支援デバイス(FUNCDV_DBG)とのエニュメレーションを開始する。このエニュメレーションで使用するＦＩＦＯも上記と同様にＦＩＦＯバッファの先頭アドレスからバッファ領域の最後までのフルの領域となる。その後、ホストよりデバッグ支援デバイス(FUNCDV_DBG)用のデバイスアドレスが送信されてくるので、このアドレスをデバイスアドレスレジスタ３３にセットする。
【００６７】
また、ＵＳＢホストのエニュメーション処理は以下のように動作させることも可能である。
【００６８】
最初にＵＳＢホスト１１との接続が確認されたときはＵＳＢホストのエニュメレーション処理によりコントロール転送が起動され、このときには初期状態でデバイスアドレス０番のハブデバイス制御レジスタ（ＲＥＧＨＵＢ）３０が選択され、選択されたハブデバイス制御レジスタ（ＲＥＧＨＵＢ）３０が保有するディスクリプタ情報がパイプ制御回路４４に読み出される。パイプ制御回路４４はそのディスクリプタ情報に基づいて通信バッファメモリ５０上に定義されるＦＩＦＯバッファを用いて、デバッグデバイス制御レジスタ（ＲＥＧＤＢＧ）３１及びユーザデバイス制御レジスタ（ＲＥＧＵＳＲ）３２の夫々が保有するディスクリプタ情報をＵＳＢホスト１１に与え、それによってＵＳＢホスト１１が生成したＵＳＢデバイス毎のコンフィギュレーション情報を受け取る。受け取ったＵＳＢデバイス毎のコンフィギュレーション情報に含まれるデバイスアドレスはＵＳＢデバイスと対応付けられてデバイスアドレスレジスタ３３にセットされる。上記コントロール転送であることは、パケットに含まれるパケット識別子（ＰＩＤ）がＵＳＢデバイスに対するセットアップを示すトークンパケットであることによってプロトコル制御回路４５が認識して必要な制御を開始し、そのときのハブデバイス制御レジスタ（ＲＥＧＨＵＢ）３０の選択はレジスタ切換え回路４１が行う。コントロール転送では暗黙的にエンドポイント０のＦＩＦＯバッファを用いた仮想パイプが使用される。
【００６９】
バルク転送又はアイソクロナス転送ではパケットの情報で指定されたデバイスアドレスはデバイスアドレスレジスタ３３にセットされているデバイスアドレスとレジスタ切換え回路４１によって比較され、一致したアドレスのＵＳＢデバイスに対応するデバイス制御レジスタが選択され、選択されたデバイス制御レジスタのディスクリプタ情報がパイプ制御回路４４及びプロトコル制御回路４５に供給され、供給されたディスクリプタ情報に従って定義されたＦＩＦＯバッファによる仮想パイプを生成し、生成された仮想パイプを用いてＵＳＢホスト１１とＵＳＢデバイスとの間のデータ転送が行われる。
【００７０】
例えば、ＵＳＢホストへのデータ転送制御が行われる場合の制御を説明する。パケットに含まれるパケット識別子がＵＳＢホストへのデータ転送を示すトークンパケットである場合には、当該パケットに含まれるＵＳＢデバイスアドレスに基づいてレジスタ切換え回路４１がデバイス制御レジスタ３０乃至３２の中から対応するＵＳＢデバイスのディスクリプタ情報を選択し、選択されたディスクリプタ情報に基づいて定義される通信バッファメモリ５０上のＦＩＦＯバッファを用いてＵＳＢデバイスから前記ＵＳＢホスト１１へデータを転送する制御を行う。
【００７１】
ＵＳＢデバイスへのデータ転送制御が行われる場合の制御を説明する。パケットに含まれるパケット識別子がＵＳＢデバイスへのデータ転送を示すトークンパケットである場合には、当該パケットに含まれるＵＳＢデバイスアドレスに基づいてレジスタ切換え回路４１がデバイス制御レジスタ３０乃至３２の中から対応するＵＳＢデバイスのディスクリプタ情報を選択し、選択されたディスクリプタ情報に基づいて定義される通信バッファメモリ５０上のＦＩＦＯバッファを用いてＵＳＢホストからファンクションデバイスへデータを転送する制御を行う。
【００７２】
デバイス制御レジスタ３０，３１，３２の選択は上述より明らかなように、ＵＳＢホスト１１からのパケットによって例えばＵＳＢデバイスアドレス＃２が指定されていれば、図６に例示されるように、当該ＵＳＢデバイスアドレス＃２に対応するユーザデバイス用のユーザデバイス制御レジスタ（ＲＥＧＵＳＲ）が選択され、選択されたユーザデバイス制御レジスタ（ＲＥＧＵＳＲ）が保有するディスクリプタ情報に通信バッファメモリ５０でエンドポイントＥＰ０〜ＥＰ３，…毎の仮想パイプのＦＩＦＩバッファＦＩＦＯ＃０〜ＦＩＦＯ＃３，…が再構成され、再構成されたＦＩＦＧＯバッファを用いてデータ通信が行われる。同様に、ＵＳＢデバイスアドレス＃３が指定されていれば、図７に例示されるように、当該ＵＳＢデバイスアドレス＃３に対応するデバッグ支援デバイス用のデバッグデバイス制御レジスタ（ＲＥＧＤＢＧ）が選択され、選択されたデバッグデバイス制御レジスタ（ＲＥＧＤＢＧ）が保有するディスクリプタ情報に通信バッファメモリ５０でエンドポイントＥＰ０〜ＥＰ３，…毎の仮想パイプのＦＩＦＩバッファＦＩＦＯ＃０〜ＦＩＦＯ＃３，…が再構成され、再構成されたＦＩＦＯバッファを用いてデータ通信が行われる。
【００７３】
このように、デバイスアドレスに応じてデバイス制御レジスタ３０〜３２の選択を切り換えてディスクリプタ情報の選択を切り換えるから、切換えて選択される情報を用いてインタフェース制御を行う回路を複数のＵＳＢデバイスのそれぞれに対応して個別に持つことを要せず複数のＵＳＢデバイス間で共用することができ、この点で、複数のＵＳＢデバイスをオンチップしたとき必要なＵＳＢインタフェース制御のための回路規模を縮小することができる。また、通信バッファメモリ５０も前記複数のＵＳＢデバイスで共有されるから、ＵＳＢデバイス毎に固有の記憶領域を割り当てておくことを要せず、この点で、複数のＵＳＢデバイスをオンチップしたとき必要なＵＳＢインタフェース制御のための回路規模を縮小することができる。
【００７４】
ＦＩＦＯバッファに対するアドレスポイント制御は図４に例示されるように、パイプ制御回路４４が備えるＦＩＦＯアドレス制御ポインタＡＰＩＮＴ＃０〜ＡＰＩＮＴ＃３，…を用いる。ＦＩＦＯアドレス制御ポインタＡＰＩＮＴ＃０〜ＡＰＩＮＴ＃３，…の数は夫々のＵＳＢデバイスは持ち得る最大エンドポイント数（例えば１６個）に対応される。デバイス制御レジスタ３０〜３２の選択が切換えられると、すべてのＦＩＦＯアドレス制御ポインタＡＰＩＮＴ＃０〜ＡＰＩＮＴ＃３，…は初期化されて、転送対象とされるＵＳＢデバイスが切り換えられる毎に、ＦＩＦＯバッファＦＩＦＯ＃０〜ＦＩＦＯ＃３，…は新たな利用が開始される。ＦＩＦＯアドレス制御ポインタＡＰＩＮＴ＃０〜ＡＰＩＮＴ＃３，…の初期化とはリードアドレスポインタをライトアドレスポインタの値に一致させることによって読み出すべき有効なデータがない状態を生成することである。転送対象とされるＵＳＢデバイスが切り換えられる毎に、ＦＩＦＯバッファが初期化されて新たな利用が開始されるから、図３に例示されるようにＵＳＢデバイス毎に専用のＦＩＦＯバッファを持つことを必要とせず、通信バッファメモリ５０は１セットのＦＩＦＯバッファを持って、複数のＵＳＢデバイス間で共有することができる。ＦＩＦＯバッファの共有の様子は図４に更に詳述され、エンドポイント（ＥＰ０，ＥＰ１，ＥＰ２，…）毎に割り当てられたＦＩＦＩバッファＦＩＦＯ＃０〜ＦＩＦＯ＃３，…はＵＳＢアドレス１，２，３のＵＳＢデバイスが排他的に使用する。図５の比較例のようにデバイス（ＨＵＢ，ＦＮＣＤＶ１、ＦＮＣＤＶ２）毎にＵＳＢインタフェース回路を持つ場合には、必然的にＦＩＦＯバッファ群（ＦＩＦＯ＿ＤＶＣ１，ＦＩＦＯ＿ＤＶＣ２，ＦＩＦＯ＿ＨＵＢ）を構成するバッファメモリも３セット個別に持たなければならない。図３の場合にはＵＳＢデバイス２１〜２３に共用されるＦＩＦＯバッファ群（ＦＩＦＯＢＴＨ）を構成するバッファメモリ５０を１セット持てばよい。
【００７５】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００７６】
例えば、データプロセッサが内蔵するＵＳＢファンクションデバイスの機能は適宜変更可能であり、それに応じてデバイス制御レジスタ部のレジスタ構成も変更される。データプロセッサが内蔵するＵＳＢファンクションデバイスの数も２個以上に増やすことが可能である。インタフェース制御回路を構成するための機能ブロックについても適宜変更可能である。
【００７７】
また、データプロセッサが有するＵＳＢデバイスとしてファンクションデバイスと共に仮想ハブデバイスを採用することにより、ＵＳＢホストはＵＳＢ規格に準拠した手順でＵＳＢデバイスの認識やデータ転送の通信制御が可能になり、ＵＳＢ規格に対して高い親和性を実現できるが、仮想ハブデバイスの機能はインタフェース制御回路に暗黙的に内在させることが可能である。なぜならば、本発明ではＵＳＢデバイスとしてデータプロセッサにオンチップされて構成されるものを想定するから、そのＵＳＢデバイスの数や機能は固定化若しくは予め決まっているという事情を考慮すれば、そのような数や機能があらかじめ決まっている複数個のＵＳＢデバイスへの信号分配機能にはＵＳＢデバイスとしてのハブのような汎用性を必要としない。したがって、その特殊性に特化した専用論理をインタフェース制御回路に埋め込むことも考えられる。その場合には、前記仮想ハブデバイスに対応するよぅなデバイス制御レジスタはなくてもよい。
【符号の説明】
【００７８】
１  データプロセッサ（ＭＣＵ）
２  ＣＰＵ
３  内部バス
４  ＲＯＭ
５  ＲＡＭ
６  ＵＳＢインタフェース回路（ＵＳＢＩＦ）」
７  他の周辺回路（ＰＲＰＨＲＬ）
１０  ＵＳＢインタフェースケーブル
１１  ＵＳＢホスト（ＨＳＴ）
２１  仮想ハブデバイス（ＶＨＵＢ）
２２  ファンクションデバイス（ＦＮＣＤＶ）、ＣＰＵインタフェースレジスタ（ＣＰＵ＿ＩＦ＿Ｒｅｇ）
２３  ファンクションデバイス（ＦＮＣＤＶ）、デバッグ支援デバイス（ＦＮＣＤＶ＿ＤＢＧ）
ＶＰＨＵＢ  仮想ハブ用仮想パイプ
ＶＰＤＢＧ  デバッグモニタ用仮想パイプ
ＶＰＵＳＲ  ユーザデバイス用仮想パイプ
３０，３１，３２  デバイス制御レジスタ
３０  前記仮想ハブデバイス（ＶＨＵＢ）用のハブデバイス制御レジスタ（ＲＥＧＨＵＢ）
３１  デバッグ支援デバイス（ＦＮＣＤＶ＿ＤＢＧ）用のデバッグデバイス制御レジスタ（ＲＥＧＤＢＧ）
３２  ユーザデバイス（ＦＮＣＤＶ＿ＵＳＲ）用のユーザデバイス制御レジスタ（ＲＥＧＵＳＲ）
３３  デバイスアドレスレジスタ
４１  デバイス制御レジスタ切換え回路（ＲＥＧＣＨＧ）
４２  割り込み制御回路（ＩＮＴＣＴＲＬ）
４３  ポート（ＰＯＲＴ）
４４  パイプ制御回路（ＰＩＰＣＴＲＬ））
４５  プロトコル制御回路（ＰＲＴＣＬ）
５０  通信バッファメモリ
６０  アナログフロントエンド（ＡＦＥ）
６１  バスインタフェース部（ＢＩＵ）
【図１】
2011248822.tif 000003
【図２】
2011248822.tif 000004
【図３】
2011248822.tif 000005
【図４】
2011248822.tif 000006
【図５】
2011248822.tif 000007
【図６】
2011248822.tif 000008
【図７】
2011248822.tif 000009