(57)【要約】      （修正有）【課題】パックビッツ符号化処理において、符号化速度を向上させる。【解決手段】パックビッツ符合化装置において同時に入力した複数のデータに対して同時にパックビッツ符号化処理を行うことで処理速度を向上させるとともに、同じ値が128個以上連続した場合、及び／又は異なる値が128個以上続いた場合においても、パックビッツ符合化処理を正常に行うことができる。【選択図】図１
2008182449.tif 000002
【特許請求の範囲】
【請求項１】
パックビッツ符号化処理手段において、
ｎ個（ｎは２以上の整数）のデータを入力する入力手段、
ｎ個目のデータを格納するデータバッファ、
前記入力手段から入力されたｍ個目のデータと（ｍ−１）個目（ｍ＝２，３，・・・，ｎ）のデータを比較する（ｎ-１）個のデータ比較手段、
前記入力手段から入力されるデータのうちの１個目のデータと前記データバッファに格納したデータを比較するｎ個目のデータ比較手段、
入力されたデータを符号化する符号化処理手段、
前記符号化処理手段から出力されたカウンタ値を保持するカウンタ値保持手段、
前記符号化処理手段から出力された符号化処理部の状態信号を保持する状態信号保持手段、
を有し、
前記符号化処理手段は
前記入力手段から入力されたｎ個のデータ、前記データバッファに格納されたデータ、前記ｎ個の比較手段の比較結果、前記カウンタ値保持手段に保持されたカウンタ値及び前記状態信号保持手段に保持された符号化処理部の状態信号を参照して符号化処理を行い、符号化されたデータ、符号化処理後の状態信号及びカウンタ値を出力する
ことを特徴とするパックビッツ符号化処理手段。
【請求項２】
請求項１のパックビッツ符号化処理手段において、
前記符号化処理手段による符号化処理の結果、前記カウンタ値保持手段に出力する値が所定の値を越えた場合、符号化処理手段は前記所定の値までの符号化と、所定の値を越えた部分の符号化を分割して行うことを特徴とするパックビッツ符号化処理手段。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はパックビッツ方式により符号化処理を行う符号化装置に関する。
【背景技術】
【０００２】
従来、データの圧縮方式にはさまざまな方式が利用されているが、復号化した時に符号化前の情報を損失なく復号する方式（ロスレス）としてはパックビッツ符号化方式による符号化が知られている。
【０００３】
パックビッツ符号化とは、符号化を行うデータ（以下、符号化前のデータを生データと呼ぶ）をランレングス方式で圧縮する符号化方式である。以下に、8ビットの生データを符号する場合のパックビッツ符号化処理の説明を行う。
【０００４】
パックビッツ符号化は先ず始めに、生データを「同じ値のデータが連続して入力される部分」と「ひとつ前に入力されたデータの値と異なる値のデータが連続して入力される部分」に分割する。そしてそれぞれの部分がいくつ続いているか（「同じ値のデータが連続する部分」では同じ値が連続して入力された回数を、「ひとつ前に入力されたデータの値と異なる値のデータが連続する部分」では異なる値が入力された個数を表す）を表す「長さ情報」を付加して符号化を行う。
【０００５】
そして、「同じ値のデータが連続する部分」では「連続する数＋データの値」という形に、また「異なるデータが連続する部分」では「異なるデータが連続する数＋異なる値のデータ列」という形で表す。そしてこの処理で生成したデータ列をパックビッツ符号化データとして出力する。上記処理を行うことにより、「同じ値のデータが連続する部分」では「同じ値のデータが連続する部分」を「連続する数」と「データの値」の二つの値で表現することが出来る。
【０００６】
以下にパックビッツ符号化の手順の例を示す。例えば、下記（１）に示すような順番で２４個の生データ列が入力されたとする。
【０００７】
0,0,0,0,1,2,3,4,4,4,4,4,4,4,4,5,5,6,7,8,8,9,10,10      （１）
この場合、生データ列を
0,0,0,0,
1,2,3,
4,4,4,4,4,4,4,4,
5,5,
6,7,
8,8,
9,
10,10                              （２）
というように、「同じ値のデータが連続する部分」と、「異なる値のデータが連続する部分」とに分割する。そして、それぞれの部分に「長さ情報」を付加し、「同じ値のデータが連続する部分」に関してはデータ部分を1つだけに圧縮する。
【０００８】
0,0,0,0,          ⇒(-4),0,
1,2,3,            ⇒(3),1,2,3,
4,4,4,4,4,4,4,4,  ⇒(-8),4,
5,5,              ⇒(-2),5,
6,7,              ⇒(2),6,7,
8,8,              ⇒(-2),8,
9,                ⇒(1),9,
10,10              ⇒(-2),10                            （３）
ここで「長さ情報」として付加した情報は、負の数は「同じ値のデータが連続する数」を表し、正の数は「異なる値のデータの数」を表している。そして、この「長さ情報」をデータと同じく8ビットの幅を持つ「長さコードデータ」としてデータ列に埋め込んで出力する。
【０００９】
したがって、上の（１）の入力データ列に対してパックビッツ符号化を行うと、（４）に示す符号化データ列となる。
【００１０】
FD,00,02,01,02,03,F9,04,FF,05,01,06,07,FF,08,00,09,FF,10    （４）
上記（４）では長さ情報及びデータ部とも１６進数表示を行い、長さ情報については負の数を２の補数により表している。以下に、「長さ情報」と、生成される「長さコードデータ」の対応を示す。
【００１１】
【表１】
2008182449.tif 000003
尚、上記表に示すようにパックビッツ符号化では「長さコードデータ」として0x80は生成しない。そのためデータ列の最後を表すエンドオブリストコードデータとして0x80を使用することもある。
【００１２】
また、「同じ値のデータが連続する部分」や「異なる値のデータが連続する部分」の長さが129個を越える場合は、長さが128の部分までで一度符号化処理を行い、128個を越えた部分に対しては改めて「同じ値のデータが連続する部分」又は「異なる値のデータが連続する部分」として処理を行う。以降、再び長さが128を越える場合は同様に符号化処理を繰り返す。
【００１３】
以降、パックビッツ符号化されたデータ列において「長さコードデータ」のことを「長さ情報」、長さ情報に続いて出力される実際のデータの部分を「データ部」と呼ぶ。
【００１４】
従来例としては、例えばランレングス符号化において、ランの開始ビットと終了ビットを並列に検出、開始列アドレスと終了列アドレスを並列に生成する。ラン開始ビットもラン終了ビットも無い場合は次のワードの入力を行うものがある（特許文献１参照）。
【特許文献１】特開平５−１０３２１５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上記従来の技術での説明では、入力されるデータを最初に「同じ値のデータが連続する部分」と「異なる値のデータが連続する部分」に分割したが、実際のパックビッツ符号化処理ではデータを1つづつ入力し、入力した値と直前に入力したデータの値を比較することにより「同じ値のデータが連続する部分」であるか「異なる値のデータが連続する部分」であるかを判断し、その結果によって符号化処理を行う。そのため一般的にはパックビッツ符号化処理はデータをひとつづつ入力して符号化処理を行っていた。そのため符号化処理速度はデータを入力する速度以上に挙げることが出来なかった。
【課題を解決するための手段】
【００１６】
そこで本発明では、
ｎ個（ｎは２以上の整数）のデータを入力する入力手段、
ｎ個目のデータを格納するデータバッファ、
前記入力手段から入力されたｍ個目のデータと（ｍ−１）個目（ｍ＝２，３，・・・，ｎ）のデータを比較する（ｎ-１）個のデータ比較手段、
前記入力手段から入力されるデータのうちの１個目のデータと前記データバッファに格納したデータを比較するｎ個目のデータ比較手段、
入力されたデータを符号化する符号化処理手段、
前記符号化処理手段から出力されたカウンタ値を保持するカウンタ値保持手段、
前記符号化処理手段から出力された符号化処理部の状態信号を保持する状態信号保持手段、
を有し、
前記符号化処理手段は
前記入力手段から入力されたｎ個のデータ、前記データバッファに格納されたデータ、前記ｎ個の比較手段の比較結果、前記カウンタ値保持手段に保持されたカウンタ値及び前記状態信号保持手段に保持された符号化処理部の状態信号を参照して符号化処理を行い、符号化されたデータ、符号化処理後の状態信号及びカウンタ値を出力する
パックビッツ符号化処理手段により、複数のデータを同時に入力してパックビッツ符号化処理を行うことで符号化速度を上げる。
【発明の効果】
【００１７】
以上説明したように、本実施例のパックビッツ符合化装置では同時に入力した複数のデータに対して同時にパックビッツ符号化処理を行うことで処理速度を向上させるとともに、同じ値が128個以上連続した場合、及び／又は異なる値が128個以上続いた場合においても、パックビッツ符合化処理を正常に行うことができる。
【発明を実施するための最良の形態】
【００１８】
（第一の実施例）
図１は本発明のパックビッツ符号化装置のブロック図であり、信号線data1およびdata2から入力される二つのデータに対して同時にパックビッツ符号化処理を行う。尚ここで同時に入力されるdata1およびdata2の並び順は、data1の方が先のデータ、data2の方が後のデータを入力する。
【００１９】
図1において、１０１はデータバッファであり、data2から入力されたデータを格納する。データバッファ101に格納されたデータは、信号線data1およびdata2から次のデータが入力された際に、data1との比較のためにdata0として出力される。
【００２０】
102および103はデータ比較部であり、102はデータバッファの出力であるdata0と信号線data1から入力された値を比較し、data0とdata1が同じ値ならば信号線comp01から1を、同じ値でないならば0を出力する。また、データ比較部103は信号線data1およびdata2から入力された値を比較し、data1とdata2が同じ値ならば信号線comp12から1を、同じ値でないならば0を出力する。
【００２１】
104はカウンタ値保持部であり、符号化処理部106が前回符号化処理を行った結果発生したカウンタの値を信号線cnt_outから取得して保持し、次に入力されるデータの符号化処理を行うときに保持した値を信号線cnt_inに出力する。尚、カウンタ値保持部104の初期状態として、cnt_inには０が出力される。
【００２２】
105はステート保持部であり、符号化処理部106が前回符号化処理を行った結果発生した符号化処理部の状態を信号線state_outから取得して保持し、次に入力されるデータの符号化処理を行うときに保持した符号化処理部の状態を信号線state_inに出力する。ここで、符号化処理部の状態としては、以下の４つの状態が存在する。
１．同データ
この状態は、符号化処理部に同じ値のデータが連続して入力されている状態である。
２．異データ
この状態は、符号化処理部に異なる値のデータが入力されている状態である。
３．１データ
この状態は、符号化処理部で１つだけ符号化されていないデータが残っている状態である。この場合、次に入力されるデータが残っているデータと同じ値ならば「同じ値が連続する部分」、次に入力されるデータが残っているデータと異なる値ならば「異なる値のデータが連続する部分」と判断される。
４．データ無
この状態は、入力されたデータに対して符号化処理部106による符号化処理を行った結果、入力されたデータに対する符号化データがすべて出力された状態である。
【００２３】
尚、ステート保持部105の初期状態として、state_inには「データ無」の状態が出力される。
【００２４】
106は符号化処理部であり、データバッファ101の出力であるdata0およびdata1,data2から入力される値、データ比較器102および103の出力であるcomp01およびcomp12の値、カウンタ保持部104から入力されるcnt_inの値およびステート保持部105から入力されるstate_inの状態により符号化処理を行う。符号化処理を行った結果、データ部よりも遅れて出力される長さ情報は信号線num_outから、データ部およびデータ部と同時に出力される長さ情報は信号線data_outから出力される。
【００２５】
また、信号線data_endから1が入力されることにより符号化処理部106にデータ入力の終了が知らされると、符号化処理部はカウンタ保持部104から入力されるcnt_inの値およびステート保持部105から入力されるstate_inの状態により符号化終了のための符号化処理を行い、必要であれば長さ情報およびデータ部の出力を行い、信号線data_endにより符号化処理の終了を出力バッファに知らせる。
【００２６】
107は出力バッファであり、符号化処理部106から信号線num_outおよびdata_outを用いて出力された長さ情報およびデータ部を、パックビッツ復号化処理ができる順番に並び替えてencode_dataから出力する。
【００２７】
図３は符号化処理部106が動作する際のすべての状態を記した表である。本実施例の符号化処理部106は符号化動作中は図３のNo.1〜No.18に示した動作を行っている。以下、図３を用いそれぞれの状態における符号化処理部106の動作を説明する。
【００２８】
No.1〜No.3は符号化処理の状態が「同データ」、すなわちデータバッファ101に格納した値と同じ値のデータが連続して入力されている状態で、さらにcomp01およびcomp12の値が１であるため、データバッファ101の値と同じ値のデータが入力された状態を表す。
【００２９】
ここで、No.1ではcnt_inから入力されているカウント値が127であり、data1に対して符合化処理を行った時点で同じ値が連続して入力された数が128となる。そこで、No.1の場合はdata1までで一度符号化処理を行い、num_outから「同じ値が128個連続」したことを表す-128を出力する。そして新たにdata2から符号化処理を開始するため、符号化処理部の状態としてdata2がひとつだけ残った状態を表す「１データ」をstate_outから出力する。と同時にcnt_outからはカウント値として1を、data_outからは長さ情報を設定する部分を空けるための空データ（図３では□で表している）と、それに続いてdata2の値を出力する。
【００３０】
No.2ではcnt_inから126が入力されているため、data2に対して符号化処理を行った時点で同じ値が連続して入力された数が128となる。そこで、No.2の場合はdata2までで符号化処理を行い、num_outから「同じ値が128個連続」したことを表す-128を出力する。と同時に符号化処理部において処理中のデータがないため、cnt_outから0を出力する。No.2の場合はdata_outからは出力しない。また、符号化処理部の状態はデータがない状態を表す「データ無」をstate_outから出力する。
【００３１】
No.3ではcnt_inから125以下の値ｎが入力されているため、同じデータが連続する数が２個増えたことを表すためにcnt_inから入力されたｎに２を加算してcnt_outから出力する。No.3の場合もdata_outからは出力しない。また、符号化処理部の状態は同じデータが連続している状態なので「同データ」をstate_outから出力する。
【００３２】
No.4ではデータバッファ101に格納したデータの値が連続して入力されていたところに、data2として異なる値が入力された状態を表している。この場合、data1までは同じ値が入力されたのでcnt_inから入力されたカウント値に１を加算した（ｎ＋１）を、同じ値が連続していることを表す負の値にした−（ｎ＋１）をnum_outから出力する。そして新たにdata2から符号化処理を開始するため、符号化処理部の状態としてdata2がひとつだけ残った状態を表す「１データ」をstate_outから出力する。と同時にcnt_outからはカウント値として1を、data_outからは長さ情報を設定する部分を空けるための空データと、それに続いてdata2の値を出力する。
【００３３】
No.5ではデータバッファ101に格納したデータの値が連続して入力されていたところに、data0と異なる値がdata1から、またdata1と同じ値がdata2から入力された状態を表している。この場合、data1が入力される前までが同じ値が入力されていた部分となるためにcnt_inから入力されたカウント値ｎに対して、同じ値が連続していることを表す負の値にした−ｎをnum_outから出力する。また、data1とdata2が同じ値であるため、符号化処理部の状態としては同じ値が連続している状態を表す「同データ」をstate_outから出力する。と同時にdata1とdata2の二つのデータが同じ値として連続しているため、cnt_outからはカウント値として２を、data_outからは長さ情報を設定する部分を空けるための空データとそれに続いてdata1（data2でも同等）の値を出力する。
【００３４】
No.6ではデータバッファ101に格納したデータの値が連続して入力されていたところに、data0と異なる値がdata1から、またdata1と異なる値がdata2から入力された状態を表している。この場合、data1が入力される前までが同じ値が入力されていた部分となるためにcnt_inから入力されたカウント値ｎに対して、同じ値が連続していることを表す負の値にした−ｎをnum_outから出力する。また、data1とdata2が異なる値であるため、符号化処理部の状態としては異なる値が連続している状態を表す「異データ」をstate_outから出力する。と同時にdata1については前のデータであるdata0とも後のデータであるdata2とも異なる値であることが判明したため、data1の分のカウント値としてcnt_outからは１を、data_outからは長さ情報を設定する部分を空けるための空データとそれに続いてdata1の値を出力する。
【００３５】
No.6においてカウント値にdata2の分を加算しない、およびdata1に続いてdata_outからdata2を出力しない理由は、次に入力されるデータとしてdata2と同じ値が入力される可能性があるかである。
【００３６】
No.7では異なる値が連続して入力されていたところに、data0と同じ値がdata1およびdata2から入力された状態を表している。この場合、No.6のcnt_outから出力されるカウント値で説明したように、直前の符号化処理動作におけるdata2(データバッファ101に格納されているdata0)の分がカウントされていない値がcnt_inから入力される。そのためNo.7ではcnt_inから入力されたカウント値ｎに対して、異なる値が連続していることを表すために１を減じた（ｎ−１）をnum_outから出力する。また、data0、data1およびdata2が同じ値であるため、符号化処理部の状態としては同じ値が連続している状態を表す「同データ」をstate_outから出力する。と同時にカウント値としてはdata0、data1、data2が同じ値で連続しているためにcnt_outからは３を、data_outからは長さ情報を設定する部分を空けるための空データとそれに続いてdata1(data0又はdata2でも同等)の値を出力する。
【００３７】
No.8では異なる値が連続して入力されていたところに、data0と同じ値がdata1から入力され、かつdata1と異なる値がdata2から入力された状態を表している。この場合、No.7と同様cnt_inから入力されたカウント値ｎに対して、異なる値が連続していることを表すために１を減じた（ｎ−１）をnum_outから出力する。また、data_outからは、data0とdata1の２個同じ値が連続したことを表す符号化データである-2とdata1（data0でも同等）に引き続き、長さ情報を設定する部分を空けるための空データと、それに続いてdata2の値を出力する。そして新たにdata2から符号化処理を開始するため、符号化処理部の状態としてdata2がひとつだけ残った状態を表す「１データ」をstate_outから出力し、cnt_outからはカウント値として1を出力する。
【００３８】
No.9では異なる値が連続して入力されていたところに、data0と異なる値がdata1から入力され、かつdata1と同じ値がdata2から入力された状態を表している。data0までが異なる値が連続する部分となるので、cnt_inから入力されたカウント値ｎに対して１を加算した値ｎ＋１に対し、異なる値が連続していることを表すために１を減じたｎをnum_outから出力する。また、data_outからは、異なる値が連続する部分の最後のデータとしてdata0を出力し、それに引き続いて長さ情報を設定する部分を空けるための空データと、さらに同じ値が連続する部分のデータ値としてdata1（data2でも同等）の値を出力する。そして符号化処理部の状態として同じ値が連続している状態を表す「同データ」をstate_outから出力する。また、data1とdata2の二つのデータが同じ値として連続しているため、cnt_outからはカウント値として２出力する。
【００３９】
No.10〜No.12は符号化処理の状態が「異データ」、さらにデータバッファ101に格納した値とdata1から入力された値、およびdata1とdata2から入力された値がそれぞれ異なる場合を表す。
【００４０】
No.10ではcnt_inから入力されているカウント値が127であり、data0対して符合化処理を行った時点で異なる値が続けて入力された数が128となる。そこで、No.10の場合はdata0までで一度符号化処理を行い、num_outから「異なる値が128個連続」したことを表す127を出力する。そして新たにdata1から符号化処理を開始し、data1の値とdata2の値が異なるために符号化処理部の状態として異なる値のデータが連続している状態を表す「異データ」をstate_outから出力する。と同時にcnt_outからはNo.6と同等の理由によりdata1のみのとカウント値として1を、data_outからは異なる値の続いている部分の最後のデータとしてdata0を出力した後、長さ情報を設定する部分を空けるための空データ（図３では□で表している）と、それに続いてdata1の値を出力する。
【００４１】
No.11ではcnt_inから126が入力されているため、data1に対して符号化処理を行った時点で異なる値が連続して入力された数が128となる。そこで、No.11の場合はdata1までで符号化処理を行い、num_outから「異なる値が128個連続」したことを表す127を出力すると同時に、data_outからはdata0、data1を出力する。そして新たにdata2から符号化処理を開始するため、符号化処理部の状態としてdata2がひとつだけ残った状態を表す「１データ」をstate_outから出力し、cnt_outからはカウント値として1を出力する。
【００４２】
No.12ではcnt_inから125以下の値ｎが入力されているため、異なる値のデータが連続する数が２個増えたことを表すためにcnt_inから入力されたｎに２を加算してcnt_outから出力し、data_outからは異なるデータであるdata0、data1を出力する。また、符号化処理部の状態は異なる値のデータが連続している状態なので「異データ」をstate_outから出力する。
【００４３】
No.13では前回の符号化処理でデータバッファ101に格納されたデータが符号化されずに残った状態のところに、data0と同じ値がdata1およびdata2から入力された状態を表している。符号化処理部の状態が「１データ」の場合、前回の符号化処理で長さ情報を設定する部分を空けるための空データとdata0に格納されているデータ値はすでにdata_outから出力されているため、No.13ではdata_outからは何も出力しない。また、符号化処理部の状態としては同じ値が連続している状態を表す「同データ」をstate_outから出力し、カウント値からはdata0、data1、data2が同じ値で連続しているためにcnt_outからは３を出力する。
【００４４】
No.14では前回の符号化処理でデータバッファ101に格納されたデータが符号化されずに残った状態のところに、data0と同じ値がdata1から入力され、data2からはdata1と異なる値が入力された状態を表している。符号化処理部の状態が「１データ」の場合、前回の符号化処理で長さ情報を設定する部分を空けるための空データとdata0に格納されているデータ値はすでにdata_outから出力されているため、No.14ではnum_outからdata0とdata1で同じ値がふたつ連続したことを表す-2を出力する。そして新たにdata2から符号化処理を開始するため、符号化処理部の状態としてdata2がひとつだけ残った状態を表す「１データ」をstate_outから出力する。と同時にcnt_outからはカウント値として1を、data_outからは長さ情報を設定する部分を空けるための空データと、それに続いてdata2の値を出力する。
【００４５】
No.15では前回の符号化処理でデータバッファ101に格納されたデータが符号化されずに残った状態のところに、data0と異なる値で、かつdata1とdata2からは同じ値が入力された状態を表している。符号化処理部の状態が「１データ」の場合、前回の符号化処理で長さ情報を設定する部分を空けるための空データとdata0に格納されているデータ値はすでにdata_outから出力されているため、No.15ではnum_outから異なる値がdata0ひとつだけであることを表す０を出力する。また、data1およびdata2が同じ値であるため、符号化処理部の状態としては同じ値が連続している状態を表す「同データ」をstate_outから出力する。と同時にカウント値としてはdata1、data2が同じ値で連続しているためにcnt_outからは２を、data_outからは長さ情報を設定する部分を空けるための空データとそれに続いてdata1(data2でも同等)の値を出力する。
【００４６】
No.16では前回の符号化処理でデータバッファ101に格納されたデータが符号化されずに残った状態のところに、data0と異なる値がdata1から、またdata1と異なる値がdata2から入力された状態を表している。符号化処理部の状態が「１データ」の場合、前回の符号化処理で長さ情報を設定する部分を空けるための空データとdata0に格納されているデータ値はすでにdata_outから出力されているため、No.16ではdata_outからdata1を出力するとともに符号化処理部の状態としては異なる値が連続している状態を表す「異データ」をstate_outから出力する。また、カウント値としてはcnt_inから入力されている1にdata1の分の1を加算して2を出力する。
【００４７】
No.17では符号化処理部106の初期状態、又は前回の符号化処理でNo.2の処理を行った「データ無」の状態のところに、data1とdata2から同じ値が入力された状態を表している。この場合、符号化処理部は同じデータが連続する数が２個増えたことを表すためにcnt_inから入力された値（「データ無」ではcnt_inからは０が入力されている）に２を加算してcnt_outから出力する。
【００４８】
また、data_outからは長さ情報を設定する部分を空けるための空データと、同じ値が連続する部分のデータ値としてdata1（data2でも同等）の値を出力する。そして符号化処理部の状態として同じ値が連続している状態を表す「同データ」をstate_outから出力する。
【００４９】
No.18では符号化処理部106の初期状態、又は前回の符号化処理でNo.2の処理を行った「データ無」の状態のところに、data1とdata2から異なる値が入力された状態を表している。この場合、data1とdata2が異なる値であるため、符号化処理部の状態としては異なる値が連続している状態を表す「異データ」をstate_outから出力する。と同時にdata1の分のカウント値としてcnt_outからは１を、data_outからは長さ情報を設定する部分を空けるための空データとそれに続いてdata1の値を出力する。
【００５０】
No.18においてカウント値にdata2の分を加算しない、およびdata1に続いてdata_outからdata2を出力しない理由は、No.6のときと同様に次に入力されるデータとしてdata2と同じ値が入力される可能性があるかである。
【００５１】
図４は符号化処理部106に信号線data_endからデータ入力の終了が伝えられた場合に、符号化処理を終了する場合の動作を説明する表である。以下、図４を用いて符号化処理部106の符号化終了動作を説明する。
【００５２】
図４において、No.19は符号化処理部が「同データ」の状態の符号化処理終了動作を表す。No.19では同じデータが連続しているため、すでにdata_outからデータの値が出力されている。そのためcnt_inから入力されたカウント値ｎに対して、同じ値が連続していることを表す負の値にした−ｎをnum_outから出力する。
【００５３】
Ｎｏ.20は符号化処理部が「異データ」の状態の符号化処理終了動作を表す。No.20では、data_outから異なる値が連続する部分の最後のデータとしてdata0を出力するとともに、cnt_inから入力されたカウント値ｎに対して１を加算した値ｎ＋１に対し、異なる値が連続していることを表すために１を減じたｎをnum_outから出力する。
【００５４】
Ｎｏ．21は符号化処理部が「１データ」の状態の符号化処理終了動作を表す。Ｎｏ．21では符号化されていないで残っているひとつのデータを符号化するために、data_outからcnt_inから入力されたカウント値（「１データ」の状態の場合、cnt_inからは１が入力されている）に対し、異なる値が連続していることを表すために１を減じた０および、残ったデータであるdata0を出力する。
【００５５】
No.22は符号化処理部が「データ無」の状態の符号化処理終了動作を表す。この場合、符号化処理部は初期状態なので何もせず符号化処理を終了する。
【００５６】
尚No.19〜No.22の符号化処理の終了動作とともに、符号化処理部106はdata_end出力から１を出力することにより、出力バッファ107に符号化処理の終了を伝える。
【００５７】
図５は従来の技術の（１）で示した２４個の生データ列に対して、本発明のパックビッツ符号化装置において符号化処理を行った場合の動作をステップごとに示している。図５において、ステップ１ではカウンタ値保持部104、ステート保持部105および符号化処理部106は初期状態であるため、state_inからは「データ無」、cnt_inからは０が入力されている。そこに（１）の最初のデータである0がdata1から、２番目のデータである0がdata2から入力される。すると符号化処理部は図３におけるNo.17の動作を行うため、data_outから空データとｄａｔａ１の値である00（以下、数字は16進表示で表す）を出力し、state_outから「同データ」、cnt_outから02を出力する。
【００５８】
次にステップ２によりdata1から00が、data2から00が入力されると、符号化処理部は図３におけるNo.3の動作を行い、state_outから「同データ」を、cnt_inから入力された02に2を加算して04をcnt_outから出力する。
【００５９】
ステップ３でdata1から01、data2から02が入力されると、符号化処理部は図３におけるNo.6の動作を行い、state_outから「異データ」を、cnt_inからは入力された04を負の値に変換したFDをnum_outから出力する（負の値への変換方法は従来の技術の「長さ情報」と「長さコードデータ」の対応表を参照）。出力バッファ107では、num_outから入力された長さ情報を、ステップ１においてdata_outから空データを出力した部分に格納する。
【００６０】
また、data_outからは空データとdata１から入力された01が出力され、cnt_outからは1が出力される。
【００６１】
以降、ステップ４からステップ１２まで符号化処理を繰り返して出力した後、ステップ１３においてデータの入力が終了すると（data_endから1が入力される）、符号化処理部は図４のNo.19の処理を行い、cnt_inから入力されている値02を負の値に変換して（FFとなる）、num_outから出力する。
【００６２】
出力バッファ107ではnum_outから入力された長さ情報を、空データの部分に格納して符号化処理部107から符号化データを取得する動作を終了する。
【００６３】
図６は図５で説明した符号化処理動作において、それぞれのステップまでに生成されたパックビッツ符号化データを表している。これにより、符号化処理が終了したステップ13では、(４)で示した符号化データを同じ結果が出力されていることがわかる。
【００６４】
図７は本実施例のパックビッツ符号化装置において、同じ値のデータが１２８個以上続く場合の符合化処理部106の動作を示している。図７のステップ64において、data2の入力時点で同じ値のデータが１２８個続いて入力されている。このとき、符合化処理部はステップ64までで符号化処理を行い、ステップ65から新たに符合化処理を行うことで、同じ値のデータが１２８個以上続く場合でも正常なパックビッツ符合化データの出力を行っている。
【００６５】
また、ステップ128において、data1の入力時点で同じ値のデータが１２８個続いて入力されているが、このときもステップ128のdata2から新たに符合化処理を行うことで、同じ値のデータが１２８個以上続く場合でも正常なパックビッツ符合化データの出力を行っている。
【００６６】
図８は本実施例のパックビッツ符号化装置において、異なる値のデータが１２８個以上続く場合の符合化処理部106の動作を示している。図８のステップ65において、data0まで同じ値のデータが１２８個続いて入力されている。このとき、符合化処理部はステップ65のdata0までで一度符号化処理を行い、ステップ65のdata1から新たに符合化処理を行うことで、異なる値のデータが１２８個以上続く場合でも正常なパックビッツ符合化データの出力を行っている。
【００６７】
また、ステップ130においては、data1の入力時点で異なる値のデータが１２８個続いて入力されているが、このときもステップ130のdata2から新たに符合化処理を行うことで、異なる値のデータが１２８個以上続く場合でも正常なパックビッツ符合化データの出力を行っている。
【００６８】
（第二の実施例）
図２は本発明の第二の実施例におけるパックビッツ符号化装置のブロック図であり、信号線data1、data2data3から入力される３つのデータに対して同時にパックビッツ符号化処理を行う。尚ここで同時に入力されるdata1、data2及びdata3の並び順は、data1が最初のデータ、data2が次のデータ、そしてdata3が後のデータを入力する。
【００６９】
図１に対して、図２ではdata3入力が追加され、データバッファ101に格納される値がdata3に変更されている。また、data2の値とdata3の値を比較するデータ比較器201が追加され、比較結果が信号線comp23を通って符合化処理部106に入力されている。
【００７０】
図９は図２における符号化処理部106が動作する際のすべての状態を記した表である。詳細な説明は割愛するが、図９においても実施例１と同様の処理を行うことで３つのデータを同時に入力してパックビッツ符合化を行うことができる。
【００７１】
尚、図２における符号化処理部106に対して信号線data_endからデータ入力の終了が伝えられた場合の符号化処理を終了動作については、図４に示した処理と同等の処理を行う。
【００７２】
尚、上記第1の実施例及び第二の実施例では２つのデータ及び３つのデータを同時に入力した場合の動作について説明したが、さらに多くのデータを同時に入力してもパックビッツ符合化処理を行うことも可能である。
【図面の簡単な説明】
【００７３】
【図１】本発明におけるパックビッツ符合化装置のブロック図。
【図２】本発明におけるパックビッツ符合化装置の第二の実施例のブロック図。
【図３】本発明の符合化処理部106の動作を説明する表。
【図４】本発明の符合化処理部106の符合化処理を終了する場合の動作を説明する表。
【図５】本発明の符合化処理部106の実際の動作を説明する表。
【図６】本発明の符合化処理部106が各ステップにおいて生成した符合化データを表す表。
【図７】本発明の符合化処理部106に同じ値のデータが128個以上入力された場合の動作を説明する表。
【図８】本発明の符合化処理部106に異なる値のデータが128個以上入力された場合の動作を説明する表。
【図９】本発明における第二の実施例の符合化処理部106の動作を説明する表。
【図１】
2008182449.tif 000004
【図２】
2008182449.tif 000005
【図３】
2008182449.tif 000006
【図４】
2008182449.tif 000007
【図５】
2008182449.tif 000008
【図６】
2008182449.tif 000009
【図７】
2008182449.tif 000010
【図８】
2008182449.tif 000011
【図９】
2008182449.tif 000012