JP3982965B2 - 繰り返し型乗算器とアレイ型乗算器 - Google Patents

繰り返し型乗算器とアレイ型乗算器 Download PDF

Info

Publication number
JP3982965B2
JP3982965B2 JP31798699A JP31798699A JP3982965B2 JP 3982965 B2 JP3982965 B2 JP 3982965B2 JP 31798699 A JP31798699 A JP 31798699A JP 31798699 A JP31798699 A JP 31798699A JP 3982965 B2 JP3982965 B2 JP 3982965B2
Authority
JP
Japan
Prior art keywords
data
bit
partial
multiplication
adder
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 - Fee Related
Application number
JP31798699A
Other languages
English (en)
Other versions
JP2001134556A (ja
Inventor
功朗 内海
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP31798699A priority Critical patent/JP3982965B2/ja
Publication of JP2001134556A publication Critical patent/JP2001134556A/ja
Application granted granted Critical
Publication of JP3982965B2 publication Critical patent/JP3982965B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Description

【0001】
【産業上の利用分野】
本発明は、汎用プロセッサ等に設けられ、整数同士の乗算と複素数同士の乗算の両方の乗算を行う繰り返し型乗算器及びアレイ型乗算器に関するものである。
【0002】
【従来の技術】
RISC(Reduced Instruction Set Computer)プロセッサには、ディジタル信号処理用に積和演算機能の付いた乗算器が組み込まれている。一般に広く使用されているRISCプロセッサには、例えば32ビット×8の積和演算機能を有する乗算器が組み込まれている。これらの乗算器においては、16ビットのハーフワード同士を乗算するのに2サイクルかかる。
ところで、通信用の信号処理を行う等化器等では、複素数表現した数値に対して積和演算することが多い。2つの複素数A,Bの乗算は、各複素数A,Bの実数部をAr ,Br とすると共に虚数部をAi 、Bi とすると、次の(1)式になる。
Figure 0003982965
これをそのまま演算すると、実数部及び虚数部共に乗算が2回、加算が1回それぞれ必要である。この演算をRISCプロセッサの乗算器で行うと、実数部、虚数部共、2サイクル×2回の乗算と1回の加算が必要になる。よって、最低10サイクルが必要になる。
【0003】
従来の複素数の乗算が可能な乗算器は、例えば次の文献1,2に記載されたものがあった。
文献1:CAVANAGH著“Digital Computer Arithmetic Design and Implementa-tion ”(1984)McGraw-Hill 発行、P.171,181
文献2;IEEE 1996 Custum Integrated Circuits Conference 、IEEE、 Shousheng He and Mats Torkelson著“A Complex Array Multiplier Using Distributed Araithmetic ”P.71-74
【0004】
図2は、従来の乗算器の積和演算サイクル数を示す図である。
前記文献1には、後述するブースのアルゴリズムを用いた繰り返し型乗算器とアレイ型乗算器が示されている。繰り返し型乗算器は、部分積を繰り返して求めるものであり、16ビット×16ビットの乗算器で1サイクルで2ビット分の処理を行うと、図2のように、整数16ビットの乗算には8サイクルかかり、実数部が8ビットで虚数部が8ビットの複素数の乗算には、乗算の16サイクルと加算の2サイクルとが必要になる。アレイ型乗算器は、複数の部分積を同時に求める構成になっており、同様の整数の乗算には2サイクルかかり、複素数の乗算には乗算が4サイクルと加算が2サイクルかかる。一方、前記文献2の乗算器は、複素数専用のものである。
【0005】
【発明が解決しようとする課題】
しかしながら、前記従来の乗算器では、次のような課題があった。
従来のRISCプロセッサに組み込まれた乗算器では、複素数同士の乗算を行うときには、乗算回数が整数の場合の4倍になり、文献1の乗算器でも、2倍以上のサイクルが必要となり、いずれも、パフォーマンスが悪くなる。一方、文献2に示された乗算器は整数同士の乗算を行うことができないので、汎用的でないばかりでなく、ハード量が大きくなり、ディジタル信号処理用プロセッサのCPUに搭載される乗算器には適していない。
また、複素数に対して実数部及び虚数部を個別に計算することは、ソフトウエアとして極めて繁雑になる。
図3(a),(b)は、複素数データと複素数表現を示す図である。
例えば実数部が16ビット及び虚数部が16ビットの複素数を、図3(a)のように連続した1つのワードで処理できるようにすると、ソフトウエアの特にC言語では、図3(b)の構造体で複素数表現が可能になる。これにより、繁雑さが緩和できることになる。つまり、1つの複素数を図3(a)のように連続したワードで処理できる乗算器が望まれている。
【0006】
【課題を解決するための手段】
前記課題を解決するために、本発明のうちの第1の発明は、繰り返し型乗算器において、次のような構成にしている。
即ち、整数同士の乗算を行う整数乗算時には被乗数となる2n(nは正の整数)ビットの整数を格納し、複素数同士の乗算を行う複素数乗算時には被乗数となる複素数のnビットの実数部を上位側に格納すると共にnビットの虚数部を下位側に格納する被乗数レジスタと、前記整数乗算時には乗数の2nビットの整数を格納し、前記複素数乗算時には乗数となる複素数のnビットの実数部を上位側に格納すると共にnビットの虚数部を下位側に格納する乗数レジスタと、前記乗数レジスタに格納された乗数を乗算サイクルごとに複数ビットずつデコードするデコーダと、前記整数乗算時には前記被乗数レジスタに格納された前記被乗数の上位側と下位側とをパラレルに出力し、前記複素数乗算時において前記被乗数に前記乗数の実数部を乗算する乗算サイクルには前記被乗数の上位側と下位側とをパラレルに出力し、該複素数乗算時において該被乗数に前記乗数の虚数部を乗算する乗算サイクルには該被乗数の上位側と下位側とを入れ替えてパラレルに出力する入れ替え手段と、前記入れ替え手段が下位側及び上位側に出力した各データを前記デコード結果に基づきそれぞれ変換する下位側変換手段及び上位側変換手段と、前記乗算サイクルごとに与えられる下位側被加算データ及び上位側被加算データと前記下位側変換手段及び上位側変換手段によって変換された各データとを加算し、下位側部分加算データ及び上位側部分加算データをそれぞれ求める下位側部分加算器及び上位側部分加算器とを備えている。
【0007】
さらに、この繰り返し型乗算器には、前記整数乗算時には前記下位側部分加算器の加算結果の桁上がりを前記上位側部分加算器の加算に反映させ、前記複素数乗算時には該桁上がりをマスクするマスク手段と、前記下位側部分加算器及び上位側部分加算器がそれぞれ出力する前記下位側部分加算データ及び上位側部分加算データを前記乗算サイクルごとにそれぞれ桁移動させる下位側桁移動手段及び上位側桁移動手段と、前記下位側桁移動手段を介した前記下位側部分加算データ及び前記上位側桁移動手段を介した前記上位側部分加算データを前記乗算サイクルごとにそれぞれ取り込み格納内容を更新しつつ格納する下位側部分積レジスタ部及び上位側部分積レジスタ部と、前記下位側部分積レジスタ部に格納された前記下位側部分加算データの一部及び前記上位側部分積レジスタ部に格納された前記上位部分加算データの一部を前記乗算サイクルごとに桁をずらして読出し、前記下位側被加算データ及び上位側被加算データをそれぞれ生成する下位側シフタ及び上位側シフタと、前記複素数乗算時の前記被乗数に前記乗数の実数部を乗算する乗算サイクルが終了した段階で、該乗算の結果における虚数部のデータの一部を格納する下位側補助レジスタと、前記複素数乗算時の前記被乗数に前記乗数の実数部を乗算する乗算サイクルが終了した段階で、該乗算の結果における実数部のデータの一部を格納する上位側補助レジスタと、前記複素数乗算時の前記被乗数に前記乗数の虚数部を乗算する乗算サイクルが終了した段階で、前記下位側シフタで生成した前記下位側被加算データと前記下位側補助レジスタが格納したデータとを前記下位側部分加算器に加算させる下位側加算補助手段と、前記複素数乗算時の前記被乗数に前記乗数の虚数部を乗算する乗算サイクルが終了した段階で、前記上位側シフタで生成した前記上位側被加算データと前記上位側補助レジスタが格納したデータとを前記上位側部分加算器に加算させる上位側加算補助手段とが、設けられている。
【0008】
このような構成を採用したことにより、例えばブースのアルゴリズムを用いれば、デコーダによるデコードと下位側変換手段及び上位側変換手段による変換とで、被乗数に乗数の一部を乗じたデータが得られる。下位側部分加算器及び上位側部分加算器により、前の乗算サイクルで得られた下位側部分加算データ及び上位側部分加算データと下位側変換手段及び上位側変換手段で変換されたデータとがそれぞれ加算され、新たな下位側部分加算データ及び上位側部分加算データが得られる。整数乗算時には、下位側部分加算器の加算の桁上がりが上位側部分加算器の加算に反映される。新たな下位側部分加算データ及び上位側部分加算データが下位側レジスタ部と上位側レジスタ部とに更新されつつ、格納される。よって、乗算サイクルを繰り返すことにより、整数同士の乗算が可能になっている。一方、複素数乗算時には、マスク手段により、下位側部分加算器の加算の桁上がりが上位側部分加算器に対してマスクされる。これにより、虚数部同士の加算が下位側部分加算器で行われ、実数部同士の加算が上位側部分加算器で行われるようになる。被乗数の実数部と虚数部の入れ替えは、入れ替え手段で行われる。また、被乗数に乗数の実数部の乗算を行う乗算サイクルが終了した段階で得られた下位側部分加算データ及び上位側部分加算データは、下位側補助レジスタ及び上位側補助レジスタに格納され、被乗数に乗数の虚数部の乗算を行う乗算サイクルが終了した段階で、下位側部分加算器及び上位側部分加算器によって加算される。よって、乗算サイクルを繰り返すことにより、複素数同士の乗算が可能になっている。
【0009】
第2の発明では、アレイ型乗算器において、次のような被乗数レジスタ、乗数レジスタ、入れ替え手段、デコーダ、アレイ乗算部。レジスタ、入力マルチプレクサ及び出力マルチプレクサにより、構成している。
前記被乗数レジスタ、乗数レジスタ及び入れ替え手段は、第1の発明の被乗数レジスタ、乗数レジスタ及び入れ替え手段と同様のものである。デコーダは、最初の乗算サイクルでは前記乗数レジスタに格納された乗数の下位側をデコードし、次の乗算サイクルでは該乗数の上位側をデコードするものである。
アレイ乗算部は、前記入れ替え手段が下位側に出力したデータを入力すると共に下位側被加算データを入力し、前記デコード結果に基づき該入れ替え手段から入力したデータを変換して該下位側被加算データと加算する下位側初段部分加算器、該下位側初段部分加算器の出力側に複数段縦続接続され、該入れ替え手段が下位側に出力したデータを桁移動した上で該デコード結果に基づき変換し、前段から与えられたデータとそれぞれ加算する下位側縦続部分加算器、該入れ替え手段が上位側に出力したデータを入力すると共に上位側被加算データを入力し、該デコード結果に基づき該入れ替え手段から入力したデータを変換して該上位側被加算データと加算する上位側初段部分加算器、該上位側初段部分加算器の出力側に複数段縦続接続され、該入れ替え手段が上位側に出力したデータを桁移動した上で該デコード結果に基づき変換し、前段から与えられたデータとそれぞれ加算する上位側縦続部分加算器、及び前記整数乗算時には該下位側初段部分加算器及び下位側縦続部分加算器の加算結果の桁上がりを該上位側初段部分加算器及び上位側縦続部分加算器の加算に反映させ、前記複数乗算時には該桁上がりをマスクするマスク手段を有している。
【0010】
レジスタは、2nビット幅以上の格納領域を持っている。入力マルチプレクサは、前記整数乗算時及び前記複素数乗算時に、前記レジスタの格納領域のうちの前記各乗算サイクルごと設定された領域からデータをそれぞれ読出し前記下位側被加算データ及び上位側被加算データとして前記アレイ乗算部に入力するものである。出力マルチプレクサは、前記整数乗算時及び前記複素数乗算時の前記各乗算サイクルの終了時に、前記レジスタの格納領域のうちの該各乗算サイクルごと設定された領域に前記アレイ乗算部が出力するデータを格納するものである。
【0011】
このような構成を採用したことにより、下位側初段部分加算器及び下位側縦続部分加算器と上位側初段部分加算器及び上位側縦続部分加算器との加算により、下位側部分加算データ及び上位側部分加算データが累算される。整数乗算時には、下位側初段部分加算器及び下位側縦続部分加算器の加算の桁上がりが上位側初段部分加算器及び上位側縦続部分加算器の加算に反映され、累算結果が出力マルチプレクサを介してレジスタに格納される。よって、整数同士の乗算が可能になっている。複素数乗算時には、マスク手段により、下位側初段部分加算器及び下位側縦続部分加算器の加算の桁上がりが上位側初段部分加算器及び上位側縦続部分加算器の加算に反映されなず、下位側初段部分加算器及び下位側縦続部分加算器により、虚数部の加算が行われ、上位側初段部分加算器及び上位側縦続部分加算器により、実数部の加算が行われる。被乗数の実数部と虚数部の入れ替えは、入れ替え手段で行われる。また、乗算サイクルが終了した段階で得られた累算結果から被加算データを乗算サイクルに応じて読出すのは、入力マルチプレクサが行う。よって、複素数同士の乗算も可能になっている。
【0012】
【発明の実施の形態】
第1の実施形態
図1は、本発明の第1の実施形態を示す繰り返し型乗算器の概略の構成図であり、制御信号の転送ルートは省略している。
この乗算器は、乗数及び被乗数が共に16ビットで積が32ビットになる整数同士の乗算を行う機能と、実数部及び虚数部が共に8ビットで積の実数部が16ビットで虚数部が16ビットとなる複素数同士の乗算を行う機能を有する乗算器であり、被乗数を格納する16ビットの被乗数レジスタ1と、乗数を格納する乗数レジスタ2とを備えている。被乗数レジスタ1には、入れ替え手段であるスワッパ3が接続され、乗数レジスタ2には、デコーダ4が接続されている。
スワッパ3の出力データにおける上位8ビットは、上位側加算補助手段である2入力マルチプレクサ5の一方の入力ポートに入力され、下位8はかい側加算補助手段である2入力マルチプレクサ6の一方の入力ポートに入力される接続になっている。マルチプレクサ5の出力側に部分加算器10が接続され、マルチプレクサ6の出力側に部分加算器20が接続されている。部分加算器10は、2つの入力ポート10a,10bを持ち、該入力ポート10bにマルチプレクサ5が8ビット幅で出力するデータが入力される接続になっている。部分加算器20は、2つの入力ポート20a,20bを持ち、該入力ポート20bにマルチプレクサ6が8ビット幅で出力するデータが入力される接続になっている。
【0013】
部分加算器10の出力ポート10sは、3つの入力ポート31a,31b,31cを持つ上位側桁移動手段であるマルチプレクサ31の入力ポート31aに接続され、該マルチプレクサ31の出力ポート31oが上位側部分積レジスタ32と上位側部分積補助レジスタ33とに接続されている。部分積レジスタ32の出力側がマルチプレクサ31の入力ポート31cとシフタ34の入力ポート34aとに接続されている。部分積補助レジスタ33の出力側が、マルチプレクサ5の他方の入力ポートに接続されている。
部分加算器20の出力ポート20sは、3つの入力ポート36a,36b,36cを持つ下位側桁移動手段であるマルチプレクサ36の入力ポート36bに接続され、該マルチプレクサ36の出力ポート36oが下位側部分積レジスタ37と下位側部分積補助レジスタ38とに接続されている。部分積レジスタ37の出力側がマルチプレクサ36の入力ポート36cとシフタ34の入力ポート34bと下位側シフタ35の入力ポート35bに接続されている。部分積補助レジスタ38の出力側が、マルチプレクサ6の他方の入力ポートに接続されている。
部分加算器10の出力ポート10sは、マルチプレクサ36の入力ポート36bにも接続され、部分加算器20の出力ポート20sは、マルチプレクサ31の入力ポート31bにも接続されている。
【0014】
以下に各部の機能を説明する。
スワッパ3は、複素数乗算時に被乗数レジスタ1の上位8ビットと下位8ビットを入れ替えて出力するものである。
図4は、図1中のデコーダ4が使用するブースのアルゴリズムを示す図である。図5(a),(b)は、図1中のデコーダ4が行う乗数のデコード順序を示す図であり、同図(a)は整数乗算時を示す、同図(b)は複素数乗算時を示している。
デコーダ4は、乗数をデコードし制御信号Scを出力するものであり、乗数が整数の場合には、該乗数の16ビットに対して図5(a)のようにサイクルCy1からCy8の8回にわけ、下位側から2ビットずらせて3ビット単位で順にデコードする。但し、最初のサイクルCy1のデコードでは、0ビットを最下位に付加している。複素数の場合には、乗数の16ビットに対して、図5(b)のように、実数部用にr1からr4の4回にわけ、虚数部用に、j1からj4の4回にわけ、それぞれの下位側から2ビットずらせて3ビット単位で順にデコードする。但し、最初r1回目のデコードとj1回目のデコードでは、0ビットを最下位に付加している。
各デコードで用いる3ビットのうちの上位2ビットで構成される乗数ビットペアと下位1ビット(右ビット)との組み合わせにより、デコード結果が異なり、対応する制御信号Scを出力する。これらの制御信号Scは、図4のように、加算器10,20における被乗数の加算を制御する信号である。ここで、図4中のaは、前演算処理結果を示し、bは被乗数を示している。また、図4中の減算は、(1)式における「−Ai・Bi」の処理の場合を示している。
【0015】
図6は、図1中の部分加算器10,20を示す構成図である。
部分加算器10には、上位側変換手段である9個のマルチプレクサ(MUX)110 〜118 と、上位側部分加算器である9個のフルアダー回路(FULL ADDER)120 〜128 と、マスク回路(MSK)13とを備えている。部分加算器20は、下位側変換手段である9個のマルチプレクサ(MUX)210 〜218 と、下位側部分加算器である9個のフルアダー回路(FULL ADDER)220 〜228 とを備えている。
部分加算器20中の最下位ビットを担当するマルチプレクサ210 には、“0”の固定データが3本入力されると共に、シフタ35から与えられる8ビットのデータa357 〜a350 のうちの最下位のデータa350 とその補数−a350 とが入力されている。部分加算器20中のマルチプレクサ211 には、“0”の固定データが1本入力されると共に、ブースのアルゴリズムの2倍を実現するために下位のマルチプレクサ210 から与えられたデータa350 及びその補数−a350 と、シフタ35から与えられるデータa351 とが入力されている。以下、マルチプレクサ217 までは、マルチプレクサ211 と同様の入力データが与えられるようになっている。最上位のマルチプレクサ218 は、符号ビットの拡張用に設けられたものであり、該マルチプレクサ218 には、“0”の固定データが1本入力されると共に、下位のマルチプレクサ217 からデータa357 及びその補数−a357 が2本ずつ入力されるようになっている。
【0016】
部分加算器20中の最下位ビットを担当するフルアダー回路220 には、“0”の固定データがキャリーとして入力されると共に、マルチプレクサ6を介した8ビットのデータb67 〜b60 のうちの最下位のデータb60 と、マルチプレクサ210 の出力データとが与えられている。部分加算器20中のフルアダー回路221 には、下位のフルアダー回路220 からキャリーデータc220 が入力されると共に、データb61 と、マルチプレクサ211 の出力データとが与えられている。以下、フルアダー回路227 までは、フルアダー回路221 と同様に入力データが与えられるようになっている。最上位のフルアダー回路228 は、符号ビットの拡張用に設けられたものであり、該フルアダー回路228 には、下位のフルアダー回路227 からキャリーc227 が入力されると共に、マルチプレクサ6から与えられるデータb67 と、マルチプレクサ217 の出力データとが与えられる構成になっている。
部分加算器10は、整数の乗算を行うときには、部分加算器20と連結して動作し、複素数の乗算を行うときには乗算器20とは切り離されて動作する。この連結と切り離しを行うのが、マスク回路13である。マスク回路13は、複素数乗算時に、部分加算器20側のデータa357 とその補数データ−a357 とフルアダー回路227 で発生するキャリーc227 とを、部分加算器10に対してマスクして“0”に固定する機能を有している。
【0017】
部分加算器10中の最下位ビットを担当するマルチプレクサ110 には、“0”の固定データが1本と、マスク回路13でマスクされるかまたはそのまま通過するデータa357 とその補数データ−a357 とが入力されると共に、シフタ34から与えられる8ビットのデータa347 〜a340 のうちの最下位のデータa340 とその補数−a340 とが入力されている。部分加算器10中のマルチプレクサ111 には、“0”の固定データが1本入力されると共に、ブースのアルゴリズムの2倍を実現するために下位のマルチプレクサ110 から与えられたデータa340 及びその補数−a340 と、シフタ34から与えられるデータa341 とが入力されている。以下、マルチプレクサ117 までは、マルチプレクサ111 と同様に入力データが与えられるようになっている。最上位のマルチプレクサ118 は、符号ビットの拡張用に設けられたものであり、該マルチプレクサ118 には、“0”の固定データが1本入力されると共に、下位のマルチプレクサ117 からデータa347 及びその補数−a347 が2本ずつ入力されるようになっている。各フルアダー回路220 〜228 がそれぞれ出力するビットデータs220 〜s228 が、部分加算器20の出力ポート20sから出力する9ビット幅のデータになる。
【0018】
部分加算器10中の最下位ビットを担当するフルアダー回路120 には、マスク回路13でマスクされるかまたはそのまま通過するキャリーc227 が入力されると共に、マルチプレクサ5が出力する8ビットのデータb57 〜b50 のうちの最下位のデータb50 と、マルチプレクサ110 の出力データとが与えられている。部分加算器10中の図示しないフルアダー回路121 には、下位のフルアダー回路120 からキャリーc120 が入力されると共に、マルチプレクサ5から与えられるデータb51 と、マルチプレクサ111 の出力データとが与えられている。以下、フルアダー回路127 までは、フルアダー回路121 と同様に入力データが与えられるようになっている。最上位のフルアダー回路128 は、符号ビットの拡張用に設けられたものであり、該フルアダー回路128 には、下位のフルアダー回路127 からキャリーc127 が入力されると共に、マルチプレクサ5から与えられるデータb57 〜b50 のうちの対応するデータb57 と、マルチプレクサ117 の出力データとが与えられる構成になっている。各フルアダー回路120 〜128 がそれぞれ出力するビットデータs120 〜s128 が、部分加算器10の出力ポート10sから出力する9ビット幅のデータになる。
【0019】
図7(a),(b)は、マルチプレクサ31,36の選択を示す図であり、同図(a)は整数乗算時、及び同図(b)は複素数乗算時をそれぞれ示している。
マルチプレクサ31,36は、部分加算器10,20及び各部分積補助レジスタ33,38の出力データから選択したデータを16ビット幅で出力するものであり、その選択範囲と選択順序は、図7(a),(b)のようになる。なお、図7(a),(b)において、a[],b[],c[]は、入力ポート31a,31b,31c及び36a,36b,36cから入力されたデータのビットデータをそれぞれ示すものであり、各a[8]all及びb[8]allは、a[8],b[8]のデータを連続的に配列したデータを示している。
部分積レジスタ32,37は、部分積を格納するものであり、整数の乗算では部分積レジスタ32に積の上位側が格納され、部分積レジスタ37に積の下位がが格納される。複素数の乗算では、部分積レジスタ32に実数部が格納され、部分積レジスタ37には虚数部が格納されるようになっている。
部分積補助レジスタ33,38は、複素数乗算時に、部分積の上位8ヒットを4回目の繰り返し完了時に取り込んで格納するものである。
【0020】
図8(a),(b)は、シフタ34,35が選択するフィールドを示す図であり、同図(a)は整数乗算時、及び同図(b)は複素数乗算時をそれぞれ示している。
シフタ34,35は、部分積の値をシフトして加算器10,20にそれぞれ加算するものであり、各部分積レジスタ32,37が出力する部分積から8ビットのフィールドを図8のように選択し、2ビットシフトして加算器10,20へ与えるようになっている。図8中のa[],b[]は、部分積レジスタ32,37の出力データにおけるビットをそれぞれ示している。また、“0000000”は、すべて“0”が出力されることを示し、a[]all、すべてa[]のデータが出力されることを示している。
【0021】
次に、図1の繰り返し型乗算器の動作を説明する。
前記(1)式の複素数は、次の(2)式に書換えられる。
Figure 0003982965
この(2)式は、複素数の乗算を次の(i)〜(iii)に別けて計算することが可能であることを示している。
(i)被乗数(Ar +jAi )の実数部Ar 、虚数部Ai に乗数Br を掛ける。
(ii) 被乗数の実数部Ar 、虚数部Ai とを入替え、実数部の符号を反転させる。
(iii)(ii)の処理で得られた被乗数部に乗数の虚数部Bi を掛ける。
【0022】
図1の複素数乗算器は、(i)〜(iii)に沿って複素数の乗算を行うと共に、整数の乗算も可能になっている。実数部が8ビットで虚数部が8ビットの複素数同士の乗算は、次のサイクルCy1〜Cy9の9サイクルで演算する。16ビットの整数同士の乗算は、後述するCy1〜Cy8の8サイクルで演算する。
複素数乗算時、最初のサイクルCy1において、乗数レジスタ2に格納された16ビットデータのうちのビット[9:8]の部分が、図5(b)の順序に従ってデコーダ5でデコードされる。マルチプレクサ5及び6は、被乗数レジスタ1からスワッパ3を介して与えられたデータを選択し、部分加算器10及び20に与える。このとき各シフタ34,35は、“0”を出力している。部分加算器10,20では、デコーダ5のデコード結果に基づく制御信号Scにより、図4のブースのアルゴリズムに従った加算を行う。加算結果は、図7(b)のようにマルチプレクサ31,36に選択されて部分積として部分積レジスタ32,37にそれぞれ格納される。
サイクルCy2において、乗数レジスタ2に格納された16ビットのデータのうちのビット[11:9]の部分が、図5(b)の順序に従ってデコーダ4でデコードされる。また、このときには、部分積レジスタ32,37及びシフタ34,35によって、上位側被加算データ及び下位側被加算データが生成されて部分加算器10,20に与えられている。この被加算データは、図8(b)のようにシフトされたデータであり、ブースのアルゴリズムで選択したデータと部分加算器10,20によって加算される。加算結果は、図7(b)のようにマルチプレクサ31,36に選択されて部分積として部分積レジスタ32,37にそれぞれ格納される。
【0023】
サイクルCy3において、乗数レジスタ2に格納された16ビットデータのうちのビット[13:11]の部分が図5(b)の順序に従ってデコーダ4でデコードされる。以下、サイクルCy2と同様に動作する。
サイクルCy4において、乗数レジスタ2に格納された16ビットデータのうちのビット[15:13]の部分が、図5(b)の順序に従ってデコーダ4でデコードされる。以下、マルチプレクサ31,36まではサイクルCy2と同様に動作する。各マルチプレクサ31,36の出力データのうち、下位8ビットが部分積レジスタ32,37にそれぞれ格納され、上位8ビットが部分積レジスタ33,38にそれぞれ格納される。よって、このサイクルCy4が終了した段階で、(2)式の第1項の乗算結果が、部分積レジスタ32,37と部分積レジスタ33,38とにそれぞれ実数部及び虚数部に分けて格納されたことになる。
サイクルCy5において、乗数レジスタ2に格納された16ビットデータのうちのビット[1:0]の部分が、図5(b)の順序に従ってデコーダ4でデコードされる。スワッパ2は、被乗数レジスタ1に格納された複素数の実数部と虚数部を入替え、マルチプレクサ5,6を介して部分加算器10,20に与える。シフタ34,35は、部分積レジスタ32,37の出力データの下位8ビットを、図8(b)に従って選択して部分加算器10,20に与える。これにより、(2)式の第1項の(Ar +jAi )Br の実数部及び虚数部の下位8ビットが第2項の(−Ai +jAr )Bi の実数部及び虚数部の各部分積に加算されることになる。なお、(2)式の第1項の(Ar +jAi )Br の上位8ビットは、第2項の(−Ai +jAr )Bi の実数部及び虚数部の部分積が求まった後のサイクルCy9で、(−Ai +jAr )Bi の上位8ビットと加算される。
【0024】
部分加算器10,20は、デコーダ4のデコード結果に基づき加算を行う。ここで、部分加算部10では、(2)式の第1項の実数部が負になるので、図4の減算処置が採用する。つまり、補数のデータを選択して加算を行う。部分加算器10,20の出力データは、マルチプレクサ31,36に図7に基いて選択され、部分積として部分積レジスタ32,37にそれぞれ格納される。
サイクルCy6〜Cy8は、乗数レジスタ2に格納された16ビットデータのうちの図5(b)の順序に従った部分が、デコーダ4でデコードされ、該各デコード結果に基づき、以下サイクルCy5と同様に動作する。
サイクルCy9において、シフタ34,35が、図8(b)に示すように、部分積レジスタ32,37の出力データの上位8ビットを選択し、部分加算器10,20に与える。また、マルチプレクサ5,6は、部分積補助レジスタ33,38に格納されたデータを選択して部分加算器10,20に与える。デコーダ4ではデコードを行わず、部分加算器10,20が、部分積補助レジスタ33,38から与えられたデータとシフタ34,35から与えられたデータを加算する。部分加算器10,20の出力データは、マルチプレクサ31,36に図7(b)に基いて選択され、部分積として部分積レジスタ32,37にそれぞれ格納される。
以上の一連のサイクルCy1〜Cy9の動作により、実数部が8ビットで虚数部が8ビットの複素数同士の乗算が行われ、結果が部分積レジスタ32,37にそれぞれ格納されたことになる。
【0025】
次に、整数同士の乗算を行う場合の動作を説明する。
被乗算レジスタ1には16ビットの被乗数が格納され、乗数レジスタ2には16ビットの乗算が格納されている。サイクルCy1において、デコーダ4が、図5(a)のデコード順序に従い、乗算レジスタ2の[1:0]のビットに0を付加した値をデコードする。スワッパ3は、被乗数の入れ替えは行わない。マルチプレクサ5,6は、被乗数レジスタ1からスワッパ3を介して与えられた非乗数データを選択して部分加算器10,20に与える。このとき、シフタ34,35からは図8(a)のように“0000000”を部分加算器10,20に出力している。各部分加算器10,20は、デコード結果に対応する乗算結果を“0000000”に加算し、加算結果を部分積としてそれぞれ出力する。マルチプレクサ31,36は、図7(a)の順序に従った選択を行い、部分積レジスタ32,37にそれぞれ与える。
【0026】
サイクルCy2において、デコーダ4が、図5(a)のデコード順序に従い、乗算レジスタ2の[3:1]のビットの値をデコードする。マルチプレクサ5,6は、被乗数レジスタ1からスワッパ3を介して与えられたデータを選択して部分加算器10,20に与える。このとき、シフタ34,35は、図8(a)のように、部分積レジスタ32,37から取得した部分積を2ビットシフトし、部分加算器10,20に与えている。各部分加算器10,20は、デコード結果に対応して被乗数と乗数の部分積を求め、シフタ34,35から与えられた部分積に加算する。マルチプレクサ31,36は、図7(a)の順序に従った選択を行い、部分積レジスタ32,37にそれぞれ与える。この結果、部分積レジスタ32,37には、前のサイクルで得られた部分積の上位2ビットが今回得られた部分積の積和演算結果の下位側に付加された状態で格納される。
サイクルCy3〜Cy8において、サイクルCy2と同様に、乗数レジスタ2のデコードするビットをずらしながら、積和演算結果を部分積レジスタ32,37に格納して行く。サイクルCy8が終了すると、被乗数と乗数の積が部分積レジスタ32,37に格納される。
以上のように、この第1の実施形態では、16ビットの整数の乗算が8サイクル、複素数の乗算が9サイクルで可能になる。しかも、整数の乗算のみが可能な乗算器に対してマルチプレクサ5,6や部分積補助レジスタ33,38を付加するだけで、極端なハード量の増加はない。
【0027】
第2の実施形態
図9は、本発明の第2の実施形態を示すアレイ型乗算器の構成図である。
前述の第1の実施形態では積和演算を繰り返す繰り返し型乗算器を示したが、この第2の実施形態の乗算器は、16ビットの整数同士の乗算をサイクルCy1,Cy2の2サイクルで行うと共に、実数部が8ビットで虚数部が8ビットの複素数同士の乗算をサイクルCy1,Cy2の2サイクルで行うでアレイ型であり、被乗数を入れる16ビットの被乗数レジスタ41と、乗数を入れる乗数レジスタ42と、アレイ乗算部である16ビット×8アレー乗算器50と、32ビット出力マルチプレクサ70と、32ビットレジスタ71と、32ビット入力マルチプレクサ72とを備えている。被乗数レジスタ41には、スワッパ43が接続され、乗数レジスタ42には、デコーダ44が接続されている。スワッパ43は、第1の実施形態と同様に機能するものである。
【0028】
図10(a),(b)は、図1中のデコーダ44による乗数のデコード順序を示す図であり、同図(a)は整数乗算時、及び同図(b)は複素数乗算時をそれぞれ示している。
デコーダ44は、第1の実施形態とは異なり、1サイクルで8ビット或いは9ビットをデコードする機能を有している。つまり、整数の乗算を行うときには、図10(a)のように、最初のサイクルCy1では最下位に“0”を付加した乗数の8ビット[7:0]をデコードし、次のサイクルCy2では、上位側の9ビット[15:7]をデコードする機能を持ち、複素数の乗算を行うときには、図10(b)のように、サイクルCy1で最下位を“0”として虚数部の8ビット[7:0]をデコードし、サイクルCy2では、実数部のビット[15:7]をデコードする機能を有している。
【0029】
図11は、図9中の16ビット×8アレー乗算器50を示す構成図である。
16ビット×8アレー乗算器50は、上位側初段部分加算器及び下位側初段部分加算器である2個の9ビット部分加算器51,52と、2個の10ビット部分加算器53,54と、2個の11ビット部分加算器55,56と、2個の12ビット部分加算器57,58と、2個の11ビット部分加算器55,56と、2個の12ビット部分加算器57,58と、2個の11ビット加算器59,60とを有している。10ビット部分加算器53、11ビット部分加算器55及び12ビット部分加算器57は、複数段の上位側縦続部分加算器を構成するものであり、9ビット部分加算器51の出力側に縦続接続されている。10ビット部分加算器54、11ビット部分加算器56及び12ビット部分加算器58は、複数段の下位側縦続部分加算器を構成するものであり、9ビット部分加算器52の出力側にマルチプレクサ61、マルチプレクサ62及びマルチプレクサ63を介して縦続接続されている。12ビット部分加算器57,58の出力側に、11ビット加算器59,60が接続されると共に、該11ビット加算器59,60の出力側に8ビット加算器64,65がそれぞれ接続され、合計6段の積和演算回路が上位側及び下位側に構成されている。
【0030】
4段目までの9ビット部分加算器51,52、10ビット部分加算器53,54、11ビット部分加算器55,56及び12ビット部分加算器57,58は、部分和をビット単位で示すビット加算データDをそれぞれ出力するばかりでなく、ビットごとのキャリーCも出力するキャリーセーブアダーをそれぞれ有している。図11の各部分加算器51〜58の出力側の信号線には、ビットごとの加算データを示すDとキャリーを示すCとがそのビット数と共に示されている。
9ビット部分加算器51には、被乗数レジスタ41からスワッパ43を介して被乗数の一部の8ビットが入力されると共に、固定の“0”と、32ビット入力マルチプレクサ72が出力する32ビットのデータのうちの上位側の下位8ビットが入力される接続になっている。9ビット部分加算器52には、被乗数レジスタ41からスワッパ43を介した被乗数の残りの8ビットが入力されると共に、固定の“0”と、32ビット入力マルチプレクサ72が出力する32ビットのデータのうちの下位側の下位8ビットとが入力される接続になっている。
【0031】
マルチプレクサ61は、9ビット部分加算器51及び52の出力データから10ビット部分加算器54の入力データを選択するようになっている。マルチプレクサ62は、10ビット部分加算器53及び54の出力データから、11ビット部分加算器56の入力データを選択するようになっている。マルチプレクサ63は、11ビット部分加算器55及び56の出力データから、12ビット部分加算器58の入力データを選択するようになっている。
9ビット部分加算器51の出力するビット加算データDの下位の1ビット分のデータは、32ビット出力マルチプレクサ70へ出力し、ビット加算データDの残りの8ビット分と9ビット分のキャリーCとは、10ビット部分加算器53の入力ポートに出力し、該8ビット分のビット加算データDのうちの2ビットと1ビット分のキャリーデータCがマルチプレクサ61の入力ポートに出力する接続になっている。一方、9ビット部分加算器52のビット加算データDの下位の1ビット分のデータは、32ビット出力マルチプレクサ70へ出力し、残りの8ビット分と9ビット分のキャリーデータCは、マルチプレクサ61の入力ポートに出力する構成になっている。
【0032】
2段目の10ビット部分加算器53には、9ビット部分加算器51から与えられるビット加算データD及びキャリーCの他に、スワッパ43を介して与えられるデータに下位1ビットの“0”を付加した9ビットのデータが、入力されるようになっている。10ビット部分加算器54には、マルチプレクサ61が出力するデータが入力されると共に、32ビット入力マルチプレクサ72が出力する8ビットのデータの下位に“0”を1ビット分追加したデータが、入力されるようになっている。10ビット部分加算器53が出力するビットデータDの下位の1ビット分のデータは、32ビット出力マルチプレクサ70へ出力し、残りの9ビット分のビット加算データと10ビット分のキャリーは、11ビット部分加算器55の入力ポートに出力し、該残りの9ビット分のデータのうちの2ビットと1ビット分のキャリーがマルチプレクサ62の入力ポートに出力する接続になっている。一方、9ビット部分加算器54のビットデータDの下位の1ビット分のデータは、32ビット出力マルチプレクサ70へ出力し、残りの9ビット分のデータと10ビット分のキャリーCは、マルチプレクサ62の入力ポートへ出力する構成になっている。
【0033】
3段目の11ビット部分加算器55には、10ビット部分加算器53から与えられるデータの他に32ビット入力マルチプレクサ72が出力する8ビットのデータの下位に“0”を2ビット分追加したデータが、入力されるようになっている。11ビット部分加算器56には、マルチプレクサ62が出力するデータの他に、32ビット入力マルチプレクサ72が出力する8ビットのデータの下位に“0”を2ビット分追加したデータが、入力されるようになっている。11ビット部分加算器55が出力するビットデータDの下位の1ビット分のデータは、32ビット出力マルチプレクサ70へ出力し、残りの10ビット分のビット加算データと11ビット分のキャリーCは、12ビット部分加算器57の入力ポートへ出力し、該残りの10ビット分のデータのうちの2ビットと1ビット分のキャリーCがマルチプレクサ63の入力ポートへ出力する接続になっている。一方、11ビット部分加算器56のビットデータDの下位の1ビット分のデータは、32ビット出力マルチプレクサ70へ出力し、残りの10ビット分のデータと11ビット分のキャリーCは、マルチプレクサ63の入力ポートへ出力する構成になっている。
【0034】
4段目の12ビット部分加算器57には、11ビット部分加算器55から与えられるデータの他に32ビット入力マルチプレクサ72が出力する8ビットのデータの下位に“0”を3ビット分追加したデータが入力されるようになっている。12ビット部分加算器58には、マルチプレクサ63が出力するデータの他に、32ビット入力マルチプレクサ72が出力する8ビットのデータの下位に“0”を3ビット分追加したデータが、入力されるようになっている。12ビット部分加算器57が出力するビットデータDの下位の1ビット分のデータは、32ビット出力マルチプレクサ70へ出力し、残りの11ビット分のビット加算データと11ビット分のキャリーCは、11ビット加算器59の入力ポートへ出力するようになっている。一方、12ビット部分加算器58のビットデータDの下位の1ビット分のデータは、32ビット出力マルチプレクサ70へ出力し、残りの11ビット分のデータと11ビット分のキャリーCは、11ビット加算器60の入力ポートへそれぞれ出力する構成になっている。
【0035】
11ビット加算器59,60の出力側には、8ビット加算器64,65が接続されている。8ビット加算器64には、11ビット加算器64が出力するデータの他に、32ビット入力マルチプレクサ72の出力データの上位側の下位8ビットが入力されるようになっている。8ビット加算器65には、11ビット加算器65が出力するデータの他に、32ビット入力マルチプレクサ72の出力データの下位側の下位8ビットが入力されるようになっている。
11ビット加算器59の出力データの下位4ビットと8ビット加算器64の出力データの8ビットが32ビット出力マルチプレクサ70へ出力される構成になっている。8ビット加算器60の出力データの下位4ビットと8ビット加算器65の出力データの8ビットとが、32ビット出力マルチプレクサ70へ出力される構成になっている。
【0036】
図12は、図11中の9ビット部分加算器51,52を示す構成図である。
9ビット部分加算器51の入力側には、並列の9個のマルチプレクサ(MUX)51−1a〜51−9aが設けられ、該各マルチプレクサ51−1a〜51−9aの出力側に、キャリーセーブアダー(FULL ADDER)51−1b〜51−9bがそれぞれ接続されている。また、9ビット加算器51の9ビット加算器52側には、マスク手段であるマスク回路51cが設けられている。9ビット部分加算器51の入力側には、並列の9個のマルチプレクサ51−1a〜51−9aが設けられ、該各マルチプレクサ51−1a〜51−9aの出力側には、前記キャリーセーブアダー51−1b〜51−9bがそれぞれ接続されている。図12には、9ビット部分加算器51の入力データa510 〜a517 ,b510 〜b517 及び該入力データa510 〜a517 の補数の−a510 〜−a517 と、9ビット部分加算器52の入力データa520 〜a527 ,b520 〜b527 及び該入力データa520 〜a527 の補数で−a520 〜−a527 とが示されている。
【0037】
9ビット部分加算器52の入力データa520 〜a527 は、スワッパ43から与えられた8ビットのデータであり、入力データa520 及び補数−a520 は、マルチプレクサ52−1aに“0”と共に入力され、かつ、該マルチプレクサ52−1aの上位側のマルチプレクサ52−2aに入力されている。以下、同様に、9ビット部分加算器52の入力データa521 〜a527 及び補数−a521 〜−a527 は、各マルチプレクサ52−2a〜52−8aに“0”と共に入力され、かつ、その上位側のマルチプレクサ52−3a〜52−9aにそれぞれ入力される構成になっている。入力データa527 及び補数−a527 は、さらに、マスク回路51cを介して9ビット加算器51中のマルチプレクサ51−1aに入力される接続になっている。9ビット部分加算器52の入力データb520 〜b527 は、32ビット入力マルチプレクサ72から与えられた8ビットの下位側被加算データであり、該各入力データb520 〜b526 は、各マルチプレクサ52−1a〜52−7aの出力するデータと共に、キャリーセーブアダー52−1b〜52−7bにそれぞれ入力される。入力データb527 は、各マルチプレクサ52−8a及び52−9aの出力データと共にキャリーセーブアダー52−8b,52−9bに共通に入力される接続になっている。
【0038】
9ビット部分加算器51の入力データa510 〜a517 は、スワッパ43から与えられた8ビットのデータであり、入力データa510 及び補数−a510 は、マルチプレクサ51−1aに“0”と共に入力され、かつ、該マルチプレクサ51−1aの上位側のマルチプレクサ51−2aに入力されている。以下、同様に、9ビット部分加算器51の入力データa511 〜a517 及び補数−a511 〜−a517 は、各マルチプレクサ51−2a〜51−8aに“0”と共に入力され、かつ、その上位側のマルチプレクサ51−3a〜51−9aにそれぞれ入力される構成になっている。9ビット部分加算器51の入力データb510 〜b517 は、32ビット入力マルチプレクサ72から与えられた8ビットの上位側被加算データであり、該各入力データb510 〜b516 は、各マルチプレクサ51−1a〜51−7aの出力するデータと共に、キャリーセーブアダー51−1b〜51−7bに入力される。入力データb517 は、各マルチプレクサ51−8a及び51−9aの出力データと共にキャリーセーブアダー51−8b,51−9bにそれぞれ入力される接続になっている。
9ビット部分加算器52の各キャリーセーブアダー52−1b〜52−9bが、ビット単位の加算データd520 〜d528 及びキャリーc520 〜c528 をそれぞれ出力し、同様に、9ビット部分加算器51の各キャリーセーブアダー51−1b〜51−9bが、ビット単位の加算データd510 〜d518 及びキャリーc510 〜c518 をそれぞれ出力する構成になっている。
【0039】
図13は、図11中の10ビット部分加算器53,54を示す構成図てある。
10ビット部分加算器53の入力側には、並列の10個のマルチプレクサ53−1a〜53−10aが設けられ、該各マルチプレクサ53−1a〜53−10aの出力側に、キャリーセーブアダー53−1b〜53−10bがそれぞれ接続されている。また、10ビット加算器53の10ビット加算器54側には、マスク手段であるマスク回路53cが設けられている。10ビット部分加算器54の入力側には、並列の10個のマルチプレクサ54−1a〜54−10aが設けられ、該各マルチプレクサ54−1a〜54−10aの出力側には、キャリーセーブアダー54−1b〜54−10bがそれぞれ接続されている。図13には、10ビット部分加算器54の入力データa540 〜a548 ,b540 〜549 、該各入力データa540 〜a548 の補数−a540 〜−a548 及びビット単位の入力キャリーci540 〜ci549 が示されると共に、10ビット部分加算器53の入力データa530 〜a538 ,b530 〜b538 、該入力データa530 〜a538 の補数−a530 〜−a538 及び入力キャリーci530 〜ci538 が示されている。
【0040】
10ビット部分加算器54の入力データa540 〜a548 が、スワッパ43から与えられた8ビットのデータの下位に“0”を付加したデータであり、入力信号a540 及び補数−a540 は、マルチプレクサ54−1aに“0”と共にされ、かつ、該マルチプレクサ54−1aの上位側のマルチプレクサ54−2aに入力されている。以下、同様に、10ビット部分加算器54の入力データa541 〜a548 及び補数−a541 〜−a548 は、各マルチプレクサ54−2a〜54−8aに“0”と共に入力され、かつ、その上位側のマルチプレクサ52−3a〜52−9aにそれぞれ入力される構成になっている。入力データa548 及び補数−a548 は、さらに、マスク回路53cを介して10ビット部分加算器53中のマルチプレクサ53−1aに入力される接続になっている。
10ビット部分加算器54の入力データb540 〜b549 及び入力キャリーci540 〜ci549 は、前段の9ビット部分加算器52の出力データが9ビットであったのに対し、マルチプレクサ61で符号拡張されて入力されたものであり、該各入力データb540 〜b549 及び入力キャリーci540 〜ci549 は、各マルチプレクサ54−1a〜54−10aの出力するデータと共に、キャリーセーブアダー54−1b〜52−10bに入力されようになっている。
【0041】
10ビット部分加算器53の入力データa530 〜a538 は、スワッパ43から与えられた8ビットのデータの下位に“0”を付加したデータであり、入力信号a530 及び補数−a530 は、マルチプレクサ53−1aに“0”と共に入力され、かつ、該マルチプレクサ53−1aの上位側のマルチプレクサ53−2aに入力される接続になっている。以下、同様に、10ビット部分加算器53の入力データa531 〜a538 及び補数−a531 〜−a538 は、各マルチプレクサ53−2a〜53−9aに“0”と共に入力され、かつ、その上位側のマルチプレクサ53−3a〜53−10aにそれぞれ入力される構成になっている。10ビット部分加算器53の入力データb530 〜b538 及び入力キャリーci530 〜ci538 は、前段の9ビット部分加算器52の出力と同じ9ビットであるが、キャリーセーブアダー53−10bにより、符号ビットが拡張されたようになる。つまり、各入力データb530 〜b538 及び入力キャリーci530 〜ci538 は、各マルチプレクサ53−1a〜53−10aの出力するデータと共にキャリーセーブアダー53−1b〜53−9bに入力され、入力信号b538 及び入力キャリーci538 が、キャリーセーブアダー53−9bに入力される構成になっている。
【0042】
10ビット部分加算器54の各キャリーセーブアダー54−1b〜54−10bが、ビット単位の加算データd540 〜d549 及びキャリーc0 〜c549 をそれぞれ出力し、同様に、10ビット部分加算器53の各キャリーセーブアダー53−1b〜53−10bが、ビット単位のd530 〜d539 及びキャリーデータc0 〜c539 をそれぞれ出力する構成になっている。
11ビット部分加算器55,56、及び12ビット部分加算器57,59も、入力信号のビット数、マルチプレクサの数、及びキャリーセーブアダーの数及び出力信号のビット数が増加するだけで、基本的構成は図13と同様になっている。
【0043】
図14は、図11中のマルチプレクサ61の選択の説明図である。
マルチプレクサ61には、9ビット部分加算器51の出力する加算データd510 〜d518 及びキャリーc510 〜c518 のうちの下位2ビットのデータd510 ,d511 及び下位のキャリーc510 と、9ビット部分加算器52の出力する加算データd520 〜d528 及びキャリーc520 〜c528 のうちの上位8ビットのデータd521 〜d528 及びすべてのキャリーc520 〜c528 を入力している。マルチプレクサ61は、整数の乗算を行うときと複素数の乗算を行うときとで、図14のようにこれらの選択を切替えて出力するようになっている。マルチプレクサ62,63も、ヒット数は異なるが、図14と同様の切替えを行って11ビット部分加算器54及び12ビット部分加算器56に出力するようになっている。
【0044】
図15は、図11中の11ビット加算器59,60を示す構成図である。
5段目の11ビット加算器59,60は、前段の12ビット部分加算器57,58から出力される加算データd570 〜d5711,d580 〜d5811及びキャリーc570 〜c5711,c580 〜c5811を加算するものである。11ビット加算器59は、加算データd570 〜d5711とキャリーc570 〜c5711の加算を行う加算器59aと、マスク回路(MSK)59b及びマスク回路59cとを備えている。マスク回路59bは、整数の乗算を行うときに加算データd570 〜d5711及びキャリーc570 〜c5711のうちのデータd570 〜d572 をマスクして“0”に固定し、キャリーc570 〜c572 を“1”に固定するものであり、下位側の加算結果のキャリーが4ビット目から反映されるようになっている。マスク回路59cは、複素数の乗算を行うときに11ビット加算器60から与えられるキャリーc60をマスクするものである。加算回路59aが加算結果をビット単位に示す加算データd590 〜d5911とキャリーc59を出力するようになっている。
11ビット加算器60は、加算データd580 〜d5811とキャリーc580 〜c5811の加算を行う加算器56aを備ている。加算回路60aが加算結果をビット単位に示す加算データd600 〜d6010とキャリーc60を出力するようになっている。
6段目の8ビット加算器64,65は、複数乗算時には前記(2)式における右辺第1項の結果の上位8ビットと、各8ビット加算器59,60の出力するデータの上位8ビットとをそれぞれ加算し、整数の乗算を行うときには“0”を加算するものである。
【0045】
図16(a),(b)は、図9中の32ビット出力マルチプレクサ70での選択の説明図であり、同図(a)は整数乗算時、及び同図(b)は複素数乗算時をそれぞれ示している。
32ビット出力マルチプレクサ70には、16×8アレー乗算器50から、上位側の16ビットのデータと下位側の16ビットのデータとが入力データとして32ビット幅で与えられている。32ビット出力マルチプレクサ70は、整数乗算時には、図16(a)のように、上位側の入力データのうちの9ビットと、下位側の15ビットを有効とし、最初の乗算サイクルCy1には、有効なデータを下位側に並べて出力し、次の乗算サイクルCy2には、上位側から並べて出力する。複素数乗算時には、図16(b)のように、32ビット幅で与えられる入力データの上位の14ビットと下位の14ビットとを有効とし、これらをそのまま32ビットレジスタ71に出力するように動作する。
【0046】
図17(a),(b)は、図9中の32ビット入力マルチプレクサ72の選択の説明図であり、同図(a)は整数乗算時、及び同図(b)は複素数乗算時をそれぞれ示している。
32ビット入力マルチプレクサ72は、32ビットレジスタ71からデータを選択して16×8アレイ乗算器50に与える機能を有している。32ビットレジスタ71から入力される上位側の16ビットのデータと下位側の16ビットのデータに対し、32ビット入力マルチプレクサ72は、整数乗算時にはその上位側の下位8ビットと下位側の上位8ビットを有効とし、これらを図17(a)のように並べ、他のビットを“0”とし、9ビット部分加算器51,52に分割して与える。複素数乗算時には、32ビットレジスタ71から入力される上位側の16ビットのデータと下位側の16ビットのデータに対し、これらを図17(b)のようにして9ビット部分加算器51,52に分割して与えるようになっている。
【0047】
次に、整数乗算時の図9の乗算器の動作を説明する。
整数乗算時には、乗数レジスタ41に16ビットの整数の被乗数が格納され、乗数レジスタ42に整数の16ビットの乗数が格納される。
最初のサイクルCy1において、デコーダ44が乗数の下位8ビットの3ビットずつデコードし、16×8アレイ乗算器50の動作を指示する制御信号Scを生成し、該16×8アレイ乗算器50の各部分加算器51〜58中のマルチプレクサに与える。スワッパ43は、被乗数をそのまま出力し、16×8アレイ乗算器50に与える。これに対し、32ビット入力マルチプレクサ72は、初期値として格納したオール“0”を16×8アレイ乗算器50に入力する。
16×8アレイ乗算器50において、上位側の1段目の9ビット部分加算器51内のマルチプレクサ51−1a〜51−9aは、デコード結果の制御信号Scに基づき、前記ブースのアルゴリズムの加算を行うために、入力データである被乗数、補数または“0”を選択し、各キャリーセーブアダー51−1b〜51−9bが、マルチプレクサ51−1a〜51−9aで選択したビット単位のデータを“0”と加算する。同様に、9ビット部分加算器52内のマルチプレクサ52−1a〜52−9aは、デコード結果に基づき入力データである被乗数、補数または“0”を選択し、キャリーセーブアダー52−1b〜52−9bがマルチプレクサ52−1a〜52−9aの選択したデータを“0”と加算する。下位側の1段目の9ビット部分加算器52内のマルチプレクサ52−1a〜52−9aは、デコード結果の制御信号Scに基づき、入力データである被乗数、補数または“0”を選択し、各キャリーセーブアダー52−1b〜52−9bが、選択されたビット単位のデータと“0”とを加算する。
【0048】
9ビット部分加算器51が出力する加算結果のうちの最下位のビット加算データd510 は、32ビット出力マルチプレクサ70に与えられる。残りの加算結果のビット加算データd511 〜d518 と、キャリーc510 〜c518 が、2段目の10ビット部分加算器53に与えられる。また、9ビット部分加算器51が出力する加算結果のうちの2個のビット加算データd511 ,d512 と最下位のキャリーc510 は、マルチプレクサ61にも与えられる。
9ビット部分加算器52が出力する加算結果のうちの最下位のビット加算データd520 は、32ビット出力マルチプレクサ70に与えられる。残りの加算結果のビット加算データd521 〜d528 とキャリーc520 〜c528 は、マルチプレクサ61に与えられる。
マルチプレクサ61は、図14の選択に基づき、下位側のビット加算データd521 〜d528 と上位側のビット加算データd510 及びd511 とを選択し、これらを順に並べてパラレルに出力し、かつ、下位側のキャリーc520 〜c528 と上位側のキャリーc510 とを選択し、これらを順に並べてパラレルに出力し、10ビット部分加算器54に与える。
【0049】
2段目の10ビット部分加算器53においても、デコード結果の制御信号Scに基づいた前記ブースのアルゴリズムの加算を行うために、各マルチプレクサ53−1a〜53−10aが、入力データである被乗数、補数または“0”を選択し、各キャリーセーブアダー53−1b〜53−10bが、マルチプレクサ53−1a〜53−10aで選択したビット単位のデータと、前段の9ビット部分51から与えられデータとを加算する。同様に、2段目の10ビット部分加算器54も、デコード結果の制御信号Scに基づき、前記ブースのアルゴリズムの加算を行うために、各マルチプレクサ54−1a〜54−10aが、入力データである被乗数、補数または“0”を選択し、各キャリーセーブアダー54−1b〜54−10bが、マルチプレクサ54−1a〜54−10aで選択したビット単位のデータと、マルチプレクサ61を介して与えられたデータとを加算する。
【0050】
10ビット部分加算器53が出力する加算結果のうちの最下位のビット加算データd530 は、32ビット出力マルチプレクサ70に与えられる。残りの加算結果のビット加算データd531 〜d539 と、キャリーc530 〜c539 が、3段目の11ビット部分加算器55に与えられる。また、10ビット部分加算器53が出力する加算結果のうちの2個のビット加算データd531 ,d532 と最下位のキャリーc530 は、マルチプレクサ62にも与えられる。
10ビット部分加算器54が出力する加算結果のうちの最下位のビット加算データd540 は、32ビット出力マルチプレクサ70に与えられる。残りの加算結果のビット加算データd541 〜d549 とキャリーc540 〜c549 は、マルチプレクサ62に与えられる。
マルチプレクサ62は、マルチプレクサ61と同様の選択を行う。
【0051】
3段目の11ビット部分加算器55,56は、2段目の10ビット部分加算器53,54と同様の動作で部分加算結果を出力し、マルチプレクサ63がマルチプレクサ61及び62と同様の選択をする。さらに、4段目の12ビット部分加算器57,58が、2段目の10ビット部分加算器53,54と同様の動作で部分加算結果を出力する。
5段目の12ビット加算器59,60は、それぞれ12ビットの加算結果を出力する。12ビット加算器59が出力する加算結果のうちの下位4ビット分が直接32ビット出力マルチプレクサ70に与えられる。12ビット加算器59が出力する加算結果のうちの上位8ビット分は、8ビット加算器64で“0”と加算されて32ビット出力マルチプレクサ70に与えられる。12ビット加算器60が出力する加算結果のうちの下位4ビット分が直接32ビット出力マルチプレクサ70に与えられる。12ビット加算器60が出力する加算結果のうちの上位8ビット分は、8ビット加算器65で“0”と加算されて32ビット出力マルチプレクサ70に与えられる。
32ビット出力マルチプレクサ70には、合計32ビットのデータが入力されているが、このサイクルでは、図16(a)に示すように、入力の上位側の9ビットと下位の15ビットを選択し、下位側から並べてパラレルに32ビットレジスタ71に出力して格納する。
【0052】
以上が最初の乗算サイクルCy1である。この最初の乗算サイクルCy1の動作により、16ビットの整数同士の乗算結果の32ビットip0 〜ip31のうちの下位側のip0 〜ip7 が確定する。9ビット部分加算器52、10ビット部分加算器54及び11ビット部分加算器56、12ビット部分加算器58がそれぞれ32ビット出力マルチプレクサ70に直接出力する最下位ビットのビット加算データが、図11に示すように、乗算結果のip0 〜ip3 に相当し、11ビット加算器60が32ビット出力マルチプレクサ70に出力する4ビットのビット加算データがip4 〜ip7 に相当する。確定した乗算結果のip0 〜ip7 は、32ビット出力マルチプレクサ70を介して32ビットレジスタ71に格納される。
乗算サイクルCy2において、デコーダが44が、乗数レジスタ42に格納された乗数の上位8ビットを3ビットずつ組みでデコードし、16×8アレイ乗算器50の動作を指示する制御信号Scを発生する。スワッパ43は、被乗数レジスタ41に格納された被乗数をそのまま16×8アレイ乗算器50へ転送する。32ビット入力マルチプレクサ72は、図17(a)のように、32ビットレジスタ71に格納されたデータのうちの上位側の下位8ビットのデータと、下位側の上位8ビットのデータを取得し、該取得した下位8ビットのデータの上位に8ビット分の“0”を追加し、取得した上位8のデータの上位に8ビットの“0”を追加し、これらをパラレルにして32ビットで出力する。
16×8アレイ乗算器50は、制御信号Scに基づきサイクルCy1と同様に動作する。32ビット出力マルチプレクサ70は、図16(a)のように、16×8アレイ乗算器50の出力するビットの上位側の9ビットと下位の15ビットを選択し、上位側にならべて32ビットレジスタに出力する。
【0053】
以上により、乗算サイクルCy2が終了する。このサイクルCy2により、乗算結果の32ビットのデータip0 〜ip31のうちの未確定であったデータip8 〜ip31が確定する。9ビット部分加算器52、10ビット部分加算器54及び11ビット部分加算器56、12ビット部分加算器58がそれぞれ32ビット出力マルチプレクサ70に直接出力する最下位ビットのビット加算データが、図11に示すように、乗算結果のデータip8 〜ip11に相当し、11ビット加算器60が32ビット出力マルチプレクサ70に出力する4ビットのビット加算データがip12〜ip15に相当する。8ビット加算器65が出力する8ビットのビット加算データが乗算結果のデータip16〜ip23に相当し、8ビット加算器64が出力する8ビットのビット加算データが乗算結果のデータip24〜ip31に相当する。新たに確定した乗算結果のデータip8 〜ip31が、32ビット出力マルチプレクサ70を介して32ビットレジスタ71に格納される。
【0054】
次に、複素数同士の乗算を行うときの動作を説明する。
16ビットの複素数同士の乗算の場合、被乗数レジスタ41の上位側に被乗数の複素数の実数部が格納されると共に下位側に虚数部が格納され、乗数レジスタ42に乗数の複素数が格納される。
最初のサイクルCy1にらおいて、デコーダち44は、乗数レジスタ42に格納された複素数のうちの実数部の8ビットを2ビットずつ組でデコードし、16×8アレイ乗算器50の動作を指示する制御信号Scを発生する。スワッパ43は、乗数レジスタ41に上位側から順に格納された複素数の8ビットの実数部と8ビットの虚数部をそのまま16×8アレイ乗算器50に転送する。32ビット入力マルチプレクサ72は、32ビットレジスタ71の格納データがこの時点ですべて“0”なので、“0”を32ビット幅で出力する。
【0055】
16×8アレイ乗算器50において、被乗数の実数部は、スワッパ43を介して9ビット部分加算器51に与えられ、虚数部は9ビット部分加算器52に与えられる。9ビット部分加算器51内のマルチプレクサ51−1a〜51−9aは、デコード結果の制御信号Scに基づき、ブースのアルゴリズムの加算を行うために、入力データである被乗数、補数または“0”を選択し、各キャリーセーブアダー51−1b〜51−9bが、マルチプレクサ51−1a〜51−9aで選択したビット単位のデータを“0”と加算する。これらと同時に、9ビット部分加算器52内のマルチプレクサ52−1a〜52−9aが、デコード結果に基づき入力データである被乗数、補数または“0”を選択し、該選択したデータをキャリーセーブアダー52−1b〜52−9bが“0”と加算する。
9ビット部分加算器51が出力する加算結果のうちの最下位のビット加算データd510 は、32ビット出力マルチプレクサ70に与えられる。残りの加算結果のビット加算データd511 〜d518 と、キャリーc510 〜c518 が、2段目の10ビット部分加算器53に与えられる。また、9ビット部分加算器51が出力する加算結果のうちの2個のビット加算データd511 ,d512 と最下位のキャリーc510 は、マルチプレクサ61にも与えられる。マルチプレクサ61は、図14の選択に基づき、下位側のビット加算データd521 〜d528 と2ビット分の“0”とを順に並べてパラレルに出力し、かつ、下位側のキャリーc520 〜c528 を選択すると共にキャリーc528 を追加して順に並べてパラレルに出力し、10ビット部分加算器54に与える。
【0056】
2段目の10ビット部分加算器53,54、3段目の11ビット部分加算器55,56、4段目の12ビット部分加算器57,58、及び各段間のマルチプレクサ62,63も、9ビット部分加算器51,52及びマルチプレクサ61と同様に動作する。
5段目の11ビット加算器59,60が、12ビットずつのデータを出力し、6段目の8ビット加算器64,65において、11ビット加算器59,60の各出力データのうちの上位8ビットと、32ビット入力マルチプレクサ72の出力データの上位側の下位8ビット及び下位側の下位8ビットとを加算する。ただし、32ビット入力マルチプレクサ72の出力データがこのときは“0”なので、加算による変化は起こらない。
32ビット出力マルチプレクサ70は、図16(b)のように、16×8アレイ乗算器50からのデータをそのまま32ビットレジスタ71に出力する。
【0057】
以上が乗算サイクルCy1の動作である。この乗算サイクルCy1の動作により、(2)式の第1項目のAr・BrとAi・Brとが計算されたことになる。9ビット部分加算器52、10ビット部分加算器54、11ビット部分加算器56及び12ビット部分加算器58がそれぞれ32ビット出力マルチプレクサ70に直接出力する最下位ビットのビット加算データと、11ビット加算器60と8ビット加算器65の出力するデータとを合成したものが、Ai・Brに相当し、9ビット部分加算器51、10ビット部分加算器53、11ビット部分加算器55及び12ビット部分加算器57がそれぞれ32ビット出力マルチプレクサ70に直接出力する最下位ビットのビット加算データと、11ビット加算器59と8ビット加算器64の出力するデータとを合成したものが、Ar・Brに相当する。これらのデータは、32ビット出力マルチプレクサ70を介して32ビットレジスタ71に格納される。
乗算サイクルCy2において、デコーダ44は、乗数レジスタ42に格納された虚数部の8ビットを2ビットずつ組みでデコードし、16×8アレイ乗算器50の動作を指示する制御信号Scを発生する。スワッパ43は、被乗数レジスタ41に格納されたデータの上位8ビットと下位8ビットを入れ替え、16×8アレイ乗算器50に転送する。32ビット入力マルチプレクサ72は、32ビットレジスタ71が格納するデータをそのままパラレルに出力する。
【0058】
16×8アレイ乗算器50において、被乗算データが制御信号Scに基づき、マルチプレクサ51−1a〜51−9a,52−1a〜52−9aで変形され、キャリーセーブアダー51−1b〜51−9b,52−1b〜52−9bによって、32ビット入力マルチプレクサ72から与えられたデータの上位側(実数部)の下位8ビット及び下位側(虚数部)の下位8ビットと加算される。ただし、被乗数の上位8ビットは(2)式に示すように負になるので、実質的には補数を用いた減算が行われる。以下、2段目の10ビット部分加算器53,54から5段目の12ビット加算器57,58まで、乗算サイクルCy1と同様の処理を行う。6段目の8ビット加算器64,65が、11ビット加算器59,60が出力するデータのうちの上位8ビットと、32ビット入力マルチプレクサ72の出力データのうちの上位側の下位8ビットのデータ及び下位側の下位8ビットのデータとをそれぞれ加算する。32ビット出力マルチプレクサ70は、16×8アレイ加算器50が出力したデータを、そのまま32ビットレジスタ71に与えて格納する。
【0059】
以上により、乗算サイクルCy2が終了する。このサイクルCy2の動作により、(2)式の演算結果が求められたことになる。演算結果の実数部をrp0 〜rp15とし、虚数部をjp0 〜jp15とすると、乗算サイクルCy2における9ビット部分加算器52、10ビット部分加算器54、11ビット部分加算器56及び12ビット部分加算器58が、それぞれ32ビット出力マルチプレクサ70に直接出力する最下位ビットのビット加算データが、図11に示すように、虚数部のjp0 〜jp3 に相当し、11ビット加算器60が32ビット出力マルチプレクサ70に出力する4ビットのビット加算データがjp4 〜jp7 に相当する。8ビット加算器65が出力する8ビットのビット加算データが乗算結果のデータjp8 〜jp15に相当する。また、9ビット部分加算器51、10ビット部分加算器53及び11ビット部分加算器53、12ビット部分加算器57がそれぞれ32ビット出力マルチプレクサ70に直接出力する最下位ビットのビット加算データが、実数部のrp0 〜rp3 に相当し、11ビット加算器59が32ビット出力マルチプレクサ70に出力する4ビットのビット加算データがrp4 〜rp7 に相当する。8ビット加算器64が出力する8ビットのビット加算データが乗算結果のデータrp8 〜rp15に相当する。
以上のように、この第2の実施形態では、整数同士の乗算ばかりでなく、複素数同士の乗算が可能なアレイ型乗算器になっており、しかも、整数のみを乗算するアレイ型乗算器に対しても、わずかなハードウエアの追加で構成できる。
【0060】
なお、本発明は、上記実施形態に限定されず種々の変形が可能である。
例えば、第1の実施形態では、符号付データの乗算に対応する繰り返し型乗算器を説明したが、レジスタビット数を1つ増やし、反復回数をもう1回増やせば、符号なしデータに対しても整数乗算及び複素数乗算が可能である。第2の実施形態でも符号付データの乗算に対応するアレイ型乗算器を説明したが、レジスタビット数を1つ増やし、16×8アレイ乗算器の部分加算器の段数を1段増やすことにより、符号なしデータに対しても整数乗算及び複素数乗算が可能である。
【0061】
【発明の効果】
以上詳細に説明したように、第1の発明によれば、被乗数レジスタ、乗数レジスタ、デコーダ及び入れ替え手段と、下位側変換手段及び上位側変換手段と、下位側部分加算器及び上位側部分加算器と、下位側桁移動手段及び上位側桁移動手段と、下位側部分積レジスタ部及び上位側部分積レジスタ部と、下位側シフタ及び上位側シフタとを備えると共に、マスク手段、下位側補助レジスタ及び上位側補助レジスタを設けたので、整数同士の乗算と複素数同士の乗算との両方が可能な繰り返し型乗算器を少ないハード量で実現できる。
第2の発明によれば、被乗数レジスタ、乗数レジスタ、デコーダ及び入れ替え手段と、デコーダと、下位側初段部分加算器、下位側縦続部分加算器、上位側初段部分加算器、上位側縦続部分加算器及びマスク手段を有するアレイ乗算部と、レジスタと、入力マルチプレクサと、出力マルチプレクサとを設けたので、整数同士の乗算と複素数同士の乗算との両方が可能なアレイ型乗算器を少ないハード量で実現できる。
【図面の簡単な説明】
【図1】本発明の第1の実施形態を示す繰り返し型乗算器の概略の構成図である。
【図2】従来の乗算器の積和演算サイクル数を示す図である。
【図3】複素数データと複素数表現を示す図である。
【図4】図1中のデコーダ4が使用するブースのアルゴリズムを示す図である。
【図5】図1中のデコーダ4が行う乗数のデコード順序を示す図である。
【図6】図1中の部分加算器10,20を示す構成図である。
【図7】マルチプレクサ31,36の選択を示す図である。
【図8】シフタ34,35が選択するフィールドを示す図である。
【図9】本発明の第2の実施形態を示すアレイ型乗算器の構成図である。
【図10】図1中のデコーダ44による乗数のデコード順序を示す図である。
【図11】図9中の16ビット×8アレー乗算器50を示す構成図である。
【図12】図11中の9ビット部分加算器51,52を示す構成図である。
【図13】図11中の10ビット部分加算器53,54を示す構成図てある。
【図14】図11中のマルチプレクサ61の選択の説明図である。
【図15】図11中の11ビット加算器59,60を示す構成図である。
【図16】図9中の32ビット出力マルチプレクサ70の選択の説明図である。
【図17】図9中の32ビット入力マルチプレクサ72の選択の説明図である。
【符号の説明】
1,41 被乗数レジスタ
2,42 乗数レジスタ
3,43 スワッパ
4,44 デコーダ
5,6,31,36 マルチプレクサ
10,20 部分加算器
32,37 部分積レジスタ
33,38 部分積補助レジスタ
34,35 シフタ
50 16×8アレイ乗算器
70 出力マルチプレクサ
71 レジスタ
72 入力マルチプレクサ

Claims (2)

  1. 整数同士の乗算を行う整数乗算時には被乗数となる2n(nは正の整数)ビットの整数を格納し、複素数同士の乗算を行う複素数乗算時には被乗数となる複素数のnビットの実数部を上位側に格納すると共にnビットの虚数部を下位側に格納する被乗数レジスタと、
    前記整数乗算時には乗数の2nビットの整数を格納し、前記複素数乗算時には乗数となる複素数のnビットの実数部を上位側に格納すると共にnビットの虚数部を下位側に格納する乗数レジスタと、
    前記乗数レジスタに格納された乗数を乗算サイクルごとに複数ビットずつデコードするデコーダと、
    前記整数乗算時には前記被乗数レジスタに格納された前記被乗数の上位側と下位側とをパラレルに出力し、前記複素数乗算時において前記被乗数に前記乗数の実数部を乗算する乗算サイクルには前記被乗数の上位側と下位側とをパラレルに出力し、該複素数乗算時において該被乗数に前記乗数の虚数部を乗算する乗算サイクルには該被乗数の上位側と下位側とを入れ替えてパラレルに出力する入れ替え手段と、
    前記入れ替え手段が下位側及び上位側に出力した各データを前記デコード結果に基づきそれぞれ変換する下位側変換手段及び上位側変換手段と、
    前記乗算サイクルごとに与えられる下位側被加算データ及び上位側被加算データと前記下位側変換手段及び上位側変換手段によって変換された各データとを加算し、下位側部分加算データ及び上位側部分加算データをそれぞれ求める下位側部分加算器及び上位側部分加算器と、
    前記整数乗算時には前記下位側部分加算器の加算結果の桁上がりを前記上位側部分加算器の加算に反映させ、前記複素数乗算時には該桁上がりをマスクするマスク手段と、
    前記下位側部分加算器及び上位側部分加算器がそれぞれ出力する前記下位側部分加算データ及び上位側部分加算データを前記乗算サイクルごとにそれぞれ桁移動させる下位側桁移動手段及び上位側桁移動手段と、
    前記下位側桁移動手段を介した前記下位側部分加算データ及び前記上位側桁移動手段を介した前記上位側部分加算データを前記乗算サイクルごとにそれぞれ取り込み格納内容を更新しつつ格納する下位側部分積レジスタ部及び上位側部分積レジスタ部と、
    前記下位側部分積レジスタ部に格納された前記下位側部分加算データの一部及び前記上位側部分積レジスタ部に格納された前記上位部分加算データの一部を前記乗算サイクルごとに桁をずらして読出し、前記下位側被加算データ及び上位側被加算データをそれぞれ生成する下位側シフタ及び上位側シフタと、
    前記複素数乗算時の前記被乗数に前記乗数の実数部を乗算する乗算サイクルが終了した段階で、該乗算の結果における虚数部のデータの一部を格納する下位側補助レジスタと、
    前記複素数乗算時の前記被乗数に前記乗数の実数部を乗算する乗算サイクルが終了した段階で、該乗算の結果における実数部のデータの一部を格納する上位側補助レジスタと、
    前記複素数乗算時の前記被乗数に前記乗数の虚数部を乗算する乗算サイクルが終了した段階で、前記下位側シフタで生成した前記下位側被加算データと前記下位側補助レジスタが格納したデータとを前記下位側部分加算器に加算させる下位側加算補助手段と、
    前記複素数乗算時の前記被乗数に前記乗数の虚数部を乗算する乗算サイクルが終了した段階で、前記上位側シフタで生成した前記上位側被加算データと前記上位側補助レジスタが格納したデータとを前記上位側部分加算器に加算させる上位側加算補助手段とを、備えたことを特徴する繰り返し型乗算器。
  2. 請求項1記載の被乗数レジスタ、乗数レジスタ及び入れ替え手段と、
    最初の乗算サイクルでは前記乗数レジスタに格納された乗数の下位側をデコードし、次の乗算サイクルでは該乗数の上位側をデコードするデコーダと、
    前記入れ替え手段が下位側に出力したデータを入力すると共に下位側被加算データを入力し、前記デコード結果に基づき該入れ替え手段から入力したデータを変換して該下位側被加算データと加算する下位側初段部分加算器、該下位側初段部分加算器の出力側に複数段縦続接続され、該入れ替え手段が下位側に出力したデータを桁移動した上で該デコード結果に基づき変換し、前段から与えられたデータとそれぞれ加算する下位側縦続部分加算器、該入れ替え手段が上位側に出力したデータを入力すると共に上位側被加算データを入力し、該デコード結果に基づき該入れ替え手段から入力したデータを変換して該上位側被加算データと加算する上位側初段部分加算器、該上位側初段部分加算器の出力側に複数段縦続接続され、該入れ替え手段が上位側に出力したデータを桁移動した上で該デコード結果に基づき変換し、前段から与えられたデータとそれぞれ加算する上位側縦続部分加算器、及び前記整数乗算時には該下位側初段部分加算器及び下位側縦続部分加算器の加算結果の桁上がりを該上位側初段部分加算器及び上位側縦続部分加算器の加算に反映させ、前記複数乗算時には該桁上がりをマスクするマスク手段を有するアレイ乗算部と、
    2nビット幅以上の格納領域を持つレジスタと、
    前記整数乗算時及び前記複素数乗算時に、前記レジスタの格納領域のうちの前記各乗算サイクルごと設定された領域からデータをそれぞれ読出し前記下位側被加算データ及び上位側被加算データとして前記アレイ乗算部に入力する入力マルチプレクサと、
    前記整数乗算時及び前記複素数乗算時の前記各乗算サイクルの終了時に、前記レジスタの格納領域のうちの該各乗算サイクルごと設定された領域に前記アレイ乗算部が出力するデータを格納する出力マルチプレクサとを、備えたことを特徴とするアレイ型乗算器。
JP31798699A 1999-11-09 1999-11-09 繰り返し型乗算器とアレイ型乗算器 Expired - Fee Related JP3982965B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31798699A JP3982965B2 (ja) 1999-11-09 1999-11-09 繰り返し型乗算器とアレイ型乗算器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31798699A JP3982965B2 (ja) 1999-11-09 1999-11-09 繰り返し型乗算器とアレイ型乗算器

Publications (2)

Publication Number Publication Date
JP2001134556A JP2001134556A (ja) 2001-05-18
JP3982965B2 true JP3982965B2 (ja) 2007-09-26

Family

ID=18094218

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31798699A Expired - Fee Related JP3982965B2 (ja) 1999-11-09 1999-11-09 繰り返し型乗算器とアレイ型乗算器

Country Status (1)

Country Link
JP (1) JP3982965B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009048532A (ja) * 2007-08-22 2009-03-05 Nec Electronics Corp マイクロプロセッサ
JP5183664B2 (ja) * 2009-10-29 2013-04-17 財團法人工業技術研究院 ビデオ圧縮のためのデブロッキング装置及び方法
KR102338863B1 (ko) 2015-09-09 2021-12-13 삼성전자주식회사 연산을 제어하기 위한 장치 및 방법

Also Published As

Publication number Publication date
JP2001134556A (ja) 2001-05-18

Similar Documents

Publication Publication Date Title
KR100715770B1 (ko) 연산을 수행하는 방법 및 시스템 및 장치
KR100714358B1 (ko) 연산을 수행하기 위한 방법, 시스템 및 장치
US6609143B1 (en) Method and apparatus for arithmetic operation
JP5273866B2 (ja) 乗算器/アキュムレータ・ユニット
JP4555356B2 (ja) 単一命令複数データ(simd)命令用の積和演算(mac)ユニット
Farooqui et al. General data-path organization of a MAC unit for VLSI implementation of DSP processors
US20080243976A1 (en) Multiply and multiply and accumulate unit
JPH1195981A (ja) 乗算回路
US6009450A (en) Finite field inverse circuit
US20140136588A1 (en) Method and apparatus for multiplying binary operands
JP2000076046A (ja) 乗算器及び積和演算器
US6675286B1 (en) Multimedia instruction set for wide data paths
JPWO2021050643A5 (ja)
JP3982965B2 (ja) 繰り返し型乗算器とアレイ型乗算器
US20220075598A1 (en) Systems and Methods for Numerical Precision in Digital Multiplier Circuitry
WO2006083768A2 (en) Same instruction different operation (sido) computer with short instruction and provision of sending instruction code through data
KR100251547B1 (ko) 디지탈신호처리기(Digital Sgnal Processor)
Sudhkar et al. A Systematic Analysis of Low Power and Low Area Multipliers by Evading Wastage of energy
JP3855491B2 (ja) 乗算器
JPH08292876A (ja) 演算装置
JPH05241793A (ja) 倍精度乗算器
JPH02199532A (ja) 剰余乗算の方法および回路
JP2000076045A (ja) シフト機能付きalu命令を持つマイクロプロセッサ
JPH11134174A (ja) 演算回路
JPH08292875A (ja) 乗算処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070628

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: 20070703

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070703

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

Free format text: PAYMENT UNTIL: 20100713

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20100713

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20100713

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110713

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120713

Year of fee payment: 5

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20120713

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees