(57)【特許請求の範囲】
【請求項１】
入力データと乗数Ｘとをブースアルゴリズムを用いて積和演算する乗算器であって、
現在の入力データにおいて選択した第１グループと、次の入力データにおいて前記第１グループと対応する位置にて選択した第２グループとを加算又は減算する演算器と、
前記演算器の演算結果をブースのアルゴリズムに従ってエンコードして符号データを生成するブースエンコーダと、
前記符号データから部分積を第１部分積として算出すると共に、前記第１グループ及び第２グループが所定の組み合わせの場合にのみ発生する第２部分積を算出する部分積生成ユニットと、
前記部分積生成ユニットの出力を累積加算する加算器とを有し、
前記演算器は、前記入力データを下位から２ビットごとに区切り、各組と下位組の最上位ビットの計３ビットを前記グループ（ｙ２ｉ＋1，ｙ２ｉ，ｙ２ｉ−１）（ｉ≧０の整数）とし、各グループを順に選択して前記加算又は減算を実行し、
前記ブースエンコーダは、−２・ｙ２ｉ＋1＋ｙ２ｉ＋ｙ２ｉ−１により符号データを生成し、
前記所定の組み合わせは、第１グループ及び第２グループの上位１ビットが共に０又は１であって加算又は減算の演算後の下位から３ビット目が１となる組み合わせであり、
前記部分積生成ユニットは、符号データ×Ｘ×２ｉにより前記第１部分積を生成し、４×Ｘ×２ｉにより前記第２部分積を生成する、乗算器。
【請求項２】
前記部分積生成ユニットは、
前記第１部分積及び第２部分積のうち、符号データ×Ｘ、及び４×Ｘを演算する部分積乗算部と、
前記部分積乗算部の乗算結果を２ｉビットシフトするビットシフト部と、
前記演算器の前記演算結果に基づき前記部分積乗算部及びビットシフト部を制御する制御部とを有する
ことを特徴とする請求項１記載の乗算器。
【請求項３】
前記制御部は、前記演算器の前記演算結果について全ビット０又は１以外のとき、当該グループの部分積を生成するよう制御する
ことを特徴とする請求項２記載の乗算器。
【請求項４】
前記ブースエンコーダ及び部分積生成部の組を複数有する
ことを特徴とする請求項１記載の乗算器。
【請求項５】
予測画像を生成する動き補償処理装置であって、
垂直方向の入力データに対してフィルタ演算を行なう第１フィルタ演算部と、
水平方向の入力データに応じてフィルタ演算を行なう第２フィルタ演算部と、
前記第１及び第２フィルタ演算部の演算結果又は第１及び第２のフィルタ演算に入力する入力データに対して重み付けを行なう重み付け演算部とを有し、
前記第１及び第２フィルタ演算部は、入力データと乗数Ｘとをブースアルゴリズムを用いて積和演算するフィルタ演算部であって、
現在の入力データにおいて選択した第１グループと、次の入力データにおいて前記第１グループと対応する位置にて選択した第２グループとを加算又は減算する演算器と、
前記演算器の演算結果をブースのアルゴリズムに従ってエンコードして符号データを生成するブースエンコーダと、
前記符号データから部分積を第１部分積として算出すると共に、前記第１グループ及び第２グループが所定の組み合わせの場合にのみ発生する第２部分積を算出する部分積生成ユニットと、
前記部分積生成ユニットの出力を累積加算する加算器とを有し、
前記演算器は、前記入力データを下位から２ビットごとに区切り、各組と下位組の最上位ビットの計３ビットを前記グループ（ｙ２ｉ＋1，ｙ２ｉ，ｙ２ｉ−１）（ｉ≧０の整数）とし、各グループを順に選択して前記加算又は減算を実行し、
前記ブースエンコーダは、−２・ｙ２ｉ＋1＋ｙ２ｉ＋ｙ２ｉ−１により符号データを生成し、
前記所定の組み合わせは、第１グループ及び第２グループの上位１ビットが共に０又は１であって加算又は減算の演算後の下位から３ビット目が１となる組み合わせであり、
前記部分積生成ユニットは、符号データ×Ｘ×２ｉにより前記第１部分積を生成し、４×Ｘ×２ｉにより前記第２部分積を生成する、動き補償処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、動画の圧縮符号化復号に使用される動き補償処理におけるフィルタ演算を実行することができる乗算器及びこれを具備する動き補償処理装置に関する。
【背景技術】
【０００２】
次世代ＤＶＤ（Digital Versatile Disk）やＤＴＶ（デジタルテレビ）に採用が決定しているＨ．２６４／ＡＶＣやＶＣ−１といった新しいコーデックがある。これらの復号装置においては、動き補償部での動き補償予測フィルタのフィルタ演算をブースのアルゴリズムを適用した乗算器で構成される場合がある。
【０００３】
乗算器の演算時間は、部分積加算をするために必要とする時間と桁上げ信号吸収をするために必要な時間の総和であり、演算速度を高速にする上でこれらの処理時間の短縮が問題となる。その対策として加算回路を減らすために部分積の数そのものを削減する必要がある。そのためには乗数の連続する複数ビットを一まとめのグループにして、このグループに対応した部分積を生成すれば部分積を削減することができる。そこで部分積数削減のために用いられるのが２次のブースである。２次のブースとは、乗数を２ビットごとに区切り、各組と下位組の最上位ビットの計３ビットをひとまとめにするというアルゴリズムを適用した部分積削減の手法である。
【０００４】
しかしながら、上記のようなコーデックのフィルタ演算を行なう際、これをブースのアルゴリズムを適用した乗算器で構成すると、多数の乗算器が必要となり回路規模が増大する。また、同様にＨ．２６４の画面内予測における予測画像の生成に使用されるフィルタ演算をブースのアルゴリズムを適用した乗算器で適用すると回路規模は増大する。
【０００５】
ところで、特許文献１には、乗算器の数を極力少なくし、回路規模を小さくした離散コサイン変換器が開示されている。図１５は、特許文献１に記載の離散コサイン変換器を示す図である。この離散コサイン変換器は、加算器６１２、６４０、６４２、差分器６１０、レジスタ６１４、マルチプレクサ６１６、６５２、マルチプレクサ乗算器６１８、６２０、６２２、６３４、バタフライ加算器６２６、６２８、６３０、６３２、６４４、６４６、６４８、６５０、乗算器６２４、６３６、６３８、及び量子化器６５４を有する。画像データの交流成分として差分器６１０による差分データを得て、これに対しＤＣＴを行う。そして、差分についてのＤＣＴとすることによって、必要な係数の数が少なくなるため、乗算器の数を減少できる。さらに、同一の係数を異なるデータに対し乗算する場合にはマルチプレクサ乗算器６１８、６２０、６２２、６３４を用い、時分割で乗算を行う。このため、乗算器の数をさらに減少することができる。また、乗算すべき係数を量子化器６５４の量子化テーブルに対し予め乗算しておくため、乗算回数を減少することができる。このように、特許文献１に記載の離散コサイン変換器は、離散コサイン変換の特性を利用し、乗算とバタフライ演算を利用して高速に同演算を実行するものである。
【０００６】
また、特許文献２には、モンゴメリ乗算剰余の多倍長演算を行う回路において、ブロック単位演算器における減算のための遅延時間を短縮し、更に減算回路を別途必要とせず、動作周波数を維持したままで演算を行うことを目的とした乗算装置が開示されている。
【０００７】
この乗算装置においては、ビットパターンで表された被乗数Ａと乗数Ｂの乗算を行う。このため、被乗数Ａから２次ブースアルゴリズムにおける複数の部分積を生成する部分積生成手段と、乗数Ｂを２次ブースアルゴリズムによりエンコードして、乗数Ｂの連続する３つのビットであるｂ２ｉ＋１、ｂ２ｉ、およびｂ２ｉ−１を指定するｉの値に応じた選択信号を出力するエンコーダ手段と、選択信号に応じて、複数の部分積のいずれかを選択して出力する選択手段と、選択手段から出力される、ｉの数と同じ数だけの部分積を加算して、乗算結果を生成する加算手段とを備える。そして、エンコーダ手段が、ｉが０のときには−Ａを表す部分積を選択するための選択信号を出力し、ｉが０以外のときには０を表す部分積を選択するための選択信号を出力し、加算手段が、該−Ａを表す部分積から被乗数Ａの２の補数を生成して、被乗数Ａの２の補数を乗算結果として出力するような動作モードを設ける。
【特許文献１】特開平６−４４２９１号公報
【特許文献２】特開２００４−２５８１４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載の離散コサイン変換器においては、高速に乗算を実施するために、大規模な乗算器を使用するため回路規模が大きいという問題点がある。また汎用的に処理させるために、特に画像の性質を利用するものではないため、演算精度が求められる場合には、その分だけ演算器も演算精度分だけ回路規模も大きくなり、消費電力増大につながる。特許文献２に記載の技術においても、同様に回路規模が大きく、消費電力が増大するという問題点がある。
【課題を解決するための手段】
【０００９】
本発明に係る乗算器は、入力データと乗数Ｘとをブースアルゴリズムを用いて積和演算する乗算器であって、現在の入力データにおいて選択した第１グループと、次の入力データにおいて前記第１グループと対応する位置にて選択した第２グループとを加算又は減算する演算器と、前記演算器の演算結果をブースのアルゴリズムに従ってエンコードして符号データを生成するブースエンコーダと、前記符号データから部分積を第１部分積として算出すると共に、前記第１グループ及び第２グループが所定の組み合わせの場合にのみ発生する第２部分積を算出する部分積生成ユニットと、前記部分積生成ユニットの出力を累積加算する加算器とを有し、前記演算器は、前記入力データを下位から２ビットごとに区切り、各組と下位組の最上位ビットの計３ビットを前記グループ（ｙ２ｉ＋1，ｙ２ｉ，ｙ２ｉ−１）（ｉ≧０の整数）とし、各グループを順に選択して前記加算又は減算を実行し、前記ブースエンコーダは、−２・ｙ２ｉ＋1＋ｙ２ｉ＋ｙ２ｉ−１により符号データを生成し、前記所定の組み合わせは、第１グループ及び第２グループの上位１ビットが共に０又は１であって加算又は減算の演算後の下位から３ビット目が１となる組み合わせであり、前記部分積生成ユニットは、符号データ×Ｘ×２ｉにより前記第１部分積を生成し、４×Ｘ×２ｉにより前記第２部分積を生成するものである。
【００１０】
本発明に係る動き補償処理装置は、予測画像を生成する動き補償処理装置であって、垂直方向の入力データに対してフィルタ演算を行なう第１フィルタ演算部と、水平方向の入力データに応じてフィルタ演算を行なう第２フィルタ演算部と、前記第１及び第２フィルタ演算部の演算結果又は第１及び第２のフィルタ演算に入力する入力データに対して重み付けを行なう重み付け演算部とを有し、前記第１及び第２フィルタ演算部は、入力データと乗数Ｘとをブースアルゴリズムを用いて積和演算するフィルタ演算部であって、現在の入力データにおいて選択した第１グループと、次の入力データにおいて前記第１グループと対応する位置にて選択した第２グループとを加算又は減算する演算器と、前記演算器の演算結果をブースのアルゴリズムに従ってエンコードして符号データを生成するブースエンコーダと、前記符号データから部分積を第１部分積として算出すると共に、前記第１グループ及び第２グループが所定の組み合わせの場合にのみ発生する第２部分積を算出する部分積生成ユニットと、前記部分積生成ユニットの出力を累積加算する加算器とを有し、前記演算器は、前記入力データを下位から２ビットごとに区切り、各組と下位組の最上位ビットの計３ビットを前記グループ（ｙ２ｉ＋1，ｙ２ｉ，ｙ２ｉ−１）（ｉ≧０の整数）とし、各グループを順に選択して前記加算又は減算を実行し、前記ブースエンコーダは、−２・ｙ２ｉ＋1＋ｙ２ｉ＋ｙ２ｉ−１により符号データを生成し、前記所定の組み合わせは、第１グループ及び第２グループの上位１ビットが共に０又は１であって加算又は減算の演算後の下位から３ビット目が１となる組み合わせであり、前記部分積生成ユニットは、符号データ×Ｘ×２ｉにより前記第１部分積を生成し、４×Ｘ×２ｉにより前記第２部分積を生成するものである。
【００１１】
本発明においては、第１グループ及び第２グループの上位１ビットが共に０又は１であって加算又は減算の演算後の下位から３ビット目が１となる組み合わせの場合にのみ第２部分積を生成する。これにより、通常の方法で求める第１部分積に第２部分積を加算して入力データを３ビット毎に分けた部分積を生成することができ、前後のデータの差分を求める演算の際の減算器の回路規模を縮小することができる。
【発明の効果】
【００１２】
本発明によれば、ハードウェア量及び消費電力を削減することができるブースアルゴリズムを利用した乗算器及び動き補償装置を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。本実施の形態は、ブースアルゴリズムを利用したフィルタ演算器であって、画像の性質を利用し、隣接画素（現在のデータと１つ前のデータ）間の画素値の差分量が小さいことを利用して回路規模を削減する装置において、隣接画素間の差分を取る際に、ブースエンコーダがエンコードするビット単位で減算を行うことにより演算器の規模を削減するものである。なお、本実施の形態においては、前後のデータを減算する場合について説明するが、後述するように、前後のデータを加算する場合にも適用することができる。
【００１４】
先ず、本実施の形態にかかるフィルタ演算器を適用することができる画像復号装置について説明する。ここでは、一例として、Ｈ.２６４及びＶＣ−１における動き補償処理におけるフィルタ演算を実行するフィルタ演算器に適用した場合について説明する。なお、本発明は、Ｈ．２６４及びＶＣ−１の両規格におけるフィルタ演算が可能な動き補償回路について説明するが、Ｈ．２６４のみのフィルタ演算を行なう動き補償回路、ＶＣ−１のみのフィルタ演算を行なう動き補償回路、又はその他ＭＰＥＧ（Moving Picture Experts Group）２、４等のフィルタ演算器にも適用可能であることは勿論である。
【００１５】
先ず、Ｈ.２６４、ＶＣ−１の画像復号装置について説明する。図１及び図２は、それぞれＨ.２６４及びＶＣ−１に準拠して符号化された圧縮画像を復号する復号装置を示すブロック図である。Ｈ．２６４は、ＭＰＥＧ４  ＡＶＣ（Advanced Video Coding）とも呼ばれ、データ圧縮率は、ＭＰＥＧ−２の２倍以上、ＭＰＥＧ−４の１．５倍以上とすることができる圧縮符号化方式である。また、ＶＣ−１（Windows Media Video（ＷＭＶ）９）（登録商標）はマイクロソフト社が開発した動画圧縮技術であり、Ｈ．２６４と同程度のデータ圧縮率を有する。これらのアドバンスドコーデック（高圧縮コーデック）は、ブルーレイディスク等の次世代ＤＶＤ規格に適用される。
【００１６】
図１に示すように、Ｈ.２６４の画像復号装置１００は、可変長復号部１０２と、逆量子化部１０３と、逆アダマール変換部１０４と、加算器１０５と、デブロッキングフィルタ１０６と、動き補償部１１２と、重み付け予測部１１１と、画面内予測部１１０と、復号画像１０８を表示するモニタ１０９を有する。
【００１７】
可変長復号部１０２は、圧縮データ１０１が入力され可変長符号化された圧縮データを、変換テーブルに基づき可変長復号する。そして、可変長復号された復号データは、逆量子化部１０３にて逆量子化され、逆アダマール変換部１０４にて逆アダマール変換され加算器１０５へ送られる。加算器１０５の出力は、デブロッキングフィルタ１０６によりブロック歪を除去され、復号画像１０８とされ、モニタ１０９を介して表示される。
【００１８】
ここで、加算器１０５の出力が画面内予測部１１０にも入力され、予測画像１１３が生成される。また、復号画像が動き補償部１１２にて動き補償処理が行なわれ、重み付け予測部１１１にて重み付けされて予測画像１１３が生成される。加算器１０５は、Ｉフレーム処理の際には画面内予測部１１０からの予測画像１１３に予測誤差を加算し出力する。一方、Ｐ、Ｂフレーム処理の際には、切替部１０７にて切り替え、重み付け予測部１１１から送られる予測画像１１３に予測誤差を加算して出力する。
【００１９】
また、図２に示すように、ＶＣ−１の画像復号装置２００も、画像復号装置１００とほぼ同様に構成され、可変長復号部２０２、逆量子化部２０３、逆ＤＣＴ変換部２０４、加算器２０５、ループフィルタ２０６、重み付け予測部２０９、動き補償部２１０、及び復号画像２０７を表示するモニタ２０８を有する。ＶＣ−１の画像復号装置２００は、画面内予測を行なわない点、重み付け予測を行なってから動き補償処理を行う点、デブロッキングフィルタ１０６の代わりにループフィルタ２０６が使用される点が異なる。
【００２０】
図３は、Ｈ.２６４及びＶＣ−１の規格に準拠したフィルタ演算を含む動き補償処理を実行する動き補償（ＭＣ）部を示すブロック図である。この動き補償部３００は、Ｈ．２６４及びＶＣ−１のいずれの動き補償部でも使用可能な構成とされている。すなわち、両規格にて共有できる。この動き補償部３００は、フィルタ演算部３０２、３０３と、セレクタ３０１、３０４、３０７、３１０、３１３と、乗算器３１２、加算器３０６、３０８、３１１と、ラインメモリ３０９とを有する。
【００２１】
Ｈ．２６４では、フィルタ演算部３０２、３０３にてフィルタ演算施した後、上述した重み付け係数を使用してオフセット付き重み補間信号を求め、予測画像２１１を得る。ここで、入力ＩＮから入力された参照ピクチャＲ０の画素値が、フィルタ演算部３０２にて垂直方向フィルタによるフィルタ演算が実行され、フィルタ演算部３０３にて水平方向フィルタによるフィルタ演算が施される。そして、生成されたフィルタ演算済みのデータがラインメモリ３０９に格納される。次に、参照ピクチャＲ１の画素値が入力ＩＮから入力されると、同様に、フィルタ演算部３０２、３０３にてフィルタ演算が施され、フィルタ演算済みのデータに乗算器３０５にて重み係数を乗算し、加算器３０６にてオフセット値を加算する。一方、ラインメモリに格納されているデータがセレクタ３１３を介して乗算器３１２にて重み付き係数と乗算され、これらが加算器３０８にて加算され、オフセット付き重み補間信号Ｗ０Ｘ０＋Ｗ１Ｘ１＋Ｄを生成する。生成されたデータは、ラインメモリ３０９を経て出力ＯＵＴから出力される。
【００２２】
ＶＣ−１の場合は、入力ＩＮからのデータがセレクタ３１３、セレクタ３１０を介し、更にセレクタ３０４から乗算器３０５、加算器３０６を介し、そしてセレクタ３０１を介してフィルタ演算部３０２、３０３に入力される。フィルタ演算部３０３の結果は、セレクタ３０４、セレクタ３０７を介してそのままラインメモリ３０９へ格納され、出力ＯＵＴから出力される。乗算器３１２、加算器３１１、乗算器３０５、加算器３０６では、以下の重み付けが実行される。
Ｈ＝（ｉＳｃａｌｅ×Ｆ＋ｉＳｈｉｆｔ＋３２）＞＞６
ここで、Ｆは入力値、ｉＳｃａｌｅ、ｉＳｈｉｆｔは重み係数を示す。
【００２３】
このように構成された動き補償部３００は、セレクタ３０１、３０４、３０７、３１０、３１３にてフィルタ演算部３０２、３０３への入力、出力を適宜選択するため、重み付けをフィルタ演算後に実行するＨ．２６４であっても、重み付けをフィルタ演算前に実行するＶＣ−１であっても、いずれの演算にも適用可能である。
【００２４】
次に、このような動き補償部等に使用することができるフィルタ演算部について詳細に説明する。なお、上記においては、Ｈ．２６４やＶＣ−１を例にとって説明したが、本実施の形態にかかるフィルタ演算器は、ＭＰＥＧ４、２などにおけるフィルタ演算部としても使用することが可能である。また、フィルタ演算に拘わらず一般の乗算回路として利用することも可能である。図４は、フィルタ演算部３０２、３０３の詳細を示す図であって、本実施の形態にかかるフィルタ演算器を示すブロック図である。なお、フィルタ演算部３０２、３０３は同様の構成を有する。図４に示すフィルタ演算器１は、フィルタ乗算ユニット１０と、加算器３１、リミッタ回路３２及びフリップフロップ３３を有する。なお、図４においては、フィルタ乗算ユニット１つ示すが、１つに限らず、フィルタ乗算ユニットはフィルタ係数の個数に応じて適宜設けるものとする。下記表１は、Ｈ．２６４及びＶＣ−１における輝度信号Ｇｙ、色差信号Ｇｃに対するフィルタ係数を示す。
【００２５】
【表１】
0004988627.tif 000002
【００２６】
この表１に示すように、Ｈ．２６４は、輝度信号Ｇｙが６タップフィルタ、色差信号Ｇｃは２タップフィルタのフィルタ演算となる。また、ＶＣ−１の輝度信号Ｇｙが４タップフィルタ、色差信号Ｇｃは２タップフィルタのフィルタ演算となる。このため、図４に示に示すフィルタ演算器１は、例えば６個のフィルタ乗算ユニット１０を有する。なお、フィルタ乗算ユニットを１つとして繰り返し演算を行なうようにしてもよい。
【００２７】
ここで、本実施の形態にかかるフィルタ演算器は、ブースのアルゴリズムを使用して乗算を行うフィルタ演算器である。そこで、本実施の形態にかかるフィルタ演算器の理解を容易とするため、先ず、２次のブースアルゴリズムを利用した乗算器について説明する。
【００２８】
乗数Ｙを符号付き８ビット整数
Ｙ＝−ｙ[７]・２７＋ｙ[６]・２６＋ｙ[５]・２５＋ｙ[４]・２４＋ｙ[３]・２３＋ｙ[２]・２２＋ｙ[１]・２１＋ｙ[０]・２０
とすると、任意整数である被乗数Ｘとの積Ｐ＝Ｘ×Ｙは以下のようになる。
【００２９】
【数１】
0004988627.tif 000003
【００３０】
この（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を算出するものをブースエンコーダ、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉを部分積という。ここで、本明細書においては、ブースエンコーダにより求められるエンコード値（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を符号データということとする。また、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉ（部分積）を生成する回路を部分積生成ユニット、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉのうち、符号データ（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を求める回路をブースエンコーダ、符号データ×被乗数からなる演算を行ない部分積を求める回路を乗算部、部分積のうち、×２２ｉの演算を実行する部分をビットシフト部、乗算部及びビットシフト部からなり、各ｉに対応した部分積を生成する回路を部分積生成部ということとする。
【００３１】
ここで、下記表２に示すように、符号データ（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）の値の組み合わせは８通りしかなく、０、±１、±２の値のみしかとらない。よって、乗算器は、０、±Ｘ、±２Ｘに２２ｉを乗算した値（部分積）を算出して加算する値の組み合わせの対応（真理値表）として書ける。また、符号データの値は８通りしかないため、ブースエンコーダは、単なる組み合わせ論理回路により得ることができる。
【００３２】
【表２】
0004988627.tif 000004
【００３３】
０、±Ｘ、±２Ｘのうち、２Ｘの生成は１ビットのシフトで行なうことができる。一方、負数の生成は被乗数Ｘが２の補数表現であるのでＸの各ビットを反転させ最下位ビットに１を加えればよい。これを実現するために、例えば、符号データ（−２・ｙ[２ｉ＋１]＋ｙ[２ｉ]＋ｙ[２ｉ-１]）を生成する回路（ブースエンコーダ）は、乗数Ｙの入力に対して部分積の絶対値（０、Ｘ、２Ｘ）を選択するための２つの信号と反転を選択するための１つの信号とからなる３つの信号を生成する。また、乗算部は、この３つの信号を受けて、絶対値が０の場合は０を、Ｘの場合は被乗数Ｘ を、２Ｘの場合は被乗数Ｘを１ビットシフトしたものを選択し、さらに、反転が必要な場合はその値を反転させて部分積を生成することができる。さらに、×２２ｉを実行するビットシフト部は、単純にビット線を２ｉだけシフトさせればよい。
【００３４】
図５は、このような２次のブースのアルゴリズムに従って乗算を実行する乗算器を示すブロック図である。乗算器４００は、被乗数Ｘを出力するレジスタＦ０と、乗数Ｙを出力するレジスタＦ７を有する。更に、乗数Ｙ及び被乗数Ｘが入力され部分積を生成する部分積生成ユニット４０１と、部分積生成ユニット４０１にて生成された部分積を加算する加算器４５０とを有する。部分積生成ユニット４０１は、４つのブースエンコーダ４１０、４２０、４３０、４４０及び４つの部分積生成部４５０、４６０、４７０、４８０を有する。
【００３５】
ブースエンコーダ４１０、４２０、４３０、４４０は、上述したように、乗数Ｙのうち所定ビットが入力され、ブースのアルゴリズムに従って符号データ（０、±１、±２）を生成する。
【００３６】
各部分積生成部４５０、４６０、４７０、４８０は、被乗数Ｘが入力され、ブースエンコーダにより得られた符号データと被乗数Ｘとの乗算結果を出力する乗算部と、乗算部の演算結果のビットシフトを行なうビットシフト部とから構成されるものとする。
【００３７】
各ブースエンコーダ４１０、４２０、４３０、４４０及び各部分積生成部４５０、４６０、４７０、４８０は、Ｘ×（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])×２２ｉの"ｉ"に対応したものとなっており、例えば乗数Ｙが８ビット（ｙ０〜ｙ７とする）であれば、ｉ＝０〜３であり、それぞれ（−２・ｙ１＋ｙ０＋０)、（−２・ｙ３＋ｙ２＋ｙ１）、（−２・ｙ５＋ｙ４＋ｙ３）、（−２・ｙ７＋ｙ６＋ｙ５)及びＸ×（−２・ｙ１＋ｙ０＋０)×２０、Ｘ×（−２・ｙ３＋ｙ２＋ｙ１）×２２、Ｘ×（−２・ｙ５＋ｙ４＋ｙ３）×２４、Ｘ×（−２・ｙ７＋ｙ６＋ｙ５)×２６を求める。図５においては、これらの部分積を求める部分積生成部を、それぞれ４５０、４６０、４７０、４８０としている。なお、本実施の形態においては、ブースエンコーダでエンコードする乗数Ｙが８ビットを例にとって説明するが、これ未満、又は以上であってもよいことは勿論である。その場合は、部分積生成部の個数を適宜調整すればよい。
【００３８】
次に、実際の演算を例にとって、この乗算器４００の動作について説明する。８ビットの乗数Ｙは、図６（ａ）のように表すことができる。乗数を２ビットごとに区切り、各組と下位組の最上位ビットの計３ビット（ただしｙ−１＝０）のデータから符号データが得られる。これらに被乗数Ｘを乗算し、対応するビットシフト（×２ｉ）を演算することで部分積を生成することができる。このため、図６（ｂ）に示すように、レジスタＦ７は８ビットを出力するシフトレジスタからなり、乗数Ｙ｛ｙ０〜ｙ７｝を出力する。このときブースエンコーダ４１０には、乗数Ｙのうち下位２ビット{ｙ０、ｙ１}、ブースエンコーダ４２０、４３０、４４０にはそれぞれ、{ｙ１、ｙ２、ｙ３}、{ｙ３、ｙ４、ｙ５}、{ｙ５、ｙ６、ｙ７}を入力する。ブースエンコーダ４１０は、入力されたこれらの所定ビットから符号データを生成する。得られた符号データは、対応する部分積生成部４５０、４６０、４７０、４８０に入力される。部分積生成部４５０、４６０、４７０、４８０は、得られた符号データと被乗数Ｘとの乗算を行なうそれぞれ乗算部４５１、４６１、４７１．４８１と、乗算結果を所定ビットシフトするビットシフト部４５２、４６２、４７２、４８２とを有する。ここでは、被乗数Ｘ＝３５８（１６６Ｈ）、乗数Ｙ＝１２３（７ＢＨ）の乗算について説明する。下記表３は、演算工程における各出力値を示す。
【００３９】
【表３】
0004988627.tif 000005
【００４０】
Ｘ×Ｙ＝３５８×１２３＝４４０３４（ＡＣ０２Ｈ）
Ｙ＝１２３（７ＢＨ）
＝(−２・０＋１＋１)・２６
＋（−２・１＋１＋１）・２４
＋（−２・１＋０＋１）・２２
＋（−２・１＋１＋０）・２０
＝２・２６＋０・２４＋（−１）・２２＋（−１）・２０
よって、下記となる。
Ｘ×Ｙ＝{（２×３５８）×２６}    ・・・部分積生成部４５０にて演算
＋{（０×３５８）×２４}    ・・・部分積生成部４６０にて演算
＋{（−１×３５８）×２２}    ・・・部分積生成部４７０にて演算
＋{（−１×３５８）×２０}    ・・・部分積生成部４８０にて演算
【００４１】
先ず、被乗数入力部Ｆ０からは"３５８"が各部分積生成部４５０、４６０、４７０、４８０に入力される。乗数入力部Ｆ７からは、各ブースエンコーダ４１０、４２０、４３０、４４０に、それぞれ{ｙ０、ｙ１}＝{１、１}、{ｙ１、ｙ２、ｙ３}＝{１、０、１}、{ｙ３、ｙ４、ｙ５}＝{１、１、１}、{ｙ５、ｙ６、ｙ７}＝{１、１、０}が入力される。ブースエンコーダ４１０、４２０、４３０、４４０は入力された所定ビットから、それぞれ（−２・ｙ[２ｉ＋１}＋ｙ[２ｉ]＋ｙ[２ｉ-１])＝（−２・ｙ１＋ｙ０＋０)、（−２・ｙ３＋ｙ２＋ｙ１）、（−２・ｙ５＋ｙ４＋ｙ３）、（−２・ｙ７＋ｙ６＋ｙ５)の演算に対応する符号データを出力する。上記の式より本例では、各ブースエンコーダ４１０、４２０、４３０、４４０は、それぞれ、"−１"、"−１"、"０"、"２"を出力する。
【００４２】
各乗算部４５１、４６１、４７１、４８１は、上記符号データ×被乗数Ｘを演算して、それぞれビットシフト部４５２、４６２、４７２、４８２へ入力する。ビットシフト部４５２はそのまま加算器４９０へ出力する。なお、本例においては説明の明確のため、１ビットシフトのビットシフト部４５２を設けているが設ける必要はない。ビットシフト部４６２、４７２、４８２は、受け取った結果をそれぞれ２ビット、４ビット、６ビットシフトさせた後、加算器４５０へ入力する。
【００４３】
本例の加算器４９０は、全加算器（フルアダー）４９１、４９２と、半加算器（ハーフアダー）４９３と、結果を受け取るレジスタ４９４とを有する。各部分積生成部４５０、４６０、４７０、４８０から入力された値は、加算器４９０にて加算され、乗算結果Ｐとして出力される。
【００４４】
このように、２次のブースのアルゴリズムを使用すると、乗数を、０、±１、±２の符号データ×２２ｉとし、被乗数と演算を行なわせるので、部分積の個数が略半分となる。よって加算器にて加算する部分積の個数を略半減させることができるので、乗算器を小型化することができる。
【００４５】
このような部分積生成ユニットを使用するとフィルタ演算器は図７に示すような演算回路となる。図７は、従来の構成のフィルタ演算器を示す図である。すなわち上述したように、例えば８ビットであれば４つの部分積生成部を要し、例えば１０ビットであれば５つの部分積生成部を要する。なお、図７には簡単のため３つの部分積生成部のみを示している。
【００４６】
図７を簡単に説明すると、フィルタ演算器５０１はレジスタ（フリップフロップ：ＦＦ）５０２、５１０、５１２、５１４、５１７、ブースエンコーダ５０３〜５０５、部分積生成部５０６〜５０８、加算器５０９、５１３、５１５、リミッタ回路５１６を有する。画素データが乗数Ｙとして入力されＦＦ５０２に保持される。ＦＦ５０２から、各ビットに応じて設けられたブースエンコーダ５０３〜５０５へ値が入力され符号データを生成する。その符号データが対応する部分積生成部５０６〜５０８へ入力され部分積が生成される。加算器５０９はそれを加算し、上位ビットと下位ビットをそれぞれＦＦ５１０、５１２に入力される。加算器５１３はＦＦ５１０及びＦＦ５１２からの値を加算してＦＦ５１４に出力する。加算器５１５はＦＦ５１４からの値とフィルタ係数Ｂとを加算し、リミッタ回路５１６は加算器５１５の値を例えば０〜２５５の範囲に制限してＦＦ５１７へ出力する。
【００４７】
このフィルタ演算器は、
[出力画素]＝Ｌｉｍ（[入力画素]×Ａ＋Ｂ）
の演算を実行する。ここで、Ａはフィルタ係数を示す。Ｂは各フィルタ演算において必要に応じて加算される所定の定数である。従来のフィルタ演算器においては、外部のメモリ等から読み出したデータは、バースト的に読み出される。この際、通常、高速演算する場合は、大規模な乗算器によりパイプライン処理する方式になっている。このため、例えば入力画素データが１０ビットであれば部分積生成部が５つ必要となり、回路規模が大きく、よって消費電力も大きい。
【００４８】
そこで、本実施の形態においては、図７示す部分積生成部５０３〜５０５を１つの部分積生成部とし、１つの部分積生成部を繰り返し使用することで回路規模を縮小し、消費電力を削減する。さらに、隣接する画素値の差分データを用いることで演算値を小さい値とすることができ、演算処理時間の更なる短縮化を図る。この理由について説明する。図８は、画像について水平方向の隣り合った画素間の差信号の振幅分布を示す図である（画像情報圧縮、テレビジョン学会偏、Ｐ７１）。横軸は振幅、縦軸は周波数を示す。差信号は０近傍の狭い範囲に集中する。よって、減算器により差信号を求めることで、０に近い値とすることができる。差分データとして入力を０に近い値とすることで、部分積生成部の繰り返し演算回数を最小限とすることができ、演算処理時間を短縮化することができる。
【００４９】
ところで、このように入力データを前後のデータで減算すると、入力データのビット幅分の減算器が必要となる。当該減算器は回路規模が大きい。そこで、本実施の形態においては、この減算器の規模を削減する。
【００５０】
以下、本実施の形態におけるフィルタ乗算ユニット１０について更に詳細に説明する。図９は、図４に示すフィルタ乗算ユニット１０に含まれるブースエンコーダユニット１７の詳細を示す図である。図４、図９に示すように、フィルタ乗算ユニット１０は、現在の入力データにおいて選択した第１グループと、次の入力データにおいて第１グループと対応する位置にて選択した第２グループとを加算又は減算する演算器としての加算器（４３、４４）と、演算器の演算結果をブースのアルゴリズムに従ってエンコードして符号データを生成するブースエンコーダ４５と、符号データから部分積を第１部分積として算出すると共に、第１グループ及び第２グループが所定の組み合わせの場合にのみ発生する第２部分積を算出する部分積生成ユニット（１９、２０、２１、２２）と、部分積生成ユニットの出力を累積加算する加算器２４とを有する。
【００５１】
加算器４３、４４は、ＥＸＯＲ回路４２と共に、入力データを下位から２ビットごとに区切り、各組と下位組の最上位ビットの計３ビットをグループ（ｙ２ｉ＋1，ｙ２ｉ，ｙ２ｉ−１）（ｉ≧０の整数）とし、各グループを順に選択して減算を実行する。ブースエンコーダ４５は、上述したように、−２・ｙ２ｉ＋1＋ｙ２ｉ＋ｙ２ｉ−１により符号データを生成する。部分積生成ユニットは、第１部分積を生成する第１部分積生成部と、第２部分積を生成する第２部分積生成部から構成される。第１部分積生成部は乗算部２０とビットシフト部２２から構成され、第２部分積生成部は、乗算部１９とビットシフト部２１から構成される。上記所定の組み合わせとは、第１グループ及び第２グループの上位１ビットが共に０又は１であって減算の演算後の下位から３ビット目が１となる組み合わせである。第１部分積生成部は、符号データ×Ｘ×２ｉにより第１部分積を生成し、第２部分積生成部は、所定の組み合わせの場合にのみ４×Ｘ×２ｉにより第２部分積を生成する。
【００５２】
フィルタ乗算ユニット１０は、ブースエンコーダユニット１７、乗算部１９、２０、ビットシフト部２１、２２及び加算器２４の他に、フリップフロップ１１、選択器１３、１４、セレクタ１５、制御部２３、レジスタ１８、セレクタ２６、及びＦＦ２５を有する。
【００５３】
ＦＦ１１は、次の入力データとの差分を取るために入力データを所定期間保持するレジスタである。選択器１４は、１つ前の入力データから第１グループ{ａ２ｉ＋１，ａ２ｉ，ａ２ｉ−１}を選択し、選択器１３は、次の入力データから第２グループ{ｂ２ｉ＋１，ｂ２ｉ，ｂ２ｉ−１}を選択する。例えば選択器１３の入力データを{ａ０，ａ１，ａ２，ａ３，ａ４，ａ５，ａ６，ａ７}とすると、第１グループとして、{ａ０，ａ１}、{ａ０，ａ１，ａ２}、{ａ３，ａ４，ａ５}、{ａ５，ａ６，ａ７}を順次選択する。選択器１４の入力データを{ｂ０，ｂ１，ｂ２，ｂ３，ｂ４，ｂ５，ｂ６，ｂ７}とすると、第１グループとして、{ｂ０，ｂ１}、{ｂ０，ｂ１，ｂ２}、{ｂ３，ｂ４，ｂ５}、{ｂ５，ｂ６，ｂ７}を順次選択する。カウンタ１６は、新たな入力データが入力される際はセレクタ１５で０を選択し、それ以外は選択器１３、１４がデータを選択する毎にカウントアップし、制御部２３は、このカウンタ値を参照して、選択器１３、１４が順次上記第１グループ、第２グループを選択できるように制御する。
【００５４】
ブースエンコーダユニット１７は、ブースのアルゴリズムに従って符号データを出力すると共に、第１グループと第２グループとが所定の組み合わせのときには"１"を出力する。ブースエンコーダユニット１７は、符号データ出力部４０と、桁上がりビット算出部５０とを有する。符号データ出力部４０は、ＥＸＯＲ回路４２と、セレクタ４１と加算器４３、４４と、ブースエンコーダ４５とを有する。
【００５５】
符号データ出力部４０には、現在の入力データから選択された３ビット（第１グループ：Ａ）と、１つ前の入力データから選択された３ビット（第２グループ：Ｂ）とが入力される。第２グループは、ＥＸＯＲ回路４２の一方の入力に入力される。他方の入力は、通常は１が入力され、第２グループＢを反転した第２グループを出力する。更にセレクタ４１にて"１"が選択されて入力される。これにより、加算器４３に第１グループＡと第２グループＢの反転及び"１"が入力されることとなり、これらを加算することで、第１グループＡと第２グループＢの差が求まる。なお、本フィルタ乗算ユニットは後述するように一般的な乗算器として使用することも可能であり、第１グループと第２グループの差ではなく、和を求める場合もありうる。その場合、ＥＸＯＲ回路の他方の入力から０を入力すればよい。
【００５６】
加算器４３は、第１グループＡと第２グループＢ'（Ｂの反転結果に"０１０"を加算したもの）が入力され、その演算結果（和Ｓ、桁上げＣ）を出力する。なお、反転して加算した際、正しく減算が行われるように３入力の残りの入力からセレクタ４１にて選択された"１"が入力される。ブースのアルゴリズムに従って、最初の３ビットは、最下位２ビット（上記の例では{ａ０，ａ１}、{反転ｂ０，反転ｂ１}）に、最下位に１ビットの"０"が付加される（{ａ０，ａ１，０}、{反転ｂ０，反転ｂ１，０}）ため、"１"は、"００１"ではなく"０１０"となり、第２グループＢ'は{反転ｂ０，反転ｂ１＋１，０}）となる。
【００５７】
加算器４４は、加算器４３の演算結果から第１グループＡと第２グループＢ'の和（第１グループＡと第２グループＢの差）を出力する。以下これを減算結果Ｙという。この減算結果Ｙは、ブースエンコーダ４５に入力されると共に制御部２３に入力される。ブースエンコーダ４５は、この減算結果Ｙから符号データ（０，±１，±２）を出力する。
【００５８】
制御部２３は、符号データ出力部４０から減算結果Ｙを受け取り、この値に基づき乗算部２０、ビットシフト部２２の動作を制御する。つまり、減算結果Ｙ（３ビット）＝（１１１）又は（０００）の場合、部分積生成を生成する必要がないため、乗算部２０、ビットシフト部２２の演算を省略することができる。一方、符号データが（１１１）又は（０００）以外の場合は、レジスタ１８の値を使用して、符号データ×Ｘ×２ｉの演算を乗算部２０、ビットシフト部２２に実行させる。
【００５９】
桁上がりビット算出部５０は、図１０に示す真理値表出力を表している。例えば図９のＡＮＤ回路５１、５５、５７と、ＯＲ回路５２、５６と、ＥＸＯＲ回路５３と、インバータ５４を有する。桁上がりビット算出部５０の出力は、ＡＮＤ回路５７で構成される回路の出力になる。この出力は、図１０に示すようになる。図１０は、桁上がりビット算出部５０の真理値表を示す図である。縦方向に示すのが第１グループＡの値、横方向に示すのが第２グループＢ'の値である。この桁上がりビット算出部５０は、上位１ビットが共に０又は１であって減算結果Ｙの下位から３ビット目が１となる場合にのみ、"１"を出力し、これ以外の組み合わせでは"０"を出力する回路である。ただし、グループＡ，グループＢ'の組み合わせが（０００，１００）、（０１０，１００）、（１００，０００）、（１１０，０００）の場合であって、最下位２ビットの演算（初回の演算）の場合には、桁上がりビット算出部５０は"０"ではなく、"１"を出力する。すなわち、（グループＡ，グル―プＢ）＝（｛ａ１，ａ０，０｝，{反転ｂ１，反転ｂ０＋１，１}）＝（０００，１００）、（０１０，１００）、（１００，０００）、（１１０，０００）の場合の桁上がりビット算出部５０の出力は０ではなく１となる。
【００６０】
制御部２３は、桁上がりビット算出部５０の出力が"１"の場合にのみ、乗算部１９、ビットシフト部２１により、レジスタ１８からの値Ｘを使用して、４×Ｘ×２ｉの演算を実行させる。なお、桁上がりビット算出部５０の構成は、図９に示す構成に限るものではなく、第１グループＡ、及び第２グループＢ'の上位１ビットが共に０又は１であって減算結果Ｙの下位から３ビット目が１となる場合にのみ、"１"を出力する回路であればどのような回路であってもよいことは勿論である。なお、図９に示す桁上がりビット算出部５０は、単純に上位１ビットが共に０又は１であって減算結果Ｙの下位から３ビット目が１となる場合にのみ、"１"を出力し、これ以外の組み合わせでは"０"を出力する回路として記載してあるが、上述したように、最下位２ビットから符号データを求める場合であって、上記４つの組み合わせの場合には、０ではなく１を出力するよう構成される。
【００６１】
ＦＦ２５は、加算器２５の結果を保持し、セレクタ２６を介して加算器２５に再度入力する。以上の演算結果は、加算器３１に入力される。加算器３１はＦＦ２５からの値とフィルタ係数Ｙとを加算し、リミッタ回路３２は加算器３１の値を例えば０〜２５５の範囲に制限してＦＦ３３へ出力する。
【００６２】
次に、ブースエンコーダユニット１７の動作について、具体的な数値を利用して説明する。図１１は、ブースエンコーダユニット１７の計算方法を説明するための図である。今現在の入力データが９２、次の入力データが１１０であって、入力データが８ビットからなる場合について説明する。
９２＝{０１０１１１００}
１１０＝{０１１０１１１０}
【００６３】
まず、第１グループＡ、第２グループＢを前段の選択器１４、１３にて選択する。ブースのアルゴリズムにしたがって、最初は、８ビットのうち下位２ビットが選択される。第１グループＡは、この２ビットに更に最下位ビットとして０を付加したものとなる（Ａ＝{０００}）。減算するため、グループＢは反転し、"１"を付加する。このため、
{０１１０１１１０}→{１００１００１０}
となる。
【００６４】
この下位２ビットと、更に最下位に０を付加したものをグループＢ'とする（Ｂ'＝{１００}）。グループＡ（０００）とグループＢ'（１００）の加算結果は、すなわちグループＡとグループＢの減算結果である。この結果Ｙ＝{１００}となる。従ってブースエンコーダ４５の演算結果(符号データ)は、"−２"となる。また、第１グループＡ及び第２グループＢ'の上位１ビットが共に０又は１であって減算の演算後の下位から３ビット目が１となる組み合わせではないため（図１０参照）、桁上がりビット算出部５０の出力は、"０"と求まる。この場合、第１部分積＝符号データ×Ｘ×２０＝−２Ｘとなり、第２部分積＝（桁上がりビット算出部５０の演算結果）×４×Ｘ×２０＝０となる。
【００６５】
次のタイミングで、選択器１３、１４は、第２ビット〜第４ビットをグループＡ、Ｂとして選択する。このときグループＡ＝{１１０}、グループＢ'＝{００１}で、減算結果Ｙ＝{１１１}となる。従ってブースエンコーダ４５の演算結果(符号データ)は、"０"となる。また、第１グループＡ及び第２グループＢ'の上位１ビットが共に０又は１であって減算の演算後の下位から３ビット目が１となる組み合わせではないため（図１０参照）、桁上がりビット算出部５０の出力は、"０"と求まる。この場合、第１部分積＝符号データ×Ｘ×２２＝０となり、第２部分積＝（桁上がりビット算出部５０の演算結果）×４×Ｘ×２２＝０となる。
【００６６】
さらに次のタイミングで、選択器１３、１４は、第４ビット〜第６ビットをグループＡ、Ｂとして選択する。このときグループＡ＝{０１１}、グループＢ'＝{０１０}で、減算結果Ｙ＝{１０１}となる。従ってブースエンコーダ４５の演算結果(符号データ)は、"−１"となる。また、第１グループＡ及び第２グループＢ'の上位１ビットが共に０であって減算の演算後の下位から３ビット目が１となる組み合わせであるため（図１０参照）、桁上がりビット算出部５０の出力は、"１"と求まる。この場合、第１部分積＝符号データ×Ｘ×２４＝−Ｘ・２４＝−１６Ｘとなり、第２部分積＝（桁上がりビット算出部５０の演算結果）×４×Ｘ×２４＝４Ｘ・２４＝６４Ｘとなる。
【００６７】
さらに次のタイミングで、選択器１３、１４は、第６ビット〜第８ビットをグループＡ、Ｂとして選択する。このときグループＡ＝{０１０}、グループＢ'＝{１００}で、減算結果Ｙ＝{１１０}となる。従ってブースエンコーダ４５の演算結果(符号データ)は、"−１"となる。また、第１グループＡ及び第２グループＢ'の上位１ビットが共に０又は１であって減算の演算後の下位から３ビット目が１となる組み合わせではないため（図１０参照）、桁上がりビット算出部５０の出力は、"１"と求まる。この場合、第１部分積＝符号データ×Ｘ×２６＝−Ｘ・２６＝−６４Ｘとなり、第２部分積＝（桁上がりビット算出部５０の演算結果）×４×Ｘ×２０＝０となる。
【００６８】
加算器２４は以上を全て加算する。この場合は、−１８Ｘが求まる。各フリップフロップのデータ入出力タイミングは、図１２に示すようになる。図１３は、横軸に入力ビット幅を取り、縦軸に回路規模（ゲート数）を取って本実施の形態にかかる効果を説明する図である。図１３に示すように、入力ビット幅が大きくなればなるほど、減算器を低減した効果が大きくなることがわかる。
【００６９】
次に、本発明の実施の形態の変形例について説明する。図１４は、本発明の実施の形態の変形例を示す図である。なお、本変形例において、図４に示す実施の形態と同一構成要素には同一の符号を付してその詳細な説明は省略する。図１４に示すように、乗算器６０は、複数のブースエンコーダユニット６１ａ〜６１ｅを有する。このブースエンコーダユニット６１ａ〜６１ｅに対応して乗算部６２ａ〜６２ｅ及びビットシフト部６３ａ〜６３ｅからなる部分積生成部を有する。これら部分積生成部の演算結果は加算器６４にて加算され、レジスタ６５を経て必要であれば係数Ｙが加算され、リミッタ回路６７及びＦＦ６８を介して出力される。
【００７０】
ブースエンコーダユニット６１ａ〜６１ｅは、上述の実施の形態と同様、第１グループＡと第２グループＢの減算結果Ｙ、減算結果Ｙの符号データ、第１グループ及び第２グループの上位１ビットが共に０又は１であって減算の演算後の下位から３ビット目が１となる組み合わせのときは"１"でそれ以外は０（以下、これを桁上がりビットという。）の各結果を出力する。乗算部６２ａ〜６２ｅは、先ず減算結果Ｙがオール１又はオール０の場合は、演算を行わない。減算結果Ｙがオール１又はオール０以外の場合は、符号データ×Ｘを実行する。ビットシフト部６３ａ〜６３ｅは、この乗算結果をビットシフトすることにより、×２ｉの演算を実行する。ここで、ＯＲ回路６９には、ブースエンコーダユニット６１ａ〜６１ｅより桁上がりビットが入力されており、１つでも桁上がりビットが"１"であれば"１"を出力する。ＯＲ回路６９の出力が１の場合、乗算部６２ａ〜６２ｅ及びビットシフト部６３ａ〜６３ｅは、４×Ｘ×２ｉの演算を実行する。すなわち、乗算部６２ａ〜６２ｅは、４×Ｘを実行し、ビットシフト部６３ａ〜６３ｅは、この乗算結果をビットシフトすることにより、×２ｉの演算を実行する。
【００７１】
本変形例においては、図９に示すＥＸＯＲ回路４２の他方の入力を０にすることで、加算器４３に第１グループＡ及び第２グループＢを入力し、両者の和を算出する。この場合、演算結果は、入力データを２倍加算した値となるため、必要であれば演算結果を２で除するか、予め入力データを２／１倍しておく。
【００７２】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００７３】
【図１】Ｈ.２６４に準拠して符号化された圧縮画像を復号する復号装置を示すブロック図である。
【図２】ＶＣ−１に準拠して符号化された圧縮画像を復号する復号装置を示すブロック図である。
【図３】Ｈ.２６４及びＶＣ−１の規格に準拠したフィルタ演算を含む動き補償処理を実行する動き補償（ＭＣ）部を示すブロック図である。
【図４】本発明の実施の形態にかかるフィルタ演算器を示すブロック図である。
【図５】２次のブースのアルゴリズムに従って乗算を実行する乗算器を示すブロック図である。
【図６】（ａ）は、ブースのアルゴリズムにより符号データ生成に使用されるビットを説明する図、（ｂ）は、図１に示す乗算器の部分積生成ユニットの詳細を示す図である。
【図７】従来のフィルタ演算器を示す図である。
【図８】画像について水平方向の隣り合った画素間の差信号の振幅分布を示す図である。
【図９】図４に示すフィルタ乗算ユニット１０に含まれるブースエンコーダユニット１７の詳細を示す図である。
【図１０】桁上がりビット算出部５０の真理値表を示す図である。
【図１１】ブースエンコーダユニットの計算方法を説明するための図である。
【図１２】本発明の実施の形態にかかるフィルタ演算器の各フリップフロップのデータ入出力タイミングの動作タイミングを示す図である。
【図１３】横軸に入力ビット幅を取り、縦軸に回路規模（ゲート数）を取って本実施の形態にかかる効果を説明する図である。
【図１４】本発明の実施の形態の変形例にかかる乗算器を示す図である。
【図１５】特許文献１に記載の離散コサイン変換器を示す図である。
【符号の説明】
【００７４】
１  フィルタ演算器
１０  フィルタ乗算ユニット
１１、３３  フリップフロップ
１３、１４、１３２  選択器
１５、２６、１３２、１８４、３０１、３０７、３１０  セレクタ
１６  カウンタ
１７  ブースエンコーダユニット
１８、６５、１８３、２３２、４５  レジスタ
１９、２０、６０  乗算部
２１、２２、４１３、４２３、４３３、４４３  ビットシフト部
２３  制御部
２４、３１、４３、４４、６４、１０５、２０５、２２５、３１１、４５０  加算器
３２、６７，２２６  リミッタ回路
４０  符号データ出力部
４１  セレクタ
４２  ＥＸＯＲ回路
４５、１８２、２１８、４１１、４２１、４３１、４４１  ブースエンコーダ
５０  桁上がりビット算出部
５１、５５、５７  ＡＮＤ回路
５２、５６、６９  ＯＲ回路
５３  ＥＸＯＲ回路
５４  インバータ
１００、２００  画像復号装置
１０１  圧縮データ
１０２、２０２  可変長復号部
１０３、２０３  逆量子化部
１０４  逆アダマール変換部
１０６  デブロッキングフィルタ
１０７  切替部
１０８、２０７  復号画像
１０９、２０８  モニタ
１１０  画面内予測部
１１１、２０９  重み付け予測部
１１２、２１０３００  動き補償部
１１３  予測画像
１８１、２３１  減算器
２０４  逆ＤＣＴ変換部
２０６  ループフィルタ
２０１、３０２、３０３  フィルタ演算部
２２０  繰返し回数決定部
２２１、４１０、４２０、４３０、４４０  部分積生成部
２２２  累算加算器
３０４、３０５、３１２、４１２、４２２、４３２、４４２  乗算器
３０９  ラインメモリ
４０１  部分積生成ユニット
【図１】
0004988627.tif 000006
【図２】
0004988627.tif 000007
【図３】
0004988627.tif 000008
【図４】
0004988627.tif 000009
【図５】
0004988627.tif 000010
【図６】
0004988627.tif 000011
【図７】
0004988627.tif 000012
【図８】
0004988627.tif 000013
【図９】
0004988627.tif 000014
【図１０】
0004988627.tif 000015
【図１１】
0004988627.tif 000016
【図１２】
0004988627.tif 000017
【図１３】
0004988627.tif 000018
【図１４】
0004988627.tif 000019
【図１５】
0004988627.tif 000020