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