JPH1049347A - 乗算器 - Google Patents

乗算器

Info

Publication number
JPH1049347A
JPH1049347A JP8214984A JP21498496A JPH1049347A JP H1049347 A JPH1049347 A JP H1049347A JP 8214984 A JP8214984 A JP 8214984A JP 21498496 A JP21498496 A JP 21498496A JP H1049347 A JPH1049347 A JP H1049347A
Authority
JP
Japan
Prior art keywords
multiplier
multiplicand
partial product
division
divided
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
Application number
JP8214984A
Other languages
English (en)
Inventor
Kenichi Ogasawara
健一 小笠原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New Japan Radio Co Ltd
Original Assignee
New Japan Radio Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by New Japan Radio Co Ltd filed Critical New Japan Radio Co Ltd
Priority to JP8214984A priority Critical patent/JPH1049347A/ja
Publication of JPH1049347A publication Critical patent/JPH1049347A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 乗算の高速化を図る。 【解決手段】 乗数をNビット単位でLSB側から順に
第1〜第Nの分割乗数に分けて各分割乗数と被乗数との
部分積を生成し、該各部分積をシフト累加算して乗算結
果を得る。このとき、前記分割乗数がすべて0の場合
に、その分割乗数と被乗数との部分積生成を行わず、当
該すべて0の分割乗数よりもLSB側の分割乗数と被乗
数との部分積をNビットだけ右シフトする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、デジタル乗算器に
係り、特に高速乗算が実行できるようにした乗算器に関
するものである。
【0002】
【従来の技術】
[第1の従来の技術]例えば、デジタルフィルタでは、
入力デジタルデータに対してフィルタ係数を乗算する演
算処理が行われる。このような演算では、通常では並列
乗算器を使用していたが、その処理サイクルを削減し高
速処理するために、例えば、CSD(Canonic Signed D
igit)方式の乗算手法が採られる場合がある。この演算
手順について説明する。
【0003】固定小数点乗算の実行においては、n桁の
乗数X(=Xn- 1 、Xn- 2 、・・・・・、X0 )とn桁
の被乗数Y(=Yn- 1 、Yn- 2 、・・・・・、Y0 )を
乗じて2n桁の積P(=P2n-1、P2n-2、・・・・・、
0 )を得るとき、基本的には、以下に示すように桁移
動を繰り返しながら、乗数Xの桁が1のときに被乗数Y
を部分積に次々と加算することより実現する。 P(0) =X・Y0(1) =X・Y1 +2-1・P(0) (2) =X・Y2 +2-1・P(1) ・ ・ ・ P(n-1) =X・Yn- 1 +2-1・P(n-2) ・・・・(1)
【0004】ここで、P(i) は部分積、2-1・P(i)
部分積P(i) の1桁分の右シフトを表す。このとき、乗
数Xに0が連続する場合には、加算の必要がなく、桁移
動だけでよい。また、乗数Xに1が連続する場合は、 2i+k −2i =2i+k- 1 +2i+k- 2 +・・・・+2i+ 1 +2i ・・・・(2) であるので、k回の加算と桁移動の代わりに、1回の減
算、k回の桁移動、および1回の加算によって、同一の
結果が得られる。このように、乗数を走査して連続する
1又は0を検出することにより加算の回数を削減し、乗
算速度を高くすることができる。
【0005】デジタルフィルタの場合は、乗数Xは係数
であり一定であるので、これを予め乗数Xの「符号と桁
移動数(右シフト数)」で表現する。以下にその例を示
す。式(2)において、i=−3、k=3としたとき、 2-1+2-2+2-3=0.875 (0.111)(BIN) ・・・・(3) 20 −2-3=0.875 (1.001)(CSD) ・・・・(4) 式(4)をCSDで表現すると、 (+0、−3) となる。「+0」の意味は、「加算でシフトなし」、
「−3」の意味は「減算で右シフト数3」である。
【0006】次に、少し複雑な例の変換手順を説明す
る。 0.001111000010011(BIN) =2-3+2-4+2-5+2-6+2-1 1 +2-1 4 +2-1 5 =0.23495483 ・・・・(5) ↓ ↓ ↓↓ ↓ ↓ 0.010001000110101 =2-2−2-6+2-1 0 −2-1 1 + ( + − +− + −) +2-1 3 −2-1 5 =0.234954834 ・・・・(6) 式(5)に対して、0が連続するものは桁移動と加算
で、1が連続するものは桁移動と減算で変換したものが
式(6)である。この式(6)は、CSDで表現する
と、次のようになる。 (+2、−6、+10、−11、+13、−15) ・・・(6’) このように、並列乗算器による乗算では式(5)にある
ように7回の加算が必要となるのに対して、CSD方式
による乗算の場合は式(6)にあるように6回の加算で
済む。このCSD方式では、0又は1が連続するほど、
加算の回数が少なくなる。
【0007】上記したCSD方式の技術を用いて乗数を
CSD変換し、乗算を行う場合の従来の構成を図4に示
した。51はCSD変換した乗数Xを記憶させたRO
M、52は被乗数Yを2の補数に変換する2の補数器、
53は乗数Xの符号が正の場合は入力する被乗数Yをそ
のまま選択し、負の場合は被乗数Yを2の補数器52で
2の補数に変換したものを選択するセレクタ、54は被
乗数Yの桁移動の処理を行うバレルシフタ、55はバレ
ルシフタ54の出力値の加算又は減算を行い結果を累加
算する加減算器、56は加減算結果を記憶するためのレ
ジスタである。
【0008】この構成では、レジスタ56の内容を初期
化(零にする)してから、N個の「符号と桁移動数」に
CSD変換された乗数Xの1つにより、バレルシフタ5
4の桁移動数を切り替え、被乗数Yをバレルシフタ54
で桁移動処理する。その結果を加減算器55にて加減算
する。以上のシフトと累加減算の処理をN回繰り返し累
加算を行い乗算を行なう。
【0009】例えば、乗数XをCSD変換された式
(6)、式(6’)に示す値とする例では、その乗数X
のMSBが0であるので符号が正であり、セレクタ53
は被乗数Yをそのまま取り込む。被乗数Yに対して、ま
ず「+2-2」(=+2)の処理を行うので、バレルシフ
タ54において被乗数Yを2桁だけ右シフトし、加減算
器55に加算する。次に「−2-6」(=−6)の処理を
行うので、バレルシフタ54において被乗数Yを6桁だ
け右シフトし、加減算器55でそれまでの累算値にこれ
を減算する。以下、同様に「+2-1 0 」(+10)、
「−2-1 1 」(=−11)、「+2-1 3 」(=+1
3)、「−2-1 5 」(−15)の処理を行なうと、加減
算器55にその結果が累積され、レジスタ56からその
結果が出力される。このときのバレルシフタ54、加減
算器55、レジスタ56の処理回数N=6である。
【0010】[第2の従来の技術]第2の従来技術とし
て、UPTVD(Upsampling-Periodically-Time-Varyi
ng-Downsampling )方式がある。これは、次に示す演算
を行なうものである。乗算をN×N回の加算に分割する
方式であって、次の式(7)で表される。 P=Σ(j=0ーN-1) Σ(i=0ーN-1) 2-Nj- 1 ・2-j・X(j,i) ・Y =2-1Σ(j=0ーN-1) Σ(i=0ーN-1) 2-Nj ・2-j・X(j,i) ・Y ・・・・(7) P=2-1Σ(j=0ーN-1) Σ(i=0ーN-1) P(j,i) ・・・・(8) P(j,i) =2-Nj ・2-j・X(j,i) ・Y ・・・・(9) Σ(j=0ーN-1) は後段の式にjに0からN−1までを適用
して累算すること、Σ(i=0ーN-1) は同様にiに0からN
−1までを適用して累算することを表わす。
【0011】この方式では、乗数Xは「−1、0、+
1」の3値で表現できる。以下、詳しく説明する。説明
を簡略化するために、次の条件とする。 乗数 X=1110111000=−0.140625 被乗数 Y=0001 = 0.125 分割数 N=3 この乗算の結果は、 乗算結果 P= -0.017578125 である。
【0012】まず、乗数X(j,i) の変換について説明す
る。最初に、乗数Xの絶対値を算出すると、この値は、
「0001001000」である。そこで、この絶対値
の先頭(MSB)の符号ビットを除いた9ビットのMS
B側からLSBにかけて、X(0,0) 、X(0,1) 、X(0,
2) 、X(1,0) 、X(1,1) 、X(1,2) 、X(2,0) 、X(2,
1) 、X(2,2) のように、j=0,1,2、i=0,
1,2と3分割すると、図5に示すように、X(0,2) =
X(1,2) =1、その他は0となる。そして、乗数X(j,
i) に符号(元の乗数XはMSBが1であり負)を乗ず
ると、図6に示すようになる。この図6はマトリクス表
示したものである。X(j,i)=X(0,2) =X(1,2) =−
1、その他のX(j,i) =0である。
【0013】次に、式(9)のP(j,i) をそれぞれ計算
すると、以下のようになる。 j=0 、i=2 → P(0,2) =2-0・2-2・-1・0.125 = -0.03125 ・・・・・(10) j=1 、i=2 → P(1,2) =2-3・2-2・-1・0.125 = -0.00390625 ・・・・・(11) その他 = 0 そこで、式(8)に式(10)、(11)を代入する
と、 P= 2-1(-0.03125-0.00390625)= -0.017578125 となり、前記したものと同じ乗算結果が得られる。
【0014】この方式による乗算は、図7に示した構成
の乗算器により実現できる。これはN=3の場合の例で
ある。61は上記UPTVD方式による変換を行った乗
数Xを格納したROM、62は被乗数Yの2の補数の処
理を行う2の補数器、63は乗数Xの符号が正の場合に
被乗数Yを選択し、負の場合に2の補数器62の出力を
選択するセレクタ、64、65は被乗数Yを1桁右シフ
トする2-1スケーラ、66〜68は加算するか否かを選
択するセレクタ、69〜71は加算器、72は加算器7
1の加算結果を一時記憶するレジスタ、73は3桁右シ
フトする2-3スケーラ、74は加算器71の加算結果を
一時記憶するレジスタ、75は1桁右シフトする2-1
ケーラである。
【0015】この乗算器では、まずレジスタ72の内容
を初期化して零とする。次にROM61から出力される
符号によりセレクタ63を切り換え、乗数Xが正のとき
は被乗数をそのまま、負のときは2の補数器62の出力
を選択する。また、N分割した乗数の上位N個の値に応
じてセレクタ66〜68を切り替える。被乗数Yをセレ
クタ63、2-1スケーラ64、65の入力に与え、それ
らの出力を加算器69〜71で加算し、その結果に対し
てレジスタ72の値を2-3スケーラ72でスケーリング
した値を加算する。レジスタ72の初期化を除く以上の
動作を合計N回だけROM71のアドレスを+1しなが
ら実行する。N回行った後にその結果をレジスタ74に
一時記憶し、その出力を2-1スケーラ75でスケーリン
グして出力することで、乗算結果が得られる。
【0016】前記した例では、図6に示したiの数列和
を同時に処理し、jの数列和を時分割処理することによ
り、1回の乗算を3(=N)クロックで実現する。ま
ず、ROMアドレス0(j=0)のとき、i=0,0,
−1であるので、乗数Xの符号は負でありセレクタ63
はB側に切り替わり被乗数Yを2の補数器62により2
の補数変換した値を選択して出力する。また、セレクタ
66、67はA側に切り替わり0を選択し加算器69は
加算処理しない。しかし、セレクタ68が2-1スケーラ
65の出力を選択するので、加算器70には被乗数Yの
2の補数を2-1スケーラ64、65でスケーリングした
値が得られる。次にROM71のアドレスが+1する
と、ROMアドレス1(j=1)となるが、このとき
も、i=0,0,−1であるので、同様な処理が行われ
る。さらに、ROM71のアドレスが+1してROMア
ドレス2(j=2)のときは、i=0,0,0であるの
で、加算処理は行われない。以上のようにN=3回で処
理が行われる。加算器71ではROMアドレス0のとき
の処理データを2-3スケーラ73で3桁右シフトした値
にROMアドレス1のときの処理データが加算される。
このデータがレジスタ74に一時的に格納され、2-1
ケーラ75で1桁右シフトされて出力データとなる。
【0017】
【発明が解決しようとする課題】ところが、上記第2の
従来の技術の乗算器では、これを1周期256クロック
で動作するデジタルフィルタに適用した場合、例えば、
N=4、係数17ビットの演算が64回(=256/
4)しかできず、第1の従来技術の乗算器でも同程度の
演算しかできなかった。これ以上の高速乗算を行うため
には、面積の大きい並列乗算器を使用しなければならな
いという問題があった。
【0018】本発明の目的は、上記した問題を解消し
て、ハードウエアの面積の増加を少なく抑え、かつ一定
クロック内での乗算回数を増加させる、つまり高速演算
できるようにしたことができるようにした乗算器を提供
することにある。
【0019】
【課題を解決するための手段】第1の発明は、乗数をN
ビット単位でLSB側から順に第1〜第Nの分割乗数に
分け、前記第1の分割乗数と被乗数とを乗算して第1の
部分積を生成し、該第1の部分積をN桁右シフトした値
に対して前記第2の分割乗数と前記被乗数とを乗算して
生成した第2の部分積を加算して第1の累算値を生成
し、該第1の累算値をN桁右シフトした値に対して前記
第3の分割乗数と前記被乗数とを乗算して生成した第3
の部分積を加算して第2の累算値を生成し、以後これを
第N−1の累算値まで繰り返し、該第N−1の累算値に
基づき前記乗数と前記被乗数との乗算結果を生成する乗
算器において、前記第1〜第Nの分割乗数のうち全ての
ビットが0の1又は2以上の分割乗数と前記被乗数との
部分積生成を省略し、該部分積生成を省略した分割乗数
よりもLSB側の分割乗数と前記被乗数との部分積によ
り累算値を生成するとき、前記部分積生成を省略した分
割乗数の合計ビット分だけ右シフトさせることを特徴と
する乗算器として構成した。
【0020】第2の発明は、第1の発明において、前記
第1〜第Nの分割乗数のうち、前記部分積生成を省略し
た分割乗数よりもLSB側の分割乗数に右シフトデータ
を付加して、前記部分積生成を省略した分割乗数を除く
他の分割乗数をメモリに格納し、該メモリよりLSB側
の分割乗数から順に読み出して前記被乗数との乗算によ
る部分積生成、前記部分積生成を省略した分割乗数のビ
ット分の右シフトを行うことを特徴とする乗算器として
構成した。
【0021】第3の発明は、前記第1又は第2の発明に
おいて、前記部分積生成を省略した分割乗数を除く他の
分割乗数に極性を示すビットを付加し、該極性が負を表
すとき前記被乗数を2の補数に変換し、該変換した2の
補数とで部分積生成を行うことを特徴とする乗算器とし
て構成した。
【0022】
【発明の実施の形態】
[第1の実施の形態]図1は本発明の第1の実施の形態
の乗算器の構成を示すブロック図である。1は乗数Xを
分割した変換データを記憶させたROM、2は被乗数Y
を2の補数に変換する2の補数器、3は乗数の符号に応
じて被乗数Y又は2の補数器2の出力を選択するセレク
タ、4〜6は入力データを1桁右シフトする2-1スケー
ラ、7〜10はROM1に格納した乗数Xの変換データ
で制御されるセレクタ、11〜13はセレクタ7〜10
の出力を加算する加算器、14は入力するデータの右シ
フト量をROM1に格納した乗数Xの変換データに基づ
いて制御するバレルシフタ、15は加算器、16はその
加算器15の出力を一時記憶するレジスタ、17はデー
タを4桁右シフトする2-4スケーラ、18は加算器15
の出力を一時記憶するレジスタ、19はレジスタ18の
出力データを1桁右シフトする2-1スケーラである。前
記した2-1スケーラ4〜6、セレクタ7〜10、加算器
11〜13は部分積生成を行い、加算器15、レジスタ
16、2-4スケーラ17はその部分積をシフトして累加
算する。
【0023】さて、これを動作させるには、乗数Xを、
複数の「符号、分割乗数データ、桁シフトデータ」に変
換した変換データとして、ROM1に記憶させておく。
この場合のROM1に格納される変換データのビット数
は7ビットであり、符号は1ビット(正=0、負=
1)、分割乗数データは4ビット、桁シフトデータは2
ビットである。以下では、次のように乗数X、被乗数Y
を17ビットとして説明する。なお、「/」は符号や4
ビット区切りを示すものである。 乗数Xa =0/1101/1101/0000/1111(正の乗数) 乗数Xb =1/1010/1111/0000/0000(負の乗数) 被乗数Y=0/0000/1100/0000/0000(正の被乗数)
【0024】まず、正の乗数Xa は次のように変換して
ROM1に記憶させる。先頭ビット(MSB)は符号
(0=正、1=負)、中の4ビットは乗数データであ
る。最後の2ビットはバレルシフタ14を制御する桁シ
フトデータで、「00」→シフトなし、「01」→4桁
右シフト、「10」→8桁右シフト移動、「11」→1
2桁右シフトである。 このように、乗数Xa についての変換データは、先頭ビ
ット(符号)の次の第2〜第5ビットと、第6〜第9ビ
ットの「1101」はシフトなしとし、第10〜第13
ビットの「0000」についてはこれを省略し、その後
の第14〜第17ビットの「1111」は4桁右シフト
のデータ「01」と組み合せている。すなわち、第10
〜第13ビットの「0000」にかかる部分積生成の演
算が省略できる。なお、ROM1には、そのアドレス0
〜2に、乗数Xa のLSB側の分割乗数データから順に
格納している。次に負の乗数Xb は次のように変換して
ROM1に記憶させる。 このように負の乗数Xb については、MSB側から第1
0〜第13ビットと、第14〜第17ビットの「000
0」を省略している。すなわち、第10〜第13ビッ
ト、第14〜第17ビットの「0000」にかかる部分
積生成の演算が省略できる。
【0025】乗算処理は次のように行われる。まず、レ
ジスタ16、18を初期化し、ROM1を「アドレス
0」に設定する。この「アドレス0」の変換データはM
SBが「0」であるのでセレクタ3がA側に切り替えら
れて被乗数Yがそのまま選択され、またその変換データ
の分割乗数が「1111」なので、セレクタ7〜10は
すべてB側に切り替えられ、セレタク3、2-1スケーラ
4〜6の出力のすべてが加算器11〜13で加算され
て、その分割乗数「1111」と乗数Yとの部分積が形
成される。すなわち、まず、セレクタ7の出力は、被乗
数Yそのままの、 0/0000/1100/0000/0000/000
0/0000 セレクタ8の出力は、被乗数Yを1桁右シフトした、 0/0000/0110/0000/0000/000
0/0000 セレクタ9の出力は、被乗数Yを2桁右シフトした、 0/0000/0011/0000/0000/000
0/0000 セレクタ10の出力は、被乗数Yを3桁右シフトした 0/0000/0001/1000/0000/000
0/0000 である(なお、後段に4ビット+4ビットを追加してい
るが後のシフトを考慮してのものである)ので、加算器
13の出力(部分積)はこれらの全加算値、 0/0001/0110/1000/0000/000
0/0000 となる。次に、ここでは「アドレス0」の変換データの
LSB側の2ビットが「01」であるので、バレルシフ
タ14では、前記加算器13で生成した部分積データを
4桁右方向にシフトさるから、その出力は、 0/0000/0001/0110/1000/000
0/0000 となる。そして加算器15の出力は、レジスタ16の内
容が0であるため、バレルシフタ14の出力値と同じに
なる。このデータをレジスタ16に取り込む。
【0026】次にROM1のアドレスを+1して「アド
レス1」にする。この「アドレス1」の変換データはM
SBが「0」であるのでセレクタ3がA側に切り替えら
れて被乗数Yがそのまま選択され、またその変換データ
の分割乗数が「1101」なので、セレクタ7、8、1
0はB側に切り替えられ、セレクタ9はA側に切り替え
られる。セレタク3、2-1スケーラ4、6の出力が加算
器11〜13で加算される。なお、2-1スケーラ5の出
力は加算されない。上記と同様にして、加算器13の出
力(部分積)は、 0/0000/1100/0000/0000/0000/0000 +0/0000/0110/0000/0000/0000/0000 +0/0000/0000/0000/0000/0000/0000 +0/0000/0001/1000/0000/0000/0000 =0/0001/0011/1000/0000/0000/0000 となる。データの3段目はセレクタ9の出力であるがA
側を選択したため、オール0である。次に、バレルシフ
タ14ではシフト量が0であるので、その出力は加算器
13の出力と同じとなる。一方、レジスタ16には前回
(ROMアドレス0の処理時)のバレルシフタ14の出
力データ 0/0000/0001/0110/1000/000
0/0000 が記憶されており、これを2-4スケーラ17を通過させ
ると4桁右シフトされるので、その2-4スケーラ17の
出力は、 0/0000/0000/0001/0110/100
0/0000 となり、前記バレルシフタ14の出力と次のように加算
される。 0/0001/0011/1000/0000/0000/0000 +0/0000/0000/0001/0110/1000/0000 =0/0001/0011/1001/0110/1000/0000 このデータはレジスタ16に取り込まれる。
【0027】次に、ROM1のアドレスを+1して、
「アドレス2」にする。この「アドレス2」の変換デー
タは前記した「アドレス1」の変換データと全く同じで
あるので、被乗数Yに対して同じ処理が行われて同じ部
分積が生成する。次に、バレルシフタ14の出力は、 0/0001/0011/1000/0000/000
0/0000 となり、このときレジスタ16に記憶されているデータ
は、前述した 0/0001/0011/1001/0110/100
0/0000 であるので、2-4スケーラ17でこれを4桁右シフトし
たデータと加算器15で加算すると、 0/0001/0011/1000/0000/0000/0000 +0/0000/0001/0011/1001/0110/1000 =0/0001/0100/1011/1001/0110/1000 となり、前記ROM1のアドレス0〜2の変換データに
基づき生成した部分積をバレルシフタ14や2-4スケー
ラ17でシフトし累加算した値がこの加算器15に得ら
れる。
【0028】以上で1つの正の乗数Xaについて被乗数
Yとの乗算の演算が完了したので、レジスタ18にこれ
を取り込む。次の2-1スケーラ19で1桁シフトした
値、 0/0000/1010/0101/1100/101
1/01000 が、乗数Xaと被乗数Yの乗算結果P=Xa・Yとな
る。実数で検算すると、 乗数Xa=0/1101/1101/0000/1111= 0.8635101318 被乗数Y=0/0000/1100/0000/0000= 0.046875 乗算結果P=Xa・Y= 0.04047703743 一方、本実施の形態の演算結果は、 0/0000/1010/0101/1100/101
1/01000= 0.04047703743 となり、実数の乗算結果と一致する。
【0029】続けて、負の乗数Xb と被乗数Yの乗算に
ついて説明する。レジスタ16、18を初期化し、RO
M1のアドレスを+1して「アドレス3」にする。この
「アドレス3」に記憶された変換データは、 1/1111/00 であり、MSBが「1」であるのでセレクタ3がB側に
切り替えられて被乗数Yの2の補数が選択され、またこ
の変換データは分割乗数が「1111」なのでセレクタ
7〜10はB側に切り替えられ、セレタク3、2-1スケ
ーラ4〜6の出力のすべてが加算器11〜13で加算さ
れるので、加算器13に得られる部分積のデータは、 となる。バレルシフタ14では桁移動が行われないの
で、その出力は加算器13の出力と同じである。そして
加算器15の出力は、レジスタ16の内容が0であるた
め、バレルシフタ14の出力値と同じになる。このデー
タをレジスタ16に取り込む。
【0030】次にROM1のアドレスを+1して「アド
レス4」にする。この「アドレス4」の変換データは、 1/1010/00 であり、MSBが「1」であるのでセレクタ3がB側に
切り替えられて被乗数Yの2の補数が選択され、またこ
の変換データの分割乗数が「1010」であるのでセレ
クタ7、9がB側に切り替えられ、セレクタ8、10が
A側に切り替えられる。よって、セレタク3、2-1スケ
ーラ5の出力のみが加算器11〜13で加算される。よ
って、加算器13に出力する部分積のデータは、 となる。このデータは、バレルシフタ14ではシフトさ
れない。また、レジスタ16には前記した、 1/1110/1001/1000/0000 が記憶され、これが2-4シフタ17で4桁右シフトする
と、 1/1111/1110/1001/1000 となり、これが加算器15に加わるので、この加算器1
5の出力データは、 となる。以上で乗数Xb と被乗数Yとの乗算演算が終了
したので、レジスタ18にこのデータを取り込む。最終
出力データは、2-1スケーラ19を通った値、 1/1111/0111/1100/1100 が乗数Xb と被乗数Yの乗算結果P=Xb ・Yとなる。
実数で検算すると、 乗数Xb =1/1010/1111/0000/0000= -0.68359375 被乗数Y=0/0000/1100/0000/0000= 0.046875 乗算結果P=Xb ・Y= -0.032043457 となる。一方、本実施の形態の演算結果は、 1/1111/0111/1100/1100 = -0.032043457 となり、上記実数の乗算結果と一致する。
【0031】[その他の実施の形態]図2は別の実施の
形態の乗算器の構成を示すブロック図である。図1に示
したものとは、2-4スケーラ17がなくなっているが、
ここでは加算器15のレジスタ16からの入力側に2-4
スケーラの機能を付加させている。図3はさらに別の実
施の形態を示す図である。ここでは、バレルシフタ1
4”をレジスタ16と加算器15との間に設け、加算器
15で累算した結果に対して桁シフトを行うようにして
いる。このときは、バレルシフタ14”の制御を1タイ
ミング遅れた時点で行う。
【0032】
【発明の効果】以上から本発明によれば、分割乗数がす
べて0の場合に、その分割乗数と被乗数との部分積生成
を行わないので、その分だけ演算回数が削減でき、乗算
の高速化を図ることができる。すなわち、一定のクロッ
ク数で演算できる乗算回数を増大させることができる。
【図面の簡単な説明】
【図1】 本発明の第1の実施の形態の乗算器の構成を
示す機能ブロック図である。
【図2】 本発明の第2の実施の形態の乗算器の構成を
示す機能ブロック図である。
【図3】 本発明の第3の実施の形態の乗算器の構成を
示す機能ブロック図である。
【図4】 従来のCSD方式の乗算器の構成を示す機能
ブロック図である。
【図5】 従来のUPTVD方式の乗算の説明のための
乗数データの説明図である。
【図6】 従来のUPTVD方式の乗算の説明のための
乗数の変換データの説明図ででる。
【図7】 従来のUPTVD方式の乗算器の構成を示す
機能ブロック図である。
【符号の説明】
1:乗数Xの変換データを格納するROM、2:被乗数
Yを2の補数に変換する2の補数器、3:変換データの
符号により制御されるセレクタ、4〜6:被乗数のデー
タを1桁右シフトする2-1スケーラ、7〜10:変換デ
ータの変換乗数により制御されるセレクタ、11〜1
3:部分積を生成するための加算器、14、14’、1
4”:省略した変換乗数に対応して部分積の桁をシフト
するバレルシフタ、15:部分積のシフト累算値を生成
する加算器、16:累算値を一時記憶するレジスタ、1
7:累算値を4桁右シフトする2-4スケーラ、18:累
算値を一時記憶するレジスタ、19:2-1スケーラ。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】乗数をNビット単位でLSB側から順に第
    1〜第Nの分割乗数に分け、前記第1の分割乗数と被乗
    数とを乗算して第1の部分積を生成し、該第1の部分積
    をN桁右シフトした値に対して前記第2の分割乗数と前
    記被乗数とを乗算して生成した第2の部分積を加算して
    第1の累算値を生成し、該第1の累算値をN桁右シフト
    した値に対して前記第3の分割乗数と前記被乗数とを乗
    算して生成した第3の部分積を加算して第2の累算値を
    生成し、以後これを第N−1の累算値まで繰り返し、該
    第N−1の累算値に基づき前記乗数と前記被乗数との乗
    算結果を生成する乗算器において、 前記第1〜第Nの分割乗数のうち全てのビットが0の1
    又は2以上の分割乗数と前記被乗数との部分積生成を省
    略し、該部分積生成を省略した分割乗数よりもLSB側
    の分割乗数と前記被乗数との部分積により累算値を生成
    するとき、前記部分積生成を省略した分割乗数の合計ビ
    ット分だけ右シフトさせることを特徴とする乗算器。
  2. 【請求項2】前記第1〜第Nの分割乗数のうち、前記部
    分積生成を省略した分割乗数よりもLSB側の分割乗数
    に右シフトデータを付加して、前記部分積生成を省略し
    た分割乗数を除く他の分割乗数をメモリに格納し、該メ
    モリよりLSB側の分割乗数から順に読み出して前記被
    乗数との乗算による部分積生成、前記部分積生成を省略
    した分割乗数のビット分の右シフトを行うことを特徴と
    する請求項1に記載の乗算器。
  3. 【請求項3】前記部分積生成を省略した分割乗数を除く
    他の分割乗数に極性を示すビットを付加し、該極性が負
    を表すとき前記被乗数を2の補数に変換し、該変換した
    2の補数とで部分積生成を行うことを特徴とする請求項
    1又は2に記載の乗算器。
