(57)【特許請求の範囲】
【請求項１】
入力データを可変長に分割出力するためのデータ可変装置において、
出力させようとするデータのワードの長さを表す複数ビットからなるデータを入力し、既に保持されているシフト制御信号に新たに入力された前記ワードの長さを累算して新しいシフト制御信号の値を発生させる累算器と、前記累算の結果によって発生した新たなシフト制御信号の値に桁上げが発生する場合、その桁上げを二つある入力端の一方の入力端に入力する排他的オアゲートの出力を入力して保持し、これをクロック信号が活性化されると2 ビットの多重化制御信号の下位ビットとして出力すると共に該下位ビットを前記排他的オアゲートの他方の入力端にフィードバックする第1 のＤフリップフロップと、前記多重化制御信号の下位ビットを二つある入力端の一方の入力端に入力する第1 のオアゲートの出力と前記桁上げとを論理積する第1 のアンドゲートの出力を入力して保持し、これを前記クロック信号が活性化されると前記2 ビットの多重化制御信号の上位ビットとして出力すると共に該上位ビットを前記第1 のオアゲートの他方の入力端にフィードバックする第2 のＤフリップフロップと、前記多重化制御信号の下位ビットとともに前記桁上げの反転された値を入力する第2 のオアゲートの出力と前記上位ビットとを論理積する第2 のアンドゲートの出力を入力して保持し、これを前記クロック信号が活性化されると単位ビットのアクセス制御信号として出力する第3 のＤフリップフロップとを有する制御信号発生手段と、
前記入力データを複数のデータに分割して並列に入力し、複数の保持領域に保持すると共に前記アクセス制御信号が活性化される度に既に保持されている前記複数のデータを上向きシフトする一方、前記シフトによって空いた前記保持領域に新たなデータの入力を行うデータ保持手段と、
前記2 ビットの多重化制御信号によって前記データ保持手段の前記複数の保持領域に保持されているデータの中で一部を選択的に取って出力する多重化手段と、
前記多重化手段から入力するデータの中で有効な部分のスタート・ビットを指示するシフト・ポインターを前記シフト制御信号によって可変するシフターと、
を含んで構成されることを特徴とする可変長復号器のデータ可変装置。
【請求項２】
前記データ保持手段は、
前記入力データを二分割して得た上位ビット及び下位ビットのデータをそれぞれ保持する四つのラッチを有し、第1 のラッチには前記入力データの下位ビットが保持され、第2 のラッチには前記入力データの上位ビットが保持され、第3 のラッチと第4 のラッチには前記アクセス制御信号が活性化される度に、前記第1 のラッチと前記第2 のラッチから出力される前記上位ビット及び下位ビットのデータがそれぞれ保持され、データの出力により空いた前記第1 のラッチ及び前記第2 のラッチには、新たな入力データの上位ビット及び下位ビットのデータがそれぞれ入力されるように構成されたことを特徴とする請求項1 記載の可変長復号器のデータ可変装置。
【請求項３】
前記多重化手段は、
前記データ保持手段の複数の保持領域に保持されているデータの中で、前記複数ビットで表せる最大のワードの長さのデータのみを前記2 ビットの多重化制御信号に従って選択的に出力する第1 のマルチプレクサと、
前記第１のマルチプレクサが選択して出力するデータよりも下位のデータにて、前記データ保持手段に入力されずに待機中の入力データの上位ビットと前記データ保持手段の複数の保持領域から出力されるデータの中で、前記複数ビットで表せる最大のワードの長さのデータのみを前記第1 のマルチプレクサと同一の値の前記多重化制御信号に従って選択的に出力する第2 のマルチプレクサと、
を含んで構成されることを特徴とする請求項1 記載の可変長復号器のデータ可変装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、可変長復号器のデータ可変装置に関し、特に出力データの大きさを減少させてチップの大きさを減らすと同時に効率的なデータの入出力が行われるようにする可変長復号器のデータ可変装置に関する。
【０００２】
【従来の技術】
映像圧縮技術の国際標準 JPEG(Joint Picture Experts Group)又はMPEG (Moving Picture Experts Group) では、離散余弦変換（ Discrete Cosine Transform) 方法を使用して映像信号を符号化し、この符号化の過程で得られる符号の発生確率を利用して情報の圧縮を実現させる。
【０００３】
一般的な映像信号におけるそれぞれの画素ブロックの映像情報、つまり輝度や色差等の値は画面全体にかけて変化の幅が小さい。
しかし、この映像信号を離散余弦変換すると係数の発生確率には激しい偏重が生じる。その理由は、離散余弦変換の前に画面に不規則的に分布していた映像情報の値が空間周波数の低周波項の側に集中するからである。したがって映像情報を復元するのに必要な情報の大半を含む低周波項を取って高周波項は捨てることによって情報の圧縮が行われるのであり、これがJPEG、またはMPEGで離散余弦変換の方法を用いる一番重要な理由である。
【０００４】
このように偏重された変換係数に対して、発生確率の高い値には短い符号を割り当てて、発生確率の低い値には長い符号を割り当てるように符号器と復号器の間に新たな符号体系を確立すると平均符号の長さを縮めることができる。これを実現するための手段が可変長符号器であり、これを復元する手段が可変長復号器である。
【０００５】
したがって、可変長符号器または復号器で処理される各々の単位データブロックの長さも可変的になりかねない。
図4 を参照すると、可変長復号器は、入力バッファー10と、出力バッファー70と、データを復号化するプログラマブル・ロジック・アレー60と、入力バッファー10からプログラマブル・ロジック・アレー60に伝送されるデータの長さを可変させる可変ブロックとで構成される。  図4 の可変ブロックは、二つのラッチ20,30 と、32ビットのバレル・シフター40と、アキュムレータ50とで構成される。
【０００６】
入力バッファー10には、図示外の可変長符号器から出力される符号化されたデータが入力される。入力バッファー10に貯蔵されたデータはラッチ・イネーブル信号L によって16ビット単位で一方のラッチ20にアクセスされる。また、一回のラッチ・イネーブル信号L が発生するとラッチ20に保持されていたデータが他方のラッチ30に移動し、前記一方のラッチ20にはデータ入力バッファー10から新たな16ビットのデータがアクセスされて、二つのラッチ20,30 は両方とも32ビットのデータで満たされる。したがって、二つのラッチ20,30 を通じて16ビット単位のシフトが行われる。
【０００７】
バレル・シフター40は、32ビット単位でデータが入力され、4 ビットのシフト・ポインターに従って、16ビット単位のデータを出力する。入力されるデータは上述の二つのラッチ20,30 に保持されていた32ビットのデータであり、ラッチ20のデータが上位ビットとなり、ラッチ30のデータが下位ビットとなる。シフト・ポインターS とは、バレル・シフター40に入力されているデータの中で有効データのスタート・ビットを指示するものであり、シフト・ポインターの長さは、バレル・シフター40からプログラマブル・ロジック・アレー60に提供されるデータの最大のビット数が16ビットであるため、4 ビットで充分である。このようなシフト・ポインターS はアキュムレータ50から提供される。
【０００８】
アキュムレータ50は二進数0000のシフト・ポインターを初期値に持ち、プログラマブル・ロジック・アレー60から発生する4 ビットのワードの長さW が入力される。したがって、すでに保持されているシフト・ポインターS に新たに入力されるワード長さW が累算され、桁上げC が発生した場合( つまり、C=1)、入力バッファー10のデータをラッチ20,30 にアクセスするか, 又はラッチ20,30 の間のデータ・シフトに必要なラッチ・イネーブル信号L として使用される。プログラマブル・ロジック・アレー60は可変長符号器によって符号化されたデータを復元( つまり、復号化) する部分であり、復元されたデータは出力バッファー70に伝送されて貯蔵される。
【０００９】
このような従来の可変長復号器のデータ可変装置は、バレル・シフター40を用いて二つのラッチ20,30 に保持されていた32ビットのデータの中で必要な長さ( 最大16ビット) のデータを取って、プログラマブル・ロジック・アレー60に伝送する。
また、従来の可変長復号器の可変ブロックでラッチ20,30 にデータを保持
させるには、アキュムレータ50で論理値1 の桁上げが発生するおりにデータのアクセスが行えるので、アクセスしようとするデータの長さが24ビットと仮定すると、最大三回の論理値1 の桁上げを発生させなければならない。
【００１０】
また、バレル・シフター40からプログラマブル・ロジック・アレー60に出力されるデータの長さが最大16ビットであるため、プログラマブル・ロジック・アレー60では最大16ビットのデータを処理することができる回路構成が必要となるのでプログラマブル・ロジック・アレー60の大きさが大きくなりかねない。
【００１１】
【発明が解決しようとする課題】
本発明は、シフターの出力データのビットの数を減らすことによりチップ内のデータバスが占める面積を減少させるとともに、出力データのビットの数が減少することにより発生する動作速度の問題を解決するために、多重化手段と制御信号発生手段とを用いて、予めデータをシフターにアクセスするようにして効率的なデータの入出力動作を行う可変長復号器のデータ可変装置を提供することを目的とする。
【００１２】
【課題を解決するための手段】
上記目的を達成するため、本発明に係る可変長復号器のデータ可変装置は、入力データを可変長に分割出力するためのデータ可変装置において、出力させようとするデータのワードの長さを表す複数ビットからなるデータを入力し、既に保持されているシフト制御信号に新たに入力された前記ワードの長さを累算して新しいシフト制御信号の値を発生させる累算器と、前記累算の結果によって発生した新たなシフト制御信号の値に桁上げが発生する場合、その桁上げを二つある入力端の一方の入力端に入力する排他的オアゲートの出力を入力して保持し、これをクロック信号が活性化されると2 ビットの多重化制御信号の下位ビットとして出力すると共に該下位ビットを前記排他的オアゲートの他方の入力端にフィードバックする第1 のＤフリップフロップと、前記多重化制御信号の下位ビットを二つある入力端の一方の入力端に入力する第1 のオアゲートの出力と前記桁上げとを論理積する第1 のアンドゲートの出力を入力して保持し、これを前記クロック信号が活性化されると前記2 ビットの多重化制御信号の上位ビットとして出力すると共に該上位ビットを前記第1 のオアゲートの他方の入力端にフィードバックする第2 のＤフリップフロップと、前記多重化制御信号の下位ビットとともに前記桁上げの反転された値を入力する第2 のオアゲートの出力と前記上位ビットとを論理積する第2 のアンドゲートの出力を入力して保持し、これを前記クロック信号が活性化されると単位ビットのアクセス制御信号として出力する第3 のＤフリップフロップとを有する制御信号発生手段と、前記入力データを複数のデータに分割して並列に入力し、複数の保持領域に保持すると共に前記アクセス制御信号が活性化される度に既に保持されている前記複数のデータを上向きシフトする一方、前記シフトによって空いた前記保持領域に新たなデータの入力を行うデータ保持手段と、前記2 ビットの多重化制御信号によって前記データ保持手段の前記複数の保持領域に保持されているデータの中で一部を選択的に取って出力する多重化手段と、前記多重化手段から入力するデータの中で有効な部分のスタート・ビットを指示するシフト・ポインターを前記シフト制御信号によって可変するシフターと、を含んで構成されることとした。
【００１５】
又さらに、前記第1 のデータ保持手段は、前記入力データを二分割して得た上位ビット及び下位ビットのデータをそれぞれ保持する四つのラッチを有し、第1 のラッチには前記入力データの下位ビットが保持され、第2 のラッチには前記入力データの上位ビットが保持され、第3 のラッチと第4 のラッチには前記アクセス制御信号が活性化される度に、前記第1 のラッチと前記第2 のラッチから出力される前記上位ビット及び下位ビットのデータがそれぞれ保持され、データの出力により空いた前記第1 のラッチ及び前記第2 のラッチには、新たな入力データの上位ビット及び下位ビットのデータがそれぞれ入力されるように構成されたこととした。
【００１６】
又さらに、前記多重化手段は、前記データ保持手段の複数の保持領域に保持されているデータの中で、前記複数ビットで表せる最大のワードの長さのデータのみを前記2 ビットの多重化制御信号に従って選択的に出力する第1 のマルチプレクサと、前記第１のマルチプレクサが選択して出力するデータよりも下位のデータにて、前記データ保持手段に入力されずに待機中の入力データの上位ビットと前記データ保持手段の複数の保持領域から出力されるデータの中で、前記複数ビットで表せる最大のワードの長さのデータのみを前記第1 のマルチプレクサと同一の値の前記多重化制御信号に従って選択的に出力する第2 のマルチプレクサと、を含んで構成されることとした。
【００１７】
【発明の実施の形態】
上記目的を達成するために本発明による実施形態を図1 ないし図3 を参照して詳細に説明する。図1 は、本発明による可変長復号器のデータ可変装置のブロック図である。図1 に示すアキュムレータ・ブロック140 は制御信号発生手段であり、3 ビットのワードの長さW を入力し、1 ビットのアクセス制御信号としてのラッチ・イネーブル信号L と2 ビットの多重化制御信号としてのマルチプレクサ制御信号M と3 ビットのシフト制御信号としてのシフト・ポインターS とを出力する。入力されるワードの長さW とは、本発明の可変長復号器のデータ可変装置から可変長のデータの入力を受けてこれを処理するプログラマブル・ロジック・アレーで要求する有効データの長さを意味する。ラッチ・イネーブル信号L とは、入力端を形成するデータ保持手段としての四つのラッチ80,90,100,110(保持領域) を同時に活性化させて、それぞれのラッチでデータの入力と出力が行われるようにする信号であり、この時各々のラッチ80,90,100,110 を介して入力と出力がなされるデータの単位は8 ビットである。まずラッチ110(第1 のラッチ) とラッチ100(第2 のラッチ)に16ビットの入力データを二分割して得た下位8 ビットと上位8 ビットがそれぞれ入力される。そして、ラッチ110 から出力される上位ビットのデータは、ラッチ90( 第3 のラッチ) に入力され、ラッチ100 から出力される下位ビットのデータは、ラッチ80( 第4 のラッチ) に入力されるように連結されている。したがって、ラッチ・イネーブル信号L が活成化される度に、二つのラッチ100,110 に保持されているデータが別の二つのラッチ80,90 に移動するようになり、空いた二つのラッチ100,110 は各々新しい16ビットの入力データの上位8 ビットと下位8 ビットが保持される。結果的に四つのラッチ80,90,100,110 ではラッチ・イネーブル信号L が活成化される度に、16ビット単位の上向きシフトが行われることになる。
【００１８】
マルチプレクサ制御信号M とは、二つのマルチプレクサ120,130 に入力される選択信号である。一方のマルチプレクサ120(第1 のマルイチプレクサ) は、マルチプレクサ制御信号M により制御されて上記で説明したように四つのラッチ80,90,100,110 に保持されている合計32ビットのデータの中で、8 ビットのデータのみを選択して出力する。他方のマルチプレクサ130(第2 のマルイチプレクサ) は、まだラッチに入力されず入力バッファー等で待機中である16ビットデータの上位8 ビットと三つのラッチ90,100,110から出力される24ビットのデータの合計32ビットデータの中で8 ビットのデータのみを選択して出力する。この二つのマルチプレクサ120,130 は同一の値のマルチプレクサ制御信号M によって出力データを決定するが、実際に前記一方のマルチプレクサ120 が選択できるデータの範囲は、前記他方のマルチプレクサ130 が選択することのできるデータの範囲より8 ビットほど上位のデータであるため、実際に二つのマルチプレクサ120,130 から同時に出力されるデータは、各々上位8 ビットと下位8 ビットの連続する16ビットのデータである。
【００１９】
シフト・ポインターS は、16ビットのバレル・シフター150 に入力される二進数のシフト変数である。バレル・シフター150 の出力端にはプログラマブル・ロジック・アレーが接続されている。プログラマブル・ロジック・アレーは、バレル・シフター150 から8 ビット単位でデータの提供を受けて一連のデータ処理が行われる。このプログラマブル・ロジック・アレーで処理されるデータは、MPEGの特徴を説明した時に言及したとおり、その長さは非常に可変的であるため、バレル・シフター150 から8 ビット単位で提供されるデータの全てが処理されず、一部だけが処理されることもある。したがって、まだ処理されないデータのビットの数に関する情報をシフト・ポインターS の形態でバレル・シフター150 に伝達して、その時点でバレル・シフター150 に入力されているデータの中で有効な部分のスタート・ビットを確認できるようにするものである。
【００２０】
図2 は、アキュムレータ・ブロック140 の構成を示すブロック図である。図2 に示したように、本発明によるデータ可変装置のアキュムレータ・ブロック140 は累算器160 とエンコーダ170 とで構成される。累算器160 では、新たに入力されたワードの長さW と既に保持されている値の累算が行われる。桁上げC を除いた累算結果はシフト・ポインターS として出力され、桁上げC はエンコーダ170 へ出力される。エンコーダ170 では桁上げC に基づいて単位ビットのラッチ・イネーブル信号L と2 ビットのマルチプレクサ制御信号M とを発生させる。
【００２１】
このようなエンコーダ170 の詳細な説明は図3 に示している。エンコーダ170 では同一のクロック信号CLKに同期され、データの入出力が行われる三つのＤフリップフロップ171,172,173 を介してマルチプレクサ制御信号M の下位ビットM0、上位ビットM1、及びラッチ・イネーブル信号L を各々発生させる。まず、マルチプレクサ制御信号M の下位ビットM0を発生させる第1 のＤフリップフロップとしてのＤフリップフロップ171 には、排他的オアゲート174 の出力がデータD として入力される。この排他的オアゲート174 の一方の入力端には累算器160 から出力される桁上げC が入力され、Ｄフリップフロップ171 から出力される下位ビットM0が排他的オアゲート174 の他方の入力端にフィードバックされる。 つまり、n+1 番目のクロックで、Ｄフリップフロップ171 から出力される下位ビットM0n+1 の論理値は、n 番目のクロックから出力される下位ビットM0n とn 番目の桁上げCnの排他的論理和によって得られる。
【００２２】
マルチプレクサ制御信号M の上位ビットM1を発生させる第2 のＤフリップフロップとしてのＤフリップフロップ172 には、アンドゲート175 の出力がデータD として入力される。このアンドゲート175 にはオアゲート176 の出力が入力されるが、このオアゲート176 にはマルチプレクサ制御信号M の下位ビットMOとともに、Ｄフリップフロップ172 から出力されるマルチプレクサ制御信号M の上位ビットM1がフィードバックして入力される。つまり、n+1 番目のクロックで、Ｄフリップフロップ172 から出力される上位ビットM1n+1 の論理値は、n 番目の下位ビットMOn とn 番目の上位ビットM1n の論理和の結果をn 番目の桁上げCnと論理積をすることで得られる。
【００２３】
ラッチ・イネーブル信号L を発生させる第3 のＤフリップフロップとしてのＤフリップフロップ173 にはアンドゲート177 の出力がデータD として入力される。このアンドゲート177 の一方の入力端にはオアゲート178 の出力が入力されるが、このオアゲート178 にはマルチプレクサ制御信号の下位ビットM0とともに反転された桁上げ/Cが入力される。つまり、Ｄフリップフロップ173 から出力するラッチ・イネーブル信号L は、直前に出力された下位ビットM0と、新たに入力される反転された桁上げ/Cの論理和の結果を直前に出力された上位ビットM1と論理積した結果である。
【００２４】
したがって、n+1 番目のクロックから出力されるラッチ・イネーブル信号Ln+1の論理値は、n 番目の下位ビットMOn と反転されたn 番目の桁上げ/Cn の論理和の結果をn 番目の上位ビットM1n と論理積することで得られる。
以上の説明から分かるように、マルチプレクサ制御信号M の値が00である状態で桁上げC が発生しないと( つまり、C=0)、マルチプレクサ制御信号M の値はそのまま00を維持するが、桁上げC が発生すると( つまり、C=1)、マルチプレクサ制御信号M は01になる。このときのラッチ・イネーブル信号(L) はいずれの場合であっても0 を維持する。
【００２５】
マルチプレクサ制御信号のM の値が01である状態で桁上げC が発生しない場合はマルチプレクサ制御信号M は継続して01を維持して、桁上げC が発生した場合は、マルチプレクサ制御信号M は10になる。このときにも、ラッチ・イネーブル信号L はいずれの場合でも0 を維持する。
マルチプレクサ制御信号M の値が10の状態で桁上げC が発生しない場合はマルチプレクサ制御信号M は継続して00の値を有するようになり、桁上げC が発生した場合はマルチプレクサ制御信号M は11となる。この時ラッチ・イネーブル信号L は桁上げC が発生しない場合のみに1 の値を持つようになり、桁上げC が発生する場合には0 を維持する。
【００２６】
マルチプレクサ制御信号M の値が11である状態で桁上げC が発生しない場合はマルチプレクサ制御信号M は01となり、桁上げC が発生した場合はマルチプレクサ制御信号M は10となる。この時ラッチ・イネーブル信号L は、マルチプレクサ制御信号M 値が11であるため、桁上げC の発生に関わらずいずれの場合も1 の値を持つのである。
【００２７】
このように構成された本発明によるデータ可変装置の動作を任意のワードの長さW が入力された時を例にして説明する。
まず、回路動作の初期状態ではアキュムレータのブロック140 は二進数000 を初期の値として有し、桁上げもまた0 の初期値を持つようになる。したがって、ラッチ・イネーブル信号L もまた0 の値を有し、マルチプレクサ制御信号M の下位ビットMOと上位ビットM1もまたそれぞれ0 の初期値を有し、シフト・ポインターS もまた000 の初期値を持つ。
【００２８】
この時、二つのラッチ100,110 にはそれぞれ上位8 ビットと下位8 ビットの合計16ビットのデータが入力されているが、残り二つのラッチ80,90 にはいかなる有効データも入力されてない。マルチプレクサ制御信号M もまた00であるため二つのラッチ80,90 に保持されているデータ以外には選択できない状態であるため、実際にマルチプレクサ120,130 を介して出力できるようなデータはない。この時のシフト・ポインターS は000 の初期値を持つ。
【００２９】
この状態で四つのラッチ80,90,100,110 を全てデータで満たすために意図的にラッチ・イネーブル信号L を活性化すると、二つのラッチ100,110 に保持されている上位8 ビットと下位8 ビットのデータはそれぞれ異なる二つのラッチ80,90 に移動するようになる。またラッチ100,110 には新たな上位8 ビットと下位8 ビットの合計16ビットのデータが保持される。このとき、マルチプレクサ制御信号M は00であるため、マルチプレクサ120,130 はそれぞれラッチ80,90 のデータをアクセスしてバレル・シフター150 に出力した状態である。この状態で、例えば二進数011 のワードの長さW がアキュムレータ・ブロック140 に入力されると、累算器160 では初期値000 に新たに入力されたワードの長さW である011 が累算されて011 の新しいシフト・ポインターS を発生させる。この累算過程では桁上げC が発生しないため、桁上げC は依然として0 の論理値を持つ。
【００３０】
エンコーダに入力された論理値0 の桁上げC は、図3 の排他的オアゲート174 の出力を0 にして、Ｄフリップフロップ171 には0 というデータが保持される( この値はクロックCLK が活性化されると下位ビットMOとして出力される) 。また、論理値0 の桁上げC はアンドゲート175 の出力を0 にして、Ｄフリップフロップ172 にも0 というデータが保持される。上位ビットM1の論理値0 はアンドゲート177 の出力0 にして、Ｄフリップフロップ173 にもまた0 というデータが保持される。この状態でクロックCLK が活性化されるとそれぞれのＤフリップフロップ171,172,173 に保持されていたデータが出力され、マルチプレクサ制御信号M の値が00になり、ラッチ・イネーブル信号L も0 となる。
【００３１】
上記の動作において、アキュムレータ・ブロック140 に入力されたワードの長さW の値が011 ということは、その時点でバレル・シフター150 を介してプログラマブル・ロジック・アレーに提供されている8 ビットのデータの中で上位3 ビットだけを処理することを意味するため、その3 ビットを除いた5 ビットが有効なデータであることを意味する。したがって、プログラマブル・ロジック・アレーでは新たなデータのアクセスが必要でないためにマルチプレクサ制御信号M だけではなくラッチ・イネーブル信号L の値も全て初期の状態である00と0 の値を維持するようにして、新しいデータのアクセスが行われないようにするのである。
【００３２】
次に、例えば二進数111 の新たなワードの長さW が入力されると、累算器160 では現在値011 に新たなワードの長さW である111 が累算され、1 の桁上げC と010 の新たなシフト・ポインターS が発生する。
マルチプレクサ制御信号M の下位ビットMOと上位ビットM1が両方とも0 である状態で論理値1 の桁上げC が発生したので、図3 のエンコーダの排他的オアゲート174 の出力は1 になってＤフリップフロップ171 に1 というデータが保持される。しかし、直前の状態のマルチプレクサ制御信号M が00であったために桁上げC の発生に関わらずアンドゲート175,177 の出力が両方とも0 になって、Ｄフリップフロップ172,173 にはそれぞれ0 というデータが保持される。この状態でクロックCLK が活性化されるとそれぞれのＤフリップフロップ171,172,173 に保持されていたデータが出力され、マルチプレクサ制御信号M の値が01となり、ラッチ・イネーブル信号L は0 になる。
【００３３】
上記の動作において、アキュムレータ・ブロック140 に入力されたワードの長さW の値が111 ということは、その時点でバレル・シフター150 を介してプログラマブル・ロジック・アレーに入力されている8 ビットのデータのなかで、その時点でシフト・ポインターが指示している上位3 ビットの次の7 ビットを処理することを意味する。しかし、その時点でバレル・シフター150 を介して提供されている8 ビットのデータには5 ビットしか有効データが含まれていないため、2 ビットのデータの追加提供を受けるために次の8 ビットのデータをアクセスするようにしなければならない。
【００３４】
つまり、バレル・シフター150 に入力されている16ビットのデータの中で上位8 ビットはもはや有効なデータでないため、マルチプレクサ制御信号M を01に転換させて二つのラッチ90,100に保持されているデータを選択するようにする。つまり、マルチプレクサ120,130 を通して8 ビット単位の上向きシフトが行われ、新たな8 ビットのデータを追加でアクセスしたものである。
【００３５】
この状態で、例えば再度二進数111 のワードの長さW が入力されると、アキュムレータ・ブロック140 では現在値010 に新たに入力された111 のワードの長さW が累算されて論理値1 の桁上げC とともに001 の新しいシフト・ポインターS を発生させる。マルチプレクサ制御信号M の上位ビットM1と下位ビットM0がそれぞれ0 と1 である状態で論理値1 の桁上げC が発生したので、図3 のエンコーダの排他的オアゲート174 の出力は0 となってＤフリップフロップ171 に0 というデータが保持され、アンドゲート175 の出力は1 となってＤフリップフロップ172 には1 というデータが保持される。つまり、マルチプレクサ制御信号M は10であり、ラッチ・イネーブル信号L は0 である。
【００３６】
この状態でクロックCLK が活性化されると、それぞれのＤフリップフロップ171,172,173 に保持されていたデータが出力されて、マルチプレクサ制御信号M の値が10になり、ラッチ・イネーブル信号L は0 になる。この場合にもマルチプレクサ制御信号M が01から10に転換されてマルチプレクサ120,130 を通して8 ビットの上向きシフトが行われる。つまり、その時点でバレル・シフター150 を通してプログラマブル・ロジック・アレーに入力されている8 ビットのデータには6 ビットの有効データのみが含まれているために、1 ビットのデータを追加で受けるために次の8 ビットのデータをアクセスしなければならない。したがって、バレル・シフター150 に入力されている16ビットのデータの中で、上位8 ビットはこれ以上有効でないデータであるため、マルチプレクサ制御信号M を01に転換させて二つのラッチ90,100に保持されているデータを選択するようにする。つまり、マルチプレクサ120,130 を通して再度8 ビット単位の上向きシフトを行うことで追加して新たな8 ビットのデータをバレル・シフター150 にアクセスしたことになる。
【００３７】
この状態で、例えば二進数110 の新たなワードの長さW が入力されると、既存の001 のシフト・ポインターS に新たに入力された110 というワードの長さW が累算されて111 の新しいシフト・ポインターS が発生し、桁上げC は発生しない。
マルチプレクサ制御信号M の上位ビットM1と下位ビットMOがそれぞれ1 と0 である状態で桁上げC が発生しないため、図3 のエンコーダの排他的オアゲート174 の出力は0 になり、Ｄフリップフロップ171 には0 のデータが保持され、論理値0 の桁上げC によってアンドゲート175 をも0 になってＤフリップフロップ172 にも0 というデータが保持される。しかし、この時点でのマルチプレクサ制御信号M の上位ビットM1は1 で、反転された桁上げ/Cもまた1 であるためにアンドゲート177 の出力は1 になってＤフリップフロップ173 には1 というデータが保持される。つまり、マルチプレクサ制御信号M は00になり、ラッチ・イネーブル信号L は1 となる。
【００３８】
ラッチ・イネーブル信号L が活性化されたので、二つのラッチ100,110 に保持されていた16ビットのデータはそれぞれラッチ80,90 に移動し、空いたラッチ100,110 にはそれぞれ上位8 ビットと下位8 ビットの新たな16ビットのデータがアクセスされる。
マルチプレクサ制御信号M が00に復帰することによって二つのマルチプレクサ120,130 はそれぞれラッチ80,90 のデータをアクセスすることができる。しかし、ラッチ80 ,90に保持されている16ビットのデータは、マルチプレクサ制御信号M が00に復帰する直前にラッチ100,110 に保持されていたデータであるため、実際にマルチプレクサ120,130 からアクセスできるデータはマルチプレクサ制御信号M が00に復帰する前と同一のデータである。
【００３９】
つまり、シフト・ポインターS が111(7 ビット) であるため実際にバレル・シフター150に入力されている上位8 ビットと下位8 ビットのデータの中で、上位8 ビットのデータの1 ビットがまだ有効なビットであるため、マルチプレクサ120,130 を通じた8 ビット単位のシフト( つまり、8 ビットの新しいデータのアクセス) は必要としない。しかし、ラッチ80,90,100,110 に保持中である合計32ビットのデータの中で、上位16ビットのデータが既にマルチプレクサ120,130 を介してアクセスされたため、ラッチ80,90,100,110 に新たな16ビットデータのアクセスが要求されるので、マルチプレクサ制御信号M が10から00に復帰するときにラッチ・イネーブル信号L を活性化させてラッチ80,90,100,110 を介して新たな16ビットのデータのアクセスが行われるようにするものである。
【００４０】
【発明の効果】
本発明の可変長復号器のデータ可変装置は、以上のように構成されたので、請求項1 に係る発明によれば、制御信号発生手段の累算器で出力させようとするデータのワードの長さを表す複数ビットからなるデータを入力し、既に保持されているシフト制御信号に新たに入力された前記ワードの長さを累算して新しいシフト制御信号の値を発生させ、制御信号発生手段の第1 のＤフリップフロップで前記累算の結果によって発生した新たなシフト制御信号の値に桁上げが発生する場合、その桁上げを二つある入力端の一方の入力端に入力する排他的オアゲートの出力を入力して保持し、これをクロック信号が活性化されると2 ビットの多重化制御信号の下位ビットとして出力すると共に該下位ビットを前記排他的オアゲートの他方の入力端にフィードバックし、制御信号発生手段の第2 のＤフリップフロップで前記多重化制御信号の下位ビットを二つある入力端の一方の入力端に入力する第1 のオアゲートの出力と前記桁上げとを論理積する第1 のアンドゲートの出力を入力して保持し、これを前記クロック信号が活性化されると前記2 ビットの多重化制御信号の上位ビットとして出力すると共に該上位ビットを前記第1 のオアゲートの他方の入力端にフィードバックし、制御信号発生手段の第3 のＤフリップフロップで前記多重化制御信号の下位ビットとともに前記桁上げの反転された値を入力する第2 のオアゲートの出力と前記上位ビットとを論理積する第2 のアンドゲートの出力を入力して保持し、これを前記クロック信号が活性化されると単位ビットのアクセス制御信号として出力し、データ保持手段により入力データを複数のデータに分割して並列に入力し、複数の保持領域に保持すると共に前記アクセス制御信号が活性化される度に既に保持されている前記複数のデータを上向きシフトする一方、前記シフトによって空いた前記保持領域に新たなデータの入力を行い、多重化手段により前記2 ビットの多重化制御信号によって前記データ保持手段の前記複数の保持領域に保持されているデータの中で一部を選択的に取って出力し、シフターにより前記多重化手段から入力するデータの中で有効な部分のスタート・ビットを指示するシフト・ポインターを前記シフト制御信号によって可変することができる。したがって、出力データのビット数を減らすことができ、チップ内のデータパスが占める面積を減少させることができる。また、多重化手段と制御信号発生手段とを用いて、予めデータをシフターにアクセスするようにしたことにより、出力データのビット数が減少することにより発生する動作速度が遅くなる問題を解決することができる。
また、請求項２又は３に係る発明は、ワードの長さの累算過程で発生した多数の制御信号によりラッチとマルチプレクサを制御することでデータの効率的なアクセスとシフトを具現化することができる。
【図面の簡単な説明】
【図１  】本発明に係るデータ可変装置を示すブロック図である。
【図２  】上記データ可変装置におけるアキュムレータ・ブロックを示すブロック図である。
【図３  】上記アキュムレータ・ブロックにおけるエンコーダの構成を示す回路図である。
【図４  】従来の可変長復号器を示すブロック図である。
【符号の説明】
１０：入力バッファー
２０, ３０, ８０, ９０，１００，１１０：ラッチ
４０，１５０：バレル・シフター
５０：アキュムレータ
６０：プログラマブル・ロジック・アレー
７０：出力バッファー
１２０，１３０：マルチプレクサ
１６０：累算器
１７０：エンコーダ
１７１，１７２，１７３：Ｄフリップフロップ
１７４：排他的オアゲート
１７５，１７７：アンドゲート
１７６，１７８：オアゲート
Ｗ：ワードの長さ
Ｃ：桁上げ
Ｓ：シフト・ポインター
Ｌ：ラッチ・イネーブル信号
Ｍ：マルチプレクサ制御信号
ＣＬＫ：クロック信号
／Ｃ：反転した桁上げ
【図１】
0003691261.tif 000002
【図２】
0003691261.tif 000003
【図３】
0003691261.tif 000004
【図４】
0003691261.tif 000005