(57)【要約】【課題】ＦＩＦＯメモリの一部を複数のエンドポイントで共有し、外部のユーザ回路、ＵＳＢホストから共有するＦＩＦＯメモリを使用するエンドポイントをデータ転送の状況に応じて変更することで、回路規模を小さく抑えつつデータ転送速度を向上させるＵＳＢコントローラとそのデータ転送制御方法を提供することにある。【解決手段】１つのエンドポイント１３に対してバッファメモリを複数用意して少なくとも１つ以上のバッファメモリ（２０−ａ，２０−ｂ，２０−ｃ）を他のエンドポイント１３と共有し、バッファメモリ（２０−ａ，２０−ｂ，２０−ｃ）が接続されるエンドポイント１３を変更可能としたＵＳＢコントローラ。【選択図】　　　図３
2004070423.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢインタ−フェースを有する機器に応用できるＵＳＢコントローラにおいて、
ＵＳＢバスに接続されＵＳＢホストから送信されたバケットを論理信号に変換するＵＳＢトランシーバと、該ＵＳＢトランシーバから入力する前記ＵＳＢホストから送信されたバケットをデコードするシリアル入力エンジンと、複数のエンドポイントを有するエンドポイント群と、ユーザ回路、前記エンドポイント群、及びレジスタ間でのデータ転送の制御を行うＩ／Ｏコントローラと、を備え、
１つのエンドポイントに対してバッファメモリを複数用意して少なくとも１つ以上のバッファメモリを他のエンドポイントと共有し、バッファメモリが接続されるエンドポイントを変更可能としたことを特徴とするＵＳＢコントローラ。
【請求項２】
共有するバッファメモリが接続されるエンドポイントを外部のユーザ回路からの入力信号で切り換えることを特徴とする請求項１記載のＵＳＢコントローラ。
【請求項３】
共有するバッファメモリが接続されるエンドポイントを内部のレジスタで切り換えることを特徴とする請求項１記載のＵＳＢコントローラ。
【請求項４】
外部のユーザ回路から前記内部のレジスタの値を変更して共有するバッファメモリが接続されるエンドポイントを切り換えることを特徴とする請求項３記載のＵＳＢコントローラ。
【請求項５】
前記ＵＳＢホストからＵＳＢコントローラに対して送られるＵＳＢデバイスリクエストによって内部のレジスタの値を変更し、前記共有するバッファメモリへ接続されるエンドポイントを切り換えることを特徴とする請求項３記載のＵＳＢコントローラ。
【請求項６】
１つのエンドポイントに対してバッファメモリを複数用意して少なくとも１つ以上のバッファメモリを他のエンドポイントと共有してバッファメモリの接続されるエンドポイントを変更可能とし、外部から共有するバッファメモリに接続されるエンドポイントを変更することを特徴とするＵＳＢコントローラのデータ転送制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＵＳＢインタ−フェースを有する機器に応用できるＵＳＢコントローラおよびそのデータ転送制御方法に関するものである。
【０００２】
【従来の技術】
近年、ＰＣ（パソコン）と周辺機器を接続するインターフェースとしてＵＳＢ（Ｕｎｉｖｅｒｓａｌ　Ｓｅｒｉａｌ　Ｂｕｓ）が使用されている。ＵＳＢではＰＣが１つしか存在しないホストとなり、ホストの下に複数のデバイスがツリー状に接続され、デバイスのＵＳＢコントローラがそれぞれ固有のアドレスを有している。
本発明に関連する従来技術として、１つのＦＩＦＯメモリを複数のエンドポイントで共有するという点で特開２００１−５１２８７０公報のユニバーサルシリアルバス（ＵＳＢ）デバイスコントローラが挙げられる。また、１つのエンドポイントに複数のＦＩＦＯメモリを対応させた既存の製品としては沖電気のＭＬ６０８５１Ｃ等があげられる。
図５はＵＳＢバスの接続概念図である。図５において、ルートＨＵＢ（マルチポートリピータ）機能を有するＵＳＢホスト１、ＨＵＢ２ａ、２ｂ、デバイス３（３ａ〜３ｄ）が存在している。このようにＵＳＢでは１つのホストの下に複数のＨＵＢまたはデバイスがツリー状に接続される。
図６はデバイスの構成を示す概略図である。デバイス３（３ａ〜３ｄ）は図６のようにＵＳＢコントローラ２１、ターゲットの機器２２から構成される。
ホストであるＰＣは固有のアドレスのＵＳＢコントローラ２１に対してデータ送受信の要求とデータの送受信を行う。ＵＳＢコントローラ２１ではＵＳＢホスト１からのデータ送受信の要求を受信した時に、割込み信号等の手段でユーザ回路に対してＵＳＢホスト１からデータ送受信の要求を受けたことを示す。
そして、ユーザ回路はＵＳＢコントローラ２１からデータ送受信の要求の内容を読み出して、ＵＳＢコントローラ２１がＵＳＢホスト１から受信したデータを読み出し、また、ＵＳＢホスト１に対する送信データをＵＳＢコントローラ２１に書き込む。
なお、ＵＳＢコントローラ２１はＵＳＢホスト１に対してデータを送信する、または、ＵＳＢホスト１からのデータを受信する、通常ＦＩＦＯメモリ（Ｆｉｒｓｔ　Ｉｎ　Ｆｉｒｓｔ　Ｏｕｔ　Ｍｅｍｏｒｙ）からなるエンドポイントを複数有している（その数は規格によって決められている）。そして、デバイス３のＵＳＢコントローラ２１のローカルバスに接続される機器２２は、エンドポイントのＦＩＦＯメモリに対してアクセスすることになる。
ところで、ＵＳＢバスでのデータの転送は、パケットという単位で行われる。このパケットには転送方向やセットアップ情報を送るトークンパケット、実際のデータであるデータパケット、データ転送結果（成功・失敗）を送るハンドシェイクパケットの種類がある。また、転送の種類も、エンドポイントゼロを介して行われるデバイスの初期化や各種情報のやりとりに使用するコントロール転送、転送周期を問わずプリンタのデータのようにまとまった量のデータを転送するバルク転送、マウス、キーボードのステータスを送るような定周期で少量のデータを送るインタラプト転送、音声データなどリアルタイムのデータを送るときにデータの正当性を保証しない代わりにバンド幅を保証するアイソクロナス転送の４つのデータ転送のモードがある。
【０００３】
図７はＵＳＢコントローラの構成例を示す回路図である。図７において、ＵＳＢトランシーバ１１はＵＳＢバスに接続され、図中には示されないＵＳＢホストから送信されたパケットをＵＳＢバスの信号から論理信号に変換して次に説明するシリアル入力エンジン１２に出力する。それと同時に、シリアル入力エンジン１２からＵＳＢホストに送信するパケットを論理信号からＵＳＢバスの信号に変換してＵＳＢホストに出力する。
シリアル入力エンジン１２はＵＳＢトランシーバ１１から入力するＵＳＢホストから送信されたパケットのうちトークンパケット、ハンドシェークパケットをデコードする。シリアル入力エンジン１２はデコードされたパケットを基にＵＳＢホスト１との通信制御を行い、必要に応じてハンドシェークパケットをＵＳＢトランシーバ１１に出力する。
それとともに、ＵＳＢホストに出力するデータを以下で説明するエンドポイント群１３から読み出して、制御データを付加し、データパケットとしてＵＳＢトランシーバ１１に出力する。また、シリアル入力エンジン１２はＵＳＢトランシーバ１１から入力するＵＳＢホストからのデータパケットの中のデータをエンドポイント群１３（１３−０，１３−１．．．１３ｎ）に書き込む制御を行う。エンドポイント群１３はローカルバスから受信しＵＳＢホストへ送信するデータをバッファリングするとともに、ＵＳＢホストから受信しローカルバスに送信するデータをバッファリングする。
Ｉ／Ｏコントローラ１５は図中には示されないユーザ回路とエンドポイント群１３、次に述べるレジスタの間でのデータ転送の制御を行う。レジスタ１６はＵＳＢコントローラ内部モジュールの各種設定を行い、またコントロール転送の自動応答リクエストを格納しておくレジスタである。
エンドポイント群１３は、エンドポイントゼロ（図中の１３−０）とコントロール転送以外の転送に使用される複数のエンドポイント１３−１，・・・，１３−ｎから構成される。ここでエンドポイントゼロ１３−０はコントロール転送で使用される双方向のエンドポイントでＵＳＢホストから見た場合のエンドポイント番号は０に固定されている。
それを除いては単一の転送方向（ＵＳＢホストに対して出力または入力）のエンドポイントで、転送方法、転送の向き、ＵＳＢホストから見た場合のエンドポイント番号は０以外に固定、もしくは、レジスタ１６にユーザが設定して使用する。
【０００４】
図８はエンドポイントの構成例を示す回路図である。図８において、ＦＩＦＯメモリ（先入れ先出し）メモリ２０−０、２０−１はＵＳＢホストに対して送信するデータ、ＵＳＢホストから受信したデータを格納する。書き込みコントローラ２１はＦＩＦＯメモリに対するデータ書き込みの制御を行う。読み出しコントローラ２２はＦＩＦＯメモリからのデータ読み出しの制御を行い、マルチプレクサ２３はデータを読み出すＦＩＦＯメモリを選択する。
図８のエンドポイント１３は、２つのＦＩＦＯメモリ（２０−０，２０−１）を有し、これらのＦＩＦＯメモリの一方をデータ書き込み用、他方をデータ読み出し用とするものである。そして、書き込みコントローラ２１と読み出しコントローラ２２の間でＦＩＦＯメモリ（２０−０，２０−１）の状態を表す信号を授受する。
データ書き込み用に設定されたＦＩＦＯメモリへのデータ書き込み終了時に、データ読み出し用に設定されているＦＩＦＯメモリからのデータ読み出しが終了しているときは直ぐに、また、データ読み出しが終了していないときは、データ読み出しの終了を待って、データ書き込み用ＦＩＦＯメモリとデータ読み出し用ＦＩＦＯメモリを切り換え、データ転送速度を向上させる。
【０００５】
【発明が解決しようとする課題】
このようなエンドポイント構成を有するＵＳＢコントローラとしては例えば沖電気のＭＬ６０８５１Ｃが上げられる。しかし、この構成のエンドポイントではエンドポイント毎にＦＩＦＯメモリを２つ使用するため、エンドポイントの数が多くなると回路規模が大きくなるという問題点があった。
そこで、本発明の目的は、ＦＩＦＯメモリの一部を複数のエンドポイントで共有し、外部のユーザ回路、ＵＳＢホストから共有するＦＩＦＯメモリを使用するエンドポイントをデータ転送の状況に応じて変更することで、回路規模を小さく抑えつつデータ転送速度を向上させるＵＳＢコントローラとそのデータ転送制御方法を提供することにある。
【０００６】
【課題を解決するための手段】
前記の課題を解決するために、請求項１記載の発明では、ＵＳＢインタ−フェースを有する機器に応用できるＵＳＢコントローラにおいて、ＵＳＢバスに接続されＵＳＢホストから送信されたバケットを論理信号に変換するＵＳＢトランシーバと、該ＵＳＢトランシーバから入力する前記ＵＳＢホストから送信されたバケットをデコードするシリアル入力エンジンと、複数のエンドポイントを有するエンドポイント群と、ユーザ回路、前記エンドポイント群、及びレジスタ間でのデータ転送の制御を行うＩ／Ｏコントローラと、を備え、１つのエンドポイントに対してバッファメモリを複数用意して少なくとも１つ以上のバッファメモリを他のエンドポイントと共有し、バッファメモリが接続されるエンドポイントを変更可能としたことを特徴とする。
請求項２記載の発明では、共有するバッファメモリが接続されるエンドポイントを外部のユーザ回路からの入力信号で切り換える請求項１記載のＵＳＢコントローラを主要な特徴とする。
請求項３記載の発明では、共有するバッファメモリが接続されるエンドポイントを内部のレジスタで切り換える請求項１記載のＵＳＢコントローラを主要な特徴とする。
請求項４記載の発明では、外部のユーザ回路から内部のレジスタの値を変更して共有するバッファメモリが接続されるエンドポイントを切り換える請求項３記載のＵＳＢコントローラを主要な特徴とする。
請求項５記載の発明では、ＵＳＢホストからＵＳＢコントローラに対して送られるＵＳＢデバイスリクエストによって内部のレジスタの値を変更して共有するバッファメモリへ接続されるエンドポイントを切り換える請求項３記載のＵＳＢコントローラを主要な特徴とする。
請求項６記載の発明では、１つのエンドポイントに対してバッファメモリを複数用意して少なくとも１つ以上のバッファメモリを他のエンドポイントと共有してバッファメモリの接続されるエンドポイントを変更可能とし、外部から共有するバッファメモリに接続されるエンドポイントを変更する、ＵＳＢコントローラのデータ転送制御方法を最も主要な特徴とする。
【０００７】
【発明の実施の形態】
以下、図面により本発明の実施の形態を詳細に説明する。本発明のＵＳＢコントローラの全体構成は基本的には図７に示される従来のＵＳＢコントローラと同一であるが、特徴的なことは２つのエンドポイントで１つのＦＩＦＯメモリを共有するものである。
図１は本発明のＵＳＢコントローラのエンドポイントをイン転送用として説明する回路図である。図１において、シリアル入力エンジン１２、Ｉ／Ｏコントローラ１５、レジスタ１６、そしてエンドポイント群１３を示し、ここでは図を簡略化するためＦＩＦＯメモリ（バッファメモリ）を共有するエンドポイントのみを示す。
エンドポイント群１３において、エンドポイント１３−ａはイン転送のエンドポイント、エンドポイント１３−ｂはアウト転送のエンドポイントで、それぞれ１つの占有ＦＩＦＯメモリ（バッファメモリ）と１つの共有ＦＩＦＯメモリ（バッファメモリ）を有するエンドポイントである。ＦＩＦＯメモリ２０−ａはエンドポイント１３−ａの占有ＦＩＦＯメモリ、ＦＩＦＯメモリ２０−ｂはエンドポイント１３−ｂの占有ＦＩＦＯメモリ、ＦＩＦＯメモリ２０−ｃはエンドポイント１３−ａとエンドポイント１３−ｂの共有ＦＩＦＯメモリ（バッファメモリ）である。
図１では、イン転送でエンドポイント１３−ａからＵＳＢホスト（図示せず）に送るデータ数がアウト転送でエンドポイント１３−ｂがＵＳＢホストから受け取るデータ数より多い。この場合は図のようにＦＩＦＯメモリ２０−ｃをエンドポイント１３−ａで使用して、エンドポイント１３−ａではＦＩＦＯメモリ２０−ａとＦＩＦＯメモリ２０−ｃでユーザ回路からのデータを交互に受け取りＵＳＢホストに送り、エンドポイント１３−ｂではＦＩＦＯメモリ２０−ｂのみでＵＳＢホストからのデータを受け取りユーザ回路（図示せず）に送る。
【０００８】
図２は本発明のＵＳＢコントローラのエンドポイントをアウト転送用として説明する路図である。図２では、アウト転送でエンドポイント１３−ｂがＵＳＢホストから受け取るデータ数がイン転送でエンドピント１３−ａからＵＳＢホストに送るデータ数より多い。この場合は図のようにＦＩＦＯメモリ２０−ｃをエンドポイント１３−ｂで使用して、エンドポイント１３−ｂではＦＩＦＯメモリ２０−ｂとＦＩＦＯメモリ２０−ｃでＵＳＢホストからのデータを交互に受け取りユーザに送り、エンドポイント１３−ａではＦＩＦＯメモリ２０−ａのみでユーザ回路からのデータを受け取りＵＳＢホストに送る。
このようなイン転送用のエンドポイントとアウト転送用のエンドポイントを同時に使用しＵＳＢホストへのデータ送信とＵＳＢホストからのデータ受信のデータ数に差ができる例としてはＨＤＤ、光ディスク等のストレージデバイスで大容量のデータ読み出し、データ書き込みを行う場合やＦＡＸ／スキャナ機能付きのプリンタでのデータスキャン、プリント時が上げられる。
また、ここでは説明しないが、例えば１つのＵＳＢコントローラに対して複数のユーザ回路が接続されるような場合などでＵＳＢホストへのデータ送信を行うエンドポイント同士、ＵＳＢホストからのデータ受信を行うエンドポイント同士でデータ数に差ができる場合も有り得る。
【０００９】
図３は本発明のＵＳＢコントローラのエンドポイントの実施の形態を示す回路図である。図３は２つのエンドポイントＥＰＡ、ＥＰＢで１つのＦＩＦＯメモリメモリを共有する場合を示している。
図３において、２０−ａはＥＰＡのデータを格納するＦＩＦＯメモリ、２０−ｂはＥＰＢのデータを格納するＦＩＦＯメモリそして２０−ｃはＥＰＡ、ＥＰＢで共有し、データ転送の状況に応じてどちらかのデータを格納するようにユーザ回路またはＵＳＢホストなどの外部の回路によって制御されるＦＩＦＯメモリである。
書き込みコントローラ２１−ａはＥＰＡのＦＩＦＯメモリに対するデータ書き込みの制御を行い、書き込みコントローラ２１−ｂはＥＰＢのＦＩＦＯメモリに対するデータ書き込みの制御を行う。読み出しコントローラ２２−ａはＥＰＡのＦＩＦＯメモリからのデータ読み出しの制御を行い、読み出しコントローラ２２−ｂはＥＰＢのＦＩＦＯメモリからのデータ読み出しの制御を行う。
マルチプレクサ２３−ａはＥＰＡのデータを読み出すＦＩＦＯメモリを選択し、マルチプレクサ２３−ｂはＥＰＢのデータを読み出すＦＩＦＯメモリを選択する。また、マルチプレクサ２４はＥＰＡ、ＥＰＢで共有するＦＩＦＯメモリに入力する書き込み制御信号を切り換え、マルチプレクサ２５はＥＰＡ、ＥＰＢで共有するＦＩＦＯメモリに入力する書き込みデータ信号を切り換え、そしてマルチプレクサ２６はＥＰＡ、ＥＰＢで共有するＦＩＦＯメモリに入力する読み出し制御信号を切り換える。
【００１０】
図４はエンドポイントでのデータの読み出し／書き込みを説明するフローチャートである。図３の構成のエンドポイントでのデータの読み出し／書き込みを図４のフローチャートに基づいて説明する。
まず、ＥＰＡ、ＥＰＢで共有するＦＩＦＯメモリ２０−ｃの接続されるエンドポイントがＵＳＢコントローラの外部のユーザ回路またはＵＳＢコントローラのレジスタから入力する共有ＦＩＦＯメモリ制御信号によってＥＰＡに設定される場合（Ｓ１１でＹｅｓ）、書き込みコントローラ２１−ａからの制御信号によってマルチプレクサ２４はＥＰＡの書き込み制御信号を出力し、マルチプレクサ２５はＦＩＦＯメモリ２０−ａに入力するデータ信号と同一のＥＰＡの書き込みデータ信号を出力する。
読み出しコントローラ２２−ａからの制御信号によってマルチプレクサ２６は読み出しコントローラ２２−ａから出力されるＥＰＡの読み出し制御信号を出力し、これらはＦＩＦＯメモリ２０−ｃに接続される（Ｓ１２）。
そして、ＦＩＦＯメモリ２０−ｃがＥＰＡに接続される場合、書き込みコントローラ２１−ａはＥＰＡの書き込み制御信号をＦＩＦＯメモリ２０−ａに出力するように設定される。読み出しコントローラ２２−ａは、ＥＰＡの読み出し制御信号をＦＩＦＯメモリ２０−ｃに出力するように設定される。それと同時にＥＰＡの読み出しデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３−ａの制御信号の値を、ＦＩＦＯメモリ２０−ｃの読み出しデータ信号を出力するように設定する（Ｓ１３）。
この後ＥＰＡの書き込み制御信号を書き込みコントローラ２１−ａに入力すると、書き込みコントローラ２１−ａはＦＩＦＯメモリ２０−ａに対して書き込み制御信号を出力し、ＦＩＦＯメモリ２０−ａでは書き込みコントローラ２１−ａから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む（Ｓ１４−Ｓ１５でＮｏ）。
ＦＩＦＯメモリ２０−ａへのデータ書き込みが終了すると（Ｓ１５でＹｅｓ）、ＦＩＦＯメモリ２０−ｃでのデータ読み出しが終了しているかどうかの判断を行う。最初は読み出しコントローラ２２−ａから入力する読み出し側ＦＩＦＯメモリ（ＦＩＦＯメモリ２０−ｃ）には元々データが入っておらず、その状態を示す信号がデータ読み出し終了であるので（Ｓ１６でＹｅｓ）、ＦＩＦＯメモリ２０−ｃが共有ＦＩＦＯメモリ制御信号でＥＰＡに設定されている場合（Ｓ１７でＹｅｓ）、書き込みコントローラ２１−ａは、書き込み制御信号を出力するＦＩＦＯメモリを、ＦＩＦＯメモリ２０−ａからＦＩＦＯメモリ２０−ｃに変更する。
【００１１】
読み出しコントローラ２２−ａは、読み出し制御信号を出力するＦＩＦＯメモリをＦＩＦＯメモリ２０−ｃからＦＩＦＯメモリ２０−ａに変更し、同時にＥＰＡの読み出しデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３−ａの制御信号の値を、ＦＩＦＯメモリ２０−ａの読み出しデータ信号を出力するように設定する（Ｓ１８）。
この後ＥＰＡの書き込み制御信号を書き込みコントローラ２１−ａに入力すると、書き込みコントローラ２１−ａは今度はＦＩＦＯメモリ２０−ｃに対して書き込み制御信号を出力し、ＦＩＦＯメモリ２０−ｃでは書き込みコントローラ２１−ａから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む。
一方、ＦＩＦＯメモリ２０−ａへのデータ書き込みが終了した際の書き込み側ＦＩＦＯメモリの状態を示す信号のデータ書き込み中からデータ書き込み終了への変化は、読み出し先（シリアル入力エンジン１２またはユーザ回路（Ｉ／Ｏコントローラ１５経由で割込み信号またはＥＰＡがＤＭＡをサポートする場合はそのリクエスト信号によって））に示される。
そして、ＥＰＡの読み出し制御信号を読み出しコントローラ２２−ａに入力すると、読み出しコントローラ２２−ａはＦＩＦＯメモリ２０−ａに対して読み出し制御信号を出力し、ＦＩＦＯメモリ２０−ａでは読み出しコントローラ２２−ａから入力する書き込み制御信号に基づいて読み出しデータをメモリから読み出す（Ｓ１９）。
ここで、ＦＩＦＯメモリ２０−ｃへのデータ書き込みが終了した時点（Ｓ２０でＹｅｓ）で、読み出しコントローラ２２−ａから入力する読み出し側ＦＩＦＯメモリ（ＦＩＦＯメモリ２０−ａ）の状態を示す信号がデータ読み出し終了状態で（Ｓ２１でＹｅｓ）、ＦＩＦＯメモリ２０−ｃが共有ＦＩＦＯメモリ制御信号でＥＰＡに設定されている場合（Ｓ１１でＹｅｓ）、ＦＩＦＯメモリ２０−ｃの接続はＥＰＡのままである（Ｓ１２）。
そして、書き込みコントローラ２１−ａは、書き込み制御信号を出力するＦＩＦＯメモリをデータ書き込みが終了と同時に、ＦＩＦＯメモリ２０−ｃからＦＩＦＯメモリ２０−ａに変更する。読み出しコントローラ２２−ａは、読み出し制御信号を出力するＦＩＦＯメモリをＦＩＦＯメモリ２０−ａからＦＩＦＯメモリ２０−ｃに変更し、同時にＥＰＡの読み出しデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３−ａの制御信号の値を、ＦＩＦＯメモリ２０−ｃの読み出しデータ信号を出力するように設定する（Ｓ１３）。
【００１２】
ＦＩＦＯメモリ２０−ｃへのデータ書き込みが終了した時点でＦＩＦＯメモリ２０−ａのデータ読み出しが未だ終了していない場合（Ｓ２１でＮｏ）は、ＦＩＦＯメモリ２０−ａの読み出しが終わるのを待ち（Ｓ１９−Ｓ２１：この間ＦＩＦＯメモリ２０−ｃへのデータ書き込みは禁止）、ＦＩＦＯメモリ２０−ａのデータ読み出し終了した場合（Ｓ２１でＹｅｓ）、ＦＩＦＯメモリ２０−ｃが共有ＦＩＦＯメモリ制御信号でＥＰＡに設定されている場合（Ｓ１１でＹｅｓ）、ＦＩＦＯメモリ２０−ｃの接続はＥＰＡのままである（Ｓ１２）。
そして、書き込みコントローラ２１−ａは書き込み制御信号を出力するＦＩＦＯメモリを、ＦＩＦＯメモリ２０−ｃからＦＩＦＯメモリ２０−ａに変更する。読み出しコントローラは読み出し制御信号を出力するＦＩＦＯメモリを、ＦＩＦＯメモリ２０−ａからＦＩＦＯメモリ２０−ｃに変更し、同時にＥＰＡの読み出しデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３−ａの制御信号の値を、ＦＩＦＯメモリ２０−ｃの読み出しデータ信号を出力するように設定する（Ｓ１３）。
以後ＦＩＦＯメモリ２０−ｃがＥＰＡに接続されている間は、同様にデータ書き込みを行うＦＩＦＯメモリと、データ読み出しを行う読み出しコントローラ２２−ａによってＦＩＦＯメモリ２０−ａとＦＩＦＯメモリ２０−ｃの間で切り換えながらデータ転送を行う（Ｓ１１−Ｓ２１）。
【００１３】
Ｓ１１またはＳ１７でＦＩＦＯメモリ２０−ｃがＥＰＡに接続されない（ＥＰＢに接続される）場合、書き込みコントローラ２１−ｂからの制御信号によってマルチプレクサ２４はＥＰＢの書き込み制御信号を出力し、マルチプレクサ２５はＦＩＦＯメモリ２０−ｂに入力するデータ信号と同一のＥＰＢの書き込みデータ信号を出力する。読み出しコントローラ２２−ｂからの制御信号によってマルチプレクサ２６は読み出しコントローラ２２−ｂから出力されるＥＰＢの読み出し制御信号を出力し、これらはＦＩＦＯメモリ２０−ｃに接続される。
このため、ＥＰＡでは書き込みコントローラは共有ＦＩＦＯメモリ制御信号によって書き込み制御信号をＦＩＦＯメモリ２０−ａのみに出力するように設定される。読み出しコントローラ２２−ａは読み出し制御信号をＦＩＦＯメモリ２０−ａのみに出力するように設定される。それと同時にＥＰＡの読み出しデータを読み出すＦＩＦＯメモリを選択するマルチプレクサ２３−ａの制御信号の値がＦＩＦＯメモリ２０−ａの読み出しデータ信号を出力するように設定される（Ｓ２２）。そしてＦＩＦＯメモリ２０−ａはデータ書き込み用に設定される（Ｓ２３）。
ここでＥＰＡの書き込み制御信号が書き込みコントローラ２１−ａに入力すると、書き込みコントローラ２１−ａはＦＩＦＯメモリ２０−ａに対して書き込み制御信号を出力し、ＦＩＦＯメモリ２０−ａでは書き込みコントローラ２１−ａから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む（Ｓ２４−Ｓ２５でＮｏ）。
【００１４】
ＦＩＦＯメモリ２０−ａへのデータ書き込みが終了すると、ＦＩＦＯメモリ２０−ａはデータ読み出し用に設定され、その状態変化を示す信号が読み出し先（シリアル入力エンジン１２またはユーザ回路（Ｉ／Ｏコントーラ１５経由で割込み信号またはＥＰＡがＤＭＡをサポートする場合はそのリクエスト信号によって））に示される（Ｓ２６）。
そして、読み出し先からＥＰＡに対するＥＰＡの読み出し制御信号が読み出しコントローラ２２−ａに入力すると、読み出しコントローラ２２−ａはＦＩＦＯメモリ２０−ａに対して読み出し制御信号を出力し、ＦＩＦＯメモリ２０−ａでは読み出しコントローラ２２−ａから入力する読み出し制御信号に基づいて読み出しデータをメモリから読み出す（Ｓ２７−Ｓ２８でＮｏ：この間書き込みデータは書き込み禁止）。
そして、ＦＩＦＯメモリ２０−ｂからのデータ読み出しが終了し（Ｓ２８でＹｅｓ）、ＦＩＦＯメモリ２０−ｃが共有ＦＩＦＯメモリ制御信号でＥＰＡに設定されない（ＥＰＢに接続される）場合（Ｓ１１でＮｏ）、ＦＩＦＯメモリ２０−ｃはＥＰＢに接続されたままである。
そしてＦＩＦＯメモリ２０−ａは再び書き込み用に設定され（Ｓ２３）、ＥＰＡの書き込み制御信号が書き込みコントローラ２１−ｂに入力すると、書き込みコントローラ２１−ｂはＦＩＦＯメモリ２０−ｂに対して書き込み制御信号を出力し、ＦＩＦＯメモリ２０−ｂでは書き込みコントローラ２１−ｂから入力する書き込み制御信号に基づいて書き込みデータをメモリに書き込む（Ｓ２４−Ｓ２５でＮｏ）。以後Ｓ１１でＦＩＦＯメモリ２０−ｃがＥＰＡに接続されない（ＥＰＢに接続される）間はＳ２３−Ｓ２８を繰り返す。
なお、ＥＰＢにおいてはＦＩＦＯメモリ２０−ｃがＥＰＡに接続される間は図４のＳ２３−Ｓ２８と同様な動作をＦＩＦＯメモリ２０−ｂで、ＦＩＦＯメモリ２０−ｃがＥＰＢに接続される間は、図４のＳ１３−Ｓ２１と同様の動作をＦＩＦＯメモリ２０−ｂとＦＩＦＯメモリ２０−ｃで行う。
【００１５】
そして、ＥＰＡ、ＥＰＢで共有するＦＩＦＯメモリ２０−ｃの接続されるエンドポイントがＵＳＢコントローラの外部のユーザ回路またはＵＳＢコントローラのレジスタ１６から入力する共有ＦＩＦＯメモリ制御信号によって変更される度に、マルチプレクサ２４、２５、２６によってＦＩＦＯメモリ２０−ｃに接続されるエンドポイントの書き込み制御、書き込みデータ、読み出し制御の各信号の変更とＥＰＡ、ＥＰＢでのデータ転送方式（ＦＩＦＯメモリ２０−ｃ使用の有無）が変更される。
なお、それぞれのエンドポイントの書き込み制御信号、書き込みデータ信号の接続先であるが、イン転送の場合はＩ／Ｏコントローラ１５との間で、アウト転送のエンドポイントの場合は図２のシリアル入力エンジン１２との間で接続される。そして、エンドポイントの読み出し制御信号、読み出しデータ信号の接続先であるが、イン転送のエンドポイントの場合は図１のシリアル入力エンジン１２との間で、アウト転送の場合はＩ／Ｏコントローラ１５との間で接続される。
また、図３ではＥＰＡ、ＥＰＢの転送の方向は両方ともイン転送の場合、両方ともアウト転送の場合、一方がイン転送で他方がアウト転送の場合のいずれも可能で、また転送の種類の組み合わせにもよらない。さらに図３では２つのエンドポイントで１つの共有ＦＩＦＯメモリを持つ場合を示したが、これは本発明を限定するものでなく、他のエンドポイントと共有しないＦＩＦＯメモリを少なくとも１つ持つのであれば、例えば３つのエンドポイントで１つの共有ＦＩＦＯメモリを持つような構成でも、また２つのエンドポイントで２つの共有ＦＩＦＯメモリを持つような構成でもよい。
それから、ＥＰＡ、ＥＰＢで共有するＦＩＦＯメモリ２０−ｃの接続されるエンドポイントを決定する方法であるが、各エンドポイントのデータ転送量をユーザ回路でカウントして一定時間に比較するか、各エンドポイントのデータ転送量またはデータパケットの送受信の成功した回数をＵＳＢホストでカウントし、一定時間毎に比較し、データ転送量またはデータパケットの送受信の成功した回数が多いエンドポイントに次の一定時間共有ＦＩＦＯメモリ２０−ｃを接続すれば良い。このようにすることでデータ転送量の多いエンドポイントのデータ転送速度を向上することができる。
【００１６】
【発明の効果】
以上説明したように、請求項１のＵＳＢコ−ントローラは、１つのエンドポイントに対してバッファメモリを複数用意して少なくとも１つ以上のバッファメモリを他のエンドポイントと共有し、バッファメモリの接続されるエンドポイントを変更可能としたことで従来よりも回路規模を抑えつつデータ転送速度を向上させるＵＳＢコントローラを実現できる。
請求項２のＵＳＢコントローラは、共有するバッファメモリの接続されるエンドポイントを外部のユーザ回路からの入力信号で切り換えることでＵＳＢコントローラを具体的に実現できる。
請求項３のＵＳＢコントローラは、共有するバッファメモリの接続されるエンドポイントを内部のレジスタで切り換えることＵＳＢコントローラを具体的に実現できる。
請求項４のＵＳＢコントローラは、外部のユーザ回路から内部のレジスタの値を変更して共有するバッファメモリが接続されるエンドポイントを切り換えることでＵＳＢコントローラの内部のレジスタの値の具体的な変更を実現できる。
請求項５のＵＳＢコントローラは、ＵＳＢホストからＵＳＢコントローラに対して送られるＵＳＢデバイスリクエストによって内部のレジスタの値を変更して共有するバッファメモリへの接続されるエンドポイントを切り換えることによって、請求項３のＵＳＢコントローラの内部のレジスタの値の具体的な変更を実現できる。
請求項６のＵＳＢコントローラは、１つのエンドポイントに対してバッファメモリを複数用意して少なくとも１つ以上のバッファメモリを他のエンドポイントと共有してバッファメモリの接続されるエンドポイントを変更可能とし、外部から共有するバッファメモリに接続されるエンドポイントを変更することで従来よりもデータ転送速度を向上させるＵＳＢコントローラのデータ転送制御方法を実現できる。
【図面の簡単な説明】
【図１】本発明のＵＳＢコントローラのエンドポイントをイン転送用として説明する回路図である。
【図２】本発明のＵＳＢコントローラのエンドポイントをアウト転送用として説明する回路図である。
【図３】本発明のＵＳＢコントローラのエンドポイントの実施の形態を示す回路図である。
【図４】エンドポイントでのデータの読み出し／書き込みを説明するフローチャートである。
【図５】ＵＳＢバスの接続概念図である。
【図６】デバイスの構成を示す概略図である。
【図７】ＵＳＢコントローラの構成例を示す回路図である。
【図８】エンドポイントの構成例を示す回路図である。
【符号の説明】
１　ＵＳＢホスト、３　デバイス、１３　エンドポイント、１６　レジスタ、２０−ａ　占有ＦＩＦＯメモリ（バッファメモリ）、２０−ｂ　占有ＦＩＦＯメモリ（バッファメモリ）、２０−ｃ　共有ＦＩＦＯメモリ（バッファメモリ）、２１　ＵＳＢコントローラ（書き込みコントローラ）、２１−ａ　書き込みコントローラ、２１−ｂ　書き込みコントローラ、２２　ターゲットの機器（読み出しコントローラ）、２２−ａ　読み出しコントローラ、２２−ｂ　読み出しコントローラ
【図１】
2004070423.tif 000003
【図２】
2004070423.tif 000004
【図３】
2004070423.tif 000005
【図４】
2004070423.tif 000006
【図５】
2004070423.tif 000007
【図６】
2004070423.tif 000008
【図７】
2004070423.tif 000009
【図８】
2004070423.tif 000010