(57)【特許請求の範囲】
【請求項１】
被除数および１以上２未満の値を持つ除数を入力とし、被除数を除数で割った商を出力とする除算装置において、上記除数の上位側の所定桁数ビットあるいはそのうちの最上位１ビットを除くビット桁からなる第１の乗数を入力して制御信号を出力する制御回路と、上記第１の乗数と上記除数とを乗じることによって整数部分が“１”で小数点以下第１位から少なくとも２個のゼロが並ぶ冗長二進表現の第１の中間除数を得る第１の乗算器と、上記第１の乗数と上記被除数とを乗じることによって冗長二進表現の第１の中間商を得る第２の乗算器と、上記第１の中間除数の上位複数桁を取り出して小数点以下第３位と第４位の冗長二進ビットを正負反転させることによって第２の乗数を生成し、この第２の乗数と上記第１の中間除数とを乗じることによって、整数部分が“１”で小数点以下第１位から少なくとも３個のゼロが並ぶ冗長二進表現の第２の中間除数を得る第３の乗算器と、上記第２の乗数と上記第１の中間商とを乗じることによって冗長二進表現の第２の中間商を得る第４の乗算器と、整数部分が“１”で小数点以下ｍ個のゼロが続く第２の中間除数に対して上位ｎ桁（ｍ＋３≦ｎ≦２ｍ＋１）を取り出して小数点以下第（ｍ＋１）位から第（ｎ−１）位までの冗長二進ビットを正負反転させることによって第３の乗数を生成し、この第３の乗数と上記第２の中間除数とを乗じることによって、整数部分が“１”で小数点以下第１位から少なくとも（２ｍ−１）個のゼロが並ぶ冗長二進表現の第３の中間除数を得る第ａ（ａは５以上の奇数）の乗算器と、上記第３の乗数と上記第２の中間商とを乗じることにより冗長二進表現の第３の中間商を得る第ｂ（ｂは６以上の偶数）の乗算器と、整数部分が“１”で小数点以下ｐ個のゼロが続く第３の中間除数に対して上位ｑ桁（ｐ＋３≦ｑ≦２ｐ＋１）を取り出して小数点以下第（ｐ＋１）位から第（ｑ−１）位までの冗長二進ビットを正負反転させることによって第４の乗数を生成し、この第４の乗数と上記第３の中間商とを乗じることにより冗長二進表現の商を得る第ｃ（ｃは６以上の偶数）の乗算器とを備え、上記第１から第４の乗算器による演算実行後、上記第ａ（ａは５以上の奇数）の乗算器と第ｂ（ｂは６以上の偶数）の乗算器による演算を必要回数繰り返し、最後に上記第ｃ（ｃは６以上の偶数）の乗算器による演算を実行することを特徴とする除算装置。
【請求項２】
得られた冗長二進表現の商を二進数に変換して出力する変換器を備えたことを特徴とする請求項１記載の除算装置。
【請求項３】
制御回路は除数（ａi ）の上位複数桁ビットを入力して、下記演算式を実行して第１の乗数を生成することを特徴とする請求項１記載の除算装置。
１≦（ａi ）＜５／４のとき ：（ｃi ）＝（ａi ）
５／４≦（ａi ）＜１３／８のとき：（ｃi ）＝（３／４）×（ａi ）
１３／８≦（ａi ）＜２のとき ：（ｃi ）＝（１／２）×（ａi ）
【請求項４】
元の除数と小数点以下２桁を“０”とするに必要なだけシフトさせた該除数とを引き算し、第１の中間除数を得ることを特徴とする請求項１記載の除算装置。
【請求項５】
制御回路は除数のうちの小数点以下第１位から第３位までの３ビットを入力として、上記除数の各ビットを全てゼロにするか、１ビット下位桁側へシフトするか、２ビット下位桁側へシフトするかを制御する信号と、冗長二進表現された第１の中間除数の小数点以下第３桁の値を示す信号とを出力させることを特徴とする請求項１記載の除算装置。
【請求項６】
第１の乗算器は、制御信号により除数の各ビットを全てゼロにするか、１ビット下位桁側ヘシフトするか、２ビット下位桁側ヘシフトするかを行うシフタ回路を備え、このシフタ回路の出力と上記除数とから上記冗長二進表現された第１の中間除数の小数点以下第４桁目以下を生成することを特徴とする請求項１記載の除算装置。
【請求項７】
第２の乗算器は、制御信号により被除数の各ビットを全てゼロにするか、１ビット下位桁側ヘシフトするか、２ビット下位桁側ヘシフトするかを行うシフタ回路とを備え、このシフタ回路の出力と上記被除数とから上記冗長二進表現された第１の中間商を生成することを特徴とする請求項１記載の除算装置。
【請求項８】
第３あるいは第ａの乗算器は、入力される第１の中間除数を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えたことを特徴とする請求項１記載の除算装置。
【請求項９】
第４あるいは第ｂの乗算器は、入力された第１の中間商を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えたことを特徴とする請求項１記載の除算装置。
【請求項１０】
符号反転器は、一対の冗長二進数の成分を入力し、冗長二進数の制御入力によって出力を選択するマルチプレクサ回路を備えたことを特徴とする請求項８または請求項９記載の除算装置。
【請求項１１】
冗長二進加算器は、二組の冗長二進数を加算して冗長二進数を出力する各桁毎の加算器を複数備えたことを特徴とする請求項８または請求項９記載の除算装置。
【請求項１２】
被除数として定数“１”を用いることにより、除数の逆数を商として出力することを特徴とする請求項１記載の除算装置。
【請求項１３】
第２の中間除数に対して上位ｎ桁または第３の中間除数に対して上位ｑ桁を、（ｎ−ｍ−１）または（ｑ−ｐ−１）が２のべき乗から１を引いた値となるように設定することを特徴とする請求項１記載の除算装置。
【請求項１４】
中間除数と同時に制御信号を選択し、この二つから演算を実行した演算器の出力を選択するマルチプレクサ回路と、中間商を選択し、この中間商を上記制御信号と乗算した演算器の出力を選択するマルチプレクサ回路とを備えたことを特徴とする請求項１記載の除算装置。
【請求項１５】
クロック信号で制御され、中間除数および中間商を一時蓄え、演算器に出力するパイプラインレジスタを備えたことを特徴とする請求項１記載の除算装置。
【請求項１６】
被除数および１以上２未満の値を持つ除数を入力とし、被除数を除数で割った商を出力とする除算装置において、上記除数の上位側の所定桁数ビットあるいはそのうちの最上位１ビットを除く所定桁数のビットからなるビット列をアドレス入力とし、そこから第１の乗数を出力する記憶手段と、上記第１の乗数と上記除数とを乗じることによって整数部分が“１”で小数点以下第１位から少なくともｒ個のゼロが並ぶ冗長二進表現の第１の中間除数を得る第１の乗算器と、上記第１の乗数と上記被除数とを乗じることによって冗長二進表現の第１の中間商を得る第２の乗算器と、上記第１の中間除数に対して上位ｓ桁（ｒ＋３≦ｓ≦２ｒ＋１）を取り出して小数点以下第（ｒ＋１）位から第（ｓ−１）位までの冗長二進ビットを正負反転させることによって第２の乗数を生成し、この第２の乗数と上記第１の中間除数とを乗じることによって、整数部分が“１”で小数点以下第１位から少なくとも（２ｒ−１）個のゼロが並ぶ冗長二進表現の第２の中間除数を得る第ｔ（ｔは３以上の奇数）の乗算器と、上記第２の乗数と上記第１の中間商とを乗じることによって冗長二進表現の第２の中間商を得る第ｕ（ｕは４以上の偶数）の乗算器と、整数部分が“１”で小数点以下ｖ個のゼロが続く第２の中間除数に対して上位ｗ桁（ｖ＋３≦ｗ≦２ｖ＋１）を取り出して小数点以下第（ｖ＋１）位から第（ｗ−１）位までの冗長二進ビットを正負反転させることによって第３の乗数を生成し、この第３の乗数と上記第２の中間除数とを乗じることにより、冗長二進表現の商を得る第ｙ（ｙは４以上の偶数）の乗算器とを備え、上記第１および第２の乗算器による演算実行後、上記第ｔ（ｔは３以上の奇数）の乗算器と第ｕ（ｕは４以上の偶数）の乗算器による演算を必要回数繰り返し、最後に上記第ｙ（ｙは４以上の偶数）の乗算器による演算を実行することを特徴とする除算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、半導体集積回路による除算を実行するための除算装置に関し、特にその除算処理の高速化に関するものである。
【０００２】
【従来の技術】
近年、コンピュータの高性能化に伴いコンピュータグラフィックス技術が急速に発展している。コンピュータグラフィックスでは膨大な量の数値演算が要求されるため、その実現には極めて高速の数値演算処理が必要とされる。またコンピュータグラフィックにおいては、通常の数値演算処理に比べて除算の頻度が高く、これまでソフトウエアを用いてある程度時間をかけて処理していたのに対し、除算をハードウエアで高速に処理する必要が生じている。
【０００３】
図１９は例えば、特開平１−３２１５１７号公報に記載された従来のハードウエアによる除算装置を示す回路構成図であり、図において、１２３はＲＯＭ等の記憶手段、１２５，１２６，１２７，１２８は第１、第２、第３、第４のデータバスセレクタ（ＭＵＸ）、１３３，１３４は第１、第２の乗算器、１３７は２の補数器、１３９は加算器である。
【０００４】
次に動作について説明する。
記憶手段１２３は除数１（ａi ）をアドレス入力として除数の逆数の近似値を出力し、第１のデータバスセレクタ１２５は記憶手段１２３の出力１２４と２の補数器１３７の出力１３８とを入力とし、第２のデータバスセレクタ１２６は除数と第１の乗算器１３３の出力１３５と第２の乗算器１３４の出力１３６とを入力とし、第３のデータバスセレクタ１２７は記憶手段１２３の出力１２４と２の補数器１３７の出力１３８とを入力とし、第４のデータバスセレクタ１２８は被除数と第２の乗算器１３４の出力１３６とを入力とし、第１の乗算器１３３は第１のデータバスセレクタ１２５の出力１２９を第１の入力とし、第２のデータバスセレクタ１２６の出力１３０を第２の入力として乗算結果を第２のデータバスセレクタ１２６、２の補数器１３７および加算器１３９へ出力し、第２の乗算器１３４は第３のデータバスセレクタ１２７の出力１３１を第１の入力とし、第４のデータバスセレクタ１２８の出力１３２を第２の入力として、乗算結果を第２、第４のデータバスセレクタ１２６，１２８および加算器１３９へ出力し、加算器１３９は第１、第２の乗算器１３３，１３４の出力の和を商として出力するものである。
【０００５】
【発明が解決しようとする課題】
従来の除算装置は以上のように構成されているので、次のような課題があった。
１．第１の乗算器および第２の乗算器はともにｍ×ｍ／２ビット構成となっており、計算のループの度にこの乗算が行われることになり、乗算器による遅延時間が大きい。通常、乗算器は乗数と被乗数から複数の部分積を生成し、これを例えばキャリーセーブアダー等によって部分積が２つになるまで足し上げ、さらにこの２つの部分積を加算器によって最終加算することによって乗算を行う。この乗算を高速化するために、従来ブースのアルゴリズムによる部分積数の低減、ワレスのトリーによる部分積の高速な足し上げ、およびキャリールックアヘッド方式による高速の最終加算などの工夫が行われている。
【０００６】
しかし、このような工夫を行っても第１、第２の乗算器による遅延時間は依然大きく、これを複数回実行する従来の除算装置では、この実行回数に比例する遅延時間がかかることを避けることはできない。すなわち、上記従来の除算装置のような通常の乗算器を用いると、乗算器における遅延のために除算時間が長くかかってしまう。
【０００７】
２．計算のループの度に２の補数器を通過するが、２の補数器は一種の加算器で構成するため、この加算器における遅延時間が加わりさらに除算実行時間が長くなる。また、２の補数器を別に用いなければならないので、ハードウエア量も増加する。
【０００８】
３．一つの除算が行われる間、回路全体が占有されるため、その１つの除算が終了するまで次の計算をはじめることができない。したがって、パイプライン処理による高速化ができない。
【０００９】
この発明は上記のような課題を解決するためになされたもので、除算処理の高速化を図り、構成の単純化を図ることを実現した除算装置を得ることを目的とする。
【００１１】
【課題を解決するための手段】
この発明に係る除算装置は、除数の上位側の所定桁数ビットあるいはそのうちの最上位１ビットを除くビット桁からなる第１の乗数を入力して制御信号を出力する制御回路と、上記第１の乗数と上記除数とを乗じることによって整数部分が“１”で小数点以下第１位から少なくとも２個のゼロが並ぶ冗長二進表現の第１の中間除数を得る第１の乗算器と、上記第１の乗数と上記被除数とを乗じることによって冗長二進表現の第１の中間商を得る第２の乗算器と、上記第１の中間除数の上位複数桁を取り出して小数点以下第３位と第４位の冗長二進ビットを正負反転させることによって第２の乗数を生成し、この第２の乗数と上記第１の中間除数とを乗じることによって、整数部分が“１”で小数点以下第１位から少なくとも３個のゼロが並ぶ冗長二進表現の第２の中間除数を得る第３の乗算器と、上記第２の乗数と上記第１の中間商とを乗じることによって冗長二進表現の第２の中間商を得る第４の乗算器と、整数部分が“１”で小数点以下ｍ個のゼロが続く第２の中間除数に対して上位ｎ桁（ｍ＋３≦ｎ≦２ｍ＋１）を取り出して小数点以下第（ｍ＋１）位から第（ｎ−１）位までの冗長二進ビットを正負反転させることによって第３の乗数を生成し、この第３の乗数と上記第２の中間除数とを乗じることによって、整数部分が“１”で小数点以下第１位から少なくとも（２ｍ−１）個のゼロが並ぶ冗長二進表現の第３の中間除数を得る第ａ（ａは５以上の奇数）の乗算器と、上記第３の乗数と上記第２の中間商とを乗じることにより冗長二進表現の第３の中間商を得る第ｃ（ｃは６以上の偶数）の乗算器と、整数部分が“１”で小数点以下ｐ個のゼロが続く第３の中間除数に対して上位ｑ桁（ｐ＋３≦ｑ≦２ｐ＋１）を取り出して小数点以下第（ｐ＋１）位から第（ｑ−１）位までの冗長二進ビットを正負反転させることによって第４の乗数を生成し、この第４の乗数と上記第３の中間商とを乗じることにより冗長二進表現の商を得る第ｂ（ｂは６以上の偶数）の乗算器とを備え、上記第１から第４の乗算器による演算実行後、上記第ａ（ａは５以上の奇数）の乗算器と第ｂ（ｂは６以上の偶数）の乗算器による演算を必要回数繰り返し、最後に上記第ｃ（ｃは６以上の偶数）の乗算器第３のステップを実行する。
【００１２】
この発明に係る除算装置は、得られた冗長二進表現の商を二進数に変換して出力する変換器を備えたものである。
【００１３】
この発明に係る除算装置は、制御回路は除数（ａi ）の上位複数桁ビットを入力して、下記演算式を実行して第１の乗数を生成するものである。
１≦（ａi ）＜５／４のとき ：（ｃi ）＝（ａi ）
５／４≦（ａi ）＜１３／８のとき：（ｃi ）＝（３／４）×（ａi ）
１３／８≦（ａi ）＜２のとき ：（ｃi ）＝（１／２）×（ａi ）
【００１４】
この発明に係る除算装置は、元の除数と小数点以下２桁を“０”とするに必要なだけシフトさせた該除数とを引き算して第１の中間除数を得るものである。
【００１５】
この発明に係る除算装置は、制御回路は除数のうちの小数点以下第１位から第３位までの３ビットを入力として、上記除数の各ビットを全てゼロにするか、１ビット下位桁側へシフトするか、２ビット下位桁側へシフトするかを制御する信号と、冗長二進表現された第１の中間除数の小数点以下第３桁の値を示す信号とを出力させるものである。
【００１６】
この発明に係る除算装置は、第１の乗算器は、制御信号により除数の各ビットを全てゼロにするか、１ビット下位桁側ヘシフトするか、２ビット下位桁側ヘシフトするかを行うシフタ回路を備え、このシフタ回路の出力と上記除数とから上記冗長二進表現された第１の中間除数の小数点以下第４桁目以下を生成するものである。
【００１７】
この発明に係る除算装置は、第２の乗算器は、制御信号により被除数の各ビットを全てゼロにするか、１ビット下位桁側ヘシフトするか、２ビット下位桁側ヘシフトするかを行うシフタ回路とを備え、このシフタ回路の出力と上記被除数とから上記冗長二進表現された第１の中間商を生成するものである。
【００１８】
この発明に係る除算装置は、第３あるいは第ａの乗算器は、入力される第１の中間除数を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えたものである。
【００１９】
この発明に係る除算装置は、第４あるいは第ｂの乗算器は、入力された第１の中間商を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えたものである。
【００２０】
この発明に係る除算装置は、符号反転器は、一対の冗長二進数の成分を入力し、冗長二進数の制御入力によって出力を選択するマルチプレクサ回路を備えたものである。
【００２１】
この発明に係る除算装置は、冗長二進加算器は、二組の冗長二進数を加算して冗長二進数を出力する各桁毎の加算器を複数備えたものである。
【００２２】
この発明に係る除算装置は、被除数として定数“１”を用いることにより、除数の逆数を商として出力するものである。
【００２３】
この発明に係る除算装置は、第２の中間除数に対して上位ｎ桁または第３の中間除数に対して上位ｑ桁を、（ｎ−ｍ−１）または（ｑ−ｐ−１）が２のべき乗から１を引いた値となるように設定するものである。
【００２４】
この発明に係る除算装置は、中間除数と同時に制御信号を選択し、この二つから演算を実行した演算器の出力を選択するマルチプレクサと、中間商を選択し、この中間商を上記制御信号と乗算した演算器の出力を選択するマルチプレクサとを備えたものである。
【００２５】
この発明に係る除算装置は、クロック信号で制御され、中間除数および中間商を一時蓄え、演算器に出力するパイプラインレジスタを備えたものである。
【００２６】
この発明に係る除算装置は、除数の上位側の所定桁数ビットあるいはそのうちの最上位１ビットを除く所定桁数のビットからなるビット列をアドレス入力とし、そこから第１の乗数を出力する記憶手段と、上記第１の乗数と上記除数とを乗じることによって整数部分が“１”で小数点以下第１位から少なくともｒ個のゼロが並ぶ冗長二進表現の第１の中間除数を得る第１の乗算器と、上記第１の乗数と上記被除数とを乗じることによって冗長二進表現の第１の中間商を得る第２の乗算器と、上記第１の中間除数に対して上位ｓ桁（ｒ＋３≦ｓ≦２ｒ＋１）を取り出して小数点以下第（ｒ＋１）位から第（ｓ−１）位までの冗長二進ビットを正負反転させることによって第２の乗数を生成し、この第２の乗数と上記第１の中間除数とを乗じることによって、整数部分が“１”で小数点以下第１位から少なくとも（２ｒ−１）個のゼロが並ぶ冗長二進表現の第２の中間除数を得る第ｔ（ｔは３以上の奇数）の乗算器と、上記第２の乗数と上記第１の中間商とを乗じることによって冗長二進表現の第２の中間商を得る第ｕ（ｕは４以上の偶数）の乗算器と、整数部分が“１”で小数点以下ｖ個のゼロが続く第２の中間除数に対して上位ｗ桁（ｖ＋３≦ｗ≦２ｖ＋１）を取り出して小数点以下第（ｖ＋１）位から第（ｗ−１）位までの冗長二進ビットを正負反転させることによって第３の乗数を生成し、この第３の乗数と上記第２の中間除数とを乗じることにより，冗長二進表現の商を得る第ｙ（ｙは４以上の偶数）の乗算器とを備え、上記第１および第２の乗算器による演算実行後、上記第ｔ（ｔは３以上の奇数）の乗算器と第ｕ（ｕは４以上の偶数）の乗算器による演算を必要回数繰り返し、最後に上記第ｙ（ｙは４以上の偶数）の乗算器による演算を実行するものである。
【００２７】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１による除算装置の構成を示すブロック図であり、図において、１は除数（ａi ）、２は被除数（ｂi ）であり、この実施の形態１では、除数１（ａi ）および被除数２（ｂi ）はともに整数部分１桁、小数点以下７桁で合計８桁の２進数、すなわち、
（ａi ）＝ａ0 ．ａ1 ａ2 ａ3 ａ4 ａ5 ａ6 ａ7                 ［１］
（ｂi ）＝ｂ0 ．ｂ1 ｂ2 ｂ3 ｂ4 ｂ5 ｂ6 ｂ7                 ［２］
とし、さらに最上位の一の位は“１”とする。すなわち、
ａ0 ＝１                                                    ［３］
ｂ0 ＝１                                                    ［４］
とする。
【００２８】
除算においては、除数および被除数の小数点位置を移動させても商のビット並びは変わらないので、式［１］〜［４］の仮定によって一般性が失われることはない。３は除数１（ａi ）のうちの最上位ａ0 を除く上位３ビットの第１の乗数（ａ1 〜ａ3 ）である。
【００２９】
６は第１の乗数３（ａ1 〜ａ3 ）を入力として制御信号７を発生させる制御回路、４は除数１（ａi ）と制御信号７から乗算を行う第１の乗算器、５は被除数２（ｂi ）と制御信号７から乗算を行う第２の乗算器、８は第１の乗算器４の出力結果で冗長２進数で表された第１の中間除数（ｃi ）、９は第２の乗算器５の出力結果で冗長２進数で表された第１の中間商（ｄi ）である。
【００３０】
１０は第１の中間除数８（ｃi ）のうちの２ビットの第２の乗数（ｃ3 〜ｃ4 ）、１１は第１の中間除数８（ｃi ）と第２の乗数１０（ｃ3 〜ｃ4 ）に基づいて乗算を行う第３の乗算器、１２は第１の中間商９（ｄi ）と第２の乗数１０（ｃ3 〜ｃ4 ）に基づいて乗算を行う第４の乗算器、１３は第３の乗算器１１の出力結果で冗長２進数で表された第２の中間除数（ｅi ）、１４は第２の乗算器５の出力結果で冗長２進数で表された第２の中間商（ｆi ）である。
【００３１】
１５は第２の中間除数１３（ｅi ）のうちの３ビットの第３の乗数（ｅ4 〜ｅ6 ）、１６は第２の中間除数１３（ｅi ）と第３の乗数１５（ｅ4 〜ｅ6 ）に基づいて乗算を行う第５の乗算器、１７は第２の中間商１４（ｆi ）と第３の乗数１５（ｅ4 〜ｅ6 ）に基づいて乗算を行う第６の乗算器、１８は第５の乗算器１６の出力結果で冗長２進数で表された第３の中間除数（ｇi ）、１９は第４の乗算器１２の出力結果で冗長２進数で表された第３の中間商（ｈi ）である。
【００３２】
２０は第３の中間除数１８（ｇi ）のうちの５ビットの第４の乗数（ｇ6 〜ｇ10）、２１は第３の中間商１９（ｈi ）と第４の乗数２０（ｇ6 〜ｇ10）に基づいて乗算を行う第７の乗算器、２２は第７の乗算器２１の出力結果で冗長２進数で表された第４の中間商（ｋi ）である。２３は冗長二進数で表された第４の中間商２２（ｋi ）を通常の二進数に変換する冗長二進→二進変換器、２４は除算の答えとなる商（ｑi ）である。
【００３３】
次に動作について説明する。
まず、除数１（ａi ）の上位４ビットから以下のような乗算を実行する。
0003660075.tif 000002
これによって、全ての入力（ａi ）に対して
３／４＜（ｃi ）＜５／４                                    ［８］
とすることができる。
【００３４】
ここで（ｃi ）を各桁が−１，１，０の３値をもついわゆる冗長二進数で表現すると、
（ｃi ）＝１．００ｃ4 ｃ5 ｃ6 …                            ［９］
という形に書くことができる。なぜならば、冗長二進表現では３／４と５／４は、
３／４＝１．００−１−１−１…                            ［１０］
５／４＝１．００１１１…                                  ［１１］
と表されるので、その間の値を持つ（ｃi ）は必ず式［９］の形で表すことができるからである。
【００３５】
第２の乗算器５においては、被除数２（ｂi ）に対して式［５］〜［７］と同様の以下の計算が行われる。
0003660075.tif 000003
【００３６】
次に、第３の乗算器１１および第５の乗算器１６における乗算を説明するために、まず、次の一般的な冗長二進数の性質について説明する。仮に冗長二進数（ｘi ）が、
（ｘi ）＝１．００・・０ｘn+1 …ｘ2nｘ2n+1…              ［１５］
という形で表されるとする。ただし、小数第１位から始まる“０”はｎ個続くとする。
【００３７】
ここで、
α＝（ｘn+1 …ｘ2n）／２2n                                ［１６］
β＝（０．ｘ2n+1…）／２2n                                ［１７］
と置くと、
（ｘi ）＝１＋α＋β
と書ける。（ｘi ）は冗長二進表現なので、
−（２n −１）／２2n＜α＜（２n −１）／２2n
すなわち、｜α｜＜（２n −１）／２2n                      ［１８］
−１／２2n＜β＜１／２2n
すなわち、｜β｜＜１／２2n                                ［１９］
となる。
【００３８】
ここで、（ｙi ）を、
（ｙi ）＝（１＋α＋β）×（１−α）                      ［２０］
と置いて計算すると、
（ｙi ）＝１−α2 −αβ＋β                              ［２１］
となる。
【００３９】
この第２項目以降（−α2 −αβ＋β）の絶対値をεと置くと、式［１６］および［１７］から、
0003660075.tif 000004
となる。
【００４０】
したがって、（ｙi ）は冗長二進表現で次のように表すことができる。
（ｙi ）＝１．００・・・０ｙ2nｙ2n+1…                    ［２３］
ただし、小数第１位から続く“０”の数は（２ｎ−１）個である。
【００４１】
このように式［１５］の形で表される任意の冗長二進数（ｘi ）に対し、その小数以下はじめて“０”でない数字が現れる桁から下位方向に向かって、小数第１位から続く“０”の数ｎと同数の桁数分だけ取り出したものをαとし、（１−α）を乗ずることによって、式［２３］のような小数第１位以下（２ｎ−１）個の“０”が続く冗長二進数（ｙi ）を得ることができる。
【００４２】
第３の乗算器１１および第５の乗算器１６は、以上の考えに基づいて乗算を行うためのもので、まず第２の乗算器５においては式［９］のように小数以下２個の“０”を持つ第１の中間除数８（ｃi ）と数（１．００−ｃ3 −ｃ4 ）との掛け算が行われる。その結果、出力の第２の中間除数１３（ｅi ）は、
0003660075.tif 000005
と小数以下３個の“０”が並ぶ形で表される。
【００４３】
（１．００−ｃ3 −ｃ4 ）は二つの冗長二進ビットｃ3 とｃ4 とを符号反転することで生成できるので、（ｃi ）を被乗数とした場合、第２の乗数１０はｃ3 とｃ4 との二つから生成することができる。例えば、ｃ3 が“１”の場合はこれを“−１”とし、“０”の場合は“０”、“−１”の場合は“１”とする。同様に第５の乗算器１６においては小数以下３個の“０”を持つ第２の中間除数１３（ｅi ）と（１．０００−ｅ4 −ｅ5 −ｅ6 ）との掛け算が行われる。
【００４４】
その結果、出力の第３の中間除数１８（ｇi ）は、
（ｇi ）＝１．０００００ｇ6 ｇ7 …                        ［２５］
と小数以下５個の“０”が並ぶ形で表される。（１．０００−ｅ4 −ｅ5 −ｅ6 ）は三つの冗長二進ビットｅ4 ，ｅ5 ，ｅ6 を符号反転することで生成できるので、（ｅi ）を被乗数とした場合、第３の乗数１５はｅ4 ，ｅ5 ，ｅ6 の三つから生成することができる。
【００４５】
また、第４の乗算器１２では第１の中間商（ｄi ）と第２の乗数１０（ｃ3 〜ｃ4 ）より生成された（１．００−ｃ3 −ｃ4 ）との乗算が行われ、その結果、第２の中間商１４（ｆi ）を生成し、第６の乗算器１７では第２の中間商１４（ｆi ）と第３の乗数１５（ｅ4 〜ｅ6 ）より生成された（１．０００−ｅ4 −ｅ5 −ｅ6 ）との乗算が行われ、その結果、第３の中間商１９（ｈi ）を生成し、第７の乗算器２１では第３の中間商１９（ｈi ）と第３の中間除数１８の一部の第４の乗数２０（ｇ6 〜ｇ10）から生成された（１．０００００−ｇ6 −ｇ7 −ｇ8 −ｇ9 −ｇ10）との乗算が行われ、その結果、第４の中間商２２（ｋi ）を生成する。
【００４６】
このような乗算により、中間商は以下の理由で次第に被除数２（ｂi ）を除数１（ａi ）で割った商に近づいていく。すなわち、
0003660075.tif 000006
とおくと、第４の中間商２２（ｋi ）は、
（ｋi ）＝ｒ×（ｂi ）                                    ［２７］
と書ける。
【００４７】
また、
0003660075.tif 000007
なので、
0003660075.tif 000008
となり、式［２３］よりこれは小数点以下（２×５−１）＝９個の“０”が並ぶ。すなわち、
１−１０-9＜ｒ×（ａi ）＜１＋１０-9                      ［３０］
となる。
【００４８】
式［２７］を、
（ｋi ）＝（ｒ×（ａi ））×（（ｂi ）／（ａi ））        ［３１］
と変形して式［２８］を代入し、さらに、
（ｂi ）／（ａi ）＜２                                    ［３２］
であることを用いると次の式が得られる。
0003660075.tif 000009
【００４９】
したがって、第４の中間商２２（ｋi ）は小数点以下７桁の精度で商（ｂi ）／（ａi ）に等しいことが分かる。このように、この実施の形態１により入力の乗数および被乗数の精度に等しい精度を持つ商の値を得ることができる。
【００５０】
さらに、第４の中間商２２（ｋi ）は冗長二進→二進変換器２３によって冗長二進数から通常の二進数に変換され、最終的に二進数の商２４（ｑi ）として出力される。
【００５１】
以上のように、実施の形態１によれば、乗算器はそれぞれ冗長二進数による乗算を行うため、従来の乗算器で行っていたキャリールックアヘッド方式などによる最終加算が不要となり高速化が可能となる。また、従来例のように、２の補数器を使うことなしに各乗算器の除数を被除数の一部から容易に生成できるので、さらに高速化が可能になる。また、データが図１の上から下に向かって一方向に流れるので、実行中に次のデータを入力することも可能で、さらに処理能力を向上させることができる。
【００５２】
なお、実施の形態１では商の精度が小数点以下７桁までとした場合について示したが、商に対してより高精度が要求される際には、この実施の形態１に述べた計算ステップをさらに増加させることによって任意の精度の商を得ることができる。
【００５３】
実施の形態２．
図２はこの発明の実施の形態２による制御回路６の説明図であり、３つの入力信号ａ1 ，ａ2 ，ａ3 から２つの出力ｍ1 ，ｍ2 を生成する。式［５］〜［７］の乗算は制御回路６に図３の表に示した機能を持たせることによって実現できる。すなわち、制御回路６の出力である制御信号７を３桁の冗長二進数、
（ｍi ）＝ｍ0 ．ｍ1 ｍ2   （ただしｍ0 ＝１）              ［３４］
で表し、入力信号ａ1 〜ａ3 に対して図３の表に示すような規則で（ｍi ）を発生させて、これと除数１（ａi ）とを第１の乗算器４によって掛け合わせることにより、式［５］〜［７］のような乗算が実行でき、その結果、式［９］のような第１の中間除数８（ｃi ）を得ることができる。ｍ0 は常に“１”なので特に発生させる必要はない。
【００５４】
また、第２の乗算器５では式［１２］〜［１４］に従って（ｍi ）と被除数２（ｂi ）との積が行われ、その結果が冗長二進数の第１の中間商９（ｄi ）として出力される。
【００５５】
以上のように、この実施の形態２によれば、上記構成の制御回路６を用いることにより前記実施の形態１の効果を実現することができる。
なお、冗長二進数は３値をとるため、通常２ビットの信号の組み合わせで表現されるが、この実施の形態２はそのあらゆる表現方法に対して適用することができる。
【００５６】
実施の形態３．
図４および図５はこの発明の実施の形態３による制御回路６と第１の乗算器４による第１の中間除数８（ｃi ）の生成方法を示す説明図であり、図４および図５において、除数１（ａi ）の上位から４桁の組み合わせはａ0 が常に“１”なので全部で８通あり、図４においてはそれぞれの場合をｃａｓｅ１〜ｃａｓｅ８として示している。第１の中間除数８（ｃi ）は、式［９］のように小数点以下上位２桁を“０”とする必要があるが、もともとａ1 およびａ2 が“０”である。ｃａｓｅ１とｃａｓｅ２については、そのまま（ａi ）を（ｃi ）とすればよい。これは式［５］に対応する。ｃａｓｅ３〜ｃａｓｅ８の場合に行う処理を図５に示す。
【００５７】
ｃａｓｅ３〜ｃａｓｅ５はそれぞれ図５の（ａ）〜（ｃ）に対応しており、いずれも自分自身を右方向へ２ビットシフトしたものを自分自身から引くという操作を行っている。これは、式［６］に対応した操作である。ｃａｓｅ３およびｃａｓｅ４では引いた結果の上位４桁が“１．００１”となるので、そのまま出力すればよい。これに対してｃａｓｅ５では引いた結果の上位４桁が“１．１−１−１”となるが、冗長二進数において“１−１−１”は“００１”と同じ値なので、上位４桁を強制的に“１．００１”とすることができる。
【００５８】
ｃａｓｅ６〜ｃａｓｅ８はそれぞれ図５の（ｄ）〜（ｆ）に対応しており、いずれもｃａｓｅ３〜ｃａｓｅ５と同様に自分自身を右方向へ１ビットシフトしたものを自分自身から引くという操作を行っている。これは、式［７］に対応した操作である。ｃａｓｅ６は引いた値の上位４桁が“１．０−１１”となるが冗長二進数においては“−１１”は“０−１”に等しいので、上位４桁を強制的に“１．００−１”とすることができる。ｃａｓｅ７およびｃａｓｅ８では引いた値の上位４桁がそれぞれ“１．００−１”および“１．０００”となるのでそのまま出力することができる。
【００５９】
このように図４および図５に示されたルールによって第１の中間除数８（ｃi ）を生成することにより、式［９］の形の第１の中間除数８（ｃi ）を容易に得ることができる。
なお、この実施の形態３も冗長二進のあらゆる表現方法に対して適用することができる。
【００６０】
実施の形態４．
図６は上記実施の形態３を実現するこの発明の実施の形態４による制御回路６の構成を示す説明図であり、出力される制御信号７として２５〜２９の５種類の信号を用いている。また冗長二進数の表現方法としては、冗長二進数ｐに対し、
0003660075.tif 000010
という定義を用いている。すなわち一対の二進数の差をその値としている。
【００６１】
上記実施の形態３において、出力の第１の中間除数８（ｃi ）は、除数１（ａi ）から図４に示すルールで計算されるが、式［３４］を用いれば、このルールは、除数１（ａi ）の各ビットを全て“０”にすることと、右方向に１ビットシフトさせることと、右方向に２ビットシフトさせることによって実現することができる。このそれぞれを制御する信号が、ｚｅｒｏ２５、第１のｓｈｉｆｔ２６および第２のｓｈｉｆｔ２７である。また、ｃ0 〜ｃ2 は“１．００”となるようにしているが、ｃ3 は入力によって変化するので、ｃ3 ＿ｐｌｕｓ２８とｃ3 ＿ｍｉｎｕｓ２９とを発生させている。
【００６２】
以上のように、この実施の形態４によれば、実際の乗算を行うことなしに、シフト操作のみで第１の中間除数８（ｃi ）を得ることができる。
【００６３】
実施の形態５．
図７は上記の実施の形態３および４を実現するこの発明の実施の形態５による第１の乗算器４の構成図を示すもので、ｚｅｒｏ２５、第１のｓｈｉｆｔ２６および第２のｓｈｉｆｔ２７の制御入力に対してシフトを行うシフタ回路３０を備えている。ｚｅｒｏ２５が“１”のときは出力（ｑi ）３１に全て“０”が出力され、第１のｓｈｉｆｔ２６が“１”のときは除数１（ａi ）を右方向へ１ビットシフトしたものが（ｑi ）３１として出力される。また、第２のｓｈｉｆｔ２７が“１”のときは除数１（ａi ）を右方向へ２ビットシフトしたものが出力（ｑi ）３１として出力される。出力された（ｑi ）３１は、除数１（ａi ）とペアにして、第１の中間除数８（ｃi ）のうちの小数第４位以下（ｃ4 ｃ5 …）３３を生成する。
【００６４】
すなわち、
ｃi ＝（ａi ，ｑi ）    （ｉ＝４，５，…）                ［３６］
また、第１の中間除数３２（ｃ3 ）は図４のルールに従ってｃ3 ＿ｐｌｕｓとｃ3 ＿ｍｉｎｕｓとのペアでそのまま出力される。第１の中間除数ｃ0 〜ｃ2 “１．００”と一定なので、ここでは特に生成する必要はない。
【００６５】
以上のように、この実施の形態５によれば、特に乗算を実行することなく単なるシフト操作のみによって、乗算結果である第１の中間除数８（ｃi ）を得ることができるので、高速で小面積の第１の乗算器４を構成することができる。
【００６６】
実施の形態６．
図８は上記実施の形態３および４を実現するこの発明の実施の形態６による第２の乗算器５の構成を示すもので、実施の形態５と同様にｚｅｒｏ２５、第１のｓｈｉｆｔ２６および第２のｓｈｉｆｔ２７の制御入力に対してシフトを行うシフタ回路３４を備えている。ｚｅｒｏ２５が“１”のときは出力（ｒi ）３５に全て“０”が出力され、第１のｓｈｉｆｔ２６が“１”のときは被除数２（ｂi ）を右方向へ１ビットシフトしたものが出力（ｒi ）３５として出力される。
【００６７】
また、第２のｓｈｉｆｔ２７が“１”のときは被除数２（ｂi ）を右方向へ２ビットシフトしたものが出力（ｒi ）３５として出力される。シフタの制御は図４の場合と同様であるが、ここでは図９に示すように入力被除数２（ｂi ）の小数点以下全ビットに対して行われ、被除数２（ｂi ）とシフタ回路３４の出力（ｒi ）３５とのペアにより、第１の中間商９（ｄi ）が生成される。
【００６８】
以上のように、この実施の形態６によれば、特に乗算を実行することなく単なるシフト操作のみによって乗算結果である第１の中間商９（ｄi ）を得ることができるので、高速で小面積の第２の乗算器５を構成することができる。
【００６９】
実施の形態７．
図１０はこの発明の実施の形態７としての第３の乗算器１１の構成を示すもので、図において、３６，３８は第１の中間除数８（ｃi ）からの乗数（ｃ3 あるいはｃ4 ）を制御信号として冗長二進入力を符号反転する符号反転器、４０，４２は二つの冗長二進入力を加算して一つの冗長二進数を出力する冗長二進加算器である。この実施の形態７による第３の乗算器１１は、式［２４］を計算するための回路で、入力の第１の中間除数８（ｃi ）から二つの冗長二進数３７および３９を発生させ、さらに第１の中間除数８（ｃi ）、二つの冗長二進数３７および３９をいわゆるワレストリーと呼ばれる樹木状に足し合わせる方式が用いられている。
【００７０】
次に動作について説明する。
まず、入力の第１の中間除数８（ｃi ）のうちの有効ビットｃ3 〜ｃ9 が、符号反転器３６および３８によって乗数ｃ3 を制御信号として符号反転される。すなわち、符号反転器３６においては乗数ｃ3 が“０”のときは冗長二進数３７に全て“０”が出力され、乗数ｃ3 が“１”のときは有効ビットｃ3 〜ｃ9 を各ビット毎に全て符号反転したものが冗長二進数３７に出力され、乗数ｃ3 が“１”のときは有効ビットｃ3 〜ｃ9 がそのまま冗長二進数３７に出力される。冗長二進数３７は入力に対して３ビット右方向にシフトした位置に出力される。
【００７１】
また、符号反転器３８においては乗数ｃ4 が“０”のときは冗長二進数３９に全て“０”が出力され、乗数ｃ4 が“−１”のときは有効ビットｃ3 〜ｃ9 を各ビット毎に全て符号反転したものが冗長二進数３９に出力され、乗数ｃ4 が“−１”のときは有効ビットｃ3 〜ｃ9 がそのまま冗長二進数３９に出力される。冗長二進数３９は入力に対して４ビット右方向にシフトした位置に出力される。
【００７２】
次に、冗長二進加算器４０では、二つの冗長二進数３７と３９が足し合わされて一つの冗長二進数４１が出力される。また、冗長二進加算器４２では、入力の第１の中間除数８（ｃi ）と冗長二進数４１が足し合わされて一つの冗長二進数が出力される。冗長二進数は第２の中間除数１３（ｅi ）となる。なお、有効ビットｃ3 〜ｃ9 の符号反転は式［３６］の（ａi ，ｑi ）を（ｑi ，ａi ）とするだけで容易に得ることができる。
【００７３】
以上のように、この実施の形態７によれば、第１の中間除数８（ｃi ）の上位３ビットを直接扱うことなく、また冗長二進加算は一般にキャリー信号の伝搬が起きないので、極めて高速に乗算結果を得ることができる。また、この実施の形態７による乗算器は、第３の乗算器１１だけでなく第５の乗算器１６にも適用することができる。
【００７４】
実施の形態８．
図１１はこの発明の実施の形態８としての第４の乗算器１２の構成を示すもので、上記実施の形態７に示した第３の乗算器１１とほぼ同様である。図において、４３，４５は乗数（ｃ3 あるいはｃ4 ）を制御信号として冗長二進入力を符号反転する符号反転器、４７，４９は二つの冗長二進入力を加算して一つの冗長二進数を出力する冗長二進加算器である。
【００７５】
次に動作について説明する。
まず、入力の第１の中間商９（ｄi ）が、符号反転器４３および４５によって乗数ｃ3 を制御信号として符号反転される。すなわち、符号反転器４３においては乗数ｃ3 が“０”のときは冗長二進数４４に全て“０”が出力され、乗数ｃ3 が“１”のときは有効ビットｃ3 〜ｃ9 を各ビット毎に全て符号反転したものが冗長二進数４４に出力され、乗数ｃ3 が“−１”のときは有効ビットｃ3 〜ｃ9 がそのまま冗長二進数４４に出力される。冗長二進数４４は入力に対して３ビット右方向にシフトした位置に出力される。
【００７６】
また、符号反転器４５においては乗数ｃ4 が“０”のときは冗長二進数４６に全て“０”が出力され、乗数ｃ4 が“１”のときは有効ビットｃ3 〜ｃ9 を各ビット毎に全て符号反転したものが冗長二進数４６に出力され、乗数ｃ4 が“−１”のときは有効ビットｃ3 〜ｃ9 がそのまま冗長二進数４６に出力される。冗長二進数４６は入力に対して４ビット右方向にシフトした位置に出力される。
【００７７】
次に、冗長二進加算器４７では、二つの冗長二進数４４と４６が足し合わされて一つの冗長二進数４８が出力される。また、冗長二進加算器４９では、入力の第１の中間商９（ｄi ）と冗長二進数４８が足し合わされて一つの冗長二進数が出力される。冗長二進数は第２の中間商１４（ｆi ）となる。
【００７８】
以上のように、この実施の形態８によれば、キャリー信号の伝搬が起きない高速の冗長二進加算を用いて乗算が実行できるため、極めて高速に乗算結果を得ることができる。またこの実施の形態８による乗算器は、第４の乗算器１２だけでなく第６の乗算器１７および第７の乗算器２１にも適用することができる。
【００７９】
実施の形態９．
図１２は実施の形態７および８を実現するこの発明の実施の形態９による符号反転器の構成を示すもので、図は１ビット分の構成を示している。図において、ｉｎ＿ｐｌｕｓ５０とｉｎ＿ｍｉｎｕｓ５１は入力となる一対の冗長二進数の成分、（ｓ）５４は冗長二進数の制御入力、ｏｕｔ＿ｐｌｕｓ５５とｏｕｔ＿ｍｉｎｕｓ５６は出力となる一対の冗長二進数の成分となる。５２と５３は制御入力（ｓ）５４の値によって出力を選択するマルチプレクサ回路である。
【００８０】
図のような構成により、
ｓ＝０のとき：ｏｕｔ＿ｐｌｕｓ＝０，ｏｕｔ＿ｍｉｎｕｓ＝０
ｓ＝１のとき：ｏｕｔ＿ｐｌｕｓ＝ｉｎ−ｍｉｎｕｓ，ｏｕｔ＿ｍｉｎｕｓ＝ｉｎ＿ｐｌｕｓ
ｓ＝−１のとき：ｏｕｔ＿ｐｌｕｓ＝ｉｎ＿ｍｉｎｕｓ＝ｉｎ＿ｍｉｎｕｓとすることができ、所望の出力を得ることができる。
【００８１】
実施の形態１０．
図１３は上記実施の形態７および８を実現するこの発明の実施の形態１０の冗長二進加算器の構成例を示すもので、図において、５７はそれぞれ（ｉ＋１）〜（ｉ−１）桁目の１桁分の加算器５８〜６０を有する冗長二進加算器である。（ｉ＋１）桁目の加算器５８は、二組の冗長二進数ｉｎ１＿ｐｌｕｓi+1 ６１とｉｎ１＿ｍｉｎｕｓi+1 ６２、およびｉｎ２＿ｐｌｕｓi+1 ６３とｉｎ２＿ｍｉｎｕｓi+1 ６４を足し合わせて冗長二進数の出力ｏｕｔ＿ｐｌｕｓi+1 ７３とｏｕｔ＿ｍｉｎｕｓi+1 ７４を出力する。
【００８２】
同様にｉ桁目の加算器５９は、二組の冗長二進数ｉｎ１＿ｐｌｕｓi ６５とｉｎ１＿ｍｉｎｕｓi ６６、およびｉｎ２＿ｐｌｕｓi ６７とｉｎ２＿ｍｉｎｕｓi ６８を足し合わせて冗長二進数の出力ｏｕｔ＿ｐｌｕｓi ７５とｏｕｔ＿ｍｉｎｕｓi ７６を出力し、（ｉ−１）桁目の加算器６０は、二組の冗長二進数ｉｎ１＿ｐｌｕｓi-1 ６９とｉｎ１＿ｍｉｎｕｓi-1 ７０、およびｉｎ２＿ｐｌｕｓi-1 ７１とｉｎ２＿ｍｉｎｕｓi-1 ７２を足し合わせて冗長二進数の出力ｏｕｔ＿ｐｌｕｓi-1 ７７とｏｕｔ＿ｍｉｎｕｓi-1 ７８を出力する。ｔi+1 〜ｔi-2 ７９〜８２は、それぞれ一本または複数本の信号線からなる中間信号で、下位側の加算器から上位側の加算器へ伝えられる。一般に隣り含う中間信号ｔi+1 ７９とｔi ８０は互いに独立とすることができるので、通常の二進数の加算の際に生じるいわゆるキャリー信号の伝搬が起きない。
【００８３】
以上のように、この実施の形態１０によれば、上記の構成により高速の冗長二進加算を実現することができる。
【００８４】
実施の形態１１．
図１４はこの発明の実施の形態１１による除算装置を示す構成図であり、図１における被除数２（ｂi ）を“１”の被除数８３としたもので、他の構成は図１に示す実施の形態１と同じであるが、この構成によって、高速の逆数器が得られる。
【００８５】
実施の形態１２．
図１５はこの発明の実施の形態１２による除算装置を示す構成図であり、第２、第３、第４の中間除数１３，１８，８７から取り出す乗数１５（ｅ4 〜ｅ6 ）、乗数８４（ｇ6 〜ｇ8 ）、乗数８９（ｊ8 〜ｊ14）のビット数を（２n −１）個とした場合を示す。この実施の形態１２では、商を小数点以下２４桁の精度で求める場合を示している。
【００８６】
動作は第３の中間除数１８（ｇi ）を求めるところまでは実施の形態１と同様であるが、そこから乗数８４として取り出す信号のビット数を実施の形態１の５ビットではなく３ビットとしている。ここで、実施の形態１の式［１６］〜［２２］を一般化するために、ｍをｍ≦ｎとして、
α＝（ｘn+1 …Ｘn+m ）／２n+m                             ［３７］
β＝（０．ｘn+m+1 …）／２n+m                             ［３８］
と置くと、
−（２m −１）／２n+m ＜α＜（２m −１）／２n+m
すなわち、｜α｜＜（２m −１）／２n+m                     ［３９］
１／２n+m ＜β＜１／２n+m
すなわち、｜β｜＜１／２n+m                               ［４０］
となる。
【００８７】
εを計算すると最終的に
ε＝｜α｜2 ＋｜α｜｜β｜＋｜β｜＜２-(n+m-1)            ［４１］
が得られる。すなわち、（１−α）を掛けることによって小数点以下に続く“０”の数を（ｎ＋ｍ−１）とすることができる。この考えから第７の乗算器８５における乗算の結果、第４の中間除数８７（ｊi ）は小数点以下に続く“０”の数は７個となる。
【００８８】
次に第４の中間除数８７（ｊi ）から取り出す乗数８９のビット数は７ビットとしている。このため、第９の乗算器９０における乗算の結果、第５の中間除数９２（ｌi ）は小数点以下に続く“０”の数は１３個となる。さらに、第５の中間除数９２（ｌi ）からは乗数９４（ｉ14〜ｉ26）として１３ビットが取り出される。
【００８９】
一方、第８の乗算器８６、第１０の乗算器９１、第１１の乗算器９５はそれぞれ実施の形態１の第４、第６、第７の乗算器１２，１７，２１と同様の働きをして、それぞれ第４の中間商８８（ｋi ）、第５の中間商９３（ｍi ）、第６の中間商９６（ｎi ）を生成する。第６の中間商９６（ｎi ）は、さらに冗長二進→二進変換器２３によって二進数に変換され、最終的に商２４（ｑi ）が出力される。この実施の形態１２によって、乗数１５（ｅ4 〜ｅ6 ）、乗数８４（ｇ6 〜ｇ8 ）、乗数８９（ｊ8 〜ｊ14）のビット数はそれぞれ３，３，７と（２n −１）で表される数となる。
【００９０】
以上のように、この実施の形態１２によれば、第５の乗算器１６、第７の乗算器８５、第９の乗算器９０では、入力する乗数１５（ｅ4 〜ｅ6 ）、乗数８４（ｇ6 〜ｇ8 ）、乗数８９（ｊ8 〜ｊ14）のビット数に１を加えた数の冗長二進数の総和を計算するので、乗数のビット数が（２n −１）のときは、加算すべき冗長二進数が２n となり、ワレストリーによる足し上げの効率が最も大きくなる。すなわち、２n は加算器ｎ段で足し上げられる最大の数で、従って最も効率よく高速に足し上げを実行することができる。
【００９１】
実施の形態１３．
図１６はマルチプレクサ回路を用いてハードウエア量を低減した場合のこの発明の実施の形態１３による除算装置を示す構成図であり、マルチプレクサ回路９７においては最初、第２の中間除数１３（ｅi ）が選択されて出力９９が出力され、同時に乗数１０１（ｅ4 〜ｅ6 ）が出力され、これら二つから第５の乗算器１０２において乗算が実行される。
【００９２】
次にマルチプレクサ回路９７では第５の乗算器１０２の出力１０４が選択されて出力９９に中間除数（ｇi ）として出力され、同時に乗数１０１（ｇ6 〜ｇ8 ）が選択されて出力され、これら二つから第５の乗算器１０２において乗算が実行される。この乗算結果は第３の中間除数１０６（ｇi）となる。
【００９３】
また、マルチプレクサ回路１０８においては、最初、第３の中間除数１０６（ｇi ）が出力１１０として選択されて出力され、同時に乗数１１２（ｊ8 〜ｊ14）が選択されて出力され、これら二つから第９の乗算器１１３において乗算が実行される。
【００９４】
次にマルチプレクサ回路１０８では第９の乗算器１１３の出力１１５が選択されて、出力１１０には中間除数（ｌi ）として出力され、同時に乗数１１２（ｌ14〜ｌ20）が選択されて出力され、これら二つから第９の乗算器１１３において乗算が実行される。
【００９５】
さらに、マルチプレクサ回路１０８では次にもう一度、第９の乗算器１１３の出力１１５が選択されて、乗数１１２（ｎ20〜ｎ26）が選択されて出力される。この際、第９の乗算器１１３における乗算は不要なので実行されない。
【００９６】
一方、マルチプレクサ回路９８では、最初、第２の中間商１４（ｆi ）が選択されて出力１００に出力され、第６の乗算器１０３において第２の中間商１４（ｆi ）と乗数１０１（ｅ4 〜ｅ6 ）とから乗算が実行される。
【００９７】
次に、マルチプレクサ回路９８においては第６の乗算器１０３の出力１０５が選択されて出力１００に出力され、乗数１０１（ｇ6 〜ｇ8 ）とから第６の乗算器１０３において乗算が実行される。この乗算結果が第３の中間商１０７（ｈi ）となる。
【００９８】
また、マルチプレクサ回路１０９においては、最初、第３の中間商１０７（ｈi ）が選択されて出力１１１に出力され、乗数１１２（ｊ8 〜ｊ14）とから第１０の乗算器１１４において乗算が実行される。
【００９９】
次に、マルチプレクサ回路１０９では第１０の乗算器１１４の出力１１６が選択されて出力１１１に出力され、乗数１１２（ｌ14〜ｌ20）とから第１０の乗算器１１４で乗算が実行される。
【０１００】
さらに、マルチプレクサ回路１０９では次にもう一度、第１０の乗算器１１４の出力１１６が選択されて、乗数１１２（ｎ20〜ｎ26）が選択されて出力される。この結果、第１０の乗算器１１４で乗算が実行され、第４の中間商１１７（ｋi ）として出力される。第４の中間商１１７（ｋi ）は冗長二進→二進変換器２３によって通常の二進数に変換され、商２４（ｑi ）として出力される。
【０１０１】
以上のように、この実施の形態１３によれば、マルチプレクサ回路により、乗算器よりも小さいハードウエア量で実現できるので、全体のハードウエア量を大幅に低減することができる。
【０１０２】
実施の形態１４．
図１７はこの発明の実施の形態１４による除算装置を示す構成図であり、パイプラインレジスタ１１８および１１９によって２段のパイプライン構成とした場合を示す。すなわち、第２の中間除数１３（ｅi ）および第２の中間商１４（ｆi ）はそれぞれパイプラインレジスタ１１８および１１９によって一時蓄えられ、次に第５の乗算器１６および第６の乗算器１７に入力する。
【０１０３】
パイプラインレジスタ１１８および１１９の制御はクロック信号１２０によって行われ、例えばクロック信号１２０が“ｌｏｗ”のときにデータが蓄えられ、クロック信号１２０が“ｈｉｇｈ”になったときにデータが出力されるといった動作をする。
【０１０４】
以上のように、この実施の形態１４によれば、パイプラインレジスタ１１８および１１９によって分けられた前後の回路を並列に動作させる、いわゆるパイプライン動作が可能となるので、高速動作を実現することができる。また、この実施の形態１４では２段のパイプライン構成とする場合を示したが、パイプラインレジスタの数を増加させて段数を増やすことにより、さらに高速動作を実現することができる。
【０１０５】
実施の形態１５．
図１８はこの発明の実施の形態１５による除算装置を示す構成図であり、上記各実施の形態における制御回路６の代わりに記憶手段としてＲＯＭ１２１を用いた場合を示す。このＲＯＭ１２１は、乗数３（ａ1 〜ａ4 ）をアドレス入力として、制御信号１２２を出力するもので、制御信号１２２を上記各実施の形態における制御信号７と同様とすることによって実施の形態１と同様の動作を実現することができ、同様の効果を得ることができる。
【０１０６】
以上のように、この実施の形態１５によれば、ＲＯＭ１２１への入力を４ビットとしているが、ＲＯＭの規模を大きくして入力のビット数を多くすることによって第１の乗算器の出力である第２の中間除数１３（ｅi ）の小数点以下に続く“０”の数を実施の形態１の場合よりも増やすことができ、高速の除算が実現できる。また、ＲＯＭ１２１はＲＡＭやその他の記憶素子であってもかまわない。
【０１０８】
【発明の効果】
請求項１記載の発明によれば、除数から制御回路によって制御信号を出力させ、これに基づいて第１の乗算器と第２の乗算器で演算を行い、冗長二進数の中間除数と中間商を発生させ、その後、除数の上位２桁以降に並ぶ“０”の次の複数ビットの符号ビットの符号を反転させた信号と上記中間除数および中間商との演算を実行し、中間除数を１に収束させるように構成したので、計算に無駄がなく、除算処理の高速化を図ることができる。また、冗長二進数で乗算を行うので、除算処理のより高速化を図ることができる。さらに、２の補数器が不要、除数側の最後の乗算は実行不要等のため、ハードウエアを削減できる効果がある。
【０１０９】
請求項２記載の発明によれば、冗長二進表現の商を二進数に変換する変換器を備えるように構成したので、得られた冗長二進表現の商を二進数に変換して出力することができる効果がある。
【０１１０】
請求項３記載の発明によれば、制御回路は除数（ａi ）の上位複数桁ビットを入力して、第１の乗数を生成するように構成したので、請求項１記載の発明の効果を容易に実現することができる効果がある。
【０１１１】
請求項４記載の発明によれば、元の除数と小数点以下２桁を“０”とするに必要なだけシフトさせた該除数とを引き算するように構成したので、第１の中間除数を容易に得ることができる効果がある。
【０１１２】
請求項５記載の発明によれば、制御回路は除数のうちの小数点以下第１位から第３位までの３ビットを入力として、上記除数の各ビットを全てゼロにするか、１ビット下位桁側へシフトするか、２ビット下位桁側へシフトするかを制御する信号と、冗長二進表現された第１の中間除数の小数点以下第３桁の値を示す信号とを出力させるように構成したので、実際の乗算を行うことなく、中間除数を得ることができる効果がある。
【０１１３】
請求項６記載の発明によれば、第１の乗算器は、制御信号により除数の各ビットを全てゼロにするか、１ビット下位桁側ヘシフトするか、２ビット下位桁側ヘシフトするかを行うシフタ回路の出力と上記除数とから、上記冗長二進表現された第１の中間除数の小数点以下第４桁目以下を生成するように構成したので、高速で小面積の第１の乗算器を得ることができる効果がある。
【０１１４】
請求項７記載の発明によれば、第２の乗算器は、制御信号により被除数の各ビットを全てゼロにするか、１ビット下位桁側ヘシフトするか、２ビット下位桁側ヘシフトするかを行うシフタ回路の出力と上記被除数とから上記冗長二進表現された第１の中間商を生成するように構成したので、高速で小面積の第２の乗算器を得ることができる効果がある。
【０１１５】
請求項８記載の発明によれば、第３あるいは第ａの乗算器は、入力される第１の中間除数を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えるように構成したので、極めて高速に乗算結果を得ることができる効果がある。
【０１１６】
請求項９記載の発明によれば、第４あるいは第ｂの乗算器は、入力された第１の中間商を符号反転して二つの冗長二進数を発生させる二つの符号反転器と、上記二つの冗長二進数を加算して一つの冗長二進数を出力する二つの冗長二進加算器とを備えるように構成したので、極めて高速に乗算結果を得ることができる効果がある。
【０１１７】
請求項１０記載の発明によれば、符号反転器は、一対の冗長二進数の成分を入力し、冗長二進数の制御入力によって出力を選択するマルチプレクサ回路を備えるように構成したので、所望の出力を得ることができる効果がある。
【０１１８】
請求項１１記載の発明によれば、冗長二進加算器は、二組の冗長二進数を加算して冗長二進数を出力する各桁毎の加算器を複数備えるように構成したので、高速の冗長二進加算器を実現することができる効果がある。
【０１１９】
請求項１２記載の発明によれば、被除数として定数“１”を用いるように構成したので、除数の逆数を商として出力することができる効果がある。
【０１２０】
請求項１３記載の発明によれば、第２の中間除数に対して上位ｎ桁または第３の中間除数に対して上位ｑ桁を、（ｎ−ｍ−１）または（ｑ−ｐ−１）が２のべき乗から１を引いた値となるように設定するように構成したので、効率よく高速に足し上げを実現することができる効果がある。
【０１２１】
請求項１４記載の発明によれば、中間除数と同時に制御信号を選択し、この二つから演算を実行した演算器の出力を選択するマルチプレクサと、中間商を選択し、この中間商を上記制御信号と乗算した演算器の出力を選択するマルチプレクサとを備えるように構成したので、装置全体のハードウエアを大幅に低減することができる効果がある。
【０１２２】
請求項１５記載の発明によれば、クロック信号で制御され、中間除数および中間商を一時蓄え、演算器に出力するパイプラインレジスタを備えるように構成したので、パイプラインレジスタによって分けられた前後の回路を並列に動作させ、高速動作を実現することができる効果がある。
【０１２３】
請求項１６記載の発明によれば、制御回路としてＲＯＭを用いるように構成したので、請求項１記載の発明の場合よりも小数点以下に続く“０”の数を増やすことができ、より高速の除算処理を実現できる効果がある。
【図面の簡単な説明】
【図１】  この発明の実施の形態１による除算装置の構成を示すブロック図である。
【図２】  この発明の実施の形態２による制御回路の説明図である。
【図３】  この発明の実施の形態２による制御回路が有する機能を表した図である。
【図４】  この発明の実施の形態３による中間除数の生成を表した図である。
【図５】  その中間除数の生成処理の説明図である。
【図６】  この発明の実施の形態４による制御回路の説明図である。
【図７】  この発明の実施の形態５による第１の乗算器の説明図である。
【図８】  この発明の実施の形態６による第２の乗算器の説明図である。
【図９】  その乗算器による中間商の生成を表した図である。
【図１０】  この発明の実施の形態７による第３の乗算器の説明図である。
【図１１】  この発明の実施の形態８による第４の乗算器の説明図である。
【図１２】  この発明の実施の形態９による符号反転器の構成図である。
【図１３】  この発明の実施の形態１０による冗長二進加算器の構成図である。
【図１４】  この発明の実施の形態１１による除算装置の構成を示すブロック図である。
【図１５】  この発明の実施の形態１２による除算装置の構成を示すブロック図である。
【図１６】  この発明の実施の形態１３による除算装置の構成を示すブロック図である。
【図１７】  この発明の実施の形態１４による除算装置の構成を示すブロック図である。
【図１８】  この発明の実施の形態１５による除算装置の構成を示すブロック図である。
【図１９】  従来の除算装置の構成を示すブロック図である。
【符号の説明】
１  除数、２  被除数、３  第１の乗数、４  第１の乗算器、５  第２の乗算器、８  第１の中間除数、１０  第２の乗数、１１  第３の乗算器、１２  第４の乗算器、１３  第２の中間除数、１４  第２の中間商、１５  第３の乗数、１８  第３の中間除数、１９  第３の中間商、２０  第４の乗数、３０，３４  シフタ回路、３６，３８，４３，４５  符号反転器、４０，４２，４７，４９  冗長二進加算器、５２，５３，９７，９８  マルチプレクサ回路、５８〜６０  加算器、１１８，１１９  パイプラインレジスタ。
【図１】
0003660075.tif 000011
【図２】
0003660075.tif 000012
【図３】
0003660075.tif 000013
【図４】
0003660075.tif 000014
【図５】
0003660075.tif 000015
【図６】
0003660075.tif 000016
【図７】
0003660075.tif 000017
【図８】
0003660075.tif 000018
【図９】
0003660075.tif 000019
【図１０】
0003660075.tif 000020
【図１１】
0003660075.tif 000021
【図１２】
0003660075.tif 000022
【図１３】
0003660075.tif 000023
【図１４】
0003660075.tif 000024
【図１５】
0003660075.tif 000025
【図１６】
0003660075.tif 000026
【図１７】
0003660075.tif 000027
【図１８】
0003660075.tif 000028
【図１９】
0003660075.tif 000029