(57)【特許請求の範囲】
【請求項１】
最長可変長コードの２倍の長さを有する固定長セグメントからなる入力ビットスツリームを、立ち上がりエッジ及び立ち下がりエッジを有するクロックパルスからなるクロック信号に基づいて、１／２クロック周期にて復号化するための高速可変長コード復号化装置であって、
前記入力ビットスツリームからビットの連続した固定長セグメントを格納するカスケード接続された第１および第２ビット格納手段と、
前記第１および第２ビット格納手段に接続され、前記第１及び第２格納手段から受け取られたビットを格納し、格納された連続する固定長セグメントのビットから第１ウィンドウ出力シーケンスを生成する出力ウィンドウを有するシフト手段であって、前記ウィンドウ出力シーケンスは前記最長可変長コードと同一のビット長さを有し、ウィンドウ制御信号に直接応じて、毎半クロックサイクル間に前記格納されたビットのうちの所定ビットに亘って前記ウィンドウをシフトさせるシフト手段と、
前記ウィンドウ出力シーケンスを１半クロックサイクルの間にラッチし、ラッチされたウィンドウ出力シーケンスを復号化出力シーケンスとして生成するリレイ手段と、
前記リレイ手段に接続されており、前記復号化出力シーケンスの第１ビット位置から始まる可変長コードの上位Ｐビット（前記Ｐの最大値は、最長可変長コードより小さい整数）からなるプレフィクスコードに応じてコード長さを生成する第１メモリ手段と、
前記第１メモリ手段及び前記シフト手段に接続されており、前記コード長さ及びウィンドウ出力シーケンスに応じて、固定長さ語を発生する第２メモリ手段と、
前記コード長さに前のクロックサイクル間に復号化された以前に累算された可変長コードの長さを各半クロックサイクルの間に加算して、ウィンドウ制御信号を生成し、前記ウィンドウ制御信号におけるビット数だけ前記ウィンドウをシフトさせると共に、前記累算されたコード長さが前記第１シフト格納手段内の全てのビットが復号化されたことを表す場合、前記入力ビットスツリーム内の次の固定長セグメントを前記第２ビット格納手段に伝達するように制御する読取り信号を発生させて、前記第２ビット格納手段内のビットのシーケンスを前記第１ビット格納手段へ伝達するように制御する桁上げ信号を発生する累算手段とを有することを特徴とする可変長コード復号化装置。
【請求項２】
前記第２ビット格納手段内のビットシーケンスの前記第１ビット格納手段への伝達と前記入力ビットスツリーム内の前記次の固定長セグメントの読取りがクロックパルスの相異なるエッジにて行われることを特徴とする請求項１に記載の高速可変長コード復号化装置。
【請求項３】
前記累算手段が、
前記第１メモリ手段から供給された前記コード長さを前記以前に累算されたコード長さに加算する加算手段と、
第１及び第２ラッチ回路を備え、半クロックサイクルの単位にて交互に前記加算手段の出力をラッチする手段であって、前記第２ラッチ回路は前記ラッチされたコード長さの最上位ビットの論理値を検出すると共に、前記読取り信号として出力する、前記ラッチ手段と、
前記半クロックサイクルの単位にて前記ラッチ手段から供給された前記ラッチされたコード長さに基づいて、前記ウィンドウ制御信号を生成して前記ウィンドウをシフトさせると共に、前記ウィンドウ制御信号の最上位ビットを前記格納手段に前記桁上げ信号として供給し、前記ラッチされたコード長さが前記可変長コードの最長より２倍大きい場合、前記第１ラッチ回路から供給されたラッチされたコード長さから前記可変長コードの最長の２倍を引き算して、前記引き算されたコード長さと前記第２ラッチ回路からのラッチされたコード長さとを交互に前記加算手段に前記以前に累算されたコード長さとして供給するマルチプレクス手段とを有することを特徴とする請求項２に記載の高速可変長コード復号化装置。
【請求項４】
前記入力ビットスツリーム内の前記次の固定長セグメントの読取りが、直前の半クロックサイクルの際に前記第２ラッチ回路から生成された前記読取り信号に応じて行われることを特徴とする請求項３に記載の高速可変長コード復号化装置。
【請求項５】
前記第１メモリ手段がプレフィクスコード表と復号化語長さ表とを備えており、前記可変長コードのプレフィクスコードが前記プレフィクスコード表内のエントリーとして表現され、前記復号化語長さ表が前記プレフィクスコードに対応するコード長さを出力することを特徴とする請求項４に記載の高速可変長コード復号化装置。
【請求項６】
前記第２メモリ手段がサブフィクスコード表、コード長さ表及び復号化語表を備えており、各々の可変長コードに対する前記コード長さはコード長さ表内のエントリーとして表れて、前記各々の可変長コードに対するサブフィクスコードがサブフィクスコード表内のエントリーとして表れて、前記復号化語表が前記サブフィクスコードと前記コード長さに対応する固定長さ語を出力することを特徴とする請求項５に記載の高速可変長コード復号化装置。
【請求項７】
最長可変長コードの２倍の長さを有する固定長セグメントからなる入力ビットスツリームを、立ち上がりエッジ及び立ち下がりエッジとを有するクロックパルスからなるクロック信号に基づいて、１／２クロック周期にて復号化するための可変長コード復号化装置であって、
前記入力ビットスツリームを格納すると共に、固定長セグメント単位で逐次出力するバッファ手段と、
前記バッファ手段から取出された固定長セグメントを、セグメント単位で順次的に格納するカスケード接続された第１及び第２ビット格納手段と、
前記第１および第２ビット格納手段に結合され、前記第１及び第２格納手段から取出されたビットを格納すると共に、格納された連続する固定長セグメントのビットから第１ウィンドウ出力シーケンスを生成する第１出力ウィンドウを有する第１シフト手段であって、前記第１ウィンドウ出力シーケンスは可変長コードの最長と同一のビット長さを有し、ウィンドウ制御信号に直接応じて、前記第１シフト手段に格納されたビットだけ前記第１出力ウィンドウをシフトさせる第１シフト手段と、
前記第１シフト手段に接続されて、前記第１ウィンドウ出力シーケンス内に含まれたビットと供給された前の符号化出力シーケンスのビットとを格納すると共に、格納されたビットから第２ウィンドウ出力シーケンスを生成する第２出力ウィンドウを有して、前記第２ウィンドウ出力シーケンス内の１番目ビットから上位Ｍ個のビットをコード値として発生する第２シフト手段であって、前記第２ウィンドウ出力シーケンスは可変長コードの最長と同一のビット長さを有し、前記第２出力ウィンドウはコード長さに直接応答してシフトされ、Ｍは、前記可変長コードの最長より小さい整数である、前記第２シフト手段と、
前記第２ウィンドウ出力シーケンスを半クロックサイクルの間ラッチし、ラッチされた第２ウィンドウ出力シーケンスを復号化出力シーケンスとして生成すると共に、生成された復号化出力シーケンスを前記第２シフト手段に以前の復号化出力シーケンスとして供給するリレイ手段と、
前記リレイ手段に結合されており、前記復号化出力シーケンスの第１ビット位置から始まる可変長コードの上位Ｐ個のビット（前記Ｐの最大値は、可変長コードの最長より小さい整数）からなるプレフィクスコードに応じてコード長さを生成すると共に、前記第２シフト手段に供給する第１メモリ手段と、
前記第１メモリ手段と前記第２シフト手段に接続されており、前記コード長さと前記コード値に応じて固定長さ語を生成する第２メモリ手段と、
以前に累算されたコード長さと前記コード長さとを加えて、加算された累算されたコード長さを表すウィンドウ制御信号を生成し、前記累算されたコード長さが前記可変長コードの最長の２倍より大きい場合、前記バッファ手段に格納された次の固定長セグメントを読出して、前記第２ビット格納手段に伝達するように前記バッファ手段を制御する読取り信号を出力して、前記第２ビット格納手段に以前に格納された固定長セグメントを前記第１ビット格納手段へ伝送するようにする桁上げ信号を発生する累算手段とを有し、
前記第２ビット格納手段内に以前に格納された前記固定長セグメントの前記第１格納手段への伝達及び前記バッファ手段内に格納された次の固定長セグメントの読取りがクロックパルスの互いに相異なるエッジにて行われることを特徴とする高速可変長コード復号化装置。
【請求項８】
前記累算手段が、
前記第１メモリ手段から供給された前記コード長さを前記以前に累算されたコード長さに加算する加算手段と、
第１及び第２ラッチ回路を備え、１／２クロック周期の単位にて交互に前記加算手段の出力をラッチする手段であって、前記第２ラッチ回路は前記ラッチされたコード長さの最上位ビットの論理値を検出すると共に、前記読取り信号として出力する、前記ラッチ手段と、
前記半クロックサイクルの単位にて前記ラッチ手段から供給された前記ラッチされたコード長さに基づいて、前記ウィンドウ制御信号を生成して前記ウィンドウをシフトさせると共に、前記ウィンドウ制御信号の最上位ビットを前記格納手段に前記桁上げ信号として供給し、前記ラッチされたコード長さが前記可変長コードの最大長の２倍より大きい場合、前記第１ラッチ回路から供給されたラッチされたコード長さから前記可変長コードの最大長さの２倍を引き算して、前記引き算されたコード長さと前記第２ラッチ回路からのラッチされたコード長さとを交互に前記加算手段に前記以前に累算されたコード長さとして供給するマルチプレクス手段とを含むことを特徴とする請求項７に記載の高速可変長コード復号化装置。
【請求項９】
前記バッファ手段内の前記次の固定長セグメントの読取りが直前の半クロックサイクルの際に前記第２ラッチ回路から生成された前記読取り信号に応じて行われることを特徴とする請求項８に記載の高速可変長コード復号化装置。
【請求項１０】
前記第１メモリ手段がプレフィクスコード表と復号化語長さ表とを備えており、前記可変長コードのプレフィクスコードが前記プレフィクスコード表内のエントリーとして表現され、前記復号化語長さ表が前記プレフィクスコードに対応するコード長さを出力することを特徴とする請求項９に記載の可変長コード復号化装置。
【請求項１１】
前記第２メモリ手段がサブフィクスコード表、コード長さ表及び復号化語表を備えており、各々の可変長コードに対する前記コード長さはコード長さ表内のエントリーとして表れて、前記各々の可変長コードに対するサブフィクスコードがサブフィクスコード表内のエントリーとして表されて、前記復号化語表が前記サブフィクスコードと前記コード長さに対応する固定長さ語を出力することを特徴とする請求項１０に記載の可変長コード復号化装置。
【請求項１２】
最長可変長コードの２倍の長さを有する固定長セグメントからなる入力ビットスツリームを、立ち上がりエッジ及び立ち下がりエッジとを有するクロックパルスからなるクロック信号に基づいて、１／２半クロック周期にて復号化する高速可変長コード復号化方法であって、
前記入力ビットスツリームの連続する第１及び第２固定長セグメントを格納する第１過程と、
前記格納された第１及び第２固定長セグメントから各々半クロックサイクル間に前記可変長コードの最長と同一のビット長さを有する入力ビットのシーケンスの復号化ウィンドウを形成する第２過程と、
前記復号化ウィンドウ内の初期ビットと、全ての可能な可変長コードとを比較することによって、一つの整合可変長コードを決定する第３過程と、
各々の半クロックサイクル間に、前記整合された可変長コードのビット長さを表すコード長さを生成する第４過程と、
各々の半クロックサイクル間に、前記整合された可変長コードに対応する固定長さ語を生成する第５過程と、
各々の半クロックサイクル間に、前記生成されたコード長さと以前に累算されたコード長さとを合算する第６過程と、
各々の半クロックサイクル間に、前記整合された可変長コードのビット数だけ前記復号化ウィンドウを直接シフトさせる第７過程と、
前記累算されたコード長さが前記第１固定長セグメント内の全てのビットが復号化されたことを表す場合、前記入力ビットスツリームの次の固定長セグメントを読出す第８過程と、
前記累算されたコード長さが前記第１固定長セグメント内の全てのビットが復号化されたことを表す場合、入力ビットの第２固定長セグメントの代わりに前記第８過程で読出された入力ビットスツリームの次の固定長セグメントを格納する間に、入力ビットの第１固定長セグメントの代わりに第２固定長セグメントを格納する第９過程と、
前記累算されたコード長さが可変長コードの最大長さの２倍を超過する場合、前記累算されたコード長さから前記可変長コードの最大長さの２倍を引き算する第１０過程と、
前記入力ビットスツリーム内の全ての可変長コードが復号されるまで、前記第１過程から第１０過程を繰り返す第１１過程とを有することを特徴とする高速可変長コード復号化方法。
【請求項１３】
前記第８過程と前記第９過程が、各々クロックパルスの相異なるエッジにて行われることを特徴とする請求項１２に記載の高速可変長コード復号化方法。
【発明の詳細な説明】
【発明の属する技術分野】
本発明は可変長復号化装置に関し、特に、クロックサイクルごとに２つのコードを復号化することによって、高速復号化動作を行い得る改善された可変長復号化装置に関する。
【従来の技術】
可変長符号化法は、無損失データ圧縮のためにしばしば用いられている方法である。より詳しくは、この方法はデータの統計値に基づいて、一定長さのデータを可変長コードに変換するために用いられる。可変長コードのコード長さは、より短いコードはより発生頻度の高いデータを表し、より長いコードは比較的発生頻度の低いデータを表すものとして定められる。可変長コードを全ての可能なソースデータのライブラリに適宜に割り当てることによって、その可変長コードの平均のコード長さが元のソースデータのコード長さより短くなって、よって、データ圧縮を効果的に実現することができる。
これに関連して、ハフマン符号デザインは公知のデータ統計値に対して最小冗長度の可変長コードを構成するために主に用いられる。一般に、符号化過程はテーブルをアドレス指定するために入力データをテーブルにアドレス指定するルックアップテーブルを用いて実現し得る。コード及びコード長さ情報はテーブルの内容として格納され、バッファを用いて入力情報が一定のデータレートで順次にデータチャネル上へ出力される。
しかし、受信側における復号化過程は、符号化過程よりはるかに複雑である。コード長さが可変的であるため、各コードはソースのシンボルに復号化される前に受信されたビットストリングから分割されなければならない。その結果、可変長デコーダは可変長エンコーダより一層複雑となっている。
可変長コードのスツリームを復号化するための幾つかの符号化装置が提示されているが、そのうち、１９９０年２月６日にＧａｒｙ  Ｋａｈａｎに付与された米国特許第４，８９９，１４９号明細書に開示されているツリー探索アルゴリズムを用いる可変長コード（ＶＬＣ）デコーダが主に用いられる。このＶＬＣデコーダにおいて、ＶＬＣはコードが葉（または、ターミナルノードとも称する）となるツリー構造により表現される。復号化過程はコードツリーのルート（根）から始まって、受信されたビットスツリームにより各ノードで２つのブランチ（枝）のうちの一つを選択するように誘導される。葉（即ち、コード）に至ると、コードが検出されると共に、残りのビットスツリームから分割される。このような形態の復号化装置は、ツリーに対応する論理回路及びコードツリーを通じた論理回路を有する。しかしながら、コードツリーを用いるビット単位の探索方法が復号化された各シンボルに対して要求されるため、特に、長いコードの場合には動作速度が遅くなる。
その動作速度を向上させるために提示されたＶＬＣデコーダのうち一つが、１９９２年１２月２２日にＭｉｎｇ−Ｔｉｎｇ  Ｓｕｎらに付与された米国特許第５，１７３，６９５号と第５、２４５、３３８号明細書に開示されているようなルックアップテーブルに基づくＶＬＣデコーダである。このようなデコーダは、最大コード長さと同等のビット格納能力を有し、ビットスツリームを固定長データセグメントに記憶する入力バッファメモリから供給される連続ビットを格納する２つのカスケード接続されたラッチ回路と、２つのラッチ回路と接続されていると共に最大コード長さと同一長さの復号化ウィンドウ出力を発生するバレルシフタと、最大コード長さをモジュールとして順に復号化された可変長コードのコード長さを累算する累算器と、移動可能な復号化ウィンドウ出力に含まれた可変長コードに対応する一定長さのコードを出力すると共に、可変長コードのコード長さを出力するルックアップ表メモリデバイスとを含む。コードが、各クロックサイクル毎に復号化されることによってそのコード長さが累算され、よって、バレルシフタの復号化ウィンドウは復号化されるべき次のコードの第１ビットから始まるようにシフトされる。クロックサイクルの間、累算されたコード長さが最大コード長さを超える場合、即ち、第２ラッチ回路内の全ビットが復号化された場合、第１ラッチ回路内のビットは第２ラッチ回路へ伝送され、次の一定のデータセグメントが入力バッファメモリから第１ラッチ回路に読取られる。
前述した構造の復号化器においては、ルックアップ表メモリ、バレルシフタ及び累算器を含む主要経路で構成要素の動作遅延によって動作速度が制限され、クロックサイクルごとに１つのコードのみを復号化し得るためさらに動作速度が制限される。
従って、一連の可変長コードを復号化する速度を改善するためにクロックサイクル当り二つのコードを復号化できる復号化器が提案された。そのような復号化器のうちの一つが本出願で参照引用した本出願人による日本国特許出願番号平成８年第８８８２６号（１９９５年３月１８日出願）明細書「高速可変長復号化装置」に明示されている。
前記係属中の出願の明細書に記載された発明では、復号化動作の速度を相当に改善したが、復号化器の構造の複雑度を低減する必要はいまだに存在する。
【発明が解決しようとする課題】
従って、本発明の主な目的は、１つのクロックサイクルの立ち下がりエッジと立ち上がりエッジとを共に用いて、毎クロックサイクル当り２つのコードを復号化して、動作速度を向上させ得るのみならず、復号化器の構造的複雑度を減少させ得るＶＬＣ復号化装置及びその方法を提供することである。
【課題を解決するための手段】
上記の目的を達成するために、本発明によれば、最長可変長コードの２倍の長さを有する固定長セグメントからなる入力ビットスツリームを、立ち上がりエッジ及び立ち下がりエッジを有するクロックパルスからなるクロック信号に基づいて、１／２クロック周期にて復号化するための高速可変長コード復号化装置であって、前記入力ビットスツリームからビットの連続した固定長セグメントを格納するカスケード接続された第１および第２ビット格納手段と、前記第１および第２ビット格納手段に接続され、前記第１及び第２格納手段から受け取られたビットを格納し、格納された連続する固定長セグメントのビットから第１ウィンドウ出力シーケンスを生成する出力ウィンドウを有するシフト手段であって、前記ウィンドウ出力シーケンスは前記最長可変長コードと同一のビット長さを有し、ウィンドウ制御信号に直接応じて、毎半クロックサイクル間に前記格納されたビットのうちの所定ビットに亘って前記ウィンドウをシフトさせるシフト手段と、前記ウィンドウ出力シーケンスを１半クロックサイクルの間にラッチし、ラッチされたウィンドウ出力シーケンスを復号化出力シーケンスとして生成するリレイ手段と、前記リレイ手段に接続されており、前記復号化出力シーケンスの第１ビット位置から始まる可変長コードの上位Ｐビット（前記Ｐの最大値は、最長可変長コードより小さい整数）からなるプレフィクスコードに応じてコード長さを生成する第１メモリ手段と、前記第１メモリ手段及び前記シフト手段に接続されており、前記コード長さ及びウィンドウ出力シーケンスに応じて、固定長さ語を発生する第２メモリ手段と、前記コード長さに前のクロックサイクル間に復号化された以前に累算された可変長コードの長さを各半クロックサイクルの間に加算して、ウィンドウ制御信号を生成し、前記ウィンドウ制御信号におけるビット数だけ前記ウィンドウをシフトさせると共に、前記累算されたコード長さが前記第１シフト格納手段内の全てのビットが復号化されたことを表す場合、前記入力ビットスツリーム内の次の固定長セグメントを前記第２ビット格納手段に伝達するように制御する読取り信号を発生させて、前記第２ビット格納手段内のビットのシーケンスを前記第１ビット格納手段へ伝達するように制御する桁上げ信号を発生する累算手段とを有することを特徴とする可変長コード復号化装置が提供される。
【発明の実施の形態】
以下、本発明の好適実施について図面を参照しながらより詳しく説明する。
図１には、本発明によるＶＬＣの復号化器の好ましい実施例が示されている。説明の便宜上、復号化される可変長コードの最大長さは８ビットとする。ＶＬＣ復号化器は連続的に入力される可変長コードを復号化して、ある特定のシンボルクロックに応じて可変長コードに対応する復号化された固定長コードをリード線２１３を通じて出力する。
データチャネル５１上へ受信された直列データスツリームは入力バッファメモリ５０へ入力される。入力バッファメモリ５０は可変長コードの直列データスツリームを固定長セグメント状態で格納した後、リード線４１１上の「ＲＥＡＤ」（読出し）信号に応じて、「ＣＬＫ」（クロック）信号のエッジで、例えば、立ち上がりエッジで、リード線１１１上へ固定長セグメント、例えば、１６ビットのセグメントを出力する。ここで、データセグメントのビット長さは可変長コードの最大ビット長さの２倍であり、クロック信号は２種類のエッジ、即ち、立ち上がりエッジ及び立ち下がりエッジを有する。
ラッチ回路１０１は入力バッファメモリ５０に連結され、リード線１１１を通じて前記入力バッファメモリ５０から固定長データセグメントを連続的に受信する。ラッチ回路１０２はラッチ回路１０１に接続され、ラッチ回路１０１で予め格納された固定長データセグメントを受信する。ラッチ回路１０１及び１０２はＣＬＫのエッジで「ＣＡＲＲＹ」（桁上げ）信号がその制御入力に供給される場合のみ、入力されたデータをラッチする制御ラッチであり、前記ラッチされたデータはクロックの次のエッジまで出力に保持される。本発明の好ましい実施例において、入力バッファメモリ５０とラッチ回路１０１及び１０２はクロック信号の相異なるエッジで動作する。ラッチ回路１０１及び１０２は、例えば、クロックの立ち下がりエッジで累算ブロック３００がリード線３２１上にＣＡＲＲＹ信号を発生した時、入力されたデータをラッチする。新しいデータセグメントを供給する必要がある場合、アクティブ状態のＲＥＡＤ信号がリード線４１１上へ供給される。リード線４１１上にアクティブ状態の前記ＲＥＡＤ信号が供給されたとき、入力バッファメモリ５０はクロックの立ち上がりエッジで次のデータセグメントをリード線１１１上へ供給する。ＣＡＲＲＹ信号に応じて、クロックの次の立ち下がりエッジでラッチ回路１０１はリード線１１１上の次のデータセグメントをラッチし、ラッチ回路１０１に予め格納されていたデータセグメントはラッチ回路１０２へ供給される。従って、ラッチ回路１０２はラッチ回路１０１に格納されたデータセグメントより時間的に１つ前のデータセグメントを格納している。
ラッチ回路１０２及び１０１に格納されているデータセグメントとリード線１１１上の入力バッファメモリ５０の出力は、連続した４８ビットデータスツリームとして第１バレルシフタ１０３へ入力される。第１バレルシフタ１０３はその４８ビット入力に亘ってスライド可能な８ビット出力ウィンドウを有し、その位置は累算ブロック３００からリード線３１９を通じて供給される累算されたコード長さを表すウィンドウ制御信号により制御される。前記ウィンドウ制御信号がリード線３１９を通じて供給される時、第１バレルシフタ１０３の８ビット出力ウィンドウはウィンドウ制御信号により第１バレルシフタ１０３内のデータセグメントの次の８ビットシーケンスを含むようにシフトされる。第１バレルシフタ１０３内のデータスツリームの最初の１６ビットが第２バレルシフタ１０４へ出力される時発生されるＣＡＲＲＹ信号がリード線３２１上へ出力される時、立ち下がりエッジにてラッチ回路１０１内の前データセグメントはラッチ回路１０２に前前データセグメントとしてラッチされ、リード線１１１上の現データセグメントはラッチ回路１０１に前データセグメントとしてラッチされる。その次の立ち上がりエッジにて、次の１６ビットデータセグメントが入力バッファメモリ５０から引き出されて、第１バレルシフタ１０３の入力の３３ビットから４８ビットの位置に現データセグメントとして供給される。第１バレルシフタ１０３からの出力、即ち、第１ウィンドウ出力シーケンスは３つの入力データセグメント、即ち、両ラッチ回路１０２と１０１からの前前データセグメント及び前データセグメントと入力バッファメモリ５０から出力された現データセグメントからなる４８ビットスツリームから構成された８ビットシーケンスであり、リード線１１７を通じて１６ビット入力の第２バレルシフタ１０４へ供給される。また、第２バレルシフタ１０４も前クロックエッジにて生成された８ビットの復号化出力シーケンスをリード線１２７を通じて受信して、次の出力シーケンスを生成する。
第２バレルシフタ１０４は、その１６ビット入力にわたってスライド可能な８ビット出力ウィンドウを有し、リード線２１１を通じてメモリ装置２００から供給されるコード長さにより制御され、リード線２１１上のコード長さにより決定された新しい位置にスライドされるその出力ウィンドウを用いて、第２ウィンドウ出力シーケンスをリード線１１９上へ出力し、同時に、Ｍ、例えば、３ビットのコード値をリード線１２１を通じてメモリ装置２００へ供給する。ここで、Ｍは可変長コードの最大ビット長さより小さい正の整数である。本発明の好ましい実施例において、前記１６ビット入力シーケンス内の３ビットシーケンスがコード値と規定され、前記３ビットシーケンスは第２ウィンドウ出力シーケンスの第１ビットの左側に位置している。もし、第２ウィンドウ出力シーケンス内の第１ビットの左側に位置しているビット数が３より小さい場合、前記第２バレルシフタ１０４は、「１」を前記３ビットシーケンスの上位ビットとして追加して、３ビットシーケンスのコード値を発生する。第２バレルシフタ１０４からの第２ウィンドウ出力シーケンスは、２つのラッチ回路１０６及び１０７と、マルチプレクサ（ＭＵＸ）１０８とを含むリレイ回路１０５へ供給される。前記リレイ回路１０５は第２ウィンドウ出力シーケンスを半クロックの間ラッチし、ラッチされた第２ウィンドウ出力シーケンスを復号化出力シーケンスとしてリード線１２７を通じてメモリ装置２００へ供給する。さらに詳しくは、あるクロックエッジにて第２バレルシフタ１０４から生成されたリード線１１９上の第２ウィンドウ出力シーケンスは、次のクロックエッジにて前記リレイ回路１０５内のラッチ回路１０６または１０７にラッチされる。ラッチ回路１０６及び１０７はクロック信号の相異なるエッジ、例えば、前記クロック信号の立ち下がりエッジ及び立ち上がりエッジにて入力に供給されたデータを各々ラッチする。リレー回路１０５内のＭＵＸ１０８は、前記クロックの立ち下がりエッジに応じてラッチ回路１０６からの第２ウィンドウ出力シーケンスを、前記クロックの立ち上がりエッジに応じてラッチ回路１０７からの第２ウィンドウ出力シーケンスを、復号化出力シーケンスとしてリード線１２７を通じてメモリ装置２００と第２バレルシフタ１０４へ供給する。
前記メモリ装置２００はリレイ回路１０５に接続されており、復号化出力シーケンスの第１ビット位置で始まる可変長コードに対応するコード長さと固定長さ語とを出力する。発明の好ましい実施例において、メモリ装置２００は、例えば、プログラマブルロジックアレイ（ＰＬＡ：ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ａｒｒａｙ）で実現される第１ルックアップ表２０１及び第２ルックアップ表２０２を含む。第１ルックアップ表２０１はコード長さを生成するためのプレフィクス復号化のために用いられ、第２ルックアップ表２０２は復号化された語を生成するためのサブフィックス復号化のために用いられる。第１ルックアップ表２０１はプレフィクスコード表と復号化語長さ表とを含む。各可変長コードのプレフィクスコードは前記プレフィクスコード表内のエントリーとして表現され、各々のプレフィクスコードは各々のコード長さが分かる各コードの上位Ｐビットからなり、前記Ｐの最大値は可変長コードの最大ビット長さ、即ち、８より小さい。プレフィクスコード表内の各テーブルエントリーは８ビットの長さを有し、１からＰ、例えば、１から５まで変更可能な実際のプレフィクスコードから始まる。コードライブラリー内の最大５ビットの長さを有するプレフィクスコードは８ビットより小さいため、実際のプレフィクスコードの後のテーブルエントリー内の前記ビット位置は「ｄｏｎ’ｔ  ｃａｒｅ」として表される。コードの長さはリレイ回路１０５内のＭＵＸ１０８から供給されたシーケンスがプレフィクスコード表内に格納されたいずれか１つのビットパターンと整合する場合に、検出される。例えば、プレフィクスコード表内のプレフィクスコードのビットパターンの１つが「１１」の場合、該当する８ビット表エントリーは「１１ＸＸＸＸＸＸ」になる。ここで、各々の「Ｘ」は「ｄｏｎ’ｔ  ｃａｒｅ」を表す。もし、ＭＵＸ１０８からの８ビットシーケンスが「１１０１１０１０」である場合、最初の２つのビットで整合が起こる。リード線１２７上の復号化出力シーケンスがプレフィクスコード表内のエントリーと整合する場合、復号化語長さ表内の対応するエントリーがアクティブ状態となる。復号化語長さ表はプレフィクスコード表内の可変長コードの整合したプレフィクスコードに対応するコード長さを、リード線２１１上へ出力する。次のクロックエッジにてリード線２１１を通じて第２バレルシフタ１０４へ供給されたこのコード長さは、第２バレルシフタ１０４の出力ウィンドウのシフトを制御するために用いられ、第２ルックアップ表２０２へ入力される。また、サブフィックスコード表と、コード長さ表及び復号化語表とを含む第２ルックアップ表２０２は、リード線１２１を通じて第２バレルシフタ１０４からコード値を受信する。各可変長コードのコード長さはコード長さ表内のエントリーとして表現され、各可変長コードのサブフィックスコードはサブフィックスコード表内のエントリーとして表現され、各サブフィックスコードは各可変長コードの上位Ｑビットからなり、前記Ｑは可変長コードの最大ビット長さからＰを減算した値と同じである。サブフィックスコード表内の各テーブルエントリーは３ビットの長さを有し、１からＱまで変更されうる実際のサ���フィックスコードに終了される。実際のサブフィックスコードが３ビットより小さい場合、実際のサブフィックスコードの前に位置するテーブルエントリー内のビット位置は、「ｄｏｎ’ｔ  ｃａｒｅ」として表される。本発明の好ましい実施例において、可変長コードはＰビットのプレフィクスコードとＱビットのサブフィックスコードとからなる。固定長さ語はリード線２１１上のコード長さとリード線１２１上のコード値とが各々のコード長さ表及びサブフィックス表に格納されたビットパターンの１つと整合する場合に、検出される。例えば、サブフィックスコード表内のサブフィックスコードのビットパターンが「０１」の場合、その３ビットのテーブルエントリーは「Ｘ０１」であり、ここで、「Ｘ」は「ｄｏｎ’ｔ  ｃａｒｅ」を表す。もし、リード線１２１上のコード値が「１０１」である場合、最後の２つのビットが整合する。前述したように、リード線２１１上のコード長さとリード線１２１上のコード値とが、コード長さ表及びサブフィックスコード表内のエントリーと各整合する場合、復号化語表内の該当するエントリーがアクティブ状態となる。復号化語表はサブフィックスコード表内の整合したサブフィックスコードとコード長さ表内の整合したコード長さに対応する固定長さ語をリード線２１３上へ出力する。
一方、リード線２１１上のコード長さは、累算ブロック３００へ供給され、この累算ブロック３００は復号化されたコード長さを累算し、ウィンドウ制御信号をリード線３１９上へ発生する。ウィンドウ制御信号は累算されたコード長さを表し、第１バレルシフタ１０３を制御するために用いられる。
累算ブロック３００は加算器３１０、２つのラッチ回路３２０及び３３０、及びＭＵＸ３４０を含み、加算器３１０はリード線２１１上のコード長さと以前に累算されたリード線３１８上のコード長さとを加算して、両ラッチ回路３２０、３３０にクロックパルス毎に新たに累算されたコード長さとして供給する。本発明の好ましい実施例において、ラッチ回路３２０及び３３０は互いにクロックパルスの相異なるエッジにて動作する。従って、例えば、各立ち上がりエッジにて、前クロックパルス（即ち、直前の立ち上がりエッジ）にて発生された加算器３１０の出力は、ラッチ回路３２０によりラッチされ、ＭＵＸ３４０にリード線３１６を通じて供給される。一方、各立ち下がりエッジにて、前クロックパルス（即ち、直前の立ち下がりエッジ）にて発生された加算器３１０の出力は、ラッチ回路３３０によりラッチされ、ＭＵＸ３４０にリード線３１７を通じて供給される。また、ラッチ回路３３０はラッチ回路３３０でラッチされたコード長さの最上位ビットの論理値を検出すると共に、前記バッファメモリ５０にリード線４１１を介して読み取り信号リード線として供給する。かくして、ラッチ回路３３０でラッチされたコード長さが「１６」以上の場合、ラッチ回路３３０でラッチされたコード長さのＭＳＢは「１」であり、アクティブ状態とされたＲＥＡＤ信号はリード線４１１上に供給される。
ＭＵＸ３４０においては、ラッチ回路３２０または３３０からの５ビットのコード長さがウィンドウ制御信号としてリード線３１９上へ出力されると共に、加算器３１０に以前に累算されたコードとしてリード線３１８を介して供給される。
しかしながら、ラッチ回路３２０からリード線３１８上のコード長さが「１６」以上の場合、即ち、可変長コードの最大ビット長さの２倍の場合、ラッチ回路３２０からの５ビットコード長のＭＳＢは加算器３１０に入力されるまえに「０」にリセットされることによって、以前に累算された１６を法とするコード長さをリード３１６に供給する。
加算器３１０から発生された新しく累算されたコード長さを表すリード線３１９上のウィンドウ制御信号は、第１バレルシフタ１０３へ供給され、第１バレルシフタ１０３のスライド可能な出力ウィンドウの位置を制御する。５ビットのウィンドウ制御信号のＭＳＢは、クロックの各立ち上がりエッジ及び立ち下がりエッジにてリード線３２１を通じてＣＡＲＲＹ信号としてラッチ回路１０１及び１０２へ供給される。累算されたコード長さが「１６」以上の場合、ウィンドウ制御信号のＭＳＢは「１」であり、アクティブ状態とされたＣＡＲＲＹ信号はリード線３２１へ出力される。
読取り信号（リード線）に応じて、入力バッファメモリ５０は、次のデータセグメントを取り出すと共に、立ち上がりエッジにおいて、リード線１１１上へ出力する。リード線１１１上のデータセグメントはＣＡＲＲＹ信号に応じてラッチ回路１０１へ伝送されて、立ち上がりエッジにおいてラッチ回路１０１に格納されたデータセグメントはラッチ回路１０２へ伝送される。
図１の復号化器の動作は、図２及び図３に図表形式で示された一例を参照すればより詳しく理解されるであろう。図２に示したように、入力チャネル５１から図１に示された入力バッファメモリ５０に入力されるデータスツリームが「ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ  ＥｅｅｅＦＦＦＦ  ｆｆｆＧＧＧＧＧ  ｇｇｇＨＨＨＨＨ  ｈｈｈＩＩｉｉｉ...」とする。ここで、「Ａａ」は第１可変長コード内の２つのビットを表し、「Ａ」は第１可変長コードのプレフィクスコードを、「ａ」は第１可変長コードのサブフィックスコードを各々表し、「Ｂｂｂ」は第２の可変長コードの３つのビットを表し、「Ｂ」と「ｂ」とは第２可変長コードのプレフィクスコードとサブフィックスコードを各々表す。
図３には、立ち下がりの第１クロックが発生される前に、１６ビットのラッチ回路１０１及び１０２は２進数「１１１１１１１１  １１１１１１１１」に初期化され、リレイ回路１０５の出力は、「１１１１１１１１」に初期化され、累算ブロック３００はＣＡＲＲＹ信号及びＲＥＡＤ信号が「１」になるように初期化される。より詳しくは、第１クロックパルスの立ち下がりエッジにおいてリード線２１１上の第１ルックアップ表２０１の初期化された出力は「８」であるため、第２バレルシフタ１０４の初期シフトは「８」となる。ラッチ回路３３０は２進数「１００００」に初期化されるため、ＲＥＡＤ信号は「１」であり、累算されたコード長さは８である。ラッチ回路３３０でラッチされたコード長さが「１６」であるため、新たに累算されたコード長さを表すリード線３１９上のウィンドウ制御信号は「１６」であり、新たに累算されたコード長さはリード線３１８以前に累算されたコード長さとして供給される。
第２クロックパルスの立ち上がりエッジにおいて、リード線２１１上の第１ルックアップ表２０１の出力と初期値「８」及びリード線３１８上の際に以前に累算されたコード長さ「１６」は加算器３１０にて加算され、「８」と「１６」との和はリード線３１５を介してラッチ回路３２０に入力される。続けて、ウィンドウ制御信号はラッチ回路３２０にラッチされた初期のコード長さ「８」をラッチ回路３３０からの予め累算されたコード長さ「１６」に加えることによって「２４」となる。この場合、累算された「１６」を法とするコード長さ、即ち、「８」がラッチ回路３２０から取り出されたコード長さから「１６」を引き算することによって得られる、リード線３１８上に累算されたコード長さとして供給される。ＲＥＡＤ信号が「１」であるため、「ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ」の１６ビットからなる第１データセグメントが入力バッファメモリ５０からリード線１１１上へ出力される。一方、ラッチ回路１０１及び１０２と、バレルシフタ１０３及び１０４との出力は、図３に「１１１１１１１１  １１１１１１１１」及び「１１１１１１１１」に示された初期値を有し、第２ルックアップ表２０２の出力は、図３に「Ｘ」で示された雑音値となる。
第３クロックパルスの立ち下がりエッジの際に、前のＣＡＲＲＹ信号が「１」であったため、リード線１１１上のデータセグメント「ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ」がラッチ回路１０１にラッチされる。加算器３１０の出力はリード線２１１上の以前に復号化されたコード長さに、ＭＵＸ３４０からリード線３１８上の以前に累算された「１６」を法とするコード長さ「８」を加算することによって「１６」となる。加算器３１０の出力（即ち、「１６」）はラッチ回路３３０でラッチされると共に、リード線３１９上にウィンドウ制御信号として供給される。従って、ＲＥＡＤ信号及びＣＡＲＲＹ信号は「１」を維持し、第１バレルシフタ１０３は入力された４８ビットのデータセグメント、即ち、「１１１１１１１１  １１１１１１１１  ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ  ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ」内の１７番目から２４番目のビットのシーケンス、即ち、「ＡａＢｂｂＣｃｃ」をリード線１１７を通じて第２バレルシフタ１０４へ出力する。リレイ回路１０５からの出力シーケンスは初期値を有し、第１ルックアップ表２０１のコード長さ出力は「８」を維持するため、第２バレルシフタ１０４はその２つの入力データセグメント、即ち、「１１１１１１１１  ＡａＢｂｂＣｃｃ」内の９番目から１６番目のビットのシーケンス、即ち、「ＡａＢｂｂＣｃｃ」をリード線１１９を通じてリレイ回路１０５へ出力すると共に、「１１１１１１１１  ＡａＢｂｂＣｃｃ」内の６番目から８番目のビット、即ち、「１１１」をコード値としてリード線１２１を通じて第２ルックアップ表２０２へ出力する。ラッチ回路１０２はその初期値を維持し、第２ルックアップ表２０２からの復号化された語はノイズ値を維持する。
第４クロックパルスの立ち上がりエッジのときに、ＲＥＡＤ信号は「１」に維持され、「ＥｅｅｅＦＦＦＦ  ｆｆｆＧＧＧＧＧ」の次のデータセグメントが入力バッファメモリ５０からリード線１１１上へ出力する。加算器３１０の出力はリード線２１１上の以前に復号化されたコード長さ「８」に、ＭＵＸ３４０からリード線３１８上の以前に累算されたコード長さ「１６」を加算することによって、「２４」となる。加算器３１０の出力（即ち、「２４」）はラッチ回路３２０でラッチされると共に、リード線３１９上にウィンドウ制御信号として出力される。従って、ＣＡＲＲＹ信号は「１」を維持し、第１バレルシフタ１０３は「１１１１１１１１  １１１１１１１１  ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ  ＥｅｅｅＦＦＦＦ  ｆｆｆＧＧＧＧＧ」のデータセグメントから「ｃＤＤｄｄｄＥＥ」のシーケンスを第２バレルシフタ１０４へ出力される。第３クロックパルスの立ち下がりエッジの際にリレイ回路１０５によりラッチされた「ＡａＢｂｂＣｃｃ」のシーケンスは、復号化出力シーケンスとしてリード線１２７を通じて第１ルックアップ表２０１及び第２バレルシフタ１０４へ供給される。第１ルックアップ表２０１は「ＡａＢｂｂＣｃｃ」の復号化出力シーケンス内の第１の一つのビット、即ち、「Ａ」を認識すると共に、認識されたプレフィクスコードエントリーに対応する復号化されたコード長さ、例えば、「２」をリード線２１１上に出力する。その後、リード線２１１上の復号化されたコード長さ「２」は、第２ルックアップ表２０２及び第２バレルシフタ１０４に供給され、前記第２バレルシフタ１０４は「ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ」の入力データセグメント内の３番目から１０番目のビットのシーケンス、即ち、「ＢｂｂＣｃｃｃＤ」をリード線１１９を通じてリレイ回路１０５へ出力すると共に、「１Ａａ」の３ビットシーケンスをコード値としてリード線１２１を通じて第２ルックアップ表２０２へ出力する。第２ルックアップ表２０２は復号化されたコード長さ「２」とコード値「１Ａａ」とを認識して、認識されたコード長さ及びサブフィックスコードエントリーに対応する固定長さの復号化された語、例えば、「Ａ’」をリード線２１３上へ出力する。
第５クロックパルスの立ち下がりエッジのときに、前のＣＡＲＲＹ信号が「１」であるため、リード線１１１上のデータセグメント「ＥｅｅｅＦＦＦＦ  ｆｆｆＧＧＧＧＧ」はラッチ回路１０１によりラッチされ、ラッチ回路１０１に格納されていた「ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ」のデータセグメントはラッチ回路１０２によりラッチされる。加算器３１０の出力は以前に復号化されたコード長さ「２」に以前に累算された「１６」を法とするコード長さ「８」を加えることによって「１０」となる。加算器３１０の出力（即ち、「１０」）はラッチ回路３３０によりラッチされると共に、リード線３１９上にウィンドウ制御信号として供給される。従って、ＲＥＡＤ信号及びＣＡＲＲＹ信号が「０」であり、第１バレルシフタ１０３は「ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ  ＥｅｅｅＦＦＦＦ  ｆｆｆＧＧＧＧＧ  ＥｅｅｅＦＦＦＦ  ｆｆｆＧＧＧＧＧ」のデータセグメントから「ＤｄｄｄＥＥＥｅ」のシーケンスを第２バレルシフタ１０４へ出力する。第４クロックパルスの立ち上がりエッジのときに、リレイ回路１０５によりラッチされた「ＢｂｂＣｃｃｃＤ」の出力シーケンスは第１ルックアップ表２０１及び第２バレルシフタ１０４へ供給される。第１ルックアップ表２０１は「ＢｂｂＣｃｃｃＤ」の復号化出力シーケンス内の第１のビット、「Ｂ」を認識して、認識されたプレフィクスコードエントリーに対応する復号化されたコード長さ、例えば、「３」をリード線２１１上へ出力する。その後、リード線２１１上の復号化されたコード長さ「３」は第２ルックアップ表２０２及び第２バレルシフタ１０４に供給され、第２バレルシフタ１０４は「ＢｂｂＣｃｃｃＤ  ＤｄｄｄＥＥＥｅ」内の「ＣｃｃｃＤＤｄｄ」のシーケンスをリレイ回路１０５へ出力すると共に、「Ｂｂｂ」の３ビットシーケンスをコード値として第２ルックアップ表２０２へ出力する。第２ルックアップ表２０２は復号化されたコード長さ「３」とコード値「Ｂｂｂ」とを認識して、認識されたコード長さとサブフィックスコードエントリーとに対応する固定長さの復号化された語、例えば、「Ｂ’」をリード線２１３上へ出力する。
第６クロックパルスの立ち上がりエッジの際に、ＲＥＡＤ信号は「１」に維持され、リード線１１１上のデータセグメントは変化されない。加算器３１０の出力は以前に復号化されたコード長さ「３」に以前に累算されたコード長さ「１０」を加えることによって、「１３」となる。加算器３１０の出力（即ち、「１３」）はラッチ回路３２０によりラッチされ、リード線３１９上にウィンドウ制御信号として供給される。従って、ＣＡＲＲＹ信号は「０」を維持し、第１バレルシフタ１０３は「ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ  ＥｅｅｅＦＦＦＦ  ｆｆｆＧＧＧＧＧ  ｇｇｇＨＨＨＨＨ  ｈｈｈＩＩｉｉｉ」で「ｄＥＥＥｅｅｅＦ」のシーケンスを第２バレルシフタ１０４へ出力する。第５クロックパルスの立ち下がりエッジのときに、リレイ回路１０５によりラッチされた「ＣｃｃｃＤＤｄｄ」の出力シーケンスは第１ルックアップ表２０１及び第２バレルシフタ１０４へ供給される。第１ルックアップ表２０１は「ＣｃｃｃＤＤｄｄ」の復号化出力シーケンス内の第１のビット、即ち、「Ｃ」を認識して、認識されたプレフィクスコードエントリーに対応する復号化されたコード長さ、例えば、「４」をリード線２１１上へ出力する。その後、リード線２１１上の復号化されたコード長さ「４」は第２ルックアップ表２０２及び第２バレルシフタ１０４に供給され、第２バレルシフタ１０４は「ＣｃｃｃＤＤｄｄ  ｄＥＥＥｅｅｅＦ」で「ＤＤｄｄｄＥＥＥ」の８ビットシーケンスをリレイ回路１０５へ出力すると共に、「ｃｃｃ」の３ビットシーケンスをコード値として第２ルックアップ表２０２へ出力する。第２ルックアップ表２０２は復号化されたコード長さ「４」とコード値「ｃｃｃ」とを認識して、認識されたコード長さとサブフィックスコードエントリーとに対応する固定長さの復号化された語、例えば、「Ｃ’」をリード線２１３上へ出力する。
第７クロックパルスの立ち上がりエッジのときに、前のＣＡＲＲＹ信号が「０」であるため、第１バレルシフタ１０３の３つの入力データセグメントは変わらない。加算器３１０の出力は以前に復号化されたコード長さ「４」に以前に累算された「１６」を法とするコード長さ「１３」を加えることによって、「１７」となる。加算器３１０の出力（即ち、「１７」）はラッチ回路３３０によりラッチされ、リード線３１９上にウィンドウ制御信号として供給される。従って、ＲＥＡＤ信号及びＣＡＲＲＹ信号は「１」となり、第１バレルシフタ１０３は「ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ  ＥｅｅｅＦＦＦＦ  ｆｆｆＧＧＧＧＧ  ｇｇｇＨＨＨＨＨ  ｈｈｈＩＩｉｉｉ」で「ｅｅｅＦＦＦＦｆ」のシーケンスを第２バレルシフタ１０４へ出力する。第６クロックパルスの立ち上がりエッジのときに、リレイ回路１０５によりラッチされた「ＤＤｄｄｄＥＥＥ」の出力シーケンスは第１ルックアップ表２０１及び第２バレルシフタ１０４へ供給される。第１ルックアップ表２０１は「ＤＤｄｄｄＥＥＥ」の復号化出力シーケンス内の第１の２つのビット、即ち、「ＤＤ」を認識して、認識されたプレフィクスコードエントリーに対応する復号化されたコード長さ、例えば、「５」をリード線２１１上へ出力する。その後、リード線２１１上の復号化されたコード長さ「５」は第２ルックアップ表２０２及び第２バレルシフタ１０４に供給され、第２バレルシフタ１０４は「ＤＤｄｄｄＥＥＥ  ｅｅｅＦＦＦＦＦ」で「ＥＥＥｅｅｅＦＦ」のシーケンスをリレイ回路１０５へ出力すると共に、「ｄｄｄ」の３ビットのシーケンスをコード値として第２ルックアップ表２０２へ出力する。第２ルックアップ表２０２は復号化されたコード長さ「５」とコード値「ｄｄｄ」とを認識して、認識されたコード長さとサブフィックスコードエントリーとに対応する固定長さの復号化された語、例えば、「Ｄ’」をリード線２１３上へ出力する。
第８クロックパルスの立ち上がりエッジのとき、前の信号は「０」であるため次のデータセグメント「ｇｇｇｇＨＨＨＨＨ  ｈｈｈＩＩｉｉｉ」は入力バッファメモリ５０からリード線１１１上に出力される。加算器３１０の出力は、以前に復号化されたコード長さ「５」に以前に累算されたコード長さ「１７」を加えることによって、「２２」となる。加算器３１０の出力（即ち、「２２」）はラッチ回路３２０によりラッチされ、リード線３１９上にウィンドウ制御信号として供給される。従って、ＣＡＲＲＹ信号は「１」を維持し、第１バレルシフタ１０３は「ＡａＢｂｂＣｃｃ  ｃＤＤｄｄｄＥＥ  ＥｅｅｅＦＦＦＦ  ｆｆｆＧＧＧＧＧ  ｇｇｇＨＨＨＨＨ  ｈｈｈＩＩｉｉｉ」で「ＦＦｆｆｆＧＧＧ」のシーケンスを第２バレルシフタ１０４へ出力する。第７クロックパルスの立ち下がりエッジのときにリレイ回路１０５によりラッチされた「ＥＥＥｅｅｅＦＦ」の出力シーケンスは第１ルックアップ表２０１及び第２バレルシフタ１０４へ供給される。第１ルックアップ表２０１は「ＥＥＥｅｅｅＦＦ」の復号化出力シーケンス内の第１の３つのビット、即ち、「ＥＥＥ」を認識して、認識されたプレフィクスコードエントリーに対応する復号化されたコード長さ、例えば、「６」をリード線２１１上へ出力する。その後、リード線２１１上の復号化されたコード長さ「６」は第２ルックアップ表２０２及び第２バレルシフタ１０４に供給され、第２バレルシフタ１０４は「ＥＥＥｅｅｅＦＦ  ＦＦｆｆｆＧＧＧ」で「ＦＦＦＦｆｆｆＧ」の８ビットのシーケンスをリレイ回路１０５へ出力すると共に「ｅｅｅ」の３ビットのシーケンスをコード値として第２ルックアップ表２０２へ出力する。第２ルックアップ表２０２は復号化されたコード長さ「６」とコード値「ｅｅｅ」とを認識して、認識されたコード長さとサブフィックスコードエントリーとに対応する固定長さの復号化された語、例えば、「Ｅ′」をリード線２１３へ出力する。リード線３１８上において、「６」はウィンドウ制御信号「２２」から「１６」を引き算することによって得られた以前に累算された「１６」を法とするコード長さとして伝達される。
第９クロックパルスの立ち下がりエッジの際に、前のＣＡＲＲＹ信号が「１」であるため、リード線１１１上のデータセグメント「ｇｇｇＨＨＨＨＨ  ｈｈｈＩＩｉｉｉ」がラッチ回路１０１によりラッチされ、ラッチ回路１０１に格納されていたデータセグメント「ＥｅｅｅＦＦＦＦ  ｆｆｆＧＧＧＧＧ」はラッチ回路１０２によりラッチされる。加算器３１０の出力は以前に復号化されたコード長さ「６」に以前に累算された「１６」を法とするコード長さ「６」を加えることによって「１２」となる。加算器３１０の出力（即ち、「１２」）はラッチ回路３３０によりラッチされ、リード線３１９上にウィンドウ制御信号として供給される。従って、ＲＥＡＤ信号またはＣＡＲＲＹ信号は「０」となり、第１バレルシフタ１０３は「ＥｅｅｅＦＦＦＦ  ｆｆｆＧＧＧＧＧ  ｇｇｇＨＨＨＨＨ  ｈｈｈＩＩｉｉｉ  ｇｇｇＨＨＨＨＨ  ｈｈｈＩＩｉｉｉ」で「ＧＧＧＧｇｇｇＨ」のシーケンスを第２バレルシフタ１０４へ出力する。第８クロックパルスの立ち上がりのとき、リレイ回路１０５にラッチされた「ＦＦＦＦｆｆｆＧ」の出力シーケンスは第１ルックアップ表２０１及び第２バレルシフタ１０４へ供給される。第１ルックアップ表２０１は「ＦＦＦＦｆｆｆＧ」の復号化出力シーケンス内の第１の４つのビット、即ち、「ＦＦＦＦ」を認識して、認識されたプレフィクスコードエントリーに対応する復号化されたコード長さ、例えば、「７」をリード線２１１上へ出力する。その後、リード線２１１上の復号化されたコード長さ「７」は第２ルックアップ表２０２及び第２バレルシフタ１０４に供給され、第２バレルシフタ１０４は「ＦＦＦＦｆｆｆＧ  ＧＧＧＧｇｇｇＨ」で「ＧＧＧＧＧｇｇｇ」のシーケンスをリレイ回路１０５へ出力すると共に、「ｆｆｆ」の３ビットシーケンスをコード値として第２ルックアップ表２０２へ出力する。第２ルックアップ表２０２は復号化されたコード長さ「７」とコード値「ｆｆｆ」とを認識して、認識されたコード長さとサブフィックスコードエントリーに対応する固定長さの復号化された語、例えば、「Ｆ’」をリード線２１３上へ出力する。
上記において、本発明の特定の実施例について説明したが、本明細書に記載した特許請求の範囲を逸脱することなく、当業者は種々の変更を加え得ることは勿論である。また、本発明の復号化方法は、電子計算機を用いるプログラムによっても実行できるものである。
【発明の効果】
従って、本発明によれば、毎クロックサイクルごとに２つのコードを復号化し得るため、高速復号化動作を効果的に行うことができる加算器３１０、２つのラッチ回路３２０及び３３０、ＭＵＸ３４０を有する累算ブロック３００を用いることによって、複雑な構造を単純化することができる。
【図面の簡単な説明】
【図１】本発明によるＶＬＣ復号化装置のブロック図。
【図２】図１のＶＬＣ復号化装置の動作を説明するための入力ビットスツリームを示す図。
【図３】図１のＶＬＣ復号化装置の動作を説明するための例示図。
【符号の説明】
５０  バッファメモリ
１０１、１０２  ラッチ回路
１０３  第１バレルシフタ
１０４  第２バレルシフタ
１０５  リレイ回路
１０６、１０７  ラッチ回路
１０８  マルチプレクサ
２００  メモリ装置
２０１  第１ルックアップ表
２０２  第２ルックアップ表
３００  累算ブロック
３１０  加算器
３２０、３３０  ラッチ回路
３４０  マルチプレクサ
【図１】
0003853439.tif 000002
【図２】
0003853439.tif 000003
【図３】
0003853439.tif 000004