JPH1011267A - 乗算器 - Google Patents

乗算器

Info

Publication number
JPH1011267A
JPH1011267A JP8161434A JP16143496A JPH1011267A JP H1011267 A JPH1011267 A JP H1011267A JP 8161434 A JP8161434 A JP 8161434A JP 16143496 A JP16143496 A JP 16143496A JP H1011267 A JPH1011267 A JP H1011267A
Authority
JP
Japan
Prior art keywords
multiplicand
multiplier
partial product
output
numerical data
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
JP8161434A
Other languages
English (en)
Inventor
Yoji Kanie
洋二 蟹江
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.)
Sharp Corp
Original Assignee
Sharp Corp
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 Sharp Corp filed Critical Sharp Corp
Priority to JP8161434A priority Critical patent/JPH1011267A/ja
Publication of JPH1011267A publication Critical patent/JPH1011267A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 ディジタルの被乗数Xと乗数Yの乗算を行う
乗算器において、回路規模が簡単で消費電力の少ない乗
算器を提供する。 【解決手段】 2の補数表現が用いられたディジタルの
被乗数Xと乗数Yから積X・Yを出力するため、乗数Y
の2iの位の値をyi(ただし、i=0、1・・・3n−
1)で表す。y-1を0と定義する。 Z3i=−4y3i+2+2y3i+1+y3i+y3i-1 より、各i(ただし、i=0、1・・・n−1)につい
てZ3iを求める。Z3i及び被乗数Xより、部分積X・Z
3iを求める。更に、部分積X・Z3iを23i倍して、i
(ただし、i=0、1・・・n−1)について和をと
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はディジタル信号処理
に用いられる乗算器に関し、特に2の補数表現を用いた
ディジタルの被乗数Xと乗数Yの積X・Yをディジタル
出力する乗算器に関する。
【0002】
【従来の技術】2進数で数値データが表される場合、そ
の各桁は0か1である。例えば、被乗数Xと、桁数が2
nである乗数Yの乗算は、乗数Yの各桁で2n個の部分
積を作成し、各部分積をシフトしながら加算することに
帰着される。
【0003】部分積の個数を減らして加算回数を減ら
し、回路を簡単化する工夫として、従来、Boothの
アルゴリズムが知られていた。Boothのアルゴリズ
ムは、詳しくは後述するように、ある桁に隣接する2ビ
ット単位で部分積を考え、1ビットのシフト及び2の補
数操作を行うことにより、部分積の個数を2n個からn
個に減少させるものである。
【0004】このBoothのアルゴリズムが用いられ
た従来の定数乗算器を図10〜図14を用いて説明す
る。図10は被乗数Xと乗数Yの積X・Yを求める従来
の定数乗算器のブロック図である。乗数Yは2進数で8
桁の数値データである。乗数Yの2のi乗の位の値はy
i(ただし、i=0、1・・・7)で表される。
【0005】乗算器70に乗数Yが入力される。読み出
し専用記憶装置(以下、「メモリ」という)71に被乗
数Xの数値データが格納されている。メモリ71のアド
レス入力を選択することにより、メモリ71に格納され
ているいくつかの定数から1つの被乗数Xが選択され
る。メモリ71より出力される数値データも乗算器70
に入力される。
【0006】乗算器70の主な処理を説明する。乗数Y
の各位の値yiは分割され、エンコーダ72〜75に入
力される。エンコーダ72〜75よりそれぞれ信号S
1、S2、NGが出力される。尚、信号S1、S2、N
Gについては後述する。これらの信号S1、S2、NG
は部分積生成制御回路76〜79に送られる。部分積生
成制御回路76〜79で信号S1、S2、NG及びメモ
リ71が出力する数値データを用いて、後述するよう
に、4個の部分積が生成される。4個の部分積を加算器
81でシフトしながら加算する。高速に加算を行うた
め、加算器81は、例えば、加算木と並列加算器から成
る。加算木で桁とキャリに分離して次々と加算し、最終
的に並列加算器で加算する。このように、被乗数Xと乗
数Yの積X・Yである乗算結果16が出力される。
【0007】8桁の乗数Yから4個の部分積を求めると
き、Boothのアルゴリズムが用いられている。次
に、Boothのアルゴリズムについて説明する。一般
的に乗数Yの桁数を2nとする。また、被乗数X及び乗
数Yはいずれも2の補数表現が用いられているものとす
る。乗数Yに関し、2のi乗の位の値はyi(ただし、
i=0、1・・・2n−1)である。特に、1の位はy
0である。最上位ビットy2n-1は符号ビットともいう。
これにより、乗数Yは次式のように表せる。
【0008】
【数1】
【0009】ここで、 y-1=0 と定義すると、次のように書ける。
【0010】
【数2】
【0011】ここで、 Z2i=−2y2i+1+y2i+y2i-1 とおくと、被乗数Xと乗数Yの積X・Yは、次式で表さ
れる。
【0012】
【数3】
【0013】Z2iの定義式より、Z2iは−2、−1、
0、1、2のいずれかの値である。部分積X・Z2i(た
だし、i=0、1・・・n−1)は被乗数Xの1ビット
のシフトと2の補数操作と0倍操作で求めることができ
るので、後述するように、部分積生成制御回路76〜7
9のハードウェアは簡単に構成することができる。ま
た、部分積X・Z2iの個数は乗数Yの桁数の2分の1の
n個である。加算器81でn個の部分積X・Z2iを22i
倍して加算する。部分積X・Z3iを22i倍することは部
分積X・Z2iを2iビット上位方向にシフトすることな
ので、加算器81で簡単に行うことができる。このよう
にして、被乗数Xと乗数Yの積X・Yが得られる。
【0014】上記Boothのアルゴリズムによるエン
コーダ74の回路図を図11に示す。エンコーダ74は
入力されるy1〜y3を、Z2の演算結果である信号S
1、S2、NGに変換する。S1はZ2の絶対値が1の
とき1となり、それ以外のとき0となる信号である。S
2はZ2の絶対値が2のとき1となり、それ以外のとき
0となる信号である。NGはZ2が負数のとき1とな
り、正数のとき0となる信号である。ただし、S1及び
S2がともに0であるとき、NGは0でも1でもよい
が、簡単のため、y1〜y3が全て0のときNGが0とな
り、y1〜y3が全て1のときNGが1となるようにす
る。
【0015】これを実現するため、XORゲート85で
y1とy2の排他的論理和をとり、XORゲート86でy
2とy3の排他的論理和をとる。XORゲート85の出力
がS1である。更に、XORゲート85の出力はNOT
ゲート88で否定をとり、XORゲート86の出力とA
NDゲート87で論理積をとる。ANDゲート87の出
力がS2である。また、y3はそのままNGとなる。そ
の真理値表を表1に示す。
【0016】
【表1】
【0017】図10において、エンコーダ72、73は
入力される数値データの桁が異なるだけで、図11に示
す回路と同じ回路である。エンコーダ75も、図11に
示す回路と同じであるが、y-1=0に対応して最下位ビ
ットに0が入力される。これにより、エンコーダ72〜
75より信号S1、S2、NGが出力され、部分積生成
制御回路76〜79に送られる。
【0018】部分積生成制御回路76〜79には信号S
1、S2、NGだけでなく、メモリ71からの被乗数X
の数値データも入力される。メモリ71は、図12に示
すように、r+1桁の数値データmj(ただし、j=
0、1・・・r)を出力する。特に、m0が最下位ビッ
ト(LSB)であり、mrが最上位ビット(MSB)で
ある。また、m-1=0と定義する。尚、被乗数Xの桁数
がr+1である。部分積生成制御回路76〜79ではメ
モリ71から入力される数値データを信号S1、S2、
NGを用いて、部分積X・Z2iを生成する。
【0019】部分積生成制御回路76〜79より出力さ
れる部分積X・Z2iのj番目のビットの値をPj(ただ
し、j=0、1・・・r+1)とする。部分積生成制御
回路76〜79の各桁に図13に示す回路が接続されて
いる。部分積生成制御回路76〜79のそれぞれに被乗
数Xの桁数に対応してr+2個の図13に示す回路が設
けられている。
【0020】S1が1のとき、ANDゲート92はmj
を出力する。一方、S2が1のとき、ANDゲート93
はmj-1を出力する。ANDゲート92、93の出力は
ORゲート94に入力される。ORゲート94はS1が
1のときmjを出力し、S2が1のときmj-1を出力す
る。また、S1及びS2がともに0のとき、ORゲート
94は0を出力する。尚、S1とS2は同時に1となら
ない。
【0021】S1はメモリ71より出力される被乗数X
の数値データをシフトすることなく、そのまま部分積と
するときの信号である。S1が1のとき、被乗数Xの数
値データがそのままORゲート94より出力される。一
方、S2は数値データを1ビット上位方向にシフトする
ことにより、被乗数Xを2倍して部分積とするときの信
号である。S2が1のとき、1ビット下位のビットm
j-1をORゲート94が出力することにより、被乗数X
の1ビットのシフトを行い、被乗数Xを2倍する。この
ように、1ビットのシフトがあるため、部分積X・Z2i
は9桁である。
【0022】更に、ORゲート94の出力と信号NGが
XORゲート95で排他的論理和をとる。これにより、
Pjが出力される。NGは前述したようにZ2iが負数の
とき1となる信号である。NGが1のとき、2の補数を
とるため、ORゲート94の出力を反転してPjとす
る。尚、後述するように、ビットの反転後に1を加える
最終的な2の補数操作は加算器81で行われる。一方、
NGが0とき、ORゲート94の出力がそのままPjと
なる。このように、部分積生成制御回路76〜79より
各部分積が出力される。
【0023】ところで、部分積X・Z2iを加算器81で
加算して乗算結果16を得るとき、乗算結果16は乗数
Yの桁数よりも大きい。そのため、部分積X・Z2iをシ
フトしながら加算するとき、各部分積X・Z2iの符号拡
張して加算する。例えば、被乗数Xと乗数Yがともに8
桁である場合、その符号拡張を図14を用いて説明す
る。この場合、4個の部分積X・Z2iを22i倍して加算
する。図14(a)に示すように、4個の部分積100
〜103を2ビットずつシフトしながら加算する。
【0024】尚、部分積100は図10において部分積
生成制御回路76より出力される部分積である。同様
に、部分積101〜103は順に部分積生成制御回路7
7〜79より出力される部分積である。部分積100〜
103は前述したように9桁である。また、図14にお
いて、桁を揃えて表示してある。NG1、NG3、NG
5、NG7は前述したように、2の補数操作の際に部分
積100〜103に加えられる1である。
【0025】部分積100〜103の正負の符号を表す
ビットを上位側から順にS1、S3、S5、S7とする。符
号ビットS1、S3、S5、S7を除いた数値データをPで
示す。4個の部分積100〜103をこのように加算し
て、16桁の乗算結果16(図10)が得られる。16
桁で加算するため、各符号ビットS1、S3、S5、S7は
その上位ビット側にそれぞれ点線で囲まれた領域に符号
拡張する。符号ビットS1、S3、S5、S7の加算につい
て、105に示す符号ビットS7を基準とする。
【0026】
【数4】
【0027】これにより、図14(c)に示すように、
符号ビットS1、S3、S5、S7の反転ビットと所定の桁
に1を加えればよい。このように、符号拡張を簡単化す
る。
【0028】また、図14(a)及び図14(b)によ
っても、符号拡張の簡単化を図面的に示すことができ
る。106に示す符号ビットS7を図14(b)におけ
る107に示す8個の1とS7の反転ビットに変換す
る。同様に、符号ビットS1、S3、S5についても同様
の変換を行う。そして、取消線110〜112の部分を
加算すると、16桁の加算に関しては影響を及ぼさない
ので、加算しなくてもよい。したがって、図14(c)
に示すように、符号拡張すればよいことになる。
【0029】このように、図10において、部分積生成
制御回路76〜79より出力される部分積は加算器81
で加算され、乗算結果16が乗算器70より出力され
る。
【0030】
【発明が解決しようとする課題】しかしながら、エンコ
ーダ72〜75、部分積生成制御回路76〜79の個数
がそれでも多いため、回路規模が大きくなり、消費電力
が大きかった。また、部分積生成制御回路76〜79が
多いことに伴って、部分積の個数が多くなる。これによ
り、加算器81では多くの加算を行わなければならない
ので、加算器81の回路規模も大きくなっていた。その
ため、全体として更に回路規模が大きくなっていた。
【0031】本発明は上記課題を解決し、2進数の乗算
を行う乗算器において、乗算器の高速性を失わずに回路
規模を小さくし、消費電力の小さい乗算器を提供するこ
とを目的とする。
【0032】
【課題を解決するための手段】上記目的を達成するため
に、本発明の第1の構成では、2の補数表現が用いられ
たディジタルの被乗数Xと乗数Yを入力し、被乗数Xと
乗数Yの積X・Yを出力する乗算器において、乗数Yの
2iの位の値がyi(ただし、i=0、1・・・3n−
1)で表されるとき、y-1を0と定義し、 Z3i=−4y3i+2+2y3i+1+y3i+y3i-1 より、各i(ただし、i=0、1・・・n−1)につい
てZ3iを求め、Z3i及び被乗数Xより、部分積 X・Z3i を求め、更に、部分積X・Z3iを23i倍して、i(ただ
し、i=0、1・・・n−1)について和をとるように
している。
【0033】このような構成では、乗数Yの桁数は3n
である。Z3iの定義式より、n個のZ3i(ただしi=
0、1・・・n−1)が求められる。Z3iと被乗数Xよ
り、部分積X・Z3iが求められる。このとき、Z3iは定
義式より−4、−3、−2、−1、0、1、2、3、4
のいずれかの値となる。
【0034】Z3iが0のとき部分積X・Z3iは0であ
る。Z3iが2のとき部分積X・Z3iは被乗数Xを1ビッ
ト上位側にシフトすればよい。Z3iが4のとき被乗数X
を2ビット上位側にシフトすればよい。Z3iが3のと
き、やや複雑であるが、被乗数Xの3倍を求める。ま
た、Z3iが負数のとき、正数のときに前述したように求
めた部分積に更に2の補数操作を行う。2の補数操作は
簡単な構成で実現できる。
【0035】このように、n個の部分積X・Z3iが求め
られる。部分積X・Z3iを23i倍して加算すれば、被乗
数Xと乗数Yの乗算結果が得られる。23iを乗ずるのは
ビットシフトを行うだけなので、簡単に行うことができ
る。1ビットのシフト、2ビットのシフト、3倍を求め
る処理、2の補数操作と0倍操作を設ければ、部分積X
・Z3iはn個となる。従来に較べ、部分積X・Z3iの個
数が乗数Yの桁数の3分の1に減少する。これにより、
部分積X・Z3iの加算が少なくなり、回路規模が小さく
なり、消費電力が小さくなる。
【0036】また、本発明の第2の構成では、上記第1
の構成において、定数を記憶する記憶装置を設け、被乗
数Xの1倍及び3倍の数値データを前記記憶装置に格納
し、Z3iの絶対値が3であるか判別する手段を設け、そ
の信号によりZ3iの絶対値が3のとき前記記憶装置は被
乗数Xの3倍の数値データを出力し、一方、Z3iの絶対
値が3以外のとき前記記憶装置は被乗数Xの1倍の数値
データを出力し、この数値データを用いて部分積X・Z
3iを求めるようにしている。
【0037】このような構成では、Z3iの値はその定義
式より、−4、−3、−2、−1、0、1、2、3、4
のいずれかである。Z3iが0であれば、部分積X・Z3i
は0である。Z3iが1であれば、部分積X・Z3iは記憶
装置より出力される被乗数Xの1倍の数値データであ
る。Z3iが2のとき、部分積X・Z3iは記憶装置より出
力される被乗数Xの1倍の数値データを1ビット上位に
シフトすればよい。Z3iが4のとき、部分積X・Z3iは
記憶装置より出力される被乗数Xの1倍の数値データを
2ビット上位にシフトすればよい。そして、Z3iが3の
とき、部分積X・Z3iは記憶装置が出力する被乗数Xの
3倍の数値データである。このように、Z3iが3のと
き、被乗数Xの3倍の数値データが記憶装置より出力さ
れるので、被乗数Xを3倍する複雑な処理を行う必要が
ない。
【0038】また、Z3iが−4、−3、−2、−1のよ
うに負数のとき、Z3iが4、3、2、1で前述したよう
に求めた部分積X・Z3iから2の補数操作する。これに
より、Z3iが負数でも部分積X・Z3iが求められる。こ
のように、本構成によれば、部分積X・Z3iを求めるの
に、1ビットシフトと2ビットシフトと2の補数操作と
0倍操作すればよいので、処理が簡単となり、上記第1
の構成よりも、更に回路規模や消費電力が小さくなる。
【0039】また、本発明の第3の構成では、上記第1
の構成において、定数を記憶する記憶装置を設け、被乗
数Xの−1倍、−3倍、1倍及び3倍の数値データを前
記記憶装置に記憶し、Z3iが負数であるか判別する手段
と、絶対値が3であるか判別する手段を設け、それらの
信号により、Z3iが−3のとき前記記憶装置は被乗数X
の−3倍の数値データを出力し、Z3iが3のとき前記記
憶装置は被乗数Xの3倍の数値データを出力し、Z3iが
正数で3以外のとき前記記憶装置は被乗数Xの1倍の数
値データを出力し、Z3iが負数で−3以外のとき前記記
憶装置は被乗数Xの−1倍の数値データを出力し、この
数値データを用いて部分積X・Z3iを求めるようにして
いる。
【0040】このような構成では、記憶装置に被乗数X
の−1倍、−3倍、1倍、3倍の数値データが格納され
ている。前述したようにZ3iが2、4のときは部分積X
・Z2iは記憶装置より出力される被乗数Xの1倍の数値
データをそれぞれ1ビット、2ビット上位にシフトすれ
ばよい。また、Z3iが−2、−4のときは記憶装置より
出力される被乗数Xの−1倍の数値データをそれぞれ1
ビット、2ビット上位にシフトすればよい。Z3iが3、
−3のとき部分積X・Z3iは記憶装置より出力される被
乗数Xの3倍、−3倍の数値データである。このよう
に、部分積X・Z3iを求めるとき、被乗数Xの3倍を求
めなくてもよい。また、2の補数操作も不要となってい
る。このように、記憶装置に格納するデータ量が増加す
るが、乗算器の処理が簡単となり、更に消費電力が小さ
くなる。
【0041】また、本発明の第4の構成では、上記第1
の構成乃至上記第3の構成のいずれかにおいて、任意の
桁数の乗数Yを符号拡張することにより、乗数Yの2i
の位の値をyi(ただし、i=0、1・・・3n−1)
とみなし、部分積X・Z3iを求めるようにしている。
【0042】このような構成では、乗数Yの桁数が3の
倍数でなくても、符号拡張することにより、yiで表す
ことができる。これにより、上記第1の構成乃至上記第
3の構成のいずれかにおいて、被乗数Xと乗数Yの積X
・Yが得られる。また、実際に符号拡張を伴わなくて
も、それと同等の処理をしてもよい。
【0043】
【発明の実施の形態】
<第1の実施形態>本発明の第1の実施形態を図1〜図
5を用いて説明する。図1は本実施形態の定数乗算器の
ブロック図である。本実施形態では定数乗算器に8桁の
乗数Yが入力される。前述した従来の定数乗算器(図1
0)と較べると、エンコーダ1〜3の個数と部分積生成
制御回路7〜9の個数が少なくなっている。乗数Yが8
桁の数値データであるとき、前述したBoothのアル
ゴリズムでは、3個のエンコーダ1〜3と3個の部分積
生成制御回路7〜9で構成することができない。そこ
で、本実施形態では乗算のアルゴリズムを変更する。ま
ず、その乗算のアルゴリズムを説明する。
【0044】一般に、乗算器は被乗数Xと乗数Yが与え
られたとき、その積X・Yを求めるものである。被乗数
Xと乗数Yはともに2の補数表現が用いられているとす
る。乗数Yの桁数を3n(ただし、nは整数)とする。
もし、乗数Yの桁数が3の倍数でなければ、符号拡張す
る。1の位の値をy0、2のi乗の位の値をyi(ただ
し、i=0、1・・・3n−1)とすると、乗数Yは次
式で表される。
【0045】
【数5】
【0046】ここで、 y-1=0 とすると、次のように書ける。
【0047】
【数6】
【0048】ここで、 Z3i=−4y3i+2+2y3i+1+y3i+y3i-1 とおくと、被乗数Xと乗数Yの積X・Yは、次のように
表される。
【0049】
【数7】
【0050】Z3iの定義式より、Z3iは−4、−3、−
2、−1、0、1、2、3、4のいずれかの値をとる。
部分積X・Z3i(ただし、i=0、1・・・n−1)を
求めるには、後述するように基本的に被乗数Xとその3
倍の数値データと、1ビットシフトと、2ビットシフト
と、2の補数操作と0倍操作があればよい。これによ
り、生成される部分積X・Z2iの個数はn個となり、乗
数Xの桁数の3分の1となる。
【0051】このアルゴリズムを用いることにより、図
1においてエンコーダ1〜3及び部分積生成制御回路7
〜9の個数が上記従来の定数乗算器(図10)に較べて
少なくなっている。エンコーダ2の回路図を図2に示
す。乗数Yのy2〜y5が入力される。エンコーダ2より
出力されるM3はZ3の絶対値が3のとき1となり、そ
れ以外のとき0となる信号である。S1はZ3の絶対値
が1又は3のとき1となり、それ以外のとき0となる信
号である。
【0052】S2はZ3の絶対値が2のとき1となり、
それ以外のとき0となる信号である。S4はZ3の絶対
値が4のとき1となり、それ以外のとき0となる信号で
ある。NGはZ3が負数のとき1となり、正数のとき0
となる信号である。尚、Z3が0のとき、NGは理論上
はどの値でもよいが、本実施形態では回路を簡単にする
ため、y2〜y5がすべて0のときNGは0となり、y2
〜y5がすべて1のときNGは1のとなるようにする。
【0053】y2〜y5より信号M3、S1、S2、S
4、NGの出力を得るため、XORゲート21〜23
と、ANDゲート24〜26、NOTゲート27〜29
が設けられている。XORゲート21でy2とy3の排他
的論理和をとる。これにより、S1が得られる。XOR
ゲート22でy3とy4の排他的論理和をとる。XORゲ
ート22の出力と、XORゲート21の出力から更にN
OTゲート27で否定をとったものがANDゲート25
に入力される。ANDゲート25より出力される信号が
S2である。XORゲート23でy4とy5の排他的論理
和をとる。XOR23の出力と、XORゲート21の出
力はANDゲート24で論理積がとられる。これによ
り、M3が得られる。
【0054】また、XORゲート21の出力はNOTゲ
ート28で否定がとられ、ANDゲート26に入力され
る。XORゲート22の出力はNOTゲート29で否定
がとられ、ANDゲート26に入力される。XORゲー
ト23の出力もANDゲート26に入力される。AND
ゲート26は入力される信号が全て1のとき1を出力
し、それ以外では0を出力する。これにより、ANDゲ
ート26の出力がS4となる。y5がそのまま信号NG
となる。その真理値表を表2に示す。
【0055】
【表2】
【0056】尚、図1において、エンコーダ1、3につ
いても、入力される数値データの桁が異なるだけで同様
の構成となっている。ただし、エンコーダ3ではy0〜
y2の3ビットが入力されるが、y-1=0に対応して最
下位ビットに0が入力される。これにより、図2に示す
回路図と同様の構成となる。エンコーダ1もy5〜y7の
3ビットが入力されるが、図2に示す回路に符号拡張す
ることにより、4ビットの入力としてもよい。また、そ
れと同等の出力が得られるように別の回路構成とし、3
ビットの入力としてもよい。尚、3ビットの入力の場合
のエンコーダ1の回路図は図示しないが、簡単に構成す
ることができる。
【0057】エンコーダ1はy5〜y7の3ビットの入力
なので、M3は0となり、S4も0となる。簡単化のた
め、エンコーダ1より信号M3、S4をメモリ4や部分
積生成制御回路7に送らない。エンコーダ2、3より出
力される信号M3がメモリ5、6に入力される。メモリ
4〜6のアドレス入力を選択することにより、格納され
ているいくつかの定数から被乗数Xが選択される。図3
に示すように、M3が0のとき、メモリ5、6は被乗数
Xの1倍の数値データを出力し、M3が1のとき、被乗
数Xの3倍の数値データを出力する。その出力は2進数
でmj(ただし、j=0、1・・・r)である。特に、
最下位ビット(LSB)の値がm0であり、最上位ビッ
ト(MSB)がmrである。尚、メモリ4にはM3が入
力されず、被乗数Xの1倍の数値データが出力される。
また、m-1=0、m-2=0とする。
【0058】部分積生成制御回路7〜9ではメモリ1〜
3が出力する数値データを信号S1、S2、S4、NG
を用いてそれぞれ部分積X・Z3iを生成する。部分積生
成制御回路7〜9より出力される部分積X・Z3iのj番
目のビットの値をPj(ただし、j=0、1・・・r+
1)とする。部分積生成制御回路7〜9の各桁には図4
に示す回路2が接続されている。部分積生成制御回路7
〜9のそれぞれ被乗数Xの桁数に対応して、r+2個の
図4に示す回路が接続されている。
【0059】S1が1のとき、ANDゲート31はmj
を出力する。S2が1のとき、ANDゲート32はm
j-1を出力する。S4が1のとき、ANDゲート33は
mj-2を出力する。ANDゲート31〜33の出力はO
Rゲート34に入力される。ORゲート34はS1が1
のときmjを出力し、S2が1のときmj-1を出力し、S
4が1のときmj-2を出力する。また、S1、S2及び
S4がともに0のとき、ORゲート94は0を出力す
る。
【0060】S1はメモリ4〜9より出力される数値デ
ータをシフトすることなく、そのまま部分積とするとき
の信号である。S1が1のとき、ORゲート34からの
数値データをそのまま出力する。S2はメモリ4〜6よ
り出力される数値データを1ビット上位にシフトすると
きの信号である。S2が1のとき、1つ下位ビットに対
応するmj-1を出力する。これにより、メモリ4〜6よ
り出力される数値データを2倍する。S4はメモリ5、
6より出力される数値データを2ビット上位にシフトす
るときの信号である。S4が1のとき、2つ下位ビット
に対応するmj-2を出力する。これにより、2ビット上
位にシフトしたことになり、メモリ5、6より出力され
る数値データを4倍する。
【0061】その後、ORゲート34の出力とNGはX
ORゲート35で排他的論理和をとり、Pjが出力され
る。前述したように、NGはZ3iが負数のとき1となる
信号である。NGが1のとき2の補数をとるため、OR
ゲート34の出力を反転してPjとする。尚、後述する
ように、ビット反転後に1を加える最終的な2の補数操
作は加算器10で行われる。一方、NGが0のとき、O
Rゲート34の出力がそのままPjとなる。加算器10
では部分積X・Z3iを23i倍しながら加算する。高速に
加算を行うために、加算器10は、例えば、加算木と並
列加算器から成る。このようにして、乗算結果16が得
られる。
【0062】前述したように、加算するとき、部分積X
・Z3iを符号拡張する。その様子を図5を用いて説明す
る。部分積41〜43は部分積生成制御回路7〜9が出
力する部分積X・Z3iである。ただし、被乗数Xは8桁
である。部分積41〜43の符号を上位側から順に
S1、S4、S7とする。前述したように、加算すると
き、図5(a)に示すように、点線領域にそれぞれ
S7、S4、S1の符号を拡張する。このとき、符号の拡
張を、次のように簡単化する。符号S7、S4、S1につ
いてのみ加算を考える。
【0063】
【数8】
【0064】これにより、図5(c)に示すように、S
1、S4、S7の反転ビットと所定の桁に1を加えればよ
い。前述したように図面的に求めると、図5(a)より
反転ビットを用いて図5(b)とし、取消線44、45
の部分を消去する。これによっても、図5(c)に示す
ように簡単化できる。尚、NG1、NG4、NG7は部
分積41〜43が負数の場合、2の補数操作の際に加え
られるエンコーダ1、2、3より出力される1ビットの
信号NGである。
【0065】このように、前述した従来の定数乗算器
(図10)に較べ、本実施形態では3個のエンコーダ1
〜3と、3個の部分積生成制御回路7〜9となるので、
定数乗算器の回路規模が小さくなる。また、部分積の個
数も減少するので加算器10の回路規模も小さくなる。
このように、高速性を失うことなく、全体の回路規模が
小さくなるので、消費電力も小さくなる。
【0066】また、部分積生成制御回路7〜9におい
て、入力される被乗数Xを3倍することができると、メ
モリ4〜6を省略し、任意の変数の被乗数Xを入力する
ことができる。ただし、このとき、部分積生成制御回路
7〜9では、例えば、1ビット上位シフト演算を行い、
更に元の被乗数Xを加算することにより、被乗数Xの3
倍となるが、処理が複雑になるので、図1の定数乗算器
に較べ、回路規模が大きくなる。また、言うまでもな
く、被乗数Xは8桁でなくてもよい。乗数Yの桁数も適
当な符号拡張や同等のエンコーダを用いることにより、
積X・Yを得ることができるので、任意の桁数でよい。
【0067】<第2の実施形態>次に、本発明の第2の
実施形態を図6〜図9を用いて説明する。図6は本実施
形態のブロック図である。前述した第1の実施形態(図
1)と同じアルゴリズムを用いてほぼ同様の構成となっ
ているが、エンコーダ1〜3より出力されるNG信号が
メモリ4a〜6aに入力される点が主に異なる。尚、図
6において図1と同一の部分については同一の符号を付
し、説明を省略する。
【0068】メモリ5a、6aは同じ構成であり、図7
に示す。メモリ5a、6aにM3とNGが入力される。
M3=0、NG=0のとき、メモリ5a、6aから被乗
数Xの1倍の数値データが出力される。M3=0、NG
=1のとき、メモリ5a、6aから被乗数Xの−1倍の
数値データが出力される。M3=1、NG=0のとき、
メモリ5a、6aから被乗数Xの3倍の数値データが出
力される。M3=1、NG=1のとき、メモリ5a、6
aから被乗数Xの−3倍の数値データが出力される。
【0069】これにより、r+1桁の数値データm
j(ただし、j=0、1・・・r)がメモリ5a、6a
より出力される。また、メモリ4aではM3が0となる
ので、NGだけを入力する。これに伴い、メモリ4aに
は被乗数Xの1倍、−1倍の数値データを格納する。特
に、最下位ビット(LSB)はm0であり、最上位ビッ
ト(MSB)はMrである。また、m-1=0、m-2=0
とする。このように、前述した第1の実施形態のメモリ
4〜6に較べて、メモリ4a〜6aに格納するデータ量
が2倍となる。
【0070】上記第1の実施形態では、部分積生成制御
回路7〜9に図4に示す回路が用いられていた。本実施
形態では、部分積生成制御回路7a〜9aに図8に示す
回路が用いられる。尚、図8において図4と同一の部分
については同一の符号を付し、説明を省略する。本実施
形態では信号NGが入力されず、XORゲート35(図
4)が省略されている。これは、Z3iが負数のときメモ
リ4a〜6aより負数が出力されるので、部分積生成制
御回路7a〜9aで2の補数操作が不要となっているた
めである。
【0071】部分積X・Z3iの加算するときの符号拡張
を図9に示す。尚、図9において図5と同一の部分につ
いては同一の符号を付し、説明を省略する。部分積41
〜43の符号拡張は前述した第1の実施形態の符号拡張
(図5参照)と同じであるが、本実施形態では、部分積
41〜43は負数のとき、既に2の補数表現であるの
で、NG1、NG4、NG7の1を加算しない。
【0072】回路規模を考えると、本実施形態の方が上
記第1の実施形態に較べてメモリ4a〜6aの記憶容量
が大きくなるため、回路規模が大きくなる。しかし、消
費電力の面から考えると、メモリ4a〜6aで消費する
電力よりも、XORゲート35(図4参照)で消費する
電力の方が大きいので、全体としてこれを省略した本実
施形態の方が低消費電力となる。
【0073】
【発明の効果】
<請求項1の効果>乗数Yと被乗数Xの積を求める乗残
回路において、部分積の個数が減少する。これにより、
部分積の和をとる加算器の回路規模を小さくすることが
できる。乗算器の回路規模を小さくすることができ、消
費電力を小さくすることができる。
【0074】<請求項2の効果>記憶装置には定数の被
乗数Xとその3倍の数値データが格納されている。部分
積を求めるとき、被乗数Xの3倍の数値データを用いる
ことにより、部分積X・Z3iを求めるとき、処理が簡単
になる。そのため、更に回路規模が小さくなる。被乗数
Xを定数とする乗算器の全体の回路規模が小さくなり、
消費電力も小さくなる。このように、本発明は、定数乗
算器に有効である。
【0075】<請求項3の効果>記憶装置に被乗数Xの
−1倍、−3倍、1倍及び3倍の数値データが格納され
ている。これにより、部分積X・Z3iをもとめるとき、
被乗数Xの0倍操作と1ビット、2ビットのシフトを行
うだけになる。特に、2の補数操作が不要となる。記憶
装置に格納するデータ量が増えるが、処理が簡単にな
る。全体では、更に低消費電力となる。
【0076】<請求項4の効果>乗数Yの桁数は3の倍
数でなくても、符号拡張することにより、上記乗算を行
うことができる。このように、乗数Yは任意の桁数でも
被乗数Xと乗数Yの積X・Yが求められる。また、直
接、符号拡張を行わなくても、それと同等の効果を持つ
処理でもよい。
【図面の簡単な説明】
【図1】 本発明の第1の実施形態の定数乗算器のブロ
ック図。
【図2】 そのエンコーダの回路図。
【図3】 そのメモリのブロック図。
【図4】 その部分積生成制御回路の各ビットの回路
図。
【図5】 その部分積の符号拡張を説明する図。
【図6】 本発明の第2の実施形態の定数乗算器のブロ
ック図。
【図7】 そのメモリのブロック図。
【図8】 その部分積生成制御回路の各ビットの回路
図。
【図9】 その部分積の符号拡張を説明する図。
【図10】 従来の定数乗算器のブロック図。
【図11】 そのエンコーダの回路図。
【図12】 そのメモリのブロック図。
【図13】 その部分積生成制御回路の各ビットの回路
図。
【図14】 その部分積の符号拡張を説明する図。
【符号の説明】
1〜3 エンコーダ 4〜6 メモリ 7〜9 部分積生成制御回路 10 加算器 35 XORゲート mj 数値データ

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 2の補数表現が用いられたディジタルの
    被乗数Xと乗数Yを入力し、被乗数Xと乗数Yの積X・
    Yを出力する乗算器において、 乗数Yの2iの位の値がyi(ただし、i=0、1・・・
    3n−1)で表されるとき、y-1を0と定義し、 Z3i=−4y3i+2+2y3i+1+y3i+y3i-1 より、各i(ただし、i=0、1・・・n−1)につい
    てZ3iを求め、Z3i及び被乗数Xより、部分積 X・Z3i を求め、更に、部分積X・Z3iを23i倍して、i(ただ
    し、i=0、1・・・n−1)について和をとることを
    特徴とする乗算器。
  2. 【請求項2】 定数を記憶する記憶装置を設け、被乗数
    Xの1倍及び3倍の数値データを前記記憶装置に記憶
    し、Z3iの絶対値が3であるか判別する手段を設け、そ
    の信号によりZ3iの絶対値が3のとき前記記憶装置は被
    乗数Xの3倍の数値データを出力し、一方、Z3iの絶対
    値が3以外のとき前記記憶装置は被乗数Xの1倍の数値
    データを出力し、この数値データを用いて部分積X・Z
    3iを求めることを特徴とする請求項1に記載の乗算器。
  3. 【請求項3】 定数を記憶する記憶装置を設け、被乗数
    Xの−1倍、−3倍、1倍及び3倍の数値データを前記
    記憶装置に記憶し、Z3iが負数であるか判別する手段
    と、絶対値が3であるか判別する手段を設け、それらの
    信号により、Z3iが−3のとき前記記憶装置は被乗数X
    の−3倍の数値データを出力し、Z3iが3のとき前記記
    憶装置は被乗数Xの3倍の数値データを出力し、Z3iが
    正数で3以外のとき前記記憶装置は被乗数Xの1倍の数
    値データを出力し、Z3iが負数で−3以外のとき前記記
    憶装置は被乗数Xの−1倍の数値データを出力し、この
    数値データを用いて部分積X・Z3iを求めることを特徴
    とする請求項1に記載の乗算器。
  4. 【請求項4】 任意の桁数の乗数Yを符号拡張すること
    により、乗数Yの2iの位の値をyi(ただし、i=0、
    1・・・3n−1)とみなすことにより、部分積X・Z
    3i求めることを特徴とする請求項1乃至請求項3のいず
    れかに記載の乗算器。
JP8161434A 1996-06-21 1996-06-21 乗算器 Pending JPH1011267A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8161434A JPH1011267A (ja) 1996-06-21 1996-06-21 乗算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8161434A JPH1011267A (ja) 1996-06-21 1996-06-21 乗算器

Publications (1)

Publication Number Publication Date
JPH1011267A true JPH1011267A (ja) 1998-01-16

Family

ID=15735046

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8161434A Pending JPH1011267A (ja) 1996-06-21 1996-06-21 乗算器

Country Status (1)

Country Link
JP (1) JPH1011267A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009527060A (ja) * 2006-02-15 2009-07-23 クゥアルコム・インコーポレイテッド 拡張された削減ツリー回路構成を有するブース乗算器
US7809783B2 (en) 2006-02-15 2010-10-05 Qualcomm Incorporated Booth multiplier with enhanced reduction tree circuitry

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009527060A (ja) * 2006-02-15 2009-07-23 クゥアルコム・インコーポレイテッド 拡張された削減ツリー回路構成を有するブース乗算器
US7809783B2 (en) 2006-02-15 2010-10-05 Qualcomm Incorporated Booth multiplier with enhanced reduction tree circuitry

Similar Documents

Publication Publication Date Title
US6240438B1 (en) Multiplier circuit for reducing the number of necessary elements without sacrificing high speed capability
JP3153370B2 (ja) 乗算装置
GB2365636A (en) Parallel counter and multiplication logic circuit
US4868777A (en) High speed multiplier utilizing signed-digit and carry-save operands
US5189635A (en) Digital data processing circuit
JP2541758B2 (ja) 剰余算出回路
US4118786A (en) Integrated binary-BCD look-ahead adder
US5777915A (en) Multiplier apparatus and method for real or complex numbers
JPH076024A (ja) 十進数乗算器
JPS5841532B2 (ja) セキワケイサンカイロ
JPS62219027A (ja) 桁上げ先見回路
JP2606326B2 (ja) 乗算器
JP3071607B2 (ja) 乗算回路
JP3231298B2 (ja) 乗算装置
KR100621968B1 (ko) 스티키 비트값 예측 회로 및 이것을 구비한 반도체 장치
JP4954019B2 (ja) 演算装置
JPH05216626A (ja) 乗算器
KR0161485B1 (ko) 산술 연산 장치를 이용한 부스 알고리즘 곱셈 연산 장치
JP2000187584A (ja) 演算回路
KR20020047509A (ko) 여분 이진 부분곱을 이용한 복소수 승산방법 및 이를적용한 복소수 승산기
JP3612950B2 (ja) 演算装置およびその方法
KR100248977B1 (ko) 승산기
JP3522167B2 (ja) 演算処理回路及び演算処理方法
JPH0326857B2 (ja)
JPH06230933A (ja) 演算処理装置