(57)【要約】【課題】１クロックで複数の復元処理結果が得られる高速な可変長デコーダ回路を提供する。【解決手段】複数のデコーダ回路を内蔵し、予め定められた１クロックで復元可能なビット数と各々のデコーダ回路が出力する復元ビット数データとを比較するコントローラを設け、複数のデコード処理が１クロックを超える他のデコード処理にとって待たされることをなくす。【選択図】図１
2010045485.tif 000002
【特許請求の範囲】
【請求項１】
可変長符号を復元する可変長符号デコーダにおいて、
可変長符号を記憶し、指定されたビット数だけ当該可変長符号をシフトするシフトレジスタと、
前記シフトレジスタに記憶された可変長符号を順次自デコーダ回路より前のデコーダ回路で復元されるビット数だけシフトした可変長符合が入力され、当該入力された可変長符号を復元して復元コードを出力する複数のデコーダ回路と、
前記複数のデコーダ回路によって順次復元される可変長符号の合計ビット数と、所定期間内にデコード処理が可能なビット数を表す処理可能ビット数と、を比較して、前記合計ビット数が前記処理可能ビット数以下となる復元コードを示す情報を出力するとともに、当該復元コードに対応する可変長符号の合計ビット数だけ前記シフトレジスタの可変長符号をシフトさせる制御部と、
を備えることを特徴とする可変長符号デコーダ。
【請求項２】
前記制御部は、
前記比較において合計ビット数が前記処理可能ビット数以下となる復元コードに対応しないデコーダ回路に対して、デコード処理を停止させる、
ことを特徴とする請求項１に記載の可変長符号デコーダ。
【請求項３】
前記可変長符号は、ハフマン符号である、
ことを特徴とする請求項１または請求項２に記載の可変長符号デコーダ。
【請求項４】
前記シフトレジスタは、
前記制御部により可変長符号をシフトした後のデータ領域に順次新たな可変長符号を記憶する、
ことを特徴とする請求項１から請求項３のいずれか１の項に記載の可変長符号デコーダ。
【請求項５】
前記複数のデコーダ回路のＫ（Ｋ＝１，２，３・・・）番目のデコーダ回路には、
前記シフトレジスタに記憶された可変長符号を１からＫ−１番目のデコーダ回路で復元されるビット数だけシフトした可変長符号が入力され、
当該Ｋ番目のデコーダ回路は、符号長が一番長い符号からＫ−１番目に長い符号を復元する組み合わせ回路を含まない組み合わせ回路からなる
ことを特徴とする請求項１から請求項４のいずれか１の項に記載の可変長符号デコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハフマン符号等の可変長符号を復元する可変長符号デコーダに関する。
【背景技術】
【０００２】
従来、音声データや画像データが圧縮された可変長符号を復元するハフマンデコードの方法としてＤＳＰ（デジタル信号処理装置）で可変長符号を１ビットずつ復元する方法や、専用回路を用いて１クロックで１個のハフマンデコードをする方法がある。また、ハフマンデコードを高速化するため、専用回路を用いて１クロックで複数のハフマンデコードを行う方法が提案されている。
【０００３】
ハフマンデコードを高速化するための方法として、特許文献１では、発生頻度の高いデータに短い符号を割り当てるというハフマン符号化の特徴を利用し、予め定められた短い符号を複数個判断する専用回路を設け、短い符号が割り当てられた複数のデータを１クロックで復元する方法が開示されている。
【特許文献１】特許第３１３６７９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、専用回路を用いて１クロックで複数のハフマンデコードを行う方法は、専用回路の遅延が大きくなり、１クロックで収まらなくなる問題がある。また、特許文献１では、予め定められた短い符号が連続する組み合わせに合致しない場合は、通常の復元処理と同じになり、常に高速な復元を保証するものではない。
【０００５】
本発明は、上記の課題認識に基づいてなされたものであり、任意の順で入力される可変長符号に対して１クロックで複数の復元処理結果が得られる高速な可変長デコーダ回路を提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記の課題を解決するため、本発明の可変長符号デコーダは、可変長符号を復元する可変長符号デコーダにおいて、可変長符号を記憶し、指定されたビット数だけ当該可変長符号をシフトするシフトレジスタと、前記シフトレジスタに記憶された可変長符号を順次自デコーダ回路より前のデコーダ回路で復元されるビット数だけシフトした可変長符合が入力され、当該入力された可変長符号を復元して復元コードを出力する複数のデコーダ回路と、前記複数のデコーダ回路によって順次復元される可変長符号の合計ビット数と、所定期間内にデコード処理が可能なビット数を表す処理可能ビット数と、を比較して、前記合計ビット数が前記処理可能ビット数以下となる復元コードを示す情報を出力するとともに、当該復元コードに対応する可変長符号の合計ビット数だけ前記シフトレジスタの可変長符号をシフトさせる制御部と、を備えることを特徴とする。
【０００７】
また、本発明の前記制御部は、前記比較において合計ビット数が前記処理可能ビット数以下となる復元コードに対応しないデコーダ回路に対して、デコード処理を停止させる、ことを特徴とする。
【０００８】
また、本発明の前記可変長符号は、ハフマン符号である、ことを特徴とする。
【０００９】
また、本発明の前記シフトレジスタは、前記制御部により可変長符号をシフトした後のデータ領域に順次新たな可変長符号を記憶する、ことを特徴とする。
【００１０】
また、本発明の前記複数のデコーダ回路のＫ（Ｋ＝１，２，３・・・）番目のデコーダ回路には、前記シフトレジスタに記憶された可変長符号を１からＫ−１番目のデコーダ回路で復元されるビット数だけシフトした可変長符号が入力され、当該Ｋ番目のデコーダ回路は、符号長が一番長い符号からＫ−１番目に長い符号を復元する組み合わせ回路を含まない組み合わせ回路からなることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、デコーダ回路の遅延量に応じて予め定められた一定期間に処理可能なビット数を判断する機能を設け、１クロックで可変長符号の復元が必ず完了するようにしたので、任意の順で入力される可変長符号に対して１クロックで複数のハフマンデコード結果を得ることができるという効果が得られる。
【発明を実施するための最良の形態】
【００１２】
＜第１実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。図１は、本実施形態による可変長符号デコーダ回路の構成を示したブロック図である。図１において、本実施形態による可変長符号デコーダ回路は、シフトレジスタ１０、コントロール部２０、ビットシフト部２１、第１のハフマンデコーダ３２、第１のコードレジスタ３３、第２のビットシフト４１、第２のハフマンデコーダ４２、第２のコードレジスタ４３、第３のビットシフト５１、第３のハフマンデコーダ５２、第３のコードレジスタ５３、第４のビットシフト６１、第４のハフマンデコーダ６２、第４のコードレジスタ６３、から構成される。
【００１３】
本実施形態における可変長符号デコーダ回路の動作は、可変長符号列を順次シフトレジスタ１０に記憶し、４個搭載されている各ハフマンデコーダで可変長符号データを各々復元して各ハフマンデコーダで復元された各々の復元コードを各コードレジスタに記憶する。また、一定間隔で各コードレジスタに記憶されている復元コードと、各コードレジスタに記憶されている復元符号の内、有効な復元コードの数を示すコード数を出力する。各ハフマンデコーダでの復元処理が完了すると、復元処理が完了した可変長符号データを除いて次の可変長符号列を順次シフトレジスタ１０に記憶し、復元処理を繰り返し行う。
【００１４】
シフトレジスタ１０は、可変長符号列を先頭から順次入力して、本実施形態における可変長符号デコーダ回路に搭載されている４個の各ハフマンデコーダが復元処理する可変長符号データを記憶するレジスタである。シフトレジスタ１０は、各ハフマンデコーダに記憶している可変長符号データを出力する。シフトレジスタ１０は、４個のハフマンデコーダが処理するハフマン符号のビット数より充分大きいビット数の可変長符号データを保持している。シフトレジスタ１０は、次の復元処理のために現在記憶している可変長符号データをビットシフト部２１に出力し、ビットシフト部２１が出力するビットシフトされた可変長符号データの全ビットを一度に先頭から再度記憶する。また、ビットシフト部２１のビットシフト処理によって入力がなくなり、空白となった記憶領域には、ビットシフト部２１から入力されるシフト制御信号に従って、可変長符号列を順次入力し、空白となった分のデータを順次記憶する。
【００１５】
第１のハフマンデコーダ３２は、入力された可変長符号データの復元を行うブロックである。
第１のハフマンデコーダ３２は、シフトレジスタ１０から入力された可変長符号データに対して当該第１のハフマンデコーダ３２に組み込まれている組み合わせ回路に合致するビット数を判別し、合致したビット数を当該第１のハフマンデコーダ３２が復元する復元ビット数データとして出力する。また、当該第１のハフマンデコーダ３２に組み込まれている組み合わせ回路によって復元ビット数データで示した可変長符号データの復元を行い、復元コードを出力する。
【００１６】
第２のビットシフト４１、第３のビットシフト５１、第４のビットシフト６１は、入力された可変長符号データをビットシフトするバレルシフタである。
第２のビットシフト４１、第３のビットシフト５１、第４のビットシフト６１は、シフトレジスタ１０から入力された可変長符号データに対して対応する前段のハフマンデコーダ（第２のビットシフト４１に対応する前段のハフマンデコーダは、第１のハフマンデコーダ３２である。第３のビットシフト５１に対応する前段のハフマンデコーダは、第１のハフマンデコーダ３２と第２のハフマンデコーダ４２である。第４のビットシフト６１に対応する前段のハフマンデコーダは、第１のハフマンデコーダ３２と第２のハフマンデコーダ４２と第３のハフマンデコーダ５２である。）から入力された復元ビット数データを合計したビット数分のビットシフトを行い、対応する後段のハフマンデコーダ（第２のビットシフト４１の対応する後段のハフマンデコーダは、第２のハフマンデコーダ４２である。第３のビットシフト５１の対応する後段のハフマンデコーダは、第３のハフマンデコーダ５２である。第４のビットシフト６１の対応する後段のハフマンデコーダは、第４のハフマンデコーダ６２である。）にシフト後の可変長符号データを出力する。
【００１７】
第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２は、ビットシフトから入力された可変長符号データの復元を行うブロックである。
第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２は、各々対応するビットシフト４１，５１，６１から入力された可変長符号データに対して当該第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２に各々組み込まれている組み合わせ回路に合致するビット数を判別し、合致したビット数を当該第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２が各々復元する復元ビット数データとして出力する。
また、第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２は、コントロール部２０から入力される各々のハフマンデコーダに対するデコード実行可否信号がデコード実行可能の状態である場合、当該第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２に各々組み込まれている組み合わせ回路によって復元ビット数データで示した可変長符号データの復元を行い、各々の復元コードを出力する。
第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２は、コントロール部２０から入力される各々のハフマンデコーダに対するデコード実行可否信号がデコード実行不可能の状態である場合、当該第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２に各々組み込まれている組み合わせ回路での復元処理を行わず、復元コードとして無効な値（例えば、“Ｆ”のデータ）を出力する。
【００１８】
第１のコードレジスタ３３、第２のコードレジスタ４３、第３のコードレジスタ５３、第４のコードレジスタ６３は、各ハフマンデコーダ３２，４２，５２，６２が出力した復元コードを記憶するレジスタである。各々のコードレジスタの出力は、本実施形態による可変長符号デコーダ回路が復元した可変長符号列の復元コードとなる。
【００１９】
コントロール部２０は、４個のハフマンデコーダが出力する復元コードのうち有効な復元コードの数を示すコード数のカウントおよび、４個のハフマンデコーダと可変長符号のシフト制御を行うブロックである。
コントロール部２０は、本実施形態による可変長符号デコーダ回路に予め定められた１クロックで復元可能なビット数と、各々のハフマンデコーダが出力する復元ビット数データとを比較し、各々のハフマンデコーダが出力する復元コードの有効な数を示すコード数を出力し、有効な復元コードの合計のビット数を当該クロックでのシフト量データとしてビットシフト部２１に出力する。また、各々のハフマンデコーダに対して、デコード実行可能の状態を示すデコード実行可否信号を出力し、１クロックで復元可能なビット数と、各々のハフマンデコーダが出力する復元ビット数データとの比較をした結果、有効な復元コードに対応するハフマンデコーダには、デコード実行可能の状態を示すデコード実行可否信号を継続して出力し、無効な復元コードに対応するハフマンデコーダには、デコード実行不可能の状態を示すデコード実行可否信号を出力する。
復元ビット数の比較は、１クロックで復元可能なビット数と第１のハフマンデコーダ３２の復元ビット数データとを比較し、１クロックで復元可能なビット数を超えていなければ、第１のハフマンデコーダ３２の復元ビット数データと第２のハフマンデコーダ４２の復元ビット数データとを合算し、１クロックで復元可能なビット数と当該合算した復元ビット数データとを比較する。このような手順で第３のハフマンデコーダ５２および、第４のハフマンデコーダ６２の復元ビット数データを各々合算して１クロックで復元可能なビット数と当該合算した復元ビット数データとの比較を順次行い、１クロックで復元可能なビット数を超えた場合は、直前に合算した復元ビット数データに対応するハフマンデコーダおよび、それより前段のハフマンデコーダの出力を有効な復元コードとし、それ以外のハフマンデコーダの出力を無効な復元コードとする。そして、有効な復元コードの数を示すコード数を出力する。また、直前に合算した復元ビット数データの合計値を次の復元処理のために可変長符号データをシフトするシフト量データとして出力する。
また、最後に合算したハフマンデコーダ以降のハフマンデコーダにデコード実行不可能の状態を表すデコード実行可否信号を出力する。
【００２０】
ビットシフト部２１は、シフトレジスタ１０に記憶されている可変長符号データをビットシフトするバレルシフタである。
ビットシフト部２１は、コントロール部２０から入力されたシフト量データに従って、シフトレジスタ１０に記憶されている可変長符号データから復元処理が完了した可変長符号データを除くようにビットシフトを行い、復元処理が完了していない可変長符号データをシフトレジスタ１０に出力する。また、コントロール部２０から入力されたシフト量データに従って、シフトレジスタ１０が可変長符号データを再記憶した後にデータが空白となった領域（復元処理が完了したビット数）に新たな可変長符号列を順次入力するためのシフト制御信号をシフトレジスタ１０に出力する。
【００２１】
次に、可変長符号デコーダ回路の処理手順について説明する。図２は、本実施形態による可変長符号デコーダ回路の処理手順を示したフローチャートである。
【００２２】
まず、シフトレジスタ１０は、ステップＳ１において、可変長符号列を先頭から順次入力して、各ハフマンデコーダ（第１のハフマンデコーダ３２、第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２）が復元処理する可変長符号データを記憶する。
【００２３】
次に、各ハフマンデコーダ（第１のハフマンデコーダ３２、第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２）は、ステップＳ２において、ハフマンデコード処理（図３参照）を行う。
【００２４】
次に、シフトレジスタ１０は、ステップＳ３において、次の復元処理のためにビットシフト部２１が出力する、復元処理が完了したデータの分だけビットシフトした可変長符号データの全ビットを一度に先頭から再度記憶する。
【００２５】
次に、シフトレジスタ１０は、ステップＳ４において、残りの可変長符号列の有無を判断する。残りの可変長符号列がないと判断された場合は、処理を終了する。残りの可変長符号列があると判断された場合は、ステップＳ１に戻り、以降を繰り返す。
【００２６】
次に、各ハフマンデコーダの処理手順について説明する。図３は、本実施形態による可変長符号デコーダ回路の各ハフマンデコーダの処理手順を示したフローチャートである。
【００２７】
まず、第１のハフマンデコーダ３２は、ステップＳ１１において、シフトレジスタ１０が出力する可変長符号データに対して、第１のハフマンデコーダ３２に組み込まれている組み合わせ回路に合致するビット数を判別し、復元ビット数データを出力する。
【００２８】
次に、第１のハフマンデコーダ３２は、ステップＳ１１１において、ハフマンデコードを実行し、さらに、ステップＳ１１２において、復元コードを出力して、第１のハフマンデコーダ３２は、処理を終了する。
【００２９】
第２のビットシフト４１は、ステップＳ１２において、ステップＳ１１で第１のハフマンデコーダ３２が出力した復元ビット数データに従い、シフトレジスタ１０が出力する可変長符号データをビットシフトする。
【００３０】
次に、第２のハフマンデコーダ４２は、ステップＳ１２１において、第２のビットシフト４１が出力する可変長符号データに対して、第２のハフマンデコーダ４２に組み込まれている組み合わせ回路に合致するビット数を判別し、復元ビット数データを出力する。
【００３１】
次に、第２のハフマンデコーダ４２は、ステップＳ１２２において、コントロール部２０からのデコード実行可否信号を確認する。デコード実行可否信号がデコード実行可能の状態を示している場合は、ステップＳ１２３において、ハフマンデコードを実行し、さらに、ステップＳ１２４において、復元コードを出力して、第２のハフマンデコーダ４２は、処理を終了する。デコード実行可否信号が、デコード実行不可能の状態を示している場合は、処理を終了する。
【００３２】
第３のビットシフト５１は、ステップＳ１３において、ステップＳ１２１で第２のハフマンデコーダ４２が出力した復元ビット数データに従い、シフトレジスタ１０が出力する可変長符号データをビットシフトする。
【００３３】
次に、第３のハフマンデコーダ５２は、ステップＳ１３１において、第３のビットシフト５１が出力する可変長符号データに対して、第３のハフマンデコーダ５２に組み込まれている組み合わせ回路に合致するビット数を判別し、復元ビット数データを出力する。
【００３４】
次に、第３のハフマンデコーダ５２は、ステップＳ１３２において、コントロール部２０からのデコード実行可否信号を確認する。デコード実行可否信号がデコード実行可能の状態を示している場合は、ステップＳ１３３において、ハフマンデコードを実行し、さらに、ステップＳ１３４において、復元コードを出力して、第３のハフマンデコーダ５２は、処理を終了する。デコード実行可否信号が、デコード実行不可能の状態を示している場合は、処理を終了する。
【００３５】
第４のビットシフト６１は、ステップＳ１４において、ステップＳ１３１で第３のハフマンデコーダ５２が出力した復元ビット数データに従い、シフトレジスタ１０が出力する可変長符号データをビットシフトする。
【００３６】
次に、第４のハフマンデコーダ６２は、ステップＳ１４１において、第４のビットシフト６１が出力する可変長符号データに対して、第４のハフマンデコーダ６２に組み込まれている組み合わせ回路に合致するビット数を判別し、復元ビット数データを出力する。
【００３７】
次に、第４のハフマンデコーダ６２は、ステップＳ１４２において、コントロール部２０からのデコード実行可否信号を確認する。デコード実行可否信号がデコード実行可能の状態を示している場合は、ステップＳ１４３において、ハフマンデコードを実行し、さらに、ステップＳ１４４において、復元コードを出力して、第４のハフマンデコーダ６２は、処理を終了する。デコード実行可否信号が、デコード実行不可能の状態を示している場合は、処理を終了する。
【００３８】
次に、各ハフマンデコーダを制御する処理手順について説明する。図４は、本実施形態による可変長符号デコーダ回路の各ハフマンデコーダを制御する処理手順を示したフローチャートである。
【００３９】
まず、コントロール部２０は、ステップＳ２０において、コード数のカウントをクリアする。また、第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２に対するデコード実行可否信号をデコード実行可能の状態とする。
【００４０】
次に、コントロール部２０は、ステップＳ２１において、予め定められた１クロックで復元可能なビット数と第１のハフマンデコーダ３２が出力する復元ビット数データを比較する。第１のハフマンデコーダ３２が出力する復元ビット数データが、予め定められた１クロックで復元可能なビット数を超えていない場合は、ステップＳ２１１において、第１のハフマンデコーダ３２の出力する復元コードが有効であるとしてコード数のカウントに１を加える。第１のハフマンデコーダ３２が出力する復元ビット数データが、予め定められた１クロックで復元可能なビット数を超えていた場合は、ステップＳ２１２において、可変長符号データがエラーである処理を行い、ステップＳ２６に移行する。
【００４１】
次に、コントロール部２０は、ステップＳ２２において、予め定められた１クロックで復元可能なビット数と第１のハフマンデコーダ３２と、第２のハフマンデコーダ４２が出力する復元ビット数データを比較する。第１のハフマンデコーダ３２と第２のハフマンデコーダ４２が出力する復元ビット数データを合算し、当該合計の復元ビット数データが、予め定められた１クロックで復元可能なビット数を超えていない場合は、ステップＳ２２１において、第２のハフマンデコーダ４２の出力する復元コードが有効であるとしてコード数のカウントに１を加える。当該合計の復元ビット数データが、予め定められた１クロックで復元可能なビット数を超えていた場合は、ステップＳ２２２において、第２のハフマンデコーダ４２、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２、に対するデコード実行可否信号をデコード実行不可能の状態とする。また、第１のハフマンデコーダ３２が出力する復元ビット数データを当該クロックでのシフト量データとして出力し、ステップＳ２６に移行する。
【００４２】
次に、コントロール部２０は、ステップＳ２３において、予め定められた１クロックで復元可能なビット数と第１のハフマンデコーダ３２と、第２のハフマンデコーダ４２と、第３のハフマンデコーダ５２が出力する復元ビット数データを比較する。第１のハフマンデコーダ３２と第２のハフマンデコーダ４２と第３のハフマンデコーダ５２が出力する復元ビット数データを合算し、当該合計の復元ビット数データが、予め定められた１クロックで復元可能なビット数を超えていない場合は、ステップＳ２３１において、第３のハフマンデコーダ５２の出力する復元コードが有効であるとしてコード数のカウントに１を加える。当該合計の復元ビット数データが、予め定められた１クロックで復元可能なビット数を超えていた場合は、ステップＳ２３２において、第３のハフマンデコーダ５２、第４のハフマンデコーダ６２、に対するデコード実行可否信号をデコード実行不可能の状態とする。また、第１のハフマンデコーダ３２と第２のハフマンデコーダ４２が出力する復元ビット数データ合算して当該クロックでのシフト量データとして出力し、ステップＳ２６に移行する。
【００４３】
次に、コントロール部２０は、ステップＳ２４において、予め定められた１クロックで復元可能なビット数と第１のハフマンデコーダ３２と、第２のハフマンデコーダ４２と、第３のハフマンデコーダ５２と、第４のハフマンデコーダ６２が出力する復元ビット数データを比較する。第１のハフマンデコーダ３２と第２のハフマンデコーダ４２と第３のハフマンデコーダ５２と第４のハフマンデコーダ６２が出力する復元ビット数データを合算し、当該合計の復元ビット数データが、予め定められた１クロックで復元可能なビット数を超えていない場合は、ステップＳ２４１において、第４のハフマンデコーダ６２の出力する復元コードが有効であるとしてコード数のカウントに１を加える。当該合計の復元ビット数データが、予め定められた１クロックで復元可能なビット数を超えていた場合は、ステップＳ２４２において、第４のハフマンデコーダ６２に対するデコード実行可否信号をデコード実行不可能の状態とする。また、第１のハフマンデコーダ３２と第２のハフマンデコーダ４２と第３のハフマンデコーダ５２が出力する復元ビット数データ合算して当該クロックでのシフト量データとして出力し、ステップＳ２６に移行する。
【００４４】
次に、コントロール部２０は、ステップＳ２５において、第１のハフマンデコーダ３２と、第２のハフマンデコーダ４２と、第３のハフマンデコーダ５２と、第４のハフマンデコーダ６２が出力する復元ビット数データを合算して当該クロックでのシフト量データとして出力し、ステップＳ２６において、コード数のカウント値を出力して処理を終了する。
【００４５】
次に、可変長符号デコーダ回路の復元例について説明する。図５は、本実施形態による可変長符号デコーダ回路の１クロックで復元可能なビット数を８ビットとした場合のハフマン符号と復元コードの対応例を示した図である。
また図６は、本実施形態による可変長符号デコーダ回路の１クロックで復元可能なビット数を８ビットとした場合のハフマン符号を復元して出力される復元コードの例を示した図である。
【００４６】
図５において、発生頻度の高い復元コード“０”に一番短い符号（ハフマン符号“１”）が割り当てられ、発生頻度の低い復元コード“７”に一番長い符号（ハフマン符号“０００００００１”）が割り当てられる。
【００４７】
図６において、１クロックで復元可能なビット数は８ビットであるが、シフトレジスタ１０からは１０ビットの符号が各ハフマンデコーダ３２，４２，５２，６２および、ビットシフト部２１に入力される前提で説明を行う。
【００４８】
まず、１回目の復元を行うハフマン符号列として、“０００１０１０１００”の１０ビットがシフトレジスタ１０に記憶される。第１のハフマンデコーダ３２は、最初の“０００１”を合致するハフマン符号データと判別し、復元ビット数データとして４ビットを出力する。また、第１のハフマンデコーダ３２は、復元コード“３”を出力する。第２のハフマンデコーダ４２は、第１のハフマンデコーダ３２が復元する４ビットシフト後の“０１”を合致するハフマン符号データと判別し、復元ビット数データとして２ビットを出力する。また、第２のハフマンデコーダ４２は、復元コード“１”を出力する。第３のハフマンデコーダ５２は、第１のハフマンデコーダ３２と第２のハフマンデコーダ４２が復元する６ビットシフト後の“０１”を合致するハフマン符号データと判別し、復元ビット数データとして２ビットを出力する。また、第３のハフマンデコーダ５２は、復元コード“１”を出力する。コントロール部２０は、第３のハフマンデコーダ５２の復元ビット数データが入力されたときに１クロックで復元可能なビット数（８ビット）となったため、第４のハフマンデコーダ６２に対するデコード実行可否信号をデコード実行不可能の状態として、第１のハフマンデコーダ３２と、第２のハフマンデコーダ４２と、第３のハフマンデコーダ５２が出力した復元ビット数データを合算して当該クロック（１回目の復元）でのシフト量データ８ビットを出力し、コード数のカウント値“３”を出力して処理を終了する。
このクロックでは、４個搭載されているハフマンデコーダの内、３個までがデコード処理を完了した時点で、１クロックで復元可能なビット数となった例で、復元コード“３１１”が出力される。
【００４９】
次に、２回目の復元を行うハフマン符号列として、１回目の復元で処理が完了していないハフマン符号“００”を含み、シフトレジスタ１０に“００１１０１１１１１”の１０ビットが記憶される。第１のハフマンデコーダ３２は、最初の“００１”を合致するハフマン符号データと判別し、復元ビット数データとして３ビットを出力する。また、第１のハフマンデコーダ３２は、復元コード“２”を出力する。第２のハフマンデコーダ４２は、第１のハフマンデコーダ３２が復元する３ビットシフト後の“１”を合致するハフマン符号データと判別し、復元ビット数データとして１ビットを出力する。また、第２のハフマンデコーダ４２は、復元コード“０”を出力する。第３のハフマンデコーダ５２は、第１のハフマンデコーダ３２と第２のハフマンデコーダ４２が復元する４ビットシフト後の“０１”を合致するハフマン符号データと判別し、復元ビット数データとして２ビットを出力する。また、第３のハフマンデコーダ５２は、復元コード“１”を出力する。第４のハフマンデコーダ６２は、第１のハフマンデコーダ３２と第２のハフマンデコーダ４２と第３のハフマンデコーダ５２が復元する６ビットシフト後の“１”を合致するハフマン符号データと判別し、復元ビット数データとして１ビットを出力する。また、第４のハフマンデコーダ６２は、復元コード“０”を出力する。コントロール部２０は、第４のハフマンデコーダ６２の復元ビット数データが入力されたときに１クロックで復元可能なビット数以下であるが、全てのハフマンデコーダがデコード処理を実行しているため、第１のハフマンデコーダ３２と、第２のハフマンデコーダ４２と、第３のハフマンデコーダ５２と、第４のハフマンデコーダ６２が出力した復元ビット数データを合算して当該クロック（２回目の復元）でのシフト量データ７ビットを出力し、コード数のカウント値“４”を出力して処理を終了する。
このクロックでは、４個搭載されているハフマンデコーダ全てがデコード処理を実行し、合計のビット数が１クロックで復元可能なビット数以下でも処理が完了する例で、復元コード“２０１０”が出力される。
【００５０】
次に、３回目の復元を行うハフマン符号列として、２回目の復元で処理が完了していないハフマン符号“１１１”を含み、シフトレジスタ１０に“１１１１００００００”の１０ビットが記憶される。当該クロック（３回目の復元）では、シフト量データ４ビットとコード数のカウント値“４”を出力して処理を終了する。
２回目の復元と同様に、このクロックでは、４個搭載されているハフマンデコーダ全てがデコード処理を実行し、合計のビット数が１クロックで復元可能なビット数以下でも処理が完了する例で、復元コード“００００”が出力される。
【００５１】
次に、４回目の復元を行うハフマン符号列として、３回目の復元で処理が完了していないハフマン符号“００００００”を含み、シフトレジスタ１０に“０００００００１０１”の１０ビットが記憶される。第１のハフマンデコーダ３２は、最初の“０００００００１”を合致するハフマン符号データと判別し、復元ビット数データとして８ビットを出力する。また、第１のハフマンデコーダ３２は、復元コード“７”を出力する。コントロール部２０は、第１のハフマンデコーダ３２の復元ビット数データが入力されたときに１クロックで復元可能なビット数となったため、第２のハフマンデコーダ４２と、第３のハフマンデコーダ５２と、第４のハフマンデコーダ６２に対するデコード実行可否信号をデコード実行不可能の状態として、第１のハフマンデコーダ３２が出力した復元ビット数データを当該クロック（４回目の復元）でのシフト量データ８ビットを出力し、コード数のカウント値“１”を出力して処理を終了する。
このクロックでは、４個搭載されているハフマンデコーダの内、１個がデコード処理を完了した時点で、１クロックで復元可能なビット数となった例で、復元コード“７”が出力される。
【００５２】
次に、５回目の復元を行うハフマン符号列として、４回目の復元で処理が完了していないハフマン符号“０１”を含み、シフトレジスタ１０に“０１００１００００１”の１０ビットが記憶される。第１のハフマンデコーダ３２は、最初の“０１”を合致するハフマン符号データと判別し、復元ビット数データとして２ビットを出力する。また、第１のハフマンデコーダ３２は、復元コード“１”を出力する。第２のハフマンデコーダ４２は、第１のハフマンデコーダ３２が復元する２ビットシフト後の“００１”を合致するハフマン符号データと判別し、復元ビット数データとして３ビットを出力する。また、第２のハフマンデコーダ４２は、復元コード“２”を出力する。第３のハフマンデコーダ５２は、第１のハフマンデコーダ３２と第２のハフマンデコーダ４２が復元する５ビットシフト後の“００００１”を合致するハフマン符号データと判別し、復元ビット数データとして５ビットを出力する。コントロール部２０は、第３のハフマンデコーダ５２の復元ビット数データが入力されたときに１クロックで復元可能なビット数を超えたため、第３のハフマンデコーダ５２と、第４のハフマンデコーダ６２に対するデコード実行可否信号をデコード実行不可能の状態として、第１のハフマンデコーダ３２と、第２のハフマンデコーダ４２が出力した復元ビット数データを合算して当該クロック（５回目の復元）でのシフト量データ５ビットを出力し、コード数のカウント値“２”を出力して処理を終了する。
このクロックでは、４個搭載されているハフマンデコーダの内、３個目までデコード処理を完了することができるが、１クロックで復元可能なビット数を超えるため、３個目のデコード処理は行わずに次のクロックでの処理にまわす例で、復元コード“１２”が出力される。
【００５３】
次に、６回目の復元を行うハフマン符号列として、５回目の復元で処理が完了していないハフマン符号“００００１”を含み、シフトレジスタ１０に“００００１００１０１”の１０ビットが記憶される。当該クロック（６回目の復元）でのシフト量データ８ビットを出力し、コード数のカウント値“２”を出力して処理を終了する。
１回目の復元と同様に、このクロックでは、４個搭載されているハフマンデコーダの内、２個までがデコード処理を完了した時点で、１クロックで復元可能なビット数となった例で、復元コード“４２”が出力される。
【００５４】
次に、７回目の復元を行うハフマン符号列として、６回目の復元で処理が完了していないハフマン符号“０１”を含み、シフトレジスタ１０に“０１０１０１０１”の８ビットが記憶される。ハフマン符号が当該の復元で最後であるため、シフトレジスタ１０に記憶されるデータは、１０ビットを満たさない。第１のハフマンデコーダ３２は、最初の“０１”を合致するハフマン符号データと判別し、復元ビット数データとして２ビットを出力する。また、第１のハフマンデコーダ３２は、復元コード“１”を出力する。第２のハフマンデコーダ４２は、第１のハフマンデコーダ３２が復元する２ビットシフト後の“０１”を合致するハフマン符号データと判別し、復元ビット数データとして２ビットを出力する。また、第２のハフマンデコーダ４２は、復元コード“１”を出力する。第３のハフマンデコーダ５２は、第１のハフマンデコーダ３２と第２のハフマンデコーダ４２が復元する４ビットシフト後の“０１”を合致するハフマン符号データと判別し、復元ビット数データとして２ビットを出力する。また、第３のハフマンデコーダ５２は、復元コード“１”を出力する。第４のハフマンデコーダ６２は、第１のハフマンデコーダ３２と第２のハフマンデコーダ４２と第３のハフマンデコーダ５２が復元する６ビットシフト後の“０１”を合致するハフマン符号データと判別し、復元ビット数データとして２ビットを出力する。また、第４のハフマンデコーダ６２は、復元コード“１”を出力する。コントロール部２０は、第４のハフマンデコーダ６２の復元ビット数データが入力されたときに１クロックで復元可能なビット数となり、全てのハフマンデコーダがデコード処理を実行しているため、第１のハフマンデコーダ３２と、第２のハフマンデコーダ４２と、第３のハフマンデコーダ５２と、第４のハフマンデコーダ６２が出力した復元ビット数データを合算して当該クロック（７回目の復元）でのシフト量データ８ビットを出力し、コード数のカウント値“４”を出力して処理を終了する。
このクロックでは、４個搭載されているハフマンデコーダ全てがデコード処理を実行し、合計のビット数も１クロックで復元可能なビット数となる例で、復元コード“１１１１”が出力される。
また、ハフマン符号が当該の復元で最後であるため、全体の処理を完了する。
【００５５】
上記に述べたとおり、本発明を実施するための最良の形態によれば、従来、可変長符号のデコードを１クロックで１復元コードを出力していた場合に、２０クロックを要していた可変長符号のデコードを、７クロックで実現することができる。
また、短い符号が連続した可変長符号とはなっていないが、高速な可変長デコーダを実現することができる。
【００５６】
＜第２実施形態＞
以下、本発明の実施形態の可変長符号デコーダ回路について、回路規模を低減する方法について説明する。図７は、本実施形態による可変長符号デコーダ回路に搭載された各ハフマンデコーダ回路の回路規模を低減する構成を示したブロック図である。図７において、本実施形態による可変長符号デコーダ回路は、図１に示した第１実施形態と同じ構成であるが、第２のハフマンデコーダ１４２、第３のハフマンデコーダ１５２、第４のハフマンデコーダ１６２の回路規模が異なる。
【００５７】
図７において、本実施形態による可変長符号デコーダ回路の１クロックで復元可能なビット数を８ビットとした場合、第１のハフマンデコーダ３２は、図５で示される全ての復元コード（復元コード“０”から“７”）を出力するが、第２のハフマンデコーダ１４２は、第１のハフマンデコーダ３２が復元コード“７”を出力した場合は、コントロール部２０によってデコード実行可否信号がデコード実行不可能の状態になるため、復元コードを出力しない。また、第２のハフマンデコーダ１４２は、第１のハフマンデコーダ３２が復元コード“０”を出力した場合に次に長い復元コード“６”を出力することがある。そこで、第２のハフマンデコーダ１４２は、復元コード“６”までが復元できる組み合わせ回路（復元コード“０”から“６”）を搭載することで、本実施形態による可変長符号デコーダ回路の機能を落とさずに回路規模が削減することができる。
【００５８】
同様に図７において、第３のハフマンデコーダ１５２は、復元コード“５”までが復元できる組み合わせ回路（復元コード“０”から“５”）を搭載し、第４のハフマンデコーダ１６２は、復元コード“４”までが復元できる組み合わせ回路（復元コード“０”から“４”）を搭載することで、本実施形態による可変長符号デコーダ回路の機能を落とさずに回路規模を削減することができる。
【００５９】
＜第３実施形態＞
以下、本発明の実施形態の可変長符号デコーダ回路について、回路規模を低減する第２の方法について説明する。図８は、本実施形態による可変長符号デコーダ回路に搭載された各ビットシフト回路の回路規模を低減する構成を示したブロック図である。図８において、本実施形態による可変長符号デコーダ回路は、図１に示した第１実施形態と同じ構成であるが、第３のビットシフト２５１、第４のビットシフト２６１の回路規模が異なる。
【００６０】
図８において、本実施形態による可変長符号デコーダ回路の各ビットシフトの入力データは、前段のハフマンデコーダが復元するビットをシフトした後の可変長符号データが入力される。例えば、第３のビットシフト２５１の入力は、前段の第１のハフマンデコーダ３２と第２のハフマンデコーダ４２とが復元するビット数をシフトした後の可変長符号データが入力される。
このことにより、第１実施形態のように各ビットシフトで前段の全てのハフマンデコーダが復元する復元ビット数データを合算することが不要となり、本実施形態による可変長符号デコーダ回路の機能を落とさずに回路規模を削減することができる。
【００６１】
＜第４実施形態＞
以下、本発明の実施形態の可変長符号デコーダ回路について、回路規模を低減する第３の方法について説明する。図９は、本実施形態による可変長符号デコーダ回路に搭載された各ビットシフト回路とコントロール回路の回路規模を低減する構成を示したブロック図である。図９において、本実施形態による可変長符号デコーダ回路は、図１に示した第１実施形態と同じ構成であるが、コントロール部３２０、第２のビットシフト３４１、第２のハフマンデコーダ３４２、第３のビットシフト３５１、第３のハフマンデコーダ３５２、第４のビットシフト３６１、第４のハフマンデコーダ３６２の回路規模が異なる。
【００６２】
図９において、本実施形態による可変長符号デコーダ回路の各ハフマンデコーダに前段のハフマンデコーダが復元する復元ビット数データを入力し、当該ハフマンデコーダが復元する復元ビット数データと前段のハフマンデコーダが復元する復元ビット数データを合算して、合算後の復元ビット数データを次のハフマンデコーダへ出力する。例えば、第３のハフマンデコーダ３５２の入力は、前段の第１のハフマンデコーダ３２と第２のハフマンデコーダ３４２とが復元するビット数を合算したビット数が入力される。
このことにより、各ビットシフトで前段の全てのハフマンデコーダが復元する復元ビット数データを合算することが不要となり、また、コントロール部３２０でも各ハフマンデコーダが復元する復元ビット数データを合算することが不要となり、本実施形態による可変長符号デコーダ回路の機能を落とさずに回路規模を削減することができる。
【００６３】
上記に述べたとおり、本発明を実施するための最良の形態によれば、任意の順で入力される可変長符号に対して１クロックで複数の復元処理結果が得られる高速な可変長デコーダ回路を実現することが可能となる。
【００６４】
本発明の実施形態による可変長符号デコーダ回路は、ハフマン符号をデコードするハフマンデコーダとして説明してきたが、ハフマンデコーダに限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の可変長符号デコーダも含まれる。
【００６５】
以上、本発明の実施形態について、図１乃至図９を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施形態による可変長符号デコーダ回路の構成を示したブロック図である。
【図２】本発明の実施形態による可変長符号デコーダ回路における処理手順を示したフローチャートである。
【図３】本発明の実施形態による可変長符号デコーダ回路における各ハフマンデコーダの処理手順を示したフローチャートである。
【図４】本発明の実施形態による可変長符号デコーダ回路における各ハフマンデコーダの制御手順を示したフローチャートである。
【図５】本発明の実施形態によるハフマン符号と復元コードの対応例を示した図である。
【図６】本発明の実施形態によるハフマン符号を復元して出力される復元コードの例を示した図である。
【図７】本発明の実施形態による可変長符号デコーダ回路に搭載された各ハフマンデコーダ回路の回路規模を低減する構成を示したブロック図である。
【図８】本発明の実施形態による可変長符号デコーダ回路に搭載された各ビットシフト回路の回路規模を低減する構成を示したブロック図である。
【図９】本発明の実施形態による可変長符号デコーダ回路に搭載された各ビットシフト回路とコントロール回路の回路規模を低減する構成を示したブロック図である。
【符号の説明】
【００６７】
１０  シフトレジスタ  ２０  コントロール部  ２１  ビットシフト部  ３２  第１のハフマンデコーダ  ３３  第１のコードレジスタ  ４１  第２のビットシフト  ４２  第２のハフマンデコーダ  ４３  第２のコードレジスタ  ５１  第３のビットシフト  ５２  第３のハフマンデコーダ  ５３  第３のコードレジスタ  ６１  第４のビットシフト  ６２  第４のハフマンデコーダ  ６３  第４のコードレジスタ  １４２  第２のハフマンデコーダ  １５２  第３のハフマンデコーダ  １６２  第４のハフマンデコーダ  ２５１  第３のビットシフト  ２６１  第４のビットシフト  ３２０  コントロール部  ３４１  第２のビットシフト  ３４２  第２のハフマンデコーダ  ３５１  第３のビットシフト  ３５２  第３のハフマンデコーダ  ３６１  第４のビットシフト  ３６２  第４のハフマンデコーダ
【図１】
2010045485.tif 000003
【図２】
2010045485.tif 000004
【図３】
2010045485.tif 000005
【図４】
2010045485.tif 000006
【図５】
2010045485.tif 000007
【図６】
2010045485.tif 000008
【図７】
2010045485.tif 000009
【図８】
2010045485.tif 000010
【図９】
2010045485.tif 000011