(57)【特許請求の範囲】
【請求項１】
ブースのアルゴリズムにしがたって入力データと複数種類の係数と乗算する乗算器であって、
前記係数毎に、係数の所定ビットと前記入力データとから部分積を生成する複数の部分積生成部と、
前記複数の部分積生成部にて生成された部分積を加算する加算器と、
前記複数の部分積生成部と前記加算器との間に設けられ少なくとも２つの部分積生成部の出力のうち一方の出力を選択して前記加算器に入力する第１のセレクタと、
前記第１のセレクタを制御する制御部とを有し、
各係数は、当該係数からブースのアルゴリズムに従ってデコードされた符号データの１以上が常に零となるものであって、
前記制御部は、前記複数の部分積生成部のうち零を出力する部分積生成部を少なくとも１つ検出し、この検出結果に基づき前記第１のセレクタにより前記部分積生成部の出力のうち非零の出力を選択させ前記加算器に入力させる乗算器。
【請求項２】
前記部分積生成部の少なくとも１つは、
前記係数の所定ビットをブースのアルゴリズムに従ってデコードして符号データを生成するブースデコーダと、
前記符号データと前記入力データとを乗算する乗算部と、
前記乗算部の乗算結果を所定ビットシフトして出力するビットシフト部とを有する
ことを特徴とする請求項１記載の乗算器。
【請求項３】
前記制御部は、前記ブースデコーダが生成した符号データが零か否かを検出する零検出器を有する
ことを特徴とする請求項１又は２記載の乗算器。
【請求項４】
前記複数の部分積生成部は、二進数表示した前記係数を下位ビットからｙ[０],・・・,ｙ[ｎ−１]（ｎ≧０の偶数）、入力データをＸとしたとき、前記係数×Ｘの各部分積Ｚを下記のように演算するものであって、各部分積生成部はｉに対応する
ことを特徴とする請求項１乃至３のいずれか１項記載の乗算器。
【数１】
0004519807.tif 000010
ただし、ｙ[−１]＝０
【請求項５】
前記複数の部分積生成部は部分積生成ユニットを構成し、当該部分積生成ユニットは、
前記係数の所定ビット毎にブースのアルゴリズムに従ってデコードした符号データを生成する第１及び第２のブースデコーダと、
前記第１及び第２のブースデコーダに対応して設けられた、前記符号データと前記入力データとを乗算するそれぞれ第１及び第２の乗算部と、
前記第１及び第２の乗算部の乗算結果をｉビットシフトして出力するそれぞれ第１及び第２のビットシフト部と、を有し、
前記第１のセレクタは、前記第１及び第２のビットシフト部の出力を選択するものであって、
前記制御部は、前記第１のブースデコーダの符号データが零であるか否かを検出し、前記第１のセレクタを制御する零検出器を有する
ことを特徴とする請求項４記載の乗算器。
【請求項６】
前記第２のブースデコーダにて生成される符号データが０又は１であるとき、前記第２のビットシフト部の出力又は零を選択出力する第２のセレクタを更に有し、
前記第１のセレクタは、前記第２のセレクタの出力又は第１のビットシフト部の出力を選択する
ことを特徴とする請求項５記載の乗算器。
【請求項７】
複数のフィルタについて、複数の入力データとフィルタを構成する複数のフィルタ係数のそれぞれとをブースアルゴリズムを用いて積和演算するフィルタ処理装置であって、
１又は２以上の部分積を生成する複数の部分積生成ユニットと、
前記複数の部分積生成ユニットにより生成される部分積の総和を生成する加算部とを有し、
前記複数の部分積生成ユニットのうち少なくとも１つは、
前記フィルタ係数毎に、フィルタ係数の所定ビットと前記入力データとから部分積を生成する複数の部分積生成部と、
前記複数の部分積生成部と前記加算器との間に設けられ少なくとも２つの部分積生成部の出力のうち一方の出力を選択して前記加算器に入力するセレクタと、
前記セレクタを制御する制御部とを有し、
当該部分積生成ユニットに入力される各フィルタ係数は、当該係数からブースのアルゴリズムに従ってデコードされた符号データの１以上が常に零となるものであって、
前記制御部は、前記複数の部分積生成部のうち零を出力する部分積生成部を少なくとも１つ検出し、この検出結果に基づき前記セレクタにより前記部分積生成部の出力のうち非零の出力を選択させ前記加算器に入力させる、フィルタ処理装置。
【請求項８】
複数のフィルタについて、複数の入力データとフィルタを構成する複数のフィルタ係数のそれぞれとをブースアルゴリズムを用いて積和演算することで画面内予測のフィルタ演算が可能なフィルタ処理部と、
前記フィルタ処理部にデータを入力するデータ入力部と、
前記フィルタ処理部の結果を格納するメモリ部と、
前記データ入力部入力側に設けられ、外部からの入力又はフィルタ処理部の出力を選択する選択部とを有し、
前記フィルタ処理部は、
１又は２以上の部分積を生成する複数の部分積生成ユニットと、
前記複数の部分積生成ユニットにより生成される部分積の総和を生成する加算部とを有し、
前記複数の部分積生成ユニットのうち少なくとも１つは、
前記フィルタ係数毎に、フィルタ係数の所定ビットと前記入力データとから部分積を生成する複数の部分積生成部と、
前記複数の部分積生成部と前記加算器との間に設けられ少なくとも２つの部分積生成部の出力のうち一方の出力を選択して前記加算器に入力するセレクタと、
前記セレクタを制御する制御部とを有し、
当該部分積生成ユニットに入力される各フィルタ係数は、当該係数からブースのアルゴリズムに従ってデコードされた符号データの１以上が常に零となるものであって、
前記制御部は、前記複数の部分積生成部のうち零を出力する部分積生成部を少なくとも１つ検出し、この検出結果に基づき前記セレクタにより前記部分積生成部の出力のうち非零の出力を選択させ前記加算器に入力させる画面内予測装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブースのアルゴリズムに従って乗算を実行する乗算器、フィルタ処理装置、及びフィルタ処理部を備えた画面内予測装置に関する。
【背景技術】
【０００２】
次世代ＤＶＤ（Digital Versatile Disk）やＤＴＶ（デジタルテレビ）に採用が決定しているＨ．２６４／ＡＶＣやＶＣ−１といった新しいコーデックがある。例えばＨ．２６４で採用されている画面内予測は、ＭＰＥＧ（Moving Picture Experts Group）−２、−４などの従来の圧縮技術で採用されている方法とは大きく異なる。画面内予測とは、１画面（フレーム）の中の画素をブロックに分け、隣り合ったブロック同士の画素値（色や輝度）が似ているという性質を利用して、あるブロックの画素から周囲のブロックの画素を予測することでデータ量を減らす方法である。
【０００３】
すなわち、従来のＭＰＥＧ−２やＭＰＥＧ−４では、画素値の主要な成分だけを取り出してその部分だけについて予測をしている。これに対し、Ｈ．２６４は画素値のすべての情報を利用して周囲のブロックの画素を予測する。この方法によれば処理量は増えるものの予測精度を向上できるのでより高い圧縮効率を実現できる。また、画面内予測に使うブロックのサイズにも違いがある。ＭＰＥＧ−２、ＭＰＥＧ−４では８×８画素に固定されている。これに対しＨ．２６４は、平坦な画像向けに１６×１６画素、複雑な画像向けに４×４画素を選択して使用することができる。下記表１に、ＭＰＥＧ２、Ｈ．２６４、ＶＣ−１の機能比較を示す。
【０００４】
【表１】
0004519807.tif 000002
【０００５】
この画面内予測画像を得るための演算器のほか、表１に示すＨ．２６４及びＶＣ−１で使用される動き補償処理における動き補償予測フィルタのフィルタ演算は、演算を高速に行なうため、ブースのアルゴリズムを適用した乗算器で構成される場合がある。
【０００６】
乗算器の演算時間は、部分積加算をするために必要とする時間と桁上げ信号吸収をするために必要な時間の総和であり、演算速度を高速にする上でこれらの処理時間の短縮が問題となる。その対策として加算回路を減らすために部分積の数そのものを削減する必要がある。そのためには乗数の連続する複数ビットを一まとめのグループにして、このグループに対応した部分積を生成すれば部分積を削減することができる。そこで部分積数削減のために用いられるのが２次のブースである。２次のブースとは、乗数を２ビットごとに区切り、各組と下位組の最上位ビットの計３ビットをひとまとめにするというアルゴリズムを適用した部分積削減の手法である。
【０００７】
図１０は、特許文献１に記載されたブースアルゴリズムを用いた従来の乗算演算装置に含まれる部分積生成部を示す図である。特許文献１に記載の乗算演算装置は、乗数の一部分であってブースアルゴリズムにて演算される分割乗数が０であることを検知した場合、乗数との乗算にて部分積を生成するための被乗数を任意の値に固定することで、乗算器の低消費電力化を図っている。
【０００８】
図１０に示すように、部分積生成部５００は、予め乗数ｙが分割された分割乗数が入力されるブースデコーダ５０１及び部分積生成回路５０２が設けられている。さらに、零検出回路５１０と零検出回路５１０の出力側に接続される第１ゼロ送出回路５２０が設けられる。２次のブースアルゴリズムに対応して零検出回路５１０には、被乗数のうちのビットｘｍ、及び該ビットｘｍよりも１ビット下位のビットであるビットｘｍ−1が入力され、零検出回路５１０はこれらのビットｘｍ、ｘｍ−1の両方がゼロの場合にＨレベルの信号を第１ゼロ送出回路５２０へ出力する。第１ゼロ送出回路５２０は、零検出回路５１０の出力信号が入力されるインバータ５２１と、２入力端子を有しインバータ５２１の出力信号が上記入力端子の一方に入力されるＡＮＤ回路５２２〜５２４とから構成される。ＡＮＤ回路５２２の他方の入力端子には分割乗数ｙｎ−1が入力され、ＡＮＤ回路２３の他方の入力端子には分割乗数ｙｎ−1よりも１ビット上位の分割乗数ｙｎが入力され、ＡＮＤ回路２４の他方の入力端子には分割乗数ｙｎよりも１ビット上位の分割乗数ｙｎ＋1が入力される。
【０００９】
この部分積生成部５１０は、ｘ，ｙの乗算において、分割乗数はＡＮＤ回路５２２〜５２４の他方の入力端子へ入力され、被乗数ｘは部分積生成回路５０２へ入力される。ここで、ブースデコーダ出力を入力としない側の部分積生成回路５０２の入力である被乗数ｘが零にセットされると、零検出回路５１０はブースデコーダ出力を入力としない側の部分積生成回路５０２の入力が零にセットされたことを検出し、「Ｈ」レベルの信号を出力する。この「Ｈ」出力は、インバータ回路５２１にて論理反転されて「Ｌ」レベル信号となりＡＮＤ回路５２２〜５２４に入力される。これにより、ＡＮＤ回路５２２〜５２４からブースデコーダ５０１へ出力されるデータは常に「Ｌ」となる。ブースデコーダ５０１の入力データがすべて「Ｌ」であるとその出力データも「Ｌ」になる。部分積生成回路５０２はその入力データが「Ｌ」であると、部分積結果Ｐｍｎも「Ｌ」に固定される。
【００１０】
よって、被乗数ｘの零を検出すると、ブースデコーダ５０１の入力となる側の分割乗数の内容がさまざまに変化してもブースデコーダ５０１が動作せず、部分積結果Ｐｍｎも変化することがなくなるので後段の加算器も動作することがない。よって乗算演算装置内に流れる消費電流を低減することができる。
【００１１】
また、他の従来技術としては、図１１に示すディジタルフィルタがある（特許文献２参照）。この特許文献２に記載のディジタルフィルタは、入力信号から連続した複数のデータを同時に出力するデータ生成手段と、複数のデータと重み係数とを乗算する乗算手段との間に、データ生成手段から少なくとも１つの無効データが出力されると替わりにデータ生成手段から出力される他の有効データに組み替える組み換え手段を有するディジタルが開示されている。有効データに組み替えることで画像データ端部近傍の無効データが存在する場合でも歪みがないフィルタ出力を得る。
【００１２】
図１１に示すように、特許文献２に記載のディジタルフィルタは、入力端子６０１と、データ生成部６０２と、セレクタ６０３、６０４、６０５、６０６、６０７、６０８と、乗算回路６０９、６１０、６１１、６１２、６１３、６１４、６１５と、係数生成部６１６と、加算器６１７と、出力端子６１８とを有して構成される。
【００１３】
入力端子６０１からの入力信号である画像データは、データ生成部６０２に入力され、当該データ生成部６０２は、Ｄ０〜Ｄ６までの連続した７ラインのデータを同時に出力する。係数生成部６１６は、Ｃ０〜Ｃ６までの７つの所定の重み係数を出力する。データ生成部６０２から出力される連続した７ラインのデータに対し、セレクタ６０３〜６０８は、データの選択を行う。
【００１４】
セレクタ６０３は、Ｄ０〜Ｄ３の４種類のデータの中から１つを選択する。セレクタ６０４は、Ｄ１〜Ｄ３の３種類のデータの中から１つを選択する。セレクタ６０５は、Ｄ２、Ｄ３の２種類のデータの中から１つを選択する。セレクタ６０６は、Ｄ３、Ｄ４の２種類のデータの中から１つを選択する。セレクタ６０７は、Ｄ３〜Ｄ５の３種類のデータの中から１つを選択する。セレクタ６０８は、Ｄ３〜Ｄ６の４種類のデータの中から１つを選択する。
【００１５】
以上のようにして得られた各データと各重み係数とは、乗算回路６０９〜６１５に入力され乗算処理される。各乗算回路６０９〜６１５からの乗算結果は、加算回路６１７によって加算処理され、出力端子６１８からフィルタ出力として出力される。
【００１６】
このように、データ生成部から少なくとも１つの無効データが出力されるとき、該無効データの替わりとしてデータ生成部６０２から出力されている他の有効データに組み替えるセレクタ６０３〜６０８を乗算手段の前段に設けて構成している。従って、画像データのフィルタリング処理を行う場合、画像データの端部の外側に無効データが存在するような場合でも、常に歪みのないフィルタ出力を得ることができる。
【特許文献１】特開平９−１０１８７７号公報
【特許文献２】特開２００１−８６３６６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、上記特許文献１に記載の乗算演算装置は、分割乗数が０であることを検知した場合、乗数との乗算にて部分積を生成するための被乗数を任意の値に固定することで低消費電力化を図ることができるものの、部分積生成部から出力されるデータ数は変わらず、部分積生成部の出力を加算する加算部の回路規模が大きいという問題点がある。又は、特許文献１に記載の部分積生成部を繰り返し使用して演算処理をする場合は回路規模は削減できるものの、上述のような複雑な演算を行なわせるフィルタ回路に適用した場合には、演算速度が遅くなり現実的ではないという問題点がある。
【００１８】
また、特許文献２に記載のディジタルフィルタのように、乗算器を同時に複数多様すると回路規模の増大を招いてしまい、結果消費電力が増大するという問題点がある。
【００１９】
特に、Ｈ．２６４やＶＣ−１といった規格では、従来のＭＰＥＧ−２などに比べて極めて複雑な演算を要求されるため、これらのコーデックの各種フィルタ演算を行なう際、これをブースのアルゴリズムを適用した乗算器で構成すると多数の乗算器が必要となり回路規模、及び演算速度の問題は顕著になる。
【課題を解決するための手段】
【００２０】
本発明に係る乗算器は、ブースのアルゴリズムにしがたって入力データと複数種類の係数と乗算する乗算器であって、前記係数毎に、係数の所定ビットと前記入力データとから部分積を生成する複数の部分積生成部と、前記複数の部分積生成部にて生成された部分積を加算する加算器と、前記複数の部分積生成部と前記加算器との間に設けられ少なくとも２つの部分積生成部の出力のうち一方の出力を選択して前記加算器に入力する第１のセレクタと、前記セレクタを制御する制御部とを有し、各係数は、当該係数からブースのアルゴリズムに従ってデコードされた符号データの１以上が常に零となるものであって、前記制御部は、前記複数の部分積生成部のうち零を出力する部分積生成部を少なくとも１つ検出し、この検出結果に基づき前記セレクタにより前記部分積生成部の出力のうち非零の出力を選択させ前記加算器に入力させるものである。
【００２１】
本発明においては、例えば２つの部分積生成部の出力を１つのセレクタでまとめ、当該２つの部分積生成部の出力のうち零を出力するものを検出し、非零を出力する部分積生成部の出力を選択して加算器に入力するようにしたので、部部分積生成部の個数より加算器への入力数を減少させることができる。
【発明の効果】
【００２２】
本発明によれば、演算速度を維持しつつハードウェア量を削減することができるブースアルゴリズムを利用した乗算器、フィルタ処理装置、及びフィルタ処理部を備えた画面内予測装置を提供することができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。この実施の形態は、本発明を、異なる種類のフィルタ演算を実効させるフィルタ演算器（乗算器）に適用したものである。本実施の形態は、ブースアルゴリズムを利用したフィルタ演算器において、部分積生成部の機能と、乗数となるフィルタ係数とに着目し、冗長な回路を省略することでハードウェア量を削減する。なお、本実施の形態においては、フィルタ演算器として説明するが、複数種類の予め定められた乗数群と任意の被乗数群とを乗算させる乗算器とすることも可能である。
【００２４】
（１）ブースのアルゴリズムを適用した乗算器
本実施の形態にかかるフィルタ演算器は、ブースのアルゴリズムを使用して乗算を行うフィルタ演算器である。ここでは先ず、本発明の理解を容易とするため、２次のブースアルゴリズムを利用した乗算器について説明しておく。
【００２５】
乗数Ｙを符号付き８ビット整数
Ｙ＝−ｙ[７]・２７＋ｙ[６]・２６＋ｙ[５]・２５＋ｙ[４]・２４＋ｙ[３]・２３＋ｙ[２]・２２＋ｙ[１]・２１＋ｙ[０]・２０
とすると、任意整数である被乗数Ｘとの積Ｐ＝Ｘ×Ｙは下記式（１）のように表すことができる。
【００２６】
【数１】
0004519807.tif 000003
【００２７】
この（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を算出するものをブースデコーダ、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉを部分積という。ここで、本明細書においては、ブースデコーダにより求められるデコード値（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を符号データということとする。また、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉ（部分積）を生成する回路を部分積生成ユニット、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉのうち、各ｉに対応した部分積を生成する回路を部分積生成部、符号データ（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を求める回路をブースデコーダ、符号データ×被乗数からなる演算を行ない部分積を求める回路を乗算部、部分積のうち、×２２ｉの演算を実行する部分をビットシフト部ということとする。
【００２８】
ここで、下記表２に示すように、符号データ（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）の値の組み合わせは８通りしかなく、０、±１、±２の値のみしかとらない。よって、乗算器は、０、±Ｘ、±２Ｘに２２ｉを乗算した値（部分積）を算出して加算する値の組み合わせの対応（真理値表）として書ける。ここで、符号データの値は８通りしかないため、ブースデコーダは、単なる組み合わせ論理回路により得ることができる。
【００２９】
【表２】
0004519807.tif 000004
【００３０】
０、±Ｘ、±２Ｘのうち、２Ｘの生成は１ビットのシフトで行なうことができる。一方、負数の生成は被乗数Ｘが２の補数表現であるのでＸの各ビットを反転させ最下位ビットに１を加えればよい。これを実現するために、例えば、符号データ（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を生成する回路（ブースデコーダ）は、乗数Ｙの入力に対して部分積の絶対値（０、Ｘ、２Ｘ）を選択するための２つの信号と反転を選択するための１つの信号とからなる３つの信号を生成する。また、乗算部は、この３つの信号を受けて、絶対値が０の場合は０を、Ｘの場合は被乗数Ｘ を、２Ｘの場合は被乗数Ｘを１ビットシフトしたものを選択し、さらに、反転が必要な場合はその値を反転させて部分積を生成することができる。さらに、×２２ｉを実行するビットシフト部は、単純にビット線を２ｉだけシフトさせればよい。
【００３１】
図１は、このような２次のブースのアルゴリズムに従って乗算を実行する乗算器を示すブロック図である。乗算器４００は、被乗数Ｘを出力するレジスタＦ０と、乗数Ｙを出力するレジスタＦ７を有する。更に、乗数Ｙ及び被乗数Ｘが入力され部分積を生成する部分積生成ユニット４０１と、部分積生成ユニット４０１にて生成された部分積を加算する加算器４５０とを有する。部分積生成ユニット４０１は、４つの部分積生成部４１０、４２０、４３０、４４０を有する。
【００３２】
各部分積生成部は、上述したように、乗数Ｙのうち所定ビットが入力され、ブースのアルゴリズムに従って符号データ（０、±１、±２）を生成するブースデコーダと、得られた符号データと被乗数Ｘとの乗算結果を出力する乗算部と、乗算部の演算結果のビットシフトを行なうビットシフト部とから構成されるものとする。
【００３３】
各部分積生成部は、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉの"ｉ"に対応したものとなっており、例えば乗数Ｙが８ビット（ｙ０〜ｙ７とする）であれば、ｉ＝０〜３であり、それぞれＸ×（−２・ｙ１＋ｙ０＋０)×２０、Ｘ×（−２・ｙ３＋ｙ２＋ｙ１）×２２、Ｘ×（−２・ｙ５＋ｙ４＋ｙ３）×２４、Ｘ×（−２・ｙ７＋ｙ６＋ｙ５)×２６を求める。図１においては、これらの部分積を求める部分積生成部を、それぞれ４１０、４２０、４３０、４４０としている。なお、本実施の形態においては、ブースデコーダでデコードする乗数Ｙが８ビットを例にとって説明するが、これ未満、又は以上であってもよいことは勿論である。その場合は、部分積生成部の個数を適宜調整すればよい。
【００３４】
次に、実際の演算を例にとって、この乗算器４００の動作について説明する。８ビットの乗数Ｙは、図２（ａ）のように表すことができる。乗数を２ビットごとに区切り、各組と下位組の最上位ビットの計３ビット（ただしｙ−１＝０）のデータから符号データが得られる。これらに被乗数Ｘを乗算し、対応するビットシフト（×２ｉ）を演算することで部分積を生成することができる。このため、図２（ｂ）に示すように、レジスタＦ７は８ビットを出力するシフトレジスタからなり、乗数Ｙ｛ｙ０〜ｙ７｝を出力する。このとき部分積生成部４１０には、乗数Ｙのうち下位２ビット{ｙ０、ｙ１}、部分積生成部４２０、４３０、４４０にはそれぞれ、{ｙ１、ｙ２、ｙ３}、{ｙ３、ｙ４、ｙ５}、{ｙ５、ｙ６、ｙ７}を入力する。部分積生成部４１０は、入力されたこれらの所定ビットから符号データを生成するブースデコーダ４１１と、得られた符号データと被乗数Ｘとの乗算を行なう乗算部４１２と、乗算結果を所定ビットシフトするビットシフト部４１３とを有する。他の部分積生成部４２０、４３０、４４０も同様に構成される。ここでは、被乗数Ｘ＝３５８（１６６Ｈ）、乗数Ｙ＝１２３（７ＢＨ）の乗算について説明する。下記表３は、演算工程における各出力値を示す。
【００３５】
【表３】
0004519807.tif 000005
【００３６】
Ｘ×Ｙ＝３５８×１２３＝４４０３４（ＡＣ０２Ｈ）
Ｙ＝１２３（７ＢＨ）
＝(−２・０＋１＋１)・２６
＋（−２・１＋１＋１）・２４
＋（−２・１＋０＋１）・２２
＋（−２・１＋１＋０）・２０
＝２・２６＋０・２４＋（−１）・２２＋（−１）・２０
よって、下記となる。
Ｘ×Ｙ＝{（２×３５８）×２６}    ・・・部分積生成部４１０にて演算
＋{（０×３５８）×２４}    ・・・部分積生成部４２０にて演算
＋{（−１×３５８）×２２}    ・・・部分積生成部４３０にて演算
＋{（−１×３５８）×２０}    ・・・部分積生成部４４０にて演算
【００３７】
先ず、被乗数入力部Ｆ０からは"３５８"が各部分積生成部４１０、４２０、４３０、４４０に入力される。乗数入力部Ｆ７からは、各部分積生成部４１０、４２０、４３０、４４０に、それぞれ{ｙ０、ｙ１}＝{１、１}、{ｙ１、ｙ２、ｙ３}＝{１、０、１}、{ｙ３、ｙ４、ｙ５}＝{１、１、１}、{ｙ５、ｙ６、ｙ７}＝{１、１、０}が入力される。ブースデコーダ４１１、４２１、４３１、４４１は入力された所定ビットから、それぞれ（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])＝（−２・ｙ１＋ｙ０＋０)、（−２・ｙ３＋ｙ２＋ｙ１）、（−２・ｙ５＋ｙ４＋ｙ３）、（−２・ｙ７＋ｙ６＋ｙ５)の演算に対応する符号データを出力する。上記の式より本例では、各ブースデコーダ４１１、４２１、４３１、４４１は、それぞれ、"−１"、"−１"、"０"、"２"を出力する。
【００３８】
各乗算部４１２、４２２、４３２、４４２は、上記符号データ×被乗数Ｘを演算して、それぞれビットシフト部４１３、４２３、４３３、４４３へ入力する。ビットシフト部４１３はそのまま加算器４５０へ出力する。なお、本例においては説明の明確のためビットシフト部４１３を設けているが設ける必要はない。ビットシフト部４２３、４３３、４４３は、受け取った結果をそれぞれ２ビット、４ビット、６ビットシフトさせた後、加算器４５０へ入力する。
【００３９】
本例の加算器４５０は、全加算器（フルアダー）４５１、４５２と、半加算器（ハーフアダー）４５３と、結果を受け取るレジスタ４５４とを有する。各ビットシフト部４１３、４２３、４３３、４４３から入力された値は、加算器４５０にて加算され、乗算結果Ｐとして出力される。
【００４０】
このように、２次のブースのアルゴリズムを使用すると、乗数を、０、±１、±２の符号データ×２２ｉとし、被乗数と演算を行なわせるので、部分積の個数が略半分となる。よって加算器にて加算する部分積の個数を略半減させることができるので、乗算器を小型化することができる。
【００４１】
（２）本実施の形態の概要
本実施の形態にかかる乗算器は、上記ブースのアルゴリズムを適用した乗算器であって、
複数種類の予め定められた乗数を入力する場合に、生成する部分積をできるだけ削減し、加算器の回路規模を削減するものである。
【００４２】
上述したように、乗数Ｙが８ビットであれば、図２に示すように、通常の乗算器４００は、×１、×２、×１６、×６４に対応する４つの部分積生成部４１０、４２０、４３０、４４を備える。ところで、ブースデコーダが生成する符号データは、０、±１、±２であり、"０"の場合がある。この場合、部分積は必ず"０"になるため、部分積生成部から加算器へは"０"が入力されることとなる。ここで、全ての乗数Ｙが予め定められた数値であって、各乗数Ｙにおいて、×１、×２、×１６、×６４に対応する符号データのいずれか１以上が"０"になれば、２以上の部分積生成部で加算器への入力を共有することが可能である。このことにより、加算器への入力数を削減することができ、加算器の回路規模を縮小することができる。
【００４３】
このため、本実施の形態にかかる乗算器は、２以上の部分積生成部から加算器への入力を１つにまとめるセレクタを設ける。そして、部分積生成部に符号データ"０"を検出する零検出器を設ける。この零検出器により符号データが"０"となる部分積生成部を検出し、セレクタはその出力を非選択、符号データが非"０"となる部分積生成部の出力を選択とし、加算器に入力させる。このことにより、２以上の部分積生成部で加算器への入力を共有することができ、全体として部分積生成部から加算器への入力数を削減して加算器の回路規模を削減する。
【００４４】
以下の説明においては、この零検出器及びセレクタを備える乗算器を、Ｈ．２６４の画面内予測部におけるフィルタ演算器に適用した具体例について説明する。なお、本実施の形態においては、本発明を画面内予測部のフィルタ演算器に適用した例について説明するが、これに限らず、例えばＨ．２６４やＶＣ−１における動き補償部のフィルタ演算器等に適用することも可能である。また、フィルタ演算器に限らず、複数の予め定められた乗数であって、それをブースデコーダでデコードした符号データの１以上が"０"となるものが入力されるような乗算器であれば同様に適用することができる。
【００４５】
（３）画像復号装置
ここでは先ず、Ｈ.２６４、ＶＣ−１の画像復号装置について説明する。図３は、Ｈ.２６４に準拠して符号化された圧縮画像を復号する復号装置を示すブロック図である。Ｈ．２６４は、ＭＰＥＧ４  ＡＶＣ（Advanced Video Coding）とも呼ばれ、データ圧縮率は、ＭＰＥＧ−２の２倍以上、ＭＰＥＧ−４の１．５倍以上とすることができる圧縮符号化方式である。
【００４６】
図３に示すように、Ｈ.２６４の画像復号装置１７０は、可変長復号部１７２、逆量子化部１７３、逆アダマール変換部１７４、加算器１７５、デブロッキングフィルタ１７６、動き補償部１８２、重み付け予測部１８１、画面内予測部１８０及び復号画像１７８を表示するモニタ１７９を有する。
【００４７】
可変長復号部１７２は、圧縮データ１７１が入力され可変長符号化された圧縮データを、変換テーブルに基づき可変長復号する。そして、可変長復号された復号データは、逆量子化部１７３にて逆量子化され、逆アダマール変換部１７４にて逆アダマール変換され加算器１７５へ送られる。加算器１７５の出力は、デブロッキングフィルタ１７６によりブロック歪を除去され、復号画像１７８とされ、モニタ１７９を介して表示される。
【００４８】
ここで、加算器１７５の出力が画面内予測部１８０にも入力され、予測画像１８３が生成される。また、復号画像が動き補償部１８２にて動き補償処理が行なわれ、重み付け予測部１８１にて重み付けされて予測画像１８３が生成される。加算器１７５は、Ｉフレーム処理の際には画面内予測部１８０からの予測画像１８３に予測誤差を加算し出力する。一方、Ｐ、Ｂフレーム処理の際には、切替部１７７にて切り替え、重み付け予測部１８１から送られる予測画像１８３に予測誤差を加算して出力する。
【００４９】
（４）画面内予測処理
次に、画面内予測部について説明する。図４、図５は、画面内予測（フレーム内予測、イントラ予測）部の処理を説明するための図である。Ｈ.２６４では、ブロック間画素相関を利用して符号化の際の圧縮率を向上させるため、画面内予測符号化が行なわれる。予測するブロックの単位は４×４画素、８×８画素、又は１６×１６画素などがあるが、例えば８×８画素の画面内予測では、図４に示すように、上ブロック（Ｂ）、左ブロック（Ａ）、左上ブロック（Ｄ）、右上ブロック（Ｃ）の符号化・復号し平滑化した画素から８×８画素の画素値を予測する。図５に示すように、予測モード０〜予測モード８の９通りの予測方向の中から最も適切に予測できる予測方向を、８×８画素のブロック毎に１つ選択し、選択した予測方向を８×８画素のブロック単位で符号化し、予測画像を生成する。
【００５０】
例えば予測モード０の場合、予測対象の８×８画素ブロックの上側に隣接する復号済みの画素データを用いて、垂直方向の予測を行い、予測画像を生成する。この予測モードは、予測対象の画像領域に垂直方向エッジがある場合に有効な予測モードである。予測モード０以外の予測モードも同様にそれぞれが特定方向のエッジに対して有効な予測モードとなっており、隣接ブロックの復号済み画素を基に予測画像を生成する。また色差信号については、８×８画素ブロックに対し、４通りの予測モードが定義されており、輝度信号とは独立に予測モードを符号化することが可能である。このようにＨ．２６４におけるフレーム内予測もフレーム間予測同様ＭＰＥＧ−４に比べ、多様な予測モードを備えることで自由度が高い設計となっており、フレーム間予測における符号化効率の改善には、エンコーダが適切な予測モードを選択することが必要になる。
【００５１】
（５）画面内予測部の構成
図６は、画面内予測部の構成を示すブロック図である。画面内予測部２３０は、画面内予測のフィルタ演算を実施するフィルタ演算部２３３、このフィルタ演算部２３３にデータを入力するラインメモリ部２３２、フィルタ演算部２３３の結果を格納するメモリ部２３４、及びラインメモリ部２３２のへの入力部分に設けられた、外部からの入力またはフィルタ演算部２３３の出力かを選択する選択部２３１を有する。
【００５２】
フィルタ演算部２３３は、逐次データを転送・保持するレジスタと、ブースのアルゴリズムにしたがって１以上の部分積を生成する部分積生成部と、生成された部分積を加算する加算器と、累算用に最終結果又は丸め用の係数を選択するセレクタとを有する。ここで、Ｈ．２６４のフィルタ演算は、４×４画素（輝度）、又は８×８画素（輝度）の画面内予測は予測モード０〜８がある。また、１６×１６画素（輝度）は、予測モード０（垂直予測）、予測モード１（水平予測）、予測モード２（平均値予測）、予測モード３（平面予測）の４通りの予測モード（予測方向）がある。さらに、１６×１６画素（色差）は、予測モード０（平均値予測）、予測モード１（水平予測）、予測モード２（垂直予測）、予測モード３（平面予測）の４通りの予測モードがある。各モードで下記式（２）、（３−１）、（３−２）、（４−１）、（４−２）のいずれかに従った演算を行なう（INTERNATIONAL STANDARD ISO/IEC 14496-10 Second edition 2004-10-01）。
【００５３】
ｐｒｅｄ[ｘ，ｙ]＝（ｐ[ｘ＋ｙ，−１]＋２×ｐ[ｘ＋ｙ＋１，−１]＋ｐ[ｘ＋ｙ＋２，−１]＋２）＞＞２・・・（２）
【００５４】
ｐｒｅｄ[ｘ，ｙ]＝（Σｐ[ｘ，−１]＋Σｐ[−１，ｙ]＋１６）＞＞５・・・（３−１）
【００５５】
ｐｒｅｄ[ｘ，ｙ]＝（Σｐ[ｘ，−１]＋Σｐ[−１，ｙ]＋４）＞＞３・・・（３−２）
【００５６】
ｐｒｅｄ[ｘ，ｙ]＝Ｌｉｍｉｔｅｒ（（ａ＋ｂ×（ｘ−７）＋ｃ×（ｙ−７）＋１６）＞＞５，（ｘ，ｙ）＝０...１５・・・（４−１）
ここでａ、ｂ、ｃ、Ｈ、Ｖは下記のように規格で定められた係数を示す。
【数２】
0004519807.tif 000006
【００５７】
ｐｒｅｄ[ｘ，ｙ]＝Ｌｉｍｉｔｅｒ（（ａ＋ｂ×（ｘ−３）＋ｃ×（ｙ−３）＋１６）＞＞５，（ｘ，ｙ）＝０...１５・・・（４−２）
ここでａ、ｂ、ｃ、Ｈ、Ｖは下記のように規格で定められた係数を示す。
【数３】
0004519807.tif 000007
【００５８】
上記各式において、ｐｒｅｄ[ｘ，ｙ]は、画面内予測符号化した各画素値を示し、ｐ[]は、[]内の座標で示される符号化済みのブロック画素の画素値を示す。この符号化済みブロックの画素は、デブロッキングフィルタを施す前の画素値を使用する。
【００５９】
各予測モードで、上記式（２）、（３−１）、（３−２）、（４−１）、（４−２）が使用される。例えば、４×４（輝度）画面内予測について具体的に説明する。予測モード０は、上ブロックの下端の既に符号化されている画素値を使用する。また、予測モード１は、左ブロックの既に符号化されている画素値を使用する。また、予測モード２（平均値予測）（図５参照）では、上記式（３−２）を利用して予測符号化した画素値を求める。４×４画面内予測では、ｘ，ｙ＝０〜３であり、上記式（３−２）は、下記のようになる。
ｐｒｅｄ４×４[ｘ，ｙ]＝（ｐ[０，−１]＋ｐ[１，−１]＋ｐ[２，−１]＋ｐ[３，−１]
＋
ｐ[−１，０]＋ｐ[−１，１]＋ｐ[−１，２]＋ｐ[−１，３]＋４）＞＞３・・・（５）
【００６０】
その他の予測モード３〜８は上記式（１）を使用して演算される。また、１６×１６画素（輝度）の画面内予測では、予測モード０、１は、垂直、水平予測なので演算は不要であるが、予測モード２は上記式（３−１）、予測モード３は上記式（４−１）を使用して演算される。さらに、１６×１６画素（色差）の画面内予測では、予測モード１、２は水平、垂直予測なので演算は不要であるが、予測モード０は、上記式（３−２）、予測モード３は、上記式（４−２）を使用して演算される。
【００６１】
（６）参照例にかかるフィルタ演算器
以上に説明した４×４、８×８、１６×１６画素ブロックの各予測モードの全ての演算を可能にするフィルタ演算器は、例えば図７のように構成することができる。図７は本実施の形態の参照例にかかるフィルタ演算器１００を示す図である。なお、後述するように、本実施の形態においては、この参照例に本発明を適用し、すなわち零検出器と部分積生成部の出力をまとめるセレクタを設けて加算器の回路規模を削減するものであるが、フィルタ演算器は、本参照例の構成に限らず、例えば１６個のレジスタ及びそれに対応する部分積生成部から構成する等することも可能である。
【００６２】
フィルタ演算器１００は、画素値を入力するレジスタＦ０〜Ｆ４、部分積生成ユニット１１１〜１１４、部分積を加算する加算器１２０、加算器の結果を出力するレジスタＦ４、及び係数又は加算器１２０の結果を選択出力するセレクタ１６０を有する。部分積生成ユニット１１１は、入力される乗数をブースのアルゴリズムに従ってデコードして符号データを生成し、レジスタＦ１からの入力データと乗算するブースデコーダ（Booth Decoder：ＢＴＤ）・乗算部ａ０、ｂ０、ｃ０と、ＢＴＤ・乗算部ａ０、ｂ０に対応した４ビットシフト部（不図示）、２ビットシフト部（不図示）とを有する。なお、ＢＴＤ・乗算部ｃ０は２０に対応し、ビットシフトは行なわない。各部分積生成ユニット１１２〜１１４も同様に構成される。
【００６３】
このフィルタ演算器１００は、４×４、８×８、１６×１６画素ブロックの各予測モードの全ての演算を実行可能に構成される。すなわち、上述した式（２）、（３−１）、（３−２）、（４−１）、（４−２）の演算の全てを実行可能となっている。このため、フィルタ演算器１００の部分積生成ユニット１１１〜１１４は、それぞれ下記表４のＩ〜ＩＶに対応する演算Ｏ１〜Ｏ７を実行する。
【００６４】
【表４】
0004519807.tif 000008
【００６５】
ここで、表４において、Ｆ０〜Ｆ３に入力される被乗数（所定の画素値）をそれぞれＦ０〜Ｆ３（Ｆ０'〜Ｆ３'）で示す。また、Ｉ〜ＩＶに示す演算Ｏ１〜Ｏ７において、各部分積生成ユニット１１１〜１１４の部分ＢＴＤ・乗算部ａ０〜ａ３、ｂ０〜ｂ３、ｃ０〜ｃ３、ｄ０〜ｄ３におけるブースデコーダが生成する符号データは、下記表５のようになる。
【００６６】
【表５】
0004519807.tif 000009
【００６７】
例えば、上述の予測モード２（平均値予測）（図５参照）を求める下記式（５）を演算する場合、Ｏ７に示す演算を実行する。すなわち、
ｐｒｅｄ４×４[ｘ，ｙ]＝（ｐ[０，−１]＋ｐ[１，−１]＋ｐ[２，−１]＋ｐ[３，−１]＋
ｐ[−１，０]＋ｐ[−１，１]＋ｐ[−１，２]＋ｐ[−１，３]＋４）＞＞３・・・（５）
において、レジスタＦ０〜Ｆ４には、先ず、それぞれｐ[０，−１]、ｐ[１，−１]、ｐ[２，−１]、ｐ[３，−１]が入力される。部分積生成ユニット１１１〜１１４は、それぞれ表２に示すＦ０×１、Ｆ１×１、Ｆ２×１、Ｆ３×１を実行する。すなわち、各部分積生成部{ａ０、ｂ０、ｃ０}〜{ａ３、ｂ３、ｃ３}には、いずれも乗数として"１"が入力されるため、各部分積生成部{ａ０、ｂ０、ｃ０}〜{ａ３、ｂ３、ｃ３}は、符号データ{０、０、１}を生成し、上記入力データと乗算し、ビットシフトした値を加算器１２０へ出力する。
【００６８】
なお、各部分積生成部へ入力される乗数は"１"であるため、実際は、レジスタＦ０〜Ｆ３の値がそのまま加算器へ入力される。このときセレクタ１６０は、"４"を選択し、加算器１２０へ入力する。全ての加算結果がレジスタ１２２、１２３を介して半加算器１２４へ入力され、加算されてレジスタＦ４へ格納される。すなわち、レジスタＦ４に格納された結果は、レジスタＦ０〜Ｆ４から入力された値と乗数とをそれぞれ乗算した結果を加算したものに、"４"を加算したものとなっている。
【００６９】
次に、レジスタＦ０〜Ｆ４には、ｐ[−１，０]、ｐ[−１，１]、ｐ[−１，２]、ｐ[−１，３]がそれぞれセットされ、同様に演算を行なって部分積が加算器１２０へ入力される。このときセレクタ１６０は、レジスタＦ４の値を選択する。これにより、半加算器１２４から出力される値は、上記式（４）の演算結果となる。
【００７０】
このフィルタ演算器１００は、その他の演算も、部分積生成ユニット１１１〜１１４における演算Ｏ１〜Ｏ７を組み合せることで実行可能に構成されている。ここで、表２に示すように、部分積生成ユニット１１１における演算（Ｉ）は、Ｆ０×１〜Ｆ０×８、Ｆ０×１６、Ｆ０×１７を実行するが、いずれの演算においても、いずれか１以上の符号データが"０"となる。よって、部分積生成部ａ０、ｂ０、ｃ０のいずれか１以上の部分積が"０"となる。また、部分積生成ユニット１１３における演算（ＩＩＩ）は、Ｆ２×０〜Ｆ２×８、Ｆ２×１６を実行するが、いずれの演算においても、いずれか１以上の符号データが"０"となり、部分積生成部ａ２、ｂ２、ｃ２のいずれか１以上の部分積が"０"となる。
【００７１】
よって、部分積生成ユニット１１１、１１４の各部分積生成部からは、各演算において１以上が０を出力することになる。生成される部分積が"０"であるならば、加算器１２０にて加算する必要がない。すなわち、加算器１２０へ入力する必要がない。そこで、本実施の形態にかかるフィルタ演算器は、このような部分積生成部からの入力を省略することで、加算器への入力数を削減し、加算器の回路規模を削減するものである。
【００７２】
（７）実施例にかかるフィルタ演算器  次に、この参照例にかかるフィルタ演算器１００に本発明を適用した本実施の形態にか
かるフィルタ演算器１０について説明する。図８は、本実施の形態にかかるフィルタ演算器１０を示すブロック図である。本フィルタ演算器１０は、参照例と同様、レジスタＦ０〜Ｆ４を有し、表４、表５の演算を行なう。
【００７３】
すなわち、フィルタ演算器１０は、レジスタＦ０〜Ｆ４に対応して部分積生成ユニット１〜４を有する。更に部分積生成ユニット１〜４にて生成された部分積を加算する加算器２１と、その結果を保持するレジスタＦ４と、レジスタＦ４又は所定の係数を選択して加算器へ入力するセレクタ６０とを有する。なお、本実施の形態にかかるフィルタ演算器１００は、参照例にかかるフィルタ演算器１００とは、部分積生成ユニット及び加算器の構成が異なる以外は同様である。
【００７４】
部分積生成ユニット２は、部分積生成部２ｂ、２ｃを有する。部分積生成部２ｂは、入力される乗数の所定ビットをブースのアルゴリズムに従ってデコードして符号データを生成し、レジスタＦ１からの入力データと乗算するＢＴＤ・乗算部ｂ１と、×４の演算をする２ビットシフト部２１を有する。部分積生成部２ｃは、同じく入力される乗数の所定ビットをブースのアルゴリズムに従ってデコードして符号データを生成し、レジスタＦ１からの入力データと乗算するＢＴＤ・乗算部ｃ１を有する。なお、ＢＴＤ・乗算部ｃ１は、×２０を実行するためビットシフト部は不要である。また、レジスタＦ３に対応する部分積生成ユニット４も同様に構成され、部分積生成部を構成するＢＴＤ・乗算部ｂ３及び２ビットシフト部４１と、ＢＴＤ・乗算部ｃ３とを有する。
【００７５】
また、この部分積生成ユニット２は、表５の（ＩＩ）の演算を行い、部分積生成ユニット４は、表５の（ＩＶ）の演算を行なう。ここで、表５に示すように、（ＩＩ）、（ＩＶ）の演算は×４までの演算能力しか必要ないため、本例では、参照例におけるＢＴＤ・乗算部ａ１、ａ３を省略したものとなっている。
【００７６】
一方、部分積生成ユニット１は、部分積生成部１ａ、１ｂ、１ｃと、零検出器ｆ１、ｇ１と、セレクタ１４、１５とを有する。部分積生成部１ｃは、ＢＴＤ・乗算部ｃ０からなる。上述と同様、ＢＴＤ・乗算部ｃ０は×２０を実行するためビットシフト部は不要である。また部分積生成部１ｂは、ＢＴＤ・乗算部ｂ０と、２ビットシフト部１２とを有する。そして、部分積生成部１ａは、４ビットシフト部１１とセレクタ１３及びセレクタ制御部ｈ１を有する。
【００７７】
ここで、部分積生成ユニット１においては、表５の（Ｉ）の演算を実行するが、表５に示すように、符号データは"０"又は"１"である。そこで、本例においては、部分積生成部１ａは、ＢＴＤ・乗算部ａ０を省略し、符号データ"１"であるときのみ×１６の演算を行なう４ビットシフト部１１と、符号データが"０"のタイミングで４ビットシフト部１１の出力ではなく"０"を選択出力するセレクタ１３及びセレクタ制御部ｈ１とから構成している。すなわち、セレクタ制御部ｈ１は、表５において符号データが"０"になるタイミングでセレクタ１３から"０"を出力させ、その他のタイミングでは、４ビットシフト部１１の出力を選択出力する。なお、部分積生成部１ｂ、１ｃと同様、ＢＴＤ・乗算部ａ０を設けてもよいことは勿論である。
【００７８】
セレクタ１４は、２ビットシフト部１２の出力、又はセレクタ１３の出力を選択して加算器５１へ入力する。セレクタ１５は、ＢＴＤ・乗算部ｃ０の出力、又はセレクタ１３の出力を選択して加算器５１へ入力する。
【００７９】
零検出器ｆ１は、ＢＴＤ・乗算部ｃ０の演算結果が"０"であることを検出するとセレクタ１３の出力、非"０"であると２ビットシフト部１２の出力を出力するようセレクタ１４の出力を切り替える。また、零検出器ｇ１は、ＢＴＤ・乗算部ｂ０の演算結果が"０"であることを検出するとセレクタ１３の出力、非"０"であるとＢＴＤ・乗算部ｃ０の出力を出力するようセレクタ１５の出力を切り替える。なお、本実施の形態においては、部分積生成ユニット１にセレクタ１４、１５を設け、２つの部分積生成部の出力を１つにまとめ、"０"を検出すると、セレクタ１３の出力を選択するようにしたが、３つの出力を一のセレクタに入力し、非零の出力のみを選択出力するようにしてもよい。
【００８０】
このように構成された部分積生成ユニット１は、０ビットシフト、２ビットシフト、４ビットシフトに対応する３つの部分積生成部を有するものの、セレクタ１４、１５により加算器５１への部分積出力数が２つ１つ少なくなっている。部分積生成ユニット３も同様に構成される。
【００８１】
次に、このフィルタ演算器１０の動作について説明する。上述したように、部分積生成ユニット１は表４、５の（Ｉ）の演算を実行する。また、部分積生成ユニット３は表４、５の（ＩＶ）の演算を実行する。いずれの部分積生成ユニットも同様に動作するので、ここでは、部分積生成ユニット１の動作について説明する。
【００８２】
部分積生成ユニット１は、表５に示すように、Ｆ０×１〜Ｆ０×７までは、ＢＴＤ・乗算部ａ０で生成される符号データは"０"となる。例えばＦ０×２の演算を部分積生成ユニット１で行なう場合、ＢＴＤ・乗算部ａ０、ｂ０、ｃ０で生成される符号データは０、１、−２となる。この場合、零検出器ｆ１、ｇ１は、ＢＴＤ・乗算部ｂ０、ｃ０の演算結果が非"０"であるので、セレクタ１４、１５は、ＢＴＤ・乗算部ｂ０、ｃ０の出力を選択しそのまま加算器５１へ入力する。
【００８３】
すなわち、Ｆ０×１〜Ｆ０×７の演算ではＢＴＤ・乗算部ａ０の結果は必ず"０"になるため、セレクタ１３の出力を選択する必要がない。このため、セレクタ１４、１５は、ＢＴＤ・乗算部ｂ０、ｃ０の出力を選択しそのまま加算器５１へ入力する。なお、Ｆ０×１の演算では、ＢＴＤ・乗算部ａ０、ｂ０、ｃ０で生成される符号データは０、０、１となるため、零検出器ｆ１が"０"を検出し、セレクタ１４にセレクタ１３の出力を選択させる。また、Ｆ０×４の演算では、ＢＴＤ・乗算部ａ０、ｂ０、ｃ０で生成される符号データは０、１、０となるため、零検出器ｇ１が"０"を検出し、セレクタ１５にセレクタ１３の出力を選択させるが、いずれの場合のセレクタ１３の出力も"０"であるため、結果に影響はない。
【００８４】
次に、Ｆ０×１６であるが、ＢＴＤ・乗算部ａ０、ｂ０、ｃ０で生成される符号データは１、０、０となる。よって零検出器ｆ１、ｇ１がいずれも"０"を検出してセレクタ１３の出力を選択する。そこで、本実施の形態においては、後述するように、零検出器ｇ１より零検出器ｆ１が優先してセレクタ１３の選択を行なうよう構成されるものとする。すなわち、零検出器ｆ１が"０"を検出した場合は、零検出器ｇ１は、セレクタ１５を切り替えず、そのままＢＴＤ・乗算部ｃ０の出力を選択するようにする。
【００８５】
ここで、零検出器ｆ１はこのままの構成とし、零検出器ｆ１からの制御線を零検出器ｇ１に入力し、零検出器ｆ１が"０"を検出した場合にこれを通知し、零検出器ｇ１も"０"を検出した場合には、部分積生成部１ｃの出力は"０"にするようにしてもよい。または、零検出器ｆ１、ｇ１がいずれもセレクタ１３の出力を選択しセレクタ１４、１５の結果を１／２する割算器を設けるようにしてもよいことは勿論である。
【００８６】
次に、図９を参照して、零検出器ｆ１、ｇ１のうち、零検出器ｆ１の検出結果を優先的に利用する場合の回路の一例について説明する。なお、図９は、図８に示す部分積生成ユニット１のみを示すが、部分積生成ユニット３も同様に構成できることは勿論である。
【００８７】
図９に示すように、零検出器ｆ１の検出結果を優先させる場合には、零検出器ｆ１の出力に接続されたインバータ（ＩＮＶ）１６と、零検出器ｇ１の出力に接続されたインバータ１７とを設ける。更に、インバータ１６の出力と零検出器ｇ１の出力とを入力し、その論理積を出力するＡＮＤ回路１８と、インバータ１６の出力とインバータ１７の出力を入力し、その論理積を出力するＡＮＤ回路１９とを設ける。更にセレクタ１５ａは、ＡＮＤ回路１８の出力が"０"の場合はセレクタ１３の出力を選択し、"１"の場合はＢＴＤ・乗算部ｃ０の出力を選択する。そして、ＡＮＤ回路１９の出力が"０"の場合、前記選択結果がそのまま出力され、ＡＮＤ回路１９の出力が"１"の場合、"０"が出力される。
【００８８】
これにより、零検出器ｆ１、ｇ１が共に"０"を検出した場合、セレクタ１４はセレクタ１３の出力を選択する。一方、セレクタ１５ａは、ＡＮＤ回路１９の出力が"０"になるので、"０"を選択して出力する。
【００８９】
また、零検出器ｆ１が"０"、零検出回路ｇ１が"１"である場合には、セレクタ１４はセレクタ１３の出力を選択する。一方、セレクタ１５ａは、ＡＮＤ回路１８によりＢＴＤ・乗算部ｃ０の出力を選択し、ＡＮＤ回路１９により前記選択結果、すなわち、ＢＴＤ・乗算部ｃ０の出力がそのまま出力される。
【００９０】
また、零検出器ｆ１が"１"、零検出回路ｇ１が"０"である場合には、セレクタ１４は部分積生成部１ｂの出力を選択出力する。一方、セレクタ１５ａは、ＡＮＤ回路１８によりセレクタ１３の出力が選択され、ＡＮＤ回路１９により前記選択結果、すなわちセレクタ１３の出力がそのまま出力される。
【００９１】
このように構成されたフィルタ演算器１０は、各部分積生成ユニットにおいて、乗数をブースのアルゴリズムに従ってデコードした符号データがいずれも１以上０となる場合には、少なくとも２つの部分積生成部の出力のうち一方の出力を選択して加算器に入力するセレクタ１４、１５、３４、３５を設け、部分積生成部の出力のうち非"０"を選択して加算器５１へ入力するよう構成することができる。よって加算器５１への部分積の入力数を減らすことができ、加算器５１の回路規模を削減することができる。参照例では加算器１２０への入力が１２個であったのに対し、本実施の形態にかかるフィルタ演算器１０では、加算器５１への入力が８つに削減される。よって、加算器１２０は、全加算器１２１ｎが１１個で構成されるのに対し、本実施の形態にかかるフィルタ演算器１０の加算器５１は全加算器７つで構成することができる。
【００９２】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。例えば、本実施の形態は、Ｈ．２６４の画面内予測部に適用される演算器として説明したが、Ｈ．６２４、ＶＣ−１（Windows Media Video（ＷＭＶ）９）（登録商標）などの動き補償部におけるフィルタ演算器としても使用可能である。ＶＣ−１はマイクロソフト社が開発した動画圧縮技術であり、Ｈ．２６４と同程度のデータ圧縮率を有する。これらのアドバンスドコーデック（高圧縮コーデック）は、ＨＤ  ＤＶＤ（High Definition DVD）、又はブルーレイディスク等の次世代ＤＶＤ規格に適用される。
【００９３】
また、上記に例示したフィルタ演算のみならず、予め定められた乗数であって、部分積生成ユニットにおける符号データのうち１以上が０になるものであれば本発明を適用することで、冗長な回路を削減しハードウェア低減することができる。更に、本実施の形態においては、２次のブースのアルゴリズムを適用した乗算器（フィルタ演算器）について説明したが、これに限るものではない。すなわち、３次以上の高次のブースのアルゴリズムであっても同様に適用することができる。
【図面の簡単な説明】
【００９４】
【図１】２次のブースのアルゴリズムに従って乗算を実行する乗算器を示すブロック図である。
【図２】（ａ）は、ブースのアルゴリズムにより符号データ生成に使用されるビットを説明する図、（ｂ）は、図１に示す乗算器の部分積生成ユニットの詳細を示す図である。
【図３】Ｈ.２６４に準拠して符号化された圧縮画像を復号する復号装置を示すブロック図である。
【図４】同復号装置における画面内予測部の処理を説明するための図であって、符号化ブロックが参照するブロックを示す図である。
【図５】同復号装置における画面内予測部の処理を説明するための図であって、４×４画素画面内予測の予測モードを示す図である。
【図６】同復号装置における画面内予測部の構成を示すブロック図である。
【図７】本発明の参照例にかかるフィルタ演算器であって、４×４、８×８、１６×１６画素ブロックの各予測モードの全ての演算を可能にするフィルタ演算器を示す図である。
【図８】本発明の実施の形態にかかるフィルタ演算器を示すブロック図である。
【図９】零検出器ｆ１、ｇ１のうち、零検出器ｆ１の検出結果を優先的に利用する一例を示す回路図である。
【図１０】特許文献１に記載されたブースアルゴリズムを用いた従来の乗算演算装置に含まれる部分積生成部を示す図である。
【図１１】特許文献２に記載のディジタルフィルタを示す図である。
【符号の説明】
【００９５】
ｆ１、ｆ２、ｇ１、ｇ２  零検出器
ｈ１、ｈ２  セレクタ制御部
ａ０、ｂ０、ｃ０、ａ１、ｂ１、ｃ１、ａ２、ｂ２、ｃ２、ａ３、ｂ３、ｃ３  ＢＴＤ・乗算部
１〜４、１１１〜１１４  部分積生成ユニット
１ａ、１ｂ、１ｃ、２ｂ、２ｃ、３ａ、３ｂ、３ｃ、４ｂ、４ｃ  部分積生成部
１０、１００  フィルタ演算器
１１、１２、２１、３１、３２、４１、４１３、４２３、４３３、４４３  ビットシフト部
１３、１４、１５、６０、３３、３４、３５  セレクタ
５１、１２０、４５０  加算器
２３０  画面内予測部
２３１  選択部
２３２  ラインメモリ部
２３３  フィルタ演算部
２３４  メモリ部
１２１ｎ  全加算器
１２２、４５４  レジスタ
１２４  半加算器
１７０  画像復号装置
１７１  圧縮データ
１７２  可変長復号部
１７３  逆量子化部
１７４  逆アダマール変換部
１７５  加算器
１７６  デブロッキングフィルタ
１７７  切替部
１７８  復号画像
１７９  モニタ
１８０  画面内予測部
１８１  重み付け予測部
１８２  動き補償部
１８３  予測画像
４００  乗算器
４１０〜４４０  部分積生成部
４１１、４２１、４３１、４４１  ブースデコーダ
４１２、４２２、４３２、４４２  乗算部
【図１】
0004519807.tif 000011
【図２】
0004519807.tif 000012
【図３】
0004519807.tif 000013
【図４】
0004519807.tif 000014
【図５】
0004519807.tif 000015
【図６】
0004519807.tif 000016
【図７】
0004519807.tif 000017
【図８】
0004519807.tif 000018
【図９】
0004519807.tif 000019
【図１０】
0004519807.tif 000020
【図１１】
0004519807.tif 000021