(57)【特許請求の範囲】
【請求項１】
（ａ）コードブックメモリから所定のシンボルに対応する貯蔵コードワードを発生させる段階；
（ｂ）各選択コードワード、上記各選択コードワードによって上記各選択コードワードがハフマンコードツリーで定義されるレベル、及び各レベルでのターミナルノードの数に基いて、上記貯蔵コードワードに含まれた可変長コードワードの長さを検出する段階；及び
（ｃ）上記可変長コードワードの長さに応答して上記貯蔵コードワードから可変長コードワードを検出する段階；で構成され、
ここで、上記コードブックメモリには全ての発生可能なシンボルをアドレスとして可変長コードワードが可変長コードワードの最大の長さで貯蔵され、上記選択コードワードは上記貯蔵コードワードからｍビットを選択して発生され、上記ｍは１〜Ｋの整数であり、上記Ｋは可変長コードワードの最大の長さであることを特徴とする可変長コーディング方法。
【請求項２】
上記段階（ｂ）は、
（ｂ−１）上記各選択コードワード及び上記各レベルでのターミナルノードの数に基いて、上記貯蔵コードワードにおける可変長コードワードとスタッフィングビットとの境界を検出する段階；及び
（ｂ−２）段階（ｂ−１）で発生した境界値に基いて、上記貯蔵コードワードに含まれた可変長コードワードの長さを検出する段階；で構成されることを特徴とする請求項１に記載の可変長コーディング方法。
【請求項３】
上記段階（ｂ−１）は、
（ｂ−１−１）上記各選択コードワードに対応する上記各レベルを検出する段階；
（ｂ−１−２）上記各レベルでのターミナルノードの数を検出する段階；
（ｂ−１−３）上記各レベルに対応するターミナルノードの数にウエートを付与し、各レベルに対するウエートされた数を発生させる段階；
（ｂ−１−４）ルートから各レベルまでの上記ウエートされた数を合算する段階；
（ｂ−１−５）上記各合算値を２進数に変換して、上記各合算値に対応するレベルコードワードを発生させる段階；
（ｂ−１−６）上記各レベルコードワードに対応する上記各選択コードワードから上記各レベルコードワードを減算し、その減算結果値を発生させる段階；及び
（ｂ−１−７）上記減算結果値から最上位のビットを検出し、上記最上位のビットを上記境界値として出力する段階；で構成されることを特徴とする請求項２に記載の可変長コーディング方法。
【請求項４】
上記最上位のビットを互いに排他的論理和して、上記可変長コードワードの長さを求めることを特徴とする請求項３に記載の可変長コーディング方法。
【請求項５】
（ａ）コードブックメモリから所定のシンボルに対応する貯蔵コードワードを発生させる段階；
（ｂ）上記貯蔵コードワードからｍビットを選択して、選択コードワードを発生させる段階；
（ｃ）上記各選択コードワードがハフマンコードツリーによって定義される各レベル及び各レベルでのターミナルノードの数に基いて、上記各選択コードワードが可変長コードワードのビットのみで構成されているかどうかを判断する段階；及び
（ｄ）段階（ｃ）の結果により、上記貯蔵コードワードから可変長コードワードを検出する段階；で構成され、
ここで、上記ｍは１、２、３．．．Ｋであり、上記Ｋは可変長コードワードの最大の長さであることを特徴とする可変長コーディング方法。
【請求項６】
上記段階（ｃ）は、
（ｃ−１）上記ハフマンコードツリーに基いて各選択コードワードのレベルを検出する段階；
（ｃ−２）上記各レベルでのターミナルノードの数を検出する段階；
（ｃ−３）関数ＬＤ（Ｘ）mを行う段階；及び
（ｃ−４）それぞれのＬＤ（Ｘ）mがマイナスの値を有するかどうかを判断する段階；で構成され、
ここで、上記関数ＬＤ（Ｘ）mは：
【数１】
0003990787.tif 000011
であって、
上記ｂiは上記ｍビットを選択して発生された選択コードワードのｉ番目のビット値で、Ｌjはハフマンコードツリーにおけるｊ番目のレベルでの全てのターミナルノードの数であることを特徴とする請求項５に記載の可変長コーディング方法。
【請求項７】
上記段階（ｄ）は上記マイナスでない値を有する選択コードワードのうち、コードの長さが最も長い選択コードワードを可変長コードワードとして出力することを特徴とする請求項５または６に記載の可変長コーディング方法。
【請求項８】
（ａ）コードブックメモリから所定のシンボルに対応する貯蔵コードワードを発生させるためのコードブックメモリ手段；
（ｂ）各選択コードワード、上記各選択コードワードにより上記各選択コードワードがハフマンコードツリーで定義されるレベル、及び各レベルでのターミナルノードの数に基いて、上記貯蔵コードワードに含まれた可変長コードワードの長さを検出するための可変長検出手段；及び
（ｃ）上記可変長コードワードの長さに応答して上記貯蔵コードワードから可変長コードを検出するパッキング手段；で構成され、
ここで、上記コードブックメモリには全ての発生可能なシンボルをアドレスとして可変長コードワードが可変長コードワードの最大の長さで貯蔵され、上記選択コードワードは上記貯蔵コードワードからｍビットを選択して発生され、上記ｍは１〜Ｋの整数であり、上記Ｋは可変長コードワードの最大の長さであることを特徴とする可変長コーディング装置。
【請求項９】
上記可変長検出手段は、
上記各選択コードワード及び上記各レベルでのターミナルノードの数に基いて、上記貯蔵コードワードでの可変長コードワードとスタッフィングビットとの境界を検出するための境界検出手段；及び
上記境界検出手段により発生した境界値に基いて上記貯蔵コードワードに含まれた可変長コードワードの長さを検出するための長さ検出手段；で構成されることを特徴とする請求項８に記載の可変長コーディング装置。
【請求項１０】
上記境界検出手段は、
上記各選択コードワードに対応する上記各レベルを検出する手段；
上記各レベルでのターミナルノードの数を検出する手段；
上記各レベルに対応するターミナルノードの数にウエートを付与し、各レベルに対するウエートされた数を発生する手段；
ルートから各レベルまでの上記ウエートされた数を合算する手段；
上記各合算値を２進数に変換して、それぞれの合算値に対応するレベルコードワードを発生する手段；
上記各レベルコードワードに対応する上記各選択コードワードから上記各レベルコードワードを減算して、その減算値を発生する手段；及び
上記減算値から最上位のビットを検出して、上記最上位のビットを上記境界値として出力する手段；で構成されることを特徴とする請求項９に記載の可変長コーディング装置。
【請求項１１】
上記最上位のビットを互いに排他的論理和して、上記可変長コードワードの長さを求めることを特徴とする請求項１０に記載の可変長コーディング装置。
【請求項１２】
上記パッキング手段は、
第１ウィンドービット列を発生させるために、上記可変長コードワードの長さに応答して所定のビット列からビットを検出する入力部；
制御信号に応答して上記貯蔵コードワードのビット列及び上記第１ウィンドービット列から可変長コードワードのビットを検出し、上記検出されたビットを出力する出力部；及び
上記制御信号を発生するために、上記出力部から出力されるビットの数を累算する累算部；で構成されることを特徴とする請求項８または９に記載の可変長コーディング装置。
【請求項１３】
上記入力部は、
上記第１ウィンドービット列を上記出力部及び第１バレルシフターに出力するための第１ラッチ；及び
上記可変長コードワードの長さに応答して上記ビット列上でスライディングして上記第１ウィンドービット列を発生させるための上記第１バレルシフター；で構成されることを特徴とする請求項１２に記載の可変長コーディング装置。
【請求項１４】
上記出力部は、
上記可変長コードワードのビットを検出するために、上記制御信号に応答して上記第１ウィンドービット列及び上記貯蔵コードワードのビット列上でスライディングするための第２バレルシフター；及び
上記第２バレルシフターからの可変長コードワードのビットを貯蔵するための第２ラッチ；で構成されることを特徴とする請求項１２に記載の可変長コーディング装置。
【請求項１５】
上記累算部は、
加算機から入力される加算値を貯蔵するための第３ラッチ；
上記第３ラッチからの加算値及び上記可変長コードワードの長さ値をモジュール-Ｋで加算し、上記加算値がＫ以上であればキャリー信号を発生するための加算機；及び
上記Ｋから上記第３ラッチからの貯蔵値を減算して上記制御信号を発生するための減算機；で構成されることを特徴とする請求項１２に記載の可変長コーディング装置。
【請求項１６】
（ａ）所定のシンボルに対応する貯蔵コードワードを発生するコードブックメモリ；
（ｂ）上記貯蔵コードワードからｍビットを選択して選択コードワードを発生させる選択手段；
（ｃ）上記各選択コードワードがハフマンコードツリーにより定義される各レベル及び上記各レベルでのターミナルノードの数に基いて、上記各選択コードワードが可変長コードワードのビットのみで構成されたかどうかを判断する判断手段；
（ｄ）判断結果に応じて上記貯蔵コードワードから可変長コードワードを検出する検出手段；で構成され、
ここで、上記ｍは１、２、３、．．．、Ｋであり、上記Ｋは可変長コードワードの最大の長さであることを特徴とする可変長コーディング装置。
【請求項１７】
上記判断手段は、
上記ハフマンコードツリーに基いて各選択コードワードのレベルを検出するための手段；
上記各レベルでのターミナルノードの数を検出するための手段；
関数ＬＤ（Ｘ）mを行うための手段；及び
それぞれのＬＤ（Ｘ）mがマイナスの値を有するかどうかを判断するための手段；で構成され、
ここで、上記関数ＬＤ（Ｘ）mは：
【数２】
0003990787.tif 000012
であって、
上記ｂiは上記ｍビットを選択して発生された選択コードワードのｉ番目のビット値であり、Ｌjはハフマンコードツリーにおけるｊ番目のレベルでの全てのターミナルノードの数であることを特徴とする請求項１６に記載の可変長コーディング装置。
【請求項１８】
上記パッキング手段は、上記マイナスでない値を有する選択コードワードのうち、最も長いコードの選択コードワードを可変長コードワードとして出力することを特徴とする請求項１６または１７に記載の可変長コーディング装置。
【請求項１９】
上記パッキング手段は、
第１ウィンドービット列を発生させるために、上記可変長コードワードの長さに応答して所定のビット列からビットを検出する入力部；
制御信号に応答して上記貯蔵コードワードのビット列及び上記第１ウィンドービット列から可変長コードワードのビットを検出し、上記検出されたビットを出力する出力部；及び
上記制御信号を発生するために上記出力部から出力されるビットの数を累算する累算部；で構成されることを特徴とする請求項１６または１７に記載の可変長コーディング装置。
【請求項２０】
上記入力部は、
上記第１ウィンドービット列を上記出力部及び第１バレルシフターに出力するための第１ラッチ；及び
上記可変長コードワードの長さに応答して上記ビット列上でスライディングして上記第１ウィンドービット列を発生するための上記第１バレルシフター；で構成されることを特徴とする請求項１９に記載の可変長コーディング装置。
【請求項２１】
上記出力部は、
上記可変長コードワードのビットを検出するために、上記制御信号に応答して上記第１ウィンドービット列及び上記貯蔵コードワードのビット列上でスライディングするための第２バレルシフター；及び
上記第２バレルシフターからの可変長コードワードのビットを貯蔵するための第２ラッチ；で構成されることを特徴とする請求項１９に記載の可変長コーディング装置。
【請求項２２】
上記累算部は、
加算機から入力される加算値を貯蔵するための第３ラッチ；
上記第３ラッチからの加算値及び上記可変長コードワードの長さ値をモジュール-Ｋで加算し、上記加算値がＫ以上であればキャリー信号を発生するための加算機；及び
上記Ｋから上記第３ラッチからの貯蔵値を減算して上記制御信号を発生するための減算機；で構成されることを特徴とする請求項１９に記載の可変長コーディング装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は可変長コーディング方法及びその装置に関し、特に、ハフマンコードツリー（Huffman code tree）を基に固定長コードワードを可変長コードワードに変換する方法及びこれを行うための装置に関する。
【０００２】
【従来の技術】
一般に、可変長コーディングは、データの損失無しにデータを圧縮するのに使用されるコーディング技術である。可変長コーディングはデータソースから発生可能な全てのデータをその発生確率に応じて可変長コードワードに変換し、その平均のコードの長さを減少させる。即ち、可変長コードワードを全ての発生可能なシンボルのライブラリーに割り当てることにより、可変長コードワードでコーディングされたデータの平均的なワードの長さがコーディング前のデータの平均のワードの長さより短くなる。従って、データの圧縮が実現される。
【０００３】
ハフマンコーディング方法は、その統計値が知られたデータに対して最小の冗長（redundant）を有する可変長コードを具現するために通常使用される方法である。ハフマンコーディング方法は統計値が知られたデータをその統計に従ってハフマンコードツリーに適用する。従って、ハフマンコーディング方法による可変長コードはプレフィックス-フリー可変長コード（Prefix-free Variable Length Codes）である。
【０００４】
ジョセフに許与されたアメリカ特許第３、６７５、２１２号には、可変長コーディング装置に関する一例が開示されている。上記特許の可変長コーディング装置は、可変長コードと固定長コードとの間の変換のためにコーディング-デコーディング手段として使用される３-状態メモリを含む。上記３-状態メモリは可変長コードワード及び固定長コードワードと関連して可変長コードワードの長さを貯蔵する。
【０００５】
また、本出願の発明者及び出願人は、１９９６年５月３１日付でアメリカでデコーディング装置（出願番号０８／６５５、８３８）を出願し、現在特許が与えられている。
【０００６】
【発明が解決しようとする課題】
本発明の目的は、メモリに可変長コードワードの長さを貯蔵せず、入力データを可変長コードワードでコーディングし得る可変長のコーディング方法及びその装置を提供することにある。
【０００７】
【課題を解決するための手段】
上記の目的を達成するために、本発明の一つの観点による可変長コーディング方法は、
（ａ）コードブックメモリから所定のシンボルに対応する貯蔵コードワードを発生させる段階；
（ｂ）各選択コードワード、上記各選択コードワードによって上記各選択コードワードがハフマンコードツリーで定義されるレベル、及び各レベルでのターミナルノードの数に基いて、上記貯蔵コードワードに含まれた可変長コードワードの長さを検出する段階；及び
（ｃ）上記可変長コードワードの長さに応答して上記貯蔵コードワードから可変長コードを検出する段階で構成され、ここで、上記コードブックメモリには全ての発生可能なシンボルをアドレスとして可変長コードワードが可変長コードワードの最大の長さで貯蔵され、上記選択コードワードは上記貯蔵コードワードからｍビットを選択して発生され、上記ｍは１〜Ｋの整数であり、上記Ｋは可変長コードワードの最大の長さである。
【０００８】
本発明の他の観点による可変長コーディング方法は、
（ａ）コードブックメモリから所定のシンボルに対応する貯蔵コードワードを発生させる段階；
（ｂ）上記貯蔵コードワードからｍビットを選択して、選択コードワードを発生させる段階；
（ｃ）上記各選択コードワードがハフマンコードツリーによって定義される各レベル、及び各レベルでのターミナルノードの数に基いて、上記各選択コードワードが可変長コードワードのビットのみで構成されているかどうかを判断する段階；及び
（ｄ）段階（ｃ）の結果により、上記貯蔵コードワードから可変長コードワードを検出する段階で構成され、ここで、上記ｍは１、２、３．．．Ｋであり、上記Ｋは可変長コードワードの最大の長さである。
【０００９】
本発明のまた別の観点による可変長コーディング装置は、
（ａ）コードブックメモリから所定のシンボルに対応する貯蔵コードワードを発生させるためのコードブックメモリ手段；
（ｂ）各選択コードワード、上記各選択コードワードにより上記各選択コードワードがハフマンコードツリーで定義されるレベル、及び各レベルでのターミナルノードの数に基いて、上記貯蔵コードワードに含まれた可変長コードワードの長さを検出するための可変長検出手段；及び
（ｃ）上記可変長コードワードの長さに応答して上記貯蔵コードワードから可変長コードを検出するパッキング手段；で構成され、ここで、上記コードブックメモリには全ての発生可能なシンボルをアドレスとして可変長コードワードが可変長コードワードの最大の長さで貯蔵され、上記選択コードワードは上記貯蔵コードワードからｍビットを選択して発生され、上記ｍは１〜Ｋの整数であり、上記Ｋは可変長コードワードの最大の長さである。
【００１０】
本発明によれば、ハフマンコード構造による可変長コードワードの長さをメモリから出力される貯蔵コードワード及びハフマンコードツリーに基いて検出することにより、可変長コードワードの長さをメモリに貯蔵することなく、入力データを可変長コードワードにコーディングすることができる。
【００１１】
【発明の実施の形態】
以下、添付図面を参照しながら本発明をより詳しく説明する。
【００１２】
本発明による可変長コーディング方法及びその装置は、ハフマンコードツリーに基く。ｎ個のシンボルを有するハフマンコードツリーは（２ｎ−１）個のノードで構成される。即ち、（２ｎ−１）個のノードはシンボルを有するｎ個のターミナルノード及びシンボルを有しない（ｎ−１）個の連結ノードで構成される。カノニカルハフマンツリーは全てのターミナルノードが各レベルにおいて全ての連結ノードの左側に位置する構造を有する。周知のように、平均のコードの長さを増加させずに全てのハフマンコードツリーをカノニカルハフマンコードツリーに変更することができる。
【００１３】
図８はシンボル［ａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、ｈ］に対するハフマンコードツリーを示している。上記８つのシンボルは全ての連結ノードの左側に位置する。それぞれのシンボルはそれの可変長コードワードとしてルート（ｒｏｏｔ）からそれのターミナルノードまでのコーディングビットストリングを有する。例えば、シンボル［ｃ］は３ビットのコードワード［１０１］を、そしてシンボル［ｆ］はコードワード［１１１１０］を有する。即ち、それぞれのシンボルはそれの発生確率に応じてハフマンコードツリーで定義される可変長コードワードを有する。
【００１４】
図１は本発明の一実施例による可変長コーディング装置を示す回路構成図である。
【００１５】
同図によれば、本発明による可変長コーディング装置はバッファ部１００、コードブックメモリ２００、可変長検出部３００、及びパッキング部４００で構成される。
【００１６】
上記バッファ部１００は外部からシリアルまたは並列に入力されるデータ（以下、シンボルという）を貯蔵し、その制御信号（図示せず）に応答して上記各シンボルを上記コードブックメモリ２００に出力する。
【００１７】
上記コードブックメモリ２００は各貯蔵コードワードを上記各シンボルまたは上記各シンボルに対応するアドレスに応じて可変長コードワードの最大の長さで貯蔵する。従って、あるシンボルが上記コードブックメモリ２００に入力される時、上記コードブックメモリ２００は上記シンボルに対応する貯蔵コードワードを発生する。上記貯蔵コードワードのコードの長さは可変長コードワードの最大の長さであるため、上記貯蔵コードワードは可変長コードワード及びスタッフィングビット（stuffing bits）で構成される。
【００１８】
例えば、上記可変長コードワードの最大の長さがＫビットで、シンボル［Ｘ］が上記コードブックメモリ２００に入力される場合、上記コードブックメモリ２００はＫビット列の貯蔵コードワードＭ（Ｘ）を発生させ、上記貯蔵コードワードＭ（Ｘ）を上記可変長検出部３００及び上記パッキング部４００にそれぞれ提供する。
【００１９】
図８に示すように、上記可変長検出部３００は上記カノニカルハフマンコードツリーに基いて、上記コードブックメモリ２００から提供された貯蔵コードワードＭ（Ｘ）に含まれた可変長コードワードの長さを検出する。
【００２０】
上記可変長検出部３００は上記可変長コードワードの長さを検出するために、まずハフマンコードツリーでの各レベルにおけるターミナルノードの数を検出する。次いで、上記可変長検出部３００は上記ターミナルノードの数及び上記貯蔵コードワードに基いて後述される所定の演算作用を履行し、その結果として上記可変長コードワードの長さに対応する長さ値ＬＥＧ（Ｘ）を発生させる。そして、上記可変長検出部３００は上記可変長コードワードの長さ値ＬＥＧ（Ｘ）を上記パッキング部４００に提供する。
【００２１】
上記可変長検出部３００は、図１に示すように、上記可変長コードワードの長さ値ＬＥＧ（Ｘ）を検出するために、境界検出部５００及び長さ検出部６００で構成されるのが望ましい。
【００２２】
上記境界検出部５００は上記コードブックメモリ２００からの上記貯蔵コードワードＭ（Ｘ）から１ビット乃至Ｋビットを順に選択してＫ個の選択コードワードＢＷ（Ｘ）1、ＢＷ（Ｘ）2、ＢＷ（Ｘ）3、．．．、ＢＷ（Ｘ）Kを発生させる。また、上記境界検出部５００は上記選択コードワードＢＷ（Ｘ）m=1、2、...、Kのそれぞれに対応するハフマンコード構造のレベルでのターミナルノードの数を検出する。次いで、上記境界検出部５００は上記各選択コードワードＢＷ（Ｘ）m=1、2、...、Kを上記各レベルでのターミナルノードの数と比較し、その結果として上記貯蔵コードワードＭ（Ｘ）の可変長コードワードＶＬＷ（Ｘ）とスタッフィングビットとの境界を検出し、上記境界検出の結果としての境界値ＭＳＢ（Ｘ）mを発生させ、上記発生した境界値ＭＳＢ（Ｘ）mを上記長さ検出部６００に提供する。
【００２３】
上記長さ検出部６００は上記境界検出部５００からの境界値ＭＳＢ（Ｘ）mに基いて上記貯蔵コードワードＭ（Ｘ）から上記可変長コードワードの長さ値ＬＥＧ（Ｘ）を検出し、上記検出された可変長コードワードの長さ値ＬＥＧ（Ｘ）を上記パッキング部４００に提供する。
【００２４】
図２は図１の境界検出部５００の一例を示す回路構成図である。
【００２５】
図２によれば、上記境界検出部５００は上記境界値ＭＳＢ（Ｘ）mを検出するために、コード選択部５１０、レベル検出部５２０、演算部５３０、及び境界値発生部５４０で構成されるのが望ましい。
【００２６】
上記コード選択部５１０は上記コードブックメモリ２００からの貯蔵コードワードＭ（Ｘ）より１からＫビットまで順に選択し、上記各選択コードワードＢＷ（Ｘ）mを発生させ、上記発生した選択コードワードＢＷ（Ｘ）m=1、2、...、Kを上記レベル検出部５２０及び上記演算部５３０にそれぞれ提供する。
【００２７】
上記コード選択部５１０から所定の選択コードワードＢＷ（Ｘ）m  が入力される場合、上記レベル検出部５２０はそれぞれに応答して上記選択コードワードＢＷ（Ｘ）mのハフマンツリーでのレベルｍを検出する。そして、ルートから上記検出されたレベルｍまでの各レベルでのターミナルノードの数を検出し、各レベルに対応するウエート（weight）を上記ターミナルノードの数に付与し、上記ウエートが付与されたターミナルノードの数を合算して、各レベルコードワードＮＷ（Ｘ）mを発生させる。
【００２８】
即ち、上記選択コードワードＢＷ（Ｘ）mにより定義されたレベルｍに対してウエートされた数の和は次のような形態を有する。
【００２９】
【数３】
0003990787.tif 000002
ここで、ｊはハフマンコードツリーにおけるレベルで、Ｌjはレベルｊでのターミナルノードの数である。
【００３０】
上記レベル検出部５２０は上記和ＷＳ（Ｘ）mを２進数に変換して上記レベルコードワードＮＷ（Ｘ）mを発生させ、上記レベルコードワードＮＷ（Ｘ）mを上記演算部５３０に提供する。
【００３１】
上記演算部５３０は上記コード選択部５１０からの上記選択コードワードＢＷ（Ｘ）m=1、2、...、Kから上記レベル検出部５２０からの上記レベルコードワードＮＷ（Ｘ）m=1、2、...、Kを減算し、その減算結果ＬＤ（Ｘ）m=1、2、...、Kを上記境界値発生部５４０に提供する。上記減算結果ＬＤ（Ｘ）m=1、2、...、Kは上記選択コードワードＢＷ（Ｘ）m=1、2、...、Kのそれぞれに対して可変長コードワードのビットで構成されたかどうかを示す。
【００３２】
図３は図２に示す演算部の一例を示す回路構成図である。
【００３３】
図３を参照すれば、上記演算部５３０は上記コード選択部５１０からの上記選択コードワードＢＷ（Ｘ）mから上記レベル検出部５２０からの上記レベルコードワードＮＷ（Ｘ）mを減算するために、第１減算機（減算器）５３１乃至第Ｋ減算機５３７で構成される。
【００３４】
上記第１減算機５３１乃至第Ｋ減算機５３７はそれぞれ、上記選択コードワードＢＷ（Ｘ）1乃至上記選択コードワードＢＷ（Ｘ）Kから上記レベルコードワードＮＷ（Ｘ）1乃至レベルコードワードＮＷ（Ｘ）Kを減算し、第１減算結果ＬＤ（Ｘ）1乃至第Ｋ減算結果ＬＤ（Ｘ）Kを上記境界値発生部５４０に提供する。
【００３５】
上記境界値発生部５４０は上記演算部５３０からの第１減算結果ＬＤ（Ｘ）1乃至第Ｋ減算結果ＬＤ（Ｘ）Kから最上位のビットＭＳＢ（Ｘ）m=1、2、...、Kを検出し、上記検出されたＭＳＢ（Ｘ）m=1、2、...、Kを境界値ＭＳＢ（Ｘ）m=1、2、...、Kとして上記長さ検出部６００に提供する。上記境界値ＭＳＢ（Ｘ）m=1、2、...、Kは上記貯蔵コードワードＭ（Ｘ）のスタッフィングビットと可変長コードワードＶＬＷ（Ｘ）との境界を示す。
【００３６】
再び図１を参照すれば、上記長さ検出部６００は上記貯蔵コードワードＭ（Ｘ）のスタッフィングビットと可変長コードワードＶＬＷ（Ｘ）との境界を示す上記境界値ＭＳＢ（Ｘ）m=1、2、...、Kに基いて、上記長さ値ＬＥＧ（Ｘ）を発生させる。
【００３７】
図４は図１の長さ検出部の一例を示す回路構成図である。
【００３８】
図４を参照すれば、上記長さ検出部６００はＫ個のＸＯＲゲートで構成される。
【００３９】
第１ＸＯＲゲートは‘０’値及びＭＳＢ（Ｘ）1を、また第ｎＸＯＲゲートはＭＳＢ（Ｘ）n-1及びＭＳＢ（Ｘ）nを排他的論理和する。ここで、ｎは２からＫまでの整数である。
【００４０】
また、上記Ｋ個のＸＯＲゲートによって発生するロジック値は、上記貯蔵コードワードＭ（Ｘ）の可変長コードワードＶＬＷ（Ｘ）の長さ値として上記パッキング部４００に出力される。
【００４１】
図１において、上記パッキング部４００は上記可変長検出部３００からの可変長コードワードの長さ値ＬＥＧ（Ｘ）に応答して上記貯蔵コードワードＭ（Ｘ）のビットを選択的に出力し、上記貯蔵コードワードＭ（Ｘ）に含まれたスタッフィングビットを除いた可変長コードワードＶＬＷ（Ｘ）のみを外部に出力する。
【００４２】
図５は図１のパッキング部の一例を示す回路構成図である。
【００４３】
図５を参照すれば、上記パッキング部４００は入力部４１０、累算部４２０、及び出力部４３０で構成される。
【００４４】
上記入力部４１０は第１バレルシフター（Barrel Shifter）４１１及び第１ラッチ４１２で構成される。
【００４５】
上記入力部４１０の第１バレルシフター４１１は、上記可変長検出部３００からの可変長コードワードの長さ値ＬＥＧ（Ｘ）に応答して、上記コードブックメモリ２００からの貯蔵コードワードＭ（Ｘ）のビット列及び上記第１ラッチ４１２からの第１ラッチビット列をスライディングしてＫビットの第１ウィンドービット列Ｂ1を読取り、上記第１ウィンドービット列Ｂ1を上記第１ラッチ４１２に提供する。
【００４６】
上記第１ラッチ４１２は上記第１ウィンドービット列Ｂ1を貯蔵し、上記第１ウィンドービット列Ｂ1と同一のビット値を有する第１ラッチビット列Ｗ1を上記第１バレルシフター４１１及び上記出力部４３０にそれぞれ提供する。従って、前述したように、上記第１ラッチビット列Ｗ1及び貯蔵コードワードＭ（Ｘ）のビット列が並列に上記第１バレルシフターに入力される。
【００４７】
図５に示すように、上記累算部４２０は加算機（加算器）４２１、第２ラッチ４２２、減算機（減算器）４２３、及び第３ラッチ４２４で構成される。
【００４８】
上記累算部４２０の加算機４２１は上記可変長検出部３００からの長さ値ＬＥＧ（Ｘ）及び上記第２ラッチ４２２からのラッチ値Ｌ1をモジュール-Ｋ（Module-K）で加算してその加算値を上記第２ラッチ４２２に提供する。また、上記加算値がＫ以上である場合、上記加算機４２１はキャリー信号Ｃを発生する。上記キャリー信号Ｃは後述される出力部４３０の第４ラッチ４３２が可変コードワードＭ（Ｘ）iのビットで満たされたことを外部に知らせるためのものである。
【００４９】
上記第２ラッチ４２２は、上記加算機４２１からの加算値を貯蔵し、上記貯蔵された加算信号をラッチされた値Ｌ１として上記減算機４２３及び上記加算機４２１にそれぞれ提供する。
【００５０】
上記減算機４２３は、可変長コードワードの最大の長さから上記第２ラッチ４２２からの上記ラッチされた値Ｌ１を減算して減算値Ｓ0を発生する。
【００５１】
上記第３ラッチ４２４は、上記減算値Ｓ0を貯蔵し、上記貯蔵された減算信号Ｓ0を上記出力部４３０の制御信号Ｌ2として上記出力部４３０に提供する。
【００５２】
上記出力部４３０は、第２バレルシフター４３１及び第４ラッチ４３２で構成される。
【００５３】
上記第２バレルシフター４３１は上記制御信号Ｌ2に応答して上記コードブックメモリ２００からの上記貯蔵コードワードＭ（Ｘ）のビット列及び上記入力部４１０の第１ラッチ４１２からの第１ラッチビット列Ｗ1で構成される２Ｋビット列をスライディングして、第２ウィンドービット列Ｂ2を発生し、上記発生された第２ウィンドービット列Ｂ2を上記第４ラッチ４３２に出力する。
【００５４】
上記第４ラッチ４３２は上記第２バレルシフター４３１からの第２ウィンドービット列Ｂ2を入力順に貯蔵し、貯蔵された上記第２ウィンドービット列Ｂ2を可変長コードワードＷ2として外部に出力する。
【００５５】
以下、添付図面を参照しながら本発明による可変長コーディング方法及び装置をより詳しく説明する。
【００５６】
データソースから発生可能なシンボルは全て［ａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇ、ｈ］であって、各シンボルの発生頻度数は順に１５、１３、１２、１１、５、２、１、１である場合、図８に示すように、上記８つのシンボルにはその発生頻度数に応じて可変長コードワードが割り当てられる。カノニカルハフマンコードツリーによって上記８つのシンボルに割り当てられた可変長コードワードのコード値は下の表１に示す通りである。
【００５７】
表１に示すように、カノニカルハフマンコードツリー構造に依り最も頻度数の高いシンボル［ａ］には１ビットの可変長コードワードＶＬＷ（Ｘ）が割り当てられ、最も頻度数が低いシンボル［ｇ、ｈ］には６ビットの可変長コードワードが割り当てられる。
【００５８】
【表１】
0003990787.tif 000003
下の表２に示すように、上記コードブックメモリ２００には上記それぞれのシンボル（Ｘ）をアドレスとして上記可変長コードワードＶＬＷ（Ｘ）が貯蔵される。上記可変長コードワードＶＬＷ（Ｘ）は上記コードブックメモリ２００の各単位のメモリセルの最上位（ＭＳＢ）から最下位（ＮＳＢ）の順に満たされ、可変長コードワードＶＬＷ（Ｘ）が貯蔵されて残った個所にはスタッフィングビット（または、don't care）が満たされる。
【００５９】
従って、上記コードブックメモリ２００はあるシンボルＸが入力される場合、入力されたシンボルＸをアドレスとして有する貯蔵コードワードＭ（Ｘ）を発生させる。
【００６０】
【表２】
0003990787.tif 000004
図６は図１の可変長コーディング装置の動作を説明するためのフローチャートである。
【００６１】
図６を参照すれば、段階１で上記入力バッファ１００から上記コードブックメモリ２００にシンボル（Ｘ）［ｃ］が入力される場合、上記コードブックメモリ２００は段階２で、表２に示すように上記シンボル（Ｘ）［ｃ］をアドレスとして貯蔵された［１０１ＸＸＸ］のビット列を上記貯蔵コードワードＭ（ｃ）として発生させ、上記６ビットの貯蔵コードワードＭ（ｃ）を並列に上記可変長検出部３００の境界検出部５００及び上記パッキング部４００にそれぞれ提供する（ＳＴ１、ＳＴ２）。
【００６２】
上記可変長検出部３００に入力される上記貯蔵コードワードＭ（ｃ）は、上記境界検出部５００のコード選択部５１０に入力される。上記貯蔵コードワードＭ（ｃ）が上記コード選択部５１０に入力される場合、上記コード選択部５１０は下の表３に示すように、上記貯蔵コードワードＭ（ｃ）から１ビット乃至６ビットを順に選択して選択コードワードＢＷ（ｃ）m=1、2、3、...、Kを発生させ、上記発生した選択コードワードＢＷ（ｃ）m=1、2、3、...、Kのそれぞれを上記境界検出部５００のレベル検出部５２０及び演算部５３０にそれぞれ提供する（ＳＴ３）。
【００６３】
【表３】
0003990787.tif 000005
上記コード選択部５１０から上記選択コードワードＢＷ（ｃ）mが上記レベル検出部５２０に入力される場合、上記レベル検出部５２０は図８に示すハフマンコードツリーに基いて上記選択コードワードＢＷ（ｃ）mのレベル１からレベルｍまでのターミナルノードの数を検出し、前述したように、各レベルに応じてウエートされたレベルコードワードＮＷ（ｃ）mを発生する（ＳＴ４）。
【００６４】
例えば、ｍ＝３である場合、上の表３に示すように、上記コード選択部５１０から選択コードワードＢＷ（ｃ）3＝［１０１］が発生する。この時、上記レベル検出部５２０は各レベルにウエートを付与し、ウエートの付与されたターミナルノードの数を合算して、次のような和を発生させる。
【００６５】
【数４】
0003990787.tif 000006
ここで、ｊはハフマンコードツリーにおけるレベルで、Ｌjはレベルｊでのターミナルノードの数である。
【００６６】
次いで、上記レベル検出部５２０は上記和ＷＳ（ｃ）3を２進数に変換してレベルコードワードＮＷ（ｃ）3＝［０００１０００］を発生させる。全ての選択コードワードＢＷ（ｃ）m（ｍ＝１、２、．．．、６）に対するレベルコードワードＮＷ（ｃ）mは次の表４のようである。
【００６７】
【表４】
0003990787.tif 000007
上記レベルコードワードＮＷ（ｃ）m及び選択コードワードＢＷ（ｃ）mがそれぞれ上記演算部５３０に入力される場合、上記演算部５３０に入力された上記レベルコードワードＮＷ（ｃ）m及び選択コードワードＢＷ（ｃ）mは図３に示すように、上記演算部５３０の第１減算機５３１乃至第６減算機５３６に順に入力される。
【００６８】
上記第１減算機５３１乃至第６減算機５３６は次のような関数ＬＤ（ｃ）mを行う。
【００６９】
【数５】
0003990787.tif 000008
従って、演算部５３０は次の表５に示すように、第１乃至第６減算の結果ＬＤ（ｃ）m=1、2、...、6を発生させる。
【００７０】
【表５】
0003990787.tif 000009
また、上記入力シンボル［ｃ］に対する上記演算部５３０の第１減算機５３１乃至第６減算機５３６から出力される第１減算結果ＬＤ（ｃ）1乃至第６減算結果ＬＤ（ｃ）6は、上記境界値発生部５４０に提供される（ＳＴ５）。
【００７１】
上記段階ＳＴ５をより詳しく説明すれば、上記第１減算機５３１乃至第６減算機５３６は下記のような第１減算結果ＬＤ（ｃ）1乃至第６減算結果ＬＤ（ｃ）6を発生させる。
【００７２】
【数６】
0003990787.tif 000010
ここで、ｂiは選択コードワードＢＷ（ｃ）mのｉ番目のビット値であって、Ｌjはレベルｊでのターミナルノードの数である。
【００７３】
段階ＳＴ６で、上記境界値発生部５４０は上記第１減算結果ＬＤ（ｃ）1乃至第６減算結果ＬＤ（ｃ）6から最上位のビット（ＭＳＢ）を検出し、最上位のビット（ＭＳＢ）の値を貯蔵コードワードＭ（ｃ）の可変長コードワードＶＬＷ（ｃ）とスタッフィングコードとの境界を表わす境界値ＭＳＢ（ｃ）として上記長さ検出部６００に提供する（ＳＴ６）。
【００７４】
段階ＳＴ７で、図４に示すように、上記長さ検出部６００に入力された境界値ＭＳＢ（ｃ）m=1、2、...、6＝［０００１１１］の各ビットは並列に上記第１ＸＯＲゲート６１０乃至第６ＸＯＲゲート６６０にそれぞれ入力され、その結果、上記長さ検出部６００は上記シンボル［ｃ］の可変長コードワードＶＬＷ（ｃ）の長さＶＬＧ（ｃ）を表わす長さ値ＬＥＧ（ｃ）としてのビット列［０００１００］を発生させる（ＳＴ７）。
【００７５】
段階ＳＴ８で、上記長さ値ＬＥＧ（ｃ）が上記パッキング部４００に入力される場合、上記パッキング部４００は上記長さ値ＬＥＧ（ｃ）に応答して貯蔵コードワードＭ（ｃ）から可変長コードワードＶＬＷ（ｃ）だけを検出し、検出した可変長コードワードＶＬＷ（ｃ）を外部に出力する。
【００７６】
以下、上記パッキング部４００の動作につき、図５及び図７を参照しながらより詳しく説明する。
【００７７】
図７は、外部よりシンボルがａ、ｂ、ｃ、ｆ、ｄ、ｈ、ｅ、ｇ、ａ、ｂの順に上記入力バッファ１００に入力される時の、上記パッキング部４００の各部分からの出力を説明するための図である。
【００７８】
同図を参照すれば、まず、時間ｔ＝１では、上記パッキング部４００に上記コードブックメモリ２００から貯蔵コードワードＭ（Ｘ）の入力がないため、上記パッキング部４００の上記第１バレルシフター４１１は長さ値ＬＥＧ（ｃ）＝０に応答してビット列［ｘ、ｘ、ｘ、ｘ、ｘ、ｘ］を第１ウィンドービット列Ｂ（ｔ＝１）1として上記第１ラッチ４１２に提供する。
【００７９】
従って、上記第２ラッチ４２２はＬ1＝１を上記減算機４２３及び加算機４２１にそれぞれ提供し、上記第３ラッチ４２４はＬ2＝６を上記制御信号として上記第２バレルシフター４３１に提供する。そして、上記第２バレルシフター４３１は図７に示すように、Ｂ（ｔ＝１）2＝［ｘ、ｘ、ｘ、ｘ、ｘ、ｘ］を第２ウィンドービット列Ｂ（ｔ＝１）2として出力する。
【００８０】
時間ｔ＝２では、上記コードブックメモリ２００にシンボル［ａ］が入力され、上記コードブックメモリ２００からシンボル［ａ］に対する貯蔵コードワードＭ（ａ）が発生する場合、上記貯蔵コードワードＭ（ａ）＝［ａ１、ｘ、ｘ、ｘ、ｘ、ｘ］は上記入力部４１０の第１バレルシフター４１１及び出力部４３０の第２バレルシフター４３１にそれぞれ入力される。これと同時に、上記シンボル［ａ］に対応する長さ値ＬＥＧ（ａ）＝１が上記第１バレルシフター４１１及び上記累算部４２０の加算機４２１にそれぞれ入力される。
【００８１】
上記長さ値ＬＥＧ（ａ）＝１及び上記貯蔵コードワードＭ（ａ）が上記第１バレルシフター４１１に入力される場合、上記第１バレルシフター４１１は上記第１ラッチ４１２からの第１ラッチビット列Ｌ1＝［ｘ、ｘ、ｘ、ｘ、ｘ、ｘ］及び上記ビット列Ｍ（ａ）＝［ａ１、ｘ、ｘ、ｘ、ｘ、ｘ］を上記長さ値ＬＥＧ（ａ）＝１に応答してスライディングし、図７に示すように、第１ウィンドービット列Ｗ1＝［ｘ、ｘ、ｘ、ｘ、ｘ、ａ1］を発生させ、上記発生した第１ウィンドービット列Ｗ1＝［ｘ、ｘ、ｘ、ｘ、ｘ、ａ1］を上記第１ラッチ４１２に出力する。次いで、上記第１ラッチ４１２は上記第１ウィンドービット列Ｗ1＝［ｘ、ｘ、ｘ、ｘ、ｘ、ａ1］を第１ラッチビット列Ｌ1として上記第１バレルシフター４１１及び第２バレルシフター４３１にそれぞれ提供する。
【００８２】
しかし、この時上記第３ラッチ４２４から提供される上記制御信号Ｌ2＝６が入力されるので、上記第２バレルシフター４３１はビット列［ａ1、ｘ、ｘ、ｘ、ｘ、ｘ］を上記第４ラッチ４３２に出力する。
【００８３】
時間ｔ＝３では、シンボル［ｂ］に対する貯蔵コードワードＭ（ｂ）＝［ｂ1、ｂ2、ｂ3、ｘ、ｘ、ｘ］及び長さ値ＬＥＧ（ｂ）＝３が第１バレルシフター４１１に入力される。上記第１バレルシフター４１１は上記長さ値ＬＥＧ（ｂ）＝３に応答して上記第１ラッチビット列Ｗ1＝［ｘ、ｘ、ｘ、ｘ、ｘ、ａ1］及び貯蔵コードワードＭ（ｂ）＝［ｂ1、ｂ2、ｂ3、ｘ、ｘ、ｘ］により形成されたビット列［ｘ、ｘ、ｘ、ｘ、ｘ、ａ1、ｂ1、ｂ2、ｂ3、ｘ、ｘ、ｘ］をスライディングし、ＭＳＢから３ビット以降の６ビットを上記第１ラッチ４１２に第１ウィンドービット列Ｂ（ｔ＝３）1として出力する。次いで、上記第１ラッチ４１２は第１ウィンドービット列Ｂ（ｔ＝３）1＝［ｘ、ｘ、ａ1、ｂ1、ｂ2、ｂ3］を第１ラッチビット列Ｗ1として上記第１バレルシフター４１１及び第２バレルシフター４３１にそれぞれ出力する。
【００８４】
一方、上記加算機４２１はＬＥＧ（ｂ）＝３をＬ1＝１に加算し、上記加算値［４］を上記第２ラッチ４２２に出力する。上記第２ラッチ４２２は既に貯蔵された加算値Ｌ1＝１を上記減算機４２３に出力すると同時に、上記加算値［４］を貯蔵する。
【００８５】
上記減算機４２３は所定値［６］から上記加算値Ｌ1＝１を減算し、減算値［５］を上記第３ラッチ４２４に出力する。次いで、上記第３ラッチ４２４は上記減算値Ｓ0＝５を貯蔵すると同時に、上記減算値Ｓ0＝５を上記制御信号Ｌ2＝５として上記第２バレルシフター４３１に出力する。
【００８６】
上記第２バレルシフター４３１は上記第３ラッチ信号Ｌ2＝５に応答して、第１ラッチビット列［ｘ、ｘ、ｘ、ｘ、ｘ、ａ1］及び上記貯蔵コードワードＭ（ｂ）＝［ｂ1、ｂ2、ｂ3、ｘ、ｘ、ｘ］により形成されたビット列［ｘ、ｘ、ｘ、ｘ、ｘ、ａ1、ｂ1、ｂ2、ｂ3、ｘ、ｘ、ｘ］をスライディングし、上記第２ウィンドービット列Ｂ（ｔ＝３）2＝［ａ1、ｂ1、ｂ2、ｂ3、ｘ、ｘ］を発生させ、上記発生した第２ウィンドービット列Ｂ（ｔ＝３）2＝［ａ1、ｂ1、ｂ2、ｂ3、ｘ、ｘ］を上記第４ラッチ４３２に出力する。
【００８７】
次に、上記第４ラッチ４３２は上記第２ウィンドービット列Ｂ（ｔ＝３）2＝［ａ1、ｂ1、ｂ2、ｂ3、ｘ、ｘ］を貯蔵する。
【００８８】
時間ｔ＝４では、シンボル［ｃ］に対する貯蔵コードワードＭ（ｃ）＝［ｃ1、ｃ2、ｃ3、ｘ、ｘ、ｘ］及び長さ値ＬＥＧ（ｃ）＝３が上記第１バレルシフター４１１に入力される。上記第１バレルシフター４１１は上記長さ値ＬＥＧ（ｃ）＝３に応答して上記第１ラッチビット列Ｗ1＝［ｘ、ｘ、ａ1、ｂ1、ｂ2、ｂ3］及び貯蔵コードワードＭ（ｃ）＝［ｃ1、ｃ2、ｃ3、ｘ、ｘ、ｘ］により形成されたビット列［ｘ、ｘ、ａ1、ｂ1、ｂ2、ｂ3、ｃ1、ｃ2、ｃ3、ｘ、ｘ、ｘ］をスライディングし、ＭＳＢから３ビット以降の６ビットを上記第１ラッチ４１２に第１ウィンドービット列Ｂ（ｔ＝４）1として出力する。この時、上記第１ラッチ４１２は第１ウィンドービット列Ｂ（ｔ＝４）1＝［ｂ1、ｂ2、ｂ3、ｃ1、ｃ2、ｃ3］を第１ラッチビット列Ｗ1として上記第１バレルシフター４１１及び第２バレルシフター４３１にそれぞれ出力する。
【００８９】
一方、上記加算機４２１はＬＥＧ（ｃ）＝３をＬ1＝４に加算し、上記加算値［７］を発生させる。しかし、上記加算機４２１は６-モジュールの加算機であるため、加算値［１］及びキャリー信号Ｃ＝１を発生させる。また、上記加算機４２１は加算値［１］を上記第２ラッチ４２２に出力する一方、上記キャリー信号Ｃ＝１を外部に出力する。
【００９０】
上記第２ラッチ４２２は既に貯蔵された加算値Ｌ1＝４を上記減算機４２３に出力すると同時に、上記加算値［１］を貯蔵する。
【００９１】
上記減算機４２３は所定値［６］から上記加算値Ｌ1＝４を減算し、減算値［２］を上記第３ラッチ４２４に出力する。次に、上記第３ラッチ４２４は上記減算値Ｓ0＝２を貯蔵すると同時に、上記減算値Ｓ0＝２を上記制御信号Ｌ2＝２として上記第２バレルシフター４３１に出力する。
【００９２】
上記第２バレルシフター４３１は上記第３ラッチ信号Ｌ2＝２に応答して、第１ラッチビット列［ｘ、ｘ、ａ1、ｂ1、ｂ2、ｂ3］及び上記貯蔵コードワードＭ（ｃ）＝［ｃ1、ｃ2、ｃ3、ｘ、ｘ、ｘ］により形成されたビット列［ｘ、ｘ、ａ1、ｂ1、ｂ2、ｂ3、ｃ1、ｃ2、ｃ3、ｘ、ｘ、ｘ］をスライディングして、上記第２ウィンドービット列Ｂ（ｔ＝４）2＝［ａ1、ｂ1、ｂ2、ｂ3、ｃ1、ｃ2］を発生させ、上記発生した第２ウィンドービット列Ｂ（ｔ＝４）2＝［ａ1、ｂ1、ｂ2、ｂ3、ｃ1、ｃ2］を上記第４ラッチ４３２に出力する。
【００９３】
この時、上記第４ラッチ４３２に貯蔵された６ビットは全て可変長コードワードのビットであるため、上記キャリー信号Ｃ＝１の発生に応答して上記第４ラッチ４３２のコードワードＷ2を読取れば、上記貯蔵コードワードから可変長コードワードのみを検出することができる。
【００９４】
このように、上記パッキング部４００は上記シンボルに対する貯蔵コードワード及び可変長コードワードの長さが入力される度に、上記の動作を繰返して上記貯蔵コードワードから可変長コードワードのみを検出して外部に出力する。
【００９５】
従って、上記の構成によれば、外部から符号化のためのシンボルが入力される度に、入力シンボルに対する可変長コードワードの長さを検出し、上記検出された可変長コードワードの長さに応答してコードブックメモリ２００からの貯蔵コードワードから可変長コードワードだけを検出及び出力することができる。
【００９６】
【発明の効果】
以上説明したように、本発明によれば、可変長コードワードの長さを貯蔵することなく、シンボルを可変長コードワードに変換することができる。
【００９７】
以上、本発明を望ましい実施例に基づいて具体的に説明したが、本発明はこれに限定されるものではなく、本発明の要旨を逸脱しない範囲内で変更及び改良が可能なことは勿論である。
【図面の簡単な説明】
【図１】本発明の一実施例による可変長コーディング装置を示す回路構成図である。
【図２】図１の境界検出部の一例を示す回路構成図である。
【図３】図２の演算部の一例を示す回路構成図である。
【図４】図１の長さ検出部の一例を示す回路構成図である。
【図５】図１のパッキング部の一例を示す回路構成図である。
【図６】図１の可変長コーディング装置の動作を説明するためのフローチャートである。
【図７】図５のパッキング部の動作を説明するための図である。
【図８】ハフマンコードツリーを示す図である。
【符号の説明】
１００  バッファ部
２００  コードブックメモリ
３００  可変長検出部
４００  パッキング部
５００  境界検出部
６００  長さ検出部
【図１】
0003990787.tif 000013
【図２】
0003990787.tif 000014
【図３】
0003990787.tif 000015
【図４】
0003990787.tif 000016
【図５】
0003990787.tif 000017
【図６】
0003990787.tif 000018
【図７】
0003990787.tif 000019
【図８】
0003990787.tif 000020