(57)【要約】【課題】ビットサイズが大きくなっても演算処理時間が長くならない乗算回路を提供する。【解決手段】ｎビットの整数、または固定小数点数である被乗数（１００）と乗数（１０１）で乗算を行い２ｎビットの演算結果（１１１）を得る乗算回路において、前記被乗数（１００）を分割する分割レジスタ（１０２）と前記乗数（１０１）を分割する分割レジスタ（１０３）を備え、前記分割レジスタ（１０２）、（１０３）により分割したデータを乗算する４つの乗算器（１０４）〜（１０７）を備え、前記乗算器の演算結果を加算するための２つの加算器（１０８）、（１０９）を備え、前記加算器の演算結果の小数点位置を調節するバレルシフタ（１１０）を備えるようにした。【選択図】　　図１
2004110138.tif 000002
【特許請求の範囲】
【請求項１】
ｎビットの整数、または固定小数点数である被乗数と乗数で乗算を行い２ｎビットの演算結果を得る乗算回路において、前記被乗数を分割する分割レジスタと前記乗数を分割する分割レジスタを備え、前記分割レジスタにより分割したデータを乗算する４つの乗算器を備え、前記乗算器の演算結果を加算するための２つの加算器を備え、前記加算器の演算結果の小数点位置を調節するバレルシフタを備えることを特徴とする乗算回路。
【請求項２】
最上位ビットを符号部、残りビットが小数または整数である被乗数データ（以下、被乗数データ部とする）であるｎビットの符号付き固定小数点数または整数である被乗数と最上位ビットを符号部、残りビットが小数または整数である乗数データ（以下、乗数データ部とする）であるｎビットの符号付き固定小数点数または整数である乗数で乗算を行い２ｎビットの演算結果を得る乗算回路において、前記被乗数データ部の否定をとり１を加える２の補数器を備え、前記被乗数符号部をセレクト信号として前記被乗数データ部と前記補数器の出力を切り替えて出力するマルチプレクサを分割レジスタの前に備え、前記乗数データ部の否定をとり１を加える２の補数器を備え、前記乗数符号部をセレクト信号として前記乗数データ部と前記補数器の出力を切り替えて出力するマルチプレクサを分割レジスタの前に備え、前記被乗数符号部と前記乗数符号部から演算結果の符号を判別する符号判定器を備え、バレルシフタの出力の否定をとり１を加える２の補数器を備え、前記符号判定器からの出力をセレクト信号として前記バレルシフタの出力と前記補数器の出力を切り替えて出力するマルチプレクサを備えることを特徴とする請求項１記載の乗算回路。
【請求項３】
任意に読み書き可能で、演算結果の小数点位置を調節するバレルシフタのシフト量である小数点位置を操作できる小数点位置調節レジスタを備えることを特徴とする請求項２記載の乗算回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、整数または固定小数点数の乗算回路に関するものである。
【０００２】
【従来の技術】
従来の乗算回路には、特許文献１〜３に記載のように種々のものが見られた。
【０００３】
【特許文献１】
特開平０６−１１０６５７号公報
【特許文献２】
特開平０６−３４８４５７号公報
【特許文献３】
特開平０７−０２８６２６号公報
【０００４】
その中で、本発明が改良の対象とする乗算回路は図５に示す乗算回路である。図５は全加算器（５００）であり、入力ＩＮ１、入力ＩＮ２、下位ビットからの桁上がりＣＡＲＲＹ　ＩＮとの加算演算結果がＳＵＭ、上位ビットへの桁上がりがＣＡＲＲＹ　ＯＵＴである。
図６は４ビット×４ビットの乗算演算回路であり、図７の計算式を回路図としたものである。図７は４ビット×４ビットの乗算演算の計算式である。
以下に、被乗数、乗数が４ビットの場合の乗算演算について図７を用いて簡単に説明する。まず、被乗数を最上位ビットからＡ３、Ａ２、Ａ１、Ａ０、乗数を最上位ビットからＢ３、Ｂ２、Ｂ１、Ｂ０、演算結果を最上位ビットからＣ７、Ｃ６、Ｃ５、Ｃ４、Ｃ３、Ｃ２、Ｃ１、Ｃ０とする。被乗数の各ビット（Ａ３〜Ａ０）と乗数のビット０（Ｂ０）の乗算を行い、この乗算結果をＺ０とする。同様に被乗数の各ビット（Ａ３〜Ａ０）と乗数のビット１（Ｂ１）の乗算、被乗数の各ビット（Ａ３〜Ａ０）と乗数のビット２（Ｂ２）の乗算、被乗数の各ビット（Ａ３〜Ａ０）と乗数のビット３（Ｂ３）の乗算を行い、これらの乗算結果をＺ１、Ｚ２、Ｚ３とする。Ｚ０と、Ｚ１を１ビット左シフトさせたものを加算し、その加算結果と、Ｚ２を２ビット左シフトさせたものとを加算し、その加算結果と、Ｚ３を３ビット左シフトさせたものを加算することで４ビット×４ビットの乗算演算ができるようになっている。
【０００５】
【発明が解決しようとする課題】
しかしながら、従来の乗算回路において乗算演算を行う場合、図７で示した手順に従って回路を構成すると図６のような回路となるが、図６の回路で構成される４ビット乗算器では演算結果が計算されるまでに４段の全加算器による演算が必要である。このため、従来の乗算回路では、被乗数、乗数のビットサイズがｎビットになった場合、演算結果が計算されるまでにｎ段の全加算器による加算を行う必要がある。よって、ビットサイズが大きくなるに従い、演算処理時間が長くなる。また、図６に示すような乗算回路では被乗数、乗数が負の数の場合に乗算演算を行うことができなかった。さらに、図６で示す回路ではバレルシフタを付加し、小数点位置を調節することにより乗算演算を行うことができるが、乗算演算毎に小数点位置を変更して演算を行うことができない。したがって、この発明の目的は乗算回路を構成する場合に演算処理時間を短くすること、被乗数、乗数が負の数である場合でも乗算演算を行うこと、同じ小数点位置を持つ被乗数と乗数で、演算毎に任意の小数点位置を取ることが可能な乗算回路を提供することである。
【０００６】
【課題を解決するための手段】
上記問題を解決するため、ｎビットの整数、または固定小数点数である被乗数（１００）と乗数（１０１）で乗算を行い２ｎビットの演算結果（１１１）を得る乗算回路において、前記被乗数（１００）を分割する分割レジスタ（１０２）と前記乗数（１０１）を分割する分割レジスタ（１０３）を備え、前記分割レジスタ（１０２）、（１０３）により分割したデータを乗算する４つの乗算器（１０４）、（１０５）、（１０６）、（１０７）を備え、前記乗算器の演算結果を加算するための２つの加算器（１０８）、（１０９）を備え、前記加算器の演算結果の小数点位置を調節するバレルシフタ（１１０）を備えることを特徴とする乗算回路である。請求項１記載の乗算回路によれば、因数分解を用い、４つの乗算器（１０４）、（１０５）、（１０６）、（１０７）と、２つの加算器（１０８）、（１０９）を用いてｎビット×ｎビットの乗算演算を行うことにより、ｎビット乗算器を用いた乗算演算で必要な全加算器の段数に比べて乗算回路内の全加算器の段数が半分になるため、乗算演算処理時間を短くすることができる。
【０００７】
請求項２記載の乗算回路は、最上位ビットを符号部（２００）、残り（ｎ−１）ビットが小数または整数である被乗数データ（２０１）（以下、被乗数データ部とする）であるｎビットの符号付き固定小数点数または整数である被乗数（１００）と最上位ビットを符号部（２０２）、残り（ｎ−１）ビットが小数または整数である乗数データ（２０３）（以下、乗数データ部とする）であるｎビットの符号付き固定小数点数または整数である乗数（１０１）で乗算を行い２ｎビットの演算結果（１１１）を得る乗算回路において、前記被乗数データ部（２０１）の否定をとり１を加える２の補数器（２０４）を備え、前記被乗数符号部（２００）をセレクト信号として前記被乗数データ部（２０１）と前記補数器（２０４）の出力を切り替えて出力するマルチプレクサ（２０５）を分割レジスタ（１０２）の前に備え、前記乗数データ部（２０３）の否定をとり１を加える２の補数器（２０６）を備え、前記乗数符号部（２０２）をセレクト信号として前記乗数データ部（２０３）と前記補数器（２０６）の出力を切り替えて出力するマルチプレクサ（２０７）を分割レジスタ（１０３）の前に備え、前記被乗数符号部（２００）と前記乗数符号部（２０２）から演算結果の符号を判別する符号判定器（２０８）を備え、バレルシフタ（１１０）の出力の否定をとり１を加える２の補数器（２０９）を備え、前記符号判定器（２０８）からの出力をセレクト信号として前記バレルシフタ（１１０）の出力と前記補数器（２０９）の出力を切り替えて出力するマルチプレクサ（２１０）を備えることを特徴とする、請求項１記載の乗算回路である。請求項２記載の乗算回路によれば、被乗数符号部（２００）、乗数符号部（２０２）をセレクト信号とするマルチプレクサ（２０５）、（２０７）を使用して、被乗数（１００）、乗数（１０１）の正負を判断し、正数化したデータで演算を行い、符号判定器（２０８）の出力をセレクト信号とするマルチプレクサ（２１０）で演算結果の正負を判断して出力することで、被乗数（１００）、乗数（１０１）が負の数であった場合でも乗算演算を行うことができる。
【０００８】
請求項３記載の乗算回路は、任意に読み書き可能で、演算結果（１１１）の小数点位置を調節するバレルシフタ（１１０）のシフト量である小数点位置を操作できる小数点位置調節レジスタ（３００）を備えることを特徴とする、請求項２記載の乗算回路である。請求項３記載の乗算回路によれば、同じ小数点位置を持つ被乗数（１００）と乗数（１０１）で、各演算に対して、任意の小数点位置をとる乗算を行うことができる。
【０００９】
【発明の実施の形態】
以下、本発明の実施例を図に基づいて説明する。図１は本発明請求項１の乗算回路の回路図である。（１００）は被乗数、（１０１）は乗数、（１０２）は被乗数（１００）を上位ビットと下位ビットに分割する分割レジスタ、（１０３）は乗数（１０１）を上位ビットと下位ビットに分割する分割レジスタである。（１０４）、（１０５）、（１０６）、（１０７）は乗算器、（１０８）、（１０９）は加算器であり、因数分解を用いてｎビット×ｎビットの乗算を行うために使用する。（１０４）は被乗数（１００）の上位ビットと乗数（１０１）の上位ビットを乗算し、（１０５）は被乗数（１００）の上位ビットと乗数（１０１）の下位ビットを乗算し、（１０６）は被乗数（１００）の下位ビットと乗数（１０１）の上位ビットを乗算し、（１０７）は被乗数（１００）の下位ビットと乗数（１０１）の下位ビットを乗算するものである。（１０８）は乗算器（１０５）の乗算結果と乗算器（１０６）の乗算結果を加算し、（１０９）は乗算器（１０４）の乗算結果と乗算器（１０７）の乗算結果の上位ビットを乗算器（１０４）の乗算結果が上位ビットとなるように結合したものと乗算器（１０８）の乗算結果を加算するものである。（１１０）はバレルシフタであり、加算器（１０９）の加算結果と乗算器（１０７）の乗算結果の下位ビットを加算器（１０９）の加算結果が上位ビットとなるように結合したものの小数点位置をシフトするものである。被乗数（１００）、乗数（１０１）が整数である場合はシフト量は０である。（１１１）には演算結果が格納される。図２は前記乗算回路に請求項２で示す負の数の乗算を行うことを可能にする回路を付加したものである。（２００）は被乗数（１００）の最上位ビットである符号部で、（２０１）は被乗数（１００）の整数部または小数部（以下、被乗数データ部とする）である。（２０２）は乗数（１０１）の最上位ビットである符号部で、（２０３）は乗数（１０１）の整数部または小数部（以下、乗数データ部とする）である。（２０４）は被乗数データ部（２０１）の否定をとり、１を加える２の補数器であり、（２０５）は被乗数符号部（２００）をセレクト信号として被乗数データ部（２０１）と２の補数器（２０４）の出力を切り替えて出力するマルチプレクサである。（２０６）は乗数データ部（２０３）の否定をとり、１を加える２の補数器であり、（２０７）は乗数符号部（２０２）をセレクト信号として乗数データ部（２０３）と２の補数器（２０６）の出力を切り替えて出力するマルチプレクサである。（２０８）は演算結果の符号を判別する符号判定器であり、被乗数符号部（２００）と乗数符号部（２０２）の排他的論理和を出力するものである。（２０９）はバレルシフタ（１１０）の出力である乗算演算結果の否定をとり、１を加える２の補数器であり、（２１０）は符号判定器（２０８）の出力をセレクト信号として前記バレルシフタ（１１０）の出力と２の補数器（２０９）の出力を切り替えて出力するマルチプレクサである。図３は前記乗算回路に請求項３で示す、被乗数（１００）と乗数（１０１）の小数点位置を変更しても乗算演算を行うことができるように演算結果の小数点位置を調節する回路を付加したものであり���（３００）は外部から任意に読み書き可能で、固定小数点位置が変更された場合にバレルシフタ（１１０）のシフト量を調節する小数点位置調節レジスタである。
【００１０】
図４は本発明において提供する乗算器回路を用いた３２ビット乗算器の回路図で、図３の具体的な回路として示したものであり、これを用いて本発明の説明を行う。まず、被乗数データ部（２０１）をマルチプレクサ（２０５）により、正数化して出力する。被乗数データ部（２０１）を正数化して出力するために、マルチプレクサ（２０５）では被乗数の最上位ビットである符号部（２００）をセレクト信号として、被乗数データ部（２０１）と２の補数器（２０４）の出力を切替えて出力することでデータを正数化する。同様に乗数データ部（２０３）をマルチプレクサ（２０７）を用い、正数化して出力する。次にマルチプレクサ（２０５）において正数化したデータを分割レジスタ（１０２）で上位ビット（ビット３０からビット１６）と下位ビット（ビット１５からビット０）に分割する。同様に（２０７）において正数化したデータを分割レジスタ（１０３）で上位ビット（ビット３０からビット１６）と下位ビット（ビット１５からビット０）に分割する。次に乗算器（１０４）を用いてマルチプレクサ（２０５）により正数化したデータの上位ビット（ビット３０からビット１６）とマルチプレクサ（２０７）により正数化したデータの上位ビット（ビット３０からビット１６）を乗算する。同様に乗算器（１０５）を用いてマルチプレクサ（２０５）により正数化したデータの上位ビット（ビット３０からビット１６）とマルチプレクサ（２０７）により正数化したデータの下位ビット（ビット１５からビット０）の乗算、乗算器（１０６）を用いてマルチプレクサ（２０５）により正数化したデータの下位ビット（ビット１５からビット０）とマルチプレクサ（２０７）により正数化したデータの上位ビット（ビット３０からビット１６）の乗算、乗算器（１０７）を用いてマルチプレクサ（２０５）により正数化したデータの下位ビット（ビット１５からビット０）とマルチプレクサ（２０７）により正数化したデータの下位ビット（ビット１５からビット０）の乗算を行う。
【００１１】
次に乗算器（１０５）、（１０６）から得られた乗算結果を加算器（１０８）を用いて加算し、さらに乗算器（１０４）から得られた乗算結果と乗算器（１０７）から得られた乗算結果の上位１６ビットとを乗算器（１０４）から得られた乗算結果が上位ビットとなるように結合し、４６ビットデータとする。その結合したデータと、加算器（１０８）から得られた加算結果とを加算器（１０９）を用いて加算する。次に加算器（１０９）から得られた加算結果と乗算器（１０７）から得られた乗算結果の下位１６ビットを加算器（１０９）から得られた加算結果が上位ビットとなるように結合し、６３ビットデータとする。次にバレルシフタ（１１０）で加算器（１０９）の加算結果の小数点位置をシフトさせる。この時、被乗数（１００）と乗数（１０１）の小数点位置を任意に外部から読み書き可能な小数点位置調節レジスタ（３００）に格納しておき、このシフト量をバレルシフタのシフト量とすることで被乗数（１００）と乗数（１０１）の小数点位置が変更された場合においても乗算演算を行うことができる。次にマルチプレクサ（２１０）を用いて、データの正負を判別し出力する。マルチプレクサ（２１０）のセレクト信号は符号判定器（２０８）により決定され、符号判定器（２０８）の出力は被乗数符号部（２００）と乗数符号部（２０２）の排他的論理和であり、符号判定器（２０８）の出力をセレクト信号としてマルチプレクサ（２１０）により切り替えて出力することで演算結果のデータの正負が正しく出力される。最後にマルチプレクサ（２１０）の出力の最上位ビットに符号判定器（２０８）の出力を結合し、出力することで３２ビット×３２ビットの乗算演算結果を得ることができる。
【００１２】
この実施の形態によれば、因数分解を用い、４つの乗算器（１０４）、（１０５）、（１０６）、（１０７）と、２つの加算器（１０８）、（１０９）を用いてｎビット×ｎビットの乗算演算を行うことにより、ｎビット乗算器を用いた乗算演算で必要な全加算器の段数に比べて乗算回路内の全加算器の段数が半分になるため、乗算演算処理時間を短くすることができる。また、被乗数符号部（２００）、乗数符号部（２０２）をセレクト信号とするマルチプレクサ（２０５）、（２０７）を使用して、被乗数（１００）、乗数（１０１）の正負を判断し、正数化したデータで演算を行い、符号判定器（２０８）の出力をセレクト信号とするマルチプレクサ（２１０）で演算結果の正負を判断して出力することで、被乗数（１００）、乗数（１０１）が負の数であった場合でも乗算演算を行うことができる。また、任意に外部から読み書き可能な、小数点位置を操作できる小数点位置調節レジスタ（３００）で演算結果の小数点位置を調節するバレルシフタ（１１０）のシフト量を調節することにより、被乗数（１００）と乗数（１０１）の小数点位置を演算毎に任意に設定することができ、被乗数（１００）と乗数（１０１）の小数点位置が変更された場合においても乗算演算を行うことができる。
【００１３】
【発明の効果】
請求項１記載の乗算回路によれば、因数分解を用い、４つの乗算器（１０４）、（１０５）、（１０６）、（１０７）と、２つの加算器（１０８）、（１０９）を用いてｎビット×ｎビットの乗算演算を行うことにより、ｎビット乗算器を用いた乗算演算で必要な全加算器の段数に比べて乗算回路内の全加算器の段数が半分になるため、乗算演算処理時間を短くすることができる。
請求項２記載の乗算回路によれば、被乗数符号部（２００）、乗数符号部（２０２）をセレクト信号とするマルチプレクサ（２０５）、（２０７）を使用して、被乗数（１００）、乗数（１０１）の正負を判断し、正数化したデータで演算を行い、符号判定器（２０８）の出力をセレクト信号とするマルチプレクサ（２１０）で演算結果の正負を判断して出力することで、被乗数（１００）、乗数（１０１）が負の数であった場合でも乗算演算を行うことができる。
請求項３記載の乗算回路によれば、任意に外部から読み書き可能な、小数点位置を操作できる小数点位置調節レジスタ（３００）で演算結果の小数点位置を調節するバレルシフタ（１１０）のシフト量を調節することにより、被乗数（１００）と乗数（１０１）の小数点位置を演算毎に任意に設定することができ、同じ小数点位置を持つ被乗数（１００）と乗数（１０１）で、各演算に対して、任意の小数点位置をとる乗算を行うことができる。
【図面の簡単な説明】
【図１】本発明請求項１で示す乗算回路図
【図２】図１に本発明請求項２で示す回路を付加した乗算回路
【図３】図２に本発明請求項３で示す回路を付加した乗算回路
【図４】本発明における回路を用いた３２ビット乗算回路図例
【図５】全加算器を示すブロック図
【図６】従来の乗算回路を用いた４ビット乗算回路図例
【図７】４ビット×４ビットの乗算を示す計算式
【符号の説明】
１００：被乗数
１０１：乗数
１０２：分割レジスタ
１０３：分割レジスタ
１０４：乗算器
１０５：乗算器
１０６：乗算器
１０７：乗算器
１０８：加算器
１０９：加算器
１１０：バレルシフタ
１１１：演算結果
２００：被乗数符号部
２０１：被乗数データ部
２０２：乗数符号部
２０３：乗数データ部
２０４：２の補数器
２０５：マルチプレクサ
２０６：２の補数器
２０７：マルチプレクサ
２０８：符号判定器
２０９：２の補数器
２１０：マルチプレクサ
３００：小数点位置調節レジスタ
５００：全加算器
【図１】
2004110138.tif 000003
【図２】
2004110138.tif 000004
【図３】
2004110138.tif 000005
【図４】
2004110138.tif 000006
【図５】
2004110138.tif 000007
【図６】
2004110138.tif 000008
【図７】
2004110138.tif 000009