JPH09120355A - 部分積発生回路 - Google Patents
部分積発生回路Info
- Publication number
- JPH09120355A JPH09120355A JP7275798A JP27579895A JPH09120355A JP H09120355 A JPH09120355 A JP H09120355A JP 7275798 A JP7275798 A JP 7275798A JP 27579895 A JP27579895 A JP 27579895A JP H09120355 A JPH09120355 A JP H09120355A
- Authority
- JP
- Japan
- Prior art keywords
- array
- selector
- partial product
- input
- decoder
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Abstract
(57)【要約】
【課題】 冗長な演算を抑制でき、同時に複数の部分積
を発生できる部分積発生回路を実現する。 【解決手段】 Boothデコーダアレイ1aに1個の
補助デコーダを設け、Boothセレクタアレイ2aに
{(n+4)+(n/2+1)×2}個の補助セレクタ
Ed,0 ,…,Ed,n+1 、E0,b ,…,En/2,b およびE
0,a ,…,En/2, a を設け、スイッチ回路によって、B
oothデコーダアレイ1aの入力にnビットの乗数Y
またはn/2ビットの乗数C,Dを切り換え、スイッチ
回路5によって、Boothセレクタアレイ2aの入力
にnビットの被乗数Xまたはn/2ビットの被乗数A,
Bを切り換え、部分積を発生させる。これにより、X×
Yの部分積Pのほか、A×C,A×D,B×C,B×D
のそれぞれの部分積を同時に発生できる。
を発生できる部分積発生回路を実現する。 【解決手段】 Boothデコーダアレイ1aに1個の
補助デコーダを設け、Boothセレクタアレイ2aに
{(n+4)+(n/2+1)×2}個の補助セレクタ
Ed,0 ,…,Ed,n+1 、E0,b ,…,En/2,b およびE
0,a ,…,En/2, a を設け、スイッチ回路によって、B
oothデコーダアレイ1aの入力にnビットの乗数Y
またはn/2ビットの乗数C,Dを切り換え、スイッチ
回路5によって、Boothセレクタアレイ2aの入力
にnビットの被乗数Xまたはn/2ビットの被乗数A,
Bを切り換え、部分積を発生させる。これにより、X×
Yの部分積Pのほか、A×C,A×D,B×C,B×D
のそれぞれの部分積を同時に発生できる。
Description
【0001】
【発明の属する技術分野】本発明は、たとえば、ディジ
タル乗算器などに適用されるブース(Booth)アル
ゴリズムを用いた部分積発生回路に関するものである。
タル乗算器などに適用されるブース(Booth)アル
ゴリズムを用いた部分積発生回路に関するものである。
【0002】
【従来の技術】図4はBoothアルゴリズムを用いた
一般的な乗算器のブロック図である。図4において、部
分積発生回路10はBoothデコーダアレイ1および
Boothセレクタアレイ2によって構成されている。
一般的な乗算器のブロック図である。図4において、部
分積発生回路10はBoothデコーダアレイ1および
Boothセレクタアレイ2によって構成されている。
【0003】部分積発生回路10において、入力された
乗数Yに応じて、Boothデコーダアレイ1の各デコ
ーダによりセレクト信号Sが発生され、Boothセレ
クタアレイ2に入力される。Boothセレクタアレイ
2によって、入力された被乗数Xおよびセレクト信号S
に応じて、部分積Pが発生され、部分積加算回路3に入
力される。部分積加算回路3において、入力された部分
積Pが加算され、乗算結果Zが出力される。
乗数Yに応じて、Boothデコーダアレイ1の各デコ
ーダによりセレクト信号Sが発生され、Boothセレ
クタアレイ2に入力される。Boothセレクタアレイ
2によって、入力された被乗数Xおよびセレクト信号S
に応じて、部分積Pが発生され、部分積加算回路3に入
力される。部分積加算回路3において、入力された部分
積Pが加算され、乗算結果Zが出力される。
【0004】図5および図6は部分積発生回路10の内
部構成を示す図であり、2次のBoothアルゴリズム
を用いた、たとえば、nビット×nビットの部分積発生
回路の一構成例を示す図である。図5はBoothデコ
ーダアレイ1の内部構成、図6はBoothセレクタア
レイ2の内部構成をそれぞれ示している。
部構成を示す図であり、2次のBoothアルゴリズム
を用いた、たとえば、nビット×nビットの部分積発生
回路の一構成例を示す図である。図5はBoothデコ
ーダアレイ1の内部構成、図6はBoothセレクタア
レイ2の内部構成をそれぞれ示している。
【0005】図5および図6において、Boothデコ
ーダアレイ1に入力された乗数YおよびBoothセレ
クタアレイ2に入力された被乗数Xは、それぞれn(n
は自然数)ビットの二進数であり、次のように表され
る。
ーダアレイ1に入力された乗数YおよびBoothセレ
クタアレイ2に入力された被乗数Xは、それぞれn(n
は自然数)ビットの二進数であり、次のように表され
る。
【数1】
【数2】
【0006】ここで、xs ,ys は符号ビットを表す。
被乗数Xが符号付きの数ならばXが正の時xs =0(=
xn )、被乗数Xが負の時xs =1(=xn )とし、ま
たXが符号なしの数ならば常にxs =0とし、符号付き
/符号なしにかかわらず常に2の補数表示形式のデータ
として考える。また、乗数Yについても同様にして考え
る。
被乗数Xが符号付きの数ならばXが正の時xs =0(=
xn )、被乗数Xが負の時xs =1(=xn )とし、ま
たXが符号なしの数ならば常にxs =0とし、符号付き
/符号なしにかかわらず常に2の補数表示形式のデータ
として考える。また、乗数Yについても同様にして考え
る。
【0007】乗数Yについて式を変形すると、次式のよ
うになる。
うになる。
【数3】 ただしy-1=0とし、簡単のためここではnは偶数とす
る。ここで各項の括弧内について考えると、すべて−
2、−1、0、1、2のいずれかの値をとることが分か
る。
る。ここで各項の括弧内について考えると、すべて−
2、−1、0、1、2のいずれかの値をとることが分か
る。
【0008】したがってyn+1 =yn =ys とすると、
XとYの積Zは、次式のようになる。
XとYの積Zは、次式のようになる。
【数4】
【0009】すなわち、2の補数表示形式の数について
符号ビットys を特別扱いせずに乗算処理でき、かつ部
分積Pを半分にすることができる。これは2次のBoo
thアルゴリズムを用いた乗算であり、ディジタル乗算
器を構成する際に一般的によく使われているアルゴリズ
ムである。
符号ビットys を特別扱いせずに乗算処理でき、かつ部
分積Pを半分にすることができる。これは2次のBoo
thアルゴリズムを用いた乗算であり、ディジタル乗算
器を構成する際に一般的によく使われているアルゴリズ
ムである。
【0010】表1は上述した2次のBoothアルゴリ
ズムを示す表である。表1に示すように、乗数Yの連続
した三つのビットによって構成された各演算項(−2y
2i+1+y2i+y2i-1)は、−2、−1、0、1、2のい
ずれかの値をとる。
ズムを示す表である。表1に示すように、乗数Yの連続
した三つのビットによって構成された各演算項(−2y
2i+1+y2i+y2i-1)は、−2、−1、0、1、2のい
ずれかの値をとる。
【0011】
【表1】
【0012】図5に示すBoothデコーダアレイ1
は、たとえば、(n/2+1)個のデコーダBD0 ,
…,BDn/2 を(n/2+1)行1列に配置して構成さ
れている。
は、たとえば、(n/2+1)個のデコーダBD0 ,
…,BDn/2 を(n/2+1)行1列に配置して構成さ
れている。
【0013】図6に示すBoothセレクタアレイ2
は、たとえば、{(n/2+1)×(n+2)}個のセ
レクタを(n/2+1)行(n+2)列のマトリクス状
に配置して構成されている。マトリクス状に配置されて
いるBoothセレクタアレイ2の第1行は、セレクタ
E0,0 ,E0,1 ,…,E0,n/2-1 ,E0,n/2 ,E
0,n/2+1 ,…,E0,n ,E 0,n+1 によって構成され、第
2行は、セレクタE1,0 ,E1,1 ,…,E1,n/2-1,E
1,n/2 ,E1,n/2+1 ,…,E1,n ,E1,n+1 によって構
成され、そして第(n/2+1)行は、セレクタE
n/2,0 ,En/2,1 ,…,En/2,n/2-1 ,En/2,n/ 2 ,E
n/2,n/2+1 ,…,En/2,n ,En/2,n+1 によって構成さ
れている。
は、たとえば、{(n/2+1)×(n+2)}個のセ
レクタを(n/2+1)行(n+2)列のマトリクス状
に配置して構成されている。マトリクス状に配置されて
いるBoothセレクタアレイ2の第1行は、セレクタ
E0,0 ,E0,1 ,…,E0,n/2-1 ,E0,n/2 ,E
0,n/2+1 ,…,E0,n ,E 0,n+1 によって構成され、第
2行は、セレクタE1,0 ,E1,1 ,…,E1,n/2-1,E
1,n/2 ,E1,n/2+1 ,…,E1,n ,E1,n+1 によって構
成され、そして第(n/2+1)行は、セレクタE
n/2,0 ,En/2,1 ,…,En/2,n/2-1 ,En/2,n/ 2 ,E
n/2,n/2+1 ,…,En/2,n ,En/2,n+1 によって構成さ
れている。
【0014】すなわち、nビット×nビットの部分積を
発生するため、Boothデコーダアレイ1は(n/2
+1)個のデコーダBD0 ,…,BDn/2 によって構成
され、Boothセレクタアレイ2は{(n+2)×
(n/2+1)}個のセレクタE0,0 ,…,En/2,n+1
によって構成される。
発生するため、Boothデコーダアレイ1は(n/2
+1)個のデコーダBD0 ,…,BDn/2 によって構成
され、Boothセレクタアレイ2は{(n+2)×
(n/2+1)}個のセレクタE0,0 ,…,En/2,n+1
によって構成される。
【0015】図5に示すように、各Boothデコーダ
には乗数Yの隣接する三つのビットが入力され、それら
に応じて、表1に示すように−2、−1、0、1、2の
内いずれか一つの値を示す(n/2+1)個のセレクト
信号S0 ,…,Sn/2 が発生され、これらのセレクト信
号はそれぞれBoothセレクタアレイ2の所定の行に
入力される。
には乗数Yの隣接する三つのビットが入力され、それら
に応じて、表1に示すように−2、−1、0、1、2の
内いずれか一つの値を示す(n/2+1)個のセレクト
信号S0 ,…,Sn/2 が発生され、これらのセレクト信
号はそれぞれBoothセレクタアレイ2の所定の行に
入力される。
【0016】たとえば、デコーダBD0 にはy1 ,
y0 ,0(GND)が入力され、デコーダBD1 にはy
1 ,y2 ,y3 が入力され、そしてデコーダBDn/2 に
はyn-1,ys ,ys が入力される。デコーダBD0 に
よって発生されたセレクタ信号S 0 がBoothセレク
タアレイ2のセレクタアレイの第1行に入力され、デコ
ーダBD1 によって発生されたセレクタ信号S1 がBo
othセレクタアレイ2のセレクタアレイの第2行に入
力され、デコーダBDn/2 によって発生されたセレクタ
信号Sn/2 がBoothセレクタアレイ2の第(n/2
+1)行目のセレクタに入力される。
y0 ,0(GND)が入力され、デコーダBD1 にはy
1 ,y2 ,y3 が入力され、そしてデコーダBDn/2 に
はyn-1,ys ,ys が入力される。デコーダBD0 に
よって発生されたセレクタ信号S 0 がBoothセレク
タアレイ2のセレクタアレイの第1行に入力され、デコ
ーダBD1 によって発生されたセレクタ信号S1 がBo
othセレクタアレイ2のセレクタアレイの第2行に入
力され、デコーダBDn/2 によって発生されたセレクタ
信号Sn/2 がBoothセレクタアレイ2の第(n/2
+1)行目のセレクタに入力される。
【0017】図6に示すように、マトリクス状になって
いるBoothセレクタアレイ2において、マトリクス
の各列に被乗数Xのそれぞれのビットが入力される。具
体的に、セレクタE0,n+1 およびE0,n に対応した列に
被乗数Xの符号ビットxs が入力され、セレクタE
0,n/2+1 に対応した列に被乗数Xのxn/2+1 ビットが入
力され、セレクタE0,n/2 に対応した列に被乗数Xのx
n/2 ビットが入力され、セレクタE0,n/2-1 に対応した
列に被乗数Xのxn/2-1 ビットが入力され、…、セレク
タE0,1 に対応した列に被乗数Xのx1 ビットが入力さ
れ、セレクタE0,0 に対応した列に被乗数Xのx0 ビッ
トが入力される。
いるBoothセレクタアレイ2において、マトリクス
の各列に被乗数Xのそれぞれのビットが入力される。具
体的に、セレクタE0,n+1 およびE0,n に対応した列に
被乗数Xの符号ビットxs が入力され、セレクタE
0,n/2+1 に対応した列に被乗数Xのxn/2+1 ビットが入
力され、セレクタE0,n/2 に対応した列に被乗数Xのx
n/2 ビットが入力され、セレクタE0,n/2-1 に対応した
列に被乗数Xのxn/2-1 ビットが入力され、…、セレク
タE0,1 に対応した列に被乗数Xのx1 ビットが入力さ
れ、セレクタE0,0 に対応した列に被乗数Xのx0 ビッ
トが入力される。
【0018】そしてアレイの各行に入力されたセレクト
信号S0 ,…,Sn/2 に応じて、それぞれ×(−2)、
×(−1)、×0、×1、×2の演算が行われ、これに
よって部分積(−2y2i+1+y2i+y2i-1)Xが計算さ
れ、計算結果が部分積Pとして、図4に示す部分積加算
回路3に出力され、その後これらの部分積が部分積加算
回路3によって加算され、乗算の結果Zとして出力され
る。
信号S0 ,…,Sn/2 に応じて、それぞれ×(−2)、
×(−1)、×0、×1、×2の演算が行われ、これに
よって部分積(−2y2i+1+y2i+y2i-1)Xが計算さ
れ、計算結果が部分積Pとして、図4に示す部分積加算
回路3に出力され、その後これらの部分積が部分積加算
回路3によって加算され、乗算の結果Zとして出力され
る。
【0019】
【発明が解決しようとする課題】ところで、上述した従
来の部分積発生回路では、通常nビット×nビットの乗
算の部分積を発生させることができるが、ビット幅がn
より小さい数の乗算の部分積を発生させる場合には、符
号ビットによってnビットまで符号拡張を行う必要があ
り、冗長な計算をしてしまうことになる。
来の部分積発生回路では、通常nビット×nビットの乗
算の部分積を発生させることができるが、ビット幅がn
より小さい数の乗算の部分積を発生させる場合には、符
号ビットによってnビットまで符号拡張を行う必要があ
り、冗長な計算をしてしまうことになる。
【0020】図7は2の補数表示形式の符号拡張を示す
図である。図示のように、n=4、すなわち4ビットの
数字を8ビットに拡張する場合、符号ビットが0、すな
わち、正の数字においては、空きビットに0を入れるこ
とによって符号の拡張が行われ、符号ビットが1、すな
わち、負の数字においては、空きビットに1を入れるこ
とによって符号の拡張が行われる。
図である。図示のように、n=4、すなわち4ビットの
数字を8ビットに拡張する場合、符号ビットが0、すな
わち、正の数字においては、空きビットに0を入れるこ
とによって符号の拡張が行われ、符号ビットが1、すな
わち、負の数字においては、空きビットに1を入れるこ
とによって符号の拡張が行われる。
【0021】この符号拡張の処理はビット幅n/2以下
のときでさえ行わなければならないため、結局どんなビ
ット幅がnより小さいときでさえ同時に、部分積を一度
に一つの乗算に対してしか発生させることができないと
いう問題がある。
のときでさえ行わなければならないため、結局どんなビ
ット幅がnより小さいときでさえ同時に、部分積を一度
に一つの乗算に対してしか発生させることができないと
いう問題がある。
【0022】本発明は、かかる事情に鑑みてなされたも
のであり、その目的は、冗長な演算を抑制でき、mビッ
ト×nビットの部分積のみだけではなく、ビット幅の総
和がmビットとなるM個の入力とビット幅の総和がnビ
ットとなるN個の入力の各々の乗算の部分積を最大(M
×N)個まで同時に発生できる部分積発生回路を提供す
ることにある。
のであり、その目的は、冗長な演算を抑制でき、mビッ
ト×nビットの部分積のみだけではなく、ビット幅の総
和がmビットとなるM個の入力とビット幅の総和がnビ
ットとなるN個の入力の各々の乗算の部分積を最大(M
×N)個まで同時に発生できる部分積発生回路を提供す
ることにある。
【0023】
【課題を解決するための手段】上記目的を達成するた
め、本発明は、入力された乗数に基づきセレクト信号を
発生する複数のデコーダと、複数のセレクタが行列状に
配列されたセレクタアレイとを有し、各セレクタは配列
行に対応付けされた上記デコーダによるセレクト信号に
基づき、各列に入力された被乗数を用いて部分積を発生
する部分積発生回路であって、上記セレクタアレイが複
数のブロックに分割され、各ブロック間同士の境界領域
に設けられた補助セレクタアレイと、入力された乗数に
基づきセレクト信号を発生し、上記補助セレクタアレイ
に出力する補助デコーダとを有する。
め、本発明は、入力された乗数に基づきセレクト信号を
発生する複数のデコーダと、複数のセレクタが行列状に
配列されたセレクタアレイとを有し、各セレクタは配列
行に対応付けされた上記デコーダによるセレクト信号に
基づき、各列に入力された被乗数を用いて部分積を発生
する部分積発生回路であって、上記セレクタアレイが複
数のブロックに分割され、各ブロック間同士の境界領域
に設けられた補助セレクタアレイと、入力された乗数に
基づきセレクト信号を発生し、上記補助セレクタアレイ
に出力する補助デコーダとを有する。
【0024】また、本発明では、上記複数のデコーダお
よび補助デコーダに、ビット数の異なる乗数を選択的に
入力させる第1の切り換え手段と、上記セレクタアレイ
に、ビット数の異なる被乗数を選択的に入力させる第2
の切り換え手段とを有する。
よび補助デコーダに、ビット数の異なる乗数を選択的に
入力させる第1の切り換え手段と、上記セレクタアレイ
に、ビット数の異なる被乗数を選択的に入力させる第2
の切り換え手段とを有する。
【0025】本発明によれば、複数のデコーダおよび補
助デコーダに、ビット数の異なる乗数が切り換え手段に
よって選択的に入力され、それに応じてセレクタ信号が
発生され、セレクタアレイに出力される。そして、セレ
クタアレイが複数のブロックに分割され、分割されたセ
レクタアレイの各列に、切り換え手段によってビット数
の異なる被乗数が選択的に入力される。セレクタアレイ
において、デコーダからのセレクト信号に基づき、各列
に入力された被乗数を用いて部分積が発生される。
助デコーダに、ビット数の異なる乗数が切り換え手段に
よって選択的に入力され、それに応じてセレクタ信号が
発生され、セレクタアレイに出力される。そして、セレ
クタアレイが複数のブロックに分割され、分割されたセ
レクタアレイの各列に、切り換え手段によってビット数
の異なる被乗数が選択的に入力される。セレクタアレイ
において、デコーダからのセレクト信号に基づき、各列
に入力された被乗数を用いて部分積が発生される。
【0026】たとえば、nビットのデコーダアレイに入
力された乗数がnビットの乗数とn/2ビットの乗数2
個で切り換えられ、同様に、nビットのセレクタアレイ
に入力された被乗数がnビットの被乗数とn/2ビット
の被乗数2個で切り換えられる。これによって、一つの
部分積発生回路によって、たとえば、nビット×nビッ
トの部分積を発生できるほか、n/2ビット×n/2ビ
ットの四つの部分積を同時に発生できる。
力された乗数がnビットの乗数とn/2ビットの乗数2
個で切り換えられ、同様に、nビットのセレクタアレイ
に入力された被乗数がnビットの被乗数とn/2ビット
の被乗数2個で切り換えられる。これによって、一つの
部分積発生回路によって、たとえば、nビット×nビッ
トの部分積を発生できるほか、n/2ビット×n/2ビ
ットの四つの部分積を同時に発生できる。
【0027】
【発明の実施の形態】図1は、本発明に係る部分積発生
回路を用いた乗算器の回路図であり、たとえば、nビッ
ト×nビット(nは4の倍数)の乗算演算を行う乗算器
の回路図である。図1において、1aはブース(Boo
th)デコーダアレイ、2aはBoothセレクタアレ
イ、3は部分積加算回路、10aはBoothデコーダ
アレイ1aおよびBoothセレクタアレイ2aによっ
て構成された部分積発生回路をそれぞれ示している。ま
た、YとXはそれぞれnビットの乗数およびnビットの
被乗数、SはBoothデコーダアレイ1aの各デコー
ダによって発生されたセレクト信号、PはBoothセ
レクタアレイ2aによって発生された部分積、Zは乗算
結果をそれぞれ示している。
回路を用いた乗算器の回路図であり、たとえば、nビッ
ト×nビット(nは4の倍数)の乗算演算を行う乗算器
の回路図である。図1において、1aはブース(Boo
th)デコーダアレイ、2aはBoothセレクタアレ
イ、3は部分積加算回路、10aはBoothデコーダ
アレイ1aおよびBoothセレクタアレイ2aによっ
て構成された部分積発生回路をそれぞれ示している。ま
た、YとXはそれぞれnビットの乗数およびnビットの
被乗数、SはBoothデコーダアレイ1aの各デコー
ダによって発生されたセレクト信号、PはBoothセ
レクタアレイ2aによって発生された部分積、Zは乗算
結果をそれぞれ示している。
【0028】図2および図3はそれぞれはBoothデ
コーダアレイ1aおよびBoothセレクタアレイ2a
の構成を示す回路図である。図示のように、Booth
デコーダアレイ1aは(n/2+2)個のデコーダBD
0 ,…,BDd ,…,BDn/2 を(n/2+2)行1列
のアレイに配置して構成されている。また、Booth
セレクタアレイ2は、たとえば、{(n/2+2)×
(n+4)}個のセレクタを(n/2+2)行(n+
4)列のマトリクス状に配置して構成されている。
コーダアレイ1aおよびBoothセレクタアレイ2a
の構成を示す回路図である。図示のように、Booth
デコーダアレイ1aは(n/2+2)個のデコーダBD
0 ,…,BDd ,…,BDn/2 を(n/2+2)行1列
のアレイに配置して構成されている。また、Booth
セレクタアレイ2は、たとえば、{(n/2+2)×
(n+4)}個のセレクタを(n/2+2)行(n+
4)列のマトリクス状に配置して構成されている。
【0029】マトリクス状に配置されているBooth
セレクタアレイ2の第1行は、セレクタE0,0 ,
E0,1 ,…,E0,b ,E0,a ,…,E0,n ,E0,n+1 に
よって構成され、第2行は、セレクタE1,0 ,E1,1 ,
…,E1,b ,E1,a ,…,E1,n ,E1,n+1 によって構
成され、そして第(n/2+2)行は、セレクタE
n/2,0 ,En/2,1 ,…,En/2,b ,En/2,a ,…,E
n/2,n ,En/2,n+1 によって構成されている。
セレクタアレイ2の第1行は、セレクタE0,0 ,
E0,1 ,…,E0,b ,E0,a ,…,E0,n ,E0,n+1 に
よって構成され、第2行は、セレクタE1,0 ,E1,1 ,
…,E1,b ,E1,a ,…,E1,n ,E1,n+1 によって構
成され、そして第(n/2+2)行は、セレクタE
n/2,0 ,En/2,1 ,…,En/2,b ,En/2,a ,…,E
n/2,n ,En/2,n+1 によって構成されている。
【0030】図2に示すように、スイッチ回路4は制御
信号CTLに応じて、Boothデコーダアレイ1aの
各デコーダに入力される乗数YとC,Dとを切り換え
る。図3に示すように、スイッチ回路5は制御信号CT
Lに応じて、Boothセレクタアレイ2aの各行に入
力される被乗数XとA,Bとを切り換える。
信号CTLに応じて、Boothデコーダアレイ1aの
各デコーダに入力される乗数YとC,Dとを切り換え
る。図3に示すように、スイッチ回路5は制御信号CT
Lに応じて、Boothセレクタアレイ2aの各行に入
力される被乗数XとA,Bとを切り換える。
【0031】そして、図2および図3に示すように、B
oothデコーダアレイ1aに入力される乗数がnビッ
トの乗数Yとn/2ビットの乗数C,Dの2セットであ
り、Boothセレクタアレイ2aに入力される被乗数
がnビットの被乗数Xとn/2ビットの被乗数A,Bの
2セットである。さらに、図示のように、乗数YとC,
D、被乗数XとA,Bのそれぞれ2セットの入力信号が
スイッチ回路4およびスイッチ回路5によって切り換え
られる。
oothデコーダアレイ1aに入力される乗数がnビッ
トの乗数Yとn/2ビットの乗数C,Dの2セットであ
り、Boothセレクタアレイ2aに入力される被乗数
がnビットの被乗数Xとn/2ビットの被乗数A,Bの
2セットである。さらに、図示のように、乗数YとC,
D、被乗数XとA,Bのそれぞれ2セットの入力信号が
スイッチ回路4およびスイッチ回路5によって切り換え
られる。
【0032】図2および図3においては、斜線の部分は
Boothデコーダアレイ1aにおける補助デコーダお
よびBoothセレクタアレイ2aにおける補助セレク
タを示している。図2に示すように、(n/2+2)行
1列のBoothデコーダアレイ1aにおいて、デコー
ダBDn/4-1 とデコーダBDn/4 との間に、補助デコー
ダBDdが設けられている。図3に示すように、Boo
thデコーダアレイ1aの補助デコーダBDd に対応し
て、Boothセレクタアレイ2にセレクタEd,0 ,E
d,1 ,…,Ed,n/2- 1 ,Ed,n/2 ,Ed,b ,Ed,a ,E
d,n/2+1 ,…,Ed,n ,Ed,n+1 の一行が設けられ、さ
らに、被乗数Xのxn/2 ,xn/2+1 の2ビットに対応し
たセレクタアレイの2列の間に、E0,b ,E1,b …,E
d,b ,En/4,b ,…,En/2,b およびE0,a ,E1,a ,
…,Ed,a ,En/4,a ,…,En/2,a の2列が設けられ
ている。
Boothデコーダアレイ1aにおける補助デコーダお
よびBoothセレクタアレイ2aにおける補助セレク
タを示している。図2に示すように、(n/2+2)行
1列のBoothデコーダアレイ1aにおいて、デコー
ダBDn/4-1 とデコーダBDn/4 との間に、補助デコー
ダBDdが設けられている。図3に示すように、Boo
thデコーダアレイ1aの補助デコーダBDd に対応し
て、Boothセレクタアレイ2にセレクタEd,0 ,E
d,1 ,…,Ed,n/2- 1 ,Ed,n/2 ,Ed,b ,Ed,a ,E
d,n/2+1 ,…,Ed,n ,Ed,n+1 の一行が設けられ、さ
らに、被乗数Xのxn/2 ,xn/2+1 の2ビットに対応し
たセレクタアレイの2列の間に、E0,b ,E1,b …,E
d,b ,En/4,b ,…,En/2,b およびE0,a ,E1,a ,
…,Ed,a ,En/4,a ,…,En/2,a の2列が設けられ
ている。
【0033】以下、図1、図2および図3の回路図を参
照しつつ、本発明の原理について、詳細に説明する。こ
こで、便利のために、nは4の倍数とし、また、乗数Y
および被乗数Xの分割数はともに2とする。ベクトル表
示によって、被乗数Xおよび乗数Yを次のように表現で
きる。
照しつつ、本発明の原理について、詳細に説明する。こ
こで、便利のために、nは4の倍数とし、また、乗数Y
および被乗数Xの分割数はともに2とする。ベクトル表
示によって、被乗数Xおよび乗数Yを次のように表現で
きる。
【数5】 ここで、xs 、ys はそれぞれ被乗数Xおよび乗数Yの
符号ビットを示す。
符号ビットを示す。
【0034】スイッチ回路4およびスイッチ回路5によ
って、Boothデコーダアレイ1aの入力に乗数Yが
選択され、Boothセレクタアレイ2aの入力に被乗
数Xが選択されると、部分積発生回路10aによって、
通常のnビット×nビットの乗算の部分積Pが発生さ
れ、さらに部分積加算回路3によって発生されたこれら
の部分積Pが加算され、nビット×nビットの乗算結果
Zが得られる。
って、Boothデコーダアレイ1aの入力に乗数Yが
選択され、Boothセレクタアレイ2aの入力に被乗
数Xが選択されると、部分積発生回路10aによって、
通常のnビット×nビットの乗算の部分積Pが発生さ
れ、さらに部分積加算回路3によって発生されたこれら
の部分積Pが加算され、nビット×nビットの乗算結果
Zが得られる。
【0035】このような乗算演算は、従来の部分積発生
回路10と同様に行われる。すなわち、Boothデコ
ーダアレイ1aにおいて、スイッチ回路4によって、補
助デコーダBDb に乗数が入力されず、デコーダBDb
が有効に作動しない。これに応じて、Boothセレク
タアレイ2aにおける補助セレクタEd,0 ,Ed,1 ,
…,Ed,n/2-1 ,Ed,n/2 ,Ed,b ,Ed,a ,E
d,n/2+1 ,…,Ed,n,Ed,n+1 の一行も有効に作動し
ない。また、Boothセレクタアレイ2aにおいて、
スイッチ回路5によって、補助セレクタE0,b ,E1,b
…,Ed,b ,En/4,b ,…,En/2,b およびE0,a ,E
1,a ,…,Ed,a ,En/4,a ,…,En/2,a の2列に被
乗数が入力されず、これらのセレクタが有効に作動しな
い。
回路10と同様に行われる。すなわち、Boothデコ
ーダアレイ1aにおいて、スイッチ回路4によって、補
助デコーダBDb に乗数が入力されず、デコーダBDb
が有効に作動しない。これに応じて、Boothセレク
タアレイ2aにおける補助セレクタEd,0 ,Ed,1 ,
…,Ed,n/2-1 ,Ed,n/2 ,Ed,b ,Ed,a ,E
d,n/2+1 ,…,Ed,n,Ed,n+1 の一行も有効に作動し
ない。また、Boothセレクタアレイ2aにおいて、
スイッチ回路5によって、補助セレクタE0,b ,E1,b
…,Ed,b ,En/4,b ,…,En/2,b およびE0,a ,E
1,a ,…,Ed,a ,En/4,a ,…,En/2,a の2列に被
乗数が入力されず、これらのセレクタが有効に作動しな
い。
【0036】一方、本実施形態においては、スイッチ回
路4およびスイッチ回路5によって入力された乗数Yお
よび被乗数Xを切り換えることによって、たとえば、
(n/2)ビット×(n/2)ビット乗算の部分積を発
生させることができる。
路4およびスイッチ回路5によって入力された乗数Yお
よび被乗数Xを切り換えることによって、たとえば、
(n/2)ビット×(n/2)ビット乗算の部分積を発
生させることができる。
【0037】ここで、たとえば、四つの入力信号A,
B,C,Dを次のようにベクトルで表記する。
B,C,Dを次のようにベクトルで表記する。
【数6】 すなわち、四つの入力信号A,B,C,Dはそれぞれ
(n/2)ビットの2進数を表している。また、ここで
as ,bs ,cs ,ds は、それぞれA,B,C,Dの
符号ビットを示す。
(n/2)ビットの2進数を表している。また、ここで
as ,bs ,cs ,ds は、それぞれA,B,C,Dの
符号ビットを示す。
【0038】図2および図3に示すように、たとえば、
スイッチ回路4およびスイッチ回路5によって、Boo
thデコーダアレイ1aに乗数Yの代わりに、乗数Cと
Dが入力され、Boothセレクタアレイ2aに被乗数
Xの代わりに、被乗数AとBが入力されると、Boot
hセレクタアレイ2aによって、四つの部分積、A×
C,A×D,B×C,B×Dが同時に発生される。
スイッチ回路4およびスイッチ回路5によって、Boo
thデコーダアレイ1aに乗数Yの代わりに、乗数Cと
Dが入力され、Boothセレクタアレイ2aに被乗数
Xの代わりに、被乗数AとBが入力されると、Boot
hセレクタアレイ2aによって、四つの部分積、A×
C,A×D,B×C,B×Dが同時に発生される。
【0039】具体的には、図2に示すように、スイッチ
回路4によって、乗数Dの各ビットdn/2-1 ,…,d0
が、それぞれBoothデコーダアレイ1aのデコーダ
DB d ,BDn/4-1 ,…,BD0 に入力され、Dの符号
ビットds が補助デコーダDBd に入力される。また、
もう一つの乗数Cの各ビットcn/2-1 ,…,c0 が、そ
れぞれBoothデコーダアレイ1aのデコーダDB
n/2 ,BDn/2-1 ,…,BDn/4 に入力され、Cの符号
ビットcs がデコーダDBn/2 に入力される。
回路4によって、乗数Dの各ビットdn/2-1 ,…,d0
が、それぞれBoothデコーダアレイ1aのデコーダ
DB d ,BDn/4-1 ,…,BD0 に入力され、Dの符号
ビットds が補助デコーダDBd に入力される。また、
もう一つの乗数Cの各ビットcn/2-1 ,…,c0 が、そ
れぞれBoothデコーダアレイ1aのデコーダDB
n/2 ,BDn/2-1 ,…,BDn/4 に入力され、Cの符号
ビットcs がデコーダDBn/2 に入力される。
【0040】図3に示すように、Boothセレクタア
レイ2aにおいて、スイッチ回路5によって、被乗数A
の各ビットas ,an/2-1 ,…,a1 が、Boothセ
レクタアレイ2aのセレクタE0,n+1 ,E0,n ,…,E
0,n/2+1 に対応する各列に入力され、a0 は補助セレク
タE0,d に対応する列に入力される。また、もう一つの
被乗数Bの各ビットbn/2-1 ,…,b0 が、Booth
セレクタアレイ2aのセレクタE0,n/2-1 ,…,
E0,1 ,E0,0 に対応する各列に入力され、Bの符号ビ
ットbs が補助セレクタE0,b に対応する列およびセレ
クタE0,n/2 に対応する列に入力される。
レイ2aにおいて、スイッチ回路5によって、被乗数A
の各ビットas ,an/2-1 ,…,a1 が、Boothセ
レクタアレイ2aのセレクタE0,n+1 ,E0,n ,…,E
0,n/2+1 に対応する各列に入力され、a0 は補助セレク
タE0,d に対応する列に入力される。また、もう一つの
被乗数Bの各ビットbn/2-1 ,…,b0 が、Booth
セレクタアレイ2aのセレクタE0,n/2-1 ,…,
E0,1 ,E0,0 に対応する各列に入力され、Bの符号ビ
ットbs が補助セレクタE0,b に対応する列およびセレ
クタE0,n/2 に対応する列に入力される。
【0041】上述したように、Boothデコーダアレ
イ1aの各デコーダおよびBoothセレクタアレイ2
aの各列にそれぞれ2セットの信号がスイッチ回路4お
よびスイッチ回路5を介して入力され、スイッチ回路4
およびスイッチ回路5によって、Boothデコーダア
レイ1aには乗数Yまたは乗数C,Dと切り換えられ、
Boothセレクタアレイ2aには被乗数Xまたは被乗
数A,Bと切り換えられる。
イ1aの各デコーダおよびBoothセレクタアレイ2
aの各列にそれぞれ2セットの信号がスイッチ回路4お
よびスイッチ回路5を介して入力され、スイッチ回路4
およびスイッチ回路5によって、Boothデコーダア
レイ1aには乗数Yまたは乗数C,Dと切り換えられ、
Boothセレクタアレイ2aには被乗数Xまたは被乗
数A,Bと切り換えられる。
【0042】乗数Yおよび被乗数Xが選択されたとき、
上述したように、通常のnビット×nビット乗算用の部
分積Pが発生され、乗数C,Dおよび被乗数A,Bが選
択されたとき、マトリクス状のBoothセレクタアレ
イ2aにおいて、図3の中、太線で区切られた四つの領
域A1,A2,A3,A4の内、セレクタEn/4,n+1,
En/4,a ,En/2,a ,En/2,n+1 に囲まれたセレクタア
レイ領域A1にA×Cの部分積、セレクタE0,n+1 ,E
0,a ,Ed,a ,Ed,n+1 に囲まれたセレクタアレイ領域
A2にA×Dの部分積、セレクタEn/4,b ,En/4,0 ,
En/2,0 ,En/ 2,b に囲まれたセレクタアレイ領域A3
にB×Cの部分積、セレクタE0,b ,E 0,0 ,Ed,0 ,
Ed,b に囲まれたセレクタアレイ領域A4にB×Dの部
分積がそれぞれ同時に発生される。
上述したように、通常のnビット×nビット乗算用の部
分積Pが発生され、乗数C,Dおよび被乗数A,Bが選
択されたとき、マトリクス状のBoothセレクタアレ
イ2aにおいて、図3の中、太線で区切られた四つの領
域A1,A2,A3,A4の内、セレクタEn/4,n+1,
En/4,a ,En/2,a ,En/2,n+1 に囲まれたセレクタア
レイ領域A1にA×Cの部分積、セレクタE0,n+1 ,E
0,a ,Ed,a ,Ed,n+1 に囲まれたセレクタアレイ領域
A2にA×Dの部分積、セレクタEn/4,b ,En/4,0 ,
En/2,0 ,En/ 2,b に囲まれたセレクタアレイ領域A3
にB×Cの部分積、セレクタE0,b ,E 0,0 ,Ed,0 ,
Ed,b に囲まれたセレクタアレイ領域A4にB×Dの部
分積がそれぞれ同時に発生される。
【0043】以上の説明においては、便利のため、二つ
の入力のビット幅が等しく、しかも4の倍数であり、か
つ分割数は被乗数、乗数をともに2として、四つの部分
積が同時に計算できることを説明してきたが、これに限
定されることはなく、一般的な場合についても回路構成
に多少の変更を加えることによって同様の計算処理が実
現できることはいうまでもない。
の入力のビット幅が等しく、しかも4の倍数であり、か
つ分割数は被乗数、乗数をともに2として、四つの部分
積が同時に計算できることを説明してきたが、これに限
定されることはなく、一般的な場合についても回路構成
に多少の変更を加えることによって同様の計算処理が実
現できることはいうまでもない。
【0044】たとえば、2次のBoothアルゴリズム
を用いて構成されたmビット×nビットの乗算器の部分
積と、ビット幅の総和がmビットとなるM個の入力とビ
ット幅の総和がnビットとなるN個の入力との最大(M
×N)個の部分積を同じ部分積発生回路を用いて発生で
きる。
を用いて構成されたmビット×nビットの乗算器の部分
積と、ビット幅の総和がmビットとなるM個の入力とビ
ット幅の総和がnビットとなるN個の入力との最大(M
×N)個の部分積を同じ部分積発生回路を用いて発生で
きる。
【0045】以上説明したように、本実施形態によれ
ば、Boothデコーダアレイ1aに1個の補助デコー
ダを設け、Boothセレクタアレイ2aに{(n+
4)+(n/2+1)×2=2n+6}個の補助セレク
タを設け、スイッチ回路によって、Boothデコーダ
アレイ1aの入力に乗数YまたはC,Dを切り換え、B
oothセレクタアレイ2aの入力に被乗数Xまたは
A,Bを切り換え、部分積を発生させるので、X×Yの
部分積Pのほか、A×C,A×D,B×C,B×Dのそ
れぞれの部分積を同時に発生できる。
ば、Boothデコーダアレイ1aに1個の補助デコー
ダを設け、Boothセレクタアレイ2aに{(n+
4)+(n/2+1)×2=2n+6}個の補助セレク
タを設け、スイッチ回路によって、Boothデコーダ
アレイ1aの入力に乗数YまたはC,Dを切り換え、B
oothセレクタアレイ2aの入力に被乗数Xまたは
A,Bを切り換え、部分積を発生させるので、X×Yの
部分積Pのほか、A×C,A×D,B×C,B×Dのそ
れぞれの部分積を同時に発生できる。
【0046】なお、A×CとB×Dの部分積のみを必要
とする場合には、図3のBoothセレクタアレイ2a
においては太線で区切られた四つの領域A1,A2,A
3,A4の内、セレクタE0,n+1 ,E0,a ,Ed,a ,E
d,n+1 に囲まれたセレクタアレイ領域A2およびセレク
タEn/4,b ,En/4,0 ,En/2,0 ,En/2,b に囲まれた
セレクタアレイ領域A3は実際には必要としない。した
がって、この場合、図3に示すBoothセレクタアレ
イ2aにおいて、補助セレクタの個数は{(n/2+
2)+(n/2+1)=n+3}個となり、最小限の補
助セレクタを設けるだけで、同一のBoothセレクタ
アレイ2aによって、X×Yの部分積を発生できるほ
か、A×CとB×Dの部分積を同時に発生できる利点が
ある。
とする場合には、図3のBoothセレクタアレイ2a
においては太線で区切られた四つの領域A1,A2,A
3,A4の内、セレクタE0,n+1 ,E0,a ,Ed,a ,E
d,n+1 に囲まれたセレクタアレイ領域A2およびセレク
タEn/4,b ,En/4,0 ,En/2,0 ,En/2,b に囲まれた
セレクタアレイ領域A3は実際には必要としない。した
がって、この場合、図3に示すBoothセレクタアレ
イ2aにおいて、補助セレクタの個数は{(n/2+
2)+(n/2+1)=n+3}個となり、最小限の補
助セレクタを設けるだけで、同一のBoothセレクタ
アレイ2aによって、X×Yの部分積を発生できるほ
か、A×CとB×Dの部分積を同時に発生できる利点が
ある。
【0047】
【発明の効果】以上説明したように、本発明の部分積発
生回路によれば、冗長演算を抑制でき、しかも通常のm
ビット×nビットの部分積のみだけではなく、ビット幅
の総和がmビットとなるM個の入力とビット幅の総和が
nビットとなるN個の入力の各々の乗算の部分積を最大
(M×N)個まで同時に発生できる利点がある。
生回路によれば、冗長演算を抑制でき、しかも通常のm
ビット×nビットの部分積のみだけではなく、ビット幅
の総和がmビットとなるM個の入力とビット幅の総和が
nビットとなるN個の入力の各々の乗算の部分積を最大
(M×N)個まで同時に発生できる利点がある。
【図1】本発明に係る部分積発生回路の一実施形態を示
す回路図である。
す回路図である。
【図2】本発明のBoothデコーダアレイの回路図で
ある。
ある。
【図3】本発明のBoothセレクタアレイの回路図で
ある。
ある。
【図4】従来の部分積発生回路の一例を示す回路図であ
る。
る。
【図5】従来のBoothデコーダアレイの回路図であ
る。
る。
【図6】従来のBoothセレクタアレイの回路図であ
る。
る。
【図7】2の補数形式の符号拡張を示す図である。
1a…Boothデコーダアレイ 2a…Boothセレクタアレイ 3…部分積加算回路 10a…部分積発生回路 X,A,B…被乗数 Y,C,D…乗数 S…セレクト信号 P…部分積 Z…乗算結果 BD0 ,BD1 ,…,BDn/2 …デコーダ E0,n+1 ,E0,n ,…,En/2 ,1,En/2,0 …セレクタ
Claims (2)
- 【請求項1】 入力された乗数に基づきセレクト信号を
発生する複数のデコーダと、複数のセレクタが行列状に
配列されたセレクタアレイとを有し、各セレクタは配列
行に対応付けされた上記デコーダによるセレクト信号に
基づき、各列に入力された被乗数を用いて部分積を発生
する部分積発生回路であって、 上記セレクタアレイが複数のブロックに分割され、 各ブロック間同士の境界領域に設けられた補助セレクタ
アレイと、 入力された乗数に基づきセレクト信号を発生し、上記補
助セレクタアレイに出力する補助デコーダとを有する部
分積発生回路。 - 【請求項2】 上記複数のデコーダおよび補助デコーダ
に、ビット数の異なる乗数を選択的に入力させる第1の
切り換え手段と、 上記セレクタアレイに、ビット数の異なる被乗数を選択
的に入力させる第2の切り換え手段とを有する請求項1
に記載の部分積発生回路。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7275798A JPH09120355A (ja) | 1995-10-24 | 1995-10-24 | 部分積発生回路 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7275798A JPH09120355A (ja) | 1995-10-24 | 1995-10-24 | 部分積発生回路 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH09120355A true JPH09120355A (ja) | 1997-05-06 |
Family
ID=17560565
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7275798A Pending JPH09120355A (ja) | 1995-10-24 | 1995-10-24 | 部分積発生回路 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH09120355A (ja) |
-
1995
- 1995-10-24 JP JP7275798A patent/JPH09120355A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0239899B1 (en) | Multiplier array circuit | |
| US5754459A (en) | Multiplier circuit design for a programmable logic device | |
| US4168530A (en) | Multiplication circuit using column compression | |
| EP0328063B1 (en) | Absolute value calculating circuit having a single adder | |
| EP0210579B1 (en) | Parallel multiplicator | |
| US7308471B2 (en) | Method and device for performing operations involving multiplication of selectively partitioned binary inputs using booth encoding | |
| JPS6375932A (ja) | ディジタル乗算器 | |
| EP0811908B1 (en) | Two's complement multiplier | |
| KR20040092376A (ko) | 몽고메리 모듈러 곱셈기 및 캐리 저장 가산을 이용한몽고메리 모듈러 곱셈 방법 | |
| JPS595350A (ja) | 組合わせ乗算器 | |
| US7296049B2 (en) | Fast multiplication circuits | |
| US5870322A (en) | Multiplier to selectively perform unsigned magnitude multiplication or signed magnitude multiplication | |
| US5935201A (en) | Multiplier circuit for multiplication operation between binary and twos complement numbers | |
| JPH0312738B2 (ja) | ||
| JPS5856033A (ja) | 乗算回路 | |
| JP3227538B2 (ja) | 2進整数乗算器 | |
| US5777915A (en) | Multiplier apparatus and method for real or complex numbers | |
| JPS58137045A (ja) | 並列乗算器 | |
| JPH08314697A (ja) | 符号付き/符号なし数兼用乗算器 | |
| JP2606339B2 (ja) | 乗算器 | |
| JPS60112141A (ja) | 乗算回路 | |
| USRE38387E1 (en) | Multiplier circuit for multiplication operation between binary and twos complement numbers | |
| JPH11282651A (ja) | 並列乗算器 | |
| JP3130797B2 (ja) | 積和演算処理方法およびその装置 | |
| JP2518973B2 (ja) | 丸め機能付加算器およびこれを用いた乗算器 |