JP2006301685A - 乗算装置 - Google Patents
乗算装置 Download PDFInfo
- Publication number
- JP2006301685A JP2006301685A JP2005118033A JP2005118033A JP2006301685A JP 2006301685 A JP2006301685 A JP 2006301685A JP 2005118033 A JP2005118033 A JP 2005118033A JP 2005118033 A JP2005118033 A JP 2005118033A JP 2006301685 A JP2006301685 A JP 2006301685A
- Authority
- JP
- Japan
- Prior art keywords
- multiplier
- signal
- adder
- bits
- partial product
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】加算器に入力されるデータ数を減らし、しかも乗算装置の演算速度を高速化することが目的とされる。
【解決手段】乗算装置は、デコーダ101及び加算器102を備える。デコーダ101は、第0ビット乃至第(2m−1)ビットb0〜b2m-1、付加ビットb2m、信号生成部g0〜gm及び部分積生成部G0〜Gmを有する。付加ビットb2mは、符号なし乗数Yについては値0を、符号付き乗数Yについては乗数Yの最上位ビットである第(2m−1)ビットb2m-1と同じ値を採る。信号生成部gj(0≦j≦m−1)は乗数Yから乗数信号tj及び加算信号Sjを生成し、信号生成部gmは乗数Yから乗数信号tmを生成する。部分積生成部Gj(0≦j≦m)は乗数信号tjと被乗数Xとに基づいて部分積Pjを生成する。加算器102は、部分積P0と、加算信号Sj-1を下位側に1ビット離して従えた部分積Pjとを加算する。
【選択図】図1
【解決手段】乗算装置は、デコーダ101及び加算器102を備える。デコーダ101は、第0ビット乃至第(2m−1)ビットb0〜b2m-1、付加ビットb2m、信号生成部g0〜gm及び部分積生成部G0〜Gmを有する。付加ビットb2mは、符号なし乗数Yについては値0を、符号付き乗数Yについては乗数Yの最上位ビットである第(2m−1)ビットb2m-1と同じ値を採る。信号生成部gj(0≦j≦m−1)は乗数Yから乗数信号tj及び加算信号Sjを生成し、信号生成部gmは乗数Yから乗数信号tmを生成する。部分積生成部Gj(0≦j≦m)は乗数信号tjと被乗数Xとに基づいて部分積Pjを生成する。加算器102は、部分積P0と、加算信号Sj-1を下位側に1ビット離して従えた部分積Pjとを加算する。
【選択図】図1
Description
本発明は乗算装置に関し、例えばワレス・ツリーを用いた乗算装置に関する。
従来から被乗数と乗数との乗算演算を行う乗算装置では、ブースのアルゴリズムを用いることで、乗数について所定の長さのビット毎に部分積を生成し、これを加算器で加算することで乗算結果を得ている。
なお、本発明に関連する技術を以下に示す。
しかし、従来の乗算装置では、部分積の符号に対応した少なくとも一つのデータを生成し、これを加算器に入力する必要がある。このため、当該データの分だけ加算器における演算時間が長くなり、乗算装置の演算速度が遅くなるおそれがあった。
上記特許文献1では、乗数の最上位ビットから生成される部分積と、上記データとを選択して加算器に入力することで、加算器に入力されるデータ数が増加することを回避している。しかし、当該選択には、セレクタが用いられているため、加算器での演算速度の遅延は回避されるものの、セレクタでの選択に要する時間だけ乗算装置の演算速度が遅くなる。
本発明は上述した事情に鑑みてなされたものであり、加算器に入力されるデータ数を減らし、しかも乗算装置の演算速度を高速化することが目的とされる。
この発明にかかる乗算装置は、第0乃至第mの信号生成部と、部分積生成部と、加算器とを備える。前記第0の前記信号生成部は、2mビット長(m;自然数)の乗数の最下位2ビットに対応する第0の加算信号及び第0の乗数信号を生成する。前記第j(1≦j≦m−1の整数)の前記信号生成部は、前記乗数の第(2j+1),2j,(2j−1)ビットに対応する第jの加算信号とともに第jの乗数信号を生成する。前記第mの前記信号生成部は、前記乗数の最上位ビット及び付加ビットに対応する第mの乗数信号を生成する。前記部分積生成部は、被乗数と前記第0乃至前記第mの前記乗数信号とを用いてそれぞれ第0乃至第mの部分積を生成する。前記加算部は、前記第0の前記部分積と、前記第1乃至前記第mの前記乗算信号に基づいてビットがずれて、前記第0乃至前記第(m−1)の前記加算信号をそれぞれ下位側に1ビット離して従える前記第1乃至前記第mの前記部分積とを加算する。前記付加ビットは、符号なしの前記乗数については値0を採り、符号付きの前記乗数については前記乗数の最上位ビットの値と同じ値を採る。
この発明にかかる乗算装置によれば、付加ビット及び乗数の最上位ビットに基づいて第mの乗数信号が生成されるので、乗数が符号付きである場合と符号なしである場合のいずれであるかを選択するための論理回路が不要である。しかも部分積のうち第1乃至第mの部分積はそれぞれ第0乃至第(m−1)の加算信号を下位ビットとして従えるので、第1乃至第(m−1)の加算信号の総和を第0乃至第mの部分積の生成とは別途に生成する必要がなく、加算器にm+1個の部分積を入力するだけで良い。よって、乗算装置の演算速度が高速化される。
実施の形態1.
図1は、本実施の形態にかかる乗算装置を概念的に示すブロック図である。当該乗算装置は、デコーダ101及び加算器102を備える。デコーダ101には、2進数で表された被乗数Xと乗数Yとが入力される。乗数Yは2mビット長を有する。一方、被乗数Xのビット長には2mビット長以外のビット長が採用できる。ここで、符号mは自然数を表し、以下同様である。
図1は、本実施の形態にかかる乗算装置を概念的に示すブロック図である。当該乗算装置は、デコーダ101及び加算器102を備える。デコーダ101には、2進数で表された被乗数Xと乗数Yとが入力される。乗数Yは2mビット長を有する。一方、被乗数Xのビット長には2mビット長以外のビット長が採用できる。ここで、符号mは自然数を表し、以下同様である。
デコーダ101は、第0ビット乃至第(2m−1)ビットb0〜b2m-1、付加ビットb2m、信号生成部g0〜gm及び部分積生成部G0〜Gmを有する。
第0ビット乃至第(2m−1)ビットb0〜b2m-1の各々は、入力された乗数Yに基づいて値0または値1を採る。
付加ビットb2mは、符号なしの乗数Yについては値0を採り、符号付きの乗数Yについては乗数Yの最上位ビットである第(2m−1)ビットb2m-1と同じ値を採る。具体的には、付加ビットb2m及び第(2m−1)ビットb2m-1は、符号なしの乗数Yについてはそれぞれ値0,1を採り、符号付きの乗数Yについては乗数が正の場合にはそれぞれ値0,0を、負の場合にはそれぞれ値1,1を採る。
図1では、付加ビットb2mが第(2m−1)ビットb2m-1の上位に付加されているが、これとは異なる位置に付加されても良い。
信号生成部gj(0≦j≦m−1)はそれぞれ、乗数Yから乗数信号tj及び加算信号Sjを生成する。信号生成部gmは、乗数Yから乗数信号tmを生成する。ここで、符号jは整数を表し、以下同様である。
部分積生成部Gj(0≦j≦m)には乗数信号tjと被乗数Xとがそれぞれ入力され、これらに基づいて部分積生成部Gjは部分積Pjを出力する。
加算器102には部分積Pj(0≦j≦m)が入力される。このとき、部分積P0以外の部分積Pjは、後述するように加算信号Sj-1を従える。加算器102は、部分積P0を含む全ての部分積Pjを加算して、被乗数Xと乗数Yとの乗算結果Rを出力する。
乗数信号tj(0≦j≦m−1)、加算信号Sj及び部分積Pjに関し、以下に具体的に説明する。乗数信号tm及び部分積Pmについては後述する。
信号生成部gj(1≦j≦m−1)は、ブースのアルゴリズムに従って、第(2j+1),2j,(2j−1)ビットを用いて演算を行う。演算の結果として10進数表記で−2,−1,0,1,2のいずれかが得られる。
信号生成部g0は、最下位2ビットである第0ビット及び第1ビットのそれぞれの値を用いて演算を行う。演算の結果として10進数表記で−2,−1,0,1のいずれかが得られる。例えば、信号生成部g0は、第0ビット及び第1ビットの数値と、第0ビットの下位側に付加されて値0を採るビットとを用いて、ブースのアルゴリズムに従って演算を行ってもよく、図1でこの場合が示されている。
演算の結果が2のとき、信号生成部gj(1≦j≦m−1)は、部分積生成部Gjに被乗数Xを(2j+1)ビットだけ上位へとシフトさせる信号を乗数信号tjとして生成する。乗数信号tjが入力された部分積生成部Gjは、被乗数Xを(2j+1)ビットだけ上位へとシフトさせ、これを部分積Pjとして出力する。
演算の結果が1のとき、信号生成部gj(0≦j≦m−1)は、部分積生成部Gjに被乗数Xを2jビットだけ上位へとシフトさせる信号を乗数信号tjとして生成する。乗数信号tjが入力された部分積生成部Gjは、被乗数Xを2jビットだけ上位へとシフトさせ、これを部分積Pjとして出力する。
演算の結果が0のとき、信号生成部gj(0≦j≦m−1)は、部分積生成部Gjに部分積Pjとして0を出力させる信号を生成する。
演算の結果が−1のとき、信号生成部gj(0≦j≦m−1)は、部分積生成部Gjに被乗数Xを2jビットだけ上位へとシフトさせ、これを反転させる信号を乗数信号tjとして生成する。乗数信号tjが入力された部分積生成部Gjは、被乗数Xを2jビットだけ上位へとシフトさせて反転させ、これを部分積Pjとして出力する。
演算の結果が−2のとき、信号生成部gj(0≦j≦m−1)は、部分積生成部Gjに被乗数Xを(2j+1)ビットだけ上位へとシフトさせ、これを反転させる信号を乗数信号tjとして生成する。乗数信号tjが入力された部分積生成部Gjは、被乗数Xを(2j+1)ビットだけ上位へとシフトさせて反転させ、これを部分積Pjとして出力する。
演算の結果が2、1及び0のいずれかである場合には、乗数信号tj(0≦j≦m−1)の生成に並行して信号生成部gjは、第(2j+1)ビットを0とする信号を加算信号Sjとして生成する。この加算信号Sjが生成された場合には、部分積Pj+1は、第(2j+1)ビットが0とされて加算器102に入力される。
演算の結果が−1または−2である場合には、乗数信号tj(0≦j≦m−1)の生成に並行して信号生成部gjは、第(2j+1)ビットを1とする信号を加算信号Sjとして生成する。この加算信号Sjが生成された場合には、部分積Pj+1は、第(2j+1)ビットが1とされて、加算器102に入力される。
演算の結果の値がいずれの場合であっても、これらの内容は、部分積Pj+1が加算信号Sjを下位側に1ビット離して従えると把握できる。
乗数信号tm及び部分積Pmに関し、以下に具体的に説明する。
信号生成部gmは、付加ビットb2m及び第(2m−1)ビットb2m-1を用いて演算を行う。具体的には、付加ビットb2m及び第(2m−1)ビットb2m-1が値1,1または値0,0を採る場合には、信号生成部gmは、部分積生成部Gmに部分積Pmとして0を出力させる信号を生成する。
値0,1を採る場合には、信号生成部gmは、部分積生成部Gmに被乗数Xを2mビットだけ上位へとシフトさせる信号を乗数信号tmとして生成する。乗数信号tmが入力された部分積生成部Gmは、被乗数Xを2mビットだけ上位へとシフトさせ、これを部分積Pmとして出力する。
上述した乗算装置によれば、付加ビットb2m及び乗数の最上位ビット第(2m−1)ビットb2m-1に基づいて乗数信号tmが生成されるので、乗数が符号付きである場合と符号なしである場合のいずれであるかを選択するための論理回路が不要である。しかも部分積Pj(0≦j≦m)のうち部分積P0以外の部分積Pjは加算信号Sj-1を従えるので、加算信号Sj-1の総和を部分積Pjの生成とは別途に生成する必要がなく、加算器102にm+1個の部分積Pjを入力するだけで良い。よって、乗算装置の演算速度が高速化される。
図2は、乗数Yの範囲(22m>Y≧−22m-1)と付加ビットb2m及び第(2m−1)ビットb2m-1がそれぞれ採る値との関係を示している。値0,1は22m>Y≧22m-1の範囲に、値0,0は22m-1>Y≧0の範囲に、値1,1は0>Y≧−22m-1の範囲にそれぞれ対応する。
なお、図2では−22m-1>Y≧−22mの範囲についても示されており、この範囲には値1,0が対応する。しかし、付加ビットb2m及び乗数の最上位ビット第(2m−1)ビットb2m-1がそれぞれ値1,0を採る場合には、乗数Yの範囲を拡張できる一方、乗算装置の演算速度が高速化できない。
実施の形態2.
本実施の形態では、加算器102がワレス・ツリーに従って加算演算を行う場合が説明される。
本実施の形態では、加算器102がワレス・ツリーに従って加算演算を行う場合が説明される。
図3は、加算器102の加算演算で用いられるワレス・ツリーであって、m=8の場合を概念的に示す。加算器102には、9個の部分積Pj(0≦j≦8)が入力される。
ワレス・ツリーは、第1次加算器211〜213、第2次加算器221,222、第3次加算器231及び第4次加算器241で構成される。
第1次加算器乃至第4次加算器はいずれも3入力2出力の加算素子である。3入力2出力の加算素子には、例えばキャリー保存加算器(CSA)が採用でき、以下について同様である。
第1次加算器211には部分積P0〜P2、第1次加算器212には部分積P3〜P5、第1次加算器213には部分積P6〜P8がそれぞれ入力される。
第2次加算器221には、第1次加算器211の2出力の両方と、第2次加算器212の2出力の一方とが入力される。第2次加算器222には、第1次加算器212の2出力の他方と、第1次加算器213の2出力の両方とが入力される。
第3次加算器231には、第2次加算器221の2出力の両方と、第2次加算器222の2出力の一方とが入力される。
第4次加算器241には、第3次加算器231の2出力の両方と、第2次加算器222の2出力の他方とが入力される。
第4次加算器241の2出力は乗算結果Rとして、加算器102から出力される。
第1次加算器211〜213での加算演算は並行して行うことができ、これが図3では第1ステージとして示されている。同様に、第2次加算器221,222、第3次加算器231及び第4次加算器241での加算演算が、図3では第2ステージ乃至第4ステージとしてそれぞれ示されている。第1乃至第4ステージでの演算は、いずれの一の演算についても他の演算と並行して行うことができない。よって、m=8の場合には、ワレス・ツリーには4つのステージが必要とされる。
図3との比較のために、例えば10個の部分積Pj(0≦j≦9)が加算器102に入力される場合のワレス・ツリーを図4に概念的に示す。当該ワレス・ツリーは、第1次加算器211〜213、第2次加算器221,222、第3次加算器231、第4次加算器241及び第5次加算器251で構成される。第1次加算器乃至第5次加算器はいずれも3入力2出力の加算素子であり、第1次加算器乃至第4次加算器については、ツリー構造が図3で示されるものと同じである。
第5次加算器には、第4次加算器241の2出力の両方と、部分積P9とが入力される。第5次加算器251の2出力は乗算結果Rとして、加算器102から出力される。
図4では、第5次加算器251の加算演算が、第5ステージとして示されている。第5ステージは、第1乃至第4ステージでの演算と並行して行うことはできない。よって、10個の部分積Pj(0≦j≦9)が入力されるワレス・ツリーでは、5つのステージが必要とされる。
よって、加算器102に入力される部分積が9個の場合には、それが10個の場合に比べて、ワレス・ツリーで必要とされるステージ数を一つ少なくすることができる。これにより、加算器102での演算時間を短縮することができ、以って乗算装置での演算速度を高速化できる。
より一般的には、実施の形態1で説明した乗算装置によればm+1個の部分積Pj(0≦j≦m)が加算器102に入力され、加算器102はワレス・ツリーに従って部分積Pjの加算演算を行う。
特に、自然数mが式(1)を満たす場合、具体的にはm=8、32、128、256、320、512、2048、・・・の場合には、上述したと同様に、m+2個の部分積が加算器102に入力される場合に比べて、ステージ数を一つ少なくすることができる。ここで、Ceil[ ]は、[ ]内の値以上であって最小の整数を表す。また、符号kは整数を表す。
実施の形態3.
図5は、加算器102の加算演算に用いられるツリーであって、m=16の場合を概念的に示す。加算器102には、17個の部分積Pj(0≦j≦16)が入力される。
図5は、加算器102の加算演算に用いられるツリーであって、m=16の場合を概念的に示す。加算器102には、17個の部分積Pj(0≦j≦16)が入力される。
ツリーは、いずれも3入力2出力の加算素子である第1次加算器乃至第15次加算器301〜315で構成される。
第1次加算器301には部分積P0〜P2が入力される。第j次加算器30j(2≦j≦15)には、第i次加算器30i(i=j−1)の2出力の両方と、部分積Pj+1とが入力される。第15次加算器315の2出力は乗算結果Rとして、加算器102から出力される。
第1次加算器乃至第15次加算器301〜315での加算演算は、いずれの一の加算演算についても他の加算演算と並行して行うことができないので、ツリーには15個のステージが必要とされる。
図5との比較のために、例えば18個の部分積Pj(0≦j≦17)が加算器102に入力される場合のツリーを図6に概念的に示す。当該ツリーは、いずれも3入力2出力の加算素子である第1次加算器乃至第16次加算器301〜316で構成される。第1次加算器乃至第15次加算器301〜315については、ツリー構造が図5で示されるものと同じである。
第16次加算器316には、第15次加算器315の2出力の両方と、部分積P16とが入力される。第16次加算器316の2出力は乗算結果Rとして、加算器102から出力される。
第16次加算器316の加算演算は、第1次加算器乃至第15次加算器301〜315の加算演算と並行して行うことができないので、図6で示されるツリーには16個のステージが必要とされる。
よって、加算器102に入力される部分積が17個である場合には、それが18個である場合に比べて、ツリーで必要とされるステージ数を一つ少なくすることができる。
より一般的には、実施の形態1で説明した乗算装置によればm+1個の部分積Pj(0≦j≦m)が加算器102に入力され、加算器102はステージ数が(m−1)であるツリーに従って部分積Pjの加算演算を行う。このより、m+2個の部分積が加算器102に入力される場合に比べて、ステージ数を一つ少なくすることができる。
102 加算器、X 被乗数、Y 乗数、g0〜gm 信号生成部、G0〜Gm 部分積生成部、t0〜tm 乗数信号、S0〜Sm-1 加算信号、P0〜Pm-1 部分積。
Claims (5)
- 2mビット長(m;自然数)の乗数の最下位2ビットに対応する第0の加算信号及び第0の乗数信号を生成する第0の信号生成部と、
前記乗数の第(2j+1),2j,(2j−1)ビットに対応する第jの加算信号とともに第jの乗数信号を生成する第j(1≦j≦m−1の整数)の信号生成部と、
前記乗数の最上位ビット及び付加ビットに対応する第mの乗数信号を生成する第mの信号生成部と、
被乗数と前記第0乃至前記第mの前記乗数信号とを用いてそれぞれ第0乃至第mの部分積を生成する部分積生成部と、
前記第0の前記部分積と、前記第1乃至前記第mの前記乗算信号に基づいてビットがずれて、前記第0乃至前記第(m−1)の前記加算信号をそれぞれ下位側に1ビット離して従える前記第1乃至前記第mの前記部分積とを加算する加算器と
を備え、
前記付加ビットは、符号なしの前記乗数については値0を採り、符号付きの前記乗数については前記乗数の最上位ビットの値と同じ値を採る、乗算装置。 - 前記第0乃至前記第(m−1)の前記信号生成部は、ブースのアルゴリズムに従って前記第0乃至前記第(m−1)の前記加算信号及び前記第0乃至前記第(m−1)の前記乗数信号を生成する、請求項1記載の乗算装置。
- 前記加算器はワレス・ツリーに従って加算演算を行う、請求項1または請求項2記載の乗算装置。
- 前記加算器は、キャリー保存加算器を含む、請求項1乃至請求項3のいずれか一つに記載の乗算装置
- 前記自然数mは、これを2倍して1だけ加えたものを2で割った値以上で最小の整数が3の倍数となる、請求項1乃至請求項4のいずれか一つに記載の乗算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005118033A JP2006301685A (ja) | 2005-04-15 | 2005-04-15 | 乗算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005118033A JP2006301685A (ja) | 2005-04-15 | 2005-04-15 | 乗算装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006301685A true JP2006301685A (ja) | 2006-11-02 |
Family
ID=37469943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005118033A Pending JP2006301685A (ja) | 2005-04-15 | 2005-04-15 | 乗算装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006301685A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111897513A (zh) * | 2020-07-29 | 2020-11-06 | 上海芷锐电子科技有限公司 | 一种基于反向极性技术的乘法器及其代码生成方法 |
-
2005
- 2005-04-15 JP JP2005118033A patent/JP2006301685A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111897513A (zh) * | 2020-07-29 | 2020-11-06 | 上海芷锐电子科技有限公司 | 一种基于反向极性技术的乘法器及其代码生成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Vun et al. | A new RNS based DA approach for inner product computation | |
JP4790791B2 (ja) | 乗算器、デジタルフィルタ、信号処理装置、合成装置、合成プログラム、および合成プログラム記録媒体 | |
EP1672481B1 (en) | Division and square root arithmetic unit | |
US7308471B2 (en) | Method and device for performing operations involving multiplication of selectively partitioned binary inputs using booth encoding | |
WO1999038088A1 (fr) | Procede et dispositif pour operation arithmetique | |
KR101560340B1 (ko) | 포화가 적용된 정수 곱셈 연산 및 곱셈-덧셈 연산 | |
JPH0447849B2 (ja) | ||
Low et al. | A new approach to the design of efficient residue generators for arbitrary moduli | |
US6018758A (en) | Squarer with diagonal row merged into folded partial product array | |
US20140358979A1 (en) | GENERATING A FAST 3x MULTIPLAND TERM FOR RADIX-8 BOOTH MULTIPLICATION | |
JPWO2006022089A1 (ja) | 乗算装置 | |
JP6734938B2 (ja) | ニューラルネットワーク回路 | |
US5870322A (en) | Multiplier to selectively perform unsigned magnitude multiplication or signed magnitude multiplication | |
JP2006301685A (ja) | 乗算装置 | |
JPH05158659A (ja) | 乗算器 | |
JPH08314697A (ja) | 符号付き/符号なし数兼用乗算器 | |
US7043517B2 (en) | Multiply accumulator for two N bit multipliers and an M bit addend | |
JP4290203B2 (ja) | リダクションアレイの装置および方法 | |
CN116991359B (zh) | Booth乘法器、混合Booth乘法器及运算方法 | |
JPH01251133A (ja) | 乗算回路及び方法 | |
JP2765516B2 (ja) | 積和演算器 | |
JP2606339B2 (ja) | 乗算器 | |
Singh et al. | Design and Simulation of Diminished-One Modulo 2n+ 1 Adder Using Circular Carry Selection | |
Farshidi et al. | A Novel Multiple Valued Logic OHRNS Adder Circuit for Modulo rn-1 | |
Vergos et al. | Efficient modulo 2 n+ 1 multi-operand adders |