JP3855491B2 - 乗算器 - Google Patents
乗算器 Download PDFInfo
- Publication number
- JP3855491B2 JP3855491B2 JP27153798A JP27153798A JP3855491B2 JP 3855491 B2 JP3855491 B2 JP 3855491B2 JP 27153798 A JP27153798 A JP 27153798A JP 27153798 A JP27153798 A JP 27153798A JP 3855491 B2 JP3855491 B2 JP 3855491B2
- Authority
- JP
- Japan
- Prior art keywords
- bit
- multiplier
- bits
- partial product
- multiplicand
- 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.)
- Expired - Lifetime
Links
Images
Description
【発明の属する技術分野】
本発明は、乗算を複数の演算サイクルに分割し、各々の演算サイクルで部分積を生成すると共に、その部分積を累積加算していくことにより、全ての部分積の和である乗算結果を求める、繰り返し型の乗算器(反復乗算器)に関する。
【0002】
【従来の技術】
従来より、ディジタル信号処理装置に用いられる乗算器の構成として、例えば電子情報通信学会編の「ディジタル信号処理ハンドブック:第243頁〜第244頁」等に記載されているように、キャリーセーブアダー方式並列乗算器や、部分積の生成に2次のブースのアルゴリズムを用いた並列乗算器、或いは、部分積の加算にワレーストリー(Wallace Tree)の方法を用いた並列乗算器などがある。
【0003】
しかし、これらの並列乗算器では、多くの部分積発生回路と多くの加算回路が必要になるため、ハードウエアをICチップ上に実現した場合(即ち、IC化した場合)に占有面積が大きくなってしまう。
このため、ICチップ上での占有面積を小さくしたい場合には、乗算を複数の演算サイクルに分割して実行する繰り返し乗算器(反復乗算器)が用いられる。
【0004】
ここで、従来の繰り返し乗算器のうち、部分積の生成に2次のブースのアルゴリズムを用いたものについて説明する。尚、本明細書において、「符号拡張」とは、データの最上位ビット側にその最上位ビットと同じビットを追加することを意味し、「0拡張」とは、データの最上位ビット側に“0”のビットを追加することを意味している。そして、「符号拡張」と「0拡張」との両方を総称して、「拡張」という。
【0005】
まず、ブースのアルゴリズムには、2の補数表示形式の乗算(即ち、2の補数表示の2進数の乗算であって、符号付き乗算)を補正無しで実行できるという特徴があり、その中でも特に2次のブースのアルゴリズムは、部分積の数を半減させることができるため、この種の乗算器において頻繁に利用されている。
【0006】
尚、2次のブースのアルゴリズムは、被乗数をXとし乗数をYとすると、図7の真理値表に示す法則を用いて部分積を生成するものである。つまり、乗数Yを構成するビットを、Y[i+1] ,Y[i] ,Y[i-1] (i=0,2,4,…)というように前後1ビットが重複した連続する3ビットずつのグループに分け(図9参照)、その各グループのビットの並びに応じて、「0」,「+X」,「−X」,「+2X」,「−2X」のうちの何れかを表すデータを部分積とする。但し、[]内の値は、データにおける最下位ビットを0ビット目とした場合のビット位置を示している。よって、例えばY[7] は、乗数Yを構成するビットのうち、最下位ビットY[0] から数えて(換言すれば、最下位ビットY[0] を1ビット目とした場合の)8ビット目を表すこととなる。また、Y[-1]は、実際には存在しないダミービットであり、“0”と見なされる。
【0007】
そして、このような2次のブースのアルゴリズムを用いた乗算では、図7の真理値表に従って生成される部分積の各々を2ビットずつシフトして累積加算することにより、被乗数と乗数との積を得る。例として、図8に、2の補数表示形式の8ビット×8ビットの乗算例を示す。この例の場合、乗数Yを構成するビットが、図9に示す如く4つのグループG0 〜G3 に分けられ、その各グループG0 〜G3 に対応して4つの部分積B0 〜B3 が生成される。そして、その4つの各部分積B0 〜B3 が、図8に示す如く2ビットずつシフトして累積加算されることにより、被乗数Xと乗数Yとの積を表す2の補数表示の15ビットのデータが得られる。
【0008】
尚、図8では、部分積B0 〜B3 の各ビットを「○」印と「●」印で示している。また、図8における「□」印は、加算時の桁合わせに必要となる符号拡張ビットを示している。つまり、2次のブースのアルゴリズムでは、図7の如く部分積が「−2X」或いは「2X」となる場合があるため、最低限生成すべき必須の部分積としては、図8にて「●」印で示したビットから右側の9(=8+1)ビットであるが、加算時において全ての部分積B0 〜B3 の最上位ビットのビット位置を一致させるために、上記「□」印で示す符号拡張ビットが付加される。
【0009】
次に、図10は、2次のブースのアルゴリズムを用いて2の補数表示形式の8ビット×8ビットの乗算を行う従来の繰り返し乗算器J1の構成を表すブロック図であり、図11は、その繰り返し乗算器J1の乗算動作を表す模式図である。図10に示すように、繰り返し乗算器J1には、8ビットの被乗数Xと乗数Yが入力されると共に、演算の1サイクル目(第1演算サイクル),2サイクル目(第2演算サイクル),3サイクル目(第3演算サイクル),4サイクル目(第4演算サイクル)といった具合に演算のサイクル数を示す演算サイクル信号が制御線Lを介して入力される。
【0010】
そして、この繰り返し乗算器J1は、外部から入力される8ビットの被乗数Xを、制御線Lからの演算サイクル信号が1サイクル目を示す値になったタイミング(或いは、その直前のタイミング)で保持する被乗数保持回路100と、外部から入力される8ビットの乗数Yを、制御線Lからの演算サイクル信号が1サイクル目を示す値になったタイミング(或いは、その直前のタイミング)で保持する乗数保持回路102と、制御線Lからの演算サイクル信号の変化に同期して、乗数保持回路102に保持されている乗数Yを構成するビットのうちで図9に示す各グループG0 〜G3 の何れかの3ビットを下位のものから順番に選択して出力する乗数ビット選択回路104とを備えている。
【0011】
尚、乗数ビット選択回路104は、演算サイクル信号が1サイクル目を示す値になると、図9に示す最下位側の第1グループG0 の3ビット(Y[1] ,Y[0] ,Y[-1]:但しY[-1]はダミービットで“0”)を出力し、演算サイクル信号が2サイクル目を示す値になると、図9に示す第2グループG1 の3ビット(Y[3] ,Y[2] ,Y[1] )を出力し、演算サイクル信号が3サイクル目を示す値になると、図9に示す第3グループG2 の3ビット(Y[5] ,Y[4] ,Y[3] )を出力し、演算サイクル信号が4サイクル目を示す値になると、図9に示す第4グループG3 の3ビット(Y[7] ,Y[6] ,Y[5] )を出力する。
【0012】
そして更に、この繰り返し乗算器J1は、乗数ビット選択回路104からの3ビットの出力と被乗数保持回路100に保持されている8ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき9ビットの部分積を生成して出力する部分積発生回路106と、入力される7ビットデータを2ビット符号拡張して(つまり、データの最上位ビット側にその最上位ビットと同じビットを2ビット追加して)出力する符号拡張器108と、符号拡張器108からの9ビットデータと部分積発生回路106からの9ビットの部分積とを加算する加算器110と、加算器110から出力される9ビットデータの上位7ビットを演算サイクル信号の変化に同期して保持すると共に、自己が保持している7ビットデータを符号拡張器108に供給する中間和保持回路112と、加算器110から出力される9ビットデータの下位2ビットを演算サイクル信号の変化に同期して保持するシフトレジスタ114とを備えている。
【0013】
尚、例えば、演算サイクル信号は所定のクロックの立ち上がりタイミングで値が順次変化し、中間和保持回路112とシフトレジスタ114は、演算サイクル信号の値が変化してからクロックが立ち下がったタイミング(つまり、演算サイクル信号の変化に対してクロックの半周期分ずれたタイミング)でデータの保持動作を行う。また、中間和保持回路112とシフトレジスタ114は、演算サイクル信号が1サイクル目を示す値になる直前に初期化されて、その保持内容(即ち、保持するデータのビット)が全て“0”になる。
【0014】
このように構成された繰り返し乗算器J1は、以下のように動作する。
まず、演算の1サイクル目(即ち、演算サイクル信号が1サイクル目を示す値になった場合)には、乗数ビット選択回路104から、乗数保持回路102に保持されている乗数Yを構成するビットの一部として、図9に示す第1グループG0 の3ビット(Y[1] ,Y[0] ,Y[-1])が出力され、更に、部分積発生回路106により、図10の▲1▼に示す如く、上記第1グループG0 の3ビットと被乗数保持回路100に保持されいてる被乗数Xとから9ビットの第1部分積B0 が生成されて出力される。そして、図11の上から3段目〜5段目に示すように、中間和保持回路112の初期値(即ち、全ビットが“0”の7ビットデータ)を符号拡張器108にて2ビット符号拡張した全ビットが“0”の9ビットデータと、部分積発生回路106からの9ビットの第1部分積B0 とが、加算器110によって加算され、更に、その加算器110の加算結果である9ビットデータのうちの上位7ビットが中間和保持回路112に保持される。また、加算器110の加算結果である9ビットデータのうちの下位2ビット(図11における「中間和1」の段の「◎」印の2ビット)が、シフトレジスタ114の上位2ビット位置に保持される。
【0015】
次に、演算の2サイクル目(即ち、演算サイクル信号が2サイクル目を示す値になった場合)には、乗数ビット選択回路104から、乗数保持回路102に保持されている乗数Yを構成するビットの一部として、図9に示す第2グループG1 の3ビット(Y[3] ,Y[2] ,Y[1] )が出力され、更に、部分積発生回路106により、図10の▲2▼に示す如く、上記第2グループG1 の3ビットと被乗数保持回路100に保持されいてる被乗数Xとから9ビットの第2部分積B1 が生成されて出力される。そして、図11の上から5段目〜7段目に示すように、中間和保持回路112に保持されている7ビットデータを符号拡張器108にて2ビット(図11における「中間和1」の段の「□」印の2ビット)符号拡張した9ビットデータと、部分積発生回路106からの9ビットの第2部分積B1 とが、加算器110によって加算され、更に、その加算器110の加算結果である9ビットデータのうちの上位7ビットが中間和保持回路112に更新して保持される。また、シフトレジスタ114が2ビット下位ビット側へシフト(右シフト)され、加算器110の加算結果である9ビットデータのうちの下位2ビット(図11における「中間和2」の段の「◎」印の4ビットのうちの上位2ビット)が、シフトレジスタ114の上位2ビット位置に保持される。この結果、図11における「中間和2」の段の「◎」印の4ビットが、シフトレジスタ114に保持されることとなる。
【0016】
そして、図11の上から7段目〜9段目及び9段目〜11段目に示すように、演算の3サイクル目と4サイクル目も同様に実行され、その結果、被乗数Xと乗数Yとの積を表す15ビットデータのうち、上位7ビットが中間和保持回路112に保持され、下位8ビット(図11における「積」の段の「◎」印の8ビット)がシフトレジスタ114に保持されて、乗算が終了する。
【0017】
一方、ブースのアルゴリズムを用いた乗算は、符号付きの2の補数表示形式の乗算(符号付き乗算)を前提とするものであるため、そのままでは符号無し乗算(即ち、絶対値表示の2進数の乗算)を行うことができない。
このため、2次のブースのアルゴリズムを用いて、符号付き乗算と符号無し乗算とを共通のハードウエアで択一的に行うためには、入力される被乗数Xと乗数Yを、以下に説明するように少なくとも1ビット拡張して取り扱う。尚、ここでは、8ビット×8ビットの乗算を行う場合を例に挙げて説明する。
【0018】
まず、符号無し乗算を行う場合には、8ビットの被乗数Xと乗数Yの最上位ビットX[7] ,Y[7] が符号ビットではないため、その被乗数Xと乗数Yの各々の最上位ビットX[7] ,Y[7] よりも上位側に、正を示す“0”のビットを少なくとも1ビット追加して(即ち、被乗数Xと乗数Yの各々を少なくとも1ビット0拡張して)、被乗数Xと乗数Yを符号付き数として取り扱う。また、符号付き乗算を行う場合には、元々、被乗数Xと乗数Yの最上位ビットX[7] ,Y[7] は符号ビットであるが、その最上位ビットX[7] ,Y[7] よりも上位側に、更にその最上位ビットX[7] ,Y[7] と同じ値のビットを少なくとも1ビット追加する(即ち、被乗数Xと乗数Yの各々を最上位ビットで少なくとも1ビット符号拡張する)。これは、共通のハードウェアで符号付き乗算と符号無し乗算を行うためである。
【0019】
そして、上記のように少なくとも1ビット拡張した被乗数Xと乗数Yについて、図8と同様の手順で乗算を行えば良い。
例として、図12に、8ビット×8ビットの符号付き乗算と符号無し乗算とを切り替えて行う場合の実行例を示す。この例の場合、「△」印で示すように、符号付き乗算を行う場合には、被乗数Xと乗数Yの各々が最上位ビットで1ビット符号拡張され、符号無し乗算を行う場合には、被乗数Xと乗数Yの各々が1ビット0拡張される。そして、1ビット拡張された9ビットの乗数Yを構成するビットが、図9に示した状態と同様に5つのグループに分けられ、その各グループに対応して5つの部分積B0 〜B4 が生成される。そして更に、その5つの各部分積B0 〜B4 が、2ビットずつシフトして累積加算されることにより、被乗数Xと乗数Yとの積を表す16ビットのデータが得られる。
【0020】
但し、この場合、1ビット拡張された乗数Yを構成するビットのうちの最上位側のビットのグループ(第5グループ)に対応する第5部分積B4 は、符号無し乗算の場合で且つ元の乗数Yの最上位ビットY[7] が“1”である場合にのみ「+X」となり、それ以外の場合には、「0」となる。
【0021】
即ち、まず、符号無し乗算の場合には、1ビット拡張した乗数Yの最上位ビット(Y[8] )が“0”となるが、それより上位のビット(Y[9])も“0”と見なすことができるため、1ビット拡張した乗数Yの3ビットずつのグループのうちで、図9における第4グループG3 よりも1つ上位の第5グループG4 (Y[9] ,Y[8] ,Y[7] )のビットの並びは、「0,0,0」か「0,0,1」になる。このため、第5部分積B4 は、元の乗数Yの最上位ビットY[7] が“1”である場合に「+X」となり、上記最上位ビットY[7] が“0”である場合に「0」となる(図7参照)。また、符号付き乗算の場合には、1ビット拡張した乗数Yの上位2ビット(Y[8] ,Y[7] )が、元の乗数Yの最上位ビットY[7] と同じ値になるが、それより上位のビット(Y[9] )も元の乗数Yの最上位ビットY[7] と同じ値と見なすことができる。このため、1ビット拡張した乗数Yの上記第5グループG4 (Y[9] ,Y[8] ,Y[7] )のビットの並びは、「0,0,0」か「1,1,1」になり、第5部分積B4 は常に「0」となる(図7参照)。よって、第5部分積B4 は、符号無し乗算の場合で且つ元の乗数Yの最上位ビットY[7] が“1”である場合にのみ「+X」となり、それ以外の場合には「0」となるのである。
【0022】
尚、図12においても図8と同様に、部分積B0 〜B4 の各ビットを「○」印と「●」印で示し、また、「□」印は、加算時の桁合わせに必要となる符号拡張ビットを示している。つまり、第1部分積B0 〜第4部分積B3 については、図12にて「●」印と「○」印で示した10ビット(=9+1)が必須となり、加算時において各部分積B0 〜B3 の最上位ビットのビット位置を一致させるために、上記「□」印で示す符号拡張ビットが付加される。また、この例の場合、第5部分積B4 については、「○」印のみで示した8ビットが必須となる。
【0023】
以上の内容を踏まえると、例えば、2次のブースのアルゴリズムを用いて8ビット×8ビットの符号付き乗算と符号無し乗算とを択一的に実行する繰り返し乗算器(以下、「符号付き/無し繰り返し乗算器」という)は、図13のように構成され、その乗算動作は図14のようになる。
【0024】
即ち、まず図13に示すように、この符号付き/無し繰り返し乗算器J2には、8ビットの被乗数Xと乗数Yが入力されると共に、演算の1サイクル目,2サイクル目,…といった具合に演算のサイクル数を示す演算サイクル信号が第1制御線L1 を介して入力される。また更に、当該乗算器J2が行う乗算の種類を符号付き乗算と符号無し乗算との何れかに設定するための切替信号が第2制御線L2 を介して入力される。
【0025】
そして、この符号付き/無し繰り返し乗算器J2は、外部から入力される8ビットの被乗数Xを、第1制御線L1 からの演算サイクル信号が1サイクル目を示す値になったタイミング(或いは、その直前のタイミング)で保持する被乗数保持回路200と、第2制御線L2 からの切替信号が符号付き乗算の実行を示す場合に、被乗数保持回路200に保持されている被乗数Xを1ビット符号拡張して出力し、逆に上記切替信号が符号無し乗算の実行を示す場合には、被乗数保持回路200に保持されている被乗数Xを1ビット0拡張して出力するビット拡張器202と、第2制御線L2 からの切替信号が符号付き乗算の実行を示す場合に、外部から入力される8ビットの乗数Yを1ビット符号拡張して出力し、逆に上記切替信号が符号無し乗算の実行を示す場合には、外部から入力される8ビットの乗数Yを1ビット0拡張して出力するビット拡張器204と、そのビット拡張器204から出力される9ビットの乗数Y(1ビット拡張後の乗数Y)を、第1制御線L1 からの演算サイクル信号が1サイクル目を示す値になったタイミング(或いは、その直前のタイミング)で保持する乗数保持回路206と、第1制御線L1 からの演算サイクル信号の変化に同期して、乗数保持回路206に保持されている9ビットの乗数Yを構成するビットのうちで図9に示す各グループG0 〜G3 の何れかの3ビットを下位のものから順番に選択して出力する乗数ビット選択回路208とを備えている。尚、乗数ビット選択回路208は、図10の乗数ビット選択回路104と同様に動作する。
【0026】
また更に、この符号付き/無し繰り返し乗算器J2は、乗数ビット選択回路208からの3ビットの出力とビット拡張器202から出力される9ビットの被乗数X(1ビット拡張後の被乗数X)とから、2次のブースのアルゴリズムに基づき10ビットの部分積を生成して出力する部分積発生回路210と、第2制御線L2 からの切替信号が符号無し乗算の実行を示し且つ乗数保持回路206に保持されている9ビットの乗数Yにて最下位ビットから数えて8ビット目(即ち、外部から入力される元の乗数Yの最上位ビット)Y[7] が“1”である場合に、第1制御線L1 からの演算サイクル信号が4サイクル目を示す値になったタイミングにて、被乗数保持回路200に保持されている8ビットの被乗数Xを第5部分積B4 として出力し、それ以外の場合には、全ビットが“0”の8ビットデータを第5部分積B4 として出力する最終部分積発生回路212とを備えている。
【0027】
そして更に、この符号付き/無し繰り返し乗算器J2は、入力される8ビットデータを2ビット符号拡張して出力する符号拡張器214と、符号拡張器214からの10ビットデータと部分積発生回路210からの10ビットの部分積とを加算する加算器216と、加算器216から出力される10ビットデータの上位8ビットを演算サイクル信号の変化に同期して保持すると共に、自己が保持している8ビットデータを符号拡張器214に供給する中間和保持回路218と、加算器216から出力される10ビットデータの下位2ビットを演算サイクル信号の変化に同期して保持するシフトレジスタ220と、加算器216から出力される10ビットデータの上位8ビットと最終部分積発生回路212の出力とを加算する加算器222と、その加算器222から出力される8ビットデータを演算サイクル信号の変化に同期して保持する積上位ビットレジスタ224とを備えている。
【0028】
尚、この符号付き/無し繰り返し乗算器J2においても、例えば、演算サイクル信号は所定のクロックの立ち上がりタイミングで値が順次変化し、中間和保持回路218とシフトレジスタ220及び積上位ビットレジスタ224は、演算サイクル信号の値が変化してからクロックが立ち下がったタイミングでデータの保持動作を行う。また、中間和保持回路218,シフトレジスタ220,及び積上位ビットレジスタ224は、演算サイクル信号が1サイクル目を示す値になる直前に初期化されて、保持するデータのビットが全て“0”になる。一方、積上位ビットレジスタ224は、演算サイクル信号が4サイクル目を示す値になった場合にのみデータの保持動作を行うようにしても良い。
【0029】
このように構成された符号付き/無し繰り返し乗算器J2は、以下のように動作する。
まず、符号付き演算の場合(即ち、切替信号が符号付き乗算の実行を示す場合)には、8ビットの被乗数Xを1ビット符号拡張した9ビットの被乗数Xがビット拡張器202から出力されると共に、8ビットの乗数Yを1ビット符号拡張した9ビットの乗数Yが乗数保持回路206から出力される。また逆に、符号無し演算の場合(即ち、切替信号が符号無し乗算の実行を示す場合)には、8ビットの被乗数Xを1ビット0拡張した9ビットの被乗数Xがビット拡張器202から出力されると共に、8ビットの乗数Yを1ビット0拡張した9ビットの乗数Yが乗数保持回路206から出力される。
【0030】
そして、演算の1サイクル目(即ち、演算サイクル信号が1サイクル目を示す値になった場合)には、乗数ビット選択回路208から、乗数保持回路206に保持されている9ビットの乗数Yを構成するビットの一部として、図9に示す第1グループG0 の3ビット(Y[1] ,Y[0] ,Y[-1])が出力され、更に、部分積発生回路210により、図13の▲1▼に示す如く、上記第1グループG0 の3ビットとビット拡張器202から出力される9ビットの被乗数Xとから、10ビットの第1部分積B0 が生成されて出力される。そして更に、図14の上から3段目〜5段目に示すように、中間和保持回路218の初期値(即ち、全ビットが“0”の8ビットデータ)を符号拡張器214にて2ビット符号拡張した全ビットが“0”の10ビットデータと、部分積発生回路210からの10ビットの第1部分積B0 とが、加算器216によって加算され、更に、その加算器216の加算結果である10ビットデータのうちの上位8ビットが中間和保持回路218に保持される。また、加算器216の加算結果である10ビットデータのうちの下位2ビット(図14における「中間和1」の段の「◎」印の2ビット)が、シフトレジスタ220の上位2ビット位置に保持される。
【0031】
次に、演算の2サイクル目(即ち、演算サイクル信号が2サイクル目を示す値になった場合)には、乗数ビット選択回路208から、乗数保持回路206に保持されている9ビットの乗数Yを構成するビットの一部として、図9に示す第2グループG1 の3ビット(Y[3] ,Y[2] ,Y[1] )が出力され、更に、部分積発生回路210により、図13の▲2▼に示す如く、上記第2グループG1 の3ビットとビット拡張器202から出力される9ビットの被乗数Xとから、10ビットの第2部分積B1 が生成されて出力される。そして、図14の上から5段目〜7段目に示すように、中間和保持回路218に保持されている8ビットデータを符号拡張器214にて2ビット(図14における「中間和1」の段の「□」印の2ビット)符号拡張した10ビットデータと、部分積発生回路210からの10ビットの第2部分積B1 とが、加算器216によって加算され、更に、その加算器216の加算結果である10ビットデータのうちの上位8ビットが中間和保持回路218に更新して保持される。また、シフトレジスタ220が2ビット下位ビット側へシフト(右シフト)され、加算器216の加算結果である10ビットデータのうちの下位2ビット(図14における「中間和2」の段の「◎」印の4ビットのうちの上位2ビット)が、シフトレジスタ220の上位2ビット位置に保持される。この結果、図14における「中間和2」の段の「◎」印の4ビットが、シフトレジスタ220に保持されることとなる。
【0032】
そして、図14の上から7段目〜9段目及び9段目〜11段目に示すように、演算の3サイクル目と4サイクル目も同様に実行され、その結果、図14における「中間和4」の段の「◎」印の8ビットが、シフトレジスタ220に保持されることとなるが、特に演算の4サイクル目では、図14の上から11段目〜13段目に示すように、加算器216の加算結果である10ビットデータのうちの上位8ビット(図14における「中間和4」の段の「○」印の8ビット)と最終部分積発生回路212から出力される8ビットの第5部分積B4 とが、加算器222によって加算され、その加算器222の加算結果である8ビットデータ(図14における「積」の段の「○」印の8ビット)が積上位ビットレジスタ224に保持される。
【0033】
よって、演算の4サイクル目が終了した時点においては、被乗数Xと乗数Yとの積を表す16ビットデータのうち、上位8ビットが積上位ビットレジスタ224に保持され、下位8ビットがシフトレジスタ220に保持されることとなり、これにより乗算が終了する。
【0034】
一方、図15は、2次のブースのアルゴリズムを用いた8ビット×8ビットの符号付き/無し繰り返し乗算器の他の従来構成を表すブロック図であり、図16は、図15の符号付き/無し繰り返し乗算器J3の乗算動作を表す模式図である。
【0035】
図15に示すように、この符号付き/無し繰り返し乗算器J3は、外部から入力される8ビットの被乗数Xを、第1制御線L1 からの演算サイクル信号が1サイクル目を示す値になったタイミング(或いは、その直前のタイミング)で保持する被乗数保持回路300と、第2制御線L2 からの切替信号が符号付き乗算の実行を示す場合に、被乗数保持回路300に保持されている被乗数Xを2ビット符号拡張して出力し、逆に上記切替信号が符号無し乗算の実行を示す場合には、被乗数保持回路300に保持されている被乗数Xを2ビット0拡張して出力するビット拡張器302と、第2制御線L2 からの切替信号が符号付き乗算の実行を示す場合に、外部から入力される8ビットの乗数Yを2ビット符号拡張して出力し、逆に上記切替信号が符号無し乗算の実行を示す場合には、外部から入力される8ビットの乗数Yを2ビット0拡張して出力するビット拡張器304と、そのビット拡張器304から出力される10ビットの乗数Y(2ビット拡張後の乗数Y)を、第1制御線L1 からの演算サイクル信号が1サイクル目を示す値になったタイミング(或いは、その直前のタイミング)で保持する乗数保持回路306とを備えている。
【0036】
そして更に、この符号付き/無し繰り返し乗算器J3は、第1制御線L1 からの演算サイクル信号の変化に同期して、乗数保持回路306に保持されている10ビットの乗数Yを構成するビットのうちで図17に示す各グループG0 〜G4 の何れかの3ビットを下位のものから順番に選択して出力する乗数ビット選択回路308と、その乗数ビット選択回路308からの3ビットの出力とビット拡張器302から出力される10ビットの被乗数X(2ビット拡張後の被乗数X)とから、2次のブースのアルゴリズムに基づき10ビットの部分積を生成して出力する部分積発生回路310と、図13の符号付き/無し繰り返し乗算器J2に設けられた符号拡張器214,加算器216,中間和保持回路218,及びシフトレジスタ220と同様の、符号拡張器314,加算器316,中間和保持回路318,及びシフトレジスタ320とを備えている。尚、シフトレジスタ320は、10ビットデータを格納可能なものである。
【0037】
ここで、図17における「△」印の2ビットは、ビット拡張器304によって拡張された分の乗数Yの上位2ビット(Y[9] ,Y[8] )である。そして、乗数ビット選択回路308は、演算サイクル信号が1サイクル目を示す値になると、図17に示す最下位側の第1グループG0 の3ビット(Y[1] ,Y[0] ,Y[-1]:但しY[-1]はダミービットで“0”)を出力し、演算サイクル信号が2サイクル目を示す値になると、図17に示す第2グループG1 の3ビット(Y[3] ,Y[2] ,Y[1] )を出力し、演算サイクル信号が3サイクル目を示す値になると、図17に示す第3グループG2 の3ビット(Y[5] ,Y[4] ,Y[3] )を出力し、演算サイクル信号が4サイクル目を示す値になると、図17に示す第4グループG3 の3ビット(Y[7] ,Y[6] ,Y[5] )を出力し、演算サイクル信号が5サイクル目を示す値になると、図17に示す第5グループG4 の3ビット(Y[9] ,Y[8] ,Y[7] )を出力する。
【0038】
このように構成された符号付き/無し繰り返し乗算器J3は、以下のように動作する。
まず、符号付き演算の場合(即ち、切替信号が符号付き乗算の実行を示す場合)には、8ビットの被乗数Xを2ビット符号拡張した10ビットの被乗数Xがビット拡張器302から出力されると共に、8ビットの乗数Yを2ビット符号拡張した10ビットの乗数Yが乗数保持回路306から出力される。また逆に、符号無し演算の場合(即ち、切替信号が符号無し乗算の実行を示す場合)には、8ビットの被乗数Xを2ビット0拡張した10ビットの被乗数Xがビット拡張器302から出力されると共に、8ビットの乗数Yを2ビット0拡張した10ビットの乗数Yが乗数保持回路306から出力される。
【0039】
そして、演算の1サイクル目(即ち、演算サイクル信号が1サイクル目を示す値になった場合)には、乗数ビット選択回路308から、乗数保持回路306に保持されている10ビットの乗数Yを構成するビットの一部として、図17に示す第1グループG0 の3ビット(Y[1] ,Y[0] ,Y[-1])が出力され、更に、部分積発生回路310により、図15の▲1▼に示す如く、上記第1グループG0 の3ビットとビット拡張器302から出力される10ビットの被乗数Xとから、10ビットの第1部分積B0 が生成されて出力される。そして更に、図16の上から3段目〜5段目に示すように、中間和保持回路318の初期値(即ち、全ビットが“0”の8ビットデータ)を符号拡張器314にて2ビット符号拡張した全ビットが“0”の10ビットデータと、部分積発生回路310からの10ビットの第1部分積B0 とが、加算器316によって加算され、更に、その加算器316の加算結果である10ビットデータのうちの上位8ビットが中間和保持回路318に保持される。また、加算器316の加算結果である10ビットデータのうちの下位2ビット(図16における「中間和1」の段の「◎」印の2ビット)が、シフトレジスタ320の上位2ビット位置に保持される。
【0040】
次に、演算の2サイクル目(即ち、演算サイクル信号が2サイクル目を示す値になった場合)には、乗数ビット選択回路308から、乗数保持回路306に保持されている10ビットの乗数Yを構成するビットの一部として、図17に示す第2グループG1 の3ビット(Y[3] ,Y[2] ,Y[1] )が出力され、更に、部分積発生回路310により、図15の▲2▼に示す如く、上記第2グループG1 の3ビットとビット拡張器302から出力される10ビットの被乗数Xとから、10ビットの第2部分積B1 が生成されて出力される。そして、図16の上から5段目〜7段目に示すように、中間和保持回路318に保持されている8ビットデータを符号拡張器314にて2ビット(図16における「中間和1」の段の「□」印の2ビット)符号拡張した10ビットデータと、部分積発生回路310からの10ビットの第2部分積B1 とが、加算器316によって加算され、更に、その加算器316の加算結果である10ビットデータのうちの上位8ビットが中間和保持回路318に更新して保持される。また、シフトレジスタ320が2ビット下位ビット側へシフト(右シフト)され、加算器316の加算結果である10ビットデータのうちの下位2ビット(図16における「中間和2」の段の「◎」印の4ビットのうちの上位2ビット)が、シフトレジスタ320の上位2ビット位置に保持される。この結果、図16における「中間和2」の段の「◎」印の4ビットが、シフトレジスタ320に保持されることとなる。
【0041】
そして、図16の上から7段目〜9段目,9段目〜11段目,及び11段目〜13段目に示すように、演算の3サイクル目,4サイクル目,及び5サイクル目も同様に実行され、その結果、被乗数Xと乗数Yとの積を表す16ビットデータのうち、上位6ビット(図16における「積」の段の「○」印の6ビット)が中間和保持回路318の下位6ビット位置に保持され、下位10ビット(図16における「積」の段の「◎」印の10ビット)がシフトレジスタ320に保持されて、乗算が終了する。
【0042】
【発明が解決しようとする課題】
ところで、図10,図13,及び図15の各々に示した従来の繰り返し乗算器J1,J2,J3では、図11,図14,及び図16の上から3段目〜5段目に示したように、演算の1サイクル目において、加算器110,216,316は、中間和保持回路112,218,318の初期値(全ビットが“0”のデータ)に第1部分積B0 を加算することとなる。このため、演算の1サイクル目では、部分積の累積加算が実質的には行われず、無駄が生じている。
【0043】
特に、符号付き乗算と符号無し乗算とを共通のハードウエアで択一的に行う構成の場合には、前述したように、入力される被乗数Xと乗数Yを少なくとも1ビット拡張(符号拡張又は0拡張)して処理することとなり、それに伴い、符号付き乗算だけを行う構成の場合と比較して部分積が1つ余分に生成される。よって、図11と図16との対比からも分かるように、1つ余分に生成される部分積(第5部分積B4 )を加算するための演算サイクル(図16の5サイクル目▲5▼)が1サイクル余分に必要となり、積を得るまでの演算速度が低下するという点で非常に不利である。
【0044】
また、図13に示した符号付き/無し繰り返し乗算器J2のように、1つ余分に生じる部分積(第5部分積B4 )だけを加算するための加算器222を追加して設ければ、演算サイクルを1サイクル減らすことができ、延いては、符号付き乗算だけを行う構成の場合と同等の演算速度を達成することができるが、加算器は回路規模が比較的大きいため、IC化した場合のチップサイズの面において不利である。
【0045】
本発明は、こうした問題に鑑みなされたものであり、比較的小規模な回路構成で演算速度を向上させることのできる繰り返し型の乗算器(反復乗算器)を提供することを目的としている。
【0046】
【課題を解決するための手段、及び発明の効果】
上記目的を達成するためになされた本発明の乗算器においては、被乗数保持手段が被乗数を保持し、乗数保持手段が乗数を保持する。
【0047】
そして、第1の部分積発生回路が、演算のサイクル数を示す演算サイクル信号の変化に同期して、乗数保持手段に保持されている乗数を構成するビットのうちの最下位側の一部のビットを除く他の一部のビットを、下位のものから順番に選択すると共に、その選択した一部のビットと被乗数保持手段に保持されている被乗数とから部分積を生成する。
【0048】
また、第2の部分積発生回路は、演算サイクル信号が最初の演算サイクルを示す場合に、乗数保持手段に保持されている乗数を構成するビットのうちの最下位側の一部のビットと被乗数保持手段に保持されている被乗数とから、部分積を生成する。
【0049】
そして、加算手段とその加算手段の加算結果を保持する加算結果保持手段とを有する部分積累積加算回路では、加算手段が加算結果保持手段に保持されている値に第1の部分積発生回路によって生成された部分積を加算すると共に、加算結果保持手段が演算サイクル信号の変化に同期して加算手段の加算結果を更新して保持することにより、第1の部分積発生回路によって生成される部分積を累積加算するが、特に本発明において、演算サイクル信号が最初の演算サイクルを示す場合には、被加数選択回路が、第2の部分発生回路によって生成された部分積を、加算結果保持手段に保持されている値に代えて、加算手段に被加数(即ち、第1の部分積発生回路によって生成された部分積と加算される数)として供給する。
【0050】
このような本発明の乗算器において、演算サイクル信号が最初の演算サイクルを示す1サイクル目では、部分積累積加算回路の加算手段が、その時点での加算結果保持手段の初期値ではなく、第2の部分積発生回路によって生成された部分積(即ち、乗数の最下位側の一部のビットに対応した第1部分積)に、第1の部分積発生回路によって生成された部分積(即ち、乗数の最下位側の一部のビットより上位の一部のビットに対応した部分積)を加算することとなる。
【0051】
そして、演算サイクル信号が2番目以降の演算サイクルを示す2サイクル目以降では、従来の乗算器と同様に、部分積累積加算回路の加算手段は、前回の演算サイクルで加算結果保持手段に保持された値に第1の部分積発生回路によって今回生成された部分積を加算することとなる。
【0052】
よって、本発明の繰り返し型の乗算器によれば、演算の1サイクル目から、乗数の最下位側の一部のビットに対応した第1部分積とそれより上位の部分積とを加算して、従来の乗算器のような1サイクル目の無駄を無くすことができ、その結果、回路規模が比較的大きい加算器を追加することなく、積を得るまでの演算速度を向上させることができる。
【0053】
ところで、請求項2に記載のように、第1の部分積発生回路と第2の部分積発生回路とが、2次のブースのアルゴリズムに基づいて部分積を生成するように構成すれば、乗数の1ビットずつに対応して部分積を生成する場合と比較して、乗算に必要な部分積の数を半減させることができ、積を得るまでの演算速度を向上させるのに非常に有利である。
【0054】
一方、請求項3に記載の乗算器では、2次のブースのアルゴリズムを用いた請求項2に記載の乗算器において、被乗数保持手段は、当該乗算器が行う乗算の種類を符号付き乗算と符号無し乗算との何れかに設定するための切替信号が符号付き乗算の実行を示す場合には、外部から入力される被乗数を、その最上位ビットで2ビット符号拡張して保持し、前記切替信号が符号無し乗算の実行を示す場合には、外部から入力される被乗数を、その最上位ビット側を2ビット0拡張して保持する。そして同様に、乗数保持手段も、前記切替信号が符号付き乗算の実行を示す場合には、外部から入力される乗数を、その最上位ビットで2ビット符号拡張して保持し、前記切替信号が符号無し乗算の実行を示す場合には、外部から入力される乗数を、その最上位ビット側を2ビット0拡張して保持する。
【0055】
そして、このような請求項3に記載の乗算器によれば、2次のブースのアルゴリズムを用いて、符号付き乗算と符号無し乗算とを共通のハードウエアで択一的に行うことができるようになる。
そして、この乗算器の場合には、入力される被乗数と乗数を2ビット拡張(符号拡張又は0拡張)して処理することとなるため、符号付き乗算だけを行う構成の場合と比較して部分積が1つ余分に生成されるが、前述したように演算の1サイクル目から部分積の累積加算を行うことができるため、加算器を特別に追加することなく、従来の符号付き乗算だけを行う乗算器の場合と同等の演算速度を達成することができる。つまり、請求項3に記載の乗算器によれば、演算速度を低下させることなく且つ比較的小規模な回路構成で、符号付き乗算と符号無し乗算とを切り替えて実行することができる。
【0056】
【発明の実施の形態】
以下、本発明の一実施形態について、図面を用いて説明する。
まず図1は、8ビットの被乗数Xと乗数Yを入力して符号付き乗算と符号無し乗算とを択一的に行う第1実施形態の繰り返し乗算器(符号付き/無し繰り返し乗算器)M1の構成を表すブロック図であり、図2は、その繰り返し乗算器M1の乗算動作を表す模式図である。尚、本第1実施形態の繰り返し乗算器M1においても、演算の1サイクル目,2サイクル目,…といった具合に演算のサイクル数を示す演算サイクル信号が第1制御線L1 を介して入力され、また、当該乗算器M1が行う乗算の種類を符号付き乗算と符号無し乗算との何れかに設定するための切替信号が第2制御線L2 を介して入力される。
【0057】
図1に示す如く、本第1実施形態の繰り返し乗算器M1は、図15に示した乗算器J3と同様に、外部から入力される8ビットの被乗数Xを、第1制御線L1 からの演算サイクル信号が1サイクル目を示す値になったタイミング(或いは、その直前のタイミング)で保持する被乗数保持回路10と、第2制御線L2 からの切替信号が符号付き乗算の実行を示す場合に、被乗数保持回路10に保持されている被乗数Xを2ビット符号拡張して出力し、逆に上記切替信号が符号無し乗算の実行を示す場合には、被乗数保持回路10に保持されている被乗数Xを2ビット0拡張して出力するビット拡張器12と、第2制御線L2 からの切替信号が符号付き乗算の実行を示す場合に、外部から入力される8ビットの乗数Yを2ビット符号拡張して出力し、逆に上記切替信号が符号無し乗算の実行を示す場合には、外部から入力される8ビットの乗数Yを2ビット0拡張して出力するビット拡張器14と、そのビット拡張器14から出力される10ビットの乗数Y(2ビット拡張後の乗数Y)を、第1制御線L1 からの演算サイクル信号が1サイクル目を示す値になったタイミング(或いは、その直前のタイミング)で保持する乗数保持回路16とを備えている。
【0058】
また、本第1実施形態の繰り返し乗算器M1は、乗数保持回路16に保持されている10ビットの乗数Yを構成するビットのうちで、図3に示す如く最下位ビットY[0] から4ビット目Y[3] までの4ビットY[3:0] からなる第1出力と、3ビット目Y[2] から6ビット目Y[5] までの4ビットY[5:2] からなる第2出力と、5ビット目Y[4] から8ビット目Y[7] までの4ビットY[7:4] からなる第3出力と、7ビット目Y[6] から10ビット目Y[9] までの4ビットY[9:6] からなる第4出力とを、第1制御線L1 からの演算サイクル信号の変化に同期して、下位のものから順番に出力する乗数ビット選択回路18を備えている。
【0059】
尚、図3における「△」印の2ビットは、ビット拡張器14によって拡張された分の乗数Yの上位2ビット(Y[9] ,Y[8] )である。そして、乗数ビット選択回路18は、演算サイクル信号が1サイクル目を示す値になると、図3に示す第1出力(Y[3:0] )を出力し、演算サイクル信号が2サイクル目を示す値になると、図3に示す第2出力(Y[5:2] )を出力し、演算サイクル信号が3サイクル目を示す値になると、図3に示す第3出力(Y[7:4] )を出力し、演算サイクル信号が4サイクル目を示す値になると、図3に示す第4出力(Y[9:6] )を出力する。
【0060】
そして、本第1実施形態の繰り返し乗算器M1は、乗数ビット選択回路18から出力される4ビットのうちの上位3ビットとビット拡張器12から出力される10ビットの被乗数X(2ビット拡張後の被乗数X)とから、2次のブースのアルゴリズムに基づき10ビットの部分積を生成して出力する部分積発生回路20と、乗数ビット選択回路18から出力される4ビットのうちの下位2ビットを入力し、その下位2ビットの下位側に“0”のダミービットを付けた3ビットとビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの部分積を生成して出力する部分積発生回路22とを備えている。
【0061】
そして更に、本第1実施形態の繰り返し乗算器M1は、入力される10ビットデータを2ビット符号拡張して出力する符号拡張器24と、符号拡張器24から出力される12ビットデータのうちの上位10ビットと部分積発生回路20からの10ビットの部分積とを加算する加算器26と、加算器26から出力される10ビットデータを演算サイクル信号の変化に同期して保持し出力する中間和保持回路28と、符号拡張器24から出力される12ビットデータのうちの下位2ビットを演算サイクル信号の変化に同期して保持するシフトレジスタ30と、演算サイクル信号が1サイクル目を示す値の場合に、部分積発生回路22からの10ビットの部分積を選択して符号拡張器24へ入力させ、それ以外の場合には、中間和保持回路28からの10ビットデータを選択して符号拡張器24へ入力させる被加数選択回路32とを備えている。
【0062】
尚、シフトレジスタ30は、8ビットデータを格納可能なものである。また、本第1実施形態の繰り返し乗算器M1においても、例えば、演算サイクル信号は所定のクロックの立ち上がりタイミングで値が順次変化し、中間和保持回路28とシフトレジスタ30は、演算サイクル信号の値が変化してからクロックが立ち下がったタイミング(つまり、演算サイクル信号の変化に対してクロックの半周期分ずれたタイミング)でデータの保持動作を行う。
【0063】
このように構成された本第1実施形態の繰り返し乗算器M1は、以下のように動作する。
まず、符号付き演算を行う場合(即ち、切替信号が符号付き乗算の実行を示す場合)には、少なくとも演算サイクル信号が1サイクル目〜4サイクル目を示す値になっている演算実行中の間、8ビットの被乗数Xを2ビット符号拡張した10ビットの被乗数Xがビット拡張器12から継続して出力されると共に、8ビットの乗数Yを2ビット符号拡張した10ビットの乗数Yが乗数保持回路16から継続して出力される。また逆に、符号無し演算を行う場合(即ち、切替信号が符号無し乗算の実行を示す場合)には、少なくとも演算サイクル信号が1サイクル目〜4サイクル目を示す値になっている演算実行中の間、8ビットの被乗数Xを2ビット0拡張した10ビットの被乗数Xがビット拡張器12から継続して出力されると共に、8ビットの乗数Yを2ビット0拡張した10ビットの乗数Yが乗数保持回路16から継続して出力される。
【0064】
そして、演算の1サイクル目(即ち、演算サイクル信号が最初の1サイクル目を示す値になった場合)には、乗数ビット選択回路18から、乗数保持回路16に保持されている10ビットの乗数Yを構成するビットのうちの、図3に示す第1出力の4ビットY[3:0] (Y[3] ,Y[2] ,Y[1] ,Y[0] )が出力され、部分積発生回路22が、乗数ビット選択回路18からの4ビットY[3:0] のうちの下位2ビット(Y[1] ,Y[0] )の下位側に“0”のダミービットY[-0]を付けた3ビットと、ビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの第1部分積B0 を生成して出力する。また、部分積発生回路20が、乗数ビット選択回路18からの4ビットY[3:0] のうちの上位3ビット(Y[3] ,Y[2] ,Y[1] )と、ビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの第2部分積B1 を生成して出力する。
【0065】
そして更に、演算の1サイクル目では、被加数選択回路32により、部分積発生回路22からの第1部分積B0 が選択されて符号拡張器24へ入力される。
このため、図2の上から3段目〜5段目に示すように、部分積発生回路22からの10ビットの第1部分積B0 が符号拡張器24によって2ビット(図2における「B0 」の段の「□」印の2ビット)符号拡張されると共に、その符号拡張後の上位10ビットと部分積発生回路20からの10ビットの第2部分積B1 とが、加算器26によって加算され、更に、その加算器26の加算結果である10ビットデータが中間和保持回路28に保持される。また、符号拡張器24の出力のうちの下位2ビットである第1部分積B0 の下位2ビット(図2における「B0 」の段の「☆」印の2ビットであって、「中間和1」の段の「◎」印の2ビット)が、シフトレジスタ30の上位2ビット位置に保持される。
【0066】
次に、演算の2サイクル目(即ち、演算サイクル信号が2サイクル目を示す値になった場合)では、被加数選択回路32により、中間和保持回路28からの10ビットデータ(つまり、1サイクル目で加算器26から出力された10ビットデータ)が選択されて符号拡張器24へ入力される。
【0067】
また、乗数ビット選択回路18から、乗数保持回路16に保持されている10ビットの乗数Yを構成するビットのうちの、図3に示す第2出力の4ビットY[5:2] (Y[5] ,Y[4] ,Y[3] ,Y[2] )が出力され、部分積発生回路20が、乗数ビット選択回路18からの4ビットY[5:2] のうちの上位3ビット(Y[5] ,Y[4] ,Y[3] )と、ビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの第3部分積B2 を生成して出力する。
【0068】
このため、演算の2サイクル目では、図2の上から5段目〜7段目に示すように、中間和保持回路28に保持されている10ビットデータが符号拡張器24によって2ビット(図2における「中間和1」の段の「□」印の2ビット)符号拡張されると共に、その符号拡張後の上位10ビットと部分積発生回路20からの10ビットの第3部分積B2 とが、加算器26によって加算され、更に、その加算器26の加算結果である10ビットデータが中間和保持回路28に更新して保持される。また、シフトレジスタ30が2ビット下位ビット側へシフト(右シフト)され、符号拡張器24の出力の下位2ビットであって、1サイクル目で加算器26から出力された10ビットデータの下位2ビット(図2における「中間和1」の段の「☆」印の2ビットであって、「中間和2」の段の「◎」印の4ビットのうちの上位2ビット)が、シフトレジスタ30の上位2ビット位置に保持される。この結果、図2における「中間和2」の段の「◎」印の4ビットが、シフトレジスタ30の上位4ビット位置に保持されることとなる。
【0069】
次に、演算の3サイクル目(即ち、演算サイクル信号が3サイクル目を示す値になった場合)においても、被加数選択回路32により、中間和保持回路28からの10ビットデータ(つまり、2サイクル目で加算器26から出力された10ビットデータ)が選択されて符号拡張器24へ入力される。
【0070】
また、演算の3サイクル目では、乗数ビット選択回路18から、乗数保持回路16に保持されている10ビットの乗数Yを構成するビットのうちの、図3に示す第3出力の4ビットY[7:4] (Y[7] ,Y[6] ,Y[5] ,Y[4] )が出力され、部分積発生回路20が、乗数ビット選択回路18からの4ビットY[7:4] のうちの上位3ビット(Y[7] ,Y[6] ,Y[5] )と、ビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの第4部分積B3 を生成して出力する。
【0071】
このため、演算の3サイクル目では、図2の上から7段目〜9段目に示すように、中間和保持回路28に保持されている10ビットデータが符号拡張器24によって2ビット(図2における「中間和2」の段の「□」印の2ビット)符号拡張されると共に、その符号拡張後の上位10ビットと部分積発生回路20からの10ビットの第4部分積B3 とが、加算器26によって加算され、更に、その加算器26の加算結果である10ビットデータが中間和保持回路28に更新して保持される。また、シフトレジスタ30が2ビット下位ビット側へシフト(右シフト)され、符号拡張器24の出力の下位2ビットであって、2サイクル目で加算器26から出力された10ビットデータの下位2ビット(図2における「中間和2」の段の「☆」印の2ビットであって、「中間和3」の段の「◎」印の6ビットのうちの上位2ビット)が、シフトレジスタ30の上位2ビット位置に保持される。この結果、図2における「中間和3」の段の「◎」印の6ビットが、シフトレジスタ30の上位6ビット位置に保持されることとなる。
【0072】
次に、演算の4サイクル目(即ち、演算サイクル信号が4サイクル目を示す値になった場合)においても、被加数選択回路32により、中間和保持回路28からの10ビットデータ(つまり、3サイクル目で加算器26から出力された10ビットデータ)が選択されて符号拡張器24へ入力される。
【0073】
また、演算の4サイクル目では、乗数ビット選択回路18から、乗数保持回路16に保持されている10ビットの乗数Yを構成するビットのうちの、図3に示す第4出力の4ビットY[9:6] (Y[9] ,Y[8] ,Y[7] ,Y[6] )が出力され、部分積発生回路20が、乗数ビット選択回路18からの4ビットY[9:6] のうちの上位3ビット(Y[9] ,Y[8] ,Y[7] )と、ビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの第5部分積B4 を生成して出力する。尚、前述したように、Y[9] とY[8] は、ビット拡張器14によって拡張された分の乗数Yの上位2ビットであり、図3においては「△」印で示されている。
【0074】
このため、演算の4サイクル目では、図2の上から9段目〜11段目に示すように、中間和保持回路28に保持されている10ビットデータが符号拡張器24によって2ビット(図2における「中間和3」の段の「□」印の2ビット)符号拡張されると共に、その符号拡張後の上位10ビットと部分積発生回路20からの10ビットの第5部分積B4 とが、加算器26によって加算され、更に、その加算器26の加算結果である10ビットデータが中間和保持回路28に更新して保持される。また、シフトレジスタ30が2ビット下位ビット側へシフト(右シフト)され、符号拡張器24の出力の下位2ビットであって、3サイクル目で加算器26から出力された10ビットデータの下位2ビット(図2における「中間和3」の段の「☆」印の2ビットであって、「積」の段の「◎」印の8ビットのうちの上位2ビット)が、シフトレジスタ30の上位2ビット位置に保持される。
【0075】
この結果、演算の4サイクル目が終了した時点においては、被乗数Xと乗数Yとの積を表す16ビットデータのうちの下位8ビット(図2における「積」の段の「◎」印の8ビット)が、シフトレジスタ30に保持され、上記積を表す16ビットデータのうちの上位8ビット(図2における「積」の段の「○」印の8ビット)が、中間和保持回路28の下位8ビット位置に保持されることとなる。そして、この時点で乗算が終了する。
【0076】
尚、本第1実施形態では、被乗数保持回路10とビット拡張器12が、被乗数保持手段に相当し、ビット拡張器14と乗数保持回路16が、乗数保持手段に相当している。また、乗数ビット選択回路18と部分積発生回路20が、第1の部分積発生回路に相当し、乗数ビット選択回路18と部分積発生回路22が、第2の部分積発生回路に相当している。そして、符号拡張器24,加算器26,中間和保持回路28,及びシフトレジスタ30が、部分積累積加算回路に相当しており、その中で、符号拡張器24と加算器26が、加算手段に相当し、中間和保持回路28とシフトレジスタ30が、加算結果保持手段に相当している。
【0077】
以上のような本第1実施形態の繰り返し乗算器M1では、各演算サイクル毎に、乗数ビット選択回路18及び部分積発生回路20の動作によって、部分積が乗数Yの下位ビットに対応するものの順に生成されると共に、その時点で中間和保持回路28及びシフトレジスタ30に保持されている値(中間和)に上記部分積発生回路20で生成された部分積が、符号拡張器24及び加算器26の動作によって加算され、その加算結果が中間和保持回路28及びシフトレジスタ30に更新して保持されることにより、部分積の累積加算が行われる。
【0078】
ここで特に、本第1実施形態の繰り返し乗算器M1においては、乗数ビット選択回路18及び部分積発生回路20によって、第1部分積B0 以外の他の部分積B1 〜B4 を下位のものから順に生成するようにし、1サイクル目では、乗数ビット選択回路18及び部分積発生回路22によって、第1部分積B0 を生成するようにしている。そして、被加数選択回路32により、1サイクル目のみ、符号拡張器24へ中間和保持回路28の出力ではなく、部分積発生回路22からの第1部分積B0 を供給するようにしている。
【0079】
このため、演算の1サイクル目では、符号拡張器24及び加算器26により、部分積発生回路22からの第1部分積B0 に部分積発生回路20からの第2部分積B1 が加算され、2サイクル以降では、従来の乗算器と同様に、符号拡張器24,加算器26,中間和保持回路28,及びシフトレジスタ30の動作により、部分積発生回路20によって順次生成される部分積の累積加算が行われることとなる。
【0080】
よって、本第1実施形態の繰り返し乗算器M1によれば、図2と前述した図16との対比からも明らかなように、演算の1サイクル目から、第1部分積B0 と第2部分積B1 とを加算して、従来の乗算器のような1サイクル目の無駄を無くすことができ、その結果、回路規模が比較的大きい加算器を追加することなく、積を得るまでの演算速度を向上させることができる。
【0081】
特に、本第1実施形態の繰り返し乗算器M1では、符号付き乗算と符号無し乗算とを択一的に実行するために、入力される被乗数Xと乗数Yを2ビット拡張(符号拡張又は0拡張)して処理するため、符号付き乗算だけを行う構成の場合と比較して第5部分積B4 が1つ余分に生成されるが、演算の1サイクル目から部分積の累積加算を行うことができるため、図13に示した従来の乗算器J2のように加算器を特別に追加することなく、従来の符号付き乗算だけを行う乗算器の場合と同等の演算速度を達成することができる。具体的に説明すると、図15に示した従来の符号付き/無し繰り返し乗算器J3では、積を得るまでに5サイクルを要するが、本第1実施形態の繰り返し乗算器M1では、4サイクルで積を得ることができ、これは、符号付き乗算だけを行う図10に示した従来の繰り返し乗算器J1と同じ演算速度となる。
【0082】
このように、本第1実施形態の繰り返し乗算器M1によれば、演算速度を低下させることなく且つ比較的小規模な回路構成で、符号付き乗算と符号無し乗算とを切り替えて実行することができる。
次に、第2実施形態について、図4〜図6を用いて説明する。
【0083】
まず図4は、8ビットの被乗数Xと乗数Yを入力して符号付き乗算と符号無し乗算とを択一的に行う第2実施形態の繰り返し乗算器(符号付き/無し繰り返し乗算器)M2の構成を表すブロック図であり、図5は、その繰り返し乗算器M2の乗算動作を表す模式図である。尚、図4において、第1実施形態の繰り返し乗算器M1と同様の構成要素については、同一の符号を付しているため、詳細な説明は省略する。
【0084】
図4に示すように、本第2実施形態の繰り返し乗算器M2は、第1実施形態の乗算器M1と比較して、下記の(1)〜(4)の点で異なっている。
(1)乗数ビット選択回路18に代えて設けられた乗数ビット選択回路34は、乗数保持回路16に保持されている2ビット拡張後の10ビットの乗数Yを構成するビットのうちで、図6に示す如く最下位ビットY[0] から6ビット目Y[5] までの6ビットY[5:0] からなる第1出力と、5ビット目Y[4] から10ビット目Y[9] までの6ビットY[9:4] からなる第2出力とを、第1制御線L1 からの演算サイクル信号の変化に同期して、下位のものから順番に出力する。
【0085】
つまり、本第2実施形態の乗数ビット選択回路34は、演算サイクル信号が1サイクル目を示す値になると、図6に示す第1出力(Y[5:0] )を出力し、演算サイクル信号が2サイクル目を示す値になると、図6に示す第2出力(Y[9:4] )を出力する。尚、図6における「△」印の2ビットは、図3の場合と同様に、ビット拡張器14によって拡張された分の乗数Yの上位2ビット(Y[9] ,Y[8] )である。
【0086】
(2)部分積発生回路20に代えて、2つの部分積発生回路36,38が設けられている。
そして、一方の部分積発生回路36は、乗数ビット選択回路34から出力される6ビットのうちの下位2ビット目から4ビット目までの3ビットと、ビット拡張器12から出力される10ビットの被乗数X(2ビット拡張後の被乗数X)とから、2次のブースのアルゴリズムに基づき10ビットの部分積を生成して出力する。
【0087】
また、他方の部分積発生回路38は、第1実施形態の部分積発生回路20と同様に、乗数ビット選択回路34から出力される6ビットのうちの上位3ビットと、ビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの部分積を生成して出力する。
【0088】
尚、本第2実施形態においても、部分積発生回路22は、乗数ビット選択回路34から出力される6ビットのうちの下位2ビットを入力し、その下位2ビットの下位側に“0”のダミービットを付けた3ビットとビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの部分積を生成して出力する。
【0089】
(3)加算器26と中間和保持回路28との間に、符号拡張器40と加算器42が追加して設けられている。
そして、1段目の加算器26が、符号拡張器24から出力される12ビットデータのうちの上位10ビットと部分積発生回路36からの10ビットの部分積とを加算し、符号拡張器40が、加算器26から出力される10ビットデータを2ビット符号拡張して出力する。そして更に、2段目の加算器42が、符号拡張器40から出力される12ビットデータのうちの上位10ビットと部分積発生回路38からの10ビットの部分積とを加算し、その加算器42から出力される10ビットデータが中間和保持回路28に入力される。
【0090】
(4)シフトレジスタ30に代えて設けられたシフトレジスタ44は、符号拡張器24から出力される12ビットデータのうちの下位2ビットと、符号拡張器40から出力される12ビットデータのうちの下位2ビットとを、演算サイクル信号の変化に同期して保持する。
【0091】
このように構成された本第2実施形態の繰り返し乗算器M2は、以下のように動作する。
まず、符号付き演算を行う場合(即ち、切替信号が符号付き乗算の実行を示す場合)には、少なくとも演算サイクル信号が1サイクル目〜2サイクル目を示す値になっている演算実行中の間、8ビットの被乗数Xを2ビット符号拡張した10ビットの被乗数Xがビット拡張器12から継続して出力されると共に、8ビットの乗数Yを2ビット符号拡張した10ビットの乗数Yが乗数保持回路16から継続して出力される。また逆に、符号無し演算を行う場合(即ち、切替信号が符号無し乗算の実行を示す場合)には、少なくとも演算サイクル信号が1サイクル目〜2サイクル目を示す値になっている演算実行中の間、8ビットの被乗数Xを2ビット0拡張した10ビットの被乗数Xがビット拡張器12から継続して出力されると共に、8ビットの乗数Yを2ビット0拡張した10ビットの乗数Yが乗数保持回路16から継続して出力される。
【0092】
そして、演算の1サイクル目(即ち、演算サイクル信号が最初の1サイクル目を示す値になった場合)には、乗数ビット選択回路34から、乗数保持回路16に保持されている10ビットの乗数Yを構成するビットのうちの、図6に示す第1出力の6ビットY[5:0] (Y[5] ,Y[4] ,Y[3] ,Y[2] ,Y[1] ,Y[0] )が出力され、部分積発生回路22が、乗数ビット選択回路34からの6ビットY[5:0] のうちの下位2ビット(Y[1] ,Y[0] )の下位側に“0”のダミービットY[-0]を付けた3ビットと、ビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの第1部分積B0 を生成して出力する。また、部分積発生回路36が、乗数ビット選択回路34からの6ビットY[5:0] のうちの下位2ビット目から4ビット目までの3ビット(Y[3] ,Y[2] ,Y[1] )と、ビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの第2部分積B1 を生成して出力する。また更に、部分積発生回路38が、乗数ビット選択回路34からの6ビットY[5:0] のうちの上位3ビット(Y[5] ,Y[4] ,Y[3] )と、ビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの第3部分積B2 を生成して出力する。
【0093】
そして更に、演算の1サイクル目では、被加数選択回路32により、部分積発生回路22からの第1部分積B0 が選択されて符号拡張器24へ入力される。
このため、演算の1サイクル目では、まず図5の上から3段目〜5段目に示すように、部分積発生回路22からの10ビットの第1部分積B0 が符号拡張器24によって2ビット(図5における「B0 」の段の「□」印の2ビット)符号拡張されると共に、その符号拡張後の上位10ビットと部分積発生回路36からの10ビットの第2部分積B1 とが、加算器26によって加算される。また、符号拡張器24の出力の下位2ビットである第1部分積B0 の下位2ビット(図5における「B0 」の段の「☆」印の2ビットであって、「中間和1」の段の「◎」印の4ビットのうちの下位2ビット)が、シフトレジスタ44の上位から3,4ビット目の位置に保持される。
【0094】
そして更に、演算の1サイクル目では、図5の上から5段目〜7段目に示すように、加算器26の加算結果である10ビットデータが符号拡張器40によって2ビット(図5における「1段目出力1」の段の「□」印の2ビット)符号拡張されると共に、その符号拡張後の上位10ビットと部分積発生回路38からの10ビットの第3部分積B2 とが、加算器42によって加算され、更に、その加算器42の加算結果である10ビットデータが中間和保持回路28に保持される。また、符号拡張器40の出力の下位2ビット(図5における「1段目出力1」の段の「☆」印の2ビットであって、「中間和1」の段の「◎」印の4ビットのうちの上位2ビット)が、シフトレジスタ44の上位2ビット位置に保持される。よって、図5における「中間和1」の段の「◎」印の4ビットが、シフトレジスタ44の上位4ビット位置に保持されることとなる。
【0095】
次に、演算の2サイクル目(即ち、演算サイクル信号が2サイクル目を示す値になった場合)では、被加数選択回路32により、中間和保持回路28からの10ビットデータ(つまり、1サイクル目で加算器42から出力された10ビットデータ)が選択されて符号拡張器24へ入力される。
【0096】
また、乗数ビット選択回路34から、乗数保持回路16に保持されている10ビットの乗数Yを構成するビットのうちの、図6に示す第2出力の6ビットY[9:4] (Y[9] ,Y[8] ,Y[7] ,Y[6] ,Y[5] ,Y[4] )が出力され、部分積発生回路36が、乗数ビット選択回路34からの6ビットY[9:4] のうちの下位2ビット目から4ビット目までの3ビット(Y[7] ,Y[6] ,Y[5] )と、ビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの第4部分積B3 を生成して出力する。そして更に、部分積発生回路38が、乗数ビット選択回路34からの6ビットY[9:4] のうちの上位3ビット(Y[9] ,Y[8] ,Y[7] )と、ビット拡張器12から出力される10ビットの被乗数Xとから、2次のブースのアルゴリズムに基づき10ビットの第5部分積B4 を生成して出力する。尚、Y[9] とY[8] は、図6において「△」印で示されている。
【0097】
このため、演算の2サイクル目では、まず図5の上から7段目〜9段目に示すように、中間和保持回路28に保持されている10ビットデータが符号拡張器24によって2ビット(図5における「中間和1」の段の「□」印の2ビット)符号拡張されると共に、その符号拡張後の上位10ビットと部分積発生回路36からの10ビットの第4部分積B3 とが、加算器26によって加算される。また、シフトレジスタ44が4ビット下位ビット側へシフト(右シフト)され、符号拡張器24の出力の下位2ビットであって、1サイクル目で加算器42から出力された10ビットデータの下位2ビット(図5における「中間和1」の段の「☆」印の2ビットであって、「積」の段の「◎」印の8ビットのうちの上位から3,4ビット)が、シフトレジスタ44の上位から3,4ビット目の位置に保持される。
【0098】
そして更に、演算の2サイクル目では、図5の上から9段目〜11段目に示すように、加算器26の加算結果である10ビットデータが符号拡張器40によって2ビット(図5における「1段目出力2」の段の「□」印の2ビット)符号拡張されると共に、その符号拡張後の上位10ビットと部分積発生回路38からの10ビットの第5部分積B4 とが、加算器42によって加算され、更に、その加算器42の加算結果である10ビットデータが中間和保持回路28に保持される。また、符号拡張器40の出力の下位2ビット(図5における「1段目出力2」の段の「☆」印の2ビットであって、「積」の段の「◎」印の8ビットのうちの上位2ビット)が、シフトレジスタ44の上位2ビット位置に保持される。
【0099】
この結果、演算の2サイクル目が終了した時点においては、被乗数Xと乗数Yとの積を表す16ビットデータのうちの下位8ビット(図5における「積」の段の「◎」印の8ビット)が、シフトレジスタ44に保持され、上記積を表す16ビットデータのうちの上位8ビット(図5における「積」の段の「○」印の8ビット)が、中間和保持回路28の下位8ビット位置に保持されることとなる。そして、この時点で乗算が終了する。
【0100】
尚、本第2実施形態においても、被乗数保持回路10とビット拡張器12が、被乗数保持手段に相当し、ビット拡張器14と乗数保持回路16が、乗数保持手段に相当している。また、乗数ビット選択回路34と2つの部分積発生回路36,38が、第1の部分積発生回路に相当し、乗数ビット選択回路34と部分積発生回路22が、第2の部分積発生回路に相当している。そして、符号拡張器24,加算器26,符号拡張器40,加算器42,中間和保持回路28,及びシフトレジスタ44が、部分積累積加算回路に相当しており、その中で、符号拡張器24,40と加算器26,42が、加算手段に相当し、中間和保持回路28とシフトレジスタ44が、加算結果保持手段に相当している。
【0101】
以上詳述したように、本第2実施形態の繰り返し乗算器M2では、2つの部分積発生回路36,38によって各演算サイクル毎に部分積を2つずつ生成し、その2つの部分積を1段目の符号拡張器24及び加算器26と2段目の符号拡張器40及び加算器42とによって一度に(1サイクル中に)加算するようにしている。このため、第1実施形態の繰り返し乗算器M1と比較して、2つの加算器26,42が必要となるものの、2サイクルで乗算を終了することができ、演算速度が2倍になる。
【0102】
そして特に、本第2実施形態の繰り返し乗算器M2においても、演算の1サイクル目では、被加数選択回路32により、1段目の符号拡張器24へは、中間和保持回路28の出力に代えて、部分積発生回路22からの第1部分積B0 を供給するようにしている。このため、本第2実施形態の繰り返し乗算器M2によっても、演算の1サイクル目から、第1部分積B0 とそれより上位の第2部分積B1 及び第3部分積B2 とを加算することができ、その結果、積を得るまでの演算速度を向上させることができる。
【0103】
つまり、例えば図15に示した従来の繰り返し乗算器J3において、本第2実施形態の様に、各演算サイクル毎に部分積を2つずつ生成して加算するように構成しても、部分積の総数(=5)が、1サイクル毎に加算していく部分積の数(=2)で割り切れず1余るため、積を得るまでに3サイクル必要となり、符号拡張器及び加算器が1段増加される割には十分な効果を得ることができない。これに対して、本第2実施形態の繰り返し乗算器M2によれば、積を得るのに必要な演算サイクル数を非常に効率良く減少させることができるのである。
【0104】
以上、本発明の一実施形態について説明したが、本発明は、前述した各実施形態に限定されるものではなく、種々の形態を採り得ることは言うまでもない。
例えば、第1実施形態の繰り返し乗算器M1において、被乗数保持回路10とビット拡張器12との接続順序、或いは、ビット拡張器14と乗数保持回路16との接続順序は、入れ替えても良い。つまり、それらの接続順序を入れ替えたとしても、被乗数保持回路10及びビット拡張器12により、8ビットの被乗数Xが切替信号に従い2ビット符号拡張又は0拡張されて保持されることとなり、また、ビット拡張器14及び乗数保持回路16により、8ビットの乗数Yが切替信号に従い2ビット符号拡張又は0拡張されて保持されることとなるからである。そして、このことは、第2実施形態の繰り返し乗算器M2についても同様である。
【0105】
また、上記各実施形態の繰り返し乗算器M1,M2では、演算サイクル信号として、各サイクル毎に値が変化する信号を用いたが、これに限るものではない。
例えば、各サイクル毎に立ち上がる(或いは立ち下がる)クロック信号と初期化信号とを演算サイクル信号として用い、被乗数保持回路10、乗数保持回路16、乗数ビット選択回路18,34、及び被加数選択回路32の各々は、初期化信号を受けてから上記クロック信号が立ち上がった(或いは立ち下がった)回数により、演算のサイクル数を把握するように構成することができる。
【0106】
一方、上記各実施形態の繰り返し乗算器M1,M2では、2次のブースのアルゴリズムを用いているため、生成すべき部分積の数を減らすことができるが、部分積は、例えば乗数Yの1ビットずつに対応して生成する等、2次のブースのアルゴリズム以外によって生成するように構成しても良い。
【0107】
また、上記各実施形態の繰り返し乗算器M1,M2は、符号付き乗算と符号無し乗算とを共通のハードウエアで択一的に実行するものであったが、本発明は、符号付き乗算のみを行う乗算器、或いは、符号無し乗算のみを行う乗算器についても、全く同様に適用することができる。
【0108】
例えば、第1実施形態の繰り返し乗算器M1において、2つのビット拡張器12,14を削除すれば、符号付き乗算のみを行う繰り返し乗算器が得られる。そして、このように構成した場合には、図10に示した従来の繰り返し乗算器J1と比較して、積を得るのに必要なサイクル数を4サイクルから3サイクルへと1つ減らすことができる。
【0109】
また更に、上記各実施形態の繰り返し乗算器M1,M2は、8ビットの被乗数Xと乗数Yを入力して8ビット×8ビットの乗算を行うものであったが、本発明は、他のビット長の乗算を行う繰り返し乗算器に対しても、全く同様に適用することができる。
【図面の簡単な説明】
【図1】 第1実施形態の繰り返し乗算器の構成を表すブロック図である。
【図2】 図1の繰り返し乗算器の乗算動作を表す模式図である。
【図3】 図1の繰り返し乗算器における乗数ビット選択回路の作用を説明する説明図である。
【図4】 第2実施形態の繰り返し乗算器の構成を表すブロック図である。
【図5】 図4の繰り返し乗算器の乗算動作を表す模式図である。
【図6】 図4の繰り返し乗算器における乗数ビット選択回路の作用を説明する説明図である。
【図7】 2次のブースのアルゴリズムを説明する真理値表である。
【図8】 2次のブースのアルゴリズムを用いた2の補数表示形式の8ビット×8ビットの乗算を説明する説明図である。
【図9】 2次のブースのアルゴリズムにおける乗数のビットのグループ分けを説明する説明図である。
【図10】 2次のブースのアルゴリズムを用いて2の補数表示形式の8ビット×8ビットの乗算を行う従来の繰り返し乗算器の構成を表すブロック図である。
【図11】 図10の繰り返し乗算器の乗算動作を表す模式図である。
【図12】 2次のブースのアルゴリズムを用いて8ビット×8ビットの符号付き乗算と符号無し乗算とを切り替えて行う場合の実行例を説明する説明図である。
【図13】 2次のブースのアルゴリズムを用いて8ビット×8ビットの符号付き乗算と符号無し乗算とを実行する従来の繰り返し乗算器を表すブロック図である。
【図14】 図13の繰り返し乗算器の乗算動作を表す模式図である。
【図15】 2次のブースのアルゴリズムを用いて8ビット×8ビットの符号付き乗算と符号無し乗算とを実行する従来の他の繰り返し乗算器を表すブロック図である。
【図16】 図15の繰り返し乗算器の乗算動作を表す模式図である。
【図17】 図15の繰り返し乗算器における乗数ビット選択回路の作用を説明する説明図である。
【符号の説明】
M1,M2…繰り返し乗算器 L1 …第1制御線 L2 …第2制御線
10…被乗数保持回路 12,14…ビット拡張器 16…乗数保持回路
18,34…乗数ビット選択回路
20,22,36,38…部分積発生回路 24,40…符号拡張器
26,42…加算器 28…中間和保持回路
30,44…シフトレジスタ 32…被加数選択回路
Claims (3)
- 被乗数を保持する被乗数保持手段と、
乗数を保持する乗数保持手段と、
演算のサイクル数を示す演算サイクル信号の変化に同期して、前記乗数保持手段に保持されている乗数を構成するビットの一部を、下位のものから順番に選択すると共に、その選択した一部のビットと前記被乗数保持手段に保持されている被乗数とから部分積を生成する第1の部分積発生回路と、
加算手段及び該加算手段の加算結果を保持する加算結果保持手段を有し、前記加算手段が前記加算結果保持手段に保持されている値に前記第1の部分積発生回路によって生成された部分積を加算すると共に、前記加算結果保持手段が前記演算サイクル信号の変化に同期して前記加算手段の加算結果を更新して保持することにより、前記第1の部分積発生回路によって生成される部分積を累積加算する部分積累積加算回路と、
を備えた乗算器において、
前記第1の部分積発生回路は、前記乗数保持手段に保持されている乗数を構成するビットのうちの最下位側の一部のビットを除く他の一部のビットを、下位のものから順番に選択して部分積を生成するように構成されており、
更に、前記演算サイクル信号が最初の演算サイクルを示す場合に、前記乗数保持手段に保持されている乗数を構成するビットのうちの最下位側の一部のビットと前記被乗数保持手段に保持されている被乗数とから部分積を生成する第2の部分積発生回路と、
前記演算サイクル信号が最初の演算サイクルを示す場合に、前記第2の部分発生回路によって生成された部分積を、前記加算結果保持手段に保持されている値に代えて、前記加算手段に被加数として供給する被加数選択回路と、
を備えていることを特徴とする乗算器。 - 請求項1に記載の乗算器において、
前記第1の部分積発生回路及び第2の部分積発生回路は、2次のブースのアルゴリズムに基づいて部分積を生成すること、
を特徴とする乗算器。 - 請求項2に記載の乗算器において、
前記被乗数保持手段は、
当該乗算器が行う乗算の種類を符号付き乗算と符号無し乗算との何れかに設定するための切替信号が符号付き乗算の実行を示す場合には、外部から入力される被乗数を、その最上位ビットで2ビット符号拡張して保持し、前記切替信号が符号無し乗算の実行を示す場合には、外部から入力される被乗数を、その最上位ビット側を2ビット0拡張して保持するように構成されており、
前記乗数保持手段は、
前記切替信号が符号付き乗算の実行を示す場合には、外部から入力される乗数を、その最上位ビットで2ビット符号拡張して保持し、前記切替信号が符号無し乗算の実行を示す場合には、外部から入力される乗数を、その最上位ビット側を2ビット0拡張して保持するように構成されていること、
を特徴とする乗算器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27153798A JP3855491B2 (ja) | 1998-09-25 | 1998-09-25 | 乗算器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27153798A JP3855491B2 (ja) | 1998-09-25 | 1998-09-25 | 乗算器 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000099313A JP2000099313A (ja) | 2000-04-07 |
JP3855491B2 true JP3855491B2 (ja) | 2006-12-13 |
Family
ID=17501455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27153798A Expired - Lifetime JP3855491B2 (ja) | 1998-09-25 | 1998-09-25 | 乗算器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3855491B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114239819B (zh) * | 2021-12-24 | 2023-09-26 | 西安交通大学 | 一种基于dsp的混合位宽加速器及融合计算方法 |
-
1998
- 1998-09-25 JP JP27153798A patent/JP3855491B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2000099313A (ja) | 2000-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH0713742A (ja) | 乗算装置 | |
US4807175A (en) | Booth's multiplier | |
JP2000347835A (ja) | 自乗計算方法及び自乗計算装置 | |
JP3855491B2 (ja) | 乗算器 | |
US5870322A (en) | Multiplier to selectively perform unsigned magnitude multiplication or signed magnitude multiplication | |
JP3660075B2 (ja) | 除算装置 | |
JP4728392B2 (ja) | 大数乗算方法およびデバイス | |
JP3417286B2 (ja) | 乗算器 | |
JP3190826B2 (ja) | 積和演算装置 | |
JP3982965B2 (ja) | 繰り返し型乗算器とアレイ型乗算器 | |
JP3106767B2 (ja) | 乗算方法及び乗算回路 | |
JP3071607B2 (ja) | 乗算回路 | |
JP2734438B2 (ja) | 乗算装置 | |
JP4042215B2 (ja) | 演算処理装置およびその方法 | |
JP3610564B2 (ja) | 情報処理装置 | |
JPH10312269A (ja) | 積和演算器 | |
JP2777265B2 (ja) | 高基数開平演算装置 | |
JP3123060B2 (ja) | ディジタル演算回路 | |
JP3230349B2 (ja) | 10進乗算器 | |
JP3612950B2 (ja) | 演算装置およびその方法 | |
JPH11134174A (ja) | 演算回路 | |
JP3197186B2 (ja) | 半導体メモリを用いた乗算装置 | |
KR950012088B1 (ko) | 고속 승산 회로 | |
JP2000172487A (ja) | 乗算回路及び方法 | |
JPH08292876A (ja) | 演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041001 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060810 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060822 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060904 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090922 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100922 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100922 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110922 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110922 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120922 Year of fee payment: 6 |