(57)【要約】【課題】  データの格納位置を一意に割り出し、データ受信時のエラーリカバリを容易に行うことができるデータ転送バッファ制御装置を提供すること。【解決手段】  最小単位に分割された分割領域を有するデータバッファ１と、前記分割領域の内、どの分割領域にデータが書き込まれたかを管理する送信／受信データライトポインタ５，７と、前記分割領域の内、どの分割領域のデータが読み出されたかを管理する送信／受信データリードポインタ６，８と、データ転送の順番を示すシーケンス番号を付与し、プロトコル上のデータの再送信を管理するシーケンス管理手段９と、シーケンス管理手段９から指示されたシーケンス番号に論理的に割り当てられたバッファ領域番号からデータを読み出すリード制御回路３と、バッファ領域番号にデータの書込みを行うライト制御回路４を有する。データ送信時及び／又はデータ受信時のデータバッファ管理が、パケットデータごとに論理番号に割り当てられたバッファ領域に前記ポインタの指定先を移動させて行われる。【選択図】      図２
2008053783.tif 000002
【特許請求の範囲】
【請求項１】
予めデータバスのプロトコルにおけるデータ転送の最小単位に分割された第１〜第Ｎ（Ｎは２以上の自然数）の分割領域を有するデータバッファと、
前記第１〜第Ｎの分割領域の内、どの分割領域にデータが書き込まれたかを管理する送信／受信データライトポインタと、
前記第１〜第Ｎの分割領域の内、どの分割領域のデータが読み出されたかを管理する送信／受信データリードポインタと、
データ転送の順番を示すシーケンス番号を付与し、プロトコル上のデータの再送信を管理するシーケンス管理手段を有し、
前記シーケンス管理手段から指示されたシーケンス番号に論理的に割り当てられたバッファ領域番号からデータを読み出すリード制御回路と、バッファ領域番号にデータの書込みを行うライト制御回路とを含むメモリコントローラを有し、
データ送信時及び／又はデータ受信時のデータバッファ管理が、パケットデータごとに論理番号に割り当てられたバッファ領域に前記ポインタの指定先を移動させて行われることを特徴とするデータ転送バッファ制御装置。
【請求項２】
前記ライト制御回路は、データ送信においてＣＰＵから前記データバッファへのデータ書き込み要求があった場合、要求されたデータを前記データバッファに格納し、
前記要求されたデータの書込み先は前記送信データライトポインタが指定する書込み先アドレスであり、
前記ライト制御回路は、前記要求されたデータが前記各分割領域に書き込みされるごとに前記送信データライトポインタに分割領域書き込み完了通知信号を送出し、前記送信データライトポインタの指定先アドレスを移動させ、要求されたデータ全てが前記データバッファに格納されるまでこの動作が繰り返し行われることを特徴とする請求項１記載のデータ転送バッファ制御装置。
【請求項３】
前記シーケンス管理手段は、相手側通信装置から次に送信すべきシーケンス番号を含むデータ送信要求信号が送信された場合、当該シーケンス番号を解析し、前記送信データリードポインタに対し、読み出すべきシーケンス番号を送出し、当該シーケンス番号に対応した前記データバッファの分割領域アドレスを前記送信データリードポインタに設定し、
前記リード制御回路は、前記送信データリードポインタから指定されたアドレスに対応した分割領域に含まれるデータの読み出しを行い、前記各分割領域に格納されたデータの読み出しが完了するごとに、分割領域読み出し完了通知信号を前記送信データリードポインタに送出し、前記送信データリードポインタの指定先を移動させ、要求されたデータ全てが前記データバッファから読み出されるまでこの動作が繰り返し行われることを特徴とする請求項２記載のデータ転送バッファ制御装置。
【請求項４】
前記シーケンス管理手段は、データ送信が終了すると前記相手通信装置から次に送信して欲しいシーケンス番号を含む確認信号を受け、当該確認信号に既に送信した既送信シーケンス番号が入っている場合には、当該既送信シーケンス番号に対応するデータは相手通信装置に認識されていないとみなし前記相手通信装置に既送信シーケンス番号に対応するデータ及び前記既送信シーケンス番号を除く残りの未送信シーケンス番号に対応するデータの再送信を行うことを特徴とする請求項３記載のデータ転送バッファ制御装置。
【請求項５】
前記シーケンス管理手段は、前記確認信号を受信した場合、再送信要求されたシーケンス番号に割り当てられた対応分割領域を前記送信データリードポインタの対象とすることを特徴とする請求項４記載のデータ転送バッファ制御装置。
【請求項６】
データ受信時、前記データバッファに順次データが書き込まれ、シーケンス管理手段は、所望のシーケンス番号順にデータ受信できなかった場合、当該受信できなかったシーケンス番号に対するパケットデータの再送信を要求する確認信号を相手通信装置に送信し、通信エラーが無かった場合には既に受信した既受信シーケンス番号を含まない確認信号を送信し、
前記ライト制御回路は、相手通信装置から再受信する各シーケンス番号に対応するデータがそれぞれ対応する前記各分割領域に書き込まれるごとに前記受信データライトポインタに領域書き込み完了通知信号を送出し、
前記受信データライトポインタは、前記領域書き込み完了通知信号を受け、受信できなかったシーケンス番号に対応する分割領域アドレスを指定し、
再送信要求されたデータ全てが前記データバッファに格納されるまでこの動作が繰り返し行われることを特徴とする請求項１記載のデータ転送バッファ制御装置。
【請求項７】
前記シーケンス管理手段は、通信エラーがあった場合には既に受信した既受信シーケンス番号を含む確認信号を再送信要求として送信し、相手側通信装置からシーケンス番号を含むデータが送信された場合、当該シーケンス番号を解析し、前記受信データリードポインタに対して読み出すべきシーケンス番号を送出し、当該シーケンス番号に対応した前記データバッファの分割領域アドレスを前記受信データリードポインタに設定し、
前記リード制御回路は、前記受信データリードポインタから指定されたアドレスに対応した分割領域に含まれるデータの読み出しを行い、前記各分割領域に格納されたデータの読み出しが完了するごとに、分割領域読み出し完了通知信号を前記受信データリードポインタに送出し、前記受信データリードポインタの指定先を移動させ、要求されたデータ全てが前記データバッファから読み出されるまでこの動作が繰り返し行われ、
読み出し完了した分割バッファ領域は開放され、新たに受信シーケンス番号の再割り当てをし、その開放された分割バッファ領域に新たな受信データを格納されることを特徴とする請求項６記載のデータ転送バッファ制御装置。
【請求項８】
転送すべきデータをあらかじめ定められたシーケンス番号の順序でネットワークを介して前記相手通信装置へ転送するデータ転送バッファ制御装置におけるデータ転送制御方法において、
前記転送すべきデータを送信する際、ＣＰＵからデータバッファへの転送データ書き込み要求があった場合、この要求されたデータを前記データバッファの送信データライトポインタが指定する書込み先アドレスに格納するステップと、
前記要求されたデータが前記各分割領域に書き込みされるごとに前記送信データライトポインタに分割領域書き込み完了通知信号を送出するステップと、
分割領域書き込み完了通知信号を受けた場合、前記送信データライトポインタの指定先アドレスを移動させるステップを有し、
要求されたデータ全てが前記データバッファに格納されるまで上記各処理ステップを繰り返し行うことを特徴とするデータ転送制御方法。
【請求項９】
相手側通信装置から次に送信すべきシーケンス番号を含むデータ送信要求信号が送信された場合、当該シーケンス番号を解析し、送信データリードポインタに対し、読み出すべきシーケンス番号を送出し、当該シーケンス番号に対応した前記データバッファの分割領域アドレスを前記送信データリードポインタに設定するステップと、
前記送信データリードポインタから指定されたアドレスに対応した分割領域に含まれるデータを読み出すステップと、
前記各分割領域に格納されたデータの読み出しが完了するごとに、分割領域読み出し完了通知信号を前記送信データリードポインタに送出し、前記送信データリードポインタの指定先を移動させるステップと、
要求されたデータ全てが前記データバッファから読み出されるまで上記各処理ステップを繰り返し行うことを特徴とする請求項８記載のデータ転送制御方法。
【請求項１０】
データ送信が終了すると前記相手通信装置から次に送信して欲しいシーケンス番号を含む確認信号を受け、当該確認信号に既に送信した既送信シーケンス番号が入っている場合には、当該既送信シーケンス番号に対応するデータは相手通信装置に認識されていないとみなし前記相手通信装置に既送信シーケンス番号に対応するデータ及び前記既送信シーケンス番号を除く残りの未送信シーケンス番号に対応するデータを相手通信装置に送信することを特徴とする請求項９記載のデータ転送制御方法。
【請求項１１】
相手通信装置からデータを受信する場合、前記データバッファに順次受信データを書き込みステップと、
所望のシーケンス番号順にデータ受信できなかった場合、当該受信できなかったシーケンス番号に対するパケットデータの再送信を要求する確認信号を相手通信装置に送信するステップと、
通信エラーが無かった場合には既に受信した既受信シーケンス番号を含まない確認信号を送信するステップと、
前記相手通信装置から再受信する各シーケンス番号に対応するデータがそれぞれ対応する前記各分割領域に書き込まれるごとに受信データライトポインタに領域書き込み完了通知信号を送出するステップと、
前記領域書き込み完了通知信号を受け、受信できなかったシーケンス番号に対応する分割領域アドレスを指定するステップを有し、
再送信要求されたデータ全てが前記データバッファに格納されるまで上記各処理ステップを繰り返し行うことを特徴とする請求項１０記載のデータ転送制御方法。
【請求項１２】
通信エラーがあった場合には既に受信した既受信シーケンス番号を含む確認信号を再送信要求として送信するステップと、
相手側通信装置からシーケンス番号を含むデータが送信された場合、当該シーケンス番号を解析し、前記受信データライトポインタに対して当該シーケンス番号を送出するステップと、
当該シーケンス番号に対応した前記データバッファの分割領域アドレスを前記受信データライトポインタに設定するステップと、
前記受信データリードポインタから指定されたアドレスに対応した分割領域に含まれるデータを読み出すステップと、
前記各分割領域に格納されたデータの読み出しが完了するごとに、分割領域読み出し完了通知信号を前記受信データリードポインタに送出するステップと、
前記受信データリードポインタの指定先を移動させるステップを有し、
要求されたデータ全てが前記データバッファから読み出されるまで上記各処理ステップを繰り返し行うことを特徴とする請求項１１記載のデータ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケットデータ通信においてエラーリカバリが頻繁に発生するような場合に利用されるデータ転送バッファ制御装置および方法に関する。
【背景技術】
【０００２】
近年の無線データ転送技術の発展に伴い、様々な方式の技術が応用されているが、データ通信では、プロトコルごとにいろいろな形態のデータパケットの構造を持つ。データをどこに格納したかを管理する方法として、スタートアドレスとデータ長を管理する方法が一般的であった。このような方式であると、無線上で頻繁にエラーが発生する際にリカバリが大変である。スタートアドレスからプロトコル上のパケットのデータ長に分割し、スタートアドレスからどれだけ離れたデータを再送すればよいのかを割り出すのに煩雑な回路を要する。またデータ受信時にエラーが発生すると、どこに何のデータを格納したのか複雑に管理しなくてはならない。尚、関連する先行技術として以下に示す特許文献１を参照されたい。
【０００３】
【特許文献１】特開平９−８１４９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記した従来のデータ転送バッファの制御には下記のような問題がある。
【０００５】
第１の問題点を以下に述べる。データの送信に際し、データがどこに格納されているかを示すスタートアドレス及びデータ長よりデータバス上のプロトコル単位に分割する必要がある。かかる場合、データの送信時に転送エラーが発生しないときには特に問題とはならないが、転送エラーが発生した場合に、データバッファ上のどの位置から再送しなくてはならないか判別するのが困難である。
【０００６】
次に第２の問題点を以下に述べる。データの受信に際し、データをどこに格納したかを示すスタートアドレス及びデータ長より受信データを管理する必要がある。かかる場合上記送信時と同様、転送エラーが発生しないときには問題とはならないが、転送エラーが発生した場合に再送されてきたデータをどこに格納するかの判定が困難となる。また正常に転送されたデータから順番にバッファに格納した場合には、受信した順番をも記録する必要がある。
【０００７】
本発明の目的は、データの格納位置を一意に割り出し、データ受信時のエラーリカバリを容易に行うことができるデータ転送バッファ制御装置及びデータ転送制御方法を提供することである。
【課題を解決するための手段】
【０００８】
本発明の第１の態様によるデータ転送バッファ制御装置は、
予めデータバスのプロトコルにおけるデータ転送の最小単位に分割された第１〜第Ｎ（Ｎは２以上の自然数）の分割領域を有するデータバッファと、
前記第１〜第Ｎの分割領域の内、どの分割領域にデータが書き込まれたかを管理する送信／受信データライトポインタと、
前記第１〜第Ｎの分割領域の内、どの分割領域のデータが読み出されたかを管理する送信／受信データリードポインタと、
データ転送の順番を示すシーケンス番号を付与し、プロトコル上のデータの再送信を管理するシーケンス管理手段を有し、
前記シーケンス管理手段から指示されたシーケンス番号に論理的に割り当てられたバッファ領域番号からデータを読み出すリード制御回路と、バッファ領域番号にデータの書込みを行うライト制御回路とを含むメモリコントローラを有し、データ送信時及び／又はデータ受信時のデータバッファ管理が、パケットデータごとに論理番号に割り当てられたバッファ領域に前記ポインタの指定先を移動させて行われることを特徴とする。
【０００９】
本発明の第２の態様によるデータ転送バッファ制御装置は、
前記ライト制御回路は、データ送信においてＣＰＵから前記データバッファへのデータ書き込み要求があった場合、要求されたデータを前記データバッファに格納し、
前記要求されたデータの書込み先は前記送信データライトポインタが指定する書込み先アドレスであり、
前記ライト制御回路は、前記要求されたデータが前記各分割領域に書き込みされるごとに前記送信データライトポインタに分割領域書き込み完了通知信号を送出し、前記送信データライトポインタの指定先アドレスを移動させ、要求されたデータ全てが前記データバッファに格納されるまでこの動作が繰り返し行われることを特徴とする。
【００１０】
本発明の第３の態様によるデータ転送バッファ制御装置は、
データ受信時、前記データバッファに順次データが書き込まれ、シーケンス管理手段は、所望のシーケンス番号順にデータ受信できなかった場合、当該受信できなかったシーケンス番号に対するパケットデータの再送信を要求する確認信号を相手通信装置に送信し、通信エラーが無かった場合には既に受信した既受信シーケンス番号を含まない確認信号を送信し、
前記ライト制御回路は、相手通信装置から再受信する各シーケンス番号に対応するデータがそれぞれ対応する前記各分割領域に書き込まれるごとに前記受信データライトポインタに領域書き込み完了通知信号を送出し、
前記受信データライトポインタは、前記領域書き込み完了通知信号を受け、受信できなかったシーケンス番号に対応する分割領域アドレスを指定し、
再送信要求されたデータ全てが前記データバッファに格納されるまでこの動作が繰り返し行われることを特徴とする。
【００１１】
本発明の第４の態様によるデータ転送制御方法は、
転送すべきデータをあらかじめ定められたシーケンス番号の順序でネットワークを介して前記相手通信装置へ転送するデータ転送バッファ制御装置におけるデータ転送制御方法において、
前記転送すべきデータを送信する際、ＣＰＵからデータバッファへの転送データ書き込み要求があった場合、この要求されたデータを前記データバッファの送信データライトポインタが指定する書込み先アドレスに格納するステップと、
前記要求されたデータが前記各分割領域に書き込みされるごとに前記送信データライトポインタに分割領域書き込み完了通知信号を送出するステップと、
分割領域書き込み完了通知信号を受けた場合、前記送信データライトポインタの指定先アドレスを移動させるステップを有し、
要求されたデータ全てが前記データバッファに格納されるまで上記各処理ステップを繰り返し行うことを特徴とする。
【００１２】
本発明の第５の態様によるデータ転送制御方法は、
相手通信装置からデータを受信する場合、前記データバッファに順次受信データを書き込みステップと、
所望のシーケンス番号順にデータ受信できなかった場合、当該受信できなかったシーケンス番号に対するパケットデータの再送信を要求する確認信号を相手通信装置に送信するステップと、
通信エラーが無かった場合には既に受信した既受信シーケンス番号を含まない確認信号を送信するステップと、
前記相手通信装置から再受信する各シーケンス番号に対応するデータがそれぞれ対応する前記各分割領域に書き込まれるごとに受信データライトポインタに領域書き込み完了通知信号を送出するステップと、
前記領域書き込み完了通知信号を受け、受信できなかったシーケンス番号に対応する分割領域アドレスを指定するステップを有し、
再送信要求されたデータ全てが前記データバッファに格納されるまで上記各処理ステップを繰り返し行うことを特徴とする。
【発明の効果】
【００１３】
本発明によれば、データバッファの領域をパケットのシーケンス番号に論理的に割り当てているため、データ送信の場合には，どのシーケンス番号を送りたいかを管理することでデータの格納位置を一意に割り出すことができ、データ送信時のエラーリカバリを容易に行うことができる。
【００１４】
また、本発明によれば、データバッファの領域をパケットのシーケンス番号に論理的に割り当てているため、データ受信の場合には、どのシーケンス番号を受信しているかを管理することでデータの格納位置を一意に割り出すことができ、データ受信時のエラーリカバリを容易に行うことができる。
【００１５】
すなわち、本発明によれば、データ送信時のバッファ管理をパケットごとに論理的に割り当て順番に送信することにより行い、データ受信時のパケット管理も順番に格納するという方式を採るので、データの格納先が一目瞭然であるという効果を有する。
【発明を実施するための最良の形態】
【００１６】
以下、本発明をワイヤレスＵＳＢに適用した場合について説明する。ワイヤレスＵＳＢにおけるｂｕｌｋ転送において構成されるパケットのデータサイズは、５１２バイトのｎ倍（ｎ＝１〜７）で規定される。また、各パケットにはシーケンス番号と呼ばれる転送順序を示される番号が付与される。
【００１７】
最初にデータの送信について説明する。データバッファ（バッファ領域）の分割はこの例では５１２バイトごとに行うこととする。ＣＰＵ等のデータ書き込み手段からデータバッファ１に順次データが書き込まれる。データ書き込み制御回路（リード制御回路）は、データバッファ（バッファ領域）内の各分割領域の境界を跨ぐ時点で送信データライトポインタに通知し、送信データライトポインタはバッファ領域を消費したことを認識し、送信データライトポインタの値を＋１とする。この動作を順次繰り返し行う。
【００１８】
ＵＳＢインターフェース（ＵＳＢＩ／Ｆ）側からデータ送信要求が来たとき、シーケンス管理手段はこの要求を解析し、何番のシーケンス番号を送信すればよいかを判定する。これにより対応する分割領域の番号を特定し、データ読み出し制御回路（リード制御回路）より順次データを読み出し送信する。
【００１９】
データ送信が終了すると、相手通信装置からＡｃｋｎｏｗｌｅｄｇｅ Ｃｏｄｅ（以下、Ａｃｋ Ｃｏｄｅと呼ぶ）が返される。ここでのＡｃｋ Ｃｏｄｅとはデータ受信時の成否確認を示す信号を指す。データ受信を完了したデバイスは、そのデータの送信元にＡｃｋ Ｃｏｄｅを送り、正常にデータ受信が行えたか否かを示す。
【００２０】
このＡｃｋ Ｃｏｄｅには次に送信して欲しいシーケンス番号が記入されている。この番号に先ほど送信したシーケンス番号が入っていれば、そのシーケンス番号は何らかのエラーにより相手通信装置に認識されていない状況であり、そのシーケンス番号を再送信する必要がある。再送信が必要か否かの判定はシーケンス管理手段により行われる。
【００２１】
前記シーケンス管理手段からの再送信の要求が無かった場合には、前記シーケンス管理手段は何の動作もしない。送信終了時、送信データリードポインタはまだ送信していない最初のシーケンス番号の位置にある。前記再送信の要求があった場合、再送信する論理番号に割り当てられたデータバッファ（バッファ領域）内の対応する分割領域に前記送信データリードポインタを動かす。この動作により、転送時のエラーの復旧を容易に行うことができる。
【００２２】
なお、正しく相手通信装置により受信が行われたシーケンス番号まで送信データリードポインタが進んでいるので、当該送信データリードポインタが示す分割領域まで論理番号の再割り当てをし、新たな送信データを前記ＣＰＵ内のデータ書き込み手段から受け付けることが可能である。
【００２３】
次にデータの受信について説明する。バッファ領域の分割は上記送信と同様５１２バイトごとに行うこととする。データ受信時、ＵＳＢＩ／Ｆからのデータは前記データ書き込み手段によりデータバッファ（バッファ領域）に順次データが書き込まれる。データ書き込み制御回路（ライト制御回路）は、バッファ領域の境界を跨ぐ時点で受信データライトポインタに通知する。すなわち前記要求されたデータが前記各分割領域に書き込みされるごとに前記送信データライトポインタに分割領域書き込み完了通知信号を送出する。当該受信データライトポインタは前記データバッファの領域を消費したことを認識し、前記送信データライトポインタの指定先アドレスは次の指定先に移動する。何らかのエラーにより、データ受信が期待するシーケンス番号の順に行われなかった場合、前記シーケンス管理手段は、受信しているシーケンス番号に合致した論理番号を持つデータバッファ（バッファ領域）内の対応する分割領域に前記受信データライトポインタを動かし、当該対応する分割領域に受信データがシーケンス番号の順番通りに格納されるよう動作する。この動作を受信終了まで順次繰り返し行う。
【００２４】
データ受信の場合には、相手通信装置に前記Ａｃｋ Ｃｏｄｅを送信する。ここで何らかのエラーにより、期待するシーケンス番号を持つパケットが受信できなかった場合には、そのシーケンス番号に対する再送信要求として通知する。通信エラーが無かった場合には、先ほど受信したシーケンス番号を含まないＡｃｋ Ｃｏｄｅを返送する。この判定は前記シーケンス管理手段により行われる。
【００２５】
エラーを検出し、データの再送を要求した場合には、前記シーケンス管理手段は再受信するシーケンス番号に合う論理番号を持つデータバッファ（バッファ領域）の対応する分割領域に前記受信データライトポインタを動かす。ただし、ここで再度エラーが発生した場合にはライトポインタは受信するシーケンス番号に合った論理番号を持つデータバッファ内の所定領域に動かすこととする。
【００２６】
なお、データ受信が正しく行われた時点で、前記ＣＰＵのデータ読み出し手段によって順次データが読み出される。データ読み出し制御回路（リード制御回路）３は、データバッファ１の各分割領域の境界を跨ぐ時点で、すなわち前記各分割領域に格納されたデータの読み出しが完了するごとに、分割領域読み出し完了通知信号を送信データリードポインタ６に送出し、送信データリードポインタ６の指定先が移動する。その後領域を開放し、新たに論理番号の再割り当てをし、新たな受信データを格納することができる。
【実施例】
【００２７】
次に、本発明の実施例について図面を参照して詳細に説明する。
【００２８】
図１は、本発明におけるデータバッファの分割例である。図１において、データバッファをｎ個の領域に分割し、その分割された領域をそれぞれ論理的にパケット番号として割り当てている。
【００２９】
図２はワイヤレスＵＳＢのデータ転送バッファを想定した場合におけるデータ転送制御装置の構成を示したブロック図である。図１は図２のデータバッファ１を示している。
【００３０】
この例でも、データバッファの分割領域の大きさは５１２バイトとする。データ送信時、ＣＰＵ１０１はメモリコントローラ２のライト制御回路４に対しデータ書き込み要求２０２を行う。ＣＰＵデータバス２０１を通してバッファメモリにデータを格納する。このときのデータバッファ１の書き込み先アドレスの指定は、送信データライトポインタ５が示す領域とする。バッファメモリの物理アドレスはアドレス変換回路１０を介して送信データライトポインタ５が指定する指定先アドレスにより導かれる。ライト制御回路４は、領域境界の５１２バイト書き込みごとに送信データライトポインタ５に領域書き込み完了通知信号２１０を送信し、次のバッファ領域に移ったことを通知する。この通知により、送信データライトポインタ５は次に書込むべき分割領域のアドレスを指定し、現在データ書き込み中の領域が移ったことを知る。この動作を順次繰り返し行う。
【００３１】
ワイヤレスＵＳＢ Ｉ／Ｆ１０２からデータ送信要求としてＡｃｋｎｏｗｌｅｄｇｅ Ｃｏｄｅ（以下、Ａｃｋ Ｃｏｄｅと呼ぶ）２１５が送信され、Ａｃｋ Ｃｏｄｅ２１５に含まれる次に送信すべきシーケンス番号が通知される。シーケンス管理手段９は通知された当該シーケンス番号を解析し、送信データリードポインタ６に対し、読み出すべきシーケンス番号を通知する。このシーケンス番号と分割されたデータバッファ領域番号は論理的に結合されているので、対応する領域番号を送信データリードポインタ６にセットする。送信データリードポインタ６が示すポインタ値を、伝送ライン２０８を通してアドレス変換回路１０に通知し、メモリコントローラ２のリード制御回路３はデータの読み出しを行う。ワイヤレスＵＳＢ Ｉ／Ｆ１０２からデータ送信要求信号２０５が発行され、送信されるとリード制御回路３により順次データの出力を行う。リード制御回路４は、領域境界の５１２バイト読み出しごとに送信データリードポインタ６に領域読み出し完了通知信号２１１を通し、次のバッファ領域に移ることを通知する。この完了通知により、送信データリードポインタは次の分割領域のアドレスを指定し、現在データ読み出し中の領域が移ったことを知る。この動作を送信終了まで順次繰り返し行う。ただし、送信リードポインタ６は送信ライトポインタ５の値を超えることはできない。送信ライトポインタ５の値までしか送信データの格納がされていないからである。
【００３２】
データ送信が終了すると、相手通信装置からＡｃｋ Ｃｏｄｅ２１５が返送（返信）され、ワイヤレスＵＳＢ Ｉ／Ｆ１０２を通しＡｃｋ Ｃｏｄｅ２１５としてシーケンス管理手段９に通知される。Ａｃｋ Ｃｏｄｅ２１５は相手通信装置が次に送信して欲しいシーケンス番号が記入されている。この番号に先ほど送信したシーケンス番号が入っていれば、そのシーケンス番号は何らかのエラーにより相手通信装置に認識されていない状況であり、そのシーケンス番号を再送信しなくてはいけない。この判定はシーケンス管理手段９により行われる。
【００３３】
再送信の要求が無かった場合には、シーケンス管理手段９は何も動作しない。送信終了時、送信データリードポインタ６はまだ送信していない最初のシーケンス番号の位置にあるはずである。再送信の要求があった場合、再送信する論理番号に割り当てられたバッファ領域に送信データリードポインタ６の指定先を動かす。この動作により、転送エラー時の再送処理を容易に行うことができる。
【００３４】
なお、正しく相手通信装置により受信が行われたシーケンス番号まで送信データリードポインタ６が進んでいるので、送信データリードポインタ６が示す領域まで論理番号の再割り当てをし、新たな送信データをＣＰＵ１０１のデータ書き込み手段から受け付けることが可能である。
【００３５】
次にデータの受信について説明する。データバッファ1のバッファ領域の分割は送信と同様５１２バイトごとに行うこととする。データ受信時、ワイヤレスＵＳＢ  Ｉ／Ｆ１０２からのデータはメモリコントローラ２のライト制御回路４によりデータバッファ１の領域１に順次データが書き込まれる。ライト制御回路４は、バッファ領域の境界を跨ぐ時点で、すなわち相手通信装置から再受信する各シーケンス番号に対応するデータがそれぞれ対応する前記各分割領域に書き込まれるごとに受信データライトポインタ７に領域書き込み完了通知信号２１２を受信データライトポインタ７に送信し、その領域書き込み完了通知信号によって受信データライトポインタ７は領域が開放されたことを認識する。受信データライトポインタ７は、領域書き込み完了通知信号２１２を受け、受信できなかったシーケンス番号に対応する分割領域アドレスを指定し、次の分割領域のアドレスを指定する。何らかの通信エラーにより、受信シーケンス番号が期待する順番通りに受信されなかった場合、シーケンス管理手段９は、現在受信しているシーケンス番号データを、信号ライン２１４を介して受信データライトポインタ７に送信する。これによって受信データライトポインタ７が示すバッファ領域（指定先アドレス）にシーケンス番号順にデータが格納される。この動作を受信終了まで順次繰り返し行う。
【００３６】
データ受信の場合には、相手通信装置にＡｃｋ Ｃｏｄｅ２１５を送信する。ここで何らかの通信エラーにより、期待するシーケンス番号を持つパケットが受信できなかった場合には、そのシーケンス番号に対するパケットの再送信を要求する再送信要求としてＡｃｋ Ｃｏｄｅ２１５を通知する。通信エラーが無かった場合には、既に受信したシーケンス番号を含まないＡｃｋ Ｃｏｄｅ２１５を返送（返信）する。この判定はシーケンス管理手段９により行われる。
【００３７】
シーケンス管理手段９によってエラーが検出され、データの再送信が要求された場合には、シーケンス管理手段９は再受信するシーケンス番号に合致する論理番号を有する分割バッファ領域に受信データライトポインタ７を動かすために信号バスライン２１４を介してシーケンス番号データを受信データライトポインタ７に送信する。ただし、ここで再度通信エラーが発生した場合、つまり期待するシーケンス番号と受信したシーケンス番号が異なった場合には受信するシーケンス番号に合致する論理番号を有する分割バッファ領域に受信データライトポインタ７を動かすこととする。
【００３８】
なお、データ受信が正しく行われた時点でＣＰＵ１０１のデータ読み出し手段は、データリードコマンド２０３を発行し、順次データを読み出す。リード制御回路３は、各分割バッファ領域の境界を跨ぐ時点、すなわち領域境界の５１２バイトを読み出すごとに受信データリードポインタ８に領域読み出し完了通知信号２０９を送信し、次のバッファ領域に移ることを通知する。この完了通知により、受信データリードポインタ８は次の分割領域のアドレスを指定し、現在データ読み出し中の領域が移ったことを認識する。この動作を受信終了まで順次繰り返し行う。データ読み出し中の領域の移動を認識した後は、読み出し完了した分割バッファ領域を開放し、新たに論理番号の再割り当てをし、その開放された分割バッファ領域に新たな受信データを格納することができる。
【００３９】
以下、図３〜図５を参照して上記した実施例の動作について説明する。
【００４０】
まず、図３を参照して、データ送信時のパケット送出動作について説明する。図の例では、４バースト動作を例にしている。なお、ワイヤレスＵＳＢではバースト回数は最大１６で規定されている。
【００４１】
図３の（Ａ）において、最初の４つのパケット、すなわちシーケンス１〜シーケンス４を送信している。送信完了後、（Ｂ）で相手通信装置よりＡｃｋ Ｃｏｄｅパケットを受信する。このＡｃｋ Ｃｏｄｅパケットには、次の送信で送るべきシーケンス番号が示されている。ここで、次に送信すべきシーケンス番号がシーケンス３、シーケンス５、シーケンス６、シーケンス７であった場合、先ほど（Ａ）で送信したパケットのうち、シーケンス３がエラーであったことが判明する。ここでシーケンス管理手段９は送信データリードポインタ６に対してシーケンス３を送信するよう通知する。この通知を受け、送信データリードポインタ６は論理的にシーケンス番号３に割り当てられた、図１のバッファ領域３を指し示す。
【００４２】
（Ｂ）のＡｃｋ Ｃｏｄｅパケットにより、送信されるべき（Ｃ）の送信パケットの順番が決定される。（Ａ）にてエラーにより送信されなかったシーケンス３、新規送信パケットのシーケンス５、シーケンス６、シーケンス７と順次送信し、以降（Ｂ）（Ｃ）の処理を繰り返す。
【００４３】
図４はデータ受信時のパケットの様子を示している。図４の（Ａ）では、相手通信装置からシーケンス１、シーケンス２、シーケンス３、シーケンス４が送信されてきた場合のデータ受信パケットの様子が示されている。このとき、何らかのエラーにより、シーケンス２及びシーケンス３が受信できなかったと仮定する。このときのデータバッファへのデータの格納の様子を図５に示す。受信が行えたシーケンス番号のパケット、すなわち図４の場合ではシーケンス１及びシーケンス４が、それぞれ論理的に割り当てた分割バッファ領域、図５の場合では分割バッファ領域１，４に格納される。この格納される分割バッファ領域を指定するのは、シーケンス管理手段９である。
【００４４】
図４の（Ａ）でシーケンス２及びシーケンス３に受信エラーがあったので、シーケンス管理手段９はＡｃｋ Ｃｏｄｅパケット２１５にて、次に受信したいシーケンス番号をワイヤレスＵＳＢ Ｉ／Ｆ１０２を介して、相手通信装置に通知する（図４の（Ｂ））。ここでは、シーケンス２、シーケンス３、シーケンス５、シーケンス６を送信するように要求する。このことは、シーケンス２、シーケンス３が受信できなかったことを意味する。
【００４５】
図４の（Ｃ）でデータパケットを受信する際、シーケンス管理手段９はそのパケットのシーケンス番号を受信データライトポインタ７に通知し、該当するシーケンス番号に対応するパケットデータはそれらシーケンス番号が論理的に割り当てられた分割バッファ領域に格納される。（Ｃ）で要求の通りのシーケンス番号に対応するパケットデータが受信されると、図５の右側の図に示されたようにそれぞれのパケットデータが該当分割バッファ領域に格納される。
【００４６】
図４の（Ｄ）では、（Ｃ）でシーケンス６まで正しく受信できたので、次にシーケンス７、シーケンス８、シーケンス９、シーケンス１０を送信するように要求するＡｃｋ Ｃｏｄｅパケット２１５が相手側へ送信される。以降、（Ｃ），（Ｄ）の処理を繰り返す。
【００４７】
また、上記した実施例は、本発明を好適に実施した形態の一例に過ぎず、本発明は、その主旨を逸脱しない限り、種々変形して実施することが可能なものである。例えば、本実施例では、５１２バイトをバッファ領域の分割サイズとして記述したが、このサイズはいくつにとっても良い。例えば、一つの領域の大きさを１２８バイトにとった場合、図６のように４つの領域を一つの論理ブロックとして扱うことも可能である。ワイヤレスUSBにおいても最低のパケット単位は５１２バイトであるが、最大３５８４バイト（５１２バイトの７倍）のパケットサイズまで規定されている。その場合には、バッファ領域は５１２バイトに設定し、７つの領域を１つの論理ブロックとして割り当てれば良い。
【産業上の利用可能性】
【００４８】
本発明によれば、ワイヤレスＵＳＢのような特に無線でデータ通信され、エラーリカバリが頻繁に発生するような場合に利用されるデータ転送バッファ制御装置といった用途に適用できる。
【図面の簡単な説明】
【００４９】
【図１】データバッファの領域の分割例を示した図である。
【図２】ワイヤレスＵＳＢのデータ転送バッファを想定した場合におけるデータ転送制御装置の構成を示したブロック図である。
【図３】本発明によるデータ送信時のパケットデータ送出動作について説明するための図である。
【図４】本発明によるデータ受信時のパケットデータ受信動作について説明するための図である。
【図５】一部のシーケンスが受信できなかった場合のデータバッファへのデータの格納の様子を示した図である。
【図６】４つの分割領域を一つの論理ブロックとして扱った例を示した図である。
【符号の説明】
【００５０】
１    データバッファ
２    メモリコントローラ
３    リード制御回路
４    ライト制御回路
５    送信データライトポインタ
６    送信データリードポインタ
７    受信データライトポインタ
８    受信データリードポインタ
９    シーケンス管理手段
１０    アドレス変換回路
１０１    ＣＰＵ
１０２    ワイヤレスＵＳＢ Ｉ／Ｆ
２０１    ＣＰＵデータバス
２０２    データ書き込み要求信号
２０３    データリードコマンド
２０４    伝送ライン
２０５    データ送信要求信号
２０６    データ受信要求信号
２０７    伝送ライン
２０８    伝送ライン
２０９    領域読み出し完了通知信号
２１０    領域書き込み完了通知信号
２１１    領域読み出し完了通知信号
２１２    領域書き込み完了通知信号
２１４    信号ライン
２１５    Ａｃｋｎｏｗｌｅｄｇｅ Ｃｏｄｅ（Ａｃｋ Ｃｏｄｅ）
【図１】
2008053783.tif 000003
【図２】
2008053783.tif 000004
【図３】
2008053783.tif 000005
【図４】
2008053783.tif 000006
【図５】
2008053783.tif 000007
【図６】
2008053783.tif 000008