(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023170314
(43)【公開日】2023-12-01
(54)【発明の名称】データ処理方法およびデータ処理装置
(51)【国際特許分類】
H03M 7/30 20060101AFI20231124BHJP
H03M 7/40 20060101ALI20231124BHJP
G06F 12/04 20060101ALI20231124BHJP
【FI】
H03M7/30 Z
H03M7/40
G06F12/04 530
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2022081978
(22)【出願日】2022-05-19
(71)【出願人】
【識別番号】000207551
【氏名又は名称】株式会社SCREENホールディングス
(74)【代理人】
【識別番号】100135013
【弁理士】
【氏名又は名称】西田 隆美
(72)【発明者】
【氏名】久本 伸之
(72)【発明者】
【氏名】加門 宏章
【テーマコード(参考)】
5B160
5J064
【Fターム(参考)】
5B160DA08
5J064BA09
5J064BB13
5J064BC02
5J064BD03
(57)【要約】
【課題】新たなデータ圧縮のためのデータ処理技術を提供する。
【解決手段】このデータ処理方法では、a)m*nビット長の第1データを、m個のnビット長の分割ブロックに分割する工程と、b)分割ブロックのうち、格納すべき有効ブロックを判別する工程と、c)有効ブロックを格納する工程とを有する。工程b)において、数値が非ゼロとなる最上位の分割ブロックと、数値が非ゼロとなる最上位の分割ブロックよりも下位の前記分割ブロックとを、有効ブロックとする。これにより、上位側の桁が連続してゼロとなるデータを効率良く圧縮し、格納することができる。
【選択図】
図2
【特許請求の範囲】
【請求項1】
データ処理方法であって、
a)m*nビット長の第1データを、m個のnビット長の分割ブロックに分割する工程と、
b)前記分割ブロックのうち、格納すべき有効ブロックを判別する工程と、
c)前記有効ブロックを格納する工程と、
を有し、
前記工程b)において、数値が非ゼロとなる最上位の前記分割ブロックと、数値が非ゼロとなる最上位の前記分割ブロックよりも下位の前記分割ブロックとを、前記有効ブロックとする、データ処理方法。
【請求項2】
請求項1に記載のデータ処理方法であって、
前記工程b)において、1つの前記第1データに対して、mビット長のイネーブルビットを含むイネーブル信号を1つ生成し、
最下位からp番目の前記分割ブロックが前記有効ブロックでない場合には、前記イネーブルビットの最下位からp番目の桁を0とし、
最下位からp番目の前記分割ブロックが前記有効ブロックである場合には、前記イネーブルビットの最下位からp番目の桁を1とする、データ処理方法。
【請求項3】
請求項1に記載のデータ処理方法であって、
前記工程c)は、
c1)前記有効ブロックのそれぞれに1ビット長の判別ビットを付与する工程と、
c2)前記判別ビットと、前記有効ブロックと同じ数値を有するnビット長の第2データとを併せて格納する工程と、
を含む、データ処理方法。
【請求項4】
請求項3に記載のデータ処理方法であって、
前記工程c1)において、
1つの前記第1データに対して前記有効ブロックが1つである場合、その前記有効ブロックに対応する前記判別ビットを1とし、
1つの前記第1データに対して前記有効ブロックが複数である場合、最下位の前記有効ブロックに対する前記判別ビットを1とし、その他の前記有効ブロックに対する前記判別ビットを0とし、
前記工程c2)において、
1つの前記第1データに対する前記判別ビットおよび前記第2データを、上位側から順に格納する、データ処理方法。
【請求項5】
請求項4に記載のデータ処理方法であって、
前記工程c)の後に、
d)新たな読み出しデータとして、新たなm*nビット長のゼロデータを準備する工程と、
e)格納された前記判別ビットおよび前記第2データを読み出す工程と、
f)前記読み出しデータの最下位側からnビットを、前記工程e)において読み出した前記第2データの数値とする工程と、
を行い、
前記工程e)において読み出した前記判別ビットが0である場合には、前記工程f)の後に、
g)前記読み出しデータの非ゼロのビットを全てnビット上位へとシフトする工程
を行った後に、再び前記工程e)へ戻り、
前記工程e)において読み出した前記判別ビットが1である場合には、前記工程f)の後に、
h)前記読み出しデータを第3データとして出力する工程
を行う、データ処理方法。
【請求項6】
請求項1ないし請求項5のいずれか一項に記載のデータ処理方法であって、
前記工程a)、前記工程b)および前記工程c)の前に
p)時系列データである元データを取得する工程と、
q)最新の前記元データと、1つ前の時刻の前記元データとの差分である前記第1データを算出する工程と、
をさらに有する、データ処理方法。
【請求項7】
請求項5に記載のデータ処理方法であって、
前記工程a)、前記工程b)および前記工程c)の前に
p)時系列データである元データを取得する工程と、
q)最新の前記元データと、1つ前の時刻の前記元データとの差分である前記第1データを算出する工程と、
をさらに有し、
前記工程h)の後に、
r)出力した前記第3データを、1つ前の時刻の第4データと加算し、新たな前記第4データを算出する工程と、
を行う、データ処理方法。
【請求項8】
外部または内部に設けられた記憶部にデータを格納するデータ処理装置であって、
m*nビット長の第1データを、m個のnビット長の分割ブロックに分割し、前記分割ブロックのうち、格納すべき有効ブロックを判別する、分割処理部と、
前記有効ブロックを、前記記憶部に順に格納する、格納処理部と、
を有し、
前記分割処理部は、数値が非ゼロとなる最上位の前記分割ブロックと、数値が非ゼロとなる最上位の前記分割ブロックよりも下位の前記分割ブロックとを、前記有効ブロックとする、データ処理装置。
【請求項9】
請求項8に記載のデータ処理装置であって、
前記分割処理部は、
1つの前記第1データに対して、mビット長のイネーブルビットを含むイネーブル信号を1つ生成し、
最下位からp番目の前記分割ブロックが前記有効ブロックでない場合には、前記イネーブルビットの最下位からp番目の桁を0とし、
最下位からp番目の前記分割ブロックが前記有効ブロックである場合には、前記イネーブルビットの最下位からp番目の桁を1とする、データ処理装置。
【請求項10】
請求項8に記載のデータ処理装置であって、
前記格納処理部は、
前記有効ブロックのそれぞれに1ビット長の判別ビットを付与し、
1つの前記第1データに対する前記判別ビットと、前記有効ブロックと同じ数値を有するnビット長の第2データとを併せて、上位側から順に前記記憶部に格納し、
前記格納処理部は、
1つの前記第1データに対して前記有効ブロックが1つである場合、その前記有効ブロックに対応する前記判別ビットを1とし、
1つの前記第1データに対して前記有効ブロックが複数である場合、最下位の前記有効ブロックに対する前記判別ビットを1とし、その他の前記有効ブロックに対する前記判別ビットを0とする、データ処理装置。
【請求項11】
請求項10に記載のデータ処理装置であって、
前記記憶部から前記判別ビットおよび前記第2データを読み出して、前記第1データを復元した第3データを生成する、伸長処理部
をさらに有し、
前記伸長処理部は、
S)新たな読み出しデータとして、新たなm*nビット長のゼロデータを準備する工程と、
T)前記記憶部に格納された前記判別ビットおよび前記第2データを読み出す工程と、
U)前記読み出しデータの最下位側からnビットを、前記工程T)において読み出した前記第2データの数値とする工程と、
を行い、
前記工程T)において読み出した前記判別ビットが0である場合には、前記工程U)の後に、
V)前記読み出しデータの非ゼロのビットを全てnビット上位へとシフトする工程
を行った後に、再び前記工程T)へ戻り、
前記工程T)において読み出した前記判別ビットが0である場合には、前記工程U)の後に、
W)前記読み出しデータを出力する工程
を行う、データ処理装置。
【請求項12】
請求項8ないし請求項11のいずれか一項に記載のデータ処理装置であって、
時系列データであるm*nビット長の元データと、1つ前の時刻の前記元データとの差分である前記第1データを算出する、差分算出処理部
をさらに有する、データ処理装置。
【請求項13】
請求項11に記載のデータ処理装置であって、
時系列データであるm*nビット長の元データと、1つ前の時刻の前記元データとの差分である前記第1データを算出する、差分算出処理部と、
前記伸長処理部の出力した前記第3データに基づいて、前記元データを復元した第4データを算出する、加算処理部と、
をさらに有し、
前記加算処理部は、1つ前の時刻の前記第4データと、新たな前記第3データとを加算して、新たな第4データを算出する、データ処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを圧縮するためのデータ処理方法およびデータ処理装置に関する。
【背景技術】
【0002】
従来、多くの産業機器では、装置制御、監視、故障予知等の様々な用途でデータセンシングが行われている。近年では、センシングデバイス内の処理の多様化、高性能化および省電力化等の要求があり、センシングデバイスに、リコンフィグ可能なFPGA(Filed Programmable Gate Array)デバイスを搭載するケースが増えている。
【0003】
センシングデバイスの内部にセンシングデータを保存する場合、センシングデータを内部に保存するためのメモリ容量を大きく確保するのが難しい。また、センシングデータの容量を増加させるために、圧縮処理によってメモリ容量を削減する必要性が高まっている。
【0004】
従来のFPGAを用いたセンシングデータの圧縮方法は、例えば、特許文献1に記載されている。特許文献1には、ランレングス圧縮方法を用いたデータ圧縮方法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
所謂ランレングス圧縮方法では、同値が連続しやすいデータにおいては圧縮率が高い一方で、データ一致率が低い場合には圧縮率が低下するという問題がある。
【0007】
本発明は、このような事情に鑑みなされたものであり、新たなデータ圧縮のためのデータ処理技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するため、本願の第1発明は、データ処理方法であって、a)m*nビット長の第1データを、m個のnビット長の分割ブロックに分割する工程と、b)前記分割ブロックのうち、格納すべき有効ブロックを判別する工程と、c)前記有効ブロックを格納する工程と、を有し、前記工程b)において、数値が非ゼロとなる最上位の前記分割ブロックと、数値が非ゼロとなる最上位の前記分割ブロックよりも下位の前記分割ブロックとを、前記有効ブロックとする。
【0009】
本願の第2発明は、第1発明のデータ処理方法であって、前記工程b)において、1つの前記第1データに対して、mビット長のイネーブルビットを含むイネーブル信号を1つ生成し、最下位からp番目の前記分割ブロックが前記有効ブロックでない場合には、前記イネーブルビットの最下位からp番目の桁を0とし、最下位からp番目の前記分割ブロックが前記有効ブロックである場合には、前記イネーブルビットの最下位からp番目の桁を1とする。
【0010】
本願の第3発明は、第1発明または第2発明のデータ処理方法であって、前記工程c)は、c1)前記有効ブロックのそれぞれに1ビット長の判別ビットを付与する工程と、c2)前記判別ビットと、前記有効ブロックと同じ数値を有するnビット長の第2データとを併せて格納する工程と、を含む。
【0011】
本願の第4発明は、第3発明のデータ処理方法であって、前記工程c1)において、1つの前記第1データに対して前記有効ブロックが1つである場合、その前記有効ブロックに対応する前記判別ビットを1とし、1つの前記第1データに対して前記有効ブロックが複数である場合、最下位の前記有効ブロックに対する前記判別ビットを1とし、その他の前記有効ブロックに対する前記判別ビットを0とし、前記工程c2)において、
1つの前記第1データに対する前記判別ビットおよび前記第2データを、上位側から順に格納する。
【0012】
本願の第5発明は、第4発明のデータ処理方法であって、前記工程c)の後に、d)新たな読み出しデータとして、新たなm*nビット長のゼロデータを準備する工程と、e)格納された前記判別ビットおよび前記第2データを読み出す工程と、f)前記読み出しデータの最下位側からnビットを、前記工程e)において読み出した前記第2データの数値とする工程と、を行い、前記工程e)において読み出した前記判別ビットが0である場合には、前記工程f)の後に、g)前記読み出しデータの非ゼロのビットを全てnビット上位へとシフトする工程を行った後に、再び前記工程e)へ戻り、前記工程e)において読み出した前記判別ビットが1である場合には、前記工程f)の後に、h)前記読み出しデータを第3データとして出力する工程を行う。
【0013】
本願の第6発明は、第1発明ないし第5発明のいずれか一発明のデータ処理方法であって、前記工程a)、前記工程b)および前記工程c)の前にp)時系列データである元データを取得する工程と、q)最新の前記元データと、1つ前の時刻の前記元データとの差分である前記第1データを算出する工程と、をさらに有する。
【0014】
本願の第7発明は、第5発明のデータ処理方法であって、前記工程a)、前記工程b)および前記工程c)の前にp)時系列データである元データを取得する工程と、q)最新の前記元データと、1つ前の時刻の前記元データとの差分である前記第1データを算出する工程と、をさらに有し、前記工程h)の後に、r)出力した前記第3データを、1つ前の時刻の第4データと加算し、新たな前記第4データを算出する工程と、を行う。
【0015】
本願の第8発明は、外部または内部に設けられた記憶部にデータを格納するデータ処理装置であって、m*nビット長の第1データを、m個のnビット長の分割ブロックに分割し、前記分割ブロックのうち、格納すべき有効ブロックを判別する、分割処理部と、前記有効ブロックを、前記記憶部に順に格納する、格納処理部と、を有し、前記分割処理部は、数値が非ゼロとなる最上位の前記分割ブロックと、数値が非ゼロとなる最上位の前記分割ブロックよりも下位の前記分割ブロックとを、前記有効ブロックとする。
【0016】
本願の第9発明は、第8発明のデータ処理装置であって、前記分割処理部は、1つの前記第1データに対して、mビット長のイネーブルビットを含むイネーブル信号を1つ生成し、最下位からp番目の前記分割ブロックが前記有効ブロックでない場合には、前記イネーブルビットの最下位からp番目の桁を0とし、最下位からp番目の前記分割ブロックが前記有効ブロックである場合には、前記イネーブルビットの最下位からp番目の桁を1とする。
【0017】
本願の第10発明は、第8発明のデータ処理装置であって、前記格納処理部は、前記有効ブロックのそれぞれに1ビット長の判別ビットを付与し、1つの前記第1データに対する前記判別ビットと、前記有効ブロックと同じ数値を有するnビット長の第2データとを併せて、上位側から順に前記記憶部に格納し、前記格納処理部は、1つの前記第1データに対して前記有効ブロックが1つである場合、その前記有効ブロックに対応する前記判別ビットを1とし、1つの前記第1データに対して前記有効ブロックが複数である場合、最下位の前記有効ブロックに対する前記判別ビットを1とし、その他の前記有効ブロックに対する前記判別ビットを0とする。
【0018】
本願の第11発明は、第10発明のデータ処理装置であって、前記記憶部から前記判別ビットおよび前記第2データを読み出して、前記第1データを復元した第3データを生成する、伸長処理部をさらに有し、前記伸長処理部は、S)新たな読み出しデータとして、新たなm*nビット長のゼロデータを準備する工程と、T)前記記憶部に格納された前記判別ビットおよび前記第2データを読み出す工程と、U)前記読み出しデータの最下位側からnビットを、前記工程T)において読み出した前記第2データの数値とする工程と、を行い、前記工程T)において読み出した前記判別ビットが0である場合には、前記工程U)の後に、V)前記読み出しデータの非ゼロのビットを全てnビット上位へとシフトする工程を行った後に、再び前記工程T)へ戻り、前記工程T)において読み出した前記判別ビットが0である場合には、前記工程U)の後に、W)前記読み出しデータを出力する工程を行う。
【0019】
本願の第12発明は、第8発明ないし第11発明のいずれか一発明のデータ処理装置であって、時系列データであるm*nビット長の元データと、1つ前の時刻の前記元データとの差分である前記第1データを算出する、差分算出処理部をさらに有する。
【0020】
本願の第13発明は、第11発明のデータ処理装置であって、時系列データであるm*nビット長の元データと、1つ前の時刻の前記元データとの差分である前記第1データを算出する、差分算出処理部と、前記伸長処理部の出力した前記第3データに基づいて、前記元データを復元した第4データを算出する、加算処理部と、をさらに有し、前記加算処理部は、1つ前の時刻の前記第4データと、新たな前記第3データとを加算して、新たな第4データを算出する。
【発明の効果】
【0021】
本願の第1発明~第13発明によれば、上位側の桁が連続してゼロとなるデータを効率良く圧縮して格納することができる。
【0022】
特に、本願の第3発明、第4発明および第10発明によれば、1つの第1データに対する第2データの区切りが明確となる。
【0023】
特に、本願の第6発明、第7発明、第12発明および第13発明によれば、圧縮対象となるデータが時系列データの場合に、1つ前の時刻との差分を取ることにより、圧縮効率が向上する。すなわち、格納すべき第2データの数を低減できる。
【図面の簡単な説明】
【0024】
【
図1】第1実施形態に係るデータ処理装置の構成を示した図である。
【
図2】第1実施形態に係るデータ圧縮処理の流れを示したフローチャートである。
【
図3】第1実施形態に係るデータ圧縮処理の各段階におけるデータの一例を示した図である。
【
図4】第1実施形態に係るデータ圧縮処理における各段階におけるデータの具体例を示した図である。
【
図5】第1実施形態に係るデータ伸長処理の流れを示したフローチャートである。
【
図6】第1実施形態に係る格納データと、データ伸長処理の各段階におけるデータの一例を示した図である。
【
図7】第2実施形態に係るデータ処理装置の構成を示した図である。
【
図8】第2実施形態に係るデータ圧縮処理の流れを示したフローチャートである。
【
図9】第2実施形態に係るデータ圧縮処理の各段階におけるデータの一例を示した図である。
【
図10】第2実施形態に係るデータ圧縮処理における各段階におけるデータの具体例を示した図である。
【
図11】第2実施形態に係るデータ圧縮処理における各段階におけるデータの具体例を示した図である。
【
図12】第2実施形態に係るデータ伸長処理の流れを示したフローチャートである。
【
図13】第2実施形態に係る格納データと、データ伸長処理の各段階におけるデータの一例を示した図である。
【発明を実施するための形態】
【0025】
以下、本発明の実施形態について、図面を参照しつつ説明する。
【0026】
<1.第1実施形態>
<1-1.データ処理装置の構成>
図1は、本発明の一実施形態に係るデータ処理装置1の構成を示した図である。このデータ処理装置1は、センサ90から入力されるセンシングデータを圧縮処理して格納する装置である。データ処理装置1は、例えば、センサ90を含むセンシングデバイスに搭載されたFPGA(Filed Programmable Gate Array)によって実現される。
【0027】
データ処理装置1は、センサ90から入力されるセンシングデータDiを圧縮データとして後述する格納処理部15に格納することができる。本実施形態では、センシングデータDiは、アナログデータである。なお、センシングデータDiはデジタルデータであってもよい。また、データ処理装置1は、格納処理部15に格納した圧縮データを伸長し、出力データDoとして出力することができる。なお、出力データDoは、デジタルデータであってもよいし、アナログデータであってもよい。
【0028】
図1に示すように、データ処理装置1は、受信部11と、分割処理部13と、格納処理部15と、伸長処理部17と、送信部19と、記憶部20とを有する。本実施形態では、記憶部20は、データ処理装置1を構成するFPGAの内蔵RAMである。しかしながら、記憶部20は、データ処理装置1の外部に接続されたRAM等のメモリであってもよい。
【0029】
受信部11は、センサ90から入力されたセンシングデータDiを受信し、m×nビット長のデジタルデータに変換し、当該デジタルデータを第1データD1とする。具体的には、受信部11は、I2CやSPI等のプロトコルを解釈可能である。このため、これらのプロトコルで入力されるセンシングデータDiを解釈し、デジタルデータである第1データD1に変換する。そして、受信部11は、第1データD1を分割処理部13へと引き渡す。
【0030】
分割処理部13は、第1データD1をm個のnビット長の複数の分割ブロックDvに分割する。ここで、複数の分割ブロックDvはそれぞれ、第1データD1の最下位ビットから順に、nビット毎に第1分割ブロックDv.1、第2分割ブロックDv.2、…、第m分割ブロックDv.mと称する。なお、
図1中に各データの後に括弧内で記載されているm*n、n、1等は、そのデータのビット数を表している。
【0031】
分割処理部13は、m個の分割ブロックDv.1~Dv.mのうちいずれのデータが、格納処理部15に格納すべき有効ブロックであるか、格納しない非有効ブロックであるかを判別する。そして、分割処理部13は、1つの第1データD1に対して、mビット長のイネーブルビットを含むイネーブル信号Deを1つ生成する。なお、イネーブル信号Deは、イネーブルビットを全て含むビット長であればよく、mビット長であってもよいし、mビットよりも長いビット長を有してもよい。分割処理部13は、各分割ブロックDv.1~Dv.mと、イネーブル信号Deとを、格納処理部15に引き渡す。
【0032】
具体的には、分割処理部13は、分割ブロックDv.1~Dv.mを最上位から順に、数値がゼロであるか非ゼロであるかを判別する。そして、最上位の分割ブロックDv.mから順に、連続して数値がゼロとなる分割ブロックDvを非有効ブロックであると判断する。また、数値が非ゼロとなる最上位の分割ブロックDvと、当該分割ブロックDvよりも下位の分割ブロックDvとを、有効ブロックとする。
【0033】
例えば、m個の分割ブロックDv.1~Dv.mのうち、数値がゼロとなる最上位の分割ブロックDvが最下位からx番目の分割ブロックDv(第x分割ブロックDv.x)である場合(1≦x≦m)、最下位から連続するx個の分割ブロックDv.1~Dv.xを有効ブロックとする。また、(x+1)番目~m番目までの(m-x)個の分割ブロックDv.(x+1)~Dv.mを非有効ブロックとする。
【0034】
なお、分割処理部13は、第1データD1の数値がゼロである場合、すなわち、m個全ての分割ブロックDv.1~Dv.mの数値がゼロである場合、第1分割ブロックDv.1のみを有効ブロックとする。これにより、1つの第1データD1に対して、少なくとも1つの有効ブロックが指定される。
【0035】
仮に、第1データD1の数値がゼロである場合に、全ての分割ブロックDv.1~Dv.mを非有効ブロックとしてしまうと、当該第1データD1に対応する判別ビットDdおよび第2データD2が記憶されず、当該第1データD1がデータ伸長処理において復元されないという問題が生じる。本実施形態では、第1データD1の数値がゼロである場合でも、第1分割ブロックDv.1を有効ブロックとすることにより、当該第1データD1に対応するデータ(後述する判別ビットDdおよび第2データD2)が記憶部20に記憶されるため、このような第1データD1についても、データ伸長処理において復元される。
【0036】
イネーブル信号Deのイネーブルビットの各桁は、分割ブロックDv.1~Dv.mのそれぞれが有効ブロックであるか否かを示す。本実施形態では、イネーブル信号Deのイネーブルビット各桁は、対応する分割ブロックDv.1~Dv.mが有効ブロックである場合には1、非有効ブロックである場合には0の値を有する。具体的には、最下位からp番目の分割ブロックDv.pが非有効ブロックである場合には、イネーブルビットの最下位からp番目の桁を0とする。また、最下位からp番目の分割ブロックDv.pが有効ブロックである場合には、イネーブルビットの最下位からp番目の桁を1とする。
【0037】
格納処理部15は、分割ブロックDv.1~Dv.mのうち、有効ブロックを、1ビットの判別ビットDdとnビット長の第2データD2との組み合わせに変換して、記憶部20に格納する。これにより、記憶部20には、1ビットの判別ビットDdとnビット長の第2データD2とを組み合わせたn+1ビット長のデータ群が複数格納される。
【0038】
具体的には、格納処理部15は、有効ブロックを上位側から順にイネーブル信号Deを参照し、イネーブル信号Deが1である分割ブロックDvに判別ビットDdを付与して、判別ビットDdとともに第2データD2として格納する。このとき、1つの第1データD1について、最下位の第1分割ブロックDv.1に対応する判別ビットDdは1、その他の有効ブロックに対応する判別ビットDdは0が付与される。
【0039】
なお、判別ビットDdの数値は0と1が逆であっても良い。また、格納処理部15は、有効ブロックを下位側から順に第2データD2として格納してもよい。その場合、判別ビットDdの数値は、1~m個の有効ブロックのうち、再上位の有効ブロックに対応する判別ビットDdを、その他の有効ブロックに対応する判別ビットDdと異なる数値とする。
【0040】
伸長処理部17は、記憶部20に記憶された判別ビットDdと第2データD2とを順に読み出すことにより、第1データD1を復元した第3データD3を生成する。そして、伸長処理部17は、送信部19に第3データD3を引き渡す。伸長処理部17における伸長処理の詳細については、後述する。
【0041】
送信部19は、データ処理装置1の外部へ、出力データDoを出力する。出力データDoは、第3データD3そのものであってもよいし、第3データD3を所望のデータ形式へ変換したものであってもよい。
【0042】
<1-2.データ圧縮処理の流れ>
次に、第1実施形態に係るデータ処理装置1におけるデータ圧縮処理について、
図2~
図4を参照しつつ説明する。
図2は、第1実施形態のデータ圧縮処理の流れを示したフローチャートである。
図3は、第1実施形態のデータ圧縮処理の各段階におけるデータの一例を示した図である。なお、
図3の例では、m=4としている。
【0043】
このデータ圧縮処理では、データ処理装置1は、m*nビット長の第1データD1を、複数組の判別ビットDd(1ビット長)および第2データD2(nビット長)のデータ群とに変換して、記憶部20に格納する。
【0044】
図2に示すように、センシングデータDiの圧縮処理では、まず、受信部11が、センシングデータDiを受信する(ステップS11)。そして、受信部11は、センシングデータDiをm*nビット長の第1データD1へと変換し、分割処理部13へと引き渡す(ステップS12)。
【0045】
図3の例には、4×nビット長の第1データD1と、nビット長の4つの分割ブロックDv.1,Dv.2,Dv.3,Dv.4と、4ビット長のイネーブル信号Deとが示されている。また、
図3の例には、記憶部20に記憶される格納データとして、判別ビットDdと第2データD2との組み合わせが複数示されている。
【0046】
なお、
図3中、これらの各データの数値を、data_k_zの形式で示している。ここで、kは、複数の第1データD1の順番を示す値であり、zは、第1データD1をnビット毎に分割した分割ブロックDvにおいて下位側から何番目の分割ブロックDvの数値であるかを示すものである。すなわち、data_k_zは、k番目の第1データD1をnビット毎に分割した下位側からz番目の分割ブロックDvの数値を示す。
【0047】
すなわち、
図3において、data_k_1は、第1データD1の最下位側から1~n番目のnビットのデータ、data_k_2は、第1データD1の最下位側からn+1~2n番目のnビットのデータ、data_k_3は、第1データD1の最下位側から2n+1~3n番目のnビットのデータ、data_k_4は、第1データD1の最下位側から3n+1~4n番目のnビットのデータを示している。
【0048】
次に、分割処理部13は、m*nビット長の第1データD1を、m個のnビット長の分割ブロックDv.1~Dv.mに分割する(ステップS13)。
【0049】
具体的には、第1データD1の最下位側からnビット毎に、第1分割ブロックDv.1、第2分割ブロックDv.2、…、第m分割ブロックDv.mとする。すなわち、第1分割ブロックDv.1は、第1データD1の最下位側から1~n番目のnビットのデータであり、第2分割ブロックDv.2は、第1データD1の最下位側からn+1~2n番目のnビットのデータであり、第m分割ブロックDv.mは、第1データD1の最下位側から(m-1)*n+1~m*n番目のnビットのデータである。
【0050】
図3の例では、第1分割ブロックDv.1はdata_k_1であり、第2分割ブロックDv.2はdata_k_2であり、第3分割ブロックDv.3はdata_k_3であり、第4分割ブロックDv.4はdata_k_4となる。
【0051】
分割処理部13は、続いて、有効ブロックを判別し、各分割ブロックDv.1~Dv.mのうち、どの分割ブロックDvが有効ブロックであるかを示すイネーブル信号Deを生成する(ステップS14)。そして、分割処理部13は、分割ブロックDv.1~Dv.mとイネーブル信号Deとを格納処理部15へと引き渡す。
【0052】
図3の例では、分割ブロックDv.1~Dv.4の数が4個であるため、イネーブル信号Deに含まれるイネーブルビットは4ビット長である。すなわち、イネーブル信号Deはビット長の全てがイネーブルビットである。また、
図3の例では、4ビット長のイネーブルビットの各桁の数値は、enable_k_1,enable_k_2,enable_k_3,enable_k_4で示されている。enable_k_1,enable_k_2,enable_k_3,enable_k_4はそれぞれ、対応する分割ブロックDv.1~Dv.4が有効ブロックである場合は1、対応する分割ブロックDv.1~Dv.4が非有効ブロックである場合は0である。
【0053】
その後、格納処理部15は、分割ブロックDv.1~Dv.mとイネーブル信号Deとに基づいて、判別ビットDdを生成し、判別ビットDdおよび第2データD2を記憶部20に格納する(S15)。
【0054】
具体的には、格納処理部15は、イネーブル信号Deのイネーブルビットを参照して、分割ブロックDv.1~Dv.mのうち、有効ブロックのみを第2データD2として記憶部20に格納する。このとき、1つの第1データD1に対応する第2データD2の数が有効ブロックの数によって異なるため、第1データD1毎の区切りを判別するために、各第2データD2に対して判別ビットDdを付与する。
【0055】
本実施形態では、1つの第1データD1に対応する1~m個の分割ブロックDvを、上位側から順に、第2データD2として記憶部20に格納する。このとき、各第2データD2は、判別ビットDdとともに格納される。すなわち、記憶部20には、1ビット長の判別ビットDdと、nビット長の第2データD2とが1組のデータ群として格納される。
【0056】
また、1つの第1データD1に対応する1~m個の第2データD2のうち、最後に格納する第2データD2に対応する判別ビットDdの数値を1とし、その他の判別ビットDdの数値を0としている。すなわち、本実施形態のように、上位側の分割ブロックDvから順に第2データD2として格納する場合には、最後に格納する第1分割ブロックDv.1に対応する判別ビットDdの数値を1とする。
【0057】
図3の例では、1番目(k=1)の第1データD1の有効ブロックが第1分割ブロックDv.1(数値がdata_1_1)と第2分割ブロックDv.2(数値がdata_1_2)との2つであり、2番目(k=2)の第1データD1の有効ブロックが第1分割ブロックDv.1(数値がdata_2_1)と第2分割ブロックDv.2(数値がdata_2_2)と第3分割ブロックDv.3(数値がdata_2_3)の3つである場合の格納データの例が示されている。なお、
図3において、格納データの枠外右側には、何番目の第1データD1のどの分割ブロックDvに対応するかが、参考のために記載されている。
【0058】
この例では、各段に、判別ビットDdと、第2データD2とが1組のデータ群として格納されている。1番目の第2データD2は、1番目(k=1)の第1データD1の第2分割ブロックDv.2(数値がdata_1_2)である。2番目の第2データD2は、1番目(k=1)の第1データD1の第1分割ブロックDv.1(数値がdata_1_1)となる。3番目の第2データD2は、2番目(k=2)の第1データD1の第3分割ブロックDv.3(数値がdata_2_3)となる。4番目の第2データD2は、2番目(k=2)の第1データD1の第2分割ブロックDv.2(数値がdata_2_2)となる。5番目の第2データD2は、2番目(k=2)の第1データD1の第1分割ブロックDv.1(数値がdata_2_1)となる。
【0059】
そして、判別ビットDdは、1番目(k=1)の第1データD1に対応する2つの第2データD2について、順に、0,1となっており、2番目(k=2)の第1データD1に対応する3つの第2データD2について、順に、0,0,1となっている。すなわち、各第1データD1に対して、最後に格納する第2データD2の判別ビットDdが1、それ以外の第2データD2の判別ビットDdが0となっている。
【0060】
1つのセンシングデータDiに対して、ステップS11~S15が完了すると、データ処理装置1は、センサ90におけるセンシングが終了したか否かを判断する(ステップS16)。センシングが終了していないと判断すると(ステップS16:No)、データ処理装置1は、ステップS11へ戻り、次のセンシングデータDiに対して、ステップS11~S15を行う。一方、センシングが終了したと判断すると(ステップS16:Yes)、データ処理装置1は、データ圧縮処理を終了する。
【0061】
図4は、第1実施形態のデータ圧縮処理の各段階におけるデータ(第1データD1、分割データDv.1~Dv.4、イネーブル信号De、判別ビットDdおよび第2データD2)の具体例を示した図である。
図4の例では、第1データD1が16ビットであり、m=4、n=4としている。
【0062】
図4の例では、第1データD1が、1番目(k=1)から4番目(k=4)まで順に、
k=1:008a(16進法)/0000000001001010(2進法)
k=2:0f03(16進法)/0000111100000011(2進法)
k=3:0000(16進法)/0000000000000000(2進法)
k=4:10c5(16進法)/0001000011000101(2進法)
となっている。
【0063】
このため、1番目(k=1)の分割ブロックDv.4,Dv.3,Dv.2,Dv,1は上位側から順に、0000,0000,0100,1010である。第4分割ブロックDv.4および第3分割ブロックDv.3は、数値が0であるため非有効ブロックである。また、第2分割ブロックDv.2は数値が非ゼロであるため、第2分割ブロックDv.2および第1分割ブロックDv.1が有効ブロックとなる。したがって、1番目(k=1)のイネーブル信号Deは、下位側から4桁目および3桁目が0、下位側から2桁目および1桁目が1となる。
【0064】
2番目(k=2)の分割ブロックDv.4,Dv.3,Dv.2,Dv,1は上位側から順に、0000,1111,0000,0011である。第4分割ブロックDv.4は、数値が0であるため非有効ブロックである。また、第3分割ブロックDv.3は数値が非ゼロであるため、第3分割ブロックDv.3と、それよりも下位側の第2分割ブロックDv.2および第1分割ブロックDv.1とが有効ブロックとなる。したがって、2番目(k=2)のイネーブル信号Deは、下位側から4桁目が0、下位側から3桁目、2桁目および1桁目が1となる。
【0065】
3番目(k=3)の分割ブロックDv.4,Dv.3,Dv.2,Dv,1は上位側から順に、0000,0000,0000,0000である。全ての分割ブロックDv.4,Dv.3,Dv.2,Dv,1の数値が0であるため、最も下位側の第1分割ブロックDv.1のみが有効ブロックとなり、その他の分割ブロックDv.4~Dv.2は非有効ブロックとなる。したがって、3番目(k=3)のイネーブル信号Deは、下位側から4桁目、3桁目および2桁目が0、下位側から1桁目が1となる。
【0066】
4番目(k=4)の分割ブロックDv.4,Dv.3,Dv.2,Dv,1は上位側から順に、0001,0000,1100,0101である。最上位の第4分割ブロックDv.4の数値が非ゼロであるため、全ての分割ブロックDv.4,Dv.3,Dv.2,Dv,1が有効ブロックとなる。したがって、4番目(4=3)のイネーブル信号Deは、4桁全てが1となる。
【0067】
このような分割ブロックDv.4,Dv.3,Dv.2,Dv,1およびイネーブル信号Deが入力された場合、格納処理部15は、記憶部20に、1ビットの判別ビットDdと4ビットの第2データD2のデータ群を、1番目(k=1)の第1データD1について2組、2番目(k=2)の第1データD1について3組、3番目(k=3)の第1データD1について1組、4番目(k=4)の第1データD1について4組格納する。すなわち、この場合、4つの第1データD1に対して10組の判別ビットDdおよび第2データD2が記憶部20に格納される。
【0068】
データ圧縮処理を行わずに4つの第1データD1をそのまま格納する場合には、16ビット×4つで64ビット分のデータが記憶部20に格納される。これに対し、本実施形態のデータ圧縮処理を行った場合、
図4の例では、5ビット×10組で50ビット分のデータが記憶部20に格納される。すなわち、記憶部20に格納すべきデータ量を圧縮することができている。
【0069】
このように、第1実施形態に係るデータ圧縮処理を用いることにより、格納すべきデータ量を小さくすることができる。特に、第1データD1の上位側の桁が0が連続する場合、格納すべきデータ量を特に小さくすることができる。
【0070】
<1-3.データ伸長処理の流れ>
続いて、第1実施形態に係るデータ処理装置1におけるデータ伸長処理について、
図5および
図6を参照しつつ説明する。
図5は、第1実施形態のデータ伸長処理の流れを示したフローチャートである。
図6は、第1実施形態に係る、記憶部20に格納された格納データと、データ伸長処理の各段階におけるデータの一例を示した図である。なお、
図6の例は、
図3の格納データ例に対応しており、m=4としている。
【0071】
このデータ伸長処理では、データ処理装置1は、記憶部20に格納された複数組の判別ビットDd(1ビット長)および第2データD2(nビット長)のデータ群を読み出して、第1データD1(m*nビット長)を復元した第3データD3(m*nビット長)を生成する。
【0072】
図5に示すように、データ伸長処理においては、まず、伸長処理部17が、新たなデータ読み出し開始時に、第1データD1と同じビット長(m*nビット長)のゼロデータを第3データD3の仮データとして準備する(ステップS21)。
【0073】
次に、伸長処理部17は、記憶部20から、判別ビットDdおよび第2データD2のデータ群を1組読み出す(ステップS22)。そして、伸長処理部17は、読み出した第2データD2を、第3データD3の仮データの最下位側から1~n桁目に入力する。
【0074】
続いて、伸長処理部17は、ステップS22において読み出した判別ビットDdから、ステップS22で読み出した第2データD2が最終ブロックであるか否かを判別する(ステップS23)。判別ビットDdが0である場合、伸長処理部17は、最終ブロックでないと判断し(ステップS23:No)、ステップS24へと進み、第3データD3の仮データの各桁をnビット分上位側へシフトする(ステップS24)。その後、伸長処理部17は、ステップS22へと進み、次の判別ビットDdおよび第2データD2を読み出す。
【0075】
一方、判別ビットDdが1である場合、伸長処理部17は、最終ブロックであると判断し(ステップS23:Yes)、仮データであった第3データD3を、最終的な第3データD3として、送信部19へと出力する(ステップS25)。その後、送信部19は、データ処理装置1の外部へ、第3データD3に基づいて出力データDoを出力する。なお、出力データDoは、第3データD3そのものであってもよいし、第3データD3を所望のデータ形式へ変換したものであってもよい。
【0076】
以下では、
図6の例を用いて、本実施形態のデータ伸長処理における、具体的な第3データD3の生成方法を示す。
図6の上部に示すように、
図6の例では、記憶部20に、1番目(k=1)の第1データD1に対応する2つの第2データD2(data_1_2,data_1_1)と、2番目(k=1)の第1データD1に対応する3つの第2データD2(data_2_3,data_2_2,data_2_1)が格納されている。
【0077】
図6の例では、1回目のステップS21でゼロデータである第3データD3の仮データが準備される。その後、1回目のステップS22で、第2データD2としてdata_1_2が読み出される。このため、第3データD3の仮データの最下位側から1~n桁目がdata_1_2となる。
【0078】
続いて、ステップS23において、1回目のステップS22で読み出された判別ビットDdが0であるため、伸長処理部17は、最終ブロックではないと判断し、第3データD3の仮データをシフトする(ステップS24)。これにより、第3データD3の仮データの最下位側からn+1~2n桁目がdata_1_2となり、最下位側から1~n桁目が0となる。
【0079】
そして、2回目のステップS22で、第2データD2としてdata_1_1が読み出される。このため、第3データD3の仮データの最下位側からn+1~2n桁目がdata_1_2、最下位側から1~n桁目がdata_1_1となる。
【0080】
続いて、ステップS23において、2回目のステップS22で読み出された判別ビットDdが1であるため、伸長処理部17は、最終ブロックであると判断し、現状の第3データD3を最終データとして出力する(ステップS25)。これにより、1番目(k=1)の第1データD1を復元した第3データD3が出力される。
【0081】
第3データD3の出力後、2回目のステップS21でゼロデータである第3データD3の仮データが準備される。その後、3回目のステップS22で、第2データD2としてdata_2_3が読み出される。このため、第3データD3の仮データの最下位側から1~n桁目がdata_2_3となる。
【0082】
続いて、ステップS23において、3回目のステップS22で読み出された判別ビットDdが0であるため、伸長処理部17は、最終ブロックではないと判断し、第3データD3の仮データをシフトする(ステップS24)。これにより、第3データD3の仮データの最下位側からn+1~2n桁目がdata_2_3となり、最下位側から1~n桁目が0となる。
【0083】
その後、4回目のステップS22で、第2データD2としてdata_2_2が読み出される。このため、第3データD3の仮データの最下位側からn+1~2n桁目がdata_2_3、最下位側から1~n桁目がdata_2_2となる。
【0084】
続いて、ステップS23において、4回目のステップS22で読み出された判別ビットDdが0であるため、伸長処理部17は、最終ブロックではないと判断し、第3データD3の仮データをシフトする(ステップS24)。これにより、第3データD3の仮データの最下位側から2n+1~3n桁目がdata_2_3となり、最下位側からn+1~2n桁目がdata_2_2となり、最下位側から1~n桁目が0となる。
【0085】
その後、5回目のステップS22で、第2データD2としてdata_2_1が読み出される。このため、第3データD3の仮データの最下位側から2n+1~3n桁目がdata_2_3、最下位側からn+1~2n桁目がdata_2_2、最下位側から1~n桁目がdata_2_1となる。
【0086】
続いて、ステップS23において、5回目のステップS22で読み出された判別ビットDdが1であるため、伸長処理部17は、最終ブロックであると判断し、現状の第3データD3を最終データとして出力する(ステップS25)。これにより、2番目(k=2)の第1データD1を復元した第3データD3が出力される。
【0087】
<2.第2実施形態>
<2-1.データ処理装置の構成>
図7は、本発明の第2実施形態に係るデータ処理装置1Aの構成を示した図である。データ処理装置1Aは、センサ90から入力される時系列のセンシングデータDiを圧縮データとして格納処理部15Aに格納する。
【0088】
図7に示すように、本実施形態のデータ処理装置1Aは、受信部11Aと、差分算出処理部12Aと、分割処理部13Aと、格納処理部15Aと、伸長処理部17Aと、加算処理部18Aと、送信部19Aと、記憶部20Aとを有する。なお、以下では、第1実施形態と同様の事項については、説明を省略する。
【0089】
受信部11Aは、センサ90から入力されたセンシングデータDiを定期的に受信し、m×nビット長のデジタルデータに変換し、時系列データである当該デジタルデータを元データD0とする。そして、受信部11Aは、元データD0を差分算出処理部12Aへと引き渡す。
【0090】
差分算出処理部12Aは、最新の元データD0と、1つ前の時刻の元データD0との差分を算出し、当該差分の絶対値を示す第1データD1と、当該差分の正負を示す符号ビットDsとを生成する。具体的には、第1データD1は、最新の元データD0から、1つ前の時刻の元データD0を差し引いたものである。そして、差分算出処理部12Aは、第1データD1および符号ビットDsを、分割処理部13Aへと引き渡す。
【0091】
第1データD1のビット長は、元データD0のビット長と同じm*nビット長である。符号ビットDsは、算出した差分の正負を示すデータである。本実施形態では、算出した差分が正の数の場合、符号ビットDsは0であり、算出した差分が負の数の場合、符号ビットDsは1である。
【0092】
なお、差分算出処理部12Aに初めて(1回目に)元データD0が入力された場合には、第1データD1を、元データD0と同じ数値とするとともに、符号ビットDsを「正」を示す値(本実施形態では0)とする。
【0093】
分割処理部13Aは、第1データD1をm個のnビット長の複数の分割ブロックDvに分割する。ここで、複数の分割ブロックDvはそれぞれ、第1データD1の最下位ビットから順に、nビット毎に第1分割ブロックDv.1、第2分割ブロックDv.2、…、第m分割ブロックDv.mと称する。
【0094】
分割処理部13Aは、m個の分割ブロックDv.1~Dv.mのうちいずれのデータが、記憶部20Aに格納すべき有効ブロックであるか、格納しない非有効ブロックであるかを判別する。そして、分割処理部13Aは、1つの第1データD1に対して、mビット長のイネーブルビットを含むイネーブル信号Deを1つ生成する。分割処理部13Aは、各分割ブロックDv.1~Dv.mと、イネーブル信号Deと、差分算出処理部12Aの生成した符号ビットDsとを、格納処理部15Aに引き渡す。
【0095】
具体的には、分割処理部13Aは、第1実施形態の分割処理部13と同様に、最上位の分割ブロックDv.mから順に、連続して数値がゼロとなる分割ブロックDvを非有効ブロックであると判断する。また、数値が非ゼロとなる最上位の分割ブロックDvと、当該分割ブロックDvよりも下位の分割ブロックDvとを、有効ブロックとする。また、分割処理部13Aは、第1データD1の数値がゼロである場合、すなわち、m個全ての分割ブロックDv.1~Dv.mの数値がゼロである場合、第1分割ブロックDv.1のみを有効ブロックとする。
【0096】
イネーブル信号Deのイネーブルビットの各桁は、分割ブロックDv.1~Dv.mのそれぞれが有効ブロックであるか否かを示す。本実施形態では、イネーブル信号Deのイネーブルビット各桁は、対応する分割ブロックDv.1~Dv.mが有効ブロックである場合には1、非有効ブロックである場合には0の値を有する。
【0097】
格納処理部15Aは、分割ブロックDv.1~Dv.mのうち、有効ブロックを、1ビットの判別ビットDdと、符号ビットDsと、nビット長の第2データD2との組み合わせに変換して、記憶部20Aに格納する。これにより、記憶部20Aには、1ビットの判別ビットDd、1ビットの符号ビットDsおよびnビット長の第2データD2を組み合わせたn+2ビット長のデータ群が複数格納される。
【0098】
具体的には、格納処理部15Aは、上位側から順にイネーブル信号Deを参照し、イネーブル信号Deが1である分割ブロックDvに判別ビットDdを付与して、判別ビットDdおよび符号ビットDsとともに第2データD2として格納する。
【0099】
伸長処理部17Aは、記憶部20Aに記憶された判別ビットDd、符号ビットDsおよび第2データD2を順に読み出すことにより、読み出しデータとして、第1データD1を復元した第3データD3を生成する。伸長処理部17Aにおける伸長処理は、第1実施形態の伸長処理部17Aと同様に行う。そして、伸長処理部17Aは、第3データD3と、記憶部20Aから読み出した符号ビットDsとを、加算処理部18Aへ引き渡す。
【0100】
加算処理部18Aは、伸長処理部17Aから引き渡された第3データD3を、符号ビットDsを参照し、1つ前の時刻の第4データD4と加算または減算し、新たな第4データD4を算出する。第4データD4は、最終出力データである。具体的には、第3データD3とともに引き渡された符号ビットDsが「正」を示す数値である場合には、第3データD3と、1つ前の時刻の第4データD4とを加算して、新たな第4データD4とする。一方、第3データD3とともに引き渡された符号ビットDsが「負」を示す数値である場合には、1つ前の時刻の第4データD4から、第3データD3を減算して、新たな第4データD4とする。
【0101】
送信部19Aは、データ処理装置1Aの外部へ、出力データDoを出力する。出力データDoは、第4データD4そのものであってもよいし、第4データD4を所望のデータ形式へ変換したものであってもよい。
【0102】
<2-2.データ圧縮処理の流れ>
次に、第2実施形態に係るデータ処理装置1Aにおけるデータ圧縮処理について、
図8~
図9を参照しつつ説明する。
図8は、第2実施形態のデータ圧縮処理の流れを示したフローチャートである。
図9は、第1実施形態のデータ圧縮処理の各段階におけるデータの一例を示した図である。なお、
図9の例では、m=4としている。
【0103】
このデータ圧縮処理では、データ処理装置1Aは、m*nビット長の第1データD1を、複数組の判別ビットDd(1ビット長)、符号ビットDs(1ビット長)および第2データD2(nビット長)のデータ群とに変換して、記憶部20Aに格納する。
【0104】
図8に示すように、センシングデータDiの圧縮処理では、まず、受信部11Aが、センシングデータDiを受信する(ステップS31)。そして、受信部11Aは、センシングデータDiをm*nビット長の元データD0へと変換し、差分算出処理部12Aへと引き渡す(ステップS32)。
【0105】
図9の例には、4×nビット長の元データD0および第1データD1と、nビット長の4つの分割ブロックDv.1,Dv.2,Dv.3,Dv.4と、1ビット長の符号ビットDsと、4ビット長のイネーブル信号Deとが示されている。また、
図3の例には、記憶部20に記憶される格納データとして、判別ビットDd、符号ビットDsおよび第2データD2との組み合わせが複数示されている。
【0106】
なお、
図9中、これらの各データの数値を、data0_k_zや、data_k_zの形式で示している。ここで、kは、複数の元データD0または第1データD1の順番を示す値であり、zは、元データD0または第1データD1をnビット毎に分割した分割ブロックDvにおいて下位側から何番目の分割ブロックDvの数値であるかを示すものである。
【0107】
ステップS32に続いて、差分算出処理部12Aは、ステップS33の差分算出工程を行う。差分算出処理部12Aは、1回目のステップS33では、1つ前の時刻の元データD0が存在しないため、第1データD1の数値を元データD0の数値と同じとし、符号ビットDsを「正」を示す0とする。
【0108】
また、差分算出処理部12Aは、2回目以降のk回目のステップS33では、現在時刻(k回目)における元データD0と、1つ前の時刻(k-1回目)における元データD0との差分を算出する。具体的には、現在時刻(k回目)における元データD0から、1つ前の時刻(k-1回目)における元データD0を差し引いて差分を算出する。そして、算出した当該差分の絶対値を第1データD1の数値とし、当該差分の正負に基づいて符号ビットDsを生成する(ステップS33)。このとき、本実施形態では、差分が正の値である場合には符号ビットDsを0とし、差分が負の値である場合には符号ビットDsを1とする。その後、差分算出処理部12Aは、分割処理部13Aに、第1データD1と符号ビットDsとを引き渡す。
【0109】
なお、
図9において、現在時刻(k回目)の元データD0の最下位側から1~n番目のnビットの数値をdata0_k_1、最下位側からn+1~2n番目のnビットの数値をdata0_k_2、最下位側から2n+1~3n番目のnビットの数値をdata0_k_3、最下位側から3n+1~n番目のnビットの数値をdata0_k_4としている。
【0110】
同様に、
図9において、1つ前の時刻(k-1回目)の元データD0の最下位側から1~n番目のnビットの数値をdata0_k-1_1、最下位側からn+1~2n番目のnビットの数値をdata0_k-1_2、最下位側から2n+1~3n番目のnビットの数値をdata0_k-1_3、最下位側から3n+1~n番目のnビットの数値をdata0_k-1_4としている。
【0111】
図9において、k回目のステップS33で算出した第1データD1の最下位側から1~n番目のnビットの数値をdata_k_1、最下位側からn+1~2n番目のnビットの数値をdata_k_2、最下位側から2n+1~3n番目のnビットの数値をdata_k_3、最下位側から3n+1~n番目のnビットの数値をdata_k_4としている。また、
図9において、k回目のステップS33で生成した符号ビットDsの数値をpnsign_kとしている。
【0112】
次に、分割処理部13Aは、m*nビット長の第1データD1を、m個のnビット長の分割ブロックDv.1~Dv.mに分割する(ステップS34)。
【0113】
具体的には、第1データD1の最下位側からnビット毎に、第1分割ブロックDv.1、第2分割ブロックDv.2、…、第m分割ブロックDv.mとする。
図9の例では、第1分割ブロックDv.1はdata_k_1であり、第2分割ブロックDv.2はdata_k_2であり、第3分割ブロックDv.3はdata_k_3であり、第4分割ブロックDv.4はdata_k_4となる。
【0114】
分割処理部13Aは、続いて、有効ブロックを判別し、各分割ブロックDv.1~Dv.mのうち、どの分割ブロックDvが有効ブロックであるかを示すイネーブル信号Deを生成する(ステップS35)。そして、分割処理部13Aは、分割ブロックDv.1~Dv.mとイネーブル信号Deとを、符号ビットDsとともに格納処理部15Aへと引き渡す。
【0115】
図9の例では、分割ブロックDvの数が4個であるため、イネーブル信号Deに含まれるイネーブルビットは4ビット長である。すなわち、イネーブル信号Deはビット長の全てがイネーブルビットである。また、
図3の例では、4ビット長のイネーブルビットの各桁の数値は、enable_k_1,enable_k_2,enable_k_3,enable_k_4で示されている。enable_k_1,enable_k_2,enable_k_3,enable_k_4はそれぞれ、対応する分割ブロックDv.1~Dv.4が有効ブロックである場合は1、対応する分割ブロックDv.1~Dv.4が非有効ブロックである場合は0である。
【0116】
その後、格納処理部15Aは、分割ブロックDv.1~Dv.mとイネーブル信号Deとに基づいて、判別ビットDdを生成し、判別ビットDd、符号ビットDsおよび第2データD2を記憶部20に格納する(ステップS36)。
【0117】
具体的には、格納処理部15は、イネーブル信号Deのイネーブルビットを参照して、分割ブロックDv.1~Dv.mのうち、有効ブロックのみを第2データD2として記憶部20に格納する。このとき、1つの第1データD1に対応する第2データD2の数が有効ブロックの数によって異なるため、第1データD1毎の区切りを判別するために、各第2データD2に対して判別ビットDdを付与する。そして、判別ビットDdと、符号ビットDsとともに、第2データD2が記憶部20に格納される。すなわち、記憶部20には、1ビット長の判別ビットDdと、1ビット長の符号ビットDsと、nビット長の第2データD2とが1組のデータ群として格納される。
【0118】
図9の例では、1番目(k=1)の第1データD1の有効ブロックが第1分割ブロックDv.1(数値がdata_1_1)と第2分割ブロックDv.2(数値がdata_1_2)と第3分割ブロックDv.3(数値がdata_1_3)の3つであり、2番目(k=2)の第1データD1の有効ブロックが第1分割ブロックDv.1(数値がdata_2_1)と第2分割ブロックDv.2(数値がdata_2_2)の2つであり、2番目(k=2)の符号ビットDsが「負」を示す1である場合の格納データの例が示されている。
【0119】
この例では、各段に、判別ビットDdと、符号ビットDsと、第2データD2とが1組のデータ群として格納されている。1番目の第2データD2は、1番目(k=1)の第1データD1の第3分割ブロックDv.3(数値がdata_1_3)である。2番目の第2データD2は、1番目(k=1)の第1データD1の第2分割ブロックDv.2(数値がdata_1_2)である。3番目の第2データD2は、1番目(k=1)の第1データD1の第1分割ブロックDv.1(数値がdata_1_1)となる。
【0120】
4番目の第2データD2は、2番目(k=2)の第1データD1の第2分割ブロックDv.2(数値がdata_2_2)となる。5番目の第2データD2は、2番目(k=2)の第1データD1の第1分割ブロックDv.1(数値がdata_2_1)となる。
【0121】
そして、判別ビットDdは、1番目(k=1)の第1データD1に対応する3つの第2データD2について、順に、0,0,1となっており、2番目(k=2)の第1データD1に対応する2つの第2データD2について、順に、0,1となっている。すなわち、各第1データD1に対して、最後に格納する第2データD2の判別ビットDdが1、それ以外の第2データD2の判別ビットDdが0となっている。
【0122】
また、符号ビットDsは、1番目(k=1)の第1データD1に対応する3つの第2データD2については、初めての第1データD1であるため、いずれも「正」を示す0となっている。また、2番目(k=2)の第1データD1に対応する2つの第2データD2に対応する符号ビットDsは、いずれも「負」を示す1となっている。このように、同じ第1データD1に対応する符号ビットDsは、同じ数値となる。
【0123】
1つのセンシングデータDiに対して、ステップS31~S36が完了すると、データ処理装置1Aは、センサ90におけるセンシングが終了したか否かを判断する(ステップS37)。センシングが終了していないと判断すると(ステップS37:No)、データ処理装置1Aは、ステップS31へ戻り、次のセンシングデータDiに対して、ステップS31~S36を行う。一方、センシングが終了したと判断すると(ステップS37:Yes)、データ処理装置1Aは、データ圧縮処理を終了する。
【0124】
図10および
図11は、第2実施形態のデータ圧縮処理の各段階におけるデータ(元データD0、第1データD1、分割データDv.1~Dv.4、符号ビットDs、イネーブル信号De、判別ビットDdおよび第2データD2)の具体例を示した図である。
図10および
図11の例では、元データD0が16ビットであり、m=4、n=4としている。
【0125】
図10の例では、元データD0が、1番目(k=1)から4番目(k=4)まで順に、
k=1:534a(16進法)/0101001101001010(2進法)
k=2:5323(16進法)/0101001100100011(2進法)
k=3:532c(16進法)/0101001100101100(2進法)
k=4:5315(16進法)/0101001100010101(2進法)
となっている。
【0126】
そして、第1データD1は、1番目(k=1)から4番目(k=4)まで順に、
k=1:534a(16進法)/0101001101001010(2進法)
k=2:0027(16進法)/0000000000100111(2進法)
k=3:0009(16進法)/0000000000001001(2進法)
k=4:0017(16進法)/0000000000010111(2進法)
符号ビットDsは、1番目(k=1)から4番目(k=4)まで順に、
k=1:0
k=2:1
k=3:0
k=4:1
となっている。
【0127】
k=1において、第1データD1は、元データD0と同じ数値であり、符号ビットDsは「正」を示す0となっている。k=2の第1データD1は、k=2の元データD0からk=1の元データD0を減算した結果の絶対値である。また、k=2の元データD0の数値がk=1の元データD0の数値よりも小さいため、符号ビットDsは「負」を示す1となっている。k=3の第1データD1は、k=3の元データD0からk=2の元データD0を減算した結果の絶対値である。また、k=3の元データD0の数値がk=2の元データD0の数値よりも大きいため、符号ビットDsは「正」を示す0となっている。k=4の第1データD1は、k=4の元データD0からk=3の元データD0を減算した結果の絶対値である。また、k=4の元データD0の数値がk=3の元データD0の数値よりも小さいため、符号ビットDsは「負」を示す1となっている。
【0128】
図10の例では、1番目(k=1)の分割ブロックDv.4,Dv.3,Dv.2,Dv,1はいずれも非ゼロである。このため、全ての分割ブロックDv.1~4が有効ブロックとなる。したがって、1番目(k=1)のイネーブル信号Deは、4桁全てが1となる。
【0129】
2番目(k=2)の分割ブロックDv.4,Dv.3,Dv.2,Dv,1は上位側から、第4分割ブロックDv.4および第3分割ブロックDv.3の数値が0であるため非有効ブロックとなる。また、第2分割ブロックDv.2は数値が非ゼロであるため、第2分割ブロックDv.2および第1分割ブロックDv.1が有効ブロックとなる。したがって、2番目(k=2)のイネーブル信号Deは、下位側から4桁目および3桁目が0、下位側から2桁目および1桁目が1となる。
【0130】
3番目(k=3)の分割ブロックDv.4,Dv.3,Dv.2,Dv,1は上位側から順に、第4分割ブロックDv.4、第3分割ブロックDv.3および第2分割ブロックDv.2の数値が0であるため、最も下位側の第1分割ブロックDv.1のみが有効ブロックとなり、その他の分割ブロックDv.4~Dv.2は非有効ブロックとなる。したがって、3番目(k=3)のイネーブル信号Deは、下位側から4桁目、3桁目および2桁目が0、下位側から1桁目が1となる。
【0131】
4番目(k=4)の分割ブロックDv.4,Dv.3,Dv.2,Dv,1は上位側から、第4分割ブロックDv.4および第3分割ブロックDv.3の数値が0であるため非有効ブロックとなる。また、第2分割ブロックDv.2は数値が非ゼロであるため、第2分割ブロックDv.2および第1分割ブロックDv.1が有効ブロックとなる。したがって、4番目(k=4)のイネーブル信号Deは、下位側から4桁目および3桁目が0、下位側から2桁目および1桁目が1となる。
【0132】
このような分割ブロックDv.4,Dv.3,Dv.2,Dv,1、イネーブル信号Deおよび符号ビットDsが入力された場合、格納処理部15は、記憶部20に、1ビットの判別ビットDd、1ビットの符号ビットDsおよび4ビットの第2データD2のデータ群を、1番目(k=1)の第1データD1について4組、2番目(k=2)の第1データD1について2組、3番目(k=3)の第1データD1について1組、4番目(k=4)の第1データD1について2組格納する。すなわち、この場合、4つの第1データD1に対して9組の判別ビットDdおよび第2データD2が記憶部20に格納される。
【0133】
データ圧縮処理を行わずに4つの第1データD1をそのまま格納する場合には、16ビット×4つで64ビット分のデータが記憶部20に格納される。これに対し、本実施形態のデータ圧縮処理を行った場合、
図4の例では、6ビット×9組で54ビット分のデータが記憶部20に格納される。すなわち、記憶部20に格納すべきデータ量を圧縮することができる。
【0134】
このように、第2実施形態に係るデータ圧縮処理を用いることにより、格納すべきデータ量を小さくすることができる。特に、入力データが時系列のセンシングデータDiである場合には、連続した時刻において、センシングデータDiが近い数値を有する場合が多い。そのような場合、1つ前の時刻との差分として第1データD1を算出すると、第1データD1の、最上位から連続してゼロとなる桁数が多くなる。すなわち、非有効ブロックの数が多くなる。したがって、記憶部20に格納すべき第2データD2の数を大幅に低減できる。
【0135】
<2-3.データ伸長処理の流れ>
続いて、第2実施形態に係るデータ処理装置1Aにおけるデータ伸長処理について、
図12および
図13を参照しつつ説明する。
図12は、第2実施形態のデータ伸長処理の流れを示したフローチャートである。
図13は、記憶部20Aに格納された格納データの一例と、当該格納データに対応する、第2実施形態のデータ伸長処理の各段階における第3データD3および第4データD4の一例を示した図である。なお、
図13の例は、
図3の格納データ例に対応しており、m=4としている。
【0136】
このデータ伸長処理では、データ処理装置1Aは、記憶部20Aに格納された複数組の判別ビットDd(1ビット長)、符号ビットDs(1ビット長)および第2データD2(nビット長)のデータ群を読み出して、元データD0(m*nビット長)を復元した第4データD4(m*nビット長)を生成する。
【0137】
図12に示すように、データ伸長処理においては、まず、伸長処理部17Aが、新たなデータ読み出し開始時に、第1データD1と同じビット長(m*nビット長)のゼロデータを第3データD3の仮データとして準備する(ステップS41)。
【0138】
次に、伸長処理部17Aは、記憶部20Aから、判別ビットDd、符号ビットDsおよび第2データD2のデータ群を1組読み出す(ステップS42)。そして、伸長処理部17Aは、読み出した第2データD2を、第3データD3の仮データの最下位側から1~n桁目に入力する。
【0139】
続いて、伸長処理部17Aは、ステップS42において読み出した判別ビットDdから、ステップS42で読み出した第2データD2が最終ブロックであるか否かを判別する(ステップS43)。判別ビットDdが0である場合、伸長処理部17Aは、最終ブロックでないと判断し(ステップS43:No)、ステップS44へと進み、第3データD3の仮データの各桁をnビット分上位側へシフトする(ステップS44)。その後、伸長処理部17Aは、ステップS42へと進み、次の判別ビットDd、符号ビットDsおよび第2データD2を読み出す。
【0140】
一方、判別ビットDdが1である場合、伸長処理部17Aは、最終ブロックであると判断し(ステップS43:Yes)、仮データであった第3データD3を、最終的な第3データD3として、符号ビットDsとともに加算処理部18Aへと引き渡し、ステップS45へと進む。
【0141】
第3データD3および符号ビットDsが引き渡されると、加算処理部18Aは、新たに入力された現在時刻の第3データD3と、1つ前の時刻の第4データD4とを加算する(ステップS45)。
【0142】
加算処理部18Aは、1回目のステップS45では、1つ前の時刻の第4データD4が存在しないため、引き渡された第3データD3の数値を第4データD4の数値とする。
【0143】
また、加算処理部18Aは、2回目以降のk回目のステップS45では、1つ前の時刻(k-1回目)における第4データD4に、符号ビットDsに基づいて、現在時刻(k回目)における第3データD3を加算または減算する。
【0144】
具体的には、現在時刻(k回目)の符号ビットDsが「正」を示す0である場合には、1つ前の時刻(k-1回目)の第4データD4の数値と、現在時刻(k回目)の第3データD3の数値を加算したものを、新たな現在時刻(k回目)の第4データD4とする。
【0145】
一方、現在時刻(k回目)の符号ビットDsが「負」を示す1である場合には、1つ前の時刻(k-1回目)の第4データD4の数値から、現在時刻(k回目)の第3データD3の数値を減算したものを、新たな現在時刻(k回目)の第4データD4とする。
【0146】
その後、加算処理部18Aは、算出した第4データD4を送信部19Aへと出力する(ステップS46)。その後、送信部19Aは、データ処理装置1Aの外部へ、第4データD4に基づいて出力データDoを出力する。なお、出力データDoは、第4データD4そのものであってもよいし、第4データD4を所望のデータ形式へ変換したものであってもよい。
【0147】
以下では、
図13の例を用いて、本実施形態のデータ伸長処理における、具体的な第3データD3の生成方法を示す。
図13の上部に示すように、
図13の例では、記憶部20に、1番目(k=1)の第1データD1に対応する3つの第2データD2(data_1_3,data_1_2,data_1_1)と、2番目(k=1)の第1データD1に対応する2つの第2データD2(data_2_2,data_2_1)が格納されている。
【0148】
図13の例では、1回目のステップS41でゼロデータである第3データD3の仮データが準備される。その後、1回目のステップS42で、第2データD2としてdata_1_3が読み出される。このため、第3データD3の仮データの最下位側から1~n桁目がdata_1_3となる。
【0149】
続いて、ステップS43において、1回目のステップS42で読み出された判別ビットDdが0であるため、伸長処理部17Aは、最終ブロックではないと判断し、第3データD3の仮データをシフトする(ステップS44)。これにより、第3データD3の仮データの最下位側からn+1~2n桁目がdata_1_3となり、最下位側から1~n桁目が0となる。
【0150】
そして、2回目のステップS42で、第2データD2としてdata_1_2が読み出される。このため、第3データD3の仮データの最下位側からn+1~2n桁目がdata_1_3、最下位側から1~n桁目がdata_1_2となる。
【0151】
続いて、ステップS43において、2回目のステップS42で読み出された判別ビットDdが0であるため、伸長処理部17Aは、最終ブロックではないと判断し、第3データD3の仮データをシフトする(ステップS44)。これにより、第3データD3の仮データの最下位側から2n+1~3n桁目がdata_1_3、最下位側からn+1~2n桁目がdata_1_2となり、最下位側から1~n桁目が0となる。
【0152】
そして、3回目のステップS42で、第2データD2としてdata_1_1が読み出される。このため、第3データD3の仮データの最下位側から2n+1~3n桁目がdata_1_3、最下位側からn+1~2n桁目がdata_1_2、最下位側から1~n桁目がdata_1_1
となる。
【0153】
続いて、ステップS43において、2回目のステップS42で読み出された判別ビットDdが1であるため、伸長処理部17Aは、最終ブロックであると判断し、符号ビットDsとともに、現状の第3データD3を最終データとして加算処理部18Aへと引き渡し、ステップS45へと進む。これにより、1番目(k=1)の第1データD1を復元した第3データD3と符号ビットDsとが、加算処理部18Aへと引き渡される。
【0154】
ステップS45において、引き渡された第3データD3が1番目(k=1)の第3データD3であり、1つ前の時刻の第4データD4が存在しないため、加算処理部18Aは、引き渡された第3データD3の数値をそのまま第4データD4とする。そして、当該第4データD4を出力する(ステップS46)。
【0155】
第4データD4の出力後、2回目のステップS41でゼロデータである第3データD3の仮データが再び準備される。その後、4回目のステップS22で、第2データD2としてdata_2_2が読み出される。このため、第3データD3の仮データの最下位側から1~n桁目がdata_2_2となる。
【0156】
続いて、ステップS43において、4回目のステップS42で読み出された判別ビットDdが0であるため、伸長処理部17Aは、最終ブロックではないと判断し、第3データD3の仮データをシフトする(ステップS44)。これにより、第3データD3の仮データの最下位側からn+1~2n桁目がdata_2_2となり、最下位側から1~n桁目が0となる。
【0157】
その後、5回目のステップS42で、第2データD2としてdata_2_1が読み出される。このため、第3データD3の仮データの最下位側からn+1~2n桁目がdata_2_2、最下位側から1~n桁目がdata_2_1となる。
【0158】
続いて、ステップS43において、5回目のステップS22で読み出された判別ビットDdが1であるため、伸長処理部17Aは、最終ブロックであると判断し、現状の第3データD3を、3~5回目のステップS22で読みだされた符号ビットDsとともに、最終データとして加算処理部18Aへと引き渡す。
【0159】
加算処理部18Aは、符号ビットDsが「負」を示す1であるため、前回の第4データD4から、現状の第3データD3を減算する(ステップS45)。具体的には、上位側からnビットごとに0,data_1_3,data_1_2,data_1_1である数値から、上位側からnビットごとに0,0,data_2_2,data_2_1である数値を差し引く。これにより、新たな第4データD4が算出される。この新たな第4データD4は、2番目(k=2)の元データD0と同じ数値(上位側からnビットごとにdata0_1_4,data0_1_3,data0_1_2,data0_1_1)を有する。そして、当該第4データD4を出力する(ステップS46)。
【0160】
<3.変形例>
以上、本発明の一実施形態について説明したが、本発明は、上記の実施形態に限定されるものではない。
【0161】
上記の実施形態では、m*nビット長の元データD0または第1データD1を圧縮し、再び伸長する方法および装置について説明した。具体的な例として、分割ブロックDvの数m=4、分割ブロックDvのビット長n=4の場合を挙げたが、本発明はこれに限られない。例えば、m=16、n=8であり、元データD0または第1データD1が128ビット長であってもよい。
【0162】
また、上記の実施形態や変形例に登場した各要素を、矛盾が生じない範囲で、適宜に組み合わせてもよい。
【符号の説明】
【0163】
1,1A データ処理装置
12A 差分算出処理部
13,13A 分割処理部
15,15A 格納処理部
17,17A 伸長処理部
18A 加算処理部
20,20A 記憶部
D0 元データ
D1 第1データ
D2 第2データ
D3 第3データ
D3 第4データ
D4 第4データ
Dd 判別ビット
De イネーブル信号
Ds 符号ビット
Dv 分割ブロック