JP8214984A 1996-07-29 1996-07-29 乗算器 Pending JPH1049347A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8214984A JPH1049347A (ja) 1996-07-29 1996-07-29 乗算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8214984A JPH1049347A (ja) 1996-07-29 1996-07-29 乗算器

Publications (1)

Publication Number Publication Date
JPH1049347A true JPH1049347A (ja) 1998-02-20

Family

ID=16664786

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8214984A Pending JPH1049347A (ja) 1996-07-29 1996-07-29 乗算器

Country Status (1)

Country Link
JP (1) JPH1049347A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999067704A1 (fr) * 1998-06-23 1999-12-29 Wataru Ogata Systeme de division utilisant une memoire de faible capacite
JP2008535077A (ja) * 2005-03-31 2008-08-28 エヌエックスピー ビー ヴィ カノニカル形式で署名された数字の乗算器
CN110647307A (zh) * 2019-09-24 2020-01-03 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999067704A1 (fr) * 1998-06-23 1999-12-29 Wataru Ogata Systeme de division utilisant une memoire de faible capacite
JP2008535077A (ja) * 2005-03-31 2008-08-28 エヌエックスピー ビー ヴィ カノニカル形式で署名された数字の乗算器
US8046401B2 (en) 2005-03-31 2011-10-25 Nxp B.V. Canonical signed digit multiplier
CN110647307A (zh) * 2019-09-24 2020-01-03 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备
CN110647307B (zh) * 2019-09-24 2024-04-09 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备

