(57)【要約】【課題】送信するデータの並び順序の管理を小さなデータサイズの管理情報で簡単な制御で行えるようにする点にある。【解決手段】送信対象とする一群のデータと通信制御用のデータとにより構成されて通信の１単位としてひとまとまりで送受信される単位データ群を相互に送信して１対１全二重双方向通信を行う一対の機器Ａ，Ｂの双方に、送信バッファメモリ２１と受信バッファメモリ２２が備えられた通信システムにおいて、前記通信制御用のデータに、その単位データ群に含まれる前記一群のデータと他の単位データ群に含まれる前記一群のデータとの順序関係を示すデータ並び情報が含まれ、前記データ並び情報は、設定個数のデータを循環的に繰り返して使用するように構成されている。【選択図】図１
2007028491.tif 000002
【特許請求の範囲】
【請求項１】
送信対象とする一群のデータと通信制御用のデータとにより構成されて通信の１単位としてひとまとまりで送受信される単位データ群を相互に送信して１対１全二重双方向通信を行う一対の機器の双方に、データを送信するデータ送信部とデータを受信するデータ受信部とが設けられ、前記データ送信部に、送信出力するためのデータを一時的に記憶保持する送信バッファメモリが備えられ、前記データ受信部に、受信したデータを一時的に記憶保持する受信バッファメモリが備えられた通信システムであって、
前記単位データ群の前記通信制御用のデータに、その単位データ群に含まれる前記一群のデータと他の単位データ群に含まれる前記一群のデータとの順序関係を示すデータ並び情報が含まれ、
前記一対の機器の双方が、前記単位データ群を適正に受信するに伴って、その単位データ群に含まれる前記データ並び情報と設定関係を有する受信確認情報を前記通信制御用のデータの一部として前記単位データ群の送信元へ送信するように構成され、
前記データ送信部に、前記単位データ群を送信後、通信の相手先の機器から前記受信確認情報を設定期間内に受け取ることができなかったときに、送信済みの前記単位データ群に含まれる前記一群のデータを初回の送信と同一の前記データ並び情報によって再送信させる送信側通信制御手段が備えられ、
前記データ受信部に、前記受信バッファメモリに書込まれた前記一群のデータを前記データ並び情報によって特定される順序通りに読出す読出し制御手段が備えられ、
前記送信バッファメモリ及び前記受信バッファメモリは、前記一群のデータを複数個記憶する記憶容量を有するように構成され、
前記データ並び情報は、設定個数のデータを循環的に繰り返して使用するように構成されている通信システム。
【請求項２】
前記データ受信部に、前記読出し制御手段によって次ぎに読出される前記一群のデータの前記データ並び情報と、そのデータ並び情報よりも前記受信バッファメモリにおける前記一群のデータの記憶可能個数から１を引いた数だけ並び順が後の前記データ並び情報との範囲内に存在する前記データ並び情報を有する前記単位データ群の前記一群のデータを前記受信バッファメモリに読出し出力の対象として記憶保持させる受信側通信制御手段が備えられて構成されている請求項１記載の通信システム。
【請求項３】
前記送信側通信制御手段は、前記再送信の要否の判断対象の前記単位データ群について、通信の相手先の機器から前記受信確認情報を受け取る前に、前記再送信の要否の判断対象の単位データ群よりも、前記データ並び情報において、通信の相手先の機器の前記受信バッファメモリにおける前記一群のデータの記憶可能個数分だけ後の単位データ群あるいは更にそれよりも後の単位データ群についての前記受信確認情報を受け取ったとき、前記再送信の要否の判断対象の前記単位データ群の再送信を不要と判断するように構成されている請求項２記載の通信システム。
【請求項４】
前記データ並び情報の個数をＮ、前記送信バッファメモリにおける前記一群のデータの記憶可能個数をＮＳ、通信の相手先の機器の前記受信バッファメモリにおける前記一群のデータの記憶可能個数をＮＲとして、Ｎ≧２×ＮＳ＋２×ＮＲ−３となるように設定されている請求項３記載の通信システム。
【請求項５】
前記単位データ群のデータサイズが固定的に設定されている請求項１〜４のいずれか１項に記載の通信システム。
【請求項６】
前記送信バッファメモリ及び前記受信バッファメモリは、１つの前記一群のデータを記憶できる記憶容量を有するメモリユニットを複数個備えて構成されている請求項１〜５のいずれか１項に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信対象とする一群のデータと通信制御用のデータとにより構成されて通信の１単位としてひとまとまりで送受信される単位データ群を相互に送信して１対１全二重双方向通信を行う一対の機器の双方に、データを送信するデータ送信部とデータを受信するデータ受信部とが設けられ、前記データ送信部に、送信出力するためのデータを一時的に記憶保持する送信バッファメモリが備えられ、前記データ受信部に、受信したデータを一時的に記憶保持する受信バッファメモリが備えられた通信システムに関する。
【背景技術】
【０００２】
通信システムでは、一般的に、下記特許文献１にも記載のように、受信したデータを一時的に保持する受信バッファメモリと、送信出力するためのデータを一時的に保持する送信バッファメモリとを備える構成とする場合が多い。
これは、下記特許文献１とは通信形態が異なるが、いわゆる１対１全二重双方向通信を構成する場合においても同様である。
この受信バッファメモリや送信バッファメモリの構成としては、下記特許文献１に記載のような単一のＦＩＦＯ構成のメモリや、データの書込みと読出しとを交互に切換える一対のバッファメモリから構成されるいわゆるピンポンバッファ構成のメモリとする場合が多い。
受信バッファメモリや送信バッファメモリに前記一群のデータを複数個記憶できるようにして高速にデータ通信を行う場合、受信バッファメモリあるいは送信バッファメモリに書込まれた一群のデータの並び順序を把握して、送信側と受信側とでデータの整合性を確保する必要がある。
このような場合、例えば、１つのデータファイル中における個々のデータの並び位置を把握し、各単位データ群毎に、その単位データ群に含まれる一群のデータが前記データファイル中の何番目から何番目までのデータであるかを示す情報を前記一群のデータと併せて送信し、受信側では、そのデータの並び位置についての情報によって元のデータファイルの並び順を再現するように受信バッファメモリからデータを読出していく。
【特許文献１】特開平６−２７６２０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記の１つのデータファイル中の個々のデータの並び位置を利用するような手法では、一群のデータの並び順序を把握するための情報のデータサイズが送信対象のデータファイルのデータサイズに依存することになり、システム側では、一群のデータの並び順序を把握するための情報のために十分大きなデータサイズを確保する必要があり、しかも、その並び順序の情報の範囲が送信するデータの量（ファイルサイズ）に依存して変化するため制御が複雑化してしまうことになる。
本発明は、かかる実情に鑑みてなされたものであって、その目的は、送信するデータの並び順序の管理を小さなデータサイズの管理情報で簡単な制御で行えるようにする点にある。
【課題を解決するための手段】
【０００４】
本出願の第１の発明は、送信対象とする一群のデータと通信制御用のデータとにより構成されて通信の１単位としてひとまとまりで送受信される単位データ群を相互に送信して１対１全二重双方向通信を行う一対の機器の双方に、データを送信するデータ送信部とデータを受信するデータ受信部とが設けられ、前記データ送信部に、送信出力するためのデータを一時的に記憶保持する送信バッファメモリが備えられ、前記データ受信部に、受信したデータを一時的に記憶保持する受信バッファメモリが備えられた通信システムにおいて、前記単位データ群の前記通信制御用のデータに、その単位データ群に含まれる前記一群のデータと他の単位データ群に含まれる前記一群のデータとの順序関係を示すデータ並び情報が含まれ、前記一対の機器の双方が、前記単位データ群を適正に受信するに伴って、その単位データ群に含まれる前記データ並び情報と設定関係を有する受信確認情報を前記通信制御用のデータの一部として前記単位データ群の送信元へ送信するように構成され、前記データ送信部に、前記単位データ群を送信後、通信の相手先の機器から前記受信確認情報を設定期間内に受け取ることができなかったときに、送信済みの前記単位データ群に含まれる前記一群のデータを初回の送信と同一の前記データ並び情報によって再送信させる送信側通信制御手段が備えられ、前記データ受信部に、前記受信バッファメモリに書込まれた前記一群のデータを前記データ並び情報によって特定される順序通りに読出す読出し制御手段が備えられ、前記送信バッファメモリ及び前記受信バッファメモリは、前記一群のデータを複数個記憶する記憶容量を有するように構成され、前記データ並び情報は、設定個数のデータを循環的に繰り返して使用するように構成されている。
【０００５】
すなわち、前記単位データ群の構成要素である前記通信制御用のデータの一部として、前記データ並び情報とそのデータ並び情報と設定関係を有する前記受信確認情報をと含めて相互に送受信することで、送信したデータの受信確認と適正に送信できなかったデータの再送信とを相互に行う。
このように送信されるデータの並び順序を管理するためのデータ並び情報は、前記単位データ群に含まれる一群のデータを１単位として、前記単位データ群毎に割り付けられ、その割り付け方として、設定個数のデータ並び情報を循環的に繰り返して使用する。
すなわち、受信側の機器の受信バッファメモリに書込まれた前記一群のデータは、前記データ並び情報に従って順次に読出されて行くため、読出された前記一群のデータのデータ並び情報を再利用するのである。
【０００６】
又、本出願の第２の発明は、上記第１の発明の構成に加えて、前記データ受信部に、前記読出し制御手段によって次ぎに読出される前記一群のデータの前記データ並び情報と、そのデータ並び情報よりも前記受信バッファメモリにおける前記一群のデータの記憶可能個数から１を引いた数だけ並び順が後の前記データ並び情報との範囲内に存在する前記データ並び情報を有する前記単位データ群の前記一群のデータを前記受信バッファメモリに読出し出力の対象として記憶保持させる受信側通信制御手段が備えられて構成されている。
【０００７】
すなわち、受信バッファメモリからは、前記データ並び情報によって特定される順序通りにデータが読出されるので、受信バッファメモリから次ぎに読出される前記一群のデータの前記データ並び情報と、そのデータ並び情報よりも前記受信バッファメモリにおける前記一群のデータの記憶可能個数から１を引いた数だけ並び順が後の前記データ並び情報との範囲内に存在しないデータ並び情報を有する単位データ群を受け取ってしまうと、送られてくる各単位データ群のデータ並び情報によっては、受信バッファメモリから正しい順序でデータを出力できなくなる場合がある。
【０００８】
例えば、受信バッファメモリが前記一群のデータを４群分記憶できるものとし、前記データ並び情報を「１」，「２」，「３」，……の自然数とし、その数値通り（昇順）に並び順が指定されているとすると、データ並び情報が「１」の単位データ群について通信エラーによってデータの送信に失敗したとき（次ぎに受信バッファメモリから読出される前記一群のデータのデータ並び情報は「１」の状態）、後続のデータ並び情報が「２」，「３」，「４」の単位データ群のデータを順次に受取り、更に上記の範囲内には存在しないデータ並び情報が「５」の単位データ群を受け取ってしまうと、受信バッファメモリは「２」〜「５」のデータ並び情報のデータで埋まってしまい、次ぎに出力すべきデータ並び情報が「１」の単位データ群を受け取れなくなり、送信処理が停止してしまう。
又、データ並び情報が「１」，「２」，「３」，……の単位データ群が順次に送信されて、受信バッファメモリから「１」，「２」，「３」，……とデータ読出される過程で、受信バッファメモリから読出し出力したはずのデータ並び情報が「１」の単位データ群が再送信されてきたような場合、それを受け取って受信バッファメモリに記憶保持させてしまうと、受信バッファメモリから正しく読出し順序を指定してデータを読み出せなくなってしまう。
そこで、上記のように、送信側から受け取る単位データ群のデータ並び情報の範囲に一定の制限を設けているのである。
【０００９】
又、本出願の第３の発明は、上記第２の発明の構成に加えて、前記送信側通信制御手段は、前記再送信の要否の判断対象の前記単位データ群について、通信の相手先の機器から前記受信確認情報を受け取る前に、前記再送信の要否の判断対象の単位データ群よりも、前記データ並び情報において、通信の相手先の機器の前記受信バッファメモリにおける前記一群のデータの記憶可能個数分だけ後の単位データ群あるいは更にそれよりも後の単位データ群についての前記受信確認情報を受け取ったとき、前記再送信の要否の判断対象の前記単位データ群の再送信を不要と判断するように構成されている。
すなわち、前記一群のデータの再送信が発生するケースとしては、単純に送信側から受信側へ前記単位データ群を送った際に通信エラーが発生して、受信側が適正にデータを受信できなかった場合の他に、送信側から受信側へ送った前記単位データ群は適正に受信されたものの、その単位データ群を受信したことを送信側へ報知するための前記受信確認情報を載せた単位データ群の通信において通信エラーが発生して、送信側が前記受信確認情報を受け取ることができなかった場合がある。
前者の場合には再送信は必須であり、後者の場合でも、再送信した前記一群のデータについての受信確認情報を受け取ることができれば、その一群のデータについての一連の送信処理を完結することができる。
【００１０】
しかしながら、受信側には適正に受信されたデータが存在して、本来的には再送信する必要がないにも拘わらず再送信してしまうのは、通信ラインを不要なデータで占拠して通信効率を低下させてしまうことになる。
そこで、受信側での処理手順を利用して、再送信の要否を判定できるようにする。
受信側は、上述のように、受け取る前記単位データ群のデータ並び情報の範囲を、次ぎに読出される前記一群のデータのデータ並び情報と、そのデータ並び情報よりも前記受信バッファメモリにおける前記一群のデータの記憶可能個数から１を引いた数だけ並び順が後のデータ並び情報との範囲内に制限しているので、もし送信側で、再送信の要否の判断対象の単位データ群よりも、前記データ並び情報において、通信の相手先の機器の受信バッファメモリにおける前記一群のデータの記憶可能個数分だけ後の単位データ群あるいは更にそれよりも後の単位データ群についての前記受信確認情報を受け取るということは、再送信の要否の判断対象の単位データ群に含まれる一群のデータが、既に受信バッファメモリから後段へ読出し出力されていることを意味し、再送信が必要ないことを送信側で把握できるのである。
【００１１】
具体的な事例によって説明すると、受信バッファメモリが前記一群のデータを４群分記憶できるものとし、前記データ並び情報を「１」，「２」，「３」，……の自然数とし、その数値通り（昇順）に並び順が指定されているとすると、再送信の要否の判断対象の単位データ群のデータ並び情報が「１」であるとして、受信バッファメモリからデータ並び情報が「１」のデータが未だ出力されていない状態（次ぎに受信バッファメモリから読出される前記一群のデータのデータ並び情報は「１」の状態）では、受信側に受け取ってもらえるデータ並び情報の範囲は「１」〜「４」の範囲であり、受信バッファメモリにおける前記一群のデータの記憶可能個数（４個）分だけ後に送信される単位データ群（データ並び情報が「５」の単位データ群）あるいはそれ以降に送信される単位データ群についての前記受信確認情報を受け取るということは、データ並び情報が「１」の単位データ群のデータは、既に受信バッファメモリから後段に出力されていることを意味するのである。
【００１２】
又、本出願の第４の発明は、上記第３の発明の構成に加えて、前記データ並び情報の個数をＮ、前記送信バッファメモリにおける前記一群のデータの記憶可能個数をＮＳ、通信の相手先の機器の前記受信バッファメモリにおける前記一群のデータの記憶可能個数をＮＲとして、Ｎ≧２×ＮＳ＋２×ＮＲ−３となるように設定されている。
すなわち、上述のようにして、受信確認情報を受け取れなかった前記単位データ群についても適正にデータを送信できたと判断するようにすると、通信エラーが頻発する極端な悪条件下では、前記データ並び情報の個数が少ないと、誤って再送信の必要がないものと判断してしまう場合があることを見出した。
以下、送信側の送信バッファメモリ及び受信側の受信バッファメモリの何れもが前記一群のデータを４群分記憶できるものとし、前記データ並び情報を「１」，「２」，「３」，……「１２」の１２個の自然数とし、その数値通り（昇順）に並び順が指定されているものとして説明する。
尚、以下の説明においては、説明の複雑化を避けるために、特に指定しない限り、通信エラーは、送信側から受信側への前記単位データ群のデータの送信は適正に実行され、その単位データ群についての受信確認情報を送信側へ送り返す単位データ群の通信で通信エラーが発生した場合のみを考える。
【００１３】
図１０は、送信側の機器での送受信を示したものであり、上段側の各ブロックが送信される前記単位データ群を示し、下段側の各ブロックが受信される前記単位データ群を示している。
尚、図１０中、時間「Ｔ」と「Ｔ’」とは同一時間であり、図面サイズの都合上、一連に続く送受信を分割して図示している。
上段側（送信）の各ブロックではその単位データ群のデータ並び情報を表記しており、下段側（受信）の各ブロックではその単位データ群が運んでくる受信確認情報を表記している。
例えば、上段側（送信）のブロックでは、データ並び情報が「１」であることを「＃１」と表記し、下段側（受信）のブロックでは、データ並び情報が「１」の単位データ群について受信したことを示す受信確認情報を「Ｒ＃１」と表記している。
下段側（受信）において１本の斜線を付しているブロックは、そのブロック内に表記する受信確認情報を受信側から送信側へ送り返す際の通信で通信エラーが発生し、送信側で受信確認情報を受信できなかったことを示しており、上段側（送信）においてデータ並び情報の周囲を右上がりの斜線で囲んだブロックは、再送信の前記単位データ群であることを示している。
【００１４】
始端から順を追って説明すると、送信側の機器からデータ並び情報が「１」，「２」，「３」の単位データ群を順次に送信され、それらのデータが受信側に受信されて受信確認情報が送信側に送り返される。
ところが、送信側では、このうち、データ並び情報が「１」及び「２」の単位データ群については受信確認情報を受信するのに失敗した。
送信側では、設定期間内に戻ってくるはずの受信確認情報を受信できなかったので、データ並び情報が「１」及び「２」の単位データ群について再送信している。
この後、データ並び情報が「２」の単位データ群については２度目の再送信で受信確認情報を受取って適正な送信の完了を確認できたが、データ並び情報が「１」の単位データ群については受信確認情報の受信に繰り返し失敗している。
【００１５】
このような状態で、図１０中「Ｂ１」で示すデータ並び情報が「１」の再送信のブロックの次ぎに、データ並び情報が「７」のブロックＢ２を送信し、ブロックＢ１についての受信確認情報をブロックＲＢ１で受け取ることができ、更に、ブロックＢ２のデータを通信エラーにより受信側で受信することができなかったというようなケースが発生したとする。
このようなケースでのデータ並び情報が「７」のデータに着目すると、データ並び情報が「７」の単位データ群については、データ並び情報が「７」の単位データ群についての受信確認情報を受信していない状態でも、データ並び情報が「１１」，「１２」，「１」の単位データ群についての受信確認情報を受信するに伴って、再送信の必要がないものと判断することになる。
従って、ブロックＢ２でデータ並び情報が「７」の単位データ群を送信した後、ブロックＲＢ１でデータ並び情報が「１」の単位データ群についての受信確認情報を受け取ると、そのデータ並び情報が「７」の単位データ群については再送信の必要はないものと判断されてしまうことになる。
つまり、本来は、再送信の要否の判断対象の単位データ群よりもデータ並び情報が後の「１」についての受信確認情報によって再送信の必要がないと判断すべきところを、再送信の要否の判断対象の単位データ群よりもデータ並び情報が先の「１」についての受信確認情報によって再送信の必要がないと判断してしまうのである。
このような誤判断は、各種の情報の細かな場合分けによっても回避することは可能であるが、それでは制御が複雑化してしまうため、データ並び情報の個数をどのように設定するかによって解決する。
【００１６】
データ並び情報の個数や、受信バッファメモリ及び送信バッファメモリにおける前記一群のデータの記憶個数の条件を上述の通りとして、再送信の要否を後続の単位データ群の受信確認情報によって判断する判断条件をテーブル化したものを図１１に示す。
図１１では、左端の列が再送信の要否の判断対象となる前記単位データ群のデータ並び情報であり、左端のデータ並び情報に対して、右側の「エラー補正候補」として示すデータ並び情報についての受信確認情報を受け取ったときに再送信が必要ないものと判断できるという関係になっている。
図１１において、例えば、データ並び情報が「１」の単位データ群については、その「１」に受信バッファメモリにおける前記一群のデータの記憶可能個数（＝４個）分だけ後の単位データ群（すなわち、データ並び情報が「５」の単位データ群）あるいは更にそれよりも後の単位データ群（データ並び情報が「６」，「７」の単位データ群）についての受信確認情報を受け取ったときに、再送信の必要がないものと判断する。
ここで、図１１の列数は、送信バッファメモリにおける前記一群のデータの記憶可能個数から１を引いた数となっているが、これは、例えばデータ並び情報が「１」の単位データ群について見ると、データ並び情報が「５」，「６」，「７」の単位データ群の何れについても受信確認情報を受け取らない状態で、データ並び情報が「８」の単位データ群についてのデータ並び情報を受け取ることはあり得ないからである。
つまり、データ並び情報が「５」，「６」，「７」の単位データ群の何れについても受信確認情報を受け取らないということは、それらの単位データ群のデータが送信バッファメモリに記憶保持されていることになり、それらに加えて再送信の要否の判断対象の単位データ群のデータを記憶保持して満杯状態の送信バッファメモリからデータ並び情報が「８」の単位データ群が送信されることは起こり得ないのである。
【００１７】
データ並び情報が「７」の単位データ群について発生したような誤判断を、図１１によって検討すると、図１１における再送信の要否の判断対象のデータ並び情報が「１」の行において、「５」，「６」，「７」のデータ並び情報は、データ並び情報が「１」のデータが送信バッファメモリに記憶保持されている状態で受け取る可能性のある受信確認情報のうち、「１」から見て最も後方側に離れている領域のデータ並び情報であり、逆に、「５」，「６」，「７」のデータ並び情報から見ると、これらのデータ並び情報のデータが送信バッファメモリに記憶保持されている状態で、これらよりも先行する「１」のデータ並び情報についての受信確認情報を受け取る可能性があることを示しているものでもある。
従って、これら「５」，「６」，「７」のデータ並び情報についての「エラー補正候補」の中に「１」のデータ並び情報が存在しなければ、先行する「１」のデータ並び情報についての受信確認情報を、後続の「１」のデータ並び情報についての受信確認情報であると誤認識してしまうのを回避できることなる。
図１１でいうと、再送信の判断対象のデータ並び情報が「７」であるときに、「エラー補正候補」として「１」のデータ並び情報が含まれているために上述のような誤判断をしたのであり、図１１の枠Ｆ１から「１」を追い出すように、データ並び情報の個数を増加させれば良いことになる。
そのような操作をした結果が図１２に示すものであり、データ並び情報の個数を１３個に増加させることで、再送信の判断対象のデータ並び情報が「７」であるときに、「１」のデータ並び情報の単位データ群についての受信確認情報を受信したとしても、それによって再送信が不要なものと判断してしまうことはない。
【００１８】
送信バッファメモリにおける前記一群のデータの記憶可能個数をＮＳ、受信バッファメモリにおける前記一群のデータの記憶可能個数をＮＲとして、図１１，図１２を一般化すると図１３に示すものとなり、図１１等との対比から、図１３の枠Ｆ２の値が、上述のような誤認識を回避するためのデータ並び情報の個数の最小値であり、データ並び情報の個数をＮとして、Ｎ≧（ＮＳ−１＋ＮＲ）＋（ＮＳ−２）＋ＮＲ＝２×ＮＳ＋２×ＮＲ−３  を満足する個数であれば良いことになる。
ちなみに、ＮＳ＝５，ＮＲ＝５の場合では、データ並び情報の個数の最小値は１７であり、そのときのエラー補正候補のテーブルは図１４に示すものとなり、又、ＮＳ＝４，ＮＲ＝５の場合では、データ並び情報の個数の最小値は１５であり、そのときのエラー補正候補のテーブルは図１５に示すものとなる。
【００１９】
又、本出願の第５の発明は、上記第１〜第４のいずれかの発明の構成に加えて、前記単位データ群のデータサイズが固定的に設定されている。
すなわち、前記データ並び情報の個数が固定的に設定されることで、データ並び情報を表現するデータのデータサイズを一定のサイズにすることができるので、そのようなデータ並び情報を含める前記単位データ群のデータサイズを固定的に設定する場合に特に好適である。
【００２０】
又、本出願の第６の発明は、上記第１〜第５のいずれかの発明の構成に加えて、前記送信バッファメモリ及び前記受信バッファメモリは、１つの前記一群のデータを記憶できる記憶容量を有するメモリユニットを複数個備えて構成されている。
従って、前記単位データ群に前記一群のデータを載せて送受信する場合におけるメモリの管理を効率良く行うことができる。
【発明の効果】
【００２１】
上記第１の発明によれば、送信されるデータの並び順序を管理するためのデータ並び情報は、前記単位データ群に含まれる一群のデータを１単位として、前記単位データ群毎に割り付けられ、その割り付け方として、設定個数のデータ並び情報を循環的に繰り返して使用するので、送信するデータの並び順序の管理を小さなデータサイズの管理情報で簡単な制御で行えるものとなった。
又、上記第２の発明によれば、送信側から受け取る単位データ群のデータ並び情報の範囲に一定の制限を設けることで、不要なデータを重複して受け取ってしまうことや、後続のデータの受取りに支障をきたすようなデータを受け取ってしまうことを回避できる。
【００２２】
又、上記第３の発明によれば、再送信が必要でない単位データ群を的確に判別し、不要なデータを送信して通信帯域を徒に狭めてしまうのを回避できる。
又、上記第４の発明によれば、再送信の要否についての誤判断を回避して、データ通信の信頼性を向上させることができる。
又、上記第５の発明によれば、前記データ並び情報の個数が固定的に設定されることで、データ並び情報を表現するデータのデータサイズを一定のサイズにすることができるので、前記単位データ群のデータサイズを固定的に設定し易くすることができる。
又、上記第６の発明によれば、前記単位データ群に前記一群のデータを載せて送受信する場合におけるメモリの管理を効率良く行うことができ、ひいては制御構成の簡素化を図ることができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の通信システムの実施の形態を図面に基づいて説明する。
本実施の形態では、通信システムによる通信当事者として機器Ａと機器Ｂとを例示して説明する。
機器Ａ，Ｂは、複雑な画像処理の処理部分を分担して担当するものであり、処理の完了した画像データを機器Ａから機器Ｂへ、あるいは、その逆方向に伝送する。
機器Ａ，Ｂの概略的なブロック図を示す図１のように、各機器Ａ，Ｂには、通信回路１と通信回路１からデータを受け取って（読出して）処理するデータ処理部２を備えている。
データ処理部２は、機器Ａ，Ｂ間で、担当する処理部分が異なることに応じて異なる回路構成となっているが、通信回路１の構成は共通である。
データ処理部２で実行される処理は上述のように画像処理であることから、機器Ａ，Ｂのうちの一方のデータ処理部２において、１つの画像の画像データの部分データに対して処理作用し、その部分データの処理結果のデータを通信回路１へ送って、他方のデータ処理部２を送信させる。この部分データの処理と処理の完了した部分データを通信回路１へ送る処理（より具体的には、後述する送信バッファメモリ２１のメモリユニットへ書込む処理）とを繰り返して、大容量データである１つの画像の画像データについて処理をしていく。すなわち、機器Ａ，Ｂの一方で、１つの画像の画像データ全てについて処理が完了するとその処理の完了した１つの画像の画像データを他方に送る、というデータの伝送形態ではなく、機器Ａ，Ｂの一方から他方へ、通信回路１を経てリアルタイム的に画像処理の完了した部分データを送っている。
【００２４】
〔通信回路１の概略構成〕
通信回路１には、データを送信するデータ送信部１１とデータを受信するデータ受信部１２とが備えられ、機器Ａのデータ送信部１１は機器Ｂのデータ受信部１２へと接続され、機器Ｂのデータ送信部１１は機器Ａのデータ受信部１２へと接続されて、機器Ａの通信回路１と機器Ｂの通信回路１との間で１対１全二重双方向通信が構成されている。
データ受信部１２には受信したデータを一時的に記憶保持する受信バッファメモリ２２が備えられ、データ送信部１１にはデータ処理部２にて処理されたデータを通信の相手先へ送信出力するために一時的に記憶保持する送信バッファメモリ２１が備えられている。
【００２５】
〔通信回路１によるデータ通信の概略〕
次に、通信回路１のデータ通信の概略について図３に基づいて説明する。
通信回路１間のデータ通信は、図３（ａ）に示すように、本来の送信対象のデータ（本実施の形態では画像処理されるあるいは画像処理されたデータ）に複数種類の通信制御用データを付加した「フレーム」を単位として行う。
各フレームは、図３（ａ）に示すように、先頭にフレームの先頭部分であることを示す「フレーム検出コード」ブロック１００が位置し、その後に、送信するデータに関する情報により構成される「フレームステータス」ブロック１０１が位置し、更に本来の送信対象のデータを配置する「データ」ブロック１０２が続く。この「データ」ブロック１０２には複数データが含まれ、各データ処理部２にて処理対象となる。
但し、各データ処理部２の動作を規定する制御用のデータも、「データ」ブロック１０２に含めて送信することもできる。
【００２６】
「データ」ブロック１０２の後のフレームの後端には、データが適正に転送されたか否かをＣＲＣ等により検証するためのデータを含める「フレームチェックコード」ブロック１０３が位置する。
上記のフレームを単位として送受信することで、「データ」ブロック１０２に含まれる一群のデータがひとまとまりで送信されることになる。
すなわち、フレームは、送信対象とする一群のデータ（「データ」ブロック１０２のデータ）と通信制御用のデータ（「データ」ブロック１０２以外のデータ）とにより構成されて通信の１単位としてひとまとまりで送受信される単位データ群である。
尚、通信回路１は、高速シリアル通信を行うように構成されており、「フレーム検出コード」ブロック１００の前端側には信号の伝送状態を安定化させるためのコードが組み込まれている。
フレームの各ブロック１００，１０１，１０２，１０３のデータサイズは固定的に設定されており、従って、フレーム全体のデータサイズも固定的に設定されている。
【００２７】
前記通信制御用データには、そのフレームに含まれる前記一群のデータ（「データ」ブロック１０２）と他のフレームに含まれる前記一群のデータとの順序関係を示すデータ並び情報が含まれている。尚、以下において、フレームとそのフレームに含まれる前記一群のデータとは一体であるので、前記データ並び情報をフレームのデータ並び情報として表現する場合もある。
機器Ａと機器Ｂとの間の通信を模式的に示す図３（ｂ）において「フレーム＃１」，「フレーム＃２」，……と示すように、データ並び情報は連続番号として設定され、識別情報が付された各フレームが常時且つ連続的に相互に送受信される。
これは、フレームは、本来の送信対象のデータすなわち「データ」ブロック１０２に含めるべきデータの有無に拘わらず送信されることを意味しており、送信対象のデータが存在しない場合の「データ」ブロック１０２には、任意に設定したデータが割り付けられる。
尚、機器Ａから機器Ｂへの送信とその逆方向の送信とは、原則として互いに依存することなく独立した送信タイミングとなっている。
【００２８】
本実施の形態では、前記データ並び情報は、「１」〜「１３」の１３個を、循環的に繰り返し使用するように設定されている。
すなわち、大きな画像ファイルを送信するとき、その画像ファイルのデータを上記の「データ」ブロック１０２のデータサイズに分割して前記一群のデータを生成し、前記一群のデータに「１」から順に昇順で連続番号を付し、「１３」の次は再び「１」に戻る。
送信バッファメモリ２１及び受信バッファメモリ２２は、前記一群のデータを複数個記憶する記憶容量を有するように構成され、前記データ並び情報の個数は、送信バッファメモリ２１及び受信バッファメモリ２２における前記一群のデータの記憶可能個数に依存して設定している。
具体的には、データ並び情報の個数をＮ、送信バッファメモリ２１における前記一群のデータの記憶可能個数をＮＳ、通信の相手先の機器Ａ，Ｂの受信バッファメモリ２２における前記一群のデータの記憶可能個数をＮＲとして、Ｎ≧２×ＮＳ＋２×ＮＲ−３となるように設定しており、本実施の形態では、後述のようにＮＳ＝ＮＲ＝４としてあり、Ｎ≧１３の条件を満たす個数のうちの最小値を用いている。
データ並び情報をこのような条件で設定する理由は、図１０乃至図１５によって説明した通りである。
尚、このデータ並び情報は、「フレームステータス」ブロック１０１のデータのうちの４ビットを使用する関係上、データ並び情報の個数を４ビット値で表現できる最大数である１６個に設定しても良い。
換言すると、前記データ並び情報の個数Ｎを、Ｎ≧２×ＮＳ＋２×ＮＲ−３の範囲を満たし、且つ、２のべき乗となる条件で設定し、更に具体的には、その条件を満たすＮのうちの最小値を前記データ並び情報の個数として設定しても良い。
【００２９】
各フレームの「フレームステータス」ブロック１０１の情報は、そのフレームのデータ並び情報と通信の相手先に送り返すための受信確認情報とを合わせたものである。
この受信確認情報とは、そのフレームの送信開始時点において、通信の相手先から受信している最新のフレームのデータ並び情報から設定関係を有するように生成したものであり、具体的には、前記設定関係としては、通信の相手先から受信している最新のフレームのデータ並び情報をそのまま使用している。
このように、受信確認情報をフレームの送信元へ送り返すことで、その送信元はどのフレームまで適正に送信できたかを識別するのに利用することができる。すなわち、フレームを受信したことを示す受信確認情報を、フレームの通信制御用のデータに含めて送信している。
以下において、この「フレームステータス」ブロック１０１に記述されるデータ並び情報と受信確認情報とを合わせた通信制御用のデータを「フレームステータス」と称する。
【００３０】
次ぎに、通信回路１の具体構成及び動作を、データ送信部１１及びデータ受信部１２の内部構成を詳細に示す図２に基づいて説明する。尚、図２は、機器Ａ側の通信回路１について示しているが、上述のように、機器Ｂの通信回路１も全く同一の構成で同一の動作をする。
【００３１】
〔データ受信部１２の構成〕
データ受信部１２には、受信した図３（ａ）に示す構成のフレームから本来の送信対象のデータ（「データ」ブロック１０２のデータ）及び「フレームチェックコード」ブロック１０３のデータとそれ以外の通信制御用のデータとを分離する受信フレーム分離回路３１と、受信フレーム分離回路３１から送られてくるフレームステータスの情報（「フレームステータス」ブロック１０１の情報）等から受信したフレームのデータを受入れるか否かを判別するフィルタ回路３２と、上記の受信バッファメモリ２２と、受信バッファメモリ２２を管理するためのレジスタ群であるメモリユニット制御レジスタ３３と、受信バッファメモリ２２から読出すデータを特定するためのリードオーダカウンタ３４と、受信側において通信動作を制御する受信側通信プロトコル制御部３７とが備えられている。これら各回路はＦＰＧＡ上に論理回路として構成されている。
【００３２】
受信バッファメモリ２２は、図２において「メモリユニット＃１」〜「メモリユニット＃４」として示すように、４つのメモリユニットから構成され、各メモリユニットの夫々が１つのフレームに載せてひとまとまりで送られてくる一群のデータを記憶保持する。従って、受信バッファメモリ２２は合計で４群のデータを記憶保持できる。
メモリユニット制御レジスタ３３は、受信バッファメモリ２２が４つのメモリユニットを備えているのに対応して、各メモリユニットの夫々に対応したレジスタを備えている。
メモリユニット制御レジスタ３３の各レジスタは、図４に示すように、各レジスタが対応するメモリユニットの番号（「１」〜「４」）を記録してある「メモリＩＤ」部２０１と、メモリユニットに記憶保持されているデータの属性を示すステータス情報を記憶保持するメモリユニットステータスレジスタ２０２と、メモリユニットに記憶保持されている前記一群のデータのデータ並び情報を記憶保持する並び情報レジスタ２０３とから構成されている。
更に、受信バッファメモリ２２のデータ入力側には、入力されてきたデータを４つのメモリユニットのうちの何れか１つへ出力するように切換える入力側切換え回路３５が備えられ、受信バッファメモリ２２の出力側には、４つのメモリユニットのうちの何れか１つを選択してデータを出力するための出力側切換え回路３６が備えられている。
【００３３】
受信バッファメモリ２２が４つのメモリユニットを備える構成としているのは、詳しくは後述するが、機器Ａ，Ｂ間でデータを送受信する際にエラーが発生して適正にデータの送信を完了することができなかったとき、エラーの発生したフレームに含まれていた前記１群のデータについて再送信する機能を有していることと、受信バッファメモリ２２からのデータの出力は、上記のデータ並び情報の順序に従って出力する必要があることとによる。
すなわち、フレームを送信した側の通信回路１では、上記のようなエラーが発生した場合でも後続のフレームを送信し続けるようになっており、受信側では、その後続のフレームを受け取っても、先行のフレームのデータの受取りに失敗しているので、データ並び情報の順序を無視して、後続のフレームのデータを先行して受信バッファメモリ２２から出力してしまうことはできない。又、後続のフレームの受取りを拒否してしまうと、せっかく送受信に成功したフレームのデータを再度送信しなくてはならなくなり、通信効率を低下させてしまうことになる。
【００３４】
そこで、受信バッファメモリ２２のメモリユニットの個数を、フレームの受信に失敗した後、そのフレームの前記１群のデータについて再送信されてくるまでに受信するフレームの数に１を加えた受信側最低メモリ個数以上の個数に設定している。
本実施の形態では、後述の送受信の事例による説明において明らかとなるが、フレームの受信に失敗した後、そのフレームの前記１群のデータについて再送信されてくるまでに受信するフレームの数は「２」であり、更に再送信されてくるフレームのデータを受け取るための１個を加えた「３」が上記の受信側最低メモリ個数である。
最低限３個のメモリユニットがあれば、フレームの受信に失敗した後に送られてくる２フレームのデータと、それに引き続いて送られてくる再送信のフレームのデータとを夫々メモリユニットへ記憶保持させることができる。
本実施の形態では、メモリユニットの個数を前記受信側最低メモリ個数に更に「１」を加えた４個としている。
これによって、上記の再送信されてきたフレームのデータを受信バッファメモリ２２から後段へ送出するのと並行して、送信側から後続のフレームのデータを受け取ることが可能であり、極めて効率よくデータを伝送することができる。
【００３５】
〔データ送信部１１の構成〕
データ送信部１１には、データ処理部２から受け取った１フレーム分のデータに前記データ並び情報を割り付けるライトオーダカウンタ４１と、上記の送信バッファメモリ２１と、送信バッファメモリ２１を管理するためのレジスタ群であるメモリユニット制御レジスタ４２と、送信バッファメモリ２１から読出すデータを特定するためのリードオーダカウンタ４３と、送信バッファメモリ２１から受け取ったデータによって図３（ａ）の構成のフレームを編成して出力する送信フレーム生成回路４４と、送信側において通信動作を制御する送信側通信プロトコル制御部４９とが備えられている。これら送信側の各回路もＦＰＧＡ上に論理回路として構成されている。
【００３６】
送信バッファメモリ２１は、図２において「メモリユニット＃１」〜「メモリユニット＃４」として示すように、受信バッファメモリ２２と同様に、４つのメモリユニットから構成され、各メモリユニットの夫々が１つのフレームに載せてひとまとまりで送信する一群のデータを記憶保持する。従って、送信バッファメモリ２１も、４群のデータを記憶保持できる。
メモリユニット制御レジスタ４２は、送信バッファメモリ２１が４つのメモリユニットを備えているのに対応して、各メモリユニットの夫々に対応したレジスタを備えている。
メモリユニット制御レジスタ４２の各レジスタは、メモリユニット制御レジスタ３３の各レジスタと基本構成は共通であり、図４に示すように、各レジスタが対応するメモリユニットの番号（「１」〜「４」）を記録してある「メモリＩＤ」部２０１と、メモリユニットに記憶保持されているデータの属性を示すステータス情報を記憶保持するメモリユニットステータスレジスタ２０２と、メモリユニットに記憶保持されている前記一群のデータのデータ並び情報を記憶保持する並び情報レジスタ２０３とから構成されている。
更に具体的には、メモリユニットステータスレジスタ２０２に記憶保持されるステータス情報は、メモリユニット制御レジスタ３３では、対応するメモリユニットに前記一群のデータが記憶されているか否かを示すデータの有無の情報であり、メモリユニット制御レジスタ４２では、そのデータの有無を示す情報に加えて、対応するメモリユニットに記憶されているデータが、「送信待ち」の状態、「送信完了後で受信確認待ち」の状態、あるいは、適正にデータ送信を行えなかったことに伴う「再送信待ち」の３状態のうちの何れの状態であるかを示す情報を記憶保持する。
【００３７】
更に、送信バッファメモリ２１のデータ入力側には、入力されてきたデータを４つのメモリユニットのうちの何れか１つへ出力するように切換える入力側切換え回路４５が備えられ、送信バッファメモリ２１の出力側には、４つのメモリユニットのうちの何れか１つを選択してデータを出力するための出力側切換え回路４６が備えられている。これらについても、受信側と同様の構成となっている。
【００３８】
送信バッファメモリ２１が４つのメモリユニットを備える構成としているのは、詳しくは後述するが、機器Ａ，Ｂ間でデータを送受信する際にエラーが発生して適正にデータの送信を完了することができなかったとき、エラーの発生したフレームに含まれていた前記１群のデータについて再送信する機能を有していることによる。
すなわち、フレームを送信した側の通信回路１では、上記のようなエラーが発生せずに適正にデータの送信が完了したことを、上記の受信確認情報を受け取ったことにより確認するのであるが、この受信確認情報を受け取るまで、送信済みのデータを送信バッファメモリ２１のメモリユニットに保持させておく必要があり、その受信確認情報を待つ間も、後続のフレームを送信して通信速度の高速化を図る必要がある。
【００３９】
そこで、送信バッファメモリ２１のメモリユニットの個数を、前記受信確認情報を待機する設定期間に送信するフレームの個数に１を加えた送信側最低メモリ個数以上の個数に設定している。
本実施の形態では、後述の送受信の事例による説明において明らかとなるが、前記受信確認情報を待機する設定期間に送信するフレームの個数は「２」であり、更に再送信されるフレームのデータを記憶保持するための１個を加えた「３」が上記の送信側最低メモリ個数である。
最低限３個のメモリユニットがあれば、再送信のためのフレームのデータと、前記受信確認情報を待つ間に送信する２個のフレームのデータとを夫々メモリユニットへ記憶保持させることができる。
本実施の形態では、メモリユニットの個数を前記送信側最低メモリ個数に更に「１」を加えた４個としている。
これによって、前記受信確認情報を待つ間に送信する２個のフレームのデータを記憶保持すると共に、上記の再送信するフレームのデータを送信バッファメモリ２１から読出すのと並行して、送信対象データの供給元であるデータ処理部２から後続のフレームのデータを受け取ることが可能であり、極めて効率よくデータを伝送することができる。
【００４０】
〔データ受信部１２の動作〕
次に、データ受信部１２の動作を説明する。
受信フレーム分離回路３１が、フレーム（図３（ａ）を参照）の先頭の「フレーム検出コード」ブロック１００のデータによってフレームデータの受取り開始を検知して、１つのフレームのデータを受け取ると、そのフレームの「フレームステータス」ブロック１０１のデータであるフレームステータスと本来の送信対象のデータである「データ」ブロック１０２のデータ等とを分離して、フレームステータスのデータをフィルタ回路３２へ送り、「データ」ブロック１０２及び「フレームチェックコード」ブロック１０３のデータを入力側切換え回路３５へ出力する。
【００４１】
フィルタ回路３２は、受信フレーム分離回路３１から受信したフレームステータスの中の前記データ並び情報をメモリユニット制御レジスタ３３へ送る。
データ並び情報を受け取ったメモリユニット制御レジスタ３３は、受信バッファメモリ２２の４つのメモリユニットに対応する４つのレジスタのうちの空きのもの（メモリユニットステータスレジスタ２０２の情報が「データ無し」になっているもの）に受け取ったデータ並び情報を書込み、そのデータ並び情報を書込んだレジスタに対応するメモリユニットに受信フレーム分離回路３１から送られてくるデータを書込むように入力側切換え回路３５の接続状態を設定する。但し、この時点では、メモリユニットステータスレジスタ２０２の情報は「データ無し」の状態を維持させる。
【００４２】
フィルタ回路３２は、受信フレーム分離回路３１から新規に受け取ったフレームに含まれる前記一群のデータの受信バッファメモリ２２への書込みが完了する毎に実質的に図８のフローチャートの処理に相当する処理を実行しており、受信バッファメモリ２２のデータを参照して、受信の完了した「データ」ブロック１０２のデータとフレームの「フレームチェックコード」ブロック１０３とを対比することで、通信エラーを発生することなく受信できたか否かを判断し（ステップ＃１）、適正に受信が完了しており（ステップ＃１）、且つ、受信したフレームのデータ並び情報がメモリユニット制御レジスタ３３のレジスタに記憶されているデータ並び情報のいずれとも一致せず（ステップ＃３）、且つ、受信したフレームのデータ並び情報が所定の範囲内にあるとき（ステップ＃４）、メモリユニット制御レジスタ３３に対して、受信したフレームについてのメモリユニットステータスレジスタ２０２の情報を「データ有り」に書き換えるように指示する（ステップ＃７）。
メモリユニットステータスレジスタ２０２の情報を「データ有り」と書き換えることによって、初めて受信バッファメモリ２２から後段へ（データ処理部２へ）読出し出力されるデータとして記憶保持されることになり、正式なデータの受信として確定する。
又、ステップ＃４における「所定のデータ並び情報の範囲内」とは、データ並び情報の順序（昇順）で、受信バッファメモリ２２から次ぎに出力すべき前記一群のデータのデータ並び情報と、そのデータ並び情報よりも受信バッファメモリ２２における前記一群のデータの記憶可能個数（＝４）から１を引いた数だけ並び順が後のデータ並び情報との範囲内である。例えば、次ぎに受信バッファメモリ２２から出力するべきデータのデータ並び情報が「１」であるとき、「１」〜「４」のデータ並び情報の範囲内となる。このように、データ並び情報の範囲で受取り制限をかけることによって、受信バッファメモリ２２に対するデータの読み書きに齟齬の生じる可能性のあるデータの受信を排除している。従って、フィルタ回路３２は、データ並び情報の範囲によって受信バッファメモリ２２に読出し対象として記憶保持させるか否かを制御する受信側通信制御手段ＲＣとして機能する。
この後、更に、フレームステータスのデータ並び情報及び受信確認情報の双方を受信側通信プロトコル制御部３７へ送る（ステップ＃８）。
【００４３】
通信エラーが発生したとき（ステップ＃１）、受信したフレームのデータ並び情報が既存のデータのデータ並び情報と重複したとき（ステップ＃３）、あるいは、受信したフレームのデータ並び情報が前記所定の範囲内にないとき（ステップ＃４）でも、データ並び情報及び受信確認情報の双方を受信側通信プロトコル制御部３７へ送る（ステップ＃８）のであるが、その際、通信エラーが発生したときは（ステップ＃１）、受信側通信プロトコル制御部３７へ送るデータ並び情報及び受信確認情報は何れも「０」に設定される（ステップ＃２）。
又、受信したフレームのデータ並び情報が前記所定の範囲内にないとき（ステップ＃４）は、データ並び情報が、メモリユニット制御レジスタ３３に記憶されているデータ並び情報のうちの最も増大側のデータ並び情報に近い値であるときは（ステップ＃５）、データ並び情報を「０」に設定する（ステップ＃６）。
【００４４】
一方、データ並び情報及び受信確認情報をフィルタ回路３２から受け取った受信側通信プロトコル制御部３７は、その受け取ったデータ並び情報及び受信確認情報を送信側通信プロトコル制御部４９へ送る。
送信側通信プロトコル制御部４９へ送られたデータ並び情報は、そのまま受信確認情報として、そのデータ並び情報を生成した通信の相手先の通信回路１のデータ受信部１２へ送り返すのに利用され、又、送信側通信プロトコル制御部４９へ送られた受信確認情報は、送信側通信プロトコル制御部４９において、１つのフレームのデータが適正に受信されたことを確認するのに利用される。
【００４５】
受信フレーム分離回路３１が受信する後続のフレームについても上記の処理が繰り返され、受信フレーム分離回路３１が受け取ったフレームに含まれる送信対象のデータが受信バッファメモリ２２に順次に書込まれていくと、それと並行して、受信バッファメモリ２２のデータが読出されて、データ処理部２へ出力される。
受信バッファメモリ２２からのデータの読出しは、リードオーダカウンタ３４が管理する。
上述のようにフレームのデータ並び情報が「１」〜「１３」の範囲で付されるときは、リードオーダカウンタ３４はその範囲でカウントを実行する。
リードオーダカウンタ３４は、メモリユニット制御レジスタ３３を参照して、カウント値と一致するデータ並び情報のデータがいずれかのメモリユニットに存在していれば、そのメモリユニットのデータを出力するように出力側切換え回路３６の接続を切換え、メモリユニットからのデータの送出が完了するとカウント値をインクリメント（＋１）してカウントアップし、「１３」の次は「１」に戻る。
一方、メモリユニット制御レジスタ３３にカウント値と一致するデータ並び情報が記憶されていなければ、そのデータ並び情報のデータが入力されてくるまで、その時点のカウント値を保持したまま待機する。
これによって、メモリユニット制御レジスタ３３及びリードオーダカウンタ３４は、受信バッファメモリ２２に書込まれた一群のデータを前記データ並び情報によって特定される順序通りに読出す読出し制御手段ＯＣとして機能する。
【００４６】
以上のデータの受信の過程を、図７に示す受信事例によって説明する。
図７の「受信範囲」として示す最上段は、図８のフローチャートのステップ＃４の処理における「所定の範囲」の移り変わりを示しており、「受信フレーム」として示す次段は順次にデータ受信部１２へ入力されるフレームの入力タイミングと各フレームのデータ並び情報とを示しており、更に次段の「受信バッファメモリ」は、（１）〜（４）で示す各メモリユニットの記憶内容を示しており、最下段の「受信データ出力」は、データ受信部１２からデータ処理部２へ出力されるデータの出力タイミングとデータ並び情報とを示している。
尚、図７中、例えば「Ｄａｔａ［＃１］」とは、データ並び情報が「１」のフレームのデータ（本来の送信対象のデータ）という意味である。
【００４７】
図７の事例では、「受信フレーム」の段においてデータ並び情報の周囲を右下がりの斜線で囲んだものの送信で通信エラーが発生したことを示しており、１回目のデータ並び情報「１」のフレームで通信エラーが発生した場合を例示している。
順を追って説明していくと、受信バッファメモリ２２から未だデータを出力していない状態では受信範囲は「１」〜「４」であり、最初のデータ並び情報が「１」のフレームで通信エラーが発生して、そのフレームのデータが入力されてくる間は受信バッファメモリ２２へ何も書込まれず（厳密には上述のように未確定のデータが書込まれている）、データ並び情報が「２」，「３」の後続のフレームを受信して、それらのフレームのデータが順次に受信バッファメモリ２２へ書込まれる。
リードオーダカウンタ３４等の制御によって、これらデータ並び情報が「２」，「３」のデータが、データ並び情報が「１」のデータに先行して受信バッファメモリ２２から読出し出力されることはない。
送信側では、データ並び情報が「３」のフレームの送信完了時点で、データ並び情報が「１」のフレームについて前記受信確認情報を受け取っていないことことから、データ並び情報が「１」のフレームのデータを再送信している。
受信側では、この再送信されたデータ並び情報が「１」のフレームを受信してデータを受信バッファメモリ２２のメモリユニットに書込んだ後、更に後続のデータ並び情報が「４」，「５」，「６」，「７」，……のフレームを受け取って受信バッファメモリ２２へ書込んで行く。
仮に１回目のデータ並び情報が「１」のフレームで通信エラーが発生しなければ、データ並び情報が「１」のデータは、図７の「受信データ出力」において破線Ｐで示す期間で受信バッファメモリ２２から読出し出力されるのであるが、通信エラーが発生したために「リカバリ期間」として示す３フレーム後にデータ並び情報が「１」のデータが出力される。
このデータ並び情報が「１」のデータを受信バッファメモリ２２から出力している期間では、再送信されてきたデータ並び情報が「１」のフレームに先行して受け取ったデータ並び情報が「２」及び「３」のフレームのデータを記憶保持しながら、データ並び情報が「１」のデータの受信バッファメモリ２２からの読出し出力と、後続のデータ（データ並び情報が「４」のフレームのデータ）の受信バッファメモリ２２への書込みとを並行して行っており、通信エラーのリカバリを確保しながら、効率良くデータの伝送が行えていることを示している。
【００４８】
〔データ送信部１１の基本動作〕
次に、データ送信部１１の動作を説明する。
データ処理部２は、上記フレームの「データ」ブロック１０２のデータ量を単位として繰り返しデータを出力し、ライトオーダカウンタ４１は、データ処理部２が１フレーム分のデータを出力するたびにそれを検出してカウント値をインクリメント（＋１）してカウントアップして行く。
【００４９】
ライトオーダカウンタ４１のカウント値の範囲は、フレームのデータ並び情報の範囲に一致させてあり、上述のように「１」〜「１３」の範囲で、「１３」の次は「１」に戻ってカウントアップする。
ライトオーダカウンタ４１のカウント値はメモリユニット制御レジスタ４２へ入力され、そのカウント値を受け取ったメモリユニット制御レジスタ４２は、送信バッファメモリ２１の４つのメモリユニットに対応する４つのレジスタのうちの空きのもの（メモリユニットステータスレジスタ２０２の情報が「データ無し」になっているもの）に受け取ったカウント値を書込み、そのカウント値を書込んだレジスタに対応するメモリユニットにデータ処理部２から送られてくるデータを書込むように入力側切換え回路４５の接続状態を設定する。
これによってデータ処理部２から送られてくるデータが、順次に送信バッファメモリ２１のメモリユニットへ書込まれて行き、メモリユニット制御レジスタ４２へ書込まれるライトオーダカウンタ４１のカウント値は、１フレームとしてひとまとまりで送信される一群のデータのデータ並び情報となる。
【００５０】
送信バッファメモリ２１からのデータの読出しは、リードオーダカウンタ４３が管理する。
ライトオーダカウンタ４１により「１」〜「１３」のカウント値が出力されるときは、リードオーダカウンタ４３はその範囲でカウントを実行する。
リードオーダカウンタ４３は、送信側通信プロトコル制御部４９からのデータ出力指示を受け取ると、メモリユニット制御レジスタ４２を参照して、カウント値と一致するデータ並び情報のデータがいずれかのメモリユニットに存在していれば、そのメモリユニットのデータを出力するように出力側切換え回路４６の接続を切換え、メモリユニットからのデータの出力が完了するとカウント値をインクリメント（＋１）してカウントアップする。
リードオーダカウンタ４３は、このようにカウント値をデータ送出タイミング毎に順次にカウントアップしてデータを送り出していくというのが基本的な動作であるが、データを適正に送信できなかったときに送信済みのフレームを再送信するという動作にも対応している。
リードオーダカウンタ４３には、再送信を要するフレームのデータ並び情報を記憶保持するためのレジスタであるリトライオーダレジスタ４３ａが備えられており、このリトライオーダレジスタ４３ａにデータ並び情報が書込まれているとき、上述のカウント値によるデータ出力に優先して、リトライオーダレジスタ４３ａに書込まれているデータ並び情報のデータを記憶したメモリユニットからのデータ出力を実行する。従って、再送信時のデータ並び情報は、初回の送信と同一のものである。
データ出力が完了するとリトライオーダレジスタ４３ａのデータはクリアされる。
【００５１】
リトライオーダレジスタ４３ａへのデータ並び情報の書込みは、送信側通信プロトコル制御部４９が担当しており、このために、送信側通信プロトコル制御部４９は実質的に図９のフローチャートに示す処理を実行している。
図９の処理は、所定のデータ送出タイミング毎に実行され、先ず受信側通信プロトコル制御部３７から送られてきている最新の受信確認情報によって、図１２に示すテーブルによる送信の要否の判断処理を行う（ステップ＃１１）。
これは、受信確認情報を送り返してきたフレームの受信に送信側が失敗したときに、実際にはデータが適正に受信されているにも拘わらず、再送信が必要なものとしてリトライオーダレジスタ４３ａに登録されてしまうのを極力回避するための処理である。
図１２は、上述のように、左端の列に記載したデータ並び情報で特定される前記一群のデータを再送信の要否の判断対象とするときに、右側の３列のうちのいずれかのデータ並び情報についての受信確認情報を受け取ったときに、判断対象の前記一群のデータを再送信不要とする判断を行単位で行うものであり、図１２の具体的な運用としては、例えば、上記の最新の受信確認情報が「１１」のデータ並び情報についてのものであるとき、メモリユニット制御レジスタ４２に「５」，「６」，「７」のデータ並び情報が存在するか否かを検索し、もし存在すれば（ステップ＃１１）、それに対応するメモリユニットステータスレジスタ２０２の情報を「データ無し」に書き換えて、そのデータ並び情報に対応する前記一群のデータを送信バッファメモリ２１から実質的に削除する（ステップ＃１２）。
すなわち、上述した図１２のテーブルの意義から、再送信の要否の判断対象のフレームについて、通信の相手先の機器Ａ，Ｂから受信確認情報を受け取る前に、再送信の要否の判断対象のフレームよりも、データ並び情報において、通信の相手先の機器Ａ，Ｂの受信バッファメモリ２２における前記一群のデータの記憶可能個数分だけ後のフレームあるいは更にそれよりも後のフレームについての受信確認情報を受け取ったとき、再送信の要否の判断対象のフレームの再送信を不要と判断しているのである。
【００５２】
次ぎに、上記の最新の受信確認情報に一致するデータ並び情報がメモリユニット制御レジスタ４２に存在するか否かによって、その送信済みのフレームの送信が適正に完了したか否かを確認する（ステップ＃１３）。
後述するデータ並び情報のやり取りの事例によって説明するが、受信確認情報は、データの送信後、設定個数のフレーム（具体的には、２フレーム）以内に戻って来る関係になっており、フレームの送信後、その送信したフレームに含まれるデータ並び情報から生成された受信確認情報を、設定期間内（具体的には２個のフレームを送信する期間内）に受け取ったときは適正にデータの送信が完了したと判断し、受け取らなかったときは適正にデータの送信が完了しなかったものと判断する。
【００５３】
適正にデータの送信が完了したと判断したときは（ステップ＃１３）、受信確認情報と同一のデータ並び情報を保持しているメモリユニット制御レジスタ４２のメモリユニットステータスレジスタ２０２の情報を「データ無し」に書き換えて、そのデータ並び情報に対応している送信バッファメモリ２１のメモリユニットに後続のデータを書込み可能な状態とする（ステップ＃１４）。すなわち、この時点まで、送信済みのフレームのデータは、送信バッファメモリ２１に保持されている。対応するメモリユニット制御レジスタ４２の記憶内容についても同様である。
逆に、これから送信しようとするフレームよりも３フレーム以上前の送信済みフレームについて、受信側通信プロトコル制御部３７から受信確認情報を受け取れず、適正にデータの送信が完了しなかったと判断したときは（ステップ＃１３）、そのフレームのデータ並び情報をリードオーダカウンタ４３に備えられているリトライオーダレジスタ４３ａに書込む（ステップ＃１５）。従って、送信側通信プロトコル制御部４９は、フレームを送信後、通信の相手先の機器から受信確認情報を設定期間内に受け取ることができなかったときに、送信済みのフレームに含まれる前記一群のデータを再送信させる送信側通信制御手段ＣＣとして機能する。
【００５４】
この後、送信側通信プロトコル制御部４９は、受信側通信プロトコル制御部３７から受け取ったデータ並び情報をそのまま受信確認情報として使用して、送信フレーム生成回路４４へ送り（ステップ＃１６）、更に、リードオーダカウンタ４３に対してデータ出力指示を送出する（ステップ＃１７）。ここで送信フレーム生成回路４４へ送る受信確認情報は、この時点で通信の相手先の機器Ａ，Ｂから受信している最新のフレームについての受信確認情報となっている。
リードオーダカウンタ４３は、この送信側通信プロトコル制御部４９からのデータ送出指示によって、上述のように出力側切換え回路４６を切換え操作し、送信バッファメモリ２１からデータを出力させ、併せて、その一群のデータのデータ並び情報を送信フレーム生成回路４４へ送る。
送信フレーム生成回路４４は、送信バッファメモリ２１から受け取ったデータによって「フレームチェックコード」ブロック１０３に記述するデータを生成して、その生成したデータと、送信対象のデータと、リードオーダカウンタ４３から受け取ったデータ並び情報と、送信側通信プロトコル制御部４９から受け取った受信確認情報とを合わせて、図３（ａ）に示す構成のフレームを生成する。
このようにフレームを生成すると、通信の相手先の通信回路１へ生成したフレームを送出する。
【００５５】
上述のデータ受信部１２及びデータ送信部１１の動作におけるフレームステータスの取扱いをまとめると、図３（ｃ）に示すように、受信したフレームのフレームステータスからデータ並び情報を抜き出して、そのデータ並び情報をそのまま受信確認情報として使用してフレームを構成し、そのフレームによるデータ送信に便乗して受信確認情報を通信の相手側に送り返している。
この操作を通信当事者間で相互に行うことで、適正にデータが送信されたか否かを相互に確認できる。
このやり取りを実際のデータの送受信のタイミングによって示すと、図５に示すような関係となる。
図５では、上段がデータ送信部１１からの送信出力を示しており、下段がデータ受信部１２への受信を示しており、各フレームについてのデータ並び情報と受信確認情報とを「データ並び情報」−「受信確認情報」と対にして表示している。
たとえば、「フレーム＃２−＃１」は、そのフレームのデータ並び情報が「２」であり、そのフレームを利用して送信する受信確認情報が「１」であることを示している。
図５（ａ）は送信したフレームの受信確認情報が比較的早いタイミングで戻ってくる場合を示しており、図５（ｂ）は比較的遅いタイミングで戻ってくる場合を示している。
いずれも、矢印の基端位置で送信の完了したフレームについて、矢印の先端位置で示すフレームによって受信確認情報が返ってくることを示しており、破線Ｒの位置で送信の完了したフレームについて、２点鎖線Ｓの位置で受信確認情報の受信が完了している。
図５からも読み取れるように、ワーストケースでも送信が完了してから２フレーム以内で受信確認情報を受け取ることができるように構成されている。
従って、受信確認情報を待機する設定期間を２フレームの期間と設定している。
【００５６】
次ぎに、送受信の過程でエラーが発生した場合の事例について、図６に基づいて説明する。
図６の各部の表示態様は図５のものと共通としてある。
図６（ａ）は、送信したフレームを通信の相手先が受信したときにエラーが発生して、通信の相手先において適正にデータを受け取ることができなかった場合を示しており、図６（ｂ）は、送信したフレームは通信の相手先に到達し、通信の相手先が受信確認情報を送り返してきたが、その受信確認情報を送り返してきたフレームを適正に受信できなかった場合を示している。
図６（ａ）では、フレームＦ１で送信したデータについて、フレームＦ２で受信確認情報が返ってくるはずのところが、フレームＦ２の受信確認情報は「０」となっており、フレームＦ３の送信開始時点で、３フレーム以上前の送信フレームであるフレームＦ１のデータを適正に送信できなかったと確認して、フレームＦ３においてフレームＦ１を同じデータ並び情報で再送信している。すなわち、通信エラーの発生したフレームから３フレーム目で必ずそのエラーの発生したフレームが再送信される関係になっている。
又、図６（ｂ）では、フレームＦ４で送信したデータについて、フレームＦ５で受信確認情報が返ってくるはずのところが、フレームＦ５の受信に失敗し、フレームＦ６の送信開始時点で、３フレーム以上前の送信フレームであるフレームＦ１のデータを適正に送信できなかったと確認して、フレームＦ６においてフレームＦ４を同じデータ並び情報で再送信している。フレームＦ５の受信を失敗したために、フレームＦ６の受信確認情報は「０」となっている。このフレームＦ６で送信するデータについては、フレームＦ４で送信済みのデータが通信の相手先の受信バッファメモリ２２に記憶されているので、フィルタ回路３２によって受取りが拒否されることになる。
【００５７】
〔別実施形態〕
以下、本発明の別実施形態を列記する。
（１）上記実施の形態では、データ並び情報の値の設定として、「１」から始まる連続番号とする場合を例示しているが、「０」から始まる連続番号として、Ｎ＝１３の場合は、「０」〜「１２」、Ｎ＝１６の場合は、「０」〜「１５」などと設定しても良い。
又、データ並び情報の値は、順序関係を把握できるものであれば、番号以外にも、例えばアルファベット等の各種の値を用いることができる。
（２）上記実施の形態では、データ受信部１２で受け取ったフレームのデータ並び情報を、データ送信部１１においてそのまま受信確認情報として送信出力しているが、データ並び情報から受信確認情報を生成する規則は、受信確認情報からもとのデータ並び情報が認識可能なものであれば任意の規則を用いることができる。
（３）上記実施の形態では、機器Ａ，Ｂで画像処理の処理部分を分担し、処理過程にある画像データをリアルタイム的に授受する場合を例示しているが、複数の機器が連係して動作するようなシステムにおいて、各機器の制御データを授受するような場合にも本発明を適用できる。
【００５８】
（４）上記実施の形態では、本来の送信対象のデータが存在するか否かに拘わらず、通信当事者間で、フレームを常時且つ連続的に相互に送信する場合を例示しているが、通信当事者間の双方で送信すべきデータが無いときは、フレームの送信を停止しておき、どちらか一方に送信すべきデータが発生したときに、相互にフレームを送信する状態に切換えるように構成しても良い。
（５）上記実施の形態では、データ送信部１１及びデータ受信部１２をＦＰＧＡ上で論理回路として構成し、全てハードウェア構成とする場合を例示しているが、適宜にＤＳＰ等を利用してソフトウェアによる処理に置き換えても良い。
（６）上記実施の形態では、送信バッファメモリ２１及び受信バッファメモリ２２の構成として、個別のメモリユニットを複数個備える場合を例示しているが、送信バッファメモリ２１及び受信バッファメモリ２２を、夫々単一のメモリ空間を有するメモリにて構成し、そのメモリ空間に前記一群のデータを夫々記憶するアドレスを設定するように構成しても良い。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施の形態にかかる概略ブロック構成図
【図２】本発明の実施の形態にかかる要部ブロック構成図
【図３】本発明の実施の形態にかかるフレーム及びそれの送受信を説明する図
【図４】本発明の実施の形態にかかるメモリセル制御レジスタの構成の説明図
【図５】本発明の実施の形態にかかる基本的なフレームの送受信タイミングの説明図
【図６】本発明の実施の形態にかかるエラー時におけるフレームの送受信タイミングの説明図
【図７】本発明の実施の形態にかかるデータ受信部でのデータを受信とそれの出力を説明する図
【図８】本発明の実施の形態にかかるフローチャート
【図９】本発明の実施の形態にかかるフローチャート
【図１０】本発明の作用を説明するためのデータ並び情報等の送受信を示す図
【図１１】本発明の作用を説明するための補正テーブルの例示図
【図１２】本発明の作用を説明するための補正テーブルの例示図
【図１３】本発明の作用を説明するための補正テーブルを一般化した図
【図１４】本発明の作用を説明するための補正テーブルの例示図
【図１５】本発明の作用を説明するための補正テーブルの例示図
【符号の説明】
【００６０】
Ａ，Ｂ  機器
ＣＣ    送信側通信制御手段
ＯＣ    読出し制御手段
ＲＣ    受信側通信制御手段
１１    データ送信部
１２    データ受信部
２１    送信バッファメモリ
２２    受信バッファメモリ
【図１】
2007028491.tif 000003
【図２】
2007028491.tif 000004
【図３】
2007028491.tif 000005
【図４】
2007028491.tif 000006
【図５】
2007028491.tif 000007
【図６】
2007028491.tif 000008
【図７】
2007028491.tif 000009
【図８】
2007028491.tif 000010
【図９】
2007028491.tif 000011
【図１０】
2007028491.tif 000012
【図１１】
2007028491.tif 000013
【図１２】
2007028491.tif 000014
【図１３】
2007028491.tif 000015
【図１４】
2007028491.tif 000016
【図１５】
2007028491.tif 000017