(57)【特許請求の範囲】
【請求項１】
ＵＳＢインターフェースによりホストコンピュータと通信を行うシリアル通信用データ処理装置であって、
バスイベントに対する処理を行う中央処理装置と、
一バスイベントに応じて、直ちに前記中央処理装置に対して割込みを発生させ前記中央処理装置に前記バスイベントに対する処理を行わせる第１の割込み形態、および所定の割込み周期で定められるタイミングまで前記バスイベントをバッファリングしてから前記中央処理装置に対して割込みを発生させ前記中央処理装置に前記バスイベントに対する処理を行わせる第２の割込み形態のいずれか一方をバスイベント毎に予め設定する割込み形態設定手段と、
バスイベント発生時に、前記割込み形態設定手段により予め設定された内容に基づいて第１の割込み形態による処理あるいは第２の割込み形態による処理を実行する処理実行手段と、
を備えてなり、前記第２の割込み形態におけるバスイベントのバッファリングが、前記バスイベントを格納するバッファ手段と、前記バスイベントを構成するデータパケット毎のデータサイズ、前記バスイベントの全データサイズ、および前記バスイベントを構成するデータパケットの数を記憶するレジスタ手段とにより行われることを特徴とするシリアル通信用データ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＵＳＢインターフェースによりホストコンピュータと通信を行うシリアル通信用データ処理装置に関する。
【０００２】
【従来の技術】
従来、シリアルインターフェースの一種であるＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インターフェースによる通信は、データの転送管理等マスタとしての機能を有するホストコンピュータ（以下、「ＵＳＢホスト」と言う）と、それに従うデータ処理装置（以下、「ＵＳＢデバイス」と言う）との間で行われるのが一般的である。このＵＳＢデバイスにおけるデータ処理は、基本的には、ＵＳＢホストからのトークン、データ、バスシグナルなどの受信、またはＵＳＢホストへのデータなどの送信の際に、バスイベントの発生により起動される割込みに合わせて行われる。また、大容量、または高頻度かつ周期的に発生するデータに関しては、所定量をバッファリングして割込みを発生させるようにしている。
【０００３】
図４は、従来のＵＳＢデバイスにおける割込み動作の一例を説明するためのタイムチャートである。図４において、ＵＳＢホストから受信したＳＯＦ（Ｓｔａｒｔ  ｏｆ  Ｆｒａｍｅ）信号１１１，１１２間の期間（周期）として、ＵＳＢ仕様で規定されている１フレーム１１３（１ｍｓ）が示されている。この１フレーム１１３（第Ｋフレーム）において、ＵＳＢバス上のバスイベント１００には、バスリセット信号１０１、転送１のデータ１０２、転送２のデータ１０３、転送３のデータ１０４が含まれており、これらが時系列的に配置されている。また、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央処理装置）によるデータ処理１０５には、処理１０６〜１０９が含まれており、これらが時系列的に配置されている。ＵＳＢバス上のバスイベント１００をＣＰＵに通知するための割込み１１０（図中、「割込み形態Ａ」として示す）は、バスイベント毎に発生し、その都度ＣＰＵによるデータ処理１０５が行われる。すなわち、バスリセット信号１０１に対する処理１０６、転送１のデータ１０２に対する処理１０７、転送２のデータ１０３に対する処理１０８、転送３のデータ１０４に対する処理１０９が順次行われるようになっている。
【０００４】
【発明が解決しようとする課題】
しかしながら、上述した従来の技術では、ＵＳＢホストがデータ等の全転送を管理し、転送タイミングもスケジューリングするため、ＵＳＢデバイス側では、バスシグナル、データの送受信などの際のバスイベント発生回数に比例する割込み回数を調整することができない。
【０００５】
また、ＵＳＢインターフェースを複合システムに組込む場合、通信アプリケーションの増加に伴い、転送の種類、エンドポイント数が増加し、割込み回数が増大してしまう。すなわち、ＣＰＵに対する負荷が増大してしまい、好ましくない。
【０００６】
本発明は、このような従来の問題点に鑑みて為されたものであり、ＵＳＢデバイス（データ処理装置）側で割込み回数を調整することができ、かつＣＰＵに対する負荷を軽減してＵＳＢインターフェース（シリアルインターフェース）の複合システムへの組込みを可能とするようなシリアル通信用データ処理装置を提供することを目的としている。
【０００７】
【課題を解決するための手段】
上述した目的を達成するため、第１に、本発明のシリアル通信用データ処理装置は、ＵＳＢインターフェースによりホストコンピュータと通信を行うシリアル通信用データ処理装置であって、バスイベントに対する処理を行う中央処理装置と、一バスイベントに応じて、直ちに前記中央処理装置に対して割込みを発生させ前記中央処理装置に前記バスイベントに対する処理を行わせる第１の割込み形態、および所定の割込み周期で定められるタイミングまで前記バスイベントをバッファリングしてから前記中央処理装置に対して割込みを発生させ前記中央処理装置に前記バスイベントに対する処理を行わせる第２の割込み形態のいずれか一方をバスイベント毎に予め設定する割込み形態設定手段と、バスイベント発生時に、前記割込み形態設定手段により予め設定された内容に基づいて第１の割込み形態による処理あるいは第２の割込み形態による処理を実行する処理実行手段と、を備えてなることを特徴としている。
【０００８】
第２に、本発明のシリアル通信用データ処理装置は、前記第１に記載のシリアル通信用データ処理装置において、前記第２の割込み形態における所定の割込み周期が、前記ホストコンピュータから供給される所定の周期を有する信号に基づいて定められていることを特徴としている。
【０００９】
第３に、本発明のシリアル通信用データ処理装置は、前記第１に記載のシリアル通信用データ処理装置において、前記第２の割込み形態におけるバスイベントのバッファリングが、前記バスイベントを格納するバッファ手段と、前記バスイベントを構成するデータパケット毎のデータサイズ、前記バスイベントの全データサイズ、および前記バスイベントを構成するデータパケットの数を記憶するレジスタ手段とにより行われることを特徴としている。
【００１０】
第４に、本発明のシリアル通信用データ処理装置は、前記第１に記載のシリアル通信用データ処理装置において、前記割込み形態設定手段による設定が、プログラマブルに行われることを特徴としている。
【００１１】
【発明の実施の形態】
以下、本発明の一実施形態について図面を参照しながら詳細に説明する。
【００１２】
まず、本実施形態のＵＳＢデバイスにおける割込み動作の一例を図１を参照しながら説明する。図１において、１フレーム２１３は、ＳＯＦ信号２１１，２１２間の期間すなわちＵＳＢホストからのＳＯＦ信号５カウント分に相当する期間（５ｍｓ）として設定されている。この１フレーム２１３（第Ｋフレーム）において、ＵＳＢバス上のバスイベント２００には、バスリセット信号２０１、転送１のデータ２０２、転送２のデータ２０３、転送３のデータ２０４が含まれており、これらが時系列的に配置されている。また、ＣＰＵによるデータ処理２０５には、処理２０６〜２０８が含まれており、これらが時系列的に配置されている。
【００１３】
ここで、ＵＳＢバス上のバスイベント２００をＣＰＵに通知するための割込みとして、割込み２０９（図中、「割込み形態Ａ」として示す）および割込み２１０（図中、「割込み形態Ｂ」として示す）といった２種類の割込みが設けられている。割込み形態Ａによる割込み２０９は、従来と同様にバスイベント毎に発生し、その都度ＣＰＵによるデータ処理２０５が行われる。一方、割込み形態Ｂによる割込み２１０は、１フレーム２１３毎に（１フレーム２１３を割込み周期として）ＳＯＦ信号に同期して発生し、そのタイミングでＣＰＵによるデータ処理２０５が行われる。すなわち、バスリセット信号２０１に対する処理２０６および転送１のデータ２０２に対する処理２０７は、第Ｋフレームにおいて順次行われ、転送２のデータ２０３および転送３のデータ２０４に対する処理２０８は、次の第Ｋ＋１フレームにおいて行われるようになっている。なお、割込み形態Ｂによる割込みの周期は、本実施形態ではＳＯＦ信号５カウント分に相当する５ｍｓに設定されているが、任意の時間に設定することができる。
【００１４】
上述した割込み形態Ａは、低頻度ではあるが、緊急性が高く、即時処理が要求されるケーブル切断、ＵＳＢバスリセットなどのバスシグナル、および制御系データ等の転送に適用される。図１の例では、バスリセット信号２０１および転送１のデータ２０２に割込み形態Ａが適用されている。この割込み形態Ａは、従来どおり、時間で管理されない割込み形態である。一方、上述した割込み形態Ｂは、時間で管理されるものであり、高頻度に発生する音声データ、および大容量で局所的に高頻度なパケット通信用データ等の転送に適用される。図１の例では、転送２のデータ２０３および転送３のデータ２０４に割込み形態Ｂが適用されている。なお、割込み形態Ａを適用するか、割込み形態Ｂを適用するかは、バスイベント（エンドポイント、バスシグナル）毎に予め設定しておく必要がある。
【００１５】
次に、本実施形態のＵＳＢデバイスの構成を図２を参照しながら説明する。図２において、ＵＳＢホスト３００およびＵＳＢデバイス３０２は、ＵＳＢケーブル３０１を介して相互に接続されている。ＵＳＢデバイス３０２において、ＳＩＥ（Ｓｅｒｉａｌ  Ｉｎｔｅｒｆａｃｅ  Ｅｎｇｉｎｅ）３０３、後述するデータバッファ３０６を制御するバッファコントローラ３０４およびエンドポイントアドレスを解析するデコーダ３０５は、バス３１９を介して相互に接続されている。また、各エンドポイントに対応するデータバッファ３０６、割込み形態Ｂの割込み周期となる所定時間を計時する（本実施形態では、５ｍｓを計時する、あるいはＳＯＦ信号を５カウントする）計時装置３０７、データバッファ３０６からの信号に基づき割込み信号３１７を出力する信号制御装置３０８、データバッファ３０６用のステータスレジスタ３０９、データ処理等を行うＣＰＵ３１０および他の周辺回路３１８は、バス３２０を介して相互に接続されている。
【００１６】
データバッファ３０６は、各エンドポイントに対応する複数のエンドポイントバッファ３０６−１，３０６−２，…，３０６−ｎ（ｎは自然数）からなっており、これらのエンドポイントバッファはバッファコントローラ３０４にそれぞれ接続されている。また、エンドポイントバッファ３０６−１，３０６−２，…，３０６−ｎは、信号制御装置３０８にそれぞれ接続されているとともに、計時装置３０７にそれぞれ接続されている。これにより、エンドポイントバッファ３０６−１，３０６−２，…，３０６−ｎから、エンドポイント毎のバッファステータスに応じた通知信号３１１〜３１３が、信号制御装置３０８および計時装置３０７にそれぞれ供給される。また、バス３１９は信号制御装置３０８および計時装置３０７にそれぞれ接続されており、これにより、ＵＳＢケーブル着脱、およびＵＳＢリセット、サスペンド、レジューム等のＵＳＢバスシグナルを通知するための信号３１４が、信号制御装置３０８および計時装置３０７にそれぞれ供給される。更に、バス３１９は計時装置３０７に接続されており、これにより、ＳＯＦ信号を通知するための信号３１６が計時装置３０７に供給される。
【００１７】
計時装置３０７は信号制御装置３０８に接続されており、これにより、計時装置３０７から、割込み形態Ｂの割込み周期となる所定時間を計時したことを通知するための信号３１５が信号制御回路３０８に供給される。また、信号制御装置３０８はＣＰＵ３１０に接続されており、これにより、信号制御装置３０８から、信号３１１〜３１３あるいは信号３１４に基づく割込み信号３１７がＣＰＵ３１０に供給される。この割込み信号３１７により、ＣＰＵ３１０に対して、前述した割込み形態Ａあるいは割込み形態Ｂによる割込みが行われる。更に、他の周辺回路３１８もＣＰＵ３１０に接続されており、これにより、他の周辺回路３１８から、種々の信号がＣＰＵ３１０に供給される。なお、割込み形態Ａを適用するか、割込み形態Ｂを適用するかは、信号制御装置３０８において、バスイベント（エンドポイント、バスシグナル）毎に予め設定しておく。この設定は、プログラマブルに行うことが可能である。
【００１８】
続いて、ＵＳＢデバイス３０２の動作について説明する。まず、ＵＳＢデバイス３０２は、ＵＳＢケーブル３０１上のバスイベントを検知すると、ＳＩＥ３０３およびデコーダ３０５により該バスイベントを解析し、ＵＳＢバスシグナルなら、信号３１４によりその旨を信号制御装置３０８に通知し、各エンドポイントに対する転送データの送受信に関するバスイベントなら、バッファコントローラ３０４を介してデータバッファ３０６との間でデータ転送を行い、信号３１１〜３１３によりエンドポイント毎のステータスを信号制御装置３０８に通知する。ここで、データバッファ３０６は、プログラマブルにサイズ変更が可能である。
【００１９】
計時装置３０７は、割込み形態Ｂの割込み周期となる所定時間を計時すると、信号３１５によりその旨を信号制御装置３０８に通知する。ここで、計時装置３０７への入力信号は、データバッファ３０６からの信号３１１〜３１３、ＵＳＢバスシグナルを通知するための信号３１４、およびＳＯＦ信号を通知するための信号３１６であり、これらの信号は、計時装置３０７におけるタイマ動作開始、カウント要因等に利用することができる。また、計時装置３０７におけるタイマ間隔（時間）、カウント数、およびそれらのトリガとして関連付ける信号の選択は、すべてプログラマブルに設定することが可能である。例えば、ＳＯＦ信号をカウント要因とし、５カウント毎に信号制御装置３０８に通知する方法、エンドポイントバッファ３０６−２のデータ送信完了をタイマ動作開始トリガとし、３ｍｓ後に信号制御装置３０８に通知する方法等が考えられる。
【００２０】
信号制御装置３０８は、発生するバスイベントに応じて割込み信号３１７を出力するタイミングを制御する。すなわち、割込み形態Ａが適用されるバスイベントが発生すると、信号制御装置３０８は、直ちに割込み信号３１７をＣＰＵ３１０に供給する。一方、割込み形態Ｂが適用されるバスイベントが発生すると、信号制御装置３０８は、計時装置３０７からの信号３１５に応じて（同期して）割込み信号３１７をＣＰＵ３１０に供給する。
【００２１】
次に、データバッファ３０６を構成する各エンドポイントバッファの構成およびこれに対応するステータスレジスタ３０９の構成を図３を参照しながら説明する。図３において、データバッファ３０６を構成する各エンドポイントバッファは、データ格納領域４０２を有している。また、ステータスレジスタ３０９は、各エンドポイントバッファに対応して、データパケット毎の格納データサイズを記憶するレジスタ４０５〜４１１、該エンドポイントバッファ内の格納全データサイズを記憶するレジスタ４０３、および有効パケット数を記憶するレジスタ４０４を有している。
【００２２】
ここで、データ受信時の動作について説明する。まず、図１における第Ｋフレーム内の転送２がパケット通信用データの転送であるとする。割込み形態Ｂによる割込み２１０のために、計時装置３０７は割込み周期に相当する所定時間（本実施形態では、５ｍｓ）を計時する。また、転送２が５個のデータパケットから構成されているとし、それぞれのデータサイズを６４バイト、０バイト、６４バイト、４８バイト、６４バイトとする。ここで、０バイトデータとは、データ領域が０バイトであって、転送先等を示すヘッダ領域のみを有するデータである。これらのデータは割込み２１０により一括して処理されるまでバッファリングされ、ステータスレジスタ３０９内の各レジスタにデータサイズ等の情報が記憶される。データパケット毎の格納データサイズを記憶するレジスタ４０５〜４１１は任意の個数設けることが可能であるが、パケット通信用データを転送するバルク転送は非周期的に発生する上、ＵＳＢ仕様では０バイトデータが転送可能であるため、有効パケット数、すなわちレジスタ４０５〜４１１のうちどの部分が有効であるかを示す情報を記憶するレジスタ４０４が必要となる。
【００２３】
図３の例では、５個のパケットを受信し、全体で２０８バイトのデータであることが示されており、レジスタ４０６の０バイトデータは有効であるが、レジスタ４１０および４１１の０バイトデータは無効であることが分かる。このようにステータスレジスタ３０９によって複数のパケットの区切りを明確化することで、時間で管理される割込み形態Ｂによる割込みの際に、データの組立てに柔軟に対応することができる。更に、全データサイズを記憶するレジスタ４０３は、エンドポイントバッファと他のメモリとの間でデータをＤＭＡ転送する場合に利用可能である。なお、データ送信時の動作は、データ受信時の動作と同様である。
【００２４】
【発明の効果】
上述した説明から明らかなように、本発明のシリアル通信用データ処理装置によれば、割込み形態Ａ（第１の割込み形態）および割込み形態Ｂ（第２の割込み形態）といった２種類の割込み形態を併用しており、ＵＳＢデバイス（データ処理装置）側で割込み回数を調整することができる。また、ＣＰＵに対する負荷を軽減することでＵＳＢインターフェース（シリアルインターフェース）を複合システムへ組込むことができる。更に、時間で管理される割込み形態Ｂの場合であっても、従来と同等のデータ転送レートを維持することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態のＵＳＢデバイスにおける割込み動作の一例を説明するためのタイムチャートである。
【図２】一実施形態のＵＳＢデバイスの構成を示すブロック図である。
【図３】データバッファを構成する各エンドポイントバッファの構成およびこれに対応するステータスレジスタの構成を模式的に示す図である。
【図４】従来のＵＳＢデバイスにおける割込み動作の一例を説明するためのタイムチャートである。
【符号の説明】
２００  バスイベント
２０５  ＣＰＵによるデータ処理
２０９  割込み形態Ａによる割込み
２１０  割込み形態Ｂによる割込み
２１１，２１２  ＳＯＦ信号
２１３  １フレーム
３００  ＵＳＢホスト
３０１  ＵＳＢケーブル
３０２  ＵＳＢデバイス
３０６  データバッファ
３０７  計時装置
３０８  信号制御装置
３０９  ステータスレジスタ
３１０  ＣＰＵ
４０３〜４１１  レジスタ
【図１】
0003568118.tif 000002
【図２】
0003568118.tif 000003
【図３】
0003568118.tif 000004
【図４】
0003568118.tif 000005