JPH086762A - 乗算回路 - Google Patents

乗算回路

Info

Publication number
JPH086762A
JPH086762A JP6139008A JP13900894A JPH086762A JP H086762 A JPH086762 A JP H086762A JP 6139008 A JP6139008 A JP 6139008A JP 13900894 A JP13900894 A JP 13900894A JP H086762 A JPH086762 A JP H086762A
Authority
JP
Japan
Prior art keywords
multiplier
multiplicand
bit
binary
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
Application number
JP6139008A
Other languages
English (en)
Inventor
Naotaka Imakurunushi
尚孝 今久留主
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP6139008A priority Critical patent/JPH086762A/ja
Publication of JPH086762A publication Critical patent/JPH086762A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 2進数で表される乗数と被乗数を掛け合わせ
て積を得る乗算回路において、短い処理時間で乗算をす
ることを可能とし、かつ、その規模を並列型乗算回路よ
り小とする。 【構成】 乗数の「1」のある位置を検出する桁数検出
器5と、桁数検出器5で検出した桁数だけ被乗数を下位
ビットから上位ビットへ左シフトするバレルシフタ7
と、このバレルシフタ7でシフトした被乗数を順次加算
していく加算器8を備える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、マイクロプロセッサ等
に用いられる2進数同士の乗算をする回路に関するもの
である。
【0002】
【従来の技術】A×B=Cの乗算をするとき、Aを被乗
数、Bを乗数、Cを積と呼んでいる。一般に知られてい
る汎用のプロセッサで乗算を行う方法として、次の2種
類がある。
【0003】(1)被乗数を、乗数の回数だけ加算を繰
り返す方法 (2)乗数の最下位ビットより1ビットずつ零判定を行
い、被乗数を1ビットずつ下位ビットから上位ビットへ
左シフトして結果を加算していく方法 また、全加算器を乗数のビット数だけ接続し、その縦続
接続により乗算結果を得る並列乗算器を使用する方法も
知られている。
【0004】ここで、図3を参照して従来の乗算方法の
一例について説明する。図3は、被乗数、乗数の符号判
定後の従来例における乗算ステップ実行内容を示す流れ
図である。
【0005】Bに乗数、Aに被乗数を設定し、Cに積の
初期値“0”を設定する(1)。乗数Bの最下位ビット
(LSB)が零であるかどうかを判定する(2)。零であ
る場合にはさらに乗数Bの内容全てが零であるかどうか
を判定する(4)。もし零であれば乗算ルーチンを終了す
る。もし、(2)で零でなければ、積Cと被乗数Aとを加
算する(3)。次に、次のビットの加算データを準備する
ため(5)と(6)を実行する。(5)は、乗数Bの最下位ビッ
トによる加算が終了したので、まず、乗数Bの内容を上
位から下位へ右シフトする。(6)は、次のビットでの加
算を行うため被乗数Aの内容を下位ビットから上位ビッ
トへ左シフトする。これら(5)と(6)の前処理後、(2)に
戻る。(2)の零判定の結果、零でなかった場合には(3)の
積Cと(6)の処理後の被乗数Aとの間で加算を行いその
結果を積Cに格納した後、前述したように(5)と(6)を実
行し(2)に戻る。以上を乗数Bのビット数の回数繰り返
す。
【0006】
【発明が解決しようとする課題】このような従来の乗算
結果を得る回路構成は以下に示す課題があった。
【0007】このような構成による汎用のプロセッサで
乗算を行うとき、零判定と1ビットずつのシフトを繰り
返すため、積を求めるための処理時間が長いという問題
があった。また、DSPなどに内蔵されることが多い並
列乗算器は、処理時間は短いが、内蔵している回路が複
雑で、かつ、回路量が多いという問題があった。
【0008】本発明は比較的簡単な回路構成で処理時間
の短い乗算回路を提供することを目的とする。
【0009】
【課題を解決するための手段】本発明の乗算回路は、乗
数の「1」の桁を検出する桁数検出器と、この桁数検出
器で検出した桁数だけ被乗数を下位ビットから上位ビッ
トへシフトするバレルシフタと、シフトした被乗数を順
次加算していく加算器とを備えるものである。
【0010】
【作用】上記の構成により、乗数「1」のあるビット位
置を見つけ、そのビット位置から最上位ビット(または
最下位ビット)の位置までのビット数分だけ被乗数をシ
フトし、シフトした被乗数を順次加算することにより乗
算を行うことができる。
【0011】
【実施例】以下、本発明の一実施例について図面を参照
しながら説明する。本実施例では2進数を表記する場
合、“1010”(2進)と記述する。また本実施例で
は、乗数および被乗数の最上位ビット(MSB)は正か
負かを表しており、正の数の場合はMSBが“0”(2
進)になり、負の数の場合はMSBが“1”(2進)に
なる。乗算を行う場合には最初にMSBが0か1かを判
定し、もし“0”であればそのまま乗算を行い、“1”
であれば2の補数をとってから乗算を行う。従って、乗
算を行う場合には、常にMSBは“0”になっている。
【0012】本実施例では被乗数“1010”(2進)
と乗数“0101”(2進)とを掛け合わせて積“10
0010”(2進)を算出する4ビット×4ビットの乗
算を例に説明する。
【0013】図1は、本発明の一実施例における乗算回
路の構成を示す。図2は本発明における乗数、被乗数の
符号判定後の乗算実行部分の流れ図である。
【0014】図1において、1は乗数を記憶しておくた
めの乗数レジスタ、2は被乗数を記憶しておくための被
乗数レジスタ、3は乗算結果の積を記憶するための積レ
ジスタ、4は絶対値算出器であり乗算を行う前に与えら
れた乗数および被乗数の絶対値を算出しておく。5は乗
数の“1”である桁(ビット位置)を検出するための桁
数検出器、6は桁数検出器5で“1”であると判定され
たビットを検出後に“1”から“0”に反転するビット
反転器、7は被乗数を所定のビット数分だけシフトする
バレルシフタ、8は加算器でありここでは積レジスタ3
から送られる値とバレルシフタ7から送られる値を加算
する。また9は絶対値算出器4で判定されたMSBの値
にもとづいて、乗数、被乗数がそれぞれ正か負かを判定
する符号判定器である。10〜20はデータバス、21
〜25は信号線を示す。
【0015】以上の構成の乗算回路について図1および
図2を参照しながらその動作を説明する。図2は図1の
乗算回路の動作フローを示す。
【0016】(1)まず、被乗数、乗数、積の設定を行
い、被乗数、乗数の符号判定を行う。被乗数の場合は、
被乗数“1010”(2進)をバス11を介して、絶対
値算出器4に入力し、被乗数の符号判定を行う。この場
合、MSBが1であり被乗数が負の数になるので、2の
補数をとり正の数“0110”(2進)にする。同時
に、被乗数が負なので“1”という符号信号を信号線2
2に送る。また、乗数の場合は、乗数“0101”(2
進)を絶対値算出器4に入力するが、この乗数は正の数
であるので、2の補数をとらず符号が正という信号
“0”を信号線23に送る。同時に、積レジスタ3に初
期値“0”を設定する。
【0017】(2)次に絶対値算出器4の処理後の、乗
数レジスタ1の内容“0101”(2進)と被乗数レジ
スタ2の内容“0110”(2進)とを用いて、以下の
処理を行う。
【0018】絶対値算出器4の処理後の乗数“010
1”(2進)をバス14を介して、桁数検出器5に入力
する。桁数検出器5では、乗数の最上位ビットから順に
“1”であるビット位置の検出を行う。具体的には、最
上位ビットから2桁目(2ビット目)の“1”を検出
し、この位置が最下位ビットから2桁シフトした位置で
あることを算出する。この最下位ビットからのシフト桁
数「2」を、バス15を介して出力し、バレルシフタ7
にシフト数(2ビット)として入力する。同時に、乗数
の判定したビットを、ビット反転器6で反転させバス1
6を介して乗数レジスタ1に“0001”(2進)を再
入力する。
【0019】(3)次に絶対値算出器4での処理後の被
乗数レジスタ2の内容“0110”(2進)をバス17
を介してバレルシフタ7に入力する。バレルシフタ7
で、先に設定したシフト数(2ビット)分だけ被乗数を
左方向(下位から上位)へシフトする。このとき被乗数
の最下位ビット以下のビットには“0”を入力し、“0
11000”(2進)を出力する。バレルシフタ7の出
力“011000”(2進)は、バス18を介して加算
器8のB入力端に入力される。
【0020】(4)一方、積レジスタ3の内容“0”
(2進)をバス19を介して、加算器8のA入力端に入
力する。A入力端とB入力端にそれぞれの値が入力し終
わったら、加算器8によりA入力端“0”(2進)とB
入力端“011000”(2進)との加算を行う。加算
結果“011000”(2進)は、バス20を介して積
レジスタ3に再入力される。これら一連の動作により1
回目の処理を終了する。
【0021】続いて、乗数レジスタ1の内容“000
1”(2進)を、バス14を介して桁数検出器5に入力
し、乗数の最上位ビットから最も近い“1”のビット位
置の検出を行い、乗数“0001”(2進)の最下位ビ
ットからのビット数(0ビット)を検出する。同時に、
判定したビットの反転を行い、バス16を介し乗数レジ
スタ1へ“0000”(2進)を再入力する。検出した
ビット数(0)をバレルシフタ7のシフト数として設定
し、被乗数レジスタ2の内容“0110”(2進)を、
バレルシフタ7で、設定したシフト数(0)左方向へシ
フトする。
【0022】シフトした結果“0110”(2進)は、
バス18を介して、加算器8のB入力端に入力される。
一方、積レジスタ3の内容“011000”(2進)を
バス19を介して、加算器8のA入力端に入力する。加
算器8で、A入力端“011000”(2進)とB入力
端“0110”(2進)との加算を行う。加算結果“0
11110”(2進)は、バス20を介して、積レジス
タ3に再入力される。これら一連の動作により2回目の
処理を終了する。
【0023】最後に、乗数レジスタ1の内容“000
0”(2進)を、バス14を介して桁数検出器5で判定
を行うと、全ビットが“0”のため演算終了信号25を
加算器8に送り、絶対値乗算を終了する。
【0024】絶対値乗算結果は、最終で積レジスタ3の
内容“011110”(2進)と、最初に絶対値算出器
4で判定した各々の符号信号22、23とで決定する。
符号信号22、23を符号判定器9に入力することによ
り積の符号を判定する。本実施例では、乗数が正、被乗
数が負であるから、積の符号は負“1”という積符号信
号24を積判定器26に送る。また、最終時の積“01
1110”(2進)をバス20を介して積判定器26に
入力する。積判定器26では、積符号信号24が“1”
というのを受け、最終時の積“011110”の2の補
数をとり、“100010”を積としてバス27に出力
して乗算を終了する。
【0025】上記の実施例では、4ビット×4ビットの
場合について説明したが、本発明は、n×mビットの任
意の場合にも応用できる。
【0026】上記の実施例では最上位ビットから最も近
い“1”のビット位置を検出したが、これに限らず、最
下位ビットから最も近い“1”のビットを検出する方法
を用いてもよい。
【0027】
【発明の効果】本発明では乗数を1ビットずつシフトす
るのでなく、乗数の最上位ビットあるいは最下位ビット
から「1」のあるビット位置までの桁数にもとづいて、
被乗数を複数ビット分シフトするので非常に高速な乗算
処理が可能となる。
【0028】また、特に最上位ビットを基準として桁数
を検出した場合には、最も大きい桁から順に乗算結果
(積)が得られるため、演算を途中で打ち切った場合で
も、近似値を得ることができる。このような乗算は、有
効桁数が限られるような演算や、近似値を求める演算な
どに有効である。また、回路もDSP等に内蔵されてい
る乗算器に比べて小規模で実現できるものである。
【図面の簡単な説明】
【図1】本発明の乗算回路の一実施例を示す構成図
【図2】本発明の動作を示すフローチャート
【図3】従来の乗算回路の動作を示すフローチャート
【符号の説明】
1 乗数レジスタ 2 被乗数レジスタ 3 積レジスタ 4 絶対値算出器 5 桁数検出器 6 ビット反転器 7 バレルシフタ 8 加算器 9 符号判定器 10〜20 バス 21〜25 信号 26 積判定器 27 バス

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 「0」あるいは「1」の2進数で表現さ
    れる被乗数と乗数を掛け合わせて積を得る乗算回路にお
    いて、乗数の「1」の桁を検出する桁数検出器と、前記
    桁数検出器で検出した桁数だけ被乗数を下位ビットから
    上位ビットへシフトするバレルシフタと、前記バレルシ
    フタでシフトした被乗数を順次加算していく加算器を備
    えた乗算回路。
  2. 【請求項2】 桁数検出器において「1」の桁を検出す
    る場合、最上位ビットから近い順に検出することを特徴
    とする請求項1記載の乗算回路。
  3. 【請求項3】 被乗数と乗数の各々を絶対値を算出し、
    各々の符号を判定する絶対値算出器と、前記絶対値算出
    器での乗数と被乗数の符号判定結果をもとに積の符号判
    定を行う符号判定器を設けたことを特徴とする請求項1
    または2記載の乗算回路。
