(57)【特許請求の範囲】
【請求項１】
ｍ（２以上の自然数）ビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって、ｍ＋ｎビットの積Ｐ（ｐｍ＋ｎ−１  ｐｍ＋ｎ−２  ，．．，ｐｍ  ，ｐｍ−１  ，．．，ｐ１  ，ｐ０  ）を算出する演算装置において、
１≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａ０  ￣・ｂｎ−１  」とを算出する第１の乗算手段と、
前記第１の乗算手段によって算出された全ての部分積と、ｂｎ−１  と、ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出する第１の加算手段と、
２≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ１  ￣・ｂｎ−１  」とを算出する第２の乗算手段と、
前記第２の乗算手段によって算出された全ての部分積と、ａｍ−１  と、前記第１の加算手段からのキャリデータとの加算を行なってｐｍ  を算出する第２の加算手段と
を有し、
ｍ＝ｎの場合に、
ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行う
演算装置。
【請求項２】
前記被乗数Ａ’と前記乗数Ｂとを２の補数乗算して得られた積Ｐ’（ｐｍ＋ｎ  ，ｐｍ＋ｎ−１  ｐｍ＋ｎ−２  ，．．，ｐｍ  ，ｐｍ−１  ，．．，ｐ１  ，ｐ０  ）のうち、最上位ビットのｐｍ＋ｎ  を除く残りのビットを用いて、前記積Ｐを得る
請求項１に記載の演算装置。
【請求項３】
前記２の補数乗算は、バウウーリの２の補数乗算である
請求項１に記載の演算装置。
【請求項４】
ｍ（２以上の自然数）ビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって、ｍ＋ｎビットの積Ｒ（ｒｍ＋ｎ−１  ｒｍ＋ｎ−２  ，．．，ｒｍ  ，ｒｍ−１  ，．．，ｒ１  ，ｒ０  ）を算出し、前記積Ｒと、ｍ＋ｎビットのデータＣ（ｃｍ＋ｎ−１  ｃｍ＋ｎ−２  ，．．，ｃｍ  ，ｃｍ−１  ，．．，ｃ１  ，ｃ０  ）とを加算する演算装置において、
１≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａ０  ￣・ｂｎ−１  」とを算出する第１の乗算手段と、
前記第１の乗算手段によって算出された全ての部分積と、ｂｎ−１  と、ｃｍ−１  と、ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出する第１の加算手段と、
２≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ１  ￣・ｂｎ−１  」とを算出する第２の乗算手段と、
前記第２の乗算手段によって算出された全ての部分積と、ａｍ−１  と、ｃｍ  と、前記第１の加算手段からのキャリデータとの加算を行なってｐｍ  を算出する第２の加算手段と
を有し、
ｍ＝ｎの場合に、
ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって前記積Ｒを算出し、前記積Ｒと前記データＣとを加算する
演算装置。
【請求項５】
前記被乗数Ａ’と前記乗数Ｂとを２の補数乗算して得られた積Ｒ’（ｒｍ＋ｎ  ，ｒｍ＋ｎ−１  ｒｍ＋ｎ−２  ，．．，ｒｍ  ，ｒｍ−１  ，．．，ｒ１  ，ｒ０  ）のうち、最上位ビットのｒｍ＋ｎ  を除く残りのビットを用いて、前記積Ｒを得る
請求項４に記載の演算装置。
【請求項６】
前記２の補数乗算は、バウウーリの２の補数乗算である
請求項４に記載の演算装置。
【請求項７】
ｍ（２以上の自然数）ビットのＡ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットのＢ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行い、ｍ＋ｎビットの積Ｐ（ｐｍ＋ｎ−１  ｐｍ＋ｎ−２  ，．．，ｐｍ  ，ｐｍ−１  ，．．，ｐ１  ，ｐ２  ）を算出する演算装置において、
０≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−２−ｑ  」と、部分積「１・ｂｎ−１  」とを算出する第１の乗算手段と、
前記第１の乗算手段によって算出された全ての部分積と，ｂｎ−１  と，ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出する第１の加算手段と、
１≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ０  ￣・ｂｎ−１  」とを算出する第２の乗算手段と、
前記第２の乗算手段によって算出された全ての部分積と、ａｍ−１  と、前記第１の加算手段からのキャリデータとの加算を行なって、ｐｍ  を算出する第２の加算手段とを有し、
ｍ＝ｎの場合に、
ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ，０）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行う
演算装置。
【請求項８】
前記被乗数Ａ’と前記乗数Ｂとを２の補数乗算して得られた積Ｐ’（ｐｍ＋ｎ−１  ｐｍ＋ｎ−２  ，．．，ｐｍ  ，ｐｍ−１  ，．．，ｐ１  ，ｐ０  ，０）のうち、最下位ビットの０を除く残りのビットを用いて、前記積Ｐを得る
請求項７に記載の演算装置。
【請求項９】
前記２の補数乗算は、バウウーリの２の補数乗算である
請求項７に記載の演算装置。
【請求項１０】
ｍ（２以上の自然数）ビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって、ｍ＋ｎビットの積Ｒ（ｒｍ＋ｎ−１  ｒｍ＋ｎ−２  ，．．，ｒｍ  ，ｒｍ−１  ，．．，ｒ１  ，ｒ０  ）を算出し、前記積Ｒと、ｍ＋ｎビットのデータＣ（ｃｍ＋ｎ−１  ｃｍ＋ｎ−２  ，．．，ｃｍ  ，ｃｍ−１  ，．．，ｃ１  ，ｃ０  ）とを加算する演算装置において、
０≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−２−ｑ  」と、部分積「１・ｂｎ−１  」とを算出する第１の乗算手段と、
前記第１の乗算手段によって算出された全ての部分積と、ｂｎ−１  と、ｃｍ−１  と、ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出する第１の加算手段と、
１≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ０  ￣・ｂｎ−１  」とを算出する第２の乗算手段と、
前記第２の乗算手段によって算出された全ての部分積と、ａｍ−１  と、ｃｍ  と、前記第１の加算手段からのキャリデータとの加算を行なってｐｍ  を算出する第２の加算手段
とを有し、
ｍ＝ｎの場合に、
ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ，０）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって前記積Ｒを算出し、前記積Ｒと前記データＣとを加算する
演算装置。
【請求項１１】
前記被乗数Ａ’と前記乗数Ｂとを２の補数乗算して得られた積Ｒ’（ｒｍ＋ｎ−１  ｒｍ＋ｎ−２  ，．．，ｒｍ  ，ｒｍ−１  ，．．，ｒ１  ，ｒ０  ，０）のうち、最下位ビットの０を除く残りのビットを用いて、前記積Ｒを得る
請求項１０に記載の演算装置。
【請求項１２】
前記２の補数乗算は、バウウーリの２の補数乗算である
請求項１０に記載の演算装置。
【請求項１３】
複数の乗算回路と複数の加算回路とを用いて、ｍ（２以上の自然数）ビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって、ｍ＋ｎビットの積Ｐ（ｐｍ＋ｎ−１  ｐｍ＋ｎ−２  ，．．，ｐｍ  ，ｐｍ−１  ，．．，ｐ１  ，ｐ０  ）を算出する演算方法において、
ｍ＝ｎの場合に、
ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行うために、
１≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａ０  ￣・ｂｎ−１  」とを算出し、
前記算出された全ての部分積「ａｑ  ・ｂｍ−１−ｑ  」および部分積「ａ０  ￣・ｂｎ−１  」と、ｂｎ−１  と、ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出し、
２≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ１  ￣・ｂｎ−１  」とを算出し、前記算出された全ての部分積「ａｑ  ・ｂｍ−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ１  ￣・ｂｎ−１  」と、ａｍ−１  と、前記ｐｍ−１  を算出する際のキャリデータとの加算を行なってｐｍ  を算出する
演算方法。
【請求項１４】
前記被乗数Ａ’と前記乗数Ｂとを２の補数乗算して得られた積Ｐ’（ｐｍ＋ｎ  ，ｐｍ＋ｎ−１  ｐｍ＋ｎ−２  ，．．，ｐｍ  ，ｐｍ−１  ，．．，ｐ１  ，ｐ０  ）のうち、最上位ビットのｐｍ＋ｎ  を除く残りのビットを用いて、前記積Ｐを得る
請求項１３に記載の演算方法。
【請求項１５】
前記２の補数乗算は、バウウーリの２の補数乗算である
請求項１３に記載の演算方法。
【請求項１６】
複数の乗算回路と加算回路とを用いて、ｍ（２以上の自然数）ビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって、ｍ＋ｎビットの積Ｒ（ｒｍ＋ｎ−１  ｒｍ＋ｎ−２  ，．．，ｒｍ  ，ｒｍ−１  ，．．，ｒ１  ，ｒ０  ）を算出し、前記積Ｒと、ｍ＋ｎビットのデータＣ（ｃｍ＋ｎ−１  ｃｍ＋ｎ−２  ，．．，ｃｍ  ，ｃｍ−１  ，．．，ｃ１  ，ｃ０  ）とを加算する演算方法において、
ｍ＝ｎの場合に、
ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって前記積Ｒを算出し、前記積Ｒと前記データＣとを加算するために、
１≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａ０  ￣・ｂｎ−１  」とを算出し、
前記算出された全ての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａ０  ￣・ｂｎ−１  」と、ｂｎ−１  と、ｃｍ−１  と、ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出し、
２≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ１  ￣・ｂｎ−１  」とを算出し、前記算出された全ての部分積「ａｑ  ・ｂｍ−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ１  ￣・ｂｎ−１  」と、ａｍ−１  と、ｃｍ  と、ｐｍ−１  を算出する際のキャリデータとの加算を行なってｐｍ  を算出する
演算方法。
【請求項１７】
前記被乗数Ａ’と前記乗数Ｂとを２の補数乗算して得られた積Ｒ’（ｒｍ＋ｎ  ，ｒｍ＋ｎ−１  ｒｍ＋ｎ−２  ，．．，ｒｍ  ，ｒｍ−１  ，．．，ｒ１  ，ｒ０  ）のうち、最上位ビットのｒｍ＋ｎ  を除く残りのビットを用いて、前記積Ｒを得る
請求項１６に記載の演算方法。
【請求項１８】
前記２の補数乗算は、バウウーリの２の補数乗算である
請求項１６に記載の演算方法。
【請求項１９】
複数の乗算回路と複数の加算回路とを用いて、ｍ（２以上の自然数）ビットのＡ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットのＢ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって、ｍ＋ｎビットの積Ｐ（ｐｍ＋ｎ−１  ｐｍ＋ｎ−２  ，．．，ｐｍ  ，ｐｍ−１  ，．．，ｐ１  ，ｐ２  ）を算出する演算方法において、
ｍ＝ｎの場合に、
ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ，０）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行うために、
０≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−２−ｑ  」と、部分積「１・ｂｎ−１  」とを算出し、
前記算出された全ての部分積「ａｑ  ・ｂｍ−２−ｑ  」と、部分積「１・ｂｎ−１  」と、ｂｎ−１  と，ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出し、
１≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ０  ￣・ｂｎ−１  」とを算出し、前記算出された全ての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ０  ￣・ｂｎ−１  」と、ａｍ−１  と、前記ｐｍ−１  を算出する際のキャリデータとの加算を行なってｐｍ  を算出する
演算方法。
【請求項２０】
前記被乗数Ａ’と前記乗数Ｂとを２の補数乗算して得られた積Ｐ’（ｐｍ＋ｎ−１  ｐｍ＋ｎ−２  ，．．，ｐｍ  ，ｐｍ−１  ，．．，ｐ１  ，ｐ０  ，０）のうち、最下位ビットの０を除く残りのビットを用いて、前記積Ｐを得る
請求項１９に記載の演算方法。
【請求項２１】
前記２の補数乗算は、バウウーリの２の補数乗算である
請求項１９に記載の演算方法。
【請求項２２】
複数の乗算回路と複数の加算回路を用いて、（２以上の自然数）ビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行い、ｍ＋ｎビットの積Ｒ（ｒｍ＋ｎ−１  ｒｍ＋ｎ−２  ，．．，ｒｍ  ，ｒｍ−１  ，．．，ｒ１  ，ｒ０  ）を算出し、前記積Ｒと、ｍ＋ｎビットのデータＣ（ｃｍ＋ｎ−１  ｃｍ＋ｎ−２  ，．．，ｃｍ  ，ｃｍ−１  ，．．，ｃ１  ，ｃ０  ）とを加算する演算方法において、
ｍ＝ｎの場合に、
ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ，０）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって前記積Ｒを算出し、前記積Ｒと前記データＣとを加算するために、
０≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−２−ｑ  」と、部分積「１・ｂｎ−１  」とを算出し、
前記算出された全ての部分積「ａｑ  ・ｂｍ−２−ｑ  」と、部分積「１・ｂｎ−１  」と、ｂｎ−１  と、ｃｍ−１  と、ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出し、
１≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ０  ￣・ｂｎ−１  」とを算出し、前記算出された全ての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ０  ￣・ｂｎ−１  」と、ａｍ−１  と、ｃｍ  と、ｐｍ−１  を算出する際のキャリデータとの加算を行なってｐｍ  を算出する
演算方法。
【請求項２３】
前記被乗数Ａ’と前記乗数Ｂとを２の補数乗算して得られた積Ｒ’（ｒｍ＋ｎ−１  ｒｍ＋ｎ−２  ，．．，ｒｍ  ，ｒｍ−１  ，．．，ｒ１  ，ｒ０  ，０）のうち、最下位ビットの０を除く残りのビットを用いて、前記積Ｒを得る
請求項２２に記載の演算方法。
【請求項２４】
前記２の補数乗算は、バウウーリの２の補数乗算である
請求項２２に記載の演算方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、２の補数乗算および２の補数の積和演算を行なう演算装置およびその方法に関する。
【０００２】
【従来の技術】
例えば、ビデオカメラなどのＡＶ（Ａｕｄｉｏ  Ｖｉｓｕａｌ）装置には、プロセッサが搭載されている。
このようなプロセッサには、種々の演算回路が組み込まれており、その一つとして２の補数乗算回路がある。
また、２の補数乗算回路の一つとして、バウウーリ（Ｂａｕｇｈ−Ｗｏｏｌｅｙ）が提案したものがある。以下、この２の補数乗算回路を、バウウーリの２の補数乗算回路と記す。
【０００３】
バウウーリの２の補数乗算回路は、全ての被加算項の符号が正であり、タイプ０の全加算器を用いて全ての配列を構成できることから、ＬＳＩ回路の設計上、非常に有利である。
バウウーリの２の補数乗算回路では、２の補数表示整数であるｍビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．ａ１  ，ａ０  ）と、ｎビットの乗数Ｂ（ｂｎ−１  ，ｂｎ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なう場合に、被乗数ＡのＡｖ  と乗数ＢのＢｖ  とは、それぞれ下記式（１）と（２）で示される。
ここでは、Ａｖ  ，Ｂｖ  は、それぞれ被乗数Ａと乗数Ｂの１０進数表現である。
【０００４】
【数１】
0003612950.tif 000002
【０００５】
【数２】
0003612950.tif 000003
また、２の補数の数表現において、積Ｐ＝Ａ・Ｂ＝（ｐｍ＋ｎ−１  ，ｐｍ＋ｎ−２  ，．．，ｐ１  ，ｐ０  ）のＰｖ  は、適当な重み付き因数と、係数ａｉ  またはｂｉ  との積によって下記式（３）で示される。
ここで、Ｐｖ  は、積Ｐの１０進数表現である。
【０００６】
【数３】
0003612950.tif 000004
【０００７】
積Ｐは、図１３に示すような演算方法によって求められる。
図１３において、「１」は被乗数Ａを示し、「２」は乗数Ｂを示し、「３」は部分積の集合を示し、「４」は演算結果であるＰを示し、「５」は部分積の数が最も多い列（以下、ワーストパスとも記す）を示している。
【０００８】
ここで、図１３に示す演算方法を部分積加算の順序を入れ換えることで、この演算方法を図１４に示す演算方法に変形できる。
図１４に示す演算方法は、正の被加算項のみから構成されており、その一様性から、タイプ０の全加算器のみを用いて行なうことができる。
【０００９】
図１５は、図１４に示す演算方法を用いて、６ビットの被乗数Ａ（ａ５  ，ａ４  ，ａ３  ，ａ２  ，ａ１  ，ａ０  ）と、４ビットの乗数Ｂ（ｂ３  ，ｂ２  ，ｂ１  ，ｂ０  ）との２の補数演算を行い、積Ｐ（ｐ９  ，ｐ８  ，ｐ７  ，ｐ６  ，ｐ５  ，ｐ４  ，ｐ３  ，ｐ２  ，ｐ１  ，ｐ０  ）を算出する演算方法を説明するための図である。
図１５に示す２の補数乗算の演算方法は、例えば、図１６に示す２の補数乗算回路２１を用いて行なわれる。
図１６に示す２の補数乗算回路２１では、被乗数Ａのａ５  ，ａ４  ，ａ３  ，ａ２  ，ａ１  ，ａ０  を、行方向に配設されたバッファ２５５  ，２５６  ，２５７  ，２５８  ，２５９  ，２５１０からそれぞれ入力する。、また、乗数Ｂ（ｂ３  ，ｂ２  ，ｂ１  ，ｂ０  ）を、列方向に配設されたバッファ２５１  ，２５２  ，２５３  ，２５４  からそれぞれ入力する。そして、図１５に示す２の補数乗算を行い、その乗算結果である積Ｐ（ｐ９  ，ｐ８  ，ｐ７  ，ｐ６  ，ｐ５  ，ｐ４  ，ｐ３  ，ｐ２  ，ｐ１  ，ｐ０  ）を出力する。
【００１０】
図１６において、２７００およびこれと同一記号を用いて表された回路は、２入力１出力のＡＮＤ回路である。また、２９１１およびこれと同一記号を用いて表された回路は、全加算回路である。全加算回路２９１１は、図１７（Ａ）に示すように、図中左上に位置してキャリ（桁上げ）データを入力するＣＩ（Ｃａｒｒｙ  Ｉｎｐｕｔ）  端子、図中左中に位置して一方の加算対象データを入力するＸ端子、図中左下に位置して他方の加算対象データを入力するＹ端子、図中右上に位置しキャリデータを出力するＣＯ（Ｃａｒｒｙ  Ｏｕｔｐｕｔ）端子、および、図中右下に位置して和データを出力するＳ（Ｓｕｍ）  端子とを備えている。これらの端子の配置は、図１６においても同じである。
また、加算回路３３２１，３３４１，３３５１は、図１７（Ｂ）に示すように、図中左下のＸ端子から入力した加算対象データと図中左上のＹ端子から入力した加算対象データとの加算を行い、そのキャリデータを図中右上のＣＯ端子から出力し、その和データを図中左下のＳ端子から出力する半加算器である。
【００１１】
図１６に示す２の補数乗算回路２１では、図１５に示す部分積２２を以下に示す演算処理で行なう。
すなわち、ａ５  とｂ０  ￣（＝反転ｂ０  ）との論理積がＡＮＤ回路２７００にて演算され、その演算結果である「ａ５  ・ｂ０  ￣」が加算回路２９１１のＹ端子に出力される。なお、バッファ２５１  を介して入力したｂ０  は、ＮＯＴ回路３１１  にて反転され、ｂ０  ￣がＡＮＤ回路２７００に入力される。
また、ａ４  とｂ１  との論理積がＡＮＤ回路２７１１にて演算され、その演算結果である「ａ４  ・ｂ１  」が加算回路２９１１のＸ端子に出力される。また、ａ５  が加算回路２９１１のＣＩ端子に出力される。
そして、加算回路２９１１において、「ａ５  ・ｂ０  ￣」、「ａ４  ・ｂ１  」およびａ５  を用いた加算が行なわれ、その和データがＳ端子から加算回路２９２２のＹ端子に出力され、そのキャリデータがＣＯ端子から、加算回路２９１２のＣＩ端子に出力される。
【００１２】
また、ａ３  とｂ２  との論理積がＡＮＤ回路２７２２にて演算され、その演算結果であるａ３  ・ｂ２  が加算回路２９２２のＸ端子に出力される。
そして、加算回路２９２２において、加算回路３３２１のＣＯ端子からのキャリデータと、「ａ３  ・ｂ２  」と、「ａ５  ・ｂ０  ￣」、「ａ４  ・ｂ１  」およびａ５  の和データとを用いた加算が行なわれ、その和データが加算回路２９３３のＹ端子に出力される。
また、ａ２  ￣とｂ３  との論理積がＡＮＤ回路２７３３にて演算され、その演算結果である「ａ２  ￣・ｂ３  」が加算回路２９３３のＸ端子に出力される。
そして、加算回路２９３３において、加算回路２９３２のＣＯ端子からのキャリデータと、「ａ２  ￣・ｂ３  」と、加算回路２９２２からの和データとを用いた加算が行なわれ、その和データｄ３  がＳ端子から加算回路１９に出力される。また、加算回路２９３３のＣＯ端子から出力されたキャリデータｄ２  も、加算回路１９に出力される。
【００１３】
ここで、和データｄ３  は、加算回路３３２１，２９３１，２９３２からのキャリデータを考慮した、ａ５  、「ａ４  ・ｂ１  」、「ａ５  ・ｂ０  ￣」、「ａ３  ・ｂ２  」および「ａ２  ￣・ｂ３  」の和データである。
【００１４】
そして、加算回路１９において、ｄ０  〜ｄ１０を用いた演算が行なわれ、ｐ５  が求められる。
また、ＡＮＤ回路２７５０の出力端子、加算回路３３５１のＳ端子、加算回路２９５２のＳ端子および加算回路２９５２のＳ端子から、それぞれｐ０  ，ｐ１  ，ｐ２  ，ｐ３  が出力される。
また、加算回路１９において、ｄ０  〜ｄ１０を用いた演算が行なわれ、ｐ４  ，ｐ６  ，ｐ７  ，ｐ８  ，ｐ９  が求められる。
【００１５】
【発明が解決しようとする課題】
しかしながら、上述した図１４に示す２の補数乗算の処理では、ｍ＝ｎの場合に、図１８に示すように、ａｍ−１  とｂｎ−１  とが同じ列に位置することから、図１３に示すワーストパス５に比べて、加算が１段増えた、ワーストパス６が生じ、演算時間が長期化してしまう。
【００１６】
以下、具体例を挙げて説明する。
図１９は、図１８に示す２の補数演算の処理を、４ビットの被乗数Ａ（ａ３  ，ａ２  ，ａ１  ，ａ０  ）と、４ビットの乗数Ｂ（ｂ３  ，ｂ２  ，ｂ１  ，ｂ０  ）とについて行い、積Ｐ（ｐ７  ，ｐ６  ，ｐ５  ，ｐ４  ，ｐ３  ，ｐ２  ，ｐ１  ，ｐ０  ）を算出する方法を説明するための図である。
この場合には、図１９に示すように、ａ３  とｂ３  とが同じ列に位置し、これらを含むワーストパス６ａが生じる。
ここで、例えば、被乗数Ａが（１，０，１，０）で、乗数が（１，１，１，１）である場合には、図１９に示す２の補数乗算処理は、図２０に示すようにして行なわれ、積Ｐが（０，０，０，０，０，１，１，０）となる。
【００１７】
図１９に示す２の補数演算の処理は、図２１に示す２の補数乗算回路４１を用いて行なわれる。
図２１に示す２の補数乗算回路４１では、被乗数Ａのａ３  ，ａ２  ，ａ１  ，ａ０  を、行方向に配設されたバッファ２５５  ，２５６  ，２５７  ，２５８  からそれぞれ入力し、乗数Ｂ（ｂ０  ，ｂ１  ，ｂ２  ，ｂ３  ）を、列方向に配設されたバッファ２５１  ，２５２  ，２５３  ，２５４  からそれぞれ入力し、図１９に示す積和演算を行い、積Ｐ（ｐ７  ，ｐ６  ，ｐ５  ，ｐ４  ，ｐ３  ，ｐ２  ，ｐ１  ，ｐ０  ）を出力する。
【００１８】
図２１において、２７００およびこれと同一記号を用いて表された回路は、２入力１出力のＡＮＤ回路である。また、２９０３および２９２２は全加算回路であり、図１７（Ａ）に示す構成をしている。また、３３１  ，３３２  ，３３３  ，３３４  ，３３５  は半加算回路であり図１７（Ｂ）を示す構成をしている。
また、加算回路３９１  ，３９３  は、それぞれ１ビットの加算対象データを入力する３個の入力端子、ＣＩ端子、ＣＯ端子および２ビットのＳ端子を有する。
また、加算回路３７２  は、それぞれ１ビットの加算対象データを入力する４個の入力端子、ＣＩ端子、ＣＯ端子および２ビットのＳ端子を有する。
【００１９】
図２１に示す２の補数乗算回路４１では、図１９に示す部分積演算６ａを以下に述べる処理によって行なう。
先ず、ａ３  とｂ０  ￣（＝反転ｂ０  ）との論理積がＡＮＤ回路２７００にて演算され、その演算結果である「ａ３  ・ｂ０  ￣」が加算回路２９２２のＹ端子に出力される。なお、バッファ２５１  を介して入力したｂ０  は、ＮＯＴ回路３１１  にて反転され、ｂ０  ￣がＡＮＤ回路２７００に入力される。
また、ａ１  とｂ２  との論理積がＡＮＤ回路２７２２にて演算され、その演算結果である「ａ１  ・ｂ２  」が加算回路２９２２のＸ端子に出力される。また、ａ３  が加算回路２９２２のＣＩ端子に出力される。
そして、加算回路２９２２において、「ａ３  ・ｂ０  ￣」、「ａ１  ・ｂ２  」およびａ３  を用いた加算が行なわれ、その和データがＳ端子から加算回路３９３  の入力端子に出力され、そのキャリデータがＣＩ端子から、加算回路３７２  の入力端子に出力される。
【００２０】
また、ａ０  ￣とｂ３  との論理積がＡＮＤ回路２７３３にて演算され、その演算結果である「ａ０  ￣・ｂ３  」が加算回路３３３  のＸ端子に出力される。
また、ａ２  とｂ１  との論理積がＡＮＤ回路２７１１にて演算され、その演算結果である「ａ２  ・ｂ１  」が加算回路３３３  のＹ端子に出力される。
そして、加算回路３３３  において、「ａ０  ￣・ｂ３  」と「ａ２  ・ｂ１  」との加算が行なわれ、その和データが加算回路３９３  の入力端子に出力される。
また、ａ１  とｂ１  との論理積がＡＮＤ回路２７２１にて演算され、その演算結果である「ａ１  ・ｂ１  」が加算回路３３４  のＹ端子に出力される。また、ｂ３  が、加算回路３３４  の入力端子に出力される。
そして、加算回路３３４  において、「ａ１  ・ｂ１  」と、ｂ３  との加算が行なわれ、そのキャリデータが加算回路３９３  の入力端子に出力される。
【００２１】
そして、加算回路３９３  において、加算回路３９４  からのキャリデータを考慮して、加算回路３３３  からの和データと、加算回路２９２２からの和データと、加算回路３３４  からのキャリデータとを用いて加算が行なわれ、Ｓ端子から、２ビットの和データ（ｒ３  ，ｒ４  ）が、加算回路４３に出力される。
このとき、和データ（ｒ３  ，ｒ４  ）は、加算回路２９２２からの「ａ３  ・ｂ０  ￣」、「ａ１  ・ｂ２  」およびａ３  の和データと、加算回路３３３  からの「ａ０  ￣・ｂ３  」および「ａ２  ・ｂ１  」と、  加算回路３３４  からの「ａ１  ・ｂ１  」およびｂ３  の加算結果のキャリデータとを加算した和データとなる。
そして、加算回路４３において、ｒ０  〜ｒ１１を用いて加算が行なわれ、ｐ３  が算出される。
【００２２】
また、図１９に示す部分積演算７は、以下のようにして行なわれる。
先ず、すなわち、ＡＮＤ回路２７１０において、ａ２  とｂ０  との論理積が演算され、その演算結果である「ａ２  ・ｂ０  」が加算回路３９４  の入力端子に出力される。
また、ＡＮＤ回路２７２１において、ａ１  とｂ１  との論理積が演算され、その演算結果である「ａ１  ・ｂ１  」が加算回路３３４  のＹ端子に出力される。また、ｂ３  が加算回路３３４  のＸ端子に出力される。
そして、加算回路３３４  において、「ａ１  ・ｂ１  」とｂ３  とが加算され、その和データが加算回路３９４  に出力される。
【００２３】
また、ＡＮＤ回路２７３２において、ａ０  とｂ２  との論理積が演算され、その演算結果である「ａ０  ・ｂ２  」が加算回路３９４  のＣＩ端子に出力される。
また、ｂ３  が加算回路３９４  のＣＩ端子に出力される。
さらに、ＡＮＤ回路２７１０において、ａ２  とｂ０  との論理積が演算され、その演算結果である「ａ２  ・ｂ０  」が加算回路３９４  の入力端子に出力される。
そして、加算回路３９３  において、加算回路３３４  から「ａ１  ・ｂ１  」とｂ３  との加算結果の和データと、ＡＮＤ回路２７３２からの「ａ０  ・ｂ２  」と、ｂ３  と、ＡＮＤ回路２７３２からの「ａ０  ・ｂ２  」とを用いた加算が行なわれ、２ビットの和データ（ｒ３  ，ｒ４  ）が加算回路４３に出力される。
そして、加算回路４３において、ｒ０  〜ｒ１１を用いて加算が行なわれ、ｐ２  が算出される。
なお、ｐ０  はＡＮＤ回路２７３０の出力端子から出力され、ｐ１  は加算回路３３５  のＳ端子から出力される。
また、ｐ４  〜ｐ６  は、加算回路４３から出力される。
【００２４】
上述したように、被乗数と乗数とのビット数が同じであると、２の補数乗算を行なった場合に、被乗数と乗数とのビット数が異なる場合に比べて、ワーストパスを構成する加算が１段増えてしまう。
そのため、２の補数乗算回路の処理時間が長期化してしまうという問題がある。
ここで、実際には、２の補数乗算を行なう上で、被乗数と乗数とのビット数（語長）が同じことが多く、このようにワーストパスを構成する加算が増えることは、例えば、繰り返し演算を多数回行なう３次元グラフィックなどの分野では、その性能に大きな影響を及ぼす。
【００２５】
また、図１８に示すように、ａｍ−１  とｂｎ−１  が同列に位置すると、図２１に示すような反復セル型の配列を採用した回路では、回路パターンの規則性が低下し、レイアウト設計が非常に困難になってしまうという問題がある。
同様な問題は、２の補数乗算と加算とを行なう２の補数積和演算回路にも同様に存在する。
【００２６】
本発明は、上述した従来技術に鑑みてなされ、被乗数と乗数との語長が同じ場合に、バウウーリの２の補数乗算の処理時間を短縮できる演算装置およびその方法を提供することを目的とする。
また、本発明は、レイアウト設計が容易な演算装置を提供することを目的とする。
【００２７】
【課題を解決するための手段】
上述した従来技術の問題点を解決し、上述した目的を達成するために、本発明の第１の観点の演算装置は、ｍ（２以上の自然数）ビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって、ｍ＋ｎビットの積Ｐ（ｐｍ＋ｎ−１  ｐｍ＋ｎ−２  ，．．，ｐｍ  ，ｐｍ−１  ，．．，ｐ１  ，ｐ０  ）を算出する演算装置であって、１≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａ０  ￣・ｂｎ−１  」とを算出する第１の乗算手段と、前記第１の乗算手段によって算出された全ての部分積と、ｂｎ−１  と、ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出する第１の加算手段と、２≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ１  ￣・ｂｎ−１  」とを算出する第２の乗算手段と、前記第２の乗算手段によって算出された全ての部分積と、ａｍ−１  と、前記第１の加算手段からのキャリデータとの加算を行なってｐｍ  を算出する第２の加算手段とを有し、ｍ＝ｎの場合に、ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行う。
【００２８】
また、本発明の第２の観点の演算装置は、ｍ（２以上の自然数）ビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって、ｍ＋ｎビットの積Ｒ（ｒｍ＋ｎ−１  ｒｍ＋ｎ−２  ，．．，ｒｍ  ，ｒｍ−１  ，．．，ｒ１  ，ｒ０  ）を算出し、前記積Ｒと、ｍ＋ｎビットのデータＣ（ｃｍ＋ｎ−１  ｃｍ＋ｎ−２  ，．．，ｃｍ  ，ｃｍ−１  ，．．，ｃ１  ，ｃ０  ）とを加算する演算装置であって、１≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａ０  ￣・ｂｎ−１  」とを算出する第１の乗算手段と、前記第１の乗算手段によって算出された全ての部分積と、ｂｎ−１  と、ｃｍ−１  と、ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出する第１の加算手段と、２≦ｑ≦ｍ−１の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ１  ￣・ｂｎ−１  」とを算出する第２の乗算手段と、前記第２の乗算手段によって算出された全ての部分積と、ａｍ−１  と、ｃｍ  と、前記第１の加算手段からのキャリデータとの加算を行なってｐｍ  を算出する第２の加算手段とを有し、ｍ＝ｎの場合に、ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって前記積Ｒを算出し、前記積Ｒと前記データＣとを加算する。
【００２９】
また、本発明の第３の観点の演算装置は、ｍ（２以上の自然数）ビットのＡ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットのＢ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行い、ｍ＋ｎビットの積Ｐ（ｐｍ＋ｎ−１  ｐｍ＋ｎ−２  ，．．，ｐｍ  ，ｐｍ−１  ，．．，ｐ１  ，ｐ２  ）を算出する演算装置であって、０≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−２−ｑ  」と、部分積「１・ｂｎ−１  」とを算出する第１の乗算手段と、前記第１の乗算手段によって算出された全ての部分積と，ｂｎ−１  と，ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出する第１の加算手段と、１≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ０  ￣・ｂｎ−１  」とを算出する第２の乗算手段と、前記第２の乗算手段によって算出された全ての部分積と、ａｍ−１  と、前記第１の加算手段からのキャリデータとの加算を行なって、ｐｍ  を算出する第２の加算手段とを有し、ｍ＝ｎの場合に、ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ，０）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行う。
【００３０】
また、本発明の第４の観点の演算装置は、ｍ（２以上の自然数）ビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎ（２以上の自然数）ビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって、ｍ＋ｎビットの積Ｒ（ｒｍ＋ｎ−１  ｒｍ＋ｎ−２  ，．．，ｒｍ  ，ｒｍ−１  ，．．，ｒ１  ，ｒ０  ）を算出し、前記積Ｒと、ｍ＋ｎビットのデータＣ（ｃｍ＋ｎ−１  ｃｍ＋ｎ−２  ，．．，ｃｍ  ，ｃｍ−１  ，．．，ｃ１  ，ｃ０  ）とを加算する演算装置であって、０≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−２−ｑ  」と、部分積「１・ｂｎ−１  」とを算出する第１の乗算手段と、前記第１の乗算手段によって算出された全ての部分積と、ｂｎ−１  と、ｃｍ−１  と、ｐｍ−２  を算出する際のキャリデータとの加算を行なってｐｍ−１  を算出する第１の加算手段と、１≦ｑ≦ｍ−２の条件を満たす全ての自然数ｑについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と、部分積「ａｍ−１  ・ｂ０  ￣」、部分積「ａ０  ￣・ｂｎ−１  」とを算出する第２の乗算手段と、前記第２の乗算手段によって算出された全ての部分積と、ａｍ−１  と、ｃｍ  と、前記第１の加算手段からのキャリデータとの加算を行なってｐｍ  を算出する第２の加算手段とを有し、ｍ＝ｎの場合に、ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ，０）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって前記積Ｒを算出し、前記積Ｒと前記データＣとを加算する。
【００３１】
本発明の演算装置およびその方法では、ｍビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）と、ｎビットの乗数Ｂ（ｂｍ−１  ，ｂｍ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なって、ｍ＋ｎビットの積Ｐ（ｐｍ＋ｎ−１  ｐｍ＋ｎ−２  ，．．，ｐｍ  ，ｐｍ−１  ，．．，ｐ１  ，ｐ０  ）を算出するときに、ｍ＝ｎである場合に、ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ）あるいはｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−２  ，．．，ａ１  ，ａ０  ，０）を用いて演算を行なうことで、ワーストパスを構成する部分積の加算において、加算段数が従来に比べて１段削減される。
【００３２】
【発明の実施の形態】
以下、本発明の実施形態に係わるにバウウーリの２の補数乗算回路およびその方法について説明する。
第１実施形態
先ず、本実施形態の２の補数乗算回路において採用するバウウーリの２の補数乗算の演算方法について説明する。
図１は、本実施形態のバウウーリの２の補数乗算の演算方法について説明するための図である。
【００３３】
この２の補数乗算方法では、ｍビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．ａ１  ，ａ０  ）と、ｎビットの乗数Ｂ（ｂｎ−１  ，ｂｎ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なう場合に、ｍ＝ｎであるときに、ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−１  ，ａｍ−２  ，．．ａ１  ，ａ０  ）と、ｎビットの乗数Ｂ（ｂｎ−１  ，ｂｎ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行ない、積Ｐ（ｐｍ＋ｎ−１，ｐｍ＋ｎ−２，．．ｐｍ  ，．．，ｐ１  ，ｐ０  ）を得る。
すなわち、ｍビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．ａ１  ，ａ０  ）の代わりに、被乗数Ａの最上位ビット（ＭＳＢ：Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ  ）の上に、その最上位ビットａｍ−１  を付加した被乗数Ａ’（ａｍ−１  ，ａｍ−１  ，ａｍ−２  ，．．ａ１  ，ａ０  ）を用いる。
このようにすることで、被乗数Ａの語長が１ビットだけ増え、被乗数と乗数との語長が異なるようになる。
その結果、図１８に示すようにａｍ−１  とｂｎ−１  とが同じ列で加算されることを回避でき、図１に示すワーストパス１０を構成する加算の段数を、図１８に示すワーストパス６に比べて、１段減らすことができる。
【００３４】
図１において、「５６」は被乗数Ａ’を示し、「５７」は乗数Ｂを示し、「５８」は部分積の集合を示し、「９」は積Ｐを示す。
図１に示す２の補数乗算の演算方法では、被乗算数ＡのＭＳＢを１ビット符号拡張した被乗算数Ａ’を用いることから、積ＰのＭＳＢを削除したものを、２の補数乗算の演算結果とする。
従って、図１に示す「１１」の部分の演算は不要となる。
【００３５】
次に、図１に示すバウウーリの２の補数乗算の演算方法における部分積と、積Ｐとの関係について説明する。
なお、図１において、ｎ＝ｍである。
図１に示すように、ｐ０  は、「ａ０  ・ｂ０  」となる。
ｐ１  は、「ａ１  ・ｂ０  ＋ａ０  ・ｂ１  」の加算結果の和データとなる。
ｐ２  は、「ａ２  ・ｂ０  ＋ａ１  ・ｂ１  ＋ａ０  ・ｂ２  」と、ｐ１  からのキャリデータとの加算結果の和データとなる。
ｐ３  は、「ａ３  ・ｂ０  ＋ａ２  ・ｂ１  ＋ａ１  ・ｂ２  」と、ｐ２  からのキャリデータとの加算結果の和データとなる。
また、ｐｋ  （４≦ｋ≦ｍ−２：ｋは自然数）は、０〜ｋの自然数ｑの全てについての部分積「ａｑ  ・ｂｋ−ｑ  」の加算結果と、ｐｋ−１  からのキャリデータとの加算結果の和データとなる。
また、ｐｍ−１  は、１≦ｑ≦ｍ−１の自然数ｑの全てについての部分積「ａｑ  ・ｂｍ−１−ｑ  」と「ａ０  ￣・ｂｎ−１  」とｂｎ−１  との加算結果と、ｐｍ−２  からのキャリデータとの加算結果の和データとなる。
【００３６】
また、ｐｍ  は、２≦ｑ≦ｍ−１を満たす自然数ｑの全てについての部分積「ａｑ  ・ｂｍ−ｑ  」と「ａｍ−１  ・ｂ０  ￣」と「ａ１  ￣・ｂｎ−１  」とａｍ−１  との加算結果と、ｐｍ−１  からのキャリデータとの加算結果の和データとなる。
また、ｐｋ  （ｍ＋ｎ−３≦ｋ≦ｍ＋１：ｋは自然数）は、３≦ｑ≦ｍ−１を満たす自然数ｑの全てについての部分積「ａｑ  ・ｂｋ−ｑ  」と「ａｍ−１  ・ｂｋ−ｍ  ￣ 」と「ａｋ−ｍ＋１  ￣・ｂｎ−１  」との加算結果と、ｐｋ−１  からのキャリデータとの加算結果の和データとなる。
また、ｐｍ＋ｎ−２  は、「ａｍ−１  ・ｂｎ−２  ￣」と「ａｍ−１  ￣・ｂｎ−１  」との加算結果と、ｐｍ＋ｎ−３  からのキャリデータとの加算結果の和データとなる。
さらに、ｐｍ＋ｎ−１  は、ａｍ−１  ￣と「ａｍ−１  ・ｂｎ−１  」とｂｎ−１  ￣との加算結果と、ｐｍ＋ｎ−２  からのキャリデータとの加算結果の和データとなる。
【００３７】
以下、図１に示す２の補数乗算と、図１８に示す従来の２の補数乗算とが同じであることを説明する。
ｐ０  〜ｐｍ−２  については、図１に示す２の補数乗算と、図１８に示す従来の２の補数演算とで、同じ乗算結果を加算して得られることから、同じである。
【００３８】
また、ｐｍ−１  の部分積については、図１に示す「ａｍ−１  ・ｂ０  」と、図１８に示す「ａｍ−１  ・ｂ０  ￣＋ａｍ−１  」とが、ｐｍ−１  に与える影響が同じであれば、図１に示すｐｍ−１  と、図１８に示すｐｍ−１  とは同じになる。
ここで、下記式（４）が成り立ち、ａｍ−１  ・ｂ０  ￣は次のビットへの桁上げ（キャリデータ）となるので、図１に示す「ａｍ−１  ・ｂ０  」と、図１８に示す「ａｍ−１  ・ｂ０  ￣＋ａｍ−１  」とのうち、ｐｍ−１  に反映されるのは、何れも「ａｍ−１  ・ｂ０  」となる。従って、図１に示すｐｍ−１  と、図１８に示すｐｍ−１  とは同じである。
【００３９】
【数４】
0003612950.tif 000005
【００４０】
次に、ｐｍ  については、図１に示す「ａｍ−１  ・ｂ０  ￣＋ａｍ−１  ・ｂ１  ＋ａｍ−１  」と、図１８に示す「ａｍ−１  ・ｂ１  ￣」とｐｍ−１  からのキャリデータである「ａｍ−１  ・ｂ０  ￣」との加算結果とがｐｍ  に与える影響が同じであれば、図１に示すｐｍ  と、図１８に示すｐｍ  とは同じになる。
ここで、下記式（５）が成り立ち、ａｍ−１  ・ｂ１  は次のビットへの桁上げ（キャリデータ）となるので、図１に示す「ａｍ−１  ・ｂ０  ￣＋ａｍ−１  ・ｂ１  ＋ａｍ−１  」と、図１８に示す「ａｍ−１  ・ｂ１  ￣＋ａｍ−１  ・ｂ０  ￣」とのうち、ｐｍ  に反映されるのは、何れも「ａｍ−１  ・ｂ１  ￣＋ａｍ−１  ・ｂ０  ￣」となる。従って、図１に示すｐｍ  と、図１８に示すｐｍ  とは同じである。
【００４１】
【数５】
0003612950.tif 000006
【００４２】
次に、ｐｍ＋１  については、図１に示す「ａｍ−１  ・ｂ１  ￣＋ａｍ−１  ・ｂ２  」とｐｍ  からのキャリデータ「ａｍ−１  ・ｂ１  」との加算結果と、図１８に示す「ａｍ−１  ・ｂ２  ￣」とがｐｍ＋１  に与える影響が同じであれば、図１に示すｐｍ  ＋１と、図１８に示すｐｍ＋１  とは同じになる。
ここで、下記式（６）が成り立ち、ａｍ−１  ・ｂ２  は次のビットへの桁上げ（キャリデータ）となるので、図１に示す「ａｍ−１  ・ｂ１  ￣＋ａｍ−１  ・ｂ２  ＋ａｍ−１  ・ｂ１  」と、図１８に示す「ａｍ−１  ・ｂ２  ￣」とのうち、ｐｍ＋１  に反映されるのは、何れも「ａｍ−１  ・ｂ２  ￣」となる。従って、図１に示すｐｍ＋１  と、図１８に示すｐｍ＋１  とは同じである。
【００４３】
【数６】
0003612950.tif 000007
【００４４】
次に、ｐｍ＋２  については、図１に示す「ａｍ−１  ・ｂ２  ￣＋ａｍ−１  ・ｂ３  ＋ａｍ−１  ・ｂ２  」とｐｍ＋１  からのキャリデータ「ａｍ−１  ・ｂ２  」との加算結果と、図１８に示す「ａｍ−１  ・ｂ３  ￣」とがｐｍ＋１  に与える影響が同じであれば、図１に示すｐｍ  ＋２と、図１８に示すｐｍ＋２  とは同じになる。
ここで、下記式（７）が成り立ち、ａｍ−１  ・ｂ３  は次のビットへの桁上げ（キャリデータ）となるので、図１に示す「ａｍ−１  ・ｂ２  ￣＋ａｍ−１  ・ｂ３  ＋ａｍ−１  ・ｂ２  」と、図１８に示す「ａｍ−１  ・ｂ３  ￣」とのうち、ｐｍ＋２  に反映されるのは、何れも「ａｍ−１  ・ｂ３  ￣」となる。従って、図１に示すｐｍ＋２  と、図１８に示すｐｍ＋２  とは同じである。
【００４５】
【数７】
0003612950.tif 000008
【００４６】
次に、ｐｓ  （ｍ＋３＜ｓ＜ｍ＋ｎ−３）については、ｐｓ−１  からのキャリデータを考慮して、図１における「ａｍ−１  ・ｂｓ−ｍ  ￣＋ａｍ−１  ・ｂｓ−ｍ＋１  ＋ａｍ−１  ・ｂｓ−ｍ  」と、図１８における「ａｍ−１  ・ｂｓ−ｍ＋１  ￣」とがｐｓ  に与える影響が同じであれば、図１におけるｐｓ  と、図１８におけるｐｓ  とは同じになる。
ここで、下記式（８）が成り立ち、ａｍ−１  ・ｂｓ−ｍ＋１  は次のビットへの桁上げ（キャリデータ）となるので、図１における「ａｍ−１  ・ｂｓ−ｍ  ￣＋ａｍ−１  ・ｂｓ−ｍ＋１  ＋ａｍ−１  ・ｂｓ−ｍ  」と、図１８における「ａｍ−１  ・ｂｓ−ｍ＋１  ￣」とのうち、ｐｓ  に反映されるのは、何れも「ａｍ−１  ・ｂｓ−ｍ＋１  ￣」となる。従って、図１におけるｐｍ＋ｎ−２  と、図１８におけるｐｍ＋ｎ−２  とは同じである。
【００４７】
【数８】
0003612950.tif 000009
【００４８】
次に、ｐｍ＋ｎ−２  については、ｐｍ＋ｎ−３  からのキャリデータを考慮して、図１における「ａｍ−１  ・ｂｎ−２  ￣＋ａｍ−１  ￣・ｂｎ−１  ＋ａｍ−１  ・ｂｎ−２  」と、図１８における「ａｍ−１  ￣＋ａｍ−１  ・ｂｎ−１  ＋ｂｎ−１  ￣」とがｐｍ＋ｎ−２  に与える影響が同じであれば、図１におけるｐｍ＋ｎ−２  と、図１８におけるｐｍ＋ｎ−２  とは同じになる。
ここで、下記式（９）および（１０）が成り立ち、図１８におけるａｍ−１  ・ｂｎ−１  は次のビットへの桁上げ（キャリデータ）となるので、図１における「ａｍ−１  ・ｂｎ−２  ￣＋ａｍ−１  ￣・ｂｎ−１  ＋ａｍ−１  ・ｂｎ−２  」と、図１８における「ａｍ−１  ￣＋ａｍ−１  ・ｂｎ−１  ＋ｂｎ−１  ￣」とのうち、ｐｍ＋ｎ−２  に反映されるのは、何れも「ａｍ−１  ＋ｂｎ−１  」となる。従って、図１におけるｐｓ  と、図１８におけるｐｓ  とは同じである。
【００４９】
【数９】
0003612950.tif 000010
【００５０】
【数１０】
0003612950.tif 000011
【００５１】
次に、ｐｍ＋ｎ−１  については、ｐｍ＋ｎ−２  からのキャリデータを考慮して、図１における「ａｍ−１  ￣・＋ａｍ−１  ・ｂｎ−１  ＋ｂｎ−１  ￣」と、図１８における「１＋ａｍ−１  ・ｂｎ−１  」とがｐｍ＋ｎ−１  に与える影響が同じであれば、図１におけるｐｍ＋ｎ−１  と、図１８におけるｐｍ＋ｎ−１  とは同じになる。
ここで、下記式（１１）および（１２）が成り立ち、図１における「ａｍ−１  ・ｂｎ−１  」および図１８における「ａｍ−１  ・ｂｎ−１  」は次のビットへの桁上げ（キャリデータ）となり、図１における「ａｍ−１  ￣・＋ａｍ−１  ・ｂｎ−１  ＋ｂｎ−１  ￣」と、図１８における「１＋ａｍ−１  ・ｂｎ−１  」とのうち、ｐｍ＋ｎ−１  に反映されるのは、何れも「ａｍ−１  ＋ｂｎ−１  」となる。従って、図１におけるｐｍ＋ｎ−１  と、図１８におけるｐｐ＋ｎ−１  とは同じである。
【００５２】
【数１１】
0003612950.tif 000012
【００５３】
【数１２】
0003612950.tif 000013
【００５４】
なお、図１において、ｐｍ＋ｎ  の演算結果は、破棄される。
以上から、図１に示す２の補数乗算と、図１８に示す従来の２の補数乗算とは同じである。
【００５５】
図２は、図１に示す演算方法を、４ビットの被乗数Ａと４ビットの乗数Ｂとの２の補数乗算に適用した場合の演算方法を説明するための図である。
この場合には、図２に示すように、４ビットの被乗数Ａ（ａ３  ，ａ２  ，ａ１  ，ａ０  ）のＭＳＢの上に、そのＭＳＢであるａ３  を付加した５ビットの被乗数Ａ（ａ３  ，ａ３  ，ａ２  ，ａ１  ，ａ０  ）と、４ビットの乗数Ｂ（ｂ３  ，ｂ２  ，ｂ１  ，ｂ０  ）との２の補数乗算を行ない、積Ｐ（ｐ７  ，ｐ６  ，ｐ５  ，ｐ４  ，ｐ３  ，ｐ２  ，ｐ１  ，ｐ０  ）が得られる。ここで、演算結果である積のＭＳＢにある「１」は破棄される。
図２に示すように、ａ３  とｂ３  とは異なる列に配列され、図１８に示す演算方法を適用した場合に比べて、ワーストパス５０ａ，５０ｂの段数を１段だけ削減できる。
ここで、被乗数Ａ（ａ３  ，ａ２  ，ａ１  ，ａ０  ）が（１，０，１，０）であり、乗数Ｂ（ｂ３  ，ｂ２  ，ｂ１  ，ｂ０  ）が（１，１，１，１）である場合には、図３に示すように演算が行なわれ、演算結果の最上位ビットにある「１」が破棄される。
これによって、積Ｐ（ｐ７  ，ｐ６  ，ｐ５  ，ｐ４  ，ｐ３  ，ｐ２  ，ｐ１  ，ｐ０  ）が（０，０，０，０，０，１，１，０）となる。
【００５６】
図４は、図２に示す２の補数乗算を行なう２の補数乗算回路５１である。
図４に示すように、２の補数乗算回路５１は、列方向に４個のバッファ回路２５０  ，２５１  ，２５２  ，２５３  が配設され、バッファ回路２５０  ，２５１  ，２５２  ，２５３  の出力端子から、それぞれデータ線３５０  ，３５１  ，２５２  ，２５３  が延びている。また、行方向に５個のバッファ回路２５４  ，２５５  ，２５６  ，２５７  ，２５８  が配設され、バッファ回路２５４  ，２５５  ，２５６  ，２５７  ，２５８  の出力端子から、それぞれデータ線３５４  ，３５５  ，３５６  ，３５７  ，３５８  が延びている。
【００５７】
２の補数乗算回路５１では、５×４のマトリクス状にＡＮＤ回路２７００〜２７４３が配設され、ＡＮＤ回路２７０３，２７１１，２７１２，２７１３，２７２１，２７２２，２７２３，２７３２，２７３３，２７４２，２７４３に対応して、それぞれ図１７（Ａ）に示す構成の加算回路２９０３，２９１１，２９１２，２９１３，２９２１，２９２２，２９２３，２９３２，２９３３，２９４２，２９４３が設けられている。
また、ＡＮＤ回路２７３１，２７４１に対応して、図１７（Ｂ）に示す構成の加算回路３３３１，３３４１が設けられている。
また、ＡＮＤ回路２７００，２７０１，２７０２，２７０３，２７１３，２７２３，２７３３，２７４３に対応して、それぞれＮＯＴ回路３１００，３１０１，３１０２，３１０３，３１１３，３１２３，３１３３，３１４３が設けられている。
さらに、２の補数乗算回路５１には、加算回路５２が設けられている。加算回路５２は、加算回路２９０３からの和データｒ７  と、加算回路２９１３からの和データｒ５  およびキャリデータｒ６  と、加算回路２９２３からの和データｒ３  およびキャリデータｒ４  と、加算回路２９３３からの和データｒ１  およびキャリデータｒ２  と、加算回路２９４３からのキャリデータｒ０  とを入力し、これらから、図２に示す積Ｐのｐ７  ，ｐ６  ，ｐ５  ，ｐ４  を演算して出力する。
なお、図４において、ＡＮＤ回路２７１０，２７２１，２７３２，２７４３によって本発明の第１の観点の演算装置における第１の乗算手段が構成される。また、加算回路２９２１，２９３２，２９４３によって第１の加算手段が構成される。また、ＡＮＤ回路２７００，２７１１，２７２２，２７３３によって、第２の乗算手段が構成される。また、加算回路２９１１，２９２２，２９２３によって第２の加算手段が構成される。
【００５８】
以下、図４に示す２の補数乗算回路５１の接続状態について説明する。
ＡＮＤ回路２７００，２７０１，２７０２，２７０３の一方の入力端子は、データ線３５４  に接続されている。ＡＮＤ回路２７００，２７０１，２７０２，２７０３の他方の入力端子は、それぞれＮＯＴ回路３１００，３１０１，３１０２，３１０３を介して、それぞれデータ線３５０  ，３５１  ，３５２  ，３５３  に接続されている。
ＡＮＤ回路２７００，２７０１，２７０２の出力端子は、それぞれ加算回路２９１１，２９１２，２９１３のＹ端子に接続されている。ＡＮＤ回路２７０３の出力端子は、加算回路２９０３のＸ端子に接続されている。
また、加算回路２９０３のＣＩ端子は、ＮＯＴ回路３１０３を介して、データ線３５３  に接続されている。加算回路２９０３のＳ端子は、加算回路５２に接続され、和データｓ７  を加算回路５２に出力する。
【００５９】
ＡＮＤ回路２７１０，２７１１，２７１２，２７１３の一方の入力端子は、データ線３５５  に接続されている。ＡＮＤ回路２７１０，２７１１，２７１２，２７１３の他方の入力端子は、それぞれデータ線３５０  ，３５１  ，３５２  ，３５３  に接続されている。
ＡＮＤ回路２７１１，２７１２，２７１３の出力端子は、それぞれ加算回路２９１１，２９１２，２９１３のＸ端子に接続されている。ＡＮＤ回路２７１０の出力端子は、加算回路２９２１のＹ端子に接続されている。
また、加算回路２９１１のＣＩ端子はデータ線３５４  に接続され、ＣＯ端子は加算回路２９１２のＣＩ端子に接続され、Ｓ端子は加算回路２９２２のＹ端子に接続されている。
また、加算回路２９１２のＣＯ端子は加算回路２９１３のＣＩ端子に接続され、Ｓ端子は加算回路２９２３のＹ端子に接続されている。
また、加算回路２９１３のＣＯ端子およびＳ端子は、加算回路５２に接続されている。
【００６０】
ＡＮＤ回路２７２０，２７２１，２７２２の一方の入力端子は、データ線３５６  に接続されている。ＡＮＤ回路２７２３の一方の入力端子は、ＮＯＴ回路３１２３を介して、データ線３５６  に接続されている。
ＡＮＤ回路２７２０，２７２１，２７２２，２７２３の他方の入力端子は、それぞれデータ線３５０  ，３５１  ，３５２  ，３５３  に接続されている。
ＡＮＤ回路２７２１，２７２２，２７２３の出力端子は、それぞれ加算回路２９２１，２９２２，２９２３のＸ端子に接続されている。ＡＮＤ回路２７２０の出力端子は、加算回路３３３１のＹ端子に接続されている。
また、加算回路２９２１のＣＩ端子は、データ線３５３  に接続され、ＣＯ端子は加算回路２９２２のＣＩ端子に接続され、Ｓ端子は加算回路２９３２のＹ端子に接続されている。
また、加算回路２９２２のＣＯ端子は加算回路２９２３のＣＩ端子に接続され、Ｓ端子は加算回路２９３３のＹ端子に接続されている。
また、加算回路２９２３のＣＯ端子およびＳ端子は、加算回路５２に接続されている。
【００６１】
ＡＮＤ回路２７３０，２７３１，２７３２の一方の入力端子は、データ線３５７  に接続されている。ＡＮＤ回路２７３３の一方の入力端子は、ＮＯＴ回路３１３３を介して、データ線３５７  に接続されている。
ＡＮＤ回路２７３０，２７３１，２７３２，２７３３の他方の入力端子は、それぞれデータ線３５０  ，３５１  ，３５２  ，３５３  に接続されている。
ＡＮＤ回路２７３０の出力端子は、加算回路３３４１のＹ端子に接続されている。ＡＮＤ回路２７３１の出力端子は、加算回路３３３１のＹ端子に接続されている。ＡＮＤ回路２７３２，２７３３の出力端子は、それぞれ加算回路２９３２，２９３３のＸ端子に接続されている。
また、加算回路３３３１のＣＯ端子は、加算回路２９３２のＣＩ端子に接続され、Ｓ端子は加算回路２９４２のＹ端子に接続されている。
加算回路２９３２のＣＯ端子は加算回路２９３３のＣＩ端子に接続され、Ｓ端子は加算回路２９４３のＹ端子に接続されている。
また、加算回路２９３３のＣＯ端子およびＳ端子は、加算回路５２に接続されている。
【００６２】
ＡＮＤ回路２７４０，２７４１，２７４２の一方の入力端子は、データ線３５８  に接続されている。ＡＮＤ回路２７４３の一方の入力端子は、ＮＯＴ回路３１４３を介して、データ線３５８  に接続されている。
ＡＮＤ回路２７４０，２７４１，２７４２，２７４３の他方の入力端子は、それぞれデータ線３５０  ，３５１  ，３５２  ，３５３  に接続されている。
ＡＮＤ回路２７４０の出力端子からは、図２に示す積Ｐのｐ０  が出力される。
ＡＮＤ回路２７４１の出力端子は、加算回路３３４１のＸ端子に接続されている。ＡＮＤ回路２７４２，２７４３の出力端子は、それぞれ加算回路２９４２，２９４３のＸ端子に接続されている。
また、加算回路３３４１のＣＯ端子は、加算回路２９４２のＣＩ端子に接続され、Ｓ端子からは、積Ｐのｐ１  が出力される。
加算回路２９４２のＣＯ端子は加算回路２９４３のＣＩ端子に接続され、Ｓ端子からは積Ｐのｐ２  が出力される。
また、加算回路２９４３のＣＯ端子は、加算回路５２に接続されている。
【００６３】
以下、図４に示す２の補数乗算回路５１の動作について説明する。
２の補数乗算回路５１では、以下に示すようにして、図２に示す積Ｐのｐ０  〜ｐ７  を算出する。
〔ｐ０  の算出〕
バッファ回路２５８  を介してデータ線３５８  に印加されたデータａ０  と、バッファ回路２５０  を介してデータ線３５０  に印加されたデータｂ０  との論理積がＡＮＤ回路２７４０において算出され、その算出結果である「ａ０  ・ｂ０  」がＡＮＤ回路２７４０の出力端子から、ｐ０  として出力される。
【００６４】
〔ｐ１  の算出〕
バッファ回路２５７  を介してデータ線３５７  に印加されたデータａ１  と、バッファ回路２５０  を介してデータ線３５０  に印加されたデータｂ０  との論理積がＡＮＤ回路２７３０において算出され、その算出結果である「ａ１  ・ｂ０  」がＡＮＤ回路２７３０の出力端子から、加算回路３３４１のＹ端子に出力される。
また、バッファ回路２５８  を介してデータ線３５８  に印加されたデータａ０  と、バッファ回路２５１  を介してデータ線３５１  に印加されたデータｂ１  との論理積がＡＮＤ回路２７４１において算出され、その算出結果である「ａ０  ・ｂ１  」がＡＮＤ回路２７４１の出力端子から、加算回路３３４１のＸ端子に出力される。
そして、加算回路３３４１において、「ａ１  ・ｂ０  」と「ａ０  ・ｂ１  」との加算が行なわれ、その加算結果である「ａ１  ・ｂ０  ＋ａ０  ・ｂ１  」の和データがＳ端子からｐ１  として出力され、そのキャリデータがＣＯ端子から加算回路２９４２のＣＩ端子に出力される。
【００６５】
〔ｐ２  の算出〕
バッファ回路２５６  を介してデータ線３５６  に印加されたデータａ２  と、バッファ回路２５０  を介してデータ線３５０  に印加されたデータｂ０  との論理積がＡＮＤ回路２７２０において算出され、その算出結果である「ａ２  ・ｂ０  」がＡＮＤ回路２７２０の出力端子から、加算回路３３３１のＹ端子に出力される。
また、バッファ回路２５７  を介してデータ線３５７  に印加されたデータａ１  と、バッファ回路２５１  を介してデータ線３５１  に印加されたデータｂ１  との論理積がＡＮＤ回路２７３１において算出され、その算出結果である「ａ１  ・ｂ１  」がＡＮＤ回路２７３１の出力端子から、加算回路３３３１のＸ端子に出力される。
そして、加算回路３３３１において、「ａ２  ・ｂ０  」と「ａ１  ・ｂ１  」との加算が行なわれ、その加算結果である「ａ２  ・ｂ０  ＋ａ１  ・ｂ１  」の和データがＳ端子から加算回路２９４２のＹ端子に出力され、そのキャリデータがＣＯ端子から加算回路２９３２のＣＩ端子に出力される。
また、バッファ回路２５８  を介してデータ線３５８  に印加されたデータａ０  と、バッファ回路２５２  を介してデータ線３５２  に印加されたデータｂ２  との論理積がＡＮＤ回路２７４２において算出され、その算出結果である「ａ０  ・ｂ２  」がＡＮＤ回路２７４２の出力端子から、加算回路２９４２のＸ端子に出力される。
そして、加算回路２９４２において、加算回路３３４１のＣＯ端子からの「ａ１  ・ｂ０  ＋ａ０  ・ｂ１  」のキャリデータと、ＡＮＤ回路２７４２の出力端子からの「ａ０  ・ｂ２  」と、加算回路３３３１のＳ端子からの「ａ２  ・ｂ０  ＋ａ１  ・ｂ１  」の和データとを用いて加算が行なわれ、その加算結果の和データがＳ端子からｐ２  として出力され、そのキャリデータがＣＯ端子から加算回路２９４３のＣＩ端子に出力される。
【００６６】
〔ｐ３  の算出〕
バッファ回路２５６  を介してデータ線３５６  に印加されたデータａ２  と、バッファ回路２５１  を介してデータ線３５１  に印加されたデータｂ１  との論理積がＡＮＤ回路２７２１において算出され、その算出結果である「ａ２  ・ｂ１  」がＡＮＤ回路２７２１の出力端子から、加算回路２９２１のＸ端子に出力される。
また、バッファ回路２５５  を介してデータ線３５５  に印加されたデータａ３  と、バッファ回路２５０  を介してデータ線３５０  に印加されたデータｂ０  との論理積がＡＮＤ回路２７１０において算出され、その算出結果である「ａ３  ・ｂ０  」がＡＮＤ回路２７１０の出力端子から、加算回路２９２１のＸ端子に出力される。
また、バッファ回路２５３  を介してデータ線３５３  に印加されたデータｂ３  が加算回路２９２１のＣＩ端子に入力される。
そして、加算回路２９２１において、ＡＮＤ回路２７２１の出力端子からの「ａ２  ・ｂ１  」と、ＡＮＤ回路２７１０の出力端子からの「ａ３  ・ｂ０  」と、ｂ３  とを用いて加算が行なわれ、その加算結果の和データが加算回路２９３２のＹ端子に出力され、キャリデータが加算回路２９２２のＣＩ端子に出力される。
【００６７】
また、バッファ回路２５７  を介してデータ線３５７  に印加されたデータａ１  と、バッファ回路２５２  を介してデータ線３５２  に印加されたデータｂ２  との論理積がＡＮＤ回路２７３２において算出され、その算出結果である「ａ１  ・ｂ２  」がＡＮＤ回路２７３２の出力端子から、加算回路２９３２のＸ端子に出力される。
そして、加算回路２９３２において、加算回路２９２１のＳ端子からの「ａ２  ・ｂ１  」と「ａ３  ・ｂ０  」とｂ３  との加算結果の和データと、ＡＮＤ回路２７３２からの「ａ１  ・ｂ２  」と、加算回路３３３１からのキャリデータとを用いて加算が行なわれ、その加算結果の和データがＳ端子から加算回路２９４３のＹ端子に出力され、キャリデータがＣＯ端子から加算回路２９３３のＣＩ端子に出力される。
【００６８】
また、バッファ回路２５８  を介してデータ線３５８  に印加されたデータａ０  と、バッファ回路２５３  を介してデータ線３５３  に印加されたデータｂ３  との論理積がＡＮＤ回路２７４３において算出され、その算出結果である「ａ０  ・ｂ３  」がＡＮＤ回路２７４３の出力端子から、加算回路２９４３のＸ端子に出力される。
そして、加算回路２９４３において、加算回路２９３２の和データと、ＡＮＤ回路２７４３の出力端子からの「ａ０  ・ｂ３  」と、加算回路２９４２のキャリデータとを用いて加算が行なわれ、その和データがＳ端子からｐ３  として出力され、そのキャリデータが加算回路５２に出力される。
【００６９】
上述した演算は、図２に示すワーストパス５０ｂの演算に相当し、ＡＮＤ回路２７１０，２７２１，２７３２，２７４３において乗算が行なわれ、加算回路２９２１，２９３２，２９４３において加算が行なわれる。
【００７０】
〔ｒ１  ，ｒ２  の算出〕
バッファ回路２５４  を介してデータ線３５４  に印加されたデータａ３  と、バッファ回路２５０  を介してデータ線３５０  に印加されたデータｂ０  との論理積がＡＮＤ回路２７００において算出され、その算出結果である「ａ３  ・ｂ０  」がＡＮＤ回路２７００の出力端子から、加算回路２９１１のＹ端子に出力される。
また、バッファ回路２５５  を介してデータ線３５５  に印加されたデータａ３  と、バッファ回路２５１  を介してデータ線３５１  に印加されたデータｂ１  との論理積がＡＮＤ回路２７１１において算出され、その算出結果である「ａ３  ・ｂ１  」がＡＮＤ回路２７１１の出力端子から、加算回路２９１１のＸ端子に出力される。
また、バッファ回路２５４  を介してデータ線３５４  に印加されたデータａ３  が加算回路２９１１のＣＩ端子に入力される。
そして、加算回路２９１１において、「ａ３  ・ｂ０  」と、「ａ３  ・ｂ１  」と、ａ３  とを用いて加算が行なわれ、その加算結果の和データが加算回路２９２２のＹ端子に出力され、キャリデータが加算回路２９１２のＣＩ端子に出力される。
【００７１】
また、バッファ回路２５６  を介してデータ線３５６  に印加されたデータａ２  と、バッファ回路２５２  を介してデータ線３５２  に印加されたデータｂ２  との論理積がＡＮＤ回路２７２２において算出され、その算出結果である「ａ２  ・ｂ２  」がＡＮＤ回路２７２２の出力端子から、加算回路２９２２のＸ端子に出力される。
そして、加算回路２９２２において、加算回路２９１１からの和データと、「ａ２  ・ｂ２  」と、加算回路２９２１のキャリデータとを用いて加算が行なわれ、その加算結果の和データが加算回路２９３３のＹ端子に出力され、キャリデータが加算回路２９２３のＣＩ端子に出力される。
【００７２】
また、バッファ回路２５７  を介してデータ線３５７  に印加されたデータａ１  のＮＯＴ回路３１３３による反転ａ１  ￣と、バッファ回路２５３  を介してデータ線３５３  に印加されたデータｂ３  との論理積がＡＮＤ回路２７３３において算出され、その算出結果である「ａ１  ￣・ｂ３  」がＡＮＤ回路２７３３の出力端子から、加算回路２９３３のＸ端子に出力される。
そして、加算回路２９３３において、加算回路２９２２の和データと、「ａ１  ￣・ｂ３  」と、加算回路２９３２のキャリデータとを用いて加算が行なわれ、その和データｒ１  がＳ端子から加算回路５２に出力され、そのキャリデータｒ２  がＣＯ端子から加算回路５２に出力される。
【００７３】
上述した演算は、図２に示すワーストパス５０ａの演算に相当し、ＡＮＤ回路２７００，２７１１，２７２２，２７３３において乗算が行なわれ、加算回路２９１１，２９２２，２９３３において加算が行なわれる。
【００７４】
〔ｒ３  ，ｒ４  の算出〕
バッファ回路２５４  を介してデータ線３５４  に印加されたデータａ３  と、バッファ回路２５１  を介してデータ線３５１  に印加され、ＮＯＴ回路３１０１において反転されたデータｂ１  ￣との論理積がＡＮＤ回路２７０１において算出され、その算出結果である「ａ３  ・ｂ１  ￣」がＡＮＤ回路２７０１の出力端子から、加算回路２９１２のＹ端子に出力される。
また、バッファ回路２５５  を介してデータ線３５５  に印加されたデータａ３  と、バッファ回路２５２  を介してデータ線３５２  に印加されたデータｂ２  との論理積がＡＮＤ回路２７１２において算出され、その算出結果である「ａ３  ・ｂ２  」がＡＮＤ回路２７１２の出力端子から、加算回路２９１２のＸ端子に出力される。
そして、加算回路２９１２において、「ａ３  ・ｂ１  」と、「ａ３  ・ｂ２  」と、加算回路２９１１のキャリデータとを用いて加算が行なわれ、その加算結果の和データが加算回路２９２３のＹ端子に出力され、キャリデータが加算回路２９１３のＣＩ端子に出力される。
【００７５】
また、バッファ回路２５６  を介してデータ線３５６  に印加され、ＮＯＴ回路３１２３にて反転されたデータａ２  ￣と、バッファ回路２５３  を介してデータ線３５３  に印加されたデータｂ３  との論理積がＡＮＤ回路２７２３において算出され、その算出結果である「ａ２  ￣・ｂ３  」がＡＮＤ回路２７２３の出力端子から、加算回路２９２３のＸ端子に出力される。
そして、加算回路２９２３において、「ａ２  ￣・ｂ３  」と、加算回路２９１２の和データと、加算回路２９２２のキャリデータとを用いて加算が行なわれ、その加算結果の和データｒ３  およびキャリデータｒ４  が加算回路５２に出力される。
【００７６】
〔ｒ５  ，ｒ６  の算出〕
バッファ回路２５４  を介してデータ線３５４  に印加されたデータａ３  と、バッファ回路２５２  を介してデータ線３５２  に印加され、ＮＯＴ回路３１０２において反転されたデータｂ２  ￣との論理積がＡＮＤ回路２７０２において算出され、その算出結果である「ａ３  ・ｂ２  ￣」がＡＮＤ回路２７０２の出力端子から、加算回路２９１３のＹ端子に出力される。
また、バッファ回路２５５  を介してデータ線３５５  に印加され，ＮＯＴ回路３１１３において反転されたデータａ３  ￣と、バッファ回路２５３  を介してデータ線３５３  に印加されたデータｂ３  との論理積がＡＮＤ回路２７１３において算出され、その算出結果である「ａ３  ￣・ｂ３  」がＡＮＤ回路２７１３の出力端子から、加算回路２９１３のＸ端子に出力される。
そして、加算回路２９１３において、「ａ３  ・ｂ２  ￣」と、「ａ３  ￣・ｂ３  」と、加算回路２９１２からのキャリデータとを用いて加算が行なわれ、その加算結果の和データｒ５  およびキャリデータｒ６  が加算回路５２に出力される。
【００７７】
〔ｒ７  の算出〕
バッファ回路２５４  を介してデータ線３５４  に印加されたデータａ３  と、バッファ回路２５３  を介してデータ線３５３  に印加されたデータｂ３  との論理積がＡＮＤ回路２７０３において算出され、その算出結果である「ａ３  ・ｂ３  」がＡＮＤ回路２７０３の出力端子から、加算回路２９０３のＸ端子に出力される。
また、バッファ回路２５４  を介してデータ線３５４  に印加され，ＮＯＴ回路３１０３において反転されたデータａ３  ￣が加算回路２９０３のＣＩ端子に入力される。
また、バッファ回路２５３  を介してデータ線３５３  に印加され、ＮＯＴ回路３１０４において反転されたデータｂ３  ￣が加算回路２９０３のＹ端子に入力される。そして、加算回路２９０３において、「ａ３  ・ｂ３  」と、ａ３  ￣と、ｂ３  ￣との加算が行なわれ、その加算結果の和データｒ７  が加算回路５２に出力される。
【００７８】
〔ｐ４  ，ｐ５  ，ｐ６  ，ｐ７  の算出〕
図２に示す積Ｐのｐ４  ，ｐ５  ，ｐ６  ，ｐ７  は、上述した処理によって求められたｒ０  〜ｒ７  を用いて、加算回路５２において算出される。
【００７９】
以上説明したように、本実施形態のバウウーリの２の補数乗算回路によれば、被乗数と乗数とのビット数が同じであっても、これらのビット数が異なる場合と、ワーストパスを構成する演算の加算段数を同じにすることができる。その結果、従来に比べて、処理時間を短縮化できる。
また、本実施形態によれば、図１に示すように、ａｍ−１  とｂｎ−１  とが異なる列に配置されることから、その回路を反復セル型の配列を採用して構成した場合に、回路パターンの規則性を高めることができ、レイアウト設計を容易にすることができる。
【００８０】
第２実施形態
本実施形態では、積の演算に、上述した図１に示す２の補数乗算方法採用した２の補数積和演算回路について説明する。
図５は、本実施形態において、４ビットの被乗数Ａと４ビットの乗数Ｂとの２の補数乗算の乗算結果に、９ビットのデータＣを加算する場合の演算方法を説明するための図である。
図５において、「６０」は、図２に示す部分積と同じである。
図５に示すように、この演算方法では、４ビットの被乗数Ａ（ａ３  ，ａ２  ，ａ１  ，ａ０  ）のＭＳＢの上位ビットに、ＭＳＢであるａ３  を付加した５ビットの被乗数Ａ（ａ３  ，ａ３  ，ａ２  ，ａ１  ，ａ０  ）と、４ビットの乗数Ｂ（ｂ３  ，ｂ２  ，ｂ１  ，ｂ０  ）との２の補数乗算を行ない、その積に対して、８ビットのデータＣ（ｃ７  ，ｃ６  ，ｃ５  ，ｃ４  ，ｃ３  ，ｃ２  ，ｃ１  ，ｃ０  ）を加算して、積和演算結果であるＰ（ｐ７  ，ｐ６  ，ｐ５  ，ｐ４  ，ｐ３  ，ｐ２  ，ｐ１  ，ｐ０  ）を得る。
ここで、２の補数の乗算結果のＭＳＢである「１」は破棄される。
図５において、ワーストパスは、「６０ａ」および「６０ｂ」で示される。
【００８１】
図６は、図５に示す２の補数積和演算を行なう２の補数積和演算回路６１である。
なお、図６において、図４に示す２の補数乗算回路５１と同じ構成要素には図４と同一の符号が付してある。
以下、２の補数積和演算回路６１と２の補数乗算回路５１との相違点のみを説明する。
２の補数乗算回路５１とは異なり、２の補数積和演算回路６１には、図４に示す加算回路２９１１，２９２１，２９３１，２９４１，２９１２，２９１３が設けられていない。
【００８２】
また、２の補数積和演算回路６１には、データ線６５０  〜６５７  が設けられている。
また、２の補数積和演算回路６１には、２の補数乗算回路５１の加算回路２９４２の代わりに、半加算回路である加算回路３３４２が設けられている。
また、２の補数積和演算回路６１には、図１７（Ａ）に示す構成の加算回路２９１４，２９５１，２９５２，２９５３と、図１７（Ｂ）に示す構成の半加算回路である加算回路３３５０と、加算回路３７２４，３７３４と、加算回路３９４４とが、設けられている。
加算回路３７２４，３７３４は、それぞれ１ビットの加算対象データを入力する４個の入力端子、ＣＩ端子、ＣＯ端子および２ビットのＳ端子を備えている。
加算回路３９４４は、それぞれ１ビットの加算対象データを入力する３個の入力端子、ＣＩ端子、ＣＯ端子および２ビットのＳ端子を備えている。
【００８３】
また、２の補数積和演算回路６１には、２の補数乗算回路５１の加算回路５２の代わりに、加算回路６２が設けられている。
加算回路６２は、加算回路２９１４からの和データｓ６  と、加算回路３７２４からの和データｓ４  およびキャリデータｓ５  と、加算回路３７３４からの和データｓ２  およびキャリデータｓ３  と、加算回路３９４４からの和データｓ０  およびキャリデータｓ１  とを入力し、これらから、図５に示す積Ｒのｒ７  ，ｒ６  ，ｒ５  ，ｒ４  を演算して生成する。
【００８４】
以下、図６に示す２の補数積和演算回路６１の接続状態について説明する。
ここでは、図４に示す２の補数乗算回路５１の接続形態と異なる点を主に説明する。
ＡＮＤ回路２７００，２７０１，２７１０，２７１１，２７２１，２７３０，２７３１の出力端子は、それぞれ加算回路２９２２，２９２３，２９３２，２９３３，２９４３，２９５１，２９５２のＹ端子に接続されている。
また、ＡＮＤ回路２７２０の出力端子は、加算回路３３４２のＹ端子に接続されている。ＡＮＤ回路２７４０の出力端子は、加算回路３３５０のＸ端子に接続されている。ＡＮＤ回路２７４１の出力端子は、加算回路２９５１のＣＩ端子に接続されている。ＡＮＤ回路２７０２，２７１３の出力端子は、加算回路３７２４の入力端子に接続されている。
また、ＡＮＤ回路２７１２の出力端子は、加算回路３７３４の入力端子に接続されている。また、ＡＮＤ回路２７４２の出力端子は、加算回路３３４２のＸ端子に接続されている。
【００８５】
また、加算回路２９２２のＣＩ端子は、データ線３５４  に接続されている。加算回路２９２３のＣＩ端子は、データ線６５５  に接続されている。加算回路２９３２のＣＩ端子は、データ線３５３  に接続されている。加算回路２９３３のＣＩ端子は、データ線６５４  に接続されている。加算回路２９４３のＣＩ端子は、データ線６５３  に接続されている。加算回路３３５０のＹ端子は、データ線６５０  に接続されている。加算回路２９５１のＸ端子は、データ線６５１  に接続されている。加算回路２９５２のＸ端子はデータ線６５２  に接続され、ＣＩ端子は加算回路３３４２のＳ端子に接続されている。加算回路２９５３のＹ端子は加算回路２９３２のＳ端子に接続され、Ｙ端子は加算回路３３４２のＣＯ端子に接続され、ＣＩ端子は加算回路２９４３のＳ端子に接続されている。
【００８６】
また、加算回路２９１４のＹ端子は加算回路３７２４のＣＯ端子に接続され、Ｘ端子は加算回路２９０３のＳ端子に接続され、ＣＩ端子はデータ線６５７  に接続されている。
加算回路３７２４の４本の入力端子は、それぞれＡＮＤ回路２７１３の出力端子、データ線６５６  、ＡＮＤ回路２７０２の出力端子および加算回路２９２３のＣＯ端子に接続され、ＣＩ端子は加算回路３７３４のＣＯ端子に接続され、ＣＯ端子は加算回路２９１４のＣＩ端子に接続され、２ビットのＳ端子は加算回路６２に接続されている。
加算回路３７３４の４本の入力端子は、それぞれ加算回路２９２３のＳ端子、加算回路２９２２のＣＯ端子、ＡＮＤ回路２７１３の出力端子、データ線６５６  、ＡＮＤ回路２７１２の出力端子および加算回路２９３３のＣＯ端子に接続され、ＣＩ端子は加算回路３９４４のＣＯ端子に接続され、ＣＯ端子は加算回路３７２４のＣＩ端子に接続され、２ビットのＳ端子は加算回路６２に接続されている。
【００８７】
加算回路３９４４の３本の入力端子は、それぞれ加算回路２９３３のＳ端子、加算回路２９３２のＣＯ端子および加算回路２９２２のＳ端子に接続され、ＣＩ端子は加算回路２９４３のＣＯ端子に接続され、ＣＯ端子は加算回路３７３４のＣＩ端子に接続され、２ビットのＳ端子は加算回路６２に接続されている。
なお、図６において、ＡＮＤ回路２７１０，２７２１，２７３２，２７４３によって本発明の第２の観点の演算装置における第１の乗算手段が構成される。また、加算回路２９３２，２９４３，２９５３によって第１の加算手段が構成される。また、ＡＮＤ回路２７００，２７１１，２７２２，２７３３によって、第２の乗算手段が構成される。また、加算回路２９２２，２９３３，３９４４によって第２の加算手段が構成される。
【００８８】
以下、図６に示す２の補数積和演算回路６１の動作について説明する。
２の補数積和演算回路６１では、以下に示すようにして、図５に示す積和演算結果であるＰのｐ０  〜ｐ７  を算出する。
【００８９】
〔ｐ０  の算出〕
加算回路３３５０において、ＡＮＤ回路２７４０の出力端子からの「ａ０  ・ｂ０  」と、データ線６５０  に印加されたデータｃ０  との加算が行なわれ、その加算結果の和データｐ０  がＳ端子から出力される。また、この加算結果のキャリデータｒ７  は、ＣＯ端子から加算回路６２に出力される。
【００９０】
〔ｐ１  の算出〕
ＡＮＤ回路２７４１の出力端子からの「ａ０  ・ｂ１  」と、データ線６５１  に印加されたｃ１  と、ＡＮＤ回路２７３０の出力端子からの「ａ１  ・ｂ０  」とを用いた加算が、加算回路２９５１において行なわれ、その加算結果の和データｐ１  がＳ端子から出力され、キャリデータｒ８  が端子から加算回路６２に出力される。
【００９１】
〔ｐ２  の算出〕
加算回路３３４２において、ＡＮＤ回路２７４２の出力端子からの「ａ０  ・ｂ２  」と、ＡＮＤ回路２７２０の出力端子からの「ａ２  ・ｂ０  」との加算が行なわれ、その加算結果の和データがＳ端子から加算回路２９５２のＣＩ端子に出力され、キャリデータがＣＯ端子から加算回路２９５３のＸ端子に出力される。
そして、加算回路２９５２において、加算回路３３４２からの和データと、データ線６５２  に印加されたｃ２  と、ＡＮＤ回路２７３１の出力端子からの「ａ１  ・ｂ１  」との加算が行なわれ、その加算結果の和データｐ２  がＳ端子から出力され、キャリデータｒ９  がＣＯ端子から出力される。これらの和データｐ２  およびキャリデータｒ９  は、加算回路６２に出力される。
【００９２】
〔ｐ３  の算出〕
加算回路３３３２において、ＡＮＤ回路２７３２の出力端子からの「ａ１  ・ｂ２  」と、ＡＮＤ回路２７１０の出力端子からの「ａ３  ・ｂ０  」と、データ線３５３  に印加されたｂ３  との加算が行なわれ、その加算結果の和データがＳ端子から加算回路２９５３のＹ端子に出力され、キャリデータがＣＯ端子から加算回路３９４４の入力端子に出力される。
また、加算回路２９４３において、ＡＮＤ回路２７４３の出力端子からの「ａ０  ￣・ｂ３  」と、データ線６５３  に印加されたデータｃ３  と、ＡＮＤ回路２７２１の出力端子からの「ａ２  ・ｂ１  」との加算が行なわれ、その加算結果の和データがＳ端子から加算回路２９５３のＣＩ端子に出力され、キャリデータがＣＯ端子から加算回路３９４４のＣＩ端子に出力される。
そして、加算回路２９５３において、加算回路２９４３からの和データと、加算回路３３４２からのキャリデータと、加算回路２９３２からの和データとの加算が行なわれ、その加算結果の和データｐ３  がＳ端子から出力され、キャリデータがＣＯ端子から出力される。これらの和データｐ３  およびキャリデータｒ１０は、加算回路６２に出力される。
【００９３】
この演算は、図５に示すワーストパス６０ｂを算出する演算に相当し、ＡＮＤ回路２７１０，２７２１，２７３２，２７４３において乗算が行なわれ、加算回路２９３２，２９４３，２９５３において加算が行なわれる。
【００９４】
〔ｒ０  ，ｒ１  の算出〕
加算回路２９２２において、ＡＮＤ回路２７２２の出力端子からの「ａ２  ・ｂ２  」と、ＡＮＤ回路２７００の出力端子からの「ａ３  ・ｂ０  ￣」と、データ線３５４  に印加されたａ３  との加算が行なわれ、その加算結果の和データがＳ端子から、加算回路３９４４の入力端子に出力される。
加算回路２９３３において、ＡＮＤ回路２７３３の出力端子からの「ａ１  ￣・ｂ３  」と、ＡＮＤ回路２７１１の出力端子からの「ａ３  ・ｂ１  」と、データ線６５４  に印加されたｃ４  との加算が行なわれ、その加算結果の和データがＳ端子から、加算回路３９４４の入力端子に出力される。また、その加算結果のキャリデータが、加算回路３７３４の入力端子に出力される。
【００９５】
そして、加算回路３９４４において、加算回路２９３３のＳ端子からの和データと、加算回路２９３２のＣＯ端子からのキャリデータと、加算回路２９２２のＳ端子からの和データと、加算回路２９４３のＣＯ端子からのキャリデータとを用いて加算が行なわれ、その２ビットの和データ（ｒ０  ，ｒ１  ）がＳ端子から加算回路６２に出力される。また、ＣＯ端子からキャリデータが加算回路３７３４のＣＩ端子に出力される。
【００９６】
この演算は、図５に示すワーストパス６０ａを算出する演算に相当し、ＡＮＤ回路２７００，２７１１，２７２２，２７３３において乗算が行なわれ、加算回路２９２２，２９３３，３９４４において加算が行なわれる。
【００９７】
〔ｒ２  ，ｒ３  の算出〕
加算回路２９２３において、ＡＮＤ回路２７２３の出力端子からの「ａ２  ￣・ｂ３  」と、ＡＮＤ回路２７０１の出力端子からの「ａ３  ・ｂ１  ￣」と、データ線６５５  に印加されたｃ５  との加算が行なわれ、その加算結果の和データがＳ端子から加算回路３７３４の入力端子に出力され、キャリデータがＣＯ端子から加算回路３７２４に出力される。
そして、加算回路３７３４において、加算回路２９２３のＳ端子からの和データと、加算回路２９２２のＣＯ端子からのキャリデータと、ＡＮＤ回路２７１２の出力端子からの「ａ３  ・ｂ２  」と、加算回路２９３３のＣＯ端子からのキャリデータとを用いて加算が行なわれ、Ｓ端子から・２ビットの和データ（ｒ２  ，ｒ３  ）が加算回路６２に出力される。また、ＣＯ端子からキャリデータが、加算回路３７２４に出力される。
【００９８】
〔ｒ４  ，ｒ５  の算出〕
加算回路３７２４において、ＡＮＤ回路２７１３の出力端子からの「ａ３  ￣・ｂ３  」と、データ線６５６  に印加されたｃ６  と、ＡＮＤ回路２７０２の出力端子からの「ａ３  ・ｂ２  ￣」と、加算回路２９２３のＣＯ端子からのキャリデーアとを用いて加算が行なわれ、Ｓ端子から２ビットの和データ（ｒ４  ，ｒ５  ）が加算回路６２に出力される。また、ＣＯ端子からキャリデータが加算回路２９１４に出力される。
【００９９】
〔ｒ６  の算出〕
ＡＮＤ回路２７０３において、ＡＮＤ回路２７０３からの「ａ３  ・ｂ３  」と、データ線３５４  に印加されてＡＮＤ回路２７０３によって反転されたａ３  ￣と、Ｙ端子に入力されたｂ３  ￣との加算が行なわれ、その加算結果の和データが加算回路２９１４のＸ端子に出力される。
そして、加算回路２９１４において、加算回路２９０３のＳ端子からの和データと、データ線６５７  に印加されたｃ７  と、加算回路３７２４からのキャリデータとを用いて加算が行なわれ、その加算結果の和データｒ６  が加算回路６２に出力される。
【０１００】
〔ｐ４  〜ｐ７  の算出〕
加算回路６２において、ｐ１  ，ｐ２  ，ｐ３  ，ｒ０  〜ｒ１０を用いて、ｐ４  ，ｐ５  ，ｐ６  ，ｐ７  が算出される。
【０１０１】
以上説明したように、本実施形態のバウウーリの２の補数積和演算回路によっても、前述した第１実施形態のバウウーリの２の補数乗算回路と同様の効果を得ることができる。
【０１０２】
第３実施形態
先ず、本実施形態の２の補数乗算回路において採用するバウウーリの２の補数乗算の演算方法について説明する。
図７は、本実施形態のバウウーリの２の補数乗算の演算方法について説明するための図である。
【０１０３】
この２の補数乗算方法では、ｍビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．ａ１  ，ａ０  ）と、ｎビットの乗数Ｂ（ｂｎ−１  ，ｂｎ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なう場合に、ｍ＝ｎであるときに、ｍ＋１ビットの被乗数Ａ’（ａｍ−１  ，ａｍ−２  ，．．ａ１  ，ａ０  ，０）と、ｎビットの乗数Ｂ（ｂｎ−１  ，ｂｎ−２  ，．．，ｂ１  ，ｂ０  ）との２の補数乗算を行なう。
すなわち、ｍビットの被乗数Ａ（ａｍ−１  ，ａｍ−２  ，．．ａ１  ，ａ０  ）の代わりに、被乗数Ａの最下位ビット（ＬＳＢ：Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）の下に、「０」を付加した被乗数Ａ’（ａｍ−１  ，ａｍ−２  ，．．ａ１  ，ａ０  ，０）を用いる。
このようにすることで、被乗数Ａの語長が１ビットだけ増え、被乗数と乗数との語長が異なるようになる。
その結果、図１８に示すようにａｍ−１  とｂｎ−１  とが同じ列で加算されることを回避でき、図７に示すワーストパス１６を構成する加算の段数を、図１８に示すワーストパス６に比べて、１段減らすことができる。
【０１０４】
図７において、「１２」は被乗数Ａ’を示し、「１３」は乗数Ｂを示し、「１４」は部分積の集合を示し、「１５」は積Ｐ（ｐｍ＋ｎ−１  ，ｐｍ＋ｎ−２  ，．．，ｐ１  ，ｐ０  ）を示す。
図７に示す２の補数乗算の演算方法では、被乗算数ＡをＬＳＢ方向に１ビット符号拡張した被乗算数Ａ’を用いることから、積ＰのＬＳＢを削除したものを、２の補数乗算の演算結果とする。
従って、図１に示す「１７」の部分は不要となる。
【０１０５】
以下、図７に示す演算方法と、図１８に示す演算方法とが等しいことを示す。図７に示すｐ０  〜ｐｍ−３  は、それぞれ図１８に示すｐ０  〜ｐｍ−３  に０を加算しているだけなので、それぞれ両者は等しい。
次に、図７に示すｐｎ−２  と、図１８に示すｐｍ−２  とで異なるのは、図７において「１８」で囲んだ部分である。すなわち、図７に示すｐｎ−２  は、図１８に示すｐｎ−２  に、「１・ｂｎ−１  」と、ｂｎ−１  とを加算したものになっている。ここで、「１８」の部分は、ｂｎ−１  ＝０のときに０となり、、ｂｎ−１  ＝１のときにも０となり、１つ上の桁であるｐｎ−１  への桁上げを行う。この桁上げは、図１８に示すように、ｐｍ−１  にｂｎ−１  の加算を設けることと等しい。そのため、図７に示すｐｍ−２  と、図１８に示すｐｍ−２  とは等しい。
【０１０６】
次に、図７に示すｐｍ−１  と図１８に示すｐｍ−１  とは、図１８に示すｐｍ−１  にはｂｎ−１  の加算がある点だけが異なる。ここで、図１８に示すｐｍ−１  におけるｂｎ−１  の加算には、前述したような意味があるため、ｐｍ−１  には影響を及ぼさない。また、ｐｍ  以上のビットについての図７と図１８との同一性は図からも明らかなように全く同一の部分積となるため保証される。
【０１０７】
図８は、図７に示す演算方法を、４ビットの被乗数Ａと４ビットの乗数Ｂとの２の補数乗算に適用した場合の演算方法を説明するための図である。
この場合には、図８に示すように、４ビットの被乗数Ａ（ａ３  ，ａ２  ，ａ１  ，ａ０  ）のＬＳＢの下に、その「０」を付加した５ビットの被乗数Ａ（ａ３  ，ａ３  ，ａ２  ，ａ１  ，ａ０  ）と、４ビットの乗数Ｂ（ｂ３  ，ｂ２  ，ｂ１  ，ｂ０  ）との２の補数乗算を行ない、積Ｐ（ｐ７  ，ｐ６  ，ｐ５  ，ｐ４  ，ｐ３  ，ｐ２  ，ｐ１  ，ｐ０  ）が得られる。ここで、演算結果である積のＬＳＢにある「０」は破棄される。
【０１０８】
図８に示すように、ａ３  とｂ３  とは異なる列に配列され、図１８に示す演算方法を適用した場合に比べて、ワーストパス７０ａ，７０ｂの段数を１段だけ削減できる。
ここで、被乗数Ａ（ａ３  ，ａ２  ，ａ１  ，ａ０  ）が（１，０，１，０）であり、乗数Ｂ（ｂ３  ，ｂ２  ，ｂ１  ，ｂ０  ）が（１，１，１，１）である場合には、図９に示すように演算が行なわれ、演算結果の最下位ビットにある「０」が破棄される。
これによって、積Ｐ（ｐ７  ，ｐ６  ，ｐ５  ，ｐ４  ，ｐ３  ，ｐ２  ，ｐ１  ，ｐ０  ）が（０，０，０，０，０，１，１，０）となる。この結果は、図３に示す結果と同じである。
【０１０９】
図１０は、図８に示す２の補数乗算を行なう２の補数乗算回路７１の構成図である。
なお、図１０において、図４に示す２の補数乗算回路５１と同じ構成要素には図４と同一の符号が付してある。
図１０に示す２の補数乗算回路７１の構成は、図４に示す２の補数乗算回路５１の構成と共通部分が多いため、異なる部分についてのみ説明する。
図１０に示すように、２の補数乗算回路７１では、データ線３５４  ，３５５  ，３５６  ，３５７  に、それぞれａ３  ，ａ２  ，ａ１  ，ａ０  が印加される。
２の補数乗算回路７１では、加算回路２９０３のＣＯ端子は、ＮＯＴ回路３１０５を介して、加算回路７２に接続されている。
また、２の補数乗算回路７１には、図４に示す２の補数乗算回路５１とは異なり、バッファ回路２５８  と、ＡＮＤ回路２７４０，２７４１，２７４２，２７４３と、加算回路２９４２，２９４３と、ＮＯＴ回路３１４３と、加算回路３３４１とは設けられていない。
また、２の補数乗算回路７１には、加算回路３３４３が設けられ、加算回路３３４３のＸ端子がデータ線３５３  に接続され、Ｙ端子が加算回路２９３２のＳ端子に接続されている。
さらに、２の補数乗算回路７１には、２の補数乗算回路５１の加算回路５２の代わりに、加算回路７２が設けられている。
なお、図１０において、ＡＮＤ回路２７１０，２７２１，２７３２によって本発明の第３の観点の演算装置における第１の乗算手段が構成される。また、加算回路２９２１，２９３２，３３４３によって第１の加算手段が構成される。また、ＡＮＤ回路２７００，２７１１，２７２２，２７３３によって、第２の乗算手段が構成される。また、加算回路２９１１，２９２２，２９３３，３９４４によって第２の加算手段が構成される。
【０１１０】
以下、図１０に示す２の補数乗算回路７１の動作について説明する。
２の補数乗算回路７１では、以下に示すようにして、図８に示す積Ｐのｐ０  〜ｐ７  を算出する。
〔ｐ０  の算出〕
バッファ回路２５８  を介してデータ線３５７  に印加されたデータａ０  と、バッファ回路２５０  を介してデータ線３５０  に印加されたデータｂ０  との論理積がＡＮＤ回路２７３０において算出され、その算出結果である「ａ０  ・ｂ０  」がＡＮＤ回路２７３０の出力端子から、ｐ０  として出力される。
【０１１１】
〔ｐ１  の算出〕
バッファ回路２５６  を介してデータ線３５６  に印加されたデータａ１  と、バッファ回路２５０  を介してデータ線３５０  に印加されたデータｂ０  との論理積がＡＮＤ回路２７２０において算出され、その算出結果である「ａ１  ・ｂ０  」がＡＮＤ回路２７２０の出力端子から、加算回路３３３１のＹ端子に出力される。
また、バッファ回路２５７  を介してデータ線３５７  に印加されたデータａ０  と、バッファ回路２５１  を介してデータ線３５１  に印加されたデータｂ１  との論理積がＡＮＤ回路２７３１において算出され、その算出結果である「ａ０  ・ｂ１  」がＡＮＤ回路２７３１の出力端子から、加算回路３３３１のＸ端子に出力される。
そして、加算回路３３３１において、「ａ１  ・ｂ０  」と「ａ０  ・ｂ１  」との加算が行なわれ、その加算結果である「ａ１  ・ｂ０  ＋ａ０  ・ｂ１  」の和データがＳ端子からｐ１  として出力され、そのキャリデータがＣＯ端子から加算回路２９３２のＣＩ端子に出力される。
【０１１２】
〔ｐ２  の算出〕
バッファ回路２５５  を介してデータ線３５５  に印加されたデータａ２  と、バッファ回路２５０  を介してデータ線３５０  に印加されたデータｂ０  との論理積がＡＮＤ回路２７１０において算出され、その算出結果である「ａ２  ・ｂ０  」がＡＮＤ回路２７１０の出力端子から、加算回路２９２１のＹ端子に出力される。
また、バッファ回路２５６  を介してデータ線３５６  に印加されたデータａ１  と、バッファ回路２５１  を介してデータ線３５１  に印加されたデータｂ１  との論理積がＡＮＤ回路２７２１において算出され、その算出結果である「ａ１  ・ｂ１  」がＡＮＤ回路２７２１の出力端子から、加算回路２９２１のＸ端子に出力される。
また、データ線３５３  に印加されたデータｂ３  が、加算回路２９２１のＣＩ端子に入力される。
【０１１３】
そして、加算回路２９２１において、「ａ２  ・ｂ０  」と、「ａ１  ・ｂ１  」と、ｂ３  との加算が行なわれ、その加算結果の和データがＳ端子から加算回路２９３２のＹ端子に出力され、キャリデータがＣＯ端子から加算回路２９２２のＣＩ端子に出力される。
また、ＡＮＤ回路２７３２において、データ線３５７  に印加されたデータａ０  と、データ線３５２  に印加されたデータｂ２  との論理積が演算され、その算出結果である「ａ０  ・ｂ２  」が、出力端子から加算回路２９３２のＸ端子に出力される。そして、加算回路２９３２において、加算回路２９２１からの和データと、加算回路３３３１からのキャリデータと、ＡＮＤ回路２７３２からの和データとの加算が行なわれ、その加算結果の和データがＳ端子から加算回路３３４３のＹ端子に出力され、そのキャリデータがＣＯ端子から加算回路２９３３のＣＩ端子に出力される。次に、加算回路３３４３において、加算回路２９３２からの和データと、データ線３５３  に印加されたデータｂ３  との加算が行なわれ、その加算結果の和データがｐ２  として出力され、キャリデータが加算回路７２にｒ０  として出力される。
【０１１４】
上述した演算は、図８に示すワーストパス７０ｂに相当し、ＡＮＤ回路２７１０，２７２１，２７３２，において乗算が行われ、加算回路２９２１，２９３２，３３４３において加算が行われる。
【０１１５】
〔ｒ１  ，ｒ２  の算出〕
バッファ回路２５４  を介してデータ線３５４  に印加されたデータａ３  と、バッファ回路２５０  を介してデータ線３５０  に印加されてＮＯＴ回路３１００において反転されたデータｂ０  ￣との論理積がＡＮＤ回路２７００において算出され、その算出結果である「ａ３  ・ｂ０  ￣」がＡＮＤ回路２７００の出力端子から、加算回路２９１１のＹ端子に出力される。
また、バッファ回路２５５  を介してデータ線３５５  に印加されたデータａ２  と、バッファ回路２５１  を介してデータ線３５１  に印加されたデータｂ１  との論理積がＡＮＤ回路２７１１において算出され、その算出結果である「ａ２  ・ｂ１  」がＡＮＤ回路２７１１の出力端子から、加算回路２９１１のＸ端子に出力される。
また、バッファ回路２５４  を介してデータ線３５４  に印加されたデータａ３  が加算回路２９１１のＣＩ端子に入力される。
そして、加算回路２９１１において、「ａ３  ・ｂ０  ￣」と、「ａ２  ・ｂ１  」と、ａ３  とを用いて加算が行なわれ、その加算結果の和データが加算回路２９２２のＹ端子に出力され、キャリデータが加算回路２９１２のＣＩ端子に出力される。
【０１１６】
また、バッファ回路２５６  を介してデータ線３５６  に印加されたデータａ１  と、バッファ回路２５２  を介してデータ線３５２  に印加されたデータｂ２  との論理積がＡＮＤ回路２７２２において算出され、その算出結果である「ａ１  ・ｂ２  」がＡＮＤ回路２７２２の出力端子から、加算回路２９２２のＸ端子に出力される。
そして、加算回路２９２２において、加算回路２９１１からの和データと、「ａ１  ・ｂ２  」と、加算回路２９２１のキャリデータとを用いて加算が行なわれ、その加算結果の和データが加算回路２９３３のＹ端子に出力され、キャリデータが加算回路２９２３のＣＩ端子に出力される。
【０１１７】
また、バッファ回路２５７  を介してデータ線３５７  に印加されたデータａ０  のＮＯＴ回路３１３３による反転ａ０  ￣と、バッファ回路２５３  を介してデータ線３５３  に印加されたデータｂ３  との論理積がＡＮＤ回路２７３３において算出され、その算出結果である「ａ０  ￣・ｂ３  」がＡＮＤ回路２７３３の出力端子から、加算回路２９３３のＸ端子に出力される。
そして、加算回路２９３３において、加算回路２９２２の和データと、「ａ０  ￣・ｂ３  」と、加算回路２９３２のキャリデータとを用いて加算が行なわれ、その和データｒ１  がＳ端子から加算回路５２に出力され、そのキャリデータｒ２  がＣＯ端子から加算回路５２に出力される。
【０１１８】
上述した演算は、図８に示すワーストパス７０ａの演算に相当し、ＡＮＤ回路２７００，２７１１，２７２２，２７３３において乗算が行なわれ、加算回路２９１１，２９２２，２９３３において加算が行なわれる。
【０１１９】
〔ｒ３  ，ｒ４  の算出〕
バッファ回路２５４  を介してデータ線３５４  に印加されたデータａ３  と、バッファ回路２５１  を介してデータ線３５１  に印加され、ＮＯＴ回路３１０１において反転されたデータｂ１  ￣との論理積がＡＮＤ回路２７０１において算出され、その算出結果である「ａ３  ・ｂ１  ￣」がＡＮＤ回路２７０１の出力端子から、加算回路２９１２のＹ端子に出力される。
また、バッファ回路２５５  を介してデータ線３５５  に印加されたデータａ２  と、バッファ回路２５２  を介してデータ線３５２  に印加されたデータｂ２  との論理積がＡＮＤ回路２７１２において算出され、その算出結果である「ａ２  ・ｂ２  」がＡＮＤ回路２７１２の出力端子から、加算回路２９１２のＸ端子に出力される。
そして、加算回路２９１２において、「ａ３  ・ｂ１  ￣」と、「ａ２  ・ｂ２  」と、加算回路２９１１のキャリデータとを用いて加算が行なわれ、その加算結果の和データが加算回路２９２３のＹ端子に出力され、キャリデータが加算回路２９１３のＣＩ端子に出力される。
【０１２０】
また、バッファ回路２５６  を介してデータ線３５６  に印加され、ＮＯＴ回路３１２３にて反転されたデータａ１  ￣と、バッファ回路２５３  を介してデータ線３５３  に印加されたデータｂ３  との論理積がＡＮＤ回路２７２３において算出され、その算出結果である「ａ１  ￣・ｂ３  」がＡＮＤ回路２７２３の出力端子から、加算回路２９２３のＸ端子に出力される。
そして、加算回路２９２３において、「ａ１  ￣・ｂ３  」と、加算回路２９１２の和データと、加算回路２９２２のキャリデータとを用いて加算が行なわれ、その加算結果の和データｒ３  およびキャリデータｒ４  が加算回路５２に出力される。
【０１２１】
〔ｒ５  ，ｒ６  の算出〕
バッファ回路２５４  を介してデータ線３５４  に印加されたデータａ３  と、バッファ回路２５２  を介してデータ線３５２  に印加され、ＮＯＴ回路３１０２において反転されたデータｂ２  ￣との論理積がＡＮＤ回路２７０２において算出され、その算出結果である「ａ３  ・ｂ２  ￣」がＡＮＤ回路２７０２の出力端子から、加算回路２９１３のＹ端子に出力される。
また、バッファ回路２５５  を介してデータ線３５５  に印加され，ＮＯＴ回路３１１３において反転されたデータａ２  ￣と、バッファ回路２５３  を介してデータ線３５３  に印加されたデータｂ３  との論理積がＡＮＤ回路２７１３において算出され、その算出結果である「ａ２  ￣・ｂ３  」がＡＮＤ回路２７１３の出力端子から、加算回路２９１３のＸ端子に出力される。
そして、加算回路２９１３において、「ａ３  ・ｂ２  ￣」と、「ａ２  ￣・ｂ３  」と、加算回路２９１２からのキャリデータとを用いて加算が行なわれ、その加算結果の和データｒ５  およびキャリデータｒ６  が加算回路５２に出力される。
【０１２２】
〔ｒ７  の算出〕
バッファ回路２５４  を介してデータ線３５４  に印加されたデータａ３  と、バッファ回路２５３  を介してデータ線３５３  に印加されたデータｂ３  との論理積がＡＮＤ回路２７０３において算出され、その算出結果である「ａ３  ・ｂ３  」がＡＮＤ回路２７０３の出力端子から、加算回路２９０３のＸ端子に出力される。
また、バッファ回路２５４  を介してデータ線３５４  に印加され，ＮＯＴ回路３１０３において反転されたデータａ３  ￣が加算回路２９０３のＣＩ端子に入力される。
また、バッファ回路２５３  を介してデータ線３５３  に印加され、ＮＯＴ回路３１０４において反転されたデータｂ３  ￣が加算回路２９０３のＹ端子に入力される。そして、加算回路２９０３において、「ａ３  ・ｂ３  」と、ａ３  ￣と、ｂ３  ￣との加算が行なわれ、その加算結果の和データｒ７  が加算回路５２に出力される。
また、加算回路２９０３のＣＯ端子からのキャリデータが、ＮＯＴ回路３１０５において反転された後に、ｒ８  として加算回路７２に出力される。
【０１２３】
〔ｐ３  ，ｐ４  ，ｐ５  ，ｐ６  ，ｐ７  の算出〕
図２に示す積Ｐのｐ４  ，ｐ５  ，ｐ６  ，ｐ７  は、上述した処理によって求められたｒ０  〜ｒ８  を用いて、加算回路７２において算出される。
【０１２４】
以上説明したように、本実施形態のバウウーリの２の補数乗算回路によっても、前述した第１実施形態と同様の効果を得ることができる。
【０１２５】
第４実施形態
本実施形態では、積の演算に、上述した図７に示す２の補数乗算方法採用した２の補数積和演算回路について説明する。
図１１は、本実施形態において、４ビットの被乗数Ａと４ビットの乗数Ｂとの２の補数乗算の乗算結果に、９ビットのデータＣを加算する場合の演算方法を説明するための図である。
図１１において、「８０」は、図８に示す部分積と同じである。
図１１に示すように、この演算方法では、４ビットの被乗数Ａ（ａ３  ，ａ２  ，ａ１  ，ａ０  ）のＬＳＢの下位ビットに、「０」を付加した５ビットの被乗数Ａ（ａ３  ，ａ２  ，ａ１  ，ａ０  ，０）と、４ビットの乗数Ｂ（ｂ３  ，ｂ２  ，ｂ１  ，ｂ０  ）との２の補数乗算を行ない、その積に対して、８ビットのデータＣ（ｃ７  ，ｃ６  ，ｃ５  ，ｃ４  ，ｃ３  ，ｃ２  ，ｃ１  ，ｃ０  ）を加算して、積和演算結果であるＰ（ｐ７  ，ｐ６  ，ｐ５  ，ｐ４  ，ｐ３  ，ｐ２  ，ｐ１  ，ｐ０  ）を得る。
ここで、２の補数の乗算結果のＬＳＢである「０」は破棄される。
【０１２６】
図１２は、図１１に示す２の補数積和演算を行なう２の補数積和演算回路８１である。
なお、図１２において、図６に示す２の補数乗算回路６１と同じ構成要素には図６と同一の符号が付してある。
以下、２の補数積和演算回路８１と２の補数積和演算回路６１との相違点のみを説明する。
先ず、２の補数積和演算回路８１には、データｃ７  が印加されるデータ線６５８  が設けられている。
２の補数積和演算回路８１では、データ線３５０  ，３５１  ，３５２  ，３５３  ，３５４  ，３５５  ，３５６  ，３５７  に、それぞれｂ０  ，ｂ１  ，ｂ２  ，ｂ３  ，ａ３  ，ａ２  ，ａ１  ，ａ０  が印加される。
また、データ線６５１  ，６５２  ，６５３  ，６５４  ，６５５  ，６５６  ，６５７  ，６５８  にそれぞれｃ０  ，ｃ１  ，ｃ２  ，ｃ３  ，ｃ４  ，ｃ５  ，ｃ６  ，ｃ７  が印加される。
【０１２７】
また、２の補数積和演算回路８１には、加算回路３３０４が設けられている。加算回路３３０４の一方のＹ端子は加算回路２９０３のＣＯ端子に接続され、Ｘ端子はデータ線６５８  に接続されている。加算回路３３０４の出力端子は、加算回路８２に接続されている。
【０１２８】
また、２の補数積和演算回路８１には、加算回路３３６０，２９６１，３３６２，２９５４が設けられている。
また、加算回路３３６０のＸ端子はＡＮＤ回路２７３０の出力端子に接続され、Ｙ端子はデータ線６５１  に接続されている。
加算回路２９６１のＣＩ端子はＡＮＤ回路２７２０の出力端子に接続され、Ｘ端子はデータ線６５２  に接続され、Ｙ端子はＡＮＤ回路２７３１の出力端子に接続されている。加算回路２９６１のＣＯ端子およびＳ端子は、加算回路８２に接続されている。
加算回路３３６２のＸ端子は加算回路２９５４のＳ端子に接続され、Ｙ端子に加算回路２９３２のＳ端子に接続されている。加算回路２９６２のＣＯ端子およびＳ端子は、加算回路８２に接続されている。
【０１２９】
加算回路２９５４のＣＩ端子はデータ線６５３  に接続され、Ｘ端子はデータ線３５３  に接続され、Ｙ端子はＡＮＤ回路２７２１の出力端子に接続されている。加算回路２９５４のＣＯ端子は加算回路３９４４のＣＩ端子に接続され、Ｓ端子は加算回路３３６２のＣＩ端子に接続されている。
なお、図１２において、ＡＮＤ回路２７１０，２７２１，２７３２によって本発明の第４の観点の演算装置における第１の乗算手段が構成される。また、加算回路２９３２，２９５４，３３６２によって第１の加算手段が構成される。また、ＡＮＤ回路２７００，２７１１，２７２２，２７３３によって、第２の乗算手段が構成される。また、加算回路２９２２，２９３３，３９４４によって第２の加算手段が構成される。
【０１３０】
以下、図６に示す２の補数積和演算回路６１の動作について説明する。
２の補数積和演算回路６１では、以下に示すようにして、図５に示す積和演算結果であるＰのｐ０  〜ｐ７  を算出する。
〔ｐ０  の算出〕
加算回路３３６０において、ＡＮＤ回路２７３０の出力端子からの「ａ０  ・ｂ０  」と、データ線６５１  に印加されたデータｃ０  との加算が行なわれ、その加算結果の和データｐ０  がＳ端子から出力される。また、この加算結果のキャリデータｒ９  は、ＣＯ端子から加算回路８２に出力される。
【０１３１】
〔ｒ１０の算出〕
ＡＮＤ回路２７３１の出力端子からの「ａ０  ・ｂ１  」と、データ線６５２  に印加されたｃ１  と、ＡＮＤ回路２７２０の出力端子からの「ａ１  ・ｂ０  」とを用いた加算が、加算回路２９６１において行なわれ、その加算結果の和データｒ１０がＳ端子から出力され、キャリデータｒ１１が端子から加算回路８２に出力される。
【０１３２】
〔ｒ１２の算出〕
加算回路３３３２において、ＡＮＤ回路２７３２の出力端子からの「ａ０  ・ｂ２  」と、ＡＮＤ回路２７１０の出力端子からの「ａ２  ・ｂ０  」との加算が行なわれ、その加算結果の和データがＳ端子から加算回路３３６２のＹ端子に出力され、キャリデータがＣＯ端子から加算回路３９４４の入力端子に出力される。
また、加算回路２９５４において、データ線３５３  に印加されたデータｂ３  と、データ線６５３  に印加されたデータｃ２  と、ＡＮＤ回路２７２１からの「ａ１  ・ｂ１  」との加算が行なわれ、その加算結果の和データが加算回路３３６２のＸ端子に出力される。また、そのキャリデータが、加算回路３９４４のＣＩ端子に出力される。
そして、加算回路２９６２において、加算回路３３３２からの和データと、加算回路２９５４からの和データとの加算が行なわれ、その加算結果「ａ０  ・ｂ２  ＋ａ２  ・ｂ０  ＋ｂ３  ＋ｃ２  ＋ａ１  ・ｂ１  」の和データｒ１２がＳ端子から出力され、キャリデータｒ１３がＣＯ端子から出力される。これらの和データｒ１２およびキャリデータｒ１３は、加算回路８２に出力される。
この演算は、図１１に示すワーストパス８０ｂを算出する演算に相当し、ＡＮＤ回路２７１０，２７２１，２７３２において乗算が行なわれ、加算回路２９３２，２９５４において加算が行なわれる。
【０１３３】
〔ｒ０  ，ｒ１  の算出〕
加算回路２９２２において、ＡＮＤ回路２７２２の出力端子からの「ａ１  ・ｂ２  」と、ＡＮＤ回路２７００の出力端子からの「ａ３  ・ｂ０  ￣」と、データ線３５４  に印加されたａ３  との加算が行なわれ、その加算結果の和データがＳ端子から、加算回路３９４４の入力端子に出力される。
加算回路２９３３において、ＡＮＤ回路２７３３の出力端子からの「ａ０  ￣・ｂ３  」と、ＡＮＤ回路２７１１の出力端子からの「ａ２  ・ｂ１  」と、データ線６５４  に印加されたｃ３  との加算が行なわれ、その加算結果の和データがＳ端子から、加算回路３９４４の入力端子に出力される。また、その加算結果のキャリデータが、加算回路３７３４の入力端子に出力される。
【０１３４】
そして、加算回路３９４４において、加算回路２９３３のＳ端子からの和データと、加算回路２９３２のＣＯ端子からのキャリデータと、加算回路２９２２のＳ端子からの和データと、加算回路２９５４のＣＯ端子からのキャリデータとを用いて加算が行なわれ、その２ビットの和データ（ｒ０  ，ｒ１  ）がＳ端子から加算回路８２に出力される。また、ＣＯ端子からキャリデータが加算回路３７３４のＣＩ端子に出力される。
【０１３５】
この演算は、図１１に示すワーストパス８０ａを算出する演算に相当し、ＡＮＤ回路２７００，２７１１，２７２２，２７３３において乗算が行なわれ、加算回路２９２２，２９３３，３９４４において加算が行なわれる。
【０１３６】
〔ｒ２  ，ｒ３  の算出〕
加算回路２９２３において、ＡＮＤ回路２７２３の出力端子からの「ａ１  ￣・ｂ３  」と、ＡＮＤ回路２７０１の出力端子からの「ａ３  ・ｂ１  ￣」と、データ線６５５  に印加されたｃ４  との加算が行なわれ、その加算結果の和データがＳ端子から加算回路３７３４の入力端子に出力され、キャリデータがＣＯ端子から加算回路３７２４に出力される。
そして、加算回路３７３４において、加算回路２９２３のＳ端子からの和データと、加算回路２９２２のＣＯ端子からのキャリデータと、ＡＮＤ回路２７１２の出力端子からの「ａ２  ・ｂ２  」と、加算回路２９３３のＣＯ端子からのキャリデータとを用いて加算が行なわれ、Ｓ端子から・２ビットの和データ（ｒ２  ，ｒ３  ）が加算回路８２に出力される。また、ＣＯ端子からキャリデータが、加算回路３７２４に出力される。
【０１３７】
〔ｒ４  ，ｒ５  の算出〕
加算回路３７２４において、ＡＮＤ回路２７１３の出力端子からの「ａ３  ￣・ｂ３  」と、データ線６５６  に印加されたｃ５  と、ＡＮＤ回路２７０２の出力端子からの「ａ３  ・ｂ２  ￣」と、加算回路２９２３のＣＯ端子からのキャリデーアとを用いて加算が行なわれ、Ｓ端子から２ビットの和データ（ｒ４  ，ｒ５  ）が加算回路８２に出力される。また、ＣＯ端子からキャリデータが加算回路２９１４に出力される。
【０１３８】
〔ｒ６  ，ｒ７  の算出〕
ＡＮＤ回路２７０３において、ＡＮＤ回路２７０３からの「ａ３  ・ｂ３  」と、データ線３５４  に印加されてＮＯＴ回路３１０３によって反転されたａ３  ￣と、データ線３５３  に印加されてＮＯＴ回路３１０４によって反転されたｂ３  ￣との加算が行なわれ、その加算結果の和データが加算回路２９１４のＸ端子に出力される。
そして、加算回路２９１４において、加算回路２９０３のＳ端子からの和データと、データ線６５７  に印加されたｃ６  と、加算回路３７２４からのキャリデータとを用いて加算が行なわれ、その加算結果の和データｒ６  およびキャリデータｓ７  が加算回路８２に出力される。
【０１３９】
〔ｒ８  の算出〕
加算回路３３０４において、加算回路２９０３のＣＯ端子からキャリデータと、データ線６５８  に印加されたＣ７  との加算が行なわれ、その加算結果の和データがＳ端子から加算回路８２に出力される。
【０１４０】
〔ｐ１  〜ｐ７  の算出〕
加算回路８２において、入力したｒ０  〜ｒ１３を用いて、ｐ１  〜ｐ７  が算出される。
【０１４１】
以上説明したように、本実施形態のバウウーリの２の補数積和演算回路によっても、前述した第１実施形態と同様の効果を得ることができる。
【０１４２】
本発明は上述した実施形態には限定されない。上述した実施形態では、４ビットの被乗数Ａ（ａ３  ，ａ２  ，ａ１  ，ａ０  ）と４ビットの乗数Ｂ（ｂ３  ，ｂ２  ，ｂ１  ，ｂ０  ）との間でバウウーリの２の補数乗算を行なう回路について例示したが、本発明は、同一語長の任意のビット数の被乗数と乗数との間でバウウーリの２の補数乗算を行なう回路にも適用できる。
なた、本発明は、上述した回路構成に、被乗数Ａと乗数Ｂとの語長が異なる場合のバウウーリの２の補数乗算を行なう回路構成を組み合わせてもよい。
【０１４３】
【発明の効果】
以上説明したように、本発明の演算装置およびその方法によれば、被乗数と乗数とのビット数が同じであっても、これらのビット数が異なる場合と、ワーストパスを構成する演算の加算段数を同じにすることができる。その結果、従来に比べて、処理時間を短縮化できる。
また、本発明の演算装置によれば、その回路を反復セル型の配列を採用して構成した場合に、回路パターンの規則性を高めることができ、レイアウト設計を容易にすることができる。
【図面の簡単な説明】
【図１】図１は、本発明の第１実施形態に係わるバウウーリの２の補数乗算の演算方法を説明するための図である。
【図２】図２は、図１に示す演算方法を、４ビットの被乗数Ａと４ビットの乗数Ｂとの２の補数乗算に適用した場合の演算方法を説明するための図である。
【図３】図３は、図２に示す演算方法を用いた具体的な演算例である。
【図４】図４は、本発明の第１実施形態に係わるバウウーリの２の補数乗算回路の回路図である。
【図５】図５は、本発明の第２実施形態に係わるバウウーリの２の補数積和演算回路における演算方法を説明するための図である。
【図６】図６は、本発明の第２実施形態に係わるバウウーリの２の補数積和演算回路の回路図である。
【図７】図７は、本発明の第３実施形態に係わるバウウーリの２の補数乗算の演算方法を説明するための図である。
【図８】図８は、図７に示す演算方法を、４ビットの被乗数Ａと４ビットの乗数Ｂとの２の補数乗算に適用した場合の演算方法を説明するための図である。
【図９】図９は、図８に示す演算方法を用いた具体的な演算例である。
【図１０】図１０は、本発明の第３実施形態に係わるバウウーリの２の補数乗算回路の回路図である。
【図１１】図１１は、本発明の第４実施形態に係わるバウウーリの２の補数積和演算回路における演算方法を説明するための図である。
【図１２】図１２は、本発明の第４実施形態に係わるバウウーリの２の補数積和演算回路の回路図である。
【図１３】図１３は、従来のバウウーリの２の補数乗算の演算方法を説明するための図である。
【図１４】図１４は、図１３に示す従来のバウウーリの２の補数乗算の演算方法の変形例を説明するための図である。
【図１５】図１５は、図１４に示す演算方法を、６ビットの被乗数Ａと４ビットの乗数Ｂとの２の補数乗算に適用した場合の演算方法を説明するための図である。
【図１６】図１５に示す演算を行う従来のバウウーリの２の補数乗算回路の回路図である。
【図１７】図１７は、図１６に示す加算回路の入出力端子を説明するための図である。
【図１８】図１８は、被乗数Ａと乗数Ｂとのビット数が同じ場合における図１５に示す演算方法を説明するための図である。
【図１９】図１９は、図１８に示す演算方法を、４ビットの被乗数Ａと４ビットの乗数Ｂとの２の補数乗算に適用した場合の演算方法を説明するための図である。
【図２０】図２０は、図１９に示す演算方法を用いた具体的な演算例である。
【図２１】図２１は、図１９に示す演算方法を採用したバウウーリの２の補数乗算回路の回路図である。
【符号の説明】
２５ｉ  …バッファ回路、２７ｉ  …ＡＮＤ回路、３１ｉ  ＝ＮＯＴ回路、３５ｉ  …データ線、２９ｉ  ，３３ｉ  ，３７ｉ  ，３９ｉ  ５２，６２，７２，８２…加算回路５１，７１…２の補数乗算回路、６１，８１…２の補数積和演算回路
【図１】
0003612950.tif 000014
【図２】
0003612950.tif 000015
【図３】
0003612950.tif 000016
【図４】
0003612950.tif 000017
【図５】
0003612950.tif 000018
【図６】
0003612950.tif 000019
【図７】
0003612950.tif 000020
【図８】
0003612950.tif 000021
【図９】
0003612950.tif 000022
【図１０】
0003612950.tif 000023
【図１１】
0003612950.tif 000024
【図１２】
0003612950.tif 000025
【図１３】
0003612950.tif 000026
【図１４】
0003612950.tif 000027
【図１５】
0003612950.tif 000028
【図１６】
0003612950.tif 000029
【図１７】
0003612950.tif 000030
【図１８】
0003612950.tif 000031
【図１９】
0003612950.tif 000032
【図２０】
0003612950.tif 000033
【図２１】
0003612950.tif 000034