JP2006270330A - 可変長符号復号回路 - Google Patents
可変長符号復号回路 Download PDFInfo
- Publication number
- JP2006270330A JP2006270330A JP2005083552A JP2005083552A JP2006270330A JP 2006270330 A JP2006270330 A JP 2006270330A JP 2005083552 A JP2005083552 A JP 2005083552A JP 2005083552 A JP2005083552 A JP 2005083552A JP 2006270330 A JP2006270330 A JP 2006270330A
- Authority
- JP
- Japan
- Prior art keywords
- code
- decoded
- length
- variable
- decoded word
- 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.)
- Withdrawn
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【課題】回路規模やメモリ量を著しく増大させずに復号テーブルを構成するメモリ等のリソースの使用効率と復号処理効率を向上する。
【解決手段】ビットシフト部1は、入力されたハフマン符号データ列101の先頭ビットから16ビット分のハフマン符号データ列102を出力する。復号データ格納部2は、ハフマン符号データ列102をアドレス信号として入力し第1及び第2の復号語103、104と第1および第2のハフマン符号長106、107をデータ信号として出力する。符号長加算部4は、第1及び第2のハフマン符号長106、107を入力してそれらを加算した符号長加算値108と、第2の復号語の格納の有無を示すフラグ信号109を出力する。復号語抽出部3は、第1及び第2の復号語103、104を入力し、フラグ信号109に基づいて第1及び第2の復号語103、104の両方、または第1の復号語103のみを復号データとして出力する。
【選択図】図1
【解決手段】ビットシフト部1は、入力されたハフマン符号データ列101の先頭ビットから16ビット分のハフマン符号データ列102を出力する。復号データ格納部2は、ハフマン符号データ列102をアドレス信号として入力し第1及び第2の復号語103、104と第1および第2のハフマン符号長106、107をデータ信号として出力する。符号長加算部4は、第1及び第2のハフマン符号長106、107を入力してそれらを加算した符号長加算値108と、第2の復号語の格納の有無を示すフラグ信号109を出力する。復号語抽出部3は、第1及び第2の復号語103、104を入力し、フラグ信号109に基づいて第1及び第2の復号語103、104の両方、または第1の復号語103のみを復号データとして出力する。
【選択図】図1
Description
本発明は、ハフマン符号に代表される可変長符号を復号するための可変長符号復号回路に関する。
従来、可変長符号を用いた符号化は、例えばデータ通信トラフィック量を削減する目的、あるいは、データ蓄積量を削減する目的で使用されている。その代表的な符号化方法としてハフマン符号が一般的に知られており、ファイルの圧縮や画像の圧縮などで広く用いられている。(以降の説明では、可変長符号の代わりにハフマン符号という言葉を用いることとする。)
例えば、特許文献1(以下、従来例1)には、ハフマン符号を1語ずつ復号するハフマン復号化回路が示されている。この従来例1は、複数のハフマン符号に対応して複数のハフマン符号レジスタ、複数のフィルタ回路、及び、複数の一致検出回路を含み、さらに、複数のハフマン符号に対応する複数の復号データを記憶するハフマンテーブルを含む。各ハフマン符号レジスタには対応するハフマン符号が格納される。各フィルタ回路は、与えられた圧縮データのうち対応するハフマン符号の符号長に相当する部分のみを通過させる。各一致検出回路は、対応するフィルタ回路の出力データと対応するハフマン符号レジスタの出力データとを比較し、一致したときに出力信号を発生し、その出力信号をアドレス信号としてハフマンテーブルに与える。このような構成により、入力するハフマン符号データ列に対して1語ずつ復号を行う。
例えば、特許文献1(以下、従来例1)には、ハフマン符号を1語ずつ復号するハフマン復号化回路が示されている。この従来例1は、複数のハフマン符号に対応して複数のハフマン符号レジスタ、複数のフィルタ回路、及び、複数の一致検出回路を含み、さらに、複数のハフマン符号に対応する複数の復号データを記憶するハフマンテーブルを含む。各ハフマン符号レジスタには対応するハフマン符号が格納される。各フィルタ回路は、与えられた圧縮データのうち対応するハフマン符号の符号長に相当する部分のみを通過させる。各一致検出回路は、対応するフィルタ回路の出力データと対応するハフマン符号レジスタの出力データとを比較し、一致したときに出力信号を発生し、その出力信号をアドレス信号としてハフマンテーブルに与える。このような構成により、入力するハフマン符号データ列に対して1語ずつ復号を行う。
また、例えば、特許文献2(以下、従来例2)には、ハフマン符号を2語ずつ復号するハフマン符号復号化回路が示されている。この従来例2は、ハフマン符号データ列よりハフマン符号の先頭ビットを求める先頭決め部と、先頭決め部の出力の先頭ビット位置から所定ビット数を入力し第1の復号語及び第1の符号長を出力する第1の復号情報格納部と、先頭決め部の出力の互いに異なるビット位置から予め定められたビット数をそれぞれ入力し復号語及び符号長をそれぞれ出力する複数の復号情報格納部と、第1の復号情報格納部が出力する第1の符号長を選択信号として複数の復号情報格納部の出力のいずれか一つを選択し第2の復号語及び第2の符号長として出力するセレクタとを備え、セレクタの出力である第2の符号長が先頭決め部に供給される。このような構成により、入力するハフマン符号データ列に対して2語ずつ復号を行う。
特開平6−276104号公報
特開平7−249994号公報
しかしながら、上述した従来例1の場合では、入力するハフマン符号データ列を1語ずつ復号するので、入力するハフマン符号データ列全体の復号処理に時間がかかるという欠点がある。
また、従来例2の場合では、2語ずつ復号するために最大符号長が16ビットのハフマン符号において符号長が1ビットから16ビットの各々の符号長に対応して2符号目の復号テーブルを用意する必要があるので、2の16乗ワードの復号テーブルが全部で17個必要となり必要メモリ量が増大するという欠点がある。
本発明の目的は、回路規模を極端に増大させることなく復号処理効率を改善する可変長符号復号回路を提供することである。
上記目的を達成するために、本発明による可変長符号復号回路は、可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列の先頭ビットから1番目に含まれる第1の復号語と、該第1の復号語の符号長である第1の可変長符号長、並びに、前記可変長符号データ列の先頭ビットから2番目に含まれる第2の復号語と、該第2の復号語の符号長である第2の可変長符号長をデータ信号として出力する復号データ格納部と、
前記第1の可変長符号長と前記第2の可変長符号長を入力してそれらを加算した符号長加算値を前記ビットシフト量情報として前記ビットシフト部に出力すると共に、前記第2の復号語が存在するか否かを示すフラグ信号を出力する符号長加算部と、
前記第1の復号語と前記第2の復号語を入力し、前記フラグ信号が第2の復号語が存在しないことを示している場合には、前記第1の復号語のみを復号データとして出力し、前記フラグ信号が第2の復号語が存在していることを示している場合には、前記第1の復号語並びに前記第2の復号語を復号データとして出力する復号語抽出部とを含んでいる。
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列の先頭ビットから1番目に含まれる第1の復号語と、該第1の復号語の符号長である第1の可変長符号長、並びに、前記可変長符号データ列の先頭ビットから2番目に含まれる第2の復号語と、該第2の復号語の符号長である第2の可変長符号長をデータ信号として出力する復号データ格納部と、
前記第1の可変長符号長と前記第2の可変長符号長を入力してそれらを加算した符号長加算値を前記ビットシフト量情報として前記ビットシフト部に出力すると共に、前記第2の復号語が存在するか否かを示すフラグ信号を出力する符号長加算部と、
前記第1の復号語と前記第2の復号語を入力し、前記フラグ信号が第2の復号語が存在しないことを示している場合には、前記第1の復号語のみを復号データとして出力し、前記フラグ信号が第2の復号語が存在していることを示している場合には、前記第1の復号語並びに前記第2の復号語を復号データとして出力する復号語抽出部とを含んでいる。
本発明の可変長符号復号回路によれば、第1の可変長符号長と第2の可変長符号長の和が前記ビットシフト部から出力される最大符号長のビット数の可変長符号データ列のビット数と同じかまたは小さい場合には第1の復号語と第2の復号語を同時に出力できるので2語のハフマン符号を一括して復号することができる。また、第1の可変長符号長と第2の可変長符号長の和が前記ビットシフト部から出力される最大符号長のビット数の可変長符号データ列のビット数よりも大きい場合には第1の復号語のみが出力されるので一度に1語のハフマン符号を復号する。
従って、本発明の可変長符号復号回路によれば、一度に2語または1語の可変長符号を復号することができる。言い換えれば、平均的には一度に1語以上2語以下の可変長符号を復号することができ、一度に必ず1語を復号する場合と比較して処理効率を向上させることができる。
また、前記復号データ格納部は、前記ビットシフト部からの前記可変長符号データ列に第2の復号語が含まれていない場合には、前記第2の可変長符号長の値として前記第2の復号語が存在しないことを示す値を出力するようにしてもよい。さらに前記符号長加算部は、前記第2の可変長符号長の値として前記第2の復号語が存在しないことを示す値を入力した場合には、前記フラグ信号として前記第2の復号語が格納されていないことを示すフラグ信号を出力するようにしてもよい。
また、本発明の他の可変長符号復号回路は、可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列の先頭ビットから1番目に含まれる第1の復号語と、前記可変長符号データ列の先頭ビットから2番目に含まれる第2の復号語と、前記第2の復号語が存在するか否かを示すフラグ信号を出力するとともに、前記第1の復号語の符号長である第1の可変長符号長と前記第2の復号語の符号長である第2の可変長符号長を加算した符号長加算値を前記ビットシフト量情報として前記ビットシフト部に出力する復号データ格納部と、
前記第1の復号語と前記第2の復号語を入力し、前記フラグ信号が第2の復号語が存在しないことを示している場合には、前記第1の復号語のみを復号データとして出力し、前記フラグ信号が第2の復号語が存在していることを示している場合には、前記第1の復号語並びに前記第2の復号語を復号データとして出力する復号語抽出部とを含んでいる。
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列の先頭ビットから1番目に含まれる第1の復号語と、前記可変長符号データ列の先頭ビットから2番目に含まれる第2の復号語と、前記第2の復号語が存在するか否かを示すフラグ信号を出力するとともに、前記第1の復号語の符号長である第1の可変長符号長と前記第2の復号語の符号長である第2の可変長符号長を加算した符号長加算値を前記ビットシフト量情報として前記ビットシフト部に出力する復号データ格納部と、
前記第1の復号語と前記第2の復号語を入力し、前記フラグ信号が第2の復号語が存在しないことを示している場合には、前記第1の復号語のみを復号データとして出力し、前記フラグ信号が第2の復号語が存在していることを示している場合には、前記第1の復号語並びに前記第2の復号語を復号データとして出力する復号語抽出部とを含んでいる。
本発明によれば、復号データ格納部では、第1の可変長符号符号長と第2の可変長符号長とをそれぞれ格納して出力するのではなく、第1の可変長符号符号長と第2の可変長符号長の和を格納して出力するようにしているので、上記で説明した第1の発明により得られる効果に加え、復号データ格納部の必要リソースが削減できるだけでなく、符号長加算部を削減することが可能となる。
さらに、本発明の他の可変長符号復号回路は、可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列に含まれる第1から第NのN語の復号語と、前記可変長符号データ列に含まれる第1から第Nの復号語の数を示すフラグ信号を出力するとともに、前記第1から第Nの可変長符号長の和を前記ビットシフト量情報として前記ビットシフト部に出力する復号データ格納部と、
前記第1から第Nの復号語を入力し、前記フラグ信号により示される語数分の復号語を復号データとして出力する復号語抽出部とを含んでいる。
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列に含まれる第1から第NのN語の復号語と、前記可変長符号データ列に含まれる第1から第Nの復号語の数を示すフラグ信号を出力するとともに、前記第1から第Nの可変長符号長の和を前記ビットシフト量情報として前記ビットシフト部に出力する復号データ格納部と、
前記第1から第Nの復号語を入力し、前記フラグ信号により示される語数分の復号語を復号データとして出力する復号語抽出部とを含んでいる。
本発明によれば、可変長符号長の和が最大符号長のビット数以内であるN語までの可変長符号を一括して復号することができるので、第1の発明により得られるリソース使用率の向上及び復号処理効率の向上の効果をより大きくすることが可能となる。
また、前記可変長符号をハフマン符号とするようにしてもよい。
以上説明したように、本発明によれば、可変長符号の符号長の和が最大ビット長以内である連続するハフマン符号を複数語一括して復号できるので、リソースの使用効率を向上できるとともに、復号処理効率を向上できるという効果を得ることができる。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図1は、本発明の第1の実施形態による可変長符号復号回路の構成を示すブロック図である。本実施形態の可変長符号復号回路は、図1に示されるように、ビットシフト部1と、復号データ格納部2と、復号語抽出部3と、符号長加算部4とから構成されている。
ビットシフト部1は、ハフマン符号データ列101を入力し、さらに符号長加算部4から出力される符号長加算値108を入力し、入力された符号長加算値108をビットシフト量情報としてハフマン符号データ列101の先頭ビット位置をシフトさせ、シフトされた先頭ビットからハフマン符号の最大ビット数分のビット列102を出力する。図1ではハフマン符号の最大ビット数を16ビットとした場合に16ビットのビット列102を出力する例を図示している。
復号データ格納部2は、ビットシフト部1から出力される先頭ビット位置が揃えられた16ビットのハフマン符号データ列102をアドレス信号として入力し、ハフマン符号データ列102の先頭ビットから1番目に含まれる第1の復号語をデータ103として出力し、ハフマン符号データ列102の先頭ビットから2番目に含まれる第2の復号語をデータ104として出力し、第1の復号語103の符号長である第1のハフマン符号長をデータ106として出力し、第2の復号語104の符号長である第2のハフマン符号長をデータ107として出力する。図1では、第1の復号語103及び第2の復号語104としてそれぞれ8ビットのデータである場合を図示している。また、図1では、第1のハフマン符号長106及び第2のハフマン符号長107としてそれぞれ4ビットのデータである場合を図示している。
符号長加算部4は、復号データ格納部4から出力される第1のハフマン符号長106及び第2のハフマン符号長107を入力し、それらを加算した符号長加算値108をビットシフト量情報としてビットシフト部1に出力すると共に、第2のハフマン符号長107の値が第2の復号語が存在しないことを示す値であった場合に、第2の復号語が格納されていない旨を示すフラグ信号109を出力する。
復号語抽出部3は、復号データ格納部2から出力される第1の復号語103及び第2の復号語104を入力し、符号長加算部4からのフラグ信号109を入力して、フラグ信号109が第2の復号語が格納されていないことを示している場合には、第1の復号語103のみを取り込んで復号データ105として出力し、フラグ信号109が第2の復号語が格納されていることを示している場合には、第1の復号語103並びに第2の復号語104を取り込んで復号データ105として出力する。
図2は、本実施形態による可変長符号復号回路における復号データ格納部2の構成を示す図であり、ハフマン符号データ列の最大符号長は16ビット、第1の復号語103及び第2の復号語104は共に8ビット、第1のハフマン符号長106及び第2のハフマン符号長107は共に4ビットで構成している。
復号データ格納部2は、例えばメモリで構成することができ、ハフマン符号の最大符号長分のビット数である16ビット数のアドレスビットで表現されるアドレス空間を有し、データとして第1のハフマン符号領域及び第2のハフマン符号領域を持つ。アドレスには16ビットの入力ハフマン符号データ列が与えられ、第1のハフマン符号領域及び第2のハフマン符号領域は共にアドレスとして与えられたハフマン符号の復号語として対応付けられる8ビットの復号語及びそのハフマン符号のハフマン符号長が4ビットで格納される。そして、復号データ格納部2は、ビットシフト部1からのハフマン符号データ列102に第2の復号語が含まれていない場合には、第2の可変長符号長の値として第2の復号語が存在しないことを示す値である“0”を出力する。
また、図2には、例えば、復号語「A」に対応するハフマン符号が4ビット長の1110で与えられ、復号語「B」に対応するハフマン符号が8ビット長の11111110で与えられ、復号語「C」に対応するハフマン符号が12ビット長の111111111110で与えられるとしたときのアドレスと格納するデータの対応が示されている。16ビットの入力ハフマン符号データ列の先頭から12ビットが111011111110であったとき、これに対応する復号語は「A」[B]となるので、先頭ビット側の第1のハフマン符号1110のハフマン符号長「4」は第1のハフマン符号長として第1のハフマン符号領域内のハフマン符号長として格納され、対応する復号語「A」が第1のハフマン符号領域内の復号語として格納される。先頭ビット側から2番目となる第2のハフマン符号11111110のハフマン符号長「8」は第2のハフマン符号長として第2のハフマン符号領域内のハフマン符号長として格納され、対応する復号語「B」が第2のハフマン符号領域内の復号語として格納される。
すなわち、16ビットアドレスの上位12ビットが111011111110である全てのアドレス111011111110XXXXにはデータとして(復号語=A)、(符号長=4)、(復号語=B)、(符号長=8)という情報が格納され、16ビットのアドレスとして111011111110XXXXが与えられると、格納されているデータが第1の復号語、第1のハフマン符号長、第2の復号語、第2のハフマン符号長として出力される。
同じように、16ビットの入力ハフマン符号データ列の先頭から16ビットが1110111111111110であったとき、これに対応する復号語は「A」[C]となるので、先頭ビット側の第1のハフマン符号1110のハフマン符号長「4」は第1のハフマン符号長として第1のハフマン符号領域内のハフマン符号長として格納され、対応する復号語「A」が第1のハフマン符号領域内の復号語として格納される。先頭ビット側から2番目となる第2のハフマン符号111111111110のハフマン符号長「12」は第2のハフマン符号長として第2のハフマン符号領域内のハフマン符号長として格納され、対応する復号語「C」が第2のハフマン符号領域内の復号語として格納される。
すなわち、16ビットアドレス1110111111111110にはデータとして(復号語=A)、(符号長=4)、(復号語=C)、(符号長=12)という情報が格納され、16ビットのアドレスとして1110111111111110が与えられると、格納されているデータが第1の復号語、第1のハフマン符号長、第2の復号語、第2のハフマン符号長として出力される。
また、同じように、16ビットの入力ハフマン符号データ列の先頭から16ビットが1111111011111111であったとき、これに対応する復号語は「B」のみとなるので、先頭ビット側の第1のハフマン符号11111110のハフマン符号長「8」は第1のハフマン符号長として第1のハフマン符号領域内のハフマン符号長として格納され、対応する復号語「B」が第1のハフマン符号領域内の復号語として格納される。
このとき、先頭ビット側から2番目となる第2のハフマン符号は途中までしか入力されていない。つまり、8ビットの11111111に対応するハフマン符号は存在していないため第2の復号語は格納されない。この場合は、第2のハフマン符号長の値としては第2の復号語が格納されていないことを示す値、例えば「0」を第2のハフマン符号領域内のハフマン符号長として格納し、第2のハフマン符号領域内の復号語は値としては任意としてよい。すなわち、16ビットアドレス1111111011111111にはデータとして(復号語=B)、(符号長=8)、(復号語=任意)、(符号長=0)という情報が格納され、16ビットのアドレスとして1111111011111111が与えられると、格納されているデータが第1の復号語、第1のハフマン符号長として出力される。
なお、第1のハフマン符号長のビット幅は、第1のハフマン符号に対応する復号語はいかなる16ビットアドレスに対しても必ず存在するため、1ビット長から16ビット長の全16種類の値を表示するため4ビットとしている。
また、第1のハフマン符号は少なくとも1ビット以上であるため、第2のハフマン符号の符号長は最大でも15ビットまでしか格納されることはない。しかし、第2のハフマン符号長の値は、第2の復号語が格納されていないことを表示することができる必要がある。そのため、第2のハフマン符号長のビット幅も、1ビット長から15ビット長までの各ハフマン符号長と、第2の復号語が格納されていないことを示す値との全16種類の値を表示できるよう4ビットとしている。しかし、図1の符号長加算部4において第1のハフマン符号長と第2のハフマン符号長の和がビットシフト部1におけるビットシフト量情報として使用できるように取り決めてさえいれば、値の対応付けは実現しやすさなどから自由に決めてよい。
また、当然ながら、格納するデータの配置は図2の限りではない。
以上のようにして、16ビットアドレスの全てのアドレスに対して対応する復号語とハフマン符号長をデータとして格納することにより、何らかの16ビットアドレスが与えられると、データとして対応する復号語とハフマン符号長が出力される。
次に、本実施形態による可変長符号復号回路の動作について図面を用いて説明する。
図1において、まず、最初にハフマン符号データ列101が入力されると、ビットシフト部1は入力したハフマン符号データ列101の先頭から16ビット分を16ビットのハフマン符号データ列102として出力する。復号データ格納部2は、ハフマン符号データ列102を16ビットのアドレス信号として入力し、対応するデータを第1の復号語103、第1のハフマン符号長106、第2の復号語104、第2のハフマン符号長107として出力する。符号長加算部4は、第1のハフマン符号長106及び第2のハフマン符号長107を入力し、それらを加算した結果である符号長加算値108を出力すると同時に、第2のハフマン符号長107が第2の復号語が格納されていないことを示す値、すわなち、図2の例では値0(ゼロ)であった場合には、フラグ信号109として第2の復号語が格納されていないことを復号語抽出部3に出力する。復号語抽出部3は、復号データ格納部2から出力される第1の復号語103及び第2の復号語104を入力し、フラグ信号109が第2の復号語が格納されていないことを示していれば第1の復号語103のみを取り込んで復号データ105として出力し、それ以外の場合は第1の復号語103及び第2の復号語104の両方を取り込んで復号データ105として出力する。
このようにして、16ビットの入力ハフマン符号データ列に対して先頭から1ハフマン符号分、もしくは、先頭から2ハフマン符号分に対応する復号データが得られる。
この時点で、ビットシフト部1にはビットシフト量情報として符号長加算部4から符号長加算値108が入力されており、前に16ビットのハフマン符号データ列102として出力した16ビットのハフマン符号データ列において、先頭から符号長加算値108で示されたビット数分を後方にシフトした位置を新たな16ビットハフマン符号データ列102の先頭ビットとしてそこから16ビット分のハフマン符号データ列を復号データ格納部2に出力する。復号データ格納部2は新たに入力された16ビットのハフマン符号データ列102に対応する第1の復号語103、第1のハフマン符号長106、第2の復号語104、第2のハフマン符号長107を出力する。以降は同様の動作の繰り返しとなる。
以上で説明したような処理が行われることにより、本実施形態の可変長符号復号回路によれば、第1のハフマン符号長106と第2のハフマン符号長107の和がビットシフト部1から出力されるハフマン符号データ列102のビット数である16ビットと同じかまたは小さい場合には第1の復号語103と第2の復号語104を同時に出力できるので2語のハフマン符号を一括して復号することができる。また、第1のハフマン符号長106と第2のハフマン符号長107の和がビットシフト部1から出力されるハフマン符号データ列102のビット数である16ビットよりも大きい場合には第1の復号語103のみが出力されるので一度に1語のハフマン符号が復号される。
そのため、16ビットのハフマン符号データ列において先頭から2ハフマン符号が含まれる場合には2語を一括で復号し、先頭から1ハフマン符号のみか、もしくは、先頭から2番目のハフマン符号が途中までしか含まれていない場合には先頭側の1語を復号することができる。従って、平均的には一度に1語以上2語以下のハフマン符号を復号することができ、一度に必ず1語を復号する場合と比較してリソースの使用率が向上し、且つ、処理効率を向上させることができるという効果が得られる。
尚、本実施の形態では、最大ハフマン符号長を16ビットとして説明したが、必ずしも16ビットである必要はない。最大ハフマン符号長がLビットの場合は、復号データ格納部2のアドレス幅をLビットとし、ビットシフト部1では常にLビット分のハフマン符号データ列102を出力するようにすればよい。また、さらに、これに連動して、復号データ格納部2の第1の符号長及び第2の符号長のビット幅を増減し、またこれにあわせて符号長加算部4での入力信号幅を増減することにより対応可能である。また、復号データ格納部2のアドレス幅をLビット以上とすることにより、そのアドレス幅に応じて一度に2語を復号できる確率を高めることが可能である。
また、本実施の形態では、復号語のビット長を8ビットとして説明したが、必ずしも8ビットである必要はない。復号語のビット長がKビットの場合は、復号データ格納部2の第1の復号語及び第2の復号語のビット幅をKビットとして復号語を格納するようにすればよい。
(第2の実施形態)
次に、本発明の第2の実施形態の可変長符号復号回路について説明する。
次に、本発明の第2の実施形態の可変長符号復号回路について説明する。
図3は本発明の第2の実施形態の可変長符号復号回路の構成を示すブロック図である。図3において、図1中の構成要素と同一の構成要素には同一の符号を付し、説明を省略するものとする。
本発明の第2の実施形態の可変長符号復号回路は、図3に示されるように、ビットシフト部1と、復号データ格納部22と、復号語抽出部3とから構成されている。本実施形態の可変長符号復号回路は、図1に示した第1の実施形態の可変長符号復号回路に対して、復号データ格納部2が復号データ格納部22に置き換えられ、符号長加算部4が削除された構成となっている。
本実施形態の可変長符号復号回路は、基本的な動作は上記で説明した第1の実施形態と同様であるが、図2で説明した復号データ格納部2の格納データの構成を工夫することにより必要リソースを削減したものである。
本実施形態の可変長符号復号回路における復号データ格納部22は、図4に示されるように、第1の復号語及び第2の復号語を格納することは図2に示した復号データ格納部2と同様であるが、第1のハフマン符号長及び第2のハフマン符号長を各々格納する代わりに第1のハフマン符号長と第2のハフマン符号長の和を格納することと、第2の復号語の有無を示すフラグビットを格納することが異なる。
第1のハフマン符号長と第2のハフマン符号長の和は1ビットから16ビットの16種類の値を表現できればよいので4ビット幅で十分である。またフラグビットにより第2の復号語の有無を表示する。さらに、第1のハフマン符号長と第2のハフマン符号長の和を格納しているので、図1における符号長加算部4、第1のハフマン符号長106、第2のハフマン符号長107が不要になり、第1のハフマン符号長と第2のハフマン符号長の和がそのまま符号長加算値108としてビットシフト部1に入力でき、フラグビットをフラグ信号109として復号語抽出部3に入力できる。
以上説明したように構成することにより、上記で説明した第1の実施の形態で得られる効果に加え、復号データ格納部22の必要リソースが削減できるだけでなく、その周辺回路リソースも削減することができるという効果が得られる。
尚、本実施形態では、最大ハフマン符号長を16ビットとして説明したが、必ずしも16ビットである必要はない。最大ハフマン符号長がLビットの場合は、復号データ格納部22のアドレス幅をLビットとし、ビットシフト部1では常にLビット分のハフマン符号データ列102を出力するようにすればよい。また、さらに、これに連動して、復号データ格納部22の第1の符号長及び第2の符号長のビット幅を増減することにより対応可能である。また、復号データ格納部22のアドレス幅をLビット以上とすることにより、そのアドレス幅に応じて一度に2語を復号できる確率を高めることが可能である。
また、本実施形態では、復号語のビット長を8ビットとして説明したが、必ずしも8ビットである必要はない。復号語のビット長がKビットの場合は、復号データ格納部2の第1の復号語及び第2の復号語のビット幅をKビットとして復号語を格納するようにすればよい。
(第3の実施形態)
次に、本発明の第3の実施形態の可変長符号復号回路について説明する。
次に、本発明の第3の実施形態の可変長符号復号回路について説明する。
図5は本発明の第3の実施形態の可変長符号復号回路の構成を示すブロック図である。図5において、図3中の構成要素と同一の構成要素には同一の符号を付し、説明を省略するものとする。
本発明の第3の実施形態の可変長符号復号回路は、図5に示されるように、ビットシフト部1と、復号データ格納部32と、復号語抽出部33とから構成されている。本実施形態の可変長符号復号回路は、図3に示した第2の実施形態の可変長符号復号回路に対して、復号データ格納部22が復号データ格納部32に置き換えられ、復号語抽出部3が復号語抽出部33に置き換えられた構成となっている。
本実施形態の可変長符号復号回路は、基本的な動作は上記で説明した第1の実施形態と同様であるが、図2で説明した復号データ格納部2の格納データの構成を工夫することにより必要リソースを削減したものである。
本実施形態は、基本的な動作は上記で説明した第1および第2の実施形態と同様であるが、図3で説明した復号データ格納部22の格納データの構成を工夫することにより、さらにリソースの使用率を向上し、且つ、復号処理効率を向上させたものである。
本実施形態の可変長符号復号回路における復号データ格納部32は、図6に示されるように、復号語を第Nの復号語まで格納するように拡張したものである。
本実施形態における復号データ格納部32は、ビットシフト部1からの16ビット数のハフマン符号データ列102をアドレス信号として入力し、ハフマン符号データ列102に含まれる第1から第NのN語の復号語1101〜110Nと、ハフマン符号データ列102に含まれる第1から第Nの復号語の数を示すフラグ信号109を出力するとともに、第1から第Nのハフマン符号長の和である符号長加算値108をビットシフト量情報としてビットシフト部1に出力する。
つまり、復号データ格納部32は、第1の復号語、第2の復号語に加えて第3の復号語以降、第Nの復号語までの8×Nビットのデータを格納する構成とし、第1のハフマン符号長と第2のハフマン符号長に加えて第3のハフマン符号長以降、第Nのハフマン符号長までの和を4ビットで格納し、さらにフラグビットの代わりに復号語の数を格納する構成とする。復号語の数は、復号語を何語格納するかによって、その数を表現できるビット数とする。ここではMビットとしている。従って、データとしては合計で(8×N+4+M)ビット分のビット幅となる。このように構成することにより、例えば、16ビットのハフマン符号データ列として1110111011111110が入力された場合、第1の復号語として「A」、第2の復号語として「A」、第3の復号語として「B」、第1から第Nのハフマン符号長の和として「16」、復号語の数として「3語」を表すデータが出力される。
本実施形態における復号語抽出部33は、第1から第Nの復号語1101〜110Nの各々を入力し、復号語の数としてフラグ信号109で示された語数分の復号語だけを取り込んで復号データ105として出力する。ビットシフト部1は、第1から第Nのハフマン符号長の和を符号長加算値108として入力し、その値分だけハフマン符号データ列の先頭ビット位置をシフトして16ビットのハフマン符号データ列102として出力する。
以上説明したように構成することにより、ハフマン符号長の和が16ビット以内であるN語までのハフマン符号に対して一括して復号することができるので、第1の実施の形態で得られるリソース使用率の向上及び復号処理効率の向上の効果をより大きい効果として得ることができる。
尚、本実施形態では、最大ハフマン符号長を16ビットとして説明したが、必ずしも16ビットである必要はない。最大ハフマン符号長がLビットの場合は、復号データ格納部32のアドレス幅をLビットとし、ビットシフト部1では常にLビット分のハフマン符号データ列102を出力するようにすればよい。また、さらに、これに連動して、復号データ格納部2の第1の符号長及び第2の符号長のビット幅を増減することにより対応可能である。また、復号データ格納部32のアドレス幅をLビット以上とすることにより、そのアドレス幅に応じて一度に2語以上を復号できる確率を高めることが可能である。
また、本実施形態では、復号語のビット長を8ビットとして説明したが、必ずしも8ビットである必要はない。復号語のビット長がKビットの場合は、復号データ格納部32の第1の復号語及び第2の復号語のビット幅をKビットとして復号語を格納するようにすればよい。
1 ビットシフト部
2 復号データ格納部
3 復号語抽出部
4 符号長加算部
22 復号データ格納部
32 復号データ格納部
33 復号語抽出部
101 ハフマン符号データ列
102 16ビットハフマン符号データ列
103 第1の復号語
104 第2の復号語
105 復号データ
106 第1のハフマン符号長
107 第2のハフマン符号長
108 符号長加算値
109 フラグ信号
1101〜110N 第1から第Nの復号語
2 復号データ格納部
3 復号語抽出部
4 符号長加算部
22 復号データ格納部
32 復号データ格納部
33 復号語抽出部
101 ハフマン符号データ列
102 16ビットハフマン符号データ列
103 第1の復号語
104 第2の復号語
105 復号データ
106 第1のハフマン符号長
107 第2のハフマン符号長
108 符号長加算値
109 フラグ信号
1101〜110N 第1から第Nの復号語
Claims (6)
- 可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列の先頭ビットから1番目に含まれる第1の復号語と、該第1の復号語の符号長である第1の可変長符号長、並びに、前記可変長符号データ列の先頭ビットから2番目に含まれる第2の復号語と、該第2の復号語の符号長である第2の可変長符号長をデータ信号として出力する復号データ格納部と、
前記第1の可変長符号長と前記第2の可変長符号長を入力してそれらを加算した符号長加算値を前記ビットシフト量情報として前記ビットシフト部に出力すると共に、前記第2の復号語が存在するか否かを示すフラグ信号を出力する符号長加算部と、
前記第1の復号語と前記第2の復号語を入力し、前記フラグ信号が第2の復号語が存在しないことを示している場合には、前記第1の復号語のみを復号データとして出力し、前記フラグ信号が第2の復号語が存在していることを示している場合には、前記第1の復号語並びに前記第2の復号語を復号データとして出力する復号語抽出部と、
を含む可変長符号復号回路。 - 前記復号データ格納部は、前記ビットシフト部からの前記可変長符号データ列に第2の復号語が含まれていない場合には、前記第2の可変長符号長の値として前記第2の復号語が存在しないことを示す値を出力する請求項1記載の可変長符号復号回路。
- 前記符号長加算部は、前記第2の可変長符号長の値として前記第2の復号語が存在しないことを示す値を入力した場合には、前記フラグ信号として前記第2の復号語が格納されていないことを示すフラグ信号を出力する請求項2記載の可変長符号復号回路。
- 可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列の先頭ビットから1番目に含まれる第1の復号語と、前記可変長符号データ列の先頭ビットから2番目に含まれる第2の復号語と、前記第2の復号語が存在するか否かを示すフラグ信号を出力するとともに、前記第1の復号語の符号長である第1の可変長符号長と前記第2の復号語の符号長である第2の可変長符号長を加算した符号長加算値を前記ビットシフト量情報として前記ビットシフト部に出力する復号データ格納部と、
前記第1の復号語と前記第2の復号語を入力し、前記フラグ信号が第2の復号語が存在しないことを示している場合には、前記第1の復号語のみを復号データとして出力し、前記フラグ信号が第2の復号語が存在していることを示している場合には、前記第1の復号語並びに前記第2の復号語を復号データとして出力する復号語抽出部と、
を含む可変長符号復号回路。 - 可変長符号を復号するための可変長符号復号回路であって、
入力されたビットシフト量情報に基づいて入力された可変長符号データ列の先頭ビット位置をシフトし、シフトされた該先頭ビットから可変長符号の最大符号長のビット数の可変長符号データ列を出力するビットシフト部と、
可変長符号の最大符号長分のビット数のアドレスビットで表現されるアドレス空間を有し、前記ビットシフト部からの最大符号長のビット数の可変長符号データ列をアドレス信号として入力し、前記可変長符号データ列に含まれる第1から第NのN語の復号語と、前記可変長符号データ列に含まれる第1から第Nの復号語の数を示すフラグ信号を出力するとともに、前記第1から第Nの可変長符号長の和を前記ビットシフト量情報として前記ビットシフト部に出力する復号データ格納部と、
前記第1から第Nの復号語を入力し、前記フラグ信号により示される語数分の復号語を復号データとして出力する復号語抽出部と、
を含む可変長符号復号回路。 - 前記可変長符号がハフマン符号である請求項1から5のいずれか1項記載の可変長符号復号回路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005083552A JP2006270330A (ja) | 2005-03-23 | 2005-03-23 | 可変長符号復号回路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005083552A JP2006270330A (ja) | 2005-03-23 | 2005-03-23 | 可変長符号復号回路 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006270330A true JP2006270330A (ja) | 2006-10-05 |
Family
ID=37205842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005083552A Withdrawn JP2006270330A (ja) | 2005-03-23 | 2005-03-23 | 可変長符号復号回路 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006270330A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007158698A (ja) * | 2005-12-05 | 2007-06-21 | Matsushita Electric Ind Co Ltd | 画像復号装置及び画像復号方法 |
JP2011114535A (ja) * | 2009-11-26 | 2011-06-09 | Ricoh Co Ltd | データ処理装置およびデータ処理方法 |
-
2005
- 2005-03-23 JP JP2005083552A patent/JP2006270330A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007158698A (ja) * | 2005-12-05 | 2007-06-21 | Matsushita Electric Ind Co Ltd | 画像復号装置及び画像復号方法 |
JP2011114535A (ja) * | 2009-11-26 | 2011-06-09 | Ricoh Co Ltd | データ処理装置およびデータ処理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8094048B2 (en) | Method of decoding syntax element in context-based adaptive binary arithmetic coding decoder and decoding device therefor | |
JP2003218703A (ja) | データ符号化装置及びデータ復号装置 | |
JP4098187B2 (ja) | 可変長コード復号化装置及び方法 | |
JP2007043595A (ja) | 可変長符号復号化方法および装置ならびにデータ伸長装置 | |
CN111708574A (zh) | 指令流压缩、解压缩方法及装置 | |
JP4079965B2 (ja) | 復号化システム | |
JP2006254225A (ja) | 可変長符号の復号装置及び復号方法 | |
JP4841496B2 (ja) | 可変長符号復号化装置 | |
JP2006270330A (ja) | 可変長符号復号回路 | |
JP5894605B2 (ja) | 方法及び装置 | |
US7567189B2 (en) | Variable length code decoding apparatus and variable length code decoding method | |
WO2007108395A1 (ja) | 可変長符号の復号装置および復号方法 | |
US6789097B2 (en) | Real-time method for bit-reversal of large size arrays | |
CN111970007B (zh) | 一种解码方法、解码器、设备及介质 | |
US7461108B2 (en) | Barrel shift device | |
US8044831B2 (en) | Decoding apparatus and control method thereof | |
US20220091820A1 (en) | Storage medium and operation device | |
JP2006140772A (ja) | 符号化装置とその符号化方法およびプログラム | |
JPH08316847A (ja) | 可変長符号の復号装置 | |
JP5075135B2 (ja) | 復号装置及びその制御方法 | |
CN107133330B (zh) | 一种数据二值化处理的方法与装置 | |
KR101270633B1 (ko) | 복수 호프만 테이블을 적용하여 고속 처리가 가능한 멀티미디어용 호프만 디코딩 방법 및 장치 | |
JP3792633B2 (ja) | マイクロコントローラ、及びマイクロコントローラ装置 | |
JPH11163736A (ja) | プロセッサ | |
JPH0722969A (ja) | 演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080213 |
|
A131 | Notification of reasons for refusal |
Effective date: 20091209 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20100419 |