以下、本発明の実施形態について図面を用いて説明する。図1は、本発明が適用されたシリアル通信システム100の概略的な構成を示すブロック図である。図1に示すシリアル通信システム100は送信装置1および受信装置2を含んでおり、送信装置1および受信装置2はシリアル通信を行うための信号線で各々接続されている。そして、シリアル通信システム100は、デジタル符号化されたデータをクロック同期式のシリアル通信によって送信装置1と受信装置2との間で送受信する。なお、ここで言うところの信号線とは、基板上の配線であってもよいし、ワイヤーハーネスや通信ケーブル等のケーブルであってもよい。
まず、送信装置1の概略的な構成について説明を行う。送信装置1は、デジタル符号化されたデータをクロック同期式のシリアル通信によって受信装置2へ送信するものであって、送信装置側CPU11、計測結果記録RAM12、差分処理部13、有効ビット数検出部14、並直列変換部15、およびシリアル送信部16を備えている。例えば、送信装置1は、送信装置側CPU11、計測結果記録RAM12、差分処理部13、有効ビット数検出部14、並直列変換部15、およびシリアル送信部16を備えたICである。
送信装置側CPU11は計測を実施する。なお、ここで言うところの計測とは、例えば、レーザレーダ等のセンサから出力される時系列に沿った数値のデータ(以下、計測データと呼ぶ)を順次取得していくことを示している。また、送信装置側CPU11は、計測データの総数の情報(以下、計測データ総数情報と呼ぶ)および、取得した全ての計測データを計測結果記録RAM12に書込む。なお、計測データ総数情報は、計測結果記録RAM12の先頭アドレスに書込まれ、その次のアドレスからは、計測を実施した順に計測結果である計測データが書込まれていく。また、計測結果記録RAM12は、例えば16ビットを単位とするRAMであるものとして以降の説明を行う。なお、データの総数が16ビットで収まらない場合には、32ビットデータとして先頭から2つのアドレスに書き込むこととなるが、以降では、データの総数が16ビットに収まるのものとして説明を行う。さらに、送信装置側CPU11は、上述の計測の終了後に、差分処理部13に送信開始指令を出力する。なお、この開始指令の出力によって計測データのシリアル通信は開始される。
ここで、図2を用いて、計測データの一例を示す。図2は、レーザレーダに内蔵されているAD変換器から出力される数値データからなる計測データの一例を示すグラフである。図2のグラフの縦軸はデータ値であり、横軸は時間である。この数値データは、レーザレーダが対象物に対してレーザ光を照射し、その反射信号強度をアナログの電圧値に変換して、その電圧値を所定ビットのサイズのデジタル値に変換したものである。なお、このデジタル値に1ビットの分解能をかけたものが実際の物理値、つまり電圧値に相当する。例えば1ビットの分解能が2mVの場合、デジタル値が100のポイントにおける物理値は、2mV×100=200mVとなる。また、数値データが時系列に並んだ計測データは、連続したデータではなく、AD変換器のサンプリング周波数に合わせて時間的に飛び飛びになっている。つまり、図2のポイントの横軸間隔はサンプリング周波数の1周期に相当している。このように、計測データは、大きさ(電圧値)および形状が違う複数個のピークの領域(以下、ピーク領域と呼ぶ)と、ピークでない平坦に近い領域(以下、平坦領域と呼ぶ)が交互に出現するパターンを持つという特徴を有している。なお、計測データは、一例として16ビットで表現される16ビットデータであるものとして以降の説明を行う。
差分処理部13は、送信装置側CPU11から開始指令を受けたときに、計測結果記録RAM12に書込まれているデータをアドレスが先のものから順番に読み出して差分処理を行う。なお、差分処理の詳細については後述する。
有効ビット数検出部14は、差分処理部13が出力する後述の差分データをチェックして、このデータが表現可能となる最小のビット数(以下、最小ビット数と呼ぶ)を検出する最小ビット数検出処理を行う。なお、最小ビット数検出処理の詳細については後述する。また、差分データも16ビットデータであるものとして以降の説明を行う。
並直列変換部15は、パラレルのデータをシリアルのデータに変換する並直列変換を行う。一例としては、差分処理部13が出力する差分データとこの差分データに対応する最小ビット数とをもとに、16ビットデータ入力を可変長のシリアルデータへと変換する並直列変換を行う。なお、ここで言うところの可変長のシリアルデータとは、差分データを最下位ビット(LSB:least significant bit)から順にこの差分データに対応する最小ビット数分だけビットシフトしたシリアルデータを示している。また、並直列変換部15は、シリアルデータをシリアル送信部16に入力する。なお、最小ビット数の長さを持つこのシリアルデータの信号は、内部クロック(後述の送信クロックと同じ)の信号に同期してシリアル送信部16に入力される。
シリアル送信部16は、並直列変換部15が出力するシリアルデータに対してフレーム接続処理を行った後、物理的な通信信号に変換して外部に出力する。また、シリアル送信部16は、上述の可変長のシリアルデータの各々のビット数の長さに応じた送信データ有効信号を、シリアルデータの信号と同期させて送信する。なお、ここで言うところの送信データ有効信号とは、可変長のシリアルデータの長さを示す信号である。送信データ有効信号は、信号レベルに応じてデータ信号を確定させるレベルラッチのラッチ信号のうちの、例えばハイアクティブのレベルラッチのラッチ信号と同様のものであるものとする。詳しくは、送信データ有効信号の信号レベルがハイとなっている間は可変長のシリアルデータが有効であることを示し、この信号レベルがハイからローに落ちたところで可変長のシリアルデータの終了箇所を示すものとする。つまり、送信データ有効信号は、信号レベルのハイの状態が続いている長さによって可変長のシリアルデータの長さを表す。また、長さについては、送信クロックの数でカウントするものとする。なお、シリアルデータの送信が実行されていない場合、送信データ有効信号の信号レベルは常にローとなっているものとする。
なお、差分処理部13、有効ビット数検出部14、並直列変換部15、およびシリアル送信部16は、例えばFPGA(field programmable gate array)やASIC(application specific integrated circuit)等のハードウェアによって実現される。
続いて、受信装置2の概略的な構成について説明を行う。受信装置2は、送信装置1からシリアル通信によって送信されてくるデータを受信するものであって、シリアル受信部21、直並列変換部22、ビット拡張部23、差分修復部24、受信結果記録RAM25、通信チェック部26、および受信装置側CPU27を備えている。例えば、受信装置2は、シリアル受信部21、直並列変換部22、ビット拡張部23、差分修復部24、受信結果記録RAM25、通信チェック部26、および受信装置側CPU27を備えたICである。
シリアル受信部21は、シリアル送信部16から送信されてくるフレームを受信し、このフレームからシリアルデータを読み出す。また、シリアル受信部21は、読み出したシリアルデータを読み出した順に直並列変換部22にビット出力する。なお、シリアル受信部21は、送信データ有効信号の信号レベルがハイになっている間、シリアルデータの読み出しを続け、送信データ有効信号の信号レベルがローになった時点で、シリアルデータ1個分の読み出しを終了する。
直並列変換部22は、シリアル受信部21から送られてきたシリアルデータのビット情報をLSBから上位ビットへの順番に、ビット単位で16ビットバッファに書き込んでいく。つまり、直並列変換部22によって、シリアルのデータからパラレルのデータへの変換が行われる。なお、直並列変換部22は、バッファ書き込みが終了した最後のビット数、つまり最小ビット数もバッファ内容と同時にビット拡張部23に出力する。
ビット拡張部23は、直並列変換部22で書き込まれなかった16ビットバッファの残りのビット全てに対して符号ビット(最後に書き込まれたビット値)を書き込む符号拡張処理を行って16ビットの差分データへの復元を行う。なお、直並列変換部22で書き込まれなかった16ビットバッファの残りのビット数の情報は、直並列変換部22が出力する最小ビット数から判定する。また、ビット拡張部23によって符合拡張された差分データは、差分修復部24に入力される。なお、符号拡張処理の詳細については後述する。
差分修復部24は、後述する差分修復処理を行って、差分データから差分処理を行う前の計測データを復元する。また、差分修復部24は、復元を行った計測データを、復元した順に受信結果記録RAM25に入力し、復元した計測データを受信結果記録RAM25に書き込む。なお、差分修復処理の詳細については後述する。
通信チェック部26は、フレームに含まれる全シリアルデータの転送が正常に行われたかチェックする通信チェック処理を行う。通信チェック処理の結果、全シリアルデータの転送が正常に行われていた場合には、通信チェック部26は受信終了信号を受信装置側CPU27に出力する。なお、通信チェック処理の詳細については後述する。また、受信装置側CPU27は、受信終了信号を受けた場合に受信結果記録RAM25から計測データを読み出す。なお、受信装置側CPU27は、読み出した計測データを必要に応じて用いることによって処理を行う。
なお、シリアル受信部21、直並列変換部22、ビット拡張部23、差分修復部24、および通信チェック部26も、例えばFPGAやASIC等のハードウェアによって実現される。
次に、図3を用いて、シリアル通信システム100での動作フローについての説明を行う。図3は、シリアル通信システム100での動作フローを示すフローチャートである。なお、本フローは、送信装置側CPU11から送信開始指令が出力されたときに開始される。
まず、ステップS1では、送信開始指令を受けた差分処理部13が、計測結果記録RAM12に書込まれている計測データを先頭アドレスから順に読み出し、ステップS2に移る。
ステップS2では、差分処理部13が差分処理を行って、ステップS3に移る。よって、このステップS2が請求項の差分処理手段に相当する。差分処理では、読み出したデータのうち先頭の2つのデータである計測データ総数情報と最初の計測結果にあたる計測データ(以下、先頭計測データと呼ぶ)に対しては差分を求める処理を行わず、そのままスルーして有効ビット数検出部14に入力する。一方、3番目以降に読み出した全てのデータに対しては差分を求める処理を行い、求めた差分のデータ(以下、差分データと呼ぶ)を有効ビット数検出部14に入力する。
ステップS3では、有効ビット数検出部14が最小ビット数検出処理を行って、ステップS4に移る。最小ビット数検出処理では、差分処理13から順番に出力されてくる差分データを1個ずつチェックして、各々の差分データごとの最小ビット数を検出する。最小ビット数の検出では、入力された差分データに対し、最上位ビット(MSB:most significant bit)から下位ビットへ向かってチェックを行っていく。よって、このステップS3の処理が請求項の有効ビット数検出手段およびデータ圧縮手段に相当する。本実施形態の例では、差分データは16ビットデータであるので、16ビット目から下位ビットへ向かってチェックを行っていく。
例えばMSBが1の場合、つまり、差分データが負の数値を示すデータであった場合には、ビット数を順次下げたときに最初にビット値として符号ビットのビット値と異なるビット値“0”が出てくるビット数をチェックする。そして、ビット値として“0”が最初に出てくるビット数+1を最小ビット数として検出する。なお、ビット値として“0”が最初に出てくるビット数に1を加算した数を最小ビット数としているのは、符号ビット分のビット数を追加するためである。一例として、MSBからLSBまでビット値が全て“1”であった場合は、差分データが示す数値は−1であり、最小ビット数は2である。
また、例えばMSBが0の場合、つまり、差分データが正の数値を示すデータであった場合には、ビット数を順次下げたときに最初にビット値として符号ビットのビット値と異なるビット値“1”が出てくるビット数を調べていく。そして、ビット値として“1”が最初に出てくるビット数+1を最小ビット数として検出する。なお、ビット値として“1”が最初に出てくるビット数に1を加算した数を最小ビット数としているのは、符号ビット分のビット数を追加するためである。一例として、MSBからLSBまでビット値が全て“0”であった場合は、差分データが示す数値は0であり、最小ビット数は1である。
ここで、いくつかの例を挙げてさらなる説明を行う。例えば、差分データが−13の数値を示すデータであった場合には、デジタル符号化された差分データは“1111111111110011”となる。左端のMSBから下がって最初にビット値として“0”が出てくるビット数は4であるので、最小ビット数は5として有効ビット数検出部14で検出される。また、例えば、差分データが500の数値を示すデータであった場合には、デジタル符号化された差分データは“0000000111110100”となる。左端のMSBから下がって最初にビット値として“1”が出てくるビット数は9であるので最小ビット数は10となる。
ステップS4では、有効ビット数検出部14が、最小ビット数検出処理で求めた最小ビット数と最小ビット数の検出のもととなった差分データとの2種類を同時に出力し、ステップS5に移る。つまり、差分データとこの差分データに対応する最小ビット数とを同時に出力し、ステップS5に移る。なお、この2つの出力は、共に並直列変換部15に入力される。
ステップS5では、有効ビット数検出部14から送られてきた差分データとこの差分データに対応する最小ビット数とをもとに、並直列変換部15が、16ビットデータ入力を前述したような可変長のシリアルデータへと変換する。そして、このシリアルデータをシリアル送信部16に入力し、ステップS6に移る。よって、このステップS5の処理も請求項のデータ圧縮手段に相当する。なお、いくつか例を挙げると、例えば、差分データが−13の数値を示すデータであった場合には、“10011”で表される5ビット長のシリアルデータ(以下、シリアルデータAと呼ぶ)に変換される。また、差分データが500の数値を示すデータであった場合には、“0111110100”で表される10ビット長のシリアルデータ(以下、シリアルデータBと呼ぶ)に変換される。さらに、差分データが6の数値を示すデータであった場合には、“0110”で表される4ビット長のシリアルデータ(以下、シリアルデータCと呼ぶ)に変換される。このように、ステップS5では、デジタル符号化された差分データを可変長のシリアルデータの形に変換する圧縮を行う。よって、このステップS5の処理も請求項のデータ圧縮手段に相当する。なお、計測データ総数情報および先頭計測データについても、対応する最小ビット数をもとに、並直列変換部15が16ビットデータ入力を可変長のシリアルデータへと変換する。
ステップS6では、並直列変換部15が出力するシリアルデータに対して、シリアル送信部16がフレーム接続処理を行って、ステップS7に移る。フレーム接続処理では、可変長のシリアルデータに変換後の計測データ総数情報、先頭計測データ、および差分データ、ならびにチェックサムデータを繋げて一つのフレームにまとめる。なお、フレームにまとめられる計測データ総数情報、先頭計測データ、差分データ、およびチェックサムデータのそれぞれを、以降ではシリアル送信データと呼ぶ。また、フレーム接続処理では、各シリアル送信データ間に区切りを示すダミーデータを入れて、各データをフレームに接続する。
ここで、図4を用いて、フレームにおける全データの接続構成の一例を示す。図4は、フレームの接続構成の一例を示した模式図である。まず、図4に示すように、フレームの先頭には、ヘッダとして計測データ総数情報がつく。この計測データ総数情報は、送信装置側CPU11が計測データに先立って計測結果記録RAM12の先頭アドレスに書き込んだものであり、一番初めにシリアル送信部16に入力されるデータである。シリアル送信部16は、この最初に入力される計測データ総数情報により、以降何個分のデータがフレームに接続されるかを認識する。言い換えると、シリアル送信部16は、フレームの最後(つまり、送信の終了箇所)を認識し、送信の終了を実施できるようになる。このように、計測データ総数情報はフレームの構築に必要な情報であるため、計測データに先立って計測結果記録RAM12に書込まれている。
続いて、フレームの二番目のデータとして、差分をとることができない先頭計測データが接続され、その後に計測データの差分を求めた結果である差分データの全てが接続される。そして、フレームの最後のデータとして、チェックサムデータが接続される構成となる。このチェックサムデータは、シリアル通信が正常に行われたかどうかを判定するのに用いられるデータであり、シリアル送信部16が全てのシリアル送信データを使って適切な値を算出して、フレームの最後にその値を接続する。
ステップS7では、フレームのデータを物理的な通信信号に変換して外部に出力するとともに、シリアル送信データの信号の出力と同期させて送信データ有効信号を出力し、ステップS8に移る。よって、このステップS7の処理が、請求項のシリアル送信手段に相当する。具体的には、シリアル送信部16からは3本の信号が出力される。この3本の信号のうちの1本は送信クロックの信号(以下、クロック信号と呼ぶ)であり、シリアル通信はこのクロック信号に同期して実行される。また、このクロック信号はシリアル送信が実施されていない場合でも常時出力されている。残りの2本の信号は、送信データ有効信号と、シリアル送信データであり、この2本の信号はいずれもクロック信号に同期して変動する。
ここで、図5を用いて、シリアル送信部16からのクロック信号、送信データ有効信号、およびシリアル送信データの信号の出力のタイミングの一例を示す。図5は、シリアル送信部16からのクロック信号、送信データ有効信号、およびシリアル送信データの信号の出力のタイミングを示した図である。また、図5では、差分データに該当するシリアル送信データのみを例として挙げている。なお、図5では、前述のシリアルデータA、シリアルデータB、シリアルデータCを挙げており、シリアルデータA、シリアルデータB、シリアルデータCの順にシリアル送信される場合の例を示している。
チェックサムデータを除くシリアル送信データは、最小ビット数に圧縮されたデータであり、図5に示すようにクロック信号に同期してデータ情報が1ビットずつ出力される。また、シリアル送信データはLSBからMSBへと向かう順に下位のビットから送られる。なお、図5に示す例では、シリアル送信データのうちの可変長のシリアルデータのみを示しているので、シリアル送信データはLSBから符号ビットへと向かう順に下位のビットから送られることになる。なお、図5に示すD0がLSBにあたる。
シリアル送信データの符号ビットの次の箇所には、区切りを示すダミーデータが存在する。このダミーデータは、シリアル送信部16がシリアル送信データの接続処理として各データ間に挿入したものであり、シリアル受信部21によってシリアル送信データの切れ目として認識されるものである。なお、ダミーデータにはどんな値が入っていてもよい。また、図5の例では、この区切りは1クロック分となっているが、複数クロック分に広げる構成であってもよい。ただし、区切りの幅はデータの圧縮率と転送速度とに関わってくるので、あまり広くとらないほうが望ましい。
また、図5に示す例では、シリアル送信データであるシリアルデータA、シリアルデータB、シリアルデータCの各最小ビット数が5ビット、10ビット、4ビットであるので、送信データ有効信号の信号レベルがハイの状態の長さは、それぞれ5クロック、10クロック、4クロックとなっている。このように、送信データ有効信号は、送信データ有効信号の信号レベルのハイの状態の長さによって、シリアル送信データのビット数の長さを示している。
そして、シリアル送信部16は、チェックサムデータの送信が完了した時点でシリアル送信を終了し、送信データ有効信号の信号レベルをローに落とす。また、クロック信号はそのまま出力を続ける。なお、計測データ総数情報、先頭計測データ、および差分データについては、最小ビット数で表現する圧縮を行うものとするが、チェックサムデータは16ビットをフルに使って表現するものとする。従って、チェックサムデータの送信データ有効信号の長さは16クロックとなる。
なお、シリアル送信が終了した時点でシリアル送信部16は、送信装置側CPU11に送信終了信号を出力する。また、通信異常が発生し、後述する再送要求が発生した場合も、シリアル送信部16は送信終了信号を使って、このことを送信装置側CPU11に連絡する。
また、本実施形態では、全ての差分データを一つのフレームにまとめて送信する構成を示したが、必ずしもこれに限らない。例えば、差分データを複数のフレームに分割して送信する構成としてもよい。
ステップS8では、シリアル受信部21が送信データ有効信号を常時監視して、送信データ有効信号の信号レベルがハイに立ち上がった(つまり、立ち上がり検出した)か否かを判定する。前述したようにシリアル送信が実施されていない場合には、送信データ有効信号の信号レベルは常にローとなっているので、ハイへの立ち上がりが発生したことを検知することによって、シリアル送信が開始されたことをシリアル受信部21側で判定することができる。そして、送信データ有効信号の信号レベルがハイに立ち上がったと判定した場合(ステップS8でYes)には、シリアル送信データの転送が開始されたことを認識してステップS9に移る。また、送信データ有効信号の信号レベルがハイに立ち上がったと判定しなかった場合(ステップS8でNo)には、ステップS8のフローを繰り返す。
ステップS9では、シリアル送信データ受信処理を行ってステップS11に移る。シリアル送信データ受信処理では、シリアル受信部21が、送信データ有効信号の信号レベルがハイになっている間、シリアル送信データの読出しを続け、直並列変換部22に読み出した結果を読込み順にビット出力する。また、直並列変換部22は、シリアル受信部21から出力されるシリアル送信データのビット情報を、LSBから上位ビットへの順番にビット単位で16ビットバッファ(図示せず)に書込んでいき、シリアルのデータをパラレルのデータに変換する。なお、送信データ有効信号の信号レベルがローになった時点で、シリアル受信部21はシリアル送信データ1個分の読出しを終了したものと判定し、データ終了信号を出力する。そして、直並列変換部22は、このデータ終了信号を受け取った後、ビット情報の16ビットバッファへの書込みを終了し、この書込みが終了した16ビットバッファの内容をビット拡張部23に出力する。ここで、直並列変換部22は、書込みが終了した最後のビット数、つまり、最小ビット数も16ビットバッファの内容と同時にビット拡張部23に出力する。なお、次のシリアル送信データを受信した場合、この16ビットバッファをクリアした後に書込んでいく。
ビット拡張部23は、直並列変換部22で書込まれなかった16ビットバッファの残りのビット全てに対して、符号ビット(最後に書込まれたビット値)を書込む、つまり、符号拡張処理を行って16ビットへの復元を行う。なお、書込まれなかった16ビットバッファの残りのビット数の情報は、直並列変換部22が出力する最小ビット数から判定される。よって、このステップS9の符号拡張処理が請求項の復元手段に相当する。
例えば、“10011”で表される5ビット長のシリアルデータをシリアル受信部21で受信した場合、直並列変換部22は、1、1、0、0、1の順で16ビットバッファの各ビットにLSBから上位ビットに向かって書込んでいく。“10011”で表される5ビット長のシリアルデータに対応する最小ビット数は5であることから符合ビットは5ビット目であるので、ビット拡張部23は、16ビットバッファの5ビット目のビット値“1”を、6〜16ビット目までの残りの全ビットに書込む。これによって、元の16ビットデータ“1111111111110011”が正確に復元されることになる。なお、ビット拡張部23により符合拡張処理が行われたデータは、差分修復部24に入力される。
シリアル受信部21が最初に受信するデータは、図3に示したように計測データ総数情報であって、最初に16ビットに復元されたデータは差分修復部24に計測データ総数として記憶され、後述する差分修復を何回行うかについての指定パラメータとして、後述する差分修復処理で使用される。また、2番目にシリアル受信部21が受信するデータは、図3に示したように先頭計測データであって、2番目に16ビットに復元された先頭計測データも、パラメータとして差分修復部24に記憶される。
続いて、差分修復部24は、以下の処理を行って、差分データから元の計測データを復元する。ここで、添え字nはパラメータとして記憶した計測データ総数のことである。
D0=先頭計測データ
D1=D0+差分0
D2=D1+差分1
・・・
Dn=Dn−1+差分n−1
以上の処理を行うことによって、差分データから元の計測データが完全に復元される。よって、このステップS9の差分修復処理も請求項の復元手段に相当する。この復元した計測データは差分修復部24から復元順に出力され、受信結果記録RAM25に入力されて書込まれていく。
シリアル受信部21が最後に受信するデータは、図3に示したようにチェックサムデータである。このチェックサムデータは、後述する通信チェック部26でのシリアル通信のチェック処理に使用される。なお、このチェックサムデータは、差分修復部24にも入力されるが、差分修復部24は計測データ総数をパラメータとして持っているので、入力されるデータの数からこのチェックサムデータは差分修復処理とは関係のない不要なデータとして無視される。
ステップS10では、通信チェック部26が、チェック処理を行ってステップS11に移る。シリアル受信部21で受信された計測データ総数情報、先頭計測データ、可変長のシリアルデータは、16ビットデータに復元された後、差分修復部24と通信チェック部26との両方に入力される。また、シリアル受信部21で受信されたチェックサムデータも、前述したように差分修復部24と通信チェック部26との両方に入力される。通信チェック部26に入力されたデータは全て順次加算され、一番後に入力されるチェックサムデータを加算することにより、シリアル通信に異常がないかどうかの判定を行う。一例としては、データの全てを加算した値が0になるようにチェックサムデータの値を設定する方法がある。この場合、チェックサムデータを含む全てのデータの加算結果が0になる場合には、シリアル通信が正常と判定され、チェックサムデータを含む全てのデータの加算結果が0にならない場合には、シリアル通信に異常が生じたと判定される。なお、このチェックサムデータの値はシリアル送信部16によって算出する構成とすればよい。
ステップS11では、シリアル通信が正常であると判定された場合(ステップS11でYes)には、ステップS12に移る。また、シリアル通信に異常が生じたと判定された場合(ステップS11でNo)には、ステップS13に移る。
ステップS12では、フレームに含まれる全シリアル送信データの受信と差分修復処理とを終了し、シリアル受信部21が次回のシリアル通信が開始されるのを待つ待機状態に移行し、フローを終了する。なお、フレームに含まれる全シリアル送信データの受信と差分修復処理とを終了すると、通信チェック部26は受信装置側CPU27へ受信終了信号を出力し、受信終了信号を受けた受信装置側CPU27は受信結果記録RAM25から計測データを読み出す。
また、ステップS13では、通信チェック部26がシリアル受信部21に働きかけ、フレームの再送を要求する再送要求信号を出力させる。なお、このとき、通信チェック部26は受信装置側CPU27に対し受信終了信号を出力しない。そして、シリアル送信部16が再送要求信号を受け取り、ステップS1に戻ってフローを繰り返す。
文字列のデータでは、同一の文字列が繰り返し出現することが多いため、出現頻度の高い文字列をよりビット数の短い文字列に変換する圧縮を行うことによって、データの総容量を効率的に減らすことができる。しかしながら、所定の計測によって得られた数値が時系列に並んだ計測値のデータは、同一の数値が繰り返し出現する頻度は高くはなく、出現頻度の高い数値をよりビット数の短い数値に変換する圧縮を行ったとしても、データの総容量を効率的に減らすことは期待できない。
しかしながら、以上の構成によれば、計測データの差分の値を求め、この差分の値のデータの圧縮を行っている。前述したように、平坦領域では数値の変動が緩やかであるため、平坦領域にあたる計測値について直前の計測値との間での差分を求めればこの差分の値は0に近い値となる。なお、0に近い値は、圧縮によってビット数をより減らすことが可能であるので、以上の構成によれば、計測値のデータの総容量をより効率的に減らす圧縮が可能になる。また、以上の構成によれば、計測データの総容量をより効率的に減らす圧縮を行った圧縮データを、ビットの無駄を生じさせずにシリアル通信によって送受信させることが可能になるので、デジタル符号化された計測データをシリアル通信によって送受信する場合に、転送時間をより短縮することが可能になる。
具体例を示すと、例えば、0に近い小さい数−32は“100000”として6ビットで表現でき、0に近い小さい数31は“011111”として6ビットで表現できる。なお、6ビット目は符号ビットである。これに対して、これらの数字を16ビットで表現すると、−32は“1111111111100000”となり、31は“0000000000011111”となる。−32の16〜7ビット目には負の符号ビットのビット値と同一のビット値である“1”が入っているだけである。また、31の16〜7ビット目には正の符号ビットのビット値と同一のビット値である“0”が入っているだけである。よって、これらのデータを16ビットで扱うことは、16−6=10ビットのビットの無駄使いであることがわかる。実際、16ビットデータにおいて16ビット全てのビットを必要とする数は−32768と32767との2つしかないため、データを16ビットに固定して扱う場合には、ほとんどの場合において無駄が生じることとなる。
これに対して、本発明では、最小ビット数にまで圧縮をうけた複数の差分データのそれぞれのビット数がまちまちであった場合であっても、これらの差分データのビット数の長さを示す信号である送信データ有効信号を、対応する各々の差分データと同期させて送信するので、差分データを受信する装置側でこの送信データ有効信号をもとに圧縮した差分データの復元を行うことが可能になる。よって、最小ビット数にまで圧縮をうけた複数の差分データのそれぞれのビット数がまちまちであった場合であっても、まちまちのビット数のまま、これらの差分データの送受信を行わせることが可能になる。従って、圧縮した差分データを固定のビット数で表現し直したり、固定のビット数を満たすまで圧縮データをまとめたりなどしてから送信を行う必要がなく、ビットの無駄が生じない。その結果、デジタル符号化されたデータをシリアル通信によって送受信する場合に、転送時間をより短縮することが可能になる。
特に、データ長が短い(つまり、ビット数が少ない)ものの数が多く、データ長が長い(つまり、ビット数が多い)ものが少ないデータに対しては、本発明の圧縮方法の効果は非常に有効となる。言い換えると、急激な変化があるピーク領域と、緩やかな変動をする領域からなり、且つ、緩やかな変動をする領域の要素数がピーク領域の要素数より多い構造となっている計測データに対して特に有効な圧縮方法である。
なお、計測データには、値の急激な変動があるピーク領域以外にノイズによる小さなピークがたくさん存在する場合が多い。ノイズによるピークの値は小さいので、その変動はピーク領域に比べて小さいものであり、差分をとった値も小さくなる。よって、計測データにノイズによるピークが存在した場合であっても、本発明の圧縮方法は有効となるが、ノイズを除去する処理を施したデータに対して、本発明の圧縮方法はさらに有効となる。
なぜならば、ノイズを除去するとノイズによるピークがなくなって平坦領域と同様の状態となるからである。なお、ノイズを除去する処理との一例として、同じ計測を何回も繰り返し、その計測結果を足しこむ方式がよく使われている。計測回数をNとすると、N個の計測結果を足し込んだ場合、通常のピークはN倍の大きさとなるが、ガウス分布するランダムノイズのピークは√N倍の大きさとなることが統計学上知られている。ここで、ノイズのピーク大きさの平均をとると√N/N=1/√Nとなるので、Nの回数を増やせば0に収束していく。つまり、この処理によりノイズによるピークは0に近づいていく。ここで記述した内容はあくまでノイズ除去の一例であり、この方式以外のどのノイズ除去を使用しても本発明の圧縮方法には有効となる。
ここで、本発明における作用効果について、具体的に図6(a)および図6(b)を用いて説明を行う。図6(a)は、データビット数ごとのデータ数の一例を示した表である。なお、図6(a)の表中のデータビット数とは、差分データの最小ビット数であって、図6(a)の表中のデータ数とは、データビット数ごとの差分データの数を示す。また、図6(b)は、従来の方式のシリアル通信による転送ビット数と本発明の方式(以下、本方式と呼ぶ)のシリアル通信による転送ビット数とを比較した表である。なお、図6(b)の表中の転送ビット数とは、シリアル通信で送信する差分データの総ビット数を示す。また、ここで言うところの従来の方式とは、常にビット数を16ビットに固定してデータの送信を行う方式(以下、固定式と呼ぶ)である。
例えば、図6(a)では、実際に計測データの差分を求めた結果、4ビットで表現できるデータ数が20,000個、8ビットで表現できるデータが15,000個、10ビットで表現できるデータが5,000個、14ビットで表現できるデータが1,000個あったことを示している。
図6(a)に示すような圧縮を行うことが可能な計測データを、固定式のシリアル通信で送信した場合は、図6(b)に示すように720,000ビットの転送量が必要となる。これに対して、本方式のシリアル通信で送信すると、図6(b)に示すように372,000ビットの転送量ですむ。シリアル通信では、通信にかかるビット数がそのまま通信時間に比例することになるので、本方式を採用することにより、図6(b)に示す場合では、データの転送時間を約52%まで落とすことができる。
なお、本実施形態では、フレームの全シリアル送信データの受信が終わった後にチェック処理を行う構成を示したが、必ずしもこれに限らない。例えば、チェックサムデータを全シリアル送信データの最後につけるのでなく、フレームをいくつかのブロックに分割して、それぞれのブロックにチェックサムデータをつけることによって、受信途中にもチェック処理を行う構成であってもよい。具体例としては、フレームを適当な長さで10個のブロックに分割し、それぞれブロックの最後にチェックサムデータを付けることとする。なお、各ブロックの長さは違っていてもよい。ここで、5番目のブロックで通信異常が発生したとすると、5番目のブロックだけの再送要求信号を出す構成とすればよく、正常に受信したブロック1〜4が再送されることはない。つまり、この方式だと通信異常発生時の無駄な再送を少なく抑えることができる。また、別の方法として、例えば各シリアル送信データそれぞれの最後にパリティビットをつけて、通信異常の発生をチェックする構成としてもよい。
また、本実施形態では、計測の終了後に送信装置側CPU11が差分処理部13に送信開始指令を出力する構成を示したが、必ずしもこれに限らない。例えば、計測の途中に送信装置側CPU11が差分処理部13に送信開始指令を出力する構成としてもよい。この場合には、途中までの計測で得られた計測データの総数情報と途中までの計測で得られた計測結果をRAMに格納し、その後の処理を行う構成とすればよい。
なお、本実施形態では、送信装置1から受信装置2に向かってのみシリアル送信データを転送する単方向通信に本発明を適用する場合の例を示したが、必ずしもこれに限らない。例えば、送信装置1から受信装置2に向かってのシリアル送信データの転送と受信装置2から送信装置1に向かってのシリアル送信データの転送とを同時に実施する双方向通信に本発明を適用する構成であってもよい。この場合には、例えば差分処理部13、有効ビット数検出部14、並直列変換部15、シリアル送信部16、シリアル受信部21、直並列変換部22、ビット拡張部23、差分修復部24、および通信チェック部26を一つにまとめた部材を、送信装置1と受信装置2との両方に備える必要がある。
なお、双方向通信のうちの全二重通信を実現する場合には、信号線は、送信クロックの信号の出力用、送信データ有効信号の出力用、シリアル送信データの信号の出力用、再送要求信号の出力用、受信クロックの信号の入力用、送信データ有効信号の入力用、シリアル送信データの信号の入力用、再送要求信号の入力用の4入力4出力からなる8本となる。ここで、送信クロックの信号の出力用の信号線と受信クロックの信号の入力用の信号線とを共有にして、外部から入力することも可能である。また、再送要求信号を用いない構成の場合には、再送要求信号の入力用および出力用の信号線を省き、信号線を2本減らすことも可能となる。なお、双方向通信のうちの半二重通信を実現する場合は、信号線は、クロック信号の入出力用、送受信データ有効信号の入出力用、シリアル送受信データの信号の入出力用、再送要求信号の入出力用の4本ですむ。
また、本実施形態では、差分データの符号ビットよりも下位のビットのうち、当該符号ビットと同じ値が続くビットまでを当該符号ビットにまとめることによって圧縮を行う構成を示したが、必ずしもこれに限らない。例えば、差分データに符号ビットを含まない形式のデータの場合には、MSBと同じ値が続くビットまでをMSBにまとめることによって圧縮を行う構成としてもよい。
なお、本実施形態では、データを接続してフレームにしてから転送する構成を示したが、必ずしもこれに限らない。例えば、フレームにせず、指定した個数のデータだけを連続して転送したり、データ単体だけを転送したりするシリアル通信にも本発明を適用する構成であってもよい。
また、本実施形態では、差分データを圧縮して得られた可変長のシリアルデータを転送する場合を例に挙げて説明を行ったが必ずしもこれに限らない。例えば、差分をとっていないデータや文字列データなど、差分データ以外のデータを圧縮して得られた、ビット数がまちまちのシリアルデータをそのままのビット数で転送する構成としてもよい。この場合には、送信装置1の差分処理部13および受信装置2の差分修復部24を省くことができる。
なお、本発明は、上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
1 送信装置、2 受信装置、11 送信装置側CPU、12 計測結果記録RAM、13 差分処理部(差分処理手段、データ圧縮手段)、14 有効ビット数検出部(有効ビット数検出手段)、15 並直列変換部(データ圧縮手段)、16 シリアル送信部(シリアル送信手段)、21 シリアル受信部、22 直並列変換部(復元手段)、23 ビット拡張部(復元手段)、24 差分修復部(復元手段)、25 受信結果記録RAM、26 通信チェック部、27 受信装置側CPU、100 シリアル通信システム