(57)【特許請求の範囲】
【請求項１】
それぞれが２ビット以上の２つの値を加算する第１〜第４の加算器を備え、
前記第１加算器のキャリー出力と前記第２加算器の加算出力の最下位ビットの加算出力との２つの出力の排他的論理和を前記第３の加算器の最上位ビットの加算入力とし、
前記２つの出力の論理積を前記第４の加算器の最下位ビットの加算入力とするように構成された演算装置。
【請求項２】
それぞれが２ビット以上の２つの値を加算する第１〜第４の加算器を備え、
第１のタイミングで演算した第１加算器のキャリー出力と第１のタイミングで演算した第２加算器の最下位ビットの加算出力との２つの出力の排他的論理和を第２のタイミングで演算する第３の加算器の最上位ビットの加算入力とし、
前記２つの出力の論理積を前記第２のタイミングで演算する第４の加算器の最下位ビットの加算入力とするように構成された演算装置。
【請求項３】
２ビット以上の値を加算する第１および第２加算器を備え、
第１のタイミングで演算した第１加算器のキャリー出力と第１のタイミングで演算した第２加算器の最下位ビットの加算出力の２つの出力の排他的論理和を、第２のタイミングで演算する前記第１加算器の最上位ビットの加算入力とし、
前記第１のタイミングで演算した第１加算器のキャリー出力と第１のタイミングで演算した第２加算器の最下位ビットの加算出力の２つの出力の論理積を第２のタイミングで演算する第２加算器の最下位ビットの加算入力とするように構成された演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、演算装置に関し、特に複数ビットの値の乗算に適した演算装置に関する。
【背景技術】
【０００２】
乗算回路は、特開２００１−１５２３４号公報に記載されているように、複数の部分積をＣＳＡ（Ｃａｒｒｙ  Ｓａｖｅ  Ａｄｄｅｒ）で加算し、最後にＣＬＡ（Ｃａｒｒｙ  Ｌｏｏｋ−ａｈｅａｄ  Ａｄｄｅｒ）等で計算する手法が知られている。この手法は、１ビット単位の演算をすることを特徴とし、セルベースＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）やフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等に適用可能である。
【０００３】
一方、リコンフィギュラブル回路などでは、例えばリップルキャリー加算器などの複数ビットを扱う演算器を複数利用する。このため、下位のビットを加算するリップルキャリー加算器のキャリーを上位のビットを加算するリップルキャリー加算器の加算入力に接続しなければならず、１段当たりの加算に時間がかかるために計算速度が遅くなるといった問題がある。計算を速くするためにＣＳＡ型の加算のように、前段のリップルキャリー加算器のキャリー出力を次段のリップルキャリー加算器に入力することが考えられるが、次段のリップルキャリー加算器に４入力の加算器が必要となる。このため、全加算器で実現することができないといった問題がある。
【特許文献１】特開２００１−１５２３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明は上述した問題点を解決するためになされたもので、この発明の目的の１つは、２ビット以上の２つの値を加算する複数の加算器を用いる場合であっても高速に演算することが可能な演算装置を提供することである。
【０００５】
この発明の他の目的は、スループットを高めた演算装置を提供することである。
【０００６】
この発明のさらに他の目的は、回路規模を削減した演算装置を提供することである。
【課題を解決するための手段】
【０００７】
上述した目的を達成するためにこの発明のある局面によれば、演算装置は、それぞれが２ビット以上の２つの値を加算する第１〜第４の加算器を備え、第１加算器のキャリー出力と第２加算器の加算出力の最下位ビットの加算出力との２つの出力の排他的論理和を第３の加算器の最上位ビットの加算入力とし、２つの出力の論理積を第４の加算器の最下位ビットの加算入力とするように構成される。
【０００８】
この局面によれば、第１加算器のキャリー出力と第２加算器の加算出力の最下位ビットの加算出力との２つの出力の排他的論理和が第３の加算器の最上位ビットの加算入力とされ、２つの出力の論理積が第４の加算器の最下位ビットの加算入力とされるので、第２加算器は、第１加算器の演算の終了を待つことなく演算することができる。このため、高速に演算することができる。その結果、２ビット以上の２つの値を加算する複数の加算器を用いる場合であっても高速に演算することが可能な演算装置を提供することができる。
【０００９】
この発明の他の局面によれば、演算装置は、それぞれが２ビット以上の２つの値を加算する第１〜第４の加算器を備え、第１のタイミングで演算した第１加算器のキャリー出力と第１のタイミングで演算した第２加算器の最下位ビットの加算出力との２つの出力の排他的論理和を第２のタイミングで演算する第３の加算器の最上位ビットの加算入力とし、２つの出力の論理積を第２のタイミングで演算する第４の加算器の最下位ビットの加算入力とするように構成される。
【００１０】
この局面に従えば、第１加算器のキャリー出力と第２加算器の加算出力の最下位ビットの加算出力との２つの出力の排他的論理和が第３の加算器の最上位ビットの加算入力とされ、２つの出力の論理積が第４の加算器の最下位ビットの加算入力とされるので、第２加算器は、第１加算器の演算の終了を待つことなく演算することができる。その結果、２ビット以上の２つの値を加算する複数の加算器を用いる場合であっても高速に演算することが可能な演算装置を提供することができる。また、第１の加算器と第２の加算器は、第１のタイミングで演算し、第３の加算器と第４の加算器は第２のタイミングで演算するので、第１の加算器および第２の加算器と、第３の加算器および第４の加算器とで、異なる処理をすることができるので、パイプライン処理が可能である。その結果、スループットを高めた演算装置を提供することができる。
【００１１】
この発明のさらに他の局面によれば、演算装置は、２ビット以上の値を加算する第１および第２加算器を備え、第１のタイミングで演算した第１加算器のキャリー出力と第１のタイミングで演算した第２加算器の最下位ビットの加算出力の２つの出力の排他的論理和を、第２のタイミングで演算する第１加算器の最上位ビットの加算入力とし、第１のタイミングで演算した第１加算器のキャリー出力と第１のタイミングで演算した第２加算器の最下位ビットの加算出力の２つの出力の論理積を第２のタイミングで演算する第２加算器の最下位ビットの加算入力とするように構成される。
【００１２】
この局面に従えば、第１のタイミングで演算した第１加算器のキャリー出力と第１のタイミングで演算した第２加算器の最下位ビットの加算出力の２つの出力の排他的論理和を、第２のタイミングで演算する第１加算器の最上位ビットの加算入力とし、第１のタイミングで演算した第１加算器のキャリー出力と第１のタイミングで演算した第２加算器の最下位ビットの加算出力の２つの出力の論理積を第２のタイミングで演算する第２加算器の最下位ビットの加算入力とするので、第２加算器は、第１加算器の演算の終了を待つことなく演算することができる。このため、高速に演算することができる。その結果、２ビット以上の２つの値を加算する複数の加算器を用いる場合であっても高速に演算することが可能な演算装置を提供することができる。また、第１の加算器と第２の加算器の組が複数の演算を異なるタイミングで演算するので、加算器の数を少なくすることができる。その結果、回路規模を削減した演算装置を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
【００１４】
図１は、本発明の実施の形態における演算装置の一例を示すブロック図である。図１に示す演算装置は、４ビットの２つの値を乗算する場合の例を示す。図１を参照して、演算装置１は、第１段に２つのリップルキャリー加算器１１１，１２１と、排他的論理和を算出するＸＯＲ回路（図中ＸＯＲで示す）１３１と、論理積を算出するＡＮＤ回路（図中ＡＮＤで示す）１３３とを備え、第２段に２つのリップルキャリー加算器２１１，２２１と、排他的論理和を算出するＸＯＲ回路２３１と、論理積を算出するＡＮＤ回路２３３とを備え、第３段に２つのリップルキャリー加算器３１１，３２１と、排他的論理和を算出するＸＯＲ回路３３１と、論理積を算出するＡＮＤ回路３３３とを備え、第４段にリップルキャリー加算器４１１を備える。
【００１５】
リップルキャリー加算器１１１，１２１、２１１、２２１，３１１，３２１，４１１の構成は、すべて同じなので、ここではリップルキャリー加算器１１１を例にその構成を説明する。リップルキャリー加算器１１１は、図中記号「ＦＡ」で示す２つの全加算器１１３，１１５を含む。２つの全加算器１１３，１１５それぞれは、３つの値（加算入力）が入力され、３つの値を加算した和と、キャリーとを出力する。３つの加算入力のうちの１つは、１つ下位の桁からの繰り上がり（キャリー）である。全加算器１１５は、全加算器１１３より１つ上位の桁の和を算出する。このため、全加算器１１３のキャリー出力が、加算入力の１つとして全加算器１１５に入力される。
【００１６】
第１段に配置されるリップルキャリー加算器１１１，１２１は、部分積生成回路１０が出力する４ビットの２つの部分積の和を算出する。リップルキャリー加算器１１１が２つの部分積のうち計算の対象となる下位側２ビットの和を算出し、リップルキャリー加算器１２１が２つの部分積のうち計算の対象となる上位側２ビットの和を算出する。第１段の前段が存在しないため、リップルキャリー加算器１１１の全加算器１１３およびリップルキャリー加算器１２１の全加算器１２３それぞれの加算入力のうち１つには、０が入力される。
【００１７】
リップルキャリー加算器１１１が出力する値の最下位ビット（ＬＳＢ）は、全加算器１１３が出力する和の値であり、計算結果として出力される。リップルキャリー加算器１１１が出力するキャリーは、全加算器１１５が出力するキャリーであり、ＸＯＲ回路１３１およびＡＮＤ回路１３３に出力される。リップルキャリー加算器１１１が出力するキャリーおよびＬＳＢを除くビットは、部分積として第２段のリップルキャリー加算器２１１に出力される。ここでは、リップルキャリー加算器１１１が出力するキャリーおよびＬＳＢを除くビットは１ビットなので、リップルキャリー加算器２１１の全加算器２１３に入力される。
【００１８】
リップルキャリー加算器１２１が出力する値の最下位ビット（ＬＳＢ）は、全加算器１２３が出力する和の値であり、ＸＯＲ回路１３１およびＡＮＤ回路１３３に出力される。リップルキャリー加算器１２１が出力する値の最下位ビットを除くビットは、部分積として第２段のリップルキャリー加算器２２１に出力される。ここでは、リップルキャリー加算器１２１が出力する値のＬＳＢを除くビットは２ビットなので、リップルキャリー加算器２２１の全加算器２２３，２２５の加算入力にそれぞれ出力される。
【００１９】
ＸＯＲ回路１３１は、下位側のリップルキャリー加算器１１１が出力するキャリーと、上位側のリップルキャリー加算器１２１の出力値のＬＳＢとが入力される。そして入力された２つの値の排他的論理和を第２段に配置された下位側のリップルキャリー加算器２１１の最上位ビットの加算入力に出力する。具体的には、リップルキャリー加算器２１１の上位側の全加算器２１５の加算入力に出力する。
【００２０】
ＡＮＤ回路１３３は、下位側のリップルキャリー加算器１１１が出力するキャリーと、上位側のリップルキャリー加算器１２１の出力値のＬＳＢとが入力される。そして入力された２つの値の論理積を、キャリーの桁の１つ上位の桁の加算入力として出力する。具体的には、ＡＮＤ回路１３３は、第２段に配置された上位側のリップルキャリー加算器２２１の最下位ビットの加算入力、換言すれば、リップルキャリー加算器２２１の下位側の全加算器２２３のキャリー入力に出力する。
【００２１】
第２段に配置されるリップルキャリー加算器２１１，２２１は、第１段のリップルキャリー加算器１１１，１２１、ＸＯＲ回路１３１およびＡＮＤ回路１３３により算出された部分和と、部分積生成回路１０が出力する１つの部分積との和を算出する。リップルキャリー加算器２１１が計算の対象となる下位側２ビットの和を算出し、リップルキャリー加算器２２１が計算の対象となる上位側２ビットの和を算出する。最も下位側のリップルキャリー加算器２１１の下位側の全加算器２１３の加算入力のうちキャリーには、上段からの桁上がりがないために０が入力される。
【００２２】
本実施の形態における演算装置１は、第１段にＸＯＲ１３１およびＡＮＤ１３３を備えるため、第２段のリップルキャリー加算器２１１の全加算器２１５の加算入力を３入力にすることができる。具体的に説明すると、第１段のリップルキャリー加算器１１１のキャリーと、リップルキャリー加算器１２１の出力値のＬＳＢとは同じ桁となる。演算装置１がＸＯＲ１３１およびＡＮＤ１３３を備えていなければ、第２段において当該桁を加算する全加算器２１５に、下位の桁を算出する全加算器２１３のキャリーと、部分積の当該桁の値と、第１段のリップルキャリー加算器１１１のキャリーと、リップルキャリー加算器１２１の出力値のＬＳＢとを合わせた４つを入力しなければならない。このため、３入力しかない全加算器２１５で実現することができない。演算装置１がＸＯＲ１３１およびＡＮＤ１３３を備えることにより、第１段のリップルキャリー加算器１１１のキャリーと、リップルキャリー加算器１２１の出力値のＬＳＢとの和をＸＯＲ１３１およびＡＮＤ１３３で算出することができ、それらにより算出された２ビットの和の下位のビットを第２段の全加算器２１５の残りの加算入力とし、上位のビットを第２段に配置された上位側のリップルキャリー加算器２２１の最下位ビットを算出する全加算器２２３のキャリー入力とすることができる。
【００２３】
リップルキャリー加算器２１１が出力する値の最下位ビット（ＬＳＢ）は、全加算器２１３が出力する和の値であり、計算結果として出力される。リップルキャリー加算器２１１が出力するキャリーは、全加算器２１５が出力するキャリーであり、ＸＯＲ回路２３１およびＡＮＤ回路２３３に出力される。リップルキャリー加算器２１１が出力するキャリーおよびＬＳＢを除くビットは、部分積として第３段のリップルキャリー加算器３１１に出力される。ここでは、リップルキャリー加算器２１１が出力するキャリーおよびＬＳＢを除くビットは１ビットなので、リップルキャリー加算器３１１の全加算器３１３に入力される。
【００２４】
リップルキャリー加算器２２１が出力する値の最下位ビット（ＬＳＢ）は、全加算器２２３が出力する和の値であり、ＸＯＲ回路２３１およびＡＮＤ回路２３３に出力される。リップルキャリー加算器２２１が出力する値の最下位ビットを除くビットは、部分積として第３段のリップルキャリー加算器３２１に出力される。ここでは、リップルキャリー加算器２２１が出力する値のＬＳＢを除くビットは２ビットなので、リップルキャリー加算器３２１の全加算器３２３，３２５にそれぞれ出力される。
【００２５】
ＸＯＲ回路２３１は、下位側のリップルキャリー加算器２１１が出力するキャリーと、上位側のリップルキャリー加算器２２１の出力値のＬＳＢとが入力される。そして入力された２つの値の排他的論理和をキャリーが入ってきた桁の加算入力として出力する。具体的には、ＸＯＲ回路２３１は、論理和を第３段に配置された下位側のリップルキャリー加算器３１１の最上位ビットの加算入力、換言すれば、リップルキャリー加算器３１１の上位側の全加算器３１５の加算入力に出力する。
【００２６】
ＡＮＤ回路２３３は、下位側のリップルキャリー加算器２１１が出力するキャリーと、上位側のリップルキャリー加算器２２１の出力値のＬＳＢとが入力される。そして入力された２つの値の論理積を、キャリーの桁の１つ上位の桁の加算入力として出力する。具体的には、ＡＮＤ回路２３３は、第３段に配置された上位側のリップルキャリー加算器３２１の最下位ビットの加算入力、換言すれば、リップルキャリー加算器３２１の下位側の全加算器３２３のキャリー入力に出力する。
【００２７】
第３段に配置されるリップルキャリー加算器３１１，３２１は、第２段のリップルキャリー加算器２１１，２２１、ＸＯＲ回路２３１およびＡＮＤ回路２３３により算出された部分和と、部分積生成回路１０が出力する１つの部分積との和を算出する。リップルキャリー加算器３１１が計算の対象となる下位側２ビットの和を算出し、リップルキャリー加算器３２１が計算の対象となる上位側２ビットの和を算出する。最も下位側のリップルキャリー加算器３１１の下位側の全加算器３１３の加算入力のうちキャリーには、上段からの桁上がりがないために０が入力される。
【００２８】
演算装置１は、第２段にＸＯＲ２３１およびＡＮＤ２３３を備えるため、第３段のリップルキャリー加算器３１１の全加算器３１５の加算入力を３入力にすることができる。
【００２９】
リップルキャリー加算器３１１が出力する値の最下位ビット（ＬＳＢ）は、全加算器３１３が出力する和の値であり、計算結果として出力される。リップルキャリー加算器３１１が出力するキャリーは、全加算器３１５が出力するキャリーであり、ＸＯＲ回路３３１およびＡＮＤ回路３３３に出力される。リップルキャリー加算器３１１が出力するキャリーおよびＬＳＢを除くビットは、計算結果として出力される。ここでは、リップルキャリー加算器２１１が出力するキャリーおよびＬＳＢを除くビットは１ビットなので、それが計算結果として出力される。
【００３０】
リップルキャリー加算器３２１が出力する値の最下位ビット（ＬＳＢ）は、全加算器３２３が出力する和の値であり、ＸＯＲ回路３３１およびＡＮＤ回路３３３に出力される。リップルキャリー加算器３２１が出力する値の最下位ビットを除くビットは、計算結果として出力される。ここでは、リップルキャリー加算器３２１が出力する値のＬＳＢを除くビットは２ビットなので、リップルキャリー加算器４１１の全加算器４１３，４１５にそれぞれ出力される。
【００３１】
ＸＯＲ回路３３１は、下位側のリップルキャリー加算器３１１が出力するキャリーと、上位側のリップルキャリー加算器３２１の出力値のＬＳＢとが入力される。そして入力された２つの値の排他的論理和を計算結果として出力する。
【００３２】
ＸＯＲ回路３３１は、下位側のリップルキャリー加算器３１１が出力するキャリーと、上位側のリップルキャリー加算器３２１の出力値のＬＳＢとが入力される。そして入力された２つの値の論理積をリップルキャリー加算器４１１の最下位ビットの加算入力に出力する。具体的には、リップルキャリー加算器４１１の下位側の全加算器４１３のキャリー入力に出力する。リップルキャリー加算器４１１が出力する値は、計算結果として出力される。
【００３３】
以上説明したように、上位の段に配置された下位側のリップルキャリー加算器１１１（２１１）のキャリー出力と上位側のリップルキャリー加算器１２１（２２１）の最下位ビットの加算出力との排他的論理和を、下位の段に配置されたリップルキャリー加算器２１１（３１１）の最上位ビットの加算入力とし、上位の段に配置された下位側のリップルキャリー加算器１１１（２１１）のキャリー出力と上位側のリップルキャリー加算器１２１（２２１）の最下位ビットの加算出力との論理積を、下位の段に配置されたリップルキャリー加算器２２１（３２２）の最下位ビットの加算入力（キャリー入力）とするようにした。このため、ＣＳＡ型の乗算を実現することができるので、リップリキャリー型に比較して高速に演算することが可能となる。
【００３４】
なお、本実施の形態においては、リップルキャリー加算器１１１，１２１，２１１，２２１，３１１，３２１，４１１を２ビットの２つの値を加算する例を示したが、複数ビットであれば、例えば８ビット、１６ビット、２４ビット、３２ビット、６４ビット、１２８ビット等であっても適用することができる。また、第１段に２つのリップルキャリー加算器１１１，１２１を配置し、第２段に２つのリップルキャリー加算器２１１，２２１を配置し、第３段に２つのリップルキャリー加算器３１１，３２１を配置するようにしたが、各段に３以上のリップルキャリー加算器を配置することができる。さらに、本実施の形態においては、リップルキャリー加算器１１１，１２１，２１１，２２１，３１１，３２１，４１１を、リップルキャリー加算器として説明したが、例えば、キャリールックアヘッド加算器（ＣＬＡ）等の他の形態の加算器であってもよい。
【００３５】
＜第１の変形例＞
図２は、第１の変形例における演算装置の一例を示すブロック図である。図２を参照して、第１の変形例における演算装置１Ａは、図１に示した演算装置１と異なる点は、データフリップフロップ（ＤＦＦ）１５０，２５０，３５０が追加された点である。その他の構成は、図１に示した演算装置１と同じである。したがって、ここでは説明を繰り返さない。
【００３６】
ＤＦＦ１５０，２５０，３５０は、バッファであり、データを一時的に記憶する。ＤＦＦ１５０は、第１段に配置されたリップルキャリー加算器１１１，１２１、ＸＯＲ回路１３１およびＡＮＤ回路１３３それぞれの出力値を一時的に記憶する。ＤＦＦ２５０は、第２段に配置されたリップルキャリー加算器２１１，２２１、ＸＯＲ回路２３１およびＡＮＤ回路２３３それぞれの出力値を一時的に記憶する。ＤＦＦ３５０は、第３段に配置されたリップルキャリー加算器３１１，３２１、ＸＯＲ回路３３１およびＡＮＤ回路３３３それぞれの出力値を一時的に記憶する。
【００３７】
第１の変形例における演算装置１Ａは、第１段〜第４段それぞれの間にＤＦＦ１５０，２５０，３５０を備えるので、第１段〜第４段それぞれにおいて異なる演算をすることが可能となる。このため、演算装置１Ａは、乗算をパイプライン処理することができるので、スループットを高めることができる。
【００３８】
＜第２の変形例＞
図３は、第２の変形例における演算装置の一例を示すブロック図である。図３を参照して、第２の変形例における演算装置１Ｂは、部分積生成回路１０と、３つのリップルキャリー加算器１１１、１２１、４１１と、ＸＯＲ回路１３１と、ＡＮＤ回路１３３と、制御回路２０と、５つのＤＦＦ１５０〜１５４と、５つのマルチプレクサ（ＭＵＸ）１６１〜１６５と、を含む。
【００３９】
制御回路２０は、５つのマルチプレクサ（ＭＵＸ）１６１〜１６５と、部分積生成回路１０とを制御する。部分積生成回路１０は、部分積を２つのリップルキャリー加算器１１１、１２１またはＭＵＸ１６１〜１６５に出力する。制御回路２０は、複数の部分積のいずれを出力するか、および出力するタイミングを、部分積生成回路１０に指示する。部分積生成回路１０は、制御回路２０から入力される指示に従って部分積を算出し、算出した部分積を制御回路２０から入力される指示に従ってＭＵＸ１６１〜１６５または２つのリップルキャリー加算器１１１、１２１に出力する。
【００４０】
ＭＵＸ１６１〜１６５は、部分積生成回路１０から部分積が入力され、ＤＦＦ１５０から部分和が入力される。ＭＵＸ１６１〜１６５は、制御回路２０から入力される指示に従って、部分積と部分和とのいずれか一方を選択し、２つのリップルキャリー加算器１１１，１２１それぞれに出力する。
【００４１】
２つのリップルキャリー加算器１１１，１２１は、部分積生成回路１０から入力される２つの部分積、または、部分積生成回路１０から入力される１つの部分積と、ＭＵＸ１６１〜１６５から入力される部分和とを加算する。
【００４２】
具体的には、第１のタイミングで部分積生成回路１０によりＬＳＢに対応する部分積と、下位から２ビット目の対応する部分積の２つの部分積とが生成され、２つのリップルキャリー加算器１１１，１２１に入力される。２つの部分積の１つは直接２つのリップルキャリー加算器１１１、１２１に出力されるが、他の１つの部分積は、ＭＵＸ１６１〜１６５に出力され、ＭＵＸ１６１〜１６５により選択されて２つのリップルキャリー加算器１１１、１２１に出力される。
【００４３】
リップルキャリー加算器１１１が２つの部分積のうち計算の対象となる下位側２ビットの和を算出し、リップルキャリー加算器１２１が２つの部分積のうち計算の対象となる上位側２ビットの和を算出する。このとき、リップルキャリー加算器１１１の全加算器１１３およびリップルキャリー加算器１２１の全加算器１２３それぞれの加算入力のうち１つには、０が入力されるように、ＭＵＸ１６３は制御回路２０により制御される。
【００４４】
このとき、リップルキャリー加算器１１１が出力する値の最下位ビット（ＬＳＢ）は、全加算器１１３が出力する和の値であり、計算結果としてＤＦＦ１５０に記憶される。リップルキャリー加算器１１１が出力するキャリーは、全加算器１１５が出力するキャリーであり、ＸＯＲ回路１３１およびＡＮＤ回路１３３に出力される。リップルキャリー加算器１１１が出力するキャリーおよびＬＳＢを除くビットは、部分和としてＤＦＦ１５０に記憶される。
【００４５】
リップルキャリー加算器１２１が出力する値の最下位ビット（ＬＳＢ）は、全加算器１２３が出力する和の値であり、ＸＯＲ回路１３１およびＡＮＤ回路１３３に出力される。リップルキャリー加算器１２１が出力する値の最下位ビットを除くビットは、部分和としてＤＦＦ１５０に記憶される。
【００４６】
ＸＯＲ回路１３１は、下位側のリップルキャリー加算器１１１が出力するキャリーと、上位側のリップルキャリー加算器１２１の出力値のＬＳＢとが入力される。そして入力された２つの値の排他的論理和を、キャリーの桁の部分和としてＤＦＦ１５０に記憶する。
【００４７】
ＡＮＤ回路１３３は、下位側のリップルキャリー加算器１１１が出力するキャリーと、上位側のリップルキャリー加算器１２１の出力値のＬＳＢとが入力される。そして入力された２つの値の論理積を、キャリーの桁の１つ上位の桁の部分和としてＤＦＦに記憶する。
【００４８】
次のタイミングにおいて、ＭＵＸ１６１〜１６５によりＤＦＦ１５０に記憶されている部分和が選択され、２つのリップルキャリー加算器１１１，１２１に入力されるとともに、部分積生成回路１０から３ビット目に対応する部分積が生成され、２つのリップルキャリー加算器１１１，１２１に入力される。２つのリップルキャリー加算器１１１，１２１、ＸＯＲ回路１３１およびＡＮＤ回路１３３により、上述したのと同じ手順で部分和が算出され、ＤＦＦ１５０に記憶される。このとき、ＤＦＦ１５０に記憶されている下位２ビットは、ＤＦＦ１５１，１５３にそれぞれ記憶される。
【００４９】
このように、第１のタイミングにおいて、乗算した値の最下位ビットの値（Ｓ０）と１つ上位のビットの値（Ｓ１）とは、ＤＦＦ１５０に記憶され、次の第２のタイミングでＤＦＦ１５１，１５３にそれぞれに記憶され、第３のタイミングでＤＦＦ１５２，１５４にそれぞれ記憶され、第４のタイミングで計算結果としてそれぞれ出力される。
【００５０】
また下位から３ビット目の値（Ｓ２）は、第２のタイミングでＤＦＦ１５０に記憶され、第３のタイミングでＤＦＦ１５３に記憶され、第４のタイミングで計算結果として出力される。下位から４ビット目、５ビット目および６ビット目の値（Ｓ３、Ｓ４、Ｓ５）それぞれは、第３のタイミングでＤＦＦ１５０に記憶され、第４のタイミングで計算結果として出力される。
【００５１】
下位から７ビット目の値（Ｓ６）は、第４のタイミングで全加算器４１３から和のビットとして出力され、下位から８ビット目の値（Ｓ７）は、第４のタイミングで全加算器４１５から和のビットとして出力され、下位から９ビット目の値（Ｓ８）は、第４のタイミングで全加算器４１５からキャリーのビットとして出力される。
【００５２】
以上説明したように第２の変形例における演算装置１Ｂは、リップルキャリー加算器の数を少なくすることができ、回路規模を削減することができる。
【００５３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００５４】
【図１】本発明の実施の形態における演算装置の一例を示すブロック図である。
【図２】第１の変形例における演算装置の一例を示すブロック図である。
【図３】第２の変形例における演算装置の一例を示すブロック図である。
【符号の説明】
【００５５】
１，１Ａ，１Ｂ  演算装置、１０  部分積生成回路、２０  制御回路、１１１，１２１，２１１，２２１，３１１，３２１，４１１  リップルキャリー加算器、１１３，１１５，１２３，１２５，２１３，２１５，２２３，２２５，３１３，３１５，３２３，３２５，４１３，４１５  全加算器、１３１，２３１，３３１  ＸＯＲ回路、１３３，２３３，３３３  ＡＮＤ回路。
【図１】
0004954019.tif 000002
【図２】
0004954019.tif 000003
【図３】
0004954019.tif 000004