JP3612950B2 - 演算装置およびその方法 - Google Patents
演算装置およびその方法 Download PDFInfo
- Publication number
- JP3612950B2 JP3612950B2 JP20666097A JP20666097A JP3612950B2 JP 3612950 B2 JP3612950 B2 JP 3612950B2 JP 20666097 A JP20666097 A JP 20666097A JP 20666097 A JP20666097 A JP 20666097A JP 3612950 B2 JP3612950 B2 JP 3612950B2
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- product
- terminal
- data
- multiplication
- 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.)
- Expired - Fee Related
Links
Images
Description
【発明の属する技術分野】
本発明は、2の補数乗算および2の補数の積和演算を行なう演算装置およびその方法に関する。
【0002】
【従来の技術】
例えば、ビデオカメラなどのAV(Audio Visual)装置には、プロセッサが搭載されている。
このようなプロセッサには、種々の演算回路が組み込まれており、その一つとして2の補数乗算回路がある。
また、2の補数乗算回路の一つとして、バウウーリ(Baugh−Wooley)が提案したものがある。以下、この2の補数乗算回路を、バウウーリの2の補数乗算回路と記す。
【0003】
バウウーリの2の補数乗算回路は、全ての被加算項の符号が正であり、タイプ0の全加算器を用いて全ての配列を構成できることから、LSI回路の設計上、非常に有利である。
バウウーリの2の補数乗算回路では、2の補数表示整数であるmビットの被乗数A(am−1 ,am−2 ,..a1 ,a0 )と、nビットの乗数B(bn−1 ,bn−2 ,..,b1 ,b0 )との2の補数乗算を行なう場合に、被乗数AのAv と乗数BのBv とは、それぞれ下記式(1)と(2)で示される。
ここでは、Av ,Bv は、それぞれ被乗数Aと乗数Bの10進数表現である。
【0004】
【数1】
【0005】
【数2】
また、2の補数の数表現において、積P=A・B=(pm+n−1 ,pm+n−2 ,..,p1 ,p0 )のPv は、適当な重み付き因数と、係数ai またはbi との積によって下記式(3)で示される。
ここで、Pv は、積Pの10進数表現である。
【0006】
【数3】
【0007】
積Pは、図13に示すような演算方法によって求められる。
図13において、「1」は被乗数Aを示し、「2」は乗数Bを示し、「3」は部分積の集合を示し、「4」は演算結果であるPを示し、「5」は部分積の数が最も多い列(以下、ワーストパスとも記す)を示している。
【0008】
ここで、図13に示す演算方法を部分積加算の順序を入れ換えることで、この演算方法を図14に示す演算方法に変形できる。
図14に示す演算方法は、正の被加算項のみから構成されており、その一様性から、タイプ0の全加算器のみを用いて行なうことができる。
【0009】
図15は、図14に示す演算方法を用いて、6ビットの被乗数A(a5 ,a4 ,a3 ,a2 ,a1 ,a0 )と、4ビットの乗数B(b3 ,b2 ,b1 ,b0 )との2の補数演算を行い、積P(p9 ,p8 ,p7 ,p6 ,p5 ,p4 ,p3 ,p2 ,p1 ,p0 )を算出する演算方法を説明するための図である。
図15に示す2の補数乗算の演算方法は、例えば、図16に示す2の補数乗算回路21を用いて行なわれる。
図16に示す2の補数乗算回路21では、被乗数Aのa5 ,a4 ,a3 ,a2 ,a1 ,a0 を、行方向に配設されたバッファ255 ,256 ,257 ,258 ,259 ,2510からそれぞれ入力する。、また、乗数B(b3 ,b2 ,b1 ,b0 )を、列方向に配設されたバッファ251 ,252 ,253 ,254 からそれぞれ入力する。そして、図15に示す2の補数乗算を行い、その乗算結果である積P(p9 ,p8 ,p7 ,p6 ,p5 ,p4 ,p3 ,p2 ,p1 ,p0 )を出力する。
【0010】
図16において、2700およびこれと同一記号を用いて表された回路は、2入力1出力のAND回路である。また、2911およびこれと同一記号を用いて表された回路は、全加算回路である。全加算回路2911は、図17(A)に示すように、図中左上に位置してキャリ(桁上げ)データを入力するCI(Carry Input) 端子、図中左中に位置して一方の加算対象データを入力するX端子、図中左下に位置して他方の加算対象データを入力するY端子、図中右上に位置しキャリデータを出力するCO(Carry Output)端子、および、図中右下に位置して和データを出力するS(Sum) 端子とを備えている。これらの端子の配置は、図16においても同じである。
また、加算回路3321,3341,3351は、図17(B)に示すように、図中左下のX端子から入力した加算対象データと図中左上のY端子から入力した加算対象データとの加算を行い、そのキャリデータを図中右上のCO端子から出力し、その和データを図中左下のS端子から出力する半加算器である。
【0011】
図16に示す2の補数乗算回路21では、図15に示す部分積22を以下に示す演算処理で行なう。
すなわち、a5 とb0  ̄(=反転b0 )との論理積がAND回路2700にて演算され、その演算結果である「a5 ・b0  ̄」が加算回路2911のY端子に出力される。なお、バッファ251 を介して入力したb0 は、NOT回路311 にて反転され、b0  ̄がAND回路2700に入力される。
また、a4 とb1 との論理積がAND回路2711にて演算され、その演算結果である「a4 ・b1 」が加算回路2911のX端子に出力される。また、a5 が加算回路2911のCI端子に出力される。
そして、加算回路2911において、「a5 ・b0  ̄」、「a4 ・b1 」およびa5 を用いた加算が行なわれ、その和データがS端子から加算回路2922のY端子に出力され、そのキャリデータがCO端子から、加算回路2912のCI端子に出力される。
【0012】
また、a3 とb2 との論理積がAND回路2722にて演算され、その演算結果であるa3 ・b2 が加算回路2922のX端子に出力される。
そして、加算回路2922において、加算回路3321のCO端子からのキャリデータと、「a3 ・b2 」と、「a5 ・b0  ̄」、「a4 ・b1 」およびa5 の和データとを用いた加算が行なわれ、その和データが加算回路2933のY端子に出力される。
また、a2  ̄とb3 との論理積がAND回路2733にて演算され、その演算結果である「a2  ̄・b3 」が加算回路2933のX端子に出力される。
そして、加算回路2933において、加算回路2932のCO端子からのキャリデータと、「a2  ̄・b3 」と、加算回路2922からの和データとを用いた加算が行なわれ、その和データd3 がS端子から加算回路19に出力される。また、加算回路2933のCO端子から出力されたキャリデータd2 も、加算回路19に出力される。
【0013】
ここで、和データd3 は、加算回路3321,2931,2932からのキャリデータを考慮した、a5 、「a4 ・b1 」、「a5 ・b0  ̄」、「a3 ・b2 」および「a2  ̄・b3 」の和データである。
【0014】
そして、加算回路19において、d0 〜d10を用いた演算が行なわれ、p5 が求められる。
また、AND回路2750の出力端子、加算回路3351のS端子、加算回路2952のS端子および加算回路2952のS端子から、それぞれp0 ,p1 ,p2 ,p3 が出力される。
また、加算回路19において、d0 〜d10を用いた演算が行なわれ、p4 ,p6 ,p7 ,p8 ,p9 が求められる。
【0015】
【発明が解決しようとする課題】
しかしながら、上述した図14に示す2の補数乗算の処理では、m=nの場合に、図18に示すように、am−1 とbn−1 とが同じ列に位置することから、図13に示すワーストパス5に比べて、加算が1段増えた、ワーストパス6が生じ、演算時間が長期化してしまう。
【0016】
以下、具体例を挙げて説明する。
図19は、図18に示す2の補数演算の処理を、4ビットの被乗数A(a3 ,a2 ,a1 ,a0 )と、4ビットの乗数B(b3 ,b2 ,b1 ,b0 )とについて行い、積P(p7 ,p6 ,p5 ,p4 ,p3 ,p2 ,p1 ,p0 )を算出する方法を説明するための図である。
この場合には、図19に示すように、a3 とb3 とが同じ列に位置し、これらを含むワーストパス6aが生じる。
ここで、例えば、被乗数Aが(1,0,1,0)で、乗数が(1,1,1,1)である場合には、図19に示す2の補数乗算処理は、図20に示すようにして行なわれ、積Pが(0,0,0,0,0,1,1,0)となる。
【0017】
図19に示す2の補数演算の処理は、図21に示す2の補数乗算回路41を用いて行なわれる。
図21に示す2の補数乗算回路41では、被乗数Aのa3 ,a2 ,a1 ,a0 を、行方向に配設されたバッファ255 ,256 ,257 ,258 からそれぞれ入力し、乗数B(b0 ,b1 ,b2 ,b3 )を、列方向に配設されたバッファ251 ,252 ,253 ,254 からそれぞれ入力し、図19に示す積和演算を行い、積P(p7 ,p6 ,p5 ,p4 ,p3 ,p2 ,p1 ,p0 )を出力する。
【0018】
図21において、2700およびこれと同一記号を用いて表された回路は、2入力1出力のAND回路である。また、2903および2922は全加算回路であり、図17(A)に示す構成をしている。また、331 ,332 ,333 ,334 ,335 は半加算回路であり図17(B)を示す構成をしている。
また、加算回路391 ,393 は、それぞれ1ビットの加算対象データを入力する3個の入力端子、CI端子、CO端子および2ビットのS端子を有する。
また、加算回路372 は、それぞれ1ビットの加算対象データを入力する4個の入力端子、CI端子、CO端子および2ビットのS端子を有する。
【0019】
図21に示す2の補数乗算回路41では、図19に示す部分積演算6aを以下に述べる処理によって行なう。
先ず、a3 とb0  ̄(=反転b0 )との論理積がAND回路2700にて演算され、その演算結果である「a3 ・b0  ̄」が加算回路2922のY端子に出力される。なお、バッファ251 を介して入力したb0 は、NOT回路311 にて反転され、b0  ̄がAND回路2700に入力される。
また、a1 とb2 との論理積がAND回路2722にて演算され、その演算結果である「a1 ・b2 」が加算回路2922のX端子に出力される。また、a3 が加算回路2922のCI端子に出力される。
そして、加算回路2922において、「a3 ・b0  ̄」、「a1 ・b2 」およびa3 を用いた加算が行なわれ、その和データがS端子から加算回路393 の入力端子に出力され、そのキャリデータがCI端子から、加算回路372 の入力端子に出力される。
【0020】
また、a0  ̄とb3 との論理積がAND回路2733にて演算され、その演算結果である「a0  ̄・b3 」が加算回路333 のX端子に出力される。
また、a2 とb1 との論理積がAND回路2711にて演算され、その演算結果である「a2 ・b1 」が加算回路333 のY端子に出力される。
そして、加算回路333 において、「a0  ̄・b3 」と「a2 ・b1 」との加算が行なわれ、その和データが加算回路393 の入力端子に出力される。
また、a1 とb1 との論理積がAND回路2721にて演算され、その演算結果である「a1 ・b1 」が加算回路334 のY端子に出力される。また、b3 が、加算回路334 の入力端子に出力される。
そして、加算回路334 において、「a1 ・b1 」と、b3 との加算が行なわれ、そのキャリデータが加算回路393 の入力端子に出力される。
【0021】
そして、加算回路393 において、加算回路394 からのキャリデータを考慮して、加算回路333 からの和データと、加算回路2922からの和データと、加算回路334 からのキャリデータとを用いて加算が行なわれ、S端子から、2ビットの和データ(r3 ,r4 )が、加算回路43に出力される。
このとき、和データ(r3 ,r4 )は、加算回路2922からの「a3 ・b0  ̄」、「a1 ・b2 」およびa3 の和データと、加算回路333 からの「a0  ̄・b3 」および「a2 ・b1 」と、 加算回路334 からの「a1 ・b1 」およびb3 の加算結果のキャリデータとを加算した和データとなる。
そして、加算回路43において、r0 〜r11を用いて加算が行なわれ、p3 が算出される。
【0022】
また、図19に示す部分積演算7は、以下のようにして行なわれる。
先ず、すなわち、AND回路2710において、a2 とb0 との論理積が演算され、その演算結果である「a2 ・b0 」が加算回路394 の入力端子に出力される。
また、AND回路2721において、a1 とb1 との論理積が演算され、その演算結果である「a1 ・b1 」が加算回路334 のY端子に出力される。また、b3 が加算回路334 のX端子に出力される。
そして、加算回路334 において、「a1 ・b1 」とb3 とが加算され、その和データが加算回路394 に出力される。
【0023】
また、AND回路2732において、a0 とb2 との論理積が演算され、その演算結果である「a0 ・b2 」が加算回路394 のCI端子に出力される。
また、b3 が加算回路394 のCI端子に出力される。
さらに、AND回路2710において、a2 とb0 との論理積が演算され、その演算結果である「a2 ・b0 」が加算回路394 の入力端子に出力される。
そして、加算回路393 において、加算回路334 から「a1 ・b1 」とb3 との加算結果の和データと、AND回路2732からの「a0 ・b2 」と、b3 と、AND回路2732からの「a0 ・b2 」とを用いた加算が行なわれ、2ビットの和データ(r3 ,r4 )が加算回路43に出力される。
そして、加算回路43において、r0 〜r11を用いて加算が行なわれ、p2 が算出される。
なお、p0 はAND回路2730の出力端子から出力され、p1 は加算回路335 のS端子から出力される。
また、p4 〜p6 は、加算回路43から出力される。
【0024】
上述したように、被乗数と乗数とのビット数が同じであると、2の補数乗算を行なった場合に、被乗数と乗数とのビット数が異なる場合に比べて、ワーストパスを構成する加算が1段増えてしまう。
そのため、2の補数乗算回路の処理時間が長期化してしまうという問題がある。
ここで、実際には、2の補数乗算を行なう上で、被乗数と乗数とのビット数(語長)が同じことが多く、このようにワーストパスを構成する加算が増えることは、例えば、繰り返し演算を多数回行なう3次元グラフィックなどの分野では、その性能に大きな影響を及ぼす。
【0025】
また、図18に示すように、am−1 とbn−1 が同列に位置すると、図21に示すような反復セル型の配列を採用した回路では、回路パターンの規則性が低下し、レイアウト設計が非常に困難になってしまうという問題がある。
同様な問題は、2の補数乗算と加算とを行なう2の補数積和演算回路にも同様に存在する。
【0026】
本発明は、上述した従来技術に鑑みてなされ、被乗数と乗数との語長が同じ場合に、バウウーリの2の補数乗算の処理時間を短縮できる演算装置およびその方法を提供することを目的とする。
また、本発明は、レイアウト設計が容易な演算装置を提供することを目的とする。
【0027】
【課題を解決するための手段】
上述した従来技術の問題点を解決し、上述した目的を達成するために、本発明の第1の観点の演算装置は、m(2以上の自然数)ビットの被乗数A(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって、m+nビットの積P(pm+n−1 pm+n−2 ,..,pm ,pm−1 ,..,p1 ,p0 )を算出する演算装置であって、1≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−1−q 」と、部分積「a0  ̄・bn−1 」とを算出する第1の乗算手段と、前記第1の乗算手段によって算出された全ての部分積と、bn−1 と、pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出する第1の加算手段と、2≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−q 」と、部分積「am−1 ・b0  ̄」、部分積「a1  ̄・bn−1 」とを算出する第2の乗算手段と、前記第2の乗算手段によって算出された全ての部分積と、am−1 と、前記第1の加算手段からのキャリデータとの加算を行なってpm を算出する第2の加算手段とを有し、m=nの場合に、m+1ビットの被乗数A’(am−1 ,am−1 ,am−2 ,..,a1 ,a0 )と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行う。
【0028】
また、本発明の第2の観点の演算装置は、m(2以上の自然数)ビットの被乗数A(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって、m+nビットの積R(rm+n−1 rm+n−2 ,..,rm ,rm−1 ,..,r1 ,r0 )を算出し、前記積Rと、m+nビットのデータC(cm+n−1 cm+n−2 ,..,cm ,cm−1 ,..,c1 ,c0 )とを加算する演算装置であって、1≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−1−q 」と、部分積「a0  ̄・bn−1 」とを算出する第1の乗算手段と、前記第1の乗算手段によって算出された全ての部分積と、bn−1 と、cm−1 と、pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出する第1の加算手段と、2≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−q 」と、部分積「am−1 ・b0  ̄」、部分積「a1  ̄・bn−1 」とを算出する第2の乗算手段と、前記第2の乗算手段によって算出された全ての部分積と、am−1 と、cm と、前記第1の加算手段からのキャリデータとの加算を行なってpm を算出する第2の加算手段とを有し、m=nの場合に、m+1ビットの被乗数A’(am−1 ,am−1 ,am−2 ,..,a1 ,a0 )と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって前記積Rを算出し、前記積Rと前記データCとを加算する。
【0029】
また、本発明の第3の観点の演算装置は、m(2以上の自然数)ビットのA(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットのB(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行い、m+nビットの積P(pm+n−1 pm+n−2 ,..,pm ,pm−1 ,..,p1 ,p2 )を算出する演算装置であって、0≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm−2−q 」と、部分積「1・bn−1 」とを算出する第1の乗算手段と、前記第1の乗算手段によって算出された全ての部分積と,bn−1 と,pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出する第1の加算手段と、1≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm−1−q 」と、部分積「am−1 ・b0  ̄」、部分積「a0  ̄・bn−1 」とを算出する第2の乗算手段と、前記第2の乗算手段によって算出された全ての部分積と、am−1 と、前記第1の加算手段からのキャリデータとの加算を行なって、pm を算出する第2の加算手段とを有し、m=nの場合に、m+1ビットの被乗数A’(am−1 ,am−2 ,..,a1 ,a0 ,0)と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行う。
【0030】
また、本発明の第4の観点の演算装置は、m(2以上の自然数)ビットの被乗数A(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって、m+nビットの積R(rm+n−1 rm+n−2 ,..,rm ,rm−1 ,..,r1 ,r0 )を算出し、前記積Rと、m+nビットのデータC(cm+n−1 cm+n−2 ,..,cm ,cm−1 ,..,c1 ,c0 )とを加算する演算装置であって、0≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm−2−q 」と、部分積「1・bn−1 」とを算出する第1の乗算手段と、前記第1の乗算手段によって算出された全ての部分積と、bn−1 と、cm−1 と、pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出する第1の加算手段と、1≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm−1−q 」と、部分積「am−1 ・b0  ̄」、部分積「a0  ̄・bn−1 」とを算出する第2の乗算手段と、前記第2の乗算手段によって算出された全ての部分積と、am−1 と、cm と、前記第1の加算手段からのキャリデータとの加算を行なってpm を算出する第2の加算手段とを有し、m=nの場合に、m+1ビットの被乗数A’(am−1 ,am−2 ,..,a1 ,a0 ,0)と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって前記積Rを算出し、前記積Rと前記データCとを加算する。
【0031】
本発明の演算装置およびその方法では、mビットの被乗数A(am−1 ,am−2 ,..,a1 ,a0 )と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって、m+nビットの積P(pm+n−1 pm+n−2 ,..,pm ,pm−1 ,..,p1 ,p0 )を算出するときに、m=nである場合に、m+1ビットの被乗数A’(am−1 ,am−1 ,am−2 ,..,a1 ,a0 )あるいはm+1ビットの被乗数A’(am−1 ,am−2 ,..,a1 ,a0 ,0)を用いて演算を行なうことで、ワーストパスを構成する部分積の加算において、加算段数が従来に比べて1段削減される。
【0032】
【発明の実施の形態】
以下、本発明の実施形態に係わるにバウウーリの2の補数乗算回路およびその方法について説明する。
第1実施形態
先ず、本実施形態の2の補数乗算回路において採用するバウウーリの2の補数乗算の演算方法について説明する。
図1は、本実施形態のバウウーリの2の補数乗算の演算方法について説明するための図である。
【0033】
この2の補数乗算方法では、mビットの被乗数A(am−1 ,am−2 ,..a1 ,a0 )と、nビットの乗数B(bn−1 ,bn−2 ,..,b1 ,b0 )との2の補数乗算を行なう場合に、m=nであるときに、m+1ビットの被乗数A’(am−1 ,am−1 ,am−2 ,..a1 ,a0 )と、nビットの乗数B(bn−1 ,bn−2 ,..,b1 ,b0 )との2の補数乗算を行ない、積P(pm+n−1,pm+n−2,..pm ,..,p1 ,p0 )を得る。
すなわち、mビットの被乗数A(am−1 ,am−2 ,..a1 ,a0 )の代わりに、被乗数Aの最上位ビット(MSB:Most Significant Bit )の上に、その最上位ビットam−1 を付加した被乗数A’(am−1 ,am−1 ,am−2 ,..a1 ,a0 )を用いる。
このようにすることで、被乗数Aの語長が1ビットだけ増え、被乗数と乗数との語長が異なるようになる。
その結果、図18に示すようにam−1 とbn−1 とが同じ列で加算されることを回避でき、図1に示すワーストパス10を構成する加算の段数を、図18に示すワーストパス6に比べて、1段減らすことができる。
【0034】
図1において、「56」は被乗数A’を示し、「57」は乗数Bを示し、「58」は部分積の集合を示し、「9」は積Pを示す。
図1に示す2の補数乗算の演算方法では、被乗算数AのMSBを1ビット符号拡張した被乗算数A’を用いることから、積PのMSBを削除したものを、2の補数乗算の演算結果とする。
従って、図1に示す「11」の部分の演算は不要となる。
【0035】
次に、図1に示すバウウーリの2の補数乗算の演算方法における部分積と、積Pとの関係について説明する。
なお、図1において、n=mである。
図1に示すように、p0 は、「a0 ・b0 」となる。
p1 は、「a1 ・b0 +a0 ・b1 」の加算結果の和データとなる。
p2 は、「a2 ・b0 +a1 ・b1 +a0 ・b2 」と、p1 からのキャリデータとの加算結果の和データとなる。
p3 は、「a3 ・b0 +a2 ・b1 +a1 ・b2 」と、p2 からのキャリデータとの加算結果の和データとなる。
また、pk (4≦k≦m−2:kは自然数)は、0〜kの自然数qの全てについての部分積「aq ・bk−q 」の加算結果と、pk−1 からのキャリデータとの加算結果の和データとなる。
また、pm−1 は、1≦q≦m−1の自然数qの全てについての部分積「aq ・bm−1−q 」と「a0  ̄・bn−1 」とbn−1 との加算結果と、pm−2 からのキャリデータとの加算結果の和データとなる。
【0036】
また、pm は、2≦q≦m−1を満たす自然数qの全てについての部分積「aq ・bm−q 」と「am−1 ・b0  ̄」と「a1  ̄・bn−1 」とam−1 との加算結果と、pm−1 からのキャリデータとの加算結果の和データとなる。
また、pk (m+n−3≦k≦m+1:kは自然数)は、3≦q≦m−1を満たす自然数qの全てについての部分積「aq ・bk−q 」と「am−1 ・bk−m  ̄ 」と「ak−m+1  ̄・bn−1 」との加算結果と、pk−1 からのキャリデータとの加算結果の和データとなる。
また、pm+n−2 は、「am−1 ・bn−2  ̄」と「am−1  ̄・bn−1 」との加算結果と、pm+n−3 からのキャリデータとの加算結果の和データとなる。
さらに、pm+n−1 は、am−1  ̄と「am−1 ・bn−1 」とbn−1  ̄との加算結果と、pm+n−2 からのキャリデータとの加算結果の和データとなる。
【0037】
以下、図1に示す2の補数乗算と、図18に示す従来の2の補数乗算とが同じであることを説明する。
p0 〜pm−2 については、図1に示す2の補数乗算と、図18に示す従来の2の補数演算とで、同じ乗算結果を加算して得られることから、同じである。
【0038】
また、pm−1 の部分積については、図1に示す「am−1 ・b0 」と、図18に示す「am−1 ・b0  ̄+am−1 」とが、pm−1 に与える影響が同じであれば、図1に示すpm−1 と、図18に示すpm−1 とは同じになる。
ここで、下記式(4)が成り立ち、am−1 ・b0  ̄は次のビットへの桁上げ(キャリデータ)となるので、図1に示す「am−1 ・b0 」と、図18に示す「am−1 ・b0  ̄+am−1 」とのうち、pm−1 に反映されるのは、何れも「am−1 ・b0 」となる。従って、図1に示すpm−1 と、図18に示すpm−1 とは同じである。
【0039】
【数4】
【0040】
次に、pm については、図1に示す「am−1 ・b0  ̄+am−1 ・b1 +am−1 」と、図18に示す「am−1 ・b1  ̄」とpm−1 からのキャリデータである「am−1 ・b0  ̄」との加算結果とがpm に与える影響が同じであれば、図1に示すpm と、図18に示すpm とは同じになる。
ここで、下記式(5)が成り立ち、am−1 ・b1 は次のビットへの桁上げ(キャリデータ)となるので、図1に示す「am−1 ・b0  ̄+am−1 ・b1 +am−1 」と、図18に示す「am−1 ・b1  ̄+am−1 ・b0  ̄」とのうち、pm に反映されるのは、何れも「am−1 ・b1  ̄+am−1 ・b0  ̄」となる。従って、図1に示すpm と、図18に示すpm とは同じである。
【0041】
【数5】
【0042】
次に、pm+1 については、図1に示す「am−1 ・b1  ̄+am−1 ・b2 」とpm からのキャリデータ「am−1 ・b1 」との加算結果と、図18に示す「am−1 ・b2  ̄」とがpm+1 に与える影響が同じであれば、図1に示すpm +1と、図18に示すpm+1 とは同じになる。
ここで、下記式(6)が成り立ち、am−1 ・b2 は次のビットへの桁上げ(キャリデータ)となるので、図1に示す「am−1 ・b1  ̄+am−1 ・b2 +am−1 ・b1 」と、図18に示す「am−1 ・b2  ̄」とのうち、pm+1 に反映されるのは、何れも「am−1 ・b2  ̄」となる。従って、図1に示すpm+1 と、図18に示すpm+1 とは同じである。
【0043】
【数6】
【0044】
次に、pm+2 については、図1に示す「am−1 ・b2  ̄+am−1 ・b3 +am−1 ・b2 」とpm+1 からのキャリデータ「am−1 ・b2 」との加算結果と、図18に示す「am−1 ・b3  ̄」とがpm+1 に与える影響が同じであれば、図1に示すpm +2と、図18に示すpm+2 とは同じになる。
ここで、下記式(7)が成り立ち、am−1 ・b3 は次のビットへの桁上げ(キャリデータ)となるので、図1に示す「am−1 ・b2  ̄+am−1 ・b3 +am−1 ・b2 」と、図18に示す「am−1 ・b3  ̄」とのうち、pm+2 に反映されるのは、何れも「am−1 ・b3  ̄」となる。従って、図1に示すpm+2 と、図18に示すpm+2 とは同じである。
【0045】
【数7】
【0046】
次に、ps (m+3<s<m+n−3)については、ps−1 からのキャリデータを考慮して、図1における「am−1 ・bs−m  ̄+am−1 ・bs−m+1 +am−1 ・bs−m 」と、図18における「am−1 ・bs−m+1  ̄」とがps に与える影響が同じであれば、図1におけるps と、図18におけるps とは同じになる。
ここで、下記式(8)が成り立ち、am−1 ・bs−m+1 は次のビットへの桁上げ(キャリデータ)となるので、図1における「am−1 ・bs−m  ̄+am−1 ・bs−m+1 +am−1 ・bs−m 」と、図18における「am−1 ・bs−m+1  ̄」とのうち、ps に反映されるのは、何れも「am−1 ・bs−m+1  ̄」となる。従って、図1におけるpm+n−2 と、図18におけるpm+n−2 とは同じである。
【0047】
【数8】
【0048】
次に、pm+n−2 については、pm+n−3 からのキャリデータを考慮して、図1における「am−1 ・bn−2  ̄+am−1  ̄・bn−1 +am−1 ・bn−2 」と、図18における「am−1  ̄+am−1 ・bn−1 +bn−1  ̄」とがpm+n−2 に与える影響が同じであれば、図1におけるpm+n−2 と、図18におけるpm+n−2 とは同じになる。
ここで、下記式(9)および(10)が成り立ち、図18におけるam−1 ・bn−1 は次のビットへの桁上げ(キャリデータ)となるので、図1における「am−1 ・bn−2  ̄+am−1  ̄・bn−1 +am−1 ・bn−2 」と、図18における「am−1  ̄+am−1 ・bn−1 +bn−1  ̄」とのうち、pm+n−2 に反映されるのは、何れも「am−1 +bn−1 」となる。従って、図1におけるps と、図18におけるps とは同じである。
【0049】
【数9】
【0050】
【数10】
【0051】
次に、pm+n−1 については、pm+n−2 からのキャリデータを考慮して、図1における「am−1  ̄・+am−1 ・bn−1 +bn−1  ̄」と、図18における「1+am−1 ・bn−1 」とがpm+n−1 に与える影響が同じであれば、図1におけるpm+n−1 と、図18におけるpm+n−1 とは同じになる。
ここで、下記式(11)および(12)が成り立ち、図1における「am−1 ・bn−1 」および図18における「am−1 ・bn−1 」は次のビットへの桁上げ(キャリデータ)となり、図1における「am−1  ̄・+am−1 ・bn−1 +bn−1  ̄」と、図18における「1+am−1 ・bn−1 」とのうち、pm+n−1 に反映されるのは、何れも「am−1 +bn−1 」となる。従って、図1におけるpm+n−1 と、図18におけるpp+n−1 とは同じである。
【0052】
【数11】
【0053】
【数12】
【0054】
なお、図1において、pm+n の演算結果は、破棄される。
以上から、図1に示す2の補数乗算と、図18に示す従来の2の補数乗算とは同じである。
【0055】
図2は、図1に示す演算方法を、4ビットの被乗数Aと4ビットの乗数Bとの2の補数乗算に適用した場合の演算方法を説明するための図である。
この場合には、図2に示すように、4ビットの被乗数A(a3 ,a2 ,a1 ,a0 )のMSBの上に、そのMSBであるa3 を付加した5ビットの被乗数A(a3 ,a3 ,a2 ,a1 ,a0 )と、4ビットの乗数B(b3 ,b2 ,b1 ,b0 )との2の補数乗算を行ない、積P(p7 ,p6 ,p5 ,p4 ,p3 ,p2 ,p1 ,p0 )が得られる。ここで、演算結果である積のMSBにある「1」は破棄される。
図2に示すように、a3 とb3 とは異なる列に配列され、図18に示す演算方法を適用した場合に比べて、ワーストパス50a,50bの段数を1段だけ削減できる。
ここで、被乗数A(a3 ,a2 ,a1 ,a0 )が(1,0,1,0)であり、乗数B(b3 ,b2 ,b1 ,b0 )が(1,1,1,1)である場合には、図3に示すように演算が行なわれ、演算結果の最上位ビットにある「1」が破棄される。
これによって、積P(p7 ,p6 ,p5 ,p4 ,p3 ,p2 ,p1 ,p0 )が(0,0,0,0,0,1,1,0)となる。
【0056】
図4は、図2に示す2の補数乗算を行なう2の補数乗算回路51である。
図4に示すように、2の補数乗算回路51は、列方向に4個のバッファ回路250 ,251 ,252 ,253 が配設され、バッファ回路250 ,251 ,252 ,253 の出力端子から、それぞれデータ線350 ,351 ,252 ,253 が延びている。また、行方向に5個のバッファ回路254 ,255 ,256 ,257 ,258 が配設され、バッファ回路254 ,255 ,256 ,257 ,258 の出力端子から、それぞれデータ線354 ,355 ,356 ,357 ,358 が延びている。
【0057】
2の補数乗算回路51では、5×4のマトリクス状にAND回路2700〜2743が配設され、AND回路2703,2711,2712,2713,2721,2722,2723,2732,2733,2742,2743に対応して、それぞれ図17(A)に示す構成の加算回路2903,2911,2912,2913,2921,2922,2923,2932,2933,2942,2943が設けられている。
また、AND回路2731,2741に対応して、図17(B)に示す構成の加算回路3331,3341が設けられている。
また、AND回路2700,2701,2702,2703,2713,2723,2733,2743に対応して、それぞれNOT回路3100,3101,3102,3103,3113,3123,3133,3143が設けられている。
さらに、2の補数乗算回路51には、加算回路52が設けられている。加算回路52は、加算回路2903からの和データr7 と、加算回路2913からの和データr5 およびキャリデータr6 と、加算回路2923からの和データr3 およびキャリデータr4 と、加算回路2933からの和データr1 およびキャリデータr2 と、加算回路2943からのキャリデータr0 とを入力し、これらから、図2に示す積Pのp7 ,p6 ,p5 ,p4 を演算して出力する。
なお、図4において、AND回路2710,2721,2732,2743によって本発明の第1の観点の演算装置における第1の乗算手段が構成される。また、加算回路2921,2932,2943によって第1の加算手段が構成される。また、AND回路2700,2711,2722,2733によって、第2の乗算手段が構成される。また、加算回路2911,2922,2923によって第2の加算手段が構成される。
【0058】
以下、図4に示す2の補数乗算回路51の接続状態について説明する。
AND回路2700,2701,2702,2703の一方の入力端子は、データ線354 に接続されている。AND回路2700,2701,2702,2703の他方の入力端子は、それぞれNOT回路3100,3101,3102,3103を介して、それぞれデータ線350 ,351 ,352 ,353 に接続されている。
AND回路2700,2701,2702の出力端子は、それぞれ加算回路2911,2912,2913のY端子に接続されている。AND回路2703の出力端子は、加算回路2903のX端子に接続されている。
また、加算回路2903のCI端子は、NOT回路3103を介して、データ線353 に接続されている。加算回路2903のS端子は、加算回路52に接続され、和データs7 を加算回路52に出力する。
【0059】
AND回路2710,2711,2712,2713の一方の入力端子は、データ線355 に接続されている。AND回路2710,2711,2712,2713の他方の入力端子は、それぞれデータ線350 ,351 ,352 ,353 に接続されている。
AND回路2711,2712,2713の出力端子は、それぞれ加算回路2911,2912,2913のX端子に接続されている。AND回路2710の出力端子は、加算回路2921のY端子に接続されている。
また、加算回路2911のCI端子はデータ線354 に接続され、CO端子は加算回路2912のCI端子に接続され、S端子は加算回路2922のY端子に接続されている。
また、加算回路2912のCO端子は加算回路2913のCI端子に接続され、S端子は加算回路2923のY端子に接続されている。
また、加算回路2913のCO端子およびS端子は、加算回路52に接続されている。
【0060】
AND回路2720,2721,2722の一方の入力端子は、データ線356 に接続されている。AND回路2723の一方の入力端子は、NOT回路3123を介して、データ線356 に接続されている。
AND回路2720,2721,2722,2723の他方の入力端子は、それぞれデータ線350 ,351 ,352 ,353 に接続されている。
AND回路2721,2722,2723の出力端子は、それぞれ加算回路2921,2922,2923のX端子に接続されている。AND回路2720の出力端子は、加算回路3331のY端子に接続されている。
また、加算回路2921のCI端子は、データ線353 に接続され、CO端子は加算回路2922のCI端子に接続され、S端子は加算回路2932のY端子に接続されている。
また、加算回路2922のCO端子は加算回路2923のCI端子に接続され、S端子は加算回路2933のY端子に接続されている。
また、加算回路2923のCO端子およびS端子は、加算回路52に接続されている。
【0061】
AND回路2730,2731,2732の一方の入力端子は、データ線357 に接続されている。AND回路2733の一方の入力端子は、NOT回路3133を介して、データ線357 に接続されている。
AND回路2730,2731,2732,2733の他方の入力端子は、それぞれデータ線350 ,351 ,352 ,353 に接続されている。
AND回路2730の出力端子は、加算回路3341のY端子に接続されている。AND回路2731の出力端子は、加算回路3331のY端子に接続されている。AND回路2732,2733の出力端子は、それぞれ加算回路2932,2933のX端子に接続されている。
また、加算回路3331のCO端子は、加算回路2932のCI端子に接続され、S端子は加算回路2942のY端子に接続されている。
加算回路2932のCO端子は加算回路2933のCI端子に接続され、S端子は加算回路2943のY端子に接続されている。
また、加算回路2933のCO端子およびS端子は、加算回路52に接続されている。
【0062】
AND回路2740,2741,2742の一方の入力端子は、データ線358 に接続されている。AND回路2743の一方の入力端子は、NOT回路3143を介して、データ線358 に接続されている。
AND回路2740,2741,2742,2743の他方の入力端子は、それぞれデータ線350 ,351 ,352 ,353 に接続されている。
AND回路2740の出力端子からは、図2に示す積Pのp0 が出力される。
AND回路2741の出力端子は、加算回路3341のX端子に接続されている。AND回路2742,2743の出力端子は、それぞれ加算回路2942,2943のX端子に接続されている。
また、加算回路3341のCO端子は、加算回路2942のCI端子に接続され、S端子からは、積Pのp1 が出力される。
加算回路2942のCO端子は加算回路2943のCI端子に接続され、S端子からは積Pのp2 が出力される。
また、加算回路2943のCO端子は、加算回路52に接続されている。
【0063】
以下、図4に示す2の補数乗算回路51の動作について説明する。
2の補数乗算回路51では、以下に示すようにして、図2に示す積Pのp0 〜p7 を算出する。
〔p0 の算出〕
バッファ回路258 を介してデータ線358 に印加されたデータa0 と、バッファ回路250 を介してデータ線350 に印加されたデータb0 との論理積がAND回路2740において算出され、その算出結果である「a0 ・b0 」がAND回路2740の出力端子から、p0 として出力される。
【0064】
〔p1 の算出〕
バッファ回路257 を介してデータ線357 に印加されたデータa1 と、バッファ回路250 を介してデータ線350 に印加されたデータb0 との論理積がAND回路2730において算出され、その算出結果である「a1 ・b0 」がAND回路2730の出力端子から、加算回路3341のY端子に出力される。
また、バッファ回路258 を介してデータ線358 に印加されたデータa0 と、バッファ回路251 を介してデータ線351 に印加されたデータb1 との論理積がAND回路2741において算出され、その算出結果である「a0 ・b1 」がAND回路2741の出力端子から、加算回路3341のX端子に出力される。
そして、加算回路3341において、「a1 ・b0 」と「a0 ・b1 」との加算が行なわれ、その加算結果である「a1 ・b0 +a0 ・b1 」の和データがS端子からp1 として出力され、そのキャリデータがCO端子から加算回路2942のCI端子に出力される。
【0065】
〔p2 の算出〕
バッファ回路256 を介してデータ線356 に印加されたデータa2 と、バッファ回路250 を介してデータ線350 に印加されたデータb0 との論理積がAND回路2720において算出され、その算出結果である「a2 ・b0 」がAND回路2720の出力端子から、加算回路3331のY端子に出力される。
また、バッファ回路257 を介してデータ線357 に印加されたデータa1 と、バッファ回路251 を介してデータ線351 に印加されたデータb1 との論理積がAND回路2731において算出され、その算出結果である「a1 ・b1 」がAND回路2731の出力端子から、加算回路3331のX端子に出力される。
そして、加算回路3331において、「a2 ・b0 」と「a1 ・b1 」との加算が行なわれ、その加算結果である「a2 ・b0 +a1 ・b1 」の和データがS端子から加算回路2942のY端子に出力され、そのキャリデータがCO端子から加算回路2932のCI端子に出力される。
また、バッファ回路258 を介してデータ線358 に印加されたデータa0 と、バッファ回路252 を介してデータ線352 に印加されたデータb2 との論理積がAND回路2742において算出され、その算出結果である「a0 ・b2 」がAND回路2742の出力端子から、加算回路2942のX端子に出力される。
そして、加算回路2942において、加算回路3341のCO端子からの「a1 ・b0 +a0 ・b1 」のキャリデータと、AND回路2742の出力端子からの「a0 ・b2 」と、加算回路3331のS端子からの「a2 ・b0 +a1 ・b1 」の和データとを用いて加算が行なわれ、その加算結果の和データがS端子からp2 として出力され、そのキャリデータがCO端子から加算回路2943のCI端子に出力される。
【0066】
〔p3 の算出〕
バッファ回路256 を介してデータ線356 に印加されたデータa2 と、バッファ回路251 を介してデータ線351 に印加されたデータb1 との論理積がAND回路2721において算出され、その算出結果である「a2 ・b1 」がAND回路2721の出力端子から、加算回路2921のX端子に出力される。
また、バッファ回路255 を介してデータ線355 に印加されたデータa3 と、バッファ回路250 を介してデータ線350 に印加されたデータb0 との論理積がAND回路2710において算出され、その算出結果である「a3 ・b0 」がAND回路2710の出力端子から、加算回路2921のX端子に出力される。
また、バッファ回路253 を介してデータ線353 に印加されたデータb3 が加算回路2921のCI端子に入力される。
そして、加算回路2921において、AND回路2721の出力端子からの「a2 ・b1 」と、AND回路2710の出力端子からの「a3 ・b0 」と、b3 とを用いて加算が行なわれ、その加算結果の和データが加算回路2932のY端子に出力され、キャリデータが加算回路2922のCI端子に出力される。
【0067】
また、バッファ回路257 を介してデータ線357 に印加されたデータa1 と、バッファ回路252 を介してデータ線352 に印加されたデータb2 との論理積がAND回路2732において算出され、その算出結果である「a1 ・b2 」がAND回路2732の出力端子から、加算回路2932のX端子に出力される。
そして、加算回路2932において、加算回路2921のS端子からの「a2 ・b1 」と「a3 ・b0 」とb3 との加算結果の和データと、AND回路2732からの「a1 ・b2 」と、加算回路3331からのキャリデータとを用いて加算が行なわれ、その加算結果の和データがS端子から加算回路2943のY端子に出力され、キャリデータがCO端子から加算回路2933のCI端子に出力される。
【0068】
また、バッファ回路258 を介してデータ線358 に印加されたデータa0 と、バッファ回路253 を介してデータ線353 に印加されたデータb3 との論理積がAND回路2743において算出され、その算出結果である「a0 ・b3 」がAND回路2743の出力端子から、加算回路2943のX端子に出力される。
そして、加算回路2943において、加算回路2932の和データと、AND回路2743の出力端子からの「a0 ・b3 」と、加算回路2942のキャリデータとを用いて加算が行なわれ、その和データがS端子からp3 として出力され、そのキャリデータが加算回路52に出力される。
【0069】
上述した演算は、図2に示すワーストパス50bの演算に相当し、AND回路2710,2721,2732,2743において乗算が行なわれ、加算回路2921,2932,2943において加算が行なわれる。
【0070】
〔r1 ,r2 の算出〕
バッファ回路254 を介してデータ線354 に印加されたデータa3 と、バッファ回路250 を介してデータ線350 に印加されたデータb0 との論理積がAND回路2700において算出され、その算出結果である「a3 ・b0 」がAND回路2700の出力端子から、加算回路2911のY端子に出力される。
また、バッファ回路255 を介してデータ線355 に印加されたデータa3 と、バッファ回路251 を介してデータ線351 に印加されたデータb1 との論理積がAND回路2711において算出され、その算出結果である「a3 ・b1 」がAND回路2711の出力端子から、加算回路2911のX端子に出力される。
また、バッファ回路254 を介してデータ線354 に印加されたデータa3 が加算回路2911のCI端子に入力される。
そして、加算回路2911において、「a3 ・b0 」と、「a3 ・b1 」と、a3 とを用いて加算が行なわれ、その加算結果の和データが加算回路2922のY端子に出力され、キャリデータが加算回路2912のCI端子に出力される。
【0071】
また、バッファ回路256 を介してデータ線356 に印加されたデータa2 と、バッファ回路252 を介してデータ線352 に印加されたデータb2 との論理積がAND回路2722において算出され、その算出結果である「a2 ・b2 」がAND回路2722の出力端子から、加算回路2922のX端子に出力される。
そして、加算回路2922において、加算回路2911からの和データと、「a2 ・b2 」と、加算回路2921のキャリデータとを用いて加算が行なわれ、その加算結果の和データが加算回路2933のY端子に出力され、キャリデータが加算回路2923のCI端子に出力される。
【0072】
また、バッファ回路257 を介してデータ線357 に印加されたデータa1 のNOT回路3133による反転a1  ̄と、バッファ回路253 を介してデータ線353 に印加されたデータb3 との論理積がAND回路2733において算出され、その算出結果である「a1  ̄・b3 」がAND回路2733の出力端子から、加算回路2933のX端子に出力される。
そして、加算回路2933において、加算回路2922の和データと、「a1  ̄・b3 」と、加算回路2932のキャリデータとを用いて加算が行なわれ、その和データr1 がS端子から加算回路52に出力され、そのキャリデータr2 がCO端子から加算回路52に出力される。
【0073】
上述した演算は、図2に示すワーストパス50aの演算に相当し、AND回路2700,2711,2722,2733において乗算が行なわれ、加算回路2911,2922,2933において加算が行なわれる。
【0074】
〔r3 ,r4 の算出〕
バッファ回路254 を介してデータ線354 に印加されたデータa3 と、バッファ回路251 を介してデータ線351 に印加され、NOT回路3101において反転されたデータb1  ̄との論理積がAND回路2701において算出され、その算出結果である「a3 ・b1  ̄」がAND回路2701の出力端子から、加算回路2912のY端子に出力される。
また、バッファ回路255 を介してデータ線355 に印加されたデータa3 と、バッファ回路252 を介してデータ線352 に印加されたデータb2 との論理積がAND回路2712において算出され、その算出結果である「a3 ・b2 」がAND回路2712の出力端子から、加算回路2912のX端子に出力される。
そして、加算回路2912において、「a3 ・b1 」と、「a3 ・b2 」と、加算回路2911のキャリデータとを用いて加算が行なわれ、その加算結果の和データが加算回路2923のY端子に出力され、キャリデータが加算回路2913のCI端子に出力される。
【0075】
また、バッファ回路256 を介してデータ線356 に印加され、NOT回路3123にて反転されたデータa2  ̄と、バッファ回路253 を介してデータ線353 に印加されたデータb3 との論理積がAND回路2723において算出され、その算出結果である「a2  ̄・b3 」がAND回路2723の出力端子から、加算回路2923のX端子に出力される。
そして、加算回路2923において、「a2  ̄・b3 」と、加算回路2912の和データと、加算回路2922のキャリデータとを用いて加算が行なわれ、その加算結果の和データr3 およびキャリデータr4 が加算回路52に出力される。
【0076】
〔r5 ,r6 の算出〕
バッファ回路254 を介してデータ線354 に印加されたデータa3 と、バッファ回路252 を介してデータ線352 に印加され、NOT回路3102において反転されたデータb2  ̄との論理積がAND回路2702において算出され、その算出結果である「a3 ・b2  ̄」がAND回路2702の出力端子から、加算回路2913のY端子に出力される。
また、バッファ回路255 を介してデータ線355 に印加され,NOT回路3113において反転されたデータa3  ̄と、バッファ回路253 を介してデータ線353 に印加されたデータb3 との論理積がAND回路2713において算出され、その算出結果である「a3  ̄・b3 」がAND回路2713の出力端子から、加算回路2913のX端子に出力される。
そして、加算回路2913において、「a3 ・b2  ̄」と、「a3  ̄・b3 」と、加算回路2912からのキャリデータとを用いて加算が行なわれ、その加算結果の和データr5 およびキャリデータr6 が加算回路52に出力される。
【0077】
〔r7 の算出〕
バッファ回路254 を介してデータ線354 に印加されたデータa3 と、バッファ回路253 を介してデータ線353 に印加されたデータb3 との論理積がAND回路2703において算出され、その算出結果である「a3 ・b3 」がAND回路2703の出力端子から、加算回路2903のX端子に出力される。
また、バッファ回路254 を介してデータ線354 に印加され,NOT回路3103において反転されたデータa3  ̄が加算回路2903のCI端子に入力される。
また、バッファ回路253 を介してデータ線353 に印加され、NOT回路3104において反転されたデータb3  ̄が加算回路2903のY端子に入力される。そして、加算回路2903において、「a3 ・b3 」と、a3  ̄と、b3  ̄との加算が行なわれ、その加算結果の和データr7 が加算回路52に出力される。
【0078】
〔p4 ,p5 ,p6 ,p7 の算出〕
図2に示す積Pのp4 ,p5 ,p6 ,p7 は、上述した処理によって求められたr0 〜r7 を用いて、加算回路52において算出される。
【0079】
以上説明したように、本実施形態のバウウーリの2の補数乗算回路によれば、被乗数と乗数とのビット数が同じであっても、これらのビット数が異なる場合と、ワーストパスを構成する演算の加算段数を同じにすることができる。その結果、従来に比べて、処理時間を短縮化できる。
また、本実施形態によれば、図1に示すように、am−1 とbn−1 とが異なる列に配置されることから、その回路を反復セル型の配列を採用して構成した場合に、回路パターンの規則性を高めることができ、レイアウト設計を容易にすることができる。
【0080】
第2実施形態
本実施形態では、積の演算に、上述した図1に示す2の補数乗算方法採用した2の補数積和演算回路について説明する。
図5は、本実施形態において、4ビットの被乗数Aと4ビットの乗数Bとの2の補数乗算の乗算結果に、9ビットのデータCを加算する場合の演算方法を説明するための図である。
図5において、「60」は、図2に示す部分積と同じである。
図5に示すように、この演算方法では、4ビットの被乗数A(a3 ,a2 ,a1 ,a0 )のMSBの上位ビットに、MSBであるa3 を付加した5ビットの被乗数A(a3 ,a3 ,a2 ,a1 ,a0 )と、4ビットの乗数B(b3 ,b2 ,b1 ,b0 )との2の補数乗算を行ない、その積に対して、8ビットのデータC(c7 ,c6 ,c5 ,c4 ,c3 ,c2 ,c1 ,c0 )を加算して、積和演算結果であるP(p7 ,p6 ,p5 ,p4 ,p3 ,p2 ,p1 ,p0 )を得る。
ここで、2の補数の乗算結果のMSBである「1」は破棄される。
図5において、ワーストパスは、「60a」および「60b」で示される。
【0081】
図6は、図5に示す2の補数積和演算を行なう2の補数積和演算回路61である。
なお、図6において、図4に示す2の補数乗算回路51と同じ構成要素には図4と同一の符号が付してある。
以下、2の補数積和演算回路61と2の補数乗算回路51との相違点のみを説明する。
2の補数乗算回路51とは異なり、2の補数積和演算回路61には、図4に示す加算回路2911,2921,2931,2941,2912,2913が設けられていない。
【0082】
また、2の補数積和演算回路61には、データ線650 〜657 が設けられている。
また、2の補数積和演算回路61には、2の補数乗算回路51の加算回路2942の代わりに、半加算回路である加算回路3342が設けられている。
また、2の補数積和演算回路61には、図17(A)に示す構成の加算回路2914,2951,2952,2953と、図17(B)に示す構成の半加算回路である加算回路3350と、加算回路3724,3734と、加算回路3944とが、設けられている。
加算回路3724,3734は、それぞれ1ビットの加算対象データを入力する4個の入力端子、CI端子、CO端子および2ビットのS端子を備えている。
加算回路3944は、それぞれ1ビットの加算対象データを入力する3個の入力端子、CI端子、CO端子および2ビットのS端子を備えている。
【0083】
また、2の補数積和演算回路61には、2の補数乗算回路51の加算回路52の代わりに、加算回路62が設けられている。
加算回路62は、加算回路2914からの和データs6 と、加算回路3724からの和データs4 およびキャリデータs5 と、加算回路3734からの和データs2 およびキャリデータs3 と、加算回路3944からの和データs0 およびキャリデータs1 とを入力し、これらから、図5に示す積Rのr7 ,r6 ,r5 ,r4 を演算して生成する。
【0084】
以下、図6に示す2の補数積和演算回路61の接続状態について説明する。
ここでは、図4に示す2の補数乗算回路51の接続形態と異なる点を主に説明する。
AND回路2700,2701,2710,2711,2721,2730,2731の出力端子は、それぞれ加算回路2922,2923,2932,2933,2943,2951,2952のY端子に接続されている。
また、AND回路2720の出力端子は、加算回路3342のY端子に接続されている。AND回路2740の出力端子は、加算回路3350のX端子に接続されている。AND回路2741の出力端子は、加算回路2951のCI端子に接続されている。AND回路2702,2713の出力端子は、加算回路3724の入力端子に接続されている。
また、AND回路2712の出力端子は、加算回路3734の入力端子に接続されている。また、AND回路2742の出力端子は、加算回路3342のX端子に接続されている。
【0085】
また、加算回路2922のCI端子は、データ線354 に接続されている。加算回路2923のCI端子は、データ線655 に接続されている。加算回路2932のCI端子は、データ線353 に接続されている。加算回路2933のCI端子は、データ線654 に接続されている。加算回路2943のCI端子は、データ線653 に接続されている。加算回路3350のY端子は、データ線650 に接続されている。加算回路2951のX端子は、データ線651 に接続されている。加算回路2952のX端子はデータ線652 に接続され、CI端子は加算回路3342のS端子に接続されている。加算回路2953のY端子は加算回路2932のS端子に接続され、Y端子は加算回路3342のCO端子に接続され、CI端子は加算回路2943のS端子に接続されている。
【0086】
また、加算回路2914のY端子は加算回路3724のCO端子に接続され、X端子は加算回路2903のS端子に接続され、CI端子はデータ線657 に接続されている。
加算回路3724の4本の入力端子は、それぞれAND回路2713の出力端子、データ線656 、AND回路2702の出力端子および加算回路2923のCO端子に接続され、CI端子は加算回路3734のCO端子に接続され、CO端子は加算回路2914のCI端子に接続され、2ビットのS端子は加算回路62に接続されている。
加算回路3734の4本の入力端子は、それぞれ加算回路2923のS端子、加算回路2922のCO端子、AND回路2713の出力端子、データ線656 、AND回路2712の出力端子および加算回路2933のCO端子に接続され、CI端子は加算回路3944のCO端子に接続され、CO端子は加算回路3724のCI端子に接続され、2ビットのS端子は加算回路62に接続されている。
【0087】
加算回路3944の3本の入力端子は、それぞれ加算回路2933のS端子、加算回路2932のCO端子および加算回路2922のS端子に接続され、CI端子は加算回路2943のCO端子に接続され、CO端子は加算回路3734のCI端子に接続され、2ビットのS端子は加算回路62に接続されている。
なお、図6において、AND回路2710,2721,2732,2743によって本発明の第2の観点の演算装置における第1の乗算手段が構成される。また、加算回路2932,2943,2953によって第1の加算手段が構成される。また、AND回路2700,2711,2722,2733によって、第2の乗算手段が構成される。また、加算回路2922,2933,3944によって第2の加算手段が構成される。
【0088】
以下、図6に示す2の補数積和演算回路61の動作について説明する。
2の補数積和演算回路61では、以下に示すようにして、図5に示す積和演算結果であるPのp0 〜p7 を算出する。
【0089】
〔p0 の算出〕
加算回路3350において、AND回路2740の出力端子からの「a0 ・b0 」と、データ線650 に印加されたデータc0 との加算が行なわれ、その加算結果の和データp0 がS端子から出力される。また、この加算結果のキャリデータr7 は、CO端子から加算回路62に出力される。
【0090】
〔p1 の算出〕
AND回路2741の出力端子からの「a0 ・b1 」と、データ線651 に印加されたc1 と、AND回路2730の出力端子からの「a1 ・b0 」とを用いた加算が、加算回路2951において行なわれ、その加算結果の和データp1 がS端子から出力され、キャリデータr8 が端子から加算回路62に出力される。
【0091】
〔p2 の算出〕
加算回路3342において、AND回路2742の出力端子からの「a0 ・b2 」と、AND回路2720の出力端子からの「a2 ・b0 」との加算が行なわれ、その加算結果の和データがS端子から加算回路2952のCI端子に出力され、キャリデータがCO端子から加算回路2953のX端子に出力される。
そして、加算回路2952において、加算回路3342からの和データと、データ線652 に印加されたc2 と、AND回路2731の出力端子からの「a1 ・b1 」との加算が行なわれ、その加算結果の和データp2 がS端子から出力され、キャリデータr9 がCO端子から出力される。これらの和データp2 およびキャリデータr9 は、加算回路62に出力される。
【0092】
〔p3 の算出〕
加算回路3332において、AND回路2732の出力端子からの「a1 ・b2 」と、AND回路2710の出力端子からの「a3 ・b0 」と、データ線353 に印加されたb3 との加算が行なわれ、その加算結果の和データがS端子から加算回路2953のY端子に出力され、キャリデータがCO端子から加算回路3944の入力端子に出力される。
また、加算回路2943において、AND回路2743の出力端子からの「a0  ̄・b3 」と、データ線653 に印加されたデータc3 と、AND回路2721の出力端子からの「a2 ・b1 」との加算が行なわれ、その加算結果の和データがS端子から加算回路2953のCI端子に出力され、キャリデータがCO端子から加算回路3944のCI端子に出力される。
そして、加算回路2953において、加算回路2943からの和データと、加算回路3342からのキャリデータと、加算回路2932からの和データとの加算が行なわれ、その加算結果の和データp3 がS端子から出力され、キャリデータがCO端子から出力される。これらの和データp3 およびキャリデータr10は、加算回路62に出力される。
【0093】
この演算は、図5に示すワーストパス60bを算出する演算に相当し、AND回路2710,2721,2732,2743において乗算が行なわれ、加算回路2932,2943,2953において加算が行なわれる。
【0094】
〔r0 ,r1 の算出〕
加算回路2922において、AND回路2722の出力端子からの「a2 ・b2 」と、AND回路2700の出力端子からの「a3 ・b0  ̄」と、データ線354 に印加されたa3 との加算が行なわれ、その加算結果の和データがS端子から、加算回路3944の入力端子に出力される。
加算回路2933において、AND回路2733の出力端子からの「a1  ̄・b3 」と、AND回路2711の出力端子からの「a3 ・b1 」と、データ線654 に印加されたc4 との加算が行なわれ、その加算結果の和データがS端子から、加算回路3944の入力端子に出力される。また、その加算結果のキャリデータが、加算回路3734の入力端子に出力される。
【0095】
そして、加算回路3944において、加算回路2933のS端子からの和データと、加算回路2932のCO端子からのキャリデータと、加算回路2922のS端子からの和データと、加算回路2943のCO端子からのキャリデータとを用いて加算が行なわれ、その2ビットの和データ(r0 ,r1 )がS端子から加算回路62に出力される。また、CO端子からキャリデータが加算回路3734のCI端子に出力される。
【0096】
この演算は、図5に示すワーストパス60aを算出する演算に相当し、AND回路2700,2711,2722,2733において乗算が行なわれ、加算回路2922,2933,3944において加算が行なわれる。
【0097】
〔r2 ,r3 の算出〕
加算回路2923において、AND回路2723の出力端子からの「a2  ̄・b3 」と、AND回路2701の出力端子からの「a3 ・b1  ̄」と、データ線655 に印加されたc5 との加算が行なわれ、その加算結果の和データがS端子から加算回路3734の入力端子に出力され、キャリデータがCO端子から加算回路3724に出力される。
そして、加算回路3734において、加算回路2923のS端子からの和データと、加算回路2922のCO端子からのキャリデータと、AND回路2712の出力端子からの「a3 ・b2 」と、加算回路2933のCO端子からのキャリデータとを用いて加算が行なわれ、S端子から・2ビットの和データ(r2 ,r3 )が加算回路62に出力される。また、CO端子からキャリデータが、加算回路3724に出力される。
【0098】
〔r4 ,r5 の算出〕
加算回路3724において、AND回路2713の出力端子からの「a3  ̄・b3 」と、データ線656 に印加されたc6 と、AND回路2702の出力端子からの「a3 ・b2  ̄」と、加算回路2923のCO端子からのキャリデーアとを用いて加算が行なわれ、S端子から2ビットの和データ(r4 ,r5 )が加算回路62に出力される。また、CO端子からキャリデータが加算回路2914に出力される。
【0099】
〔r6 の算出〕
AND回路2703において、AND回路2703からの「a3 ・b3 」と、データ線354 に印加されてAND回路2703によって反転されたa3  ̄と、Y端子に入力されたb3  ̄との加算が行なわれ、その加算結果の和データが加算回路2914のX端子に出力される。
そして、加算回路2914において、加算回路2903のS端子からの和データと、データ線657 に印加されたc7 と、加算回路3724からのキャリデータとを用いて加算が行なわれ、その加算結果の和データr6 が加算回路62に出力される。
【0100】
〔p4 〜p7 の算出〕
加算回路62において、p1 ,p2 ,p3 ,r0 〜r10を用いて、p4 ,p5 ,p6 ,p7 が算出される。
【0101】
以上説明したように、本実施形態のバウウーリの2の補数積和演算回路によっても、前述した第1実施形態のバウウーリの2の補数乗算回路と同様の効果を得ることができる。
【0102】
第3実施形態
先ず、本実施形態の2の補数乗算回路において採用するバウウーリの2の補数乗算の演算方法について説明する。
図7は、本実施形態のバウウーリの2の補数乗算の演算方法について説明するための図である。
【0103】
この2の補数乗算方法では、mビットの被乗数A(am−1 ,am−2 ,..a1 ,a0 )と、nビットの乗数B(bn−1 ,bn−2 ,..,b1 ,b0 )との2の補数乗算を行なう場合に、m=nであるときに、m+1ビットの被乗数A’(am−1 ,am−2 ,..a1 ,a0 ,0)と、nビットの乗数B(bn−1 ,bn−2 ,..,b1 ,b0 )との2の補数乗算を行なう。
すなわち、mビットの被乗数A(am−1 ,am−2 ,..a1 ,a0 )の代わりに、被乗数Aの最下位ビット(LSB:Least Significant Bit)の下に、「0」を付加した被乗数A’(am−1 ,am−2 ,..a1 ,a0 ,0)を用いる。
このようにすることで、被乗数Aの語長が1ビットだけ増え、被乗数と乗数との語長が異なるようになる。
その結果、図18に示すようにam−1 とbn−1 とが同じ列で加算されることを回避でき、図7に示すワーストパス16を構成する加算の段数を、図18に示すワーストパス6に比べて、1段減らすことができる。
【0104】
図7において、「12」は被乗数A’を示し、「13」は乗数Bを示し、「14」は部分積の集合を示し、「15」は積P(pm+n−1 ,pm+n−2 ,..,p1 ,p0 )を示す。
図7に示す2の補数乗算の演算方法では、被乗算数AをLSB方向に1ビット符号拡張した被乗算数A’を用いることから、積PのLSBを削除したものを、2の補数乗算の演算結果とする。
従って、図1に示す「17」の部分は不要となる。
【0105】
以下、図7に示す演算方法と、図18に示す演算方法とが等しいことを示す。図7に示すp0 〜pm−3 は、それぞれ図18に示すp0 〜pm−3 に0を加算しているだけなので、それぞれ両者は等しい。
次に、図7に示すpn−2 と、図18に示すpm−2 とで異なるのは、図7において「18」で囲んだ部分である。すなわち、図7に示すpn−2 は、図18に示すpn−2 に、「1・bn−1 」と、bn−1 とを加算したものになっている。ここで、「18」の部分は、bn−1 =0のときに0となり、、bn−1 =1のときにも0となり、1つ上の桁であるpn−1 への桁上げを行う。この桁上げは、図18に示すように、pm−1 にbn−1 の加算を設けることと等しい。そのため、図7に示すpm−2 と、図18に示すpm−2 とは等しい。
【0106】
次に、図7に示すpm−1 と図18に示すpm−1 とは、図18に示すpm−1 にはbn−1 の加算がある点だけが異なる。ここで、図18に示すpm−1 におけるbn−1 の加算には、前述したような意味があるため、pm−1 には影響を及ぼさない。また、pm 以上のビットについての図7と図18との同一性は図からも明らかなように全く同一の部分積となるため保証される。
【0107】
図8は、図7に示す演算方法を、4ビットの被乗数Aと4ビットの乗数Bとの2の補数乗算に適用した場合の演算方法を説明するための図である。
この場合には、図8に示すように、4ビットの被乗数A(a3 ,a2 ,a1 ,a0 )のLSBの下に、その「0」を付加した5ビットの被乗数A(a3 ,a3 ,a2 ,a1 ,a0 )と、4ビットの乗数B(b3 ,b2 ,b1 ,b0 )との2の補数乗算を行ない、積P(p7 ,p6 ,p5 ,p4 ,p3 ,p2 ,p1 ,p0 )が得られる。ここで、演算結果である積のLSBにある「0」は破棄される。
【0108】
図8に示すように、a3 とb3 とは異なる列に配列され、図18に示す演算方法を適用した場合に比べて、ワーストパス70a,70bの段数を1段だけ削減できる。
ここで、被乗数A(a3 ,a2 ,a1 ,a0 )が(1,0,1,0)であり、乗数B(b3 ,b2 ,b1 ,b0 )が(1,1,1,1)である場合には、図9に示すように演算が行なわれ、演算結果の最下位ビットにある「0」が破棄される。
これによって、積P(p7 ,p6 ,p5 ,p4 ,p3 ,p2 ,p1 ,p0 )が(0,0,0,0,0,1,1,0)となる。この結果は、図3に示す結果と同じである。
【0109】
図10は、図8に示す2の補数乗算を行なう2の補数乗算回路71の構成図である。
なお、図10において、図4に示す2の補数乗算回路51と同じ構成要素には図4と同一の符号が付してある。
図10に示す2の補数乗算回路71の構成は、図4に示す2の補数乗算回路51の構成と共通部分が多いため、異なる部分についてのみ説明する。
図10に示すように、2の補数乗算回路71では、データ線354 ,355 ,356 ,357 に、それぞれa3 ,a2 ,a1 ,a0 が印加される。
2の補数乗算回路71では、加算回路2903のCO端子は、NOT回路3105を介して、加算回路72に接続されている。
また、2の補数乗算回路71には、図4に示す2の補数乗算回路51とは異なり、バッファ回路258 と、AND回路2740,2741,2742,2743と、加算回路2942,2943と、NOT回路3143と、加算回路3341とは設けられていない。
また、2の補数乗算回路71には、加算回路3343が設けられ、加算回路3343のX端子がデータ線353 に接続され、Y端子が加算回路2932のS端子に接続されている。
さらに、2の補数乗算回路71には、2の補数乗算回路51の加算回路52の代わりに、加算回路72が設けられている。
なお、図10において、AND回路2710,2721,2732によって本発明の第3の観点の演算装置における第1の乗算手段が構成される。また、加算回路2921,2932,3343によって第1の加算手段が構成される。また、AND回路2700,2711,2722,2733によって、第2の乗算手段が構成される。また、加算回路2911,2922,2933,3944によって第2の加算手段が構成される。
【0110】
以下、図10に示す2の補数乗算回路71の動作について説明する。
2の補数乗算回路71では、以下に示すようにして、図8に示す積Pのp0 〜p7 を算出する。
〔p0 の算出〕
バッファ回路258 を介してデータ線357 に印加されたデータa0 と、バッファ回路250 を介してデータ線350 に印加されたデータb0 との論理積がAND回路2730において算出され、その算出結果である「a0 ・b0 」がAND回路2730の出力端子から、p0 として出力される。
【0111】
〔p1 の算出〕
バッファ回路256 を介してデータ線356 に印加されたデータa1 と、バッファ回路250 を介してデータ線350 に印加されたデータb0 との論理積がAND回路2720において算出され、その算出結果である「a1 ・b0 」がAND回路2720の出力端子から、加算回路3331のY端子に出力される。
また、バッファ回路257 を介してデータ線357 に印加されたデータa0 と、バッファ回路251 を介してデータ線351 に印加されたデータb1 との論理積がAND回路2731において算出され、その算出結果である「a0 ・b1 」がAND回路2731の出力端子から、加算回路3331のX端子に出力される。
そして、加算回路3331において、「a1 ・b0 」と「a0 ・b1 」との加算が行なわれ、その加算結果である「a1 ・b0 +a0 ・b1 」の和データがS端子からp1 として出力され、そのキャリデータがCO端子から加算回路2932のCI端子に出力される。
【0112】
〔p2 の算出〕
バッファ回路255 を介してデータ線355 に印加されたデータa2 と、バッファ回路250 を介してデータ線350 に印加されたデータb0 との論理積がAND回路2710において算出され、その算出結果である「a2 ・b0 」がAND回路2710の出力端子から、加算回路2921のY端子に出力される。
また、バッファ回路256 を介してデータ線356 に印加されたデータa1 と、バッファ回路251 を介してデータ線351 に印加されたデータb1 との論理積がAND回路2721において算出され、その算出結果である「a1 ・b1 」がAND回路2721の出力端子から、加算回路2921のX端子に出力される。
また、データ線353 に印加されたデータb3 が、加算回路2921のCI端子に入力される。
【0113】
そして、加算回路2921において、「a2 ・b0 」と、「a1 ・b1 」と、b3 との加算が行なわれ、その加算結果の和データがS端子から加算回路2932のY端子に出力され、キャリデータがCO端子から加算回路2922のCI端子に出力される。
また、AND回路2732において、データ線357 に印加されたデータa0 と、データ線352 に印加されたデータb2 との論理積が演算され、その算出結果である「a0 ・b2 」が、出力端子から加算回路2932のX端子に出力される。そして、加算回路2932において、加算回路2921からの和データと、加算回路3331からのキャリデータと、AND回路2732からの和データとの加算が行なわれ、その加算結果の和データがS端子から加算回路3343のY端子に出力され、そのキャリデータがCO端子から加算回路2933のCI端子に出力される。次に、加算回路3343において、加算回路2932からの和データと、データ線353 に印加されたデータb3 との加算が行なわれ、その加算結果の和データがp2 として出力され、キャリデータが加算回路72にr0 として出力される。
【0114】
上述した演算は、図8に示すワーストパス70bに相当し、AND回路2710,2721,2732,において乗算が行われ、加算回路2921,2932,3343において加算が行われる。
【0115】
〔r1 ,r2 の算出〕
バッファ回路254 を介してデータ線354 に印加されたデータa3 と、バッファ回路250 を介してデータ線350 に印加されてNOT回路3100において反転されたデータb0  ̄との論理積がAND回路2700において算出され、その算出結果である「a3 ・b0  ̄」がAND回路2700の出力端子から、加算回路2911のY端子に出力される。
また、バッファ回路255 を介してデータ線355 に印加されたデータa2 と、バッファ回路251 を介してデータ線351 に印加されたデータb1 との論理積がAND回路2711において算出され、その算出結果である「a2 ・b1 」がAND回路2711の出力端子から、加算回路2911のX端子に出力される。
また、バッファ回路254 を介してデータ線354 に印加されたデータa3 が加算回路2911のCI端子に入力される。
そして、加算回路2911において、「a3 ・b0  ̄」と、「a2 ・b1 」と、a3 とを用いて加算が行なわれ、その加算結果の和データが加算回路2922のY端子に出力され、キャリデータが加算回路2912のCI端子に出力される。
【0116】
また、バッファ回路256 を介してデータ線356 に印加されたデータa1 と、バッファ回路252 を介してデータ線352 に印加されたデータb2 との論理積がAND回路2722において算出され、その算出結果である「a1 ・b2 」がAND回路2722の出力端子から、加算回路2922のX端子に出力される。
そして、加算回路2922において、加算回路2911からの和データと、「a1 ・b2 」と、加算回路2921のキャリデータとを用いて加算が行なわれ、その加算結果の和データが加算回路2933のY端子に出力され、キャリデータが加算回路2923のCI端子に出力される。
【0117】
また、バッファ回路257 を介してデータ線357 に印加されたデータa0 のNOT回路3133による反転a0  ̄と、バッファ回路253 を介してデータ線353 に印加されたデータb3 との論理積がAND回路2733において算出され、その算出結果である「a0  ̄・b3 」がAND回路2733の出力端子から、加算回路2933のX端子に出力される。
そして、加算回路2933において、加算回路2922の和データと、「a0  ̄・b3 」と、加算回路2932のキャリデータとを用いて加算が行なわれ、その和データr1 がS端子から加算回路52に出力され、そのキャリデータr2 がCO端子から加算回路52に出力される。
【0118】
上述した演算は、図8に示すワーストパス70aの演算に相当し、AND回路2700,2711,2722,2733において乗算が行なわれ、加算回路2911,2922,2933において加算が行なわれる。
【0119】
〔r3 ,r4 の算出〕
バッファ回路254 を介してデータ線354 に印加されたデータa3 と、バッファ回路251 を介してデータ線351 に印加され、NOT回路3101において反転されたデータb1  ̄との論理積がAND回路2701において算出され、その算出結果である「a3 ・b1  ̄」がAND回路2701の出力端子から、加算回路2912のY端子に出力される。
また、バッファ回路255 を介してデータ線355 に印加されたデータa2 と、バッファ回路252 を介してデータ線352 に印加されたデータb2 との論理積がAND回路2712において算出され、その算出結果である「a2 ・b2 」がAND回路2712の出力端子から、加算回路2912のX端子に出力される。
そして、加算回路2912において、「a3 ・b1  ̄」と、「a2 ・b2 」と、加算回路2911のキャリデータとを用いて加算が行なわれ、その加算結果の和データが加算回路2923のY端子に出力され、キャリデータが加算回路2913のCI端子に出力される。
【0120】
また、バッファ回路256 を介してデータ線356 に印加され、NOT回路3123にて反転されたデータa1  ̄と、バッファ回路253 を介してデータ線353 に印加されたデータb3 との論理積がAND回路2723において算出され、その算出結果である「a1  ̄・b3 」がAND回路2723の出力端子から、加算回路2923のX端子に出力される。
そして、加算回路2923において、「a1  ̄・b3 」と、加算回路2912の和データと、加算回路2922のキャリデータとを用いて加算が行なわれ、その加算結果の和データr3 およびキャリデータr4 が加算回路52に出力される。
【0121】
〔r5 ,r6 の算出〕
バッファ回路254 を介してデータ線354 に印加されたデータa3 と、バッファ回路252 を介してデータ線352 に印加され、NOT回路3102において反転されたデータb2  ̄との論理積がAND回路2702において算出され、その算出結果である「a3 ・b2  ̄」がAND回路2702の出力端子から、加算回路2913のY端子に出力される。
また、バッファ回路255 を介してデータ線355 に印加され,NOT回路3113において反転されたデータa2  ̄と、バッファ回路253 を介してデータ線353 に印加されたデータb3 との論理積がAND回路2713において算出され、その算出結果である「a2  ̄・b3 」がAND回路2713の出力端子から、加算回路2913のX端子に出力される。
そして、加算回路2913において、「a3 ・b2  ̄」と、「a2  ̄・b3 」と、加算回路2912からのキャリデータとを用いて加算が行なわれ、その加算結果の和データr5 およびキャリデータr6 が加算回路52に出力される。
【0122】
〔r7 の算出〕
バッファ回路254 を介してデータ線354 に印加されたデータa3 と、バッファ回路253 を介してデータ線353 に印加されたデータb3 との論理積がAND回路2703において算出され、その算出結果である「a3 ・b3 」がAND回路2703の出力端子から、加算回路2903のX端子に出力される。
また、バッファ回路254 を介してデータ線354 に印加され,NOT回路3103において反転されたデータa3  ̄が加算回路2903のCI端子に入力される。
また、バッファ回路253 を介してデータ線353 に印加され、NOT回路3104において反転されたデータb3  ̄が加算回路2903のY端子に入力される。そして、加算回路2903において、「a3 ・b3 」と、a3  ̄と、b3  ̄との加算が行なわれ、その加算結果の和データr7 が加算回路52に出力される。
また、加算回路2903のCO端子からのキャリデータが、NOT回路3105において反転された後に、r8 として加算回路72に出力される。
【0123】
〔p3 ,p4 ,p5 ,p6 ,p7 の算出〕
図2に示す積Pのp4 ,p5 ,p6 ,p7 は、上述した処理によって求められたr0 〜r8 を用いて、加算回路72において算出される。
【0124】
以上説明したように、本実施形態のバウウーリの2の補数乗算回路によっても、前述した第1実施形態と同様の効果を得ることができる。
【0125】
第4実施形態
本実施形態では、積の演算に、上述した図7に示す2の補数乗算方法採用した2の補数積和演算回路について説明する。
図11は、本実施形態において、4ビットの被乗数Aと4ビットの乗数Bとの2の補数乗算の乗算結果に、9ビットのデータCを加算する場合の演算方法を説明するための図である。
図11において、「80」は、図8に示す部分積と同じである。
図11に示すように、この演算方法では、4ビットの被乗数A(a3 ,a2 ,a1 ,a0 )のLSBの下位ビットに、「0」を付加した5ビットの被乗数A(a3 ,a2 ,a1 ,a0 ,0)と、4ビットの乗数B(b3 ,b2 ,b1 ,b0 )との2の補数乗算を行ない、その積に対して、8ビットのデータC(c7 ,c6 ,c5 ,c4 ,c3 ,c2 ,c1 ,c0 )を加算して、積和演算結果であるP(p7 ,p6 ,p5 ,p4 ,p3 ,p2 ,p1 ,p0 )を得る。
ここで、2の補数の乗算結果のLSBである「0」は破棄される。
【0126】
図12は、図11に示す2の補数積和演算を行なう2の補数積和演算回路81である。
なお、図12において、図6に示す2の補数乗算回路61と同じ構成要素には図6と同一の符号が付してある。
以下、2の補数積和演算回路81と2の補数積和演算回路61との相違点のみを説明する。
先ず、2の補数積和演算回路81には、データc7 が印加されるデータ線658 が設けられている。
2の補数積和演算回路81では、データ線350 ,351 ,352 ,353 ,354 ,355 ,356 ,357 に、それぞれb0 ,b1 ,b2 ,b3 ,a3 ,a2 ,a1 ,a0 が印加される。
また、データ線651 ,652 ,653 ,654 ,655 ,656 ,657 ,658 にそれぞれc0 ,c1 ,c2 ,c3 ,c4 ,c5 ,c6 ,c7 が印加される。
【0127】
また、2の補数積和演算回路81には、加算回路3304が設けられている。加算回路3304の一方のY端子は加算回路2903のCO端子に接続され、X端子はデータ線658 に接続されている。加算回路3304の出力端子は、加算回路82に接続されている。
【0128】
また、2の補数積和演算回路81には、加算回路3360,2961,3362,2954が設けられている。
また、加算回路3360のX端子はAND回路2730の出力端子に接続され、Y端子はデータ線651 に接続されている。
加算回路2961のCI端子はAND回路2720の出力端子に接続され、X端子はデータ線652 に接続され、Y端子はAND回路2731の出力端子に接続されている。加算回路2961のCO端子およびS端子は、加算回路82に接続されている。
加算回路3362のX端子は加算回路2954のS端子に接続され、Y端子に加算回路2932のS端子に接続されている。加算回路2962のCO端子およびS端子は、加算回路82に接続されている。
【0129】
加算回路2954のCI端子はデータ線653 に接続され、X端子はデータ線353 に接続され、Y端子はAND回路2721の出力端子に接続されている。加算回路2954のCO端子は加算回路3944のCI端子に接続され、S端子は加算回路3362のCI端子に接続されている。
なお、図12において、AND回路2710,2721,2732によって本発明の第4の観点の演算装置における第1の乗算手段が構成される。また、加算回路2932,2954,3362によって第1の加算手段が構成される。また、AND回路2700,2711,2722,2733によって、第2の乗算手段が構成される。また、加算回路2922,2933,3944によって第2の加算手段が構成される。
【0130】
以下、図6に示す2の補数積和演算回路61の動作について説明する。
2の補数積和演算回路61では、以下に示すようにして、図5に示す積和演算結果であるPのp0 〜p7 を算出する。
〔p0 の算出〕
加算回路3360において、AND回路2730の出力端子からの「a0 ・b0 」と、データ線651 に印加されたデータc0 との加算が行なわれ、その加算結果の和データp0 がS端子から出力される。また、この加算結果のキャリデータr9 は、CO端子から加算回路82に出力される。
【0131】
〔r10の算出〕
AND回路2731の出力端子からの「a0 ・b1 」と、データ線652 に印加されたc1 と、AND回路2720の出力端子からの「a1 ・b0 」とを用いた加算が、加算回路2961において行なわれ、その加算結果の和データr10がS端子から出力され、キャリデータr11が端子から加算回路82に出力される。
【0132】
〔r12の算出〕
加算回路3332において、AND回路2732の出力端子からの「a0 ・b2 」と、AND回路2710の出力端子からの「a2 ・b0 」との加算が行なわれ、その加算結果の和データがS端子から加算回路3362のY端子に出力され、キャリデータがCO端子から加算回路3944の入力端子に出力される。
また、加算回路2954において、データ線353 に印加されたデータb3 と、データ線653 に印加されたデータc2 と、AND回路2721からの「a1 ・b1 」との加算が行なわれ、その加算結果の和データが加算回路3362のX端子に出力される。また、そのキャリデータが、加算回路3944のCI端子に出力される。
そして、加算回路2962において、加算回路3332からの和データと、加算回路2954からの和データとの加算が行なわれ、その加算結果「a0 ・b2 +a2 ・b0 +b3 +c2 +a1 ・b1 」の和データr12がS端子から出力され、キャリデータr13がCO端子から出力される。これらの和データr12およびキャリデータr13は、加算回路82に出力される。
この演算は、図11に示すワーストパス80bを算出する演算に相当し、AND回路2710,2721,2732において乗算が行なわれ、加算回路2932,2954において加算が行なわれる。
【0133】
〔r0 ,r1 の算出〕
加算回路2922において、AND回路2722の出力端子からの「a1 ・b2 」と、AND回路2700の出力端子からの「a3 ・b0  ̄」と、データ線354 に印加されたa3 との加算が行なわれ、その加算結果の和データがS端子から、加算回路3944の入力端子に出力される。
加算回路2933において、AND回路2733の出力端子からの「a0  ̄・b3 」と、AND回路2711の出力端子からの「a2 ・b1 」と、データ線654 に印加されたc3 との加算が行なわれ、その加算結果の和データがS端子から、加算回路3944の入力端子に出力される。また、その加算結果のキャリデータが、加算回路3734の入力端子に出力される。
【0134】
そして、加算回路3944において、加算回路2933のS端子からの和データと、加算回路2932のCO端子からのキャリデータと、加算回路2922のS端子からの和データと、加算回路2954のCO端子からのキャリデータとを用いて加算が行なわれ、その2ビットの和データ(r0 ,r1 )がS端子から加算回路82に出力される。また、CO端子からキャリデータが加算回路3734のCI端子に出力される。
【0135】
この演算は、図11に示すワーストパス80aを算出する演算に相当し、AND回路2700,2711,2722,2733において乗算が行なわれ、加算回路2922,2933,3944において加算が行なわれる。
【0136】
〔r2 ,r3 の算出〕
加算回路2923において、AND回路2723の出力端子からの「a1  ̄・b3 」と、AND回路2701の出力端子からの「a3 ・b1  ̄」と、データ線655 に印加されたc4 との加算が行なわれ、その加算結果の和データがS端子から加算回路3734の入力端子に出力され、キャリデータがCO端子から加算回路3724に出力される。
そして、加算回路3734において、加算回路2923のS端子からの和データと、加算回路2922のCO端子からのキャリデータと、AND回路2712の出力端子からの「a2 ・b2 」と、加算回路2933のCO端子からのキャリデータとを用いて加算が行なわれ、S端子から・2ビットの和データ(r2 ,r3 )が加算回路82に出力される。また、CO端子からキャリデータが、加算回路3724に出力される。
【0137】
〔r4 ,r5 の算出〕
加算回路3724において、AND回路2713の出力端子からの「a3  ̄・b3 」と、データ線656 に印加されたc5 と、AND回路2702の出力端子からの「a3 ・b2  ̄」と、加算回路2923のCO端子からのキャリデーアとを用いて加算が行なわれ、S端子から2ビットの和データ(r4 ,r5 )が加算回路82に出力される。また、CO端子からキャリデータが加算回路2914に出力される。
【0138】
〔r6 ,r7 の算出〕
AND回路2703において、AND回路2703からの「a3 ・b3 」と、データ線354 に印加されてNOT回路3103によって反転されたa3  ̄と、データ線353 に印加されてNOT回路3104によって反転されたb3  ̄との加算が行なわれ、その加算結果の和データが加算回路2914のX端子に出力される。
そして、加算回路2914において、加算回路2903のS端子からの和データと、データ線657 に印加されたc6 と、加算回路3724からのキャリデータとを用いて加算が行なわれ、その加算結果の和データr6 およびキャリデータs7 が加算回路82に出力される。
【0139】
〔r8 の算出〕
加算回路3304において、加算回路2903のCO端子からキャリデータと、データ線658 に印加されたC7 との加算が行なわれ、その加算結果の和データがS端子から加算回路82に出力される。
【0140】
〔p1 〜p7 の算出〕
加算回路82において、入力したr0 〜r13を用いて、p1 〜p7 が算出される。
【0141】
以上説明したように、本実施形態のバウウーリの2の補数積和演算回路によっても、前述した第1実施形態と同様の効果を得ることができる。
【0142】
本発明は上述した実施形態には限定されない。上述した実施形態では、4ビットの被乗数A(a3 ,a2 ,a1 ,a0 )と4ビットの乗数B(b3 ,b2 ,b1 ,b0 )との間でバウウーリの2の補数乗算を行なう回路について例示したが、本発明は、同一語長の任意のビット数の被乗数と乗数との間でバウウーリの2の補数乗算を行なう回路にも適用できる。
なた、本発明は、上述した回路構成に、被乗数Aと乗数Bとの語長が異なる場合のバウウーリの2の補数乗算を行なう回路構成を組み合わせてもよい。
【0143】
【発明の効果】
以上説明したように、本発明の演算装置およびその方法によれば、被乗数と乗数とのビット数が同じであっても、これらのビット数が異なる場合と、ワーストパスを構成する演算の加算段数を同じにすることができる。その結果、従来に比べて、処理時間を短縮化できる。
また、本発明の演算装置によれば、その回路を反復セル型の配列を採用して構成した場合に、回路パターンの規則性を高めることができ、レイアウト設計を容易にすることができる。
【図面の簡単な説明】
【図1】図1は、本発明の第1実施形態に係わるバウウーリの2の補数乗算の演算方法を説明するための図である。
【図2】図2は、図1に示す演算方法を、4ビットの被乗数Aと4ビットの乗数Bとの2の補数乗算に適用した場合の演算方法を説明するための図である。
【図3】図3は、図2に示す演算方法を用いた具体的な演算例である。
【図4】図4は、本発明の第1実施形態に係わるバウウーリの2の補数乗算回路の回路図である。
【図5】図5は、本発明の第2実施形態に係わるバウウーリの2の補数積和演算回路における演算方法を説明するための図である。
【図6】図6は、本発明の第2実施形態に係わるバウウーリの2の補数積和演算回路の回路図である。
【図7】図7は、本発明の第3実施形態に係わるバウウーリの2の補数乗算の演算方法を説明するための図である。
【図8】図8は、図7に示す演算方法を、4ビットの被乗数Aと4ビットの乗数Bとの2の補数乗算に適用した場合の演算方法を説明するための図である。
【図9】図9は、図8に示す演算方法を用いた具体的な演算例である。
【図10】図10は、本発明の第3実施形態に係わるバウウーリの2の補数乗算回路の回路図である。
【図11】図11は、本発明の第4実施形態に係わるバウウーリの2の補数積和演算回路における演算方法を説明するための図である。
【図12】図12は、本発明の第4実施形態に係わるバウウーリの2の補数積和演算回路の回路図である。
【図13】図13は、従来のバウウーリの2の補数乗算の演算方法を説明するための図である。
【図14】図14は、図13に示す従来のバウウーリの2の補数乗算の演算方法の変形例を説明するための図である。
【図15】図15は、図14に示す演算方法を、6ビットの被乗数Aと4ビットの乗数Bとの2の補数乗算に適用した場合の演算方法を説明するための図である。
【図16】図15に示す演算を行う従来のバウウーリの2の補数乗算回路の回路図である。
【図17】図17は、図16に示す加算回路の入出力端子を説明するための図である。
【図18】図18は、被乗数Aと乗数Bとのビット数が同じ場合における図15に示す演算方法を説明するための図である。
【図19】図19は、図18に示す演算方法を、4ビットの被乗数Aと4ビットの乗数Bとの2の補数乗算に適用した場合の演算方法を説明するための図である。
【図20】図20は、図19に示す演算方法を用いた具体的な演算例である。
【図21】図21は、図19に示す演算方法を採用したバウウーリの2の補数乗算回路の回路図である。
【符号の説明】
25i …バッファ回路、27i …AND回路、31i =NOT回路、35i …データ線、29i ,33i ,37i ,39i 52,62,72,82…加算回路51,71…2の補数乗算回路、61,81…2の補数積和演算回路
Claims (24)
- m(2以上の自然数)ビットの被乗数A(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって、m+nビットの積P(pm+n−1 pm+n−2 ,..,pm ,pm−1 ,..,p1 ,p0 )を算出する演算装置において、
1≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−1−q 」と、部分積「a0  ̄・bn−1 」とを算出する第1の乗算手段と、
前記第1の乗算手段によって算出された全ての部分積と、bn−1 と、pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出する第1の加算手段と、
2≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−q 」と、部分積「am−1 ・b0  ̄」、部分積「a1  ̄・bn−1 」とを算出する第2の乗算手段と、
前記第2の乗算手段によって算出された全ての部分積と、am−1 と、前記第1の加算手段からのキャリデータとの加算を行なってpm を算出する第2の加算手段と
を有し、
m=nの場合に、
m+1ビットの被乗数A’(am−1 ,am−1 ,am−2 ,..,a1 ,a0 )と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行う
演算装置。 - 前記被乗数A’と前記乗数Bとを2の補数乗算して得られた積P’(pm+n ,pm+n−1 pm+n−2 ,..,pm ,pm−1 ,..,p1 ,p0 )のうち、最上位ビットのpm+n を除く残りのビットを用いて、前記積Pを得る
請求項1に記載の演算装置。 - 前記2の補数乗算は、バウウーリの2の補数乗算である
請求項1に記載の演算装置。 - m(2以上の自然数)ビットの被乗数A(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって、m+nビットの積R(rm+n−1 rm+n−2 ,..,rm ,rm−1 ,..,r1 ,r0 )を算出し、前記積Rと、m+nビットのデータC(cm+n−1 cm+n−2 ,..,cm ,cm−1 ,..,c1 ,c0 )とを加算する演算装置において、
1≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−1−q 」と、部分積「a0  ̄・bn−1 」とを算出する第1の乗算手段と、
前記第1の乗算手段によって算出された全ての部分積と、bn−1 と、cm−1 と、pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出する第1の加算手段と、
2≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−q 」と、部分積「am−1 ・b0  ̄」、部分積「a1  ̄・bn−1 」とを算出する第2の乗算手段と、
前記第2の乗算手段によって算出された全ての部分積と、am−1 と、cm と、前記第1の加算手段からのキャリデータとの加算を行なってpm を算出する第2の加算手段と
を有し、
m=nの場合に、
m+1ビットの被乗数A’(am−1 ,am−1 ,am−2 ,..,a1 ,a0 )と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって前記積Rを算出し、前記積Rと前記データCとを加算する
演算装置。 - 前記被乗数A’と前記乗数Bとを2の補数乗算して得られた積R’(rm+n ,rm+n−1 rm+n−2 ,..,rm ,rm−1 ,..,r1 ,r0 )のうち、最上位ビットのrm+n を除く残りのビットを用いて、前記積Rを得る
請求項4に記載の演算装置。 - 前記2の補数乗算は、バウウーリの2の補数乗算である
請求項4に記載の演算装置。 - m(2以上の自然数)ビットのA(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットのB(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行い、m+nビットの積P(pm+n−1 pm+n−2 ,..,pm ,pm−1 ,..,p1 ,p2 )を算出する演算装置において、
0≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm−2−q 」と、部分積「1・bn−1 」とを算出する第1の乗算手段と、
前記第1の乗算手段によって算出された全ての部分積と,bn−1 と,pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出する第1の加算手段と、
1≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm−1−q 」と、部分積「am−1 ・b0  ̄」、部分積「a0  ̄・bn−1 」とを算出する第2の乗算手段と、
前記第2の乗算手段によって算出された全ての部分積と、am−1 と、前記第1の加算手段からのキャリデータとの加算を行なって、pm を算出する第2の加算手段とを有し、
m=nの場合に、
m+1ビットの被乗数A’(am−1 ,am−2 ,..,a1 ,a0 ,0)と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行う
演算装置。 - 前記被乗数A’と前記乗数Bとを2の補数乗算して得られた積P’(pm+n−1 pm+n−2 ,..,pm ,pm−1 ,..,p1 ,p0 ,0)のうち、最下位ビットの0を除く残りのビットを用いて、前記積Pを得る
請求項7に記載の演算装置。 - 前記2の補数乗算は、バウウーリの2の補数乗算である
請求項7に記載の演算装置。 - m(2以上の自然数)ビットの被乗数A(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって、m+nビットの積R(rm+n−1 rm+n−2 ,..,rm ,rm−1 ,..,r1 ,r0 )を算出し、前記積Rと、m+nビットのデータC(cm+n−1 cm+n−2 ,..,cm ,cm−1 ,..,c1 ,c0 )とを加算する演算装置において、
0≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm−2−q 」と、部分積「1・bn−1 」とを算出する第1の乗算手段と、
前記第1の乗算手段によって算出された全ての部分積と、bn−1 と、cm−1 と、pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出する第1の加算手段と、
1≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm−1−q 」と、部分積「am−1 ・b0  ̄」、部分積「a0  ̄・bn−1 」とを算出する第2の乗算手段と、
前記第2の乗算手段によって算出された全ての部分積と、am−1 と、cm と、前記第1の加算手段からのキャリデータとの加算を行なってpm を算出する第2の加算手段
とを有し、
m=nの場合に、
m+1ビットの被乗数A’(am−1 ,am−2 ,..,a1 ,a0 ,0)と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって前記積Rを算出し、前記積Rと前記データCとを加算する
演算装置。 - 前記被乗数A’と前記乗数Bとを2の補数乗算して得られた積R’(rm+n−1 rm+n−2 ,..,rm ,rm−1 ,..,r1 ,r0 ,0)のうち、最下位ビットの0を除く残りのビットを用いて、前記積Rを得る
請求項10に記載の演算装置。 - 前記2の補数乗算は、バウウーリの2の補数乗算である
請求項10に記載の演算装置。 - 複数の乗算回路と複数の加算回路とを用いて、m(2以上の自然数)ビットの被乗数A(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって、m+nビットの積P(pm+n−1 pm+n−2 ,..,pm ,pm−1 ,..,p1 ,p0 )を算出する演算方法において、
m=nの場合に、
m+1ビットの被乗数A’(am−1 ,am−1 ,am−2 ,..,a1 ,a0 )と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行うために、
1≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−1−q 」と、部分積「a0  ̄・bn−1 」とを算出し、
前記算出された全ての部分積「aq ・bm−1−q 」および部分積「a0  ̄・bn−1 」と、bn−1 と、pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出し、
2≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−q 」と、部分積「am−1 ・b0  ̄」、部分積「a1  ̄・bn−1 」とを算出し、前記算出された全ての部分積「aq ・bm−q 」と、部分積「am−1 ・b0  ̄」、部分積「a1  ̄・bn−1 」と、am−1 と、前記pm−1 を算出する際のキャリデータとの加算を行なってpm を算出する
演算方法。 - 前記被乗数A’と前記乗数Bとを2の補数乗算して得られた積P’(pm+n ,pm+n−1 pm+n−2 ,..,pm ,pm−1 ,..,p1 ,p0 )のうち、最上位ビットのpm+n を除く残りのビットを用いて、前記積Pを得る
請求項13に記載の演算方法。 - 前記2の補数乗算は、バウウーリの2の補数乗算である
請求項13に記載の演算方法。 - 複数の乗算回路と加算回路とを用いて、m(2以上の自然数)ビットの被乗数A(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって、m+nビットの積R(rm+n−1 rm+n−2 ,..,rm ,rm−1 ,..,r1 ,r0 )を算出し、前記積Rと、m+nビットのデータC(cm+n−1 cm+n−2 ,..,cm ,cm−1 ,..,c1 ,c0 )とを加算する演算方法において、
m=nの場合に、
m+1ビットの被乗数A’(am−1 ,am−1 ,am−2 ,..,a1 ,a0 )と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって前記積Rを算出し、前記積Rと前記データCとを加算するために、
1≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−1−q 」と、部分積「a0  ̄・bn−1 」とを算出し、
前記算出された全ての部分積「aq ・bm−1−q 」と、部分積「a0  ̄・bn−1 」と、bn−1 と、cm−1 と、pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出し、
2≦q≦m−1の条件を満たす全ての自然数qについての部分積「aq ・bm−q 」と、部分積「am−1 ・b0  ̄」、部分積「a1  ̄・bn−1 」とを算出し、前記算出された全ての部分積「aq ・bm−q 」と、部分積「am−1 ・b0  ̄」、部分積「a1  ̄・bn−1 」と、am−1 と、cm と、pm−1 を算出する際のキャリデータとの加算を行なってpm を算出する
演算方法。 - 前記被乗数A’と前記乗数Bとを2の補数乗算して得られた積R’(rm+n ,rm+n−1 rm+n−2 ,..,rm ,rm−1 ,..,r1 ,r0 )のうち、最上位ビットのrm+n を除く残りのビットを用いて、前記積Rを得る
請求項16に記載の演算方法。 - 前記2の補数乗算は、バウウーリの2の補数乗算である
請求項16に記載の演算方法。 - 複数の乗算回路と複数の加算回路とを用いて、m(2以上の自然数)ビットのA(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットのB(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって、m+nビットの積P(pm+n−1 pm+n−2 ,..,pm ,pm−1 ,..,p1 ,p2 )を算出する演算方法において、
m=nの場合に、
m+1ビットの被乗数A’(am−1 ,am−2 ,..,a1 ,a0 ,0)と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行うために、
0≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm−2−q 」と、部分積「1・bn−1 」とを算出し、
前記算出された全ての部分積「aq ・bm−2−q 」と、部分積「1・bn−1 」と、bn−1 と,pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出し、
1≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm−1−q 」と、部分積「am−1 ・b0  ̄」、部分積「a0  ̄・bn−1 」とを算出し、前記算出された全ての部分積「aq ・bm−1−q 」と、部分積「am−1 ・b0  ̄」、部分積「a0  ̄・bn−1 」と、am−1 と、前記pm−1 を算出する際のキャリデータとの加算を行なってpm を算出する
演算方法。 - 前記被乗数A’と前記乗数Bとを2の補数乗算して得られた積P’(pm+n−1 pm+n−2 ,..,pm ,pm−1 ,..,p1 ,p0 ,0)のうち、最下位ビットの0を除く残りのビットを用いて、前記積Pを得る
請求項19に記載の演算方法。 - 前記2の補数乗算は、バウウーリの2の補数乗算である
請求項19に記載の演算方法。 - 複数の乗算回路と複数の加算回路を用いて、(2以上の自然数)ビットの被乗数A(am−1 ,am−2 ,..,a1 ,a0 )と、n(2以上の自然数)ビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行い、m+nビットの積R(rm+n−1 rm+n−2 ,..,rm ,rm−1 ,..,r1 ,r0 )を算出し、前記積Rと、m+nビットのデータC(cm+n−1 cm+n−2 ,..,cm ,cm−1 ,..,c1 ,c0 )とを加算する演算方法において、
m=nの場合に、
m+1ビットの被乗数A’(am−1 ,am−2 ,..,a1 ,a0 ,0)と、nビットの乗数B(bm−1 ,bm−2 ,..,b1 ,b0 )との2の補数乗算を行なって前記積Rを算出し、前記積Rと前記データCとを加算するために、
0≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm−2−q 」と、部分積「1・bn−1 」とを算出し、
前記算出された全ての部分積「aq ・bm−2−q 」と、部分積「1・bn−1 」と、bn−1 と、cm−1 と、pm−2 を算出する際のキャリデータとの加算を行なってpm−1 を算出し、
1≦q≦m−2の条件を満たす全ての自然数qについての部分積「aq ・bm− 1−q 」と、部分積「am−1 ・b0  ̄」、部分積「a0  ̄・bn−1 」とを算出し、前記算出された全ての部分積「aq ・bm−1−q 」と、部分積「am−1 ・b0  ̄」、部分積「a0  ̄・bn−1 」と、am−1 と、cm と、pm−1 を算出する際のキャリデータとの加算を行なってpm を算出する
演算方法。 - 前記被乗数A’と前記乗数Bとを2の補数乗算して得られた積R’(rm+n−1 rm+n−2 ,..,rm ,rm−1 ,..,r1 ,r0 ,0)のうち、最下位ビットの0を除く残りのビットを用いて、前記積Rを得る
請求項22に記載の演算方法。 - 前記2の補数乗算は、バウウーリの2の補数乗算である
請求項22に記載の演算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20666097A JP3612950B2 (ja) | 1997-07-31 | 1997-07-31 | 演算装置およびその方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20666097A JP3612950B2 (ja) | 1997-07-31 | 1997-07-31 | 演算装置およびその方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1153172A JPH1153172A (ja) | 1999-02-26 |
JP3612950B2 true JP3612950B2 (ja) | 2005-01-26 |
Family
ID=16527032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP20666097A Expired - Fee Related JP3612950B2 (ja) | 1997-07-31 | 1997-07-31 | 演算装置およびその方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3612950B2 (ja) |
-
1997
- 1997-07-31 JP JP20666097A patent/JP3612950B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH1153172A (ja) | 1999-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2000259394A (ja) | 浮動小数点乗算器 | |
JPS6217770B2 (ja) | ||
JPH05233228A (ja) | 浮動小数点演算装置およびその演算方法 | |
JPH0612229A (ja) | 乗累算回路 | |
JP3139466B2 (ja) | 乗算器及び積和演算器 | |
JP3276444B2 (ja) | 除算回路 | |
JP3436994B2 (ja) | シフト装置 | |
JP3556950B2 (ja) | 高速算術演算装置のけた上げ先見加算器段の数を減少させる構造及び方法 | |
JPH04205026A (ja) | 除算回路 | |
EP1049002A2 (en) | Method and apparatus for efficient calculation of an approximate square of a fixed-precision number | |
JP3612950B2 (ja) | 演算装置およびその方法 | |
KR19990074385A (ko) | 부동소수점 곱셈기에서 반올림과 덧셈을 동시에 수행하는 장치및 방법 | |
JP3190826B2 (ja) | 積和演算装置 | |
JP3019796B2 (ja) | 乗算器 | |
JP4042215B2 (ja) | 演算処理装置およびその方法 | |
US5416733A (en) | Apparatus for finding quotient in a digital system | |
JP2777265B2 (ja) | 高基数開平演算装置 | |
JP2734438B2 (ja) | 乗算装置 | |
JP3610564B2 (ja) | 情報処理装置 | |
JP3198868B2 (ja) | 乗算処理装置 | |
JP3130797B2 (ja) | 積和演算処理方法およびその装置 | |
GB2189630A (en) | Multiplier | |
JP3153656B2 (ja) | 乗算器 | |
JP3077880B2 (ja) | スティッキービット検出回路 | |
JPH0527948A (ja) | 演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040921 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041005 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041018 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071105 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081105 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091105 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |