JP4559652B2 - 可変長復号化回路 - Google Patents
可変長復号化回路 Download PDFInfo
- Publication number
- JP4559652B2 JP4559652B2 JP2001085942A JP2001085942A JP4559652B2 JP 4559652 B2 JP4559652 B2 JP 4559652B2 JP 2001085942 A JP2001085942 A JP 2001085942A JP 2001085942 A JP2001085942 A JP 2001085942A JP 4559652 B2 JP4559652 B2 JP 4559652B2
- Authority
- JP
- Japan
- Prior art keywords
- output
- barrel shifter
- value
- length
- register
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【発明の属する技術分野】
本発明は、可変長符号の復号化回路に関する。
【0002】
【従来の技術】
動画像を通信又は記録する際に、通信手段の帯域幅や記録媒体の容量を削減するために、画像を圧縮符号化することが行われている。国際標準の動画像の符号化方式として、H.261、MPEG(moving picture experts group)1、MPEG2などがある。
【0003】
これらの符号化方式は、動きベクトル検出及び動き補償、DCT(discrete cosine transform)、量子化、ジグザグスキャン、可変長符号化などを組合わせた方法である。可変長符号化は、量子化された固定長の符号語を、統計的性質に従った可変長の符号語のビットストリームに変換して平均的な符号量を減らす符号化方法である。このようなビットストリームを復号化し、動画像再生を行うには、可変長の符号語を元の固定長のデータに変換する可変長復号化を行うことが必要となる。可変長復号化では、符号語の長さが一定ではなく、ビットストリームにおける各可変長符号語の先頭位置が特定できないため、ビットストリーム内の順番に従って符号語を復号化する必要がある。
【0004】
この可変長復号化を高速に実現するために、種々の可変長復号化回路が考えられている。従来の可変長復号化回路の例として、米国特許5,245,338号公報に開示されたものがある。図11は、このような従来の可変長復号化回路の例のブロック図である。図11の可変長復号化回路は、最長符号長が16ビットの可変長符号を復号化するものである。
【0005】
バッファ901は、入力されたビットストリームを格納し、読み出し信号RDが“1”の場合には、その次のサイクルにおいて、格納しているビットストリームを16ビット単位で第1のバレルシフタ911及び第1の入力レジスタ912に出力する。バッファ901は、その出力を1サイクルの間保持する。
【0006】
第1の入力レジスタ912及び第2の入力レジスタ913は16ビット構成であり、更新信号が“1”の場合に次のサイクルで入力データを取り込む。
【0007】
第1のバレルシフタ911は、加算器914の加算結果SM(値:0〜31)をシフト量(値:1〜32)として用い、第2の入力レジスタ913の出力を上位16ビットとして、第1の入力レジスタ912の出力を中位16ビットとして、バッファ901の出力を下位16ビットとして連結した48ビットのデータのうち、最上位から(シフト量+1)ビット目〜(シフト量+16)ビット目の16ビットのデータを出力し、これを第1のバレルシフタレジスタ922に書き込む。ここで、連結して得られた48ビットのデータの最上位ビットを1ビット目としている。
【0008】
第2のバレルシフタ921は、シフト量レジスタ925の出力をシフト量(値:1〜16)として用い、第2のバレルシフタレジスタ923の出力を上位16ビットとして、第1のバレルシフタレジスタ922の出力を下位16ビットとして連結した32ビットのデータのうち、最上位から(シフト量+1)ビット目〜(シフト量+16)ビット目の16ビットのデータを出力し、これを第2のバレルシフタレジスタ923に書き込む。
【0009】
ルックアップテーブル924は、第2のバレルシフタ921の出力に対して可変長復号化を行い、復号結果DCと符号長CL(値:1〜16)とを出力し、この符号長をシフト量レジスタ925に書き込む。ルックアップテーブル924は、可変長の各符号語に対応して、その復号結果と符号長とを出力することができるように構成されたテーブルである。ルックアップテーブル924には、符号語の先頭のビットが最上位のビットとして入力されるようになっている。
【0010】
加算器914は、シフト量レジスタ925の出力(値:1〜16)と累算レジスタ915の出力(値:0〜15)とを加算し、加算結果SMを出力する。加算器914は、加算結果SMが16〜31の場合1となる桁上げ信号CRをホールドレジスタ916に書き込み、加算結果SMの16を法とする剰余RM(値:0〜15)を累算レジスタ915に書き込む。すなわち、5ビットのシフト量レジスタ925の出力と4ビットの累算レジスタ915の出力との加算によって得られた5ビットの加算結果SMのうち、最上位ビットが桁上げ信号CRとなり、残り4ビットが加算結果SMの16を法とする剰余RMとなる。桁上げ信号CRを第1の入力レジスタ912、第2の入力レジスタ913の更新信号とし、ホールドレジスタ916の出力である読み出し信号RDをバッファ901の読み出し信号とする。
【0011】
図12は、図11の可変長復号化回路におけるサイクル毎のデータフローの例を示す説明図である。例えば“a1−a8”は、a1,a2,a3,a4,a5,a6,a7,a8と連なる8ビットデータを表すものとする。図12において、例えば第0サイクルのバッファ出力が“a1−a8b1−b6c1−c2”という表示は、a1−a8、b1−b6、c1−c2が順に連なる16ビットのデータを表す。
【0012】
図12において、第0〜第2サイクルの更新信号、読み出し信号、第1のバレルシフタのシフト量、及び第2のバレルシフタのシフト量は、初期状態としてのデータを各レジスタに設定するために、それぞれ、“1”,“1”,“16”,及び“16”を用いる。第3サイクル以降は、処理の結果得られた桁上げ信号、読み出し信号、累算レジスタ、シフト量レジスタの値を用いて処理を繰り返す。
【0013】
このように、復号結果の出力が毎サイクル得られる。復号化開始時において、入力バッファ901が最初にデータを出力する第0サイクルから2サイクル後の第2サイクルで、最初の復号化出力が得られる。
【0014】
【発明が解決しようとする課題】
ところが、図11のような従来の可変長復号化回路では、入力レジスタを2個必要とし、第1のバレルシフタとして48ビット入力で16ビット出力の回路が必要である。このため、回路規模が大きくなり、LSIなどで実現する場合に回路が広いレイアウト面積を必要としてしまう。
【0015】
また、図11のような従来の可変長復号化回路では、復号化開始時には、入力バッファのデータが出力されてから2サイクル後に初めて復号化出力が得られる。ビットストリームには、可変長符号のストリームが複数含まれる場合においては、それぞれの可変長符号のストリームの間に、ヘッダ等の可変長符号以外の情報が含まれている。このような場合には、これらの可変長符号のストリームが連続しておらず、可変長復号化を連続して行うことができない。このため、可変長復号化を連続して行えない場合には、それぞれの可変長符号ストリームの復号化開始時に2サイクルの遅延が生じ、ビットストリーム全体の復号化に多くのサイクル数を必要としてしまう。
【0016】
本発明はこのような課題を解決するためのものであり、可変長復号化回路において、回路規模及びレイアウト面積を削減し、復号化出力の遅延を少なくすることを目的とする。
【0017】
【課題を解決するための手段】
前記課題を解決するため、請求項1の発明が講じた手段は、可変長符号の符号語が連続するビットストリームを順次復号化して出力する可変長復号化回路であって、復号化した可変長符号の符号語の符号長の累積値を求め、ビットストリームの連続する長さ2N又は2N−1ビット(Nは可変長符号の最長符号長)のデータから、前記累積値に応じて連続する長さNビットのデータを取り出して出力するインタフェース部と、前記インタフェース部の出力を入力とし、これとこれよりも前に入力された前記インタフェース部の出力とに含まれる符号語に対してルックアップテーブルを用いて復号化を行い、復号結果を出力するとともに、復号化された符号語の符号長を前記インタフェース部に出力する復号化部とを備え、前記インタフェース部は、前記累積値に応じて得られた剰余を格納し、出力する累算レジスタと、前記復号化部が出力する符号長と前記累算レジスタが出力する剰余とを加算して、前記累積値に対応した加算結果を求め、当該加算結果をNで割った商及び余りをそれぞれ桁上げ信号及び新たな剰余として出力する加算器と、前記桁上げ信号の値が1である場合に、ビットストリームの連続する長さN又はN−1ビットのデータを格納し、出力する入力レジスタと、前記入力レジスタの出力と、これに続くビットストリームの連続する長さNビットのデータとを、各ビットの順がビットストリームにおける順となるように連結し、前記累算レジスタが出力する剰余をシフト入力の値として用い、連結して得られたデータのうち、このシフト入力の値に応じたビットから連続する長さNビットのデータを取り出して前記復号化部に出力するバレルシフタとを備えたものである。
【0018】
請求項1の発明によると、ビットストリームの連続する長さ2N又は2N−1ビットのデータから、復号化部で必要な長さNビットのデータを取り出すので、回路の規模を小さくすることができる。桁上げ信号が入力レジスタの格納データの更新に用いられ、また、加算結果の剰余を累算レジスタに書き込むので、その1サイクル後に剰余がバレルシフタのシフト量として用いられる。このため、符号長の累積値が最長符号長を超え、最長符号長を超えるシフト量のシフトを行う必要がある場合に、バレルシフタで行うシフトは小さいシフト量で済む。入力レジスタを更新することにより最長符号長に等しいシフト量のシフトを行い、次のサイクルで残りのシフト量のシフトをバレルシフタにより実現することになるからである。したがって、バレルシフタのビット幅を小さくすることができる。また、入力レジスタが1個で済むので、初期設定のためのサイクル数が1サイクルで済む。
【0019】
また、請求項2の発明では、請求項1に記載の可変長復号化回路において、前記バレルシフタは、入力されたデータの先頭のビットから数えて、(M+2)番目(Mは前記シフト入力の値)のビットから連続する長さNビットのデータを出力することを特徴とする。
【0020】
請求項2の発明によると、インタフェース部は、シフト入力の値に応じて、復号化部が必要とするNビットのデータを選択して出力することができる。
【0021】
また、請求項3の発明では、請求項1に記載の可変長復号化回路において、前記復号化部は、バレルシフタと、バレルシフタレジスタと、ルックアップテーブルとを備え、前記復号化部のバレルシフタは、前記バレルシフタレジスタが出力するデータと、前記インタフェース部が出力するデータとを、各ビットの順がビットストリームにおける順となるように連結し、前記ルックアップテーブルが出力する符号長をシフト入力の値として用い、連結して得られたデータのうち、このシフト入力の値に応じたビットから連続する長さNビットのデータを取り出して出力するものであり、前記バレルシフタレジスタは、前記復号化部のバレルシフタの出力を格納し、出力するものであり、前記ルックアップテーブルは、前記バレルシフタレジスタの出力に含まれる符号語に対応した復号結果を出力するとともに、当該符号語の符号長を出力するものである。
【0022】
請求項3の発明によると、インタフェース部の出力を復号化部のバレルシフタに直結し、このバレルシフタの出力をバレルシフタレジスタに書き込むので、バレルシフタレジスタの数を削減することができる。
【0023】
また、請求項4の発明では、請求項3に記載の可変長復号化回路において、前記復号化部のバレルシフタは、入力されたデータの先頭のビットから数えて、(L+1)番目(Lは前記シフト入力の値)のビットから連続する長さNビットのデータを出力することを特徴とする。
【0024】
請求項4の発明によると、次に復号化すべき符号語を先頭とするNビットのデータをルックアップテーブルの入力とすることができる。
【0025】
また、請求項5の発明では、請求項3に記載の可変長復号化回路において、前記復号化部は、前記符号長から1を減じて出力する符号長変換回路を更に備え、前記復号化部のバレルシフタは、前記符号長の代わりに前記符号長変換回路の出力を前記シフト入力の値として用い、入力されたデータの先頭のビットから数えて、(L+2)番目のビットから連続する長さNビットのデータを出力することを特徴とする。
【0026】
請求項5の発明によると、バレルシフタへのシフト入力の値が小さくなる。特に、最長符号長が2のべきである場合には、シフト入力の値を表すためのビット数が小さくなり、バレルシフタへのシフト入力のビット幅を小さくすることができる。
【0027】
また、請求項6の発明では、請求項1に記載の可変長復号化回路において、前記復号化部は、バレルシフタと、第1及び第2のバレルシフタレジスタと、ルックアップテーブルと、シフト量レジスタとを備え、前記復号化部のバレルシフタは、前記第1及び第2のバレルシフタレジスタが出力するデータを、各ビットの順がビットストリームにおける順となるように連結し、前記シフト量レジスタの出力に応じた値をシフト入力の値として用い、連結して得られたデータのうち、このシフト入力の値に応じたビットから連続する長さNビットのデータを取り出して出力するものであり、前記第1のバレルシフタレジスタは、前記インタフェース部の出力を格納し、出力するものであり、前記第2のバレルシフタレジスタは、前記復号化部のバレルシフタの出力を格納し、出力するものであり、前記ルックアップテーブルは、前記復号化部のバレルシフタの出力に含まれる符号語に対応した復号結果を出力するとともに、当該符号語の符号長を出力するものであり、前記シフト量レジスタは、前記符号長に応じた値を格納し、出力するものである。
【0028】
請求項6の発明によると、インタフェース部が出力したデータから、復号化すべき可変長符号の符号語を含むNビットのデータを取り出し、順次復号化することができる。
【0029】
また、請求項7の発明では、請求項6に記載の可変長復号化回路において、前記シフト量レジスタは、前記符号長を格納し、出力するものであり、前記復号化部のバレルシフタは、前記シフト量レジスタの出力をシフト入力の値として用い、入力されたデータの先頭のビットから数えて、(L+1)番目(Lは前記シフト入力の値)のビットから連続する長さNビットのデータを出力することを特徴とする。
【0030】
請求項7の発明によると、次に復号化すべき符号語を先頭とするNビットのデータをルックアップテーブルの入力とすることができる。
【0031】
また、請求項8の発明では、請求項6に記載の可変長復号化回路において、前記復号化部は、前記符号長から1を減じて出力する符号長変換回路を更に備え、前記復号化部のバレルシフタは、前記符号長変換回路及び前記シフト量レジスタを介して入力された、1を減じられた符号長を前記シフト入力の値として用い、入力されたデータの先頭のビットから数えて、(L+2)番目のビットから連続する長さNビットのデータを出力することを特徴とする。
【0032】
請求項8の発明によると、バレルシフタへのシフト入力の値が小さくなる。特に、最長符号長が2のべきである場合には、シフト入力の値を表すためのビット数が小さくなり、バレルシフタへのシフト入力のビット幅を小さくすることができる。
【0033】
また、請求項9の発明は、請求項3又は6に記載の可変長復号化回路において、前記加算器は、前記復号化部が出力する符号長と前記累算レジスタが出力する剰余とを加算した値に1を加えた値を前記加算結果として求めるものであり、前記ルックアップテーブルは、前記符号長として、当該符号語の符号長から1を減じた値を出力するものである。
【0034】
請求項9の発明によると、バレルシフタへのシフト入力の値が小さくなる。特に、最長符号長が2のべきである場合には、シフト入力の値を表すためのビット数が小さくなり、バレルシフタへのシフト入力のビット幅を小さくすることができる。また、符号長を変換する回路を備える必要がない。
【0035】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照して説明する。
【0036】
(第1の実施形態)
図1は、本発明の第1の実施形態に係る可変長復号化回路のブロック図である。この可変長復号化回路は最長符号長Nが16ビットの可変長符号を復号化するものであるとして説明する。図1の可変長復号化回路は、インタフェース部110と、復号化部120とを備えている。インタフェース部110は、バレルシフタ111と、入力レジスタ112と、加算器114と、累算レジスタ115とを備えている。復号化部120は、バレルシフタ121と、バレルシフタレジスタ122と、ルックアップテーブル(以下では、LUTと称する)124とを備えている。
【0037】
図2は、入力ビットストリームの例を示す説明図である。ここで、a1等は1ビットデータを表し、例えば“a1−a8”は、a1,a2,a3,a4,a5,a6,a7,a8の8ビットのデータがこの順で連なっていることを表している。また、8ビットデータ“a1−a8”,6ビットデータ“b1−b6”,5ビットデータ“c1−c5”及び15ビットデータ“d1−d15”は、それぞれデータ“A”,“B”,“C”及び“D”に対応した、可変長の符号語であるとする。同様に、12ビットデータ“e1−e12”,10ビットデータ“f1−f10”,9ビットデータ“g1−g9”及び16ビットデータ“h1−h16”は、それぞれデータ“E”,“F”,“G”及び“H”に対応した、可変長の符号語であるとする。
【0038】
以下では、図2のように、データ“A”〜“H”に対応した、最長符号長が16ビットの可変長符号の符号語が連続しているビットストリームが入力されるものとして説明する。また、例えば“a1−a8b1−b6c1−c2”という表示は、a1−a8、b1−b6、c1−c2が順に連なる16ビットのデータを表す。
【0039】
図1において、バッファ101には、ビットストリームと、加算器114が出力する桁上げ信号CRとが入力されている。入力レジスタ112は、最長符号長に対応した16ビット構成であり、桁上げ信号CRが“1”の場合に、バッファ101が出力している16ビットの入力データをその次のサイクルで取り込む。
【0040】
バッファ101は、入力されたビットストリームを格納し、桁上げ信号CRが“1”の場合には、その次のサイクルにおいて、格納しているビットストリームを16ビット単位でバレルシフタ111及び入力レジスタ112に出力する。バッファ101は、その出力を1サイクルの間保持する。
【0041】
バレルシフタ111には、累算レジスタ115が出力する剰余RM(値:0〜15)(剰余RMが取り得る値を示す、以下同様)がシフト入力の値として入力されている。バレルシフタ111は、このシフト入力の値に1を加えた値をシフト量SH1(値:1〜16)として用い、入力レジスタ112の出力を上位16ビットとして、バッファ101の出力を下位16ビットとして連結した32ビットのデータのうち、(SH1+1)ビット目〜(SH1+16)ビット目の16ビットのデータをバレルシフタ121に出力する。ここで、連結して得られた32ビットのデータの最上位ビットを1ビット目としている。したがって、バレルシフタ111は、ビットストリームの連続する長さ32ビット(2Nビット)のデータのうち、シフト入力の値Mに応じて(M+2)番目のビットから連続する長さ16ビット(Nビット)のデータを取り出して出力することになる。
【0042】
バレルシフタレジスタ122は、最長符号長に対応して16ビットのデータを格納することができるようになっており、格納しているデータをバレルシフタ121及びLUT124に出力する。
【0043】
LUT124は、バレルシフタレジスタ122の出力に対して復号化を行い、得られた復号結果DCを出力するとともに、復号化された符号語の符号長CL(値:1〜16)をバレルシフタ121及び加算器114に出力する。LUT124には、符号語の先頭のビットが最上位のビットとして入力されるようになっている。LUT124は、可変長の各符号語に対応した、復号結果及び符号長を有するテーブルであり、入力された符号語とテーブル内の符号語とを上位のビットから順に照合し、一致するパターンがある場合に、その符号語に対応する復号結果DC及び符号長CLを出力する。LUT124は、例えばROM(read-only memory)や論理回路で構成することができる。
【0044】
バレルシフタ121には、LUT124が出力する符号長CL(値:1〜16)がシフト入力の値として入力されている。バレルシフタ121は、このシフト入力の値をシフト量SH2(値:1〜16)として用い、バレルシフタレジスタ122の出力を上位16ビットとして、バレルシフタ111の出力を下位16ビットとして連結した32ビットのデータのうち、(SH2+1)ビット目〜(SH2+16)ビット目までの16ビットのデータをシフト結果として出力する。ここで、連結して得られた32ビットのデータの最上位ビットを1ビット目としている。したがって、バレルシフタ121は、ビットストリームの連続する長さ32ビット(2Nビット)のデータのうち、シフト入力の値Lに応じて(L+1)番目のビットから連続する長さ16ビット(Nビット)のデータを取り出して出力することになる。バレルシフタ121は、このシフト結果をバレルシフタレジスタ122に書き込む。
【0045】
加算器114は、LUT124が出力する符号長CL(値:1〜16)と累算レジスタ115が出力する剰余RM(値:0〜15)とを加算し、加算結果SMを出力する。加算器114は、加算結果SMのうち、桁上げ信号CRをバッファ101及び入力レジスタ112に出力し、剰余RM(値:0〜15)を累算レジスタ115に書き込む。
【0046】
桁上げ信号CRは、加算結果SMが16〜31の場合に1となる信号(加算結果SMを最長符号長16で割った商)である。剰余RMは、加算結果SMを最長符号長16で割った余り(加算結果SMの最長符号長16を法とする剰余)である。したがって、剰余RMは、復号化した符号語の符号長の累積値を、最長符号長で割って得られる剰余に等しい。
【0047】
より具体的には、5ビットで表された符号長CLと、累算レジスタ115の出力である4ビットで表された剰余RMとの加算によって得られた5ビットの加算結果SMのうち、最上位ビットが桁上げ信号CRとなり、残り4ビットが加算結果SMの16を法とする新たな剰余RMとなる。
【0048】
図3は、図1の可変長復号化回路におけるサイクル毎のデータフローの例を示す説明図である。入力ビットストリームは、図2のように連なったものであるとする。
【0049】
図3において、初期状態としてのデータを各レジスタに設定するために、次のように初期条件が設定されている。すなわち、第0〜第1サイクルの桁上げ信号CR、第0〜第1サイクルのバレルシフタ111のシフト量SH1、及び第0サイクルのバレルシフタ121のシフト量SH2としては、それぞれ、“1”,“16”及び“16”を用いる。また、第0サイクルでバッファ101は出力を行い、第0〜1サイクルにおける累算レジスタ115の出力は“15”であるとする。以下、図3等において、データ“x”はどのようなデータであってもよいことを示す。以下、図3に基づいて図1の可変長復号化回路の動作を説明する。
【0050】
<第0サイクル>
初期条件により、バッファ101の出力はa1−a8b1−b6c1−c2となる。初期条件のバレルシフタ111のシフト量SH1の値“16”、バレルシフタ121のシフト量SH2の値“16”に従って、バレルシフタ111の出力はa1−a8b1−b6c1−c2となり、バレルシフタ121の出力もa1−a8b1−b6c1−c2となる。桁上げ信号CRの値は、初期条件から“1”とされる。
【0051】
<第1サイクル>
第0サイクルにおける桁上げ信号CRの値“1”に従って、入力レジスタ112はバッファ101の出力a1−a8b1−b6c1−c2を取り込み、バッファ101の出力はc3−c5d1−d13となる。
【0052】
バレルシフタレジスタ122は、バレルシフタ121が出力するa1−a8b1−b6c1−c2を取り込む。初期条件であるバレルシフタ111のシフト量SH1の値“16”に従って、バレルシフタ111はc3−c5d1−d13を出力する。バレルシフタレジスタ122の出力a1−a8b1−b6c1−c2に従って、LUT124の復号結果は“A”となり、LUT124が出力する符号長CLは“8”となる。符号長CLの値“8”に従って、バレルシフタ121はb1−b6c1−c5d1−d5を出力する。
【0053】
初期条件により、加算器114は符号長CLの値“8”と累算レジスタ115の出力“15”との加算結果SMの値“23”を出力する。桁上げ信号CRの値は“1”、剰余RMは“7”となる。
【0054】
<第2サイクル>
第1サイクルにおける桁上げ信号CRの値“1”に従って、入力レジスタ112はバッファ101の出力c3−c5d1−d13を取り込み、バッファ101の出力はd14−d15e1−e12f1−f2となる。
【0055】
バレルシフタレジスタ122は、バレルシフタ121が出力するb1−b6c1−c5d1−d5を取り込み、累算レジスタ115は、剰余RMの値“7”を取り込む。バレルシフタ111のシフト量SH1の値“8”に従って、バレルシフタ111はd6−d15e1−e6を出力する。バレルシフタレジスタ122の出力b1−b6c1−c5d1−d5に従って、LUT124の復号結果は“B”となり、LUT124が出力する符号長CLは“6”となる。符号長CLの値“6”に従って、バレルシフタ121はc1−c5d1−d11を出力する。
【0056】
加算器114は、符号長CLの値“6”と累算レジスタ115の出力“7”との加算結果SMの値“13”を出力し、桁上げ信号CRは“0”、剰余RMは“13”となる。
【0057】
<第3サイクル>
第3サイクルでは、第2サイクルで得られた桁上げ信号CRの値“0”に従って、入力レジスタ112、及びバッファ101の出力は更新されない。
【0058】
バレルシフタレジスタ122は、バレルシフタ121が出力するc1−c5d1−d11を取り込み、累算レジスタ115は、剰余RMの値“13”を取り込む。バレルシフタ111のシフト量SH1の値“14”に従って、バレルシフタ111はd12−d15e1−e12を出力する。バレルシフタレジスタ122の出力c1−c5d1−d11に従って、LUT124の復号結果は“C”となり、LUT124が出力する符号長CLは“5”となる。
【0059】
符号長CLの値“5”に従って、バレルシフタ121はd1−d15e1を出力する。加算器114は、符号長CLの値“5”と累算レジスタ115の出力“13”との加算結果SMの値“18”を出力し、桁上げ信号CRは“1”、剰余は“2”となる。
【0060】
次の第4サイクルにおいて、第3サイクルで得られた桁上げ信号CRの値“1”に従って、入力レジスタ112はd14−d15e1−e12f1−f2を取り込み、バッファ101の出力はf3−f10g1−g8となる。
【0061】
以降、図1の可変長復号化回路は、第2サイクル及び第3サイクルと同様に動作する。ただし、バッファ出力及び入力レジスタは、前のサイクルで得られた桁上げ信号CRが“1”となる場合は更新され、“0”となる場合は更新されない。
【0062】
このようにして第1サイクル以降、可変長復号した結果を毎サイクル出力することができる。特に復号化開始時において、入力バッファ101が最初にデータを出力する第0サイクルから1サイクル後の第1サイクルで、最初の復号化出力が得られる。
【0063】
以上のように、第1の実施形態によると、図11の従来の回路と比べて、16ビットの入力レジスタの数を2個から1個に削減でき、48ビット入力16ビット出力のバレルシフタの代わりに32ビット入力16ビット出力のバレルシフタを備えれば済む。また、復号化開始時に、入力バッファがデータを出力してから復号化出力が得られるまでに必要なサイクル数が、2サイクルであったのが1サイクルとなる。
【0064】
また、図11の従来の回路では2個のバレルシフタレジスタ及びシフト量レジスタが必要であったが、第1の実施形態によると、これらのレジスタの代わりにバレルシフタレジスタ1個を備えればよく、レジスタ数を削減することができる。
【0065】
(第1の実施形態の変形例)
図4は、第1の実施形態の変形例に係る可変長復号化回路のブロック図である。図4の可変長復号化回路は、図1の可変長復号化回路において、復号化部120の代わりに復号化部140を備えている。復号化部140は、復号化部120において、バレルシフタ121の代わりにバレルシフタ141を備えている。また、復号化部140は、符号長CLを入力とし、これを変換した値を符号長CLの代わりにバレルシフタ141に出力する符号長変換回路146を更に備えている。その他の構成要素については、図1を参照して説明したものと同じなので、その説明を省略する。
【0066】
図5は、符号長変換回路146についての説明図である。符号長変換回路146は、LUT124が出力する5ビットで表される符号長CL(値:1〜16)を入力とし、これから1を減じた値(値:0〜15)を出力する回路である。符号長変換回路146は、具体的には、値“1”を減算する回路やROMなどで実現することができる。
【0067】
バレルシフタ141は、符号長変換回路146が出力する4ビットで表される値(0〜15)をシフト入力とし、このシフト入力の値に1を加算した値をシフト量とするビットシフトを行い、シフト結果を出力する。したがって、バレルシフタ141は、ビットストリームの連続する長さ32ビット(2Nビット)のデータのうち、シフト入力の値Lに応じて(L+2)番目のビットから連続する長さ16ビット(Nビット)のデータを取り出して出力することになる。
【0068】
バレルシフタ111とバレルシフタ141とは、いずれも4ビットの値をシフト入力とし、16通りのビットシフトを行うことができるバレルシフタであり、同じものを用いることができる。したがって、図1の回路と比べると、回路の規則性が向上し、回路面積を縮小することができる。
【0069】
(第2の実施形態)
図6は、本発明の第2の実施形態に係る可変長復号化回路のブロック図である。この可変長復号化回路は最長符号長が16ビットの可変長符号を復号化するものであるとして説明する。図6の可変長復号化回路は、インタフェース部110と、復号化部220とを備えている。復号化部220は、バレルシフタ221と、第1のバレルシフタレジスタ222と、第2のバレルシフタレジスタ223と、LUT224と、シフト量レジスタ225とを備えている。バッファ101及びインタフェース部110は、図1を参照して説明したものと同じであるので、その説明を省略する。
【0070】
第1のバレルシフタレジスタ222及び第2のバレルシフタレジスタ223は、最長符号長に対応して16ビットのデータを格納することができるようになっている。第1のバレルシフタレジスタ222は、バレルシフタ111が出力する16ビットのデータを格納する。第1のバレルシフタレジスタ222及び第2のバレルシフタレジスタ223は、格納しているデータをバレルシフタ221に出力する。
【0071】
バレルシフタ221には、シフト量レジスタ225の出力(値:1〜16)がシフト入力の値として入力されている。バレルシフタ221は、このシフト入力の値をシフト量SH3(値:1〜16)として用い、第2のバレルシフタレジスタ223の出力を上位16ビットとして、第1のバレルシフタレジスタ222の出力を下位16ビットとして連結した32ビットのデータのうち、(SH3+1)ビット目〜(SH3+16)ビット目までの16ビットのデータをシフト結果として出力する。ここで、連結して得られた32ビットのデータの最上位ビットを1ビット目としている。
【0072】
したがって、バレルシフタ221は、ビットストリームの連続する長さ32ビット(2Nビット)のデータのうち、シフト入力の値Lに応じて(L+1)番目のビットから連続する長さ16ビット(Nビット)のデータを取り出して出力することになる。バレルシフタ221は、このシフト結果を第2のバレルシフタレジスタ223に書き込むとともに、LUT224に出力する。
【0073】
LUT224は、バレルシフタ221の出力に対して復号化を行い、得られた復号結果DCを出力し、復号化された符号語の符号長CL(値:1〜16)をシフト量レジスタ225に書き込むとともに、加算器114に出力する。LUT224は、可変長の各符号語に対応した、復号結果及び符号長を有するテーブルである。LUT224は、図1のLUT124と同様のものである。
【0074】
図7は、図6の可変長復号化回路におけるサイクル毎のデータフローの例を示す説明図である。入力ビットストリームは、第1の実施形態で説明したものと同様であり、図2のように連なったものであるとする。
【0075】
図7において、初期状態としてのデータを各レジスタに設定するために、次のように初期条件が設定されている。すなわち、第0〜第1サイクルの桁上げ信号CR、第0〜第1サイクルのバレルシフタ111のシフト量SH1、及び第1サイクルのバレルシフタ221のシフト量SH3としては、それぞれ、“1”,“16”及び“16”を用いる。また、第0サイクルでバッファ101は出力を行い、第0〜1サイクルにおける累算レジスタ115の出力は“15”であるとする。以下、図7に基づいて図6の可変長復号化回路の動作を説明する。
【0076】
<第0サイクル>
初期条件により、バッファ101の出力はa1−a8b1−b6c1−c2となる。初期条件のバレルシフタ111のシフト量SH1の値“16”に従って、バレルシフタ111の出力はa1−a8b1−b6c1−c2となる。桁上げ信号CRの値は、初期条件から“1”とされる。
【0077】
<第1サイクル>
第0サイクルにおける桁上げ信号CRの値“1”に従って、入力レジスタ112はバッファ101の出力a1−a8b1−b6c1−c2を取り込み、バッファ101の出力はc3−c5d1−d13となる。
【0078】
第1のバレルシフタレジスタ222は、バレルシフタ111が出力するa1−a8b1−b6c1−c2を取り込む。初期条件であるバレルシフタ111のシフト量SH1の値“16”に従って、バレルシフタ111はc3−c5d1−d13を出力する。初期条件であるバレルシフタ221のシフト量SH3の値“16”に従って、バレルシフタ221はa1−a8b1−b6c1−c2を出力する。バレルシフタ221の出力a1−a8b1−b6c1−c2に従って、LUT224の復号結果は“A”となり、LUT224が出力する符号長CLは“8”となる。
【0079】
初期条件により、加算器114は符号長CLの値“8”と累算レジスタ115の出力“15”との加算結果SMの値“23”を出力する。桁上げ信号CRの値は“1”、剰余RMは“7”となる。
【0080】
<第2サイクル>
第1サイクルにおける桁上げ信号CRの値“1”に従って、入力レジスタ112はバッファ101の出力c3−c5d1−d13を取り込み、バッファ101の出力はd14−d15e1−e12f1−f2となる。
【0081】
第1のバレルシフタレジスタ222は、バレルシフタ111が出力するc3−c5d1−d13を取り込み、第2のバレルシフタレジスタ223は、バレルシフタ221が出力するa1−a8b1−b6c1−c2を取り込む。シフト量レジスタ225は符号長CLの値“8”を取り込み、累算レジスタ115は剰余RMの値“7”を取り込む。
【0082】
バレルシフタ111のシフト量SH1の値“8”に従って、バレルシフタ111はd6−d15e1−e6を出力する。シフト量レジスタ225が出力するシフト量SH3の値“8”に従って、バレルシフタ221はb1−b6c1−c5d1−d5を出力する。バレルシフタ221の出力b1−b6c1−c5d1−d5に従って、LUT224の復号結果は“B”となり、LUT224が出力する符号長CLは“6”となる。
【0083】
加算器114は、符号長CLの値“6”と累算レジスタ115の出力“7”との加算結果SMの値“13”を出力し、桁上げ信号CRは“0”、剰余RMは“13”となる。
【0084】
<第3サイクル>
第3サイクルでは、第2サイクルで得られた桁上げ信号CRの値“0”に従って、入力レジスタ112、及びバッファ101の出力は更新されない。
【0085】
第1のバレルシフタレジスタ222は、バレルシフタ111が出力するd6−d15e1−e6を取り込み、第2のバレルシフタレジスタ223は、バレルシフタ221が出力するb1−b6c1−c5d1−d5を取り込む。シフト量レジスタ225は符号長CLの値“6”を取り込み、累算レジスタ115は剰余RMの値“13”を取り込む。
【0086】
バレルシフタ111のシフト量SH1の値“14”に従って、バレルシフタ111はd12−d15e1−e12を出力する。シフト量レジスタ225が出力するシフト量SH3の値“6”に従って、バレルシフタ221はc1−c51−d11を出力する。バレルシフタ221の出力c1−c5d1−d11に従って、LUT224の復号結果は“C”となり、LUT224が出力する符号長CLは“5”となる。
【0087】
加算器114は、符号長CLの値“5”と累算レジスタ115の出力“13”との加算結果SMの値“18”を出力し、桁上げ信号CRは“1”、剰余RMは“2”となる。
【0088】
次の第4サイクルにおいて、第3サイクルで得られた桁上げ信号CRの値“1”に従って、入力レジスタ112はd14−d15e1−e12f1−f2を取り込み、バッファ101の出力はf3−f10g1−g8となる。
【0089】
以降、図6の可変長復号化回路は、第2サイクル及び第3サイクルと同様に動作する。ただし、バッファ出力及び入力レジスタは、前のサイクルで得られた桁上げ信号CRが“1”となる場合は更新され、“0”となる場合は更新されない。
【0090】
このようにして第1サイクル以降、可変長復号した結果を毎サイクル出力することができる。特に復号化開始時において、入力バッファ101が最初にデータを出力する第0サイクルから1サイクル後の第1サイクルで、最初の復号化出力が得られる。
【0091】
(第2の実施形態の変形例)
図8は、第2実施形態の変形例に係る可変長復号化回路のブロック図である。図8の可変長復号化回路は、図6の可変長復号化回路において、復号化部220の代わりに復号化部240を備えている。復号化部240は、復号化部220において、バレルシフタ221の代わりにバレルシフタ241を備えている。また、復号化部240は、符号長CLを入力とし、これを変換した値を符号長CLの代わりにシフト量レジスタ225に出力する符号長変換回路146を更に備えている。その他の構成要素については、図6を参照して説明したものと同じであり、符号長変換回路146は、図5を参照して説明したものと同じであるので、その説明を省略する。
【0092】
バレルシフタ241は、符号長変換回路146が符号長CLを変換して生成した4ビットで表される値(0〜15)をシフト入力とし、このシフト入力の値に1を加算した値をシフト量とするビットシフトを行い、シフト結果を出力する。したがって、バレルシフタ241は、ビットストリームの連続する長さ32ビット(2Nビット)のデータのうち、シフト入力の値Lに応じて(L+2)番目のビットから連続する長さ16ビット(Nビット)のデータを取り出して出力することになる。
【0093】
バレルシフタ111とバレルシフタ241とは、いずれも4ビットの値をシフト入力とし、16通りのビットシフトを行うことができるバレルシフタであり、同じものを用いることができる。したがって、図6の回路と比べると、回路の規則性が向上し、回路面積を縮小することができる。
【0094】
なお、図8の回路では、符号長変換回路146に符号長CLを出力し、符号長変換回路146の出力をシフト量レジスタ225に与えるようにしているが、符号長変換回路146をシフト量レジスタ225とバレルシフタ241との間に備えるようにしてもよい。
【0095】
(第3の実施形態)
図9は、本発明の第3の実施形態に係る可変長復号化回路のブロック図である。図9の可変長復号化回路は、インタフェース部310と、復号化部320とを備えている。インタフェース部310は、バレルシフタ311と、入力レジスタ312と、加算器314と、累算レジスタ315とを備えている。復号化部320は、バレルシフタ321と、バレルシフタレジスタ322と、LUT324とを備えている。
【0096】
図9の可変長復号化回路は、図1の可変長復号化回路において、加算器114、バレルシフタ121及びLUT124の代わりに、加算器314、バレルシフタ321及びLUT324を備えたものである。図9の可変長復号化回路は、復号化した符号語の実際の符号長(1〜16)を、これから1を減じた値(0〜15)で表現する点に特徴がある。
【0097】
図9において、バッファ101には、ビットストリームと、加算器314が出力する桁上げ信号CRとが入力されている。入力レジスタ312は、最長符号長に対応した16ビット構成であり、桁上げ信号CRが“1”の場合に、バッファ101が出力している16ビットの入力データをその次のサイクルで取り込む。
【0098】
バッファ101は、入力されたビットストリームを格納し、桁上げ信号CRが“1”の場合に、その次のサイクルにおいて、格納しているビットストリームを16ビット単位でバレルシフタ311及び入力レジスタ312に出力する。バッファ101は、その出力を1サイクルの間保持する。
【0099】
バレルシフタ311には、累算レジスタ315が出力する剰余RM(値:0〜15)がシフト入力の値として入力されている。バレルシフタ311は、このシフト入力の値に1を加えた値をシフト量SH4(値:1〜16)として用い、入力レジスタ312の出力を上位16ビットとして、バッファ101の出力を下位16ビットとして連結した32ビットのデータのうち、(SH4+1)ビット目〜(SH4+16)ビット目の16ビットのデータをバレルシフタ321に出力する。ここで、連結して得られた32ビットのデータの最上位ビットを1ビット目としている。
【0100】
バレルシフタレジスタ322は、最長符号長に対応して16ビットのデータを格納することができるようになっており、格納しているデータをバレルシフタ321及びLUT324に出力する。
【0101】
LUT324は、バレルシフタレジスタ322の出力に対して復号化を行い、得られた復号結果DCを出力するとともに、復号化された符号語の実際の符号長から1を減じた数を符号長CL(値:0〜15)としてバレルシフタ321及び加算器314に出力する。LUT324は例えば、可変長の各符号語に対応した、復号結果及び符号長から1を減じた数を有するテーブルである。LUT324は、図1のLUT124とは、実際の符号長から1を減じた数を出力する点が異なり、その他の点は同様である。
【0102】
バレルシフタ321には、LUT324が出力する符号長CL(値:0〜15)がシフト入力として入力されている。バレルシフタ321は、このシフト入力の値に1を加えた値をシフト量SH5(値:1〜16)として用い、バレルシフタレジスタ322の出力を上位16ビットとして、バレルシフタ311の出力を下位16ビットとして連結した32ビットのデータのうち、(SH5+1)ビット目〜(SH5+16)ビット目までの16ビットのデータをシフト結果として出力する。ここで、連結して得られた32ビットのデータの最上位ビットを1ビット目としている。バレルシフタ321は、このシフト結果をバレルシフタレジスタ322に書き込む。
【0103】
加算器314は、LUT324が出力する符号長CL(値:0〜15)と、累算レジスタ315が出力する剰余RM(値:0〜15)と、定数“1”とを加算し、加算結果SMを出力する。加算器314は、加算結果SMのうち、桁上げ信号CRをバッファ101及び入力レジスタ312に出力し、剰余RM(値:0〜15)を累算レジスタ315に書き込む。
【0104】
すなわち、4ビットで表された符号長CLと、累算レジスタ315の出力である4ビットで表された剰余RMと、定数“1”との加算によって得られた5ビットの加算結果SMのうち、最上位ビットが桁上げ信号CRとなり、残り4ビットが加算結果SMの16を法とする新たな剰余RMとなる。
【0105】
以上のように、図9の可変長復号化回路においては、LUT324は、復号化した符号語の符号長から1を減じた値を符号長として出力する。すなわち、符号長“1”〜“16”の符号語に対応して、符号長CLの値をそれぞれ“0”〜“15”として出力する。バレルシフタ321は、シフト量として値(0〜15)が入力された場合に、この値に1を加えた数(1〜16)のビット数のシフトを実行する。また、加算器314は、LUT324が出力する符号長(0〜15)と累算レジスタ315の出力(0〜15)と定数“1”とを加算する。これらの点を除くと、図9の可変長復号化回路の動作は、第1の実施形態において図3を参照して説明したものと同様であるので、その説明を省略する。
【0106】
以上のように構成された図9の可変長復号化回路によると、バレルシフタ311とバレルシフタ321とは、いずれも4ビットの値(0〜15)をシフト入力とし、16通りのビットシフトを行うことができるバレルシフタであり、同じものを用いることができる。したがって、回路の規則性向上による回路面積の削減を図ることができる。また、図4の回路のように、符号長変換回路146を備える必要がない。
【0107】
(第4の実施形態)
図10は、本発明の第4の実施形態に係る可変長復号化回路のブロック図である。図10の可変長復号化回路は、インタフェース部310と、復号化部420とを備えている。復号化部420は、バレルシフタ421と、第1のバレルシフタレジスタ422と、第2のバレルシフタレジスタ423と、LUT424と、シフト量レジスタ425とを備えている。バッファ101及びインタフェース部310は、図9を参照して説明したものと同じであるので、その説明を省略する。
【0108】
図10の可変長復号化回路は、図6の可変長復号化回路において、加算器114、バレルシフタ221及びLUT224の代わりに、加算器314、バレルシフタ421及びLUT424を備えたものである。図10の可変長復号化回路は、図9の回路と同様に、復号化した符号語の実際の符号長(1〜16)を、これから1を減じた値(0〜15)で表現する点に特徴がある。
【0109】
第1のバレルシフタレジスタ422及び第2のバレルシフタレジスタ423は、最長符号長に対応して16ビットのデータを格納することができるようになっている。第1のバレルシフタレジスタ422は、バレルシフタ311が出力する16ビットのデータを格納する。第1のバレルシフタレジスタ422及び第2のバレルシフタレジスタ423は、格納しているデータをバレルシフタ421に出力する。
【0110】
バレルシフタ421には、シフト量レジスタ425の出力(値:0〜15)がシフト入力の値として入力されている。バレルシフタ421は、このシフト入力の値に1を加えた値をシフト量SH6(値:1〜16)として用い、第2のバレルシフタレジスタ423の出力を上位16ビットとして、第1のバレルシフタレジスタ422の出力を下位16ビットとして連結した32ビットのデータのうち、(SH6+1)ビット目〜(SH6+16)ビット目までの16ビットのデータをシフト結果として出力する。ここで、連結して得られた32ビットのデータの最上位ビットを1ビット目としている。バレルシフタ421は、このシフト結果を第2のバレルシフタレジスタ423に書き込むとともに、LUT424に出力する。
【0111】
LUT424は、バレルシフタ421の出力に対して復号化を行い、得られた復号結果DCを出力し、復号化された符号語の実際の符号長から1を減じた数を符号長CL(値:0〜15)としてシフト量レジスタ425に書き込むとともに、加算器314に出力する。LUT424は、図9のLUT324と同様のものである。
【0112】
このように、図10の可変長復号化回路においては、LUT424は、復号化した符号語の符号長から1を減じた値を符号長として出力する。すなわち、符号長“1”〜“16”の符号語に対応して、符号長CLの値をそれぞれ“0”〜“15”として出力する。バレルシフタ421は、シフト量として値(0〜15)が入力された場合に、それぞれの値に1を加えた数(1〜16)のビット数のシフトを実行する。また、加算器314は、LUT424が出力する符号長(0〜15)と累算レジスタ315の出力(0〜15)と定数“1”とを加算する。これらの点を除くと、図10の可変長復号化回路の動作は、第2の実施形態において図7を参照して説明したものと同様であるので、その説明を省略する。
【0113】
以上のように構成された図10の可変長復号化回路によると、バレルシフタ311とバレルシフタ421とは、いずれも4ビットの値(0〜15)をシフト入力とし、16通りのビットシフトを行うことができるバレルシフタであり、同じものを用いることができる。したがって、回路の規則性向上による回路面積の削減を図ることができる。また、図8の回路のように、符号長変換回路146を備える必要がない。
【0114】
なお、以上の第1〜第4の実施形態においては、説明の簡便化のために各レジスタ幅は最長符号長Nに等しいとした。しかし、入力レジスタ、並びに第2及び第4の実施形態における第2のバレルシフタレジスタが出力したデータは、バレルシフタにおいて必ず1ビット以上シフトされるので、バレルシフタはこれらのレジスタが出力するデータの最上位ビットを出力することがない。したがって、これらのレジスタは、最上位ビットが不要であり、レジスタ幅を(N−1)ビットとしてもよい。すると、さらに回路規模を小さくし、回路面積を減らすことができる。この場合、バレルシフタには、最上位ビット以外のビットにデータが入力されるようにすればよい。
【0115】
また、以上の実施形態では、最長符号長が16であるとして説明したが、最長符号長は他の値であってもよい。最長符号長が16のような2のべきでない場合は、最長符号長以上の2のべきの値を仮の最長符号長として用いることとすればよい。このとき、入力レジスタ及びバレルシフタレジスタのレジスタ幅は仮の最長符号長に対応させる必要がある。また、加算器が、最長符号長を法とした加算結果に対する剰余を出力する機能を有するようにしてもよい。このとき、累算レジスタのレジスタ幅はこの剰余を格納できるようなものにする必要がある。
【0116】
【発明の効果】
以上説明したように、本発明によると、可変長復号化回路においてレジスタ数を削減し、バレルシフタの規模を小さくすることができる。したがって、可変長復号化回路の規模を小さくし、回路のレイアウト面積を小さくすることができる。また、復号化開始時に、ビットストリームが入力されてから最初に復号化出力を得るまでのサイクル数を削減することができる。
【図面の簡単な説明】
【図1】 本発明の第1の実施形態に係る可変長復号化回路のブロック図である。
【図2】 入力ビットストリームの例を示す説明図である。
【図3】 図1の可変長復号化回路におけるサイクル毎のデータフローの例を示す説明図である。
【図4】 第1の実施形態の変形例に係る可変長復号化回路のブロック図である。
【図5】 符号長変換回路についての説明図である。
【図6】 本発明の第2の実施形態に係る可変長復号化回路のブロック図である。
【図7】 図6の可変長復号化回路におけるサイクル毎のデータフローの例を示す説明図である。
【図8】 第2実施形態の変形例に係る可変長復号化回路のブロック図である。
【図9】 本発明の第3の実施形態に係る可変長復号化回路のブロック図である。
【図10】 本発明の第4の実施形態に係る可変長復号化回路のブロック図である。
【図11】 従来の可変長復号化回路の例のブロック図である。
【図12】 図11の可変長復号化回路におけるサイクル毎のデータフローの例を示す説明図である。
【符号の説明】
101 バッファ
110,310 インタフェース部
120,140,220,240,320,420 復号化部
111,121,141,221,241,311,321,421 バレルシフタ
112,312 入力レジスタ
114,314 加算器
115,315 累算レジスタ
122,322 バレルシフタレジスタ
124,224,324,424 ルックアップテーブル(LUT)
146 符号長変換回路
222,422 第1のバレルシフタレジスタ
223,423 第2のバレルシフタレジスタ
225,425 シフト量レジスタ
DC 復号結果
CL 符号長
SM 加算結果
CR 桁上げ信号
RM 剰余
Claims (9)
- 可変長符号の符号語が連続するビットストリームを順次復号化して出力する可変長復号化回路であって、
復号化した符号語の符号長の累積値を求め、ビットストリームの連続する長さ2N又は2N−1ビット(Nは可変長符号の最長符号長)のデータから、前記累積値に応じて連続する長さNビットのデータを取り出して出力するインタフェース部と、
前記インタフェース部の出力を入力とし、これとこれよりも前に入力された前記インタフェース部の出力とに含まれる符号語に対してルックアップテーブルを用いて復号化を行い、復号結果を出力するとともに、復号化された符号語の符号長を前記インタフェース部に出力する復号化部とを備え、
前記インタフェース部は、
前記累積値に応じて得られた剰余を格納し、出力する累算レジスタと、
前記復号化部が出力する符号長と前記累算レジスタが出力する剰余とを加算して、前記累積値に対応した加算結果を求め、当該加算結果をNで割った商及び余りをそれぞれ桁上げ信号及び新たな剰余として出力する加算器と、
前記桁上げ信号の値が1である場合に、ビットストリームの連続する長さN又はN−1ビットのデータを格納し、出力する入力レジスタと、
前記入力レジスタの出力と、これに続くビットストリームの連続する長さNビットのデータとを、各ビットの順がビットストリームにおける順となるように連結し、前記累算レジスタが出力する剰余をシフト入力の値として用い、連結して得られたデータのうち、このシフト入力の値に応じたビットから連続する長さNビットのデータを取り出して前記復号化部に出力するバレルシフタとを備えた
ことを特徴とする可変長復号化回路。 - 請求項1に記載の可変長復号化回路において、
前記バレルシフタは、
入力されたデータの先頭のビットから数えて、(M+2)番目(Mは前記シフト入力の値)のビットから連続する長さNビットのデータを出力する
ことを特徴とする可変長復号化回路。 - 請求項1に記載の可変長復号化回路において、
前記復号化部は、
バレルシフタと、バレルシフタレジスタと、ルックアップテーブルとを備え、
前記復号化部のバレルシフタは、
前記バレルシフタレジスタが出力するデータと、前記インタフェース部が出力するデータとを、各ビットの順がビットストリームにおける順となるように連結し、前記ルックアップテーブルが出力する符号長をシフト入力の値として用い、連結して得られたデータのうち、このシフト入力の値に応じたビットから連続する長さNビットのデータを取り出して出力するものであり、
前記バレルシフタレジスタは、
前記復号化部のバレルシフタの出力を格納し、出力するものであり、
前記ルックアップテーブルは、
前記バレルシフタレジスタの出力に含まれる符号語に対応した復号結果を出力するとともに、当該符号語の符号長を出力するものである
ことを特徴とする可変長復号化回路。 - 請求項3に記載の可変長復号化回路において、
前記復号化部のバレルシフタは、
入力されたデータの先頭のビットから数えて、(L+1)番目(Lは前記シフト入力の値)のビットから連続する長さNビットのデータを出力する
ことを特徴とする可変長復号化回路。 - 請求項3に記載の可変長復号化回路において、
前記復号化部は、
前記符号長から1を減じて出力する符号長変換回路を更に備え、
前記復号化部のバレルシフタは、
前記符号長の代わりに前記符号長変換回路の出力を前記シフト入力の値として用い、
入力されたデータの先頭のビットから数えて、(L+2)番目のビットから連続する長さNビットのデータを出力する
ことを特徴とする可変長復号化回路。 - 請求項1に記載の可変長復号化回路において、
前記復号化部は、
バレルシフタと、第1及び第2のバレルシフタレジスタと、ルックアップテーブルと、シフト量レジスタとを備え、
前記復号化部のバレルシフタは、
前記第1及び第2のバレルシフタレジスタが出力するデータを、各ビットの順がビットストリームにおける順となるように連結し、前記シフト量レジスタの出力に応じた値をシフト入力の値として用い、連結して得られたデータのうち、このシフト入力の値に応じたビットから連続する長さNビットのデータを取り出して出力するものであり、
前記第1のバレルシフタレジスタは、
前記インタフェース部の出力を格納し、出力するものであり、
前記第2のバレルシフタレジスタは、
前記復号化部のバレルシフタの出力を格納し、出力するものであり、
前記ルックアップテーブルは、
前記復号化部のバレルシフタの出力に含まれる符号語に対応した復号結果を出力するとともに、当該符号語の符号長を出力するものであり、
前記シフト量レジスタは、
前記符号長に応じた値を格納し、出力するものである
ことを特徴とする可変長復号化回路。 - 請求項6に記載の可変長復号化回路において、
前記シフト量レジスタは、
前記符号長を格納し、出力するものであり、
前記復号化部のバレルシフタは、
前記シフト量レジスタの出力をシフト入力の値として用い、
入力されたデータの先頭のビットから数えて、(L+1)番目(Lは前記シフト入力の値)のビットから連続する長さNビットのデータを出力する
ことを特徴とする可変長復号化回路。 - 請求項6に記載の可変長復号化回路において、
前記復号化部は、
前記符号長から1を減じて出力する符号長変換回路を更に備え、
前記復号化部のバレルシフタは、
前記符号長変換回路及び前記シフト量レジスタを介して入力された、1を減じられた符号長を前記シフト入力の値として用い、
入力されたデータの先頭のビットから数えて、(L+2)番目のビットから連続する長さNビットのデータを出力する
ことを特徴とする可変長復号化回路。 - 請求項3又は6に記載の可変長復号化回路において、
前記加算器は、
前記復号化部が出力する符号長と前記累算レジスタが出力する剰余とを加算した値に1を加えた値を前記加算結果として求めるものであり、
前記ルックアップテーブルは、
前記符号長として、当該符号語の符号長から1を減じた値を出力するものである
ことを特徴とする可変長復号化回路。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2001085942A JP4559652B2 (ja) | 2000-03-24 | 2001-03-23 | 可変長復号化回路 |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000084343 | 2000-03-24 | ||
| JP2000-84343 | 2000-03-24 | ||
| JP2001085942A JP4559652B2 (ja) | 2000-03-24 | 2001-03-23 | 可変長復号化回路 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2001339312A JP2001339312A (ja) | 2001-12-07 |
| JP4559652B2 true JP4559652B2 (ja) | 2010-10-13 |
Family
ID=26588289
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2001085942A Expired - Fee Related JP4559652B2 (ja) | 2000-03-24 | 2001-03-23 | 可変長復号化回路 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP4559652B2 (ja) |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7117456B2 (en) | 2003-12-03 | 2006-10-03 | International Business Machines Corporation | Circuit area minimization using scaling |
| JP2007312272A (ja) * | 2006-05-22 | 2007-11-29 | Victor Co Of Japan Ltd | 可変長復号装置 |
| JP5659910B2 (ja) | 2011-03-29 | 2015-01-28 | 富士通株式会社 | フレームマッピング装置及びフレームマッピング方法 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH04133522A (ja) * | 1990-09-26 | 1992-05-07 | Ricoh Co Ltd | 可変長符号の復号化回路 |
| US5245338A (en) * | 1992-06-04 | 1993-09-14 | Bell Communications Research, Inc. | High-speed variable-length decoder |
| JP3034408B2 (ja) * | 1993-09-30 | 2000-04-17 | 株式会社東芝 | シフト回路及び可変長符号復号器 |
| KR970002483B1 (ko) * | 1993-11-29 | 1997-03-05 | 대우전자 주식회사 | 고속의 가변길이 복호화장치 |
| KR0152032B1 (ko) * | 1994-05-06 | 1998-10-15 | 김광호 | 영상신호를 위한 가변장복호기 |
| AU672321B2 (en) * | 1994-08-12 | 1996-09-26 | Canon Kabushiki Kaisha | Data encoding and decoding apparatus and method |
| KR970002790B1 (ko) * | 1994-11-17 | 1997-03-10 | 대우전자 주식회사 | 비동기 전송 모드에서의 호출 파티 서브 어드레스 메세지 생성방법 |
| KR0178201B1 (ko) * | 1995-08-31 | 1999-05-01 | 배순훈 | 가변 길이 복호화 장치 |
-
2001
- 2001-03-23 JP JP2001085942A patent/JP4559652B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2001339312A (ja) | 2001-12-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3142853B2 (ja) | 符号ワードをパッキングおよびアンパッキングするための装置 | |
| US5227789A (en) | Modified huffman encode/decode system with simplified decoding for imaging systems | |
| KR100399932B1 (ko) | 메모리의 양을 감소시키기 위한 비디오 프레임의압축/역압축 하드웨어 시스템 | |
| US5652583A (en) | Apparatus for encoding variable-length codes and segmenting variable-length codewords thereof | |
| JPH06104767A (ja) | 可変長符号デコーダ | |
| US5808570A (en) | Device and method for pair-match Huffman transcoding and high-performance variable length decoder with two-word bit stream segmentation which utilizes the same | |
| US5706001A (en) | Run-length decoding apparatus for use in a video signal decoding system | |
| JP2009017505A (ja) | 画像圧縮装置、画像伸張装置及び画像処理装置 | |
| TW202013969A (zh) | 在顯示介面壓縮技術中形成熵編碼組的方法和系統 | |
| US5621405A (en) | Variable-length decoding apparatus using relative address | |
| JP3517179B2 (ja) | ビットストリームデコーディング装置 | |
| US6987811B2 (en) | Image processor and image processing method | |
| JP2002524007A (ja) | イメージ圧縮方法および装置 | |
| EP1158807B1 (en) | Data stream conversion apparatus and method, variable length coded data stream generation apparatus and method, and camera system | |
| US6501398B2 (en) | Variable-length code decoder using barrel shifters and a look-up table | |
| JP4559652B2 (ja) | 可変長復号化回路 | |
| US20050174270A1 (en) | Programmable variable length decoder including interface of cpu processor | |
| US5754128A (en) | Variable-length code encoding and segmenting apparatus having a byte alignment unit | |
| CN1182488C (zh) | 数据压缩/解压缩方法与影像数据压缩/解压缩装置 | |
| TWI404420B (zh) | 可變長度解碼器、視訊解碼器、具有此解碼器的影像顯示系統以及可變長度解碼方法 | |
| JP2934603B2 (ja) | 可変長さコードの復号化方法及びその装置 | |
| CN113132733B (zh) | 串流解压缩电路 | |
| JP2009017232A (ja) | 算術符号化装置及び画像符号化装置 | |
| EP0703675A2 (en) | Variable length decoding method and apparatus | |
| JP2002099407A (ja) | スタートコード検索回路 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080228 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100401 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100420 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100617 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100706 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100723 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130730 Year of fee payment: 3 |
|
| LAPS | Cancellation because of no payment of annual fees |