Similar Documents

Publication Publication Date Title
JPS6347874A (ja) 算術演算装置
JPH0612229A (ja) 乗累算回路
EP0356153B1 (en) Radix-2**n divider method and apparatus using overlapped quotient bit selection and concurrent quotient rounding and correction
JPH0831025B2 (ja) 乗算回路
JP2585649B2 (ja) 除算回路
US4374427A (en) Divisor transform type high-speed electronic division system
EP1573510B1 (en) Multiplier with look up tables
JP3660075B2 (ja) 除算装置
JPH1195982A (ja) 演算処理回路及び演算処理方法並びに演算処理システム
JPH1049347A (ja) 乗算器
JPS58137045A (ja) 並列乗算器
JPS58129653A (ja) 乗算方式
JP3252954B2 (ja) 乗算方法および乗算回路
RU2797164C1 (ru) Конвейерный умножитель по модулю
JP2737933B2 (ja) 除算装置
RU2814657C9 (ru) Конвейерный накапливающий сумматор по модулю
JP2803442B2 (ja) 開平装置
JPH0831024B2 (ja) 演算プロセッサ
JPH0869372A (ja) 2進乗算器
JPH0368415B2 (ja)
JP2777265B2 (ja) 高基数開平演算装置
JP3396818B2 (ja) Dct演算回路及びidct演算回路
JP2812365B2 (ja) 乗算回路
JPH11134174A (ja) 演算回路
JPS6259828B2 (ja)

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040511