JP2009267606A - 演算器 - Google Patents
演算器 Download PDFInfo
- Publication number
- JP2009267606A JP2009267606A JP2008112593A JP2008112593A JP2009267606A JP 2009267606 A JP2009267606 A JP 2009267606A JP 2008112593 A JP2008112593 A JP 2008112593A JP 2008112593 A JP2008112593 A JP 2008112593A JP 2009267606 A JP2009267606 A JP 2009267606A
- Authority
- JP
- Japan
- Prior art keywords
- adder
- output
- value
- input
- absolute value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】2つの加算器を用いることなく差分絶対値を計算する。
【解決手段】差分絶対値演算器E0〜E3は、1つの加算器から出力された加算結果またはその反転値のいずれか一方をそれぞれ選択して、その加算結果の符号ビットとともにそれぞれ出力し、加算器A0〜A3は、差分絶対値演算器E0〜E3からそれぞれ出力されたいずれかの符号ビットをキャリービットとしてそれぞれ用いることで、差分絶対値演算器E0〜E3からの出力または前段の加算器A0〜A3からの出力を加算し、差分絶対値和を計算する。
【選択図】 図1
【解決手段】差分絶対値演算器E0〜E3は、1つの加算器から出力された加算結果またはその反転値のいずれか一方をそれぞれ選択して、その加算結果の符号ビットとともにそれぞれ出力し、加算器A0〜A3は、差分絶対値演算器E0〜E3からそれぞれ出力されたいずれかの符号ビットをキャリービットとしてそれぞれ用いることで、差分絶対値演算器E0〜E3からの出力または前段の加算器A0〜A3からの出力を加算し、差分絶対値和を計算する。
【選択図】 図1
Description
本発明は演算器に関し、特に、差分絶対値和演算器および絶対値和演算器に適用して好適なものである。
MPEGなどの動画像符号化処理においては、画像データ間の差分誤差量を最小とする参照用ブロックの現画像ブロックに対する位置を示すベクトルを動きベクトルとして検出するために、現画像中の所定次元の現画像ブロックと参照画像中の参照用ブロックとの画像データ間の差分誤差量を求める必要がある(特許文献1、2)。
このような画像データ間の差分誤差量を求めるために、累積型差分絶対値和演算器が用いられている。この累積型差分絶対値和演算器では、差分絶対値を求めるために、ビット幅に対応した個数分だけ差分絶対値演算器が設けられている。そして、この差分絶対値演算器には、入力a、bについて(a−b)の値と(b−a)の値をそれぞれ別個に計算する2つの加算器と、(a−b)の値が負((a−b)の値の符号ビットcが1)であるかどうかによって加算器からの出力を選択するセレクタが設けられている。
そして、1サイクルの期間に、これらの差分絶対値演算器にて計算された差分絶対値をビット幅数分だけ加算することで差分絶対値和が計算され、レジスタ上に保持される。そして、このような差分絶対値和の計算を複数サイクルに渡って繰り返し、この差分絶対値和を累積加算しながらレジスタ上に保持させることで、累積型差分絶対値和演算器からの最終的な出力値を得ることができる。
しかしながら、従来の累積型差分絶対値和演算器では、差分絶対値を計算するために2つの加算器が用いられている。このため、累積型差分絶対値和演算器の回路面積が大きくなり、動画像符号化装置の大型化を招くという問題があった。
そこで、本発明の目的は、2つの加算器を用いることなく差分絶対値を計算することが可能な演算器を提供することである。
上述した課題を解決するために、本発明の一態様によれば、キャリービットとして1がそれぞれ入力され、2つの入力データのうち一方を反転してから加算した加算結果を符号ビットとともにそれぞれ出力するN(Nは2以上の整数)個の第1の加算器と、前記第1の加算器ごとに1つずつ設けられ、前記第1の加算器から出力された符号ビットに基づいて、前記第1の加算器から出力された加算結果または前記加算結果の反転値のいずれか一方をそれぞれ選択して出力するN個のセレクタと、前記N個の第1の加算器から出力されたいずれか1つの符号ビットが互いに重複しないようにキャリービットとしてそれぞれ入力されるN個の第2の加算器と、前記第2の加算器のうちの最終段の加算結果を保持するレジスタとを備え、前記最終段の1個分を除く(N−1)個分の第2の加算器には、前記セレクタからの出力または前段の第2の加算器からの出力が入力され、前記最終段の第2の加算器には、前記レジスタにて保持されている値と前段の1個分の第2の加算器からの出力が入力されることを特徴とする演算器を提供する。
また、本発明の一態様によれば、1つの入力データの符号ビットに基づいて、前記入力データまたは前記入力データの反転値のいずれか一方をそれぞれ選択して出力するN(Nは2以上の整数)のセレクタと、前記N個のセレクタにそれぞれ入力されるN個の入力データの符号ビットが重複しないようにキャリービットとしてそれぞれ入力されるN個の加算器と、前記加算器のうちの最終段の加算結果を保持するレジスタとを備え、前記最終段の1個分を除く(N−1)個分の加算器には、前記セレクタからの出力または前段の加算器からの出力が入力され、前記最終段の加算器には、前記レジスタにて保持されている値と前段の1個分の加算器からの出力が入力されることを特徴とする演算器を提供する。
以上説明したように、本発明によれば、2つの加算器を用いることなく差分絶対値を計算することが可能となる。
以下、本発明の実施形態に係る演算器について図面を参照しながら説明する。
(第1実施形態)
図1は、本発明の第1実施形態に係る累積型差分絶対値和演算器の概略構成を示すブロック図である。なお、以下の説明では、入力データが4対分ある場合を例にとるが、入力データがN(Nは2以上の整数)個分ある場合に適用してもよい。また、パイプライン化された構成に適用するようにしてもよい。
図1において、累積型差分絶対値和演算器には、4個の差分絶対値演算器E0〜E3、4個の加算器A0〜A3、レジスタRE1およびセレクタSL1が設けられている。
図1は、本発明の第1実施形態に係る累積型差分絶対値和演算器の概略構成を示すブロック図である。なお、以下の説明では、入力データが4対分ある場合を例にとるが、入力データがN(Nは2以上の整数)個分ある場合に適用してもよい。また、パイプライン化された構成に適用するようにしてもよい。
図1において、累積型差分絶対値和演算器には、4個の差分絶対値演算器E0〜E3、4個の加算器A0〜A3、レジスタRE1およびセレクタSL1が設けられている。
ここで、差分絶対値演算器E0〜E3には加算器およびセレクタが1個ずつ設けられ、差分絶対値演算器E0〜E3は、各加算器から出力された加算結果またはその反転値のいずれか一方をそれぞれ選択して、その加算結果の符号ビットとともにそれぞれ出力することができる。すなわち、差分絶対値演算器E0には入力データa0、b0が入力され、(a0−b0)または(a0−b0)の反転値のいずれか一方を選択して出力するとともに、(a0−b0)という値の符号ビットc0を出力することができる。また、差分絶対値演算器E1には入力データa1、b1が入力され、(a1−b1)または(a1−b1)の反転値のいずれか一方を選択して出力するとともに、(a1−b1)という値の符号ビットc1を出力することができる。また、差分絶対値演算器E2には入力データa2、b2が入力され、(a2−b2)または(a2−b2)の反転値のいずれか一方を選択して出力するとともに、(a2−b2)という値の符号ビットc2を出力することができる。また、差分絶対値演算器E3には入力データa3、b3が入力され、(a3−b3)または(a3−b3)の反転値のいずれか一方を選択して出力するとともに、(a3−b3)という値の符号ビットc3を出力することができる。
図2は、図1の差分絶対値演算器の概略構成を示すブロック図である。
図2において、差分絶対値演算器E0〜E3には、加算器ADおよびセレクタSL2がそれぞれ設けられている。ここで、加算器ADには、入力データa、bが入力されるとともに、キャリービットとして1が入力される。そして、加算器ADは、入力データbを反転してから入力データaと加算して得られた(a−b)という値を、(a−b)の符号ビットcとともに出力することができる。
図2において、差分絶対値演算器E0〜E3には、加算器ADおよびセレクタSL2がそれぞれ設けられている。ここで、加算器ADには、入力データa、bが入力されるとともに、キャリービットとして1が入力される。そして、加算器ADは、入力データbを反転してから入力データaと加算して得られた(a−b)という値を、(a−b)の符号ビットcとともに出力することができる。
また、セレクタSL2には、符号ビットcおよび加算器ADからの出力値(a−b)が入力される。そして、セレクタSL2は、符号ビットcに基づいて、(a−b)または(a−b)の反転値のいずれか一方を選択して出力することができる。すなわち、セレクタSL2は、符号ビットcが0の場合((a−b)という値が正の場合)、(a−b)という値を選択して出力値sとして出力し、符号ビットcが1の場合((a−b)という値が負の場合)、(a−b)の反転値を選択して出力値sとして出力することができる。
なお、(a−b)の反転値は、(a−b)の符号を逆にして1を引いた値に等しいため、−(a−b)−1という値になる。このため、−(a−b)という値を計算するためには、(a−b)の反転値に1を加算する必要がある。図1の実施形態では、この(a−b)の反転値に1を加算する処理は、図1の差分絶対値演算器E0〜E3では行わず、加算器A0〜A3のキャリービット入力を利用して行うようにする。
また、図1において、加算器A0〜A3には、差分絶対値演算器E0〜E3からそれぞれ出力されたいずれかの符号ビットが互いに重複しないようにキャリービットとしてそれぞれ入力される。例えば、差分絶対値演算器E0から出力された符号ビットc0は、加算器A0にキャリービットとして入力し、差分絶対値演算器E1から出力された符号ビットc1は、加算器A1にキャリービットとして入力し、差分絶対値演算器E2から出力された符号ビットc2は、加算器A2にキャリービットとして入力し、差分絶対値演算器E3から出力された符号ビットc3は、加算器A3にキャリービットとして入力することができる。
そして、加算器A0の2つのデータ入力端子には、差分絶対値演算器E0、E1の出力端子がそれぞれ接続され、加算器A1の2つのデータ入力端子には、差分絶対値演算器E2、E3の出力端子がそれぞれ接続され、加算器A2の2つのデータ入力端子には、加算器A0、A1の出力端子がそれぞれ接続され、加算器A3の2つのデータ入力端子には、加算器A2の出力端子およびセレクタSL1の出力端子がそれぞれ接続されている。
また、レジスタRE1は、クロックCKに同期して加算器A3からの出力値を取り込んで保持することができる。セレクタSL1は、レジスタRE1に保持されている値または0のいずれか一方を選択して加算器A3に入力することができる。なお、セレクタSL1は、1サイクル目では、0を選択して加算器A3に入力し、2サイクル目以降では、レジスタRE1に保持されている値を選択して加算器A3に入力することができる。
そして、入力データa0、b0が差分絶対値演算器E0に入力されると、(a0−b0)という値が計算される。そして、(a0−b0)という値の符号ビットc0が加算器A0のキャリービットとして出力されるとともに、a0−b0≧0ならば、(a0−b0)という値が加算器A0に出力され、a0−b0<0ならば、(a0−b0)の反転値が加算器A0に出力される。
また、入力データa1、b1が差分絶対値演算器E1に入力されると、(a1−b1)という値が計算される。そして、(a1−b1)という値の符号ビットc1が加算器A1のキャリービットとして出力されるとともに、a1−b1≧0ならば、(a1−b1)という値が加算器A0に出力され、a1−b1<0ならば、(a1−b1)の反転値が加算器A0に出力される。
また、入力データa2、b2が差分絶対値演算器E2に入力されると、(a2−b2)という値が計算される。そして、(a2−b2)という値の符号ビットc2が加算器A2のキャリービットとして出力されるとともに、a2−b2≧0ならば、(a2−b2)という値が加算器A1に出力され、a2−b2<0ならば、(a2−b2)の反転値が加算器A1に出力される。
また、入力データa3、b3が差分絶対値演算器E3に入力されると、(a3−b3)という値が計算される。そして、(a3−b3)という値の符号ビットc3が加算器A3のキャリービットとして出力されるとともに、a3−b3≧0ならば、(a3−b3)という値が加算器A1に出力され、a3−b3<0ならば、(a3−b3)の反転値が加算器A1に出力される。
そして、加算器A0は、符号ビットc0がキャリービットとして入力された状態で、差分絶対値演算器E0からの出力値と差分絶対値演算器E1からの出力値とを加算し、その加算結果を加算器A2に入力する。ここで、加算器A0は、a0−b0≧0ならば、符号ビットc0が0となり、a0−b0<0ならば、符号ビットc0が1となることから、(a0−b0)の反転値に1を加算するために用いることができ、入力データa0、b0についての差分絶対値|a0−b0|の計算を完成させるために用いることができる。
また、加算器A1は、符号ビットc1がキャリービットとして入力された状態で、差分絶対値演算器E2からの出力値と差分絶対値演算器E3からの出力値とを加算し、その加算結果を加算器A2に入力する。ここで、加算器A1は、a1−b1≧0ならば、符号ビットc1が0となり、a1−b1<0ならば、符号ビットc1が1となることから、(a1−b1)の反転値に1を加算するために用いることができ、入力データa1、b1についての差分絶対値|a1−b1|の計算を完成させるために用いることができる。
また、加算器A2は、符号ビットc2がキャリービットとして入力された状態で、加算器A0からの出力値と加算器A1からの出力値とを加算し、その加算結果を加算器A3に入力する。ここで、加算器A2は、a2−b2≧0ならば、符号ビットc2が0となり、a2−b2<0ならば、符号ビットc2が1となることから、(a2−b2)の反転値に1を加算するために用いることができ、入力データa2、b2についての差分絶対値|a2−b2|の計算を完成させるために用いることができる。
また、加算器A3は、符号ビットc3がキャリービットとして入力された状態で、加算器A2からの出力値とセレクタSL1からの出力値とを加算し、その加算結果をレジスタRE1に入力する。ここで、加算器A3は、a3−b3≧0ならば、符号ビットc3が0となり、a3−b3<0ならば、符号ビットc3が1となることから、(a3−b3)の反転値に1を加算するために用いることができ、入力データa3、b3についての差分絶対値|a3−b3|の計算を完成させるために用いることができる。
ここで、1サイクル目では、セレクタSL1からは0が出力され、加算器A2からの出力値が加算器A3を介してそのままレジスタRE1に出力される。この結果、レジスタRE1には、|a0−b0|+|a1−b1|+|a2−b2|+|a3−b3|という差分絶対値和が保持される。さらに、差分絶対値和の累積加算を行う場合、2サイクル目以降において、セレクタSL1は、レジスタRE1に保持されている値を選択して加算器A3に出力する。
これにより、差分絶対値演算器E0〜E3に加算器を1個ずつ設けることで、差分絶対値和を計算することが可能となり、差分絶対値演算器E0〜E3に2つの加算器をそれぞれ設ける必要がなくなる。このため、差分絶対値演算器E0〜E3の回路面積を削減することができ、動画像が高画質化された場合においても、動画像符号化装置の大型化を抑制することができる。
図3は、図1の累積型差分絶対値和演算器における差分絶対値和の累積加算動作を示す図である。
図3において、期間T0では、入力データa0〜a3、b0〜b3として、a00〜a30、b00〜b30が図1の差分絶対値演算器E0〜E3に入力されるものとすると、s0=|a00−b00|+|a10−b10|+|a20−b20|+|a30−b30|という値が図1の加算器A2から出力され、期間T1において、レジスタRE1に保持される。
図3において、期間T0では、入力データa0〜a3、b0〜b3として、a00〜a30、b00〜b30が図1の差分絶対値演算器E0〜E3に入力されるものとすると、s0=|a00−b00|+|a10−b10|+|a20−b20|+|a30−b30|という値が図1の加算器A2から出力され、期間T1において、レジスタRE1に保持される。
また、期間T1において、入力データa0〜a3、b0〜b3として、a01〜a31、b01〜b31が図1の差分絶対値演算器E0〜E3に入力されるものとすると、|a01−b01|+|a11−b11|+|a21−b21|+|a31−b31|という値が図1の加算器A2から出力される。そして、加算器A3において、加算器A2からの出力値が、レジスタRE1に保持されたs0と加算されることで、s1=|a00−b00|+|a10−b10|+・・・+|a21−b21|+|a31−b31|という値が加算器A3から出力され、期間T2において、レジスタRE1に保持される。
また、期間T2において、入力データa0〜a3、b0〜b3として、a02〜a32、b02〜b32が図1の差分絶対値演算器E0〜E3に入力されるものとすると、|a02−b02|+|a12−b12|+|a22−b22|+|a32−b32|という値が図1の加算器A2から出力される。そして、加算器A3において、加算器A2からの出力値が、レジスタRE1に保持されたs1と加算されることで、s2=|a00−b00|+|a10−b10|+・・・+|a22−b22|+|a32−b32|という値が加算器A3から出力され、期間T3において、レジスタRE1に保持される。
また、期間T3において、入力データa0〜a3、b0〜b3として、a03〜a33、b03〜b33が図1の差分絶対値演算器E0〜E3に入力されるものとすると、|a03−b03|+|a13−b13|+|a23−b23|+|a33−b33|という値が図1の加算器A2から出力される。そして、加算器A3において、加算器A2からの出力値が、レジスタRE1に保持されたs2と加算されることで、s3=|a00−b00|+|a10−b10|+・・・+|a23−b23|+|a33−b33|という値が加算器A3から出力され、期間T4において、レジスタRE1に保持される。
(第2実施形態)
図4は、本発明の第2実施形態に係る累積型絶対値和演算器の概略構成を示すブロック図である。なお、以下の説明では、入力データが4つ分ある場合を例にとるが、入力データがN(Nは2以上の整数)個分ある場合に適用してもよい。また、パイプライン化された構成に適用するようにしてもよい。
図4において、累積型絶対値和演算器には、4個の絶対値演算器H0〜H3、4個の加算器A10〜A13、レジスタRE2およびセレクタSL3が設けられている。
図4は、本発明の第2実施形態に係る累積型絶対値和演算器の概略構成を示すブロック図である。なお、以下の説明では、入力データが4つ分ある場合を例にとるが、入力データがN(Nは2以上の整数)個分ある場合に適用してもよい。また、パイプライン化された構成に適用するようにしてもよい。
図4において、累積型絶対値和演算器には、4個の絶対値演算器H0〜H3、4個の加算器A10〜A13、レジスタRE2およびセレクタSL3が設けられている。
ここで、絶対値演算器H0〜H3にはセレクタが1個ずつ設けられ、絶対値演算器H0〜H3は、入力データまたはその反転値のいずれか一方をそれぞれ選択して、その入力データの符号ビットとともにそれぞれ出力することができる。すなわち、絶対値演算器H0には入力データa0が入力され、a0またはa0の反転値のいずれか一方を選択して出力するとともに、a0という値の符号ビットc0を出力することができる。また、絶対値演算器H1には入力データa1が入力され、a1またはa1の反転値のいずれか一方を選択して出力するとともに、a1という値の符号ビットc1を出力することができる。また、絶対値演算器H2には入力データa2が入力され、a2またはa2の反転値のいずれか一方を選択して出力するとともに、a2という値の符号ビットc2を出力することができる。また、絶対値演算器H3には入力データa3が入力され、a3またはa3の反転値のいずれか一方を選択して出力するとともに、a3という値の符号ビットc3を出力することができる。
図5は、図4の絶対値演算器の概略構成を示すブロック図である。
図5において、絶対値演算器H0〜H3には、セレクタSL4がそれぞれ設けられている。ここで、セレクタSL4には、入力データaが入力される。そして、セレクタSL4は、入力データaの符号ビットcに基づいて、入力データaまたは入力データaの反転値のいずれか一方を選択して出力することができる。すなわち、セレクタSL4は、符号ビットcが0の場合(入力データaが正の場合)、入力データaを選択して出力値sとして出力し、符号ビットcが1の場合(入力データaが負の場合)、入力データaの反転値を選択して出力値sとして出力することができる。なお、入力データaの反転値は、入力データaの符号を逆にして1を引いた値に等しいため、−a−1という値になる。このため、−aという値を計算するためには、入力データaの反転値に1を加算する必要がある。図4の実施形態では、この入力データaの反転値に1を加算する処理は、図4の絶対値演算器H0〜H3では行わず、加算器A10〜A13のキャリービット入力を利用して行うようにする。
図5において、絶対値演算器H0〜H3には、セレクタSL4がそれぞれ設けられている。ここで、セレクタSL4には、入力データaが入力される。そして、セレクタSL4は、入力データaの符号ビットcに基づいて、入力データaまたは入力データaの反転値のいずれか一方を選択して出力することができる。すなわち、セレクタSL4は、符号ビットcが0の場合(入力データaが正の場合)、入力データaを選択して出力値sとして出力し、符号ビットcが1の場合(入力データaが負の場合)、入力データaの反転値を選択して出力値sとして出力することができる。なお、入力データaの反転値は、入力データaの符号を逆にして1を引いた値に等しいため、−a−1という値になる。このため、−aという値を計算するためには、入力データaの反転値に1を加算する必要がある。図4の実施形態では、この入力データaの反転値に1を加算する処理は、図4の絶対値演算器H0〜H3では行わず、加算器A10〜A13のキャリービット入力を利用して行うようにする。
また、図4において、加算器A10〜A13には、絶対値演算器H0〜H3からそれぞれ出力されたいずれかの符号ビットが互いに重複しないようにキャリービットとしてそれぞれ入力される。例えば、絶対値演算器H0から出力された符号ビットc0は、加算器A10にキャリービットとして入力し、絶対値演算器H1から出力された符号ビットc1は、加算器A11にキャリービットとして入力し、絶対値演算器H2から出力された符号ビットc2は、加算器A12にキャリービットとして入力し、絶対値演算器H3から出力された符号ビットc3は、加算器A13にキャリービットとして入力することができる。
そして、加算器A10の2つのデータ入力端子には、絶対値演算器H0、H1の出力端子がそれぞれ接続され、加算器A11の2つのデータ入力端子には、絶対値演算器H2、H3の出力端子がそれぞれ接続され、加算器A12の2つのデータ入力端子には、加算器A10、A11の出力端子がそれぞれ接続され、加算器A13の2つのデータ入力端子には、加算器A12の出力端子およびセレクタSL3の出力端子がそれぞれ接続されている。
また、レジスタRE2は、クロックCKに同期して加算器A13からの出力値を取り込んで保持することができる。セレクタSL3は、レジスタRE2に保持されている値または0のいずれか一方を選択して加算器A13に入力することができる。なお、セレクタSL3は、1サイクル目では、0を選択して加算器A13に入力し、2サイクル目以降では、レジスタRE2に保持されている値を選択して加算器A13に入力することができる。
そして、入力データa0が絶対値演算器H0に入力されると、入力データa0の符号ビットc0が加算器A10のキャリービットとして出力されるとともに、a0≧0ならば、入力データa0が加算器A10に出力され、a0<0ならば、入力データa0の反転値が加算器A10に出力される。
また、入力データa1が絶対値演算器H1に入力されると、入力データa1の符号ビットc1が加算器A11のキャリービットとして出力されるとともに、a1≧0ならば、入力データa1が加算器A10に出力され、a1<0ならば、入力データa1の反転値が加算器A10に出力される。
また、入力データa2が絶対値演算器H2に入力されると、入力データa2の符号ビットc2が加算器A12のキャリービットとして出力されるとともに、a2≧0ならば、入力データa2が加算器A11に出力され、a2<0ならば、入力データa2の反転値が加算器A11に出力される。
また、入力データa3が絶対値演算器H3に入力されると、入力データa3の符号ビットc3が加算器A13のキャリービットとして出力されるとともに、a3≧0ならば、入力データa3が加算器A11に出力され、a3<0ならば、入力データa3の反転値が加算器A11に出力される。
そして、加算器A10は、符号ビットc0がキャリービットとして入力された状態で、絶対値演算器H0からの出力値と絶対値演算器H1からの出力値とを加算し、その加算結果を加算器A12に入力する。ここで、加算器A10は、a0≧0ならば、符号ビットc0が0となり、a0<0ならば、符号ビットc0が1となることから、入力データa0の反転値に1を加算するために用いることができ、入力データa0についての絶対値|a0|の計算を完成させるために用いることができる。
また、加算器A11は、符号ビットc1がキャリービットとして入力された状態で、絶対値演算器H2からの出力値と絶対値演算器H3からの出力値とを加算し、その加算結果を加算器A12に入力する。ここで、加算器A11は、a1≧0ならば、符号ビットc1が0となり、a1<0ならば、符号ビットc1が1となることから、入力データa1の反転値に1を加算するために用いることができ、入力データa1についての絶対値|a1|の計算を完成させるために用いることができる。
また、加算器A12は、符号ビットc2がキャリービットとして入力された状態で、加算器A10からの出力値と加算器A11からの出力値とを加算し、その加算結果を加算器A13に入力する。ここで、加算器A12は、a2≧0ならば、符号ビットc2が0となり、a2<0ならば、符号ビットc2が1となることから、入力データa2の反転値に1を加算するために用いることができ、入力データa2についての絶対値|a2|の計算を完成させるために用いることができる。
また、加算器A13は、符号ビットc3がキャリービットとして入力された状態で、加算器A12からの出力値とセレクタSL3からの出力値とを加算し、その加算結果をレジスタRE2に入力する。ここで、加算器A13は、a3≧0ならば、符号ビットc3が0となり、a3<0ならば、符号ビットc3が1となることから、入力データa3の反転値に1を加算するために用いることができ、入力データa3についての絶対値|a3|の計算を完成させるために用いることができる。
ここで、1サイクル目では、セレクタSL3からは0が出力され、加算器A12からの出力値が加算器A13を介してそのままレジスタRE2に出力される。この結果、レジスタRE2には、|a0|+|a1|+|a2|+|a3|という絶対値和が保持される。さらに、絶対値和の累積加算を行う場合、2サイクル目以降において、セレクタSL3は、レジスタRE2に保持されている値を選択して加算器A13に出力する。
これにより、絶対値演算器H0〜H3に加算器を設けることなく、絶対値和を計算することが可能となり、絶対値演算器H0〜H3の回路面積を削減することができる。
これにより、絶対値演算器H0〜H3に加算器を設けることなく、絶対値和を計算することが可能となり、絶対値演算器H0〜H3の回路面積を削減することができる。
図6は、図4の累積型絶対値和演算器における絶対値和の累積加算動作を示す図である。
図6において、期間T0では、入力データa0〜a3として、a00〜a30が図4の絶対値演算器H0〜H3に入力されるものとすると、s0=|a00|+|a10|+|a20|+|a30|という値が図4の加算器A12から出力され、期間T1において、レジスタRE2に保持される。
図6において、期間T0では、入力データa0〜a3として、a00〜a30が図4の絶対値演算器H0〜H3に入力されるものとすると、s0=|a00|+|a10|+|a20|+|a30|という値が図4の加算器A12から出力され、期間T1において、レジスタRE2に保持される。
また、期間T1において、入力データa0〜a3として、a01〜a31が図4の絶対値演算器H0〜H3に入力されるものとすると、|a01|+|a11|+|a21|+|a31|という値が図4の加算器A12から出力される。そして、加算器A13において、加算器A12からの出力値が、レジスタRE2に保持されたs0と加算されることで、s1=|a00|+|a10|+・・・+|a21|+|a31|という値が加算器A13から出力され、期間T2において、レジスタRE2に保持される。
また、期間T2において、入力データa0〜a3として、a02〜a32が図4の絶対値演算器H0〜H3に入力されるものとすると、|a02|+|a12|+|a22|+|a32|という値が図4の加算器A12から出力される。そして、加算器A13において、加算器A12からの出力値が、レジスタRE2に保持されたs1と加算されることで、s2=|a00|+|a10|+・・・+|a22|+|a32|という値が加算器A13から出力され、期間T3において、レジスタRE2に保持される。
また、期間T3において、入力データa0〜a3として、a03〜a33が図4の絶対値演算器H0〜H3に入力されるものとすると、|a03|+|a13|+|a23|+|a33|という値が図4の加算器A12から出力される。そして、加算器A13において、加算器A12からの出力値が、レジスタRE2に保持されたs2と加算されることで、s3=|a00|+|a10|+・・・+|a23|+|a33|という値が加算器A13から出力され、期間T4において、レジスタRE2に保持される。
E0〜E3 差分絶対値演算器、A0〜A3、AD、A10〜A13 加算器、RE1、RE2 レジスタ、SL1〜SL4 セレクタ、H0〜H3 絶対値演算器
Claims (2)
- キャリービットとして1がそれぞれ入力され、2つの入力データのうち一方を反転してから加算した加算結果を符号ビットとともにそれぞれ出力するN(Nは2以上の整数)個の第1の加算器と、
前記第1の加算器ごとに1つずつ設けられ、前記第1の加算器から出力された符号ビットに基づいて、前記第1の加算器から出力された加算結果または前記加算結果の反転値のいずれか一方をそれぞれ選択して出力するN個のセレクタと、
前記N個の第1の加算器から出力されたいずれか1つの符号ビットが互いに重複しないようにキャリービットとしてそれぞれ入力されるN個の第2の加算器と、
前記第2の加算器のうちの最終段の加算結果を保持するレジスタとを備え、
前記最終段の1個分を除く(N−1)個分の第2の加算器には、前記セレクタからの出力または前段の第2の加算器からの出力が入力され、
前記最終段の第2の加算器には、前記レジスタにて保持されている値と前段の1個分の第2の加算器からの出力が入力されることを特徴とする演算器。 - 1つの入力データの符号ビットに基づいて、前記入力データまたは前記入力データの反転値のいずれか一方をそれぞれ選択して出力するN(Nは2以上の整数)のセレクタと、
前記N個のセレクタにそれぞれ入力されるN個の入力データの符号ビットが重複しないようにキャリービットとしてそれぞれ入力されるN個の加算器と、
前記加算器のうちの最終段の加算結果を保持するレジスタとを備え、
前記最終段の1個分を除く(N−1)個分の加算器には、前記セレクタからの出力または前段の加算器からの出力が入力され、
前記最終段の加算器には、前記レジスタにて保持されている値と前段の1個分の加算器からの出力が入力されることを特徴とする演算器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008112593A JP2009267606A (ja) | 2008-04-23 | 2008-04-23 | 演算器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008112593A JP2009267606A (ja) | 2008-04-23 | 2008-04-23 | 演算器 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009267606A true JP2009267606A (ja) | 2009-11-12 |
Family
ID=41392931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008112593A Pending JP2009267606A (ja) | 2008-04-23 | 2008-04-23 | 演算器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009267606A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8947533B2 (en) | 2010-01-22 | 2015-02-03 | Fujitsu Ten Limited | Parameter determining device, parameter determining system, parameter determining method, and recording medium |
WO2023124371A1 (zh) * | 2021-12-31 | 2023-07-06 | 上海商汤智能科技有限公司 | 数据处理装置、方法、芯片、计算机设备及存储介质 |
-
2008
- 2008-04-23 JP JP2008112593A patent/JP2009267606A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8947533B2 (en) | 2010-01-22 | 2015-02-03 | Fujitsu Ten Limited | Parameter determining device, parameter determining system, parameter determining method, and recording medium |
WO2023124371A1 (zh) * | 2021-12-31 | 2023-07-06 | 上海商汤智能科技有限公司 | 数据处理装置、方法、芯片、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10402166B2 (en) | System and method for processing data in an adder based circuit | |
US20190311252A1 (en) | Multiplication and addition device for matrices, neural network computing device, and method | |
JP4881270B2 (ja) | フィルタ演算器及び動き補償装置 | |
JP2006227939A (ja) | 演算装置 | |
TWI396130B (zh) | 預飽和固定點乘法器 | |
JPH01144122A (ja) | 除算回路 | |
JP4883251B1 (ja) | 半導体集積回路及び指数算出方法 | |
JP2009267606A (ja) | 演算器 | |
JPWO2006022089A1 (ja) | 乗算装置 | |
JP2010079840A (ja) | デジタル演算回路 | |
US8977671B2 (en) | Divider circuit and division method | |
JP2018097864A (ja) | リーディングゼロ予想 | |
JP4317738B2 (ja) | 平均値算出装置および平均値算出方法 | |
JP2009117883A (ja) | 演算処理装置 | |
JP4372822B2 (ja) | パリティ予測回路及びこれを使用した論理演算回路 | |
JP2954120B2 (ja) | 動きベクトル検出装置 | |
JP3736745B2 (ja) | データ演算処理装置及びデータ演算処理プログラム | |
CN102214082B (zh) | 余数系统的缩放装置 | |
JP4408727B2 (ja) | ディジタル回路 | |
JP4658821B2 (ja) | ベジェ曲線生成回路 | |
JP4170173B2 (ja) | ブロックマッチング演算装置 | |
JP3482102B2 (ja) | 絶対値距離演算回路 | |
JP4954019B2 (ja) | 演算装置 | |
KR101158548B1 (ko) | 코딕 프로세서 및 이를 이용한 코딕 처리 방법 | |
JP2011180966A (ja) | 積和演算器 |