JP6139008A 1994-06-21 1994-06-21 乗算回路 Pending JPH086762A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6139008A JPH086762A (ja) 1994-06-21 1994-06-21 乗算回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6139008A JPH086762A (ja) 1994-06-21 1994-06-21 乗算回路

Publications (1)

Publication Number Publication Date
JPH086762A true JPH086762A (ja) 1996-01-12

Family

ID=15235330

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6139008A Pending JPH086762A (ja) 1994-06-21 1994-06-21 乗算回路

Country Status (1)

Country Link
JP (1) JPH086762A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014041474A (ja) * 2012-08-22 2014-03-06 Fujitsu Ltd 乗算装置及び乗算方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014041474A (ja) * 2012-08-22 2014-03-06 Fujitsu Ltd 乗算装置及び乗算方法

Similar Documents

Publication Publication Date Title
US20070156803A1 (en) Overflow detection and clamping with parallel operand processing for fixed-point multipliers
JPH07107664B2 (ja) 乗算回路
JPH086762A (ja) 乗算回路
JP2645422B2 (ja) 浮動小数点演算処理装置
JP3019796B2 (ja) 乗算器
JPH09128213A (ja) ブロックフローティング処理システムおよび方法
JP2578482B2 (ja) 浮動小数点演算器
JP2591250B2 (ja) データ処理装置
JPH01282633A (ja) 非正規化数の処理方式
JP3950920B2 (ja) 積和演算器及びデータ処理装置
KR0176883B1 (ko) 복소수 승산기
JP2752698B2 (ja) 浮動小数点加減算回路
JPS6129020B2 (ja)
JPS6285333A (ja) 浮動小数点乗算器丸め処理方式
JP4428778B2 (ja) 演算装置及び演算方法並びに計算装置
JP2777265B2 (ja) 高基数開平演算装置
JP3077880B2 (ja) スティッキービット検出回路
JPH06105421B2 (ja) 逆三角関数演算装置
JPH0540607A (ja) デイジタル信号処理回路
JPH06259228A (ja) 乗算器
JPS626326A (ja) 演算処理装置
JPH11232249A (ja) 積和演算処理装置および積和演算処理方法
JPH0413734B2 (ja)
JPH0361224B2 (ja)
JP2002304288A (ja) データ演算処理装置及びデータ演算処理プログラム