(57)【要約】全加算器モジュール（３０）は、複数の入力および出力端子と、和発生ユニットと、桁上げ発生ユニットとを具える全加算器を具える。桁上げ発生ユニットは、前記複数の入力端子の一つに供給される制御信号に応答して、当該桁上げ発生ユニットへの桁上げ入力ビットを選択的に反転するプログラマブルインバータを具える。この全加算器モジュール（３０）は、符号付き乗算をサポートする面積効率の良い論理ブロックを提供し、この論理ブロックはそのプログラマブル性を維持し、目的とする他のすべての演算を実行することができる。
2009507413.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力および出力端子と、和発生ユニットと、桁上げ発生ユニットとを具える全加算器を具える全加算器モジュールであって、
前記桁上げ発生ユニットが、前記複数の入力端子の一つに供給される制御信号に応答して、当該桁上げ発生ユニットへの桁上げ入力ビットを選択的に反転するプログラマブルインバータを具える、
ことを特徴とする全加算器モジュール。
【請求項２】
前記プログラマブルインバータはＸＯＲ論理ゲートであることを特徴とする請求項1記載の全加算器モジュール。
【請求項３】
前記プログラマブルインバータはマルチプレクサであり、前記マルチプレクサは、一つの信号および該信号のコンプリメント信号を入力信号として受信するように接続され、前記制御信号に応答して前記入力信号の一つを出力するように構成されていることを特徴とする請求項1記載の全加算器モジュール。
【請求項４】
前記プログラマブルインバータは、当該全加算器モジュールがタイプ１またはタイプ２の加算を実行するとき、前記桁上げビットを反転するように構成されていることを特徴とする請求項１−３の何れかに記載の全加算器モジュール。
【請求項５】
前記制御信号は、当該全加算器の初期化中に発生されることを特徴とする請求項１−４の何れかに記載の全加算器モジュール。
【請求項６】
専用の発生器が前記制御信号を発生することを特徴とする請求項５記載の全加算器モジュール。
【請求項７】
請求項１−６の何れかに記載の全加算器モジュールを複数個具え、前記複数の全加算器モジュールは、ペザリスのキャリーセーブアレイ乗算器として相互接続されたアレイに構成され、各全加算器モジュールにより実行される加算のタイプが各全加算器モジュールに供給される制御信号に応答して選択されるように構成されていることを特徴とするアレイ乗算器。
【請求項８】
請求項１−６の何れかに記載の全加算器モジュールを複数個具え、前記複数の全加算器モジュールは、キャリーリプルアレイ乗算器として相互接続されたアレイに構成され、各全加算器モジュールにより実行される加算のタイプが各全加算器モジュールに供給される制御信号に応答して選択されるように構成されていることを特徴とするアレイ乗算器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路用の符号付き乗算演算、特にフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のようなプログラマブルハードウェア用の全加算器ベースのアレイ乗算器に関する
【背景技術】
【０００２】
乗算は信号処理における最も一般的な演算である。高速で面積効率のよい乗算器の設計が多くの研究の話題になってきた。特定用途向け集積回路（ＡＳＩＣ）用の極めてコンパクトで高速の乗算器が既に存在し、これらの乗算器は符号付きまたは符号なしの数を処理できる。
【０００３】
しかし、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）のような既存のプログラマブルハードウェアソューションで効率よく乗算を実行する挑戦が残されている。特に、周知の乗算アルゴリズムがＦＰＧＡ上に存在するプログラマブル論理ブロック上にマッピングされる際に、ｎビットの乗算を達成するために多数の論理ブロックが必要とされる。これは、ＦＰＧＡ内の論理ブロックは任意のランダム関数を実行できるように汎用に設計され、乗算を達成するために最適なように設計されていないためである。
【０００４】
直接的な２の補数乗算（または符号付き乗算）をＦＰＧＡで実行可能とする別の挑戦がある。従来、符号付き乗算はブースの乗算技術を用いて実行されている（例えば、非特許文献1参照）。この技術は、特定用途向けハードウェアがこの目的のために合成されているとき、極めて効率よく働く。しかし、ハードウェアがブースの乗算を直接実行しない場合、および、汎用プログラマブルブロック（ＦＰＧＡ内等）がブースの乗算に使用される場合には、実行する必要がある多くの条件テスト、分岐および演算シフトのために面積オーバヘッドが増大することが良く知られている。
【非特許文献１】ブース著、「A signed Binary Multiplication Technique」、季刊誌「Mechanics and Applied Mathematics」、Vol. IV、part 2、1951年
【０００５】
再構成可能なデバイスでは、符号付き乗算を実行する従来の方法は、最初に符号付き数を符号なし数に変換し、符号なし乗算を、例えばアレイ乗算により実行し、次にその結果を適切な符号付き表現（２の補数）に再変換するものである。この方法は部分的に再使用可能性を提供するが、変換および再変換ステップを実行するために追加の論理ブロックを必要とし、従ってその実現のために面積と速度の不利益を生じる。
【０００６】
アレイ乗算器はＦＰＧＡに最も適している。それは、これらの乗算器は乗算をアレイ方式で一連の加算により達成するためである。ＦＰＧＡ内の殆どの論理ブロックはすでに加算をサポートしているため、アレイ乗算の実現は極めて簡単である。
【０００７】
２つの普通タイプのアレイ乗算器が、キャリーリプルアレイ乗算器として（例えば非特許文献２）およびペザリスのキャリーセーブアレイ乗算器（非特許文献３参照）として知られている。
【非特許文献２】「Computer Arithmetic: Principles, Architecture, and Design」、K. Hwang, John Wiley and Sons、ニューヨーク、１９７９年
【非特許文献３】J. Stohman & E. Brake、「A Universal Pezaris Array Multiplier Generator for SRAM-Based FPGAs」、IEEE International Conference on Computer Design, 1987, PP, 489-495
【０００８】
一般的な乗算方法のアレイ乗算器は２つのユニットからなり、第１のユニットは部分積（加数）を実行し、第２のユニットは加数の加算を実行する。リプルキャリー乗算器では、キャリー信号は水平に進むが、キャリーセーブ乗算器ではキャリー信号は対角方向に進む。一般に、ペザリスのキャリーセーブ乗算器がその規則正しいルーチンパターンおよび速度のために好まれ、それはキャリーセーブ加算器が本質的にキャリーリプル加算器より高速であるためである。
【０００９】
２の歩数演算を直接実行するために、ペザリスのキャリーサーブ乗算器の加算ユニットは４つの異なる全加算器タイプ（後に詳述する）に基づいている。
【００１０】
実際上、ペザリスアレイ乗算器の実現はＦＰＧＡの論理ブロック構造を符号付き乗算をより良好にサポートするように変化させる必要はなく、ペザリスアレイ乗算器を既存のＦＰＧＡにマッピングする必要があり、この場合も同様に面積および速度の不利を伴う。
【００１１】
多くの市販のＦＰＧＡは、それらのチップ内にワイドな乗算（例えば１８ビット×１８ビット、符号付きおよび符号なし乗算）を実行する専用のハードマクロを設けることによって、この問題を解決しようとしている。これらのハードマクロは、他の種類の演算を実行するために使用できず、アレイ内の限定された数の固定の位置で使用できるのみである。従って、ＦＰＧＡの論理ブロック構造内に、符号付き（および符号なし）乗算だけでなく加算および減算も実行するために使用できる面積効率の良いハードウェアを実現すことが望ましい。
【発明の開示】
【００１２】
本発明の一つの態様によれば、全加算器モジュールが提供され、該全加算器モジュールは、複数の入力および出力端子と、和発生ユニットと、キャリー発生ユニットとを具える全加算器を具え、前記キャリー発生ユニットが、前記入力端子の一つに供給される制御信号に応答して、キャリー発生ユニットへのキャリーインを選択的に反転するように構成されたプログラマブルインバータを具える。
【００１３】
従って、符号付き乗算をサポートする面積効率の良い論理ブロックが提供される。この論理ブロックはそのプログラマブル性を維持し、他のすべての演算を実行することができる。
【００１４】
必要とされるハードウェア拡張は最少であるため、本発明によれば直接的な符号付き乗算をアレイ乗算器で一層効率よく実行することができる。
【００１５】
本発明によれば、２の補数をそれらの符号なし等価数に変換し、符号なし領域で乗算し、２の補数表現に再変換する必要をなくすことによって、論理ブロックユニットを３５％まで低減することができる。
【００１６】
本発明は、符号付き乗算をアレイ乗算器の形態で実現するために適用できる。本発明は、特に符号付き乗算をＦＰＧＡ論理ブロックまたはシストリックアレイで実行するのに適している。
【００１７】
従って、本発明は、アレイ乗算器内における複数の本発明全加算器モジュールの使用にも関する。
【００１８】
複数の全加算器モジュールは、ペザリスキャリーセーブアレイ乗算器として相互接続されたアレイに構成し、各全加算器モジュールにより実行される加算のタイプが各全加算器モジュールに供給される制御信号に応答して選択されるように構成することができる。また、これらの全加算器モジュールは、スキャリーリプルアレイ乗算器として相互接続されたアレイに構成し、各全加算器モジュールにより実行される加算のタイプが各全加算器モジュールに供給される制御信号に応答して選択されるように構成することができる。
【００１９】
例証として、図面を参照しながら本発明の実施例を以下に説明する。
【発明を実施するための最良の形態】
【００２０】
本発明を本発明の種々の実施例についてさらに詳細に説明する。本発明は種々の形態に実施できるが、好適実施例のみを図示し説明する。これらの実施例は発明の詳細な説明が完全となるように与えられ、本発明の範囲を当業者に伝えるのに十分であろう。全図を通して同一の素子は同一の符号で示されている。
【００２１】
慣例の全加算器は既知であり、３つのブール入力、Ｘ，Ｙおよび桁上げ入力（Ｚ）から和出力（Ｓ）および桁上げ出力（Ｃ）を発生する。また、慣例の全加算器ではどの入力も出力も反転されない。慣例の全加算器の和出力および桁上げ出力は式１（Eqs.１）として書き表せる。
【数１】
2009507413.tif 000003
【００２２】
慣例のキャリーリプルアレイ乗算器およびペザリスのキャリーサーブアレイ乗算器は全加算器のアレイを具え、これらの全加算器は４つのタイプの加算、タイプ０、タイプ１、タイプ２およびタイプ３の一つを実行する。図１には、慣例のアレイ乗算器に使用されている４つのタイプの全加算器が示されている。
【００２３】
タイプ０全加算器は、３つのブール入力、Ｘ，Ｙおよび桁上げ入力（Ｚ）から和出力（Ｓ）および桁上げ出力（Ｃ）を発生する。どの入力も出力も反転されない。従って、タイプ０全加算器は慣例の全加算器と等価である。
【００２４】
タイプ１全加算器も、３つのブール入力、Ｘ，ＹおよびＺ（桁上げ入力）から和出力（Ｓ）および桁上げ出力（Ｃ）を発生する。しかし、Ｚ（桁上げ入力）と和出力（Ｓ）が反転される。
【００２５】
タイプ２全加算器は、３つのブール入力、Ｘ，ＹおよびＺ（桁上げ入力）から和出力（Ｓ）および桁上げ出力（Ｃ）を発生し、ＸおよびＹ入力と桁上げ出力（Ｃ）が反転される。
【００２６】
タイプ３全加算器は、３つのブール入力、Ｘ，ＹおよびＺ（桁上げ入力）から和出力（Ｓ）および桁上げ出力（Ｃ）を発生し、すべての入力および出力が反転される。
【００２７】
従って、タイプ０およびタイプ３の全加算器の和出力（Ｓ）および桁上げ出力（Ｃ）は式２（Eqs. 2）として書き表せる。
【数２】
2009507413.tif 000004
【００２８】
さらに、タイプ１およびタイプ２全加算器の和出力（Ｓ）および桁上げ出力（Ｃ）は式３（Eqs. 3）として書き表せる。
【数３】
2009507413.tif 000005
【００２９】
上記の方程式から、タイプ１およびタイプ２全加算器の桁上げ出力（Ｃ）は慣例の全加算器の桁上げ出力（Ｃ）と相違することが観察される。
【００３０】
図２ａには、慣例の全加算器の慣例の桁上げ発生ユニット（ＣＧＵ）２０の概略図が示されている。ＣＧＵ２０は、第１のブール入力（Ｙ）および第２のブール入力（Ｚ）にそれぞれ接続された第１および第２の信号入力端子を有する２：１マルチプレクサ２２を具える。マルチプレクサ２２の選択端子は式
2009507413.tif 000006
で表される信号に接続される。マルチプレクサ２２は、マルチプレクサ２２の選択端子の電位がハイ（１）レベルのとき、第２のブール入力（Ｚ）を選択し、マルチプレクサ２２の選択端子の電位がロウレベル（０）のとき、第１のブール入力（Ｙ）を選択する。マルチプレクサ２２で選択された信号は桁上げ信号（Ｃ）として出力される。
【００３１】
慣例のＣＧＵ２０は式１および２に記載された桁上げ信号を発生するので、タイプ０およびタイプ３の全加算器内に実現できる。しかし、発明者は、慣例のＣＧＵは第２のブール入力（Ｚ）を反転することによってタイプ１およびタイプ２の全加算器の桁上げ信号（Ｃ）を発生させるためにも使用できることを認識した。
【００３２】
図２ｂには、本発明の一実施例によるＣＧＵ２４の概略図が示されている。ＣＧＵ４は２入力ＸＯＲ論理ゲート２６と２：１マルチプレクサ２８とを具える。
【００３３】
２入力ＸＯＲ論理ゲート２６は、一つの入力がブール入力（Ｚ）に接続され、他の入力が制御信号（Ctrl）に接続される。ＸＯＲ論理ゲート２６は、制御信号（Ctrl）の電位がハイレベル（１）のときにブール入力（Ｚ）のコンプリメントを出力することによって、プログラマブルインバータとして作用する。
【００３４】
また、プログラマブルインバータは、このように適切に構成された任意の構成要素、例えば入力として関数およびそのコンプリメントを有し選択信号によりそれらの入力の何れか一つを選択するようにプログラムできるマルチプレクサで実現することができる。
【００３５】
マルチプレクサ２８は第２のブール入力（Ｙ）および２入力ＸＯＲ論理ゲート２６の出力にそれぞれ接続された第１および第２の信号端子を有する。マルチプレクサ２８の選択端子は式
2009507413.tif 000007
で表わされる信号に接続される。マルチプレクサ２８は、マルチプレクサ２２の選択端子の電位がハイ（１）レベルのとき、２入力ＸＯＲ論理ゲート２６の出力を選択し、マルチプレクサ２２の選択端子の電位がロウレベル（０）のとき、第２のブール入力（Ｙ）を選択する。マルチプレクサ２２で選択された信号は桁上げ信号（Ｃ）として出力される。
【００３６】
制御信号（Ctrl）がロウレベル（０）になるように構成されると、２入力ＸＯＲ論理ゲート２６はブール信号（Ｚ）をマルチプレクサ２８の第２の信号端子に直接供給する。従って、上で詳述したように、マルチプレクサ２８は式１および２で表される桁上げ信号（Ｃ）を発生する。
【００３７】
制御信号（Ctrl）が高レベル（１）になるように構成されると、２入力ＸＯＲ論理ゲート２６はプログラマブルインバータとして作用し、ブール信号（Ｚ）のコンプリメントをマルチプレクサ２８の第２の信号端子に出力する。従って、マルチプレクサ２８は式３で表される桁上げ信号（Ｃ）を発生する。
【００３８】
従って、ＣＧＵ２４は、制御信号（Ctrl）がタイプ１およびタイプ２加算に対してハイ（１）になり、タイプ０およびタイプ３加算に対してロウ（０）になるように構成されると、４つのタイプの全加算器（タイプ０、タイプ１、タイプ２、タイプ３）の桁上げ信号（Ｃ）を発生するために使用できる。
【００３９】
図３には、本発明による全加算器モジュール３０の概略図が示されている。全加算器３０は第１〜第４の入力端子３２，３４，３６，３８、第１および第２の出力端子４０，４２、和発生ユニット（ＳＧＵ）４４およびＣＧＵ２４を具える。
【００４０】
ＳＧＵ４４は慣例の全加算器に使用されている慣例のＳＵＧである。ＳＵＧ４４は第１および第２の２入力ＸＯＲ論理ゲート４６，４８を具える。第１のＸＯＲゲート４６は一方の入力が第１の入力端子３２に接続され、他方の入力が第２の入力端子３４に接続される。第２のＸＯＲゲート４８は一方の入力が第１のＸＯＲゲートの出力に接続され、他方の入力が第３の入力端子３６に接続される。第２のＸＯＲゲート４８の出力は第１の出力端子４０に接続される。従って、ＳＧＵ４４は式１で表される和（Ｓ）を発生し、これを第１の出力端子４０に出力する。
【００４１】
ＣＧＵ２４は上述した通りである。ＸＯＲゲート２６は、一方の入力が第３の入力端子３６に接続され、他方の入力が第４の入力端子３８に接続される。マルチプレクサ２８は、第２のブール入力端子３４および２入力ＸＯＲ論理ゲート２６の出力にそれぞれ接続された第１および第２の信号端子を有する。マルチプレクサ２８の選択端子は式
2009507413.tif 000008
で表される信号に接続される。即ち、マルチプレクサ２８の選択端子はＳＧＵ４４の第１のＸＯＲゲート４６の出力に接続される。マルチプレクサ２８で選択された信号は第２の出力端子４２に出力される。従って、ＣＧＵ２４により発生される桁上げ信号（Ｃ）は式４（Eqs.4）として書き表せる。
【数４】
2009507413.tif 000009
【００４２】
従って、上述したように、ＣＧＵ２４は、制御信号（Ctrl）がタイプ１およびタイプ２の加算に対してハイ（１）になり、タイプ０およびタイプ３の加算に対してロウ（０）になるように構成されると、４つのタイプの全加算器（タイプ０、タイプ１、タイプ２、タイプ３）の桁上げ信号（Ｃ）を発生するために使用できる。
【００４３】
従って、全加算器３０は、４つのタイプの加算（タイプ０、タイプ１、タイプ２、タイプ３）の任意の加算に使用でき、加算のタイプは第４の入力端子に供給される制御信号（Ctrl）に従って選択される。
【００４４】
図４は、本発明によるアレイ乗算器の概略図であり、全体が４００で示されている。ＳＲＡＭベースのＦＰＧＡの論理ブロック内部に使用できるアレイ乗算器４００は、本発明による複数の改良型全加算器を入力データからの積項を計算するように構成された相互接続アレイの形態に具える。２つの５ビットの２の補数、Ａ＝ａ４ａ３ａ２ａ１ａ０およびＢ＝ｂ４ｂ３ｂ２ｂ１ｂ０（ここでａ４およびｂ４が負の重みである）、は式５（Eqs.５）で表される値を有する。
【数５】
2009507413.tif 000010
【００４５】
それらの積Ｐ＝Ｐ９Ｐ８Ｐ７Ｐ６Ｐ５Ｐ４Ｐ３Ｐ２Ｐ１Ｐ０は、ペザリスキャリーセーブアレイ乗算器として構成された全加算器モジュールの相互接続アレイであるアレイ乗算器４００を用いて計算することができる。
【００４６】
各全加算器は、上述したように、４つのタイプの加算（タイプ０、タイプ１、タイプ２、タイプ３）の任意の加算を実行でき、加算のタイプは第４の入力端子に供給される制御信号（Ctrl）に従って選択されるように、改良型ＣＧＵ２４と制御信号(Ctrl)を有する。
【００４７】
全加算器モジュール４１０に供給される制御信号の電位は、全加算器モジュール４１０がタイプ０全加算器として作用するようにロウ（０）に構成される。
【００４８】
全加算器モジュール４２０に供給される制御信号の電位は、全加算器モジュール４２０がタイプ１全加算器として作用するようにハイ（１）に構成される。
【００４９】
全加算器モジュール４３０に供給される制御信号の電位は、全加算器モジュール４３０がタイプ２全加算器として作用するようにハイ（０）に構成される。
【００５０】
全加算器モジュール４４０に供給される制御信号の電位は、全加算器モジュール４４０がタイプ３全加算器として作用するようにロウ（０）に構成される。
【００５１】
制御信号は加算器の初期化中に専用の発生器により発生される。この専用発生器はフレキシビリティを制限しない。これは、加算器、減算器または符号なし乗算器を初期化する際の制御ビットの生成と同じであるからである。
【００５２】
また、相互接続アレイは、図５に示すように、キャリーリプルアレイ乗算器として構成することもできる。
【００５３】
従来既知のように、正および負のオペランドは必要に応じ適切に符号拡張する必要があるが、符号拡張は本発明により影響されない。例えば、７（０１１１）に−８（１０００）を乗算するとき、その結果は−５６（１１００１０００）にならなければならない。８ビット×８ビット乗算器を使用するとき、７と−８は符号拡張して、７は０００００１１１として表現し、−８は１１１１０００として表現する必要がある。得られる１６ビットの結果から、下位の８ビットを考慮するだけでよい。
【００５４】
このアレイ乗算器は、符号付き乗算を実行し、従来のアレイ乗算器の実装と異なり、ＦＰＧＡの論理ブロック内のＣＧＵを変更するためにアルゴリズムの仕様が使用される。提案の桁上げ発生ユニット（ＣＧＵ）を組み込む論理ブロックは性質が一様である。この一様性はＦＰＧＡの実装を容易にする。
【００５５】
ＤＲＡＭベースＦＰＧＡの論理ブロック内で使用する場合には、所望の関数、例えばＳＧＵ４４のＸＯＲゲートまたは変更ＣＧＵ２４のＸＯＲゲート２６、の真理値表を格納するルックアップテーブル（一組のメモリセル）を使用することができる。
【００５６】
ＣＧＵ２４内のＸＯＲゲート２６の加算は各ＣＧＵをわずかに大きくするが、この面積増大は、符号付き乗算のために結果を変換および反転するために別個の論理ブロックを使用する場合に必要とされる面積の増大より著しく小さい。
【００５７】
研究の結果、本発明は、符号なし乗算および加算と比較すると、約３５％の論理ブロック面積の節約を実現できることがわかった。
【００５８】
提案のＣＧＵは、その汎用性を失うことなく、符号付き乗算を一層効率よく実行できる。
【００５９】
要するに、本発明によれば、伝統的な符号なしアレイ乗算器の桁上げ発生ユニットに単一のＸＯＲゲートを付加することによって、直接的な２の補数の符号付き乗算が可能になる。この結果はキャリーサーブおよびキャリーリプル乗算器の双方に対して成立する。
【００６０】
上述した実施例は本発明を限定るものでなく、当業者は本発明の範囲を逸脱することなく多くの代替実施例を設計することができる点に注意されたい。
【００６１】
例えば、ＳＲＡＭブロックのような適切に構成された装置で制御信号を全加算器モジュールに供給することができる。
【図面の簡単な説明】
【００６２】
【図１】慣例のアレイ乗算器に使用される４つのタイプの全加算器の概略図である。
【図２ａ】慣例の全加算器の桁上げ発生ユニットの概略図である。
【図２ｂ】本発明の一実施例による桁上げ発生ユニットの概略図である。
【図３】本発明の他の実施例による全加算器モジュールの概略図である。
【図４】本発明のさらに他の実施例によるアレイ乗算器の概略図である。
【図５】本発明のさらに他の実施例によるアレイ乗算器の概略図である。
【図１】
2009507413.tif 000011
【図２ａ】
2009507413.tif 000012
【図２ｂ】
2009507413.tif 000013
【図３】
2009507413.tif 000014
【図４】
2009507413.tif 000015
【図５】
2009507413.tif 000016
【国際調査報告】
2009507413.tif 000017
2009507413.tif 000018
2009507413.tif 000019
2009507413.tif 000020
2009507413.tif 000021