(57)【要約】【課題】２つの加算器を用いることなく差分絶対値を計算する。【解決手段】差分絶対値演算器Ｅ０〜Ｅ３は、１つの加算器から出力された加算結果またはその反転値のいずれか一方をそれぞれ選択して、その加算結果の符号ビットとともにそれぞれ出力し、加算器Ａ０〜Ａ３は、差分絶対値演算器Ｅ０〜Ｅ３からそれぞれ出力されたいずれかの符号ビットをキャリービットとしてそれぞれ用いることで、差分絶対値演算器Ｅ０〜Ｅ３からの出力または前段の加算器Ａ０〜Ａ３からの出力を加算し、差分絶対値和を計算する。【選択図】      図１
2009267606.tif 000002
【特許請求の範囲】
【請求項１】
キャリービットとして１がそれぞれ入力され、２つの入力データのうち一方を反転してから加算した加算結果を符号ビットとともにそれぞれ出力するＮ（Ｎは２以上の整数）個の第１の加算器と、
前記第１の加算器ごとに１つずつ設けられ、前記第１の加算器から出力された符号ビットに基づいて、前記第１の加算器から出力された加算結果または前記加算結果の反転値のいずれか一方をそれぞれ選択して出力するＮ個のセレクタと、
前記Ｎ個の第１の加算器から出力されたいずれか１つの符号ビットが互いに重複しないようにキャリービットとしてそれぞれ入力されるＮ個の第２の加算器と、
前記第２の加算器のうちの最終段の加算結果を保持するレジスタとを備え、
前記最終段の１個分を除く（Ｎ−１）個分の第２の加算器には、前記セレクタからの出力または前段の第２の加算器からの出力が入力され、
前記最終段の第２の加算器には、前記レジスタにて保持されている値と前段の１個分の第２の加算器からの出力が入力されることを特徴とする演算器。
【請求項２】
１つの入力データの符号ビットに基づいて、前記入力データまたは前記入力データの反転値のいずれか一方をそれぞれ選択して出力するＮ（Ｎは２以上の整数）のセレクタと、
前記Ｎ個のセレクタにそれぞれ入力されるＮ個の入力データの符号ビットが重複しないようにキャリービットとしてそれぞれ入力されるＮ個の加算器と、
前記加算器のうちの最終段の加算結果を保持するレジスタとを備え、
前記最終段の１個分を除く（Ｎ−１）個分の加算器には、前記セレクタからの出力または前段の加算器からの出力が入力され、
前記最終段の加算器には、前記レジスタにて保持されている値と前段の１個分の加算器からの出力が入力されることを特徴とする演算器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は演算器に関し、特に、差分絶対値和演算器および絶対値和演算器に適用して好適なものである。
【背景技術】
【０００２】
ＭＰＥＧなどの動画像符号化処理においては、画像データ間の差分誤差量を最小とする参照用ブロックの現画像ブロックに対する位置を示すベクトルを動きベクトルとして検出するために、現画像中の所定次元の現画像ブロックと参照画像中の参照用ブロックとの画像データ間の差分誤差量を求める必要がある（特許文献１、２）。
【０００３】
このような画像データ間の差分誤差量を求めるために、累積型差分絶対値和演算器が用いられている。この累積型差分絶対値和演算器では、差分絶対値を求めるために、ビット幅に対応した個数分だけ差分絶対値演算器が設けられている。そして、この差分絶対値演算器には、入力ａ、ｂについて（ａ−ｂ）の値と（ｂ−ａ）の値をそれぞれ別個に計算する２つの加算器と、（ａ−ｂ）の値が負（（ａ−ｂ）の値の符号ビットｃが１）であるかどうかによって加算器からの出力を選択するセレクタが設けられている。
【０００４】
そして、１サイクルの期間に、これらの差分絶対値演算器にて計算された差分絶対値をビット幅数分だけ加算することで差分絶対値和が計算され、レジスタ上に保持される。そして、このような差分絶対値和の計算を複数サイクルに渡って繰り返し、この差分絶対値和を累積加算しながらレジスタ上に保持させることで、累積型差分絶対値和演算器からの最終的な出力値を得ることができる。
【０００５】
しかしながら、従来の累積型差分絶対値和演算器では、差分絶対値を計算するために２つの加算器が用いられている。このため、累積型差分絶対値和演算器の回路面積が大きくなり、動画像符号化装置の大型化を招くという問題があった。
【０００６】
【特許文献１】特開平８−９３８４号公報
【特許文献２】特公平５−１２９１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
そこで、本発明の目的は、２つの加算器を用いることなく差分絶対値を計算することが可能な演算器を提供することである。
【課題を解決するための手段】
【０００８】
上述した課題を解決するために、本発明の一態様によれば、キャリービットとして１がそれぞれ入力され、２つの入力データのうち一方を反転してから加算した加算結果を符号ビットとともにそれぞれ出力するＮ（Ｎは２以上の整数）個の第１の加算器と、前記第１の加算器ごとに１つずつ設けられ、前記第１の加算器から出力された符号ビットに基づいて、前記第１の加算器から出力された加算結果または前記加算結果の反転値のいずれか一方をそれぞれ選択して出力するＮ個のセレクタと、前記Ｎ個の第１の加算器から出力されたいずれか１つの符号ビットが互いに重複しないようにキャリービットとしてそれぞれ入力されるＮ個の第２の加算器と、前記第２の加算器のうちの最終段の加算結果を保持するレジスタとを備え、前記最終段の１個分を除く（Ｎ−１）個分の第２の加算器には、前記セレクタからの出力または前段の第２の加算器からの出力が入力され、前記最終段の第２の加算器には、前記レジスタにて保持されている値と前段の１個分の第２の加算器からの出力が入力されることを特徴とする演算器を提供する。
【０００９】
また、本発明の一態様によれば、１つの入力データの符号ビットに基づいて、前記入力データまたは前記入力データの反転値のいずれか一方をそれぞれ選択して出力するＮ（Ｎは２以上の整数）のセレクタと、前記Ｎ個のセレクタにそれぞれ入力されるＮ個の入力データの符号ビットが重複しないようにキャリービットとしてそれぞれ入力されるＮ個の加算器と、前記加算器のうちの最終段の加算結果を保持するレジスタとを備え、前記最終段の１個分を除く（Ｎ−１）個分の加算器には、前記セレクタからの出力または前段の加算器からの出力が入力され、前記最終段の加算器には、前記レジスタにて保持されている値と前段の１個分の加算器からの出力が入力されることを特徴とする演算器を提供する。
【発明の効果】
【００１０】
以上説明したように、本発明によれば、２つの加算器を用いることなく差分絶対値を計算することが可能となる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態に係る演算器について図面を参照しながら説明する。
【００１２】
（第１実施形態）
図１は、本発明の第１実施形態に係る累積型差分絶対値和演算器の概略構成を示すブロック図である。なお、以下の説明では、入力データが４対分ある場合を例にとるが、入力データがＮ（Ｎは２以上の整数）個分ある場合に適用してもよい。また、パイプライン化された構成に適用するようにしてもよい。
図１において、累積型差分絶対値和演算器には、４個の差分絶対値演算器Ｅ０〜Ｅ３、４個の加算器Ａ０〜Ａ３、レジスタＲＥ１およびセレクタＳＬ１が設けられている。
【００１３】
ここで、差分絶対値演算器Ｅ０〜Ｅ３には加算器およびセレクタが１個ずつ設けられ、差分絶対値演算器Ｅ０〜Ｅ３は、各加算器から出力された加算結果またはその反転値のいずれか一方をそれぞれ選択して、その加算結果の符号ビットとともにそれぞれ出力することができる。すなわち、差分絶対値演算器Ｅ０には入力データａ０、ｂ０が入力され、（ａ０−ｂ０）または（ａ０−ｂ０）の反転値のいずれか一方を選択して出力するとともに、（ａ０−ｂ０）という値の符号ビットｃ０を出力することができる。また、差分絶対値演算器Ｅ１には入力データａ１、ｂ１が入力され、（ａ１−ｂ１）または（ａ１−ｂ１）の反転値のいずれか一方を選択して出力するとともに、（ａ１−ｂ１）という値の符号ビットｃ１を出力することができる。また、差分絶対値演算器Ｅ２には入力データａ２、ｂ２が入力され、（ａ２−ｂ２）または（ａ２−ｂ２）の反転値のいずれか一方を選択して出力するとともに、（ａ２−ｂ２）という値の符号ビットｃ２を出力することができる。また、差分絶対値演算器Ｅ３には入力データａ３、ｂ３が入力され、（ａ３−ｂ３）または（ａ３−ｂ３）の反転値のいずれか一方を選択して出力するとともに、（ａ３−ｂ３）という値の符号ビットｃ３を出力することができる。
【００１４】
図２は、図１の差分絶対値演算器の概略構成を示すブロック図である。
図２において、差分絶対値演算器Ｅ０〜Ｅ３には、加算器ＡＤおよびセレクタＳＬ２がそれぞれ設けられている。ここで、加算器ＡＤには、入力データａ、ｂが入力されるとともに、キャリービットとして１が入力される。そして、加算器ＡＤは、入力データｂを反転してから入力データａと加算して得られた（ａ−ｂ）という値を、（ａ−ｂ）の符号ビットｃとともに出力することができる。
【００１５】
また、セレクタＳＬ２には、符号ビットｃおよび加算器ＡＤからの出力値（ａ−ｂ）が入力される。そして、セレクタＳＬ２は、符号ビットｃに基づいて、（ａ−ｂ）または（ａ−ｂ）の反転値のいずれか一方を選択して出力することができる。すなわち、セレクタＳＬ２は、符号ビットｃが０の場合（（ａ−ｂ）という値が正の場合）、（ａ−ｂ）という値を選択して出力値ｓとして出力し、符号ビットｃが１の場合（（ａ−ｂ）という値が負の場合）、（ａ−ｂ）の反転値を選択して出力値ｓとして出力することができる。
【００１６】
なお、（ａ−ｂ）の反転値は、（ａ−ｂ）の符号を逆にして１を引いた値に等しいため、−（ａ−ｂ）−１という値になる。このため、−（ａ−ｂ）という値を計算するためには、（ａ−ｂ）の反転値に１を加算する必要がある。図１の実施形態では、この（ａ−ｂ）の反転値に１を加算する処理は、図１の差分絶対値演算器Ｅ０〜Ｅ３では行わず、加算器Ａ０〜Ａ３のキャリービット入力を利用して行うようにする。
【００１７】
また、図１において、加算器Ａ０〜Ａ３には、差分絶対値演算器Ｅ０〜Ｅ３からそれぞれ出力されたいずれかの符号ビットが互いに重複しないようにキャリービットとしてそれぞれ入力される。例えば、差分絶対値演算器Ｅ０から出力された符号ビットｃ０は、加算器Ａ０にキャリービットとして入力し、差分絶対値演算器Ｅ１から出力された符号ビットｃ１は、加算器Ａ１にキャリービットとして入力し、差分絶対値演算器Ｅ２から出力された符号ビットｃ２は、加算器Ａ２にキャリービットとして入力し、差分絶対値演算器Ｅ３から出力された符号ビットｃ３は、加算器Ａ３にキャリービットとして入力することができる。
【００１８】
そして、加算器Ａ０の２つのデータ入力端子には、差分絶対値演算器Ｅ０、Ｅ１の出力端子がそれぞれ接続され、加算器Ａ１の２つのデータ入力端子には、差分絶対値演算器Ｅ２、Ｅ３の出力端子がそれぞれ接続され、加算器Ａ２の２つのデータ入力端子には、加算器Ａ０、Ａ１の出力端子がそれぞれ接続され、加算器Ａ３の２つのデータ入力端子には、加算器Ａ２の出力端子およびセレクタＳＬ１の出力端子がそれぞれ接続されている。
【００１９】
また、レジスタＲＥ１は、クロックＣＫに同期して加算器Ａ３からの出力値を取り込んで保持することができる。セレクタＳＬ１は、レジスタＲＥ１に保持されている値または０のいずれか一方を選択して加算器Ａ３に入力することができる。なお、セレクタＳＬ１は、１サイクル目では、０を選択して加算器Ａ３に入力し、２サイクル目以降では、レジスタＲＥ１に保持されている値を選択して加算器Ａ３に入力することができる。
【００２０】
そして、入力データａ０、ｂ０が差分絶対値演算器Ｅ０に入力されると、（ａ０−ｂ０）という値が計算される。そして、（ａ０−ｂ０）という値の符号ビットｃ０が加算器Ａ０のキャリービットとして出力されるとともに、ａ０−ｂ０≧０ならば、（ａ０−ｂ０）という値が加算器Ａ０に出力され、ａ０−ｂ０＜０ならば、（ａ０−ｂ０）の反転値が加算器Ａ０に出力される。
【００２１】
また、入力データａ１、ｂ１が差分絶対値演算器Ｅ１に入力されると、（ａ１−ｂ１）という値が計算される。そして、（ａ１−ｂ１）という値の符号ビットｃ１が加算器Ａ１のキャリービットとして出力されるとともに、ａ１−ｂ１≧０ならば、（ａ１−ｂ１）という値が加算器Ａ０に出力され、ａ１−ｂ１＜０ならば、（ａ１−ｂ１）の反転値が加算器Ａ０に出力される。
【００２２】
また、入力データａ２、ｂ２が差分絶対値演算器Ｅ２に入力されると、（ａ２−ｂ２）という値が計算される。そして、（ａ２−ｂ２）という値の符号ビットｃ２が加算器Ａ２のキャリービットとして出力されるとともに、ａ２−ｂ２≧０ならば、（ａ２−ｂ２）という値が加算器Ａ１に出力され、ａ２−ｂ２＜０ならば、（ａ２−ｂ２）の反転値が加算器Ａ１に出力される。
【００２３】
また、入力データａ３、ｂ３が差分絶対値演算器Ｅ３に入力されると、（ａ３−ｂ３）という値が計算される。そして、（ａ３−ｂ３）という値の符号ビットｃ３が加算器Ａ３のキャリービットとして出力されるとともに、ａ３−ｂ３≧０ならば、（ａ３−ｂ３）という値が加算器Ａ１に出力され、ａ３−ｂ３＜０ならば、（ａ３−ｂ３）の反転値が加算器Ａ１に出力される。
【００２４】
そして、加算器Ａ０は、符号ビットｃ０がキャリービットとして入力された状態で、差分絶対値演算器Ｅ０からの出力値と差分絶対値演算器Ｅ１からの出力値とを加算し、その加算結果を加算器Ａ２に入力する。ここで、加算器Ａ０は、ａ０−ｂ０≧０ならば、符号ビットｃ０が０となり、ａ０−ｂ０＜０ならば、符号ビットｃ０が１となることから、（ａ０−ｂ０）の反転値に１を加算するために用いることができ、入力データａ０、ｂ０についての差分絶対値｜ａ０−ｂ０｜の計算を完成させるために用いることができる。
【００２５】
また、加算器Ａ１は、符号ビットｃ１がキャリービットとして入力された状態で、差分絶対値演算器Ｅ２からの出力値と差分絶対値演算器Ｅ３からの出力値とを加算し、その加算結果を加算器Ａ２に入力する。ここで、加算器Ａ１は、ａ１−ｂ１≧０ならば、符号ビットｃ１が０となり、ａ１−ｂ１＜０ならば、符号ビットｃ１が１となることから、（ａ１−ｂ１）の反転値に１を加算するために用いることができ、入力データａ１、ｂ１についての差分絶対値｜ａ１−ｂ１｜の計算を完成させるために用いることができる。
【００２６】
また、加算器Ａ２は、符号ビットｃ２がキャリービットとして入力された状態で、加算器Ａ０からの出力値と加算器Ａ１からの出力値とを加算し、その加算結果を加算器Ａ３に入力する。ここで、加算器Ａ２は、ａ２−ｂ２≧０ならば、符号ビットｃ２が０となり、ａ２−ｂ２＜０ならば、符号ビットｃ２が１となることから、（ａ２−ｂ２）の反転値に１を加算するために用いることができ、入力データａ２、ｂ２についての差分絶対値｜ａ２−ｂ２｜の計算を完成させるために用いることができる。
【００２７】
また、加算器Ａ３は、符号ビットｃ３がキャリービットとして入力された状態で、加算器Ａ２からの出力値とセレクタＳＬ１からの出力値とを加算し、その加算結果をレジスタＲＥ１に入力する。ここで、加算器Ａ３は、ａ３−ｂ３≧０ならば、符号ビットｃ３が０となり、ａ３−ｂ３＜０ならば、符号ビットｃ３が１となることから、（ａ３−ｂ３）の反転値に１を加算するために用いることができ、入力データａ３、ｂ３についての差分絶対値｜ａ３−ｂ３｜の計算を完成させるために用いることができる。
【００２８】
ここで、１サイクル目では、セレクタＳＬ１からは０が出力され、加算器Ａ２からの出力値が加算器Ａ３を介してそのままレジスタＲＥ１に出力される。この結果、レジスタＲＥ１には、｜ａ０−ｂ０｜＋｜ａ１−ｂ１｜＋｜ａ２−ｂ２｜＋｜ａ３−ｂ３｜という差分絶対値和が保持される。さらに、差分絶対値和の累積加算を行う場合、２サイクル目以降において、セレクタＳＬ１は、レジスタＲＥ１に保持されている値を選択して加算器Ａ３に出力する。
【００２９】
これにより、差分絶対値演算器Ｅ０〜Ｅ３に加算器を１個ずつ設けることで、差分絶対値和を計算することが可能となり、差分絶対値演算器Ｅ０〜Ｅ３に２つの加算器をそれぞれ設ける必要がなくなる。このため、差分絶対値演算器Ｅ０〜Ｅ３の回路面積を削減することができ、動画像が高画質化された場合においても、動画像符号化装置の大型化を抑制することができる。
【００３０】
図３は、図１の累積型差分絶対値和演算器における差分絶対値和の累積加算動作を示す図である。
図３において、期間Ｔ０では、入力データａ０〜ａ３、ｂ０〜ｂ３として、ａ００〜ａ３０、ｂ００〜ｂ３０が図１の差分絶対値演算器Ｅ０〜Ｅ３に入力されるものとすると、ｓ０＝｜ａ００−ｂ００｜＋｜ａ１０−ｂ１０｜＋｜ａ２０−ｂ２０｜＋｜ａ３０−ｂ３０｜という値が図１の加算器Ａ２から出力され、期間Ｔ１において、レジスタＲＥ１に保持される。
【００３１】
また、期間Ｔ１において、入力データａ０〜ａ３、ｂ０〜ｂ３として、ａ０１〜ａ３１、ｂ０１〜ｂ３１が図１の差分絶対値演算器Ｅ０〜Ｅ３に入力されるものとすると、｜ａ０１−ｂ０１｜＋｜ａ１１−ｂ１１｜＋｜ａ２１−ｂ２１｜＋｜ａ３１−ｂ３１｜という値が図１の加算器Ａ２から出力される。そして、加算器Ａ３において、加算器Ａ２からの出力値が、レジスタＲＥ１に保持されたｓ０と加算されることで、ｓ１＝｜ａ００−ｂ００｜＋｜ａ１０−ｂ１０｜＋・・・＋｜ａ２１−ｂ２１｜＋｜ａ３１−ｂ３１｜という値が加算器Ａ３から出力され、期間Ｔ２において、レジスタＲＥ１に保持される。
【００３２】
また、期間Ｔ２において、入力データａ０〜ａ３、ｂ０〜ｂ３として、ａ０２〜ａ３２、ｂ０２〜ｂ３２が図１の差分絶対値演算器Ｅ０〜Ｅ３に入力されるものとすると、｜ａ０２−ｂ０２｜＋｜ａ１２−ｂ１２｜＋｜ａ２２−ｂ２２｜＋｜ａ３２−ｂ３２｜という値が図１の加算器Ａ２から出力される。そして、加算器Ａ３において、加算器Ａ２からの出力値が、レジスタＲＥ１に保持されたｓ１と加算されることで、ｓ２＝｜ａ００−ｂ００｜＋｜ａ１０−ｂ１０｜＋・・・＋｜ａ２２−ｂ２２｜＋｜ａ３２−ｂ３２｜という値が加算器Ａ３から出力され、期間Ｔ３において、レジスタＲＥ１に保持される。
【００３３】
また、期間Ｔ３において、入力データａ０〜ａ３、ｂ０〜ｂ３として、ａ０３〜ａ３３、ｂ０３〜ｂ３３が図１の差分絶対値演算器Ｅ０〜Ｅ３に入力されるものとすると、｜ａ０３−ｂ０３｜＋｜ａ１３−ｂ１３｜＋｜ａ２３−ｂ２３｜＋｜ａ３３−ｂ３３｜という値が図１の加算器Ａ２から出力される。そして、加算器Ａ３において、加算器Ａ２からの出力値が、レジスタＲＥ１に保持されたｓ２と加算されることで、ｓ３＝｜ａ００−ｂ００｜＋｜ａ１０−ｂ１０｜＋・・・＋｜ａ２３−ｂ２３｜＋｜ａ３３−ｂ３３｜という値が加算器Ａ３から出力され、期間Ｔ４において、レジスタＲＥ１に保持される。
【００３４】
（第２実施形態）
図４は、本発明の第２実施形態に係る累積型絶対値和演算器の概略構成を示すブロック図である。なお、以下の説明では、入力データが４つ分ある場合を例にとるが、入力データがＮ（Ｎは２以上の整数）個分ある場合に適用してもよい。また、パイプライン化された構成に適用するようにしてもよい。
図４において、累積型絶対値和演算器には、４個の絶対値演算器Ｈ０〜Ｈ３、４個の加算器Ａ１０〜Ａ１３、レジスタＲＥ２およびセレクタＳＬ３が設けられている。
【００３５】
ここで、絶対値演算器Ｈ０〜Ｈ３にはセレクタが１個ずつ設けられ、絶対値演算器Ｈ０〜Ｈ３は、入力データまたはその反転値のいずれか一方をそれぞれ選択して、その入力データの符号ビットとともにそれぞれ出力することができる。すなわち、絶対値演算器Ｈ０には入力データａ０が入力され、ａ０またはａ０の反転値のいずれか一方を選択して出力するとともに、ａ０という値の符号ビットｃ０を出力することができる。また、絶対値演算器Ｈ１には入力データａ１が入力され、ａ１またはａ１の反転値のいずれか一方を選択して出力するとともに、ａ１という値の符号ビットｃ１を出力することができる。また、絶対値演算器Ｈ２には入力データａ２が入力され、ａ２またはａ２の反転値のいずれか一方を選択して出力するとともに、ａ２という値の符号ビットｃ２を出力することができる。また、絶対値演算器Ｈ３には入力データａ３が入力され、ａ３またはａ３の反転値のいずれか一方を選択して出力するとともに、ａ３という値の符号ビットｃ３を出力することができる。
【００３６】
図５は、図４の絶対値演算器の概略構成を示すブロック図である。
図５において、絶対値演算器Ｈ０〜Ｈ３には、セレクタＳＬ４がそれぞれ設けられている。ここで、セレクタＳＬ４には、入力データａが入力される。そして、セレクタＳＬ４は、入力データａの符号ビットｃに基づいて、入力データａまたは入力データａの反転値のいずれか一方を選択して出力することができる。すなわち、セレクタＳＬ４は、符号ビットｃが０の場合（入力データａが正の場合）、入力データａを選択して出力値ｓとして出力し、符号ビットｃが１の場合（入力データａが負の場合）、入力データａの反転値を選択して出力値ｓとして出力することができる。なお、入力データａの反転値は、入力データａの符号を逆にして１を引いた値に等しいため、−ａ−１という値になる。このため、−ａという値を計算するためには、入力データａの反転値に１を加算する必要がある。図４の実施形態では、この入力データａの反転値に１を加算する処理は、図４の絶対値演算器Ｈ０〜Ｈ３では行わず、加算器Ａ１０〜Ａ１３のキャリービット入力を利用して行うようにする。
【００３７】
また、図４において、加算器Ａ１０〜Ａ１３には、絶対値演算器Ｈ０〜Ｈ３からそれぞれ出力されたいずれかの符号ビットが互いに重複しないようにキャリービットとしてそれぞれ入力される。例えば、絶対値演算器Ｈ０から出力された符号ビットｃ０は、加算器Ａ１０にキャリービットとして入力し、絶対値演算器Ｈ１から出力された符号ビットｃ１は、加算器Ａ１１にキャリービットとして入力し、絶対値演算器Ｈ２から出力された符号ビットｃ２は、加算器Ａ１２にキャリービットとして入力し、絶対値演算器Ｈ３から出力された符号ビットｃ３は、加算器Ａ１３にキャリービットとして入力することができる。
【００３８】
そして、加算器Ａ１０の２つのデータ入力端子には、絶対値演算器Ｈ０、Ｈ１の出力端子がそれぞれ接続され、加算器Ａ１１の２つのデータ入力端子には、絶対値演算器Ｈ２、Ｈ３の出力端子がそれぞれ接続され、加算器Ａ１２の２つのデータ入力端子には、加算器Ａ１０、Ａ１１の出力端子がそれぞれ接続され、加算器Ａ１３の２つのデータ入力端子には、加算器Ａ１２の出力端子およびセレクタＳＬ３の出力端子がそれぞれ接続されている。
【００３９】
また、レジスタＲＥ２は、クロックＣＫに同期して加算器Ａ１３からの出力値を取り込んで保持することができる。セレクタＳＬ３は、レジスタＲＥ２に保持されている値または０のいずれか一方を選択して加算器Ａ１３に入力することができる。なお、セレクタＳＬ３は、１サイクル目では、０を選択して加算器Ａ１３に入力し、２サイクル目以降では、レジスタＲＥ２に保持されている値を選択して加算器Ａ１３に入力することができる。
【００４０】
そして、入力データａ０が絶対値演算器Ｈ０に入力されると、入力データａ０の符号ビットｃ０が加算器Ａ１０のキャリービットとして出力されるとともに、ａ０≧０ならば、入力データａ０が加算器Ａ１０に出力され、ａ０＜０ならば、入力データａ０の反転値が加算器Ａ１０に出力される。
【００４１】
また、入力データａ１が絶対値演算器Ｈ１に入力されると、入力データａ１の符号ビットｃ１が加算器Ａ１１のキャリービットとして出力されるとともに、ａ１≧０ならば、入力データａ１が加算器Ａ１０に出力され、ａ１＜０ならば、入力データａ１の反転値が加算器Ａ１０に出力される。
【００４２】
また、入力データａ２が絶対値演算器Ｈ２に入力されると、入力データａ２の符号ビットｃ２が加算器Ａ１２のキャリービットとして出力されるとともに、ａ２≧０ならば、入力データａ２が加算器Ａ１１に出力され、ａ２＜０ならば、入力データａ２の反転値が加算器Ａ１１に出力される。
【００４３】
また、入力データａ３が絶対値演算器Ｈ３に入力されると、入力データａ３の符号ビットｃ３が加算器Ａ１３のキャリービットとして出力されるとともに、ａ３≧０ならば、入力データａ３が加算器Ａ１１に出力され、ａ３＜０ならば、入力データａ３の反転値が加算器Ａ１１に出力される。
【００４４】
そして、加算器Ａ１０は、符号ビットｃ０がキャリービットとして入力された状態で、絶対値演算器Ｈ０からの出力値と絶対値演算器Ｈ１からの出力値とを加算し、その加算結果を加算器Ａ１２に入力する。ここで、加算器Ａ１０は、ａ０≧０ならば、符号ビットｃ０が０となり、ａ０＜０ならば、符号ビットｃ０が１となることから、入力データａ０の反転値に１を加算するために用いることができ、入力データａ０についての絶対値｜ａ０｜の計算を完成させるために用いることができる。
【００４５】
また、加算器Ａ１１は、符号ビットｃ１がキャリービットとして入力された状態で、絶対値演算器Ｈ２からの出力値と絶対値演算器Ｈ３からの出力値とを加算し、その加算結果を加算器Ａ１２に入力する。ここで、加算器Ａ１１は、ａ１≧０ならば、符号ビットｃ１が０となり、ａ１＜０ならば、符号ビットｃ１が１となることから、入力データａ１の反転値に１を加算するために用いることができ、入力データａ１についての絶対値｜ａ１｜の計算を完成させるために用いることができる。
【００４６】
また、加算器Ａ１２は、符号ビットｃ２がキャリービットとして入力された状態で、加算器Ａ１０からの出力値と加算器Ａ１１からの出力値とを加算し、その加算結果を加算器Ａ１３に入力する。ここで、加算器Ａ１２は、ａ２≧０ならば、符号ビットｃ２が０となり、ａ２＜０ならば、符号ビットｃ２が１となることから、入力データａ２の反転値に１を加算するために用いることができ、入力データａ２についての絶対値｜ａ２｜の計算を完成させるために用いることができる。
【００４７】
また、加算器Ａ１３は、符号ビットｃ３がキャリービットとして入力された状態で、加算器Ａ１２からの出力値とセレクタＳＬ３からの出力値とを加算し、その加算結果をレジスタＲＥ２に入力する。ここで、加算器Ａ１３は、ａ３≧０ならば、符号ビットｃ３が０となり、ａ３＜０ならば、符号ビットｃ３が１となることから、入力データａ３の反転値に１を加算するために用いることができ、入力データａ３についての絶対値｜ａ３｜の計算を完成させるために用いることができる。
【００４８】
ここで、１サイクル目では、セレクタＳＬ３からは０が出力され、加算器Ａ１２からの出力値が加算器Ａ１３を介してそのままレジスタＲＥ２に出力される。この結果、レジスタＲＥ２には、｜ａ０｜＋｜ａ１｜＋｜ａ２｜＋｜ａ３｜という絶対値和が保持される。さらに、絶対値和の累積加算を行う場合、２サイクル目以降において、セレクタＳＬ３は、レジスタＲＥ２に保持されている値を選択して加算器Ａ１３に出力する。
これにより、絶対値演算器Ｈ０〜Ｈ３に加算器を設けることなく、絶対値和を計算することが可能となり、絶対値演算器Ｈ０〜Ｈ３の回路面積を削減することができる。
【００４９】
図６は、図４の累積型絶対値和演算器における絶対値和の累積加算動作を示す図である。
図６において、期間Ｔ０では、入力データａ０〜ａ３として、ａ００〜ａ３０が図４の絶対値演算器Ｈ０〜Ｈ３に入力されるものとすると、ｓ０＝｜ａ００｜＋｜ａ１０｜＋｜ａ２０｜＋｜ａ３０｜という値が図４の加算器Ａ１２から出力され、期間Ｔ１において、レジスタＲＥ２に保持される。
【００５０】
また、期間Ｔ１において、入力データａ０〜ａ３として、ａ０１〜ａ３１が図４の絶対値演算器Ｈ０〜Ｈ３に入力されるものとすると、｜ａ０１｜＋｜ａ１１｜＋｜ａ２１｜＋｜ａ３１｜という値が図４の加算器Ａ１２から出力される。そして、加算器Ａ１３において、加算器Ａ１２からの出力値が、レジスタＲＥ２に保持されたｓ０と加算されることで、ｓ１＝｜ａ００｜＋｜ａ１０｜＋・・・＋｜ａ２１｜＋｜ａ３１｜という値が加算器Ａ１３から出力され、期間Ｔ２において、レジスタＲＥ２に保持される。
【００５１】
また、期間Ｔ２において、入力データａ０〜ａ３として、ａ０２〜ａ３２が図４の絶対値演算器Ｈ０〜Ｈ３に入力されるものとすると、｜ａ０２｜＋｜ａ１２｜＋｜ａ２２｜＋｜ａ３２｜という値が図４の加算器Ａ１２から出力される。そして、加算器Ａ１３において、加算器Ａ１２からの出力値が、レジスタＲＥ２に保持されたｓ１と加算されることで、ｓ２＝｜ａ００｜＋｜ａ１０｜＋・・・＋｜ａ２２｜＋｜ａ３２｜という値が加算器Ａ１３から出力され、期間Ｔ３において、レジスタＲＥ２に保持される。
【００５２】
また、期間Ｔ３において、入力データａ０〜ａ３として、ａ０３〜ａ３３が図４の絶対値演算器Ｈ０〜Ｈ３に入力されるものとすると、｜ａ０３｜＋｜ａ１３｜＋｜ａ２３｜＋｜ａ３３｜という値が図４の加算器Ａ１２から出力される。そして、加算器Ａ１３において、加算器Ａ１２からの出力値が、レジスタＲＥ２に保持されたｓ２と加算されることで、ｓ３＝｜ａ００｜＋｜ａ１０｜＋・・・＋｜ａ２３｜＋｜ａ３３｜という値が加算器Ａ１３から出力され、期間Ｔ４において、レジスタＲＥ２に保持される。
【図面の簡単な説明】
【００５３】
【図１】本発明の第１実施形態に係る累積型差分絶対値和演算器の概略構成を示すブロック図。
【図２】図１の差分絶対値演算器の概略構成を示すブロック図。
【図３】図１の累積型差分絶対値和演算器における差分絶対値和の累積加算動作を示す図。
【図４】本発明の第２実施形態に係る累積型絶対値和演算器の概略構成を示すブロック図。
【図５】図４の絶対値演算器の概略構成を示すブロック図。
【図６】図４の累積型絶対値和演算器における絶対値和の累積加算動作を示す図。
【符号の説明】
【００５４】
Ｅ０〜Ｅ３  差分絶対値演算器、Ａ０〜Ａ３、ＡＤ、Ａ１０〜Ａ１３  加算器、ＲＥ１、ＲＥ２  レジスタ、ＳＬ１〜ＳＬ４  セレクタ、Ｈ０〜Ｈ３  絶対値演算器
【図１】
2009267606.tif 000003
【図２】
2009267606.tif 000004
【図３】
2009267606.tif 000005
【図４】
2009267606.tif 000006
【図５】
2009267606.tif 000007
【図６】
2009267606.tif 000008