JP3746285B2 - 加算回路 - Google Patents

加算回路 Download PDF

Info

Publication number
JP3746285B2
JP3746285B2 JP2003420513A JP2003420513A JP3746285B2 JP 3746285 B2 JP3746285 B2 JP 3746285B2 JP 2003420513 A JP2003420513 A JP 2003420513A JP 2003420513 A JP2003420513 A JP 2003420513A JP 3746285 B2 JP3746285 B2 JP 3746285B2
Authority
JP
Japan
Prior art keywords
carry
signal
circuit
digit
addition
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
JP2003420513A
Other languages
English (en)
Other versions
JP2005182346A (ja
Inventor
薫 阿波加
章浩 嶽釜
裕 豊納
重利 村松
Original Assignee
日本テキサス・インスツルメンツ株式会社
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 日本テキサス・インスツルメンツ株式会社 filed Critical 日本テキサス・インスツルメンツ株式会社
Priority to JP2003420513A priority Critical patent/JP3746285B2/ja
Priority to US11/013,118 priority patent/US20050177611A1/en
Publication of JP2005182346A publication Critical patent/JP2005182346A/ja
Application granted granted Critical
Publication of JP3746285B2 publication Critical patent/JP3746285B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • G06F7/507Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages using selection between two conditionally calculated carry or sum values

Landscapes

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

Description

本発明は加算回路に係り、特に、乗算回路又は乗算加算回路の最終段に用いられる加算回路に関するものである。
一般に乗算回路は、図16に示すような筆算による乗算と同様に、まず乗数の各ビットと被乗数との部分積を計算し、これらの部分積を加算することにより乗算結果を得る構成を有している。
部分積の加算回路には、加算器の段数増加に伴うキャリー信号の伝播遅延を抑えるために、例えばワレスの木(Wallace tree)と称される加算回路が用いられる。ワレスの木は、全加算器をツリー状に接続して構成された回路であり、図16に示すように、多数の部分積を最終的に2つの信号にまとめる働きを有する。ワレスの木では、加算に伴うキャリー信号の伝播が部分的にしか行われないため、キャリー信号の伝播遅延が抑えられる。
乗算結果は、ワレスの木より出力される2つの信号を、最終段の加算回路において加算することにより得られる。ワレスの木で残されたキャリー信号の伝播はこの最終段の加算によって実行されるため、最終段の加算回路にはキャリー信号を高速に伝播する能力が要求される。
このような乗算回路の最終段の加算回路として、例えば、次に述べるような回路が用いられる。
(1)リプル・キャリー・アダー(ripple carry adder)
リプル・キャリー・アダーは、入力信号の各桁を全加算器によって加算する回路であり、下位の全加算器から出力されるキャリー信号を上位の全加算器へ順に伝播させることにより和出力を得るものである。キャリー信号が1ビットずつ伝播するため、桁上げ速度が遅いという欠点がある。しかしながら、以降に述べる加算回路と比較して回路構成が単純であり、消費電力が少ないという利点もある。
(2)キャリー・ルックアヘッド・アダー(carry look ahead adder)
キャリー・ルックアヘッド・アダーは、上位のキャリー信号の一部を桁上げ先見回路によって生成することにより、キャリー信号の生成を高速化した加算回路である。例えばリプル・キャリー・アダーに桁上げ先見回路を用いることにより、キャリー信号の伝播遅延を改善することができる。
図17は、4桁のキャリー・ルックアヘッド・アダーの構成例を示すブロック図である。
図17において、全加算器201〜204は、入力信号の第0桁〜第3桁の加算を行う回路であり、AND回路205〜209およびセレクタ210で構成される回路は、第3桁のキャリー信号c3を生成する桁上げ先見回路である。
全加算器201,…,204は、第0桁のビット信号(a0,b0),…,第3桁の信号(a3,b3)をそれぞれ入力するとともに、キャリー信号CIN,c0,c1,c2をそれぞれ入力し、和信号s0,…,s3およびキャリー信号c0,…,c3をそれぞれ出力する。ただし、全加算器201,202,203より出力されるキャリー信号c0,c1,c2は、それぞれ上位桁の全加算器202,203,204へ入力される。
また、全加算器201,…,204は、和信号およびキャリー信号を算出する過程において、キャリー伝播信号p0,…,p3およびキャリー生成信号g0,…,g3をそれぞれ生成する。キャリー伝播信号p0,…,p3は、各桁のビット信号の排他的論理和であり、キャリー生成信号g0,…,g3は、各桁のビット信号の論理積である。
桁上げ先見回路は、このキャリー伝播信号p0,…,p3およびキャリー伝播信号p0,…,p3に基づいて、第3桁のキャリー信号c3を生成する。
すなわち、4入力AND回路205はキャリー伝播信号p3,p2,p1およびキャリー生成信号g0の論理積を、3入力AND回路206はキャリー伝播信号p3,p2およびキャリー生成信号g1の論理積を、2入力AND回路208はキャリー伝播信号p3およびキャリー生成信号g2の論理積をそれぞれ演算する。4入力OR回路208は、これら3つの論理積とキャリー生成信号g3との論理和を演算する。セレクタ210は、4入力AND回路209においてキャリー伝播信号p0,…,p3の論理積を演算した結果が‘0’の場合、4入力OR回路208の論理和を出力し、4入力AND回路209の論理積が‘1’の場合、キャリー信号CINを出力する。このセレクタ210の出力信号が、キャリー信号c3として上位桁の演算に用いられる。
キャリー・ルックアヘッド・アダーは、キャリー信号の計算を複数の回路で並列に行うため、キャリー信号の生成は高速であるが、回路規模および消費電力が増大する欠点を持つ。
(3)キャリー・セレクト・アダー(carry select adder)
キャリー・セレクト・アダーは、下位からのキャリー信号が‘0’の場合と‘1’の場合の2通りの加算結果を予め計算し、当該キャリー信号が到着したところで2通りの加算結果の一方をセレクタにより選択して出力する回路である。各桁の加算回路には、例えば上述したリプル・キャリー・アダーが用いられる。
入力信号に比べて下位からのキャリー信号が遅い場合、特に、キャリー信号の到着前に各桁の加算結果の予測値が得られる場合には、キャリー信号の到着とともにセレクタから加算結果を出力することができるため、キャリー・セレクト・アダーは高速である。しかしながら、内部に2通りの加算を行う回路を含むため、回路規模および消費電力が増大する欠点を持つ。
(4)キャリー・セレクト・アダー+キャリー・ルックアヘッド・アダー
図18は、全ビットの和出力をキャリー・セレクト・アダー211〜213によって算出するとともに、上位のキャリー信号c31を桁上げ先見回路214によって生成する加算回路である。このように、キャリー・セレクト・アダーとキャリー・ルックアヘッド・アダーとを組み合わせることにより和信号とキャリー信号を何れも高速に生成することが可能であるが、桁上げ先見回路を余分に必要とするため、キャリー・セレクト・アダーよりも更に回路規模および消費電力が増大する。
(5)1レベルのキャリー・インクリメント・アダー(carry increment adder)
キャリー・インクリメント・アダーは、局所的なキャリー生成信号およびキャリー伝播信号を下位から上位に向かって順番に生成する回路をそれぞれ有しており、下位からのキャリー信号が到着した場合に、この局所的なキャリー生成信号およびキャリー伝播信号を用いて各桁のキャリー信号および和信号を計算する。1レベルのキャリー・インクリメント・アダーは、こうした局所的なキャリー生成信号およびキャリー伝播信号の生成回路をそれぞれ1重に持つものである。
1レベルのキャリー・インクリメント・アダーは、キャリー・セレクト・アダーに比べて和出力の生成が若干遅いものの、リプル・キャリー・アダーに相当する回路が1系列分で済むため、回路規模および消費電力についてはキャリー・セレクト・アダーより小さくなる。
(6)2レベルのキャリー・インクリメント・アダー
1レベルのキャリー・インクリメント・アダーでは、加算するビット長が長くなると、局所的なキャリー生成信号およびキャリー伝播信号の生成が下位からのキャリー信号の到着より遅れてしまう場合が生じ得る。この欠点を改良するため、2レベルのキャリー・インクリメント・アダーは、局所的なキャリー生成信号およびキャリー伝播信号の生成回路をそれぞれ2重に持ち、これらの局所的信号の生成を並列に実行させることにより、上述した遅延を抑えるものである。
図19は、上述した従来の加算回路の性能を速度、消費電力、回路面積の点で比較した図である。図19において‘○’は性能が優れていることを示し、‘×’は性能が劣っていることを示し、‘△’は中間の性能であることを示す。
図19に示すように、従来の加算回路では、速度を重視すると消費電力や回路面積が大きくなってしまう傾向があり、その両方を良好に保つことが困難であるという不利益が存在する。
本発明はかかる事情に鑑みてなされたものであり、その目的は、消費電力を増大させることなく高速に加算を実行できる加算回路と、そのような加算回路を有する乗算回路を提供することにある。
上記の目的を達成する第1の発明の加算回路は、入力される加算対象の信号のそれぞれ異なるビット範囲を加算する複数の加算ユニットを有し、上記複数の加算ユニットの少なくとも2つは、その加算を行うビット範囲において加算対象のビット信号の入力タイミングが上位桁に向かうにつれて変化する当該変化の傾向にそれぞれ適合した加算方式であって、各桁の加算値の算出タイミングが上位桁に向かうにつれて変化する傾向に違いを有する異なる加算方式により加算を行う。
好適には、上記複数の加算ユニットは、ビット信号の入力タイミングが上位桁に向かうにつれて遅延する傾向を有する第1のビット範囲の入力信号に対して、上記加算値算出タイミングが上位桁に向かうにつれて遅延する第1の加算方式により加算を行う第1の加算ユニットと、上記入力タイミングが上位桁に向かうにつれて上記第1のビット範囲より緩やかに遅延するか若しくは早くなる傾向を有する第2のビット範囲の入力信号に対して、上記加算値算出タイミングが上位桁に向かうにつれて上記第1の加算方式より緩やかに遅延する第2の加算方式により加算を行う第2の加算ユニットとを含む。
この第1の加算ユニットおよび第2の加算ユニットは、第K桁(Kは正の整数を示す)へのキャリー信号に応じて第i桁(iは、i>Kを満たす整数を示す)で生じるキャリー信号が変化するか否かを示すキャリー伝播信号p(i,K)を前段からのキャリー伝播信号p(i−1,K)に基づいて生成する、縦続に接続された複数の回路を含む第1のキャリー伝播信号生成回路と、第K桁へのキャリー信号に依存せずに第i桁で生じるキャリー信号が所定のビット値になるか否かを示すキャリー生成信号g(i,K)を前段からのキャリー生成信号g(i−1,K)に基づいて生成する、縦続に接続された複数の回路を含む第1のキャリー生成信号生成回路と、上記第1のキャリー伝播信号生成回路より出力されるキャリー伝播信号p(i,K)と、上記第1のキャリー生成信号生成回路より出力されるキャリー生成信号g(i,K)と、第K桁へのキャリー信号にとに基づいて、第i桁で生じるキャリー信号を生成するキャリー信号生成回路とを含んでも良い。
また、第kのキャリー伝播信号生成回路(kは、2以上の整数を示す)は、第(k−1)のキャリー伝播信号生成回路の縦続接続回路の終段から出力されるキャリー伝播信号p(M2,M1)(M2,M1は、M2>M1を満たす正の整数を示す)と、前段からのキャリー伝播信号p(M1−1,M0)(M0は、M1>M0を満たす正の整数を示す)とに基づいてキャリー伝播信号p(M2,M0)を生成する、縦続に接続された複数の回路を含む回路であり、第kのキャリー生成信号生成回路は、第(k−1)のキャリー生成信号生成回路の縦続接続回路の終段から出力されるキャリー生成信号g(M2,M1)と、前段からのキャリー生成信号g(M1−1,M0)とに基づいてキャリー生成信号g(M2,M0)を生成する、縦続に接続された複数の回路を含む回路であるとする。
この場合、上記第1の加算ユニットは、kが最大でm(mは、1以上の整数を示す)までの第kのキャリー伝播信号生成回路および第kのキャリー生成信号生成回路を含み、上記第2の加算ユニットは、kが最大でn(nは、mより大きい整数を示す)までの第kのキャリー伝播信号生成回路および第kのキャリー生成信号生成回路を含んでも良い。
また、上記複数の加算ユニットは、上記入力タイミングが上位桁に向かうにつれて早くなる傾向を有するビット範囲の入力信号に対して、当該ビット範囲に供給される下位桁からのキャリー信号のそれぞれの仮定値に対応する各桁のキャリー信号の予測値を予め算出し、当該下位桁から供給されるキャリー信号と当該予測値とに基づいて各桁のキャリー信号を生成する第3の加算方式により加算を行う第3の加算ユニットを含んでも良い。
また、上記複数の加算ユニットは、上記入力タイミングが上位桁に向かうにつれて遅延する傾向を有するビット範囲の入力信号に対して、下位桁から上位桁に向かって順番にキャリー信号を算出する第4の加算方式により加算を行う第4の加算ユニットを含んでも良い。
上記の目的を達成する第2の発明は、2を超える複数の部分積を加算した結果として2つの信号を出力する第1の加算回路と、上記第1の加算回路から出力される2つの信号を加算する第2の加算回路とを有する乗算回路であり、上記第2の加算回路として、上記第1の加算回路から出力される2つの信号のそれぞれ異なるビット範囲を加算する複数の加算ユニットを有した、上記第1の発明の加算回路を有する。
上記第2の加算回路は、上記2つの信号の最下位桁から所定の中位桁までのビット範囲を加算する上記第1の加算ユニットと、上記2つの信号の上記中位桁から所定の上位桁までのビット範囲を加算する上記第2の加算ユニットと、上記2つの信号の上記上位桁から最上位桁までのビット範囲を加算する上記第3の加算ユニットとを含んでも良い。
また、上記第2の加算回路は、最下位桁の加算結果として上記2つの信号のうちの一方の最下位桁のビット信号を出力するとともに、当該最下位桁の上位桁の加算結果として当該上位桁のビット信号同士の排他的論理和を出力しても良い。
更には、上記第2の加算回路は、最上位桁の加算結果として下位桁から最上位桁へのキャリー信号の論理反転信号を出力しても良い。
この乗算回路は、乗算加算回路としても構成され得る。
本発明の加算回路によれば、回路規模と消費電力を低減しつつ高速に加算を行うことができる。
また、本発明の乗算回路又は乗算加算回路によれば、回路規模と消費電力を低減しつつ高速に乗算を行うことができる。
以下、本発明の5つの実施形態について、図面を参照して説明する。
<第1の実施形態>
図1は、本発明の第1の実施形態に係る乗算回路の構成の一例を示すブロック図である。
図1に例示する乗算回路は、部分積生成回路100と、第1の加算回路101と、第2の加算回路102とを有する。
第1の加算回路101は、本発明の第1の加算回路の一実施形態である。
第2の加算回路102は、本発明の第2の加算回路の一実施形態である。
部分積生成回路100は、乗数および被乗数の信号D1およびD2を入力し、2を超える複数の部分積p1〜pXを生成する。部分積生成回路100は、例えばブース(Booth)の符号化などの方法によりこれらの部分積を生成する。
第1の加算回路101は、部分積生成回路100より出力される複数の部分積p1〜pXを加算した結果として2つの信号AおよびBを出力する。第1の加算回路101は、例えば、ワレスの木のように全加算器をツリー状に接続した構成や、他の並列型乗算器における部分積の加算回路と同様な構成を有する。
第2の加算回路102は、第1の加算回路101より出力される信号AおよびBを加算し、加算結果Sを出力する。
被乗数をLビット、乗数をMビットとすると、部分積生成回路100はM個の部分積を生成する。第1の加算回路101は、このM個の部分積が最終的に2つの信号AおよびBになるまで加算を行う。例えばワレスの木による加算を行う場合、キャリー信号の伝播が完全には行われないため、第1の加算回路101の出力が最も遅れる桁は上位桁でなく加算段数の多い中央部の桁(図16参照)である。こうした特徴はワレスの木による加算に限らず、全加算器などを用いる他の並列型乗算器における部分積の加算回路においても同様である。
図2は、40ビットの信号出力を有するワレスの木の出力遅延の一例を図解した図である。横軸は第0桁〜第39桁までの各桁を番号で表しており、縦軸は出力信号の遅延時間を表している。図に示すように、下位側のビット範囲では上位桁に向かうほど遅延が大きくなり、中央部のビット範囲では遅延が最も大きい状態でほぼ一定となり、上位側のビット範囲では上位桁に向かうほど遅延が小さくなる傾向を有している。
第2の加算回路102は、こうした前段回路の出力信号の遅延傾向に合わせて、下位,中位,上位の各ビット範囲をそれぞれ異なる加算方式により加算する。
すなわち、ビット信号の入力タイミングが上位桁に向かうにつれて遅くなる傾向を有する下位ビット範囲の入力信号に対しては、加算値の算出タイミングが上位桁に向かうにつれて遅延する第1の加算方式により加算を行う。
ビット信号の入力タイミングが上位桁に向かうにつれて上記下位ビット範囲より緩やかに遅延するか若しくは早くなる傾向を有する中位ビット範囲の入力信号に対しては、上記加算値算出タイミングが上位桁に向かうにつれて上記第1の加算方式より緩やかに遅延する第2の加算方式により加算を行う。
また、ビット信号の入力タイミングが上位桁に向かうにつれて早くなる傾向を有する上位ビット範囲の入力信号に対しては、上記中位ビット範囲から供給されるキャリー信号が‘0’の場合と‘1’の場合のそれぞれに対応する各桁のキャリー信号,和信号の予測値を予め算出し、当該キャリー信号と当該予測値とに基づいて各桁のキャリー信号,和信号を生成する第3の加算方式により加算を行う。
次に、図3〜図10を参照して、第2の加算回路102の詳細な構成を説明する。
以下では、一例として、第1の加算回路101に入力される加算対象の入力信号AおよびB、ならび第1の加算回路101から出力される和信号Sをそれぞれ40ビットとする。
また、各信号を次の記号で表す。
入力信号A,入力信号B,和信号Sの第0桁〜第39桁のビット信号をそれぞれ‘a0’〜‘a39’,‘b0’〜‘b39’,‘s0’〜‘s39’とする。
第0桁〜第39桁で生じるキャリー信号をそれぞれ‘c0’〜‘c39’とする。
第0桁に供給されるキャリー信号を‘CIN’とする。
第j桁(ここで、jは0から39までの整数を示す)のビット信号ajおよびbjの排他的論理和に相当する第j桁のキャリー伝播信号を‘pj’とする。
第j桁(同様に、jは0から39までの整数を示す)のビット信号ajおよびbjの論理積に相当する第j桁のキャリー生成信号を‘gj’とする。
更に、次の信号を定義する
キャリー伝播信号pi_Kは、第K桁(Kは正の整数を示す)へのキャリー信号c(K−1)に応じて第i桁(iは、i>Kを満たす整数を示す)で生じるキャリー信号ciが変化するか否かを示す信号である。
キャリー生成信号gi_Kは、第K桁へのキャリー信号c(K−1)に依存せずに第i桁で生じるキャリー信号ciが‘1’になるか否かを示す信号である。
キャリー伝播信号pi_Kおよびキャリー生成信号gi_Kは、それぞれ次式で表される。
Figure 0003746285
なお、i=Kの場合、キャリー伝播信号pi_Kはキャリー伝播信号piと等しいものとし、キャリー生成信号gi_Kはキャリー生成信号giと等しいものとする。
式(1)から分かるように、キャリー伝播信号pi_Kが‘1’の場合、入力ビット信号(aK,bK),…,(ai,bi)は何れも一方が‘1’で他方が‘0’となる。そのため、キャリー信号c(K−1)が‘1’になるとキャリー信号ciが‘1’になり、キャリー信号c(K−1)が‘0’になるとキャリー信号ciが‘0’になる。すなわち、キャリー信号c(K−1)に応じてキャリー信号ciが変化する。一方、キャリー伝播信号pi_Kが‘0’の場合、両方が‘0’または両方が‘1’となる入力ビット信号(aj,bj)(ここで、jはKからiまでの整数を示す)が存在するため、キャリー信号c(K−1)の変化はこのビットを超えて第i桁に伝播しない。
また、式(2)から分かるように、キャリー生成信号gi_Kが‘1’の場合、第K桁から第i桁の間には、入力ビット信号(aj,bj)が両方‘1’となる桁が少なくとも1つ存在し、この桁より第i桁までの各桁のビット信号は少なくとも一方が‘1’になる。したがって、この場合、キャリー信号c(K−1)がどのような値でもキャリー信号ciが‘1’になる。一方、キャリー生成信号gi_Kが‘0’の場合は、キャリー信号c(K−1)がどのような値でもキャリー信号ciが‘0’になるか、あるいはキャリー信号c(K−1)に応じてキャリー信号ciが変化する(すなわちpi_K=‘1’)。
図3は、第2の加算回路102の構成の一例を示すブロック図である。
第2の加算回路102は、例えば図3に示すように、第0桁から第15桁までの下位ビット範囲の加算を行う1レベルのキャリー・インクリメント・アダー1と、第16桁から第30桁までの中位ビット範囲の加算を行う2レベルのキャリー・インクリメント・アダー2と、第31桁から第39桁までの上位ビット範囲の加算を行うキャリー・セレクト・アダー3とを有する。以降、キャリー・インクリメント・アダーをCIA、キャリー・セレクト・アダーをCSAと略記する
CIA1は、本発明の第1の加算ユニットの一実施形態である。
CIA2は、本発明の第2の加算ユニットの一実施形態である。
CSA3は、本発明の第3の加算ユニットの一実施形態である。
図4は、CIA1の構成の一例を示すブロック図である。
CIA1は、例えば図4に示すように、AND回路10_1,…,10_15の縦続接続回路と、AND−OR複合回路12_1,…,12_15の縦続接続回路と、キャリー信号c0,…,c15を出力するAND−OR複合回路11_0,…,11_15と、和信号s0,…,s15を出力する排他的OR回路13_0,…,13_15と、キャリー生成信号g0,…,g15を出力するAND回路14_0,…,14_15と、キャリー伝播信号p0,…,p15を出力する排他的OR回路15_0,…,15_15とを有する。
AND回路10_1,…,10_15の縦続接続回路は、本発明の第1のキャリー伝播信号生成回路の一実施形態である。
AND−OR複合回路12_1,…,12_15の縦続接続回路は、本発明の第1のキャリー生成信号生成回路の一実施形態である。
AND−OR複合回路11_0,…,11_15は、本発明のキャリー信号生成回路の一実施形態である。
この図4を参照して、CIA1の各構成要素の接続関係を説明する。
AND回路10_1は、キャリー伝播信号p0およびp1の論理積を演算し、その演算結果をキャリー伝播信号p1_0として出力する。
AND回路10_j(ここで、jは2から15までの整数を示す)は、前段のAND回路10_(j−1)より出力されるキャリー伝播信号p(j−1)_0とキャリー伝播信号pjとの論理積を演算し、その演算結果をキャリー伝播信号pj_0として出力する。
AND−OR複合回路12_1は、キャリー生成信号g0とキャリー伝播信号p1との論理積とキャリー生成信号g1との論理和を演算し、その演算結果をキャリー生成信号g1_0として出力する。
AND−OR複合回路12_j(ここで、jは2から15までの整数を示す)は、前段のAND−OR複合回路12_(j−1)より出力されるキャリー生成信号g(j−1)_0とキャリー伝播信号pjとの論理積とキャリー生成信号gjとの論理和を演算し、その演算結果をキャリー生成信号gj_0として出力する。
AND−OR複合回路11_0は、キャリー信号CINとキャリー伝播信号p0との論理積とキャリー生成信号g0との論理和を演算し、その演算結果をキャリー信号c0として出力する。
AND−OR複合回路11_j(ここで、jは1から15までの整数を示す)は、キャリー信号CINとキャリー伝播信号pj_0との論理積とキャリー生成信号gj_0との論理和を演算し、その演算結果をキャリー信号cjとして出力する。
排他的OR回路13_0は、キャリー信号CINとキャリー伝播信号p0との排他的論理和を演算し、その演算結果を和信号s0として出力する。
排他的OR回路13_j(ここで、jは1から15までの整数を示す)は、キャリー信号c(j−1)とキャリー伝播信号pjとの排他的論理和を演算し、その演算結果を和信号sjとして出力する。
AND回路14_j(ここで、jは0から15までの整数を示す)は、入力ビット信号ajおよびbjの論理積を演算し、その演算結果をキャリー生成信号gjとして出力する。
排他的OR回路15_j(ここで、jは0から15までの整数を示す)は、入力ビット信号ajおよびbjの排他的論理和を演算し、その演算結果をキャリー伝播信号pjとして出力する。
以上が、CIA1の各構成要素の説明である。
図5および図6は、CIA2の構成の一例を示すブロック図である。
CIA2は、例えば図5および図6に示すように、AND−OR複合回路20_0,…,20_3の縦続接続回路と、AND−OR複合回路20_0に接続されるAND−OR複合回路21_0と、AND−OR複合回路20_1に接続されるAND−OR複合回路21_1と、AND−OR複合回路20_2に接続されるAND−OR複合回路21_2,…,21_4の縦続接続回路と、AND−OR複合回路20_3に接続されるAND−OR複合回路21_5,…,21_9の縦続接続回路と、AND回路22_0,…,22_3の縦続接続回路と、AND回路22_0に接続されるAND回路23_0と、AND回路22_1に接続されるAND回路23_1と、AND回路22_2に接続されるAND回路23_2,…,23_4の縦続接続回路と、AND回路22_3に接続されるAND回路23_5,…,23_9の縦続接続回路と、キャリー信号c16,…,c30を出力するAND−OR複合回路24_0,…,24_14と、和信号s16,…,s30を出力する排他的OR回路25_0,…,25_14と、キャリー生成信号g16,…,g30を出力するAND回路26_0,…,26_14と、キャリー伝播信号p16,…,p30を出力する排他的OR回路27_0,…,27_14とを有する。
AND−OR複合回路20_0,…,20_3の縦続接続回路は、本発明の第2のキャリー生成信号生成回路の一実施形態である。
AND−OR複合回路21_0、AND−OR複合回路21_1、AND−OR複合回路21_2,…,21_4の縦続接続回路、およびAND−OR複合回路21_5,…,21_9の縦続接続回路は、本発明の第1のキャリー生成信号生成回路の一実施形態である。
AND回路22_0,…,22_3の縦続接続回路は、本発明の第2のキャリー伝播信号生成回路の一実施形態である。
AND回路23_0、AND回路23_1、AND回路23_2,…,23_4の縦続接続回路、およびAND回路23_5,…,23_9の縦続接続回路は、本発明の第1のキャリー伝播信号生成回路の一実施形態である。
AND−OR複合回路24_0,…,24_14は、本発明のキャリー信号生成回路の一実施形態である。
また図7は、CIA2において局所的なキャリー伝播信号およびキャリー生成信号の生成に関わる部分の接続関係を示すブロック図であり、図8は、CIA2においてキャリー信号の生成に関わる部分の接続関係を示すブロック図である。
ただし、図5〜図8の同一符号は同一の構成要素を示す。
この図5〜図8を参照して、CIA2の各構成要素の接続関係を説明する。
AND回路23_0は、キャリー伝播信号p17およびp18の論理積を演算し、その演算結果をキャリー伝播信号p18_17として出力する。
AND回路22_0は、キャリー伝播信号p16とキャリー伝播信号p18_17との論理積を演算し、その演算結果をキャリー伝播信号p18_16として出力する。
AND回路23_1は、キャリー伝播信号p19およびp20の論理積を演算し、その演算結果をキャリー伝播信号p20_19として出力する。
AND回路22_1は、キャリー伝播信号p18_16とキャリー伝播信号p20_19との論理積を演算し、その演算結果をキャリー伝播信号p20_16として出力する。
AND回路23_2は、キャリー伝播信号p21およびp22の論理積を演算し、その演算結果をキャリー伝播信号p22_21として出力する。
AND回路23_j(ここで、jは3または4を示す)は、キャリー伝播信号p(20+j)とキャリー伝播信号p(19+j)_21との論理積を演算し、その演算結果をキャリー伝播信号p(20+j)_21として出力する。
AND回路22_2は、キャリー伝播信号p20_16とキャリー伝播信号p24_21との論理積を演算し、その演算結果をキャリー伝播信号p24_16として出力する。
AND回路23_5は、キャリー伝播信号p25およびp26の論理積を演算し、その演算結果をキャリー伝播信号p26_25として出力する。
AND回路23_j(ここで、jは6から9までの整数を示す)は、キャリー伝播信号p(21+j)とキャリー伝播信号p(20+j)_25との論理積を演算し、その演算結果をキャリー伝播信号p(21+j)_25として出力する。
AND回路22_3は、キャリー伝播信号p30_25とキャリー伝播信号p24_16との論理積を演算し、その演算結果をキャリー伝播信号p30_16として出力する。
AND−OR複合回路21_0は、キャリー伝播信号p18とキャリー生成信号g17との論理積とキャリー生成信号g18との論理和を演算し、その演算結果をキャリー生成信号g18_17として出力する。
AND−OR複合回路20_0は、キャリー伝播信号p18_17とキャリー生成信号g16との論理積とキャリー生成信号g18_17との論理和を演算し、その演算結果をキャリー生成信号g18_16として出力する。
AND−OR複合回路21_1は、キャリー伝播信号p20とキャリー生成信号g19との論理積とキャリー生成信号g20との論理和を演算し、その演算結果をキャリー生成信号g20_19として出力する。
AND−OR複合回路20_1は、キャリー伝播信号p20_19とキャリー生成信号g18_16との論理積とキャリー生成信号g20_19との論理和を演算し、その演算結果をキャリー生成信号g20_16として出力する。
AND−OR複合回路21_2は、キャリー伝播信号p22とキャリー生成信号g21との論理積とキャリー生成信号g22との論理和を演算し、その演算結果をキャリー生成信号g22_21として出力する。
AND−OR複合回路21_j(ここで、jは3または4を示す)は、キャリー伝播信号p(20+j)とキャリー生成信号g(19+j)_21との論理積とキャリー生成信号g(20+j)との論理和を演算し、その演算結果をキャリー生成信号g(20+j)_21として出力する。
AND−OR複合回路20_2は、キャリー伝播信号p24_21とキャリー生成信号g20_16との論理積とキャリー生成信号g24_21との論理和を演算し、その演算結果をキャリー生成信号g24_16として出力する。
AND−OR複合回路21_5は、キャリー伝播信号p26とキャリー生成信号g25との論理積とキャリー生成信号g26との論理和を演算し、その演算結果をキャリー生成信号g26_25として出力する。
AND−OR複合回路21_j(ここで、jは6から9までの整数を示す)は、キャリー伝播信号p(21+j)とキャリー生成信号g(20+j)_25との論理積とキャリー生成信号g(21+j)との論理和を演算し、その演算結果をキャリー生成信号g(21+j)_25として出力する。
AND−OR複合回路20_3は、キャリー伝播信号p30_25とキャリー生成信号g24_16との論理積とキャリー生成信号g30_25との論理和を演算し、その演算結果をキャリー生成信号g30_16として出力する。
AND−OR複合回路24_0は、キャリー伝播信号p16とキャリー信号C15との論理積とキャリー生成信号g16との論理和を演算し、その演算結果をキャリー信号c16として出力する。
AND−OR複合回路24_1は、キャリー伝播信号p17とキャリー信号C16との論理積とキャリー生成信号g17との論理和を演算し、その演算結果をキャリー信号c17として出力する。
AND−OR複合回路24_2は、キャリー伝播信号p18_16とキャリー信号C15との論理積とキャリー生成信号g18_16との論理和を演算し、その演算結果をキャリー信号c18として出力する。
AND−OR複合回路24_3は、キャリー伝播信号p19とキャリー信号C18との論理積とキャリー生成信号g19との論理和を演算し、その演算結果をキャリー信号c19として出力する。
AND−OR複合回路24_4は、キャリー伝播信号p20_16とキャリー信号C15との論理積とキャリー生成信号g20_16との論理和を演算し、その演算結果をキャリー信号c20として出力する。
AND−OR複合回路24_5は、キャリー伝播信号p21とキャリー信号C20との論理積とキャリー生成信号g21との論理和を演算し、その演算結果をキャリー信号c21として出力する。
AND−OR複合回路24_j(ここで、jは6または7の整数を示す)は、キャリー伝播信号p(16+j)_21とキャリー信号C20との論理積とキャリー生成信号g(16+j)_21との論理和を演算し、その演算結果をキャリー信号c(16+j)として出力する。
AND−OR複合回路24_8は、キャリー伝播信号p24_16とキャリー信号C15との論理積とキャリー生成信号g24_16との論理和を演算し、その演算結果をキャリー信号c24として出力する。
AND−OR複合回路24_9は、キャリー伝播信号p25とキャリー信号C24との論理積とキャリー生成信号g25との論理和を演算し、その演算結果をキャリー信号c25として出力する。
AND−OR複合回路24_j(ここで、jは10から13までの整数を示す)は、キャリー伝播信号p(16+j)_25とキャリー信号C24との論理積とキャリー生成信号g(16+j)_25との論理和を演算し、その演算結果をキャリー信号c(16+j)として出力する。
AND−OR複合回路24_14は、キャリー伝播信号p30_16とキャリー信号C15との論理積とキャリー生成信号g30_16との論理和を演算し、その演算結果をキャリー信号c30として出力する。
排他的OR回路25_j(ここで、jは0から14までの整数を示す)は、キャリー信号c(15+j)とキャリー伝播信号p(16+j)との排他的論理和を演算し、その演算結果を和信号s(16+j)として出力する。
AND回路26_j(ここで、jは0から14までの整数を示す)は、入力ビット信号a(16+j)およびb(16+j)の論理積を演算し、その演算結果をキャリー生成信号g(16+j)として出力する。
排他的OR回路27_j(ここで、jは0から14までの整数を示す)は、入力ビット信号a(16+j)およびb(16+j)の排他的論理和を演算し、その演算結果をキャリー伝播信号p(16+j)として出力する。
以上が、CIA2の各構成要素の説明である。
図9は、CSA3の構成の一例を示すブロック図である。
CSA3は、例えば図9に示すように、全加算器30_0,…,30_8および31_0,…,31_8と、セレクタ32_0,…,32_8を有する。
この図9を参照して、CSA3の各構成要素の接続関係を説明する。
全加算器30_0は、第31桁のビット信号(a31,b31)を入力し、キャリー信号c30が‘0’と仮定した場合における第31桁の和信号s31_0およびキャリー信号c31_0を算出する。
全加算器30_j(ここで、jは1から8までの整数を示す)は、第(31+j)桁のビット信号a(31+j)およびb(31+j)を入力するとともに、前段の全加算器30_(j−1)で算出されたキャリー信号c(30+j)_0を入力し、これに応じた第(31+j)桁の和信号s(31+j)_0およびキャリー信号c(31+j)_0を算出する。
全加算器31_0は、第31桁のビット信号(a31,b31)を入力し、キャリー信号c30が‘1’と仮定した場合における第31桁の和信号s31_1およびキャリー信号c31_1を算出する。
全加算器31_j(ここで、jは1から8までの整数を示す)は、第(31+j)桁のビット信号a(31+j)およびb(31+j)を入力するとともに、前段の全加算器31_(j−1)で算出されたキャリー信号c(30+j)_1を入力し、これに応じた第(31+j)桁の和信号s(31+j)_1およびキャリー信号c(31+j)_1を算出する。
図10は、全加算器30_1,…,30_8および31_1,…,31_8の構成の一例を示すブロック図である。
これらの全加算器は、例えば図10に示すように、入力ビット信号a,bの論理積を演算するAND回路35と、入力ビット信号a,bの排他的論理和を演算する排他的OR回路36と、前桁からのキャリー信号cinと排他的OR回路36より出力されるキャリー伝播信号pとの排他的論理和を演算する排他的OR回路33と、当該キャリー信号cinと当該キャリー伝播信号pとの論理積とAND回路35より出力されるキャリー生成信号gとの論理和を演算するAND−OR複合回路34とを有する。排他的OR回路33の演算結果が和信号sとなり、AND−OR複合回路34の演算結果が次桁へのキャリー信号coutとなる。
なお、全加算器30_0および全加算器31_0についても図10と同様の回路で実現可能であるが、前桁からのキャリー信号cinが固定値と見なせるため、これよりも回路を簡略化することができる。
例えば全加算器30_0では、排他的OR回路33を削除し、キャリー伝播信号pを和信号sとして出力しても良い。また、AND−OR複合回路34を削除し、キャリー生成信号gをキャリー信号coutとして出力しても良い。
全加算器31_1では、排他的OR回路33をNOT回路に置き換えて、信号pの論理反転信号を和信号sとして出力しても良い。また、AND−OR複合回路34をOR回路に置き換えて、キャリー伝播信号pおよびキャリー生成信号gの論理和をキャリー信号coutとして出力しても良い。
セレクタ32_j(ここで、jは0から8までの整数を示す)は、和信号s(31+j)_0および和信号s(31+j)_1を入力し、キャリー信号c30が‘0’の場合に和信号s(31+j)_0、キャリー信号c30が‘1’の場合に和信号s(31+j)_1を選択して出力する。セレクタ32_jの出力信号が、第(31+j)桁の和信号s(31+j)となる。
以上が、CSA3の各構成要素の説明である。
次に、上述した構成を有する本実施形態に係る乗算回路の動作を説明する。
被乗数および乗数の信号D1およびD2が与えられると、部分積生成回路100は、図16に示すような複数個の部分積p1〜pXを生成する。
第1の加算回路101は、この部分積p1〜pXを加算して、2つの信号AおよびBを生成する。この際、信号AおよびBの各ビット信号は全ビット同時に生成されるのではなく、図2に示すようにビットごとに異なる遅延時間を経て生成され、第2の加算回路102に入力される。すなわち、第2の加算回路102への入力タイミングは、下位のビット範囲において上位桁に向かうほど遅くなり、中位のビット範囲においてはほぼ一定となり、上位のビット範囲では上位桁に向かうほど早くなる。
下位のビット範囲(第0桁〜第15桁)では、図4に示す1レベルのCIA1によって加算が行われる。
1レベルのCIA1では、AND回路10_1〜10_15の縦続接続回路において下位桁から順番にキャリー伝播信号p1_0〜p15_0が生成されるとともに、AND−OR複合回路12_1〜12_15の縦続接続回路において下位桁から順番にキャリー生成信号g1_0〜g15_0が生成される。そして、このキャリー伝播信号p1_0〜p15_0およびキャリー生成信号g1_0〜g15_0ならびに第0桁へのキャリー信号CINに基づいて、下位桁から順番に各桁のキャリー信号c1〜c15が生成される。
したがって、第1の加算回路101からの信号の入力タイミングが上位桁に向かうほど遅くなる傾向と、各桁の加算値の算出タイミングが上位桁に向かうほど遅くなる傾向とが一致している。
中位のビット範囲(第16桁〜第30桁)では、図5および図6に示す2レベルのCIA2によって加算が行われる。
2レベルのCIA2は、図7に示すように、局所的なキャリー伝播信号およびキャリー生成信号の生成回路をそれぞれ2重に持っている。
すなわち、局所的キャリー伝播信号は、第1のキャリー伝播信号生成回路(AND回路23_0、AND回路23_1、AND回路23_2〜23_4の縦続接続回路、AND回路23_5〜23_9の縦続接続回路)と、第2のキャリー伝播信号生成回路(AND回路22_0〜22_3の縦続接続回路)とにおいて2段階に分けて生成される。
局所的キャリー生成信号は、第1のキャリー生成信号生成回路(AND−OR複合回路21_0、AND−OR複合回路21_1、AND−OR複合回路21_2〜21_4の縦続接続回路、AND−OR複合回路21_5〜21_9の縦続接続回路)と、第2のキャリー生成信号生成回路(AND−OR複合回路20_0〜20_3の縦続接続回路)とにおいて2段階に分けて生成される。
第1段階の回路(第1のキャリー伝播信号生成回路、第1のキャリー生成信号生成回路)は、各桁のビット信号に基づいて局所的なキャリー伝播信号,キャリー生成信号を直接生成する。
例えば、AND回路23_5〜23_9の縦続接続回路は、第25桁〜第30桁のキャリー伝播信号p25〜p30に基づいてキャリー生成信号g26_25〜g30_25を直接生成する。
第2段階の回路(第2のキャリー伝播信号生成回路、第2のキャリー生成信号生成回路)は、第1段階の回路の終段から出力される信号を用いて、局所的なキャリー伝播信号,キャリー生成信号を生成する。
例えば、AND回路22_3は、AND回路23_5〜23_9の縦続接続回路の終段から出力されるキャリー伝播信号p30_25と、前段のAND回路22_2から出力されるキャリー伝播信号p24_16とに基づいて、キャリー伝播信号p30_16を生成する。
1段のみの回路も縦続接続回路と見なせば、AND回路22_0,22_1、AND−OR複合回路20_0,20_1についても同様な議論が成り立つ。
このように、2レベルのCIA2は、第1段階の回路を複数有しており、この第1段階の回路から第2段階の回路へ局所的なキャリー伝播信号,キャリー生成信号が供給される構造を持つ。そのため、複数の第1段階の回路においては、局所的なキャリー伝播信号,キャリー生成信号の生成がそれぞれ並列に実行される。すなわち、キャリー生成信号g18_17,g20_19,g24_21,g30_25の生成動作がそれぞれ並列に実行されるとともに、キャリー伝播信号p18_17,p20_19,p24_21,p30_25の生成動作がそれぞれ並列に実行される。
したがって、全ての局所的なキャリー伝播信号,キャリー生成信号が下位桁から順番に生成される1レベルのCIAに比べて、上位側のキャリー信号の生成が高速化される。言い換えると、各桁の加算値の算出タイミングは上位桁に向かうにつれて遅延するものの、その遅延の傾向は1レベルのCIAに比べて緩やかである。
つまり、中位のビット範囲においては、下位のビット範囲と比較して、上位側における加算値算出タイミングの遅延が小さくなる。
また、上位のビット範囲(第31桁〜第39桁)では、図9に示すCSA3によって加算が行われる。
CSA3では、キャリー信号c30が‘0’の場合と‘1’の場合における第31桁〜第39桁のキャリー信号および和信号の予測値が予め算出される。そして、キャリー信号c30がCSA3へ到着すると、この予め算出された和信号の一方がセレクタにより選択され、加算結果として出力される。そのため、キャリー信号c30の到着より早く予測値が算出されるものとすると、キャリー信号c30が到着してから各桁のキャリー信号,和信号が生成されるまでの遅延ははほぼ等しくなる。
つまり、上位のビット範囲においては、下位,中位のビット範囲と比較して、上位側における加算値算出タイミングの遅延がより一層小さくなる。
以上説明したように、本実施形態に係る第2の加算回路102よれば、ビット信号の入力タイミングが上位桁ほど遅くなる下位のビット範囲においては、下位側に対する上位側の加算値算出タイミングを多少遅らせても実質的な加算値の出力タイミングが変わらないため、上位側へのキャリーの伝播が比較的低速な1レベルのCIAを使って加算が行われる。ビット信号の入力タイミングがほぼ一定になるか、上位側で若干早くなる中位のビット範囲においては、下位のビット範囲と比較して上位側の加算値算出タイミングを早める必要があるため、1レベルのCIAよりもキャリーの伝播が高速な2レベルのCIAを使って加算が行われる。また、ビット信号の入力タイミングが上位桁に向かうほど早くなる上位のビット範囲においては、下位,中位のビット範囲よりも上位側の加算値算出タイミングを早める必要があるため、1レベル,2レベルのCIAよりも上位側の加算値を更に高速に生成できるCSAを用いて加算が行われる。
このように、各ビット範囲におけるビット信号の入力タイミングの遅延傾向に合わせて、それぞれ異なる加算方式により加算が行われるため、回路規模と消費電力を低減しつつ高速に加算を行うことができる。例えば、上位のビット範囲へのキャリー信号c30を高速化するために桁上げ先見回路を設ける回路方式に比べて、回路規模を大幅に減少させることができるとともに、下位のビット範囲に1レベルCIA、中位のビット範囲に2レベルCIAを用いることで、桁上げ先見回路を設けた場合と比較しても遜色のないスピードを実現することが可能になる。
<第2の実施形態>
次に、第2の実施形態について述べる。
上述した第1の実施形態では下位,中位のビット範囲の加算に1レベル,2レベルのCIAを用いる例が示されているが、第2の実施形態では、これらに他のレベルのCIAを用いる例が示される。
図11は、本発明の第2の実施形態に係る第2の加算回路102Aの構成の一例を示すブロック図である。
第2の加算回路102Aは、図1に示す乗算回路における第2の加算回路102と置き換えられる40ビットの加算回路であり、例えば図11に示すように、下位ビット範囲(第0桁〜第15桁)の加算を行うCIA4と、中位ビット範囲(第16桁〜第30桁)の加算を行うCIA5と、上位ビット範囲(第31桁〜第39桁)の加算を行うCSA3とを有する。
CSA3は、図9を参照して既に述べたものと同様であるので、ここではCIA4およびCIA5について説明する。
まず、第kのキャリー伝播信号生成回路および第kのキャリー生成信号生成回路(ここで、kは2以上の整数を示す)を次のように定義する。
第kのキャリー伝播信号生成回路は、第(k−1)のキャリー伝播信号生成回路の縦続接続回路の終段から出力されるキャリー伝播信号pM2_M1(ここで、M2,M1は、M2>M1を満たす正の整数を示す)と、前段からのキャリー伝播信号p(M1−1)_M0(ここで、M0は、M1>M0を満たす正の整数を示す)とに基づいてキャリー伝播信号p(M2,M0)を生成する、縦続に接続された複数の回路を含む回路である。
第kのキャリー生成信号生成回路は、第(k−1)のキャリー生成信号生成回路の縦続接続回路の終段から出力されるキャリー生成信号gM2_M1と、前段からのキャリー生成信号g(M1−1)_M0と、第(k−1)のキャリー伝播信号生成回路の縦続接続回路の終段から出力されるキャリー伝播信号pM2_M1とに基づいてキャリー生成信号gM2_M0を生成する、縦続に接続された複数の回路を含む回路である。
したがって、第k段階の回路(第kのキャリー伝播信号生成回路、第kのキャリー生成信号生成回路)は、その下位段階(第(k−1)段階)の回路の終段から出力される信号を用いて、局所的なキャリー伝播信号,キャリー生成信号を生成する。
mレベル(mは、1以上の整数を示す)のCIAは、上述した定義を用いて、次のように定義する。
kが最大でm(mは、1以上の整数を示す)までの第kのキャリー伝播信号生成回路および第kのキャリー生成信号生成回路を含む回路を、mレベルのCIAとする。
このような定義を使って述べると、下位,中位ビット範囲のCIA4,CIA5は、互いにレベルが異なるCIAであるとともに、CIA5はCIA4より高レベルのCIAである。
上述した定義によると、CIAは、レベルが高くなるほど並列して生成される局所的なキャリー生成信号,キャリー伝播信号の数が増えるため、下位から上位へのキャリー伝播が高速になる。そのため、本実施形態においても、第1の実施形態と同様に、下位のビット範囲に比較して中位のビット範囲のキャリー伝播が高速になり、上位側の加算値算出タイミングの遅延が小さくなる。したがって、第1の実施形態と同様に、ビット信号の入力タイミングの遅延傾向に合った加算方式で各ビット範囲の加算を行うことができる。
なお、下位,中位ビット範囲におけるビット信号の入力タイミングの遅延傾向が上述と逆の傾向を有する場合は、上述とは逆に、CIA4をCIA5より高レベルのCIAにしても良い。
<第3の実施形態>
次に、第3の実施形態について述べる。
図12は、本発明の第3の実施形態に係る第2の加算回路102Bの構成の一例を示すブロック図である。
第2の加算回路102Bも、図1に示す乗算回路における第2の加算回路102と置き換えられる40ビットの加算回路であり、例えば図12に示すように、下位ビット範囲(第0桁〜第15桁)の加算を行うリプル・キャリー・アダー6と、中位ビット範囲(第16桁〜第30桁)の加算を行うCIA7と、上位ビット範囲(第31桁〜第39桁)の加算を行うCSA3とを有する。以降、リプル・キャリー・アダーをRCAと略記する。
RCA6は、本発明の第4の加算ユニットの一実施形態である。
RCA6は、第0桁から第15桁に向かって順番にキャリー信号を算出し、当該算出したキャリー信号を用いて和信号を算出する。例えば図13Aに示すように、第0桁,…,第15桁にそれぞれ対応する全加算器60_0,…,60_15を有する。
全加算器60_0は、第0桁のビット信号(a0,b0)およびキャリー信号CINを入力し、これに基づいて第0桁の和信号s0およびキャリー信号c0を算出する。
全加算器60_j(ここで、jは1から15までの整数を示す)は、第j桁のビット信号(aj,bj)を入力するとともに、前段の全加算器60_(j−1)で算出されたキャリー信号c(j−1)を入力し、これに基づいて第j桁の和信号sjおよびキャリー信号cjを算出する。
全加算器60_0,…,60_1の内部構成(図13B)は、図10に示す回路と同様である。
CIA7は、任意のレベルのCIAであり、下位桁から順番にキャリー信号を生成するRCAに比べてキャリーの伝播速度が速い。
本実施形態においても、第1の実施形態と同様に、下位のビット範囲に比較して中位のビット範囲のキャリー伝播が高速になり、上位側の加算値算出タイミングの遅延が小さくなる。したがって、第1の実施形態と同様に、ビット信号の入力タイミングの遅延傾向に合った加算方式で各ビット範囲の加算を行うことができる。本実施形態は、特に、下位のビット範囲における下位側と上位側との間の加算値算出タイミングの遅延差が大きい場合に有効である。
<第4の実施形態>
次に、第4の実施形態について述べる。
図14は、本発明の第4の実施形態に係る第2の加算回路102Cの構成の一例を示すブロック図である。
第2の加算回路102Cも、図1に示す乗算回路における第2の加算回路102と置き換えられる40ビットの加算回路であり、例えば図14に示すように、下位ビット範囲(第0桁〜第15桁)の加算を行うCIA8と、中位ビット範囲(第16桁〜第30桁)の加算を行うRCA9と、上位ビット範囲(第31桁〜第39桁)の加算を行うCSA3とを有する。
本実施形態においては、CIA8によって加算を行う下位のビット範囲と比較して、RCA9によって加算を行う中位のビット範囲のキャリー伝播が低速になり、上位側の加算値算出タイミングの遅延が大きくなる。
したがって、本実施形態は、下位のビット範囲より中位のビット範囲の方が、上位側の入力タイミングの遅延傾向が強い場合に適している。例えば、下位のビット範囲においてビット信号の入力タイミングが一定しているか、上位桁に向かうほど入力タイミングが早くなる傾向があり、中位のビット範囲において上位桁に向かうほどビット信号の遅延が急増する傾向がある場合に適している。
<第5の実施形態>
次に、第5の実施形態について述べる。
図15は、本発明の第5の実施形態に係る第2の加算回路102Dの構成の一例を示すブロック図である。
第2の加算回路102Dも、図1に示す乗算回路における第2の加算回路102と置き換えられる40ビットの加算回路であり、例えば図15に示すように、下位ビット範囲(第0桁〜第15桁)の加算を行う加算ユニット10と、上位ビット範囲(第16桁〜第39桁)の加算を行う加算ユニット11とを有する。
加算ユニット10および11は、任意レベルのCIAまたはRCAの何れかの構成を有する。ただし、両者は異なる加算方式を有する。
本実施形態においては、第1〜第4の実施形態において設けられていた上位ビット範囲のCSAが省略されており、その代わりに、CIAまたはRCAの加算ユニットが設けられている。そのため、上位のビット範囲における加算値の算出タイミングは第1〜第4の実施形態と比べて遅延する。したがって、本実施形態は、上位のビット範囲において、上位側の入力タイミングが早くなる傾向が比較的緩やかであり、CSAほど高速に加算値を算出する必要がない場合に適している。
なお、本発明は上述した実施形態に限定されず、種々の改変が可能である。
通常、乗算回路の最終段において加算される2つの信号の最下位桁に入力されるキャリー信号CINは‘0’であるため、このことを利用して、下位ビット範囲における回路を簡略化することが可能である。例えば図4に示すCIA1では、AND−OR複合回路11_1〜11_15を省略し、キャリー生成信号g1_0〜g15_0をそれぞれキャリー信号c1〜c15として出力しても良い。
また、乗算回路の最終段において加算される最下位桁のビット信号a0,b0のうちの一方は通常存在しない、すなわち‘0’であるため、このことを利用して、最下位桁についても回路の簡略化が可能である。
例えばb0が‘0’の場合、最下位桁の和信号s0としてビット信号a0をそのまま出力しても良い。また、この場合、最下位桁のキャリー信号c0が‘0’になることから、第1桁の和信号s1としてキャリー伝播信号p1、すなわち第1桁のビット信号a1およびb1の排他的論理和をそのまま出力しても良い。このような簡略化により、例えば図4に示すCIA1では、AND−OR複合回路11_0、排他的OR回路13_0および13_1、AND回路14_0、ならびに排他的OR回路15_0を省略することが可能である。
また、乗算回路の最終段における最上位桁の加算では、符号拡張処理のために、通常、2つのビット信号の一方を論理反転して元の信号に加算し、これを和信号として出力する。したがって、このことを利用すれば、最上位桁についても回路の簡略化が可能である。
例えば図9に示すCSA3における最上位桁の全加算器30_8および31_8では、キャリー伝播信号pが‘1’になる。このため、これらの全加算器では、図10に示す排他的OR回路33をNOT回路に置換し、下位桁からのキャリー信号cinの論理反転信号を和信号sとして出力する構成としても良い。
上述した実施形態における各信号の桁数や、ビット範囲のとり方は一例であり、これに限定されず任意に設定可能である。また、上述した実施形態において挙げた回路構成も説明上の一例であり、同等な機能を有する別の構成へ任意に改変可能である。
図3、図4においては、キャリー・インクリメント・アダー1として、1つの1レベルCIAを例示したが、これを複数個の1レベルCIAで構成することもできる。例えば、1ビット入力の1レベルCIA、1ビット入力の1レベルCIA、2ビット入力の1レベルCIA、4ビット入力の1レベルCIA、8ビット入力の1レベルCIAを縦続接続してキャリー・インクリメント・アダー1を構成し、16ビットの演算を行なえばよい。このように、1レベルCIAについては、複数個の1レベルCIAで実現してもよい。
本発明の第1の実施形態に係る乗算回路の構成の一例を示すブロック図である。 40ビットの信号出力を有するワレスの木の出力遅延の一例を図解した図である。 本発明の第1の実施形態に係る第2の加算回路の構成の一例を示すブロック図である。 図3に示す第2の加算回路における、1レベルのキャリー・インクリメント・アダーの構成の一例を示すブロック図である。 図3に示す第2の加算回路における、2レベルのキャリー・インクリメント・アダーの構成の一例を示す第1のブロック図である。 図3に示す第2の加算回路における、2レベルのキャリー・インクリメント・アダーの構成の一例を示す第2のブロック図である。 図6に示すキャリー・インクリメント・アダーにおいて、局所的なキャリー伝播信号およびキャリー生成信号の生成に関わる部分の接続関係を示すブロック図である。 図6に示すキャリー・インクリメント・アダーにおいて、キャリー信号の生成に関わる部分の接続関係を示すブロック図である。 図3に示す第2の加算回路における、キャリー・セレクト・アダーの構成の一例を示すブロック図である。 全加算器の構成の一例を示すブロック図である。 本発明の第2の実施形態に係る第2の加算回路の構成の一例を示すブロック図である。 本発明の第3の実施形態に係る第2の加算回路の構成の一例を示すブロック図である。 図12に示す第2の加算回路におけるリプル・キャリー・アダーの構成の一例を示すブロック図である。 本発明の第4の実施形態に係る第2の加算回路102の構成の一例を示すブロック図である。 本発明の第5の実施形態に係る第2の加算回路102の構成の一例を示すブロック図である。 一般的な乗算の過程を説明するための図である。 4桁のキャリー・ルックアヘッド・アダーの構成例を示すブロック図である。 全ビットの和出力をキャリー・セレクト・アダーによって算出するとともに、上位桁のキャリー信号を桁上げ先見回路によって生成する加算回路である。 従来の加算回路の性能を速度、消費電力、回路面積の点で比較した図である。
符号の説明
1,2,4,5,7,8…キャリー・インクリメント・アダー(CIA)、3…キャリー・セレクト・アダー(CSA)、6,9…リプル・キャリー・アダー(RCA)、10,11…加算ユニット、10_1〜10_15,14_0〜14_15,22_0〜22_3,23_0〜23_9,26_0〜26_14,35…AND回路、11_0〜11_15,12_1〜12_15,20_0〜20_3,21_0〜21_9,24_0〜24_14,34…AND−OR複合回路、13_0〜13_15,15_0〜15_15,25_0〜25_14,27_0〜27_14,33,36…排他的OR回路、30_0〜30_8,31_0〜31_8,60_0〜60_15…全加算器、32_0〜32_8…セレクタ、100…部分積生成回路、101…第1の加算回路、102…第2の加算回路

Claims (13)

  1. 入力される加算対象の信号のそれぞれ異なるビット範囲を加算する複数の加算ユニットを有し、
    上記複数の加算ユニットの少なくとも2つは、その加算を行うビット範囲において加算対象のビット信号の入力タイミングが上位桁に向かうにつれて変化する当該変化の傾向にそれぞれ適合した加算方式であって、各桁の加算値の算出タイミングが上位桁に向かうにつれて変化する傾向に違いを有する異なる加算方式により加算を行う、
    加算回路。
  2. 上記複数の加算ユニットは、
    ビット信号の入力タイミングが上位桁に向かうにつれて遅延する傾向を有する第1のビット範囲の入力信号に対して、上記加算値算出タイミングが上位桁に向かうにつれて遅延する第1の加算方式により加算を行う第1の加算ユニットと、
    上記入力タイミングが上位桁に向かうにつれて上記第1のビット範囲より緩やかに遅延するか若しくは早くなる傾向を有する第2のビット範囲の入力信号に対して、上記加算値算出タイミングが上位桁に向かうにつれて上記第1の加算方式より緩やかに遅延する第2の加算方式により加算を行う第2の加算ユニットと、を含む、
    請求項1に記載の加算回路。
  3. 上記第1の加算ユニットおよび上記第2の加算ユニットは、
    第K桁(Kは正の整数を示す)へのキャリー信号に応じて第i桁(iは、i>Kを満たす整数を示す)で生じるキャリー信号が変化するか否かを示すキャリー伝播信号p(i,K)を前段からのキャリー伝播信号p(i−1,K)に基づいて生成する、縦続に接続された複数の回路を含む第1のキャリー伝播信号生成回路と、
    第K桁へのキャリー信号に依存せずに第i桁で生じるキャリー信号が所定のビット値になるか否かを示すキャリー生成信号g(i,K)を前段からのキャリー生成信号g(i−1,K)に基づいて生成する、縦続に接続された複数の回路を含む第1のキャリー生成信号生成回路と、
    上記第1のキャリー伝播信号生成回路より出力されるキャリー伝播信号p(i,K)と、上記第1のキャリー生成信号生成回路より出力されるキャリー生成信号g(i,K)と、第K桁へのキャリー信号にとに基づいて、第i桁で生じるキャリー信号を生成するキャリー信号生成回路と、を含む、
    請求項2に記載の加算回路。
  4. 第kのキャリー伝播信号生成回路(kは、2以上の整数を示す)は、第(k−1)のキャリー伝播信号生成回路の縦続接続回路の終段から出力されるキャリー伝播信号p(M2,M1)(M2,M1は、M2>M1を満たす正の整数を示す)と、前段からのキャリー伝播信号p(M1−1,M0)(M0は、M1>M0を満たす正の整数を示す)とに基づいてキャリー伝播信号p(M2,M0)を生成する、縦続に接続された複数の回路を含む回路であり、
    第kのキャリー生成信号生成回路は、第(k−1)のキャリー生成信号生成回路の縦続接続回路の終段から出力されるキャリー生成信号g(M2,M1)と、前段からのキャリー生成信号g(M1−1,M0)と、第(k−1)のキャリー伝播信号生成回路の縦続接続回路の終段から出力されるキャリー伝播信号p(M2,M1)とに基づいてキャリー生成信号g(M2,M0)を生成する、縦続に接続された複数の回路を含む回路であり、
    上記第1の加算ユニットは、
    kが最大でm(mは、1以上の整数を示す)までの第kのキャリー伝播信号生成回路および第kのキャリー生成信号生成回路を含み、
    上記第2の加算ユニットは、
    kが最大でn(nは、mより大きい整数を示す)までの第kのキャリー伝播信号生成回路および第kのキャリー生成信号生成回路を含む、
    請求項3に記載の加算回路。
  5. 上記複数の加算ユニットは、上記入力タイミングが上位桁に向かうにつれて早くなる傾向を有するビット範囲の入力信号に対して、当該ビット範囲に供給される下位桁からのキャリー信号のそれぞれの仮定値に対応する各桁のキャリー信号の予測値を予め算出し、当該下位桁から供給されるキャリー信号と当該予測値とに基づいて各桁のキャリー信号を生成する第3の加算方式により加算を行う第3の加算ユニットを含む、
    請求項1乃至4の何れか一に記載の加算回路。
  6. 上記複数の加算ユニットは、上記入力タイミングが上位桁に向かうにつれて遅延する傾向を有するビット範囲の入力信号に対して、下位桁から上位桁に向かって順番にキャリー信号を算出する第4の加算方式により加算を行う第4の加算ユニットを含む、
    請求項1乃至5の何れか一に記載の加算回路。
  7. 2を超える複数の部分積を加算した結果として2つの信号を出力する第1の加算回路と、上記第1の加算回路から出力される2つの信号を加算する第2の加算回路とを有する乗算回路であって、
    上記第2の加算回路は、上記第1の加算回路から出力される2つの信号のそれぞれ異なるビット範囲を加算する複数の加算ユニットを有する、請求項1乃至6の何れか一に記載の加算回路である、
    乗算回路。
  8. 上記第2の加算回路は、
    上記2つの信号の最下位桁から所定の中位桁までのビット範囲を加算する請求項4に記載の第1の加算ユニットと、
    上記2つの信号の上記中位桁から所定の上位桁までのビット範囲を加算する請求項4に記載の第2の加算ユニットと、
    上記2つの信号の上記上位桁から最上位桁までのビット範囲を加算する請求項5に記載の第3の加算ユニットと、を含む、
    請求項7に記載の乗算回路。
  9. 上記第2の加算回路は、最下位桁の加算結果として上記2つの信号のうちの一方の最下位桁のビット信号を出力するとともに、当該最下位桁の上位桁の加算結果として当該上位桁のビット信号同士の排他的論理和を出力する、
    請求項7または8に記載の乗算回路。
  10. 上記第2の加算回路は、最上位桁の加算結果として下位桁から最上位桁へのキャリー信号の論理反転信号を出力する、
    請求項7乃至9の何れか一に記載の乗算回路。
  11. 上記第1の加算回路は、ツリー状に接続された複数の全加算器を含む、
    請求項7乃至10の何れか一に記載の乗算回路。
  12. 2を超える複数の部分積を加算した結果として2つの信号を出力する第1の加算回路と、上記第1の加算回路から出力される2つの信号を加算する第2の加算回路とを有する乗算加算回路であって、
    上記第2の加算回路は、上記第1の加算回路から出力される2つの信号のそれぞれ異なるビット範囲を加算する複数の加算ユニットを有する、請求項1乃至6の何れか一に記載の加算回路である、
    乗算加算回路。
  13. 上記第2の加算回路は、
    上記2つの信号の最下位桁から所定の中位桁までのビット範囲を加算する請求項4に記載の第1の加算ユニットと、
    上記2つの信号の上記中位桁から所定の上位桁までのビット範囲を加算する請求項4に記載の第2の加算ユニットと、
    上記2つの信号の上記上位桁から最上位桁までのビット範囲を加算する請求項5に記載の第3の加算ユニットと、を含む、
    請求項12に記載の乗算加算回路。

JP2003420513A 2003-12-18 2003-12-18 加算回路 Expired - Fee Related JP3746285B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003420513A JP3746285B2 (ja) 2003-12-18 2003-12-18 加算回路
US11/013,118 US20050177611A1 (en) 2003-12-18 2004-12-14 Addition circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003420513A JP3746285B2 (ja) 2003-12-18 2003-12-18 加算回路

Publications (2)

Publication Number Publication Date
JP2005182346A JP2005182346A (ja) 2005-07-07
JP3746285B2 true JP3746285B2 (ja) 2006-02-15

Family

ID=34782015

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003420513A Expired - Fee Related JP3746285B2 (ja) 2003-12-18 2003-12-18 加算回路

Country Status (2)

Country Link
US (1) US20050177611A1 (ja)
JP (1) JP3746285B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100714316B1 (ko) * 2004-10-22 2007-05-02 광주과학기술원 혼합형 가산기

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BE844199A (nl) * 1976-07-16 1976-11-16 Inrichting voor het vermenigvuldigen van binaire getallen
US4425623A (en) * 1981-07-14 1984-01-10 Rockwell International Corporation Lookahead carry circuit apparatus
US5210711A (en) * 1992-02-26 1993-05-11 Sony Corporation Of America Very fast variable input multi-bit adder

Also Published As

Publication number Publication date
JP2005182346A (ja) 2005-07-07
US20050177611A1 (en) 2005-08-11

Similar Documents

Publication Publication Date Title
JP5273866B2 (ja) 乗算器/アキュムレータ・ユニット
JP3667635B2 (ja) 演算装置
US20040117424A1 (en) High-speed/low power finite impulse response filter
JPH09269891A (ja) 部分積加算方法および装置、浮動小数点乗算方法および装置、浮動小数点積和演算方法および装置
EP0613082A1 (en) 4:2 adder and multiplier circuit employing the same
JPH064271A (ja) 乗算器
JP2012528391A (ja) 飽和を伴う整数乗算および乗算加算演算
US7349938B2 (en) Arithmetic circuit with balanced logic levels for low-power operation
JP3746285B2 (ja) 加算回路
KR100308726B1 (ko) 고속 산술 장치에서 올림수 예견가산기 스테이지의 수를 감소시키는 장치 및 방법
JPH09231055A (ja) 論理演算回路及びキャリールックアヘッド加算器
US5870322A (en) Multiplier to selectively perform unsigned magnitude multiplication or signed magnitude multiplication
US20050091299A1 (en) Carry look-ahead adder having a reduced area
TWI679577B (zh) 多位元加法器設備與用於執行算術運算之設備及方法
JPH03229320A (ja) 増分回路
JP4290203B2 (ja) リダクションアレイの装置および方法
JP2765516B2 (ja) 積和演算器
Jamro et al. FPGA implementation of addition as a part of the convolution
JP2606331B2 (ja) 絶対値加減算方法及びその装置
US20100030836A1 (en) Adder, Synthesis Device Thereof, Synthesis Method, Synthesis Program, and Synthesis Program Storage Medium
Chen et al. Enhancing parallel-prefix structures using carry-save notation
Santhi et al. Realization of parallel prefix adders for power and speed critical applications
EP1769335B1 (en) Arithmetic circuit with balanced logic levels for low-power operation
KR100221315B1 (ko) 파이프 라인 가산기
JP2006301685A (ja) 乗算装置

Legal Events

Date Code Title Description
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: 20051108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051121

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101202

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111202

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121202

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121202

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20131202

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees