(57)【要約】【課題】回路規模やメモリ量を著しく増大させずに復号テーブルを構成するメモリ等のリソースの使用効率と復号処理効率を向上する。【解決手段】ビットシフト部１は、入力されたハフマン符号データ列１０１の先頭ビットから１６ビット分のハフマン符号データ列１０２を出力する。復号データ格納部２は、ハフマン符号データ列１０２をアドレス信号として入力し第１及び第２の復号語１０３、１０４と第１および第２のハフマン符号長１０６、１０７をデータ信号として出力する。符号長加算部４は、第１及び第２のハフマン符号長１０６、１０７を入力してそれらを加算した符号長加算値１０８と、第２の復号語の格納の有無を示すフラグ信号１０９を出力する。復号語抽出部３は、第１及び第２の復号語１０３、１０４を入力し、フラグ信号１０９に基づいて第１及び第２の復号語１０３、１０４の両方、または第１の復号語１０３のみを復号データとして出力する。【選択図】図１
2006270330.tif 000002
【特許請求の範囲】
【請求項１】
可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列の先頭ビットから１番目に含まれる第１の復号語と、該第１の復号語の符号長である第１の可変長符号長、並びに、前記可変長符号データ列の先頭ビットから２番目に含まれる第２の復号語と、該第２の復号語の符号長である第２の可変長符号長をデータ信号として出力する復号データ格納部と、
前記第１の可変長符号長と前記第２の可変長符号長を入力してそれらを加算した符号長加算値を前記ビットシフト量情報として前記ビットシフト部に出力すると共に、前記第２の復号語が存在するか否かを示すフラグ信号を出力する符号長加算部と、
前記第１の復号語と前記第２の復号語を入力し、前記フラグ信号が第２の復号語が存在しないことを示している場合には、前記第１の復号語のみを復号データとして出力し、前記フラグ信号が第２の復号語が存在していることを示している場合には、前記第１の復号語並びに前記第２の復号語を復号データとして出力する復号語抽出部と、
を含む可変長符号復号回路。
【請求項２】
前記復号データ格納部は、前記ビットシフト部からの前記可変長符号データ列に第２の復号語が含まれていない場合には、前記第２の可変長符号長の値として前記第２の復号語が存在しないことを示す値を出力する請求項１記載の可変長符号復号回路。
【請求項３】
前記符号長加算部は、前記第２の可変長符号長の値として前記第２の復号語が存在しないことを示す値を入力した場合には、前記フラグ信号として前記第２の復号語が格納されていないことを示すフラグ信号を出力する請求項２記載の可変長符号復号回路。
【請求項４】
可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列の先頭ビットから１番目に含まれる第１の復号語と、前記可変長符号データ列の先頭ビットから２番目に含まれる第２の復号語と、前記第２の復号語が存在するか否かを示すフラグ信号を出力するとともに、前記第１の復号語の符号長である第１の可変長符号長と前記第２の復号語の符号長である第２の可変長符号長を加算した符号長加算値を前記ビットシフト量情報として前記ビットシフト部に出力する復号データ格納部と、
前記第１の復号語と前記第２の復号語を入力し、前記フラグ信号が第２の復号語が存在しないことを示している場合には、前記第１の復号語のみを復号データとして出力し、前記フラグ信号が第２の復号語が存在していることを示している場合には、前記第１の復号語並びに前記第２の復号語を復号データとして出力する復号語抽出部と、
を含む可変長符号復号回路。
【請求項５】
可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列に含まれる第１から第ＮのＮ語の復号語と、前記可変長符号データ列に含まれる第１から第Ｎの復号語の数を示すフラグ信号を出力するとともに、前記第１から第Ｎの可変長符号長の和を前記ビットシフト量情報として前記ビットシフト部に出力する復号データ格納部と、
前記第１から第Ｎの復号語を入力し、前記フラグ信号により示される語数分の復号語を復号データとして出力する復号語抽出部と、
を含む可変長符号復号回路。
【請求項６】
前記可変長符号がハフマン符号である請求項１から５のいずれか１項記載の可変長符号復号回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハフマン符号に代表される可変長符号を復号するための可変長符号復号回路に関する。
【背景技術】
【０００２】
従来、可変長符号を用いた符号化は、例えばデータ通信トラフィック量を削減する目的、あるいは、データ蓄積量を削減する目的で使用されている。その代表的な符号化方法としてハフマン符号が一般的に知られており、ファイルの圧縮や画像の圧縮などで広く用いられている。（以降の説明では、可変長符号の代わりにハフマン符号という言葉を用いることとする。）
例えば、特許文献１（以下、従来例１）には、ハフマン符号を１語ずつ復号するハフマン復号化回路が示されている。この従来例１は、複数のハフマン符号に対応して複数のハフマン符号レジスタ、複数のフィルタ回路、及び、複数の一致検出回路を含み、さらに、複数のハフマン符号に対応する複数の復号データを記憶するハフマンテーブルを含む。各ハフマン符号レジスタには対応するハフマン符号が格納される。各フィルタ回路は、与えられた圧縮データのうち対応するハフマン符号の符号長に相当する部分のみを通過させる。各一致検出回路は、対応するフィルタ回路の出力データと対応するハフマン符号レジスタの出力データとを比較し、一致したときに出力信号を発生し、その出力信号をアドレス信号としてハフマンテーブルに与える。このような構成により、入力するハフマン符号データ列に対して１語ずつ復号を行う。
【０００３】
また、例えば、特許文献２（以下、従来例２）には、ハフマン符号を２語ずつ復号するハフマン符号復号化回路が示されている。この従来例２は、ハフマン符号データ列よりハフマン符号の先頭ビットを求める先頭決め部と、先頭決め部の出力の先頭ビット位置から所定ビット数を入力し第１の復号語及び第１の符号長を出力する第１の復号情報格納部と、先頭決め部の出力の互いに異なるビット位置から予め定められたビット数をそれぞれ入力し復号語及び符号長をそれぞれ出力する複数の復号情報格納部と、第１の復号情報格納部が出力する第１の符号長を選択信号として複数の復号情報格納部の出力のいずれか一つを選択し第２の復号語及び第２の符号長として出力するセレクタとを備え、セレクタの出力である第２の符号長が先頭決め部に供給される。このような構成により、入力するハフマン符号データ列に対して２語ずつ復号を行う。
【特許文献１】特開平６−２７６１０４号公報
【特許文献２】特開平７−２４９９９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来例１の場合では、入力するハフマン符号データ列を１語ずつ復号するので、入力するハフマン符号データ列全体の復号処理に時間がかかるという欠点がある。
【０００５】
また、従来例２の場合では、２語ずつ復号するために最大符号長が１６ビットのハフマン符号において符号長が１ビットから１６ビットの各々の符号長に対応して２符号目の復号テーブルを用意する必要があるので、２の１６乗ワードの復号テーブルが全部で１７個必要となり必要メモリ量が増大するという欠点がある。
【０００６】
本発明の目的は、回路規模を極端に増大させることなく復号処理効率を改善する可変長符号復号回路を提供することである。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明による可変長符号復号回路は、可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列の先頭ビットから１番目に含まれる第１の復号語と、該第１の復号語の符号長である第１の可変長符号長、並びに、前記可変長符号データ列の先頭ビットから２番目に含まれる第２の復号語と、該第２の復号語の符号長である第２の可変長符号長をデータ信号として出力する復号データ格納部と、
前記第１の可変長符号長と前記第２の可変長符号長を入力してそれらを加算した符号長加算値を前記ビットシフト量情報として前記ビットシフト部に出力すると共に、前記第２の復号語が存在するか否かを示すフラグ信号を出力する符号長加算部と、
前記第１の復号語と前記第２の復号語を入力し、前記フラグ信号が第２の復号語が存在しないことを示している場合には、前記第１の復号語のみを復号データとして出力し、前記フラグ信号が第２の復号語が存在していることを示している場合には、前記第１の復号語並びに前記第２の復号語を復号データとして出力する復号語抽出部とを含んでいる。
【０００８】
本発明の可変長符号復号回路によれば、第１の可変長符号長と第２の可変長符号長の和が前記ビットシフト部から出力される最大符号長のビット数の可変長符号データ列のビット数と同じかまたは小さい場合には第１の復号語と第２の復号語を同時に出力できるので２語のハフマン符号を一括して復号することができる。また、第１の可変長符号長と第２の可変長符号長の和が前記ビットシフト部から出力される最大符号長のビット数の可変長符号データ列のビット数よりも大きい場合には第１の復号語のみが出力されるので一度に１語のハフマン符号を復号する。
【０００９】
従って、本発明の可変長符号復号回路によれば、一度に２語または１語の可変長符号を復号することができる。言い換えれば、平均的には一度に１語以上２語以下の可変長符号を復号することができ、一度に必ず１語を復号する場合と比較して処理効率を向上させることができる。
【００１０】
また、前記復号データ格納部は、前記ビットシフト部からの前記可変長符号データ列に第２の復号語が含まれていない場合には、前記第２の可変長符号長の値として前記第２の復号語が存在しないことを示す値を出力するようにしてもよい。さらに前記符号長加算部は、前記第２の可変長符号長の値として前記第２の復号語が存在しないことを示す値を入力した場合には、前記フラグ信号として前記第２の復号語が格納されていないことを示すフラグ信号を出力するようにしてもよい。
【００１１】
また、本発明の他の可変長符号復号回路は、可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列の先頭ビットから１番目に含まれる第１の復号語と、前記可変長符号データ列の先頭ビットから２番目に含まれる第２の復号語と、前記第２の復号語が存在するか否かを示すフラグ信号を出力するとともに、前記第１の復号語の符号長である第１の可変長符号長と前記第２の復号語の符号長である第２の可変長符号長を加算した符号長加算値を前記ビットシフト量情報として前記ビットシフト部に出力する復号データ格納部と、
前記第１の復号語と前記第２の復号語を入力し、前記フラグ信号が第２の復号語が存在しないことを示している場合には、前記第１の復号語のみを復号データとして出力し、前記フラグ信号が第２の復号語が存在していることを示している場合には、前記第１の復号語並びに前記第２の復号語を復号データとして出力する復号語抽出部とを含んでいる。
【００１２】
本発明によれば、復号データ格納部では、第１の可変長符号符号長と第２の可変長符号長とをそれぞれ格納して出力するのではなく、第１の可変長符号符号長と第２の可変長符号長の和を格納して出力するようにしているので、上記で説明した第１の発明により得られる効果に加え、復号データ格納部の必要リソースが削減できるだけでなく、符号長加算部を削減することが可能となる。
【００１３】
さらに、本発明の他の可変長符号復号回路は、可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列に含まれる第１から第ＮのＮ語の復号語と、前記可変長符号データ列に含まれる第１から第Ｎの復号語の数を示すフラグ信号を出力するとともに、前記第１から第Ｎの可変長符号長の和を前記ビットシフト量情報として前記ビットシフト部に出力する復号データ格納部と、
前記第１から第Ｎの復号語を入力し、前記フラグ信号により示される語数分の復号語を復号データとして出力する復号語抽出部とを含んでいる。
【００１４】
本発明によれば、可変長符号長の和が最大符号長のビット数以内であるＮ語までの可変長符号を一括して復号することができるので、第１の発明により得られるリソース使用率の向上及び復号処理効率の向上の効果をより大きくすることが可能となる。
【００１５】
また、前記可変長符号をハフマン符号とするようにしてもよい。
【発明の効果】
【００１６】
以上説明したように、本発明によれば、可変長符号の符号長の和が最大ビット長以内である連続するハフマン符号を複数語一括して復号できるので、リソースの使用効率を向上できるとともに、復号処理効率を向上できるという効果を得ることができる。
【発明を実施するための最良の形態】
【００１７】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１８】
図１は、本発明の第１の実施形態による可変長符号復号回路の構成を示すブロック図である。本実施形態の可変長符号復号回路は、図１に示されるように、ビットシフト部１と、復号データ格納部２と、復号語抽出部３と、符号長加算部４とから構成されている。
【００１９】
ビットシフト部１は、ハフマン符号データ列１０１を入力し、さらに符号長加算部４から出力される符号長加算値１０８を入力し、入力された符号長加算値１０８をビットシフト量情報としてハフマン符号データ列１０１の先頭ビット位置をシフトさせ、シフトされた先頭ビットからハフマン符号の最大ビット数分のビット列１０２を出力する。図１ではハフマン符号の最大ビット数を１６ビットとした場合に１６ビットのビット列１０２を出力する例を図示している。
【００２０】
復号データ格納部２は、ビットシフト部１から出力される先頭ビット位置が揃えられた１６ビットのハフマン符号データ列１０２をアドレス信号として入力し、ハフマン符号データ列１０２の先頭ビットから１番目に含まれる第１の復号語をデータ１０３として出力し、ハフマン符号データ列１０２の先頭ビットから２番目に含まれる第２の復号語をデータ１０４として出力し、第１の復号語１０３の符号長である第１のハフマン符号長をデータ１０６として出力し、第２の復号語１０４の符号長である第２のハフマン符号長をデータ１０７として出力する。図１では、第１の復号語１０３及び第２の復号語１０４としてそれぞれ８ビットのデータである場合を図示している。また、図１では、第１のハフマン符号長１０６及び第２のハフマン符号長１０７としてそれぞれ４ビットのデータである場合を図示している。
【００２１】
符号長加算部４は、復号データ格納部４から出力される第１のハフマン符号長１０６及び第２のハフマン符号長１０７を入力し、それらを加算した符号長加算値１０８をビットシフト量情報としてビットシフト部１に出力すると共に、第２のハフマン符号長１０７の値が第２の復号語が存在しないことを示す値であった場合に、第２の復号語が格納されていない旨を示すフラグ信号１０９を出力する。
【００２２】
復号語抽出部３は、復号データ格納部２から出力される第１の復号語１０３及び第２の復号語１０４を入力し、符号長加算部４からのフラグ信号１０９を入力して、フラグ信号１０９が第２の復号語が格納されていないことを示している場合には、第１の復号語１０３のみを取り込んで復号データ１０５として出力し、フラグ信号１０９が第２の復号語が格納されていることを示している場合には、第１の復号語１０３並びに第２の復号語１０４を取り込んで復号データ１０５として出力する。
【００２３】
図２は、本実施形態による可変長符号復号回路における復号データ格納部２の構成を示す図であり、ハフマン符号データ列の最大符号長は１６ビット、第１の復号語１０３及び第２の復号語１０４は共に８ビット、第１のハフマン符号長１０６及び第２のハフマン符号長１０７は共に４ビットで構成している。
【００２４】
復号データ格納部２は、例えばメモリで構成することができ、ハフマン符号の最大符号長分のビット数である１６ビット数のアドレスビットで表現されるアドレス空間を有し、データとして第１のハフマン符号領域及び第２のハフマン符号領域を持つ。アドレスには１６ビットの入力ハフマン符号データ列が与えられ、第１のハフマン符号領域及び第２のハフマン符号領域は共にアドレスとして与えられたハフマン符号の復号語として対応付けられる８ビットの復号語及びそのハフマン符号のハフマン符号長が４ビットで格納される。そして、復号データ格納部２は、ビットシフト部１からのハフマン符号データ列１０２に第２の復号語が含まれていない場合には、第２の可変長符号長の値として第２の復号語が存在しないことを示す値である“０”を出力する。
【００２５】
また、図２には、例えば、復号語「Ａ」に対応するハフマン符号が４ビット長の１１１０で与えられ、復号語「Ｂ」に対応するハフマン符号が８ビット長の１１１１１１１０で与えられ、復号語「Ｃ」に対応するハフマン符号が１２ビット長の１１１１１１１１１１１０で与えられるとしたときのアドレスと格納するデータの対応が示されている。１６ビットの入力ハフマン符号データ列の先頭から１２ビットが１１１０１１１１１１１０であったとき、これに対応する復号語は「Ａ」［Ｂ］となるので、先頭ビット側の第１のハフマン符号１１１０のハフマン符号長「４」は第１のハフマン符号長として第１のハフマン符号領域内のハフマン符号長として格納され、対応する復号語「Ａ」が第１のハフマン符号領域内の復号語として格納される。先頭ビット側から２番目となる第２のハフマン符号１１１１１１１０のハフマン符号長「８」は第２のハフマン符号長として第２のハフマン符号領域内のハフマン符号長として格納され、対応する復号語「Ｂ」が第２のハフマン符号領域内の復号語として格納される。
【００２６】
すなわち、１６ビットアドレスの上位１２ビットが１１１０１１１１１１１０である全てのアドレス１１１０１１１１１１１０ＸＸＸＸにはデータとして（復号語＝Ａ）、（符号長＝４）、（復号語＝Ｂ）、（符号長＝８）という情報が格納され、１６ビットのアドレスとして１１１０１１１１１１１０ＸＸＸＸが与えられると、格納されているデータが第１の復号語、第１のハフマン符号長、第２の復号語、第２のハフマン符号長として出力される。
【００２７】
同じように、１６ビットの入力ハフマン符号データ列の先頭から１６ビットが１１１０１１１１１１１１１１１０であったとき、これに対応する復号語は「Ａ」［Ｃ］となるので、先頭ビット側の第１のハフマン符号１１１０のハフマン符号長「４」は第１のハフマン符号長として第１のハフマン符号領域内のハフマン符号長として格納され、対応する復号語「Ａ」が第１のハフマン符号領域内の復号語として格納される。先頭ビット側から２番目となる第２のハフマン符号１１１１１１１１１１１０のハフマン符号長「１２」は第２のハフマン符号長として第２のハフマン符号領域内のハフマン符号長として格納され、対応する復号語「Ｃ」が第２のハフマン符号領域内の復号語として格納される。
【００２８】
すなわち、１６ビットアドレス１１１０１１１１１１１１１１１０にはデータとして（復号語＝Ａ）、（符号長＝４）、（復号語＝Ｃ）、（符号長＝１２）という情報が格納され、１６ビットのアドレスとして１１１０１１１１１１１１１１１０が与えられると、格納されているデータが第１の復号語、第１のハフマン符号長、第２の復号語、第２のハフマン符号長として出力される。
【００２９】
また、同じように、１６ビットの入力ハフマン符号データ列の先頭から１６ビットが１１１１１１１０１１１１１１１１であったとき、これに対応する復号語は「Ｂ」のみとなるので、先頭ビット側の第１のハフマン符号１１１１１１１０のハフマン符号長「８」は第１のハフマン符号長として第１のハフマン符号領域内のハフマン符号長として格納され、対応する復号語「Ｂ」が第１のハフマン符号領域内の復号語として格納される。
【００３０】
このとき、先頭ビット側から２番目となる第２のハフマン符号は途中までしか入力されていない。つまり、８ビットの１１１１１１１１に対応するハフマン符号は存在していないため第２の復号語は格納されない。この場合は、第２のハフマン符号長の値としては第２の復号語が格納されていないことを示す値、例えば「０」を第２のハフマン符号領域内のハフマン符号長として格納し、第２のハフマン符号領域内の復号語は値としては任意としてよい。すなわち、１６ビットアドレス１１１１１１１０１１１１１１１１にはデータとして（復号語＝Ｂ）、（符号長＝８）、（復号語＝任意）、（符号長＝０）という情報が格納され、１６ビットのアドレスとして１１１１１１１０１１１１１１１１が与えられると、格納されているデータが第１の復号語、第１のハフマン符号長として出力される。
【００３１】
なお、第１のハフマン符号長のビット幅は、第１のハフマン符号に対応する復号語はいかなる１６ビットアドレスに対しても必ず存在するため、１ビット長から１６ビット長の全１６種類の値を表示するため４ビットとしている。
【００３２】
また、第１のハフマン符号は少なくとも１ビット以上であるため、第２のハフマン符号の符号長は最大でも１５ビットまでしか格納されることはない。しかし、第２のハフマン符号長の値は、第２の復号語が格納されていないことを表示することができる必要がある。そのため、第２のハフマン符号長のビット幅も、１ビット長から１５ビット長までの各ハフマン符号長と、第２の復号語が格納されていないことを示す値との全１６種類の値を表示できるよう４ビットとしている。しかし、図１の符号長加算部４において第１のハフマン符号長と第２のハフマン符号長の和がビットシフト部１におけるビットシフト量情報として使用できるように取り決めてさえいれば、値の対応付けは実現しやすさなどから自由に決めてよい。
【００３３】
また、当然ながら、格納するデータの配置は図２の限りではない。
【００３４】
以上のようにして、１６ビットアドレスの全てのアドレスに対して対応する復号語とハフマン符号長をデータとして格納することにより、何らかの１６ビットアドレスが与えられると、データとして対応する復号語とハフマン符号長が出力される。
【００３５】
次に、本実施形態による可変長符号復号回路の動作について図面を用いて説明する。
【００３６】
図１において、まず、最初にハフマン符号データ列１０１が入力されると、ビットシフト部１は入力したハフマン符号データ列１０１の先頭から１６ビット分を１６ビットのハフマン符号データ列１０２として出力する。復号データ格納部２は、ハフマン符号データ列１０２を１６ビットのアドレス信号として入力し、対応するデータを第１の復号語１０３、第１のハフマン符号長１０６、第２の復号語１０４、第２のハフマン符号長１０７として出力する。符号長加算部４は、第１のハフマン符号長１０６及び第２のハフマン符号長１０７を入力し、それらを加算した結果である符号長加算値１０８を出力すると同時に、第２のハフマン符号長１０７が第２の復号語が格納されていないことを示す値、すわなち、図２の例では値０（ゼロ）であった場合には、フラグ信号１０９として第２の復号語が格納されていないことを復号語抽出部３に出力する。復号語抽出部３は、復号データ格納部２から出力される第１の復号語１０３及び第２の復号語１０４を入力し、フラグ信号１０９が第２の復号語が格納されていないことを示していれば第１の復号語１０３のみを取り込んで復号データ１０５として出力し、それ以外の場合は第１の復号語１０３及び第２の復号語１０４の両方を取り込んで復号データ１０５として出力する。
【００３７】
このようにして、１６ビットの入力ハフマン符号データ列に対して先頭から１ハフマン符号分、もしくは、先頭から２ハフマン符号分に対応する復号データが得られる。
【００３８】
この時点で、ビットシフト部１にはビットシフト量情報として符号長加算部４から符号長加算値１０８が入力されており、前に１６ビットのハフマン符号データ列１０２として出力した１６ビットのハフマン符号データ列において、先頭から符号長加算値１０８で示されたビット数分を後方にシフトした位置を新たな１６ビットハフマン符号データ列１０２の先頭ビットとしてそこから１６ビット分のハフマン符号データ列を復号データ格納部２に出力する。復号データ格納部２は新たに入力された１６ビットのハフマン符号データ列１０２に対応する第１の復号語１０３、第１のハフマン符号長１０６、第２の復号語１０４、第２のハフマン符号長１０７を出力する。以降は同様の動作の繰り返しとなる。
【００３９】
以上で説明したような処理が行われることにより、本実施形態の可変長符号復号回路によれば、第１のハフマン符号長１０６と第２のハフマン符号長１０７の和がビットシフト部１から出力されるハフマン符号データ列１０２のビット数である１６ビットと同じかまたは小さい場合には第１の復号語１０３と第２の復号語１０４を同時に出力できるので２語のハフマン符号を一括して復号することができる。また、第１のハフマン符号長１０６と第２のハフマン符号長１０７の和がビットシフト部１から出力されるハフマン符号データ列１０２のビット数である１６ビットよりも大きい場合には第１の復号語１０３のみが出力されるので一度に１語のハフマン符号が復号される。
【００４０】
そのため、１６ビットのハフマン符号データ列において先頭から２ハフマン符号が含まれる場合には２語を一括で復号し、先頭から１ハフマン符号のみか、もしくは、先頭から２番目のハフマン符号が途中までしか含まれていない場合には先頭側の１語を復号することができる。従って、平均的には一度に１語以上２語以下のハフマン符号を復号することができ、一度に必ず１語を復号する場合と比較してリソースの使用率が向上し、且つ、処理効率を向上させることができるという効果が得られる。
【００４１】
尚、本実施の形態では、最大ハフマン符号長を１６ビットとして説明したが、必ずしも１６ビットである必要はない。最大ハフマン符号長がＬビットの場合は、復号データ格納部２のアドレス幅をＬビットとし、ビットシフト部１では常にＬビット分のハフマン符号データ列１０２を出力するようにすればよい。また、さらに、これに連動して、復号データ格納部２の第１の符号長及び第２の符号長のビット幅を増減し、またこれにあわせて符号長加算部４での入力信号幅を増減することにより対応可能である。また、復号データ格納部２のアドレス幅をＬビット以上とすることにより、そのアドレス幅に応じて一度に２語を復号できる確率を高めることが可能である。
【００４２】
また、本実施の形態では、復号語のビット長を８ビットとして説明したが、必ずしも８ビットである必要はない。復号語のビット長がＫビットの場合は、復号データ格納部２の第１の復号語及び第２の復号語のビット幅をＫビットとして復号語を格納するようにすればよい。
【００４３】
（第２の実施形態）
次に、本発明の第２の実施形態の可変長符号復号回路について説明する。
【００４４】
図３は本発明の第２の実施形態の可変長符号復号回路の構成を示すブロック図である。図３において、図１中の構成要素と同一の構成要素には同一の符号を付し、説明を省略するものとする。
【００４５】
本発明の第２の実施形態の可変長符号復号回路は、図３に示されるように、ビットシフト部１と、復号データ格納部２２と、復号語抽出部３とから構成されている。本実施形態の可変長符号復号回路は、図１に示した第１の実施形態の可変長符号復号回路に対して、復号データ格納部２が復号データ格納部２２に置き換えられ、符号長加算部４が削除された構成となっている。
【００４６】
本実施形態の可変長符号復号回路は、基本的な動作は上記で説明した第１の実施形態と同様であるが、図２で説明した復号データ格納部２の格納データの構成を工夫することにより必要リソースを削減したものである。
【００４７】
本実施形態の可変長符号復号回路における復号データ格納部２２は、図４に示されるように、第１の復号語及び第２の復号語を格納することは図２に示した復号データ格納部２と同様であるが、第１のハフマン符号長及び第２のハフマン符号長を各々格納する代わりに第１のハフマン符号長と第２のハフマン符号長の和を格納することと、第２の復号語の有無を示すフラグビットを格納することが異なる。
【００４８】
第１のハフマン符号長と第２のハフマン符号長の和は１ビットから１６ビットの１６種類の値を表現できればよいので４ビット幅で十分である。またフラグビットにより第２の復号語の有無を表示する。さらに、第１のハフマン符号長と第２のハフマン符号長の和を格納しているので、図１における符号長加算部４、第１のハフマン符号長１０６、第２のハフマン符号長１０７が不要になり、第１のハフマン符号長と第２のハフマン符号長の和がそのまま符号長加算値１０８としてビットシフト部１に入力でき、フラグビットをフラグ信号１０９として復号語抽出部３に入力できる。
【００４９】
以上説明したように構成することにより、上記で説明した第１の実施の形態で得られる効果に加え、復号データ格納部２２の必要リソースが削減できるだけでなく、その周辺回路リソースも削減することができるという効果が得られる。
【００５０】
尚、本実施形態では、最大ハフマン符号長を１６ビットとして説明したが、必ずしも１６ビットである必要はない。最大ハフマン符号長がＬビットの場合は、復号データ格納部２２のアドレス幅をＬビットとし、ビットシフト部１では常にＬビット分のハフマン符号データ列１０２を出力するようにすればよい。また、さらに、これに連動して、復号データ格納部２２の第１の符号長及び第２の符号長のビット幅を増減することにより対応可能である。また、復号データ格納部２２のアドレス幅をＬビット以上とすることにより、そのアドレス幅に応じて一度に２語を復号できる確率を高めることが可能である。
【００５１】
また、本実施形態では、復号語のビット長を８ビットとして説明したが、必ずしも８ビットである必要はない。復号語のビット長がＫビットの場合は、復号データ格納部２の第１の復号語及び第２の復号語のビット幅をＫビットとして復号語を格納するようにすればよい。
【００５２】
（第３の実施形態）
次に、本発明の第３の実施形態の可変長符号復号回路について説明する。
【００５３】
図５は本発明の第３の実施形態の可変長符号復号回路の構成を示すブロック図である。図５において、図３中の構成要素と同一の構成要素には同一の符号を付し、説明を省略するものとする。
【００５４】
本発明の第３の実施形態の可変長符号復号回路は、図５に示されるように、ビットシフト部１と、復号データ格納部３２と、復号語抽出部３３とから構成されている。本実施形態の可変長符号復号回路は、図３に示した第２の実施形態の可変長符号復号回路に対して、復号データ格納部２２が復号データ格納部３２に置き換えられ、復号語抽出部３が復号語抽出部３３に置き換えられた構成となっている。
【００５５】
本実施形態の可変長符号復号回路は、基本的な動作は上記で説明した第１の実施形態と同様であるが、図２で説明した復号データ格納部２の格納データの構成を工夫することにより必要リソースを削減したものである。
【００５６】
本実施形態は、基本的な動作は上記で説明した第１および第２の実施形態と同様であるが、図３で説明した復号データ格納部２２の格納データの構成を工夫することにより、さらにリソースの使用率を向上し、且つ、復号処理効率を向上させたものである。
【００５７】
本実施形態の可変長符号復号回路における復号データ格納部３２は、図６に示されるように、復号語を第Ｎの復号語まで格納するように拡張したものである。
【００５８】
本実施形態における復号データ格納部３２は、ビットシフト部１からの１６ビット数のハフマン符号データ列１０２をアドレス信号として入力し、ハフマン符号データ列１０２に含まれる第１から第ＮのＮ語の復号語１１０1〜１１０Nと、ハフマン符号データ列１０２に含まれる第１から第Ｎの復号語の数を示すフラグ信号１０９を出力するとともに、第１から第Ｎのハフマン符号長の和である符号長加算値１０８をビットシフト量情報としてビットシフト部１に出力する。
【００５９】
つまり、復号データ格納部３２は、第１の復号語、第２の復号語に加えて第３の復号語以降、第Ｎの復号語までの８×Ｎビットのデータを格納する構成とし、第１のハフマン符号長と第２のハフマン符号長に加えて第３のハフマン符号長以降、第Ｎのハフマン符号長までの和を４ビットで格納し、さらにフラグビットの代わりに復号語の数を格納する構成とする。復号語の数は、復号語を何語格納するかによって、その数を表現できるビット数とする。ここではＭビットとしている。従って、データとしては合計で（８×Ｎ＋４＋Ｍ）ビット分のビット幅となる。このように構成することにより、例えば、１６ビットのハフマン符号データ列として１１１０１１１０１１１１１１１０が入力された場合、第１の復号語として「Ａ」、第２の復号語として「Ａ」、第３の復号語として「Ｂ」、第１から第Ｎのハフマン符号長の和として「１６」、復号語の数として「３語」を表すデータが出力される。
【００６０】
本実施形態における復号語抽出部３３は、第１から第Ｎの復号語１１０1〜１１０Nの各々を入力し、復号語の数としてフラグ信号１０９で示された語数分の復号語だけを取り込んで復号データ１０５として出力する。ビットシフト部１は、第１から第Ｎのハフマン符号長の和を符号長加算値１０８として入力し、その値分だけハフマン符号データ列の先頭ビット位置をシフトして１６ビットのハフマン符号データ列１０２として出力する。
【００６１】
以上説明したように構成することにより、ハフマン符号長の和が１６ビット以内であるＮ語までのハフマン符号に対して一括して復号することができるので、第１の実施の形態で得られるリソース使用率の向上及び復号処理効率の向上の効果をより大きい効果として得ることができる。
【００６２】
尚、本実施形態では、最大ハフマン符号長を１６ビットとして説明したが、必ずしも１６ビットである必要はない。最大ハフマン符号長がＬビットの場合は、復号データ格納部３２のアドレス幅をＬビットとし、ビットシフト部１では常にＬビット分のハフマン符号データ列１０２を出力するようにすればよい。また、さらに、これに連動して、復号データ格納部２の第１の符号長及び第２の符号長のビット幅を増減することにより対応可能である。また、復号データ格納部３２のアドレス幅をＬビット以上とすることにより、そのアドレス幅に応じて一度に２語以上を復号できる確率を高めることが可能である。
【００６３】
また、本実施形態では、復号語のビット長を８ビットとして説明したが、必ずしも８ビットである必要はない。復号語のビット長がＫビットの場合は、復号データ格納部３２の第１の復号語及び第２の復号語のビット幅をＫビットとして復号語を格納するようにすればよい。
【図面の簡単な説明】
【００６４】
【図１】本発明の第１の実施形態による可変長符号復号回路を示すブロック図である。
【図２】図１の復号データ格納部２の構成を示す図である。
【図３】本発明の第２の実施形態による可変長符号復号回路を示すブロック図である。
【図４】図３の復号データ格納部２２の構成を示す図である。
【図５】本発明の第３の実施形態による可変長符号復号回路を示すブロック図である。
【図６】図５の復号データ格納部３２の構成を示す図である。第３の実施の形態による可変長符号復号回路における復号データ格納部の構成を示す構成図である。
【符号の説明】
【００６５】
１    ビットシフト部
２    復号データ格納部
３    復号語抽出部
４    符号長加算部
２２    復号データ格納部
３２    復号データ格納部
３３    復号語抽出部
１０１    ハフマン符号データ列
１０２    １６ビットハフマン符号データ列
１０３    第１の復号語
１０４    第２の復号語
１０５    復号データ
１０６    第１のハフマン符号長
１０７    第２のハフマン符号長
１０８    符号長加算値
１０９    フラグ信号
１１０1〜１１０N    第１から第Ｎの復号語
【図１】
2006270330.tif 000003
【図２】
2006270330.tif 000004
【図３】
2006270330.tif 000005
【図４】
2006270330.tif 000006
【図５】
2006270330.tif 000007
【図６】
2006270330.tif 000008