(57)【要約】【課題】データの書き込み回数を削減できるとともに、消費電力を低減できる。【解決手段】本発明の例に関わるデータ復号化装置は、ゼロデータ又は非ゼロデータを、複数のメモリワードを含んでいるメモリに書き込む制御回路１０と、メモリワード内の複数のバイトアドレスに対応する第１のポインタ値Ｐｔｒを制御回路１０に出力するレジスタ１２とを具備し、制御回路１０は、ポインタ値Ｐｔｒに基づいて、ゼロデータを書き込む位置を示す第２のポインタ値を出力する第１の変換部２６と、第２のポインタ値及び非ゼロデータを書き込む位置を示す第３のポインタ値のうち一方を選択し、選択されたポインタ値をバイトアドレスに変換する第２の変換部とを有し、制御回路１０は、第２のポインタ値と第３のポインタ値との大きさの比較結果に基づいて、非ゼロデータとゼロデータとをメモリ３に順次書き込んでいく。【選択図】図２
2010187115.tif 000002
【特許請求の範囲】
【請求項１】
レベル値を含んでいる有効データが入力され、ゼロデータ又は前記レベル値に対応する非ゼロデータを、複数のメモリワードを含んでいるメモリに書き込む第１の制御回路と、
前記メモリワードのそれぞれが含んでいる複数のバイトアドレスに対応する第１のポインタ値を保持し、前記第１のポインタ値を前記第１の制御回路に出力するポインタ保持部と、
を具備し、
前記第１の制御回路は、
前記第１のポインタ値に基づいて、ゼロデータを書き込む位置を示す第２のポインタ値を出力する第１の変換部と、
前記第２のポインタ値と非ゼロデータを書き込む位置を示す第３のポインタ値とが入力され、前記第２及び第３のポインタ値のうち、所定の書き込みサイクルにおけるデータの書き込みの対象となるいずれか一方を選択し、その選択されたポインタ値をバイトアドレスに変換する第２の変換部と、
前記第２のポインタ値と前記第３のポインタ値の大きさの比較結果に対応してそれぞれ異なる複数の書き込み方式を有する書き込み制御部と、
前記第２のポインタ値と前記第３のポインタ値の大きさの比較結果に応じて、前記複数の書き込み方式のうちいずれか１つの書き込み方式を選択する書き込み方式選択部と、
を有し、
前記第２のポインタ値は、データの復号化期間中において、前記複数のメモリワードがそれぞれ含んでいる複数のポインタ値の中で、最初に到達するポインタ値を示し、
前記制御回路は、前記第２のポインタ値と前記第３のポインタ値との大きさを比較し、その比較結果に基づいて、前記非ゼロデータと前記ゼロデータとを前記メモリに順次書き込んでいくことを特徴とするデータ復号化装置。
【請求項２】
前記書き込み制御部は、
前記第２のポインタ値と前記第３のポインタ値が同じ大きさである場合に、前記選択されたポインタ値に対応するバイトアドレスに、非ゼロデータを書き込み、それと同時に、前記選択されたポインタ値を含んでいる１つのメモリワード内の残りのポインタ値に対応するバイトアドレスに、ゼロデータを書き込む第１の書き込み方式と、
前記第３のポインタ値が前記第２のポインタ値より大きい場合に、前記選択されたポインタ値を含んでいる１つのメモリワード内の複数のポインタ値にそれぞれ対応するバイトアドレスの全てに、ゼロデータを書き込む第２の書き込み方式と、
前記第３のポインタ値が前記第２のポインタ値より小さい場合に、前記選択されたポインタ値に対応するバイトアドレスにのみ、非ゼロデータを書き込む第３の書き込み方式と、を有することを特徴とする請求項１に記載のデータ復号化装置。
【請求項３】
前記書き込み方式選択部は、
前記第３のポインタ値が前記第２のポインタ値以下である場合、“１”レベルの第１の書き込み制御信号を出力し、
前記第３のポインタ値が前記第２のポインタ値以上である場合、“１”レベルの第２の書き込み制御信号を出力し、
前記第１及び第２の書き込み制御信号の両方が“１”レベルを示す場合に、前記第１の書き込み方式が選択され、
前記第１の書き込み制御信号が“１”レベルを示し、前記第２の書き込み制御信号が“０”レベルを示す場合に、前記第２の書き込み方式が選択され、
前記第１の書き込み制御信号が“０”レベルを示し、前記第２の書き込み制御信号が“１”レベルを示す場合に、前記第３の書き込み方式が選択される、ことを特徴とする請求項２に記載のデータ復号化装置。
【請求項４】
前記書き込み制御部は、
前記第１の書き込み制御信号が“１”レベルを示す場合に、前記レベル値に対応した非ゼロデータ及びゼロデータを生成し、前記第１の書き込み制御信号が“０”レベルを示す場合に、ゼロデータを生成し、生成された前記非ゼロデータ及び前記ゼロデータを前記メモリに出力する第１の生成手段を有する、ことを特徴とする請求項３に記載のデータ復号化装置。
【請求項５】
前記書き込み制御回路は、
前記第２の書き込み制御信号が“１”レベルを示す場合に、前記メモリワードが含んでいる複数のポインタに対応するバイトアドレスの全てを有効にし、前記第２の書き込み制御信号が“０”レベルを示す場合に、前記メモリワードが含んでいる複数のポインタのうち、前記第３のポインタ値に対応するバイトアドレスを有効にする第２の生成手段を有する、ことを特徴とする請求項３又は４に記載のデータ復号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ復号化装置に係り、例えば、画像データを復号化するための装置に関する。
【背景技術】
【０００２】
近年、動画などの画像データは、データの量子化・符号化により圧縮されて、デジタル放送及びインターネットによる配信データ、又は、記録媒体の記憶データとして、利用されている。画像データの圧縮方式の規格として、例えば、ＪＰＥＧ（Joint Photographic Experts Group）や、ＭＰＥＧ（Moving Picture Experts Group）等が用いられている。
【０００３】
符号化（圧縮）された画像データを復号化する方式として、例えば、ジグザグスキャン復号方式がある（例えば、特許文献１参照）。  
ジグザグスキャン復号方式は、例えば、離散コサイン変換（ＤＣＴ：Discrete Cosine Transform）処理を利用して符号化されたデータに対し、その符号化データから得られる１次元の係数列を、８×８の２次元のデータ列にジグザグに並び替えて変換し、その変換結果をデータの復号化に利用している。
【０００４】
ジグザグスキャン復号方式において、８×８の２次元領域（以下、８×８ブロックと呼ぶ）はメモリのアドレスに対応し、２次元の展開されたデータは、２次元領域が示すアドレスに書き込まれる。
【０００５】
書き込まれるデータは、例えば、圧縮前の画像データが含む輝度及び色差に基づいた量子化係数に対応している。輝度や色の変化が大きい係数は、その大きさに応じて、例えば、１バイト程度の値で示される非ゼロの値（レベル値）になる。一方、輝度や色の変化の小さい係数は、０（ゼロ）で示される。一般的に、ＤＣＴ処理によって量子化・符号化されたデータは、０を示す確率が高い。
【０００６】
例えば、特許文献１に開示される技術では、最初に、８×８ブロックに対応したメモリの領域の全体に対して、０（ゼロデータ）が書き込まれる。その後に、レベル値（非ゼロデータ）が、スキャンの順序に従って、メモリ内の所定のアドレスに順次書き込まれていく。  
この場合、画像の高解像度化に伴って、１つの画像データを構成している８×８ブロックの個数が多くなると、メモリに対するゼロ／非ゼロデータの書き込み回数が増大し、復号化処理及び画像表示処理の性能が、低下してしまう。そのため、データの復号化の際に、データの書き込み回数を削減することが要求されている。
【０００７】
また、データの書き込みには、回路を駆動するための電圧及び電流が必要となるため、書き込み回数が増加するのに伴って、半導体集積回路の消費電力は増加する。近年では、半導体集積回路の低消費電力化も要求されており、書き込み回数の増大は、消費電力の低減を妨げている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】国際公開第２００２／１０１９３４号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、データの書き込み回数の削減及び消費電力の低減が可能なデータ復号化装置を提案する。
【課題を解決するための手段】
【００１０】
本発明の例に関わるデータ復号化装置は、レベル値を含んでいる有効データが入力され、ゼロデータ又は前記レベル値に対応する非ゼロデータを、複数のメモリワードを含んでいるメモリに書き込む第１の制御回路と、前記メモリワードのそれぞれが含んでいる複数のバイトアドレスに対応する第１のポインタ値を保持し、前記第１のポインタ値を前記第１の制御回路に出力するポインタ保持部と、を具備し、前記第１の制御回路は、前記第１のポインタ値に基づいて、ゼロデータを書き込む位置を示す第２のポインタ値を出力する第１の変換部と、前記第２のポインタ値と非ゼロデータを書き込む位置を示す第３のポインタ値とが入力され、前記第２及び第３のポインタ値のうち、所定の書き込みサイクルにおけるデータの書き込みの対象となるいずれか一方を選択し、その選択されたポインタ値をバイトアドレスに変換する第２の変換部と、前記第２のポインタ値と前記第３のポインタ値の大きさの比較結果に対応してそれぞれ異なる複数の書き込み方式を有する書き込み制御部と、前記第２のポインタ値と前記第３のポインタ値の大きさの比較結果に応じて、前記複数の書き込み方式のうちいずれか１つの書き込み方式を選択する書き込み方式選択部と、を有し、前記第２のポインタ値は、データの復号化期間中において、前記複数のメモリワードがそれぞれ含んでいる複数のポインタ値の中で、最初に到達するポインタ値を示し、前記制御回路は、前記第２のポインタ値と前記第３のポインタ値との大きさを比較し、その比較結果に基づいて、前記非ゼロデータと前記ゼロデータとを前記メモリに順次書き込んでいくことを備える。
【発明の効果】
【００１１】
本発明によればデータの書き込み回数の削減及び消費電力の低減が可能なデータ復号化装置を実現できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に係るデータ復号化装置を用いたシステムの構成例を示すブロック図である。
【図２】本発明の実施形態に係るデータ復号化装置の内部構成を示すブロック図である。
【図３】データのスキャン方式の一例を示す図である。
【図４】本発明の実施形態に係るデータ復号化装置の変換テーブルの一例を示す図である。
【図５】本発明の実施形態に係るデータ復号化装置の動作を説明するためのフローチャートである。
【図６】本発明の実施形態に係るデータ復号化装置の動作を説明するための模式図である。
【図７】本発明の実施形態に係るデータ復号化装置の内部構成の一例を説明するための図である。
【図８】本発明の実施形態に係るデータ復号化装置の内部構成の一例を説明するための図である。
【図９】本発明の実施形態に係るデータ復号化装置の内部構成の一例を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、本発明の例を実施するための形態について詳細に説明する。
【実施例】
【００１４】
［実施形態］  
（１）  回路構成  
図１乃至図４を用いて、本発明の実施形態に係るデータ復号化装置の構成について、説明する。
【００１５】
図１は、本実施形態に係るデータ復号化装置を用いたシステムの構成例を示している。  
本実施形形態のデータ復号化装置２は、符号化データから得られる１次元の係数列を、２次元の係数列に変換し、データを復号化する。本実施形態において、符号化データのことをビットストリームＢＳとよぶ。ビットストリームＢＳは、例えば、離散コサイン変換（Discrete Cosine Transfer）処理などによって空間成分から周波数成分に変換された画像データが、量子化及び符号化（圧縮）されたデータ信号である。本実施形態において、ビットストリームＢＳは、例えば、ＭＰＥＧ（Moving Picture Experts Group）−２、ＭＰＥＧ−４及びＪＰＥＧ（Joint Photographic Experts Group）などの規格に基づいている。
【００１６】
ビットストリームＢＳは、例えば、データ解析回路１に入力される。データ解析回路１は、ビットストリームＢＳを解析し、１次元の係数列を生成する。生成された１次元の係数列は、データ復号化装置２へ出力される。
【００１７】
データ復号化装置２は、ビットストリームの解析結果、つまり、１次元の係数列が２次元の領域に展開されるように、係数列を並び替えて、１次元の係数列から２次元の係数列に変換する。
【００１８】
データ復号化装置２は、変換された係数列が示すデータをメモリ３内の所定のアドレスに書き込む。メモリ３は、例えば、ＳＲＡＭ（Static Random Memory）が用いられる。但し、メモリ３は、ＤＲＡＭ（Dynamic Random Access Memory）やフラッシュメモリでもよい。
【００１９】
また、データ復号化装置２は、変換された係数列が示すデータを逆ＤＣＴ処理装置４に出力する。逆ＤＣＴ処理装置４は、メモリ３に記憶されたデータと入力されたデータとを参照して、入力されたデータを逆ＤＣＴ処理し、データを周波数成分から空間成分に変換する。  
そして、逆ＤＣＴ処理されたデータは、例えば、ＤＣ／ＡＣ変換処理などが施されて、ディスプレイ５に表示される。
【００２０】
図２は、本実施形態に係るデータ復号化装置２の内部構成を示している。データ復号化装置２は、例えば、２つの制御回路１０，１１と、１つのレジスタ１２を有している。尚、図２に示される回路の構成は、本実施形態で述べるデータ復号化を実行するための主要部を示す例であって、他の構成要素が含まれてもよいのは、もちろんである。
【００２１】
第１の制御回路１０は、主に、係数列の変換及びデータの復号化を制御する。  
制御回路１０は、データ要求信号Ｎｘｔを、例えば、データ解析装置１に出力する。制御回路１０がデータ要求信号Ｎｘｔを有効にすることによって、ビットストリームＢＳの解析結果（データ）が制御回路１０に入力される。
【００２２】
制御回路１０に入力されるデータは、例えば、ラン値Ｒｎとレベル値Ｌｖとを含んでいるデータである。本実施形態においては、このラン値Ｒｎ及びレベル値Ｌｖを含む入力データのことを、有効データと呼ぶ。１つの有効データ内のラン値Ｒｎ及びレベル値Ｌｖは、対を成している。  
レベル値Ｌｖは、輝度や色の変化が小さい信号レベルに応じた非ゼロの量子化係数を示している。レベル値Ｌｖは、例えば、１バイトの値で示される。これに対して、輝度や色の変化が大きい信号レベルは、“０（ゼロ）”で示される。以下では、非ゼロの量子化係数（レベル値Ｌｖ）のことを非ゼロデータ、ゼロの量子化係数のことをゼロデータとも呼ぶ。ラン値Ｒｎは、ある非ゼロデータに先行するゼロデータの個数を示している。
【００２３】
制御回路１０は、入力された有効データに基づいて、次の書き込みサイクルで用いられるポインタ値（更新ポインタ値）ｎｘｔＰｔｒを生成し、その更新ポインタ値ｎｘｔＰｔｒをレジスタ１２に出力する。
【００２４】
また、制御回路１０は、書き込みイネーブル信号Ｗｅと同期して、アドレス信号Ａｄｄｒ、データＤＴ及びバイトイネーブル信号Ｂｅを、メモリ３に出力する。そして、バイトイネーブル信号Ｂｅによって、アドレス信号Ａｄｄｒが示すメモリ３内の所定の位置（アドレス）が有効にされ、有効になったアドレスに、データＤＴが書き込まれる。
【００２５】
レジスタ１２は、書き込みサイクルで用いられるポインタ値（第１のポインタ値）Ｐｔｒを保持する。以下、本実施形態においては、ポインタ値を保持するレジスタ１２のことを、ポインタレジスタ１２と呼ぶ。ポインタ値Ｐｔｒは、係数列を展開する２次元の領域内における対応位置を示している。
【００２６】
ポインタレジスタ１２は、リセット信号Ｒｓｔが有効である場合に、保持しているポインタ値Ｐｔｒをリセットする。ポインタレジスタ１２は、入力された書き込みイネーブル信号Ｗｅが有効である場合に、制御回路１０から入力された更新ポインタ値ｎｘｔＰｔｒを取り込む。ポインタレジスタ１２は、取り込んだ更新ポインタ値ｎｘｔＰｔｒを、次の書き込みサイクルに用いるポインタ値Ｐｔｒとして保持する。そして、そのポインタ値Ｐｔｒは、制御回路１０に出力される。
【００２７】
第２の制御回路１１は、主に、メモリ３に対するデータの書き込みを制御する。  
制御回路１１は、書き込みイネーブル信号Ｗｅを、制御回路１０、ポインタレジスタ１２及びメモリ３に出力する。書き込みイネーブル信号Ｗｅが有効である場合に、制御部１０及びポインタレジスタ１２が駆動され、所定のデータＤＴが書き込み可能となったメモリ３のアドレスに書き込まれる。また、制御回路１１は、ポインタレジスタ１２に、リセット信号Ｒｓｔを出力する。リセット信号Ｒｓｔによって、ポインタレジスタ１２に保持された値がリセットされる。
【００２８】
制御回路１１には、終了信号ＥＮＤが、例えば、データ解析装置１から入力される。終了信号ＥＮＤは、復号化の対象領域が含んでいるデータの出力が終了したことを示している。終了信号ＥＮＤが有効になる結果として、所定の２次元の領域に対するデータ（係数列）の展開が終了し、データの復号化が終了する。一方、終了信号ＥＮＤが無効である場合、つまり、後続の有効データが存在する場合、データ要求信号Ｎｘｔが有効にされ、後続の有効データが入力されて、復号化処理が続行される。
【００２９】
上述のように、データ復号化装置２は、入力されたビットストリームＢＳに基づく１次元の係数列を、２次元の領域に展開し、２次元の係数列に変換する。データ復号化装置２は、２次元領域に対応するメモリ３内の所定のアドレスに、量子化係数（レベル値）が示すデータを書き込む。そのため、データ復号化装置２内の制御回路１０は、１次元の係数列を２次元の係数列に変換（並び替え）するための変換部（第２の変換部）２６を有する。  
１次元の係数を２次元の係数列に変換する際、例えば、ジグザグスキャン復号方式が用いられる。図３は、ジグザグスキャン復号方式を用いられる変換テーブルＺＺＣＯＮＶ（crPtr）を示している。変換部２６は、図３に示されるような変換テーブルを有する。以下、本実施形態おいては、図３に示される変換テーブルのことを、ジグザグスキャン変換テーブルＺＺＣＯＮＶ（crPtr）とよび、そのテーブルを有する変換部２６のことを、ジグザグスキャン変換部２６とよぶ。
【００３０】
ジグザグスキャン変換部２６は、データの書き込みサイクルにおいて、現在のポインタの位置（現在のポインタ値ｃｒＰｔｒ）を取り込む。ジグザグスキャン変換部２６は、その取り込んだ現在のポインタ値ｃｒＰｔｒに基づいて、図３に示されるジグザグスキャン変換テーブルＺＺＣＯＮＶ（crPtr）を参照し、１次元の係数列を８×８の２次元領域（以下、８×８ブロックと呼ぶ）内に並び替え、２次元の係数列に変換する。
【００３１】
図３に示される変換テーブルにおいて、８×８ブロック内に配列される０〜６３のポインタ値が示されている。１次元の係数列としてのレベル値Ｌｖは、図３に示される０から６３へ向かう矢印の順序によって、ジグザグに２次元に並べ替えられる。８×８ブロックを用いたデータ復号化において、例えば、ポインタ値が０から６３に到達するまでのサイクルが、１つのデータ復号化期間となっている。例えば、ポインタ値Ｐｔｒが“０”を示す位置は、例えば、周波数成分が０に対応する直流（ＤＣ）成分に対応する。残りのポインタ値Ｐｔｒ＝１〜６３が示す位置には、それぞれ異なる周波数成分に対応した交流（ＡＣ）成分に対応する。
【００３２】
図３において、変換テーブルの縦軸ｙは、メモリ３のアドレスの上位ビットに対応し、変換テーブルの横軸ｘはメモリ領域のアドレスの下位ビットに対応する。８×８ブロックの場合、上位ビットｙ及び下位ビットｘのそれぞれは、０〜７の値、つまり、３ビットで示される。つまり、図３の変換テーブルを用いることによって、６ビットのアドレスが１つのポインタ値から得られる。１つのレベル値Ｌｖは、１つのポインタ値に対応するバイトアドレスに書き込まれる。バイトアドレスは、メモリ３内のアドレスに対応している。以上のように、ジグザグスキャン変換部２６は、データを書き込む位置を現在のポインタ値ＣｒＰｔｒとして取り込み、例えば、図３に示されるような変換テーブルに基づいて、そのポインタ値をメモリのアドレスに変換する。
【００３３】
図３のスキャン変換テーブル内において、複数のメモリワードＭＷが設定される。１つのメモリワードＭＷは、ｘ方向に沿って配列された４つのポインタ値（バイトアドレス）から構成されている。よって、１つのメモリワードＭＷのサイズは、４バイトである。例えば、１つのポインタ値に対応するバイトアドレスに対する書き込みに要する期間、又は、１つのメモリワードに対する書き込みに要する期間が、１つの書き込みサイクルになっている。
【００３４】
尚、データのスキャン方法としては、例えば、垂直優先オルタネートスキャン方式、水平優先オルタネートスキャン方式及びラスタスキャン方式など、他のスキャン方式を用いても良い。
【００３５】
また、本実施形態のデータ復号化装置２において、制御回路１０は、ゼロデータを書き込む位置（第２のポインタ値）を出力する変換部（第１の変換部）２３を備える。変換部２３は、例えば、図４に示されるようなゼロデータを書き込むポインタ値を示す変換テーブルを有する。以下、本実施形態においては、変換部２３のことを、ネクストゼロポインタ変換部２３と呼び、図４に示される変換テーブルのことを、ネクストゼロ変換テーブルと呼ぶ。
【００３６】
図４のネクストゼロ変換テーブルに示されるポインタ値（以下、ネクストゼロポインタ値）ｎｘｔＺｒ（Ptr）は、ポインタ値Ｐｔｒの関数である。ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）は、入力されたポインタ値Ｐｔｒをインクリメントしていき、データ復号化期間中に図３に示されるような順序でスキャンした場合に、メモリワード内に含まれている複数のポインタ値の中で、初めて到達するポインタ値を示している。  
図４に示されるように、ネクストゼロ変換テーブルに含まれる複数のネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の値のそれぞれにおいて、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の値を得るのに用いられる入力ポインタ値Ｐｔｒの値は、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の値以下である。それゆえ、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）を用いたゼロデータ書き込みは、入力されたポインタ値Ｐｔｒに対応する書き込みサイクル及びそのサイクル以降で用いられることになる。このように、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）は、入力されたポインタ値Ｐｔｒを引数として、得られる。
【００３７】
ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）について、図３に示されるジグザグスキャン方式におけるデータの書き込み経路（順序）と図４に示されるネクストゼロ変換テーブルとを参照して、具体的に説明する。ここでは、ポインタ値Ｐｔｒが、“１２”、“１３”及び“１４”を示す場合を例に、説明する。
【００３８】
図３に示されるジグザグスキャン変換テーブルを参照すると、“１２”のポインタ値Ｐｔｒは、ポインタ値Ｐｔｒが“３”のときにすでに到達したメモリワード内に含まれ、そのメモリワードは、一度書き込みの対象となっている。また、“１３”のポインタ値Ｐｔｒは、ポインタ値Ｐｔｒが“２”のときにすでに到達したメモリワード内に含まれ、そのメモリワードは一度書き込みの対象となっている。
【００３９】
これに対して、ポインタ値Ｐｔｒが“１４”である場合、その値を含むメモリワードＭＷａは、“１４”、“１５”、“２７”及び“２８”の４つのポインタ値を含んでいる。この中で、“１４”のポインタ値Ｐｔｒは、図３に示されるジグザグスキャン方式によるデータ書き込みの順序において、そのメモリワードＭＷａの中で、最初に到達するポインタ値である。“１４”のポインタ値Ｐｔｒが入力されたときに、その値を含むメモリワードＭＷａは、８×８ブロックに対応する任意の係数列において、初めて書き込み対象となる。換言すると、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）は、データのスキャン順序において、ゼロ／非ゼロデータの書き込みの対象となっていないメモリワードに到達したときのポインタ値を示している。
【００４０】
図４に示される変換テーブルにおいて、“１２”のポインタ値Ｐｔｒがネクストゼロポインタ変換部２３に入力され、“１２”をインクリメントした場合、“１４”のポインタ値が、未到達（未書き込み）のメモリワードに含まれ、且つ、“１２”の次に出現するポインタ値である。よって、ネクストゼロポインタ値ｎｘｔＺｒ（１２）の値は、“１４”として、出力される。  
このように、ネクストゼロポインタ変換部２３は、入力されたポインタ値Ｐｔｒに基づいて、図４に示されるネクストゼロ変換テーブルを参照し、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）を出力する。  
そして、本実施形態において、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が書き込み対象を示すポインタ値として設定された場合、制御回路１０は、ネクストゼロポインタ値ｎｘｔＺｒが示す値をポインタ値として含む１つのメモリワードの全てのバイトアドレスに対して、ゼロデータが書き込まれる。
【００４１】
本実施形態のデータ復号化装置２は、上述のネクストゼロポインタ値ｎｘｔＺｒ（Ptr）を利用して、非ゼロデータを書き込む位置と次にゼロデータ書き込む位置（ネクストゼロポインタ値）とを比較しながら、解析結果に基づく値（レベル値）を、２次元に展開して、メモリの所定のアドレスに順次書き込む。
【００４２】
ここで、非ゼロデータを書き込む位置は、例えば、ポインタ値Ｐｔｒとランダッシュ値（第２のラン値）Ｒｎ’との和で示される。ランダッシュ値Ｒｎ’は、現在のポインタ値（８×８ブロック内での位置）と非ゼロデータを書き込む位置との間のゼロデータの個数を示す。以下、本実施形態においては、非ゼロデータを書き込む位置を示すポインタ値（第３のポインタ値）のことを、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）と呼ぶ。
【００４３】
そして、本実施形態のデータ復号化装置２は、例えば、以下の３つの書き込み方式を有する書き込み制御部２７と、それらの書き込み方式のいずれか１つを書き込み位置の比較結果に基づいて選択する書き込み方式選択部２４が、制御回路１０内に設けられている。
【００４４】
第１の書き込み方式は、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）がネクストゼロポインタ値ｎｘｔＺｒ（Ptr）と同じ値である場合に、選択手段２４によって選択される。この場合、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が、スキャン順序に従ったデータの書き込み対象となる現在のポインタ値として設定される。  
第１の書き込み方式において、所定のポインタ値（非ゼロポインタ値）に対応するバイトアドレスに非ゼロデータ（レベル値）が書き込まれる。さらに、非ゼロデータを書き込んだポインタ値を含んでいるメモリワードにおいて、非ゼロデータを書き込んだポインタ値を除いた残りのポインタ値に対応するバイトアドレスの全てに、ゼロデータが書き込まれる。つまり、第１の書き込み方式は、１つのメモリワード内の複数のバイトアドレスのそれぞれに、非ゼロデータとゼロデータとを同時に書き込む。  
第１の書き込み方式が選択された場合、書き込み制御部２７は、書き込み対象の１つのメモリワードにおいて、非ゼロデータが書き込まれるバイトアドレス及びゼロデータが書き込まれる複数のバイトアドレスが、全て有効になるように、バイトイネーブル信号Ｂｅを制御する。そのように制御されたバイトイネーブル信号Ｂｅが、メモリ３に出力される。
【００４５】
第２の書き込み方式は、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）がネクストゼロポインタ値ｎｘｔＺｒ（Ptr）より大きい場合に、選択手段２４によって選択される。この場合、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が、スキャン順序に従ったデータの書き込み対象となる現在のポインタ値として設定される。  
第２の書き込み方式において、入力されたポインタ値Ｐｔｒからネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が得られた場合、そのネクストゼロポインタ値ｎｘｔＺｒ（Ptr）を含んでいるメモリワード内のバイトアドレスの全てに、ゼロデータが書き込まれる。  
第２の書き込み方式が選択された場合、書き込み制御部２７は、データが書き込まれるメモリワード内の全てのバイトアドレスが有効になるように、バイトイネーブル信号Ｂｅを制御する。そのように制御されたバイトイネーブル信号Ｂｅが、メモリ３に出力される。
【００４６】
第３の書き込み方式は、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）がネクストゼロポインタ値ｎｘｔＺｒ（Ptr）より小さい場合に、選択手段２４によって選択される。この場合、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が、スキャン順序に従ったデータの書き込み対象となる現在のポインタ値として設定される。  
第３の書き込み方式において、所定のポインタ値（非ゼロポインタ値）に対応するバイトアドレスにのみ、非ゼロデータが書き込まれる。つまり、第３の書き込み方式では、１つのポインタに対して、非ゼロデータが書き込まれるのみで、ゼロデータの書き込みは実行されない。
【００４７】
第３の書き込み方式が選択された場合、書き込み制御部２７は、非ゼロデータを書き込むメモリワード内のバイトアドレスのみが有効となるように、バイトイネーブル信号Ｂｅを制御する。そのように制御されたバイトイネーブル信号Ｂｅは、メモリ３に出力される。
【００４８】
以上のように、本発明の実施形態に係るデータ復号化装置２は、データの復号化を制御する制御回路１０が、入力されたポインタ値Ｐｔｒを次にゼロデータを書き込む位置（ネクストゼロポインタ値ｎｘｔＺｒ（Ptr））に変換する変換部（ネクストゼロポインタ変換部）を有し、所定の２次元領域のデータ復号期間中に、非ゼロデータを書き込む位置（非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’））とゼロデータとを書き込む位置とを比較しながら、非ゼロ／ゼロデータを順次書き込んで行く。
【００４９】
そして、２つのポインタ値の比較結果に基づいて、上述の第１乃至第３の書き込み方式を選択して、非ゼロデータ又はゼロデータを所定のポインタ値に対応するアドレスに順次書き込んでいく。これによって、１次元の係数列が２次元の係数列に変換され、データ（例えば、画像データ）が復号化される。
【００５０】
このように本実施形態のデータ復号化装置においては、非ゼロデータの書き込み前に、８×８ブロックに対応するメモリの全バイトアドレスに対して、初期化のためのゼロデータ書き込みは実行する必要はない。
【００５１】
よって、本実施形態のデータ復号化装置によれば、データの復号化のためのデータ書き込み回数を削減できる。本実施形態のように、データの書き込み回数を削減できるため、画像データの高解像度化により画像処理速度が低下するのを抑制できる。また、これにともなって、本実施形態のデータ復号化装置によれば、データ復号化装置及びそれを含む装置の消費電力を削減できる。
【００５２】
したがって、本発明の実施形態に係るデータ復号化装置によれば、書き込み回数の削減及び消費電力の低減を実現できる。
【００５３】
（２）  動作  
以下、図５及び図６を用いて、本発明の実施形態に係るデータ復号化装置の動作について説明する。尚、ここでは、図２乃至図４も適宜参照して、説明する。
【００５４】
本実施形態において、４つの有効データが入力された場合を例に、本実施形態のデータ復号化装置の動作について、説明する。４つの有効データのラン値Ｒｎ及びレベル値Ｌｖの値（Ｒｎ，Ｌｖ）は、それぞれ、（０，３）、（２，１）、（３，５）及び（１０，２）とする。
【００５５】
はじめに、データ復号化装置２内の制御回路１１は、書き込みイネーブル信号Ｗｅを有効にする。これによって、データの書き込みが開始される。そして、データ復号化装置内の制御回路１０は、データ要求信号Ｎｘｔを有効にする。有効にされたデータ要求信号Ｎｘｔによって、１番目の有効データが、外部から入力されて、データの復号化のための書き込み動作が開始される。  本実施形態に係るデータ復号化装置２において、その初期動作としての８×８ブロックに対応したメモリ３に対するゼロデータの書き込みは実行されない。  
図５に示されるように、ポインタ値Ｐｔｒが、０（ゼロ）に初期化され、ランダッシュ値Ｒｎ’は、１番目の有効データが含むラン値Ｒｎの値が代入される（ＳＴ１）。ランダッシュ信号Ｒｎ’は、８×８ブロック内の現在の位置（ポインタ）と非ゼロデータの位置との間に存在するゼロデータの個数に対応している。よって、これから（次に）書き込まれる非ゼロデータの位置、つまり、非ゼロポインタ値は、ランダッシュ信号Ｒｎ’とポインタ値Ｐｔｒとの和（Ｐｔｒ＋Ｒｎ’）で示される。
【００５６】
続いて、非ゼロデータの位置（非ゼロポインタ値）が示す値と、これから（次に）ゼロデータを書き込む位置（ネクストゼロポインタ値）が示す値とが、制御回路１０によって、比較される（ステップＳＴ２）。より具体的には、ステップＳＴ２において、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値が、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値より大きいか否か判定される。
【００５７】
ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）は、ポインタ値Ｐｔｒの値の関数である。そして、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の値は、図４に示されるネクストゼロ変換テーブルに基づいて、制御回路１０に取得される。より具体的な例としては、制御回路１０内のネクストゼロポインタ変換部２３が、入力されたポインタ値Ｐｔｒを、その変換部２３が有する変換テーブルを用いて変換することで、実行される。  
これによって、算出された非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）と取得されたネクストゼロポインタ値ｎｘｔＺｒ（Ptr）との大きさの比較が、制御回路１０によって、実行される。
【００５８】
本実施形態では、１番目の有効データが入力された場合、ランダッシュ値Ｒｎ’は、１番目の有効データのラン値（本例では、“０”）に設定され、ポインタ値Ｐｔｒは“０”に設定されている。この場合、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）は“０”になる。また、図４に示される変換テーブルを参照すると、ポインタ値Ｐｔｒが“０”である場合、ネクストゼロポインタ値ｎｘｔＺｒ（０）は、“０”になる。  
そのため、本実施形態において、１番目の有効データが入力された場合、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値は、ネクストゼロポインタ値ｎｘｔＺｒ（０）が示す値と同じ大きさである。この場合、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が、今回の書き込みサイクルにおいて、スキャンの順序に沿った書き込み対象となる現在のポインタ値ｃｒＰｔｒとして、制御回路１０によって設定される（ステップＳＴ３）。この現在のポインタ値ｃｒＰｔｒとしての非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）は、制御回路１０内のジグザグスキャン変換部２６に取得される。
【００５９】
続いて、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）を示しているが、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の値と等しいか否か、制御回路１０によって判定される（ステップＳＴ４）。
【００６０】
上述のように、ポインタ値Ｐｔｒとランダッシュ値Ｒｎ’が両方とも“０”である場合、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）は“０”になる。また、ポインタ値Ｐｔｒが“０”である場合、ネクストゼロポインタ値ｎｘｔＺｒ（０）は“０”である。よって、今回の書き込みサイクルにおいて、制御回路１０は、現在のポインタ値ｃｒＰｔｒとしての非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値が、ネクストゼロポインタ値ｎｘｔＺｒ（０）が示す値と一致していると判定する。  
この場合、図６の（ａ）に示すように、複数のバイトアドレス（ポインタ値）から構成されているメモリワードにおいて、“０”のポインタ値Ｐｔｒに対応するバイトアドレス（メモリアドレス）に、１番目の有効データが含むレベル値Ｌｖ“３”が、制御回路１０によって書き込まれる（ＳＴ５Ａ）。尚、図３に示されるジグザグスキャン変換テーブルにおいて、“０”を示すポインタ値は、その変換テーブルが示すｘ−ｙ座標（ｘ，ｙ）の（０，０）に対応している。よって、メモリのアドレスの上位３ビットを示すｙ座標“０”と、メモリのアドレスの下位３ビットを示すｘ座標“０”とによって、非ゼロデータ（“３”）の書き込みの対象となるメモリのアドレスは、“００００００”であると示される。このように、変換テーブル内の１つのポインタ値から、１つのメモリアドレスが得られる。
【００６１】
また、本実施形態において、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）によって示される現在のポインタ値ｃｒＰｔｒの値が、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）と一致した場合、その一致したポインタを含んでいる１つのメモリワードにおいて、非ゼロデータ（有効データ）を所定のポインタ値に対応した１つのバイトアドレスに書き込むのと同時に、非ゼロデータが書き込まれたバイトアドレス除いた同一メモリワード内の残りのバイトアドレスに、ゼロデータが書き込まれる。
【００６２】
よって、現在のポインタ値としての非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）がネクストゼロポインタ値ｎｘｔＺｒ（Ptr）と一致した場合、図３及び図６の（ａ）に示す例のステップＳＴ５Ａにおいて、“０”のポインタ値を含んでいるメモリワードＭＷ０において、そのメモリワードＭＷ０内の他のポインタ“１”，“５”，“６”に対応する３つのバイトアドレスに、ゼロデータが書き込まれる。このゼロデータの書き込みは、３つのポインタに対して、非ゼロデータの書き込みと同時に実行される。
【００６３】
このゼロ／非ゼロデータの書き込みにおいて、制御回路１０から出力されるバイトイネーブル信号Ｂｅによって、現在のポインタｃｒＰｔｒ、つまり、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示すバイトアドレスが、書き込みの対象として有効にされると共に、そのポインタ値（Ｐｔｒ＋Ｒｎ’）（＝ｃｒＰｔｒ）を含んでいるメモリワード内の残りのバイトアドレスも書き込みの対象のアドレスとして、すべて有効にされる。このバイトイネーブル信号Ｂｅは、制御回路１０内の書き込み制御部２７によって生成される。
【００６４】
以下、ステップＳＴ３からステップＳＴ５Ａまでのフローに対応するデータの書き込みのことを、書き込み方式１（第１の書き込み方式）と呼ぶ。上述のように、現在のポインタとしての非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値が、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値と等しい場合、書き込み方式１が制御回路１０内の選択部２４によって選択される。そして、制御回路１０内の書き込み手制御部２７による制御によって、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）に対応するメモリのアドレスに、所定の非ゼロデータ（レベル値）が書き込まれ、この書き込みと同時に、非ゼロデータが書き込まれたポインタ値を含んでいるメモリワードに属する他の１以上のポインタ値に対応するメモリのアドレスに、ゼロデータが書き込まれる。
【００６５】
非ゼロデータ及びゼロデータが１つのメモリワードに対して書き込まれた後、制御回路１０は、現在のポインタｃｒＰｔｒの値をインクリメントする。これによって、ポインタ値Ｐｔｒは、現在のポインタ値ｃｒＰｔｒに“１”が加算された値ｎｘｔＰｔｒＡ（以下、更新ポインタ値ｎｘｔＰｔｒＡと呼ぶ）に更新される（ステップＳＴ６）。ステップＳＴ６において、更新ポインタ値（第１の更新ポインタ値）ｎｘｔＰｔｒＡの値は、現在のポインタ値としての非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）をインクリメントした値である。  
この更新ポインタ値ｎｘｔＰｔｒＡは、図２に示される制御回路１０からポインタレジスタ１２に出力される。ポインタレジスタ１２は、入力された更新ポインタ値ｎｘｔＰｔｒの値を新たなポインタ値Ｐｔｒの値として、保持する。
【００６６】
この後、制御部１０はデータ要求信号Ｎｘｔを有効にして、例えば、データ解析部１に対して、次の有効データを要求する。そして、制御回路１０に入力された次の有効データのラン値が、ランダッシュ値Ｒｎ’の更新値ｎｘｔＲｎ’に設定される（ステップＳＴ７）。以下、更新されたランダッシュ値ｎｘｔＲｎ’のことを、更新ランダッシュ値（第１の更新ランダッシュ値）ｎｘｔＲｎ’Ａと呼び、この更新ランダッシュ値ｎｘｔＲｎ’Ａが、次の書き込みサイクルに用いられるランダッシュ値Ｒｎ’として、設定される。
【００６７】
上述の動作を実行した後に、終了信号Ｅｎｄが有効、且つ、ポインタ値Ｐｔｒが６４以上であるか、判定される（ステップＳＴ８）。  
終了信号Ｅｎｄが有効であり、且つ、ポインタ値Ｐｔｒが６４以上であれば、８×８ブロックに対する書き込みが最後まで実行されたことを示しているので、データの書き込み処理が終了される。これに対して、終了信号Ｅｎｄが無効、又は、ポインタ値Ｐｔｒが６４より小さい場合、それは、８×８ブロックに対して書き込みが終了していないことを示している。よって、ここでは、ステップＳＴ２の処理が、再び実行される。
【００６８】
２番目に入力された有効データのラン値Ｒｎ及びレベル値Ｌｖは、（Ｒｎ，Ｌｖ）＝（２，１）である。よって、ポインタ値Ｐｔｒは、上述のステップＳＴ６おいて、“０”から“１”に更新されている。また、上述のステップＳＴ７において、ランダッシュ値Ｒｎ’は“０”から“２”に更新されている。  
この場合、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）は、“３”になる。また、ポインタ値ＰＴｒが“１”である場合、そのポインタ値Ｐｔｒの関数であるネクストゼロポインタ値ｎｘｔＺｒ（１）の値は“２”であると、制御回路１０（ネクストゼロポインタ変換部２３）によって、図４に示されるネクストゼロ変換テーブルの参照結果に基づいて、判定される。  
本実施形態において、２番目の有効データ（Ｒｎ，Ｌｖ）＝（２，１）が入力された場合、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値（“３”）は、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値（“２”）より大きくなる。  
このように、ステップＳＴ２による比較結果において、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値が、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値より大きいと判定された場合、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が、今回の書き込みサイクルにおいて、スキャンの順序に沿った書き込み対象となる現在のポインタ値ｃｒＰｔｒとして、設定される（ステップＳＴ９）。この現在のポインタ値ｃｒＰｔｒとしてのネクストゼロポインタ値ｎｘｔＺｒ（Ptr）は、制御回路１０内のジグザグスキャン変換部２６内に取得される。
【００６９】
現在のポインタ値ｃｒＰｔｒとしてのネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が“２”である場合、図３に示されるポインタ値“２”（ｘ＝０，ｙ＝１）に対応するバイトアドレス（“００１０００”）が、次にデータを書き込むアドレスとなる。尚、本例において、“１”のポインタ値に対応するバイトアドレスに対して、“０”のポインタ値に対応するバイトアドレスに対するデータの書き込みと同時に、ゼロデータが書き込まれている。  
よって、現在のポインタ値ｃｒＰｔｒとしてのネクストゼロポインタ値ｎｘｔＺｒ（Ptr）（“２”）に対応するメモリ３のバイトアドレスに、ゼロデータが書き込まれる（ステップＳＴ１０）。  
この際、制御回路１０（書き込み制御部２７）が出力するバイトイネーブル信号Ｂｅによって、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示すバイトアドレスが有効にされるだけでなく、そのポインタ値ｎｘｔＺｒ（Ptr）を含んでいるメモリワード内の他のバイトアドレスも有効にされる。それゆえ、本実施形態のステップＳＴ１０においては、図６の（ｂ）に示すように、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す１つのバイトアドレスだけでなく、そのバイトアドレス（ポインタ値）を含んでいるメモリワードＭＷ２の残りのバイトアドレス（ポインタ値）に対しても、ゼロデータが同時に書き込まれる。  
つまり、ステップＳＴ１０において、図６の（ｂ）に示すように、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示すバイトアドレスを含むメモリワードＭＷ１に対し、そのメモリワードＭＷ１が含んでいる全てのバイトアドレスに、ゼロデータが書き込まれる。  
図３及び図６の（ｂ）に示す例において、“２”のポインタ値Ｐｔｒを含むメモリワードＭＷ１は、“２”の他に、“４”、“７”及び“１３”の３つのポインタ値Ｐｔｒを含んでいるので、それらのポインタ値に対応する４つのバイトアドレスに、ゼロデータ（“０”）が書き込まれる。
【００７０】
ネクストゼロ変換テーブル内のネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値は、図３に示される例のようにポインタ値の順序でデータをスキャンする際に、あるメモリワードが含む複数のポインタ値（バイトアドレス）の中で、最初に到達するポインタを示している。また、８×８ブロックに対するデータのスキャン順序において、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）は、未だ書き込み対象となっていないポインタ値又はメモリワードを示しているとも換言できる。そして、このネクストゼロポインタ値ｎｘｔＺｒ（Ptr）は、その値を含んでいる１つのメモリワード内の複数のバイトアドレスの全てに、ゼロデータを書き込む位置（ポインタ）を示している。  
以下、ステップＳＴ９からステップＳＴ１０までのフローに対応するデータの書き込みのことを、書き込み方式２（第２の書き込み方式）と呼ぶ。  
上述のように、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値が、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値より大きい場合、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が現在のポインタ値ｃｒＰｔｒとして設定され、書き込み方式２が制御回路１０内の選択部２４によって選択される。そして、制御回路１０内の書き込み制御部２７による制御によって、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）に対応するメモリのアドレス及びネクストゼロポインタ値ｎｘｔＺｒ（Ptr）を含んでいるメモリワードに属する残りのポインタ値に対応するメモリのアドレスに、ゼロデータが書き込まれる。このように、書き込み方式２においては、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示すポインタ値を含むメモリワード内のバイトアドレスの全てに対して、ゼロデータが書き込まれる。
【００７１】
ステップＳＴ１０によって、１つのメモリワードが含む全てのバイトアドレス（ポインタ）に、ゼロデータが書き込まれた後、制御回路１０は、ランダッシュ値Ｒｎ’の値を、更新する（ステップＳＴ１１）。ステップＳＴ１１において、更新されたランダッシュ値ｎｘｔＲｎ’Ｂ（第２の更新ランダッシュ値）は、例えば、今回の書き込みサイクルで用いられたランダッシュ値Ｒｎ’からネクストゼロポインタ値ｎｘｔＺｒ（Ptr）を用いたことによって増加したポインタ値を減少させることで、得られる。この更新ランダッシュ値ｎｘｔＲｎ’Ｂは、次のゼロ／非ゼロデータの書き込みサイクルに用いられる値なので、今回の書き込みサイクルにおける当初のポインタ値Ｐｔｒから次の書き込みサイクルにおける当初のポインタ値（ｃｒＰｔｒ＋１）までの値が、ランダッシュ値Ｒｎ’に対する減少分の値として用いられる。上述のように、ランダッシュ値Ｒｎ’は“２”、今回の書き込みサイクルのポインタ値Ｐｔｒは“１”、そして、次の書き込みサイクルのポインタ値（ｃｒＰｔｒ＋１）は“３”である場合、更新されたランダッシュ値ｎｘｔＲｎ’ｂは、２−（２＋１−１）＝０になる。
【００７２】
これに続いて、制御回路１０は、ポインタ値Ｐｔｒの更新のために、現在のポインタ値ｃｒＰｔｒをインクリメントする（ステップＳＴ１２）。更新されたポインタ値（第２の更新ポインタ値）ｎｘｔＰｔｒＢの値は、ポインタレジスタ１２に保持される。ステップＳＴ１２において、更新ポインタ値ｎｘｔＰｔｒＢの値は、現在のポインタ値ｃｒＰｔｒとしてのネクストゼロポインタ値ｎｘｔＺｒ（Ptr）に“１”を加算した値である。よって、ここでは、更新ポインタ値ｎｘｔＰｔｒＢの値は、“３”になる。
【００７３】
ステップＳＴ１１及びステップＳＴ１２によって得られた更新ランダッシュ値ｎｘｔＲｎ’Ｂ及び更新ポインタ値ｎｘｔＰｔｒＢが、次のゼロ／非ゼロデータの書き込みサイクルにおいて、ポインタ値Ｐｔｒ及びランダッシュ値Ｒｎ’として、用いられる。  
そして、ステップＳＴ６における書き込み動作の終了判定が、再度行われる。
【００７４】
書き込み方式２を用いたゼロデータの書き込みの後、再度ステップ２において、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）の値とネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の値の大きさが比較される。
【００７５】
ここで、今回の書き込みサイクルにおいて、ランダッシュ値Ｒｎ’は“０”であり、ポインタ値Ｐｔｒは“３”であるので、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）の値は“３”である。また、ポインタ値Ｐｔｒが“３”を示すとき、ネクストゼロポインタ値ｎｘｔＺｒ（３）は、図４に示される変換テーブルを参照すると、“３”を示している。よって、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値とネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値は、同じ大きさになる。  
この場合は、書き込み方式１に該当するので、ステップＳＴ４において、４つのバイトアドレスを含むメモリワードに対して、２番目の有効データが含んでいるレベル値Ｌｖ（“１”）が、現在のポインタ値ｃｒＰｔｒとしての非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）に対応する１つのバイトアドレスに書き込まれ、残りの３つのバイトアドレスにゼロデータが同時に書き込まれる。  
よって、図３及び図６の（ｃ）に示されるように、“３”のポインタ値に対応するバイトアドレスに、“１”のレベル値が書き込まれ、それと同じメモリワードＭＷ２において、“８”、“１２”及び“１７”のポインタ値にそれぞれ対応する３つのバイトアドレスに“０”が書き込まれる。
【００７６】
そして、ステップＳＴ６及びステップＳＴ７において、現在のポインタ値ｃｒＰｔｒ及びランダッシュ値Ｒｎ’が、次の書き込みサイクルに用いる値にそれぞれ更新される。本実施形態において、３番目に入力される有効データのラン値Ｒｎは“３”であるので、ここでの更新ランダッシュ値ｎｘｔＲｎ’Ａは“３”になる。また、更新ポインタ値ｎｘｔＰｔｒは、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）がインクリメントされた値である“４”に、更新される。これらの更新値ｎｘｔＲｎ’Ａ，ｎｘｔＰｔｒが、次の書き込みサイクルのランダッシュ値Ｒｎ’及びポインタ値Ｐｔｒの値として、用いられる。
【００７７】
ステップ６を経由して、ステップ２による比較が実行される。ここで、３番目の有効データの書き込みにおいて、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）は“７”である。また、ポインタ値Ｐｔｒは“４”なので、ネクストゼロポインタ値ｎｘｔＺｒ（４）は、“９”である。よって、ステップＳＴ２において、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）がネクストゼロポインタ値ｎｘｔＺｒ（Ptr）より小さいと、判定される。そして、非ゼロポインタ値（ｃｒＰｔｒ＋Ｒｎ’）が、現在のポインタ値ｃｒＰｔｒとして、設定される（ＳＴ３）。この現在のポインタ値ｃｒＰｔｒが、ジグザグスキャン変換部２６に取得される。
【００７８】
そして、ステップＳＴ４において、現在のポインタ値としての非ゼロポインタ値（ＣｒＰｔｒ＋Ｒｎ’）が、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）と等しいか否か判定される。上述のように、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）は“７”、ネクストゼロポインタ値ｎｘｔＺｒ（４）は“９”なので、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）の値とネクストゼロポインタ値ｎｘｔＺｒ（４）の値は、等しくない。  
つまり、ステップＳＴ２及びステップ４における比較結果によって、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値が、ネクストゼロポインタ値ｎｘｔＺｒ（４）が示す値よりも小さいと、判定される。
【００７９】
このように、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値がネクストゼロポインタ値ｎｘｔＺｒ（４）より小さい場合、ステップＳＴ５Ｂによるデータの書き込みが、制御回路１０内の選択手段２３よって選択され、制御回路１０内の書き込み制御部２７によって実行される。ステップＳＴ５Ｂにおいては、現在のポインタｃｒＰｔｒとしての非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）に対応するバイトアドレスのみに、所定のレベル値Ｌｖが書き込まれる（ステップＳＴ５Ｂ）。  
図３及び図６の（ｄ）に示されるように、書き込み方式２によって一度ゼロデータが全体に書き込まれたメモリワードＭＷ１において、３番目の有効データのレベル値Ｌｖ“５”が、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値“７”に対応するバイトアドレスに、書き込まれる。
【００８０】
この際、制御回路１０（書き込み制御部２７）が出力するバイトイネーブル信号Ｂｅによって、ポインタ値に対応するバイトアドレスのみが有効（書き込み可能）にされ、そのポインタ値を含んでいるメモリワード内の残りのバイトは無効（書き込み不可能）にされている。それゆえ、ステップ５Ｂにおけるデータの書き込みでは、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）に対応する１つのメモリワード内の１つのバイトアドレスに対してのみ、非ゼロデータが書き込まれ、他のバイトアドレスに対するゼロデータの書き込みは実行されない。
【００８１】
尚、図３及び図６の（ｄ）に示されるスキャン方式によると、“１”の非ゼロデータが書き込まれたポインタ値（バイトアドレス）から“５”の非ゼロデータが書き込まれたポインタ値（バイトアドレス）までの間に、３つのポインタ値を経由するが、それらの３つのポインタ値に対応したバイトアドレスには、上述の書き込み方式１及び書き込み方式２に該当したデータの書き込み時に、データ（ゼロデータ）が既に書き込まれている。
【００８２】
以下、ステップＳＴ４からステップＳＴ５−１Ｂまでのフローによるデータの書き込みを、“書き込みパターン３（第３の書き込みパターン）”と呼ぶ。
【００８３】
以下、ステップＳＴ３からステップＳＴ５Ｂまでのフローに対応するデータの書き込みのことを、書き込み方式３（第３の書き込み方式）と呼ぶ。上述のように、現在のポインタとしての非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値が、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値より小さい場合に、書き込み方式１が制御回路１０内の選択部２４によって選択される。そして、書き込み制御部２７によって、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）に対応するメモリのアドレスに、所定の非ゼロデータ（レベル値）が書き込まれる。但し、この場合、非ゼロデータが書き込まれたポインタ値を含んでいるメモリワード内の他のバイトアドレスには、データが書き込まれないように制御されている。
【００８４】
書き込み方式３を用いて３番目の有効データを書き込んだ後、書き込み方式１を用いてデータを書き込んだ後と同様に、ステップＳＴ６，ＳＴ７において、ランダッシュ値Ｒｎ’及びポインタ値Ｐｔｒが、更新ランダッシュ値ｎｘｔＲｎ’Ａ及び更新ポインタ値ｎｘｔＰｔｒＡに、それぞれ更新される。ここでは、次に入力される４番目の有効データのラン値Ｒｎは、“１０”であるため、ランダッシュ値Ｒｎ’（＝ｎｘｔＲｎ’Ａ）は“１０”に更新される。ポインタ値Ｐｔｒ（＝ｎｘｔＰｔｒＡ）は、現在のポインタ値ｃｒＰｔｒとしての非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）をインクリメントすることによって、“８”に更新される。
【００８５】
ステップＳＴ６を経由して、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値とネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値が、再度比較される（ステップＳＴ２）。今回の書き込みサイクルにおいて、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）は“１８”であり、ポインタ値Ｐｔｒは“８”であり、ネクストゼロポインタ値ｎｘｔＺｒ（８）は“９”である。よって、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値は、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の値より大きいので、ネクストゼロポインタ値ｎｘｔＺｒ（８）の値“９”が、書き込み対象となる現在のポインタ値ｃｒＰｔｒとして、設定される（ステップＳＴ９）。
【００８６】
この場合は、書き込み方式２に該当するため、図６の（ｅ）に示すように、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）に対応するバイトアドレスとそのポインタ値ｎｘｔＺｒ（Ptr）を含むメモリワードＭＷ３内の残りの３つバイトアドレスに対して、同時にゼロデータが書き込まれる（ステップＳＴ１０）。
【００８７】
このネクストゼロポインタ値ｎｘｔＺｒ（Ptr）を利用したゼロデータ書き込みの後、ランダッシュ値Ｒｎ’とポインタ値Ｐｔｒがそれぞれ更新される（ステップＳＴ１１，ＳＴ１２）。本実施形態では、ステップＳＴ１１における更新ランダッシュ値ｎｘｔＲｎ’Ｂは、“１０−（９−７＋１）＝７”となり、ステップＳＴ１２における更新ポインタ値ｎｘｔＰｔｒＢは、ネクストゼロポインタ値ｎｘｔＺｒ（８）がインクリメントされた値なので、“１０”となる。
【００８８】
更新されたランダッシュ値Ｒｎ’及びポインタ値Ｐｔｒに基づいて、ステップＳＴ２による判定が実行される。今回の書き込みサイクルにおいて、ポインタ値Ｐｔｒが“１０”であり、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）の値は“１７”である。また、ネクストゼロポインタ値ｎｘｔＺｒ（１０）は、図４に示される変換テーブルにおいて、“１０”が示されている。よって、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値が、ネクストゼロポインタ値ｎｘｔＺｒ（１０）が示す値より大き。そのため、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が現在のポインタ値ｃｒＰｔｒに設定され（ステップＳＴ９）、書き込み方式２を用いたデータの書き込みが実行される。  
よって、図６の（ｆ）に示すように、現在のポインタ値ｃｒＰｔｒとしてのネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示すバイトアドレスとそのポインタ値を含むメモリワードＭＷ４内の残りの３つバイトに対して、同時にゼロデータが書き込まれる（ステップＳＴ１０）。
【００８９】
そして、書き込み方式２を用いたデータの書き込みの後、ランダッシュ値Ｒｎ’及びポインタ値Ｐｔｒが更新される（ステップＳＴ１１，ＳＴ１２）。ランダッシュ値Ｒｎ’の更新値ｎｘｔＲｎ’Ｂは“７−（１０＋１−１０）＝６”になり、現在のポインタｃｒＰｔｒの更新値ｎｘｔＰｔｒＢは“１０＋１＝１１”になる。
【００９０】
さらに、ステップＳＴ２において、更新されたポインタ値Ｐｔｒ及びランダッシュ値Ｒｎ’に基づいて、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値とネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の値とが比較される。  
ここでは、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）の値は、“１７”である。また、ポインタ値Ｐｔｒが“１１”であるとき、ネクストゼロポインタ値ｎｘｔＺｒ（１１）は、図４の変換テーブルに示されるように、“１４”である。
【００９１】
この場合においても、図６の（ｅ）及び（ｆ）を用いて説明した場合と同様に、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）がネクストゼロポインタ値ｎｘｔＺｒ（Ptr）よりも大きいので、書き込み方式２が用いられる。  
よって、図６の（ｇ）に示すように、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値を含むメモリワードＭＷ５に属する全バイトアドレスに対して、ゼロデータが書き込まれる（ステップＳＴ１０）。尚、メモリワードＭＷ５に到達するまでの間に経由する各ポインタ値に対しては、データが既に書き込まれているので、今回の書き込みサイクルにおいて、それらのポインタ値に対応するバイトアドレスに対して、データの書き込みは生じない。
【００９２】
ステップＳＴ１０におけるゼロデータの書き込みの後、ステップＳＴ１１及びステップＳＴ１２において、ランダッシュ値Ｒｎ’及びポインタ値Ｐｔｒの更新がそれぞれ実行される。更新ランダッシュ値ｎｘｔＲｎ’Ｂは、“６−（１４＋１−１１）＝２”となり、更新ポインタ値ｎｘｔＰｔｒＢは、“１５”になる。これらの値ｎｘｔＲｎ’Ｂ，ｎｘｔＰｔｒＢが、次の書き込みサイクルにおいて、ランダッシュ値Ｒｎ’及びポインタ値Ｐｔｒとして、それぞれ用いられる。
【００９３】
そして、ステップＳＴ２により、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値が、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値より大きいか否か、比較される。今回の書き込みサイクルにおいて、ポインタ値Ｐｔｒは“１５”であり、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）は“１７”であり、ネクストゼロポインタ値ｎｘｔＺｒ（１５）は“１６”である。このため、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が、ネクストゼロポインタ値ｎｘｔＺｒ（１５）よりも大きい。よって、ネクストゼロポインタ値ｎｘｔＺｒ（１５）が示す値が、現在のポインタ値ｃｒＰｔｒに設定される（ステップＳＴ９）。
【００９４】
そして、図６の（ｈ）に示されるように、書き込み方式２を用いて、ネクストゼロポインタ値ｎｘｔＺｒ（１５）が示す値“１６”を含むメモリワードＭＷ６内の全てのバイトアドレスに対して、ゼロデータが書き込まれる。
【００９５】
この後、ステップＳＴ１１及びステップＳＴ１２において、ランダッシュ値Ｒｎ’及びポインタ値Ｐｔｒの更新が、それぞれ実行される。ランダッシュ値Ｒｎ’の更新値ｎｘｔＲｎ’Ｂは、“２−（１６−１５＋１）＝０”となる。また、ポインタ値Ｐｔｒの更新値ｎｘｔＰｔｒＢは、“１７”になる。
【００９６】
これに続いて、ステップＳＴ２において、更新及び再設定されたポインタ値Ｐｔｒ及びランダッシュ値Ｒｎ’に基づいて、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）及びネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の大小が比較される。  
ここで、今回の書き込みサイクルにおいて、ポインタ値Ｐｔｒは“１７”、ランダッシュ値Ｒｎ’は“０”なので、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）は、“１７”になる。ポインタ値ＰＴＲが“１７”のとき、ネクストゼロポインタ値ｎｘｔＺｒ（１７）は、図４に示される変換テーブルを参照すると、“２０”を示している。よって、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値が、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値よりも大きい。
【００９７】
それゆえ、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値“１７”が、現在のポインタｃｒＰｔｒの値として、設定される（ステップＳＴ３）。また、ここでは、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）はネクストゼロポインタ値ｎｘｔＺｒ（１７）の値と等しくと、ステップＳＴ４において、判定される。したがって、書き込み方式３を用いて、非ゼロデータのみ書き込みが、１つのバイトアドレスに対して、実行される。
【００９８】
よって、図６の（ｉ）に示すように、メモリワードＭＷ３内の非ゼロポインタ値が示すバイトアドレスに、“２”のレベル値Ｌｖが書き込まれる。この際、書き込み方式３が用いられているので、そのメモリワードＭＷ３において、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）に対応するバイトアドレスを除いた他のバイトアドレスに対しては、データの書き込みは実行されない。
【００９９】
この後、ステップＳＴ６，ＳＴ７において、ランダッシュ値Ｒｎ’及びポインタ値Ｐｔｒが更新される。  
図６の（ｈ）で示されたレベル値Ｌｖ（“２”）の書き込みは、本実施形態において、最後の有効データの書き込みである。よって、終了信号ＥＮＤは有効になる。
【０１００】
有効データが無くなった後に、データが書き込まれていない残りの領域（ワード又はバイト）に対するゼロデータの書き込みは、例えば、終了信号Ｅｎｄが有効である場合に、制御回路１０が、ラン値Ｒｎの値が６４以上の値になるように、ステップＳＴ７において設定し、ステップＳＴ８による判定からステップＳＴ１３に移行することによって、実行される。また、本実施形態においては、明示的な終了信号ＥＮＤによらずに、最後の有効データ入力された後にデータ要求信号Ｎｘｔに基づいて入力されるデータにおいて、ラン値Ｒｎが“６４”以上或いはレベル値Ｌｖが“０”などのように、ラン値Ｒｎ及びレベル値Ｌｖが特徴的な値を示すデータが入力されるように、予め規定する。そして、そのような特徴的な信号が入力された場合に、制御回路１０が、その信号を有効状態の終了信号Ｅｎｄと同様であると解釈し、データが書き込まれていない残りのメモリワード及びバイトに対して、ゼロデータが書き込まれるように、制御してもよい。
【０１０１】
本実施形態において、４つの有効データの全てが書き込まれた後に、９個のメモリワードが未書き込みなので、その９個のメモリワードのそれぞれに対して、ゼロデータがメモリワード単位で順次書き込まれる。
【０１０２】
以上のように、本実施形態のデータ復号化装置においては、１つのメモリワードに対する書き込み方式１を用いたゼロ／非ゼロデータの同時書き込みが２回、１つのメモリワードに対する書き込み方式２を用いたゼロデータの書き込みが５回、及び、１つのバイトアドレスに対する書き込み方式３を用いた非ゼロデータの書き込みが２回、実行される。また、全ての有効データを書き込んだ後に、８×８ブロック内の未書き込みの９個のメモリワードに対して、１回ずつのデータ書き込みが実行される。よって、全有効データの書き込み後のゼロデータ書き込みが、９回実行される。したがって、本実施形態のデータ復号化装置では、合計１８回のデータ書き込みが実行される。これによって、１次元の係数列が２次元の係数列に変換され、データ（例えば、画像データ）が復号化される。
【０１０３】
一般的なデータ復号化装置においては、初期動作としてゼロデータの書き込みが、８×８ブロックに対応するメモリに実行された後に、非ゼロデータの書き込みが実行される。その初期動作としてのゼロデータの書き込みは、ｙ座標（上位アドレス）の８個のメモリワードに対して、ｘ座標（下位アドレス）を２つの領域（ｘ＝０〜３，４〜７）に分けて、メモリワード単位で実行される。よって、ゼロデータ書き込みは、１６回実行される。この後、上述の例と同様に、４つの有効データとして（０，３）、（２，１）、（３，５）及び（１０，２）が入力された場合、４回の非ゼロデータ書き込みが、“０”が書き込まれたバイトアドレスに再度書き込むように、実行される。それゆえ、このような一般的なデータ復号化装置では、２０回のゼロ／非ゼロデータの書き込みが実行される。  
上述のように、本実施形態の装置２においては、ゼロ／非ゼロデータの書き込みの回数は１８回である。それゆえ、本実施形態における装置２によるデータ書き込み回数は、一般的な例の書き込み回数よりも、２回削減されている。  
したがって、本実施形態によれば、データの書き込みの回数を削減できる。  
これに伴って、データの書き込み回数を削減できることによって、画像データの復号化のための処理速度を高速化できる。  
尚、本実施形態においては、４つの有効データが入力された場合について、説明した。有効データの数が３個以下、又は、５個以上になった場合においても、データの書き込みの回数は、削減できる。また、有効データの配列に依存して、ゼロ／非ゼロデータの書き込み回数は変動するが、本実施形態に係るデータ復号化装置を用いた場合において、そのゼロ／非ゼロデータの書き込み回数は、同様の有効データが入力された場合における上述の一般的なデータ復号化装置のデータの書き込みの回数より多くはならない。
【０１０４】
また、データの書き込み回数が削減されることに伴って、データの書き込みに用いる電圧及び電流を削減できる。  
したがって、本発明の実施形態によれば、消費電力を低減できる。
【０１０５】
画像データが高解像度になると８×８ブロックの数は増大するので、本発明の実施形態のデータ復号化装置によるデータの書き込み回数の削減、それに伴う消費電力の低減や画像処理の高速化などの効果は、より大きくなる。
【０１０６】
以上のように、本発明の実施形態に係るデータ復号化装置は、データの書き込み回数の削減及び消費電力の低減を実現できる。
【０１０７】
（３）  構成例  
図７乃至９を用いて、本発明の実施形態におけるデータ復号化装置の内部構成の一例について、説明する。尚、図１乃至６を用いて説明した構成及び信号と同じ要素については、同じ符号を付し、詳細な説明は必要に応じて行う。
【０１０８】
図７は、データ復号化装置２内の第１の制御回路１０の内部構成の一例を示している。
【０１０９】
上述のように、図７に示される制御回路１０は、主要な構成要素として、ランダッシュ生成部２１、ネクストゼロポインタ変換部２３、ジグザグスキャン変換部２６、書き込み制御部２７及び書き込み方式選択部２４を備えている。
【０１１０】
制御回路１０内のＡＮＤゲート２０は、データ要求信号Ｎｘｔを出力する。データ要求信号Ｎｘｔは、制御信号ＷｒＬｖと書き込みイネーブル信号Ｗｅとの演算結果（論理和）により生成される。制御信号ＷｒＬｖについては、後述する。  
データ要求信号Ｎｘｔは、制御信号ＷｒＬｖと書き込みイネーブル信号Ｗｅの両方が“１（Ｈ：high）”レベルを示す場合に、“１（Ｈ）”レベルを示し、それ以外の論理状態の場合には、“０（Ｌ：low）”レベルを示す。データ要求信号Ｎｘｔが“１（Ｈ）”レベルを示す場合に、有効データが制御回路１０内に入力される。
【０１１１】
制御回路１０内に設けられたランダッシュ生成部２１は、ランダッシュ信号Ｒｎ’を生成する。このランダッシュ生成部２１内には、上述の第２の書き込み方式を用いてデータを書き込んだサイクルの次のサイクルで使用されるランダッシュ値（更新ランダッシュ値）ｎｘｔＲｎ’Ｂの値を格納するレジスタと、その出力を制御する回路が含まれる。
【０１１２】
図７に示されるランダッシュ生成部２１の構成例において、ランダッシュ信号Ｒｎ’は、入力された有効データが含んでいるラン値Ｒｎ、書き込みイネーブル信号Ｗｅ、ＡＮＤゲート２０の出力信号（データ要求信号Ｎｘｔ）及びネクストランダッシュ信号ｎｘｔＲｎ’に基づいて、生成される。
【０１１３】
ラン値Ｒｎは、生成部２１内の第１のセレクタ２１０の一方の入力端子に、入力される。このセレクタ２１０の他方の入力端子には、生成部２１内のレジスタ２１１を経由して、更新ランダッシュ値ｎｘｔＲｎ’Ｂが入力される。更新ランダッシュ値ｎｘｔＲｎ’Ｂは、ランダッシュ信号Ｒｎ’の値から、書き込み方式２を用いることによって増加したポインタ値（ｃｒＰｔｒ＋１−Ｐｔｒ）ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）を減少させた値である。尚、第２の書き込み方式を用いた場合の現在のポインタ値ｃｒＰｔｒは、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が設定されている。レジスタ２１１は、書き込みサイクルに応じて順次更新されていくランダッシュ値ｎｘｔＲｎ’を、保持する。セレクタ２１０は、信号Ｎｘｔ’を制御信号として、ラン値Ｒｎ又は更新ランダッシュ値ｎｘｔＲｎ’のいずれか一方を選択する。その選択された信号がランダッシュ値Ｒｎ’として出力される。例えば、制御信号Ｎｘｔ’が“１”レベルを示すとき、ラン値Ｒｎが選択され、制御信号Ｎｘｔ’が“０”レベルを示すとき、更新ランダッシュ値ｎｘｔＲｎ’が選択される。
【０１１４】
セレクタ２１０に対する制御信号（第１の制御信号）Ｎｘｔ’は、生成部２１内の第２のセレクタ２１２と第２のレジスタ２１３とを用いて、生成される。
【０１１５】
セレクタ２１２の入力端子には、データ要求信号Ｎｘｔと制御信号Ｎｘｔ’とがそれぞれ入力される。セレクタ２１２の制御信号には、書き込みイネーブル信号Ｗｅが用いられる。セレクタ２１２は、書き込みイネーブル信号Ｗｅに基づいて、データ要求信号Ｎｘｔ及び制御信号Ｎｘｔ’のうちいずれか一方を選択する。例えば、書き込みイネーブル信号Ｗｅが“１”レベルを示す場合、データ要求信号Ｎｘｔがセレクタ２１２によって選択され、書き込みイネーブル信号Ｗｅが“０”レベルを示す場合、信号Ｎｘｔ’が選択される。そして、選択された信号Ｎｘｔ’は、セレクタ２１０の制御信号として、セレクタ２１０に出力される。この結果として、“１”レベルの書き込みイネーブル信号Ｗｅによって、データ要求信号Ｎｘｔがセレクタ２１０に対する制御信号として選択され場合、ラン値Ｒｎが次の書き込みサイクルに用いるランダッシュ値Ｒｎ’として、選択される。この一方で、“０”レベルの書き込みイネーブル信号Ｗｅによって、信号Ｎｘｔ’がセレクタ２１０に対する制御信号として選択され場合、更新されたランダッシュ値ｎｘｔＲｎ’が次の書き込みサイクルに用いるランダッシュ値Ｒｎ’として、選択される。  
セレクタ２１２によって選択された信号は、レジスタ２１３に入力される。レジスタ２１３は、書き込みサイクルに応じて順次入力される信号を新たな信号Ｎｘｔ’として、保持する。また、信号Ｎｘｔ’は、レジスタ２１３からセレクタ２１２の入力端子の１つにループされて、入出力される。
【０１１６】
尚、ランダッシュ生成部２１内に設けられたレジスタ２１１，２１３は、例えば、入力クロックに同期して動作する。
【０１１７】
ランダッシュ生成部２１によって生成されたランダッシュ信号Ｒｎ’は、加算器（２２に入力される。この加算器２２には、ポインタレジスタ１２から出力されたポインタ値Ｐｔｒも入力される。加算器２２は、ポインタ値Ｐｔｒとランダッシュ値Ｒｎ’とが加算される。これによって、上述の非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が生成される。
【０１１８】
また、ポインタ値Ｐｔｒは、加算器２２に入力されると共に、ネクストゼロポインタ変換部２３に入力される。これによって、ネクストゼロポインタ変換部２３は、図４に示されたネクストゼロポインタ変換テーブルに基づいて、入力されたポインタ値Ｐｔｒに対応するように、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）を出力する。
【０１１９】
非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）及びネクストゼロポインタ値ｎｘｔＺｒ（Ptr）は、書き込み方式選択部２４に出力される。書き込み方式選択部２４は、２つのコンパレータ（比較器）２４Ａ，２４Ｂを有している。非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）及びネクストゼロポインタ値ｎｘｔＺｒ（Ptr）は、２つのコンパレータ（比較器）２４Ａ，２４Ｂにそれぞれ入力される。
【０１２０】
コンパレータ２４Ａ，２４Ｂは、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値及びネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値の大きさを比較する。
【０１２１】
コンパレータ２４Ａは、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）及びネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の比較結果に基づいて、制御信号（第１の書き込み制御信号）ＷｒＬｖを出力する。この制御信号ＷｒＬｖは、“１（Ｈ）”レベルと“０（Ｌ）”レベルの２つの状態を示す。例えば、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値が、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値以下の場合、制御信号ＷｒＬｖは“１”レベルを示す。
【０１２２】
一方、コンパレータ２４Ｂは、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）及びネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の比較結果に基づいて、制御信号（第２の書き込み制御信号）ＷｒＺｒを出力する。この制御信号ＷｒＺｒは、“１（Ｈ）”レベルと“０（Ｌ）”レベルの２つの状態を示す。例えば、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す値が、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）が示す値以上の場合、制御信号ＷｒＬｖは“１”レベルを示す。
【０１２３】
また、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）及びネクストゼロポインタ値ｎｘｔＺｒ（Ptr）は、セレクタ（第３のセレクタ）２５に入力される。セレクタ２５は、制御信号ＷｒＬｖを制御信号として用いて、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）及びネクストゼロポインタ値ｎｘｔＺｒ（Ptr）のうちいずれか一方を選択して、出力する。セレクタ２５は、例えば、制御信号ＷｒＬｖが“１”レベルを示す場合、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）を選択し、制御信号ＷｒＬｖが“０”を示す場合、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）を選択する。これによって、セレクタ２５の出力が現在のポインタ値ｃｒＰｔｒとして、ジグザグスキャン変換部２６に出力される。つまり、セレクタ２５の動作は、図５のステップＳＴ３及びステップ９に対応する。
【０１２４】
ジグザグスキャン変換部２６は、取り込んだ現在のポインタ値ｃｒＰｔｒをメモリ３のアドレスに変換する変換テーブルを有している。上述のように、その変換テーブルＺＺＣＯＮＶ（crPtr）は、図４に示されている。図４に示される例の変換テーブルに基づいて、現在のポインタ値ｃｒＰｔｒに対応したメモリ３のアドレス信号Ａｄｄｒを出力する。アドレス信号Ａｄｄｒは、メモリ３に入力されると共に、書き込み制御部２７に入力される。
【０１２５】
書き込み制御部２７は、書き込みデータ生成手段２７Ａとバイトイネーブル信号生成手段２７Ｂとを有する。
【０１２６】
書き込みデータ生成手段２７Ａには、アドレス信号Ａｄｄｒが入力されるとともに、制御信号ＷｒＬｖ及びレベル値Ｌｖが入力される。書き込みデータ生成手段２７Ａは、入力された制御信号ＷｒＬｖに基づいて、書き込み対象のアドレス信号Ａｄｄｒが示す１つのメモリワード（バイトアドレス）に書き込むゼロ／非ゼロデータを生成する組合せ回路である。
【０１２７】
書き込みデータ生成手段２７Ａは、例えば、図８に示されるデータ変換テーブルを有する。図８に示される変換テーブルに示されるように、制御信号ＷｒＬｖが“１（Ｈ）”レベルを示す場合、書き込みデータ生成手段２７Ａは、図８に示される変換テーブル内のバイトアドレスの下位２ビットに対応する１つのビット０（00）〜３（11）のそれぞれに、レベル値Ｌｖを出力し、下位２ビットに対応する残りの３つのビットに０を出力する。これによって、１つのメモリワード内の１つのポインタ値（非ゼロポインタ値）に対応するバイトアドレスに、非ゼロデータが出力される。また、そのポインタ値を含むメモリワード内の残りのポインタ値に対応するバイトアドレスに、ゼロデータが出力される。すなわち、“１”レベルの制御信号ＷｒＬｖによって生成されたゼロ／非ゼロデータは、書き込み方式１又は書き込み方式３で用いられるデータである。
【０１２８】
一方、制御信号ＷｒＬｖが“０（Ｌ）”レベルを示す場合、書き込みデータ生成手段２７Ａは、図８に示される変換テーブルにおいて、全てのバイトアドレスの下位２ビットにゼロを出力する。これによって、１つのメモリワード内の全てのポインタ値に対応するバイトアドレスに、ゼロデータが出力される。すなわち、“０”レベルの制御信号ＷｒＬｖによって生成されたゼロデータは、書き込み方式２で用いられるデータである。
【０１２９】
バイトイネーブル信号生成手段２７Ｂは、アドレス信号Ａｄｄｒが入力されると共に、制御信号ＷｒＺｒが入力される。バイトイネーブル信号生成手段２７Ｂは、制御信号ＷｒＺｒに基づいて、書き込み対象のアドレス信号Ａｄｄｒが示す１つのメモリワード又は１つのバイトアドレスを有効（書き込み可能）にするバイトイネーブル信号を生成する組合せ回路である。  
バイトイネーブル信号生成手段２７Ｂは、例えば、図９に示される変換テーブルを有する。
【０１３０】
図９に示される変換テーブルに示されるように、バイトアドレスが６４未満、且つ、制御信号ＷｒＺｒが“０（Ｌ）”レベルを示す場合、バイトイネーブル信号生成手段２７Ｂは、図９に示される変換テーブル内におけるバイトアドレスの下位２ビットに対応する位置０（00）〜３（11）のそれぞれ１つに、“１”を出力する。これによって、１つのメモリワード内に含まれる複数のバイトアドレス（ポインタ値）において、“１”が出力された下位２ビットを含むバイトアドレスのみが、書き込み可能になるように制御される。この制御は、主に、書き込み方式３で用いられる。
【０１３１】
バイトアドレスが６４未満、且つ、ゼロ書き込み信号ＷｒＺｒが“１（Ｈ）”レベルを示す場合、バイトイネーブル信号生成手段２７Ｂは、図９に示される変換テーブルにおいて、１つのメモリワード内の全てのバイトアドレスの下位２ビットに対応する位置に、“１”を出力する。これによって、１つのメモリワード内のバイトアドレスの全てが、書き込み可能になるように制御される。すなわち、“１”レベルの制御信号ＷｒＺｒによって、書き込み方式１及び書き込み方式２で用いられるゼロデータの書き込みが、制御される。
【０１３２】
バイトアドレスが６４以上の時、バイトイネーブル信号生成手段２７Ｂは、図９に示される変換テーブルにおいて、メモリワード内の全てのバイトアドレスの下位２ビットに対応する位置に“０”を出力する。これによって、メモリワード内の全てのバイトアドレスに対して、データが書き込みまれないように制御される。
【０１３３】
このように、非ゼロポインタ値がネクストゼロポインタ値ｎｘｔＺｒ（Ptr）と同じ大きさの場合、制御信号ＷｒＬｖ及び制御信号ＷｒＺｒの両方が、“１”レベルを示す。これらの信号ＷｒＬｖ，ＷｒＺｒによって、１つのメモリワードが含んでいる複数のバイトアドレスにおいて、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）に対応する１つのバイトアドレスに非ゼロデータ（レベル値）が書き込まれ、そのバイトアドレスを除く残りのアドレスにゼロデータが書き込まれる。つまり、選択部２４が出力する“１”レベルの制御信号ＷｒＬｖと“１”レベルの制御信号ＷｒＺｒによって、第１の書き込み方式が実行される。  
非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）がネクストゼロポインタ値ｎｘｔＺｒ（Ptr）以上の値を示す場合、制御信号ＷｒＬｖは、“０”レベルを示し、制御信号ＷｒＺｒは、“１”レベルを示す。これらの信号ＷｒＬｖ，ＷｒＺｒによって、１つのメモリワードが含んでいる複数のバイトアドレスにおいて、ネクストゼロポインタ値ｎｘｔＺｒ（Ptr）及び残りの他のバイトアドレスに、ゼロデータが書き込まれる。つまり、選択部２４が出力する“０”レベルの制御信号ＷｒＬｖと“１”レベルの制御信号ＷｒＺｒによって、第２の書き込み方式が実行される。  
また、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）がネクストゼロポインタ値ｎｘｔＺｒ（Ptr）以上の値を示す場合、制御信号ＷｒＬｖは、“１”レベルを示し、制御信号ＷｒＺｒは、“０”レベルを示す。これらの信号ＷｒＬｖ，ＷｒＺｒによって、１つのメモリワードが含んでいる複数のバイトアドレスにおいて、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）が示す１つのバイトアドレスに、非ゼロデータ（レベル値）が書き込まれる。つまり、選択部２４が出力する“１”レベルの制御信号ＷｒＬｖと“０”レベルの制御信号ＷｒＺｒによって、第３の書き込み方式が実行される。  
以上のように、書き込み方式選択部２４は、非ゼロポインタ値（Ｐｔｒ＋Ｒｎ’）及びネクストゼロポインタ値ｎｘｔＺｒ（Ptr）の比較結果に基づいて、２つの制御信号ＷｒＬｖ，ＷｒＺｒを出力する。その比較結果を反映した２つの制御信号ＷｒＬｖ，ＷｒＺｒの信号レベルに応じて、書き込み制御回路２７が有する３つの書き込み方式の中から１つの書き込み方式が、選択される。よって、図７に示される書き込み方式選択部２４及び書き込み制御部２７の構成、それらの入出力信号による書き込み動作の制御によれば、回路の簡素化に貢献できる。
【０１３４】
尚、上述のように、制御信号ＷｒＬｖは、ＡＮＤゲート２０の入力端子に入力される。制御信号ＷｒＬｖが“１”又は“０”レベルを示すのに対応して、データ要求信号Ｎｘｔは、“１”レベル又は“０”レベルに遷移する。“１”レベルの制御信号ＷｒＬｖは、１つの有効データの書き込みが完了するのと実質的に等しい。よって、この場合に、データ要求信号Ｎｘｔが“１”レベルとなり、次の有効データの入力が要求される。
【０１３５】
また、現在のポインタ値ｃｒＰｔｒは、加算器２９によって“１”が加算されて、値がインクリメントされる。インクリメントされたポインタ値が、次の書き込みサイクルに用いる更新されたポインタ値ｎｘｔＰｔｒとして、データ復号化装置内のポインタレジスタに出力される。
【０１３６】
このように、本実施形態に係るデータ復号化装置２は、例えば、図７乃至図９に示される構成の制御回路１０を有する。  
これによって、本発明の実施形態に係るデータ復号化装置２は、データの書き込み回数の削減、それに伴う画像処理の高速化及び消費電力の低減を実現できる。
【０１３７】
［その他］
本発明の実施形態において、ラン値とレベル値とが１組として扱われるデータがＭＰＥＧ−２規格やＪＰＥＧ規格に対応した例を用いて説明した。しかし、例えば、ラン値、レベル値及びネクスト値の３つの値を１組の有効データとして扱うＭＰＥＧ−４規格のように、３つ以上の値を含む１組の有効データの中からラン値とレベル値を取得することで、ＭＰＥＧ−２以外の画像処理規格であっても、本実施形態に適用できるのはもちろんである。
【０１３８】
本発明の実施形態において、量子化係数を２次元に展開するためのスキャン方法として、ジグザグスキャン方式を用いて説明したが、これに限定されない。例えば、垂直優先オルタネートスキャン方式、水平優先オルタネートスキャン方式及びラスタスキャン方式など、他のスキャン方式を用いても良い。ジグザグスキャン方式以外の場合においても、所定の順序でデータをスキャンする場合に、複数のメモリワードの中ではじめて到達するポインタ値（バイトアドレス）をネクストゼロポインタ値と設定することで、本発明の実施形態と同様の構成及び動作を実現できる。それによって、本発明の実施形態と同様の効果を得ることができる。
【０１３９】
本発明の例は、上述の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で、各構成要素を変形して具体化できる。また、上述の実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を構成できる。例えば、上述の実施形態に開示される全構成要素から幾つかの構成要素を削除してもよいし、異なる実施形態の構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１４０】
１：解析回路、２：データ復号化装置、３：メモリ、４：逆ＤＣＴ回路、５：ディスプレイ、１０，１１：制御回路、１２：ポインタレジスタ、２３：ネクストゼロポインタ変換部、２６：ジグザグスキャン変換部、２４：書き込み方式選択部、２４Ａ，２４Ｂ：コンパレータ、２７：書き込み制御部、２７Ａ：書き込みデータ生成手段、２７Ｂ：バイトイネーブル信号生成手段。
【図１】
2010187115.tif 000003
【図２】
2010187115.tif 000004
【図３】
2010187115.tif 000005
【図４】
2010187115.tif 000006
【図５】
2010187115.tif 000007
【図６】
2010187115.tif 000008
【図７】
2010187115.tif 000009
【図８】
2010187115.tif 000010
【図９】
2010187115.tif 000011