(57)【要約】【課題】全桁の加算を行う場合と、ある桁を分割位置とした複数の加算を行う場合とが切り替え可能な加算器を、省面積で、かつ、高速動作可能なように、実現する。【解決手段】分割位置となる第ｋ桁に対応して、制御信号Ｍｋを入力とし、制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］を出力する第２の要素生成回路２０を設ける。第２の要素生成回路２０は、Ｍｋがアサートされているとき、Ｇ’［ｋ］としてキャリー生成が無いことを示す所定値を出力するとともに、Ｐ’［ｋ］としてキャリー伝搬が無いことを示す所定値を出力する。一方、Ｍｋがアサートされていないとき、Ｇ’［ｋ］およびＰ’［ｋ］を、他の桁に対応して設けられた第１の要素生成回路１０におけるキャリー生成信号Ｇ［ｉ］およびキャリー伝搬信号Ｐ［ｉ］の生成と同様に、生成する。【選択図】図１
2008123263.tif 000002
【特許請求の範囲】
【請求項１】
ｎ（ｎ＞２）桁の２進数データＡ，Ｂを入力とする加算器であって、
前記データＡ，Ｂについて、全桁の加算を行う場合と、第ｋ桁（ｋは、０≦ｋ＜ｎ−１を満たす任意の整数）を分割位置とした２つの加算を行う場合とが、制御信号Ｍｋによって、切り替え可能に構成されており、
前記データＡ，Ｂの第ｉ桁であるＡ［ｉ］，Ｂ［ｉ］（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋを満たす全ての整数）をそれぞれ入力とし、キャリー生成の有無を表すキャリー生成信号Ｇ［ｉ］およびキャリー伝搬の有無を表すキャリー伝搬信号Ｐ［ｉ］を出力する（ｎ−１）個の第１の要素生成回路と、
前記データＡ，Ｂの第ｋ桁であるＡ［ｋ］，Ｂ［ｋ］、およびＭｋを入力とし、制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］を出力する第２の要素生成回路とを備え、
前記第２の要素生成回路は、
Ｍｋがアサートされているとき、Ｇ’［ｋ］としてキャリー生成が無いことを示す所定値を出力するとともに、Ｐ’［ｋ］としてキャリー伝搬が無いことを示す所定値を出力する一方、
Ｍｋがアサートされていないとき、Ｇ’［ｋ］およびＰ’［ｋ］を、前記第１の要素生成回路におけるＧ［ｉ］およびＰ［ｉ］の生成と同様に、生成する
ことを特徴とする加算器。
【請求項２】
請求項１において、
前記第２の要素生成回路は、
Ａ［ｋ］，Ｂ［ｋ］およびＭｋの論理積を求める第１の論理回路と、
Ａ［ｋ］およびＢ［ｋ］の論理和と、Ｍｋとの論理積を求める第２の論理回路とを備え、
前記第１の論理回路の出力を、Ｇ’［ｋ］として出力するとともに、前記第２の論理回路の出力を、Ｐ’［ｋ］として出力するものである
ことを特徴とする加算器。
【請求項３】
請求項１において、
前記第２の要素生成回路は、
Ａ［ｋ］，Ｂ［ｋ］およびＭｋの論理積を求める第１の論理回路と、
Ａ［ｋ］およびＢ［ｋ］の排他的論理和と、Ｍｋとの論理積を求める第２の論理回路とを備え、
前記第１の論理回路の出力を、Ｇ’［ｋ］として出力するとともに、前記第２の論理回路の出力を、Ｐ’［ｋ］として出力するものである
ことを特徴とする加算器。
【請求項４】
請求項１において、
前記第１の要素生成回路から出力されたＧ［ｉ］およびＰ［ｉ］から、キャリーＣ［ｉ］をそれぞれ生成する（ｎ−１）個の第１のキャリー生成ブロックと、
前記第２の要素生成回路から出力されたＧ’［ｋ］およびＰ’［ｋ］から、制御付きキャリーＣ’［ｋ］を生成する第２のキャリー生成ブロックと、
Ａ［ｋ］およびＢ［ｋ］を入力とし、Ｇ［ｋ］およびＰ［ｋ］を出力する第３の要素生成回路と、
前記第３の要素生成回路から出力されたＧ［ｋ］およびＰ［ｋ］から、キャリーＣ［ｋ］を生成する第３のキャリー生成ブロックとを備えた
ことを特徴とする加算器。
【請求項５】
請求項４において、
前記第３のキャリー生成ブロックは、前記第１のキャリー生成ブロックと同一構成からなる
ことを特徴とする加算器。
【請求項６】
請求項４において、
前記第３のキャリー生成ブロックは、
Ｇ［ｋ］およびＰ［ｋ］に加えて、キャリーＣ［ｋ−１］を用いて、キャリーＣ［ｋ］を生成するものである
ことをを特徴とする加算器。
【請求項７】
ｎ（ｎ＞２）桁の２進数データＡ，Ｂを入力とする加算器であって、
前記データＡ，Ｂについて、全桁の加算を行う場合と、第ｋ桁（ｋは、０≦ｋ＜ｎ−１を満たす任意の整数）を分割位置とした２つの加算を行う場合とが、制御信号Ｍｋによって、切り替え可能に構成されており、
最下位桁へのキャリー入力Ｃｉｎと、第ｋ桁を分割位置とした場合のキャリー入力Ｃｉｎ［ｋ］とを入力とし、
前記データＡ，Ｂの第ｉ桁であるＡ［ｉ］，Ｂ［ｉ］（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋを満たす全ての整数）をそれぞれ入力とし、キャリー生成の有無を表すキャリー生成信号Ｇ［ｉ］およびキャリー伝搬の有無を表すキャリー伝搬信号Ｐ［ｉ］を出力する（ｎ−１）個の第１の要素生成回路と、
前記データＡ，Ｂの第ｋ桁であるＡ［ｋ］，Ｂ［ｋ］、並びに、ＭｋおよびＣｉｎ［ｋ］を入力とし、制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］を出力する第２の要素生成回路とを備え、
前記第２の要素生成回路は、
Ｍｋがアサートされているとき、Ｐ’［ｋ］としてキャリー伝搬が無いことを示す所定値を出力する一方、Ｍｋがアサートされていないとき、Ｐ’［ｋ］を、前記第１の要素生成回路におけるＰ［ｉ］の生成と同様に、生成し、
Ｃｉｎ［ｋ］がアサートされているとき、Ｇ’［ｋ］としてＣｉｎ［ｋ］を出力し、Ｃｉｎ［ｋ］がアサートされていない場合において、Ｍｋがアサートされているとき、Ｇ’［ｋ］としてキャリー生成が無いことを示す所定値を出力する一方、Ｍｋがアサートされていないとき、Ｇ’［ｋ］を、前記第１の要素生成回路におけるＧ［ｉ］の生成と同様に、生成する
ことを特徴とする加算器。
【請求項８】
請求項７において、
前記第１の要素生成回路から出力されたＧ［ｉ］およびＰ［ｉ］から、キャリーＣ［ｉ］をそれぞれ生成する（ｎ−１）個の第１のキャリー生成ブロックと、
前記第２の要素生成回路から出力されたＧ’［ｋ］およびＰ’［ｋ］から、制御付きキャリーＣ’［ｋ］を生成する第２のキャリー生成ブロックと、
Ａ［ｋ］およびＢ［ｋ］を入力とし、Ｇ［ｋ］およびＰ［ｋ］を出力する第３の要素生成回路と、
前記第３の要素生成回路から出力されたＧ［ｋ］およびＰ［ｋ］から、キャリーＣ［ｋ］を生成する第３のキャリー生成ブロックとを備えた
ことを特徴とする加算器。
【請求項９】
ｎ（ｎ＞２）桁の２進数データＡ，Ｂを入力とする加算器であって、
前記データＡ，Ｂについて、全桁の加算を行う場合と、第ｋ（ｘ）桁（ｋ（ｘ）は、０≦ｋ（ｘ）＜ｎ−１を満たす任意の整数，ｘは１≦ｘ≦ｍを満たす全ての整数，ｍは分割可能な位置の個数を表し、０＜ｍ＜ｎを満たす任意の整数）の全部または一部を分割位置とした２〜（ｍ＋１）個の加算を行う場合とが、制御信号Ｍ［ｋ（ｘ）］によって、切り替え可能に構成されており、
前記データＡ，Ｂの第ｉ桁であるＡ［ｉ］，Ｂ［ｉ］（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋ（ｘ）を満たす全ての整数）をそれぞれ入力とし、キャリー生成の有無を表すキャリー生成信号Ｇ［ｉ］およびキャリー伝搬の有無を表すキャリー伝搬信号Ｐ［ｉ］を出力する（ｎ−ｍ）個の第１の要素生成回路と、
前記データＡ，Ｂの第ｋ（ｘ）桁であるＡ［ｋ（ｘ）］，Ｂ［ｋ（ｘ）］、およびＭ［ｋ（ｘ）］を入力とし、制御付きキャリー生成信号Ｇ’［ｋ（ｘ）］および制御付きキャリー伝搬信号Ｐ’［ｋ（ｘ）］を出力するｍ個の第２の要素生成回路とを備え、
前記第２の要素生成回路は、
Ｍ［ｋ（ｘ）］がアサートされているとき、Ｇ’［ｋ（ｘ）］としてキャリー生成が無いことを示す所定値を出力するとともに、Ｐ’［ｋ（ｘ）］としてキャリー伝搬が無いことを示す所定値を出力する一方、
Ｍ［ｋ（ｘ）］がアサートされていないとき、Ｇ’［ｋ（ｘ）］およびＰ’［ｋ（ｘ）］を、前記第１の要素生成回路におけるＧ［ｉ］およびＰ［ｉ］の生成と同様に、生成する
ことを特徴とする加算器。
【請求項１０】
請求項９において、
前記第１の要素生成回路から出力されたＧ［ｉ］およびＰ［ｉ］から、キャリーＣ［ｉ］をそれぞれ生成する（ｎ−ｍ）個の第１のキャリー生成ブロックと、
前記第２の要素生成回路から出力されたＧ’［ｋ（ｘ）］およびＰ’［ｋ（ｘ）］から、制御付きキャリーＣ’［ｋ（ｘ）］をそれぞれ生成するｍ個の第２のキャリー生成ブロックと、
Ａ［ｋ（ｘ）］およびＢ［ｋ（ｘ）］を入力とし、Ｇ［ｋ（ｘ）］およびＰ［ｋ（ｘ）］を出力するｍ個の第３の要素生成回路と、
前記第３の要素生成回路から出力されたＧ［ｋ（ｘ）］およびＰ［ｋ（ｘ）］から、キャリーＣ［ｋ（ｘ）］をそれぞれ生成するｍ個の第３のキャリー生成ブロックとを備えた
ことを特徴とする加算器。
【請求項１１】
ｎ（ｎ＞２）桁の２進数データＡ，Ｂを入力とする加算器であって、
前記データＡ，Ｂについて、全桁の加算を行う場合と、第ｋ（ｘ）桁（ｋ（ｘ）は、０≦ｋ（ｘ）＜ｎ−１を満たす任意の整数，ｘは、１≦ｘ≦ｍを満たす全ての整数，ｍは分割可能な位置の個数を表し、０＜ｍ＜ｎを満たす任意の整数）の全部または一部を分割位置とした２〜（ｍ＋１）個の加算を行う場合とが、制御信号Ｍ［ｋ（ｘ）］によって、切り替え可能に構成されており、
最下位桁へのキャリー入力Ｃｉｎと、第ｋ（ｘ）桁を分割位置とした場合のキャリー入力Ｃｉｎ［ｋ（ｘ）］とを入力とし、
前記データＡ，Ｂの第ｉ桁であるＡ［ｉ］，Ｂ［ｉ］（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋ（ｘ）を満たす全ての整数）をそれぞれ入力とし、キャリー生成の有無を表すキャリー生成信号Ｇ［ｉ］およびキャリー伝搬の有無を表すキャリー伝搬信号Ｐ［ｉ］を出力する（ｎ−ｍ）個の第１の要素生成回路と、
前記データＡ，Ｂの第ｋ（ｘ）桁であるＡ［ｋ（ｘ）］，Ｂ［ｋ（ｘ）］、並びにＭ［ｋ（ｘ）］およびＣｉｎ［ｋ（ｘ）］を入力とし、制御付きキャリー生成信号Ｇ’［ｋ（ｘ）］および制御付きキャリー伝搬信号Ｐ’［ｋ（ｘ）］を出力するｍ個の第２の要素生成回路とを備え、
前記第２の要素生成回路は、
Ｍｋがアサートされているとき、Ｐ’［ｋ］としてキャリー伝搬が無いことを示す所定値を出力する一方、Ｍｋがアサートされていないとき、Ｐ’［ｋ］を、前記第１の要素生成回路におけるＰ［ｉ］の生成と同様に、生成し、
Ｃｉｎ［ｋ（ｘ）］がアサートされているとき、Ｇ’［ｋ］としてＣｉｎ［ｋ（ｘ）］を出力し、Ｃｉｎ［ｋ（ｘ）］がアサートされていない場合において、Ｍｋがアサートされているとき、Ｇ’［ｋ］としてキャリー生成が無いことを示す所定値を出力する一方、Ｍｋがアサートされていないとき、Ｇ’［ｋ］を、前記第１の要素生成回路におけるＧ［ｉ］の生成と同様に、生成する
ことを特徴とする加算器。
【請求項１２】
請求項１１において、
前記第１の要素生成回路から出力されたＧ［ｉ］およびＰ［ｉ］から、キャリーＣ［ｉ］をそれぞれ生成する（ｎ−ｍ）個の第１のキャリー生成ブロックと、
前記第２の要素生成回路から出力されたＧ’［ｋ（ｘ）］およびＰ’［ｋ（ｘ）］から、制御付きキャリーＣ’［ｋ（ｘ）］をそれぞれ生成するｍ個の第２のキャリー生成ブロックと、
Ａ［ｋ（ｘ）］およびＢ［ｋ（ｘ）］を入力とし、Ｇ［ｋ（ｘ）］およびＰ［ｋ（ｘ）］を出力するｍ個の第３の要素生成回路と、
前記第３の要素生成回路から出力されたＧ［ｋ（ｘ）］およびＰ［ｋ（ｘ）］から、キャリーＣ［ｋ（ｘ）］をそれぞれ生成するｍ個の第３のキャリー生成ブロックとを備えた
ことを特徴とする加算器。
【請求項１３】
ｎ（ｎ＞２）桁の２進数データＡ，Ｂについて、大小比較を行う比較器であって、
前記データＡ，Ｂについて、全桁の比較演算を行う場合と、第ｋ桁（ｋは、０≦ｋ＜ｎ−１を満たす任意の整数）を分割位置とした２つの比較演算を行う場合とが、制御信号Ｍｋによって、切り替え可能に構成されており、
前記データＡの第ｉ桁であるＡ［ｉ］，前記データＢの第ｉ桁の論理反転〜Ｂ［ｉ］（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋを満たす全ての整数）をそれぞれ入力とし、キャリー生成の有無を表すキャリー生成信号Ｇ［ｉ］およびキャリー伝搬の有無を表すキャリー伝搬信号Ｐ［ｉ］を出力する（ｎ−１）個の第１の要素生成回路と、
前記データＡの第ｋ桁であるＡ［ｋ］，前記データＢの第ｋ桁の論理反転〜Ｂ［ｋ］、およびＭｋを入力とし、制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］を出力する第２の要素生成回路と、
前記第１の要素生成回路から出力されたＧ［ｉ］およびＰ［ｉ］から、キャリーＣ［ｉ］をそれぞれ生成する（ｎ−１）個の第１のキャリー生成ブロックと、
前記第２の要素生成回路から出力されたＧ’［ｋ］およびＰ’［ｋ］から、制御付きキャリーＣ’［ｋ］を生成する第２のキャリー生成ブロックと、
Ａ［ｋ］および〜Ｂ［ｋ］を入力とし、Ｇ［ｋ］およびＰ［ｋ］を出力する第３の要素生成回路と、
前記第３の要素生成回路から出力されたＧ［ｋ］およびＰ［ｋ］から、キャリーＣ［ｋ］を生成する第３のキャリー生成ブロックとを備え、
前記第２の要素生成回路は、
Ｍｋがアサートされているとき、Ｇ’［ｋ］としてキャリー生成が無いことを示す所定値を出力するとともに、Ｐ’［ｋ］としてキャリー伝搬が無いことを示す所定値を出力する一方、
Ｍｋがアサートされていないとき、Ｇ’［ｋ］およびＰ’［ｋ］を、前記第１の要素生成回路におけるＧ［ｉ］およびＰ［ｉ］の生成と同様に、生成する
ことを特徴とする比較器。
【請求項１４】
請求項１３において、
前記第３のキャリー生成ブロックは、前記第１のキャリー生成ブロックと同一構成からなる
ことを特徴とする比較器。
【請求項１５】
請求項１３において、
前記第３のキャリー生成ブロックは、
Ｇ［ｋ］およびＰ［ｋ］に加えて、キャリーＣ［ｋ−１］を用いて、キャリーＣ［ｋ］を生成するものである
ことをを特徴とする比較器。
【請求項１６】
ｎ（ｎ＞２）桁の２進数データＡ，Ｂについて、大小比較を行う比較器であって、
前記データＡ，Ｂについて、全桁の比較演算を行う場合と、第ｋ桁（ｋは、０≦ｋ＜ｎ−１を満たす任意の整数）を分割位置とした２つの比較演算を行う場合とが、制御信号Ｍｋによって、切り替え可能に構成されており、
最下位桁へのキャリー入力Ｃｉｎと、第ｋ桁を分割位置とした場合のキャリー入力Ｃｉｎ［ｋ］とを入力とし、
前記データＡの第ｉ桁であるＡ［ｉ］，前記データＢの第ｉ桁の論理反転〜Ｂ［ｉ］（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋを満たす全ての整数）をそれぞれ入力とし、キャリー生成の有無を表すキャリー生成信号Ｇ［ｉ］およびキャリー伝搬の有無を表すキャリー伝搬信号Ｐ［ｉ］を出力する（ｎ−１）個の第１の要素生成回路と、
前記データＡの第ｋ桁であるＡ［ｋ］，前記データＢの第ｋ桁の論理反転〜Ｂ［ｋ］、並びに、ＭｋおよびＣｉｎ［ｋ］を入力とし、制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］を出力する第２の要素生成回路と、
前記第１の要素生成回路から出力されたＧ［ｉ］およびＰ［ｉ］から、キャリーＣ［ｉ］をそれぞれ生成する（ｎ−１）個の第１のキャリー生成ブロックと、
前記第２の要素生成回路から出力されたＧ’［ｋ］およびＰ’［ｋ］から、制御付きキャリーＣ’［ｋ］を生成する第２のキャリー生成ブロックと、
Ａ［ｋ］および〜Ｂ［ｋ］を入力とし、Ｇ［ｋ］およびＰ［ｋ］を出力する第３の要素生成回路と、
前記第３の要素生成回路から出力されたＧ［ｋ］およびＰ［ｋ］から、キャリーＣ［ｋ］を生成する第３のキャリー生成ブロックとを備え、
前記第２の要素生成回路は、
Ｍｋがアサートされているとき、Ｐ’［ｋ］としてキャリー伝搬が無いことを示す所定値を設定する一方、Ｍｋがアサートされていないとき、Ｐ’［ｋ］を、前記第１の要素生成回路におけるＰ［ｉ］の生成と同様に、生成し、
Ｃｉｎ［ｋ］がアサートされているとき、Ｇ’［ｋ］としてＣｉｎ［ｋ］を出力し、Ｃｉｎ［ｋ］がアサートされていない場合において、Ｍｋがアサートされているとき、Ｇ’［ｋ］としてキャリー生成が無いことを示す所定値を設定する一方、Ｍｋがアサートされていないとき、Ｇ’［ｋ］を、前記第１の要素生成回路におけるＧ［ｉ］の生成と同様に、生成する
ことを特徴とする比較器。
【請求項１７】
ｎ（ｎ＞２）桁の２進数データＡ，Ｂについて、大小比較を行う比較器であって、
前記データＡ，Ｂについて、全桁の比較演算を行う場合と、第ｋ（ｘ）桁（ｋ（ｘ）は、０≦ｋ（ｘ）＜ｎ−１を満たす任意の整数，ｘは、１≦ｘ≦ｍを満たす全ての整数，ｍは分割可能な位置の個数を表し、０＜ｍ＜ｎを満たす任意の整数）の全部または一部を分割位置とした２〜（ｍ＋１）個の比較演算を行う場合とが、制御信号Ｍ［ｋ（ｘ）］によって、切り替え可能に構成されており、
前記データＡの第ｉ桁であるＡ［ｉ］，前記データＢの第ｉ桁の論理反転〜Ｂ［ｉ］（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋ（ｘ）を満たす全ての整数）をそれぞれ入力とし、キャリー生成の有無を表すキャリー生成信号Ｇ［ｉ］およびキャリー伝搬の有無を表すキャリー伝搬信号Ｐ［ｉ］を出力する（ｎ−ｍ）個の第１の要素生成回路と、
前記データＡの第ｋ（ｘ）桁であるＡ［ｋ（ｘ）］，前記データＢの第ｋ（ｘ）桁の論理反転〜Ｂ［ｋ（ｘ）］、およびＭ［ｋ（ｘ）］を入力とし、制御付きキャリー生成信号Ｇ’［ｋ（ｘ）］および制御付きキャリー伝搬信号Ｐ’［ｋ（ｘ）］を出力するｍ個の第２の要素生成回路と、
前記第１の要素生成回路から出力されたＧ［ｉ］およびＰ［ｉ］から、キャリーＣ［ｉ］をそれぞれ生成する（ｎ−ｍ）個の第１のキャリー生成ブロックと、
前記第２の要素生成回路から出力されたＧ’［ｋ（ｘ）］およびＰ’［ｋ（ｘ）］から、制御付きキャリーＣ’［ｋ（ｘ）］をそれぞれ生成するｍ個の第２のキャリー生成ブロックと、
Ａ［ｋ（ｘ）］および〜Ｂ［ｋ（ｘ）］を入力とし、Ｇ［ｋ（ｘ）］およびＰ［ｋ（ｘ）］を出力するｍ個の第３の要素生成回路と、
前記第３の要素生成回路から出力されたＧ［ｋ（ｘ）］およびＰ［ｋ（ｘ）］から、キャリーＣ［ｋ（ｘ）］をそれぞれ生成するｍ個の第３のキャリー生成ブロックとを備え、
前記第２の要素生成回路は、
Ｍ［ｋ（ｘ）］がアサートされているとき、Ｇ’［ｋ（ｘ）］としてキャリー生成が無いことを示す所定値を出力するとともに、Ｐ’［ｋ（ｘ）］としてキャリー伝搬が無いことを示す所定値を出力する一方、
Ｍ［ｋ（ｘ）］がアサートされていないとき、Ｇ’［ｋ（ｘ）］およびＰ’［ｋ（ｘ）］を、前記第１の要素生成回路におけるＧ［ｉ］およびＰ［ｉ］の生成と同様に、生成する
ことを特徴とする比較器。
【請求項１８】
ｎ（ｎ＞２）桁の２進数データＡ，Ｂについて、大小比較を行う比較器であって、
前記データＡ，Ｂについて、全桁の比較演算を行う場合と、第ｋ（ｘ）ビット（ｋ（ｘ）は、０≦ｋ（ｘ）＜ｎ−１を満たす任意の整数，ｘは、１≦ｘ≦ｍを満たす全ての整数，ｍは分割可能な位置の個数を表し、０＜ｍ＜ｎを満たす任意の整数）の全部または一部を分割位置とした２〜（ｍ＋１）個の比較演算を行う場合とが、制御信号Ｍ［ｋ（ｘ）］によって、切り替え可能に構成されており、
最下位桁へのキャリー入力Ｃｉｎと、第ｋ（ｘ）桁を分割位置とした場合のキャリー入力Ｃｉｎ［ｋ（ｘ）］とを入力とし、
前記データＡの第ｉビットであるＡ［ｉ］，前記データＢの第ｉビットの論理反転〜Ｂ［ｉ］（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋ（ｘ）を満たす全ての整数）をそれぞれ入力とし、キャリー生成の有無を表すキャリー生成信号Ｇ［ｉ］およびキャリー伝搬の有無を表すキャリー伝搬信号Ｐ［ｉ］を出力する（ｎ−ｍ）個の第１の要素生成回路と、
前記データＡの第ｋ（ｘ）ビットであるＡ［ｋ（ｘ）］，前記データＢの第ｋビットの論理反転〜Ｂ［ｋ（ｘ）］、並びにＭ［ｋ（ｘ）］およびＣｉｎ［ｋ（ｘ）］を入力とし、制御付きキャリー生成信号Ｇ’［ｋ（ｘ）］および制御付きキャリー伝搬信号Ｐ’［ｋ（ｘ）］を出力するｍ個の第２の要素生成回路と、
前記第１の要素生成回路から出力されたＧ［ｉ］およびＰ［ｉ］から、キャリーＣ［ｉ］をそれぞれ生成する（ｎ−ｍ）個の第１のキャリー生成ブロックと、
前記第２の要素生成回路から出力されたＧ’［ｋ（ｘ）］およびＰ’［ｋ（ｘ）］から、制御付きキャリーＣ’［ｋ（ｘ）］をそれぞれ生成するｍ個の第２のキャリー生成ブロックと、
Ａ［ｋ（ｘ）］および〜Ｂ［ｋ（ｘ）］を入力とし、Ｇ［ｋ（ｘ）］およびＰ［ｋ（ｘ）］を出力するｍ個の第３の要素生成回路と、
前記第３の要素生成回路から出力されたＧ［ｋ（ｘ）］およびＰ［ｋ（ｘ）］から、キャリーＣ［ｋ（ｘ）］をそれぞれ生成するｍ個の第３のキャリー生成ブロックとを備え、
前記第２の要素生成回路は、
Ｍｋがアサートされているとき、Ｐ’［ｋ］としてキャリー伝搬が無いことを示す所定値を設定する一方、Ｍｋがアサートされていないとき、Ｐ’［ｋ］を、前記第１の要素生成回路におけるＰ［ｉ］の生成と同様に、生成し、
Ｃｉｎ［ｋ（ｘ）］がアサートされているとき、Ｇ’［ｋ］としてＣｉｎ［ｋ（ｘ）］を出力し、Ｃｉｎ［ｋ（ｘ）］がアサートされていない場合において、Ｍｋがアサートされているとき、Ｇ’［ｋ］としてキャリー生成が無いことを示す所定値を設定する一方、Ｍｋがアサートされていないとき、Ｇ’［ｋ］を、前記第１の要素生成回路におけるＧ［ｉ］の生成と同様に、生成する
ことを特徴とする比較器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサ等に用いられる加算器に関し、特に複数の並列動作可能な低精度の部分加算器としても使用可能な加算器に関する。
【背景技術】
【０００２】
従来から、高精度の加算器、または並列に動作する複数の低精度の部分加算器として、動作可能な加算器が知られている。
【０００３】
例えば特許文献１では、図１９に示すように、複数の並列動作可能な低精度の部分加算器９１，９２，９３を備え、キャリー制御回路９４が上位側加算器９２，９３に予め必要なキャリーを入力し、セレクタ９５が下位側加算器９１の最上位桁で生成されるキャリーによって上位側加算器９２，９３のいずれかの結果を選択する構成が、開示されている。
【０００４】
また特許文献２では、キャリー信号伝搬ブロックにおいて、キャリー信号を生成する際に、下位側からのキャリー生成信号およびキャリー伝播信号をマスクするか否かを制御するとともに、和信号生成ブロックにおいて、キャリー信号をマスクするか否かを制御する構成が、開示されている。
【特許文献１】特開平１１−１１９９７９号公報
【特許文献２】特開平９−２２２９９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の構成では、次のような問題がある。
【０００６】
特許文献１の構成では、上位に位置する２つの部分加算器にキャリーを入力するキャリー制御回路と、下位のキャリーを基にして上位に位置する部分加算器を選択するセレクタとが、部分加算器の境界毎に必要となる。このため、単一の加算結果のみを求める加算器と比較すると、キャリー制御回路の分と、セレクタの論理段数×セレクタの個数分とだけ、論理段数が増加することになる。したがって、動作速度が悪化してしまうという問題を有していた。
【０００７】
また、特許文献２の構成では、単一の加算結果のみを求める加算器と比較すると、和信号生成ブロックにおいてキャリー信号をマスクするか否かを制御するために必要な分だけ、論理段数が増加することになる。したがって、動作速度が悪化してしまうという問題を有していた。
【０００８】
また、特許文献２の構成では、キャリー信号伝播ブロックの全ての要素回路において、下位側からのキャリー生成信号およびキャリー伝播信号をマスクするか否かを制御するための回路が必要となる。さらに、和信号生成ブロックの全ての要素回路においても、キャリー信号をマスクするか否かを制御するための回路が必要となる。このため、単一の加算結果のみを求める加算器と比較すると、回路面積が大幅に増加してしまう、という問題をを有していた。
【０００９】
本発明は、上記従来の問題点を解決するものであり、全桁の加算を行う場合と、ある桁を分割位置とした複数の加算を行う場合とが切り替え可能な加算器を、省面積で、かつ、高速動作可能なように、実現することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、ｎ（ｎ＞２）桁の２進数データＡ，Ｂを入力とする加算器として、前記データＡ，Ｂについて、全桁の加算を行う場合と、第ｋ桁（ｋは、０≦ｋ＜ｎ−１を満たす任意の整数）を分割位置とした２つの加算を行う場合とが、制御信号Ｍｋによって、切り替え可能に構成されており、前記データＡ，Ｂの第ｉ桁であるＡ［ｉ］，Ｂ［ｉ］（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋを満たす全ての整数）をそれぞれ入力とし、キャリー生成の有無を表すキャリー生成信号Ｇ［ｉ］およびキャリー伝搬の有無を表すキャリー伝搬信号Ｐ［ｉ］を出力する（ｎ−１）個の第１の要素生成回路と、前記データＡ，Ｂの第ｋ桁であるＡ［ｋ］，Ｂ［ｋ］、およびＭｋを入力とし、制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］を出力する第２の要素生成回路とを備え、前記第２の要素生成回路は、Ｍｋがアサートされているとき、Ｇ’［ｋ］としてキャリー生成が無いことを示す所定値を出力するとともに、Ｐ’［ｋ］としてキャリー伝搬が無いことを示す所定値を出力する一方、Ｍｋがアサートされていないとき、Ｇ’［ｋ］およびＰ’［ｋ］を、前記第１の要素生成回路におけるＧ［ｉ］およびＰ［ｉ］の生成と同様に、生成するものである。
【００１１】
本発明によると、分割位置となる第ｋ桁に対応して、制御信号Ｍｋを入力とし、制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］を出力する第２の要素生成回路が設けられている。第２の要素生成回路は、Ｍｋがアサートされているとき、Ｇ’［ｋ］としてキャリー生成が無いことを示す所定値を出力するとともに、Ｐ’［ｋ］としてキャリー伝搬が無いことを示す所定値を出力する。これにより、第ｋ桁のキャリー生成信号とキャリー伝搬信号の発生が抑制されるので、第ｋ桁以下の桁の演算結果が第ｋ桁より上位の桁の計算に影響しない。したがって、第ｋ桁を分割位置とした２つの加算を行うことができる。一方、第２の要素生成回路は、Ｍｋがアサートされていないとき、Ｇ’［ｋ］およびＰ’［ｋ］を、他の桁に対応して設けられた第１の要素生成回路におけるキャリー生成信号Ｇ［ｉ］およびキャリー伝搬信号Ｐ［ｉ］の生成と同様に、生成する。これにより、全桁の加算を行うことができる。すなわち、制御信号Ｍｋによって、全ｎ桁の加算と、第ｋ桁を分割位置とした２つの加算との切り替えが可能になる。しかも、第２の要素生成回路は、分割位置となる第ｋ桁にのみ設けられており、かつ、Ｍｋがアサートされているとき、Ｇ’［ｋ］，Ｐ’［ｋ］を所定値にする機能が付加されているだけなので、回路面積および論理段数の増加はごくわずかである。
【００１２】
また、本発明は、上の特徴を、キャリー出力付き加算器、キャリー入力付き加算器、キャリー出力およびキャリー入力付き加算器に適用したものを含む。
【００１３】
また、本発明は、上の構成を、分割可能な位置がｍ（ｍは、０＜ｍ＜ｎを満たす任意の整数）個設定された加算器に拡張したものを含む。
【００１４】
また、本発明は、本発明に係るキャリー出力付き加算器を変形した比較器を含む。
【発明の効果】
【００１５】
本発明によると、全桁の加算を行う場合と、ある桁を分割位置とした複数の加算を行う場合とが切り替え可能な加算器を、回路面積および論理段数の大きな増加を招くことなく、実現することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１７】
（第１の実施形態）
図１は本発明の第１の実施形態に係る加算器の構成を示す図である。図１の加算器１００は、ｎ桁（ｎ＞２）の２進数データＡ，Ｂを入力とし、加算動作を行う。そして、データＡ，Ｂについて、全桁の加算を行う場合と、第ｋ桁（ｋは、０≦ｋ＜ｎ−１を満たす任意の整数）を分割位置とした２つの加算を行う場合とが、制御信号Ｍｋによって、切り替え可能に構成されている。制御信号Ｍｋがアサートされているときは、第ｋ桁を分割位置とした２つの加算を行い、一方、制御信号Ｍｋがアサートされていないときは、全桁の加算を行う。ここでは制御信号Ｍｋは、アサートされているときは論理値“０”となり、アサートされていないときは論理値“１”となるものとする。
【００１８】
図１（ａ）に示すように、加算器１００は、（ｎ−１）個の第１の要素生成回路１０と、１個の第２の要素生成回路２０とを備えている。また、入力１ａ，１ｂにデータＡを受けるとともに、入力２ａ，２ｂにデータＢを受け、さらに入力３に制御信号Ｍｋを受ける。そして、出力３１ａ，３１ｂに加算結果を出力する。なお、図１（ａ）では、キャリー演算と和信号生成に関するブロックについて図示を省略している。
【００１９】
第１の要素生成回路１０は、図１（ｂ）に示すように、データＡ，Ｂの第ｉ桁であるＡ［ｉ］，Ｂ［ｉ］（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋを満たす全ての整数）を入力とし、第ｉ桁におけるキャリー生成の有無を表すキャリー生成信号Ｇ［ｉ］および、第ｉ桁からのキャリー伝搬の有無を表すキャリー伝搬信号Ｐ［ｉ］を出力する。
【００２０】
ここでは、キャリー生成信号Ｇ［ｉ］は、第ｉ桁の入力信号Ａ［ｉ］，Ｂ［ｉ］のみにより桁上げを生成するときに論理値“１”となる信号とする。また、キャリー伝搬信号Ｐ［ｉ］は、第ｉ桁より下位の桁からの桁上げが存在した場合に桁上げを生成するときに論理値“１”となる信号とする。一般に、キャリー生成信号は、該当する桁の入力ＡとＢの論理積、キャリー伝搬信号は、該当する桁の入力ＡとＢの論理和または排他的論理和によって生成される。また、例えばＣＭＯＳを用いた場合などは、それぞれの信号を負論理を用いて生成することも可能である。
【００２１】
第２の要素生成回路２０は、図１（ｃ）に示すように、データＡ，Ｂの第ｋ桁であるＡ［ｋ］，Ｂ［ｋ］、および制御信号Ｍｋを入力とし、制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］を出力する。制御信号Ｍｋがアサートされているとき、第２の要素生成回路２０は、制御付きキャリー生成信号Ｇ’［ｋ］としてキャリー生成が無いことを示す所定値（ここでは論理値“０”）を出力するとともに、制御付きキャリー伝搬信号Ｐ’［ｋ］としてキャリー伝搬が無いことを示す所定値（ここでは論理値“０”）を出力する。一方、制御信号Ｍｋがアサートされていないとき、第２の要素生成回路２０は、制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］を、第１の要素生成回路１０におけるキャリー生成信号Ｇ［ｉ］およびキャリー伝搬信号Ｐ［ｉ］の生成と同様に、生成し出力する。
【００２２】
すなわち、制御付きキャリー生成信号Ｇ’［ｋ］は、第ｋ桁を分割位置とした２つの加算を行う場合は、制御信号Ｍｋによって論理値“０”に制御される一方、全ｎ桁の加算を行う場合は、入力信号Ａ［ｋ］，Ｂ［ｋ］から得られるキャリー生成信号となる。また、制御付きキャリー伝搬信号Ｐ’［ｋ］は、第ｋ桁を分割位置とした２種類の加算を行う場合は、制御信号Ｍｋによって論理値“０”に制御される一方、全ｎ桁の加算を行う場合は、入力信号Ａ［ｋ］，Ｂ［ｋ］から得られるキャリー伝播信号となる。
【００２３】
図２および図３は第２の要素生成回路２０の構成例を示す回路図である。図２において、第１の論理回路２１はＡ［ｋ］，Ｂ［ｋ］および制御信号Ｍｋの論理積を求めるものであり、第２の論理回路２２はＡ［ｋ］およびＢ［ｋ］の論理和と、制御信号Ｍｋとの論理積を求めるものである。そして、第１の論理回路２１の出力が、制御付きキャリー生成信号Ｇ’［ｋ］として出力されるとともに、第２の論理回路２２の出力が、制御付きキャリー伝搬信号Ｐ’［ｋ］として出力される。
【００２４】
また図３において、第１の論理回路２３はＡ［ｋ］，Ｂ［ｋ］および制御信号Ｍｋの論理積を求めるものであり、第２の論理回路２４はＡ［ｋ］およびＢ［ｋ］の排他的論理和と、制御信号Ｍｋとの論理積を求めるものである。そして、第１の論理回路２３の出力が制御付きキャリー生成信号Ｇ’［ｋ］として出力されるとともに、第２の論理回路２４の出力が制御付きキャリー伝搬信号Ｐ’［ｋ］として出力される。
【００２５】
なお、ここでは正論理を基準に説明したが、負論理を用いても同様に実現できることは明白である。
【００２６】
以上のように構成された加算器では、第ｋ桁を分割位置とした２つの加算を行う場合、制御信号Ｍｋがアサートされることによって、第２の要素生成回路２０の動作により、第ｋ桁の制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝播信号Ｐ’［ｋ］が論理値“０”に制御される。これにより、上位側の加算結果に下位側の加算による桁上げが影響することを防ぐことができる。したがって、第ｋ桁を分割位置とした２つの加算結果を、出力３１ａ，３１ｂからそれぞれ適切に得ることができる。一方、全桁の加算を行う場合は、制御信号Ｍｋがアサートされないことによって、第ｋ桁の制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝播信号Ｐ’［ｋ］は、他の桁のキャリー生成信号およびキャリー伝搬信号と同様に生成される。したがって、全桁の加算結果を、出力３１ａ，３１ｂから適切に得ることができる。
【００２７】
次に、より具体的な動作について説明する。以下では簡単のために、ｎ＝３２、ｋ＝１５の場合、すなわち全３２桁の加算と、上位１６桁と下位１６桁の２つの加算との切り替えが可能である場合を例にとって説明する。
【００２８】
Ｇ［ｉ］とＰ［ｉ］はＡ［ｉ］，Ｂ［ｉ］から、Ｇ’［１５］とＰ’［１５］はＡ［１５］，Ｂ［１５］，Ｍ１５から、それぞれ生成される。Ｇ［ｉ］，Ｐ［ｉ］，Ｇ’［１５］，Ｐ’［１５］を用いて全桁のキャリーＣ［ｉ］およびＣ’［１５］を計算し、これらと入力Ａ［ｉ＋１］，Ｂ［ｉ＋１］、Ａ［１６］，Ｂ［１６］を用いて、加算結果Ｓｕｍ［ｉ＋１］とＳｕｍ［１６］を計算する。ここで、Ｇ’［１５］はＡ［１５］とＢ［１５］とＭ１５の論理積となり、Ｐ’［１５］はＡ［１５］とＢ［１５］の論理和または排他的論理和とＭｋとの論理積となる。
【００２９】
以下に、その論理式を示す。Ｇ［−１］＝Ｐ［−１］＝Ｃ［−１］＝０とする。・は論理積を、＋は論理和を、＾は排他的論理和を表す。
Ｇ［ｉ］＝Ａ［ｉ］・Ｂ［ｉ］
Ｇ’［１５］＝Ａ［１５］・Ｂ［１５］・Ｍ１５
Ｐ［ｉ］＝Ａ［ｉ］＋Ｂ［ｉ］またはＡ［ｉ］＾Ｂ［ｉ］
Ｐ’［１５］＝（Ａ［１５］＋Ｂ［１５］）・Ｍ１５
または（Ａ［１５］＾Ｂ［１５］）・Ｍ１５
Ｃ［ｉ］＝Ｇ［ｉ］＋Ｐ［ｉ］・Ｃ［ｉ−１］
Ｃ’［１５］＝Ｇ’［１５］＋Ｐ’［１５］・Ｃ［１４］
Ｓｕｍ［ｉ＋１］＝Ａ［ｉ＋１］＾Ｂ［ｉ＋１］＾Ｃ［ｉ］
＝Ａ［ｉ＋１］＾Ｂ［ｉ＋１］＾（Ｇ［ｉ］＋Ｐ［ｉ］・Ｃ［ｉ−１］）
Ｓｕｍ［１６］＝Ａ［１６］＾Ｂ［１６］＾Ｃ’［１５］
＝Ａ［１６］＾Ｂ［１６］＾（Ｇ’［１５］＋Ｐ’［１５］・Ｃ［１４］）
【００３０】
全３２桁の加算を行う場合は、Ｍ１５＝１なので、Ｇ’［１５］，Ｐ’［１５］は、
Ｇ’［１５］＝Ａ［１５］・Ｂ［１５］
Ｐ’［１５］＝（Ａ［１５］＋Ｂ［１５］）または（Ａ［１５］＾Ｂ［１５］）
となり、Ｍｋによる制御を行わないキャリー生成信号およびキャリー伝播信号と同じ論理となる。したがって、全３２桁の加算結果を適切に得ることができる。
【００３１】
一方、２つの１６桁加算を行う場合は、Ｍ１５＝０なので、Ｇ［ｉ］，Ｐ［ｉ］は３２ビット加算の場合と同様にＡ［ｉ］，Ｂ［ｉ］から生成されるが、第１５桁目に関しては、Ｐ’［１５］，Ｇ’［１５］はいずれも論理値“０”となり、上位１６桁へのキャリーであるＣ’［１５］は発生しない。すなわち、ｉ＞１５以上のＣ［ｉ］に対して、Ｃ’［１５］以下の演算の影響を与えない。
【００３２】
本実施形態に係る構成を、全ｎ桁の単一の加算しかできない加算器と比べると、第２の要素生成回路２０において、制御付きキャリー生成信号Ｇ’［ｋ］の生成のために２入力の論理積ゲートが３入力の論理積ゲートに置き換えられた分と、制御付きキャリー伝搬信号Ｐ’［ｋ］の生成のために論理積ゲートが付加された分しか、回路面積は増加していない。すなわち、省面積で、全ｎ桁の加算と、第ｋ桁を分割位置とした２つの加算との切り替えが可能である加算器を実現している。
【００３３】
また、ＣＭＯＳでは一般に、２入力の論理積ゲートと３入力の論理積ゲートとは同じトランジスタ段数で実現できる。このため、制御付きキャリー生成信号Ｇ’［ｋ］は、キャリー生成信号Ｇ［ｉ］と全く同じ論理段数で生成することができる。また制御付きキャリー伝搬信号Ｐ’［ｋ］に関しては、図２における第２の論理回路２２は、ＣＭＯＳでは一般に論理和ゲートと同じトランジスタ段数の１つの複合論理ゲートで実現できる。このため、第２の要素生成回路２０として図２の回路を用いた場合は、全ｎ桁の加算しかできない加算器と全く同じ論理段数で、全ｎ桁の加算と、第ｋ桁を分割位置とした２つの加算との切り替えができる。また、第２の要素生成回路２０として図３の回路を用いた場合でも、全ｎ桁の加算しかできない加算器と比べて、論理積ゲート１つ分、ＣＭＯＳの場合はトランジスタ１段分しか論理段数は変わらない。
【００３４】
（第２の実施形態）
第１の実施形態では、全桁の加算と、１個の分割位置による２つの加算とが、切り替え可能に構成された加算器について説明した。本発明の第２の実施形態では、分割可能な位置がｍ個（ｍは、０＜ｍ＜ｎを満たす任意の整数）設定されており、全桁の加算と、（１〜ｍ）個の分割位置による２〜（ｍ＋１）個の加算とが、切り替え可能に構成された加算器について説明する。
【００３５】
図４は本実施形態に係る加算器の構成を示す図である。図４では、図１と共通の構成要素には図１と同一の符号を付しており、ここではその詳細な説明を省略する。図４の加算器２００は、ｎ桁（ｎ＞２）の２進数データＡ，Ｂを入力とし、加算動作を行う。そして、データＡ，Ｂについて、全桁の加算を行う場合と、第ｋ（ｘ）桁（ｋ（ｘ）は、０≦ｋ（ｘ）＜ｎ−１を満たす任意の整数、ｘは、１≦ｘ≦ｍを満たす全ての整数）の全部または一部を分割位置とした２〜（ｍ＋１）個の加算を行う場合とが、制御信号Ｍ［ｋ（ｘ）］によって、切り替え可能に構成されている。制御信号Ｍ［ｋ（ｘ）］がアサートされているときは、第ｋ（ｘ）桁が分割位置として設定され、一方、制御信号Ｍ［ｋ（ｘ）］がアサートされていないときは、第ｋ（ｘ）桁は分割位置として設定されない。ここでは制御信号Ｍ［ｋ（ｘ）］は、アサートされているときは論理値“０”となり、アサートされていないときは論理値“１”となるものとする。
【００３６】
図４の加算器２００は、入力４ａ，４ｂ，４ｃ，４ｄにデータＡを受けるとともに、入力５ａ，５ｂ，５ｃ，５ｄにデータＢを受ける。さらに入力６ａ，６ｂ，６ｃに制御信号Ｍ［ｋ（ｘ）］を受ける。そして、出力３２ａ，３２ｂ，３２ｃ，３２ｄに加算結果を出力する。
【００３７】
図４において、図１の構成と相違するのは、データＡ，Ｂの第ｉ桁（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋ（ｘ）を満たす全ての整数）に対応して、第１の要素生成回路１０が（ｎ−ｍ）個設けられている点と、第ｋ（ｘ）桁に対応して、第２の要素生成回路２０がｍ個設けられている点である。
【００３８】
第２の要素生成回路２０は、Ａ［ｋ（ｘ）］，Ｂ［ｋ（ｘ）］、および制御信号Ｍ［ｋ（ｘ）］を入力とし、制御付きキャリー生成信号Ｇ’［ｋ（ｘ）］および制御付きキャリー伝搬信号Ｐ’［ｋ（ｘ）］を出力する。制御信号Ｍ［ｋ（ｘ）］がアサートされているとき、第２の要素生成回路２０は、制御付きキャリー生成信号Ｇ’［ｋ（ｘ）］としてキャリー生成が無いことを示す所定値（ここでは論理値“０”）を出力するとともに、制御付きキャリー伝搬信号Ｐ’［ｋ（ｘ）］としてキャリー伝搬が無いことを示す所定値（ここでは論理値“０”）を出力する。一方、制御信号Ｍ［ｋ（ｘ）］がアサートされていないとき、第２の要素生成回路２０は、制御付きキャリー生成信号Ｇ’［ｋ（ｘ）］および制御付きキャリー伝搬信号Ｐ’［ｋ（ｘ）］を、第１の要素生成回路１０におけるキャリー生成信号Ｇ［ｉ］およびキャリー伝搬信号Ｐ［ｉ］の生成と同様に、生成し出力する。
【００３９】
以上のように構成された加算器では、第ｋ（ｘ）桁を分割位置とする場合、制御信号Ｍ［ｋ（ｘ）］がアサートされることによって、第２の要素生成回路２０の動作により、第ｋ（ｘ）桁の制御付きキャリー生成信号Ｇ’［ｋ（ｘ）］および制御付きキャリー伝播信号Ｐ’［ｋ（ｘ）］が論理値“０”に制御される。これにより、第ｋ（ｘ）桁より上位側の加算結果に下位側の加算による桁上げが影響することを防ぐことができる。したがって、第ｋ（ｘ）桁を分割位置とした加算の加算結果を適切に得ることができる。
【００４０】
次に、より具体的な動作について説明する。以下では簡単のために、ｎ＝３２，ｍ＝３，ｋ（１）＝７，ｋ（２）＝１５，ｋ（３）＝２３とする。すなわち、分割可能な位置を３箇所、８桁ごとに設定する。そして、全３２桁の１つの加算と、８桁または１６桁の加算を３２桁になるように組み合わせて行う加算とが、実行可能となる。
【００４１】
この場合、加算結果Ｓｕｍ［ｉ＋１］およびＳｕｍ［ｋ（ｘ）］は、以下の論理式より求められる。
Ｇ［ｉ］＝Ａ［ｉ］・Ｂ［ｉ］
Ｇ’［ｋ（１）］＝Ｇ’［７］
＝Ａ［７］・Ｂ［７］・Ｍ［７］
Ｇ’［ｋ（２）］＝Ｇ’［１５］
＝Ａ［１５］・Ｂ［１５］・Ｍ［１５］
Ｇ’［ｋ（３）］＝Ｇ’［２３］
＝Ａ［２３］・Ｂ［２３］・Ｍ［２３］
Ｐ［ｉ］＝Ａ［ｉ］＋Ｂ［ｉ］またはＡ［ｉ］＾Ｂ［ｉ］
Ｐ’［ｋ（１）］＝Ｐ’［７］
＝（Ａ［７］＋Ｂ［７］）・Ｍ［７］
または（Ａ［７］＾Ｂ［７］）・Ｍ［７］
Ｐ’［ｋ（２）］＝Ｐ’［１５］
＝（Ａ［１５］＋Ｂ［１５］）・Ｍ［１５］
または（Ａ［１５］＾Ｂ［１５］）・Ｍ［１５］
Ｐ’［ｋ（３）］＝Ｐ’［２３］
＝（Ａ［２３］＋Ｂ［２３］）・Ｍ［２３］
または（Ａ［２３］＾Ｂ［２３］）・Ｍ［２３］
Ｃ［ｉ］＝Ｇ［ｉ］＋Ｐ［ｉ］・Ｃ［ｉ−１］
Ｃ’［ｋ（１）］＝Ｃ’［７］
＝Ｇ’［７］＋Ｐ’［７］・Ｃ［６］
Ｃ’［ｋ（２）］＝Ｃ’［１５］
＝Ｇ’［１５］＋Ｐ’［１５］・Ｃ［１４］
Ｃ’［ｋ（３）］＝Ｃ’［２３］
＝Ｇ’［２３］＋Ｐ’［２３］・Ｃ［２２］
Ｓｕｍ［ｉ＋１］＝Ａ［ｉ＋１］＾Ｂ［ｉ＋１］＾Ｃ［ｉ］
＝Ａ［ｉ＋１］＾Ｂ［ｉ＋１］＾（Ｇ［ｉ］＋Ｐ［ｉ］・Ｃ［ｉ−１］）
Ｓｕｍ［ｋ（１）＋１］＝Ｓｕｍ［８］＝Ａ［８］＾Ｂ［８］＾Ｃ’［７］
＝Ａ［８］＾Ｂ［８］＾（Ｇ’［７］＋Ｐ’［７］・Ｃ［６］）
Ｓｕｍ［ｋ（２）＋１］＝Ｓｕｍ［１６］＝Ａ［１６］＾Ｂ［１６］＾Ｃ’［１５］
＝Ａ［１６］＾Ｂ［１６］＾（Ｇ’［１５］＋Ｐ’［１５］・Ｃ［１４］）
Ｓｕｍ［ｋ（３）＋１］＝Ｓｕｍ［２４］＝Ａ［２４］＾Ｂ［２４］＾Ｃ’［２３］
＝Ａ［２４］＾Ｂ［２４］＾（Ｇ’［２３］＋Ｐ’［２３］・Ｃ［２２］）
【００４２】
全３２桁の加算を行う場合は、
Ｍ［７］＝Ｍ［１５］＝Ｍ［２３］＝１
とすることによって、Ｇ’［ｋ（ｘ）］、Ｐ’［ｋ（ｘ）］は、
Ｇ’［７］＝Ａ［７］・Ｂ［７］
Ｐ’［７］＝（Ａ［７］＋Ｂ［７］）または（Ａ［７］＾Ｂ［７］）
Ｇ’［１５］＝Ａ［１５］・Ｂ［１５］
Ｐ’［１５］＝（Ａ［１５］＋Ｂ［１５］）または（Ａ［１５］＾Ｂ［１５］）
Ｇ’［２３］＝Ａ［２３］・Ｂ［２３］
Ｐ’［２３］＝（Ａ［２３］＋Ｂ［２３］）または（Ａ［２３］＾Ｂ［２３］）
となるため、Ｍ［ｋ（ｘ）］による制御を行わないキャリー生成信号およびキャリー伝播信号と同じ論理となる。したがって、全３２桁の加算結果を適切に得ることができる。
【００４３】
また、２つの１６桁加算を行う場合は、
Ｍ［７］＝Ｍ［２３］＝１かつＭ［１５］＝０
とする。これによって、Ｐ’［１５］，Ｇ’［１５］は論理値“０”になるため、１６桁目へのキャリーＣ’［１５］は発生しないが、Ｇ’［７］，Ｐ’［７］およびＧ’［２３］，Ｐ’［２３］は強制的に論理値“０”に制御はされないので、キャリーＣ’［７］，Ｃ’［２３］はそれぞれ第８，２４桁目に伝播する。すなわち、第１５桁目と第１６桁目とで計算結果が分割される。したがって、上位下位２つの１６桁加算の結果を適切に得ることができる。
【００４４】
また、４つの８桁加算を行う場合は、
Ｍ［７］＝Ｍ［１５］＝Ｍ［２３］＝０
とする。これによって、Ｇ’［７］，Ｐ’［７］，Ｐ’［１５］，Ｇ’［１５］およびＧ’［２３］，Ｐ’［２３］は論理値“０”になるため、キャリーＣ’［７］，Ｃ’［１５］およびＣ’［２３］は発生しない。すなわち、第８，１６，２４桁目へのキャリーは必ず抑制され、そこで計算結果が分割される。したがって、４つの８桁加算の結果を適切に得ることができる。
【００４５】
また、２つの８桁加算と１つの１６桁加算を行う場合は、例えば、
Ｍ［７］＝Ｍ［１５］＝０  かつ  Ｍ［２３］＝１
とする。これによって、Ｇ’［７］，Ｐ’［７］およびＰ’［１５］，Ｇ’［１５］は論理値“０”になるため、キャリーＣ’［７］，Ｃ’［１５］は発生しないが、Ｇ’［２３］，Ｐ’［２３］は強制的に論理値“０”に制御はされないので、キャリーＣ’［２３］は第２４桁目へ伝播する。すなわち、第８，１６桁目へのキャリーは必ず抑制され、計算結果が分割されるが、第２４桁目へのキャリーは伝播し、計算結果は分割されない。したがって、２つの８桁加算と１つの１６桁加算の結果を適切に得ることができる。
【００４６】
本実施形態に係る構成を、全ｎ桁の単一の加算しかできない加算器と比べると、第２の要素生成回路２０において、制御付きキャリー生成信号Ｇ’［ｋ（ｘ）］の生成のために２入力の論理積ゲートが３入力の論理積ゲートに置き換えられた分と、制御付きキャリー伝搬信号Ｐ’［ｋ（ｘ）］の生成のために論理積ゲートが付加された分しか、回路面積は増加していない。すなわち、省面積で、全ｎ桁の加算と、２〜（ｍ＋１）の任意の個数の加算との切り替えを実現している。
【００４７】
また、ＣＭＯＳでは一般に、２入力の論理積ゲートと３入力の論理積ゲートとは同じトランジスタ段数で実現できる。このため、制御付きキャリー生成信号Ｇ’［ｋ（ｘ）］は、キャリー生成信号Ｇ［ｉ］と全く同じ論理段数で生成することができる。また制御付きキャリー伝搬信号Ｐ’［ｋ（ｘ）］に関しては、図２における第２の論理回路２２は、ＣＭＯＳでは一般に論理和ゲートと同じトランジスタ段数の１つの複合論理ゲートで実現できる。このため、第２の要素生成回路２０として図２の回路を用いた場合は、全ｎ桁の加算しかできない加算器と全く同じ論理段数で、全ｎ桁の加算と、２〜（ｍ＋１）の任意の個数の加算との切り替えができる。また、第２の要素生成回路２０として図３の回路を用いた場合でも、全ｎ桁の加算しかできない加算器と比べて、論理積ゲート１つ、ＣＭＯＳの場合はトランジスタ１段分しか論理段数は変わらない。
【００４８】
（第３の実施形態）
本発明の第３の実施形態では、キャリー出力付き加算が実行可能な加算器において、本発明を適用した例について説明する。
【００４９】
図５は本発明の第３の実施形態に係る加算器の構成を示す図である。図５では、図１と共通の構成要素には図１と同一の符号を付しており、ここではその詳細な説明を省略する。図５の加算器１０１は、ｎ桁（ｎ＞２）の２進数データＡ，Ｂを入力とし、キャリー出力付き加算動作を行う。そして、データＡ，Ｂについて、全桁の加算を行う場合と、第ｋ桁（ｋは、０≦ｋ＜ｎ−１を満たす任意の整数）を分割位置とした２つの加算を行う場合とが、制御信号Ｍｋによって、切り替え可能に構成されている。制御信号Ｍｋがアサートされているときは、第ｋ桁を分割位置とした２つの加算を行い、一方、制御信号Ｍｋがアサートされていないときは、全桁の加算を行う。ここでは制御信号Ｍｋは、アサートされているときは論理値“０”となり、アサートされていないときは論理値“１”となるものとする。
【００５０】
図５に示すように、加算器１０１は、（ｎ−１）個の第１の要素生成回路１０と、１個の第２の要素生成回路２０とを備えている。そして、第１の要素生成回路１０にそれぞれ対応して、第１のキャリー生成ブロック５０が設けられている。第１のキャリー生成ブロック５０は、第１の要素生成回路１０から出力されたキャリー生成信号Ｇ［ｉ］およびキャリー伝搬信号Ｐ［ｉ］から、キャリーＣ［ｉ］を生成する。また、第２の要素生成回路２０に対応して、第２のキャリー生成ブロック５１が設けられている。第２のキャリー生成ブロック５１は、第２の要素生成回路２０から出力された制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］から、制御付きキャリーＣ’［ｋ］を生成する。なお、第２のキャリー生成ブロック５１におけるキャリー生成の論理は、第１のキャリー生成ブロック５０と同様である。また、図５では、和信号生成に関するブロックについて図示を省略している。
【００５１】
加算器１０１はさらに、第３の要素生成回路３０と、第３のキャリー生成ブロック６０とを備えている。第３の要素生成回路３０は、データＡ，Ｂの第ｋ桁であるＡ［ｋ］，Ｂ［ｋ］を入力とし、キャリー生成信号Ｇ［ｋ］およびキャリー伝搬信号Ｐ［ｋ］を出力する。第３の要素生成回路３０におけるＧ［ｋ］，Ｐ［ｋ］の生成は、第１の要素生成回路１０と同様に行われる。第３のキャリー生成ブロック６０は、第３の要素生成回路３０から出力されたＧ［ｋ］，Ｐ［ｋ］から、キャリーＣ［ｋ］を生成する。ここでは、第３のキャリー生成ブロック６０は、第１のキャリー生成ブロック５０と同一構成からなるものとする。すなわち、第３のキャリー生成ブロック６０におけるキャリー生成の論理は、第１および第２のキャリー生成ブロック５０，５１と同様である。
【００５２】
第３のキャリー生成ブロック６０によって生成されたキャリーＣ［ｋ］は、出力３５に出力される。また、最上位（第（ｎ−１）桁）のキャリー生成ブロック５０によって生成されたキャリーＣ［ｎ−１］は、出力３４に出力される。
【００５３】
以上のように構成された加算器では、第ｋ桁を分割位置とした２つの加算を行う場合、制御信号Ｍｋがアサートされることによって、第２の要素生成回路２０の動作により、第ｋ桁の制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝播信号Ｐ’［ｋ］が論理値“０”に制御される。これにより、上位側の加算結果に下位側の加算による桁上げが影響することを防ぐことができる。したがって、第ｋ桁を分割位置とした２つの加算結果を、出力３１ａ，３１ｂからそれぞれ適切に得ることができる。このとき、下位側の加算によるキャリーＣ［ｋ］は出力３５から得られ、上位側の加算によるキャリーＣ［ｎ−１］は出力３４から得られる。
【００５４】
一方、全桁の加算を行う場合は、制御信号Ｍｋがアサートされないことによって、第ｋ桁の制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝播信号Ｐ’［ｋ］は、他の桁のキャリー生成信号およびキャリー伝搬信号と同様に生成される。したがって、全桁の加算結果を、出力３１ａ，３１ｂから適切に得ることができる。このとき、加算によるキャリーＣ［ｎ−１］は出力３４から得られる。
【００５５】
図６は本実施形態に係る加算器の他の構成を示す図である。図６を図５の構成と比較すると、第３のキャリー生成ブロック６０に代えて、第３の要素生成回路３０から出力されたＧ［ｋ］，Ｐ［ｋ］に加えて、キャリーＣ［ｋ−１］を用いて、キャリーＣ［ｋ］を生成する第３のキャリー生成ブロック６１が設けられている点が異なる。その他の構成は、図５と同様である。図６の加算器１０２でも、図５の加算器１０１と同様の作用効果が得られる。
【００５６】
図７は図６における第３のキャリー生成ブロック６１の構成例を示す図である。図７の構成では、Ｐ［ｋ］，Ｃ［ｋ−１］の論理積と、Ｇ［ｋ］との論理和が、キャリーＣ［ｋ］として出力されている。
【００５７】
なお、図５および図６の構成において、第３の要素生成回路３０に代えて、第２の要素回路２０と同一構成の要素生成回路を設けて、これに、Ａ［ｋ］，Ｂ［ｋ］に加えて、制御信号Ｍｋの論理反転信号を与えるようにしてもよい。これにより、制御信号Ｍｋがアサートされていないときは、この要素生成回路から出力されるＧ［ｋ］，Ｐ［ｋ］は、論理値“０”に制御されることになり、キャリーＣ［ｋ］も論理値“０”になる。すなわち、全ｎ桁の加算を行う場合に、キャリーＣ［ｋ］を“０”にすることが可能になる。
【００５８】
次に具体的な動作について説明する。以下では簡単のために、ｎ＝３２、ｋ＝１５の場合、すなわち全３２桁のキャリー出力付き加算と、上位１６桁と下位１６桁の２つのキャリー出力付き加算との切り替えが可能である場合を例にとって説明する。
【００５９】
この場合、加算結果Ｓｕｍは以下の論理式より求められる。
Ｇ［ｉ］＝Ａ［ｉ］・Ｂ［ｉ］
Ｇ’［１５］＝Ａ［１５］・Ｂ［１５］・Ｍ１５
Ｇ［１５］＝Ａ［１５］・Ｂ［１５］
Ｐ［ｉ］＝Ａ［ｉ］＋Ｂ［ｉ］  または  Ａ［ｉ］＾Ｂ［ｉ］
Ｐ’［１５］＝（Ａ［１５］＋Ｂ［１５］）・Ｍ１５
または  （Ａ［１５］＾Ｂ［１５］）・Ｍ１５
Ｐ［１５］＝（Ａ［１５］＋Ｂ［１５］）  または  （Ａ［１５］＾Ｂ［１５］）
Ｃ［ｉ］＝Ｇ［ｉ］＋Ｐ［ｉ］・Ｃ［ｉ−１］
Ｃ’［１５］＝Ｇ’［１５］＋Ｐ’［１５］・Ｃ［１４］
Ｓｕｍ［ｉ＋１］＝Ａ［ｉ＋１］＾Ｂ［ｉ＋１］＾Ｃ［ｉ］
＝Ａ［ｉ＋１］＾Ｂ［ｉ＋１］＾（Ｇ［ｉ］＋Ｐ［ｉ］・Ｃ［ｉ−１］）
Ｓｕｍ［１６］＝Ａ［１６］＾Ｂ［１６］＾Ｃ’［１５］
＝Ａ［１６］＾Ｂ［１６］＾（Ｇ’［１５］＋Ｐ’［１５］・Ｃ［１４］）
【００６０】
本実施形態では、各桁のキャリーＣ［ｉ］およびＣ’［ｋ］は任意の回路構成により求めることができる。例えば、キャリーＣ［ｉ］がＢＣＬＡ（Binary Carry Look-Ahead Adder）から求められる場合は、第２のキャリー生成ブロック５１は、Ｃ’［１５］を求めるために、Ｇ’［１５］およびＰ’［１５］，Ｇ［１４］およびＰ［１４］，Ｇ［１３：１２］およびＰ［１３：１２］、Ｇ［１１：８］およびＰ［１１：８］、Ｇ［７：０］およびＰ［７：０］を入力とし、次の計算を行う。
Ｃ’［１５］＝Ｇ’［１５］＋Ｐ’［１５］・Ｇ［１４］
＋Ｐ’［１５］・Ｐ［１４］・Ｇ［１３：１２］
＋Ｐ’［１５］・Ｐ［１４］・Ｐ［１３：１２］・Ｇ［１１：８］
＋Ｐ’［１５］・Ｐ［１４］・Ｐ［１３：１２］・Ｐ’［１１：８］・Ｇ［７：０］
ここで、Ｇ［ｌ：ｈ］，Ｐ［ｌ：ｈ］は第ｈ桁目から第ｌ桁目までを１つのブロックとしたときのブロック内で発生する桁上げ生成信号、桁上げ伝播信号であり、次式で計算される。
Ｇ［ｌ：ｈ］＝Ｇ［ｌ］＋Ｐ［ｌ］・Ｇ［ｌ−１］
＋Ｐ［ｌ］・Ｐ［ｌ−１］・Ｇ［ｌ−２］
＋…＋Ｐ［ｌ］・Ｐ［ｌ−１］・…・Ｐ［ｈ＋２］・Ｐ［ｈ＋１］・Ｇ［ｈ］
【００６１】
図５における第３のキャリー生成ブロック６０は、キャリーＣ［１５］を求めるために、Ｇ［１５］およびＰ［１５］，Ｇ［１４］およびＰ［１４］，Ｇ［１３：１２］およびＰ［１３：１２］，Ｇ［１１：８］およびＰ［１１：８］、Ｇ［７：０］およびＰ［７：０］を入力とし、次の計算を行う。
Ｃ［１５］＝Ｇ［１５］＋Ｐ［１５］・Ｇ［１４］
＋Ｐ［１５］・Ｐ［１４］・Ｇ［１３：１２］
＋Ｐ［１５］・Ｐ［１４］・Ｐ［１３：１２］・Ｇ［１１：８］
＋Ｐ［１５］・Ｐ［１４］・Ｐ［１３：１２］・Ｐ［１１：８］・Ｇ［７：０］
したがって、Ｍ１５＝０の場合は、Ｃ’［１５］は論理値“０”に制御されるが、Ｃ［１５］は制御されない。このため、第１５桁目で加算結果を分割することができるとともに、第０桁から第１５桁までの加算により発生するキャリーとしてキャリーＣ［１５］を出力することができる。
【００６２】
また、キャリーＣ［３１］は、以下の式により求められる。Ｍ１５＝０の場合、Ｃ’［１５］は論理値“０”に制御されているため、第１６桁から第３１桁目までの加算により発生するキャリーとして、キャリーＣ［３１］を出力することができる。
Ｃ［３１］＝Ｇ［３１］＋Ｐ［３１］・Ｃ［３０］
＝Ｇ［３１］＋Ｐ［３１］・（Ｇ［３０］＋Ｐ［３０］・Ｃ［２９］）
＝Ｇ［３１］＋Ｐ［３１］・Ｇ［３０］＋Ｐ［３１］・Ｐ［３０］・（Ｇ［２９］＋Ｐ［２９］・Ｃ［２８］）
＝Ｇ［３１］＋Ｐ［３１］・Ｇ［３０］＋Ｐ［３１］・Ｐ［３０］・Ｇ［２９］＋Ｐ［３１］・Ｐ［３０］・Ｐ［２９］・Ｇ［２８］＋…＋Ｐ［３１］・Ｐ［３０］・…・Ｐ［１７］・（Ｇ［１６］＋Ｐ［１６］・Ｃ’［１５］）
【００６３】
図６における第３のキャリー生成ブロック６１は、キャリーＣ［１５］を求める場合、Ｇ［１５］およびＰ［１５］、Ｃ［１４］を入力とし、
Ｃ［１５］＝Ｇ［１５］＋Ｐ［１５］・Ｃ［１４］
の計算をする。これにより、第０桁から第１５桁までの加算により発生するキャリーとしてキャリーＣ［１５］を得ることができる。
【００６４】
本実施形態に係る構成では、第１の実施形態と比べると、第３の要素生成回路３０と第３のキャリー生成ブロック６０，６１が追加された分しか回路面積は増加しない。第３の要素生成回路３０による回路増加は、１個の２入力論理積ゲートと１個の２入力の論理和または排他的論理和ゲートの分だけである。第３のキャリー生成ブロック６０は、第１のキャリー生成ブロック５０のゲート数分の回路面積で実現できる。第３のキャリー生成ブロック６１は、１個の２入力論理積ゲートと１個の２入力論理和ゲート分の回路面積で実現できる。すなわち、省面積で、全ｎ桁のキャリー出力付き加算と、第ｋ桁を分割位置とする２つのキャリー出力付き加算との切り替えを実現している。
【００６５】
また、本実施形態に係る構成では、第３のキャリー生成ブロック６０は、第１のキャリー生成ブロック５０と同一構成のため、第１の実施形態と同じ論理段数で、キャリーＣ［ｋ］を求めることができる。一方、第３のキャリー生成ブロック６１は、第２のキャリー生成ブロック６０と比較すると、キャリーＣ［ｋ］を求めるために、１個の２入力論理積ゲートと１個の２入力論理和ゲート分の論理段数を多く必要とする。ところが、第ｎ−１桁目の和Ｓｕｍ［ｎ−１］を求める経路の方がより論理段数を要するため、第１の実施の形態からの速度の劣化はない。すなわち、高速動作を保ったまま、全ｎ桁のキャリー出力付き加算と、第ｋ桁を分割位置とする２つのキャリー出力付き加算との切り替えを実現している。
【００６６】
図８および図９は本実施形態に係る特徴を、第２の実施形態に係る加算器に適用した場合の構成例を示す図である。すなわち、図８および図９の構成では、キャリー出力付き加算が実行可能な加算器において、分割可能な位置をｍ個設定している。図８および図９において、図４〜図６と共通の構成要素には図４〜図６と同一の符号を付しており、ここではその詳細な説明を省略する。
【００６７】
図８の加算器２０１および図９の加算器２０２は、ｎ桁（ｎ＞２）の２進数データＡ，Ｂを入力とし、キャリー出力付き加算動作を行う。そして、データＡ，Ｂについて、全桁のキャリー出力付き加算を行う場合と、第ｋ（ｘ）桁（ｋ（ｘ）は、０≦ｋ（ｘ）＜ｎ−１を満たす任意の整数、ｘは、１≦ｘ≦ｍを満たす全ての整数）の全部または一部を分割位置とした２〜（ｍ＋１）個のキャリー出力付き加算を行う場合とが、制御信号Ｍ［ｋ（ｘ）］によって、切り替え可能に構成されている。
【００６８】
図８に示すように、加算器２０１は、（ｎ−ｍ）個の第１の要素生成回路１０と、ｍ個の第２の要素生成回路２０とを備えている。そして、第１の要素生成回路１０にそれぞれ対応して、第１のキャリー生成ブロック５０が設けられている。第１のキャリー生成ブロック５０は、第１の要素生成回路１０から出力されたキャリー生成信号Ｇ［ｉ］およびキャリー伝搬信号Ｐ［ｉ］から、キャリーＣ［ｉ］を生成する。また、第２の要素生成回路２０に対応して、第２のキャリー生成ブロック５１が設けられている。第２のキャリー生成ブロック５１は、第２の要素生成回路２０から出力された制御付きキャリー生成信号Ｇ’［ｋ（ｘ）］および制御付きキャリー伝搬信号Ｐ’［ｋ（ｘ）］から、制御付きキャリーＣ’［ｋ（ｘ）］を生成する。図８では、和信号生成に関するブロックについて図示を省略している。
【００６９】
加算器２０１はさらに、ｍ個の第３の要素生成回路３０と、ｍ個の第３のキャリー生成ブロック６０とを備えている。第３の要素生成回路３０は、データＡ，Ｂの第ｋ（ｘ）桁であるＡ［ｋ（ｘ）］，Ｂ［ｋ（ｘ）］を入力とし、キャリー生成信号Ｇ［ｋ（ｘ）］およびキャリー伝搬信号Ｐ［ｋ（ｘ）］を出力する。第３のキャリー生成ブロック６０は、第３の要素生成回路３０から出力されたＧ［ｋ（ｘ）］，Ｐ［ｋ（ｘ）］から、キャリーＣ［ｋ（ｘ）］を生成する。
【００７０】
第３のキャリー生成ブロック６０によって生成されたキャリーＣ［ｋ（ｘ）］は、出力３５ａ，３５ｂ，３５ｃに出力される。また、最上位（第（ｎ−１）桁）のキャリー生成ブロック５０によって生成されたキャリーＣ［ｎ−１］は、出力３４に出力される。
【００７１】
図９の加算器２０２では、図８の構成と比較すると、第３のキャリー生成ブロック６０に代えて、第３の要素生成回路３０から出力されたＧ［ｋ］，Ｐ［ｋ］に加えて、キャリーＣ［ｋ（ｘ）−１］を用いて、キャリーＣ［ｋ（ｘ）］を生成する第３のキャリー生成ブロック６１が設けられている点が異なる。その他の構成は、図８と同様である。図９の構成では、図８の構成と比べると、キャリーＣ［ｋ（ｘ）］の出力に要する論理段数は増えるが、回路面積は小さくなる。
【００７２】
次に具体的な動作について説明する。以下では簡単のために、ｎ＝３２，ｍ＝３，ｋ（１）＝７，ｋ（２）＝１５，ｋ（３）＝２３とする。第１〜第３のキャリー生成ブロック５０，５１，６０が、ＢＣＬＡの各桁分の計算を行うものとする。
【００７３】
このとき、３個の第３のキャリー生成ブロック６０では以下の計算がなされ、キャリーＣ［７］，Ｃ［１５］，Ｃ［２３］が生成される。
Ｃ［７］＝Ｇ［７］＋Ｐ［７］・Ｇ［６］
＋Ｐ［７］・Ｐ［６］・Ｇ［５：４］
＋Ｐ［７］・Ｐ［６］・Ｐ［５：４］・Ｇ［３：０］
Ｃ［１５］＝Ｇ［１５］＋Ｐ［１５］・Ｇ［１４］
＋Ｐ［１５］・Ｐ［１４］・Ｇ［１３：１２］
＋Ｐ［１５］・Ｐ［１４］・Ｐ［１３：１２］・Ｇ［１１：８］
＋Ｐ［１５］・Ｐ［１４］・Ｐ［１３：１２］・Ｐ［１１：８］・Ｇ’［７：０］
Ｃ［２３］＝Ｇ［２３］＋Ｐ［２３］・Ｇ［２２］
＋Ｐ［２３］・Ｐ［２２］・Ｇ［２１：２０］
＋Ｐ［２３］・Ｐ［２２］・Ｐ［２１：２０］・Ｇ［１９：１６］
＋Ｐ［２３］・Ｐ［２２］・Ｐ［２１：２０］・Ｐ［１９：１６］・Ｇ’［１５：８］
＋Ｐ［２３］・Ｐ［２２］・Ｐ［２１：２０］・Ｐ［１９：１６］・Ｐ’［１５：８］・Ｇ’［７：０］
ここで、Ｇ’［７：０］およびＰ’［７：０］は、第７桁目の第１のキャリー生成ブロック５０から出力される、第０〜７桁を１つのブロックとしてみた場合の桁上げ生成情報および桁上げ伝播情報を表す。Ｇ’［１５：８］およびＰ’［１５：８］も同様である。Ｇ’［７：０］はＣ’［７］に一致し、Ｇ’［１５：８］およびＰ’［１５：８］は制御信号Ｍ１５が０の場合はともに論理値“０”に制御される。したがって、第７、１５、２３桁目を分割可能な位置とし、２つの１６桁の加算を行う場合、または４つの８桁の加算を行う場合、または２つの８桁の加算と１つの１６桁の加算を行う場合においても、各加算でのキャリー出力を適切に求めることができる。
【００７４】
以上のような構成では、第２の実施形態に示す加算器と同じ論理段数で、１つのｎ桁のキャリー出力付き加算と、２〜（ｍ＋１）個のキャリー出力付き加算との切り替えを行うことができる。
【００７５】
（変形例）  
本実施形態に係る加算器は、データＢを論理反転することによって、データＡ，Ｂの大小比較を行う比較器に変形することができる。
【００７６】
図１０は本変形例に係る比較器の構成を示す図であり、図５の加算器を変形したものである。図１０では、図５と共通の構成要素には図５と同一の符号を付しており、ここではその詳細な説明を省略する。図１０（ａ）の比較器３００は、２進数データＡ，Ｂについて、全桁の比較演算を行う場合と、第ｋ桁（ｋは、０≦ｋ＜ｎ−１を満たす任意の整数）を分割位置とした２つの比較演算を行う場合とが、制御信号Ｍｋによって、切り替え可能に構成されている。制御信号Ｍｋがアサートされているときは、第ｋ桁を分割位置とした２つの比較演算を行い、一方、制御信号Ｍｋがアサートされていないときは、全桁の比較演算を行う。ここでは制御信号Ｍｋは、アサートされているときは論理値“０”となり、アサートされていないときは論理値“１”となるものとする。
【００７７】
第１の要素生成回路１０は、図１０（ｂ）に示すように、データＡの第ｉ桁であるＡ［ｉ］とデータＢの第ｉ桁の論理反転〜Ｂ（ｉ）を入力とし、キャリー生成信号Ｇ［ｉ］およびキャリー伝搬信号Ｐ［ｉ］を出力する。第２の要素生成回路２０は、図１０（ｃ）に示すように、データＡの第ｋ桁であるＡ［ｋ］とデータＢの第ｋ桁の論理反転〜Ｂ（ｋ）、および制御信号Ｍｋを入力とし、制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］を出力する。
【００７８】
第１のキャリー生成ブロック５０は、第１の要素生成回路１０から出力されたキャリー生成信号Ｇ［ｉ］およびキャリー伝搬信号Ｐ［ｉ］から、キャリーＣ［ｉ］を生成する。第２のキャリー生成ブロック５１は、第２の要素生成回路２０から出力された制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］から、制御付きキャリーＣ’［ｋ］を生成する。
【００７９】
第３の要素生成回路３０は、データＡの第ｋ桁であるＡ［ｋ］とデータＢの第ｋ桁の論理反転〜Ｂ［ｋ］を入力とし、キャリー生成信号Ｇ［ｋ］およびキャリー伝搬信号Ｐ［ｋ］を出力する。第３のキャリー生成ブロック６０は、第３の要素生成回路３０から出力されたＧ［ｋ］，Ｐ［ｋ］から、キャリーＣ［ｋ］を生成する。
【００８０】
制御信号Ｍｋがアサートされたとき、第２の要素生成回路２０の動作により、第ｋ桁の制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝播信号Ｐ’［ｋ］が論理値“０”に制御される。このため、出力３４から得られるキャリーＣ［ｎ−１］は、第ｋ桁より上位の桁での比較演算による比較結果を表す。また、第ｋ桁以下の比較演算の比較結果としてキャリーＣ［ｋ］が出力３５から得られる。
【００８１】
一方、制御信号Ｍｋがアサートされないとき、第ｋ桁の制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝播信号Ｐ’［ｋ］は、他の桁のキャリー生成信号およびキャリー伝搬信号と同様に生成される。このため、出力３４から得られるキャリーＣ［ｎ−１］は、全桁での比較演算による比較結果を表す。
【００８２】
図１０の比較器３００の構成では、データＡ，Ｂが同符号であることが保証されている場合、キャリーＣ［ｋ］，Ｃ［ｎ−１］は、Ａ＞Ｂのとき論理値“１”となる信号となる。データＡ，Ｂが同符号であることが保証されていない場合は、例えば、Ｃ［ｋ］とＡ［ｋ］と〜Ｂ［ｋ］との排他的論理和、およびＣ［ｎ−１］とＡ［ｎ−１］と〜Ｂ［ｎ−１］との排他的論理和が、Ａ＞Ｂのとき論理値“０”となる信号となる。
【００８３】
図１０の構成では、キャリーＣ［ｋ］，Ｃ［ｎ−１］を出力するために必要な論理段数は、図５の構成と比べると、データＢの論理反転を求めるための論理段数しか増加していない。データＢの論理反転には、インバータ１段分しか要さない。また、データＢの論理反転を求める操作は、データの大小比較を行う場合には一般的な操作であるため、このために、全ｎ桁の比較のみを行う比較器と比較して論理段数が増加することはない。したがって、全ｎ桁の比較と、第ｋ桁を分割位置とする２つの比較との切り替えが可能な比較器を、高速性を保ったまま、実現できる。
【００８４】
図１１は本変形例に係る比較器の構成を示す図であり、図８の加算器を変形したものである。図１１では、図８と共通の構成要素には図８と同一の符号を付しており、ここではその詳細な説明を省略する。図１１の比較器４００は、２進数データＡ，Ｂについて、全桁の比較演算を行う場合と、第ｋ（ｘ）桁（ｋ（ｘ）は、０≦ｋ（ｘ）＜ｎ−１を満たす任意の整数、ｘは、１≦ｘ≦ｍを満たす全ての整数）の全部または一部を分割位置とした２〜（ｍ＋１）個の比較演算を行う場合とが、制御信号Ｍ［ｋ（ｘ）］によって、切り替え可能に構成されている。
【００８５】
なお、図１０および図１１において、第３のキャリー生成回路６０に代えて、図６および図７に示した第３のキャリー生成回路６１を設けてもかまわない。これにより、キャリーの出力に要する論理段数は増えるが、回路面積は小さくなる。
【００８６】
（第４の実施形態）
本発明の第４の実施形態では、キャリー入力付き加算が実行可能な加算器において、本発明を適用した例について説明する。
【００８７】
図１２は本発明の第４の実施形態に係る加算器の構成を示す図である。図１２では、図１と共通の構成要素には図１と同一の符号を付しており、ここではその詳細な説明を省略する。図１２の加算器１０３は、ｎ桁（ｎ＞２）の２進数データＡ，Ｂを入力とし、キャリー入力付き加算動作を行う。そして、データＡ，Ｂについて、全桁の加算を行う場合と、第ｋ桁（ｋは、０≦ｋ＜ｎ−１を満たす任意の整数）を分割位置とした２つの加算を行う場合とが、制御信号Ｍｋによって、切り替え可能に構成されている。制御信号Ｍｋがアサートされているときは、第ｋ桁を分割位置とした２つの加算を行い、一方、制御信号Ｍｋがアサートされていないときは、全桁の加算を行う。ここでは制御信号Ｍｋは、アサートされているときは論理値“０”となり、アサートされていないときは論理値“１”となるものとする。
【００８８】
図１２において、図１の構成と異なる点は、入力７ａに第ｋ桁を分割位置とした場合のキャリー入力Ｃｉｎ［ｋ］を受けるとともに、入力７ｂに最下位ビットへのキャリー入力Ｃｉｎを受ける点である。また、第ｋ桁に対応する第２の要素生成回路２０に代えて、データＡ，Ｂの第ｋ桁であるＡ［ｋ］，Ｂ［ｋ］、並びに、制御信号Ｍｋおよびキャリー入力Ｃｉｎ［ｋ］を入力とし，制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝搬信号Ｐ’［ｋ］を出力する第２の要素生成回路４０が設けられている。
【００８９】
第２の要素生成回路４０は、制御付きキャリー伝搬信号Ｐ’［ｋ］を次のようにして生成する。すなわち、制御信号Ｍｋがアサートされているときは、Ｐ’［ｋ］として論理値“０”を出力する一方、制御信号Ｍｋがアサートされていないときは、Ｐ’［ｋ］を第１の要素生成回路１０におけるＰ［ｉ］の生成と同様にして生成し、出力する。
【００９０】
また第２の要素生成回路４０は、制御付きキャリー伝搬信号Ｇ’［ｋ］を次のようにして生成する。すなわち、キャリー入力Ｃｉｎ［ｋ］がアサートされているとき（論理値“１”のとき）、Ｇ’［ｋ］としてＣｉｎ［ｋ］（“１”）を出力する。一方、キャリー入力Ｃｉｎ［ｋ］がアサートされていない場合（論理値“０”）において、制御信号Ｍｋがアサートされているときは、Ｇ’［ｋ］として論理値“０”を出力する一方、制御信号Ｍｋがアサートされていないときは、Ｇ’［ｋ］を第１の要素生成回路１０におけるＧ［ｉ］の生成と同様にして生成し、出力する。
【００９１】
図１３は図１２における第２の要素生成回路４０の構成例を示す図である。図１３の構成では、Ａ［ｋ］，Ｂ［ｋ］およびＭｋの論理積とＣｉｎ［ｋ］との論理和が、Ｇ’［ｋ］として出力されるとともに、Ａ［ｋ］およびＢ［ｋ］の論理和とＭｋとの論理積が、Ｐ’［ｋ］として出力されている。
【００９２】
図１２のように構成された加算器１０３では、分割位置である第ｋ桁より上位側の加算において、キャリー入力Ｃｉｎ［ｋ］が論理値“１”の場合は、制御付きキャリー生成信号Ｇ’［ｋ］が論理値“１”に制御される。このため、データＡ，Ｂの第（ｎ−１）〜（ｋ＋１）桁とキャリー入力“１”との加算結果と同じ値を得ることができる。また、分割位置である第ｋ桁より上位側の加算において、キャリー入力Ｃｉｎ［ｋ］が論理値“０”の場合は、第ｋ桁を分割位置とした２つの加算を行う場合は、制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝播信号Ｐ’［ｋ］が論理値“０”になる。このため、第ｋ桁以下の加算による桁上げの影響を防ぐことができる。したがって、全ｎ桁のキャリー入力付き加算結果と、第ｋ桁を分割位置とする２つのキャリー入力付き加算結果を適切に得ることができる。
【００９３】
次に、より具体的な動作について説明する。以下では簡単のために、ｎ＝３２、ｋ＝１５の場合を例にとって説明する。この場合、加算結果Ｓｕｍ［ｉ＋１］およびＳｕｍ［１６］は以下の論理式より求められる。
Ｇ［ｉ］＝Ａ［ｉ］・Ｂ［ｉ］
Ｇ’［１５］＝Ａ［１５］・Ｂ［１５］・Ｍ１５＋Ｃｉｎ［１５］
Ｐ［ｉ］＝Ａ［ｉ］＋Ｂ［ｉ］  または  Ａ［ｉ］＾Ｂ［ｉ］
Ｐ’［１５］＝（Ａ［１５］＋Ｂ［１５］）・Ｍ１５  または  （Ａ［１５］＾Ｂ［１５］）・Ｍ１５
Ｃ［ｉ］＝Ｇ［ｉ］＋Ｐ［ｉ］・Ｃ［ｉ−１］
Ｃ’［１５］＝Ｇ’［１５］＋Ｐ’［１５］・Ｃ［１４］
Ｓｕｍ［ｉ＋１］＝Ａ［ｉ＋１］＾Ｂ［ｉ＋１］＾Ｃ［ｉ］
＝Ａ［ｉ＋１］＾Ｂ［ｉ＋１］＾（Ｇ［ｉ］＋Ｐ［ｉ］・Ｃ［ｉ−１］）
Ｓｕｍ［１６］＝Ａ［１６］＾Ｂ［１６］＾Ｃ’［１５］
＝Ａ［１６］＾Ｂ［１６］＾（Ｇ’［１５］＋Ｐ’［１５］・Ｃ［１４］）
Ｃｉｎ［１５］＝１の場合、Ｇ’［１５］＝１となるので、Ｃ’［１５］＝１である。従って、
Ｓｕｍ［１６］＝Ａ［１６］＾Ｂ［１６］＾１
＝Ａ［１６］＾Ｂ［１６］＾Ｃｉｎ［１５］
となり、第１５桁目より上位の桁では、
Ａ＋Ｂ＋Ｃｉｎ［１５］＝Ａ＋Ｂ＋１
の結果を得ることができる。
【００９４】
Ｃｉｎ［１５］＝０の場合に、２つの１６桁加算を行う場合は、Ｍ１５＝０なので、Ｐ’［１５］およびＧ’［１５］がいずれも論理値“０”になり、上位１６桁へのキャリーであるＣ’［１５］は発生しない。すなわち、ｉ＞１５以上のＣ［ｉ］は、Ｃ’［１５］以下の演算の影響を受けないため、第１５桁目を分割位置とした２つの加算結果が得られる。
【００９５】
図１２の構成を、全ｎ桁の単一のキャリー入力付き加算しかできない加算器と比べると、第２の要素生成回路４０において、キャリー入力Ｃｉｎ［ｋ］が論理値“１”のときにＧ’［ｋ］を論理値“１”に制御する回路と、制御信号Ｍｋが“０”のときにＧ’［ｋ］およびＰ’［ｋ］を論理値“０”に制御する回路とが追加された分しか、回路面積は増加していない。したがって、省面積で、全ｎ桁のキャリー入力付き加算と、第ｋ桁を分割位置とする２つのキャリー入力付き加算との切り替えが可能である加算器を実現している。
【００９６】
また、第２の要素生成回路４０は、第１の実施形態における第２の要素生成回路２０と比較すると、キャリー入力Ｃｉｎ［ｋ］が論理値“１”のときにＧ’［ｋ］を論理値“１”に制御するための論理段数が増加している。これは、論理和ゲート等により論理段数１段で実現できる。したがって、図１２の構成は、全ｎ桁の単一のキャリー入力付き加算しかできない加算器と比べて、論理段数は１段しか増加していない。すなわち、高速性を保ったまま、全ｎ桁のキャリー入力付き加算と、第ｋ桁を分割位置とする２つのキャリー入力付き加算との切り替えが可能である加算器を実現している。
【００９７】
図１４は本実施形態に係る加算器の他の構成を示す図であり、分割可能な位置がｍ個（ｍは、０＜ｍ＜ｎを満たす任意の整数）設定されており、全桁のキャリー入力付き加算と、（１〜ｍ）個の分割位置による２〜（ｍ＋１）個のキャリー入力付き加算加算とが、切り替え可能に構成された加算器を示している。図１４では、図４および図１２と共通の構成要素には図４および図１２と同一の符号を付しており、ここではその詳細な説明を省略する。
【００９８】
図１４の加算器２０３は、ｎ桁（ｎ＞２）の２進数データＡ，Ｂを入力とし、加算動作を行う。そして、データＡ，Ｂについて、全桁の加算を行う場合と、第ｋ（ｘ）桁（ｋ（ｘ）は、０≦ｋ（ｘ）＜ｎ−１を満たす任意の整数、ｘは、１≦ｘ≦ｍを満たす全ての整数）の全部または一部を分割位置とした２〜（ｍ＋１）個の加算を行う場合とが、制御信号Ｍ［ｋ（ｘ）］によって、切り替え可能に構成されている。制御信号Ｍ［ｋ（ｘ）］がアサートされているときは、第ｋ（ｘ）桁が分割位置として設定され、一方、制御信号Ｍ［ｋ（ｘ）］がアサートされていないときは、第ｋ（ｘ）桁は分割位置として設定されない。ここでは制御信号Ｍ［ｋ（ｘ）］は、アサートされているときは論理値“０”となり、アサートされていないときは論理値“１”となるものとする。
【００９９】
図１４の加算器２０３は、入力４ａ，４ｂ，４ｃ，４ｄにデータＡを受けるとともに、入力５ａ，５ｂ，５ｃ，５ｄにデータＢを受ける。また、入力６ａ，６ｂ，６ｃに制御信号Ｍ［ｋ（ｘ）］を受ける。さらに、入力８ａ，８ｂ，８ｃに第ｋ（ｘ）桁を分割位置とした場合のキャリー入力Ｃｉｎ［ｋ（ｘ）］を受け、入力８ｄに最下位桁のキャリー入力Ｃｉｎを受ける。そして、出力３２ａ，３２ｂ，３２ｃ，３２ｄに加算結果を出力する。
【０１００】
図１４において、図１２の構成と相違するのは、データＡ，Ｂの第ｉ桁（ｉは、０≦ｉ≦ｎ−１かつｉ≠ｋ（ｘ）を満たす全ての整数）に対応して、第１の要素生成回路１０が（ｎ−ｍ）個設けられている点と、第ｋ（ｘ）桁に対応して、第２の要素生成回路４０がｍ個設けられている点である。
【０１０１】
次に、より具体的な動作について説明する。以下では簡単のために、ｎ＝３２，ｍ＝３，ｋ（１）＝７，ｋ（２）＝１５，ｋ（３）＝２３の場合を例にとって説明する。この場合、加算結果Ｓｕｍ［ｉ＋１］およびＳｕｍ［ｋ（ｘ）］は以下の論理式より求められる。
Ｇ［ｉ］＝Ａ［ｉ］・Ｂ［ｉ］
Ｇ’［ｋ（１）］＝Ｇ’［７］
＝Ａ［７］・Ｂ［７］・Ｍ［７］＋Ｃｉｎ［７］
Ｇ’［ｋ（２）］＝Ｇ’［１５］
＝Ａ［１５］・Ｂ［１５］・Ｍ［１５］＋Ｃｉｎ［１５］
Ｇ’［ｋ（３）］＝Ｇ’［２３］
＝Ａ［２３］・Ｂ［２３］・Ｍ［２３］＋Ｃｉｎ［２３］
Ｐ［ｉ］＝Ａ［ｉ］＋Ｂ［ｉ］  または  Ａ［ｉ］＾Ｂ［ｉ］
Ｐ’［ｋ（１）］＝Ｐ’［７］
＝（Ａ［７］＋Ｂ［７］）・Ｍ［７］
または  （Ａ［７］＾Ｂ［７］）・Ｍ［７］，
Ｐ’［ｋ（２）］＝Ｐ’［１５］
＝（Ａ［１５］＋Ｂ［１５］）・Ｍ［１５］
または  （Ａ［１５］＾Ｂ［１５］）・Ｍ［１５］
Ｐ’［ｋ（３）］＝Ｐ’［２３］
＝（Ａ［２３］＋Ｂ［２３］）・Ｍ［２３］
または  （Ａ［２３］＾Ｂ［２３］）・Ｍ［２３］
Ｃ［ｉ］＝Ｇ［ｉ］＋Ｐ［ｉ］・Ｃ［ｉ−１］
Ｃ’［ｋ（１）］＝Ｃ’［７］
＝Ｇ’［７］＋Ｐ’［７］・Ｃ［６］
Ｃ’［ｋ（２）］＝Ｃ’［１５］
＝Ｇ’［１５］＋Ｐ’［１５］・Ｃ［１４］
Ｃ’［ｋ（３）］＝Ｃ’［２３］
＝Ｇ’［２３］＋Ｐ’［２３］・Ｃ［２２］
Ｓｕｍ［ｉ＋１］＝Ａ［ｉ＋１］＾Ｂ［ｉ＋１］＾Ｃ［ｉ］
＝Ａ［ｉ＋１］＾Ｂ［ｉ＋１］＾（Ｇ［ｉ］＋Ｐ［ｉ］・Ｃ［ｉ−１］）
Ｓｕｍ［ｋ（１）＋１］＝Ｓｕｍ［８］
＝Ａ［８］＾Ｂ［８］＾Ｃ’［７］
＝Ａ［８］＾Ｂ［８］＾（Ｇ’［７］＋Ｐ’［７］・Ｃ［６］）
Ｓｕｍ［ｋ（２）＋１］＝Ｓｕｍ［１６］
＝Ａ［１６］＾Ｂ［１６］＾Ｃ’［１５］
＝Ａ［１６］＾Ｂ［１６］＾（Ｇ’［１５］＋Ｐ’［１５］・Ｃ［１４］）
Ｓｕｍ［ｋ（３）＋１］＝Ｓｕｍ［２４］
＝Ａ［２４］＾Ｂ［２４］＾Ｃ’［２３］
＝Ａ［２４］＾Ｂ［２４］＾（Ｇ’［２３］＋Ｐ’［２３］・Ｃ［２２］）
キャリー入力Ｃｉｎ［７］が１の場合は、
Ｃ’［７］＝１＋Ｐ’［１５］・Ｃ［１４］＝１
Ｃｉｎ［１５］が１の場合は、
Ｃ’［１５］＝１＋Ｐ’［１５］・Ｃ［１４］＝１
Ｃｉｎ［２３］が１の場合は、
Ｃ’［２３］＝１＋Ｐ’［２３］・Ｃ［２２］＝１
となるため、キャリー入力Ｃｉｎ［ｋ（ｘ）］が１の場合はＣ’［ｋ（ｘ）］から１が入力されているのが分かる。したがって、第７、１５、２３桁目を分割可能な位置とし、２つの１６桁の加算を行う場合、または４つの８桁の加算を行う場合、または２つの８桁の加算と１つの１６桁の加算を行う場合においても、各加算でキャリー入力に１となった場合でも、加算結果を適切に求めることができる。
【０１０２】
図１４の構成では、図１２の加算器１０３と同じ論理段数で、１つのｎ桁のキャリー入力付き加算と、２〜（ｍ＋１）個のキャリー入力付き加算との切り替えを行うことができる。
【０１０３】
また、上述した本実施形態に係る構成に、第３の実施形態で説明した構成を組み合わせることによって、分割位置からのキャリー出力を可能にすることができる。
【０１０４】
図１５は本実施形態に係る加算器の他の構成を示す図であり、図１２の構成に、第３の実施形態における図５の構成を組み合わせたものを示す図である。図１５の構成では、第ｋ桁以外に対応する第１のキャリー生成回路５０は、第１の要素生成回路１０によって生成されたキャリー生成信号Ｇ［ｉ］およびキャリー伝播信号Ｐ［ｉ］を入力とする。また第ｋ桁に対応する第２のキャリー生成ブロック５１は、第２の要素生成回路４０によって生成された制御付きキャリー生成信号Ｇ’［ｋ］および制御付きキャリー伝播信号Ｐ’［ｋ］を入力とする。
【０１０５】
キャリー入力Ｃｉｎ［ｋ］が論理値“１”のとき、Ｇ’［ｋ］は論理値“１”に制御されるため、制御付きキャリーＣ’［ｋ］は論理値“１”になる。これにより、第ｋ桁より上位の桁では、データＡ，Ｂの第（ｎ−１）〜ｋ桁とキャリー入力との加算結果が得られる。また、第３のキャリー生成ブロック６０は、第３の要素生成回路３０によって生成されたキャリー生成信号Ｇ［ｋ］およびキャリー伝播信号Ｐ［ｋ］を入力とする。このため、キャリーＣ［ｋ］として、第ｋ桁以下での計算により生じるキャリーが得られる。
【０１０６】
キャリー入力Ｃｉｎ［ｋ］が論理値“０”の場合において、制御信号Ｍｋが論理値“０”のときは、Ｇ’［ｋ］およびＰ’［ｋ］は論理値“０”に制御される。このため、制御付きキャリーＣ’［ｋ］も論理値“０”になる。よって、第ｋ桁で加算結果が分割され、キャリーＣ［ｋ］として、第ｋ桁以下での計算により生じるキャリーが得られる。
【０１０７】
図１５の構成では、図１２の構成と比べると、第３の要素生成回路３０と第３のキャリー生成ブロック６０が追加された分しか回路面積は増加しない。第３の要素生成回路３０による回路増加は、１個の２入力論理積ゲートと１個の２入力の論理和または排他的論理和ゲートの分だけである。第３のキャリー生成ブロック６０は、第ｋ桁の第１のキャリー生成ブロック５０のゲート数分の回路面積で実現できる。すなわち、省面積で、全ｎ桁のキャリー入力およびキャリー出力付きの加算と、第ｋ桁を分割位置とした２つのキャリー入力およびキャリー出力付きの加算の切り替えを実現している。
【０１０８】
また、図１５の構成では、第３のキャリー生成ブロック６０は、第２のキャリー生成ブロック５１と同一の回路構成によって実現できるため、図１２の構成と同じ論理段数で、キャリーＣ［ｋ］を求めることができる。すなわち、高速動作を保ったまま、全ｎ桁のキャリー入力およびキャリー出力付きの加算と、第ｋ桁を分割位置とした２つのキャリー入力およびキャリー出力付きの加算との切り替えを実現している。
【０１０９】
なお、図１５の構成において、第３のキャリー生成ブロック６０に代えて、図６および図７に示した第３のキャリー生成ブロック６１を設けてもよい。この場合は、キャリーＣ［ｋ］の出力に要する論理段数は増えるが、回路面積は小さくすることができる。
【０１１０】
図１６は本実施形態に係る加算器の他の構成を示す図であり、図１４の構成に、第３の実施形態における図８の構成を組み合わせたものを示す図である。言い換えると、図１６の構成は、図１５の構成を、分割可能な位置がｍ個の場合に拡張したものである。
【０１１１】
図１６において、図１５の構成と異なるのは、ｍ個の制御信号Ｍ［ｋ（ｘ）］とｍ個のキャリー入力Ｃｉｎ［ｋ（ｘ）］が入力され、（ｎ−ｍ）個の第１の要素生成回路１０と、ｍ個の第２の要素生成回路４０が設けられている点と、第ｋ（ｘ）桁に対応するＡ［ｋ（ｘ）］およびＢ［ｋ（ｘ）］を入力とし、キャリー生成信号Ｇ［ｋ（ｘ）］およびキャリー伝搬信号Ｐ［ｋ（ｘ）］を出力とする第３の要素生成回路３０と、第ｋ（ｘ）桁からのキャリーＣ［ｋ（ｍ）］を生成する第３のキャリー生成ブロック６０とがそれぞれｍ個設けられている点である。
【０１１２】
図１６の構成では、図１５の加算器１０４と同じ論理段数で、全ｎ桁のキャリー入力およびキャリー出力付き加算と、２〜（ｍ＋１）個のキャリー入力およびキャリー出力付き加算との切り替えを行うことができる。
【０１１３】
（変形例）
図１５および図１６の加算器は、データＢを論理反転することによって、データＡ，Ｂの大小比較を行う比較器に変形することができる。
【０１１４】
図１７は本変形例に係る比較器の構成を示す図であり、図１５の加算器を変形したものである。図１７では、図１５と共通の構成要素には図１５と同一の符号を付しており、ここではその詳細な説明を省略する。図１７の比較器３０１は、２進数データＡ，Ｂについて、全桁のキャリー入力付き比較演算を行う場合と、第ｋ桁（ｋは、０≦ｋ＜ｎ−１を満たす任意の整数）を分割位置とした２つのキャリー入力付き比較演算を行う場合とが、制御信号Ｍｋによって、切り替え可能に構成されている。
【０１１５】
データＡ，Ｂが同符号であることが保障されている場合は、キャリー入力Ｃｉｎ，Ｃｉｎ［ｋ］をともに論理値“１”にしたとき、第ｋ桁を分割位置として、データＡと、データＢの論理反転と、キャリー入力“１”との加算が行われる。すなわち、第ｋ桁を分割位置として、データＡと、データＢの２の補数との加算が行われるため、キャリーＣ［ｋ］およびＣ［ｎ−１］は、Ａ≧Ｂのとき論理値“１”となる信号となる。
【０１１６】
また、キャリー入力Ｃｉｎ，Ｃｉｎ［ｋ］をともに論理値“０”、制御信号Ｍｋを論理値“０”にしたとき、第ｋ桁を分割位置として、データＡと、データＢの論理反転との加算が行われる。すなわち、第ｋ桁を分割位置として、データＡと、データＢの１の補数との加算が行われるため、キャリーＣ［ｋ］およびＣ［ｎ−１］は、Ａ＞Ｂのとき論理値“１”となる信号となる。
【０１１７】
また、キャリー入力Ｃｉｎ［ｋ］を論理値“０”、制御信号Ｍｋを論理値“１”にした場合、キャリー入力Ｃｉｎが論理値“１”のときは、データＡと、データＢの２の補数とのｎ桁加算が行われるため、キャリーＣ［ｎ−１］は、Ａ≧Ｂのとき論理値“１”となる信号となる。一方、キャリー入力Ｃｉｎが論理値“０”のときは、データＡと、データＢの１の補数とのｎ桁加算が行われるため、キャリーＣ［ｎ−１］は、Ａ＞Ｂのとき論理値“１”となる信号となる。
【０１１８】
なお、データＡ，Ｂが同符号であることが保証されていない場合は、例えば、Ｃ［ｋ］とＡ［ｋ］とＢ［ｋ］の論理反転との排他的論理和、およびＣ［ｎ−１］とＡ［ｎ−１］とＢ［ｎ−１］の論理反転との排他的論理和を求めることによって、キャリー入力付きｎ桁のＡ＞Ｂ判定結果を、または、第ｋ桁を分割位置とした２つのキャリー入力付きＡ＞Ｂの判定結果を得ることができる。
【０１１９】
図１７の構成では、キャリーＣ［ｋ］，Ｃ［ｎ−１］を出力するために必要な論理段数は、図１５の構成と比べると、データＢの論理反転を求めるための論理段数しか増加していない。データＢの論理反転には、インバータ１段分しか要さない。また、データＢの論理反転を求める操作は、データの大小比較を行う場合には一般的な操作であるため、このために、全ｎ桁の比較のみを行う比較器と比較して論理段数が増加することはない。したがって、全ｎ桁のキャリー入力付き比較と、第ｋ桁を分割位置とした２つのキャリー入力付き比較との切り替えが可能な比較器を、高速性を保ったまま、実現できる。
【０１２０】
図１８は本変形例に係る比較器の構成を示す図であり、図１６の加算器を変形したものである。言い換えると、図１８の構成は、図１７の構成を、分割可能な位置がｍ個の場合に拡張したものである。図１８では、図１６と共通の構成要素には図１６と同一の符号を付しており、ここではその詳細な説明を省略する。図１８の比較器４０１は、２進数データＡ，Ｂについて、全桁のキャリー入力付き比較演算を行う場合と、第ｋ（ｘ）桁（ｋ（ｘ）は、０≦ｋ（ｘ）＜ｎ−１を満たす任意の整数、ｘは、１≦ｘ≦ｍを満たす全ての整数）の全部または一部を分割位置とした２〜（ｍ＋１）個のキャリー入力付き比較演算を行う場合とが、制御信号Ｍ［ｋ（ｘ）］によって、切り替え可能に構成されている。
【産業上の利用可能性】
【０１２１】
本発明に係る加算器および比較器は、低精度な処理単位のデータを同時平行処理する機能を有し、例えば、マルチメディア機能をサポートするプロセッサの加減算回路や比較器等として有用である。
【図面の簡単な説明】
【０１２２】
【図１】本発明の第１の実施形態に係る加算器の構成を示す図である。
【図２】図１の構成における第２の要素生成回路の構成例を示す回路図である。
【図３】図１の構成における第２の要素生成回路の構成例を示す回路図である。
【図４】本発明の第２の実施形態に係る加算器の構成を示す図である。
【図５】本発明の第３の実施形態に係るキャリー出力付き加算器の構成を示す図である。
【図６】本発明の第３の実施形態に係るキャリー出力付き加算器の構成を示す図である。
【図７】図６の構成における第３のキャリー生成ブロックの構成例を示す図である。
【図８】本発明の第３の実施形態に係るキャリー出力付き加算器の構成を示す図である。
【図９】本発明の第３の実施形態に係るキャリー出力付き加算器の構成を示す図である。
【図１０】本発明の第３の実施形態の変形例に係る比較器の構成を示す図である。
【図１１】本発明の第３の実施形態の変形例に係る比較器の構成を示す図である。
【図１２】本発明の第４の実施形態に係るキャリー入力付き加算器の構成を示す図である。
【図１３】図１２の構成における第２の要素生成回路の構成例を示す図である。
【図１４】本発明の第４の実施形態に係るキャリー入力付き加算器の構成を示す図である。
【図１５】本発明の第４の実施形態に係るキャリー入力・キャリー出力付き加算器の構成を示す図である。
【図１６】本発明の第４の実施形態に係るキャリー入力・キャリー出力付き加算器の構成を示す図である。
【図１７】本発明の第４の実施形態の変形例に係るキャリー入力付き比較器の構成を示す図である。
【図１８】本発明の第４の実施形態の変形例に係るキャリー入力付き比較器の構成を示す図である。
【図１９】従来の加算器の構成例を示す図である。
【符号の説明】
【０１２３】
１０  第１の要素生成回路
２０  第２の要素生成回路
２１  第１の論理回路
２２  第２の論理回路
２３  第１の論理回路
２４  第２の論理回路
３０  第３の要素生成回路
４０  第２の要素生成回路
５０  第１のキャリー生成ブロック
５１  第２のキャリー生成ブロック
６０，６１  第３のキャリー生成ブロック
１００，１０１，１０２，１０３，１０４  加算器
２００，２０１，２０２，２０３，２０４  加算器
３００，３０１，４００，４０１  比較器
Ａ，Ｂ  ２進数データ
Ｍｋ，Ｍ［ｋ（ｘ）］  制御信号
Ｇ［ｉ］  キャリー生成信号
Ｐ［ｉ］  キャリー伝搬信号
Ｇ’［ｋ］，Ｇ’［ｋ（ｘ）］  制御付きキャリー生成信号
Ｐ’［ｋ］，Ｐ’［ｋ（ｘ）］  制御付きキャリー伝搬信号
Ｃ［ｋ］，Ｃ［ｋ（ｘ）］，Ｃ［ｎ−１］  キャリー
Ｃ’［ｋ］  制御付きキャリー
Ｃｉｎ，Ｃｉｎ［ｋ］，Ｃｉｎ［ｋ（ｘ）］  キャリー入力
【図１】
2008123263.tif 000003
【図２】
2008123263.tif 000004
【図３】
2008123263.tif 000005
【図４】
2008123263.tif 000006
【図５】
2008123263.tif 000007
【図６】
2008123263.tif 000008
【図７】
2008123263.tif 000009
【図８】
2008123263.tif 000010
【図９】
2008123263.tif 000011
【図１０】
2008123263.tif 000012
【図１１】
2008123263.tif 000013
【図１２】
2008123263.tif 000014
【図１３】
2008123263.tif 000015
【図１４】
2008123263.tif 000016
【図１５】
2008123263.tif 000017
【図１６】
2008123263.tif 000018
【図１７】
2008123263.tif 000019
【図１８】
2008123263.tif 000020
【図１９】
2008123263.tif 000021