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