JPH08221256A - 乗算器及び積和演算装置 - Google Patents

乗算器及び積和演算装置

Info

Publication number
JPH08221256A
JPH08221256A JP7025039A JP2503995A JPH08221256A JP H08221256 A JPH08221256 A JP H08221256A JP 7025039 A JP7025039 A JP 7025039A JP 2503995 A JP2503995 A JP 2503995A JP H08221256 A JPH08221256 A JP H08221256A
Authority
JP
Japan
Prior art keywords
output
circuit
stage
cumulative addition
selector
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.)
Granted
Application number
JP7025039A
Other languages
English (en)
Other versions
JP3277089B2 (ja
Inventor
Naoyoshi Yano
直佳 矢野
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP02503995A priority Critical patent/JP3277089B2/ja
Priority to KR1019960003559A priority patent/KR100218825B1/ko
Priority to US08/599,966 priority patent/US5675527A/en
Publication of JPH08221256A publication Critical patent/JPH08221256A/ja
Application granted granted Critical
Publication of JP3277089B2 publication Critical patent/JP3277089B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5324Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel partitioned, i.e. using repetitively a smaller parallel parallel multiplier or using an array of such smaller multipliers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 【目的】 回路面積の削減演算時間をあまり増加させる
ことなく、ハードウェア量の削減を可能にする乗算器を
可能にする乗算器を提供する。 【構成】 クロックCLKの前半で乗算アレイ6を1
6段通過し、必要な乗算の半分の演算を行い、その中間
結果をラッチ回路3に保存する。さらに、クロックCL
Kの後半では、保存した中間結果と残りの乗算アレイ
6の16段の通過分との演算を行う。そして、次のクロ
ックCLKの前半では、乗算アレイ6からの出力結果
を加算して出力する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データ処理プロセッサ
やマイクロプロセッサ等の演算装置として使用される乗
算器及び積和演算装置に関する。
【0002】
【従来の技術】従来、この種の分野の技術としては、例
えば図14〜図17に示すようなものがあった。
【0003】図14は、キャリーセーブアダー方式を用
いた従来の乗算器の構成を示す図である。
【0004】この乗算器は、8ビット×8ビットの乗算
を行う機能を有している。すなわち、8ビットの被乗数
データX<0:7>と8ビットの乗数データY<0:7
>との乗算を行い、乗算結果OUT<0:15>を出力
する。
【0005】同図に示すように、この乗算器は、被乗数
Xを保持する8ビットの被乗数レジスタ101と、乗数
Yを保持する8ビットの乗数レジスタ102と、乗算部
103とから構成されている。
【0006】乗算部103は、8段の乗算アレイ104
と、最終段の乗算アレイに接続されたキャリールックア
ヘッドアダー105とで構成されている。乗算アレイ1
04は、各段毎に、部分積を発生する8個のANDゲー
ト104aより成る部分積生成回路と、生成された部分
積を累積加算する8個の全加算器104b及び1個の半
加算器104cより成る累積加算回路とで構成されてい
る。
【0007】ここで、全加算器104bの入力A,B,
Cに対する出力Z,COの真理値表を図15(a)に示
し、半加算器104cの入力B,Cに対する出力Z,C
Oの真理値表を図15(b)に示す。
【0008】次に動作を説明する。
【0009】まず、第1段目の乗算アレイ104では、
被乗数レジスタ101の出力X<0:7>と乗数レジス
タ102の出力Y<7>の論理積が計算され、該1段目
の乗算アレイ104の出力は2段目の乗算アレイ104
に加えられる。次に、2段目の乗算アレイ104では、
1段目の乗算アレイ104の出力と、被乗数レジスタ1
01の出力X<0:7>と、乗数レジスタ102の出力
Y<6>とを用いて、部分積の累積加算が行われる。
【0010】同様にして、3段目から8段目までの乗算
アレイ104によって累積加算が順次行われて、最後に
キャリールックアヘッドアダー105により8段目の乗
算アレイの出力に対してキャリー先見加算が行われる。
その結果、キャリールックアヘッドアダー105の出力
が乗算結果OUT<0:8>として、さらに2段目から
8段目の最下位ビットに位置する半加算器104cの出
力が、それぞれ乗算結果OUT<9:15>として乗算
結果が生成される。
【0011】図16は、キャリーセーブアダー方式を用
いた従来の積和演算器の構成を示す図である。
【0012】この積和演算器は、8ビット×8ビット+
16ビットの積和演算を行う機能を有している。すなわ
ち、8ビットの被乗数データX<7:0>と8ビットの
乗数データY<7:0>との乗算を行い、さらに、16
ビットの加算を行って積和演算結果OUT<15:0>
を出力する。
【0013】この積和演算器は、図16に示すように、
被乗数Xを保持する8ビットの被乗数レジスタ111
と、乗数Yを保持する8ビットの乗数レジスタ112
と、乗算部113とを備えている。
【0014】乗算部113は、被乗数レジスタ111及
び乗数レジスタ112の出力側が接続された8段の乗算
アレイ114と、最終段の乗算アレイ114に接続され
た乗算結果レジスタ115と、キャリールックアヘッド
アダー(CLA付き加算器)116とで構成されてい
る。
【0015】乗算アレイ114は、各段毎に、部分積を
発生する8個のANDゲート114aより成る部分積生
成回路と、生成された部分積を累積加算する8個の全加
算器114bより成る累積加算回路とで構成されてい
る。さらに、乗算結果レジスタ115は、キャリーセー
ブ状態(キャリー(桁上げ)とサム(和)に分かれた状
態)の累積加算結果を保持するための16ビットのレジ
スタであり、キャリールックアヘッドアダー116は、
キャリーセーブ状態の累積加算結果を一般の状態に戻す
ためのキャリールックアヘッド加算器(8ビット+8ビ
ット)である。
【0016】そして、乗算部113の出力側には、乗算
結果と積和データとの加算を行うためのキャリールック
アヘッドアダー117(16ビット+16ビット)が接
続されている。
【0017】このように構成される積和演算器によれ
ば、1段目の乗算アレイ114では、被乗数の各ビット
と乗数最下位ビット<0>とから部分積を生成し、2段
目の乗算アレイ114では、乗数の下位から2ビット目
<1>と被乗数の各ビットとから部分積を生成し、その
生成した部分積と1段目の部分積との累積加算演算を行
う。同様に、部分積の生成と累積加算の動作を8段目ま
で繰り返し行い、被乗数と乗数の乗算結果をキャリーセ
ーブ状態で得る(上述の図14に示す乗算器と同様の動
作)。
【0018】その乗算結果を乗算結果レジスタ115に
一旦格納後、キャリールックアヘッドアダー116で加
算を行い、16ビットの乗算結果を得る。その後、積和
データ<15:0>との加算を行うために再度キャリー
ルックアヘッドアダー117で加算を行って、積和演算
の結果OUT<15:0>を得る。
【0019】図17は、繰り返し加算方式を用いた従来
の乗算器の構成を示す図である。
【0020】この乗算器は、32ビット×32ビットの
乗算を行う機能を有している。すなわち、32ビットの
被乗数データX<0:31>と32ビットの乗数データ
Y<0:31>との乗算を行う。
【0021】同図に示すように、この乗算器は、被乗数
データXを保持する32ビットの被乗数レジスタ121
と、乗数データYを保持する32ビットの乗数レジスタ
122と、乗算途中の累積加算結果を保持する32ビッ
トのレジスタ123と、被乗数レジスタ121とレジス
タ123との内容を加算する32ビットの加算器124
と、乗数レジスタ122の最下位ビットY<31>が
“1”の時に加算器124の出力ADD<0:31>
を、Y<31>が“0”の時にレジスタ123の出力Z
<0:31>を選択して出力するセレクタ125とで構
成されている。なお、最終的に乗算結果は乗数レジスタ
122に格納される。
【0022】レジスタ123の最上位ビットZ<0>に
加算器124のキャリー出力CARRYを書き込むと同
時に、レジスタ123のZ<1:31>にセレクタ12
5の出力SEL<0:30>を書き込み、また、乗数レ
ジスタ122の最上位ビットZ<0>にセレクタ125
の出力の最下位ビットSEL<31>を、乗数レジスタ
122のY<1:31>に乗数レジスタ122のY<
0:30>を書き込む、という一連の処理を32回繰り
返し行う。
【0023】すなわち、1つの処理単位としては、乗数
Yの各桁の値Y<i>(i=0〜31)に応じて、累積
加算結果を保持するレジスタ123に、被乗数X<0:
31>を1ビット右にシフトさせながら足し込む(Y<
i>=1の時)、または足し込まずにレジスタ123の
内容を1ビット右にシフトさせる(Y<i>=0の時)
という処理と、第i番目の処理で確定する乗算結果の上
位から第i番目のビットを乗数レジスタ122の最上位
ビットに、乗数レジスタ122を1ビット右にシフトさ
せながら格納するという処理とを行う。この処理単位を
32回(i=0〜31)繰り返し行った結果、乗算結果
の下位32ビットが乗数レジスタ122に、上位32ビ
ットがレジスタ123にそれぞれ格納されることにな
る。
【0024】
【発明が解決しようとする課題】しかしながら、上記従
来例では、次のような問題点があった。
【0025】(1)1クロック単位での演算となるた
め、1クロック当たり必要なハードウェアを全て装備し
ていなければならず、回路面積的に問題である。すなわ
ち、図14及び図16に示す例では、部分積を計算する
分だけの部分積生成、累積加算回路が必要となるため、
例えば32ビット×32ビットの演算では、32×32
=1024個もの全加算器及び部分積生成回路が必要と
なり、回路形成面積の増大を招く。
【0026】(2)図17の例では、必要となる部品が
上述の図14に示す例と比べて非常に少なくて済む。し
かし、加算を乗算のビット数分だけ繰り返すため、ビッ
ト幅が大きくなればなるほど演算時間が膨大になり、高
性能な演算を行うことができない。
【0027】本発明は、上述の如き従来の問題点を解決
するためになされたもので、その目的は、演算処理時間
をあまり増大させることなく、ハードウェア量を削減し
た乗算器および演算処理時間を増大させることなく、ハ
ードウェア量を削減した積和演算器を提供するものであ
る。
【0028】またその他の目的は、回路面積の削減とを
可能にする乗算器及び積和演算装置を提供することを目
的とする。
【0029】
【課題を解決するための手段】上記目的を達成するため
に、請求項1記載の発明である乗算器の特徴は、被乗数
データを保持する被乗数保持回路と、乗数データの上位
から所定ビットを保持する乗数保持回路と、クロックの
前半または後半により前記乗数データの下位から所定ビ
ットと前記乗数保持回路の出力とを切り替える第1のセ
レクタと、中間和データを保持する中間和保持回路と、
前記クロックの前半または後半により初期値と前記中間
和保持回路の出力とを切り替える第2のセレクタと、前
記第1のセレクタの出力と前記被乗数保持回路の出力と
に基づいて部分積を生成する複数段の部分積生成回路
と、前記第2のセレクタの出力と前記各段の部分積生成
回路の出力とに基づいて累積加算を行って乗算の中間結
果である前記中間和データを生成する複数段の累積加算
回路と、該累積加算回路の所定段の出力と前記各段の累
積加算回路の一部とを保持する累積加算結果保持回路
と、前記各段の累積加算回路の出力の1部を格納する出
力保持回路とを有する乗算器であって、前記クロックの
前半または後半の第1タイミング時には、前記第1のセ
レクタにより前記乗数データの下位から所定ビットを選
択し且つ前記第2のセレクタにより前記初期値を選択
し、前記各段の部分積生成回路は前記第1のセレクタの
出力1ビットと前記被乗数保持回路の各ビットの出力と
から部分積を生成すると共に、前記各段の累積加算回路
は前記第2のセレクタの出力または前段の累積加算回路
の出力と前記部分積生成回路の出力との加算を行い、そ
の所定段の累積加算回路の出力を前記中間和データとし
て中間和保持回路に書き込み、且つ前記各段の累積加算
回路の出力の所定ビット数を前記出力保持回路の所定の
ビット位置に書き込み、前記クロックが切り替ったクロ
ック後半または前半の第2タイミング時には、前記第1
のセレクタにより前記乗数保持回路の出力を選択し且つ
前記第2のセレクタにより前記中間和保持回路の出力を
選択し、前記各段の部分積生成回路は前記第1のセレク
タの出力1ビットと前記被乗数保持回路の各ビットの出
力とから部分積を生成すると共に、前記各段の累積加算
回路は前記第2のセレクタの出力または前段の累積加算
回路の出力と前記部分積生成回路の出力との加算を行
い、その所定段の累積加算回路の出力と前記各段の累積
加算回路の出力の所定ビット数とを前記累積加算結果保
持回路に書き込むことである。
【0030】請求項2の発明である乗算器の特徴は、被
乗数データを保持する被乗数保持回路と、乗数データの
上位から所定ビットを保持する乗数保持回路と、クロッ
クの前半または後半により前記乗数データの下位から所
定ビットと前記乗数保持回路の出力とを切り替える第1
のセレクタと、該第1のセレクタの出力をエンコードす
るエンコード回路と、中間和データを保持する中間和保
持回路と、前記クロックの前半または後半により初期値
と前記中間和保持回路の出力とを切り替える第2のセレ
クタと、前記エンコード回路の出力と前記被乗数保持回
路の出力とに基づいて部分積を生成する複数段の部分積
生成回路と、前記第2のセレクタの出力または前段の累
積加算回路の出力と前記各段の部分積生成回路の出力と
に基づいて累積加算を行って乗算の中間結果である前記
中間和データを生成する複数段の累積加算回路と、該累
積加算回路の所定段の出力と前記各段の累積加算回路の
出力の一部とを保持する累積加算結果保持回路と、前記
各段の累積加算回路の出力の1部を格納する出力保持回
路とを有する乗算器であって、前記クロックの前半また
は後半の第1タイミング時には、前記第1のセレクタに
より前記乗数データの下位から所定ビットを選択し且つ
前記第2のセレクタにより前記初期値を選択し、前記各
段の部分積生成回路は前記エンコード回路のエンコード
結果と前記被乗数保持回路の出力とから部分積を生成す
ると共に、前記各段の累積加算回路は前記第2のセレク
タの出力または前段の累積加算回路の出力と前記部分積
生成回路の出力との加算を行い、その所定段の累積加算
回路の出力を前記中間和データとして中間和保持回路に
書き込み、且つ前記各段の累積加算回路の出力の所定ビ
ット数を前記出力保持回路の所定のビット位置に書き込
み、前記クロックが切り替ったクロック後半または前半
の第2タイミング時には、前記第1のセレクタにより前
記乗数保持回路の出力を選択し且つ前記第2のセレクタ
により前記中間和保持回路の出力を選択し、前記各段の
部分積生成回路は前記エンコード回路の出力と前記被乗
数保持回路の出力とから部分積を生成すると共に、前記
各段の累積加算回路は前記第2のセレクタの出力または
前段の累積加算回路の出力と前記部分積生成回路の出力
との加算を行い、その所定段の累積加算回路の出力と前
記各段の累積加算回路の出力の所定ビット数とを前記累
積加算結果保持回路に書き込むことにある。
【0031】請求項3記載の発明である乗算器の特徴
は、被乗数データを保持する被乗数保持回路と、乗数デ
ータの上位から所定ビットを保持する乗数保持回路と、
クロックの前半または後半により前記乗数データの下位
から所定ビットと前記乗数保持回路の出力とを切り替え
る第1のセレクタと、該第1のセレクタの出力をエンコ
ードするエンコード回路と、前記エンコード回路のエン
コード結果を前記クロックの論理値が変化する度に保持
して出力するエンコード結果保持回路と、中間和データ
を保持する中間和保持回路と、前記クロックの後半また
は前半により初期値と前記中間和保持回路の出力とを切
り替える第2のセレクタと、前記エンコード結果保持回
路の出力と前記被乗数保持回路の出力とに基づいて部分
積を生成する複数段の部分積生成回路と、前記第2のセ
レクタの出力または前段の累積加算回路の出力と前記各
段の部分積生成回路の出力とに基づいて累積加算を行っ
て乗算の中間結果である前記中間和データを生成する複
数段の累積加算回路と、該累積加算回路の所定段の出力
と前記各段の累積加算回路の出力の一部とを保持する累
積加算結果保持回路と、前記各段の累積加算回路の出力
の1部を格納する出力保持回路とを有する乗算器であっ
て、前記クロックの前半または後半の第1タイミング時
には、前記第1のセレクタにより前記乗数データの下位
から所定ビットを選択し、前記エンコード回路は該第1
のセレクタの出力のエンコードを行って、そのエンコー
ド結果を前記エンコード結果保持回路に書き込み、前記
クロックが切り替ったクロック後半または前半の第2タ
イミング時には、前記第2のセレクタにより前記初期値
を選択し、前記各段の部分積生成回路は前記エンコード
結果保持回路の出力と前記被乗数保持回路の出力とから
部分積を生成すると共に、前記各段の累積加算回路は前
記第2のセレクタの出力または前段の累積加算回路の出
力と前記部分積生成回路の出力との加算を行い、その所
定段の累積加算回路の出力を前記中間和データとして中
間和保持回路に書き込み、且つ前記各段の累積加算回路
の出力の所定ビット数を前記出力保持回路の所定のビッ
ト位置に書き込み、加えて前記第1のセレクタにより前
記乗数保持回路の出力を選択し、前記エンコード回路は
該第1のセレクタの出力のエンコードを行ってそのエン
コード結果を前記エンコード結果保持回路に書き込み、
さらに前記クロックが切り替ったクロック前半または後
半の第3タイミング時には、前記第2のセレクタにより
前記中間和保持回路の出力を選択し、前記各段の部分積
生成回路は前記エンコード結果保持回路の出力と前記被
乗数保持回路の出力とから部分積を生成すると共に、前
記各段の累積加算回路は前記第2のセレクタの出力また
は前段の累積加算回路の出力と前記部分積生成回路の出
力との加算を行い、その所定段の累積加算回路の出力と
前記各段の累積加算回路の出力の所定ビットとを前記累
積加算結果保持回路に書き込むことにある。
【0032】請求項4記載の発明である積和演算装置の
特徴は、前記請求項1記載の乗算器における前記累積加
算結果保持回路の出力側に、キャリーセーブアダーを介
してキャリープロパゲーションアダーを設けた積和演算
装置であって、前記第2タイミング後に前記クロックが
切り替ったクロック前半または後半の第3タイミング時
に、前記キャリーセーブアダーによって前記累積加算結
果保持回路の出力と積和演算データとの加算を行い、そ
の加算結果を再度前記キャリープロパゲーションアダー
によって加算して積和演算結果を出力することにある。
【0033】請求項5記載の発明である積和演算装置の
特徴は、前記請求項2記載の乗算器における前記累積加
算結果保持回路及び前記出力保持回路の出力側に、キャ
リーセーブアダーを介してキャリープロパゲーションア
ダーを設けた積和演算装置であって、前記第2タイミン
グ後に前記クロックが切り替ったクロック前半または後
半の第3タイミング時に、前記キャリーセーブアダーに
よって前記累積加算結果保持回路の出力及び前記出力保
持回路の出力と積和演算データとの加算を行い、その加
算結果を再度前記キャリープロパゲーションアダーによ
って加算して積和演算結果を出力することにある。
【0034】請求項6記載の発明である積和演算装置の
特徴は、前記請求項3記載の乗算器における前記累積加
算結果保持回路及び前記出力保持回路の出力側に、キャ
リーセーブアダーを介してキャリープロパゲーションア
ダーを設けた積和演算装置であって、前記第3タイミン
グ後に前記クロックが切り替ったクロック後半または前
半の第4タイミング時に、前記キャリーセーブアダーに
よって前記累積加算結果保持回路の出力及び前記出力保
持回路の出力と積和演算データとの加算を行い、その加
算結果を再度前記キャリープロパゲーションアダーによ
って加算して積和演算結果を出力することにある。
【0035】
【作用】上述の如き構成の請求項1記載の発明である乗
算器によれば、クロックの前半または後半の第1タイミ
ング時には、各段の部分積生成回路は乗数データの下位
側の1ビットと被乗数データの各ビットとから部分積を
生成し、累積加算回路は初期値または前段の累積加算回
路の出力と前記部分積との累積加算を行って必要な乗算
の半分の演算を行い、その累積結果を中間和データとし
て中間和保持回路に書き込むと共に、各段の累積加算回
路の出力の所定ビット数を出力保持回路の所定のビット
位置に書き込む。クロックが切り替った第2タイミング
時には、各段の部分積生成回路は乗数保持回路の出力の
1ビットと被乗数データの各ビットとから部分積を生成
し、各段の累積加算回路は前記中間和データまたは前段
の累積加算回路の出力と前記部分積との累積加算を行っ
て残りの半分の演算を行い、その所定段の累積加算結果
と各段の累積加算回路の出力の所定ビット数を累積加算
結果保持回路に書き込む。これにより、部分積生成回路
及び累積加算回路を2分割して半サイクル単位で使用す
ることができ、回路規模が小さくなり、しかも演算時間
も増大しない。
【0036】請求項2記載の発明である乗算器によれ
ば、クロックの前半または後半の第1タイミング時に
は、各段の部分積生成回路は乗数データの下位から所定
ビットをエンコードしたエンコード回路のエンコード結
果と被乗数保持回路の出力とから部分積を生成し、累積
加算回路は初期値または前段の累積加算回路の出力と前
記部分積との累積加算を行って必要な乗算の半分の演算
を行い、その所定段からの累積加算結果を中間和データ
として中間和保持回路に書き込み、且つ各段の累積加算
回路の出力の所定ビット数を出力保持回路の所定のビッ
ト位置に書き込む。クロックが切り替った第2タイミン
グ時には、各段の部分積生成回路はエンコード回路の出
力と被乗数保持回路の出力とから部分積を生成し、各段
の累積加算回路は中間和保持回路の出力または前段の累
積加算回路の出力と部分積生成回路の出力との累積加算
を行って残りの半分の演算を行い、その所定段の累積加
算結果と各段の累積加算回路の出力の所定ビット数とを
累積加算結果保持回路に書き込む。これにより、前記エ
ンコード回路を例えばブースのアルゴリズムを用いて構
成することにより、部分積生成回路及び累積加算回路の
段数を上記請求項1記載の発明に比べて更に削減するこ
とができるので、累積加算過程の時間短縮が可能とな
る。
【0037】請求項3記載の発明である乗算器によれ
ば、クロックの前半または後半の第1タイミング時に
は、エンコード回路は乗数データの下位から所定ビット
のエンコードを行って、そのエンコード結果をエンコー
ド結果保持回路に書き込む。クロックが切り替った第2
タイミング時には、各段の部分積生成回路は第1タイミ
ング時に保持されたエンコード結果保持回路の出力と被
乗数保持回路の出力とから部分積を生成すると共に、各
段の累積加算回路は初期値または前段の累積加算回路の
出力と部分積生成回路の出力との加算を行って必要な乗
算の半分の演算を行い、中間和データを中間和保持回路
に書き込み、且つ各段の累積加算回路の出力の所定ビッ
ト数を出力保持回路の所定のビット位置に書き込み、加
えてエンコード回路は乗数保持回路の出力のエンコード
を行ってそのエンコード結果をエンコード結果保持回路
に書き込み、さらにクロックが切り替った第3タイミン
グ時には、各段の部分積生成回路は第2タイミング時に
保持されたエンコード結果保持回路の出力と被乗数保持
回路の出力とから部分積を生成すると共に、各段の累積
加算回路は第2タイミング時に保持された中間和保持回
路の出力または前段の累積加算回路の出力と部分積生成
回路の出力との加算を行って残りの半分の演算を行い、
その所定段の累積加算回路の出力と各段の累積加算回路
の出力の所定ビット数とを累積加算結果保持回路に書き
込む。これにより、上述の請求項2記載の発明の乗算器
でオーバーヘッドになっていたエンコーダ回路の通過時
間として半クロックを割り当てて、半クロック単位の動
作を行うことができ、演算時間は半サイクル増加するも
のの、各半サイクルで行う処理の所要時間が均等に近く
なるので、演算器を制御するクロックの周波数を高くす
ることが可能となる。
【0038】請求項4記載の発明である積和演算装置に
よれば、上述の請求項1記載の乗算器のキャリーセーブ
状態の乗算結果と積和演算データとをキャリーセーブア
ダーによって一旦加算し、その結果を更にキャリープロ
パゲーションアダーで加算するので、積和演算の加算の
時間を短縮することができる。
【0039】請求項5記載の発明である積和演算装置に
よれば、上述の請求項2記載の乗算器のキャリーセーブ
状態の乗算結果と積和演算データとをキャリーセーブア
ダーによって一旦加算し、その結果を更にキャリープロ
パゲーションアダーで加算するので、積和演算の加算の
時間を短縮することができる。
【0040】請求項6記載の発明である積和演算装置に
よれば、上述の請求項3記載の乗算器のキャリーセーブ
状態の乗算結果と積和演算データとをキャリーセーブア
ダーによって一旦加算し、その結果を更にキャリープロ
パゲーションアダーで加算するので、積和演算の加算の
時間を短縮することができる。
【0041】
【実施例】以下、本発明の実施例を図面に基づいて説明
する。図1は、本発明の第1実施例を示す乗算器の全体
構成図である。
【0042】この乗算器は、32ビット×32ビットの
乗算を行う機能を有するもので、被乗数32ビットをク
ロックの“H”レベルでスルー、“L”レベルでホール
ドする32ビットのラッチ回路1と、乗数32ビットの
上位16ビットをクロックの“H”レベルでスルー、
“L”レベルでホールドする16ビットのラッチ回路2
と、後述する乗算アレイ6の最終段から出力される中間
和データ(キャリーセーブ状態のまま)をクロックの
“H”レベルでスルー、“L”レベルでホールドする6
3ビットのラッチ回路3とを備えている。
【0043】さらに、クロックの“H”/“L”レベル
で乗数の下位16ビットとラッチ回路2の出力との切り
替えを行う第1のセレクタ4と、クロックの“H”/
“L”レベルで全63ビットが0データであるALL0
データ(初期値)とラッチ回路3の出力との切り替えを
行う第2のセレクタ5とが設けられ、これら第1及び第
2のセレクタ4,5及び前記ラッチ回路1の出力側が1
6段の乗算アレイ6に接続されている。
【0044】乗算アレイ6の各段は、図2に示すよう
に、32ビット分のANDゲートから成る部分積生成回
路6aと32ビット分の全加算器から成る累積加算回路
6bとで構成され、この構成の回路が上述の図14に示
すものと同様の接続方法で16段接続されて乗算アレイ
6が構成されている。
【0045】ここで、ラッチ回路1及びラッチ回路2の
出力をそれぞれA<31:0>、B<15:0>とし、
そして、乗算アレイ6の各段の出力(累積加算回路6b
の出力)のうち、キャリー(桁上げ)出力をCO<3
1:0>、サム(和)出力をSO<31:0>とし、特
に乗算アレイ6の最終段のキャリー出力CO<31:0
>をFCO<31:0>、サム出力SO<31:1>を
FSO<30:0>とし、乗算アレイ6の各段の最下位
ビットからのサム出力をZ<15:0>(i段目からの
出力をZ<i−1>)とする。
【0046】また、ラッチ回路3の出力は、乗算アレイ
6の最終段から出力される中間和データであるFCO<
31:0>及びFSO<30:0>に対応するものをそ
れぞれCC<31:0>及びCS<30:0>とする。
さらに、セレクタ4の出力をD<15:0>とすると共
に、セレクタ5の出力は、入力がCC<31:0>また
はALL0データに対応するものをEC<31:0>と
し、入力がCS<30:0>またはALL0データに対
応するものをES<30:0>とする。
【0047】乗算アレイ6の出力側には、レジスタ(F
/F)7及びラッチ回路8,9が接続されている。レジ
スタ7は、乗算アレイ6各段の累積加算回路6aの最下
位ビットから出力されるZ<15:0>をクロックCL
Kの立下がりに同期して格納する16ビットのレジスタ
である。ラッチ回路8は同じくZ<15:0>を保持す
る16ビットのラッチ回路であり、クロックCLKの
“L”レベルでスルー、“H”レベルでホールド状態と
なる。また、ラッチ回路9は、乗算アレイ6の最終段の
出力FSO<30:0>及びFCO<31:0>を保持
し、クロックCLKの“L”レベルでスルー、“H”レ
ベルでホールド状態となる。そして、ラッチ回路9の出
力側には、キャリーセーブ状態にある乗算結果の最終加
算を行うための加算器10が接続されている。
【0048】なお、レジスタ7の出力をG<15:0>
とし、ラッチ回路8の出力をH<15:0>とする。ラ
ッチ回路9の出力で、入力が乗算アレイ6の最終段のキ
ャリー出力に対応するものをOC<31:0>とし、サ
ム出力に対応するものをOS<30:0>とする。そし
て、加算器10の出力をI<31:0>とし、これらG
<15:0>、H<15:0>、及びI<31:0>か
ら成る乗算器の出力をOUT<63:0>とする。
【0049】次に、上記乗算アレイ6の構成及び機能に
ついて説明する。
【0050】乗算アレイ6の各段は、上述したように部
分積生成回路6a及び累積加算回路6bで構成されてお
り、図2に示すように、累積加算回路6bの各ビットを
構成する全加算器には、入力データa,bと、部分積生
成回路6aの各ビットを構成するANDゲートの出力と
がそれぞれ供給される。ただしb<31>=0とする。
部分積生成回路6aの各ANDゲートの一方入力側には
前記ラッチ回路1の出力A<31:0>が供給され、そ
の他方入力側には前記セレクタ4の出力D<15:0>
のうちの1ビットが共通して供給される。
【0051】ここで、前記入力データa,bは、それぞ
れ32ビットのビット幅<31:0>を有し、セレクタ
5の出力EC<31:0>が1段目の入力データaとし
て供給され、セレクタ5の出力のES<30:0>が1
段目の入力データbとして供給されるようになってい
る。
【0052】そして、乗算アレイ6の各段は、ラッチ回
路1の出力A<31:0>の各ビットとセレクタ4の出
力D<15:0>の1ビットにより部分積生成回路6a
で部分積を生成し、その生成した部分積と入力データ
a,bとの加算を累積加算回路6bで行い、キャリー出
力CO<31:0>とサム出力SO<31:0>を生成
する。なお、累積加算回路6bを構成する全加算器の真
理値表は、入力データa,b及び部分積生成回路6aの
出力を前述の図15(a)の真理値表の入力側A,B,
Cにそれぞれ対応させ、CO及びSOを図15(a)の
CO及びZにそれぞれ対応させたものとなる。
【0053】16段の接続関係を含めて乗算アレイ6を
具体的に説明すると、乗算アレイ6の1段目では、入力
データb<31>=0として前述の動作を行って加算結
果を得て(セレクタ4の出力としてD<0>が供給され
る)、サム出力SO<0>がZ<0>として外部へ出力
され、残りのサム出力SO<31:1>は2段目の入力
データb<30:0>として出力され、またキャリー出
力CO<31:0>は2段目の入力データa<31:0
>として出力されるようになっている。
【0054】乗算アレイ6の2段目では、同様に前述の
動作を行って加算結果を得て(セレクタ4の出力として
D<1>が供給される)、サム出力SO<0>がZ<1
>として外部へ出力され、残りのサム出力SO<31:
1>は3段目の入力データb<30:0>として出力さ
れ、またキャリー出力CO<31:0>は3段目の入力
データa<31:0>として出力されるようになってい
る。
【0055】乗算アレイ6の3段目以降では、i段目
(i<16)とすると、2段目と同様の動作を行って加
算結果を得て(セレクタ4の出力としてD<i−1>が
供給される)、i段目の出力のサム出力SO<0>はZ
<i−1>として外部へ出力され、残りのサム出力SO
<31:1>は(i+1)段目の入力データb<30:
0>として出力され、キャリー信号CO<31:0>は
(i+1)段目の入力データa<31:0>として出力
されるようになっている。そして、最終段(16段目)
の出力のサム出力SO<0>はZ<15>として外部へ
出力され、残りのサム出力SO<31:1>及びキャリ
ー出力CO<31:0>は、そのまま外部へ出力され
る。
【0056】次に、以上のように構成される本実施例の
乗算器の乗算動作を図3を参照しつつ説明する。
【0057】(A)Eステージにおけるクロック前半
の動作 まず、図3に示すように、Eステージにおけるクロック
CLKの前半(“H”レベル)では、被乗数をラッチ
回路1に書き込むと同時に、乗数上位16ビットをラッ
チ回路2に書き込む。そして、セレクタ4は乗数下位1
6ビットを選択する。すると、乗数下位16ビットがセ
レクタ4の出力D<15:0>として<0>から<15
>の順で乗算アレイ6の1段目から16段目の部分積生
成回路6aにおける各ANDゲートの一方入力側へ供給
される。
【0058】この時、ラッチ回路1はスルー状態であ
り、従って、被乗数であるラッチ回路1の出力A<3
1:0>は、乗算アレイ6各段の部分積生成回路6aの
各ANDゲートの他方入力側へ供給される。これによっ
て、乗算アレイ6各段において部分積が生成される。一
方、セレクタ5はALL0データを選択するので、乗算
アレイ6の1段目の入力データa<31:0>及びb<
30:0>は全て0が供給される。
【0059】これらの各データにより累積加算が行わ
れ、出力Z<15:0>と、最終段のサム出力FSO<
30:0>及びキャリー出力FCO<31:0>とが得
られる。
【0060】そして、乗算アレイ6の最終段からの出力
であるFCO<31:0>及びFSO<30:0>はラ
ッチ回路3のみに書き込まれ、出力Z<15:0>は、
ラッチ回路8がホールド状態であるのでレジスタ7のみ
に書き込まれる。
【0061】(B)Eステージにおけるクロック後半
の動作 EステージにおけるクロックCLKの後半(“L”レ
ベル時)では、ラッチ回路1及びラッチ回路2は共にク
ロックCLKの前半で書き込まれた値を保持してお
り、セレクタ4はラッチ回路2の出力(乗数上位16ビ
ット)を選択する。すると、乗数上位16ビットが、セ
レクタ4の出力D<15:0>として<0>から<15
>の順で乗算アレイ6の1段目から16段目の部分積生
成回路6aにおける各ANDゲートの一方入力側へ供給
される。
【0062】そして、ラッチ回路1に保持されている被
乗数A<31:0>が、乗算アレイ6各段の部分積生成
回路6aの各ANDゲートの他方入力側へ供給される。
これによって、乗算アレイ6各段において部分積が生成
される。
【0063】また、ラッチ回路3は、クロックCLKの
前半で書き込まれた値を保持しており、セレクタ5
は、ラッチ回路3の出力CC<31:0>及びCS<3
0:0>をセレクトする。その結果、乗算アレイ6の1
段目の入力データa<31:0>としてEC<31:0
>が、また入力データb<30:0>としてはES<3
0:0>がそれぞれ供給される。
【0064】これらのデータにより累積加算が行われ、
乗算アレイ6からの出力Z<15:0>はラッチ回路8
のみに書き込まれ、乗算アレイ6の最終段の出力FCO
<31:0>,FSO<30:0>はラッチ回路9のみ
に書き込まれる。
【0065】(C)Mステージにおけるクロック前半
の動作 Eステージの次のMステージにおけるクロックCLKの
前半(“H”レベル時)では、レジスタ7の出力G<
15:0>はそのまま最終出力OUT<15:0>とな
り、ラッチ回路8の出力H<15:0>はそのまま最終
出力OUT<31:16>となる。そして、ラッチ回路
9の出力のOS<30:0>及びOC<31:0>につ
いては、加算器10で最終加算を行ってI<31:0>
を生成し、そのまま最終出力OUT<63:32>とな
る。
【0066】このように本実施例では、図3に示すよう
にクロックCLKの前半で乗算アレイ6を16段通過
して必要な乗算の半分の演算を行い、その中間結果をラ
ッチ回路3に保存する。さらに、クロックCLKの後半
では、保存した中間結果と残りの乗算アレイ6の16
段の通過分との演算を行う。そして、次のクロックCL
Kの前半では、乗算アレイ6からの出力結果を加算し
て出力する。
【0067】このような一連の動作を行うことにより、
乗算アレイを2分割して半クロック単位で繰り返し利用
することができるので、約半分のハードウェア量で図1
4に示す乗算器と同性能の乗算器を得ることができる。
また、半クロック単位で区切っているので、外部との同
期が取りやすく、プリチャージ型の加算器の使用にも適
している。
【0068】図4は、本発明の第2実施例を示す乗算器
の全体構成図である。
【0069】本実施例の乗算器は、ブースのアルゴリズ
ムを用いて32ビット×32ビットの乗算演算(符号付
き乗算)を行う乗算器であり、ブースのアルゴリズムを
用いることにより部分積の生成が1/2で済むため、上
記第1実施例では16段の乗算アレイが本実施例では8
段で構成でき、これによって累積加算過程の時間短縮が
可能となる。
【0070】同図に示すように、本実施例の乗算器は、
被乗数32ビットをクロックの“H”レベルでスルー、
“L”レベルでホールドする32ビットのラッチ回路2
1と、乗数32ビットの上位17ビットをクロックの
“H”レベルでスルー、“L”レベルでホールドする1
7ビットのラッチ回路22と、後述する乗算アレイ27
の最終段から出力される中間和データをクロックの
“H”レベルでスルー、“L”レベルでホールドする6
2ビットのラッチ回路23とを備えている。
【0071】さらに、クロックの“H”/“L”レベル
で乗数の下位16ビット+“0”とラッチ回路22の出
力との切り替えを行うセレクタ24と、クロックの
“H”/“L”レベルで全62ビットが0データである
ALL0データ(初期値)とラッチ回路23の出力との
切り替えを行うセレクタ25とが設けられている。
【0072】また、セレクタ24の出力側にはブースエ
ンコーダ26が設けられ、このブースエンコーダ26と
共にラッチ回路21及びセレクタ25の出力側には8段
構成の乗算アレイ27が接続されている。ブースエンコ
ーダ26は、2次のブースのアルゴリズムに従って17
ビットの入力データのエンコードを行い、部分積生成の
制御信号Kを発生させるエンコーダである。
【0073】乗算アレイ27の各段は、後述する部分積
生成回路及び累積加算回路から構成され、部分積生成回
路は被乗数の0,1,2倍と−1倍−1あるいは−2倍
−1を生成し、そのいずれかをブースエンコーダ26か
らの制御信号Kによりセレクトする。さらに累積加算回
路は、この部分積生成回路の出力と、それまでの累積加
算結果と−1,−2倍の部分積補正用のデータとが入力
される全加算器(33ビット)から構成されている。な
お、ブースエンコーダ26及び乗算アレイ27について
は後に詳細に説明する。
【0074】この乗算アレイ27には、符号保持用の1
ビットのラッチ回路28が接続されている。このラッチ
回路28は、クロックCLKの前半で乗算アレイ27の
8段目で生成される部分積の符号を保持しておき、その
保持データをクロックCLKの後半で符号の拡張に用い
るための保持回路であり、クロックCLKの“H”レベ
ルでスルー、“L”レベルでホールド状態となる。
【0075】ここで、ラッチ回路21及びラッチ回路2
2の出力をそれぞれA<31:0>、B<16:0>と
する。また、乗算アレイ27の各段のキャリー出力をC
O<32:0>、サム出力をSO<32:0>とし、特
に、乗算アレイ27の最終段のキャリー出力CO<3
2:2>をFCO<30:0>、サム出力SO<32:
2>をFSO<30:0>とし、さらに乗算アレイ27
各段の下位2ビットの出力SO<1:0>、CO<1:
0>をそれぞれZSO、ZCOとして乗算アレイ27の
出力とする。
【0076】また、ラッチ回路23の出力は、乗算アレ
イ27の最終段から出力される中間和データであるFC
O<30:0>及びFSO<30:0>に対応するもの
をそれぞれCC<30:0>及びCS<30:0>とす
る。さらに、セレクタ24の出力をD<16:0>とす
ると共に、セレクタ25の出力は、入力がCC<30:
0>またはALL0データに対応するものをEC<3
0:0>とし、入力がCS<30:0>またはALL0
データに対応するものをES<30:0>とする。
【0077】さらに、乗算アレイ27の出力側には、レ
ジスタ(F/F)29及びラッチ回路30,31が接続
されている。レジスタ29は、乗算アレイ27各段から
出力されるZCO<15:0>及びZSO<15:0>
をクロックCLKの立下がりに同期して格納する32ビ
ットのレジスタであり、その出力はZCO<15:0>
に対応するものをGC<15:0>とし、ZSO<1
5:0>に対応するものをGS<15:0>とする。ラ
ッチ回路30は、同じくZCO<15:0>及びZSO
<15:0>を保持する32ビットのラッチ回路であ
り、クロックCLKの“L”レベルでスルー、“H”レ
ベルでホールド状態となり、その出力はZCO<15:
0>に対応するものをHC<15:0>とし、ZSO<
15:0>に対応するものをHS<15:0>とする。
【0078】また、ラッチ回路31は、乗算アレイ27
の最終段の出力FSO<30:0>及びFCO<30:
0>を保持し、クロックCLKの“L”レベルでスル
ー、“H”レベルでホールド状態となり、その出力はF
SO<30:0>,FCO<30:0>にそれぞれ対応
するものをOS<30:0>,OC<30:0>とす
る。
【0079】そして、F/F29及びラッチ回路30,
31の出力側には加算器32が接続され、この加算器3
2が、キャリーセーブ状態にある乗算結果の各ビットの
キャリー出力及びサム出力の最終加算を行い、乗算器の
出力としてのOUT<63:0>を出力する。
【0080】次に、本実施例の特徴的な部分であるブー
スコンコーダ26及び乗算アレイ27について具体的に
説明する。ブースエンコーダ26は、前述したようにブ
ースのアルゴリズムに従ってセレクタ24の出力のエン
コードを行うものであるが、ここで、ブースのアルゴリ
ズムによるエンコードについて簡単に説明する被乗数X
と乗数Yとの積ZはZ=X*Yと表され、Yを2の補数
で表現すると、
【数1】 となるが、nを偶数として数値部を偶数ビットと奇数ビ
ットに分けて、
【数2】 と表し、さらにその奇数部は、
【数3】 と変形できる。また符号部は、
【数4】 と変形できる。従って乗数Yは、
【数5】 と表される。ここで、i=2jとおくと、
【数6】 となり、積Zは、次の式で表すことができる。
【0081】
【数7】 (菅野卓雄監修,飯塚哲哉編,「CMOS超LSIの設
計」,培風館1989,PP224−226)。
【0082】上記式(1)から明らかなように、ブース
のアルゴリズムを用いることにより、乗数yの隣り合う
3ビットを選択条件とする5入力セレクタとそのセレク
タを制御するセレクト信号とで部分積の生成を行うこと
ができる。
【0083】従って、ブースエンコーダ26は、乗算ア
レイ27の各段に対して前記5入力セレクタを制御する
5本(5ビット)のセレクト信号Kを発生する機能を有
するものとなる。つまり、セレクト信号Kは、5入力セ
レクタに対するセレクト信号であるため各段につき5本
の信号が存在し、乗算アレイ27が8段あるので40本
のセレクト信号K<39:0>となる。
【0084】次に、図5、図6及び図7を用いて上記乗
算アレイ27の構成及び機能について詳細に説明する。
なお、図5は図4中の乗算アレイ27の上位ビット側の
構成を示す図、図6は該乗算アレイ27の下位ビット側
の構成を示す図、及び図7は該乗算アレイ27の3段目
〜8段目の概略構成を示す図である。
【0085】図5〜図7に示すように、乗算アレイ27
の各段は、それぞれ部分積の生成を行う部分積生成回路
27aと、該部分積生成回路27aによって生成された
部分積に基づいて累積加算を行う累積加算回路27bと
から構成されている。
【0086】部分積生成回路27aは、本来、前述のブ
ースのアルゴリズムによって必要となる部分積、即ち、
被乗数の(−2,−1,0,1,2)倍をそれぞれ生成
する手段と、ブースエンコーダ13から供給される5本
のセレクタ信号Kによってそのいずれかを選択するセレ
クタとから成るはずである。しかし、被乗数の−2,−
1倍については、生成する際に反転をとった後、1を加
算しなければならず、時間的にもハードウェア的にもロ
スが大きい。
【0087】そこで、本実施例の各段の部分積生成回路
27aでは、−2倍及び−1倍に限っては反転をとるの
みとし、後の累積加算時において1を加えることとす
る。即ち、各段の部分積生成回路27aは、被乗数の
2,1,0倍、及び−2倍−1,−1倍−1を生成し、
そのうちの1つをブースエンコーダ26からの5本のセ
レクト信号Kによりセレクトする。このとき、被乗数の
±2倍のときは32ビットのデータは33ビットになる
ため、各段の部分積生成回路27aのセレクタからはす
べて33ビットデータc<32:0>として出力するこ
とにする(図7参照)。
【0088】また、各段の累積加算回路27bは、生成
された部分積が33ビットであるために33ビット分の
全加算器で構成されている。加えて、ブースのアルゴリ
ズムによる乗算を行うのに対応して累積加算回路27b
の最上位ビットでは符号の拡張を行う必要が生ずる。
【0089】すなわち、ブースのアルゴリズムにおいて
部分積を加算していく場合の符号の拡張は次のようにし
て行う。例えば、説明を簡単にするために8ビット数ど
うしの乗算を例にとると、部分積の符号を下位側から順
にSGN1,SGN3,SGN5,SGN7とすると、
【数8】 となる(菅野卓雄監修,香山晋編,「超高速ディジタル
・デバイス・シリーズ超高速MOSデバイス」,培風館
1986,PP296)。
【0090】従って、本実施例では、この式(2)を3
2ビットデータに拡張した式を満足するのに必要な信
号、回路を付加して符号拡張を行うことになる。
【0091】本実施例の乗算では、本来ならば一続きの
乗算を、クロックCLKの前半、後半に分けて行うの
で、符号拡張もそれに合わせて、一続きでいうところの
乗算アレイ1段目と9段目とで、異なる拡張を同一のハ
ードウェアで行わなければならない。そこで、クロック
CLKを選択信号とするセレクタによって必要なハード
ウェアをセレクトする。このセレクタは、図5に示す乗
算アレイ27の1段目上位ビット側のセレクタ27a,
27b、及び2段目上位ビット側のセレクタ27c,2
7dとして示されている。
【0092】さらに、乗算アレイ27の最終段(8段
目)と最初の段(1段目)との間で、符号拡張のために
8段目で生成した部分積の符号を保持しておく必要があ
る。そのため、ラッチ回路(中間和保持回路)23と同
一の動作をする前記ラッチ回路28を設け、クロック前
半でこのラッチ回路28に8段目で生成した部分積の符
号を書き込み、クロック後半で符号拡張用の入力として
1段目の累積加算回路27bへ入力する。
【0093】すなわち、乗算アレイ27の累積加算回路
27bの1段目では、図5に示すように33ビット分の
全加算器のほかに符号拡張用の全加算器27eが追加さ
れ、この全加算器27eと上位2ビット(32,33ビ
ット目)の全加算器(図5のa<32>,b<32:3
1>)で符号拡張が行われ(27a,27bともに0を
セレクト)、その結果が2段目へ受け渡される。2段目
の累積加算回路27bでは、図5に示すようにセレクタ
27c,27dを用いて上位2ビット(32,33ビッ
ト目)の全加算器で符号拡張が行われ、その結果が3段
目へ受け渡される。3段目以降においては図5に示すよ
うに上位2ビット(32,33ビット目)の全加算器で
符号拡張が行われ、次段へと受け渡され、そして、最終
段(8段目)の部分積生成回路27aの出力C<32>
が前記ラッチ回路28へ入力されるようになっている。
【0094】また、各段の累積加算回路27bは、後に
詳細するように前段の累積加算結果と、その段の部分積
生成回路27aによって生成された部分積との加算を行
うが、その際に、ブースのエンコード結果(セレクト信
号K)によって、部分積として−2倍もしくは−1倍が
選択された場合には、該累積加算回路27bの最下位ビ
ットの全加算器の入力の1つa<0>(キャリーインに
相当する)に“1”を入力し、それ以外が選択された場
合には“0”を入力する。この切り替えは図6に示すよ
うに各段に設けられたセレクタ27fで行う。
【0095】そして、1段目の累積加算回路27bで
は、セレクタ25の出力ES<30:0>,EC<3
0:0>と、1段目の部分積生成回路27aで生成した
部分積c<32:0>との加算が行われる。そして、得
られた1段目の出力CO<32:0>,SO<32:0
>のうちのCO<1:0>,SO<1:0>は、それぞ
れZCO<1:0>,ZSO<1:0>として外部へ出
力され、残りの出力CO<32:2>,SO<32:2
>は、それぞれ2段目の累積加算回路27bの入力デー
タa<31:1>,b<30:0>として供給される。
【0096】2段目の累積加算回路27bでは、1段目
からの中間結果と2段目の部分積生成回路27aで生成
された部分積との累積加算を行う。得られた2段目の出
力CO<32:0>,SO<32:0>のうちのCO<
1:0>,SO<1:0>は、それぞれZCO<3:2
>,ZSO<3:2>として外部へ出力され、残りの出
力CO<32:2>,SO<32:2>は、それぞれ3
段目の累積加算回路27bの入力データa<31:1
>,b<30:0>として供給される。
【0097】3段目以降の累積加算回路27bでは、1
段目と2段目との接続と同様に、i段目(i<8)とす
ると、i段目の出力のSO<1:0>はZSO<2i−
1:2i−2>として、さらにCO<1:0>はZCO
<2i−1:2i−2>として外部へ出力され、残りの
SO<32:2>は(i+1)段目の入力データb<3
0:0>として出力され、CO<32:2>は(i+
1)段目の入力データa<31:1>として出力される
ようになっている。そして、最終段の8段目の出力のS
O<1:0>はZSO<15:14>として、さらにC
O<1:0>はZCO<15:14>として外部へ出力
され、残りのSO<32:2>及びCO<32:2>
は、そのまま外部へ出力される。
【0098】次に、以上のように構成される本実施例の
乗算器の乗算動作を図8を参照しつつ説明する。
【0099】(A)Eステージにおけるクロック前半
の動作 まず、図8に示すように、Eステージにおけるクロック
CLKの前半(“H”レベル)では、被乗数32ビッ
トをラッチ回路21に書き込むと同時に、乗数上位17
ビットをラッチ回路22に書き込む。そして、セレクタ
24は乗数下位16ビットの下位に“0”を付加した1
7ビットデータを選択する。なお、乗数は32ビットで
あるので、乗数の下位16ビット目はラッチ回路22に
保存されると共に、クロックCLKの前半でも、ブース
エンコーダ26へ供給される。
【0100】セレクタ24が乗数の前記下位側を選択す
ると、該セレクタ24の出力D<16:0>はブースエ
ンコーダ26によってエンコードされ、セレクト信号K
として乗算アレイ27の各段の部分積生成回路27aへ
供給される。この時、ラッチ回路21はスルー状態であ
り、従って、被乗数であるラッチ回路21の出力A<3
1:0>は、乗算アレイ27の各段の部分積生成回路2
7aへ供給される。これによって、乗算アレイ27各段
の部分積生成回路27aにおいて部分積(0,1,2倍
と−1倍−1,−2倍−1)が生成される。
【0101】一方、セレクタ25はEC<30:0>及
びES<30:0>共にすべて“0”のALL0データ
を選択するので、1段目の累積加算回路27bの入力デ
ータa<31:1>及びb<30:0>には全て“0”
が供給される。また、各段の累積加算回路27bの入力
データa<0>には、部分積生成の補正用のデータ(1
/0)が入力される。a<32>,b<32:31>は
符号拡張用データが入力される。
【0102】これらの各データにより累積加算が行わ
れ、乗算アレイ27からは、ZCO<15:0>及びZ
SO<15:0>が出力されると共に、最終段のFSO
<30:0>及びFCO<30:0>が出力される。そ
して、そのうち、FCO<30:0>及びFSO<3
0:0>はラッチ回路23のみに書き込まれ、ZCO<
15:0>及びZSO<15:0>は、ラッチ回路30
がホールド状態であるのでレジスタ29のみに書き込ま
れる。
【0103】そして、乗算アレイ27の最終段で生成さ
れた部分積の符号はラッチ回路28へ保存される。
【0104】(B)Eステージにおけるクロック後半
の動作 EステージにおけるクロックCLKの後半(“L”レ
ベル時)では、ラッチ回路21及びラッチ回路22は共
にクロックCLKの前半で書き込まれた値を保持して
おり、セレクタ24はラッチ回路22の出力(乗数上位
17ビット)を選択する。すると、該セレクタ24の出
力D<16:0>はブースエンコーダ26によってエン
コードされ、セレクト信号Kとして乗算アレイ27の各
段の部分積生成回路27aへ供給される。この時、被乗
数であるラッチ回路21の出力A<31:0>は、乗算
アレイ27の各段の部分積生成回路27aへ供給され
る。これによって、乗算アレイ27各段の部分積生成回
路27aにおいて部分積(0,1,2倍,−1倍−1,
−2倍−1のいずれか)が生成される。
【0105】一方、セレクタ25はEC<30:0>が
CC<30:0>を、ES<30:0>がCS<30:
0>をそれぞれ選択するので、1段目の累積加算回路2
7bの入力データa<31:1>にはCC<30:0>
が、また入力データb<30:0>にはCS<30:0
>がそれぞれ供給される。さらに、各段の累積加算回路
27bの入力データa<0>には、部分積生成の補正用
のデータ(1/0)が入力される。a<32>,b<3
2:31>は符号拡張用データが入力される。
【0106】これらの各データにより累積加算が行わ
れ、乗算アレイ27からは、ZCO<15:0>及びZ
SO<15:0>が出力されると共に、最終段のFSO
<30:0>及びFCO<30:0>が出力される。そ
して、そのうち、FCO<30:0>及びFSO<3
0:0>はラッチ回路31に書き込まれ、ZCO<1
5:0>及びZSO<15:0>は、ラッチ回路30に
書き込まれる。
【0107】(C)Mステージにおけるクロック前半
の動作 Eステージの次のMステージにおけるクロックCLKの
前半(“H”レベル時)では、加算器32において、
【数9】{OC<30:0>,HC<15:0>,GC
<15:0>,0}+{0,OS<30:0>,HS<
15:0>,GS<15:0>} の最終加算を行うことにより、OUT<63:0>が得
られる。
【0108】このように本実施例では、図8に示すよう
にクロックCLKの前半で乗数下位16ビットのブー
スのエンコードを行い、その結果を受けて乗算アレイ8
段の通過を行って必要な乗算の半分の演算を行い、その
中間結果をラッチ回路23に保存する。さらに、クロッ
クCLKの後半では、乗数上位17ビットのエンコー
ドを行い、その結果により、保存した中間結果との演算
及び累積加算を行う。そして、次のクロックCLKの前
半では、乗算アレイ27からの出力結果を加算して出
力する。
【0109】このような一連の動作を行うことにより、
上記第1実施例の乗算アレイに比べて乗算アレイの通過
段数を1/2に削減することができるので、乗算アレイ
の通過時間の短縮が可能となる。
【0110】図9は、本発明の第3実施例を示す乗算器
の全体構成図であり、図4と共通の要素には同一の符号
が付されている。
【0111】上記第2実施例では、乗算アレイの段数が
削減され高速乗算が可能になるものの、ブースエンコー
ダ26の所要時間が必要となる。そこで、本実施例で
は、この点を考慮して、ブースエンコーダ26と乗算ア
レイ27との間にダブルエッジトリガラッチ回路41を
挿入することにより、演算時間は半サイクル増大するも
のの各半サイクルで行う処理の所要時間が均等に近くな
るので、第2実施例にくらべて高周波数のクロックでの
制御が可能な乗算器を提供するものである。
【0112】すなわち、本実施例の乗算器は、図4に示
した上記第2実施例の乗算器において、ブースエンコー
ダ26と乗算アレイ27との間に、クロックCLKのエ
ッジで出力を変えるダブルエッジトリガラッチ回路41
を挿入し、さらにラッチ回路21と乗算アレイ27との
間に32ビットのラッチ回路42を挿入する。そして、
ラッチ回路23、セレクタ25、ラッチ回路28、レジ
スタ29、ラッチ回路30及びラッチ回路31に代え
て、それぞれ機能の異なるラッチ回路23a、セレクタ
25a、ラッチ回路28a、レジスタ29a、ラッチ回
路30a及びラッチ回路31aを設けたものであり、ダ
ブルエッジトリガラッチ回路41の出力をL<39:0
>、ラッチ回路42の出力をM<31:0>とすると、
乗算アレイ27には、K<39:0>に代えてL<3
9:0>が、またA<31:0>に代えてM<31:0
>が供給されることになり、その他の構成は第2実施例
と同一である。
【0113】ラッチ回路23a、セレクタ25a、ラッ
チ回路28a、レジスタ29a、ラッチ回路30a及び
ラッチ回路31aが上記第2実施例のものと異なる点
は、ラッチ回路23aは、クロックCLKの“L”レベ
ルでスルー、“H”レベルでホールド状態となり、セレ
クタ25aはクロックCLKの“H”レベル/“L”レ
ベルで、それぞれラッチ回路23aの出力とALL0デ
ータとの切換えを行う。ラッチ回路28aはクロックC
LKの“L”レベルでスルー、“H”レベルでホールド
状態、レジスタ29aは“L”レベルで書き込み、
“H”レベルで出力状態となり、ラッチ回路30aはク
ロックCLKの“H”レベルでスルー、“L”レベルで
ホールド状態となり、ラッチ回路31aはクロックCL
Kの“H”レベルでスルー、“L”レベルでホールド状
態となる。なお、これらラッチ回路23a,28a,3
0a,31a及びレジスタ29aの入力データ及びビッ
ト構成は、第2実施例のラッチ回路23,28,30,
31及びレジスタ29と同一である。
【0114】図10は前記ダブルエッジトリガラッチ回
路41の構成を示す回路図、及び図11はその動作を示
すタイムチャートである。
【0115】本実施例のダブルエッジトリガラッチ回路
41は、逆位相で動く1組のラッチ回路41a,41b
と、クロックCLKの値によって前記ラッチ回路41
a,41bのいずれかの出力を選択するセレクタ41c
とで構成されている。
【0116】その動作は、図11に示すように、入力が
データaのときにクロックCLKが反転すると、出力が
データaに変化する。このとき、入力がデータbに変化
しても出力はデータaを保持する。その後のクロックC
LKの反転で、出力はデータbに変化し、同様にこのと
き入力が変化しても出力のデータbは変化しない。つま
り、クロックCLKが変化する度に入力を保持して出力
するという動作を繰り返す。ラッチ回路42はクロック
CLKの“L”レベルでスルー、“H”レベルでホール
ド状態となるラッチ回路である。
【0117】次に、以上のように構成される本実施例の
乗算器の乗算動作を図12を参照しつつ説明する。
【0118】(A)Eステージにおけるクロック前半
の動作 まず、図12に示すように、Eステージにおけるクロッ
クCLKの前半(“H”レベル)では、被乗数32ビ
ットをラッチ回路21に書き込むと同時に、乗数上位1
7ビットをラッチ回路22に書き込む。そして、セレク
タ24は乗数下位16ビットの下位に“0”を付加した
17ビットデータを選択する。
【0119】セレクタ24が乗数の前記下位側を選択す
ると、該セレクタ24の出力D<16:0>はブースエ
ンコーダ26によってエンコードされ、そのエンコード
結果がダブルエッジトリガラッチ41に格納される。
【0120】(B)Eステージにおけるクロック後半
の動作 EステージにおけるクロックCLKの後半(“L”レ
ベル時)では、まず、ラッチ回路21の出力A<31:
0>をラッチ回路42に格納し、その出力M<31:0
>は乗算アレイ27の各段の部分積生成回路27aへ供
給される。そして、クロックCLKの前半で格納され
たブースエンコーダ26のエンコード結果Kがダブルエ
ッジトリガラッチ41より乗算アレイ27の各段の部分
積生成回路27aへ供給される。これによって、乗算ア
レイ27各段の部分積生成回路27aにおいて部分積が
生成される。
【0121】一方、セレクタ25はEC<30:0>及
びES<30:0>共にALL0データを選択するの
で、1段目の累積加算回路27bの入力データa<3
1:1>及びb<30:0>には全て“0”が供給され
る。また、各段の累積加算回路27bの入力データa<
0>には、部分積生成の補正用のデータ(1/0)が入
力される。a<32>,b<32:31>には符号拡張
用データが入力される。
【0122】これらの各データにより累積加算が行わ
れ、乗算アレイ27からは、ZCO<15:0>及びZ
SO<15:0>が出力されると共に、FSO<30:
0>及びFCO<30:0>が出力される。そして、そ
のうち、FCO<30:0>及びFSO<30:0>は
ラッチ回路23aに書き込まれ、ZCO<15:0>及
びZSO<15:0>はレジスタ29aに書き込まれ
る。さらに、乗算アレイ27の最終段で生成された部分
積の符号はラッチ回路28aへ保存される。
【0123】また、セレクタ24によってラッチ回路2
2の出力が選択され、その出力D<16:0>がブース
エンコーダ26によってエンコードされる。該エンコー
ド結果Kはダブルエッジトリガラッチ41へ格納され
る。
【0124】(C)Mステージにおけるクロック前半
の動作 Eステージの次のMステージにおけるクロックCLKの
前半(“H”レベル時)では、ラッチ回路42はクロ
ックCLKの後半で書き込まれた値を保持しており、
その出力M<31:0>は乗算アレイ27の各段の部分
積生成回路27aへ供給される。また、ダブルエッジト
リガラッチ41から、クロックCLKの後半で格納さ
れたエンコーダ結果が乗算アレイ27の各段の部分積生
成回路27aへ供給される。これによって、乗算アレイ
27各段の部分積生成回路27aにおいて部分積が生成
される。
【0125】一方、セレクタ25aはラッチ回路23a
の出力を選択するので、1段目の累積加算回路27bの
入力データa<31:1>にはCC<30:0>が、ま
た入力データb<30:0>にはCS<30:0>がそ
れぞれ供給される。さらに、各段の累積加算回路27b
の入力データa<0>には、部分積生成の補正用のデー
タ(1/0)が入力される。a<32>,b<32:3
1>には符号拡張用データが入力される。
【0126】これらの各データにより累積加算が行わ
れ、乗算アレイ27からは、ZCO<15:0>及びZ
SO<15:0>が出力されると共に、FSO<30:
0>及びFCO<30:0>が出力される。そして、そ
のうち、FCO<30:0>及びFSO<30:0>は
ラッチ回路31aに書き込まれ、ZCO<15:0>及
びZSO<15:0>はラッチ回路30aに書き込まれ
る。
【0127】(D)Mステージにおけるクロック後半
の動作 Eステージの次のMステージにおけるクロックCLKの
後半(“L”レベル時)では、加算器32において、
【数10】{OC<30:0>,HC<15:0>,G
C<15:0>,0}+{0,OS<30:0>,HS
<15:0>,GS<15:0>} の最終加算を行うことにより、OUT<63:0>が得
られる。
【0128】このように本実施例では、図12に示すよ
うにクロック前半で乗数下位16ビット分のブースの
エンコードを行い、その結果をダブルエッジトリガラッ
チ41へ格納する。クロック後半では、ブースのエン
コード結果をダブルエッジトリガラッチ41より出力
し、これを受けて乗算アレイ8段の通過を行って必要な
乗算の半分の演算を行い、この出力を中間和データとし
てラッチ回路23aに保存する。さらに、この乗算アレ
イ27の通過と並行して乗数上位17ビット分のブース
のエンコードを行い、ダブルエッジトリガラッチ41へ
保存する。そして、次のクロック前半では、保持して
いる中間和データと、残りの乗算アレイ8段通過分の演
算及び累積加算を行い、そして、次のクロックCLKの
後半では、乗算アレイ27からの出力の最終加算を行
って乗算器の出力OUTを得る、といった一連の動作を
行う。
【0129】上記第2実施例では、乗算アレイ27の段
数は削減されるものの、ブースエンコーダ26の通過時
間がオーバーヘッドになっていた。これに対して、本実
施例では、ブースエンコーダ26のエンコード時間とし
て半クロックを割当て、ダブルエッジトリガラッチ41
を使用することにより、各半サイクルで行う処理の所要
時間が均等に近くなるので、上記第2実施例よりクロッ
クCLKの周波数を上げることが可能となる。
【0130】図13は、本発明の第4実施例を示す積和
演算装置の全体構成図であり、図9と共通の要素には同
一の符号が付されている。
【0131】本実施例では、上記第3実施例の乗算器を
基にして、32ビット×32ビット+64ビットの高速
な積和演算(符号付き)を可能とする積和演算装置を構
成したものである。具体的な構成としては、図9に示し
た第3実施例の乗算器において、F/F29a及びラッ
チ回路30a,31aの出力側に64ビットのキャリー
セーブアダー51を設け、さらにその出力側に接続され
る加算器として、前記加算器32に代えて、キャリーセ
ーブ状態にある積和演算結果の加算を行うCLA付き加
算器32aを設けたものであり、その他の構成は第3実
施例と同一である。
【0132】ここで、キャリーセーブアダー51の入力
には、F/F29aの出力及びラッチ回路30a,31
aの出力の他に積和演算データQ<63:0>が供給さ
れ、その出力信号としては、桁上げ信号NC<63:0
>及び加算結果NS<63:0>が出力される。
【0133】上記構成の本実施例の積和演算装置の動作
では、上述した第3実施例の乗算器の動作において、1
番目のクロック前半から2番目のクロック前半まで
の動作(A)〜(C)は同一であり、ただ2番目のクロ
ック後半の動作(D)のみが異なる。
【0134】すなわち、本実施例の2番目のクロック後
半では、キャリーセーブアダー51で、ラッチ回路3
1a、ラッチ回路30a、及びレジスタ29aの各出力
の最終加算を行うと同時に、積和演算データQ<63:
0>を加算する。すなわち、キャリーセーブアダー51
の3入力のうち、1つ目の入力には{OC,HC,G
C,0}が、2つ目の入力には{0,OS,HS,G
S}が、また3つ目の入力には積和演算データQ<6
3:0>がそれぞれ供給される。
【0135】そして、キャリーセーブアダー51から出
力される桁上げ信号ND<63:0>と加算結果NS<
63:0>が、CLA付き加算器32aで、
【数11】 {NC<63:0>,0}+{0,NS<63:0>} のように加算され、加算結果OUT<63:0>が得ら
れる。
【0136】上記第3実施例に示す乗算器を用いて積和
演算を行う場合には、図9の乗算器で乗算結果を得た
後、さらに加算を行わなければならないが、CLA付き
加算器を用いての加算には時間がかかる。この点を考慮
して本実施例では、キャリーセーブ状態の乗算結果と積
和演算データとをキャリーセーブアダー51によって一
旦加算し、その結果を更にCLA付きの加算器32aで
加算するので、積和演算における加算の時間を短縮する
ことができる。また、この実施例では、従来例にくらべ
回路規模は小さくなるが、演算時間は増大しない。
【0137】なお、上記第4実施例では上記第3実施例
に示す乗算器を用いて積和演算を行う場合を説明した
が、上記第1または第2実施例に示す乗算器を用いた場
合であっても、同様に積和演算を行うことができる。
【0138】
【発明の効果】以上詳細に説明したように、請求項1記
載の発明の乗算器によれば、回路規模が小さく、且つ演
算時間も増大することのない乗算器を実現することがで
きる。また、クロックの前半、後半というように半クロ
ック単位で区切って動作するようにしているので、外部
との同期が取りやすく、プリチャージ型の加算器の使用
にも適している。
【0139】請求項2記載の発明の乗算器によれば、例
えばブースのアルゴリズムを用いたエンコード回路を設
けたので、部分積生成回路及び累積加算回路の段数を上
記請求項1記載の発明に比べて更に削減することがで
き、累積加算過程の時間短縮が可能となる。
【0140】請求項3記載の発明の乗算器によれば、上
述の請求項2記載の発明でオーバーヘッドになっていた
エンコード回路の通過時間として半クロックを割り当て
て、半クロック単位の動作を行うことができ、各半サイ
クルで行う処理の所要時間が均等に近くなるので、演算
器を制御するクロックの周波数を高くすることが可能と
なる。
【0141】請求項4記載の発明の積和演算装置によれ
ば、前記請求項1記載の発明と同様の効果が得られるほ
か、積和演算における加算の時間を短縮することができ
る。
【0142】請求項5記載の発明の積和演算装置によれ
ば、前記請求項2記載の発明と同様の効果が得られるほ
か、積和演算における加算の時間を短縮することができ
る。
【0143】請求項6記載の発明の積和演算装置によれ
ば、前記請求項3記載の発明と同様の効果が得られるほ
か、積和演算における加算の時間を短縮することができ
る。これにより、積和演算時間を増加させることなく、
ハードウェア量を削減した積和演算器が提供できる。
【図面の簡単な説明】
【図1】本発明の第1実施例を示す乗算器の全体構成図
である。
【図2】第1実施例の乗算アレイの各段の構成を示す図
である。
【図3】第1実施例の乗算器の乗算動作を示す図であ
る。
【図4】本発明の第2実施例を示す乗算器の全体構成図
である。
【図5】第2実施例における乗算アレイの上位ビット側
の構成を示す図である。
【図6】第2実施例における乗算アレイの下位ビット側
の構成を示す図である。
【図7】第2実施例における乗算アレイの3段目〜8段
目の概略構成を示す図である。
【図8】第2実施例の乗算器の乗算動作を示す図であ
る。
【図9】本発明の第3実施例を示す乗算器の全体構成図
である。
【図10】図9中のダブルエッジトリガラッチ回路の構
成を示す回路図である。
【図11】図10中のダブルエッジトリガラッチ回路の
動作を示すタイムチャートである。
【図12】第3実施例の乗算器の乗算動作を示す図であ
る。
【図13】本発明の第4実施例を示す積和演算装置の全
体構成図である。
【図14】キャリーセーブアダー方式を用いた従来の乗
算器の構成を示す図である。
【図15】全加算器及び半加算器の真理値表を示す図で
ある。
【図16】キャリーセーブアダー方式を用いた従来の積
和演算装置の構成を示す図である。
【図17】繰り返し加算方式を用いた従来の乗算器の構
成を示す図である。
【符号の説明】
1,21 ラッチ回路(被乗数保持回路) 2,22 ラッチ回路(乗数保持回路) 3,23,23a ラッチ回路(中間和保持回路) 4,24 第1のセレクタ 5,25,25a 第2のセレクタ 6,27 乗算アレイ 6a,27a 部分積生成回路 6b,27b 累積加算回路 7,29,29a レジスタ(出力保持回路) 8,30,30a ラッチ回路(出力保持回路) 9,31,31a ラッチ回路(累積加算結果保持回
路) 10,32 加算器 26 ブースエンコーダ(エンコード回路) 28,28a ラッチ回路 32a CLA付き加算器 41 ダブルエッジトリガラッチ回路(エンコード結果
保持回路) 51 キャリーセーブアダー

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 被乗数データを保持する被乗数保持回路
    と、乗数データの上位から所定ビットを保持する乗数保
    持回路と、クロックの前半または後半により前記乗数デ
    ータの下位から所定ビットと前記乗数保持回路の出力と
    を切り替える第1のセレクタと、中間和データを保持す
    る中間和保持回路と、前記クロックの前半または後半に
    より初期値と前記中間和保持回路の出力とを切り替える
    第2のセレクタと、前記第1のセレクタの出力と前記被
    乗数保持回路の出力とに基づいて部分積を生成する複数
    段の部分積生成回路と、前記第2のセレクタの出力また
    は前段の累積加算回路の出力と前記各段の部分積生成回
    路の出力とに基づいて累積加算を行って乗算の中間結果
    である前記中間和データを生成する複数段の累積加算回
    路と、該累積加算回路の所定段の出力と前記各段の累積
    加算回路の出力の一部を保持する累積加算結果保持回路
    と、前記各段の累積加算回路の出力の1部を格納する出
    力保持回路とを有する乗算器であって、 前記クロックの前半または後半の第1タイミング時に
    は、 前記第1のセレクタにより前記乗数データの下位から所
    定ビットを選択し且つ前記第2のセレクタにより前記初
    期値を選択し、前記各段の部分積生成回路は前記第1の
    セレクタの出力1ビットと前記被乗数保持回路の各ビッ
    トの出力とから部分積を生成すると共に、前記各段の累
    積加算回路は前記第2のセレクタの出力または前段の累
    積加算回路の出力と前記部分積生成回路の出力との加算
    を行い、その所定段の累積加算回路の出力を前記中間和
    データとして中間和保持回路に書き込み、且つ前記各段
    の累積加算回路の出力の所定ビット数を前記出力保持回
    路の所定のビット位置に書き込み、 前記クロックが切り替ったクロック後半または前半の第
    2タイミング時には、 前記第1のセレクタにより前記乗数保持回路の出力を選
    択し且つ前記第2のセレクタにより前記中間和保持回路
    の出力を選択し、前記各段の部分積生成回路は前記第1
    のセレクタの出力1ビットと前記被乗数保持回路の各ビ
    ットの出力とから部分積を生成すると共に、前記各段の
    累積加算回路は前記第2のセレクタの出力または前段の
    累積加算回路の出力と前記部分積生成回路の出力との加
    算を行い、その所定段の累積加算回路の出力と前記各段
    の累積加算回路の出力の所定ビット数とを前記累積加算
    結果保持回路に書き込むことを特徴とする乗算回路。
  2. 【請求項2】 被乗数データを保持する被乗数保持回路
    と、乗数データの上位から所定ビットを保持する乗数保
    持回路と、クロックの前半または後半により前記乗数デ
    ータの下位から所定ビットと前記乗数保持回路の出力と
    を切り替える第1のセレクタと、該第1のセレクタの出
    力をエンコードするエンコード回路と、中間和データを
    保持する中間和保持回路と、前記クロックの前半または
    後半により初期値と前記中間和保持回路の出力とを切り
    替える第2のセレクタと、前記エンコード回路の出力と
    前記被乗数保持回路の出力とに基づいて部分積を生成す
    る複数段の部分積生成回路と、前記第2のセレクタの出
    力または前段の累積加算回路の出力と前記各段の部分積
    生成回路の出力とに基づいて累積加算を行って乗算の中
    間結果である前記中間和データを生成する複数段の累積
    加算回路と、該累積加算回路の所定段の出力と前記各段
    の累積加算回路の出力の一部とを保持する累積加算結果
    保持回路と、前記各段の累積加算回路の出力の1部を格
    納する出力保持回路とを有する乗算器であって、 前記クロックの前半または後半の第1タイミング時に
    は、 前記第1のセレクタにより前記乗数データの下位から所
    定ビットを選択し且つ前記第2のセレクタにより前記初
    期値を選択し、前記各段の部分積生成回路は前記エンコ
    ード回路のエンコード結果と前記被乗数保持回路の出力
    とから部分積を生成すると共に、前記各段の累積加算回
    路は前記第2のセレクタの出力または前段の累積加算回
    路の出力と前記部分積生成回路の出力との加算を行い、
    その所定段の累積加算回路の出力を前記中間和データと
    して中間和保持回路に書き込み、且つ前記各段の累積加
    算回路の出力の所定ビット数を前記出力保持回路の所定
    のビット位置に書き込み、 前記クロックが切り替ったクロック後半または前半の第
    2タイミング時には、 前記第1のセレクタにより前記乗数保持回路の出力を選
    択し且つ前記第2のセレクタにより前記中間和保持回路
    の出力を選択し、前記各段の部分積生成回路は前記エン
    コード回路の出力と前記被乗数保持回路の出力とから部
    分積を生成すると共に、前記各段の累積加算回路は前記
    第2のセレクタの出力または前段の累積加算回路の出力
    と前記部分積生成回路の出力との加算を行い、その所定
    段の累積加算回路の出力と前記各段の累積加算回路の出
    力の所定ビット数とを前記累積加算結果保持回路に書き
    込むことを特徴とする乗算回路。
  3. 【請求項3】 被乗数データを保持する被乗数保持回路
    と、乗数データの上位から所定ビットを保持する乗数保
    持回路と、クロックの前半または後半により前記乗数デ
    ータの下位から所定ビットと前記乗数保持回路の出力と
    を切り替える第1のセレクタと、該第1のセレクタの出
    力をエンコードするエンコード回路と、前記エンコード
    回路のエンコード結果を前記クロックの論理値が変化す
    る度に保持して出力するエンコード結果保持回路と、中
    間和データを保持する中間和保持回路と、前記クロック
    の後半または前半により初期値と前記中間和保持回路の
    出力とを切り替える第2のセレクタと、前記エンコード
    結果保持回路の出力と前記被乗数保持回路の出力とに基
    づいて部分積を生成する複数段の部分積生成回路と、前
    記第2のセレクタの出力または前段の累積加算回路の出
    力と前記各段の部分積生成回路の出力とに基づいて累積
    加算を行って乗算の中間結果である前記中間和データを
    生成する複数段の累積加算回路と、該累積加算回路の所
    定段の出力と前記各段の累積加算回路の出力の一部とを
    保持する累積加算結果保持回路と、前記各段の累積加算
    回路の出力の1部を格納する出力保持回路とを有する乗
    算器であって、 前記クロックの前半または後半の第1タイミング時に
    は、 前記第1のセレクタにより前記乗数データの下位から所
    定ビットを選択し、前記エンコード回路は該第1のセレ
    クタの出力のエンコードを行って、そのエンコード結果
    を前記エンコード結果保持回路に書き込み、 前記クロックが切り替ったクロック後半または前半の第
    2タイミング時には、 前記第2のセレクタにより前記初期値を選択し、前記各
    段の部分積生成回路は前記エンコード結果保持回路の出
    力と前記被乗数保持回路の出力とから部分積を生成する
    と共に、前記各段の累積加算回路は前記第2のセレクタ
    の出力または前段の累積加算回路の出力と前記部分積生
    成回路の出力との加算を行い、その所定段の累積加算回
    路の出力を前記中間和データとして中間和保持回路に書
    き込み、且つ前記各段の累積加算回路の出力の所定ビッ
    ト数を前記出力保持回路の所定のビット位置に書き込
    み、加えて前記第1のセレクタにより前記乗数保持回路
    の出力を選択し、前記エンコード回路は該第1のセレク
    タの出力のエンコードを行ってそのエンコード結果を前
    記エンコード結果保持回路に書き込み、 さらに前記クロックが切り替ったクロック前半または後
    半の第3タイミング時には、 前記第2のセレクタにより前記中間和保持回路の出力を
    選択し、前記各段の部分積生成回路は前記エンコード結
    果保持回路の出力と前記被乗数保持回路の出力とから部
    分積を生成すると共に、前記各段の累積加算回路は前記
    第2のセレクタの出力または前段の累積加算回路の出力
    と前記部分積生成回路の出力との加算を行い、その所定
    段の累積加算回路の出力と前記各段の累積加算回路の所
    定ビット数とを前記累積加算結果保持回路に書き込むこ
    とを特徴とする乗算回路。
  4. 【請求項4】 請求項1記載の乗算器における前記累積
    加算結果保持回路の出力側に、キャリーセーブアダーを
    介してキャリープロパゲーションアダーを設けた積和演
    算装置であって、 前記第2タイミング後に前記クロックが切り替ったクロ
    ック前半または後半の第3タイミング時に、 前記キャリーセーブアダーによって前記累積加算結果保
    持回路の出力と積和演算データとの加算を行い、その加
    算結果を再度前記キャリープロパゲーションアダーによ
    って加算して積和演算結果を出力することを特徴とする
    積和演算装置。
  5. 【請求項5】 請求項2記載の乗算器における前記累積
    加算結果保持回路及び前記出力保持回路の出力側に、キ
    ャリーセーブアダーを介してキャリープロパゲーション
    アダーを設けた積和演算装置であって、 前記第2タイミング後に前記クロックが切り替ったクロ
    ック前半または後半の第3タイミング時に、 前記キャリーセーブアダーによって前記累積加算結果保
    持回路の出力及び前記出力保持回路の出力と積和演算デ
    ータとの加算を行い、その加算結果を再度前記キャリー
    プロパゲーションアダーによって加算して積和演算結果
    を出力することを特徴とする積和演算装置。
  6. 【請求項6】 請求項3記載の乗算器における前記累積
    加算結果保持回路及び前記出力保持回路の出力側に、キ
    ャリーセーブアダーを介してキャリープロパゲーション
    アダーを設けた積和演算装置であって、 前記第3タイミング後に前記クロックが切り替ったクロ
    ック後半または前半の第4タイミング時に、 前記キャリーセーブアダーによって前記累積加算結果保
    持回路の出力及び前記出力保持回路の出力と積和演算デ
    ータとの加算を行い、その加算結果を再度前記キャリー
    プロパゲーションアダーによって加算して積和演算結果
    を出力することを特徴とする積和演算装置。
JP02503995A 1995-02-14 1995-02-14 乗算器及び積和演算装置 Expired - Fee Related JP3277089B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP02503995A JP3277089B2 (ja) 1995-02-14 1995-02-14 乗算器及び積和演算装置
KR1019960003559A KR100218825B1 (ko) 1995-02-14 1996-02-14 승산기 및 곱합 연산 장치
US08/599,966 US5675527A (en) 1995-02-14 1996-02-14 Multiplication device and sum of products calculation device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP02503995A JP3277089B2 (ja) 1995-02-14 1995-02-14 乗算器及び積和演算装置

Publications (2)

Publication Number Publication Date
JPH08221256A true JPH08221256A (ja) 1996-08-30
JP3277089B2 JP3277089B2 (ja) 2002-04-22

Family

ID=12154777

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02503995A Expired - Fee Related JP3277089B2 (ja) 1995-02-14 1995-02-14 乗算器及び積和演算装置

Country Status (3)

Country Link
US (1) US5675527A (ja)
JP (1) JP3277089B2 (ja)
KR (1) KR100218825B1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6917218B2 (en) 2002-12-03 2005-07-12 Electronics And Telecommunications Research Institute Serial finite field multiplier

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3451579B2 (ja) * 1997-03-03 2003-09-29 日本電信電話株式会社 自己同期型パイプラインデータパス回路
KR100265355B1 (ko) * 1997-05-22 2000-09-15 김영환 마이크로프로세서에서 2사이클 파이프라인방식으로 부동소수점 데이터를 곱셈 연산하는 장치
JP3529622B2 (ja) 1998-05-08 2004-05-24 株式会社東芝 演算回路
US6182104B1 (en) * 1998-07-22 2001-01-30 Motorola, Inc. Circuit and method of modulo multiplication
CA2294554A1 (en) * 1999-12-30 2001-06-30 Mosaid Technologies Incorporated Method and circuit for multiplication using booth encoding and iterative addition techniques
US7028068B1 (en) * 2003-02-04 2006-04-11 Advanced Micro Devices, Inc. Alternate phase dual compression-tree multiplier
US7269616B2 (en) * 2003-03-21 2007-09-11 Stretch, Inc. Transitive processing unit for performing complex operations
US8019805B1 (en) * 2003-12-09 2011-09-13 Globalfoundries Inc. Apparatus and method for multiple pass extended precision floating point multiplication
US9710228B2 (en) * 2014-12-29 2017-07-18 Imagination Technologies Limited Unified multiply unit
CN112988111B (zh) * 2021-03-05 2022-02-11 唐山恒鼎科技有限公司 一种单比特乘法器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6284335A (ja) * 1985-10-09 1987-04-17 Hitachi Ltd 乗算回路

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6917218B2 (en) 2002-12-03 2005-07-12 Electronics And Telecommunications Research Institute Serial finite field multiplier

Also Published As

Publication number Publication date
KR960032231A (ko) 1996-09-17
US5675527A (en) 1997-10-07
JP3277089B2 (ja) 2002-04-22
KR100218825B1 (ko) 1999-09-01

Similar Documents

Publication Publication Date Title
JPH06502287A (ja) ゼロオーバヘッドセルフタイムド繰り返し論理
Gokhale et al. Design of area and delay efficient Vedic multiplier using Carry Select Adder
JP3277089B2 (ja) 乗算器及び積和演算装置
JPH0831025B2 (ja) 乗算回路
EP0416869B1 (en) Digital adder/accumulator
JPS62256034A (ja) パイプライン演算ユニツト
JP3297683B2 (ja) 乗算器
US5870322A (en) Multiplier to selectively perform unsigned magnitude multiplication or signed magnitude multiplication
JP3660075B2 (ja) 除算装置
JPS58137045A (ja) 並列乗算器
US4686644A (en) Linear predictive coding technique with symmetrical calculation of Y-and B-values
JPH056263A (ja) 加算器およびその加算器を用いた絶対値演算回路
JP3270659B2 (ja) 演算回路および演算方法
JP2002157114A (ja) 乗算器及びそれを搭載した集積回路装置
JP2864598B2 (ja) ディジタル演算回路
JPH0368415B2 (ja)
JP2563467B2 (ja) 2進演算器
JP3074958B2 (ja) 加算機能付きシリアル乗算器
JPH03196712A (ja) ディジタル演算回路
JP2620660B2 (ja) 乗算器
JPH0962488A (ja) 演算同期回路
JPH0421026A (ja) 高桁乗算装置
JPH04229323A (ja) 演算回路
JPH05257649A (ja) シリアル乗算器
JPH05233224A (ja) 並列加算回路

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080208

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090208

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100208

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100208

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110208

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees