(57)【要約】【課題】送信データのサイズ・種類等の変更が容易で、回路規模を小さくできるＵＳＢコントローラを提供する。【解決手段】ＵＳＢホストからのデータ送信を伴うコントロール転送のリクエストに対して、ユーザ回路の介在無しに自動応答を行うＵＳＢコントローラにおいて、リクエストの応答データを初期設定の際に予め書き込んでおくエンドポイントと共有する記憶手段２８と、ＵＳＢホストから自動応答を行うリクエストが来た際に記憶手段２８に書き込んでおいたデータを読み出してＵＳＢホストに出力するシリアル入力エンジン２２とを備えた。【選択図】　　　図３
2004021859.tif 000002
【特許請求の範囲】
【請求項１】
ＵＳＢホストに対するデータ送信を伴うコントロール転送のリクエストに対してユーザ回路の介在無しに自動応答を行うＵＳＢコントローラにおいて、
各エンドポイントのＦＩＦＯに対応してデータを記憶するメモリを備え、前記リクエストへの応答データをも初期設定の際に予め前記メモリに書き込んでおき、ＵＳＢホストから自動応答を必要とするリクエストが来た際に、シリアル入力エンジンが前記メモリから応答データを読み出して、ＵＳＢホストに出力することを特徴とするＵＳＢコントローラ。
【請求項２】
請求項１記載のＵＳＢコントローラにおいて、前記シリアル入力エンジンおよびユーザ回路双方からの前記メモリへのデータの書き込み／読み出しの際に、各エンドポイント用データおよび前記応答用データ単位でアクセスの制御をするメモリアクセスコントローラを設けたことを特徴とするＵＳＢコントローラ。
【請求項３】
前記メモリが複数の入出力ポートを持つことを特徴とする請求項１または２記載のＵＳＢコントローラ。
【請求項４】
請求項１、２または３記載のＵＳＢコントローラにおいて、ＵＳＢコントローラの動作に関する各種設定行うレジスタを設け、前記メモリに書き込むリクエストへの応答データの種類・内容・サイズ、およびエンドポイントのＦＩＦＯのサイズをユーザが変更可能に前記レジスタに保持するようにしたことを特徴とするＵＳＢコントローラ。
【請求項５】
請求項１記載のＵＳＢコントローラにおいて、ＵＳＢホストから自動応答を必要とするリクエストが来た際に、前記シリアル入力エンジンが応答データの種類・内容・サイズに基づいて、前記メモリのアドレスから応答データを読み出してＵＳＢホストに出力することを特徴とするＵＳＢコントローラ。
【請求項６】
請求項１記載のＵＳＢコントローラにおいて、ＵＳＢコントローラの動作に関する各種設定を行うレジスタを設け、ＵＳＢコントローラの初期設定の際にユーザ回路から応答データを前記メモリに書き込むと同時に前記レジスタにリクエストの種類・内容・サイズに対応した値を設定することを特徴とするＵＳＢコントローラ。
【請求項７】
請求項１記載のＵＳＢコントローラにおいて、予め応答データを収めた不揮発メモリと、コントローラの動作に関する各種設定を行うレジスタとを設け、初期設定の際に前記不揮発メモリの応答データを前記メモリに書き込むと同時に、前記レジスタにリクエストの種類・内容・サイズに対応した値を設定することを特徴とするＵＳＢコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ　Ｓｅｒｉａｌ　Ｂｕｓ）コントローラに関し、特にＵＳＢホストへデータ送信を伴うコントロール転送のリクエストに対して、ユーザ回路の介在無しに自動応答を行うＵＳＢコントローラに関する。
【０００２】
【従来の技術】
ＵＳＢホストに対するデータ送信を伴うコントロール転送のリクエストに対してユーザ回路の介在無しに自動応答を行うＵＳＢコントローラに関連する従来技術として、特開２０００−３０５８９０公報に記載のインターフェースボックスが挙げられる。また、製品としてはＮｅｔＣｈｉｐ社のＵＳＢコントローラＩＣ（ＮｅｔＣｈｉｐ２２７０）等が挙げられる。
近年、パーソナルコンピュータ（ＰＣ）と周辺機器を接続するインターフェースとしてＵＳＢが使用されている。ＵＳＢではＰＣが唯一のホストとなり、このホストの下に複数のデバイスがツリー状に接続され、デバイスのＵＳＢコントローラがそれぞれ固有のアドレスを持つ。
ホストであるＰＣは固有のアドレスのＵＳＢコントローラに対してデータ送受信の要求とデータの送受信を行う。ＵＳＢコントローラではホストからのデータ送受信の要求を受信した時に、割込み信号等の手段でユーザ回路に対してホストからデータ送受信の要求を受けたことを通知する。そして、ユーザ回路はＵＳＢコントローラからデータ送受信の要求の内容を読み出して、ＵＳＢコントローラがホストから受信したデータを読み出し、また、ホストに対する送信データをＵＳＢコントローラに書き込む。
なお、ＵＳＢコントローラはホストに対してデータを送信する、または、ホストからのデータを受信する、通常ＦＩＦＯメモリ（Ｆｉｒｓｔ　Ｉｎ　Ｆｉｒｓｔ　Ｏｕｔ　Ｍｅｍｏｒｙ）からなるエンドポイントを複数もつ（その数は規格によって決められている）。そして、デバイスのＵＳＢコントローラのローカルバスに接続される機器は、エンドポイントのＦＩＦＯメモリに対してアクセスすることになる。
【０００３】
ところで、ＵＳＢバスでのデータの転送は、パケットという単位で行われる。
パケットには転送方向やセットアップ情報を送るトークンパケット、実際のデータであるデータパケット、データ転送結果（成功・失敗）を送るハンドシェークパケットの種類がある。また、転送の種類も、エンドポイントゼロを介して行われるデバイスの初期化や各種情報のやりとりに使用するコントロール転送、転送周期を問わずプリンタのデータのように、まとまった量のデータを転送するバルク転送、マウス、キーボードのステータスを送るような一定周期で少量のデータを送るインタラプト転送、音声データなどリアルタイムのデータを送るときにデータの正当性を保証しない代わりにバンド幅を保証するアイソクロナス転送、の４つのデータ転送のモードがある。
このうち、コントロール転送については、ユーザ回路の負担を減らす為にユーザ回路の介在無しにＵＳＢコントローラがホストからのデータ送受信の要求に対して応答を行う場合がある。ＵＳＢコントローラがユーザ回路の介在無しにホストからのデータ送信要求に対してデータ送信を行う場合、従来はホストに対する送信データをＵＳＢコントローラの動作に関する各種設定を行うレジスタに格納しておき、その値を常にシリアル入力エンジンに出力しておくか、ホストからの送信要求が来た場合にシリアル入力エンジンに出力して、シリアル入力エンジンがホストに送信するものが知られている。
【０００４】
図５は従来のＵＳＢコントローラの構成である。ＵＳＢトランシーバ１１は、ＵＳＢバスに接続され、図中には示されないＵＳＢホストから送信されたパケットをＵＳＢバスの信号から論理信号に変換して、次に説明するシリアル入力エンジン１２に出力すると同時に、シリアル入力エンジン１２からＵＳＢホストに送信するパケットを論理信号からＵＳＢバスの信号に変換してＵＳＢホストに出力する。シリアル入力エンジン１２は、ＵＳＢトランシーバ１１から入力されるＵＳＢホストから送信されたパケットのうちトークンパケット、ハンドシェークパケットをデコードし、それを基にＵＳＢホストとの通信制御を行い、必要に応じてハンドシェークパケットをＵＳＢトランシーバ１１に出力する。
【０００５】
またシリアル入力エンジン１２は、ＵＳＢホストに出力するデータを、後で説明するメモリ１８からメモリアクセスコントローラ群１３を介して読み出し、制御データを付加してデータパケットとしてＵＳＢトランシーバ１１に出力し、ＵＳＢトランシーバ１１から入力するＵＳＢホストからのデータパケットの中のデータをメモリアクセスコントローラ群１３を介してメモリ１８に書き込む制御を行う。またコントロール転送の自動応答リクエストに対しては、後で説明するレジスタ１６から自動応答データを読み出して、制御データを付加してデータパケットとしてＵＳＢトランシーバ１１に出力する。メモリ１８はＲＡＭで構成されており、ローカルバスから受信してＵＳＢホストへ送信するデータ、およびＵＳＢホストから受信してローカルバスに送信するデータを一時的に保持する。メモリアクセスコントローラ群１３はローカルバスから受信してＵＳＢホストへ送信するデータをメモリ１８に書き込む制御を行うとともに、ＵＳＢホストから受信してローカルバスに送信するデータをメモリ１８から読み出す制御を行うメモリアクセスコントローラ群である。Ｉ／Ｏコントローラ１５は図中には示されないユーザ回路と、メモリアクセスコントローラ群１３と、次に述べるレジスタ１６との間でのデータ転送の制御を行う。レジスタ１６はＵＳＢコントローラ内部モジュールの各種設定を行い、またコントロール転送の自動応答リクエストを格納しておくレジスタである。
【０００６】
なお、メモリアクセスコントローラ群１３は、エンドポイント毎に用意され、エンドポイントゼロ用のメモリコントローラ（図中の１３０）と、コントロール転送以外の転送で使用される複数のエンドポイント用のメモリコントローラ（１３１、１３２、・・・，１３ｎ）と、各メモリコントローラからメモリ１８へのアクセスが同時に複数発生する場合の調停を行うアービター１９から構成される。ここで、エンドポイントゼロ用のメモリコントローラ１３０とその他のメモリコントローラの違いは、エンドポイントゼロ用のメモリコントローラ１３０がコントロール転送で使用されることから、シリアル入力エンジン１２と、ローカルバス双方で書き込み／読み出しが可能であるのに対して、他のエンドポイント用のメモリコントローラでは、エンドポイントの方向に応じて、シリアル入力エンジン１２かローカルバスのうちの一方で書き込みが行われ、他方で読み出しが行われることである。
【０００７】
図５のＵＳＢコントローラではＵＳＢホストに対するデータ送信を伴うコントロール転送のリクエストのとき、自動応答を行うリクエストに対しては、シリアル入力エンジン１２がレジスタ１６に格納した自動応答データを読み出して、制御信号を付加してデータパケットとしてＵＳＢトランシーバ１１に出力してＵＳＢトランシーバ１１でＵＳＢバスの信号に変換してＵＳＢホストに出力する。また、自動応答を行わないリクエストに対しては、リクエストを受信してからユーザ回路からＩ／Ｏコントローラ１５を介してエンドポイントゼロ用メモリコントローラ１３０を介してメモリ１８にデータを書き込み、シリアル入力エンジン１２がメモリ１８からエンドポイントゼロ用メモリコントローラ１３０を介してデータを読み出して、制御信号を付加してデータパケットとしてＵＳＢトランシーバ１１に出力してＵＳＢトランシーバ１１でＵＳＢバスの信号に変換してＵＳＢホストに出力する。
【０００８】
【発明が解決しようとする課題】
しかし、従来の方式では送信データをレジスタに格納しているために、送信データのサイズ・種類等の変更が困難であった。また、レジスタは構成に必要な素子数が他のメモリデバイスに比べて多いので格納するデータ量が増やし難いという問題があった。
そこで、本発明は、ＵＳＢコントローラがユーザ回路の介在無しにホストからのデータ送信要求に対して、送信データのサイズ・種類等の変更が容易な、また、レジスタに格納するよりも回路規模を小さくできるＵＳＢコントローラを提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記の課題を解決するために、本発明の請求項１は、ＵＳＢホストに対するデータ送信を伴うコントロール転送のリクエストに対して、ユーザ回路の介在無しに自動応答を行うＵＳＢコントローラにおいて、各エンドポイントのＦＩＦＯに対応してデータを記憶するメモリを備え、前記リクエストへの応答データをも初期設定の際に予め前記メモリに書き込んでおき、ＵＳＢホストから自動応答を必要とするリクエストが来た際に、シリアル入力エンジンが前記メモリから応答データを読み出して、ＵＳＢホストに出力することを特徴とする。
また、本発明の請求項２は、請求項１記載のＵＳＢコントローラにおいて、前記シリアル入力エンジンおよびユーザ回路双方からの前記メモリへのデータの書き込み／読み出しの際に、各エンドポイント用データおよび前記応答用データ単位でアクセスの制御をするメモリアクセスコントローラを設けたことを特徴とする。
また、本発明の請求項３は、請求項１または２記載のＵＳＢコントローラにおいて、前記メモリが複数の入出力ポートを持つことを特徴とする。
また、本発明の請求項４は、請求項１、２または３記載のＵＳＢコントローラにおいて、ＵＳＢコントローラの動作に関する各種設定行うレジスタを設け、前記メモリに書き込むリクエストへの応答データの種類・内容・サイズ、およびエンドポイントのＦＩＦＯのサイズをユーザが変更可能に前記レジスタに保持するようにしたことを特徴とする。
また、本発明の請求項５は、請求項１記載のＵＳＢコントローラにおいて、ＵＳＢホストから自動応答を必要とするリクエストが来た際に、前記シリアル入力エンジンが応答データの種類・内容・サイズに基づいて、前記メモリのアドレスから応答データを読み出してＵＳＢホストに出力することを特徴とする。
また、本発明の請求項６は、請求項１記載のＵＳＢコントローラにおいて、ＵＳＢコントローラの動作に関する各種設定を行うレジスタを設け、ＵＳＢコントローラの初期設定の際にユーザ回路から応答データを前記メモリに書き込むと同時に前記レジスタにリクエストの種類・内容・サイズに対応した値を設定することを特徴とする。
また、本発明の請求項７は、請求項１記載のＵＳＢコントローラにおいて、予め応答データを収めた不揮発メモリと、コントローラの動作に関する各種設定を行うレジスタとを設け、初期設定の際に前記不揮発メモリの応答データを前記メモリに書き込むと同時に、前記レジスタにリクエストの種類・内容・サイズに対応した値を設定することを特徴とする。
【００１０】
【発明の実施の形態】
以下、図面を参照して、本発明の実施形態を詳細に説明する。図１はＵＳＢバスの接続概念図である。図中で１はルートＨＵＢ機能をもつＵＳＢホスト、２ａ、２ｂはＨＵＢ、３ａ〜３ｄはデバイスである。このようにＵＳＢでは１つのホストの下に複数のＨＵＢまたはデバイスがツリー状に接続される。また、デバイスは図２のようにＵＳＢコントローラ２１、ターゲットの機器２２から構成される。
図３は本発明のＵＳＢコントローラの構成である。図３でＵＳＢトランシーバ２１はＵＳＢバスに接続されており、図中には示されないＵＳＢホストから送信されたパケットを、ＵＳＢバスの信号から論理信号に変換して、シリアル入力エンジン２２に出力する一方、シリアル入力エンジン２２からＵＳＢホストに送信するパケットを論理信号からＵＳＢバスの信号に変換して、ＵＳＢホストに出力する。シリアル入力エンジン２２はＵＳＢトランシーバ２１から入力するＵＳＢホストから送信されたパケットのうちトークンパケット、ハンドシェークパケットをデコードし、それを基にＵＳＢホストとの通信制御を行い、必要に応じてハンドシェークパケットをＵＳＢトランシーバ２１に出力するとともに、ＵＳＢホストに出力するデータを後で説明するメモリ２らメモリアクセスコントローラ群２３を介して読み出し、制御データを付加してデータパケットとしてＵＳＢトランシーバ２１に出力する。また、シリアル入力エンジン２２はＵＳＢトランシーバ２１から入力するＵＳＢホストからのデータパケットの中のデータをメモリアクセスコントローラ群２３を介してメモリ２８に書き込む制御を行い、更にコントロール転送の自動応答リクエストに対しては後で説明するレジスタ２６から自動応答データを読み出し、制御データを付加してデータパケットとしてＵＳＢトランシーバ２１に出力する。メモリ２８はＲＡＭで構成される、ローカルバスから受信しＵＳＢホストへ送信するデータ、およびＵＳＢホストから受信しローカルバスに送信するデータを一時的に保持するメモリである。メモリアクセスコントローラ群２３は、ローカルバスから受信してＵＳＢホストへ送信するデータをメモリ２８に書き込む制御を行うとともに、ＵＳＢホストから受信してローカルバスに送信するデータをメモリ２８から読み出す制御を行うものである。Ｉ／Ｏコントローラ２５は図中には示されないユーザ回路と、メモリコントローラ群２３と、次に述べるレジスタとの間でのデータ転送の制御を行う。レジスタ２６はＵＳＢコントローラ内部モジュールの各種設定を行うレジスタである。
【００１１】
メモリアクセスコントローラ群２３は、エンドポイント毎に、また、コントロール転送の自動応答値用に用意されたメモリコントローラで、エンドポイントゼロ用のメモリコントローラ（図中の２３０）と、コントロール転送以外の転送で使用される複数のエンドポイント用のメモリコントローラ（２３１、２３２、・・・、２３ｎ）と、コントロール転送の自動応答値用のメモリコントローラ２４と、各メモリコントローラからメモリ２８へのアクセスが同時に複数発生する場合の調停を行うアービター２９から構成される。ここで、エンドポイントゼロ用のメモリコントローラ２３０とその他のメモリコントローラの違いは、エンドポイントゼロ用のメモリコントローラ２３０が、コントロール転送で使用されることからシリアル入力エンジン２２と、ローカルバスの双方で書き込み／読み出しが可能であるのに対して、他のエンドポイント用のメモリコントローラでは、エンドポイントの方向に応じてシリアル入力エンジン２２と、ローカルバスのうちの一方で書き込みが行われ、他方で読み出しが行われることである。
なお、図中には示さないが、この他に内蔵する場合があるモジュールとして、各モジュールにクロックを供給するＣＬＫモジュール、エンドポイントとユーザ回路との間でＤＭＡ転送を行う為のＤＭＡコントローラがあげられる。なお、ＵＳＢトランシーバ２１は、ＵＳＢコントローラとは別チップとする場合もある。
また、各メモリコントローラからメモリ２８へのアクセスであるが、メモリ２８に通常のＳＲＡＭを用いる場合は、各メモリコントローラのシリアル入力エンジン側とローカルバス側のアクセスを共通のアービター２９で調停して行う。メモリ２８に２ポートＳＲＡＭを用いる場合は、各メモリコントローラのシリアル入力エンジン側とローカルバス側のアクセスを別々のアービター２９で調停して行う。
【００１２】
図３のＵＳＢコントローラでは、電源投入後まず初期設定が行われる。初期設定ではユーザ回路からＩ／Ｏコントローラ２５を介してレジスタ２６にＵＳＢコントローラ内部モジュールの各種設定が行われる。この際コントロール転送のデバイスリクエストの自動応答データは、ユーザ回路からＩ／Ｏコントローラ２５、自動応答値用メモリコントローラ２４を介してメモリ２８に書き込まれる。同時に自動応答データをシリアル入力エンジンからアクセスする場合のスタートアドレスとサイズ、自動応答を行うリクエストの種類を変えることが可能な場合は、それも加えた情報をＩ／Ｏコントローラ２５を介してレジスタ２６に書き込む。そして、初期設定終了後、ＵＳＢホストへの接続が行われ、実際のデータ転送が開始される。
【００１３】
ＵＳＢでの転送の種類は、先に説明したようにコントロール転送、バルク転送、インタラプト転送、アイソクロナス転送の４つの転送モードがあるが、本発明はこのうち、コントロール転送に関わるものである。
以下に、その手順を説明する。
コントロール転送は、セットアップステージ、データステージ、ステータスステージの３つのステージからなる。
セットアップステージは、ＵＳＢホストがＵＳＢコントローラに対してセットアップトークンパケットを送信することで開始する。ＵＳＢホストは続けて８バイトのデータパケットを送信してＵＳＢコントローラにリクエストの内容を示す。
ＵＳＢコントローラでは、ＵＳＢトランシーバ２１がＵＳＢバスの信号を論理信号に変換してシリアル入力エンジン２２に出力する。シリアル入力エンジン２２ではＵＳＢトランシーバ２１からの入力信号をデコードして、セットアップトークンと８バイトのデータパケットを受信したことが判ると、ＵＳＢトランシーバ２１にＡＣＫハンドシェークパケットを出力する。ＵＳＢトランシーバ２１ではシリアル入力エンジン２２から入力したＡＣＫハンドシェークパケットをＵＳＢバスの信号に変換してＵＳＢホストに返信してリクエストを受信したことを示す。また、シリアル入力エンジン２２では同時にリクエストのデコードが行われる。ここまでがセットアップステージである。
この後はリクエストの種類によって、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲやＧＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮのようにＵＳＢホストにデータを送信する場合や、ＳＥＴ＿ＤＥＳＣＲＩＰＴＯＲのようにＵＳＢホストからデータを受信する場合や、ＳＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮやＳＥＴ＿ＡＤＤＲＥＳＳのようにデータ送受信を伴わない場合とで動作が異なってくる。
【００１４】
はじめに、ＧＥＴ＿ＤＥＳＣＲＩＰＴＯＲやＧＥＴ＿ＣＯＮＦＩＧＵＲＡＴＩＯＮのようにＵＳＢホストにデータを送信するリクエストの場合のデータステージであるが、そのリクエストが自動応答に対応する必要があるときは、シリアル入力エンジン２２は該当するリクエストをメモリ２８から読み出す為に、リクエストが格納されている領域のスタートアドレスを自動応答値メモリ用メモリコントローラ２４に出力する等の準備を行う。リクエストが自動応答を必要としないときは、シリアル入力エンジン２２はセットアップリクエストの受信信号をレジスタ２６に出力する。レジスタ２６では、セットアップリクエストの受信信号を受けるとユーザ回路に対して割込み信号を出力する。ユーザ回路は割込みの要因確認を行い、この場合それがセットアップリクエスト受信であるので、セットアップリクエストの内容を示すレジスタからリクエストの内容を確認し、それに対応するデータをＩ／Ｏコントローラ２５、エンドポイントゼロ用メモリコントローラ２３０を介してメモリ２８に書き込む。エンドポイントゼロ用メモリコントローラ２３０では自動応答値メモリからのデータの書き込みと同様に、ユーザ回路からのデータ書き込みが終了するとデータ送信の準備が出来たことをシリアル入力エンジン２２に伝える。
一方、ＵＳＢホストは８バイトのデータパケットに対するＡＣＫハンドシェークパケットを受信した後でイントークンパケットをＵＳＢコントローラに送信してデータの送信を要求する。
【００１５】
ＵＳＢコントローラでは、ＵＳＢトランシーバ２１で論理信号に変換されたＵＳＢホストからのイントークンパケットがシリアル入力エンジン２２に入力すると、シリアル入力エンジン２２はエンドポイントゼロに送信データの準備が出来ていない時はＮＡＫハンドシェークパケットをＵＳＢトランシーバ２１に出力し、ＵＳＢコントローラ２１はそれをＵＳＢバスの信号に変換してＵＳＢホストに返信してデータが準備出来ていないことを通知する。この場合ＵＳＢホストは一定時間経過後再びＵＳＢコントローラにイントークンパケットを送信する。一方、データが準備出来ている時、そのリクエストが自動応答に対応する必要がある場合は、シリアル入力エンジン２２は自動応答値メモリコントローラ２４を、そうでない場合は、エンドポイントゼロ用コントローラ２３０を介してメモリ２８からデータを読み出し、制御信号を付加してデータパケットとしてＵＳＢトランシーバ２１に出力し、ＵＳＢトランシーバ２１ではそれをＵＳＢバスの信号に変換してホストに返信する。ＵＳＢコントーラからのデータパケットの受信が成功した場合ＵＳＢホストはＡＣＫハンドシェークパケットをＵＳＢコントローラに送信する。ここまでがデータを送信するリクエストの場合のデータステージである。なお、ＵＳＢコントーラからのデータパケットの返信が失敗した場合ＵＳＢホストはＵＳＢコントローラに一定時間送信を行わないことでデータパケットの受信失敗をＵＳＢコントローラに示し、一定時間経過後再びＵＳＢコントローラにイントークンパケットを送信する。
【００１６】
次にＵＳＢホストにデータを送信するリクエストの場合のステータスステージであるが、ＵＳＢホストは、先のデータステージでのＡＣＫハンドシェークパケット送信後にアウトトークンパケットと引き続いてゼロレングスデータをＵＳＢコントローラに送信する。ＵＳＢコントローラではＵＳＢトランシーバ２１で論理信号に変換されたＵＳＢホストからのアウトトークンパケットとゼロレングスパケット（制御信号のみで構成され、実際のデータが含まれないデータパケット）がシリアル入力エンジン２２に入力すると、シリアル入力エンジン２２は先のデータステージでの後処理が終わっている場合はＡＣＫハンドシェークパケットをＵＳＢトランシーバ２１に出力し、ＵＳＢコントローラ２１はそれをＵＳＢバスの信号に変換してＵＳＢホストに返信する。ここまでがデータを送信するリクエストの場合のステータスステージである。なお、ＵＳＢホストからのアウトトークンパケットとゼロレングスパケットがシリアル入力エンジン２２に入力した際にデータステージでの後処理が終わっていない場合は、シリアル入力エンジン２２はＮＡＫハンドシェークパケットをＵＳＢトランシーバ２１に出力し、ＵＳＢコントローラ２１はそれをＵＳＢバスの信号に変換してＵＳＢホストに返信する。この場合ＵＳＢホストは一定時間経過後再びアウトトークンパケットと引き続いてゼロレングスデータをＡＣＫハンドシェークパケットが返信されるまでＵＳＢコントローラに出力する。
【００１７】
なお、以上はＵＳＢ１．１規格の場合であり、ＵＳＢ２．０規格ではＵＳＢホストがアウトトークンパケットとゼロレングスデータパケットを送信する前にピングトークンパケットをＵＳＢコントローラに出力する点でＵＳＢ１．１と異なる。ＵＳＢコントローラではＵＳＢトランシーバ２１がＵＳＢバスの信号を論理信号に変換してシリアル入力エンジン２２に出力し、シリアル入力エンジン２２がＵＳＢトランシーバ２１からの入力信号をデコードしてピングトークンを受信すると、エンドポイントゼロ用メモリコントローラ２３０はメモリ２８のエンドポイントゼロ用の領域がデータ書き込み可能を示す場合は、ＡＣＫハンドシェークパケットを、データ書き込みが不可能な場合はＮＡＫハンドシェークパケットをＵＳＢトランシーバ２１に出力する。ＵＳＢトランシーバ２１では入力したハンドシェークパケットをＵＳＢバスの信号に変換してＵＳＢホストに返信する。ＵＳＢホストではＡＣＫハンドシェークパケットが返信された場合は以後ＵＳＢ１．１と同様のステータスステージの動作が行われる。一方ＮＡＫハンドシェークパケットが返信された場合は、再びＡＣＫハンドシェークパケットが返信されるまでＵＳＢコントローラに対してピングトークンパケットを送信する。
【００１８】
次に、ＳＥＴ＿ＤＥＳＣＲＩＰＴＯＲのようにＵＳＢホストからデータを受信するリクエストの場合のデータステージであるが、ＵＳＢホストは先のセットアップステージでのＡＣＫハンドシェーク受信後にアウトトークンパケットを、続けてデータパケットをＵＳＢコントローラに送信する。
ＵＳＢコントローラでは、ＵＳＢトランシーバ２１がＵＳＢバスの信号を論理信号に変換してシリアル入力エンジン２２に出力する。シリアル入力エンジン２２ではＵＳＢトランシーバ２１からの入力信号をデコードしてアウトトークンを受信すると直ちにエンドポイントゼロに対するデータ書き込みの準備を行い、ＵＳＢトランシーバ２１で論理信号に変換されたデータパケットが入力すると、そのデータパケットの中のデータをエンドポイントゼロ用メモリコントローラ２３０を介してメモリ２８へ書き込む。そして、メモリ２８へのデータ書き込みが正常に終了すると、シリアル入力エンジン２２はＵＳＢトランシーバ２１にＡＣＫハンドシェークパケットを出力し、ＵＳＢトランシーバ２１はそれをＵＳＢバスの信号に変換してＵＳＢホストに出力する。ここまでがデータを受信するリクエストの場合のデータステージである。　一方、ここでＣＲＣエラー等がありＵＳＢコントーラからのデータパケットの受信、あるいはエンドポイントゼロへの書き込みが失敗した場合、ＵＳＢホストはＵＳＢコントローラに一定時間送信を行わないことでデータパケットの受信失敗をＵＳＢコントローラに示し、一定時間経過後再びＵＳＢコントローラにイントークンパケットを送信する。
【００１９】
なお、エンドポイントゼロ用メモリコントローラ２３０では、シリアル入力エンジン２２からのメモリ２８へのデータ書き込みが成功すると、レジスタ２６に対してデータ受信信号を出力する。レジスタ２６では、データ受信信号が入力するとユーザ回路に対して割込み信号を出力する。ユーザ回路は割込みの要因確認を行う、この場合それがデータ受信信号であるので、エンドポイントゼロ用メモリコントローラ２３０、Ｉ／Ｏコントローラ２５を介して、メモリ２８からのデータ読み出しを開始する。
以上はＵＳＢ１．１規格の場合であり、ＵＳＢ２．０規格ではＵＳＢホストがアウトトークンパケットとデータパケットを送信する前にピングトークンパケットをＵＳＢコントローラに出力する点でＵＳＢ１．１とは異なる。ＵＳＢコントローラではＵＳＢトランシーバ２１がＵＳＢバスの信号を論理信号に変換してシリアル入力エンジン２２に出力し、シリアル入力エンジン２２がＵＳＢトランシーバ２１からの入力信号をデコードしてピングトークンを受信すると、エンドポイントゼロがデータ書き込み可能な場合はＡＣＫハンドシェークパケットを、データ書き込みが不可能な場合はＮＡＫハンドシェークパケットをＵＳＢトランシーバ２１に出力する。ＵＳＢトランシーバ２１では入力したハンドシェークパケットをＵＳＢバスの信号に変換してＵＳＢホストに返信する。
ＵＳＢホストではＡＣＫハンドシェークパケットが返信された場合は以後ＵＳＢ１．１同様のデータステージの動作が行われる。一方ＮＡＫハンドシェークパケットが返信された場合は、再びＡＣＫハンドシェークパケットが返信されるまでＵＳＢコントローラに対してピングトークンパケットを送信する。
【００２０】
次にＵＳＢホストからデータを受信するリクエストの場合のステータスステージであるが、ＵＳＢホストは先のデータステージでのＡＣＫハンドシェークパケット送信後にイントークンパケットをＵＳＢコントローラに送信する。ＵＳＢコントローラではＵＳＢトランシーバ２１がＵＳＢバスの信号を論理信号に変換してシリアル入力エンジン２２に出力し、シリアル入力エンジン２２がＵＳＢトランシーバ２１からの入力信号をデコードしてイントークンを受信すると、先のデータステージでエンドポイントゼロに書き込まれたデータに対するユーザ回路からの読み出しが終了している場合はゼロレングスデータのデータパケットをＵＳＢトランシーバに出力し、ＵＳＢトランシーバ２１はそれをＵＳＢバスの信号に変換してＵＳＢホストに出力する。ＵＳＢホストはゼロレングスデータパケットを受信するとＡＣＫハンドシェークパケットをＵＳＢコントローラに出力する。ここまでがデータを送信するリクエストの場合のステータスステージである。なお、エンドポイントゼロに書き込まれたデータに対するユーザ回路からの読み出しが終了していない場合は、シリアル入力エンジン２２がＮＡＫハンドシェークパケットをＵＳＢトランシーバ２１に出力し、ＵＳＢコントローラ２１はそれをＵＳＢバスの信号に変換してＵＳＢホストに返信する。この場合ＵＳＢホストは一定時間経過後再びイントークンパケットをゼロレングスデータパケットが返信されるまでＵＳＢコントローラに出力する。
最後にデータ送受信を伴わないリクエストの場合、データステージは無く、シリアル入力エンジン２２は、セットアップステージで受信した８バイトのデータを基にＵＳＢコントローラのアドレス等の設定値の更新やＨＡＬＴ等の設定を行い、データ転送の方向に応じてデータ送受信を伴う場合と同様のステータスステージが行われる。
【００２１】
図４は、本発明のＵＳＢコントローラの別の構成である。同じ構成要素には同じ参照番号が付されているので、重複する説明は省略する。図４のＵＳＢコントローラの動作は、初期設定の際に予め応答データを収めたＲＯＭまたはフラッシュメモリ等の電源遮断時もデータの保持が可能な不揮発メモリ２７から応答データをＲＡＭに読み込み、同時にコントローラの動作に関する各種設定を行うレジスタに、ＲＡＭに書き込まれるリクエストの種類・内容・サイズに対応した値を設定することを除いて図３のＵＳＢコントローラと同じである。
【００２２】
【発明の効果】
以上説明したように本発明によれば、リクエストの応答データを、初期設定の際に予めエンドポイントのＦＩＦＯと共有するＲＡＭに書き込んでおき、ＵＳＢホストから自動応答を必要とするリクエストが来た際に、シリアル入力エンジンが予め書き込んでおいた応答データをＲＡＭから読み出してＵＳＢホストに出力するので、ユーザ回路の介在無しに自動応答を行う従来のものよりも自由度が高く、回路規模の小さいＵＳＢコントローラを実現できる。
また、リクエストの応答データを、初期設定の際に予め書き込んでおくエンドポイントのＦＩＦＯと共有するＲＡＭが複数の入出力ポートを持つことで、シリアル入力エンジン側、ユーザ回路側双方からＲＡＭに同時にアクセス可能であり、より高速なＵＳＢコントローラを実現できる。
また、ＲＡＭに書き込むリクエストの応答データの種類・内容・サイズをＵＳＢコントローラの動作に関する各種設定を行うレジスタに保持して、ユーザが変更可能とすることで柔軟性の有るＵＳＢコントローラを実現できる。
また、初期設定の際に予め応答データを収めたＲＯＭまたはフラッシュメモリ等の電源遮断時もデータの保持が可能な不揮発メモリから応答データをＲＡＭに書き込み、同時にコントローラの動作に関する各種設定を行うレジスタに、ＲＡＭに書き込まれるリクエストの種類・内容・サイズに対応した値を設定することで、ユーザ回路が初期設定に要する時間を減らした立ち上がりの速いＵＳＢコントローラを実現できる。
【図面の簡単な説明】
【図１】ＵＳＢバスの接続概念図である。
【図２】デバイスの構成図である。
【図３】本発明の第１の実施の形態に係るＵＳＢコントローラの構成図である。
【図４】本発明の第２の実施の形態に係るＵＳＢコントローラの構成図である。
【図５】従来のＵＳＢコントローラの構成図である。
【符号の説明】
２１　ＵＳＢトランシーバ、２２　シリアル入力エンジン（ＳＩＥ）、２３　メモリコントローラ群、２４　自動応答値用のメモリコントローラ、２５　Ｉ／Ｏコントローラ、２６　レジスタ、２７　ＲＯＭ、２８　メモリ、２９　アービター
【図１】
2004021859.tif 000003
【図２】
2004021859.tif 000004
【図３】
2004021859.tif 000005
【図４】
2004021859.tif 000006
【図５】
2004021859.tif 000007