(57)【特許請求の範囲】
【請求項１】
外部機器と、複数のパイプ制御回路を介して接続可能なホストコントローラに設けられた調停回路であって、
前記複数のパイプ制御回路の空き状態を示し、パイプ制御回路から所定の通信サイズのデータ転送単位で更新される空き状態情報を記憶する空き状態情報記憶部と、
前記空き状態情報記憶部を参照し、空き状態の前記パイプ制御回路の中から任意のパイプ制御回路を選択して、選択した前記パイプ制御回路を外部機器に割り当てるとともに、前記空き状態情報記憶部の更新を行う調停部と、を備え、
前記調停部は、前記パイプ制御回路の割り当て処理において、データ転送対象の外部機器との処理履歴情報を、選択した前記パイプ制御回路に通知する、調停回路。
【請求項２】
前記所定の通信サイズは、シリアルバスによるデータ転送により扱われる通信パケットと同一サイズであることを特徴とする請求項１に記載の調停回路。
【請求項３】
前記外部機器から出力されたデータ転送要求に含まれるデータ転送用バッファの識別情報を記憶するパイプ呼び出し設定記憶部を備え、
前記調停部は、当該パイプ呼び出し設定記憶部に格納された前記データ転送用バッファの識別情報を読み出して、前記パイプ制御回路の割り当て処理を開始することを特徴とする請求項１または請求項２に記載の調停回路。
【請求項４】
前記調停部が選択した前記パイプ制御回路にエンドポイントの情報がロードされた場合に、ロードが終了したエンドポイントの情報が書き込まれるパイプ呼び出し完了通知記憶部を更に備え、
前記調停部は、ロードが完了した前記エンドポイントの情報を前記パイプ呼び出し完了通知記憶部に書き込むとともに、中央演算処理装置に割込み信号を送信することを特徴とする請求項１乃至請求項３のいずれか１項に記載の調停回路。
【請求項５】
前記調停部は、前記パイプ制御回路の割り当て処理において、データ転送対象の外部機器の機器情報を、選択した前記パイプ制御回路に通知することを特徴とする請求項１乃至請求項４のいずれか１項に記載の調停回路。
【請求項６】
外部機器と、複数のパイプ制御回路を介して接続可能なホストコントローラにおける前記パイプ制御回路の調停方法であって、
前記複数のパイプ制御回路の空き状態に基づいて、空き状態の前記パイプ制御回路から任意のパイプ制御回路を選択して、
選択した前記パイプ制御回路を外部機器に割り当て、
前記空き状態情報を所定の通信サイズのデータ転送単位で更新し、
前記パイプ制御回路の割り当て処理において、データ転送対象の外部機器との処理履歴情報を、選択した前記パイプ制御回路に通知する、パイプ制御回路調停方法。
【請求項７】
前記所定の通信サイズは、シリアルバスによるデータ転送により扱われる通信パケットと同一サイズであることを特徴とする請求項６に記載のパイプ制御回路調停方法。
【請求項８】
前記外部機器からデータ転送要求を受け付けた場合に、データ転送要求に含まれるデータ転送用バッファの識別情報を記憶し、
記憶された当該データ転送用バッファの識別情報を用いて前記パイプ制御回路の割り当て処理を開始することを特徴とする請求項６または請求項７に記載のパイプ制御回路調停方法。
【請求項９】
前記調停部が選択した前記パイプ制御回路にエンドポイントの情報がロードされた場合に、ロードが終了した前記エンドポイントの情報を記憶するとともに、中央演算処理装置に割込み信号を送信することを特徴とする請求項６乃至請求項８のいずれか１項に記載のパイプ制御回路調停方法。
【請求項１０】
前記パイプ制御回路の割り当て処理において、データ転送対象の外部機器の機器情報を、選択した前記パイプ制御回路に通知することを特徴とする請求項６乃至請求項９のいずれか１項に記載のパイプ制御回路調停方法。
【請求項１１】
外部機器と、複数のパイプ制御回路を介して接続可能なホストコントローラであって、
前記複数のパイプ制御回路の空き状態を示し、前記パイプ制御回路により所定の通信サイズのデータ転送単位で更新される空き状態を記憶する空き状態情報記憶部と、
前記空き状態情報記憶部を参照し、空き状態の前記パイプ制御回路の中から任意のパイプ制御回路を選択して、選択した前記パイプ制御回路に外部機器を割り当てるとともに、前記空き状態情報記憶部の更新を行う調停部と、を有する調停回路と、
接続可能な外部機器とのデータ転送の処理履歴を格納する処理履歴記憶部と、を備え、
前記パイプ制御回路は、所定の通信サイズのデータ転送終了後に前記空き状態情報記憶部を更新し、
前記調停部は、前記パイプ制御回路の割り当て処理において、データ転送対象の外部機器との処理履歴を前記処理履歴記憶部から取り出し、選択した前記パイプ制御回路に取り出した前記処理履歴を通知する、ホストコントローラ。
【請求項１２】
前記所定の通信サイズは、シリアルバスによるデータ転送により扱われる通信パケットと同一サイズであることを特徴とする請求項１１に記載のホストコントローラ。
【請求項１３】
前記調停回路は、前記外部機器からデータ転送要求を受け付けるとともに、データ転送要求に含まれるデータ転送用バッファの識別情報を記憶するパイプ呼び出し設定記憶部を備え、
前記調停部は、当該パイプ呼び出し設定記憶部に格納された前記データ転送用バッファの識別情報を読み出して、前記パイプ制御回路の割り当て処理を開始することを特徴とする請求項１１または請求項１２に記載のホストコントローラ。
【請求項１４】
前記調停回路は、前記調停部が選択した前記パイプ制御回路にエンドポイントの情報がロードされた場合に、ロードが終了した前記エンドポイントの情報が書き込まれるパイプ呼び出し完了通知記憶部をさらに備え、
前記調停部は、ロードが完了したエンドポイントの情報を前記パイプ呼び出し完了通知記憶部に書き込むとともに、中央演算処理装置に割込み信号を送信することを特徴とする請求項１１乃至請求項１３のいずれか１項に記載のホストコントローラ。
【請求項１５】
接続可能な外部機器の性能情報を格納する機器情報記憶部を備え、
前記調停部は、前記パイプ制御回路の割り当て処理において、データ転送対象の外部機器の性能情報を前記機器情報記憶部から取り出し、選択した前記パイプ制御回路に取り出した前記性能情報を通知することを特徴とする請求項１１乃至請求項１４のいずれか１項に記載のホストコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパイプ調停回路、パイプ調停方法に関し、特に組み込み機器に対するパイプ調停回路、パイプ調停方法に関する。
【背景技術】
【０００２】
ホスト機器に様々な周辺機器を接続する為のシリアルバス規格として、ＵＳＢ（Universal Serial Bus）が挙げられる。ＵＳＢの一般的なホストコントローラ規格であるＥＨＣＩ（Enhanced Host Controller Interface）、及びＯＨＣＩ（Open Host Controller Interface）は、ＰＣＩ（Peripheral Component Interconnect）バスを介してデータの入出力を実行することを前提としている。図４は、ＥＨＣＩ規格を用いたＵＳＢデータ転送の概念を示すブロック図である。
【０００３】
ＥＨＣＩ規格を用いたＵＳＢデータ転送において、転送要求が発生したエンドポイントに関し、制御ソフトウェアがＥＨＣＩ規格で定められているフォーマットに従ったＵＳＢトランザクションリストを作成する。制御ソフトウェアは、作成したＵＳＢトランザクションリストをシステムメモリ２１に書き込む。すなわち、制御ソフトウェアは、ＵＳＢトランザクションリストの作成、及びシステムメモリ２１へのアロケート／リリースのメモリ管理を行う。ＤＭＡ（Direct Memory Access）マスタ２３は、ＰＣＩバスを介し、システムメモリ２１からＵＳＢトランザクションリストを読み込む。そして、シーケンサ２２が、ＤＭＡマスタ２３が読み込んだＵＳＢトランザクションリストにより定められた転送順序に従ってＵＳＢデータ転送を行う。シーケンサ２２は、データの転送制御を行う処理部である。
【０００４】
しかし、デジタルスチルカメラ、プリンタ等の組み込み機器は、ＰＣ（Personal Computer）のように高性能のＣＰＵ（Central Processing Unit, 中央演算処理装置）、及びＰＣＩバスを搭載していないことが多い。そのため、ＰＣＩバスを搭載していない組み込み機器は、規格に準拠したＵＳＢホストコントローラを使用することができない。また、ＥＨＣＩ規格を用いたＵＳＢデータ転送では、上述のＵＳＢトランザクションリストの作成などのソフトウェアによる処理が必要となり、処理の負荷が高い。
【０００５】
特許文献１には、組み込み機器に用いるＵＳＢホストコントローラに関連する技術を開示している。このＵＳＢホストコントローラによって、ＰＣＩバスを持たない機器であっても、ＵＳＢホストコントローラ規格に準拠したＵＳＢデータ転送を行うことが可能となる。しかし、このＵＳＢホストコントローラによっても、制御ソフトウェアによるＵＳＢトランザクションリスト作成処理の負荷を軽減することはできない。
【０００６】
このような制御ソフトウェアによる処理の煩雑さを軽減するために、ＵＳＢトランザクションリストの生成が不要であり、Ｉ／Ｏアクセス処理のみでＵＳＢ転送を可能とするＵＳＢホストコントローラ（以下、組み込み機器向けＵＳＢホストコントローラと記載する）を搭載した製品がある（たとえば、ルネサス社製 ＵＳＢ２．０コントローラ  R8A66597）。
【０００７】
図５は、組み込み機器向けＵＳＢホストコントローラの構成を示す図である。ＵＳＢホストコントローラ４０は、ＣＰＵインターフェイス制御ブロック４１と、ＵＳＢ転送スケジュール制御ブロック４２と、ＵＳＢパイプ制御回路４３と、ＵＳＢパイプ用バッファメモリ４４と、ＵＳＢインターフェイス制御ブロック４５と、ＵＳＢダウンストリームポート４６と、を備える。ＣＰＵインターフェイス制御ブロック４１は、ＵＳＢホストコントローラ４０を制御するソフトウェアの処理を行うＣＰＵとのインターフェイスである。ＵＳＢ転送スケジュール制御ブロック４２は、ＵＳＢホストコントローラ規格に定められている条件に従って、有効な状態にあるエンドポイントのデータ転送順序を決定するブロックである。ＵＳＢパイプ制御回路４３は、パイプと呼ばれる仮想通信路を制御することにより、ＵＳＢデータ転送の発行、転送データのバッファリング制御、及びＵＳＢプロトコルの制御を行う。ＵＳＢパイプ用バッファメモリ４４は、ＵＳＢ接続する外部機器、及びＵＳＢホストコントローラ４０を備えるマイクロコンピュータ等がデータ転送を行う際に、一時的なデータの入出力に用いるバッファメモリである。ＵＳＢインターフェイス制御ブロック４５は、ＵＳＢパイプ制御回路４３と、ＵＳＢダウンストリームポート４６と、の間に生じる処理を仲介するインターフェイスである。ＵＳＢダウンストリームポート４６は、ＵＳＢホストコントローラ４０が外部機器と接続する為のポートである。
【０００８】
図６は、図５に示したＵＳＢホストコントローラ４０を搭載したＵＳＢシステムにおいて、ＵＳＢ制御にかかる部分を抜粋して記載したブロック図である。図６は、ＵＳＢホスト搭載システム５０に、マルチカードリーダ／ライタ５５と、ＵＳＢ外付けハードディスク５６と、を物理的に接続している状態を示す。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特表２００７−５０２４７６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、組み込み機器向けＵＳＢホストコントローラによるＵＳＢデータ転送処理では、以下の問題がある。図５及び図６を用いて、組み込み機器向けＵＳＢホストコントローラによるＵＳＢデータ転送処理について説明する。
【００１１】
図６に記載のＵＳＢホストコントローラ４０は、６個のパイプ制御回路４３１〜４３６をサポートする。すなわち、ＵＳＢホストコントローラ４０は、６個のパイプ制御回路４３１〜４３６を有する。ここで、ＵＳＢ転送スケジュール制御ブロック４２は、マルチカードリーダ／ライタ５５のエンドポイントをＵＳＢデータ転送対象のエンドポイントとして選択する。マルチカードリーダ／ライタ５５は、６つのパイプを使用してデータ転送を行うものとする。マルチカードリーダ／ライタ５５をＵＳＢホストコントローラ４０に接続した場合、マルチカードリーダ／ライタ５５はパイプ制御回路４３１〜４３６を占有して、使用する。この場合、新たにＵＳＢ外付けハードディスク５６をＵＳＢホスト搭載システム５０に物理的に接続しても、ＵＳＢホストコントローラ４０内に空き状態のパイプ制御回路がない。そのため、ＵＳＢ外付けハードディスク５６は、ＵＳＢホストコントローラ５１とパイプを介した接続状態にすることができない。
【００１２】
一般に組み込み機器向けＵＳＢホストコントローラは、１０個程度のパイプ制御回路をサポートしている。一般的なＵＳＢメモリやＵＳＢハードディスクは、３個のパイプ制御回路を使用してデータ転送を行う。また、高機能なマルチファンクションプリンタでは、１２個程度のパイプ制御回路を使用してデータ転送を行う。このため、組み込み機器向けＵＳＢホストコントローラでは、合計で３個程度のＵＳＢメモリまたはＵＳＢハードディスクしかパイプを介した接続状態とできない。また、上述の組み込み機器向けＵＳＢホストコントローラでは、高機能なマルチファンクションプリンタを、パイプを介した接続状態にできない恐れがある。
【００１３】
すなわち、上述の組み込み機器向けＵＳＢホストコントローラによっては、パイプを介して接続状態にできる周辺機器の数が制限されるという問題がある。
【課題を解決するための手段】
【００１４】
本発明にかかる調停回路の一態様は、外部機器と、複数のパイプ制御回路を介して接続可能なホストコントローラに設けられた調停回路であって、前記複数のパイプ制御回路の空き状態を示し、パイプ制御回路から所定の通信サイズのデータ転送単位で更新される空き状態情報を記憶する空き状態情報記憶部と、前記空き状態情報記憶部を参照し、空き状態の前記パイプ制御回路の中から任意のパイプ制御回路を選択して、選択した前記パイプ制御回路を外部機器に割り当てるとともに、前記空き状態情報記憶部の更新を行う調停部と、を備えるものである。
【００１５】
本発明においては、所定の通信サイズのデータ転送毎にパイプ制御回路の空き情報を更新する。調停回路は、空き状態のパイプ制御回路を割り当てることにより、パイプ制御回路を複数の外部機器とのデータ転送で共有することが可能となる。
【発明の効果】
【００１６】
本発明によれば、データ転送に用いるパイプ制御回路を複数の外部機器とのデータ転送において共有することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】実施の形態１にかかるＵＳＢホストコントローラの構成図である。
【図２】実施の形態１にかかるＵＳＢパイプアービタの構成図である。
【図３】実施の形態１にかかるＵＳＢホストコントローラを用いた機器の接続関係を示す図である。
【図４】従来のＥＨＣＩ規格を用いたＵＳＢデータ転送の概念図である。
【図５】従来のＵＳＢホストコントローラの構成図である。
【図６】従来のＵＳＢホストコントローラを用いた機器の接続関係を示す図である。
【発明を実施するための形態】
【００１８】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。まず、図１を参照して、本実施の形態にかかるＵＳＢホストコントローラの基本構成について説明する。ＵＳＢホストコントローラ１０は、ＣＰＵ（Central Processing Unit, 中央演算処理装置）インターフェイス制御ブロック１１と、ＵＳＢ転送スケジュール制御ブロック１２と、ＵＳＢパイプアービタ１３と、パイプ状態保持メモリ１４と、複数のＵＳＢパイプ制御回路１５（１５１〜１５ｎ）と、ＵＳＢパイプ用バッファメモリ１６と、ＵＳＢインターフェイス制御ブロック１７と、ＵＳＢダウンストリームポート１８と、を備える。
【００１９】
ＣＰＵインターフェイス制御ブロック１１は、ＣＰＵ（図示せず）とのインターフェイスである。ＣＰＵは、ＵＳＢホストコントローラ１０を制御する為のソフトウェアを実行する。ＵＳＢ転送スケジュール制御ブロック１２は、ＵＳＢ規格に定められた条件に従い、有効なエンドポイントのデータ転送順序を決定する処理部である。また、ＵＳＢ転送スケジュール制御ブロック１２は、ＵＳＢホストコントローラ１０を備える機器と接続されている外部機器のエンドポイントの情報を保持する。エンドポイントとは、データ転送用のバッファである。エンドポイントの情報とは、少なくとも、ＵＳＢホストコントローラ１０がデータ転送先を特定するための情報であり、デバイスアドレスと、エンドポイント番号と、転送方向と、からなる。
【００２０】
ＵＳＢパイプアービタ１３は、後述のＵＳＢパイプ制御回路１５の使用状態を保持する。ＵＳＢパイプアービタ１３は、ＵＳＢパイプ制御回路１５の調停を行う調停回路として動作する。ＵＳＢパイプアービタ１３は、ＵＳＢパイプ制御回路１５の使用状態に基づいて、各外部機器のエンドポイントにＵＳＢパイプ制御回路１５を割り当てる。ＵＳＢパイプアービタ１３の詳細な構成、及び動作は後述する。
【００２１】
パイプ状態保持メモリ１４は、ＵＳＢホストコントローラ１０に物理的に接続されている外部機器の性能情報を格納する。ここで外部機器の性能情報とは、ＵＳＢパイプ制御回路１５が転送対象の外部機器とのＵＳＢデータ転送に使用する情報である。例えば、外部機器のＵＳＢ転送タイプ、転送スピード、割込みステータス情報等が挙げられる。当該外部機器の性能情報は、外部機器がＵＳＢダウンストリームポート１８に物理的に接続されたときに格納される。  
【００２２】
また、パイプ状態保持メモリ１４は、各外部機器のエンドポイントによるデータ転送の処理履歴情報を保持する。処理履歴情報は、ＵＳＢパイプ制御回路１５がこれまでの当該エンドポイントによるデータ転送状態を参照し、適切な状態からデータ転送を再開する為に用いられる。例えば、処理履歴情報は、直前のデータ転送でエラーが起こったか否かの情報、データトグルシーケンスの値等が該当する。なお、データトグルシーケンスとは、データ転送に用いるパケットに含まれる値（Packet ID）であり、ＵＳＢホストコントローラと外部機器との間でパケット送受信の同期を取るためのシーケンス情報である。
【００２３】
なお、パイプ情報保持メモリ１４は、外部機器の性能情報と、処理履歴情報と、を格納する記憶部として説明したが、これらの情報を別のメモリに保持する構成でもよい。また、ＵＳＢパイプアービタ１３内にパイプ情報保持メモリ１４を設けてもよい。
【００２４】
ＵＳＢパイプ制御回路１５（１５１〜１５ｎ）は、パイプを制御する為の回路である。詳しくは、ＵＳＢパイプ制御回路１５（１５１〜１５ｎ）は、ＵＳＢ転送の発行、転送データのバッファリング制御、ＵＳＢプロトコル制御を行う制御回路である。ＵＳＢパイプ制御回路１５は、データ転送を行うエンドポイントの情報をロードすることにより、データ転送先を認識することが可能となる。ＵＳＢパイプ制御回路１５を構成する回路数は、通信中と、次通信準備中と、待機中と、に用いる３個で構成することにより律速することなくデータ通信が可能である。なお、ＵＳＢパイプ制御回路１５を構成する回路数は、これに限らず、３個以上、または３個以下の回路から構成してもよい。ＵＳＢパイプ制御回路１５は、所定の通信サイズのデータ転送が終了した場合に、後述のパイプ状態管理レジスタ１３２の保持する値を更新する。すなわち、ＵＳＢパイプ制御回路１５は、所定の通信サイズのデータ転送が終了した場合に、パイプ状態管理レジスタ１３２に当該ＵＳＢパイプ制御回路が空き状態になったことを書き込む。
【００２５】
ＵＳＢパイプ用バッファメモリ１６は、ＵＳＢ接続する外部機器、及びＵＳＢホストコントローラ１０を備えるマイクロコンピュータ等がデータ転送を行う際に、一時的なデータの入出力に用いるバッファメモリである。なお、ＵＳＢパイプ用バッファメモリ１６は、複数設けてもよい。
【００２６】
ＵＳＢインターフェイス制御ブロック１７は、ＵＳＢパイプ制御回路１５と、ＵＳＢダウンストリームポート１８と、の間に生じる処理を仲介するインターフェイスである。ＵＳＢダウンストリームポート１８は、ＵＳＢホストコントローラ１０が外部機器と接続する為のポートである。ＵＳＢダウンストリームポート１８は、ＵＳＢホストコントローラ１０を備える機器により、その数が異なる。ＵＳＢダウンストリームポート１８の数は、ＵＳＢホストコントローラ１０を備える機器と物理的に接続できる外部機器の数と同数となる。
【００２７】
続いて、図２を参照し、ＵＳＢパイプアービタ１３の詳細な構成を説明する。ＵＳＢパイプアービタ１３は、ＣＰＵバスインターフェイス制御ブロック１３１と、パイプ状態管理レジスタ１３２と、パイプ呼び出し管理レジスタ１３３と、パイプ呼び出し完了通知レジスタ１３４と、パイプ―メモリ間データ転送制御部１３５と、パイプ状態転送制御バス制御ブロック１３６と、を備える。
【００２８】
ＣＰＵバスインターフェイス制御ブロック１３１は、ＣＰＵ制御用バスとのインターフェイスとなる処理部である。パイプ状態管理レジスタ１３２は、ＵＳＢパイプ制御回路１５の使用状況（空き状態か、使用状態か）をリアルタイムに記憶するためのレジスタである。すなわち、パイプ状態管理レジスタ１３２は、ＵＳＢパイプ制御回路１５の空き状態を記憶する空き状態情報記憶部である。パイプ状態管理レジスタ１３２に格納された値は、ＵＳＢパイプ制御回路１５が所定データサイズのデータ転送を完了したときに書き換えられる。
【００２９】
パイプ呼び出し管理レジスタ１３３は、データ転送要求が発生したエンドポイントを特定する為の情報を設定するレジスタである。パイプ呼び出し管理レジスタ１３３には、転送対象のエンドポイントの情報がＵＳＢ転送スケジュール制御ブロック１２から入力される。
【００３０】
パイプ呼び出し完了通知レジスタ１３４は、データ転送要求を行ったエンドポイントの情報が、ＵＳＢパイプ制御回路１５にロードされたことを示すレジスタである。パイプ呼び出し完了通知レジスタ１３４は、パイプ―メモリ間データ転送制御部１３５による、ＵＳＢパイプ制御回路１５のエンドポイントへの割り当てが完了した場合に、そのエンドポイントの情報が書き込まれる。
【００３１】
パイプ―メモリ間データ転送制御部１３５は、ＵＳＢパイプ制御回路１５の割り当てを調停する調停部として機能する。具体的には、以下のように動作する。
【００３２】
パイプ―メモリ間データ転送制御部１３５は、定期的にパイプ呼び出し管理レジスタ１３３を参照し、データ転送対象となるエンドポイントがあるか否かを判定する。データ転送対象となるエンドポイントがある場合、パイプ―メモリ間データ転送制御部１３５は、パイプ状態管理レジスタ１３２を参照し、空き状態となっているＵＳＢパイプ制御回路１５を特定する。また、パイプ―メモリ間データ転送制御部１３５は、データ転送対象となるエンドポイントと対応する外部機器の機器情報、及び当該エンドポイントの処理履歴をパイプ状態保持メモリ１４から取得し、取得した処理履歴を空き状態のＵＳＢパイプ制御回路１５にロードする。ロードが完了した場合、パイプ―メモリ間データ転送制御部１３５は、パイプ状態管理レジスタ１３２の値を更新する。また、ロードが完了した場合、パイプ―メモリ間データ転送制御部１３５は、パイプ呼び出し完了通知レジスタ１３４にロードが終了したエンドポイントの情報を書き込むとともに、ＣＰＵインターフェイス制御ブロック１１に割込み信号を出力する。
【００３３】
次に、外部機器をＵＳＢダウンストリームポート１８に物理的に接続した場合の、ＵＳＢホストコントローラ１０の動作を説明する。ＵＳＢホストコントローラ１０は、接続された外部機器のエンドポイント情報、すなわちデバイスアドレスと、エンドポイント番号と、転送方向と、を外部機器から取得する。そして、ＵＳＢ転送スケジュール制御ブロック１２は取得したエンドポイント情報を保持する。
【００３４】
さらに、ＵＳＢホストコントローラ１０は、接続された外部機器の性能情報を取得し、取得した情報をパイプ状態保持メモリ１４に格納する。ここで、外部機器の性能情報と、前述のエンドポイントの情報を関連付けて格納する。例えば、ＵＳＢホストコントローラ１０は、物理的に接続された外部機器の転送対象の機器のＵＳＢ転送タイプ、転送スピード、割込みステータス情報等を取得し、取得した情報をパイプ状態保持メモリ１４に格納する。
【００３５】
次に図２を参照し、ＩＮ転送、すなわち外部機器がＵＳＢホストコントローラ１０を備える機器からデータを読み出す場合の処理を説明する。最初にＵＳＢ転送スケジュール制御ブロック１２は、ＵＳＢ規格に基づいて、ＵＳＢ転送が可能なエンドポイントから、データ転送対象となるエンドポイントを選択する。ＵＳＢ転送スケジュール制御ブロック１２は、選択されたエンドポイントの情報、すなわちデバイスアドレスと、エンドポイント情報と、転送方向と、をＵＳＢパイプアービタ１３内のパイプ呼び出し管理レジスタ１３３に書き込む。
【００３６】
パイプ―メモリ間データ転送制御部１３５は、定期的にパイプ呼び出し管理レジスタ１３３を参照し、データ転送対象となるエンドポイントがあるか否かを判定する。データ転送対象となるエンドポイントがある場合、パイプ―メモリ間データ転送制御部１３５は、パイプ呼び出し管理レジスタ１３３に記憶されたエンドポイント情報を基に、アクセスすべきパイプ状態保持メモリ１４の領域を特定する。パイプ―メモリ間データ転送制御部１３５は、特定した領域を参照し、データ転送対象のエンドポイントと対応する外部機器の機器情報、及び当該エンドポイントの処理履歴を取得する。また、パイプ―メモリ間データ転送制御部１３５は、パイプ状態管理レジスタ１３２を参照し、空き状態であるＵＳＢパイプ制御回路１５を特定する。ここでは、ＵＳＢパイプ制御回路１５１が空き状態であるものとする。そして、パイプ―メモリ間データ転送制御部１３５は、パイプ状態保持メモリ１４から取得した機器情報、及び処理履歴情報を空き状態であるＵＳＢパイプ制御回路１５１にロードする。例えば、パイプ―メモリ間データ転送制御部１３５は、ＵＳＢパイプ制御回路１５１に当該エンドポイントの機器情報として外部機器のＵＳＢ転送タイプ、転送スピード等をロードする。また、パイプ―メモリ間データ転送制御部１３５は、ＵＳＢパイプ制御回路１５１に当該エンドポイントの前回のデータ転送がエラー状態ではなかったこと、データトグルシーケンスの値が"１"であること、等をロードする。
【００３７】
パイプ―メモリ間データ転送制御部１３５は、上述のロード処理が完了の後に、パイプ状態管理レジスタ１３２に対してロードの完了を通知する。すなわち、エンドポイントを割り当てたＵＳＢパイプ制御回路１５１が使用状態である旨をパイプ状態管理レジスタ１３２に書き込む。また、パイプ―メモリ間データ転送制御部１３５は、パイプ呼び出し完了通知レジスタ１３４にロードが終了したエンドポイントの情報を書き込むとともに、ＣＰＵインターフェイス制御ブロック１１に割込み信号を出力する。エンドポイント情報がロードされたＵＳＢパイプ制御回路１５１は、ＵＳＢトークンを発行し、ＵＳＢ  ＩＮ転送を開始する。この場合、ＵＳＢパイプ制御回路１５１は、ロードされた機器情報と、処理履歴情報とを用いて、適切な状態からＵＳＢ ＩＮ転送を行う。
【００３８】
続いて図２を参照して、ＯＵＴ転送、すなわちＵＳＢホストコントローラ１０を備える機器から外部機器に対してデータの書き込みを行う場合の処理を説明する。ＯＵＴ転送要求が発生した場合、ＵＳＢホストコントローラ１０を備える機器のシステムソフトウェアは、ＣＰＵインターフェイス制御ブロック１１を介してＵＳＢスケジュール制御ブロック１２からデータ転送先のエンドポイントの情報を取り出す。そして、システムソフトウェアは、パイプ呼び出し管理レジスタ１３２にデータ転送先のエンドポイント情報を書き込む。
【００３９】
パイプ―メモリ間データ転送制御部１３５は、定期的にパイプ呼び出し管理レジスタ１３３を参照し、データ転送対象となるエンドポイントがあるか否かを判定する。データ転送対象となるエンドポイントがある場合の以降の処理はＩＮ転送と同様である。すなわち、パイプ―メモリ間データ転送制御部１３５によるパイプ状態保持メモリ１４へのアクセス、空き状態であるＵＳＢパイプ制御回路１５の選択、及びＵＳＢパイプ制御回路１５への機器情報、及び処理履歴情報のロードが実行される。そして、ＵＳＢパイプ制御回路１５は、ＵＳＢトークンを発行し、ＵＳＢ ＯＵＴ転送を開始する。
【００４０】
次に、ＩＮ転送、及びＯＵＴ転送の終了時のＵＳＢホストコントローラ１０の動作を以下に説明する。ここで、ＩＮ転送、及びＯＵＴ転送の終了とは、データ送信に用いるパケット単位での送信の終了を指す。たとえばＵＳＢパイプ制御回路１５１が所定の通信サイズのデータ転送（たとえば５１２バイト）のデータ転送が終了した場合、パイプ状態管理レジスタ１３２を更新する。すなわち、ＵＳＢパイプ制御回路１５の各々は、パイプ状態管理レジスタ１３２に対し、所定の通信サイズのデータ処理毎に当該ＵＳＢパイプ制御回路１５が空き状態になったことを書き込む。
【００４１】
また、ＵＳＢパイプ制御回路１５１は、所定の通信サイズのデータ転送（たとえば５１２バイト）のデータ転送が終了した場合に、当該データ転送先のエンドポイントの処理履歴をパイプ状態保持メモリ１４に書き込む。例えば、ＵＳＢパイプ制御回路１５１は、当該エンドポイントとのデータ転送がエラー状態で終了したか否か、データトグルシーケンスの値等をパイプ状態保持メモリ１４に書き込む。
【００４２】
図３は、上述のＵＳＢホストコントローラ１０を内蔵したＵＳＢホスト搭載システムを示す。マルチカードリーダ／ライタ３４、及びＵＳＢ外付けハードディスク３５は、ＵＳＢパイプアービタ１３を介して、ＵＳＢパイプ制御回路１５を使用する。ＵＳＢパイプアービタ１３が、ＵＳＢパイプ制御回路１５の使用を調停することにより、ＵＳＢパイプ制御回路１５は共有可能となる。
【００４３】
続いて、本実施の形態にかかるホストコントローラによる効果を説明する。上述のように、ホストコントローラ内に調停回路を設け、パイプ制御回路の空き情報を所定の通信サイズのデータ転送毎に書き換える。調停回路が所定の通信サイズのデータ転送毎に空き状態のパイプ制御回路を外部機器とのエンドポイントに割り当てることにより、パイプ制御回路の共有が可能となる。これにより、多くのパイプ制御回路を用意しない場合であっても、接続可能な周辺機器の数が限定されない。すなわち、回路規模を小さく保ったまま、多くの周辺機器とパイプを介した接続状態にすることが可能となる。
【００４４】
ＵＳＢ規格を用いたデータ転送では、規格上１２７個の外部機器が持つ最大４０６４個のエンドポイントと、ＵＳＢホストコントローラを備える機器とがパイプを介した接続状態にできる。本実施の形態にかかるホストコントローラでは、パイプ制御回路を共有することにより、規格上限と同一個数の外部機器を、パイプを介した接続状態とすることが可能となる。
【００４５】
さらに、本実施の形態にかかるホストコントローラでは、物理的に接続状態となっている外部機器の各エンドポイントの処理履歴情報をパイプ状態保持メモリに格納している。パイプ制御回路には、データ転送を開始する前にデータ転送対象のエンドポイントの処理履歴情報が通知される。これにより、所定サイズ毎にパイプ制御回路のデータ転送対象が変わったとしても、適切な状態からデータ転送を開始することが可能となる。
【００４６】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００４７】
１０    ＵＳＢホストコントローラ
１１    ＣＰＵインターフェイス制御ブロック
１２    ＵＳＢ転送スケジュール制御ブロック
１３    ＵＳＢパイプアービタ
１４    パイプ状態保持メモリ
１５    ＵＳＢパイプ制御回路
１６    ＵＳＢパイプ用バッファメモリ
１７    ＵＳＢインターフェイス制御ブロック
１８    ＵＳＢダウンストリームポート
１３１  ＣＰＵバスインターフェイス制御ブロック
１３２  パイプ状態管理レジスタ
１３３  パイプ呼び出し管理レジスタ
１３４  パイプ呼び出し完了通知レジスタ
１３５  パイプ―メモリ間データ転送制御部
１３６  パイプ状態転送制御バス制御ブロック
【図１】
0005456434.tif 000002
【図２】
0005456434.tif 000003
【図３】
0005456434.tif 000004
【図４】
0005456434.tif 000005
【図５】
0005456434.tif 000006
【図６】
0005456434.tif 000007