(57)【要約】【課題】通信データ格納バッファの容量をプログラマブルに設定するＵＳＢホストコントローラにおいて、接続されるＵＳＢ機器の種類や使い方があらかじめわかっていない場合でも、プログラムを変更せずにパイプに割り付けるバッファを自動的に変更し、なおかつ最大の通信性能が発揮されるようにする。【解決手段】ＵＳＢホストからＵＳＢ機器にアクセスする際のアドレスとなる、エンドポイントディスクリプタを取得した際に、通信を行うのに必要なパイプ数を判断し、使用するパイプにのみバッファを割り付け、各パイプの通信量に応じて、パイプに割り付けたバッファサイズを変更する。【選択図】  図１
2012048275.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つ以上のＵＳＢ機器と接続され、各パイプに割り付ける通信データ格納バッファの容量をプログラマブルに設定するＵＳＢホストコントローラとＵＳＢデバイスコントローラとを有するＵＳＢ通信装置におけるＵＳＢ通信方法において、接続されるＵＳＢ機器に応じた自動バッファ割り付けを行うとともに、各パイプの通信量に応じて、パイプに割り付けたバッファサイズを決定することを特徴とするＵＳＢ通信方法。
【請求項２】
請求項１の記載において、前記ＵＳＢ機器に応じた自動バッファ割り付けは、取得したエンドポイントディスクリプタから判断して、バッファを割り付けるパイプを決定し、インタラプト転送のパイプには固定長のバッファを、バルク転送およびアイソクロナス転送のパイプには、残りの割り当て可能なバッファサイズを均等なサイズで割り当てることを特徴とするＵＳＢ通信方法。
【請求項３】
請求項１の記載において、前記パイプに割り付けたバッファサイズの変更は、バルク転送およびアイソクロナス転送で通信を実行後、通信が正常終了したかどうかを判定し、正常終了した場合には、実際に行った通信量を、その通信で使用したパイプごとに積算していくことで計測した各パイプの通信量から、総通信量を計算し、総通信量と各パイプの通信量から、各パイプに割り当てるパイプバッファの比率を計算し、求めた比率から割り付けるバッファサイズを計算し、求めたバッファサイズを各パイプに設定することを特徴とするＵＳＢ通信方法。
【請求項４】
請求項３の記載において、バッファが割り付けられていて全く通信を行わなかったパイプに対して、いつでも通信を行えるように、最低限のバッファサイズを割り付けることを特徴とするＵＳＢ通信方法。
【請求項５】
請求項１の記載において、前記ＵＳＢホストコントローラの各パイプのバッファ割り付け情報を表示装置に表示することを特徴とするＵＳＢ通信方法。
【請求項６】
少なくとも１つ以上のＵＳＢ機器と接続され、各パイプに割り付ける通信データ格納バッファの容量をプログラマブルに設定するＵＳＢホストコントローラとＵＳＢデバイスコントローラとを有するＵＳＢ通信装置において、前記ＵＳＢホストコントローラは、接続されるＵＳＢ機器に応じた自動バッファ割り付けを行うとともに、各パイプの通信量に応じて、パイプに割り付けたバッファサイズを決定することを特徴とするＵＳＢ通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ（ユニバーサル・シリアル・バス）通信方法、および装置に係り、特に、ホスト制御装置内部の通信データ格納バッファの容量を、論理通信路（パイプ）ごとに設定する方式に関する。
【背景技術】
【０００２】
様々なＰＣ（パーソナル・コンピュータ）周辺機器をＰＣに接続するための統一インタフェースとして開発されたＵＳＢは、その汎用性と使いやすさから、近年では、ＰＣのみならず、荷電製品や産業機器にまで利用されるようになってきた。
【０００３】
ＵＳＢ通信では、ＵＳＢホスト（例えばＰＣ）とＵＳＢデバイス（ＵＳＢにより接続可能な周辺機器、以降ＵＳＢ機器という）とを１本の物理的なＵＳＢケーブルで接続するが、論理的にはパイプと呼ばれる通信路で接続されており、パイプごとに独立した通信ができる仕組みになっている。
【０００４】
上記パイプの通信を制御するＵＳＢ通信コントローラと、コントローラの制御を行うコントローラソフトウェアとのインタフェースには、ＵＨＣＩ（Universal Host Controller Interface）やＥＨＣＩ（Enhanced Host Controller Interface）に見られるインタフェース規格も存在するが、産業機器などでＵＳＢ通信を利用する場合には、コスト低減のため、インタフェース規格に準拠しない独自の簡易インタフェースが採用されることが多い。
【０００５】
そのような簡易インタフェースの一つに、通信データ格納バッファとして用いるＲＡＭをＵＳＢ通信コントローラに内蔵し、そのＲＡＭの何バイトをどのパイプに割り付けるかをプログラマブルに設定する方式がある。この方式では、各パイプのバッファ容量の合計が内蔵ＲＡＭ容量を超えないようにしながら、通信量の大きなパイプには大きめのバッファを割り付け、通信量の小さなパイプには小さめのバッファを割り付けることで、最大の通信性能を実現できる（例えば、特許文献１参照）。
【０００６】
しかしながら、パイプと通信量との関係は、接続されるＵＳＢ機器の種類や使い方などに依存するため、それらがあらかじめわかっていない場合には、最適なバッファ割り付けを事前に知ることはできず、したがって最大の通信性能を発揮させることができない。また、最大の通信性能を発揮させるために、接続されるＵＳＢ機器ごとにバッファ割り付けを変更するのは手間がかかる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−０４６８５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、通信データ格納バッファの容量をプログラマブルに設定するＵＳＢ通信方法において、接続されるＵＳＢ機器の種類や使い方があらかじめわかっていない場合でも、プログラムを変更せずにパイプに割り付けるバッファを自動的に変更し、なおかつ最大の通信性能が発揮されるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第一の特徴は、接続されるＵＳＢ機器に応じた自動バッファ割り付けである。ＵＳＢホストからＵＳＢ機器にアクセスする際のアドレスとなる、エンドポイントディスクリプタを取得した際に、通信を行うのに必要なパイプ数を判断し、必要なパイプ数から各パイプに割り付けるバッファサイズを計算し、使用するパイプにのみ通信データ格納バッファを割り付ける。
【００１０】
第二の特徴は、各パイプの通信量に応じて、パイプに割り付けた通信データ格納バッファのサイズを変更することである。接続されるＵＳＢ機器に応じて最大の通信性能を発揮させるために、各パイプでの通信量を測定し、通信量の大小に応じてバッファのサイズを割り付ける。
【発明の効果】
【００１１】
通信データ格納バッファの容量をプログラマブルに設定するＵＳＢホストコントローラにおいて、接続されるＵＳＢ機器の種類や使い方があらかじめわかっていない場合でも、プログラムを変更せずにパイプに割り付けるバッファを自動的に変更することで、利便性が向上する。また、通信量に応じて、各パイプに割り付けるバッファのサイズを決めることで、常に最大の通信性能を発揮させることが可能になる。
【図面の簡単な説明】
【００１２】
【図１】ＵＳＢ通信機器の構成図である。
【図２】ＵＳＢホストコントローラで動作するプログラムの一例を示すフローチャートである。
【図３】ＵＳＢホストコントローラで動作するプログラムの一例を示すフローチャートである。
【図４】ＵＳＢホストコントローラで動作するプログラムの一例を示すフローチャートである。
【図５】通信データ格納バッファメモリへの通信データの割り付けの一例を示す構成図である。
【図６】通信データ格納バッファメモリへの通信データの割り付けの一例を示す構成図である。
【図７】ＵＳＢ通信機器の構成図である。
【発明を実施するための形態】
【００１３】
以下、図面を用いて本発明の実施例を説明する。
【００１４】
〔実施例〕
図１は、ＵＳＢ通信機器の構成図である。図１に示すように、ディスプレイ１０１とＵＳＢ制御基板１０２が接続され、ＵＳＢ機器がＵＳＢ制御基板１０２のＵＳＢポート１２４に接続される。ＵＳＢ制御基板１０２には、ＵＳＢデバイスコントローラ１１０，ＵＳＢ制御基板１０２とＵＳＢ機器１０３の通信を実現するＵＳＢホストコントローラ１２０、ＵＳＢ通信を制御するプログラムを格納するメモリ１３０を備えている。ＵＳＢホストコントローラ１２０には、ＵＳＢ通信を制御するプログラムを実行するプロセッサ１２２、ＵＳＢ機器１０３とＵＳＢ通信にて送受信するデータを格納する通信データ格納バッファメモリ１２５、ＵＳＢ機器１０３とＵＳＢ通信にてデータを送受信するＵＳＢポート１２４が備えられている。ＵＳＢデバイスコントローラ１０４には、ディスプレイ１０１とＵＳＢ通信にて送受信するデータを格納する通信データ格納バッファメモリ１１２、ディスプレイ１０１とＵＳＢ通信にてデータを送受信するＵＳＢポート１１３、ＵＳＢホストコントローラとローカルバス接続するバスインタフェース１１１が備えられている。ＵＳＢデバイスコントローラ１０４の制御はローカルバスを介して、ＵＳＢホストコントローラ１２０のプロセッサ１２２が行う。メモリ１３０に格納されているプログラムは、ＵＳＢホストコントローラ１２０のプロセッサ１２２が読み出して実行する。
【００１５】
図２は、ＵＳＢホストコントローラ１２０で動作するプログラムの一例を示すフローチャートであり、ＵＳＢ機器１０３が接続されたときに、ＵＳＢホストコントローラ１２０で動作するプログラムの各パイプの初期化に関するフローチャートを示す。ＵＳＢホストコントローラ１２０とＵＳＢ機器１０３の接続を確立するため、ＵＳＢ機器１０３から送信される情報である全ディスクリプタ取得後、エンドポイントディスクリプタを探索する（ステップ２０２）。エンドポイントディスクリプタを見つけると、通信タイプの判定を行う（ステップ２０３）。この通信タイプには、コントロール転送，インタラプト転送，バルク転送，アイソクロナス転送がある。コントロール転送は、ＵＳＢ機器の制御などに必要な情報を通信するのに使用される。インタラプト転送は、一定間隔でデータを転送しなければならない通信に使用し、主にキーボードやマウスなどの通信に使用される。バルク転送は、大量のデータを不定期に転送するのに使用し、記憶装置やスキャナなどのデータ転送に使用される。アイソクロナス転送はリアルタイム性が要求されるデータ転送に使用し、ビデオやオーディオの入出力などに使用される。
【００１６】
通信タイプを判定後、その通信タイプがあったことを示すため、通信タイプごとにエンドポイント数をカウントアップする（ステップ２０４）。この処理を全てのエンドポイントディスクリプタに対して行う（ステップ２０１）。全てのエンドポイントディスクリプタを探索後、全てのエンドポイントに対する通信を、ＵＳＢホストコントローラ１２０が実現できるかを判定する（ステップ２０５）。実現できない場合にはエラー通知を行う（ステップ２０６）。実現できる場合には、エンドポイントにあわせて、バッファを割り付けるパイプを決定する。インタラプト転送では、バッファは固定長のため、そのまま割り付ける（ステップ２０７）。バルク転送およびアイソクロナス転送では、残りの割り付け可能なバッファサイズを均等なサイズで割り付ける（ステップ２０８）。
【００１７】
図３は、ＵＳＢホストコントローラ１２０で動作するプログラムの一例を示すフローチャートであり、図２に示すフローチャートに示す処理の実行により、ＵＳＢホストコントローラ１２０とＵＳＢ機器１０３の接続処理が完了後の送受信処理からＵＳＢ通信処理終了までのフローチャートを示す。この手順の中で、ＵＳＢ通信実行時の、通信量の計測を行う。
【００１８】
バルク転送およびアイソクロナス転送で通信を実行後（ステップ３０１）、通信が正常終了したかどうかを判定する（ステップ３０２）。正常終了していない場合にはエラー通知を行う（ステップ３０３）。正常終了した場合には、実際に行った通信量を、その通信で使用したパイプごとに積算し、メモリ１３０に格納する（ステップ３０４）。
【００１９】
図４は、ＵＳＢホストコントローラで動作するプログラムの一例を示すフローチャートであり、図２のフローチャートで決定したＵＳＢホストコントローラ１２０の各パイプのバッファ再割り付けに関するフローチャートである。このプログラムは一定時間ごとに起動させる。まず、全てのＵＳＢ通信を禁止する（ステップ４０１）。その後、図３に示すフローチャートで計測した各パイプの通信量をメモリ１３０から読み出し、総通信量を計算する（ステップ４０２）。総通信量と各パイプの通信量から、各パイプの通信量の比率を計算する（ステップ４０３）。求めた比率から割り付けるバッファサイズを計算する（ステップ４０４）。なお、バッファが割り付けられているのに、全く通信を行わなかったパイプに対しても、いつでも通信を行えるように、最低限のバッファサイズは割り付ける。求めたバッファサイズを各パイプに割り付け（ステップ４０５）、各パイプの通信量の積算をクリアし（ステップ４０６）、ＵＳＢ通信を再開させる（ステップ４０７）。
【００２０】
図５は、通信データ格納バッファメモリ１２５への通信データの割り付けの一例を示す構成図であり、図２のフローチャートに示す各パイプの初期化を行った後の、各パイプのバッファ割り付けの一例を示す。この例では、インタラプト転送のエンドポイントが２つ、バルク転送のエンドポイントが４つあった場合である。まず、バッファサイズが固定長であるコントロール転送とインタラプト転送から割り付ける。その後で、残りのバッファサイズをバルク転送で均等に割り付ける。
【００２１】
図６は、通信データ格納バッファメモリ１２５への通信データの割り付けの一例を示す構成図であり、図４のフローチャートに示す各パイプのバッファ再割り付けを行った後の、各パイプのバッファ割り付けの一例を示す。この例では、パイプ１と２を使用した通信は無く、パイプ３と４での通信量比率が３：７であったとする。パイプ０（コントロール転送）とパイプ６，７（インタラプト転送）のバッファサイズは固定長のため、無視する。まず通信を行わなかったパイプ１と２に最低サイズのバッファを割り付ける。その後で、残りのバッファサイズをパイプ３と４に３：７の割合で割り付ける。
【００２２】
図７は、ＵＳＢ通信機器の構成図であり、ディスプレイ１０１とＵＳＢ制御基板１０２が接続され、ＵＳＢホストコントローラ１２０の、パイプのバッファ設定サイズがディスプレイ１０１に表示されている一例を示す。ＵＳＢ通信にてディスプレイ１０１に、ＵＳＢホストコントローラ１２０の各パイプのバッファ割り付けサイズ情報を送信し、ディスプレイ１０１でバッファ割り付けサイズ情報を表示する。このバッファ割り付けサイズ情報は、バッファサイズが変更される度に、ディスプレイ１０１に送信される。
【００２３】
以上述べたように、本発明の実施例は、接続されるＵＳＢ機器に応じた自動バッファ割り付けを行うものであり、ＵＳＢホストからＵＳＢ機器にアクセスする際のアドレスとなる、エンドポイントディスクリプタを取得した際に、通信を行うのに必要なパイプ数を判断し、必要なパイプ数から各パイプに割り付けるバッファサイズを計算し、使用するパイプにのみ通信データ格納バッファを割り付けるものである。また、各パイプの通信量に応じて、パイプに割り付けた通信データ格納バッファのサイズを変更するものである。具体的には、接続されるＵＳＢ機器に応じて最大の通信性能を発揮させるために、各パイプでの通信量を測定し、通信量の大きなパイプには大きめのバッファを、通信量の小さなパイプには小さめのバッファを割り付けるように変更して、通信量の大小に応じたバッファのサイズを決定する。
【００２４】
したがって、本発明によれば、通信データ格納バッファの容量をプログラマブルに設定するＵＳＢホストコントローラにおいて、接続されるＵＳＢ機器の種類や使い方があらかじめわかっていない場合でも、プログラムを変更せずにパイプに割り付けるバッファを自動的に変更することで、利便性が向上する。また、通信量に応じて、各パイプに割り付けるバッファサイズを決めることで、常に最大の通信性能を発揮させることが可能になる。
【００２５】
このように、ＵＳＢ通信方法、およびＵＳＢ通信装置において、特に、ホスト制御装置内部の通信データ格納バッファの容量を、論理通信路（パイプ）ごとに設定する場合に、高速な通信を実現するためのバッファ容量を効率よく設定することができる。
【符号の説明】
【００２６】
１０１  ディスプレイ
１０２  ＵＳＢ制御基板
１０３  ＵＳＢ機器
１１０  ＵＳＢデバイスコントローラ
１１１  バスインタフェース
１１２  通信データ格納バッファメモリ
１１３  ＵＳＢポート
１２０  ＵＳＢホストコントローラ
１２１  ローカルバスコントローラ
１２２  プロセッサ
１２３  ＵＳＢコントローラ
１２４  ＵＳＢポート
１２５  通信データ格納バッファメモリ
１３０  メモリ
【図１】
2012048275.tif 000003
【図２】
2012048275.tif 000004
【図３】
2012048275.tif 000005
【図４】
2012048275.tif 000006
【図５】
2012048275.tif 000007
【図６】
2012048275.tif 000008
【図７】
2012048275.tif 000009