(57)【特許請求の範囲】
【請求項１】
アップポートと、ダウンポートとを備えたＵＳＢ−ＨＵＢデバイスであって、
前記アップポートに入力されたトランザクションを制御信号に応答して転送するシリアルインターフェースエンジンと、
前記アップポートに入力された前記トランザクションのトークンパケットのアドレスフィールドとＨＵＢアドレスとを比較すると共に前記トークンパケットのアドレスフィールドとデバイスアドレスとを比較し少なくとも一方が一致した場合には前記制御信号を出力し、前記シリアルインターフェースエンジンから前記トランザクションを受け取るエンドポイント部とを備え、
前記エンドポイント部は前記転送されたトランザクションを受け取り、前記トランザクションが前記ＨＵＢデバイスのＨＵＢ機能に対するコントロール転送である場合には、データパケットに含まれたリクエスト内容に従い、前記ＨＵＢ機能に対する設定処理を行なうＨＵＢ用リクエスト処理部と、前記トランザクションが前記ＨＵＢデバイス内のデバイス機能に対するコントロール転送である場合には、前記デバイス機能に対する設定処理を行なうデバイス用リクエスト処理部とを更に備えることを特徴とするＵＳＢ−ＨＵＢデバイス。
【請求項２】
アップポートと、ダウンポートとを備えたＵＳＢ−ＨＵＢデバイスであって、
前記アップポートに入力されたトランザクションを制御信号に応答して転送するシリアルインターフェースエンジンと、
前記アップポートに入力された前記トランザクションのトークンパケットのアドレスフィールドとＨＵＢアドレスとを比較すると共に前記トークンパケットのアドレスフィールドとデバイスアドレスとを比較し少なくとも一方が一致した場合には前記制御信号を出力し、前記シリアルインターフェースエンジンから前記トランザクションを受け取るエンドポイント部と、
前記ＵＳＢ−ＨＵＢデバイスが搭載されたチップの外のデバイスと前記アップポートに接続されるホストコンピュータとを前記ダウンポートを介して接続するためのポート制御部と、前記ダウンポートを介さずにデバイスと前記ホストコンピュータとを接続するための仮想ポート制御部とを備えることを特徴とするＵＳＢ−ＨＵＢデバイス。
【請求項３】
前記データパケットに応答して前記仮想ポート制御部に対する制御を行なうことを特徴とするデバイス用リクエスト処理部を更に備えることを特徴とする請求項２記載のＵＳＢ−ＨＵＢデバイス。
【請求項４】
アップポートと、ダウンポートとを備えたＵＳＢ−ＨＵＢデバイスであって、
前記アップポートに入力されたトランザクションを制御信号に応答して転送するシリアルインターフェースエンジンと、
前記アップポートに入力された前記トランザクションのトークンパケットのアドレスフィールドとＨＵＢアドレスとを比較すると共に前記トークンパケットのアドレスフィールドとデバイスアドレスとを比較し少なくとも一方が一致した場合には前記制御信号を出力し、前記シリアルインターフェースエンジンから前記トランザクションを受け取るエンドポイント部と、
前記ＨＵＢデバイスのＨＵＢ機能に対するアドレスを保持するＨＵＢアドレスレジスタと、
前記ダウンポートを介さずに接続されたデバイスに対するアドレスを保持するデバイスアドレスレジスタとを備えることを特徴とするＵＳＢ−ＨＵＢデバイス。
【請求項５】
前記トランザクションのデータパケットが前記ＨＵＢ機能に対するアドレス設定リクエストの場合には前記ＨＵＢアドレスレジスタにＨＵＢアドレスを
設定するＨＵＢ用リクエスト処理部と、前記トランザクションのデータパケットが前記デバイスに対するアドレス設定リクエストの場合には、前記デバイスアドレスレジスタにデバイスアドレスを設定するデバイス用リクエスト処理部とを備えることを特徴とする請求項４記載のＵＳＢ−ＨＵＢデバイス。
【請求項６】
アップポートに接続されたホストコンピュータからトランザクションを受け取り、制御信号に応答して前記トランザクションを転送するシリアルインターフェースエンジンと、
ダウンポートと、
前記ダウンポートに対して設けられたポート制御部と、
前記ダウンポートを介さずに接続されるデバイスに対して設けられた仮想ポート制御部と、
ＨＵＢアドレスを保持するＨＵＢアドレスレジスタと、
前記デバイスのデバイスアドレスを保持するデバイスアドレスレジスタと、
前記トランザクションのトークンパケットのアドレスフィールドと前記ＨＵＢアドレス及び前記デバイスアドレスを比較し、少なくとも一方が一致した場合一致信号を出力すると共に前記一致信号に応答した前記制御信号を出力する比較器と、
第１のリクエスト信号に応答してＨＵＢアドレスレジスタ、ポート制御部、仮想ポート制御部への設定を行なうＨＵＢ用リクエスト処理部と、
第２のリクエスト信号に応答してデバイスアドレスレジスタへの設定を行なうデバイス用リクエスト処理部と、
前記制御信号に応答して転送された前記トランザクションを受け取り、前記トランザクションがコントロール転送の場合、前記トランザクションのデータパケットを転送し、前記トランザクションがインターラプト転送の場合、前記トランザクションのトークンパケットに従ってデータ転送を行なう制御ブロックと、
前記制御ブロックからの前記データパケットをデコードして前記第１または第２のリクエスト信号を発生させるデコーダとを備えることを特徴とするＵＳＢ−ＨＵＢデバイス。
【請求項７】
ホストから供給されるトランザクションのトークンパケットのアドレスフィールドをラッチするステップと、
ＨＵＢアドレスレジスタの値と前記アドレスフィールドとを比較するステップと、
前記比較により一致の場合、自局アドレスをＨＵＢアドレスの値とするステップと、
前記比較により不一致の場合、自局アドレスをデバイスアドレスの値とするステップと、
前記自局アドレスと前記アドレスフィールドとを比較する自局アドレス比較ステップと、
前記自局アドレス比較ステップにより一致した場合、前記トランザクションが第１の転送か、第２の転送かを判定し、第１の転送の場合には前記トランザクションのデータパケットを転送し、第２の転送の場合には、前記トランザクションに基づく処理を実行するステップと、
前記転送されたデータパケットからリクエストをデコードするステップと、
前記ＨＵＢアドレスと前記アドレスフィールドが一致している場合には、ＨＵＢ用リクエストとして処理を行なうステップと、
前記デバイスアドレスと前記アドレスフィールドが一致している場合かつ、仮想ポート制御部にイネーブルが設定されている場合には、デバイス用リクエストとして処理を行なうステップとを備えることを特徴とするＵＳＢ−ＨＵＢデバイスの制御方法。
【請求項８】
ホストから供給されるトランザクションのトークンパケットのアドレスフィールドをラッチするステップと、
ＨＵＢアドレスレジスタの値及びデバイスアドレスと前記アドレスフィールドとを比較するステップと、
前記比較により少なくとも一方が一致した場合、前記トランザクションが第１の転送か、第２の転送かを判定し、第１の転送の場合には前記トランザクションのデータパケットを転送し、第２の転送の場合には、前記トランザクションに基づく処理を実行するステップと、
前記転送されたデータパケットからリクエストをデコードするステップと、
前記ＨＵＢアドレスと前記アドレスフィールドが一致していた場合には、ＨＵＢ用リクエストとして処理を行なうステップと、
前記デバイスアドレスと前記アドレスフィールドが一致していた場合かつ、仮想ポート制御部にイネーブルが設定されている場合には、デバイス用リクエストとして処理を行なうステップとを備えることを特徴とするＵＳＢ−ＨＵＢデバイスの制御方法。
【請求項９】
ホストが接続されるアップポートと、
ダウンポートを介してデバイスを接続するためのポート制御部と、前記ダウンポートを介さずにデバイスを接続するための仮想ポート制御部とを備えるＵＳＢ−ＨＵＢデバイスの制御方法であって、
ホストから出力されるコントロール転送である第１のトランザクションによりＨＵＢアドレスを設定するステップと、
前記ホストから出力される前記コントロール転送である第２のトランザクションにより前記仮想ポート制御部にイネーブルを設定するステップと、
前記ホストから出力される前記コントロール転送である第３のトランザクション及び前記仮想ポート制御部からのイネーブルにより前記ＵＳＢ−ＨＵＢデバイス内にデバイスアドレスを設定するステップと、
前記ホストから出力されるインターラプト転送により前記デバイスアドレスによって特定されるデバイスの情報を読むあるいは書くステップとを備えることを特徴とするＵＳＢ−ＨＵＢデバイスの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ユニバーサル・シリアル・バス（ＵＳＢ）に使用されるＨＵＢデバイスに関し、特にＨＵＢデバイス内のシリアルインターフェースエンジンを共用するための制御回路を備えたＵＳＢ−ＨＵＢデバイスおよびその制御方法に関する。
【０００２】
【従来の技術】
近年、ホストコンピュータ（以下、ホスト）に、キーボード、タッチパネル、トラックボールやマウス等のヒューマン・インターフェース・デバイス（ＨＩＤ）、プリンタ、スキャナ、デジタルカメラ、大容量メモリなどをデバイスとして、ホストとこれらデバイスとの間を接続する規格化されたシリアル通信のインターフェースとしてユニバーサル・シリアル・バス（ＵＳＢ）が注目されている。
【０００３】
このようなＵＳＢを備えた複数のデバイスをホストに接続するために、一つのアップポートと複数のダウンポートを有するＵＳＢ−ＨＵＢデバイス（以下、ＨＵＢ）が用いられる。
【０００４】
ＨＵＢ用チップ６１は、図６に示すように、ホストと接続するためのアップポート６１８、シリアル・インターフェース・エンジン（ＳＩＥ）６１１、エンドポイント（ＥＰ）部６１２、ＨＵＢとしての処理を行なうＨＵＢ用リクエスト処理部６１３及びダウンポート数に対応して設けられたＰＯＲＴ制御部６１４、６１５（ここでは２つだけ示す）、複数のダウンポート６１６及び６１７とから構成されている。
【０００５】
この複数のダウンポート６１６及び６１７に、デバイスを接続することによりホストと各デバイスがＨＵＢ用チップ６１を介してホストと接続される。ここでは、デバイスとしてダウンポート６１７にＨＩＤ６３が接続され、ダウンポート６１６には、デバイスが接続されていないものとして説明する。
【０００６】
ＨＩＤ６３をＨＵＢ用チップ６１と接続するためには、ダウンポート６１７に、ＳＩＥ６２１、エンドポイント部６２２、ＨＩＤ６３に関する処理を行なうＨＩＤ用リクエスト処理部６２３とを備えたＨＩＤ用チップのアップポートを接続することが必要である。
【０００７】
【発明が解決しようとする課題】
このように、従来のＵＳＢインターフェースでは、ＵＳＢの仕様上、ＨＵＢのダウンポートにデバイスを接続する場合、ＨＩＤ用リクエスト処理部に対してもＳＩＥを設ける必要性がある。すなわち、ＨＵＢの機能と、デバイスの機能を同一のアドレスにまとめることができないため、これらデバイスの機能毎に別々のアドレスを持っている必要があり、そのため、それぞれの機能に対してアドレスを識別するためのＳＩＥを設ける必要がある。そのため、回路規模が増大し、コストが上昇するという問題点を有している。
【０００８】
したがって、本発明では、ＨＵＢに用いられているＳＩＥを用いてデバイスをホストに認識させるため、ＨＵＢのＳＩＥを共有する構成を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明に係る第１のＵＳＢ−ＨＵＢデバイスは、アップポートと、ダウンポートとを備えたＵＳＢ−ＨＵＢデバイスであって、前記アップポートに入力されたトランザクションを制御信号に応答して転送するシリアルインターフェースエンジンと、前記アップポートに入力された前記トランザクションのトークンパケットのアドレスフィールドとＨＵＢアドレスとを比較すると共に前記トークンパケットのアドレスフィールドとデバイスアドレスとを比較し少なくとも一方が一致した場合には前記制御信号を出力し、前記シリアルインターフェースエンジンから前記トランザクションを受け取るエンドポイント部とを備えることを特徴とする。
【００１０】
また、本発明に係る第２のＵＳＢ−ＨＵＢデバイスは、アップポートに接続されたホストコンピュータからトランザクションを受け取り、制御信号に応答して前記トランザクションを転送するシリアルインターフェースエンジンと、ダウンポートと、前記ダウンポートに対して設けられたポート制御部と、前記ダウンポートを介さずに接続されるデバイスに対して設けられた仮想ポート制御部と、ＨＵＢアドレスを保持するＨＵＢアドレスレジスタと、前記デバイスのデバイスアドレスを保持するデバイスアドレスレジスタと、前記トランザクションのトークンパケットのアドレスフィールドと前記ＨＵＢアドレス及び前記デバイスアドレスを比較し、少なくとも一方が一致した場合一致信号を出力すると共に前記一致信号に応答した前記制御信号を出力する比較器と、第１のリクエスト信号に応答してＨＵＢアドレスレジスタ、ポート制御部、仮想ポート制御部への設定を行なうＨＵＢ用リクエスト処理部と、第２のリクエスト信号に応答してデバイスアドレスレジスタへの設定を行なうデバイス用リクエスト処理部と、前記制御信号に応答して転送された前記トランザクションを受け取り、前記トランザクションがコントロール転送の場合、前記トランザクションのデータパケットを転送し、前記トランザクションがインターラプト転送の場合、前記トランザクションのトークンパケットに従ってデータ転送を行なう制御ブロックと、前記制御ブロックからの前記データパケットをデコードして前記第１または第２のリクエスト信号を発生させるデコーダとを備えることを特徴とする。
【００１１】
このように第１及び第２のＵＳＢ―ＨＵＢデバイスでは、デバイスに対して送られたトランザクションをＵＳＢ−ＨＵＢデバイスのシリアルインターフェースエンジンによって認識することができ、エンドポイント部で実行することができる。したがって、ＵＳＢ−ＨＵＢデバイスのシリアルインターフェースエンジンをＨＵＢとデバイスとで兼用することが可能となる。
【００１２】
本発明に係る第１のＵＳＢ−ＨＵＢデバイスの制御方法は、ホストから供給されるトランザクションのトークンパケットのアドレスフィールドをラッチするステップと、ＨＵＢアドレスレジスタの値と前記アドレスフィールドとを比較するステップと、前記比較により一致の場合、自局アドレスをＨＵＢアドレスの値とするステップと、前記比較により不一致の場合、自局アドレスをデバイスアドレスの値とするステップと、前記自局アドレスと前記アドレスフィールドとを比較する自局アドレス比較ステップと、前記自局アドレス比較ステップにより一致した場合、前記トランザクションが第１の転送か、第２の転送かを判定し、第１の転送の場合には前記トランザクションのデータパケットを転送し、第２の転送の場合には、前記トランザクションに基づく処理を実行するステップと、前記転送されたデータパケットからリクエストをデコードするステップと、前記ＨＵＢアドレスと前記アドレスフィールドが一致している場合には、ＨＵＢ用リクエストとして処理を行なうステップと、前記デバイスアドレスと前記アドレスフィールドが一致している場合かつ、仮想ポート制御部にイネーブルが設定されている場合には、デバイス用リクエストとして処理を行なうステップとを備えることを特徴とする。
【００１３】
本発明に係る第２のＵＳＢ−ＨＵＢデバイスの制御方法は、ホストから供給されるトランザクションのトークンパケットのアドレスフィールドをラッチするステップと、ＨＵＢアドレスレジスタの値及びデバイスアドレスと前記アドレスフィールドとを比較するステップと、前記比較により少なくとも一方が一致した場合、前記トランザクションが第１の転送か、第２の転送かを判定し、第１の転送の場合には前記トランザクションのデータパケットを転送し、第２の転送の場合には、前記トランザクションに基づく処理を実行するステップと、前記転送されたデータパケットからリクエストをデコードするステップと、
前記ＨＵＢアドレスと前記アドレスフィールドが一致していた場合には、ＨＵＢ用リクエストとして処理を行なうステップと、前記デバイスアドレスと前記アドレスフィールドが一致していた場合かつ、仮想ポート制御部にイネーブルが設定されている場合には、デバイス用リクエストとして処理を行なうステップとを備えることを特徴とする。
【００１４】
このように、第１及び第２のＵＳＢ−ＨＵＢデバイスの制御方法によって、ＵＳＢ−ＨＵＢデバイスにおいてデバイスアドレスを認識し、当該デバイスアドレスによって指定されるデバイスに対する処理を行なうことが可能となる。
【００１５】
本発明の第３のＵＳＢ−ＨＵＢデバイスの制御方法は、ホストが接続されるアップポートと、ダウンポートを介してデバイスを接続するためのポート制御部と、前記ダウンポートを介さずにデバイスを接続するための仮想ポート制御部とを備えるＵＳＢ−ＨＵＢデバイスの制御方法であって、ホストから出力されるコントロール転送である第１のトランザクションによりＨＵＢアドレスを設定するステップと、前記ホストから出力される前記コントロール転送である第２のトランザクションにより前記仮想ポート制御部にイネーブルを設定するステップと、前記ホストから出力される前記コントロール転送である第３のトランザクション及び前記仮想ポート制御部からのイネーブルにより前記ＵＳＢ−ＨＵＢデバイス内にデバイスアドレスを設定するステップと、前記ホストから出力されるインターラプト転送により前記デバイスアドレスによって特定されるデバイスの情報を読み出すステップとを備えることを特徴とする。
【００１６】
このように、仮想ポート制御部を利用することによってダウンポートを介さずにＨＵＢデバイスに接続されたデバイスに対する処理をＵＳＢ−ＨＵＢデバイスによって実行することが可能となる。
【００１７】
【発明の実施の形態】
本発明の実施の形態では、トランザクションが入力されるアップポートを備えたシリアル・インターフェース・エンジンと、ＨＵＢアドレスを保持するＨＵＢアドレスレジスタ及びデバイスのアドレスを備えるデバイスアドレスレジスタとを有するエンドポイント部と、トランザクション内のデータパケットが示すデバイスに対するリクエストの処理を行なうデバイス用リクエスト処理部と、ＨＵＢに対するリクエストの処理を行なうＨＵＢリクエスト処理部と、ＨＵＢリクエスト処理部に対応して設けられダウンポートを備えたポート制御部、デバイスに対するリクエスト処理を行なうデバイス用リクエスト処理部、デバイス用リクエスト処理部に対応して設けられた仮想ポート制御部とを有している。
【００１８】
本発明の第１の実施例について図面を参照しながら説明する。
【００１９】
本発明のＵＳＢ−ＨＵＢは、ＨＩＤの中、例えばキーボードの中に搭載されるマイクロコンピュータ（マイコン）のチップ内に実現されているとして説明する。また、デバイスとしてＨＩＤが接続されているものとして説明する。
【００２０】
マイコン１は、ＨＵＢ１９、ＨＩＤからのデータが入力される外部端子３４、外部端子３４に接続されたＩ／Ｏ制御部３１、Ｉ／Ｏ制御部３１に接続されたＣＰＵ３２及びＣＰＵ３２に接続されたバッファ３３を備えている。ここで、ＣＰＵ３２は、ＨＩＤ３のデータを外部端子３４、Ｉ／Ｏ制御部を介して受け取り、定期的にバッファ３３に書きこんでいるものとする。
【００２１】
ＨＵＢ１９は、図１に示すとおり、ホスト１０と接続するためのアップポート１３、シリアル・インターフェース・エンジン（ＳＩＥ）１１と、エンドポイント（ＥＰ）部１２と、ポート制御部１６、１７と、仮想ポート制御部１８、ポート制御部に対応して設けられデバイスと接続するためのダウンポート１４、１５とを備えている。
【００２２】
ここで、ホスト１０は、アップポート１３に対してトランザクションを出力することによりＨＵＢ及びデバイスに対するリクエストを実行する。
【００２３】
このトランザクションは、トークンパケット及びデータパケットを有し、トークンパケット内のアドレスフィールドにＨＵＢ及びデバイスを特定するためのアドレス値が格納され、データパケット内にはＨＵＢ及びデバイスに対するリクエストが格納されている。また、トランザクションを転送する場合の、転送の型には、バルク、割り込み、アイソクロナス、制御の４種類がある。これら転送の型及びトランザクションについて、詳細は、ＵＳＢ  Ｈａｒｄｗａｒｅ  ＆  Ｓｏｆｔｗａｒｅ  日本語版  第６章  パケット及びトランザクション  Ｐ１６１−１９２、第８章  データ転送  Ｐ１９９−２４２、著者：Ｊｏｈｎ  Ｇａｒｎｅｙ，  Ｅｄ  ｓｏｌａｒｉ，  Ｓｈｅｌａｇｈ  Ｃａｌｌａｈａｎ，  Ｋｏｓａｒ  Ｊａｆｆ，  Ｂｒａｄ  Ｈｏｓｌｅｒ  発行：１９９９年９月８日を参照されたい。
【００２４】
ＳＩＥ１１は、アップポート１３に接続され供給されたトランザクションをパラレルデータに変換するシリアル／パラレル変換部１１１、シリアル／パラレル変換部１１１から供給されるトークンパケットのアドレスフィールドをラッチするアドレスラッチ１１２、アドレスラッチ１１２の値とＥＰ部１２から供給される自局アドレスとを比較する比較器１１３、アップポート１３に接続され比較器１１３の出力によってトランザクションの転送が制御される制御ブロック１１４から構成されている。
【００２５】
ＥＰ部１２は、アップポート１３に接続されたシリアル／パラレル変換器１２１、シリアル／パラレル変換器１２１から供給されるトークンパケットのアドレスフィールドをラッチするアドレスラッチ１２２、アドレスラッチ１２２の値とＨＵＢアドレスレジスタ１２４に保持されたＨＵＢアドレスとを比較する比較器１２３、ＨＩＤアドレスを保持するＨＩＤアドレスレジスタ１２５、比較器１２３の出力に応答してＨＵＢアドレスレジスタ１２４の値とＨＩＤアドレスレジスタ１２５の値とを切替えて自局アドレスとして出力するセレクタ１２６、制御ブロック１１４から供給されたトランザクションがコントロール転送の時にトランザクションのデータパケットをリクエストデコーダに伝達する制御ブロック１２７、制御ブロック１２７から供給されたデータパケットをデコードするリクエストデコーダ１２８、デコード結果に基づいてリクエスト信号を出力するアンドゲート１２９１及び１２９２から構成された選択ゲート１２９、リクエスト信号を受け取るとＨＵＢ用のリクエスト処理を実行するＨＵＢ用リクエスト処理部１３０、リクエスト信号を受け取るとＨＩＤ用のリクエスト処理を実行するＨＩＤ用リクエスト処理部１３１、ＨＩＤが仮想的に接続されているポートの状態を保持する仮想ポート制御部１３２、仮想ポート制御部１３２によりＨＩＤ用リクエスト処理部へのリクエスト信号をイネーブルにするアンドゲート１３３から構成されている。
【００２６】
以下、第１の実施例のＵＳＢ−ＨＵＢデバイスを備えたマイコンの動作を図３に示すフローチャートを参照しながら簡単に説明する。ここでは、ホスト１０からアップポートにトランザクションが出された場合を想定して説明する。
【００２７】
まず最初に、アップポートに供給されたトランザクションをシリアル／パラレル変換部を介して受け取りトークンパケット内のアドレスフィールドをラッチする（ステップ３０１）。ラッチされたアドレスフィールドとＨＵＢアドレスレジスタの値とを比較し、一致の場合はステップ３０３、不一致の場合はステップ３０４に移行する（ステップ３０２）。ＨＵＢアドレスレジスタの値と一致した場合には、ＨＵＢアドレスレジスタの値を自局アドレスとする（ステップ３０３）。ＨＵＢアドレスレジスタの値と不一致の場合は、ＨＩＤアドレスレジスタの値を自局アドレスとする（ステップ３０４）。自局アドレスとアドレスフィールドとを比較し、一致した場合はＨＵＢデバイス内で実行すべきトランザクションとしてステップ３０６へ、不一致の場合は他のデバイスで実行すべきトランザクションであるとして、受け取ったトランザクションに対しては何もせず最初に戻る（ステップ３０５）。自局アドレスとアドレスフィールドが一致した場合、トランザクションをＳＩＥからＥＰ部へ転送する（ステップ３０６）。受け取ったトランザクションがコントロール転送の場合はステップ３０８へ移行し、インターラプト転送の場合はステップ３０９に移行する（ステップ３０７）。コントロール転送の場合は、トランザクションのデータパケットをデコードしリクエストを特定する（ステップ３０８）。インターラプト転送の場合は、トランザクションのトークンパケットに従ってデータ転送を実行し最初に戻る（ステップ３０９）。アドレスフィールドがＨＵＢアドレスと一致していた場合には、ステップ３１１へ、ＨＩＤアドレスと一致していた場合にはステップ３１２に移行する（ステップ３１０）。アドレスフィールドがＨＵＢアドレスと一致していた場合、ＨＵＢ用リクエスト処理部によって、リクエストを実行し最初に戻る（ステップ３１１）。ＨＩＤアドレスと一致していた場合、ＨＩＤ用リクエスト処理部によって、リクエストを実行し最初に戻る（ステップ３１２）。
【００２８】
以下、第１の実施例のＵＳＢ−ＨＵＢデバイスを備えたマイコンの設定動作について図１を用いて詳述する。
【００２９】
１．ＨＵＢアドレスの設定
ホストコンピュータ（ホスト）１０に電源が入ると、ホスト１０は接続されているマイコンのアップポート１３に対して、ＨＵＢのアドレスを設定するために制御転送（コントロール転送）として、Ｓｅｔ＿ｕｐトランザクションを送る。コントロール転送は、デバイス、デバイスのインターフェース、及びエンドポイントをコンフィギュレーションし初期化するために使用される転送モードである。ただし、Ｓｅｔ＿ｕｐトランザクション内のトークンパケットのアドレスフィールドは、”００”に設定され、Ｓｅｔ＿ｕｐトランザクション内のデータパケットにはＳｅｔ＿Ａｄｄｒｅｓｓリクエストであること及びアドレス設定値が”０１”であることが設定されているものとする。ここで、アドレス設定値は、デバイスに対して付与される固有の識別番号である。
【００３０】
アップポート１３を介してＳｅｔ＿ｕｐトランザクションを受け取ったＳＩＥ１１は、Ｓｅｔ＿ｕｐトランザクションをシリアル／パラレル変換部１１１でシリアルデータからパラレルデータに変換し、トークンパケットのアドレスフィールドをアドレスラッチ１１２にラッチする。このとき、同時にＥＰ部１２に対してもＳｅｔ＿ｕｐトランザクションが送られ、シリアル／パラレル変換部１２１を介してアドレスラッチ１２２にアドレスフィールドがラッチされる。
【００３１】
ＥＰ部１２の比較器１２３は、アドレスラッチ１２２の値とＨＵＢアドレスレジスタ１２４との値を比較するが、ＨＵＢアドレスレジスタ１２４には、初期値として”００”が記憶されているため一致信号が出力される。したがって、セレクタ１２６は、ＨＵＢアドレスレジスタ１２４の値をＳＩＥ１１の比較器１に自局アドレスとして供給する。比較器１１３は、自局アドレス”００”とアドレスラッチ１１２にラッチされたアドレスフィールド”００”とを比較する。アドレスフィールドと自局アドレスが一致するため、比較器１１３は一致信号を出力する。
【００３２】
一致信号を受け取ったＳＩＥ１１の制御ブロック１１４は、Ｓｅｔ＿ｕｐトランザクションをＥＰ部の制御ブロック１２７に渡す。ＥＰ部１２の制御ブロック１２７は、受け取ったトランザクションがコントロール転送かインターラプト転送か判断する。Ｓｅｔ＿ｕｐトランザクションはコントロール転送のため制御ブロック１２７は、データパケットをリクエストデコーダ１２８に送る。リクエストデコーダ１２８は、データパケットからＨＵＢ１９に対するＳｅｔ−Ａｄｄｒｅｓｓリクエストであること及びアドレス設定値”０１”をデコードし、選択ゲート１２９を介してＨＵＢ用リクエスト処理部１３０にリクエスト信号を出力する。リクエスト信号が供給されたＨＵＢ用リクエスト処理部１３０は、Ｓｅｔ−Ａｄｄｒｅｓｓリクエストに基づいてアドレス設定値”０１”をＨＵＢアドレスレジスタ１２４に書き込みＳｅｔ−Ａｄｄｒｅｓｓリクエスト処理が終了する。
【００３３】
２．ポートイネーブルの設定
この後、ホスト１０は、ＨＵＢ１９のポートにデバイスが接続されているか否かを確認するためアップポート１３に対してコントロール転送であるポートステータスビット参照リクエスト（Ｇｅｔ＿Ｓｔａｔｕｓリクエスト）をデータパケットに含むトランザクションを送る。トランザクションの中のトークンパケットには、ＨＵＢ１９のアドレスである”０１”が設定されている。このリクエストに対して、ＨＵＢ１９は、ポート制御部及び仮想ポート制御部からポートの状態を示す情報（ポート情報）を、ＥＰ部１２の制御ブロック１２７及びＳＩＥ１１の制御ブロック１１４を介してホスト１０に送り返す。
【００３４】
ここで、仮想ポート制御部１８、複数のポート制御部１６、１７には、予めポート番号１、２、３がそれぞれ付されているものとする。
【００３５】
本実施例では、ＨＵＢ１９は、仮想ポート制御部１８からの、仮想ポートであるポート番号１にデバイス（ＨＩＤ３）が接続され、ポート番号２及び３には、デバイスが接続されていないというポート情報を制御ブロック１２７及び制御ブロック１１４を介してホスト１０に返す。ポート情報を受け取ったホスト１０は、コントロール転送であるＳｅｔ＿ｕｐトランザクションをＨＵＢ１９に送る。Ｓｅｔ＿ｕｐトランザクションのデータパケットは、ポート番号１の仮想ポート制御部１８をリセットするポートリセットリクエストを含み、Ｓｅｔ＿ｕｐトランザクションのトークンパケットには、ＨＵＢ１９のアドレスである”０１”が設定されている。
【００３６】
ホスト１０は、仮想ポート制御部１８をポートイネーブル状態とするため、上述したトランザクションをアップポート１３に供給する。供給されたトランザクションのトークンパケット内のアドレスフィールド”０１”は、上述したＨＵＢアドレスの設定と同様に、ＥＰ部１２のシリアル／パラレル変換器１２１を介してアドレスラッチ１２２にラッチされる。同様に、ＳＩＥ１１側のアドレスラッチ１２２にもアドレスフィールド”０１”がラッチされる。
【００３７】
比較器１２３は、アドレスラッチ１２２に保持されたアドレスフィールド”０１”とＨＵＢアドレスレジスタ１２４の値”０１”を比較し、一致信号を出力する。比較器１２３からの一致信号を受け取ったセレクタ１２６は、一致信号に基づいてＨＵＢアドレスレジスタ１２４の値を自局アドレスとしてＳＩＥ１１側の比較器１１３に供給する。
【００３８】
比較器１１３は、アドレスラッチ１１２に保持されたアドレスフィールド”０１”とＨＵＢアドレスレジスタ１２４の値”０１”とを比較し、一致信号を出力する。比較器１１３からの一致信号を受け取ったＳＩＥ１１側の制御ブロック１１４は、一致信号に応答してトランザクションをＥＰ１２側の制御ブロック１２７に送る。
【００３９】
制御ブロック１２７は、受け取ったトランザクションがコントロール転送であるため、データパケットをリクエストデコーダ１２８に送る。リクエストデコーダ１２８は、受け取ったデータパケットから仮想ポート制御部１３２をリセットするポートリセットリクエストであることをデコードし、選択ゲート１２９に対してリクエスト信号を出力する。
【００４０】
このとき、選択ゲート１２９内のアンドゲート１２９１は比較器１２３からの一致信号により活性化されているため、ＨＵＢ用リクエスト処理部１３０へリクエスト信号を伝達する。選択ゲート１２９内のアンドゲート１２９２は、比較器１２３からの一致信号の反転信号が入力されているため非活性化状態となっている。リクエスト信号により選択されたＨＵＢ用リクエスト処理部１３０は、ポートリセットリクエストに基づいて仮想ポート制御部１８をリセットする。その後、仮想ポート制御部１８にポートイネーブルを設定してポートリセットリクエストが終了する。
【００４１】
この仮想ポート制御部１８にポートイネーブルが設定されたことによって、ＨＩＤ用リクエスト処理部１３１へのリクエストが受け付けられる状態となる。また、ホスト１０からＨＩＤ３への経路を確立することが可能となる。
【００４２】
３．ポートに接続されたデバイスへのアドレス設定
ホスト１０は、仮想ポート制御部１８にポートアドレスを付与するため、コントロール転送であるＳｅｔ＿Ａｄｄｒｅｓｓリクエストを含むＳｅｔ＿ｕｐトランザクションをアップポートに供給する。このＳｅｔ＿Ａｄｄｒｅｓｓリクエストは、新たなポート、本実施例では仮想ポート制御部に対するアドレス設定リクエストのため、トークンパケットのアドレスフィールドには”００”、データパケットにはＳｅｔ＿Ａｄｄｒｅｓｓリクエストであること及びアドレス設定値は”０２”であることが設定されている。
【００４３】
供給されたＳｅｔ＿ｕｐトランザクションのトークンパケットのアドレスフィールド”００”は、上述したＨＵＢアドレスの設定と同様に、ＥＰ部１２のシリアル／パラレル変換器１２１を介してアドレスラッチ１２２にラッチされる。同様に、ＳＩＥ１１側のアドレスラッチ１１２にもアドレスフィールド”００”がラッチされる。
【００４４】
アドレスフィールドがアドレスラッチ１２２にラッチされると、比較器１２３は、アドレスラッチ１２２に保持されたアドレスフィールド”００”とＨＵＢアドレスレジスタの値”０１”を比較し、不一致信号を出力する。
【００４５】
不一致信号に基づいて、セレクタ１２６は、ＨＩＤアドレスレジスタ１２５の値（初期値は、”００”）を自局アドレスとしてＳＩＥ１１側の比較器１１３に供給する。
【００４６】
ＨＩＤアドレスレジスタ１２５の値を自局アドレスとして供給された比較器１１３は、アドレスラッチ１１２に保持されたアドレスフィールド”００”と自局アドレス”００”とを比較し、一致信号を出力する。一致信号を受け取ったＳＩＥ１１側の制御ブロック１１４は、一致信号に応答してトランザクションをＥＰ１２側の制御ブロック１２７に送る。
【００４７】
制御ブロック１２７は、受け取ったトランザクションがコントロール転送であるためデータパケットをリクエストデコーダ１２８に送る。リクエストデコーダ１２８は、受け取ったデータパケットからＳｅｔ−ａｄｄｒｅｓｓリクエストであること及び設定値”０２”をデコードし、リクエスト信号を出力する。このとき、選択ゲート１２９は、比較器１２３からの不一致信号によりアンドゲート１２９２が活性化されているため、アンドゲート１３３にリクエスト信号を伝達する。アンドゲート１３３は、仮想ポート制御部１８からのイネーブル信号により活性化されているため、リクエスト信号をＨＩＤ用リクエスト処理部に伝達する。
【００４８】
リクエスト信号を受け取ったＨＩＤ用リクエスト処理部１３１は、Ｓｅｔ−ａｄｄｒｅｓｓリクエストに基づいて設定値”０２”をＨＩＤアドレスレジスタ１２５に書き込んでＳｅｔ−ａｄｄｒｅｓｓリクエスト処理が終了する。
【００４９】
ここでは、他のポート制御部１６、１７にデバイスが接続されていない場合について説明したが、他のポート制御部１６、１７にデバイスが接続されている場合には、上述したポートイネーブルリクエスト及びポート制御部に接続されたデバイスに対するＳｅｔ＿Ａｄｄｒｅｓｓリクエストをホスト１０がアップポート１３に供給し、ポートに接続されたデバイスに対するアドレスの設定が行なわれる。
【００５０】
４．ＨＩＤに対する割り込み転送（インターラプト転送）
次に、ホスト１０が、ＨＩＤに対する割り込み転送を実行した場合の動作について説明する。
【００５１】
ＨＩＤへの割り込み転送（インターラプト転送）は、ホスト１０がトークンパケットのアドレスフィールドにＨＩＤのアドレス設定値（現在は、”０２”）をトークンパケットに含むようなＩＮトランザクション或いはＯＵＴトランザクションをアップポートへ供給することによって行なわれる。ここで、インターラプト転送とは、データをデバイスからホスト側に搬送するもしくは、データをホストからデバイス側に搬送する転送のモードである。本実施例では、ＩＮトランザクションはバッファ３３に書きこまれたＨＩＤ３のデータをホスト１０に読み出すこととして説明する。
【００５２】
ＨＵＢ１９は、アップポートを介して受け取ったＨＩＤに対するＩＮトランザクションを受け取る。ＩＮトランザクションを受け取ると、ＥＰ１２のアドレスラッチ１２２は、シリアル／パラレル変換器１２１を介してトークンパケットのアドレスフィールド”０２”を保持する。同様に、ＳＩＥ１１のアドレスラッチ１１２は、シリアル／パラレル変換器１１１を介してアドレスフィールド”０２”を保持する。
【００５３】
アドレスラッチ１２１がアドレスフィールドをラッチすると、比較器１２３は、アドレスフィールド”０２”とＨＵＢアドレスレジスタの値”０１”とを比較し、不一致信号を出力する。その結果、セレクタ１２６はＨＩＤアドレスレジスタ１２５の値”０２”を自局アドレスとしてＳＩＥ１１の比較器１１３に供給する。比較器１１３は、ＳＩＥ１１のアドレスラッチ１１２に保持されたアドレスフィールド”０２”と自局アドレス”０２”を比較し、一致信号を出力する。受け取った一致信号に応答して制御ブロック１１４は、トランザクションを制御ブロック１２７に送る。
【００５４】
制御ブロック１２７は、トランザクションがインターラプト転送であり、データをＨＩＤ３からホストに転送することを要求しているため、ＨＩＤ３のデータが保持されているバッファ３３からデータを読出し、制御ブロック１１４を介してアップポート１３に出力することによってホスト１０に送るという処理を行ないＩＮトランザクションを終了する。ここで、制御ブロック１１４は、バッファ３３から読み出されたパラレルデータをシリアルデータに変換する動作も行なっている。
【００５５】
このように、ＥＰ部１２内に、シリアル／パラレル変換器１２１、アドレスラッチ１２２、比較器１２３、ＨＩＤアドレスレジスタ１２５、選択ゲート１２９、ＨＩＤ用リクエスト処理部１３１、仮想ポート制御部１８及びアンドゲート１３３をＨＵＢ１内に設けることにより、ＳＩＥ１１をＨＩＤのシリアル・インターフェース・エンジンとして利用することが可能となる。
【００５６】
簡単に説明すると、物理的な構造としては、図５（ａ）に示すとおり、ＨＵＢ５１の中にシリアル・インターフェース・エンジン５１１、ＨＵＢ用リクエスト処理部５１２、ＨＩＤ用リクエスト処理部５１３、仮想ポート制御部、ポート５１７に接続されたポート制御部５１５、ポート５１８に接続されたポート制御部５１６を備える構成となっているが、ホストから見た論理的な構造としては、図５（ｂ）に示すとおり、シリアル・インターフェース・エンジン５２１、ＨＵＢ用リクエスト処理部５２２、仮想ポート５２６に接続された仮想ポート制御部５２３、ポート５２７に接続されたポート制御部５２４、ポート５２８に接続されたポート制御部５２５を備えたＨＵＢ５２のダウンポートに、シリアル・インターフェース・エンジン５３１及びＨＩＤ用リクエスト処理部５３２を備えたＨＩＤがアップポート５３４を介して接続されている構造となる。このような論理構造とするために、ＨＵＢ５１内に、上述した仮想ポート制御部を用いている。
【００５７】
以下、本発明の第２の実施例について図面を用いて説明する。
【００５８】
本発明のＵＳＢ−ＨＵＢは、第１の実施例と同様に、ＨＩＤの中、例えば、キーボードの中に搭載されるマイクロコンピュータのチップ内に実現されているものとして説明する。
【００５９】
図２に示すとおり、マイコン２は、ＨＵＢ２９、ＨＩＤ３のデータが入力される外部端子３４、外部端子３４に接続されたＩ／Ｏ制御部３１、Ｉ／Ｏ制御部３１に接続されたＣＰＵ３２及びＣＰＵ３２に接続されたバッファ３３を備えている。ここで、ＣＰＵ３２は、ＨＩＤ３のデータを外部端子３４、Ｉ／Ｏ制御部を介して受け取り、定期的にバッファ３３に書きこんでいるものとする。
【００６０】
ＨＵＢ２９は、ホスト１０と接続するためのアップポート１３、シリアル・インターフェース・エンジン（ＳＩＥ）２１と、エンドポイント（ＥＰ）部２２と、ポート制御部１６、１７と、仮想ポート制御部１８と、ポート制御部１６、１７に対応して設けられデバイスと接続するためのダウンポート１４、１５とを備えている。
【００６１】
ホスト１０が出力するトランザクションについては、第１の実施例において説明したので、説明を省略する。
【００６２】
ＳＩＥ２１は、アップポート１３に供給されたシリアルデータをパラレルデータに変換するシリアル／パラレル変換部１１１、シリアル／パラレル変換部１１１から供給されるトークンパケットのアドレスフィールドをラッチするアドレスラッチ１１２、アップポート１３に接続されＥＰ部２２からの制御信号により制御される制御ブロック１１４から構成されている。
【００６３】
ＥＰ部２２は、アドレスラッチ１１２の値とＨＵＢアドレスレジスタ１２４に保持されたＨＵＢアドレスとを比較する比較器１３６、アドレスラッチ１１２の値とＨＩＤアドレスレジスタ１２５に保持されたＨＩＤアドレスとを比較する比較器１３７、比較器１３６及び１３７の出力の論理和を制御信号として出力するオアゲート１３５、制御ブロック１１４から供給されたトランザクションがコントロール転送の時にトランザクションのデータパケットをリクエストデコーダに伝達する制御ブロック１２７、制御ブロック１２７から供給されたデータパケットをデコードしリクエスト信号を出力するリクエストデコーダ１２８、リクエストデコーダ１２８のデコード結果及び比較器１３６及び１３７の出力に基づいてリクエスト信号を伝達するアンドゲート１３４１及び１３４２から構成された選択ゲート１３４、リクエスト信号を受け取るとＨＵＢ用のリクエスト処理を実行するＨＵＢ用リクエスト処理部１３０、リクエスト信号を受け取るとＨＩＤ用のリクエスト処理を実行するＨＩＤ用リクエスト処理部１３１、ＨＩＤが仮想的に接続されているポートの状態を保持する仮想ポート制御部１８、仮想ポート制御部１８によりＨＩＤ用リクエスト処理部へのリクエスト信号をイネーブルにするアンドゲート１３３から構成されている。
【００６４】
以下、本発明の第２の実施例のＵＳＢ−ＨＵＢデバイスを備えたマイコンの動作を、図４に示すフローチャートを参照しながら簡単に説明する。ここでは、ホスト１０からアップポートにリクエストが出された場合を想定して説明する。
【００６５】
アップポートに供給されたトランザクションをシリアル／パラレル変換部を介して受け取りトークンパケットのアドレスフィールドをラッチする（ステップ４０１）。ラッチされたアドレスフィールドとＨＵＢアドレスレジスタの値及び、ラッチされたアドレスフィールドとＨＩＤアドレスレジスタの値とを比較し、少なくとも一方が一致の場合はステップ４０３、不一致の場合は最初の状態に移行する（ステップ４０２）。少なくとも一方が一致している場合には、ＳＩＥからＥＰ部へトランザクションを転送する（ステップ４０３）。トランザクションがコントロール転送の場合にはステップ４０５に移行し、インターラプト転送の場合にはステップ４０６に移行する（ステップ４０４）。コントロール転送の場合は、転送されたトランザクションのデータパケットをデコードし、リクエストの種類を特定する（ステップ４０５）。インターラプト転送の場合には、トークンパケットに従ってデータ転送を実行し最初に戻る（ステップ４０６）。ＨＵＢアドレスレジスタの値及びＨＩＤアドレスレジスタの値のいずれとアドレスフィールドが一致したかを比較し、ＨＵＢアドレスレジスタの値と一致した場合にはステップ４０６、ＨＩＤアドレスレジスタの値と一致した場合にはステップ４０７に移行する（ステップ４０７）。ＨＵＢアドレスレジスタの値と一致した場合、ＨＵＢリクエスト処理部によってリクエストを実行し最初の状態に戻る（ステップ４０８）。ＨＩＤアドレスレジスタの値と一致した場合、仮想ポート制御部によりゲートが活性化されているか比較し、活性化されている場合にはステップ４０８へ、活性化されていない場合には最初の状態に戻る（ステップ４０９）。ＨＩＤリクエスト処理部によってリクエストを実行し最初の状態に戻る（ステップ４１０）。
【００６６】
以下、第２の実施例のＵＳＢ−ＨＵＢデバイスを備えたマイコンの設定動作について図１を用いて詳述する。
【００６７】
１．ＨＵＢアドレスの設定
ホスト１０に電源が入ると、ホスト１０は接続されているＵＳＢ−ＨＵＢ１に対して、コントロール転送であるＳｅｔ＿ｕｐトランザクションを送る。ただし、Ｓｅｔ＿ｕｐトランザクション内のトークンパケットのアドレスフィールドは、”００”に設定され、Ｓｅｔ＿ｕｐトランザクション内のデータパケットにはＳｅｔ＿Ａｄｄｒｅｓｓリクエストであること及びアドレス設定値が”０１”であることが設定されているものとする。アドレス設定値は、デバイスに対して付与される固有の識別番号である。
【００６８】
アップポート１３を介してＳｅｔ＿Ａｄｄｒｅｓｓリクエストを受け取ったＳＩＥ２１は、Ｓｅｔ＿ｕｐトランザクションをシリアル／パラレル変換部１１１でシリアルデータからパラレルデータに変換し、トークンパケット内のアドレスフィールドをアドレスラッチ１１２にラッチする。
【００６９】
アドレスフィールドがアドレスラッチ１１２にラッチされると、ＥＰ部１２の比較器１３６は、アドレスラッチ１１２に保持されたアドレスフィールドとＨＵＢアドレスレジスタ１２４との値を比較する。このとき、ＨＵＢアドレスレジスタ１２４には、初期値として”００”が記憶されているため比較器１３６は一致信号を出力する。同様に、比較器１３７は、アドレスラッチ１１２に保持されたアドレスフィールドとＨＩＤアドレスレジスタ１２５との値を比較する。このとき、ＨＩＤアドレスレジスタ１２５には、初期値として”００”が記憶されているため比較器１３７は一致信号を出力する。したがって、オアゲート１３５は、両比較器１３６及び１３７の一致信号に基づいて一致信号を制御ブロック１１４に供給する。
【００７０】
一致信号を受けた制御ブロック１１４は、Ｓｅｔ＿ｕｐトランザクションを制御ブロック１２７に送る。制御ブロック１２７は、受け取ったトランザクションがコントロール転送であるためデータパケットをリクエストデコーダ１２８に送る。リクエストデコーダ１２８は、受け取ったデータパケットからＨＵＢ２９に対するＳｅｔ−ａｄｄｒｅｓｓリクエストであること及び設定値”０１”をデコードし、選択ゲート１３４に対してリクエスト信号を出力する。
【００７１】
選択ゲート１３４は、アンドゲート１３４１及び１３４２から構成されており、アンドゲート１３４１には、活性化信号と比較器１３６の出力が入力され、アンドゲート１３４２には、活性化信号と比較器１３７の出力が入力されている。ＨＵＢアドレスの設定時には、両方の比較器が一致信号を出力しているため、両方のアンドゲート１３４１及び１３４２から活性化信号が出力されることになる。
【００７２】
アンドゲート１３４１から出力された活性化信号は、ＨＵＢ用リクエスト処理部１３０に供給され、アンドゲート１３４２から出力されたリクエスト信号は、アンドゲート１３３に供給される。ここで、アンドゲート１３３の一方の入力には、仮想ポート制御部１８から制御信号が供給されているが、制御信号の初期値はディスエーブルとなっており、アンドゲート１３４２は非活性となっている。
【００７３】
その結果、選択ゲート１３４からのリクエスト信号は、ＨＵＢ用リクエスト処理部１３０にのみ供給され、ＨＵＢ用リクエスト処理部１３０がリクエスト信号に応答して処理を行なう。ＨＵＢ用リクエスト処理部１３０は、デコードされたＳｅｔ＿Ａｄｄｒｅｓｓリクエストに基づいてＨＵＢアドレスレジスタ１２４に”０１”を設定しＳｅｔ＿Ａｄｄｒｅｓｓリクエストを終了する。
【００７４】
２．ポートイネーブルの設定
この後、ホスト１０は、ＨＵＢ１９のポートにデバイスが接続されているか否かを確認するためアップポート１３に対してポートステータスビット参照リクエスト（Ｇｅｔ＿Ｓｔａｔｕｓリクエスト）をデータパケットに含むコントロール転送であるトランザクションを送る。トランザクションの中のトークンパケットには、ＨＵＢ１９のアドレスである”０１”が設定されている。このトランザクションに対して、ＨＵＢ２９は、ポート制御部及び仮想ポート制御部からポートの状態を示す情報（ポート情報）を、ＥＰ部２２の制御ブロック１１４及びＳＩＥ１１の制御ブロック１２７を介してホスト１０に送り返す。ここで、仮想ポート制御部１８、複数のポート制御部１６、１７には、予めポート番号１、２、３がそれぞれ付されているものとする。
【００７５】
本実施例では、ＨＵＢ２９は、仮想ポート制御部１８からの、仮想ポートであるポート番号１にデバイス（ＨＩＤ３）が接続され、ポート番号２及び３には、デバイスが接続されていないというポート情報を制御ブロック１２７及び制御ブロック１１４を介してホスト１０に返す。ポート情報を受け取ったホスト１０は、コントロール転送であるＳｅｔ＿ｕｐトランザクションをＨＵＢ２９に送る。Ｓｅｔ＿ｕｐトランザクションのデータパケットは、ポート番号１の仮想ポート制御部１８をリセットするポートリセットリクエストを含み、Ｓｅｔ＿ｕｐトランザクションのトークンパケットには、ＨＵＢ２９のアドレスである”０１”が設定されている。
【００７６】
ホスト１０は、仮想ポート制御部１８をポートイネーブル状態とするため、上述したトランザクションをアップポート１３に供給する。供給されたトランザクションのトークンパケット内のアドレスフィールド”０１”は、上述したＨＵＢアドレスの設定と同様に、ＥＰ部２２のシリアル／パラレル変換器１１１を介してアドレスラッチ１１２にラッチされる。
【００７７】
アドレスラッチ１１２にアドレスフィールドがラッチされると、比較器１３６は、アドレスラッチ１１２に保持されたアドレスフィールド”０１”とＨＵＢアドレスレジスタの値”０１”とを比較し、一致信号を出力し、比較器１３７は、アドレスフィールド”０１”とＨＩＤアドレスレジスタの初期値”００”とを比較し、不一致信号を出力する。
【００７８】
比較器１３６からの一致信号及び比較器１３７からの不一致信号を受けたオアゲート１３５は、比較器１３６からの一致信号を制御ブロック１１４に供給する。一致信号を受け取った制御ブロック１１４は、Ｓｅｔ＿ｕｐトランザクションを制御ブロック１２７に送る。制御ブロック１２７は、受け取ったトランザクションがコントロール転送であるため、データパケットをリクエストデコーダ１２８に送る。
【００７９】
リクエストデコーダ１２８は、受け取ったデータパケットからポート番号１の仮想ポート制御部に対するポートリセットリクエストであることをデコードし、リクエスト信号を出力する。リクエスト信号を受け取った選択ゲート１３４は、比較器１３６の一致信号に応答して活性化されたアンドゲート１３４１を介して、ＨＵＢ用リクエスト処理部１３０にリクエスト信号を伝達する。
【００８０】
リクエスト信号を受け取ったＨＵＢ用リクエスト処理部１３０は、仮想ポート制御部１８をリセットする。その後、ＨＵＢ用リクエスト処理部１３０は、仮想ポート制御部１８の中にポートイネーブルを設定して、ポートリセットリクエストが終了する。
【００８１】
この仮想ポート制御部１８に、ポートイネーブルが設定されたことによって、ＨＩＤリクエスト処理部１３１に対するリクエストが受け付けられる状態となる。また、ホスト１０からＨＩＤ３への経路を確立することが可能となる。
【００８２】
３．ポートに接続されたデバイスのアドレス設定
ホスト１０は、仮想ポート制御部１８にアドレスを付与するため、コントロール転送であるＳｅｔ＿Ａｄｄｒｅｓｓリクエスト含むＳｅｔ＿ｕｐトランザクションをアップポートに供給する。このＳｅｔ＿Ａｄｄｒｅｓｓリクエストは、新たなポート、本実施例では仮想ポート制御部に対するアドレス設定リクエストのため、トークンパケットのアドレスフィールドには、”００”、データパケットにはＳｅｔ＿Ａｄｄｒｅｓｓリクエストであること及びアドレス設定値は”０２”であることが設定されている。
【００８３】
このＳｅｔ＿Ａｄｄｒｅｓｓリクエストのアドレスフィールド”００”は、上述したＨＵＢアドレスの設定と同様に、シリアル／パラレル変換器１１１を介して、アドレスラッチ１１２にラッチされる。
【００８４】
アドレスラッチ１１２にアドレスフィールドがラッチされると、比較器１３６は、アドレスラッチ１１２に保持されたアドレスフィールド”００”とＨＵＢアドレスレジスタの値”０１”とを比較し、不一致信号を出力し、比較器１３７は、アドレスフィールド”００”とＨＩＤアドレスレジスタの値”００”とを比較し、一致信号を出力する。
【００８５】
比較器１３６からの不一致信号と、比較器１３７からの一致信号に基づき、オアゲート１３５は比較器１３７の一致信号を制御ブロック１１４に供給する。
【００８６】
一致信号を受け取った制御ブロック１１４は、Ｓｅｔ＿ｕｐトランザクションを制御ブロック１２７に送る。制御ブロック１２７は、受け取ったトランザクションがコントロール転送であるため、データパケットをリクエストデコーダ１２８に送る。
【００８７】
リクエストデコーダ１２８は、受け取ったデータパケットからＨＩＤ用リクエスト処理部１３１に対するＳｅｔ＿Ａｄｄｒｅｓｓリクエストであること及びアドレス設定値”０２”であることをデコードし、選択ゲート１３４へリクエスト信号を出力する。リクエスト信号を受け取った選択ゲートは、比較器１３７の一致信号に応答してアンドゲート１３４２を介してリクエスト信号をアンドゲート１３３に伝達する。
【００８８】
アンドゲート１３３は、仮想ポート制御部１８により活性化されているため、リクエスト信号をＨＩＤリクエスト処理部１３１に供給する。
【００８９】
リクエスト信号を受け取ったＨＩＤ用リクエスト処理部１３１は、デコードされたＳｅｔ＿Ａｄｄｒｅｓｓリクエストに基づきＨＩＤアドレスレジスタにアドレス設定値”０２”を設定し、Ｓｅｔ＿Ａｄｄｒｅｓｓリクエストが終了する。
【００９０】
ここでは、他のポート制御部１６、１７にデバイスが接続されていない場合について説明したが、他のポート制御部１６、１７にデバイスが接続されている場合には、上述したポートイネーブルリクエスト及びポート制御部に接続されたデバイスに対するＳｅｔ＿Ａｄｄｒｅｓｓリクエストをホスト１０がアップポート１３に供給することになる。
【００９１】
４．ＨＩＤに対する割り込み転送（インターラプト転送）
次に、ホスト１０が、ＨＩＤに対する割り込み転送を実行した場合の動作について説明する。
【００９２】
ＨＩＤへの割り込み転送（インターラプト転送）は、ホスト１０がトークンパケットのアドレスフィールドにＨＩＤのアドレス設定値（現在は、”０２”）をトークンパケットに含むようなＩＮトランザクション或いはＯＵＴトランザクションをアップポートへ供給することによって行なわれる。本実施例でも、ＩＮトランザクションはバッファ３３に書きこまれたＨＩＤ３のデータをホスト１０に読み出すこととして説明する。
【００９３】
ＨＵＢ２９は、アップポートを介して受け取ったＨＩＤに対するＩＮトランザクションを受け取る。ＩＮトランザクションを受け取ると、アドレスラッチ１１２は、シリアル／パラレル変換器１１１を介してリクエストのアドレスフィールド”０２”を保持する。
【００９４】
アドレスラッチ１１２がトークンパケットのアドレスフィールドをラッチすると、比較器１３６は、ＨＵＢアドレスレジスタ１２４に保持された値”０１”とアドレスラッチ１１２の値”０２”を比較して不一致信号を出力し、比較器１３７は、ＨＩＤアドレスレジスタ１２５に保持された値”０２”とアドレスラッチ１１２の値”０２”とを比較して一致信号を出力する。
【００９５】
比較器１３６からの不一致信号及び比較器１３７からの一致信号を受け取ったオアゲート１３５は、比較器１３７からの一致信号を制御ブロック１１４に供給する。
【００９６】
一致信号を受け取った制御ブロック１１４は、ＩＮトランザクションを制御ブロック１２７に送る。制御ブロック１２７は、トランザクションがインターラプト転送であり、データをＨＩＤ３からホスト１０に転送することを要求しているため、ＨＩＤ３のデータが保持されているバッファ３３からデータを読出し、制御ブロック１１４を介してアップポート１３に出力することによってホスト１０に送るという処理を行ないＩＮトランザクションを終了する。
【００９７】
このように、ＥＰ部２２内に、ＨＵＢアドレスレジスタ１２４、ＨＩＤアドレスレジスタ１２５、ＨＩＤ用リクエスト処理部１３１、仮想ポート制御部１８、アンドゲート１３３、選択ゲート１３４、オアゲート１３５、比較器１３６及び１３７を設けることにより、ＨＵＢ２９に設けられたＳＩＥ２１をＨＩＤに対するシリアル・インターフェース・エンジンとして利用することが可能となる。
【００９８】
また、第２の実施例では、ＥＰ部内にシリアルパラレル変換器を必要としない点で、第１の実施例よりも回路構成が簡単である。
【００９９】
さらに、第２の実施例では、ＥＰ部内で、ＨＵＢアドレスとアドレスフィールドとの比較及びＨＩＤアドレスとアドレスフィールドとの比較が同時に行なわれているため、第１の実施例よりも応答速度を向上させることができる。
【０１００】
なお、ＨＩＤが複数個ある場合には、ＨＩＤ用リクエスト処理部及び仮想ポート制御部を複数個設け、単一のリクエスト処理部が選択されるように選択ゲート１３４を適宜変更し、アンドゲート１３３をＨＩＤ用リクエスト処理部に対応させて設けることによって複数のＨＩＤに対応させることもできる。
【０１０１】
なお上述した第１の実施例では、単一のＨＩＤが接続されるものについて説明したが、複数のデバイスによりＳＩＥを共有することも可能である。そのためには、ＨＩＤ用リクエスト処理部、仮想ポート制御部、ＨＩＤアドレスレジスタ及び比較器を複数個設け、アンドゲート１３３と選択ゲート１２９を単一の処理部のみを選択するように適宜設計変更すればよい。
【０１０２】
第２の実施例でも同様にＨＩＤ用リクエスト処理部、仮想ポート制御部、ＨＩＤアドレスレジスタ及び比較器を複数個設け、選択ゲート１３４を単一の処理部のみを選択するように適宜設計変更することにより複数のデバイスによりＳＩＥを共有することが可能となる。
【０１０３】
なお、第１及び第２の実施例では、リクエストデコーダ１２８は、説明を簡単にするため、単一の出力しか持たないものを記載しているが、リクエストに応じて多数の出力を有するものであってもよい。その場合、ＨＵＢ用リクエスト処理部、ＨＩＤ用リクエスト処理部の入力もリクエストに応じて増加し、選択ゲートを構成するアンドゲート群もリクエストに応じて増加する。
【０１０４】
また、第１及び第２の実施例では、ＵＳＢ−ＨＵＢがマイコンのチップ内に搭載されている例について説明したが、ＨＵＢの機能を別チップにより構成しても良い。
【０１０５】
また、第１及び第２の実施例では、仮想ポートに接続されるデバイスとしてＨＩＤを例にして説明したが、ＨＩＤに限らずアドレス設定を必要とするデバイスであれば種々のデバイスに対して適用可能である。
【０１０６】
また、第１及び第２の実施例では、コントロール転送及びインターラプト転送について説明したが、他の転送モードにも適用することが可能である。
【０１０７】
【発明の効果】
このように、ＨＵＢの内部に仮想ポート制御部を設けることによって、ホストに対して論理的にＨＩＤ用リクエスト処理部がＨＵＢのダウンポートの一つに接続されているように見せることができるため、ＨＵＢのシリアル・インターフェース・エンジンをＨＩＤに対するリクエストを受け取った場合も使用することができる。したがって、回路規模を小さくすることができコストを低減することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施例を示すＵＳＢ−ＨＵＢデバイスを含むマイコンのシステム図
【図２】本発明の第２の実施例を示すＵＳＢ−ＨＵＢデバイスを含むマイコンのシステム図
【図３】本発明の第１の実施例の動作を示すフローチャート
【図４】本発明の第２の実施例の動作を示すフローチャート
【図５】（ａ）本発明によるＵＳＢ−ＨＵＢデバイスの物理的構造、（ｂ）本発明によるＵＳＢ−ＨＵＢデバイスの論理構造
【図６】従来のＵＳＢ−ＨＵＢデバイスのシステム図
【符号の説明】
３  ＨＩＤ
１１、２１  シリアル・インターフェース・エンジン
１２、２２  エンドポイント部
１８  仮想ポート制御部
１１３、１２３  比較器
１１１、１２１  シリアル／パラレル変換器
１２６  セレクタ
１２９、  選択ゲート
１２４  ＨＵＢアドレスレジスタ
１２５  ＨＩＤアドレスレジスタ
１３０  ＨＵＢ用リクエスト処理部
１３１  ＨＩＤ用リクエスト処理部
１３３  アンドゲート
１３５  オアゲート
１３６、１３７  比較器
【図１】
0003609051.tif 000002
【図２】
0003609051.tif 000003
【図３】
0003609051.tif 000004
【図４】
0003609051.tif 000005
【図５】
0003609051.tif 000006
【図６】
0003609051.tif 000007