(57)【要約】【課題】  可変長符号長のビット数がバッファ回路に格納できるビット数より大きい場合に、復号が可能な可変長符号の復号装置を提供する。【解決手段】  可変長符号語の少なくとも一部を格納するバッファ回路１０と、可変長符号語を更新しながら可変長符号語のプレフィクス部のビット数を検出テーブルＴａを用いて検出する検出回路２０と、プレフィクス部のビット数に基づき、可変長符号語を更新しながら可変長符号語のサフィックス部の符号語を抽出する抽出回路３０と、プレフィクス部のビット数及びサフィックス部の符号語に基づき、可変長符号語を復号する第１復号回路４０とを備える。【選択図】      図１
2006254225.tif 000002
【特許請求の範囲】
【請求項１】
可変長符号語の少なくとも一部を格納するバッファ回路と、
前記可変長符号語を更新しながら前記可変長符号語のプレフィクス部のビット数を検出テーブルを用いて検出する検出回路と、
前記プレフィクス部のビット数に基づき、前記可変長符号語を更新しながら前記可変長符号語のサフィックス部の符号語を抽出する抽出回路と、
前記プレフィクス部のビット数及び前記サフィックス部の符号語に基づき、前記可変長符号語を復号する第１復号回路
とを備えることを特徴とする可変長符号の復号装置。
【請求項２】
前記バッファ回路に可変長符号語全体が格納された場合に、該可変長符号語を復号テーブルを用いて復号する第２復号回路を更に備えることを特徴とする請求項１に記載の可変長符号の復号装置。
【請求項３】
可変長符号語の少なくとも一部を格納するバッファ回路と、
前記可変長符号語を更新しながら前記可変長符号語のプレフィクス部のビット数を検出テーブルを用いて検出する検出回路と、
前記プレフィクス部のビット数に基づき、前記可変長符号語を更新しながら前記可変長符号語のサフィックス部の符号語を抽出する抽出回路と、
前記プレフィクス部のビット数及び前記サフィックス部の符号語に基づき、前記可変長符号語を復号する第１復号回路と、
前記バッファ回路に可変長符号語全体が格納された場合に、該可変長符号語を復号テーブルを用いて復号する第２復号回路と、
前記バッファ回路に複数の可変長符号語が格納された場合に、２番目に格納された可変長符号語を第２符号語復号テーブルを用いて復号する第３復号回路
とを備えることを特徴とする可変長符号の復号装置。  
【請求項４】
バッファ回路に可変長符号語の少なくとも一部を格納するステップと、
前記可変長符号語を更新しながら前記可変長符号語のプレフィクス部のビット数を検出テーブルを用いて検出するステップと、
前記プレフィクス部のビット数に基づき、前記可変長符号語を更新しながら前記可変長符号語のサフィックス部の符号語を抽出するステップと、
前記プレフィクス部のビット数及び前記サフィックス部の符号語に基づき、前記可変長符号語を復号するステップ
とを含むことを特徴とする可変長符号の復号方法。  
【請求項５】
バッファ回路に可変長符号語の少なくとも一部を格納するステップと、
前記可変長符号語を更新しながら前記可変長符号語のプレフィクス部のビット数を検出テーブルを用いて検出するステップと、
前記プレフィクス部のビット数に基づき、前記可変長符号語を更新しながら前記可変長符号語のサフィックス部の符号語を抽出するステップと、
前記プレフィクス部のビット数及び前記サフィックス部の符号語に基づき、前記可変長符号語を復号するステップと、
前記バッファ回路に可変長符号語全体が格納された場合に、該可変長符号語を復号テーブルを用いて復号するステップと、
前記バッファ回路に複数の可変長符号語が格納された場合に、２番目に格納された可変長符号語を第２符号語復号テーブルを用いて復号するステップ
とを含むことを特徴とする可変長符号の復号方法。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、可変長符号の復号装置及び復号方法に関する。
【背景技術】
【０００２】
データ伝送において、プレフィクス部、及びプレフィクス部のビット数により符号長が決定するサフィックス部を有する可変長符号が使用されている。例えば、指数ゴロム（ｅｘｐ−ｇｏｌｏｍｂ）符号は、プレフィクス部の０の個数及びサフィックス部の符号語によって復号結果が決まる。
【０００３】
先行技術では、ゼロ検出命令を持つ汎用プロセッサを使用し、以下のステップにより可変長符号語の復号が行われる。
【０００４】
（１）ゼロ検出命令を用い、バッファ回路に格納された可変長符号語の先頭に並んでいる０の個数を数える。
【０００５】
（２）０の個数に基づき、バッファ回路に格納された可変長符号語のサフィックス部の先頭のビット位置を計算する。
【０００６】
（３）サフィックス部をバッファ回路に格納する。
【０００７】
（４）プレフィクス部の０の個数とサフィックス部の符号語により復号結果を得る。
【０００８】
上記の各ステップにおいて、それぞれ1サイクル以上の実行時間が必要である。又、バッファ回路内に収まる短い符号語のときでも、上記のステップで符号語の復号が行われる。そのため、符号語が短い場合でも、指数ゴロム符号の復号に５〜１０サイクル程度の期間が必要である。
【０００９】
又、バッファ回路に格納できるビット数より可変長符号語のビット数が大きい場合に、符号語を最大符号長の半分の長さに分割して復号化する方法が提案されている（例えば、特許文献１参照。）。しかし、上記の方法では、最大符号長の半分の長さの符号語を格納可能なバッファ回路が必要である。
【特許文献１】特開平５−２３５７８１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、可変長符号長のビット数がバッファ回路に格納できるビット数より大きい場合に、復号が可能な可変長符号の復号装置及び復号方法を提供する。
【課題を解決するための手段】
【００１１】
本発明の第１の特徴は、（イ）可変長符号語の少なくとも一部を格納するバッファ回路と、（ロ）可変長符号語を更新しながら可変長符号語のプレフィクス部のビット数を検出テーブルを用いて検出する検出回路と、（ハ）プレフィクス部のビット数に基づき、可変長符号語を更新しながら可変長符号語のサフィックス部の符号語を抽出する抽出回路と、（ニ）プレフィクス部のビット数及びサフィックス部の符号語に基づき、可変長符号語を復号する第１復号回路とを備える可変長符号の復号装置であることを要旨とする。
【００１２】
本発明の第２の特徴は、（イ）可変長符号語の少なくとも一部を格納するバッファ回路と、（ロ）可変長符号語を更新しながら可変長符号語のプレフィクス部のビット数を検出テーブルを用いて検出する検出回路と、（ハ）プレフィクス部のビット数に基づき、可変長符号語を更新しながら可変長符号語のサフィックス部の符号語を抽出する抽出回路と、（ニ）プレフィクス部のビット数及びサフィックス部の符号語に基づき、可変長符号語を復号する第１復号回路と、（ホ）バッファ回路に可変長符号語全体が格納された場合に、その可変長符号語を復号テーブルを用いて復号する第２復号回路と、（ヘ）バッファ回路に複数の可変長符号語が格納された場合に、２番目に格納された可変長符号語を第２符号語復号テーブルを用いて復号する第３復号回路とを備える可変長符号の復号装置であることを要旨とする。
【００１３】
本発明の第３の特徴は、（イ）バッファ回路に可変長符号語の少なくとも一部を格納するステップと、（ロ）可変長符号語を更新しながら可変長符号語のプレフィクス部のビット数を検出テーブルを用いて検出するステップと、（ハ）プレフィクス部のビット数に基づき、可変長符号語を更新しながら可変長符号語のサフィックス部の符号語を抽出するステップと、（ニ）プレフィクス部のビット数及びサフィックス部の符号語に基づき、可変長符号語を復号するステップとを含む可変長符号の復号方法であることを要旨とする。  
本発明の第４の特徴は、（イ）バッファ回路に可変長符号語の少なくとも一部を格納するステップと、（ロ）可変長符号語を更新しながら可変長符号語のプレフィクス部のビット数を検出テーブルを用いて検出するステップと、（ハ）プレフィクス部のビット数に基づき、可変長符号語を更新しながら可変長符号語のサフィックス部の符号語を抽出するステップと、（ニ）プレフィクス部のビット数及びサフィックス部の符号語に基づき、可変長符号語を復号するステップと、（ホ）バッファ回路に可変長符号語全体が格納された場合に、その可変長符号語を復号テーブルを用いて復号するステップと、（ヘ）バッファ回路に複数の可変長符号語が格納された場合に、２番目に格納された可変長符号語を第２符号語復号テーブルを用いて復号するステップとを含む可変長符号の復号方法であることを要旨とする。  
【発明の効果】
【００１４】
本発明によれば、可変長符号のビット数がバッファ回路に格納できるビット数より大きい場合に、復号が可能な可変長符号の復号装置及び復号方法を提供できる。
【発明を実施するための最良の形態】
【００１５】
次に、図面を参照して、本発明の第１乃至第３の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。又、以下に示す第１乃至第３の実施の形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１６】
（第１の実施の形態）
本発明の第１の実施の形態に係る可変長符号の復号装置は、図１に示すように、可変長符号語の少なくとも一部を格納するバッファ回路１０と、可変長符号語を更新しながら可変長符号語のプレフィクス部のビット数を検出テーブルＴａを用いて検出する検出回路２０と、プレフィクス部のビット数に基づき、可変長符号語を更新しながら可変長符号語のサフィックス部の符号語を抽出する抽出回路３０と、プレフィクス部のビット数及びサフィックス部の符号語に基づき、可変長符号語を復号する第１復号回路４０とを備える。ここで、「可変長符号語を更新する」とは、バッファ回路１０に格納された可変長符号語の残りの部分を新たにバッファ回路１０に格納することである（以下において同様）。その結果、バッファ回路１０に格納される可変長符号語が更新される。検出テーブルＴａは、バッファ回路１０に格納された可変長符号語のビット数を調べるテーブルである。
【００１７】
図１に示した可変長符号の復号装置により復号される可変長符号は、例えば指数ゴロム符号である。既に述べたように、指数ゴロム符号では、プレフィクス部の０の個数及びサフィックス部の符号語によって復号結果が決定される。以下では、可変長符号が指数ゴロム符号である場合を例示的に説明する。可変長符号語（以下において、単に「符号語」という。）ＳＡが、図１に示した可変長符号の復号装置に入力される。符号語ＳＡのビット数がバッファ回路１０に格納可能なビット数Ｂ１より大きい場合は、符号語ＳＡの先頭からビット数Ｂ１分の符号語ＳＡがバッファ回路１０に格納される。又、図１に示すように、符号語ＳＡの復号結果ＳＢが第１復号回路４０から出力される。
【００１８】
符号語ＳＡの例を図２に示す。指数ゴロム符号語は、プレフィクス部、及びプレフィクス部の０の個数により符号長が決定するサフィックス部を有する。例えば、符号語ＳＡがビット列「００１１０」の場合は、先頭のビット列「００」がプレフィクス部である。次のビット「１」がプレフィクス部とサフィックス部の境界を示すビット（以下において、「境界ビット」という。）である。プレフィクス部に含まれる０の個数が２個であることから、サフィックス部の符号長は２である。つまり、境界ビット「１」に続くビット列「１０」がサフィックス部である。
【００１９】
指数ゴロム符号のプレフィクス部のビット数Ｒａ及びサフィックス部の符号語Ｒｂに基づき、式（１）を用いて復号結果ＳＢが得られる。
【００２０】
ＳＢ＝（[１＜＜Ｒａ]−１）＋Ｒｂ    ・・・・・（１）
式（１）において、[１＜＜Ｒａ］は、「１」の後にビット数Ｒａ個の「０」が並ぶビット列を生成することを示す。例えば、符号語ＳＡがビット列「００１１０」である場合は、上記に説明したように、ビット数Ｒａは２であり、符号語Ｒｂはビット列「１０」である。したがって、[１＜＜Ｒａ］はビット列「１００」である。復号結果ＳＢは、ビット列「１００」から「１」を減算したビット列「０１１」に、サフィックス部の符号語Ｒｂであるビット列「１０」を加算したビット列「１０１」である。即ちＳＢ＝５である。同様にして、式（１）を用いて種々の符号語から得られる復号結果が図２に示されている。
【００２１】
図１に示す検出回路２０は、ビット数検出回路２１、検出シフト回路２２、検出レジスタ２３、及び加算器２４を備える。ビット数検出回路２１にバッファ回路１０、検出シフト回路２２及び加算器２４が接続される。ビット数検出回路２１は、検出テーブルＴａを参照して、バッファ回路１０に格納された符号語ＳＡの先頭から並んでいる０の個数を検出する。検出レジスタ２３は、符号語ＳＡのサフィックス部のビット数Ｒａを格納する。検出シフト回路２２にビット数検出回路２１及び加算器５０が接続される。検出シフト回路２２は、バッファ回路１０を、ビット数検出回路２１が検出した０の個数分更新する。
【００２２】
検出テーブルＴａは、例えば図３に示すような、符号語の先頭から並んでいる０の個数を調べるテーブルである。図３のビット列において、「ｘ」は任意のビットであり、「０」或いは「１」である。例えば、バッファ回路１０に符号語「０００１ｘｘｘ」が格納された場合、符号語の先頭から並んでいる０の個数は３である。つまり、符号語「０００１ｘｘｘ」のプレフィクス部のビット数Ｒａは３である。
【００２３】
符号語ＳＡのプレフィクス部のビット数Ｒａがバッファ回路１０に格納可能なビット数Ｂ１より大きい場合は、バッファ回路１０には「０」のみ格納される。その場合は、ビット数検出回路２１が、検出シフト回路２２にビット数Ｂ１を出力する。そして、検出シフト回路２２は加算器５０を用いてバッファ回路１０に格納される符号語ＳＡをビット数Ｂ１分更新する。つまり、符号語ＳＡのプレフィクス部の後続がバッファ回路１０に格納される。又、検出レジスタ２３にビット数Ｂ１が格納される。新たにバッファ回路１０に格納された符号語がすべて「０」の場合は、上記の手順が繰り返される。つまり、バッファ回路１０に格納された符号語ＳＡにおいて、境界ビット「１」が検出されるまで、バッファ回路１０はビット数Ｂ１分更新される。そして、検出レジスタ２３にビット数Ｂ１が加算される。符号語ＳＡの境界ビット「１」が検出された場合は、ビット数検出回路２１は、検出テーブルＴａを用いてバッファ回路１０に格納された符号語の先頭から並んでいる０の個数を検出する。検出された０の個数は、検出レジスタ２３に加算される。
【００２４】
上述したように、ビット数検出回路２１が検出した符号語ＳＡのプレフィクス部の０の個数は、加算器２４によって検出レジスタ２３に加算される。そのため、符号語ＳＡのプレフィクス部のビット数Ｒａがバッファ回路１０に格納可能なビット数Ｂ１より大きい場合でも、ビット数Ｒａは検出レジスタ２３に格納される。
【００２５】
図１に示す抽出回路３０は、抽出シフト回路３１、抽出レジスタ３２、加算器３３、ビット数レジスタ３４及び減算器３５を備える。抽出シフト回路３１に抽出レジスタ３２、加算器３３及びビット数レジスタ３４が接続される。又、加算器３３にバッファ回路１０及び抽出レジスタ３２が接続される。ビット数レジスタ３４に減算器３５及び検出レジスタ２３が接続される。
【００２６】
抽出回路３０は、バッファ回路１０から符号語ＳＡのサフィックス部の符号語Ｒｂを抽出する。抽出された符号語Ｒｂは、抽出レジスタ３２に格納される。既に説明したように、サフィックス部の符号語Ｒｂの符号長は、プレフィクス部のビット数Ｒａである。そのため、抽出回路３０は、Ｒａビット長さのビット列としてサフィックス部の符号語Ｒｂを抽出する。符号語ＳＡのサフィックス部の符号語Ｒｂのビット数がバッファ回路１０に格納可能なビット数Ｂ１より大きい場合は、サフィックス部の符号語Ｒｂ全体をバッファ回路１０に格納できない。その場合、抽出シフト回路３１が、バッファ回路１０を更新してサフィックス部の符号語Ｒｂを順次抽出する。そして、抽出回路３０は、サフィックス部の符号語Ｒｂを、抽出レジスタ３２に格納する。ビット数レジスタ３４はビット数Ｒａを格納する。
【００２７】
第１復号回路４０に検出レジスタ２３及び抽出レジスタ３２が接続される。そして、第１復号回路４０は、検出レジスタ２３から入力されるプレフィクス部のビット数Ｒａ、及び抽出レジスタ３２から入力されるサフィックス部の符号語Ｒｂに基づき、式（１）を用いて復号結果ＳＢを得る。
【００２８】
図１に示す復号装置により、可変長符号を復号する方法を以下に説明する。符号語ＳＡが図１に示す復号装置に入力され、バッファ回路１０に格納される。例えば、バッファ回路１０に格納可能なビット数Ｂ１が８ビット、符号語ＳＡが１９ビットのビット列「０００００００００１０１００１０１１０」の場合、図４(ａ）に示すように、バッファ回路１０に符号語ＳＡの先頭の８ビットであるビット列「００００００００」が格納される。そのため、検出レジスタ２３に８が格納される。そして検出シフト回路２２は、バッファ回路１０を８ビット分更新し、図４（ｂ）に示すようにバッファ回路１０にビット列「０１０１００１０」が格納される。そのため、ビット数検出回路２１は、検出テーブルＴａを参照して、バッファ回路１０に格納されたビット列「０１０１００１０」の先頭から並んでいる０の個数が１であることを検出する。検出された０の個数は、検出レジスタ２３に追加される。その結果、符号語ＳＡのプレフィクス部のビット数Ｒａ＝９が検出レジスタ２３に格納される。又、ビット数Ｒａは、検出レジスタ２３からビット数レジスタ３４に転送され、ビット数レジスタ３４にビット数Ｒａ＝９が格納される。
【００２９】
又、ビット列「０１０１００１０」から検出した０の個数に基づき、検出シフト回路２２がバッファ回路１０を１ビット分更新する。そのため、図４（ｃ）に示すようにバッファ回路１０にビット列「１０１００１０１」が格納される。更に、検出シフト回路２２は、境界ビット「１」をバッファ回路１０から除くために、バッファ回路１０を１ビット分更新する。その結果、図４（ｄ）に示すようにバッファ回路１０にビット列「０１００１０１１」が格納される。つまり、符号語ＳＡのサフィックス部の符号語Ｒｂであるビット列「０１００１０１１０」のうち、先頭の８ビットがバッファ回路１０の先頭に格納される。
【００３０】
ビット数Ｒａが検出された後、抽出回路３０が、ビット数レジスタ３４に格納されたビット数Ｒａを参照して、バッファ回路１０から符号語ＳＡのサフィックス部の符号語Ｒｂを取得する。上記の例のように、サフィックス部の符号語Ｒｂのビット数がビット数Ｂ１より大きい場合は、サフィックス部の符号語Ｒｂ全体をバッファ回路１０に格納できない。その場合は、抽出シフト回路３１がバッファ回路１０を更新してサフィックス部の符号語Ｒｂを取得する。
【００３１】
上記の例を用いて説明すると、抽出回路３０が、ビット数レジスタ３４に格納されたビット数Ｒａを参照して、バッファ回路１０に格納されたビット列「０１００１０１１」、つまり「７５」を取得する。次いで、抽出シフト回路３１が、取得したビット列のビット数、即ち８ビット分だけ、バッファ回路１０を更新する。その結果、図４（ｅ）に示すように、バッファ回路１０にビット列「０ｘｘｘｘｘｘｘ」が格納される。ここで、「ｘ」は符号語ＳＡの次にバッファ回路１０に格納された符号語のビットを示す。又、ビット数レジスタ３４から、抽出シフト回路３１がバッファ回路１０を更新したビット数である８が減算器３５によって減算される。その結果、ビット数レジスタ３４に１が格納される。
【００３２】
次いで、抽出回路３０が、ビット数レジスタ３４に格納されたビット数１を参照して、バッファ回路１０に格納されたビット列「０ｘｘｘｘｘｘｘ」の最初の１ビットである「０」を取得する。そして、抽出回路３０によって取得された「０」と、先に取得された７５を１ビット更新した値とが加算器３３で加算され、加算結果が抽出レジスタ３２に格納される。その結果、符号語ＳＡのサフィックス部の符号語Ｒｂ＝１５０が抽出レジスタ３２に格納される。
【００３３】
次いで、第１復号回路４０が、プレフィクス部のビット数Ｒａ、及びサフィックス部の符号語Ｒｂに基づき、式（１）を用いて符号語ＳＡを復号し、復号結果ＳＢを出力する。上記の例では、復号結果ＳＢ＝６６１である。その後、検出シフト回路２２が、ビット数Ｒａに基づきバッファ回路１０を更新し、次の復号対象の符号語をバッファ回路１０の先頭に格納する。
【００３４】
以上に説明したように、本発明の第１の実施の形態に係る可変長符号の復号装置では、バッファ回路１０を更新しながら、入力された符号語ＳＡのプレフィクス部のビット数Ｒａを検出する。更に、バッファ回路１０を更新しながらサフィックス部の符号語Ｒｂを抽出する。そのため、符号語ＳＡのビット数がバッファ回路１０に格納可能なビット数Ｂ１より大きい場合でも、復号することができる。又、バッファ回路１０に格納された符号語と検出テーブルＴａを比較することにより、符号語ＳＡのプレフィクス部のビット数Ｒａを検出する。そのため、汎用プロセッサのゼロ検出命令を使用してビット数Ｒａを検出する場合より、符号語ＳＡの復号に要するサイクル数を少なくできる。
【００３５】
（第２の実施の形態）
本発明の第２の実施の形態に係わる可変長符号の復号装置は、図５に示すように、第２復号回路４１、セレクタ６０、復号テーブルＴｂ及び符号語長テーブルＴｃを更に備える点が図１と異なる。その他の構成については、図１に示す第１の実施の形態と同様である。第２復号回路４１は、バッファ回路１０に符号語ＳＡ全体が格納された場合、即ち符号語ＳＡのビット数がバッファ回路１０に格納可能なビット数Ｂ１より少ない場合に、復号テーブルＴｂを用いて符号語ＳＡを復号する。セレクタ６０は、第１復号回路４０が出力する復号結果ＳＢａ、又は第２復号回路４１が出力する復号結果ＳＢｂのいずれかを、符号語ＳＡの復号結果ＳＢとして出力する。
【００３６】
復号テーブルＴｂは、例えば図６に示すような、バッファ回路１０に格納された符号語の復号結果を調べるテーブルである。第２復号回路４１は、バッファ回路１０に格納された符号語と復号テーブルＴｂのビット列を比較する。そして、バッファ回路１０に格納された符号語と一致するビット列が復号テーブルＴｂのビット列にある場合に、第２復号回路４１は、符号語と一致するビット列に対応する復号結果を復号テーブルＴｂから取得する。符号語と一致するビット列が復号テーブルＴｂに存在しない場合は、復号テーブルＴｂは復号結果として０を返す。復号対象の符号語のビット数がバッファ回路１０に格納可能なビット数Ｂ１より大きい場合は、符号語と一致するビット列が復号テーブルＴｂに存在しないため、復号テーブルＴｂは復号結果として０を返す。
【００３７】
図５に示す復号装置により、可変長符号を復号する方法を以下に説明する。図５に示す復号装置に復号対象の符号語ＳＡが入力され、バッファ回路１０に格納される。第２復号回路４１は、バッファ回路１０に格納された符号語ＳＡと一致するビット列が復号テーブルＴｂのビット列にある場合には、対応する復号結果ＳＢｂを復号テーブルＴｂから取得する。例えば、バッファ回路１０に符号語「０００１０１０１」が格納された場合は、第２復号回路４１は復号結果「９」を取得する。取得された復号結果ＳＢｂは、第２復号回路４１からセレクタ６０に出力される。
【００３８】
又、ビット数検出回路２１が、符号語長テーブルＴｃを参照して、バッファ回路１０に格納された符号語の符号長を検出する。符号語長テーブルＴｃは、例えば図７に示すような、バッファ回路１０に格納された符号語の符号長を調べるテーブルである。図７に示したビット列において、「ｘ」は任意のビットであり、「０」或いは「１」である。例えば、バッファ回路１０に格納されたビット列「０００１０１０１」は、符号語長テーブルＴｃのビット列「０００１ｘｘｘ」と一致する。そのため、バッファ回路１０に格納された符号語の符号長は７ビットである。検出シフト回路２２は、バッファ回路１０を７ビット分更新させ、次の復号対象の符号語をバッファ回路１０の先頭に格納する。
【００３９】
一方、バッファ回路１０に格納された符号語と一致するビット列が復号テーブルＴｂのビット列にない場合は、第１の実施の形態で説明した方法により、符号語を復号する。即ち、検出回路２０が符号語ＳＡのプレフィクス部のビット数Ｒａを検出する。次いで、抽出回路３０が、サフィックス部の符号語Ｒｂを抽出する。そして、第１復号回路４０が、プレフィクス部のビット数Ｒａ、及びサフィックス部の符号語Ｒｂに基づき、式（１）を用いて復号結果ＳＢａを取得する。得られた復号結果ＳＢａは、セレクタ６０に入力される。
【００４０】
セレクタ６０に、復号結果ＳＢａ又は復号結果ＳＢｂのいずれかが入力される。セレクタ６０は、復号結果ＳＢａ又は復号結果ＳＢｂのいずれかを、符号語ＳＡの復号結果ＳＢとして出力する。
【００４１】
本発明の第２の実施の形態に係る可変長符号の復号装置では、バッファ回路１０に格納された符号語の復号結果を調べる復号テーブルＴｂが使用される。そのため、復号対象の符号語ＳＡのビット数がバッファ回路１０に格納可能なビット数Ｂ１より少ない場合に、符号語ＳＡの復号を１サイクルで行うことができる。図１に示した復号装置では、プレフィクス部のビット数Ｒａの検出、及びサフィックス部の符号語Ｒｂの抽出にそれぞれ１サイクル以上を必要とするため、符号語ＳＡの復号に最低でも２サイクルが必要である。つまり、第２の実施の形態に係る可変長符号の復号装置によれば、符号語ＳＡの復号に要するサイクル数を少なくすることができる。他は、第１の実施の形態と実質的に同様であり、重複した記載を省略する。
【００４２】
（第３の実施の形態）
本発明の第３の実施の形態に係わる復号装置は、図８に示すように、第３復号回路４２、第２符号語復号テーブルＴｄ及び第２符号語長テーブルＴｅを更に備える点が図５と異なる。その他の構成については、図５に示す第２の実施の形態と同様である。第３復号回路４２は、バッファ回路１０に複数の符号語が格納された場合に、第２符号語復号テーブルＴｄを用いてバッファ回路１０に２番目に格納された符号語を復号する。
【００４３】
第２符号語復号テーブルＴｄは、例えば図９に示すような、バッファ回路１０に２番目に格納された符号語の復号結果を調べるテーブルである。図９に示したビット列において、「ｘ」は任意のビットであり、「０」或いは「１」である。第３復号回路４２は、バッファ回路１０に格納されたビット列と第２符号語復号テーブルＴｄのビット列を比較する。そして、バッファ回路１０に格納されたビット列と一致するビット列が第２符号語復号テーブルＴｄのビット列にある場合に、第３復号回路４２は、一致するビット列に対応する復号結果を第２符号語復号テーブルＴｄから取得する。
【００４４】
又、ビット数検出回路２１は、第２符号語長テーブルＴｅを参照して、バッファ回路１０に２番目に格納された符号語の符号長を検出する。第２符号語長テーブルＴｅは、例えば図１０に示すような、バッファ回路１０に２番目に格納された符号語の符号長を調べるテーブルである。図１０に示したビット列において、「ｘ」は任意のビットであり、「０」或いは「１」である。バッファ回路１０に２番目に格納された符号語が無い場合は、第２符号語長テーブルＴｅは符号語の符号長として０を返す。
【００４５】
図８に示す復号装置により、可変長符号を復号する方法を以下に説明する。以下では、図１１に示したように、ビット列「０１１」の符号語ＳＡ１、及びビット列「００１１０」の符号語ＳＡ２がバッファ回路１０に格納される場合について例示的に説明する。つまり、符号語長テーブルＴｃを用いて検出される符号語ＳＡ１の符号長、及び第２符号語長テーブルＴｅを用いて検出される符号語ＳＡ２の符号長がいずれも０でない場合である。
【００４６】
図８に示した復号装置に、復号対象の符号語ＳＡ１、ＳＡ２が入力され、図１１に示すようにバッファ回路１０にビット列「０１１００１１０」が格納される。検出回路２０は、図７に示した符号語長テーブルＴｃを参照して、バッファ回路１０に１番目に格納された符号語ＳＡ１の符号長３ビットを検出する。又、検出回路２０は、図１０に示した第２符号語長テーブルＴｅを参照して、バッファ回路１０に２番目に格納された符号語ＳＡ２の符号長を検出する。ビット列「０１１００１１０」は、図１０に示した第２符号語長テーブルＴｅのビット列「０１ｘ００１ｘｘ」と一致する。そのため、検出回路２０は、バッファ回路１０に２番目に格納された符号語ＳＡ２の符号長５ビットを検出する。
【００４７】
第２符号語長テーブルＴｅを用いて検出される符号語ＳＡ２の符号長が０でない場合、第３復号回路４２は、図９に示した第２符号語復号テーブルＴｄを参照して、バッファ回路１０に２番目に格納された符号語ＳＡ２の復号結果を取得する。バッファ回路１０に格納されたビット列は、図９に示した第２符号語復号テーブルＴｄのビット列「０１１００１１０」と一致する。そのため、第３復号回路４２はビット列「００１１０」の符号語ＳＡ２の復号結果ＳＢ２として「５」を取得する。そして、第３復号回路４２は復号結果ＳＢ２を出力する。第２符号語復号テーブルＴｄを用いることにより、第３復号回路４２は、１サイクルで符号語ＳＡ２を復号できる。
【００４８】
又、第２の実施の形態で説明した方法と同様にして、第２復号回路４１が、復号テーブルＴｂを用いて、バッファ回路１０に格納された符号語ＳＡを復号する。具体的には、第２復号回路４１は、符号語ＳＡ１と一致するビット列「０１１」に対応する検出結果「２」を、図６に示す復号テーブルＴｂを用いて取得する。そして、第２復号回路４１は、取得された検出結果「２」を、符号語ＳＡ１の復号結果ＳＢとして出力する。復号テーブルＴｂを用いることにより、第２復号回路４１は、１サイクルで符号語ＳＡ１を復号できる。
【００４９】
第２復号回路４１と第３復号回路４２は、同時に動作可能である。つまり、符号語ＳＡ１の復号と、符号語ＳＡ２の復号を同一サイクルで実行できる。
【００５０】
その後、検出回路２０は、符号語ＳＡ１の符号語の符号長３ビットと符号語ＳＡ２の符号語の符号長５ビットの合計８ビット分だけ、バッファ回路１０に格納されるビット列を更新させる。その結果、次の復号対象の符号語がバッファ回路１０の先頭に格納される。
【００５１】
一方、第２符号語長テーブルＴｅを用いて検出される符号語ＳＡ２の符号長が０、且つ符号語長テーブルＴｃを用いて検出される符号語ＳＡ１の符号長が０でない場合は、バッファ回路１０に１つの符号語ＳＡ１が含まれている。この場合には、第２の実施の形態で説明した方法と同様にして、第２復号回路４１が、復号テーブルＴｂを用いて符号語ＳＡ１を復号する。図８に示した復号装置は、符号語ＳＡ１の復号結果ＳＢ１を出力する。符号語ＳＡ２の復号結果ＳＢ２は出力されない。
【００５２】
符号語長テーブルＴｃを用いて検出される符号語ＳＡ１の符号長が０の場合は、符号語ＳＡ１のビット数がバッファ回路１０に格納可能なビット数Ｂ１より大きい場合である。この場合は、第１の実施の形態で説明した方法により、符号語ＳＡ１を復号する。即ち、検出回路２０が符号語ＳＡ１のプレフィクス部のビット数Ｒａを検出する。次いで、抽出回路３０が、サフィックス部の符号語Ｒｂを抽出する。そして、第１復号回路４０が、プレフィクス部のビット数Ｒａ、及びサフィックス部の符号語Ｒｂに基づき、式（１）を用いて復号結果ＳＢａを取得する。図８に示した復号装置は、復号結果ＳＢａを符号語ＳＡ１の出力結果ＳＢ１として出力する。符号語ＳＡ２の復号結果ＳＢ２は出力されない。
【００５３】
又、１つの符号語を復号する設定がされている場合は、第２の実施の形態で説明した方法と同様にして、図８に示した復号装置は、バッファ回路１０に格納された符号語ＳＡ１のみを復号する。
【００５４】
本発明の第３の実施の形態に係る可変長符号の復号装置では、バッファ回路１０に格納された符号語の復号結果を調べる復号テーブルＴｂ、及びバッファ回路１０に２番目に格納された符号語の復号結果を調べる第２符号語復号テーブルＴｄを使用して復号を行う。その結果、バッファ回路１０に複数の符号語が格納された場合に、２つの符号語の復号を１サイクルで同時に行うことができる。その結果、第３の実施の形態に係る可変長符号の復号装置によれば、符号語の復号に要するサイクル数を少なくすることができる。他は、第２の実施の形態と実質的に同様であるので、重複した記載を省略する。
【００５５】
（その他の実施の形態）
上記のように、本発明は第１乃至第３の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【００５６】
既に述べた第３の実施の形態の説明においては、復号テーブルＴｂ及び第２符号語復号テーブルＴｄを用いて、バッファ回路１０に格納された２つの符号語を同一サイクルで復号する復号装置を説明した。更に、バッファ回路１０に３番目に格納された符号語を復号する復号回路、或いはバッファ回路１０に４番目に格納された符号語を復号する復号回路等を備え、３つ以上の符号語を同一サイクルで復号する復号装置を実現することができる。
【００５７】
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００５８】
【図１】本発明の第１の実施の形態に係る可変長符号の復号装置の構成を示す模式図である。
【図２】本発明の第１の実施の形態に係る可変長符号の復号装置により復号される可変長符号の例を示すテーブルである。
【図３】本発明の第１の実施の形態に係る復号装置に用いる検出テーブルの例である。
【図４】本発明の第１の実施の形態に係る可変長符号の復号装置のバッファ回路に格納されたビット列を示す例であり、図４(ａ）はバッファ回路に符号語のプレフィクスの先頭が格納された状態を示し、図４(ｂ）はバッファ回路に符号語のプレフィクスの後続が格納された状態を示す。図４(ｃ）はバッファ回路の先頭に符号語の検出ビットが格納された状態を示す。図４(ｄ）はバッファ回路に符号語のサフィックスの先頭が格納された状態を示し、図４(ｅ）はバッファ回路に符号語のサフィックスの後続が格納された状態を示す。
【図５】本発明の第２の実施の形態に係る可変長符号の復号装置の構成を示す模式図である。
【図６】本発明の第２の実施の形態に係る可変長符号の復号装置に用いる第１の復号テーブルの例である。
【図７】本発明の第２の実施の形態に係る可変長符号の復号装置に用いる第１の符号語長テーブルの例である。
【図８】本発明の第３の実施の形態に係る可変長符号の復号装置の構成を示す模式図である。
【図９】本発明の第３の実施の形態に係る可変長符号の復号装置に用いる第２の復号テーブルの例である。
【図１０】本発明の第３の実施の形態に係る可変長符号の復号装置に用いる第２の符号語長テーブルの例である。
【図１１】本発明の第３の実施の形態に係る可変長符号の復号装置により復号される可変長符号の例を示すテーブルである。
【符号の説明】
【００５９】
Ｔａ…検出テーブル
Ｔｂ…復号テーブル
Ｔｃ…符号語長テーブル
Ｔｄ…第２符号語復号テーブル
Ｔｅ…第２符号語長テーブル
１０…バッファ回路
２０…検出回路
３０…抽出回路
４０…第１復号回路
４１…第２復号回路
４２…第３復号回路
【図１】
2006254225.tif 000003
【図２】
2006254225.tif 000004
【図３】
2006254225.tif 000005
【図４】
2006254225.tif 000006
【図５】
2006254225.tif 000007
【図６】
2006254225.tif 000008
【図７】
2006254225.tif 000009
【図８】
2006254225.tif 000010
【図９】
2006254225.tif 000011
【図１０】
2006254225.tif 000012
【図１１】
2006254225.tif 000013