(57)【要約】  ２つのオペランドを加算して第１の演算結果を得、２つのオペランド及び１０を加算して第２の演算結果を得、２つのオペランド及び６を加算して第３の演算結果を得、２つのオペランド及び１を加算して第４の演算結果を得、２つのオペランド及び１１を加算して第５の演算結果を得、２つのオペランド及び７を加算して第６の演算結果を得、演算が同符号の数同士の加算である場合、又は結果が負にならない異符号の数同士の加算である場合、第１、第２、第４及び第５の演算結果のうちの何れかの演算結果を選択し、演算が、結果が負となる異符号の数同士の加算である場合、第１、第３、第４及び第６の演算結果のうちの何れかの１の補数を選択して１０進絶対値加算結果を出力する。
2012077185.tif 000002
【特許請求の範囲】
【請求項１】
２つのオペランドを加算して第１の演算結果を出力する第１の演算回路と、
前記２つのオペランド及び１０を加算して第２の演算結果を出力する第２の演算回路と、
前記２つのオペランド及び６を加算して第３の演算結果を出力する第３の演算回路と、
前記２つのオペランド及び１を加算して第４の演算結果を出力する第４の演算回路と、
前記２つのオペランド及び１１を加算して第５の演算結果を出力する第５の演算回路と、
前記２つのオペランド及び７を加算して第６の演算結果を出力する第６の演算回路と、
前記２つのオペランドに対する演算が同符号の数同士の加算である場合、或いは演算結果が負とはならない異符号の数同士の加算である場合、前記第１の演算結果、前記第２の演算結果、前記第４の演算結果及び前記第５の演算結果のうちの何れかの演算結果を選択し、前記２つのオペランドに対する演算が、演算結果が負となる異符号の数同士の加算である場合、前記第１の演算結果、前記第３の演算結果、前記第４の演算結果及び前記第６の演算結果のうちの何れかの演算結果に対し１の補数をとった値を選択して１０進絶対値加算結果を出力する選択回路と、を有する１０進絶対値加算器。
【請求項２】
請求項１に記載の１０進絶対値加算器であって、
前記選択回路は、前記同符号の数同士の加算か前記異符号の数同士の加算かを示す信号、前記第１の演算回路のキャリー出力信号、前記第４の演算回路のキャリー出力信号及び下位の桁からのキャリー伝播信号を用いて、前記第１の演算結果、前記第２の演算結果、前記第４の演算結果及び前記第５の演算結果のうちのいずれかを選択し、
前記第１の演算回路のキャリー出力信号、前記第４の演算回路のキャリー出力信号及び下位の桁からのキャリー伝播信号を用いて、前記第１の演算結果、前記第３の演算結果、前記第４の演算結果及び前記第６の演算結果のうちのいずれかの演算結果に対し１の補数をとった値を選択することを特徴とする１０進絶対値加算器。
【請求項３】
更に、前記演算結果に対し１の補数をとる処理を行う回路として、ビット毎に値を反転するインバータ回路を設けることを特徴とする、請求項１又は２に記載の１０進絶対値加算器。
【請求項４】
請求項１〜３のうちの何れか一項に記載の１０進絶対値加算器であって、
前記第１の演算回路、前記第２の演算回路、前記第３の演算回路、前記第４の演算回路、前記第５の演算回路及び前記第６の演算回路並びに選択回路を有する、１０進数の一桁分の１０進絶対値加算結果を出力する一桁分加算回路を第１の複数個組み合わせて１０進数の第１の複数桁分の１０進絶対値加算結果を出力する第１の複数桁分加算回路ブロックと、
前記第１の複数桁分加算回路ブロックが有する、前記第１の複数個の一桁分加算回路の夫々に対するキャリーを生成する第１の複数桁内キャリー生成回路と、
前記第１の複数桁分加算回路ブロックを第２の複数個組み合わせて、１０進数の第１の複数桁に前記第２の複数を乗じて得た第３の複数桁分の１０進絶対値加算結果を出力する第３の複数桁分加算回路を形成し、
前記第３の複数の桁分加算回路が有する、前記第２の複数個の前記第１の複数桁分加算回路ブロックの夫々に対するキャリーを生成する第１の複数桁単位キャリー生成回路と、を有する１０進絶対値加算器。
【請求項５】
請求項１〜４のうちの何れか一項に記載の１０進絶対値加算器であって、
前記１０進絶対値加算器を２進絶対値加算器として使用する場合に、前記選択回路が、前記２つのオペランドに対する演算が同符号の数同士の加算である場合、或いは演算結果が負とはならない異符号の数同士の加算である場合には前記第１の演算結果又前記第４の演算結果を選択させ、前記２つのオペランドに対する演算が、演算結果が負となる異符号の数同士の加算である場合には、前記第１の演算結果又前記第４の演算結果に対し１の補数をとった数を選択させる切換回路を有することを特徴とする、１０進絶対値加算器。
【請求項６】
請求項１〜５のうちの何れか一項に記載の１０進絶対値加算器であって、
前記第２の演算回路は、前記２つのオペランドを加算して６を減算する演算を行って前記２つのオペランド及び１０を加算して得られる演算結果を得、
前記第３の演算回路は、前記２つのオペランドを加算して１０を減算する演算を行って前記２つのオペランド及び６を加算して得られる演算結果を得、
前記第５の演算回路は、前記２つのオペランドを加算して５を減算する演算を行って前記２つのオペランド及び１１を加算して得られる演算結果を得、
前記第６の演算回路は、前記２つのオペランドを加算して９を減算する演算を行って前記２つのオペランド及び７を加算して得られる演算結果を得ることを特徴とする、１０進絶対値加算器。
【請求項７】
２つのオペランドの１０進絶対値加算を行う１０進絶対値加算器であって、
１０進数の一桁につき、前記２つのオペランドを加算して第１の演算結果を出力する第１の演算回路と、
前記１０進数の一桁につき、前記２つのオペランド及び６を加算して第３の演算結果を出力する第３の演算回路と、
前記２つのオペランドに対する演算が異符号の数同士の加算であり、再補数化が必要であり、前記１０進数の一桁に対する下位からの桁上がりが無い場合に、前記第１の演算結果及び前記第３の演算結果のうちの何れかの演算結果に対し１の補数をとった値を選択して１０進絶対値加算結果を出力する選択回路と、を有する１０進絶対値加算器。
【請求項８】
２つのオペランドの１０進絶対値加算を行う１０進絶対値加算器であって、
１０進数の一桁につき、前記２つのオペランド及び１を加算して第４の演算結果を出力する第４の演算回路と、
前記１０進数の一桁につき、前記２つのオペランド及び７を加算して第６の演算結果を出力する第６の演算回路と、
前記２つのオペランドに対する演算が異符号の数同士の加算であり、再補数化が必要であり、前記１０進数の一桁に対する下位からの桁上がりが有る場合に、前記第４の演算結果及び前記第６の演算結果のうちの何れかの演算結果に対し１の補数をとった値を選択して１０進絶対値加算結果を出力する選択回路と、を有する１０進絶対値加算器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１０進絶対値加算器に関する。
【背景技術】
【０００２】
以下の構成を有する１０進演算訂正機能付加算器が知られている。１０進演算訂正機能付加算器では、１０進数の各桁毎に加数と被加数とのビットパターンに基づいて、下位桁からの桁上げ信号がないと仮定したときの加算結果と下位桁からの桁上げ信号が有ると仮定した場合の加算結果とを抽出する。そして、下位桁からの桁上げ信号の有無と当該桁からの桁上げ信号の有無とにより１０進演算訂正を行った加算結果を選択的に抽出する。【０００３】
又、以下の構成を有する１０進演算回路が知られている。１０進演算回路では、第１のオペランド−第２のオペランドの主演算時に、並行して第２のオペランド−第１のオペランドの演算を行う演算手段を設ける。そして上記主演算の結果が負となった際に、主演算の結果値に代えて、上記演算手段による演算結果値を選択して出力する。これにより、補数処理を不要とし、リコンプリメント（再補数化）時における演算処理の遅れを無くし処理性能を向上する。【０００４】
又、以下の構成を有する減算器が知られている。減算器では、互いに符号が等しい２つのオペランドを入力する。そして、第１のオペランドの絶対値から第２のオペランドの絶対値を減じる１番目の減算と、第２のオペランドの絶対値から第１のオペランドの絶対値を減じる２番目の減算とを並列に実行する。又１番目の減算を行う減算回路に減算の過程でオーバーフローが発生した場合はこれを検出してキャリー信号を生成し、キャリー信号によって、１番目の減算結果と２番目の減算結果との中から正しいものを選択する。これによって、どのようなオペランドの組み合わせに対しても常に１回の減算により正しい解を得ることができるので、減算器の効率を高めることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭５４−０５４５４２号公報
【特許文献２】特開昭５９−２０１１４４号公報
【特許文献３】特開平１−０８６２３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
処理時間を効果的に短縮可能な構成の１０進絶対値加算器を提供することが課題である。
【課題を解決するための手段】
【０００７】
実施例の１０進絶対値加算器では、１０進数の一桁につき、２つのオペランドを加算して第１の演算結果を得、２つのオペランド及び１０を加算して第２の演算結果を得、２つのオペランド及び６を加算して第３の演算結果を得る。更に、２つのオペランド及び１を加算して第４の演算結果を得、２つのオペランド及び１１を加算して第５の演算結果を得、２つのオペランド及び７を加算して第６の演算結果を得る。そして、２つのオペランドに対する演算が同符号の数同士の加算である場合、或いは演算結果が負とはならない異符号の数同士の加算である場合、以下の演算結果を選択する。すなわち、第１の演算結果、第２の演算結果、第４の演算結果及び第５の演算結果のうちの何れかの演算結果を選択する。又、２つのオペランドに対する演算が、演算結果が負となる異符号の数同士の加算である場合、以下の演算結果を選択する。すなわち、第１の演算結果、第３の演算結果、第４の演算結果及び第６の演算結果のうちの何れかの演算結果に対し１の補数をとった値を選択する。
【発明の効果】
【０００８】
上記構成の１０進絶対値加算器により、１０進絶対値加算結果を得るための処理時間を効果的に短縮することができる。
【図面の簡単な説明】
【０００９】
【図１】ＢＣＤ(Binary Coded Decimal)コードと１０進数との対応関係を示す図である。
【図２】本発明の実施例１又は２として適用可能な１０進絶対値加算器の全体構成の一例を示すブロック図である。
【図３】本発明の実施例１又は２に適用可能な１０進絶対値加算器の全体構成の他の例を示すブロック図である。
【図４】図２或いは図３に示す１０進絶対値加算器本体(decimal absolute adder)の構成の一例を示すブロック図である。
【図５】図２に示す９の補数化回路(9's comp)の回路構成の一例を示す図である。
【図６】図２或いは図３に示す１０進絶対値加算器本体(decimal absolute adder)の構成の他の例を示すブロック図である。
【図７】図４或いは図６に示すＢＣＤ補正回路（BCD adjust）の回路構成の一例を示す図である。
【図８】本発明の実施例１の１０進絶対値加算器本体の構成を示すブロック図である。
【図９】図８に示すセグメント絶対値加算器（１０進数の一桁分の絶対値加算器）の各々の内部構成の一例を示すブロック図である。
【図１０】図８に示すブロックキャリー伝播回路(Block carry propagate)を、図９に示す再補数化時のブロックキャリーイン信号(BCin for recomp)及び非再補数化時のブロックキャリーイン信号(BCin for non-recomp)を夫々生成する２つの２進キャリールックアヘッド回路で形成する場合のブロックキャリー伝播回路の構成の一例を示すブロック図である。
【図１１】図９に示す４ビット加算器（Ａ＋Ｂ）の回路構成の一例を示す回路図である。
【図１２】図９に示す４ビット加算器（Ａ＋Ｂ＋１）の回路構成の一例を示す回路図である。
【図１３】図９に示す４ビット加算器（Ａ＋Ｂ＋６）の回路構成の一例を示す回路図である。
【図１４】４ビットで表現される数に対し、６を加算した場合(D+6)及び１０を減算した場合(D-10)の、下位４ビット演算結果のビットパターンを比較して示す図である。
【図１５】図１３の回路例において、各ビットから生成されるキャリー及びボローの内訳を示す図である。
【図１６】図９に示す４ビット加算器（Ａ＋Ｂ＋７）の回路構成の一例を示す回路図である。
【図１７】図１６の回路例において、各ビットから生成されるキャリー及びボローの内訳を示す図である。
【図１８】図９に示す４ビット加算器（Ａ＋Ｂ＋１０）の回路構成の一例を示す回路図である。
【図１９】図１８の回路例において、各ビットから生成されるキャリー及びボローの内訳を示す図である。
【図２０】図９に示す４ビット加算器（Ａ＋Ｂ＋１１）の回路構成の一例を示す回路図である。
【図２１】図２０の回路例において、各ビットから生成されるキャリー及びボローの内訳を示す図である。
【図２２】本発明の実施例２におけるセグメント絶対値加算器（実施例２の場合、１０進数の４桁分の絶対値加算器）の各々の内部構成の一例を示すブロック図である。
【図２３】図２２に示す１０進数の一桁分の絶対値加算器(digit adder block)の内部構成の一例を示すブロック図である。
【図２４】本発明の実施例３における１０進数の一桁分の絶対値加算器(digit adder block、図８中、セグメント絶対値加算器)の内部構成の一例を示すブロック図である。
【図２５】本発明の実施例３における１０進絶対値加算器の全体構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下に本発明の実施例につき詳細に説明する。
【００１１】
最初に絶対値加算器について説明する。２進絶対値加算器とは以下の動作を行う演算器である。すなわち、減算時に減数オペランドに対し２の補数をとって得た結果を非減数オペランドに加算する。そして減算結果が負となる場合には加算結果に対し２の補数をとる（再補数化）ことで減算結果の絶対値を得る。
【００１２】
１０進絶対値加算器とは以下の動作を行う演算器である。すなわち、減算時に減数オペランドに対し１０の補数をとって得た結果を非減数オペランドに加算する。そして減算結果が負となる場合には加算結果に対し１０の補数をとる（再補数化）ことで減算結果の絶対値を得る。
【００１３】
本発明の実施例１は以下の特徴を有する。
（１）BCD(Binary Coded Decimal: 2進化10進数)コードで表現された数値を演算する10進絶対値加算器である。
（２）高速2進加算器を使って10進加算器を実現することにより、高速な10進絶対値加算器を実現することができる。
（３）高速10進絶対値加算器を実現するにあたって、2進加算器のディジット（digit）単位に、A+B、A+B+1、A+B+6、A+B+7、A+B+10、A+B+11に相当する部分和を求める回路を設ける。ここでディジットとは１０進数の一桁（すなわちＢＣＤコードにおいて４ビット分）を意味し、Ａ，Ｂは夫々ディジット単位のオペランドを示す。したがって部分和とはディジット単位の和を意味する。
（４）加算時には、キャリー（すなわち桁上がり、以下同様）条件によって、A+B、A+B+1、A+B+10、A+B+11を用いて演算結果を求める。
（５）減算時に、結果が正になるときは、キャリー条件によって、A+B、A+B+1、A+B+10、A+B+11を用いて結果を求める。他方、結果が負になるときは、キャリー条件によって、A+B、A+B+1、A+B+6、A+B+7の夫々の1の補数をとって絶対値化する。すなわち、負の減算結果の絶対値を得る。
（６）上記A+B+6、A+B+7、A+B+10、A+B+11に相当する部分和を、通常のCLA(Carry Look Ahead)型４ビット加算器と同程度の規模と速度で求めることができる。
【００１４】
参考のために図１にBCDコードの2進数による表現と10進数との対応関係を示す。
【００１５】
本発明の実施例１における、高速2進加算器をつかった10進加算器を実現する方式は以下の通りである。
【００１６】
加算（すなわち同符号の数同士の加算）時には、片方のオペランドの各ディジットに対し、あらかじめ+6を行うことで、高速2進加算器でディジット間でキャリーが伝播できるようにする。すなわち9(2進数による表現で、1001)を15(2進数による表現で、1111)にマッピングしておくことにより、1を加えたときに、2進加算器でディジットのキャリーを1にできる。
【００１７】
この方式では、ディジットから桁上がりがない場合、上記+6の分が除去されないため、演算結果は+6の分が余分となっている。このため、ディジットからの桁上がりがない場合には、演算結果のディジットに対して-6を行なうことでBCDコード化する。
【００１８】
減算（すなわち異符号の数同士の加算）時には、減数オペランドに対し1の補数をとる。この操作は、減数オペランドの各ディジットに対し、9の補数をとった上で+6を行う操作と等価である。そして、高速2進加算器において最下位のCin（キャリーイン；下位からの桁上がりに相当）入力を1にして、被減数オペランドに対し、上記減数オペランドに対し１の補数をとって得た値を加算する。最下位のＣin入力を１にするのは上記９の補数を１０の補数にするためである。上記した加算時同様、ディジットから桁上がりがない場合には、上記+6の分が余分となっている。このため、ディジットからの桁上がりがない場合には、結果のディジットに対して-6を行なうことでBCDコード化する。つまり、減算時は、減数オペランドの補数(10の補数)をあらかじめ作成した上で、加算時と同様の演算を行う。
【００１９】
図２に、高速2進加算器を使う方式による10進絶対値加算噐の、前処理の補正を行う部分を含めた全体構成の一例を示す。また、上記の如く9の補数をとってから+6を行う代りに1の補数をとる場合の全体構成の一例を図３に示す。
【００２０】
図２に示す１０進絶対値加算器は、第１オペランドop1に対しディジット単位で+6を行う加算回路１１、第１オペランドop1に対しディジット単位で９の補数をとる９の補数化回路１２及び９の補数をとった後に+6を行う加算回路１３を有する。更に、加算回路１１及び加算回路１３のうちのいずれかの出力を選択するセレクタ１４及び１０進絶対値加算器本体１５を有する。加算回路１１、９の補数化回路１２，加算回路１３及びセレクタ１４が、上記前処理の補正を行う部分である。セレクタ１４は、演算が減算の場合に１の値を有し、加算の場合に０の値を有する信号ＳＵＢが０を有する場合に加算回路１１の出力を選択して１０進絶対値加算器本体１５に出力する。又、信号ＳＵＢが１を有する場合に加算回路１３の出力を選択して１０進絶対値加算器本体１５に出力する。１０進絶対値加算器本体１５は、セレクタ１４の出力値と第２オペランドop2との１０進絶対値加算を行い、１０進絶対値加算結果resultを出力する。
【００２１】
図３に示す１０進絶対値加算器は図２に示す１０進絶対値加算器と同様の構成を有し、同様の構成要素には同一の符号を付し、重複する説明を省略する。図３に示す１０進絶対値加算器は、図２に示す構成における９の補数化回路１２及び加算回路１３の代わりに、第１オペランドop1に対しディジット単位で１の補数をとる１の補数化回路１６を有する。
【００２２】
図２或いは図３に示す１０進絶対値加算器の全体構成のうち、加算時に+6を行う加算回路１１や減算時に9の補数をとって+6操作する９の補数化回路１２及び加算回路１３（或いは１の補数化回路１６）には周知技術を適用することができる。
【００２３】
図４に、図２或いは図３に示す１０進絶対値加算器の全体構成のうち、１０進絶対値加算器本体１５の構成の一例を示す。
【００２４】
図４に示す例による１０進絶対値加算器本体は、２進加算器２１と、再補数化検出回路２２と、ＢＣＤ補正回路２３と、９の補数化回路２４と、ＢＣＤインクリメント回路２５と、セレクタ２６とを有する。図４における２つの入力Ａ、Ｂのうち、入力Ａは、例えば以下の値である。すなわち、Ａは、例えば図２或いは図３に示す第１オペランドop1に対し、加算回路１１或いは９の補数化回路１２及び加算回路１３による処理を行って得た結果、或いは加算回路１１或いは１の補数化回路１６による処理を行って得た結果である。他方Ｂは、図２或いは図３に示す第２オペランドである。尚、ＡとＢとは論理的に交換可能な等価な値であるため、ＡとＢとを相互に交換してもよい。
【００２５】
再補数化検出回路２２は、２進加算器２１による加算結果に対する再補数化が必要か否かを判定し、再補数化が必要な場合１をセレクタ２６に出力し、不要な場合０をセレクタ２６に出力する。再補数化検出回路２２には２進加算器２１からのキャリー出力信号carryと、第１オペランドop1及び第２オペランドop2に対する演算が減算（すなわち異符号の数同士の加算、以下同様）か否かを示す信号SUBとが入力される。再補数化検出回路２２は、キャリー出力信号carryの値に関わらず、信号SUBが加算（すなわち同符号の数同士の加算、以下同様）を示す場合０を出力する。他方、信号SUBが減算を示す場合、キャリー出力信号carryが１の場合（減算結果が正で再補数化不要時）0を出力し、キャリー出力信号carryが０の場合（減算結果が負で再補数化必要時）1を出力する。
【００２６】
したがって再補数化検出回路２２は、演算が加算の場合０を、演算が減算の場合であって減算結果が正で再補数化が不要の場合０を、演算が減算の場合であって減算結果が負で再補数化が必要な場合１を、夫々出力する。再補数化検出回路２２の出力信号に応じ、セレクタ２６は、演算が加算の場合BCD補正回路２３の出力値を、演算が減算の場合であって減算結果が正で再補数化が不要の場合もBCD補正回路２３の出力値を夫々出力する。又、セレクタ２６は、演算が減算の場合であって減算結果が負で再補数化が必要な場合BCDインクリメント回路２５の出力値を出力する。
【００２７】
図４に示す１０進絶対値加算器本体では、第１オペランドop1及び第２オペランドop2に対する演算が加算（すなわち同符号の数同士の加算）の場合には、以下の処理を行う。すなわち、図２或いは図３に示す加算回路１１にて第１オペランドop1であるBCDコードの数の各ディジットに+6を行った数Ａと、第２オペランドop2であるBCDコードの数Ｂとを、２進加算器２１で２進数として加算する。
【００２８】
ここでセレクタ２６は、前述の如く、第１オペランドop1及び第２オペランドop2に対する演算が加算（すなわち同符号の数同士の加算）の場合、BCD補正回路２３の出力を選択して出力する。BCD補正回路２３では、２進加算器２１の出力値に対し、ディジット単位で、上記の如く+6が余分な場合に-6を行う補正を行い、BCD補正回路２３の出力値がセレクタ２６に入力される。BCD補正回路２３からの１０進絶対値加算結果resultがセレクタ２６から出力される。
【００２９】
他方、演算が減算（すなわち異符号の数同士の加算）の場合、入力データＡ，Ｂに対し、以下の処理がなされる。ここで入力データＡは、図２或いは図３に示す９の補数化回路１２及び加算回路１３或いは１の補数化回路１６にて第１オペランドop1であるBCDコードの各ディジットに対し９の補数をとった上で+6を行い或いは１の補数をとって得たデータである。又、入力データＢは、第２オペランドop2であるBCDコードである。入力データＡ，Ｂは、２進加算器２１で２進数として加算される。なお、この場合、上記の如く上記９の補数を１０の補数にするため、２進加算器２１において最下位のCin入力（図４では図示を省略）を１として加算を行う。
【００３０】
ここでセレクタ２６は、前述の如く、第１オペランドop1及び第２オペランドop2に対する演算が減算であって、結果が負でない場合、BCD補正回路２３の出力を選択して出力する。BCD補正回路２３では、２進加算器２１の出力値に対し、ディジット単位で、上記の如く+6が余分な場合に-6を行う補正を行い、BCD補正回路２３の出力値がセレクタ２６に入力される。BCD補正回路２３からの１０進絶対値加算結果resultがセレクタ２６から出力される。
【００３１】
他方、セレクタ２６は、前述の如く、第１オペランドop1及び第２オペランドop2に対する演算が減算であって、結果が負である場合（再補数化が必要な場合）、９の補数化回路２４に接続されたBCDインクリメント回路２５を選択して出力する。この場合、９の補数化回路２４はBCD補正回路２３の出力値に対しディジット単位で９の補数をとり、更にBCDインクリメント回路２５がディジット単位で９の補数化回路２４の出力値に１を加えて１０の補数を得る。BCDインクリメント回路２５からの１０進絶対値加算結果resultがセレクタ２６から出力される。
【００３２】
図５は上記９の補数化回路１２、２４の回路構成の一例を示す。図５の９の補数化回路は、否定論理和回路（以下単にＮＯＲと称する）回路ＮＯＲ１，排他的論理和（以下単にＥＸＯＲと称する）回路ＥＸＯ１，バッファＢＵＦ１，論理積（以下単にＡＮＤと称する）回路ＡＮＤ１，インバータＩＮＶ１及びＥＸＯＲ回路ＥＸＯ２を含む。
【００３３】
図５の９の補数化回路には、１ディジット分のBCDコードの第１乃至第４ビットa3, a2, a1, a0及びパリティビットapが入力される。９の補数化回路は、BCDコードに対し９の補数をとって得たBCDコードの第１乃至第４ビットx3, x2, x1, x0及びパリティビットxpを出力する。すなわち、ＮＯＲ回路ＮＯＲ１はa3, a2, a1が入力されx3を出力する。ＥＸＯＲ回路ＥＸＯ１はa2, a1が入力されx2を出力する。バッファＢＵＦ１はa1が入力されx1を出力する。インバータＩＮＶ１はa0が入力されx0を出力する。ＡＮＤ回路ＡＮＤ１はa2と、a1がインバータＩＮＶ２で反転された値とが入力され、EXO2でAND1の結果とapと排他的論理和をとって、xpを出力する。
【００３４】
図６は、図４と共に上述した１０進絶対値加算器本体の他の例を示す。図６の例は、図４の例におけるBCDインクリメント回路２５による処理が、１０進絶対値加算器が扱う１０進数の桁数が多いほど長い時間を要することに鑑み、BCDインクリメント回路を使わないようにした例である。
【００３５】
図６の例では、演算が加算の場合、２進加算器３１、BCD補正回路３３及び再補数化検出回路２２が、図４の例における２進加算器２１、BCD補正回路２３及び再補数化検出回路２２に夫々対応し、夫々同様の機能を奏する。すなわち、図２又は図３における加算器１１が第１オペランドop1のBCDコードの各ディジットに+6を行って得た数Ａと、第２オペランドop2とを、２進加算器３１が２進数として加算する。そしてBCD補正回路３３が、上記の如く、ディジット単位で-6を行う必要がある場合には、-6を行う。そしてBCD補正回路３３からの１０進絶対値加算結果resultがセレクタ２６から選択出力される。
【００３６】
ここで図７に、１ディジット分のBCD補正回路２３，３３，３４の回路構成の一例を示す。図７のBCD補正回路は、ＥＸＯＲ回路ＥＸＯ３，ＥＸＯ４，減算回路ＳＵＢ１及びセレクタＳＥＬ１を含む。ＥＸＯＲ回路ＥＸＯ３は、上記入力データＡ，Ｂの１ディジットの直上の１ビットをそれぞれA[4]、B[4]とし、それらのＥＸＯＲをとる。A[4]、B[4]は該当するビットが存在しないときは０であるとする。ＥＸＯ４は、ＥＸＯ３の出力と２進加算器の出力Ｄの当該ディジットの直上の１ビットをD[4]とし、それらに対しＥＸＯＲをとる。D[4]に該当するビットが存在しないときは、D信号を出力している加算器のキャリー出力を代わりとして使用する。その結果、Ａ＋Ｂの演算結果の桁上がりが無い場合には、ＥＸＯ４は0を出力し、Ａ＋Ｂの演算結果の桁上がりが有る場合には、ＥＸＯ４は1の値を出力する。セレクタＳＥＬ１は、Ａ＋Ｂの演算結果の桁上がりが無い場合（0）には減算回路ＳＵＢ１の出力値を選択出力し（-6の補正有り）、Ａ＋Ｂの演算結果の桁上がりが有る場合（1）にはＤを選択出力する（-6の補正無し）。
【００３７】
図６の例の説明に戻り、演算が減算時には、入力データＡ，Ｂに対し、以下の処理がなされる。ここで入力データＡは、図２或いは図３に示す９の補数化回路１２及び加算回路１３或いは１の補数化回路１６にて第１オペランドop1であるBCDコードの数の各ディジットに対し９の補数をとった上で+6を行い或いは１の補数をとって得たデータである。入力データＢは、第２オペランドop2であるBCDコードである。入力データＡ，Ｂを２進加算器３１が２進数として加算する。なおこの場合、上記の如く上記９の補数を１０の補数にするため、２進加算器３１の最下位においてCin入力（図４では図示を省略）を１として加算を行う。
【００３８】
ここでセレクタ２６は、前述の如く、第１オペランドop1及び第２オペランドop2に対する演算が減算であって、結果が負でない場合、BCD補正回路３３の出力を選択出力する。BCD補正回路３３では、２進加算器３１の出力値に対し、ディジット単位で、上記の如く+6が余分な場合に-6を行う補正を行い、BCD補正回路３３の出力値がセレクタ２６に入力される。BCD補正回路２３からの１０進絶対値加算結果resultがセレクタ２６から出力される。
【００３９】
他方、セレクタ２６は、前述の如く、第１オペランドop1及び第２オペランドop2に対する演算が減算であって、結果が負である場合（再補数化が必要な場合）、９の補数化回路２４の出力値を選択出力する。ここで９の補数化回路２４には図６に示すように、２進加算器３２の出力値がBCD補正回路３４を経た値が入力される。この場合、２進加算器３２では、最下位のCin入力が０とされて２進数の加算が行われ、加算結果がBCD補正回路３４に入力される。そして９の補数化回路２４はBCD補正回路３４の出力値に対し９の補数をとり、このようにして得られた１０進絶対値加算結果resultがセレクタ２６から出力される。この場合、上記の如く、２進加算器３２において最下位のCin入力が０とされて２進数の加算がなされるため、図４の例の場合とは異なり、BCDインクリメント回路による+1の処理は不要となる。その結果、図６の例の場合、BCDインクリメント回路は不要となる。又、図６の例において演算が減算の場合、２進加算器３１，３２は加算処理を並行して行い、BCD補正回路３３，３４も補正処理を並行して行う。その結果、処理時間を短縮できる。
【００４０】
ここで、ディジット単位の１０進加算器の構成例として、特許文献１に記載された例について説明する。この例では、ディジット自身の桁上がりCoutにのみ依存する信号線２本と、外部からの桁上がりCinと上記Coutとの両方に依存する信号線４本とを並列に設ける。そしてこれら計６本の信号線による条件と、上記Cin又はCoutの条件とのAND論理を夫々とり、夫々のAND論理の結果のOR論理をとることでBCD 補正処理の高速化を図る。特許文献１の構成例では、A+B+Cinの結果と、それを10進補正(-6の処理)した結果とを、外部からの桁上がり信号（Ｃｉｎ）とディジット自身の桁上がり信号（Ｃｏｕｔ）によって選択する。また、このＣｉｎ信号とＣｏｕｔ信号は公知のキャリールックアヘッド回路により作成する。しかもこのＣｏｕｔ信号は、上位ディジットに対するＣｉｎ信号と等価でなければならない。このため、Ｃｉｎ信号とＣｏｕｔ信号とは共に２つのディジットを駆動することになる。又、論理式の変形により、Ｃｉｎ信号及びＣｏｕｔ信号とのAND論理を最終段でとるようにしている。そして、ワイヤードOR論理が使用できることを利用して、多数の信号に対し、一度にまとめてOR論理をとることで処理の高速化を図っている。
【００４１】
又、10進減算時に結果を絶対値にする方法として、特許文献２及び特許文献３に開示された技術などがあるが、いずれの技術においても、加算器もしくは減算器を２セット使い、夫々によってＡ−ＢとＢ−Ａとの演算を並行して行う。特許文献２の構成では、上記２つの演算結果をレジスタに格納後に選択をする。
【００４２】
ここで図４及び図６とともに上述した夫々の構成によれば、2進加算器で加算した結果に対してBCD化補正を行うため、演算処理に時間を要する点が考えられる。又、減算時には、さらに、9の補数を作成する処理時間が必要とされる。
【００４３】
更に図４の例では、減算時にBCDインクリメント回路２５による処理も必要とされ、桁数の多い演算器ほど減算処理に時間を要する。
【００４４】
又、2進加算器による加算処理、BCD補正回路による補正処理及び再補数化処理をシーケンシャルに実行する構成の場合、２進加算器は汎用的な機能回路であるために高速2進加算器を半導体メーカーがIPコア（Intellectual Property Core）として用意している場合があり、それが使用可能となるメリットがある。しかしながら10進補正や、再補数化により処理時間が増加する点が考えられる。
【００４５】
又、特許文献１に開示された方法では、Ｃｉｎ信号とＣｏｕｔ信号とを両方とも外部のキャリールックアヘッド回路から得ることにより、本来Ｃｉｎのみて済むクリティカルパス数がＣｉｎとＣｏｕｔとの２つに増加する。しかもこのＣｏｕｔ信号は、上位ディジットに対するＣｉｎ信号と等価でなければならないため、Ｃｉｎ信号とＣｏｕｔ信号とで共に２つのディジットを駆動することになり、負荷が増加する。その結果、生成に時間を要するキャリー伝播信号としてのＣｉｎ信号及びＣｏｕｔ信号の生成に要する時間が更に増加する可能性がある。また、本来４つの演算結果で済むところをあえて６つに増やすことで、各信号の作成に要する段数を減らした上で、ワイヤードＯＲ論理に頼って高速化する。このため、スタティックＣＭＯＳ等のワイヤードＯＲ論理が使用できないデバイスでは、多数の信号のＯＲ論理を取るのに時間がかかる。その結果、かえって外部からのＣｉｎ／Ｃｏｕｔ信号との論理をとる処理に要する時間が増加する可能性がある。また、一旦演算結果を得たあとで１０進補正を行うという方法では、１０進補正を行うパスの処理の方が時間を要する可能性がある。
【００４６】
又、特許文献２及び特許文献３に示された構成のように、減算のために加算器を２セット使う方法では回路規模が大きくなる可能性がある。又、特許文献２の構成の場合、レジスタの物量も２倍となる。
【００４７】
本発明の実施例１によれば、上述の状況に鑑み、演算処理に要する時間を効果的に短縮し得る１０進絶対値加算器を提供することができる。
【００４８】
本発明の実施例１では、2進加算器を使用するディジット単位の加算器内のディジット演算器として以下に述べる構成を設ける。すなわち、後述する図９に示す如く、A+B, A+B+10, A+B+6, A+B+1, A+B+11, A+B+7の夫々の演算を並列に実行する加算器ＡＤＤ１，ＡＤＤ２，ＡＤＤ３，ＡＤＤ４，ＡＤＤ５，ＡＤＤ６を設ける。これらの加算器ＡＤＤ１，ＡＤＤ２，ＡＤＤ３，ＡＤＤ４，ＡＤＤ５，ＡＤＤ６のうち、A+B, A+B+10, A+B+6を夫々行う加算器ＡＤＤ１，ＡＤＤ２，ＡＤＤ３は、下位からの桁上がりがない場合の演算結果を生成する。他方、A+B+1, A+B+11, A+B+7を夫々行う加算器ＡＤＤ４，ＡＤＤ５，ＡＤＤ６は、下位からの桁上がりがある場合の演算結果を生成する。
【００４９】
そして演算結果に対し再補数化の必要がなく下位からの桁上がりがない場合の演算結果は、A+Bの加算器ＡＤＤ１とA+B+10の加算器ＡＤＤ２とで計算する。そして、A+Bの加算器ＡＤＤ１のキャリー出力信号digit carry outに基づいてＢＣＤ化補正の要否を判定する。ここでＢＣＤ化補正とは、例えば図４、６、７等とともに上述したＢＣＤ補正回路２３，３３，３４によって行う、-6を行う補正を意味する。BCD化補正が不要な場合にはA+Bの加算器ＡＤＤ１の演算結果を使用し（s0）、BCD化補正が必要な場合にはA+B+10の加算器ＡＤＤ２の演算結果を使用する（s0）。ここで１０は６に対する１６の補数であることから、４ビットに閉じた計算ではA+B+10はA+B-6と等価である。このため、ＢＣＤ化補正(-6)が必要な場合、A+B+10の加算器ＡＤＤ２を使用する。
【００５０】
又、再補数化の必要がなく下位からの桁上がりがある場合の演算結果は、桁上がりの+1を考慮し、A+Bに１を加えるA+B+1の加算器ＡＤＤ４とA+B+10に１を加えるA+B+11の加算器ＡＤＤ５とで計算する。この場合も上記下位からの桁上がりがない場合同様、A+B+1の加算器ＡＤＤ４のキャリー出力信号digit carry outに基づいてＢＣＤ化補正の要否を判定する。BCD化補正が不要な場合にはA+B+1の加算器ＡＤＤ４結果を使用し（s1）、BCD化補正が必要な場合にはA+B+11の加算器ＡＤＤ５の結果を使用する（s1）。
【００５１】
このように実施例１による方法では、BCD化補正の要否の判定はディジット内で完結し、たかだか４ビット分のキャリールックアヘッドの実行に要される遅延時間で行うことができるため、高速化が可能である。
【００５２】
又、再補数化のための補数化処理は、BCDコードによる10進演算のため9の補数をとる必要がある。９の補数化回路の一例は上述した図５に示すものであるが、図５の例の場合、ｘ３を作成する３入力ＮＯＲ回路ＮＯＲ１や、ｘ２を作成するＥＸＯＲ回路ＥＸＯ１は、比較的動作時間を要するゲートである。又図５の例では、補数化に伴うディジットのパリティの予測を行う構成として、インバータＩＮＶ２，ＡＮＤ回路ＡＮＤ１，ＥＸＯＲ回路ＥＸＯ２を要し、ゲート３段を要する。
【００５３】
これに対し図９に示す実施例１の構成では、図５のような比較的時間を要する回路を使用する代わりに、１の補数化回路として、演算結果ｒｓ０やｒｓ１を作成するインバータ１段（ＩＮＶ５，ＩＮＶ６）を使用することにより、高速化を図る。１の補数をとることによってディジットに対するパリティは変化しないので、パリティの変化を求めるために演算結果を加工する必要がなく、演算の高速化が図れる。
【００５４】
ここで、再補数化が必要な場合の再補数化前の演算結果をBCDコードでｒ（０≦ｒ≦９）とする。尚、上記した前処理において、（例えば図２中、加算回路１３により）予め+6がなされている。このため、A+Bの加算器ＡＤＤ１の演算結果は、ディジットのキャリー出力信号digit carry out（COUT）の値がCOUT=0のときは（ｒ＋６）であり(+6が余分)、COUT=1のときはｒである。又、ディジットで１の補数をとる演算は、15からその数を引く演算と等価である。したがってA+Bの演算結果に対し１の補数をとると、COUT=0のときには１５−（ｒ＋６）＝（９−ｒ）となる。他方、ＣＯＵＴ＝１のときは、１５−ｒ＝（９−ｒ）＋６となる。したがってＣＯＵＴ＝０のときは、Ａ＋Ｂの演算結果に対し１の補数をとることにより、９の補数をとった場合と等価の演算結果（９−ｒ）が得られる。他方ＣＯＵＴ＝１のときは、Ａ＋Ｂの演算結果に対し１の補数をとると、求めたい９の補数（９−ｒ）に対して６が余分な（９−ｒ）＋６が得られる。したがってこの場合、15から演算結果を引いた場合に余分な６が含まれないようにすればよい、すなわち15から演算結果を引いた場合に１５−（ｒ＋６）となるよう、予めA+Bに６を加えるA+B+6の加算器ＡＤＤ３を使用する。
【００５５】
ここでA+B+6のような３値の足し算を行う場合、加算器を２段直列にして計算するか、ＣＳＡ(Carry Save Adder: 桁上げ保存加算器)と加算器とを直列にして計算する方法を用いることができる。しかしこのような方法ではA+Bの演算に対して処理時間が余分に掛かる。このため実施例１では、上記の如くの３値の足し算においてオペランドの１つ(A+B+6の場合、"6")が固定の値であることを利用し、A+B+6の加算器ＡＤＤ３として、図１３に具体的な回路を示す如くの４ビットＣＬＡ(Carry Look Ahead)加算器の構成を適用する。このようにして実施例１では、A+Bを演算処理に要する時間と同等の処理時間でA+B+6の演算を行うことができる。
【００５６】
又、図９の構成において、外部からのキャリー入力が１となる場合には、A+Bの加算器ＡＤＤ１の代わりにA+B+1の加算器ＡＤＤ４を用いる。同様にA+B+6の加算器ＡＤＤ３の代わりに、A+B+6の加算器ＡＤＤ３と同様に高速なA+B+7=(A+B+1)+6の加算器（図１６参照）を用いる。
【００５７】
このように実施例１によれば、演算処理の高速性を重視し、A+B+7, A+B+10, A+B+11の演算を行う夫々の加算器ＡＤＤ６，ＡＤＤ２，ＡＤＤ５についても、上記したA+B+6の加算器ＡＤＤ３と同様に、４ビットＣＬＡの演算処理に要する時間と同等の時間で演算処理ができるようにした（図１８，図２０参照）。
【００５８】
このように図９に示す実施例１の構成では、減算時の再補数化が必要で下位からの桁上がりがない場合の演算結果を、A+Bの加算器ＡＤＤ１とA+B+6の加算器ＡＤＤ３とで求める。そして、A+Bの加算器ＡＤＤ１のキャリー出力信号digit carry outに基づき、BCD化補正の要否を判定する。尚、ここでのBCD化補正は、上記加算の場合のBCD化補正とは異なる。すなわちこの場合、上記の如く、再補数化時に15から演算結果を引いた場合に余分な６が含まれないようにする。すなわち１５から演算結果を引いた場合に１５−（ｒ＋６）となるように、予めA+Bに６を加えるA+B+6の加算器ＡＤＤ２を使用する。
【００５９】
具体的には、A+Bの加算器ＡＤＤ１のキャリー出力信号digit carry out ＣＯＵＴ＝０であって、BCD化補正が不要な場合にはA+Bの加算器ＡＤＤ１の出力に対しインバータＩＮＶ５で1の補数をとってrs0を得る。BCD化補正が必要な場合にはA+B+6の加算器ＡＤＤ３の出力に対しインバータＩＮＶ５で1の補数をとり、rs0を得る。又、減算時の再補数化の必要で下位からの桁上がりがある場合の演算結果は、A+B+1の加算器ＡＤＤ４とA+B+7の加算器ＡＤＤ６とで求める。そしてA+B+1の加算器ＡＤＤ４のキャリー出力信号digit carry outに基づき、BCD化補正の要否を判定し、BCD化補正が不要な場合(ＣＯＵＴ＝０)にはインバータＩＮＶ６でA+B+1の加算器ＡＤＤ４の演算結果に対し1の補数をとり、rs1を得る。BCD化補正が必要な場合(ＣＯＵＴ＝１)にはインバータＩＮＶ６でA+B+7の加算器ＡＤＤ６の演算結果に対し1の補数をとり、rs1を得る。
【００６０】
このように図９に示す実施例１によれば、A+B, A+B+10, A+B+6, A+B+1, A+B+11, A+B+7のディジット単位の各演算を夫々の加算器によってＡＤＤ１〜ＡＤＤ６にて並列に実行する。その結果、図４或いは図６のBCD補正回路２３，３３或いは３４によるBCD化補正処理の如くの処理が不要となる。又、図４或いは図６の９の補数化回路２４による9の補数化処理を、１の補数化を行うインバータＩＮＶ５，ＩＮＶ６によるビット反転で置き換えることができる。更に、A+B, A+B+10, A+B+6, A+B+1, A+B+11, A+B+7の各演算は、図８と共に後述するブロックキャリー伝播回路ＢＣＰ１による周知の2進加算器におけるキャリー伝播論理の実行と同時並行で実行される。その結果、高速な10進絶対値加算動作を実現できる。
【００６１】
図８に、本発明の実施例１による１０進絶対値加算器本体の全体構成を示す。図８中、m+1個のセグメント絶対値加算器ＤＡＤ０，ＤＡＤ１，...，ＤＡＤｍの各々、例えばセグメント絶対値加算器ＤＡＢ１は、実施例１の場合、図９に記載された構成、すなわち１０進数一桁の単位毎のディジット絶対値加算器の構成を有する。すなわち実施例１の１０進絶対値加算器本体は、m+1桁の１０進数を対象とした１０進絶対値加算器に適用される。したがって実施例１では、上記m+1個のセグメント絶対値加算器ＤＡＤ０，ＤＡＤ１，...，ＤＡＤｍが最大ｍ＋１桁の１０進絶対値加算結果SUMを出力する。
【００６２】
図８中 ブロックキャリー伝播回路ＢＣＰ１は、2進加算器におけるキャリー伝播回路を適用可能であり、周知のキャリールックアヘッド方式などを適用した高速なキャリー伝播回路とすることができる。ブロックキャリー伝播回路ＢＣＰ１は、セグメント絶対値加算器ＤＡＤ０，ＤＡＤ１，...，ＤＡＤｍの夫々を夫々のブロックと見なし、ブロック間のキャリー伝播論理を実行する。又、ブロックキャリー伝播回路ＢＣＰ１は、再補数化（単にrecomp或いはrとも称する）時のキャリー(BCin for recomp)と非再補数化時（単にnon-recomp或いはnrとも称する）のキャリー(BCin for non-recomp)との両方を生成する。ここで再補数化時、すなわち再補数化を行う場合とは、１０進演算が減算であり演算結果が負となる場合であり、再補数化が必要な場合を意味する。他方、非再補数化時、すなわち再補数化を行わない場合とは、１０進演算が加算の場合、或いは１０進演算が減算であり演算結果が負とならない場合であり、再補数化が不要な場合を意味する。尚、図８中、例えばBmCrは、m番目のブロック（セグメント絶対値加算器）ＤＡＤｍに対する再補数化時のキャリーを意味し、BmCnrは、m番目のブロックＤＡＤｍに対する非再補数化時のキャリーを意味する。
【００６３】
ブロックキャリー伝播回路ＢＣＰ１は、周知の2進加算器におけるキャリー伝播回路と同様の構成を有することができる。すなわち、減算時の減数オペランドの補数化における+1の演算処理（９の補数を１０の補数にする処理）を実現するため、非補数化時のキャリー入力端子nrCinに信号SUBを接続し、信号SUBが1となる減算動作の場合に、非補数化時のキャリーnrCin（最下位のCin）を1にする。
【００６４】
又、図８の例において、減算時の再補数化の要否の判定は、以下の通りになされる。すなわち、減算時(SUB=1)にブロックキャリー伝播回路ＢＣＰ１のキャリー出力信号COUTが0である場合、後述するアンド回路ＡＮＤ−ＲＥＣＯＭＰにより、再補数化時を示す信号RECOMPを1とする。信号RECOMPは各セグメント絶対値加算器ＤＡＤ０，ＤＡＤ１，...，ＤＡＤｍに入力され、各セグメント絶対値加算器ＤＡＤ０，ＤＡＤ１，...，ＤＡＤｍでは再補数化を行う。すなわち図９において、A+B, A+B+6, A+B+1, A+B+7の夫々の加算器ＡＤＤ１，ＡＤＤ３，ＡＤＤ４，ＡＤＤ６のうちの何れかの出力に対し、インバータＩＮＶ５又はＩＶＮ６で１の補数をとって演算結果を得る。
【００６５】
図１０は、図８に記載されたブロックキャリー伝播回路ＢＣＰ１を２つの２進キャリールックアヘッド回路ＢＣＬＡ１，ＢＣＬＡ２で形成した場合について説明するためのブロック図である。２つの２進キャリールックアヘッド回路ＢＣＬＡ１，ＢＣＬＡ２として、夫々周知の２進キャリールックアヘッド回路（２進演算器におけるキャリールックアヘッド回路）を適用することができる。
【００６６】
２つの２進キャリールックアヘッド回路ＢＣＬＡ１，ＢＣＬＡ２の各々は、入力された２進数のデータＡ，Ｂ（図１０では省略）に基づき、当該２進数のデータＡ，Ｂの２進絶対値加算を行う際の、上記ブロックごと（実施例１の場合４ビット）のキャリーを生成して出力する。ここで、２進キャリールックアヘッド回路ＢＣＬＡ１は、非再補数化時のキャリーを生成して出力する。すなわち、B0Cnr(Block 0 carry for non-recomp, B1Cnr(Block 1 carry for non-recomp), ..., Bm-1Cr(Block m-1 carry for non-recomp), BmCr(Block m carry for non-recomp)を生成して出力する。他方、２進キャリールックアヘッド回路ＢＣＬＡ２は、再補数化時のキャリーを生成して出力する。すなわち、B0Cr(Block 0 carry for recomp), B1Cr(Block 1 carry for recomp), ..., Bm-1Cr(Block m-1 carry for recomp), BmCr(Block m carry for recomp)を生成して出力する。
【００６７】
又、上記の如く、図８のブロックキャリー伝播回路ＢＣＰ１では、減算時の減数オペランドの補数化における+1の演算処理（９の補数を１０の補数にする処理）を実現するため、非再補数化時のキャリーnrCinとして信号SUBを接続する。その結果、信号SUBが1となる減算動作の場合にキャリーnrCinが１となる。図１０の構成例の場合、再補数化時のキャリーを生成する２進キャリールックアヘッド回路ＢＣＬＡ２の（最下位の）キャリーCinとして０が入力される。よって再補数化時には２進キャリールックアヘッド回路ＢＣＬＡ２の（最下位の）キャリーCinが０となる。
【００６８】
他方、非再補数化時のキャリーを生成する２進キャリールックアヘッド回路ＢＣＬＡ１のキャリーCinとして、上記の如く信号SUBが接続された、非再補数化時のキャリーnrCinが接続される。その結果、信号SUBが1となる減算時、非再補数化時のキャリーを生成する２進キャリールックアヘッド回路ＢＣＬＡ１の（最下位の）キャリーCinが1になる。他方、信号SUBが０となる加算時、非再補数化時のキャリーを生成する２進キャリールックアヘッド回路ＢＣＬＡ１の（最下位の）キャリーCinが０になる。
【００６９】
尚、上記の如く、減算時の非再補数化時、減数オペランドの補数化において+1（９の補数を１０の補数にする処理）を行う。他方、加算時及び減算時の再補数化時の夫々の場合には、+1（９の補数を１０の補数にする処理）は不要である。すなわち、加算時にはそもそもオペランドの補数化を行わないため、+1は不要である。
【００７０】
又、減算時の再補数化時には、上記の如く、図９のインバータＩＮＶ５，ＩＮＶ６によるビットの反転を行うことにより、９の補数を得る。又、前処理における補数化において、例えば図２の９の補数化回路１２により９の補数をとる。そして再補数化時、上記の如く、インバータによるビットの反転を行って９の補数を得る。１０の補数をとる方法としては、９の補数化をしてから＋１する方法と、−１した上で９の補数化をする方法との２通りがある。本発明においては、前処理における１０の補数化では前者の方法を採用し、結果の再補数化のための１０の補数化では後者の方法を採用することで２つの１０の補数化処理における＋１操作と−１操作を相殺させている。このように、再補数化時には、前処理における補数化の際と、再補数化の際との夫々の処理において+1操作と−１操作とを行わないことで、夫々の処理において９の補数を１０の補数にする処理である補正値1の処理を相殺し省略することができる。
【００７１】
図８の説明に戻り、図８の１０進絶対値加算器本体は更に、上記ＡＮＤ回路ＡＮＤ−ＲＥＣＯＭＰを有する。アンド回路ＡＮＤ−ＲＥＣＯＭＰには減算時の１，加算時の０の値を有する信号SUB及びブロックキャリー伝播回路ＢＣＰ１のキャリー出力信号COUTが入力され、再補数時に１、非再補数時に０後を有する信号RECOMPを出力する。信号RECOMPは各セグメント絶対値加算器ＤＡＤ０，ＤＡＤ１，...，ＤＡＤｍに供給される。アンド回路ＡＮＤ−ＲＥＣＯＭＰは、減算時(SUB=1)で且つ、ブロックキャリー伝播回路ＢＣＰ１のキャリー出力信号COUTが０の場合（減算結果が負となる場合）、信号RECOMP=1を出力する。すなわち、再補数化を行うものとする。他方、それ以外の場合、すなわち、加算時(SUB=0)は信号RECOMP=０を出力する。すなわち、再補数化を行わないものとする。又、減算時(SUB=1)で且つ、ブロックキャリー伝播回路ＢＣＰ１のキャリー出力信号COUTが１の場合（減算結果が負でない場合）、信号RECOMP=0を出力する。すなわち、再補数化を行わないものとする。
【００７２】
次に、図９に示すディジット絶対値加算器（セグメント絶対値加算器）について詳細に説明する。図９に示す本発明の実施例１によるディジット絶対値加算器は、上記６個の４ビット加算器ＡＤＤ１〜ＡＤＤ６（単に加算器ＡＤＤ１〜ＡＤＤ６とも称する）を有する。加算器ＡＤＤ１は、夫々が１０進数の１桁を表す４ビットを有する入力データＡ，Ｂに対し、A+Bの加算を行う。加算器ＡＤＤ２は、入力データＡ，Ｂに対しA+B+10の加算を行う。加算器ＡＤＤ３は、入力データＡ，Ｂに対しA+B+6の加算を行う。加算器ＡＤＤ４は、入力データＡ，Ｂに対しA+B+1の加算を行う。加算器ＡＤＤ５は、入力データＡ，Ｂに対しA+B+11の加算を行う。加算器ＡＤＤ６は、入力データＡ，Ｂに対しA+B+7の加算を行う。尚、６個の加算器ＡＤＤ１〜ＡＤＤ６は、夫々の加算演算を相互の並列に実行することができる。
【００７３】
図９のディジット絶対値加算器は更に、セレクタＳＥＬ１１〜ＳＥＬ１７を有する。セレクタＳＥＬ１１には加算器ＡＤＤ１，ＡＤＤ２の出力が夫々入力される。セレクタＳＥＬ１１は、加算器ＡＤＤ１のキャリー出力信号digit carry outが１の場合には加算器ＡＤＤ１の出力を選択出力し、加算器ＡＤＤ１のキャリー出力信号digit carry outが０の場合には加算器ＡＤＤ２の出力を選択出力する。  
セレクタＳＥＬ１２には加算器ＡＤＤ１，ＡＤＤ３の出力が夫々入力される。セレクタＳＥＬ１２は、加算器ＡＤＤ１のキャリー出力信号digit carry outが０の場合には加算器ＡＤＤ１の出力を選択出力し、加算器ＡＤＤ１のキャリー出力信号digit carry outが１の場合には加算器ＡＤＤ３の出力を選択出力する。
【００７４】
セレクタＳＥＬ１３には加算器ＡＤＤ４，ＡＤＤ５の出力が夫々入力される。セレクタＳＥＬ１３は、加算器ＡＤＤ４のキャリー出力信号digit carry outが１の場合には加算器ＡＤＤ４の出力を選択出力し、加算器ＡＤＤ４のキャリー出力信号digit carry outが０の場合には加算器ＡＤＤ５の出力を選択出力する。
【００７５】
セレクタＳＥＬ１４には加算器ＡＤＤ４，ＡＤＤ６の出力が夫々入力される。セレクタＳＥＬ１４は、加算器ＡＤＤ４のキャリー出力信号digit carry outが０の場合には加算器ＡＤＤ４の出力を選択出力し、加算器ＡＤＤ４のキャリー出力信号digit carry outが１の場合には加算器ＡＤＤ６の出力を選択出力する。
【００７６】
セレクタＳＥＬ１５にはセレクタＳＥＬ１１，ＳＥＬ１３の出力が夫々入力される。セレクタＳＥＬ１５は、上記非再補数化時のキャリーBCin for non-recomp、すなわち図８，図１０に記載されたキャリーB0Cnr, B1Cnr, ..., Bm-1Cnr, BmCnrに基づき選択動作を行う。すなわち、非再補数化時のキャリーが０の場合、セレクタＳＥＬ１５はセレクタＳＥＬ１１の出力s0を選択出力し、非再補数化時のキャリーが１の場合、セレクタＳＥＬ１５はセレクタＳＥＬ１３の出力s1を選択出力する。
【００７７】
又、インバータＩＮＶ５，ＩＮＶ６は、夫々セレクタＳＥＬ１２，ＳＥＬ１４の出力をビット単位で反転し、夫々反転結果rs0, rs1を出力する。
【００７８】
セレクタＳＥＬ１６にはインバータＩＮＶ５，ＩＮＶ６の出力rs0, rs1が夫々入力される。
【００７９】
セレクタＳＥＬ１５は、上記再補数化時のキャリーBCin for recomp、すなわち図８，図１０に記載されたキャリーB0Cr, B1Cr, ..., Bm-1Cr, BmCrに基づき選択動作を行う。すなわち、再補数化時のキャリーが０の場合、セレクタＳＥＬ１６はインバータＩＮＶ５の出力rs0を選択出力し、再補数化時のキャリーが１の場合、セレクタＳＥＬ１６はインバータＩＮＶ６の出力rs1を選択出力する。
【００８０】
セレクタＳＥＬ１７にはセレクタＳＥＬ１５，ＳＥＬ１６の出力r, rsが夫々入力される。セレクタ１７は、図８に示す信号RECOMPの値が０の場合（非再補数化時）、セレクタＳＥＬ１５の出力sを選択出力(result)し、信号RECOMPの値が１の場合（再補数化時）、セレクタＳＥＬ１６の出力rsを選択出力(result)する。
【００８１】
尚、図８に示す本発明の実施例１の１０進絶対値加算器本体の入力データＡ，Ｂは、演算に先立つ上記前処理を受けている。すなわち図２とともに上記した加算回路１３により、片方のオペランドop1に対し、ディジット単位で+6を行う。すなわち+6のオフセットが加算される。その結果上記のブロックキャリー伝播回路ＢＣＰ１が有する周知の2進演算器におけるキャリー伝播論理によって適切に10進演算のキャリー伝播が実施される。
【００８２】
図９の構成では下位からの桁上がりがないときの演算結果をA+B、A+B+10、A+B+6の夫々の加算器ＡＤＤ１，ＡＤＤ２，ＡＤＤ３を使って生成する。尚、下位からの桁上がりがない場合は上記BCin for non-recomp, BCin for recompの夫々の信号が０となる。その結果、セレクタＳＥＬ１５，ＳＥＬ１６により、上記夫々の加算器ＡＤＤ１，ＡＤＤ２，ＡＤＤ３の演算結果或いは演算結果がビット反転された結果が選択出力される。
【００８３】
ここで上記の如く既に各ディジットに対して +6のオフセットが加算されているため、A+Bの加算器ＡＤＤ1のdigit carry out信号を用いて上記+6のオフセットの加算がない場合の演算結果が9を超えたか否かを判定できる。加算時或いは再補数化が不要な減算時には、A+Bの加算器ＡＤＤ１の演算結果が、上記+6のオフセットの加算がない場合のA+Bの演算結果が9を越える場合の演算結果のBCDコードである。又、A+B+10の加算器ＡＤＤ２の演算結果が、上記+6のオフセットの加算がない場合の演算結果が9を越えない場合の演算結果のBCDコードである。セレクタＳＥＬ１１により、A+Bの加算器ＡＤＤ１のdigit carry out信号が1の時には、A+Bの加算器ＡＤＤ１の演算結果が選択出力される(s0)。又、A+Bの加算器ＡＤＤ１のdigit carry out信号が0の時には、A+B+10の加算器ＡＤＤ２の演算結果が選択出力(s0)される。
【００８４】
他方、図９において、下位からの桁上がりがないときの減算時、再補数化が必要な場合、A+B+6の加算器ＡＤＤ３の演算結果をインバータＩＮＶ５で反転して得た値が、上記+6のオフセットの加算がない場合の演算結果が9を越える場合の演算結果のBCDコードである。又、A+Bの加算器ＡＤＤ１の演算結果をインバータＩＮＶ５で反転して得た値が、上記+6のオフセットの加算がない場合の演算結果が9を越えない場合の演算結果のBCDコードである。セレクタＳＥＬ１２により、A+Bの加算器ＡＤＤ１のdigit carry out信号が1の時には、A+B+6の加算器ＡＤＤ３の演算結果が選択出力され、インバータＩＮＶ５によってビットが反転される(rs0)。又、A+Bの加算器ＡＤＤ１のdigit carry out信号が0の時には、A+Bの加算器ＡＤＤ１の演算結果が選択出力され、インバータＩＮＶ５によってビットが反転される(rs0)。尚、インバータＩＮＶ５によるビットの反転は上記の如くBCD化補正（すなわち１の補数をとる）処理（再補数化）である。
【００８５】
他方、図９の構成で下位からの桁上がりが有るときの演算結果をA+B+1、A+B+11、A+B+7の夫々の加算器ＡＤＤ４，ＡＤＤ５，ＡＤＤ６を使って生成する。尚、下位からの桁上がりが有る場合は上記BCin for non-recomp, BCin for recompの夫々の信号が１となる。その結果、セレクタＳＥＬ１５，ＳＥＬ１６により、上記夫々の加算器ＡＤＤ４，ＡＤＤ５，ＡＤＤ６演算結果或いは演算結果がビット反転された結果が選択出力される。
【００８６】
この場合も上記の如く既に各ディジットに対して +6のオフセットが加算されているため、A+B+1の加算器ＡＤＤ４のdigit carry out信号を用いて上記+6のオフセットの加算がない場合の演算結果が9を超えたか否かを判定できる。加算時或いは再補数化が不要な減算時には、A+B+1の加算器ＡＤＤ４の演算結果が、上記+6のオフセットの加算がない場合の演算結果が9を越える場合の演算結果のBCDコードである。又、A+B+11の加算器ＡＤＤ４の演算結果が、上記+6のオフセットの加算がない場合の演算結果が9を越えない場合の演算結果のBCDコードである。セレクタＳＥＬ１３により、A+B+1の加算器ＡＤＤ４のdigit carry out信号が1の時には、A+B+1の加算器ＡＤＤ４の演算結果が選択出力される(s1)。又、A+B+1の加算器ＡＤＤ４のdigit carry out信号が0の時には、A+B+11の加算器ＡＤＤ５の演算結果が選択出力(s1)される。
【００８７】
又、図９において、下位からの桁上がりが有るとき、減算時、再補数化が必要な場合、A+B+7の加算器ＡＤＤ6の演算結果をインバータＩＮＶ６で反転して得た値が、上記+6のオフセットの加算がない場合の演算結果が9を越える場合の演算結果のBCDコードである。又、A+B+1の加算器ＡＤＤ４の演算結果をインバータＩＮＶ６で反転して得た値が、上記+6のオフセットの加算がない場合の演算結果が9を越えない場合の演算結果のBCDコードである。セレクタＳＥＬ１４により、A+B+1の加算器ＡＤＤ４のdigit carry out信号が1の時には、A+B+7の加算器ＡＤＤ６の演算結果が選択出力され、インバータＩＮＶ６によってビットが反転される(rs1)。又、A+B+1の加算器ＡＤＤ４のdigit carry out信号が0の時には、A+B+1の加算器ＡＤＤ４の演算結果が選択出力され、インバータＩＮＶ６によってビットが反転される(rs1)。尚、インバータＩＮＶ６によるビットの反転は上記の如くBCD化補正（すなわち１の補数をとる）処理（再補数化）である。
【００８８】
上記の如く、図８に示すブロックキャリー伝播回路ＢＣＰ１が有する2進演算器におけるキャリー伝播論理により、非再補数化時のキャリー(BCin for non-recomp)と再補数化時のキャリー(BCin for recomp)とが供給される。非再補数化時のキャリー(BCin for non-recomp)に基づき、キャリーが0の場合にはセレクタＳＥＬ１５が上記値s0を選択し、1の場合にはs1を選択し、sを出力する。又、再補数化時のキャリー(BCin for recomp)に基づき、セレクタ１６が、キャリーが0の場合にはrs0を選択し、1の場合にはrs1を選択し、rsを出力する。
【００８９】
更に、図８に示すアンド回路ＡＮＤ−ＲＥＣＯＭＰによって供給される再補数化の要否を示す信号RECOMPに基づき、セレクタＳＥＬ１７は、非再補数化時(RECOMP=0)には、出力sを選択し、再補数化時(RECOMP=1)は、出力rsを選択して結果resultを出力する。
【００９０】
次に、図９に記載された加算器ＡＤＤ１〜ＡＤＤ６の夫々の内部回路構成の一例につき、図とともに説明する。
【００９１】
図１１はA+Bの加算器ＡＤＤ１の回路構成の一例を示す回路図である。図１１の例は、入力データＡ及びＢの夫々の４ビットa0, a1, a2, a3及びb0, b1, b2, b3並びに入力データＡ及びＢの夫々の偶数パリティビットap及びbpが入力される。そして図１１の例は、A+Bの演算結果の４ビットs0, s1, s2, s3並びにそのパリティビットspを出力する。
【００９２】
図１１の例は、入力ビットa0, b0を入力するＮＡＮＤ回路ＮＡＮＤ１１，a0, b0を入力してh0を出力するＥＸＯＲ回路ＥＸＯ１０，ＮＡＮＤ１１の出力を反転してg0を出力するインバータＩＮＶ１０を有する。図１１の例は更に、h0をバッファリングして出力ビットs0を出力するバッファＢＵＦ２０を有する。
図１１の例は更に、入力ビットa1, b1を入力するＮＡＮＤ回路ＮＡＮＤ１２，a1, b1を入力するＮＯＲ回路ＮＯＲ１１，a1, b1を入力してh1を出力するＥＸＯＲ回路ＥＸＯ１１を有する。図１１の例は更に、ＮＡＮＤ１２及びＮＯＲ１１の出力を夫々反転してp1, g1を夫々出力するインバータＩＮＶ１１，ＩＮＶ１２、並びにh1及びg0を入力して出力ビットs1を出力するＥＸＯＲ回路ＥＸＯ２１を有する。
【００９３】
図１１の例は更に、入力ビットa2, b2を入力するＮＡＮＤ回路ＮＡＮＤ１３，a2, b2を入力するＮＯＲ回路ＮＯＲ１２，a2, b2を入力しh2を出力するＥＸＯＲ回路ＥＸＯ１２を有する。図１１の例は更に、ＮＡＮＤ１３及びＮＯＲ１２の出力を夫々反転してp2, g2を夫々出力するインバータＩＮＶ１３，ＩＮＶ１４を有する。図１１の例は更に、p1及びg0を入力するＮＡＮＤ回路ＮＡＮＤ２６，g1を反転するインバータＩＮＶ２１，ＮＡＮＤ２６及びインバータ２１の夫々の出力を入力しc2を出力するＮＡＮＤ回路ＮＡＮＤ２７、h2及びc2を入力し出力ビットs2を出力するＥＸＯＲ回路ＥＸＯ２２を有する。
【００９４】
図１１の例は更に、入力ビットa3, b3を入力しh3を出力するＥＸＯＲ回路ＥＸＯ１３，g0, p1, p2を入力するＮＡＮＤ２８，g1, p2を入力するＮＡＮＤ回路ＮＡＮＤ２９、g2を反転するインバータＩＮＶ２２を有する。図１１の例は更に、ＮＡＮＤ２８，ＮＡＮＤ２９，ＩＮＶ２２の夫々の出力を入力し、c3を出力するＮＡＮＤ回路ＮＡＮＤ３０、h3, c3を入力し出力ビットs3を出力するＥＸＯＲ回路ＥＸＯ２３を有する。
【００９５】
図１１の例は更に、入力パリティビットap, bpを入力するＥＸＯＲ回路ＥＸＯ３０，上記した出力ビットs0〜s3を生成する際に生成される夫々の値を入力するＮＡＮＤ回路ＮＡＮＤ２１，ＮＡＮＤ２２，ＮＡＮＤ２３，ＮＡＮＤ２４を有する。図１１の例は更に、ＮＡＮＤ２１，ＮＡＮＤ２２，ＮＡＮＤ２３，ＮＡＮＤ２４の夫々の出力を入力しpcを出力するＮＡＮＤ回路ＮＡＮＤ２５、pcとＥＸＯ３０の出力とを入力し、出力パリティビットspを出力するＥＸＯＲ回路ＥＸＯ３１を有する。
【００９６】
図１１の例では上記した構成により、下位ビットの演算結果から生成されるキャリー（桁上げ）を考慮した上で演算結果の夫々のビットs0, s1, s2, s3を生成する。
【００９７】
図１２はA+B+1の加算器ＡＤＤ４の回路構成の一例を示す回路図である。図１２の例は、入力データＡ及びＢの夫々の４ビットa0, a1, a2, a3及びb0, b1, b2, b3並びに入力データＡ及びＢの夫々の偶数パリティビットap及びbpが入力される。そして図１２の例は、A+B+1の演算結果の４ビットs0, s1, s2, s3並びにそのパリティビットspを出力する。
【００９８】
図１２の例は、入力ビットa0, b0を入力するＮＯＲ回路ＮＯＲ１１０，a0, b0を入力してh0を出力するＥＸＯＲ回路ＥＸＯ１１０，ＮＯＲ１１０の出力を反転してp0を出力するインバータＩＮＶ１１０を有する。図１２の例は更に、h0を反転して出力ビットs0を出力するインバータＩＮＶ１２０を有する。
図１２の例は更に、入力ビットa1, b1を入力するＮＡＮＤ回路ＮＡＮＤ１１２，a1, b1を入力するＮＯＲ回路ＮＯＲ１１１，a1, b1を入力してh1を出力するＥＸＯＲ回路ＥＸＯ１１１を有する。図１２の例は更に、ＮＡＮＤ１１２及びＮＯＲ１１１の出力を夫々反転してp1, g1を夫々出力するインバータＩＮＶ１１１，ＩＮＶ１１２、並びにh1及びp0を入力して出力ビットs1を出力するＥＸＯＲ回路ＥＸＯ１２１を有する。
【００９９】
図１２の例は更に、入力ビットa2, b2を入力するＮＡＮＤ回路ＮＡＮＤ１１３，a2, b2を入力するＮＯＲ回路ＮＯＲ１１２，a2, b2を入力しh2を出力するＥＸＯＲ回路ＥＸＯ１１２を有する。図１２の例は更に、ＮＡＮＤ１１３及びＮＯＲ１１２の出力を夫々反転してp2, g2を夫々出力するインバータＩＮＶ１１３，ＩＮＶ１１４を有する。図１２の例は更に、p1及びp0を入力するＮＡＮＤ回路ＮＡＮＤ１２６，g1を反転するインバータＩＮＶ１２１，ＮＡＮＤ１２６及びインバータ１２１の夫々の出力を入力しc2を出力するＮＡＮＤ回路ＮＡＮＤ１２７、h2及びc2を入力し出力ビットs2を出力するＥＸＯＲ回路ＥＸＯ１２２を有する。
【０１００】
図１２の例は更に、入力ビットa3, b3を入力しh3を出力するＥＸＯＲ回路ＥＸＯ１１３，p0, p1, p2を入力するＮＡＮＤ１２８，g1, p2を入力するＮＡＮＤ回路ＮＡＮＤ１２９、g2を反転するインバータＩＮＶ１２２を有する。図１２の例は更に、ＮＡＮＤ１２８，ＮＡＮＤ１２９，ＩＮＶ１２２の夫々の出力を入力し、c3を出力するＮＡＮＤ回路ＮＡＮＤ１３０、h3, c3を入力し出力ビットs3を出力するＥＸＯＲ回路ＥＸＯ１２３を有する。
【０１０１】
図１２の例は更に、入力パリティビットap, bpを入力するＥＸＯＲ回路ＥＸＯ１３０，上記した出力ビットs0〜s3を生成する際に生成される夫々の値を入力するＮＡＮＤ回路ＮＡＮＤ１２１，ＮＡＮＤ１２２，ＮＡＮＤ１２３，ＮＡＮＤ１２４を有する。図１２の例は更に、ＮＡＮＤ１２１，ＮＡＮＤ１２２，ＮＡＮＤ１２３，ＮＡＮＤ１２４の夫々の出力を入力しpcを出力するＮＡＮＤ回路ＮＡＮＤ１２５、pcとＥＸＯ１３０の出力とを入力し、出力パリティビットspを出力するＥＸＯＲ回路ＥＸＯ１３１を有する。
【０１０２】
図１２の例では上記した構成により、下位ビットの演算結果から生成されるキャリーを考慮した上で演算結果の夫々のビットs0, s1, s2, s3を生成する。
【０１０３】
次に図１３，図１４，図１５とともに、A+B+6の加算器ＡＤＤ３について説明する。図１３の例は、入力データＡ及びＢの夫々の４ビットa0, a1, a2, a3及びb0, b1, b2, b3並びに入力データＡ及びＢの夫々の偶数パリティビットap及びbpが入力される。そして図１３の例は、A+B+6(実際には後述のようにA+B-10)の演算結果の４ビットs0, s1, s2, s3並びにそのパリティビットspを出力する。
【０１０４】
図１３の例は、入力ビットa0, b0を入力するＮＡＮＤ回路ＮＡＮＤ２１１，a0, b0を入力してh0を出力するＥＸＯＲ回路ＥＸＯ２１０，ＮＡＮＤ２１１の出力を反転してg0を出力するインバータＩＮＶ２１０を有する。図１３の例は更に、h0をバッファリングして出力ビットs0を出力するバッファＢＵＦ２２０を有する。
図１３の例は更に、入力ビットa1, b1を入力するＮＡＮＤ回路ＮＡＮＤ２１２，a1, b1を入力するＮＯＲ回路ＮＯＲ２１１，a1, b1を入力してh1を出力するＥＸＯＲ回路ＥＸＯ２１１を有する。図１３の例は更に、ＮＡＮＤ２１２及びＮＯＲ２１１の出力を夫々反転してp1, g1を夫々出力するインバータＩＮＶ２１１，ＩＮＶ２１２、並びにh1及びg0を入力して出力ビットs1を出力するＥＸNＯＲ回路ＥＸＮＯ２２１を有する。
【０１０５】
図１３の例は更に、入力ビットa2, b2を入力するＮＡＮＤ回路ＮＡＮＤ２１３，a2, b2を入力するＮＯＲ回路ＮＯＲ２１２，a2, b2を入力しh2を出力するＥＸＯＲ回路ＥＸＯ２１２を有する。図１３の例は更に、ＮＡＮＤ２１３及びＮＯＲ２１２の出力を夫々反転してp2, g2を夫々出力するインバータＩＮＶ２１３，ＩＮＶ２１４を有する。図１３の例は更に、h2及びc2を入力し出力ビットs2を出力するＥＸＯＲ回路ＥＸＯ２２２、c2を出力するＮＡＮＤ回路ＮＡＮＤ２５０，ＮＡＮＤ２５０に夫々の出力を入力するＮＡＮＤ回路ＮＡＮＤ２４８，ＮＡＮＤ２４９を有する。
【０１０６】
図１３の例は更に、入力ビットa3, b3を入力しh3を出力するＥＸＯＲ回路ＥＸＯ２１３，h3及びc3を入力し出力ビットs3を出力するＥＸNＯＲ回路ＥＸＮＯ２２３を有する。図１３の例は更に、c3を出力するＮＡＮＤ回路ＮＡＮＤ２５５，ＮＡＮＤ２５５に夫々の出力を入力するＮＡＮＤ回路ＮＡＮＤ２５１，ＮＡＮＤ２５２，ＮＡＮＤ２５３，ＮＡＮＤ２５４を有する。
【０１０７】
図１３の例は更に、入力パリティビットap, bpを入力するＥＸＯＲ回路ＥＸＯ２３０，上記した出力ビットs0〜s3を生成する際に生成される夫々の値を入力するＮＡＮＤ回路ＮＡＮＤ２４１，ＮＡＮＤ２４２，ＮＡＮＤ２４３，ＮＡＮＤ２４４、ＮＡＮＤ２４５を有する。図１３の例は更に、ＮＡＮＤ２４１，ＮＡＮＤ２４２，ＮＡＮＤ２４３，ＮＡＮＤ２４４、ＮＡＮＤ２４５の夫々の出力を夫々入力するＮＡＮＤ２４６，ＮＡＮＤ２４７を有する。図１３の例は更に、ＮＡＮＤ２４７，ＮＡＮＤ２４８の夫々の出力を入力しpcを出力するＯＲ回路ＯＲ２１１、pcとＥＸＯ２３０の出力とを入力し、出力パリティビットspを出力するＥＸＯＲ回路ＥＸＯ２３１を有する。
【０１０８】
図１３の例では上記した構成により、下位ビットの演算結果から生成されるキャリー及びボローを考慮した上で演算結果の各ビットs0, s1, s2, s3を生成する。
【０１０９】
ここで図１３の例に関し、A+B+6をそのまま求めると、キャリーが二重に発生する場合の考慮が複雑になるため、図１３の例は、代りにA+B-10を計算する。図１３の例ではキャリーとボローの伝播が排他になるように回路を形成することで、伝播経路を1つで済ませる。ここで10は6に対する16の補数になるので、４ビットの演算では、４ビット内の演算結果のビットのパターンは、A+B+6とA+B-10とで同じになる。参考のために図１４に、４ビットで表現できる数値Dに対し、D+6、D-10を夫々行った場合の下位４ビットの結果のパターンが同じになることを示す。図１４では、４ビットのデータDに対し、演算結果の符号等の判定がつくように、2進数の表現として上位に２ビット追加し、６ビットに拡張している。尚、図１４中、括弧()内に、夫々対応する符号付の10進表現を示す。図１４から、D+6とD-10とで、下位４ビットの2進数のビットパターンが同じになることが明らかである。
【０１１０】
演算結果の出力ビットs3〜s0を求めるには、入力ビットa2〜a0、b2〜b0から生成されるキャリーとボローとが必要である。図１５に各ビットから生成されるキャリーとボローの内訳を示す。図１５中、bitはビット番号(a2〜a0、b2〜b0の数字部分)を示し、generateは、ビット自体が生成するキャリーを示し、generateの伝播は、下位ビットが生成したキャリーの伝播を示す。又、borrowは、ビット自体が生成するボローを示し、borrowの伝播は、下位ビットが生成したボローの伝播を示す。
【０１１１】
以下に、演算結果 s0, s1, s2, s3 、演算結果の偶数パリティ sp とキャリーもしくはボローによるデータの反転条件 c0, c1, c2, c3 および、パリティの反転する条件 pc をまとめた論理式を示す（数４）。尚、数４の論理式において、数１に示す演算子
【０１１２】
【数１】
2012077185.tif 000003
は、ＥＸＯＲ論理演算を実行する演算子を示し、数２に示す演算子
【０１１３】
【数２】
2012077185.tif 000004
は、ＡＮＤ論理演算を実行する演算子を示し、数３に示す演算子
【０１１４】
【数３】
2012077185.tif 000005
は、ＯＲ論理演算を実行する演算子を示す。
【０１１５】
【数４】
2012077185.tif 000006
次に図１６，図１７とともに、A+B+7の加算器ＡＤＤ６について説明する。図１６の例は、入力データＡ及びＢの夫々の４ビットa0, a1, a2, a3及びb0, b1, b2, b3並びに入力データＡ及びＢの夫々の偶数パリティビットap及びbpが入力される。そして図１６の例は、A+B+7(実際には後述のようにA+B-9)の演算結果の４ビットs0, s1, s2, s3並びにそのパリティビットspを出力する。
【０１１６】
図１６の例は、入力ビットa0, b0を入力するＮＯＲ回路ＮＯＲ３１０，a0, b0を入力してh0を出力するＥＸＯＲ回路ＥＸＯ３１０，ＮＯＲ３１０の出力を反転してp0を出力するインバータＩＮＶ３１０を有する。図１６の例は更に、h0を反転して出力ビットs0を出力するインバータＩＮＶ３２０を有する。
図１６の例は更に、入力ビットa1, b1を入力するＮＡＮＤ回路ＮＡＮＤ３１２，a1, b1を入力するＮＯＲ回路ＮＯＲ３１１，a1, b1を入力してh1を出力するＥＸＯＲ回路ＥＸＯ３１１を有する。図１６の例は更に、ＮＡＮＤ３１２及びＮＯＲ３１１の出力を夫々反転してp1, g1を夫々出力するインバータＩＮＶ３１１，ＩＮＶ３１２、並びに出力ビットs1を出力するＥＸＯＲ回路ＥＸＯ３２１を有する。
【０１１７】
図１６の例は更に、入力ビットa2, b2を入力するＮＡＮＤ回路ＮＡＮＤ３１３，a2, b2を入力するＮＯＲ回路ＮＯＲ３１２，a2, b2を入力しh2を出力するＥＸＯＲ回路ＥＸＯ３１２を有する。図１６の例は更に、ＮＡＮＤ３１３及びＮＯＲ３１２の出力を夫々反転してp2, g2を夫々出力するインバータＩＮＶ３１３，ＩＮＶ３１４を有する。図１６の例は更に、h2及びc2を入力し出力ビットs2を出力するＥＸＯＲ回路ＥＸＯ３２２、c2を出力するＮＡＮＤ回路ＮＡＮＤ３６８，ＮＡＮＤ３６８に夫々の出力を入力するＮＡＮＤ回路ＮＡＮＤ３６６，ＮＡＮＤ３６７を有する。
【０１１８】
図１６の例は更に、入力ビットa3, b3を入力しh3を出力するＥＸＯＲ回路ＥＸＯ３１３，h3及びc3を入力し出力ビットs3を出力するＥＸNＯＲ回路ＥＸＮＯ３２３を有する。図１６の例は更に、c3を出力するＮＡＮＤ回路ＮＡＮＤ３７３，ＮＡＮＤ３７３に夫々の出力を入力するＮＡＮＤ回路ＮＡＮＤ３６９，ＮＡＮＤ３７０，ＮＡＮＤ３７１，ＮＡＮＤ３７２を有する。
【０１１９】
図１６の例は更に、入力パリティビットap, bpを入力するＥＸＯＲ回路ＥＸＯ３３０，上記した出力ビットs0〜s3を生成する際に生成される夫々の値を入力するＮＡＮＤ回路ＮＡＮＤ３６１，ＮＡＮＤ３６２，ＮＡＮＤ３６３，ＮＡＮＤ３６４を有する。図１６の例は更に、ＮＡＮＤ３６１，ＮＡＮＤ３６２，ＮＡＮＤ３６３，ＮＡＮＤ３６４の夫々の出力を夫々入力するＮＡＮＤ３６５を有する。図１６の例は更に、ＮＡＮＤ３６５の出力pcとＥＸＯ３３０の出力とを入力し、出力パリティビットspを出力するＥＸＯＲ回路ＥＸＯ３３１を有する。
【０１２０】
図１６の例では上記した構成により、下位ビットの演算結果から生成されるキャリー及びボローを考慮した上で演算結果の各ビットs0, s1, s2, s3を生成する。
【０１２１】
ここで図１６の例に関し、A+B+7をそのまま求めると、キャリーが二重に発生する場合の考慮が複雑になるため、図１６の例では、代りにA+B-9を計算する。図１６の例ではキャリーとボローの伝播が排他になるように回路を形成することで、伝播経路を1つで済ませる。ここで９は７に対する16の補数になるので、４ビットの演算では、４ビット内の結果のビットのパターンは、A+B+7とA+B-9とで同じになる。又、図１７に各ビットから生成されるキャリーとボローの内訳を示す。
【０１２２】
以下に、演算結果 s0, s1, s2, s3 、演算結果の偶数パリティ sp とキャリーもしくはボローによるデータの反転条件 c0, c1, c2, c3 および、パリティの反転する条件 pc をまとめた論理式を示す（数５）。
【０１２３】
【数５】
2012077185.tif 000007
次に図１８，図１９とともに、A+B+10の加算器ＡＤＤ２について説明する。図１８の例は、入力データＡ及びＢの夫々の４ビットa0, a1, a2, a3及びb0, b1, b2, b3並びに入力データＡ及びＢの夫々の偶数パリティビットap及びbpが入力される。そして図１８の例は、A+B+10(実際には後述のようにA+B-6)の演算結果の４ビットs0, s1, s2, s3並びにそのパリティビットspを出力する。
【０１２４】
図１8の例は、入力ビットa0, b0を入力するＮＡＮＤ回路ＮＡＮＤ４１１，a0, b0を入力してh0を出力するＥＸＯＲ回路ＥＸＯ４１０，ＮＡＮＤ４１１の出力を反転してg0を出力するインバータＩＮＶ４１０を有する。図１8の例は更に、h0をバッファリングして出力ビットs0を出力するバッファＢＵＦ４２０を有する。
図１８の例は更に、入力ビットa1, b1を入力するＮＡＮＤ回路ＮＡＮＤ４１２，a1, b1を入力するＮＯＲ回路ＮＯＲ４１１，a1, b1を入力してh1を出力するＥＸＯＲ回路ＥＸＯ４１１を有する。図１８の例は更に、ＮＡＮＤ４１２及びＮＯＲ４１１の出力を夫々反転してp1, g1を夫々出力するインバータＩＮＶ４１１，ＩＮＶ４１２、並びに出力ビットs1を出力するＥＸNＯＲ回路ＥＸＮＯ４２１を有する。
【０１２５】
図１８の例は更に、入力ビットa2, b2を入力するＮＡＮＤ回路ＮＡＮＤ４１３，a2, b2を入力するＮＯＲ回路ＮＯＲ４１２，a2, b2を入力しh2を出力するＥＸＯＲ回路ＥＸＯ４１２を有する。図１８の例は更に、ＮＡＮＤ４１３及びＮＯＲ４１２の出力を夫々反転してp2, g2を夫々出力するインバータＩＮＶ４１３，ＩＮＶ４１４を有する。図１８の例は更に、h2及びc2を入力し出力ビットs2を出力するＥＸNＯＲ回路ＥＸＮＯ４２２、c2を出力するＮＡＮＤ回路ＮＡＮＤ４８８，ＮＡＮＤ４８８に夫々の出力を入力するＮＡＮＤ回路ＮＡＮＤ４８６，ＮＡＮＤ４８７を有する。
【０１２６】
図１８の例は更に、入力ビットa3, b3を入力しh3を出力するＥＸＯＲ回路ＥＸＯ４１３，h3及びc3を入力し出力ビットs3を出力するＥＸＯＲ回路ＥＸＯ４２３を有する。図１８の例は更に、c3を出力するＮＡＮＤ回路ＮＡＮＤ４９３，ＮＡＮＤ４９３に夫々の出力を入力するＮＡＮＤ回路ＮＡＮＤ４８９，ＮＡＮＤ４９０，ＮＡＮＤ４９１，ＮＡＮＤ４２２を有する。
【０１２７】
図１８の例は更に、入力パリティビットap, bpを入力するＥＸＯＲ回路ＥＸＯ４３０，上記した出力ビットs0〜s3を生成する際に生成される夫々の値を入力するＮＡＮＤ回路ＮＡＮＤ４８１，ＮＡＮＤ４８２，ＮＡＮＤ４８３，ＮＡＮＤ４８４を有する。図１８の例は更に、ＮＡＮＤ４８１，ＮＡＮＤ４８２，ＮＡＮＤ４８３，ＮＡＮＤ４８４の夫々の出力を夫々入力するＮＡＮＤ４８５を有する。図１８の例は更に、ＮＡＮＤ４８５の出力pcとＥＸＯ４３０の出力とを入力し、出力パリティビットspを出力するＥＸＯＲ回路ＥＸＯ４３１を有する。
【０１２８】
図１８の例では上記した構成により、下位ビットの演算結果から生成されるキャリー及びボローを考慮した上で演算結果の各ビットs0, s1, s2, s3を生成する。
【０１２９】
ここで図１８の例に関し、A+B+10をそのまま求めると、キャリーが二重に発生する場合の考慮が複雑になるため、図１８の例では、代りにA+B-6を計算する。図１８の例ではキャリーとボローの伝播が排他になるように回路を形成することで、伝播経路を1つで済ませる。ここで6は10に対する16の補数になるので、４ビットの演算では、４ビット内の結果のビットのパターンは、A+B+10とA+B-6とで同じになる。又、図１９に各ビットから生成されるキャリーとボローの内訳を示す。
【０１３０】
以下に、演算結果 s0, s1, s2, s3 、演算結果の偶数パリティ sp とキャリーもしくはボローによるデータの反転条件 c0, c1, c2, c3 および、パリティの反転する条件 pc をまとめた論理式を示す（数６）。
【０１３１】
【数６】
2012077185.tif 000008
次に図２０，図２１とともに、A+B+11の加算器ＡＤＤ５について説明する。図２０の例は、入力データＡ及びＢの夫々の４ビットa0, a1, a2, a3及びb0, b1, b2, b3並びに入力データＡ及びＢの夫々の偶数パリティビットap及びbpが入力される。そして図２０の例は、A+B+11(実際には後述のようにA+B-5)の演算結果の４ビットs0, s1, s2, s3並びにそのパリティビットspを出力する。
【０１３２】
図２０の例は、入力ビットa0, b0を入力するＮＯＲ回路ＮＯＲ５１０，a0, b0を入力してh0を出力するＥＸＯＲ回路ＥＸＯ５１０，ＮＯＲ５１０の出力を反転してp0を出力するインバータＩＮＶ５１０を有する。図２０の例は更に、h0を反転して出力ビットs0を出力するインバータＩＮＶ５２０を有する。
図２０の例は更に、入力ビットa1, b1を入力するＮＡＮＤ回路ＮＡＮＤ５１２，a1, b1を入力するＮＯＲ回路ＮＯＲ５１１，a1, b1を入力してh1を出力するＥＸＯＲ回路ＥＸＯ５１１を有する。図２０の例は更に、ＮＡＮＤ５１２及びＮＯＲ５１１の出力を夫々反転してp1, g1を夫々出力するインバータＩＮＶ５１１，ＩＮＶ５１２、並びに出力ビットs1を出力するＥＸＯＲ回路ＥＸＯ５２１を有する。
【０１３３】
図２０の例は更に、入力ビットa2, b2を入力するＮＡＮＤ回路ＮＡＮＤ５１３，a2, b2を入力するＮＯＲ回路ＮＯＲ５１２，a2, b2を入力しh2を出力するＥＸＯＲ回路ＥＸＯ５１２を有する。図２０の例は更に、ＮＡＮＤ５１３及びＮＯＲ５１２の出力を夫々反転してp2, g2を夫々出力するインバータＩＮＶ５１３，ＩＮＶ５１４を有する。図２０の例は更に、h2及びc2を入力し出力ビットs2を出力するＥＸNＯＲ回路ＥＸＮＯ５２２、c2を出力するＮＡＮＤ回路ＮＡＮＤ５１１０，ＮＡＮＤ５１１０に夫々の出力を入力するＮＡＮＤ回路ＮＡＮＤ５１０８，ＮＡＮＤ５１０９を有する。
【０１３４】
図２０の例は更に、入力ビットa3, b3を入力しh3を出力するＥＸＯＲ回路ＥＸＯ５１３，h3及びc3を入力し出力ビットs3を出力するＥＸＯＲ回路ＥＸＯ５２３を有する。図２０の例は更に、c3を出力するＮＡＮＤ回路ＮＡＮＤ５１１５，ＮＡＮＤ５１１５に夫々の出力を入力するＮＡＮＤ回路ＮＡＮＤ５１１１，ＮＡＮＤ５１１２，ＮＡＮＤ５１１３，ＮＡＮＤ５１１４を有する。
【０１３５】
図２０の例は更に、入力パリティビットap, bpを入力するＥＸＯＲ回路ＥＸＯ５３０，上記した出力ビットs0〜s3を生成する際に生成される夫々の値を入力するＮＡＮＤ回路ＮＡＮＤ５１０１，ＮＡＮＤ５１０２，ＮＡＮＤ５１０３，ＮＡＮＤ５１０４、ＮＡＮＤ５１０５を有する。図２０の例は更に、ＮＡＮＤ５１０１，ＮＡＮＤ５１０２，ＮＡＮＤ５１０３，ＮＡＮＤ５１０４，ＮＡＮＤ５１０５の夫々の出力を夫々入力するＮＡＮＤ５１０６，ＮＡＮＤ５１０７を有する。図２０の例は更に、ＮＡＮＤ５１０６，ＮＡＮＤ５１０７の夫々の出力を入力し、pcを出力するＯＲ回路ＯＲ５１１、pcとＥＸＯ５３０の出力とを入力し、出力パリティビットspを出力するＥＸＯＲ回路ＥＸＯ５３１を有する。
【０１３６】
図２０の例では上記した構成により、下位ビットの演算結果から生成されるキャリー及びボローを考慮した上で演算結果の各ビットs0, s1, s2, s3を生成する。
【０１３７】
ここで図２０の例に関し、A+B+11をそのまま求めると、キャリーが二重に発生する場合の考慮が複雑になるため、図２０の例では、代りにA+B-5を計算する。図２０の例ではキャリーとボローの伝播が排他になるように回路を形成することで、伝播経路を1つで済ませる。ここで5は11に対する16の補数になるので、４ビットの演算では、４ビット内の結果のビットのパターンは、A+B+11とA+B-5とで同じになる。又、図２１に各ビットから生成されるキャリーとボローの内訳を示す。
【０１３８】
以下に、演算結果 s0, s1, s2, s3 、演算結果の偶数パリティ sp とキャリーもしくはボローによるデータの反転条件 c0, c1, c2, c3 および、パリティの反転する条件 pc をまとめた論理式を示す（数７）。
【０１３９】
【数７】
2012077185.tif 000009
以下に本発明の実施例２について説明する。実施例2では、上述した実施例1において、図８に示すセグメント絶対値加算器ＤＡＤ０，ＤＡＤ１，...，ＤＡＤｍの各々を、ディジット単位ではなく、複数のディジット単位とする。すなわち実施例２の場合、セグメント絶対値加算器ＤＡＤ０，ＤＡＤ１，...，ＤＡＤｍの各々、例えばセグメント絶対値加算器ＤＡＤ１が、図２２で示す如く、複数（図２２の例の場合、４個）のディジット加算器ブロックＤＡＢ１〜ＤＡＢ４を有する。
【０１４０】
図２２に示すセグメント絶対値加算器はこのように４ディジット分の構成を有し、１６ビット（４×４＝１６）分（［１５：０］）の構成を有する。又、図２２に示すセグメント絶対値加算器は、ローカルキャリールックアヘッド回路ＬＣＬＡ１を有する。ローカルキャリールックアヘッド回路ＬＣＬＡ１は、4ディジット単位内、すなわち４個のディジット加算器ブロックＤＡＢ１〜ＤＡＢ４、相互間のキャリー伝播論理を実行する。したがって実施例２の場合、図８に示すブロックキャリー伝播回路ＢＣＰ１は、４ディジット単位のキャリーを生成し、各セグメント絶対値加算器ＤＡＤ０，ＤＡＤ１，...，ＤＡＤｍに供給する。このように実施例２の場合、キャリー伝播論理を、４ディジット単位のセグメント絶対値加算器ＤＡＤ０，ＤＡＤ１，...，ＤＡＤｍの各々の内部（ローカルキャリールックアヘッド回路ＬＣＬＡ１）と外部（ブロックキャリー伝播回路ＢＣＰ１）とで階層化する。その結果、セグメント絶対値加算器ＤＡＢ１〜ＤＡＢ４の各々の内部（ローカルキャリールックアヘッド回路ＬＣＬＡ１）と外部（ブロックキャリー伝播回路ＢＣＰ１）とで、キャリー伝播論理を並行して実施（並列処理）することができる。
【０１４１】
図２３は、図２２に示すディジット加算器ブロックＤＡＢ１〜ＤＡＢ４の各々、例えばディジット加算器ブロックＤＡＢ３の構成の一例を示す。図２３に示す実施例２によるディジット加算器ブロックは、図９に示すディジット単位のセグメント絶対値加算器と同様の構成を有し、対応する構成要素には同一符号を付し、重複する説明を省略する。図２３に示すディジット加算器ブロックが図９に示すセグメント絶対値加算器と異なる点は、セレクタＳＥＬ２１，ＳＥＬ２２，ＳＥＬ２３，ＳＥＬ２４を有する点である。
【０１４２】
図２３の構成を採用する場合、図２２に示すローカルキャリールックアヘッド回路ＬＣＬＡ１は以下の動作を行う。すなわちローカルキャリールックアヘッド回路ＬＣＬＡ１は、４ディジット単位の入力データＡ，Ｂ及びブロックキャリー伝播回路ＢＣＰ１から供給される４ディジット単位のキャリーBCin(BCin for recomp又はBCin for non-recomp)の値が０と１のいずれであっても対応できるように、以下の動作を行う。ローカルキャリールックアヘッド回路ＬＣＬＡ１が有する周知の2進演算器におけるキャリー伝播論理に従い、ディジット単位のキャリーを生成する。より具体的には、ローカルキャリールックアヘッド回路ＬＣＬＡ１は、ブロックキャリー伝播回路ＢＣＰ１が供給する４ディジット単位のキャリーBCinが０の場合に対応して、ディジット単位のキャリーlocal digit carry at BCin=0を生成する。更に、ローカルキャリールックアヘッド回路ＬＣＬＡ１は、４ディジット単位のキャリーBCinが１の場合に対応して、ディジット単位のキャリーlocal digit carry at BCin=1を生成する。そして図２２に示すローカルキャリールックアヘッド回路ＬＣＬＡ１は、生成したキャリーlocal digit carry at BCin=0及びキャリーlocal digit carry at BCin=1を、ディジット加算器ブロックＤＡＢ１〜ＤＡＢ４の夫々に供給する。すなわち、ローカルキャリールックアヘッド回路ＬＣＬＡ１は、キャリーlocal digit carry at BCin=0及びキャリーlocal digit carry at BCin=1を、図２３に示すディジット加算器ブロックに供給する。
【０１４３】
図２３中、供給されたキャリーlocal digit carry at BCin=0はセレクタＳＥＬ２１，ＳＥＬ２３に入力される。セレクタＳＥＬ２１は、キャリーlocal digit carry at BCin=0が０の場合、セレクタＳＥＬ１１の出力s0をセレクタＳＥＬ１５に選択出力し、１の場合、セレクタＳＥＬ１３の出力s1をセレクタＳＥＬ１５に選択出力する。セレクタＳＥＬ２３は、キャリーlocal digit carry at BCin=0が０の場合、インバータＩＮＶ５の出力rs0をセレクタＳＥＬ１６に選択出力し、１の場合、インバータ６の出力rs1をセレクタＳＥＬ１６に選択出力する。
【０１４４】
他方、供給されたキャリーlocal digit carry at BCin=1はセレクタＳＥＬ２２，ＳＥＬ２４に入力される。セレクタＳＥＬ２２は、キャリーlocal digit carry at BCin=1が０の場合、セレクタＳＥＬ１１の出力s0をセレクタＳＥＬ１５に選択出力し、１の場合、セレクタＳＥＬ１３の出力s1をセレクタＳＥＬ１５に選択出力する。セレクタＳＥＬ２４は、キャリーlocal digit carry at BCin=1が０の場合、インバータＩＮＶ５の出力rs0をセレクタＳＥＬ１６に選択出力し、１の場合、インバータ６の出力rs1をセレクタＳＥＬ１６に選択出力する。
【０１４５】
セレクタＳＥＬ１５，ＳＥＬ１６は図９の場合と同様に、夫々、ブロックキャリー伝播回路ＢＣＰ１が供給する上記４ディジット単位の信号BCin for non-recomp又はBCin for recompに従って選択出力動作を行う。又、セレクタＳＥＬ１７も図９の場合と同様に、図８に示される信号RECOMPに従って選択出力動作を行う。
【０１４６】
図２３のディジット加算器における他の動作は図９に示すディジット単位のセグメント絶対値加算器における動作と同様である。
【０１４７】
次に本発明の実施例３について説明を行う。実施例３によれば、上述した実施例１における図９に示すディジット単位のセグメント絶対値加算器に少数のゲートを追加して、２進の絶対値加算器としても動作するようにする。図２４に実施例３によるディジット単位のセグメント絶対値加算器の構成の一例を示す。図９の構成と比較すると、digit carry out信号でセレクタＳＥＬ１１，ＳＥＬ１２，ＳＥＬ１３，ＳＥＬ１４の動作を制御する部分にBINARY_MODE信号と論理をとるためのゲートを追加する。追加するゲートは、ＯＲ回路ＯＲ５１，ＡＮＤ回路ＡＮＤ５１，ＯＲ回路ＯＲ５２，ＡＮＤ回路ＡＮＤ５２である。これらＯＲ回路ＯＲ５１，ＡＮＤ回路ＡＮＤ５１、ＯＲ回路ＯＲ５２，ＡＮＤ回路ＡＮＤ５２には、digit carry out 信号及びBINARY_MODE信号が入力される。BINARY_MODE信号は、１０進演算を選択する場合０となり、２進演算を選択する場合１となる。
【０１４８】
s0を出力するセレクタＳＥＬ１１において、BINARY_MODE信号が0のとき、ＯＲ回路ＯＲ５１は、加算器ＡＤＤ１からのdigit carry out信号をそのまま通過させる。その結果、図９の場合と同様な構成となり、s0に関し、図９の場合と等価な10進演算動作を実行する。他方、BINARY_MODE信号が1のとき、ＯＲ５１は常時１を出力し、セレクタＳＥＬ１１は常時加算器ＡＤＤ１の演算結果を選択する。
【０１４９】
又。インバータＩＮＶ５を介しrs0を出力するセレクタＳＥＬ１２の動作を制御するＡＮＤ５１は、BINARY_MODE信号を反転した値とdigit carry out信号とのAND論理を実行する。このため、BINARY_MODE信号が0のとき、セレクタ１２はdigit carry out信号で制御され、信号rs0に関し、図９の場合と等価な10進演算動作を実行する。他方、BINARY_MODE信号が1のとき、ＡＮＤ５１は常時０を出力し、その結果セレクタ１２は常時加算器ＡＤＤ１の演算結果を選択する。
【０１５０】
s1を出力するセレクタＳＥＬ１３，インバータＩＮＶ６を介してrs1を出力するセレクタＳＥＬ１４の夫々の制御についても上記したs0、rs0の場合と同様である。すなわちBINARY_MODE信号が０の場合、図２４の回路は図９の回路と等価な10進演算の動作を行う。他方、BINARY_MODE信号が１の場合、s0は常時加算器ＡＤＤ１の演算結果(A+B)となり、rs0は常時加算器ＡＤＤ１の演算結果（A+B）の２の補数となる。又、BINARY_MODE信号が１の場合、s1は常時加算器ＡＤＤ４の演算結果(A+B+1)となり、rs1は常時加算器ＡＤＤ４の演算結果(A+B+1)の２の補数となる。
【０１５１】
したがってBINARY_MODE信号が１の場合、図２４の回路は、４ビット幅の２進の絶対値加算器と等価の動作を行う。上記信号BCin for non-recompや信号BCin for recomp信号を生成するブロックキャリー伝播回路ＢＣＰ１（図８参照）は、上記の如く２進演算器におけるキャリー伝播論理を有している。したがってブロックキャリー伝播回路ＢＣＰ１による信号RECOMPの作成条件も２進演算器におけるキャリー伝播論理に従っている。よって実施例３では、図８の１０進絶対値加算器本体の構成において、実施例１の図９に示すセグメント絶対値加算器の回路構成を、図２４の回路構成に置き換える。その結果、このようにセグメント絶対値加算器を図２４の回路構成に置き換えた１０進絶対値加算器本体を含む、例えば図２に示す１０進絶対値加算器は、２進の絶対値加算器としても使用し得るようになる。尚、上記セグメント絶対値加算器を図２４の回路構成に置き換えた１０進絶対値加算器本体を、絶対値加算器本体１５Ｘと称する。
【０１５２】
又、実施例３の場合、10進演算器として動作をさせるように予め外部で＋６を行っている部分、すなわち例えば図３における加算回路１１は、２進演算時には不要となる。したがって図３に示す１０進絶対値加算器の全体構成の例を、実施例３では図２５のように変更する。すなわちセレクタ１７を挿入し、セレクタ１７は、BINARY_MODE信号が１の場合、すなわち２進演算時にはオペランドop1をそのままセレクタ１４に供給する。他方BINARY_MODE信号が０の場合、すなわち１０進演算時には上記の如く、オペランドop1に対し加算回路１１でディジット単位で+6を行った上でセレクタ１４に供給する。
【０１５３】
したがって図２５の構成では、BINARY_MODE信号により、２進動作時（BINARY_MODE＝１）には、加算時（SUB=0）、オペランドop1がそのまま絶対値加算器本体１５Ｘに供給される。他方、減算時(SUB=1)、１の補数化回路１２によってオペランドop1に対する１の補数がとられて絶対値加算器本体１５Ｘに供給される。他方、１０進動作時（BINARY_MODE=0）には、図３の場合と同様に、加算時(SUB=0)、オペランドop1の各ディジットに対し＋６が行われた値が絶対値加算器本体１５Ｘに供給される。又、減算時(SUB=1)、１の補数化回路１２により、オペランドop1の各ディジットに対し9の補数をとって＋６を行った値と等価な値が絶対値加算器本体１５Ｘに供給される。
【０１５４】
実施例３では、このように、BINARY_MODE信号により、１０進絶対値加算器を、2進絶対値加算器としての動作させることも、10進絶対値加算器としての動作させることも可能となる。
【符号の説明】
【０１５５】
１１、１３  加算回路
１２、２４  ９の補数化回路
１４，２６，ＳＥＬ１，ＳＥＬ１１，ＳＥＬ１２，ＳＥＬ１３，ＳＥＬ１４，ＳＥＬ１５，ＳＥＬ１６，ＳＥＬ１７，ＳＥＬ２１，ＳＥＬ２２，ＳＥＬ２３，ＳＥＬ２４  セレクタ
１５  １０進絶対値加算器本体
１５Ｘ  絶対値加算器本体
１６  １の補数化回路
２１，３１，３２  ２進加算器
２２  再補数化検出回路
２３、３３，３４  ＢＣＤ補正回路
ＡＤＤ１，ＡＤＤ２，ＡＤＤ３，ＡＤＤ４，ＡＤＤ５，ＡＤＤ６  ４ビット加算器
ＢＣＬＡ１，ＢＣＬＡ２  ２進キャリールックアヘッド回路
ＢＣＰ１  ブロックキャリー伝播回路
ＤＡＤ０，ＤＡＤ１，...，ＤＡＤｍ  セグメント絶対値加算器
【図１】
2012077185.tif 000010
【図２】
2012077185.tif 000011
【図３】
2012077185.tif 000012
【図４】
2012077185.tif 000013
【図５】
2012077185.tif 000014
【図６】
2012077185.tif 000015
【図７】
2012077185.tif 000016
【図８】
2012077185.tif 000017
【図９】
2012077185.tif 000018
【図１０】
2012077185.tif 000019
【図１１】
2012077185.tif 000020
【図１２】
2012077185.tif 000021
【図１３】
2012077185.tif 000022
【図１４】
2012077185.tif 000023
【図１５】
2012077185.tif 000024
【図１６】
2012077185.tif 000025
【図１７】
2012077185.tif 000026
【図１８】
2012077185.tif 000027
【図１９】
2012077185.tif 000028
【図２０】
2012077185.tif 000029
【図２１】
2012077185.tif 000030
【図２２】
2012077185.tif 000031
【図２３】
2012077185.tif 000032
【図２４】
2012077185.tif 000033
【図２５】
2012077185.tif 000034
【手続補正書】
【提出日】平成25年4月25日(2013.4.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
２つのオペランドを加算して第１の演算結果を出力する第１の演算回路と、
前記２つのオペランド及び１０を加算して第２の演算結果を出力する第２の演算回路と、
前記２つのオペランド及び６を加算して第３の演算結果を出力する第３の演算回路と、
前記２つのオペランド及び１を加算して第４の演算結果を出力する第４の演算回路と、
前記２つのオペランド及び１１を加算して第５の演算結果を出力する第５の演算回路と、
前記２つのオペランド及び７を加算して第６の演算結果を出力する第６の演算回路と、
前記２つのオペランドに対する演算が同符号の数同士の加算である場合、或いは演算結果が負とはならない異符号の数同士の加算である場合、前記第１の演算結果、前記第２の演算結果、前記第４の演算結果及び前記第５の演算結果のうちの何れかの演算結果を選択し、前記２つのオペランドに対する演算が、演算結果が負となる異符号の数同士の加算である場合、前記第１の演算結果、前記第３の演算結果、前記第４の演算結果及び前記第６の演算結果のうちの何れかの演算結果に対し１の補数をとった値を選択して１０進絶対値加算結果を出力する選択回路と、を有する１０進絶対値加算器。
【請求項２】
請求項１に記載の１０進絶対値加算器であって、
前記選択回路は、前記同符号の数同士の加算か前記異符号の数同士の加算かを示す信号、前記第１の演算回路のキャリー出力信号、前記第４の演算回路のキャリー出力信号及び下位の桁からのキャリー伝播信号を用いて、前記第１の演算結果、前記第２の演算結果、前記第４の演算結果及び前記第５の演算結果のうちのいずれかを選択し、
前記第１の演算回路のキャリー出力信号、前記第４の演算回路のキャリー出力信号及び下位の桁からのキャリー伝播信号を用いて、前記第１の演算結果、前記第３の演算結果、前記第４の演算結果及び前記第６の演算結果のうちのいずれかの演算結果に対し１の補数をとった値を選択することを特徴とする１０進絶対値加算器。
【請求項３】
更に、前記演算結果に対し１の補数をとる処理を行う回路として、ビット毎に値を反転するインバータ回路を設けることを特徴とする、請求項１又は２に記載の１０進絶対値加算器。
【請求項４】
請求項１〜３のうちの何れか一項に記載の１０進絶対値加算器であって、
前記第１の演算回路、前記第２の演算回路、前記第３の演算回路、前記第４の演算回路、前記第５の演算回路及び前記第６の演算回路並びに選択回路を有する、１０進数の一桁分の１０進絶対値加算結果を出力する一桁分加算回路を第１の複数個組み合わせて１０進数の第１の複数桁分の１０進絶対値加算結果を出力する第１の複数桁分加算回路ブロックと、
前記第１の複数桁分加算回路ブロックが有する、前記第１の複数個の一桁分加算回路の夫々に対するキャリーを生成する第１の複数桁内キャリー生成回路と、
前記第１の複数桁分加算回路ブロックを第２の複数個組み合わせて、１０進数の第１の複数桁に前記第２の複数を乗じて得た第３の複数桁分の１０進絶対値加算結果を出力する第３の複数桁分加算回路を形成し、
前記第３の複数の桁分加算回路が有する、前記第２の複数個の前記第１の複数桁分加算回路ブロックの夫々に対するキャリーを生成する第１の複数桁単位キャリー生成回路と、を有する１０進絶対値加算器。
【請求項５】
請求項１〜４のうちの何れか一項に記載の１０進絶対値加算器であって、
前記１０進絶対値加算器を２進絶対値加算器として使用する場合に、前記選択回路が、前記２つのオペランドに対する演算が同符号の数同士の加算である場合、或いは演算結果が負とはならない異符号の数同士の加算である場合には前記第１の演算結果又前記第４の演算結果を選択させ、前記２つのオペランドに対する演算が、演算結果が負となる異符号の数同士の加算である場合には、前記第１の演算結果又前記第４の演算結果に対し１の補数をとった数を選択させる切換回路を有することを特徴とする、１０進絶対値加算器。
【請求項６】
２つのオペランドの１０進絶対値加算を行う１０進絶対値加算器であって、
１０進数の一桁につき、前記２つのオペランドを加算して第１の演算結果を出力する第１の演算回路と、
前記１０進数の一桁につき、前記２つのオペランド及び６を加算して第３の演算結果を出力する第３の演算回路と、
前記２つのオペランドに対する演算が異符号の数同士の加算であり、再補数化が必要であり、前記１０進数の一桁に対する下位からの桁上がりが無い場合に、前記第１の演算結果及び前記第３の演算結果のうちの何れかの演算結果に対し１の補数をとった値を選択して１０進絶対値加算結果を出力する選択回路と、を有する１０進絶対値加算器。
【請求項７】
２つのオペランドの１０進絶対値加算を行う１０進絶対値加算器であって、
１０進数の一桁につき、前記２つのオペランド及び１を加算して第４の演算結果を出力する第４の演算回路と、
前記１０進数の一桁につき、前記２つのオペランド及び７を加算して第６の演算結果を出力する第６の演算回路と、
前記２つのオペランドに対する演算が異符号の数同士の加算であり、再補数化が必要であり、前記１０進数の一桁に対する下位からの桁上がりが有る場合に、前記第４の演算結果及び前記第６の演算結果のうちの何れかの演算結果に対し１の補数をとった値を選択して１０進絶対値加算結果を出力する選択回路と、を有する１０進絶対値加算器。
【国際調査報告】
2012077185.tif 000035
2012077185.tif 000036