(57)【要約】  さまざまなサイズおよび複雑性を有するＤＳＰ回路を作成するためにカスケード接続され得るＤＳＰスライスの列を備えた集積回路（ＩＣ）を記載する。各ＤＳＰスライスは、複数のオペランド入力ポートおよびスライス出力ポートを含み、それらのすべては、汎用のルーティングおよび論理リソースにプログラマブルに接続される。オペランドポートは、処理のためにオペランドを受取り、スライス出力ポートは、処理された結果を搬送する。各スライスは加えて、それぞれのスライス出力ポートに接続されてこの実施例では累積関数をサポートするフィードバックポートと、上流スライスの出力ポートに接続されてカスケード接続をサポートするカスケード入力ポートとを含む。
2007522699.tif 000002
【特許請求の範囲】
【請求項１】
集積回路であって、第１のデジタル信号処理（ＤＳＰ）素子と第２のＤＳＰ素子とを含む複数のＤＳＰ素子を含み、各ＤＳＰ素子は実質的に同一の構造を有し、各ＤＳＰ素子はハードワイヤード加算器に接続されるスイッチを含み、集積回路はさらに、
第１のＤＳＰ素子を第２のＤＳＰ素子に接続する専用信号線を含む、集積回路。
【請求項２】
前記スイッチは、ハードワイヤード加算器への入力を選択するマルチプレクサを含む、請求項１に記載の集積回路。
【請求項３】
前記マルチプレクサはレジスタに接続される選択線を有する、請求項２に記載の集積回路。
【請求項４】
前記マルチプレクサに接続されるハードワイヤード乗算器をさらに含む、請求項２に記載の集積回路。
【請求項５】
構成可能論理ブロックをさらに含む、請求項１に記載の集積回路。
【請求項６】
前記第１のＤＳＰ素子に接続されるプログラマブル配線リソースをさらに含む、請求項１に記載の集積回路。
【請求項７】
複数の構成可能機能ブロックと、
前記複数の構成可能機能ブロックのいくつかを接続するプログラマブル配線リソースとをさらに含む、請求項１に記載の集積回路。
【請求項８】
前記構成可能機能ブロックは構成可能論理ブロックを含み、前記スイッチはマルチプレクサを含む、請求項７に記載の集積回路。
【請求項９】
前記マルチプレクサはレジスタに接続される選択線を有する、請求項８に記載の集積回路。
【請求項１０】
前記マルチプレクサは構成可能メモリセルに接続される選択線を有する、請求項８に記載の集積回路。
【請求項１１】
前記スイッチに接続される乗算器をさらに含む、請求項７に記載の集積回路。
【請求項１２】
前記第１のＤＳＰはさらに、前記プログラマブル配線リソースと前記専用信号線とに接続される出力ポートを含む、請求項７に記載の集積回路。
【請求項１３】
前記第１のＤＳＰはフィードバックポートをさらに含み、前記フィードバックポートは前記第１のＤＳＰ素子の前記出力ポートに接続される、請求項７に記載の集積回路。
【請求項１４】
前記第１のＤＳＰ素子と前記第２のＤＳＰ素子とに接続される共通レジスタをさらに含む、請求項７に記載の集積回路。
【請求項１５】
前記集積回路はプログラマブル論理装置である、請求項１に記載の集積回路。
【請求項１６】
集積回路におけるＤＳＰ素子であって、
第１のスイッチと、
前記第１のスイッチに接続される乗算回路と、
前記乗算回路に接続される第２のスイッチと、
前記第２のスイッチに接続される加算回路とを含む、ＤＳＰ素子。
【請求項１７】
前記集積回路は、実質的に同一の構造を有し、専用信号線を介してＤＳＰ素子に結合される別のＤＳＰ素子を含む、請求項１６に記載のＤＳＰ素子。
【請求項１８】
前記第１のスイッチは、構成メモリセルまたはレジスタのいずれかに接続される、請求項１６に記載のＤＳＰ素子。
【請求項１９】
前記第２のスイッチは、構成メモリセルまたはレジスタのいずれかに接続される、請求項１８に記載のＤＳＰ素子。
【請求項２０】
前記第２のスイッチが前記レジスタに接続される場合、前記第２のスイッチのスイッチング速度は前記ＤＳＰ素子の入力データレートと等しいことが可能である、請求項１９に記載のＤＳＰ素子。
【請求項２１】
前記集積回路は、プログラマブル論理装置（ＰＬＤ）である、請求項１９に記載のＤＳＰ素子。
【請求項２２】
前記ＰＬＤはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）である、請求項２１に記載のＤＳＰ素子。
【請求項２３】
集積回路（ＩＣ）であって、
複数の構成可能論理ブロックと、
前記複数の構成可能論理ブロックのいくつかを接続する構成可能配線リソースと、
第１のＤＳＰスライスおよび第２のＤＳＰスライスを含む複数の構成可能ＤＳＰスライスとを含み、前記第２のＤＳＰスライスは、
スライス出力ポートと、
多重化回路とを含み、前記多重化回路は、
前記スライス出力ポートに接続されるフィードバックポートと、
前記第１のＤＳＰスライスの前記スライス出力ポートに接続されるカスケード入力ポートと、
多重化回路出力ポートと、
モード制御信号を受ける選択ポートとを含み、
前記第１のＤＳＰスライスは、前記モード制御信号に応答して算術演算を行なう、集積回路。
【請求項２４】
前記選択ポートは、複数の組のモード制御信号を受ける、請求項２３に記載の集積回路。
【請求項２５】
第１の組のモード制御信号は前記フィードバックポートを多重化回路出力ポートに接続し、第２の組のモード制御信号は前記カスケード入力ポートを前記多重化回路出力ポートに接続する、請求項２４に記載の集積回路。
【請求項２６】
前記算術演算は、乗算と、加算または減算と、フィードバック加算または減算と、乗算累算と、シフトアウトと、シフトフィードバックと、出力カスケードと、からなる群から選択される、請求項２３に記載の集積回路。
【請求項２７】
前記第２のＤＳＰスライスは、前記選択ポートに接続されて前記モード制御信号を受けるモード制御信号レジスタをさらに含む、請求項２３に記載の集積回路。
【請求項２８】
前記第２のＤＳＰスライスは、前記モード制御信号レジスタを選択的にバイパスするモード制御信号マルチプレクサをさらに含む、請求項２７に記載の集積回路。
【請求項２９】
前記モード制御信号を発生するステートマシンをさらに含む、請求項２３に記載の集積回路。
【請求項３０】
前記ステートマシンはマイクロコントローラまたはマイクロプロセッサを含む、請求項２９に記載の集積回路。
【請求項３１】
前記集積回路は、第１の複素数と第２の複素数とを乗算して複素数の積を求めるよう適合され、前記第１の複素数は第１の実数部と第１の虚数部とを含み、前記第２の複素数は第２の実数部と第２の虚数部とを含み、前記複素数の積は第３の実数部と第３の虚数部とを含む、請求項２３に記載の集積回路。
【請求項３２】
前記第１のＤＳＰは第１の実数部を受ける第１のオペランド入力ポートと、第２の実数部を受ける第２のオペランド入力ポートとを含み、前記第１のＤＳＰスライスは、第１の組のモード制御信号に応答して第１の実数部と第２の実数部とを乗算して第１の実数結果を求め、
前記第２のＤＳＰスライスは、第１の虚数部を受ける第１のオペランド入力ポートと第２の虚数部の受ける第２のオペランド入力ポートとをさらに含み、前記第２のＤＳＰスライスは、第２の組のモード制御信号に応答して前記第１の虚数部と前記第２の虚数部とを乗算して第２の実数結果を求め、
前記複数の構成可能ＤＳＰスライスはさらに、
第１の実数部を受ける第１のオペランド入力ポートと第２の虚数部を受ける第２のオペランド入力ポートとを有する第３のＤＳＰスライスを含み、前記第３のＤＳＰスライスは第３の組のモード制御信号に応答して前記第１の実数部と前記第２の虚数部とを乗算して第１の虚数結果を求め、
前記複数の構成可能ＤＳＰスライスはさらに、
第１の虚数部を受ける第１のオペランド入力ポートと第２の実数部を受ける第２のオペランド入力ポートとを有する第４のＤＳＰスライスを含み、前記第４のＤＳＰスライスは第４の組のモード制御信号に応答して前記第１の虚数部と前記第２の実数部とを乗算して第２の虚数結果を求める、請求項２３に記載の集積回路。
【請求項３３】
前記第２のＤＳＰスライスは、第１の実数結果から第２の実数結果を減算し、前記第４のＤＳＰスライスは第１の虚数結果と第２の虚数結果とを加算する、請求項３２に記載の集積回路。
【請求項３４】
ＤＳＰ回路を有する集積回路であって、前記ＤＳＰ回路は、
入力データレートでデータを受けるための入力データポートと、
入力ポートに結合される乗算器と、
第１のプログラマブルルーティング論理によって前記乗算器に結合される加算器と、
前記第１のプログラマブルルーティング論理に結合されるレジスタとを含み、前記レジスタは前記入力データレートの大きさのオーダ内で、第１のプログラマブルルーティング論理における異なった経路を構成可能である、集積回路。
【請求項３５】
前記ＤＳＰ回路は、前記加算器と前記第１のプログラマブルルーティング論理とに結合される出力ポートをさらに含む、請求項３４に記載の集積回路。
【請求項３６】
前記ＤＳＰ回路は、前記入力データポートと前記乗算器との間に結合される第２のプロ
グラマブルルーティング論理をさらに含む、請求項３４に記載の集積回路。
【請求項３７】
前記第２のプログラマブルルーティング論理は、前記入力データポートを前記第１のプログラマブルルーティング論理に直接接続する、請求項３６に記載の集積回路。
【請求項３８】
前記集積回路はプログラマブル論理装置（ＰＬＤ）である、請求項３４に記載の集積回路。
【請求項３９】
算術回路を有するプログラマブル論理装置（ＰＬＤ）であって、
積生成器を含み、前記積生成器は、
第１のオペランドを受ける乗数ポートと、
第２のオペランドを受ける被乗数ポートと、
前記第１のオペランドと前記第２のオペランドとの積を受ける積ポートとを有し、前記ＰＬＤはさらに、
積生成器バイパスポートと、
多重化回路とを含み、前記多重化回路は、
前記積ポートに接続されて積を受ける第１のマルチプレクサ入力ポートと、
前記バイパスポートに接続される第２のマルチプレクサ入力ポートと、
マルチプレクサ出力ポートとを有し、前記ＰＬＤはさらに、
前記マルチプレクサ出力ポートに接続される第１の加数ポートと、第２の加数ポートと、和ポートとを有する加算器を含む、プログラマブル論理装置。
【請求項４０】
前記積ポートは、第１の部分積ポートであり、前記積は第１の部分積である、請求項３９に記載のＰＬＤ。
【請求項４１】
前記積生成器は、第２の部分積を提供する第２の部分積ポートをさらに含む、請求項４０に記載のＰＬＤ。
【請求項４２】
前記多重化回路は、第２の部分積ポートに接続される第３のマルチプレクサ入力ポートをさらに有する、請求項４１に記載のＰＬＤ。
【請求項４３】
前記バイパスポートは前記和ポートに接続する、請求項３９に記載のＰＬＤ。
【請求項４４】
前記バイパスポートは、前記加算器の第３の加数ポートに接続する、請求項３９に記載のＰＬＤ。
【請求項４５】
前記バイパスポートは、論理０を表わす電圧を供給するノードの集合に接続する、請求項３９に記載のＰＬＤ。
【請求項４６】
前記和ポートは前記多重化回路に接続される、請求項３９に記載のＰＬＤ。
【請求項４７】
前記マルチプレクサは、少なくとも１つのさらなる積生成器バイパスポートを含む、請求項３９に記載のＰＬＤ。
【請求項４８】
シフタ入力ポートとバイパスポートに接続されるシフタ出力ポートとを有するシフタをさらに含む、請求項３９に記載のＰＬＤ。
【請求項４９】
シフタ入力ポートに接続される第２のバイパスポートをさらに含む、請求項４８に記載のＰＬＤ。
【請求項５０】
前記シフタ入力ポートは前記和ポートに接続する、請求項４８に記載のＰＬＤ。
【請求項５１】
前記積ポートは、レジスタを介して前記第１のマルチプレクサ入力ポートに接続する、請求項３９に記載のＰＬＤ。
【請求項５２】
前記加算器は条件付き和加算器である、請求項３９に記載のＰＬＤ。
【請求項５３】
前記多重化回路は、複数のマルチプレクサを含む、請求項３９に記載のＰＬＤ。
【請求項５４】
請求項３９に記載の前記加算器をテストする方法であって、前記方法はテスト信号を前記積生成器バイパスポートに与えるステップを含む、方法。
【請求項５５】
複数の接続されたデジタル信号処理（ＤＳＰ）モジュールを有する集積回路であって、前記複数の接続されたＤＳＰモジュールのＤＳＰモジュールは、
多重化回路を含み、前記多重化回路は、
第１のマルチプレクサ入力と、
第２のマルチプレクサ入力と、
マルチプレクサ出力と、
選択入力とを有し、前記ＤＳＰモジュールはさらに、
前記マルチプレクサ出力に接続される第１の加数入力と第２の加数入力とを有するハードワイヤード加算器と、
複数のコマンドを有し前記選択入力に接続されるレジスタとを含み、前記コマンドは前記第１のマルチプレクサ入力または前記第２のマルチプレクサ入力のいずれかを前記マルチプレクサ出力に接続するためのものである、集積回路。
【請求項５６】
前記ＤＳＰモジュールは、前記第１のマルチプレクサ入力に接続される乗算回路をさらに含む、請求項５５に記載の集積回路。
【請求項５７】
前記ＤＳＰモジュールは、前記乗算回路に接続されるＤＳＰモジュールへの入力と前記第２のマルチプレクサ入力とをさらに含む、請求項５６に記載の集積回路。
【請求項５８】
前記レジスタはプロセッサに接続される、請求項５５に記載の集積回路。
【請求項５９】
前記レジスタはステートマシンに接続される、請求項５５に記載の集積回路。
【請求項６０】
前記ステートマシンは構成可能論理ブロックを用いて形成される、請求項５９に記載の集積回路。
【請求項６１】
複数のコマンドは、前記第１のマルチプレクサ入力を前記マルチプレクサ出力に接続するための第１の時点での第１のコマンドと、前記第２のマルチプレクサ入力を前記マルチプレクサ出力に接続するための、前記第１の時点とは異なる第２の時点での第２のコマンドとを含む、請求項５５に記載の集積回路。
【請求項６２】
集積回路であって、
複数の構成可能論理ブロックと、
前記構成可能論理ブロックをプログラム可能に相互接続する汎用配線と、
複数のデジタル信号処理（ＤＳＰ）スライスとを含み、前記複数のＤＳＰスライスの第１のＤＳＰスライスは前記複数のＤＳＰスライスの第２のＤＳＰスライスに接続され、前記第１のＤＳＰスライスは、
前記汎用配線にプログラム可能に接続され、第１のオペランド入力を含む第１のオペラ
ンド入力ポートと、
第２のオペランド入力を含む第２のオペランド入力ポートと、
乗数ポートと、被乗数ポートと、積ポートとを有する積生成器と、
前記第１のオペランド入力ポートと前記乗数ポートとの間に接続される第１のオペランド入力レジスタとを含み、前記第１のオペランド入力レジスタは、
前記第１のオペランド入力ポートに接続される第１のマルチプレクサ入力ポートと、第２のマルチプレクサ入力ポートと、第３のマルチプレクサ入力ポートと、前記乗数ポートに接続されるマルチプレクサ出力ポートとを有するマルチプレクサと、
前記第１のオペランド入力ポートと前記第２のマルチプレクサ入力ポートとの間に接続される第１の記憶素子と、
前記第２のマルチプレクサ入力ポートと前記第３のマルチプレクサ入力ポートとの間に接続される第２の記憶素子とを含む、集積回路。
【請求項６３】
前記構成論理ブロックの構成と前記マルチプレクサの接続性とを定義する複数の構成メモリセルをさらに含む、請求項６２に記載の集積回路。
【請求項６４】
前記第２のオペランド入力ポートと前記被乗数ポートとの間に接続される第２のオペランド入力レジスタをさらに含み、
前記第２のオペランド入力レジスタは、
前記第１のオペランド入力ポートに接続される第１のマルチプレクサ入力ポートと、第２のマルチプレクサ入力ポートと、第３のマルチプレクサ入力ポートとを有する第２のマルチプレクサと、
前記第１のオペランド入力ポートと前記第２のマルチプレクサ入力ポートとの間に接続される第１の記憶素子の集合と、
前記第２のマルチプレクサ入力ポートと前記第３のマルチプレクサ入力ポートとの間に接続される第２の記憶素子の集合とを含む、請求項６２に記載の集積回路。
【請求項６５】
前記第１のＤＳＰスライスの前記乗数ポートおよび前記被乗数ポートは、前記第２のＤＳＰスライスの第１のオペランド入力ポートに直接接続する、請求項６２に記載の集積回路。
【請求項６６】
前記第１のＤＳＰスライスは、前記積ポートに接続されるパイプラインレジスタ入力ポートと、パイプラインレジスタ出力ポートとを有するパイプラインレジスタをさらに含む、請求項６２に記載の集積回路。
【請求項６７】
前記第１のＤＳＰスライスは、パイプラインレジスタ出力ポートに接続される加数ポートを有する加算器をさらに含む、請求項６６に記載の集積回路。
【請求項６８】
前記加数ポートは、マルチプレクサを介して前記パイプラインレジスタ出力ポートに接続する、請求項６７に記載の集積回路。
【請求項６９】
前記複数のＤＳＰスライスの各ＤＳＰスライスは、出力ポートとカスケードポートとをさらに含み、各ＤＳＰスライスの前記出力ポートは対応の下流ＤＳＰスライスの前記カスケードポートに接続する、請求項６２に記載の集積回路。
【請求項７０】
前記複数のＤＳＰスライスの各ＤＳＰスライスは、前記出力ポートに接続されるレジスタ入力ポートと、対応の下流ＤＳＰスライスの前記カスケードポートに接続されるレジスタ出力ポートとを有する出力レジスタをさらに含む、請求項６９に記載の集積回路。
【請求項７１】
第２のレジスタ入力ポートと第２のレジスタ出力ポートとを有する第２の出力レジスタ
をさらに含み、前記第２のレジスタ入力ポートは第１に述べたレジスタ出力ポートに接続される、請求項７０に記載の集積回路。
【請求項７２】
前記第１および第２の出力レジスタのうちの少なくとも１つを選択的にバイパスする出力マルチプレクサをさらに含む、請求項７１に記載の集積回路。
【請求項７３】
前記第１のＤＳＰスライスは、前記積ポートに接続される加数ポートと、第２の加数ポートと、和ポートとを有する加算器をさらに含む、請求項６２に記載の集積回路。
【請求項７４】
前記和ポートに接続される出力レジスタをさらに含む、請求項７３に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
プログラマブル論理装置すなわちＰＬＤは、１つ以上の選択された機能を果たすようエンドユーザによってプログラム可能な汎用回路である。複雑なＰＬＤは、典型的にはいくつものプログラマブル論理素子およびいくつかのプログラマブルルーティングリソースを含む。プログラマブル論理素子は、ＣＬＢ、論理ブロック、論理アレイブロック、論理セルアレイ、マクロセル、論理セル、および機能ブロックのような、多くの形態および多くの名称を有する。プログラマブルルーティングリソースもまた、多くの形態および多くの名称を有する。
【背景技術】
【０００２】
図１Ａ（先行技術）は、一般的な種類のＰＬＤであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）１００のブロック図である。ＦＰＧＡ１００は、エッジタイル１０３−１０６およびコーナタイル１１３−１１６に囲まれた同一のＣＬＢタイル１０１のアレイを含む。ランダムアクセスメモリ（ＲＡＭ）タイルの列１０２は、ＣＬＢタイル１０１の２つの列の間に位置決めされる。エッジタイル１０３−１０６およびコーナタイル１１３−１１６は、タイル１０１−１０２と入力／出力（Ｉ／Ｏ）ピン（図示せず）との間のプログラマブル配線を提供する。ＦＰＧＡ１００は、任意の数のＣＬＢタイル列を含み、各タイル列は任意の数のＣＬＢタイル１０１を含み得る。ここでは２列のＲＡＭタイル１０２しか示されないが、より多くのまたはより少ないＲＡＭタイルを用いてもよい。構成メモリ１２０の内容は、さまざまなプログラマブルリソースの機能を定義する。
【０００３】
ＦＰＧＡリソースは、簡単な乗算器から複雑なマイクロプロセッサまで、多くのデジタル信号処理（ＤＳＰ）機能を実現するようプログラム可能である。たとえば、１９９８年５月１９日発行のテリケパッリ（Telikepalli）の米国特許第５，７５４，４５９号は、汎用ＦＰＧＡリソース（たとえばＣＬＢおよびプログラマブル配線）を用いて乗算器を実現することを教示する。残念ながら、ＤＳＰ回路はＦＰＧＡリソースを効率的に利用せず、よって所望であるよりも多くの電力およびＦＰＧＡ面積を消費し得る。たとえば、１６×１６乗算器を実現する、ザイリンクス（Xilinx, Inc.,）から入手可能であるＦＰＧＡのVirtexファミリーにおいては、少なくとも６０のＣＬＢおよび相当の貴重な配線リソースが必要である。
【０００４】
図１Ｂ（先行技術）は、汎用論理およびリソースを自由化する態様でＤＳＰ機能をサポートするよう適合されたＦＰＧＡ１５０を示す。ＦＰＧＡ１５０は図１ＡのＦＰＧＡ１００と同様であり、同様の番号の要素は同一または同様である。各ＣＬＢタイルの２つの主要な構成要素、すなわちスイッチマトリクス１２０とＣＬＢ１２２とを示すために、ＣＬＢタイル１０１がいくらかより詳細に示される。ＣＬＢ１２２は、２００２ザイリンクスデータブックに説明されるような、周知の個々にプログラム可能なＣＬＢである。各スイッチマトリクス１２０は、タバナ（Tavana）他の米国特許第５，８８３，５２５号、またはヤング（Young）他の米国特許第５，９１４，６１６号により開示される種類のプログラマブルルーティングマトリクスであってもよく、これらは信号線１２５を介して周知の態様で他のタイル１０１および１０２へのプログラマブル配線を提供する。各スイッチマトリクス１２０は、信号バス１４５を介して対応のＣＬＢ１２２に対してプログラマブル配線を提供するためのインターフェイス１４０を含む。いくつかの実施例においては、ＣＬＢ１２２は、たとえば米国特許第５，８８３，５２５号に記載される、隣接するＣＬＢへの直接的な高速接続を含んでもよい。ＦＰＧＡ１００の他の周知の要素は簡略のため図１Ｂから省かれる。
【０００５】
図１ＡのＲＡＭブロック１０２の代わりに、ＦＰＧＡ１５０は多機能タイル１５５の１つ以上の列を含むが、その各々が４行のＣＬＢタイルを亘って延在する。各多機能タイルは、デュアルポートＲＡＭ１６０および符号付き乗算器１６５のブロックを含み、その両方が入力バス１７０およびおよび出力バス１７５のそれぞれと対応のスイッチマトリクス１８０とを介してプログラマブル配線にプログラム可能に接続される。ＦＰＧＡ１５０は、ニュー（New）他の「乗算器をＦＰＧＡに組入れるための方法および装置」と題される米国特許第６，３６２，６５０号に詳細に記載される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＦＰＧＡ１５０は、ＤＳＰ機能をサポートする優れた働きを示す。しかしながら複雑な機能は汎用ルーティングおよび論理を活用しなければならず、これらのリソースは信号処理には最適化されていない。複雑なＤＳＰ機能はしたがって、所望であるよりも遅く、かつ領域集約的であり得る。したがって、プログラマブル論理による柔軟性を犠牲にすることなく、より高速な速度性能に対する消費者の需要に対処するＤＳＰ回路に対する必要性が存在する。
【課題を解決するための手段】
【０００７】
要約
この発明は、高速で柔軟性のある低電力のＤＳＰ回路に対する必要性に対処するシステムおよび方法に向けられる。以下の議論は５つのセクションに分けられ、各々が向上したＤＳＰ性能を提供するための特定の方法およびシステムを詳細に説明する。
【０００８】
この発明の実施例は、１つ以上の数学的機能を果たすためのモジュラーＤＳＰ回路の組合せを含む。複数の実質的に同一のＤＳＰサブモジュールは、併せて実質的に直接接続されてＤＳＰモジュールを形成し、各サブモジュールは、加算器に接続された、たとえばマルチプレクサであるスイッチを少なくとも備えた専用回路を有する。ＤＳＰモジュールは、さらなるＤＳＰサブモジュールを実質的に直接接続することによりさらに拡張可能である。こうして、より大きなまたはより小さなＤＳＰモジュールが、ＤＳＰサブモジュールを追加または削除することにより構築可能である。ＤＳＰサブモジュールは、ＤＳＰサブモジュールを相互接続する実質的に専用の通信線を有する。
【０００９】
この発明の例示的な実施例においては、集積回路（ＩＣ）は、実質的に直接接続されたまたはカスケード接続された複数のモジュールを含む。一実施例は、ＤＳＰサブモジュールにおける加算器に接続されたスイッチへの制御入力がＩＣにおける他の回路の動作速度で修正されることを提供し、よって加算器への入力を経時的に変更する。別の実施例においては、乗算器の出力と乗算器をバイパスするデータ入力とがスイッチで接続されるので、ＤＳＰサブモジュールによって行なわれる機能は時間とともに変化し得る。
【００１０】
一実施例に従ったプログラマブル論理装置（ＰＬＤ）はＤＳＰスライスを含むが、「スライス」とは、さまざまな寸法および複雑度のＤＳＰ回路を形成するように所望のようにカスケード接続され得る、論理的に同様の回路である。各ＤＳＰスライスは複数のオペランド入力ポートおよびスライス出力ポートを含み、それらのすべてが汎用ルーティングおよび論理リソースにプログラム可能に接続される。オペランドポートは処理のためのオペランドを受信し、スライス出力ポートは処理された結果を伝える。各スライスは、この実施例における累算機能をサポートするための、それぞれのスライス出力ポートに接続されるフィードバックポートと、カスケード接続を促進するために上流のスライスの出力ポートに接続されるカスケード入力ポートとをさらに含む。
【００１１】
カスケード接続されたＤＳＰスライスの１つの種類は、加算器に供給する積生成器を有する演算回路を含む。積生成器は、第１のオペランド入力ポートに接続される乗数ポートと、第２のオペランド入力ポートに接続される被乗数ポートと、１対の部分積ポートとを有する。加算器は、それぞれの部分積ポートに接続される第１および第２の加数ポートと、カスケード入力ポートに接続される第３の加数ポートと、和ポートとを含む。したがって加算器は、部分積を加算して乗算を完了するか、または部分積を上流のスライスからの出力に加算する。カスケードと累算接続とは、速度性能を最適化し、汎用配線に対する要求を減じ、かつ電力を減じるために、実質的に直接的である（すなわち、これらは汎用配線を横断しない）。
【００１２】
この発明の一実施例は、集積回路を含み、該集積回路は、第１のデジタル信号処理（ＤＳＰ）素子および第２のＤＳＰ素子を含む複数のＤＳＰ素子を含み、各ＤＳＰ素子は実質的に同一の構造を有し、各ＤＳＰ素子はハードワイヤード加算器に接続されるスイッチを有し、該集積回路はさらに、第１のＤＳＰ素子を第２のＤＳＰ素子に接続する専用信号線を含む。さらに、スイッチはハードワイヤード加算器への入力を選択するマルチプレクサを含む。
【００１３】
この発明の別の実施例は集積回路を含み、該集積回路は、複数の構成可能機能ブロックと、複数の構成可能機能ブロックのいくつかを接続するプログラマブル配線リソースと、第１のデジタル信号処理（ＤＳＰ）素子および第２のＤＳＰ素子を含む複数のＤＳＰ素子とを含み、各ＤＳＰ素子は実質的に同一の構造を有し、かつハードワイヤード加算器に接続されるスイッチを含み、該集積回路はさらに、第１のＤＳＰ素子を第２のＤＳＰ素子に接続する専用信号線を含み、該専用信号線はプログラマブル配線リソースを何ら含まない。
【００１４】
この発明のさらなる別の実施例は集積回路を含み、該集積回路は、第１のデジタル信号処理（ＤＳＰ）素子および第２のＤＳＰ素子を含む複数のＤＳＰ素子を有し、各ＤＳＰ素子は実質的に同一の構造を有し、各ＤＳＰ素子はハードワイヤード乗算器を含み、該集積回路はさらに、第１のＤＳＰ素子を第２のＤＳＰ素子に接続する専用信号線を含む。
【００１５】
この発明のさらなる実施例は、集積回路装置におけるＤＳＰ素子を含み、該集積回路は、第１のスイッチと、第１のスイッチに接続される乗算回路と、乗算回路に接続される第２のスイッチと、第２のスイッチに接続される加算回路とを有する。
【００１６】
この発明の一実施例においては、ＤＳＰ機能を変更するために、１つ以上のモードレジスタの内容が装置の動作の間に変更される。モードレジスタは汎用配線、すなわちＰＬＤ内のプログラマブルルーティングリソース、に接続し、よってモードレジスタの内容を、したがってＤＳＰ機能を変更する制御信号を、装置の構成メモリの内容を変更する必要なく受けることができる。一実施例においては、モードレジスタはプログラマブル論理内の制御回路に接続され、変更はナノ秒のオーダ以下で生じ、構成メモリのリロードは、変更されるビットの数に依存して、マイクロ秒のオーダで、またはミリ秒のオーダでも生じ得る。別の実施例においては、１つ以上のモードレジスタはカリフォルニア州サンノゼのザイリンクスのVirtex II Proにおけるような１つ以上の組込みプロセッサに接続され、よって、モードレジスタの内容は、実質的に組込みプロセッサのクロック速度で変更可能である。
【００１７】
構成メモリに書込むことなく異なったＤＳＰアルゴリズムを行なうようＤＳＰリソースを変更することを、ここで「ダイナミック」制御と称して、構成メモリの内容を変更することにより異なったＤＳＰ機能を行なうよう再構成可能であるプログラマブル論理から区別する。多くの場合、構成メモリの内容の変更には過度に時間がかかるので、ダイナミッ
ク制御が好ましい。いくつかのＤＳＰ用途はダイナミック制御を必要としないが、その場合、ＤＳＰ機能は構成メモリのローディング（またはリローディング）の間に定義可能である。
【００１８】
他の実施例においては、ＦＰＧＡ構成メモリは、ＤＳＰ機能を変更するためにダイナミック制御とともに再構成可能である。一実施例においては、ＤＳＰ機能を変更するためのモードレジスタのダイナミック制御と、ＤＳＰ機能を変更するためのＦＰＧＡ構成メモリのリロードとの相違は、変更の速度であり、構成メモリをリロードすることはダイナミック制御よりも時間がかかる。従来の構成メモリセルを、別々にアドレス可能な読出／書込メモリセルに置換する代替的な実施例においては、殆ど相違はなく、実質的に同じ速度でダイナミック制御または再構成のいずれかまたはその両方を行ない得る。
【００１９】
この発明の実施例は、ＤＳＰ回路を有する集積回路を含む。ＤＳＰ回路は、入力データレートでデータを受けるための入力データポートと、入力ポートに結合される乗算器と、第１のプログラマブルルーティング論理によって乗算器に結合される加算器と、第１のプログラマブルルーティング論理に結合されるレジスタとを含み、レジスタは、入力データレートと少なくとも同じオーダの程度で、第１のプログラマブルルーティング論理における異なったルートを構成することが可能である。
【００２０】
この発明の別の実施例は、集積回路上のＤＳＰ論理回路を構成するための方法を含み、ＤＳＰ論理回路はスイッチに接続される乗算器と、スイッチに接続される加算器とを有する。方法は、ａ）乗算器によって入力データレートで入力データを受けるステップと、ｂ）乗算器からの出力結果をスイッチにルーティングするステップと、ｃ）スイッチが、１組の加算器入力から加算器入力を選択するステップとを含み、該１組の加算器入力は該出力結果を含み、選択するステップは、制御レジスタの内容に応答し、制御レジスタは入力データレートの関数であるクロックレートを有し、方法はさらに、ｄ）加算器によって加算器入力を受けるステップをさらに含む。
【００２１】
一実施例に従ったプログラマブル論理装置は、いくつかの従来のＰＬＤ構成要素を含み、該ＰＬＤ構成要素は、複数の構成可能論理ブロックと、いくつかの構成可能配線リソースと、いくつかのダイナミックＤＳＰリソースとを含む。ダイナミックＤＳＰリソースは、一実施例においては、少なくともＤＳＰスライスおよび少なくとも１つの上流のＤＳＰスライスまたは少なくとも１つの下流のＤＳＰスライスを含む、複数のＤＳＰスライスである。構成可能メモリは、論理ブロック、配線リソース、およびＤＳＰスライスの回路構成を定義する構成データを記憶する。
【００２２】
一実施例においては、各ＤＳＰスライスは、後段に加算器を備えた積生成器を含む。ダイナミック機能をサポートして、各ＤＳＰスライスはさらに、モードレジスタの内容に基づいて加算器への入力を制御する多重化回路を含む。モードレジスタの内容と、したがって多重化回路の接続性とに基づいて、加算器は加数のさまざまな組合せを加算可能である。所与のスライスにおける選択された加数は、次いでそれぞれのモードレジスタに異なった組のモード制御信号を発生することにより、ダイナミックに変更され得る。
【００２３】
ダイナミックにＤＳＰ機能を変更する能力は、同じＤＳＰリソースによって異なったときにＤＳＰアルゴリズムの２つ以上の部分が実行される、複雑なシーケンシャルなＤＳＰ機能をダイナミックにサポートする。一実施例においては、プログラマブル論理において実現されるステートマシンがＤＳＰリソースのダイナミックな機能を制御するモード制御信号を発生する。いくつかのＰＬＤは組込みマイクロプロセッサまたはマイクロコントローラ、および匹敵するマイクロプロセッサ（たとえばカリフォルニア州サンノゼのザイリンクスのMicroBlaze（登録商標））を含み、これらもまたステートマシンの代わりに、ま
たはこれに加えて、モード制御信号を発生可能である。
【００２４】
いくつかの実施例に従ったＤＳＰスライスは、たとえば０から２クロックサイクルの異なった量の遅延を導入するよう構成可能である、プログラマブルオペランド入力レジスタを含む。そのような実施例の１つにおいては、各ＤＳＰスライスは、乗数ポートと、被乗数ポートと、１つ以上の積ポートとを有する積生成器を含む。乗数ポートおよび被乗数ポートは、それぞれの第１および第２のオペランド入力レジスタを介してオペランド入力ポートに接続し、該レジスタの各々が０から２クロックサイクルの遅延を導入可能である。一実施例においては、少なくとも１つのオペランド入力レジスタの出力が、オペランドがいくつかのスライスを通してカスケード接続され得るように、下流のＤＳＰスライスのオペランド入力レジスタの入力に接続する。
【００２５】
多くのＤＳＰ回路および構成は、数を多くのディジットまたはビットで乗算して、相当に増大したディジットまたはビットの積を生成する。大きな、不必要に厳密である積の操作には手間がかかりリソース集約的であるので、そのような積はしばしば所望の数のビットに丸められる。いくつかの実施例は、さらなるリソースを殆ど必要とせず、丸め処理に関わるビットの数を変更するのにダイナミックに調整可能である、高速なフレキシブルな丸め処理を採用する。
【００２６】
一実施例に従ったダイナミックな丸め処理を提供するよう適合されるＤＳＰスライスは、丸め定数を受けるさらなるオペランド入力ポートと、丸めるべき数の符号に基づき訂正係数を発生する訂正回路とを含む。加算器は次いで、丸められるべき数を訂正係数および丸め定数に加算して、丸められた結果を得る。一実施例においては、訂正回路は乗数および被乗数の符号から訂正係数を計算し、それにより乗数および被乗数の積に先立って訂正係数が準備されるようにする。
【００２７】
丸め方法において、最も近い整数に丸めるために、一実施例に従って適合されるＤＳＰスライスは、二進数２(N-1)および２(N-1)-1の群から選択される丸め定数を格納し、乗数符号ビットおよび被乗数符号ビットから訂正係数を計算し、丸め定数、訂正係数、および積を合計してＮ個の丸められた積を得る（但しＮは整数）。次いで丸められた積のＮ個の最下位ビットが切捨てられる。
【００２８】
ここで説明されるＤＳＰスライスは従来、１対の部分積を生成する積生成器と、部分積を合計する後段の加算器とを含む。一実施例に従うと、ＤＳＰスライスの柔軟性は、積生成器と加算器との間にマルチプレクサ回路を設けることにより向上する。従来のように、マルチプレクサ回路は部分積を加算器に与えることができ、かついくつかのさらなる加数入力から選択することが可能である。さらなる加数は、上流のスライスからカスケード接続される入力および出力と、対応のＤＳＰスライスの出力とを含む。いくつかの実施例においては、モードレジスタがマルチプレクサ回路を制御し、選択された加数がダイナミックにスイッチされることを可能にする。
【００２９】
この要約は発明を限定するものではなく、発明は特許請求の範囲によって定義される。
【発明を実施するための最良の形態】
【００３０】
詳細な説明
以下の議論は５つのセクションに分割され、各々が向上したＤＳＰ性能および低減した電力散逸を提供するための方法およびシステムを詳細に説明する。これらの実施例はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）アーキテクチャに関連して説明されるが、ここで説明される方法および回路はＦＰＧＡに限定されない。一般的に、特定用途向け集積回路（ＡＳＩＣ）を含む何らかの集積回路（ＩＣ）および／または、複数のプログラ
マブル機能素子および／または複数のプログラマブルルーティングリソースを含むＩＣおよび／または、マイクロプロセッサまたはマイクロコントローラを有するＩＣもまたこの発明の範囲に含まれる。プログラマブル機能素子の例はＣＬＢ、論理ブロック、論理アレイブロック、マクロセル、論理セル、論理セルアレイ、マルチギガビットトランシーバ（ＭＧＴ）、特定用途向け回路、および機能ブロックである。プログラマブルルーティングリソースの例は、プログラマブル配線ポイントを含む。さらに、この発明の実施例は典型的にはプログラマブル論理とは称しない、いわゆる「システムオンチップ」のような信号処理に用いるための専用のものなどの、集積回路に組入れられてもよい。
【００３１】
例示の目的で、たとえば１８ビット入力バスおよび４８ビット出力バスの特定のバスサイズが示され、OpModeレジスタについて７ビットなどの例示的なレジスタサイズが示されるが、多くの他のバスおよびレジスタサイズを用いることが可能であってやはりこの発明の範囲にあることが、当業者には明らかであろう。
【００３２】
カスケード接続するＤＳＰスライスを備えたＤＳＰアーキテクチャ
図１Ｃは、この発明の実施例のＦＰＧＡの簡略化された模式図である。図１Ｃは、多数の異なったプログラマブルタイルを含むＦＰＧＡアーキテクチャ１８０を示し、このプログラマブルタイルは、マルチギガビットトランシーバ（ＭＧＴ１８１）、プログラマブル論理ブロック（ＬＢ１８２）、ランダムアクセスメモリブロック（ＢＲＡＭ１８３）、入力／出力ブロック（ＩＯＢ１８４）、構成およびクロック論理（構成／クロック１８５）、デジタル信号処理ブロック（ＤＳＰ２０５）、特化入力／出力ブロック（Ｉ／Ｏ１８７）（たとえば、構成ポートおよびクロックポート）、ならびに、デジタルクロックマネージャ、アナログ−デジタルコンバータ、システム監視論理などの他のプログラマブル機能１８８を含む。いくつかのＦＰＧＡは、専用プロセッサブロック（ＰＲＯＣ１９０）をも含む。
【００３３】
いくつかのＦＰＧＡにおいては、各プログラマブルタイルはプログラマブル配線素子、すなわち、各隣接タイルにおける対応のスイッチとの間の標準化接続を有するスイッチ（ＳＷ）１２０を含む。したがって、スイッチ１２０は併せて、図示されるＦＰＧＡのためのプログラマブル配線構造を実現する。図１Ｃの頂部のＬＢタイル１８２によって例示されるように、ＬＢ１８２はスイッチ１２０に接続されるＣＬＢ１１２を含み得る。
【００３４】
ＢＲＡＭ１８２は、１つ以上のスイッチに加えてＢＲＡＭ論理素子（ＢＲＬ１９４）を含み得る。典型的には、タイル内に含まれるスイッチ１２０の数は、タイルの高さに依存する。図示される実施例においては、ＢＲＡＭタイルは４つのＣＬＢと同じ高さを有するが、他の数（たとえば５つ）を用いてもよい。ＤＳＰタイル２０５は、たとえば、適切な数のスイッチ（この例においては４つのスイッチ１２０）に加えて、たとえば２つのＤＳＰスライス（ＤＳＰＳ２１２）を含み得る。ＩＯＢ１８４は、スイッチ１２０の１つのインスタンスに加えて、入力／出力論理素子（ＩＯＬ１０５）の２つのインスタンスを含み得る。当業者には明らかであるように、たとえばＩ／Ｏ論理素子１８４に接続する実際のＩ／Ｏパッドは、さまざまな図示される図示ブロック上に積層される金属を用いて製造され、典型的には入力／出力論理素子１８４の領域に限定されない。
【００３５】
図示される実施例においてダイの中央付近の列状領域（図１Ｃにおける網掛け部分）が、構成、クロックおよび他の制御論理のために用いられる。この列から延在する水平領域１８９は、ＦＰＧＡの幅を亘ってクロックおよび構成信号を分配するために用いられる。
【００３６】
図１Ｃに示されるアーキテクチャを用いるいくつかのＦＰＧＡは、ＦＰＧＡの大部分を構成する規則的な列状構造を分断するさらなる機能ブロックを含む。さらなる機能ブロックは、プログラマブルブロックおよび／または専用論理であり得る。たとえば、図１Ｃに
示されるプロセッサブロックＰＲＯＣ１９０は、ＣＬＢおよびＢＲＡＭのいくつかの列にまたがる。
【００３７】
図１Ｃは、例示的なＦＰＧＡアーキテクチャのみを示すことが意図されることに留意されたい。列中の機能ブロックの数、列の相対的な幅、列の数および順序、列に含まれる機能ブロックの種類、機能ブロックの相対的サイズ、ならびに図１Ｃの頂部に含まれる配線／論理実現例は、純粋に例示的なものである。たとえば、実際のＦＰＧＡにおいては、ＣＬＢが出現するときにはいつでも、１つ以上の隣接するＣＬＢの列が典型的には含まれて、ユーザ論理の効率的な実現を促進する。「列」という用語は、列または行もしくは機能ブロックおよび／またはタイルの他の何らかの集合をも含み、例示的な目的でのみ用いられることに留意されたい。
【００３８】
図２Ａは、さまざまなサイズおよび複雑性の複雑なＤＳＰ回路を生成するためにＤＳＰリソースのカスケード接続をサポートする実施例に従ったＦＰＧＡ２００を示す。カスケード接続は有利に、ＤＳＰ回路を実現するのに必要であるリソースの量を、回路の複雑性とともに極めて直線的に拡張させる。図２Ａに示されるＦＰＧＡ２００の回路部分は、一実施例における図１Ａおよび図１ＢのＦＰＧＡ１００の一部であって、かつ別の実施例における図１ＣのＦＰＧＡ１８０の一部であってもよく、同様の番号が付された要素は同一であるかまたは同様である。ＦＰＧＡ２００がＦＰＧＡ１００とは異なるのは、ＦＰＧＡ２００が減じられた消費電力および改良された速度性能のための実質的に直接的な、高速のカスケード接続をサポートする１つ以上の列のＤＳＰタイル２０５（たとえば、総称してＤＳＰタイル２０５と称するタイル２０５−１および２０５−２）を含む点である。各ＤＳＰタイル２０５は、２つのＤＳＰスライス２１２を含み（たとえば、ＤＳＰタイル２０５−１はスライス２１２−１および２１２−２を有し、ＤＳＰタイル２０５−２はスライス２１２−３および２１２−４を有する）、各ＤＳＰスライスはスイッチマトリクス２２０を介して汎用配線ライン１２５に接続する。
【００３９】
タイル２０５−１について、入ってくる信号は、入力バス２２２上のスライス２１２−１および２１２−２に到着する。ＯＵＴ＿１およびＯＵＴ＿２ポートから出る信号は、出力バス２２４を介して汎用配線リソースに接続される。
【００４０】
いくつかの用途に対しては、入力バス２２２および出力バス２２４ならびに関連の汎用配線は過度に遅く、領域集約的であるか、電力を過度に消費する虞がある。各ＤＳＰスライス２１２、たとえば２１２−１、２１２−２、２１２−３、および２１２−４（総称してＤＳＰスライス２１２）は、したがって２つの高速ＤＳＰスライス出力ポートを含み、これらは入力−下流カスケード（ＩＤＣ）ポートおよびＯＵＴポートであって、それぞれ、隣接するＤＳＰスライスの入力−上流カスケード（ＩＵＣ）ポートと上流−出力カスケード（ＵＯＣ）ポートとにそれぞれ接続される。（他の参照符号とともに、ここで、ＩＤＣ、累算フィードバック（ＡＣＣ）、ＩＵＣ、およびＵＯＣは、信号とそれらの対応の物理的ノード、ポート、線または端子との両方を示す。所与の参照符号が信号または物理的構造のいずれを指すかは内容から明らかであろう。）
図２Ａの例においては、出力ポートＯＵＴは、選択されたＤＳＰスライス（たとえばスライス２１２−２）から下流ＤＳＰスライス（たとえばスライス２１２−１）のポートＵＯＣに直接接続する。さらに、上流ＤＳＰスライス（たとえばスライス２１２−３）からの出力ポートＯＵＴは、選択されたＤＳＰスライス、たとえば２１２−２のポートＵＯＣに直接接続する。例示を容易にするために、特記しない限り、「上流」および「下流」という用語は、カスケード接続されたＤＳＰスライスにおけるデータフローの方向を指す、すなわちデータフローは上流から下流に向かう。しかしながら、代替的な実施例は、データフローが下流から上流に向かう場合、または上流から下流へのまたは下流から上流へのいずれの組合せをも含む。各ＤＳＰスライス２１２の出力ポートＯＵＴもまた、同じＤＳ
Ｐスライス（図示せず）の入力ポート、たとえば累算フィードバック（ＡＣＣ）に内部で接続される。いくつかの実施例においては、隣接するＤＳＰスライス間の接続は、接続が汎用配線を横断しなければ直接接続であり、汎用配線は、たとえばＣＬＢを接続するために典型的に用いられるプログラマブルルーティングリソースを含む。直接接続は、隣接するスライスからのデータストリームのバージョンを維持する、遅延回路、インバータ、またはシンクロナス素子のような、介在する素子を含み得る。代替的な実施例においては、隣接するＤＳＰスライス間の接続は間接的であるかおよび／または汎用配線を横断し得る。
【００４１】
図２Ｂは、タイル２０５−１の図２Ａのスイッチ２２０の拡大図のブロック図である。一実施例におけるタイル２０５−１は、長さが４ＣＬＢタイルである。４つの隣接するＣＬＢタイルにおける４つのスイッチは、スイッチ１２０−１、１２０−２、１２０−３、および１２０−４によって図２ＡおよびＢに示される。スイッチ２２０は、４つのスイッチ２３０−１、２３０−２、２３０−３、および２３０−４を含み、これらはそれぞれスイッチ１２０−１、１２０−２、１２０−３、および１２０−４に接続される。スイッチ２２０の出力はバス２２２上にあり、図３Ａを参照して、Ａ１、Ａ２、Ｂ１、Ｂ２およびＣで示される。Ａ１およびＡ２はそれぞれ、ＤＳＰ論理３０７−１のＡ１およびＤＳＰ論理３０７−２のＡ２への、各々１８ビット入力である（図３Ａ）。Ｂ１およびＢ２は、それぞれ、ＤＳＰ論理３０７−１のＢ１およびＤＳＰ論理３０７−２のＢ２への、各々１８ビット入力である。図２Ｂにおける４８ビット出力Ｃは、図３Ａのレジスタ３００−１に接続される。一実施例においては、Ａ１、Ａ２、Ｂ１、Ｂ２およびＣに対する出力ビットは、スイッチ２３０−１から２３０−４からのビット群で受けられる。たとえば、ビットピッチ、すなわち群の中のビットは、４のＣＬＢビットピッチと一致させるために４に設定され得る。図３Ａにおいて、ＯＵＴ１およびＯＵＴ２がそれぞれＤＳＰ論理３０７−１および３０７−２から受けられ、これらが図２Ｂにおけるスイッチ２３０−１から２３０−４を横断して縞状に示されている。
【００４２】
図３Ａは、図２のＦＰＧＡ２００の一実施例に従った１対のＤＳＰタイル２０５−１および２０５−２を詳細に示す。図２Ａに示すように、（総称してタイル２０５と称する）各ＤＳＰタイル、たとえば２０５−１は、（総称してスライス２１２と称する）１対のＤＳＰスライス、たとえば２１２−１および２１２−２を含む。例示のために、スライス２１２−２は上流スライス２１２−３および下流スライス２１２−１を有する。各スライス、たとえば２１２−２は、（総称してＤＳＰ論理３０７と称する）いくつかのＤＳＰ論理、たとえば３０７−２およびモードレジスタ、たとえば３１０−２を含む。（総称してモードレジスタ３１０と称する）各モードレジスタ、たとえば３１０−２は、関連のＤＳＰ論理、たとえば３０７−２の（総称して制御ポート３２０と称する）制御ポート、たとえば３２０−２に対して制御信号を与える。モードレジスタはそれぞれのスライスの機能を個々に定義し、かつスライスの群の機能および接続性を総称的に定義する。各モードレジスタは、（集合的にモードバス３１５−１、３１５−２および３１５−３を表わす）モードバス３１５を介して汎用配線に接続し、したがってスライス２１２の外部の回路から制御信号を受けることが可能である。
【００４３】
入力側に、ＤＳＰ論理３０７は３つのオペランド入力ポートＡ、Ｂ、Ｃを含み、その各々が専用のオペランドバスを介して汎用配線にプログラム可能に接続する。所与のＤＳＰタイル２０５たとえばタイル２０５−１の、両方のスライス２１２たとえばスライス２１２−１および２１２−２に対するオペランド入力ポートＣは、オペランドバスおよび関連のオペランドレジスタ３００たとえばレジスタ３００−１（すなわち、Ｃレジスタ）を共有する。出力側に、ＤＳＰ論理３０７たとえば３０７−１および３０７−２は、出力ポートＯＵＴたとえばＯＵＴ１およびＯＵＴ２を、バス１７５を介して汎用配線にプログラム可能に接続される。
【００４４】
各ＤＳＰスライス２１２は、高速ＤＳＰ動作を促進する以下の直接接続を含む。
出力ポートＯＵＴ、たとえばスライス２１２−２のＯＵＴ２は、入力累算フィードバックポートＡＣＣと、下流スライスたとえば２１２−１の上流−出力カスケードポート（ＵＯＣ）とに直接的に接続する。
【００４５】
入力−下流カスケードポート（ＩＤＣ）は、下流スライスたとえば２１２−１の入力−上流カスケードポートＩＵＣに直接接続する。隣接スライスからの対応のポートＩＤＣおよびＩＵＣは、上流スライスがオペランドを下流スライスに渡すことを可能にする。カスケード接続する動作（および１つのスライスから別のものへのオペランドデータの転送）は、図９を含むいくつかの図面を参照して以下に説明する。
【００４６】
例示のために図３Ａを用いて、この発明の別の実施例において、スライス２１２−１および２１２−３は、サブモジュールまたはＤＳＰ素子であって、構造的に各サブモジュールは実質的に同一である。代替的な実施例においては、２つのサブモジュールは機能的に実質的に同一である。２つのサブモジュールは、２つのサブモジュール２１２−１および２１２−２を併せて接続する専用内部信号線、たとえばＩＤＣ−ＩＵＣおよびＯＵＴ−ＵＯＣ信号線、を有する。２つのサブモジュールは、入力および出力ポートを有するモジュールを形成する。たとえば、モジュールの入力ポートは、各サブモジュール３１５−１および３１５−２のＡ、Ｂ、Ｃであり、モジュールの出力ポートはサブモジュール２１２−１および２１２−２のＯＵＴポートである。モジュールの入力および出力ポートは、モジュールの外部の信号線に接続し、かつモジュールを集積回路上の他の回路に接続する。ＰＬＤたとえばＦＰＧＡの場合には、接続は汎用配線、すなわち他の回路と相互接続するプログラマブル配線リソースである。ＰＬＤではないＩＣたとえばＡＳＩＣの場合には、この他の回路はプログラマブル機能および／またはプログラマブル配線リソースを含んでも含まなくてもよい。さらなる別の実施例においては、モジュールは３つ以上のサブモジュール、たとえば２１２−１、２１２−２、および２１２−３を含み得る。
【００４７】
図３Ｂは、この発明の別の実施例のＤＳＰタイル３２０のブロック図である。ＤＳＰタイル３２０は、図２および図３に示されるＤＳＰタイル２０５の例である。ＤＳＰタイル３２０は、２つのクロック入力ｃｌｋ＿０およびｃｌｋ＿１から選択するマルチプレクサ３２２を有する。マルチプレクサ３２２のクロック出力は、Ｃレジスタ３２４のクロック入力に入力される。Ｃレジスタ３２４は、Ｃ＿０＿１データ入力３２５を受取る。第２のマルチプレクサ３２６は、Ｃレジスタ３２４に格納されたＣデータかまたはＣ＿０＿１データ入力３２５のいずれかをＤＳＰスライス３３０およびＤＳＰスライスＤＳＰ３３２のＣ入力に送る。ＤＳＰスライス３３０およびＤＳＰスライス３３２はＡデータについての入力Ａ、Ｂデータについての入力Ｂ、減算およびキャリーイン制御信号、およびOpModeデータ（スライスの機能をダイナミックに制御するための制御データ）を有する。これらの入力は、汎用配線から入来する。ＤＳＰスライス３３０およびＤＳＰスライス３３２からの出力データは、汎用配線を駆動するＯＵＴポートを介して出力される。ＦＰＧＡプログラマブル配線ファブリックの実施例は、スティーブ・Ｐ・ヤング（Steve P. Young）他の「ＦＰＧＡプログラマブル配線ファブリック」と題される１９９９年６月２２日発行の米国特許第５，９１４，６１６号、およびスティーブ・Ｐ・ヤング他の２００２年９月１０日発行の米国特許第６，４４８，８０８Ｂ２号に見出される。
【００４８】
ＤＳＰスライス３３０は、上流ＤＳＰタイルからのデータをＩＵＣおよびＵＯＣ入力ポートを介して受ける。ＤＳＰスライスの３３０ＩＤＣおよびＯＵＴ出力ポートは、ＤＳＰスライスの３３２ＩＵＣおよびＵＯＣ入力ポートにそれぞれ接続される。ＤＳＰスライス３３２は、ＩＤＣおよびＯＵＴ出力ポートを介してデータを下流ＤＳＰタイルに送る。
【００４９】
図３Ｃは、この発明の一実施例の図３ＡのＤＳＰ素子またはＤＳＰスライス２１２−２の概略図である。参照をわかりやすくするために、図３Ｂおよび図３Ｃで同様の要素を示すのに同様の符号が用いられる。マルチプレクサ３５８は、上流ＢＲＥＧ（Ｂレジスタ）からの１８ビットＢ入力データまたは１８ビットＩＵＣデータを選択する。マルチプレクサ３５８の出力は、ＢＲＥＧ３６０すなわち０、１またはそれ以上のレジスタのカスケードに格納される。ＢＲＥＧ３６０の出力は、ＩＤＣを介して下流スライスに送られるか、またはブース／アレイ低減ユニット３６４への第１の入力として用いられるか、またはその両方である。１８ビットＡ入力データは、ＡＲＥＧ（Ａレジスタ）３６２すなわち、０、１またはそれ以上のレジスタのカスケードによって受けられ、ＡＲＥＧ３６２の出力はＢＲＥＧ３６０の出力に連結されて（Ａ：Ｂ）、Ｘマルチプレクサ（ＸＭＵＸ）３７０に送られるか、またはブース／アレイ低減ユニット３６４の第２の入力として用いられるか、またはその両方である。ブース／アレイ低減ユニット３６４は、１８ビット被乗数および１８ビット乗数入力を取込んで、２つの３６ビット部分積出力を生成し、これらはＭＲＥＧ３６８すなわち１つ以上のレジスタに格納される。２つの部分積出力の第１の３６ビット部分積出力は、Ｘマルチプレクサ（ＸＭＵＸ）３７０に送られ、２つの部分積出力のうちの第２の３６ビット部分積出力は、Ｙマルチプレクサ（ＹＭＵＸ）３７２に送られる。これらの２つの３６ビット部分積出力は加算器／減算器３８２において併せて加算され、ＡＲＥＧ３６２およびＢＲＥＧ３６０に格納された１８ビット被乗数値と１８ビット乗数値との積を生成する。代替的な実施例においては、ブース／アレイ低減ユニット３６４は２つの１８ビット入力を受ける乗算器に置換されて、単一の３６ビット積を生成するが、これはＸＭＵＸ３７０またはＹＭＵＸ３７２のいずれかに送られる。
【００５０】
図３Ｃにおいて、OpModeレジスタ３１０−２からの選択制御入力を有する、３つのマルチプレクサＸＭＵＸ３７０、ＹＭＵＸ３７２、およびＺＭＵＸ３７４がある。OpModeレジスタ３１０−２は、フルに動作するプログラマブルファブリックのクロック速度で典型的には書込まれる。ＸＭＵＸ３７０は少なくとも、ＭＲＥＧ３６８の出力の一部、または定数「０」、または３６ビットＡ：Ｂ、またはマルチプレクサ３８６の出力ＯＵＴからの４８ビットフィードバックＡＣＣを選択する。ＹＭＵＸ３７２は少なくとも、ＭＲＥＧ３６８の別の部分、定数「０」、またはＣデータの４８ビット入力を選択する。ＺＭＵＸ３７４は、Ｃデータの４８ビット入力、または定数「０」または上流スライスからの（１７ビット右シフトされたまたはシフトされない）４８ビットＵＯＣデータ、またはマルチプレクサ３８６の出力ＯＵＴからの（１７ビット右シフトされたまたはシフトされない）４８ビットフィードバックを選択する。右シフトは、符号拡張によるＬＳＢ方向の算術シフトである。マルチプレクサＸＭＵＸ３７０、ＹＭＵＸ３７２、およびＺＭＵＸ３７４は、各々４８ビット出力を、キャリー伝搬加算器を含む加算器／減算器３８２に送る。キャリーインレジスタ３８０は、加算器／減算器３８２にキャリーイン入力を与え、減算レジスタ３７８は、いつ加算器／減算器３８２が加算または減算を行なうべきかを示す。加算器／減算器３８２の４８ビット出力は、ＰＲＥＧ３８４に格納されるかまたはマルチプレクサ３８６に直接送られる。ＰＲＥＧ３８４の出力は、マルチプレクサ３８６に接続される。マルチプレクサ３８６の出力は、スライス２１２−２と下流スライスへの出力との両方である出力ＯＵＴに向かう。また、ＯＵＴはＸＭＵＸ３７０およびＺＭＵＸ３７４にフィードバックされる（すなわち、２つのＡＣＣフィードバック経路が存在する）。一実施例においては、マルチプレクサ３５８および３８６の選択ポートは、ＦＰＧＡに対する構成メモリが構成または再構成された場合に設定または更新される１つ以上の構成メモリセルに各々接続される。こうして、マルチプレクサ３５８および３８６における選択は、構成メモリに格納された論理値によって制御される。代替的な実施例においては、マルチプレクサ３５８および３８６選択ポートは汎用配線に接続され、ダイナミックに修正され得る。
【００５１】
図３Ｄは、この発明の別の実施例の図３ＡのＤＳＰスライス２１２−２の概略図である。図３Ｄは、ブース／アレイ低減ユニット３６４およびＭＲＥＧ３６８がない点以外は図
３Ｃと同様である。よって、図３Ｄは、乗算器のないスライスの実施例を示す。
【００５２】
図３Ｅは、この発明のさらに別の実施例のＤＳＰタイルのブロック図である。ＤＳＰタイル２０５は、２つの素子またはスライス３９０および３９１を有する。代替的な実施例においては、ＤＳＰタイルは、タイル毎に１、２またはそれ以上のスライスを有し得る。よって、２という数は、この発明のいくつかの実施例のためにだけ採用されており、他の実施例はタイル毎に１、２またはそれ以上のスライスを有し得る。ＤＳＰスライス３９１はＤＳＰスライス３９０と実質的に同一または同様であるので、ＤＳＰスライス３９０の構造のみをここで説明する。ＤＳＰスライス３９０は、任意のパイプラインレジスタと、ルーティング論理３９２とを含み、これはＩＣ上の他の回路からの３つのデータ入力Ａ、Ｂ、およびＣと、ＤＳＰスライス３９１のＩＤＣからの１つのＩＵＣデータ入力とを受ける。任意のパイプラインレジスタおよびルーティング論理３９２は、ＩＤＣ信号を他の下流スライス（図示せず）に送り、乗数および被乗数出力信号を乗算器３９３に送り、直接出力をルーティング論理３９５に送る。ルーティング論理３９２は、どの入力（Ａ、Ｂ、Ｃ）がどの出力に向かうかを決定する。乗算器３９３は、任意のレジスタ３９４に乗算器の積を格納し、任意のレジスタ３９４は出力をルーティング論理３９５に送る。この実施例においては、乗算器は２つの部分積ではなく完全な積を出力する。
【００５３】
ルーティング論理３９５は、任意のレジスタ３９４からの入力と、任意のパイプラインレジスタおよびルーティング論理３９２からのＵＯＣ（これはスライス３９１からの任意のパイプラインレジスタおよびルーティング論理３９８の出力−下流カスケード（ＯＤＣ）ポートに接続される）と、任意のパイプラインレジスタおよびルーティング論理３９７からのフィードバックとを受ける。ルーティング論理３９５からの２つの出力は、加算または減算のために加算器３９６に入力される。別の実施例においては、加算器３９６は演算論理装置（ＡＬＵ）で置換されて、論理およびまたは算術演算を行なう。加算器３９６の出力は、任意のパイプラインレジスタおよびルーティング論理３９７に送られる。任意のパイプラインレジスタおよびルーティング論理３９７の出力はＯＵＴであり、これはＩＣ上の他の回路、ルーティング論理３９５およびＯＤＣへ向かい、ＯＤＣは下流のスライスに接続される（図示せず）。
【００５４】
代替的な実施例においては、スライス３９０のＯＵＴは隣接する水平方向のスライス（図示せず）のＣ入力（またはＡまたはＢ入力）に直接接続されてもよい。両方のスライスが実質的に同じ構造を有する。よって、この発明のさまざまな実施例においては、スライスは垂直に、または水平に、またはその両方にカスケード接続され得る。
【００５５】
図３Ｆは、この発明の別の実施例に従った複数のＤＳＰ素子を示す。図３Ｆは、実質的に同一の構造を有する２つのＤＳＰ素子６６０−１および６６０−２を示す。信号線６４２および６４４は、専用信号線を渡って２つのＤＳＰ素子を相互接続する。ＤＳＰ素子６６０−１は、乗算回路６３２に接続される第１のスイッチ６３０と、加算回路６３６に接続される第２のスイッチ６３４とを含み、乗算回路６３２は第２のスイッチ６３４に接続される。スイッチ６３０および６３４は、たとえば、レジスタ、ＲＡＭ、または構成メモリを用いることによりプログラム可能である。入力データレートでの入力データは、入力線６４０上のＤＳＰ素子６６０−１によって受けられ、ＤＳＰ素子６６０−１の出力データは出力データレートで出力線６５４に送られる。ＤＳＰ素子６６０−２からの入力データは、信号線６４２および６４４上のＤＳＰ素子６６０−１によって受けられ、ＤＳＰ素子６６０−１からＤＳＰ素子６６０−１の上の第３のＤＳＰ素子（図示せず）への出力データはまた、専用信号線６５０および６５２を介して送られる。ＤＳＰ素子６６０−１は、乗算回路６３２をバイパスし得る任意の信号線６５６と、出力６５４を第２のスイッチ６３４に戻す任意のフィードバック信号線６５８とをも有する。
【００５６】
一実施例における第１のスイッチ６３２および第２のスイッチ６３４は、選択線を１つ以上のレジスタに接続されるマルチプレクサを含む。レジスタの内容は、必要であれば入力データレート（または出力データレート）の大きさのオーダで変更可能である。別の実施例においては、第１のスイッチ６３２は１つ以上のマルチプレクサを有し、その選択線は構成メモリセルに接続されて、構成メモリの内容が変更されることによってのみ変更される。再構成についてのさらなる説明は、ブランドン・Ｊ・ブロジェット（Brandon J. Blodget）他の「内部制御を用いたプログラマブル論理装置の再構成」と題される米国特許出願第２００４／０１１７７５５Ａ１号に開示される。上述の実施例と同様に、第２のスイッチ６３４はその選択線をレジスタ（たとえば１つ以上のフリップフロップ）に接続される。さらに別の実施例においては、第１のスイッチ６３２および第２のスイッチ６３４の選択線は構成メモリセルに接続される。さらに別の実施例においては、第１のスイッチ６３２の選択線はレジスタに接続され、第２のスイッチ６３４の選択線は構成メモリセルに接続される。
【００５７】
スイッチ６３０および６３４は、ＦＩＦＯ（先入れ先出しキュー）、パイプラインレジスタ、および／またはバッファのような入力および／または出力キューを含み得る。乗算回路６３２および加算回路６３６は、１つ以上の出力レジスタまたはパイプラインレジスタまたはキューを含み得る。一実施例においては、第１のスイッチ６３０および乗算回路６３２は存在せず、ＤＳＰ素子６６０−１は第２のスイッチ６３４を有し、これは入力線６４０を受け、加算回路６３６に接続される。さらに別の実施例においては、乗算回路６３２および／または加算回路６３６は、１つ以上の数学的機能を果たし得る算術回路で置換される。
【００５８】
図３Ｇは、この発明のさらに別の実施例に従った複数のＤＳＰ素子を示す。図３Ｇは、図３Ｆにおいてはフィードバック信号６５８が６５２に接続されるのに対し、図３Ｇにおいてはフィードバック信号６５８が６５２’に接続されていない点以外は図３Ｆと同様である。
【００５９】
上述のように、この発明の実施例はＰＬＤまたはＦＰＧＡに限定されず、ＡＳＩＣをも含む。一実施例においては、図３Ａ−図３Ｆに示されるようなスライス設計、たとえば図３Ｄに示されるスライス２１２−２、および／または１つ以上のスライスを有するタイル設計が、標準セルＡＳＩＣ設計のセルライブラリコンポーネントとして、またはストラクチャードＡＳＩＣのライブラリモジュールとして用いるために、ハードウェア記述言語または他のコンピュータ言語でライブラリに格納されてもよい。別の実施例においては、ＤＳＰスライスおよび／またはタイルは、単一のシリコンダイ上にマスクプログラムド標準セル論理およびフィールドプログラマブルゲートアレイ論理の両方を有する混載ＩＣ設計の一部であってもよい。
【００６０】
図４は、一実施例に従ったＦＰＧＡ４００の一部の簡略化されたブロック図である。ＦＰＧＡ４００は従来、プログラマブル配線を有する汎用配線リソース４０５、および構成可能論理４１０を含み、一実施例に従うと、１対のカスケード接続されたＤＳＰタイルＤＳＰＴ０およびＤＳＰＴ１を含む。タイルＤＳＰＴ０およびＤＳＰＴ１は、図３Ａのタイル２０５−１および２０５−２と同様であり、同様に識別される要素は同一であるかまたは同様である。
【００６１】
タイルＤＳＰＴ０およびＤＳＰＴ１は同一であって、各々１対の同一のＤＳＰスライスＤＳＰＳ０およびＤＳＰＳ１を含む。各ＤＳＰスライスは以下を含む。
【００６２】
ａ．それぞれのオペランド入力ポートＡおよびＢに接続される１対のオペランド入力レジスタ４１２および４１４。
【００６３】
ｂ．レジスタ４１２に接続される被乗数ポートと、レジスタ４１４に接続される乗数ポートと、パイプラインレジスタ４１８に接続される積ポートとを有する、積生成器４１６。
【００６４】
ｃ．各入力線（図示せず）が論理０を表わす電圧レベル４２２に接続される第１の入力ポートと、パイプラインレジスタ４１８に接続される第２のポートと、出力ポートＯＵＴに接続される第３の入力ポート（第１のフィードバックポート）とを有する、第１のマルチプレクサ４２０。
【００６５】
ｄ．出力ポートＯＵＴ（第２のフィードバックポート）に接続される第１の入力ポートと、電圧レベル４２２に接続される第２の入力ポートと、上流ＤＳＰスライスの出力ポートＯＵＴに接続する、上流−出力カスケードポートＵＯＣとしての役割を果たす第３の入力ポートをとを有する、第２のマルチプレクサ４２４。
【００６６】
ｅ．マルチプレクサ４２０に接続される第１の加数ポートと、マルチプレクサ４２４に接続される第２の加数ポートと、ＤＳＰスライス出力レジスタ４３０を介して出力ポートＯＵＴに接続される和ポートとを有する、加算器４２６。
【００６７】
モードレジスタ３１０は、マルチプレクサ４２０および４２４の選択端子と加算器４２６の制御入力とに接続する。ＦＰＧＡ４００は、スライス２１２が所望のＤＳＰ構成を定義し、制御信号が初期および装置動作の間の任意のときにモードレジスタ３１０にロードされるように、汎用配線４０５を介して初期に構成され得る。
【００６８】
図５Ａは、一実施例に従った、転置された４タップの有限インパルス応答（ＦＩＲ）フィルタ５００を実現するよう適合される図４のＦＰＧＡ５００を示す。図５Ａの要素は図４のものと同一であるが、２つの理由から方策は異なる。第１に、図５Ａの汎用配線４０５は、データシリーズＸ（Ｎ）および４つのフィルタ係数Ｈ０−Ｈ３をＤＳＰスライスに伝達するよう構成される。第２に、図５Ａは、モードレジスタ３１０が各々制御信号を格納することを想定し、これらの制御信号は転置されたＦＩＲフィルタを実現するために要求される接続性および機能を集合的に定義する。フィルタ５００において用いられる信号経路およびバスは実線で示され、非活性（未使用）リソースは点線で示される。
【００６９】
タイルＤＳＰＴ０のスライスＤＳＰＳ０において、モードレジスタ３１０はマルチプレクサ４２０および４２４ならびに加算器４２６に対し動作して、スライスにパイプラインレジスタ４１８に格納された積を論理０電圧レベル４２２に加算させるモード制御信号を含む（すなわち、０をレジスタ４１８の内容に加えさせる）。３つの下流スライスの各々のモードレジスタ３１０は、各下流スライスにそれぞれのパイプラインレジスタ４１８内の積と上流スライスの出力とを加算させる、異なった組のモード制御信号を含む。
【００７０】
図５Ｂは、図５ＡのＦＩＲフィルタの機能を示す表５５０である。フィルタ５００は、データシーケンスＸ（Ｎ）に応答して以下の出力信号Ｙ３（Ｎ−３）を生成する。
【００７１】
Y3(N-3)=X(N)H0+X(N-1)H1+X(N-2)H2+X(N-3)H3                              （１）
表５５０は、１１のクロックサイクル０−１０に亘る、図５Ａの対応のＤＳＰスライスの出力信号ＯＵＴ０、ＯＵＴ１、ＯＵＴ２、およびＯＵＴ３を示す。転置ＦＩＲフィルタアルゴリズムは、信号処理分野における当業者には周知である。転置ＦＩＲフィルタの詳細な議論については、「対称的転置ＦＩＲフィルタ」と題されるサイド（Said）他の米国特許第５，３３９，２６４号を参照されたい。
【００７２】
クロックサイクル０で開始して、第１の入力Ｘ（０）は４つのスライスにおける各レジスタ４１４にラッチされ、４つのフィルタ係数Ｈ０−Ｈ３は各々、それぞれのスライス内のレジスタ４１２のうちの１つにラッチされる。各データ／係数対はこうして、それぞれの積生成器４１６による利用が可能になる。次に、クロックサイクル１において、積生成器４１６からの積がそれぞれのレジスタ４１８にラッチされる。こうして、たとえば最も左側のＤＳＰスライス内のレジスタ４１８は、積Ｘ（０）Ｈ３を格納する。この時点までに、表５５０に示すように、どのデータも積レジスタ４３０に到達していないので、出力ＯＵＴ０−ＯＵＴ３は各それぞれのスライスから０を提供する。
【００７３】
各スライスにおける加算器４２６は、それぞれのレジスタ４１８内の積に第２の選択された加数を加える。最も左側のスライスにおいて、選択された加数はハードワイヤード数０なので、出力レジスタ４３０はクロックサイクル２において、レジスタ４１８の内容を取込んで、すなわちＸ０＊Ｈ３、この積を出力ＯＵＴ１として提供する。残りの３つのスライスにおいて、選択された加数は上流スライスの出力である。上流スライスはすべて、クロックサイクル０の受信前に０を出力するので、最も右側の３つのスライスはそれらのそれぞれのレジスタ４１８の内容をそれぞれの出力レジスタ４３０にラッチする。
【００７４】
スライス間のカスケード配線は、クロックサイクル３の受信において有効になり始める。各下流スライスは、上流スライスからの出力をそれぞれのレジスタ４１８内に格納された積と合計する。上流スライスからの積はこうして、最も右側のＤＳＰスライスがフィルタ処理された出力Ｙ３（Ｎ−３）を同様に名づけられた出力ポート上に与えるまで、カスケード接続され合計される。例示を容易にするために、ＦＩＲフィルタ５００は、４タップフィルタを実現する２つのタイルＤＳＰＴ０およびＤＳＰＴ１に限定される。他の実施例に従ったＤＳＰ回路は非常に多くのＤＳＰタイルを含み、こうして遥かに多くのタップを有するフィルタ構成をサポートする。さらなるタイルを想定すると、図５ＡのＦＩＲフィルタ５００は、さらなるＤＳＰスライスをカスケード接続することにより、より多くのタップを含むように簡単に拡張可能である。この発明のこの局面の重要性は、カスケード接続に代えて加算器ツリーを用いるＤＳＰアーキテクチャの以下の議論において強調される。
【００７５】
図５Ｃ（先行技術）は、１８ビットの４タップＦＩＲフィルタを実現するよう適合される従来のＤＳＰ素子５５２のブロック図である。従来のＦＰＧＡにおいて用いられるＤＳＰ素子と同様に、ＤＳＰ素子５５２は、たとえば図５Ａおよび図５Ｂを参照して説明されたカスケード構成の代わりに、加算器ツリー構成を用いる。ＤＳＰ素子５５２はいくつかのレジスタ５５５、乗算器５５６、および加算器５５７を含む。示されるＦＩＲ構成は当業者には十分に理解されている。したがって図５Ｃの機能的説明は簡略のために省略する。ＤＳＰ素子５５２は図示される４タップＦＩＲフィルタのような少ない数のフィルタに対しては良好に動作するが、多数のＤＳＰ素子５５２を組合せてより大きなフィルタを実現すると、速度性能が顕著に減じられ電力散逸が増大する。
【００７６】
図５Ｄ（先行技術）は、２つのＤＳＰ素子５５２−１および５５２−２からなる１８ビットの８タップＦＩＲフィルタのブロック図であり、各々が図５Ｃに示される４タップＦＩＲフィルタを実現するよう適合される。２つの４タップＤＳＰ素子５５２−１および５５２−２の結果は、レジスタ５６４（および汎用配線５６５）に格納される８タップＦＩＲフィルタ結果を得るためには、汎用配線５６５における加算器５６２を介して組合されなければならない。残念ながら、汎用配線５６５は、素子５５２−１／２の内部の専用ＤＳＰ回路と比較して、速度が遅く電力散逸が大きい。さらに、ＤＳＰ素子５５２−１をＤＳＰ素子５５２−２に接続してＸ（Ｎ−４）を転送するためには、汎用配線５６５を用いなければならない、すなわち、ＤＳＰ素子５５２−１はＤＳＰ素子５５２−２に直接接続されていない。したがってこの種のＤＳＰアーキテクチャは、比較的複雑なＤＳＰ回路を
実現する場合に、速度性能および電力散逸の観点で、大きな犠牲を払う。対照的に、たとえば図５Ａのカスケード構造は、構成可能論理を含まずに、複雑なＤＳＰ回路に対処するようにより簡単に拡張可能であり、したがって小さな電力散逸で多くの種類のＤＳＰ回路に対し顕著に向上した性能を提供する。
【００７７】
ダイナミック処理
図５Ａの例において、モードレジスタ３１０はＦＩＲフィルタ５００を定義するための必須のモード制御信号の組を含む。モードレジスタ３１０は、汎用配線４０５を介して装置動作の間にロード可能である。構成メモリへの書込なしに異なったＤＳＰ動作を行なうようＤＳＰリソースを修正することを、ここで「ダイナミック」制御と称して、構成メモリの内容を変更することにより異なったＤＳＰ動作を行なうようＤＳＰリソースを修正することから区別する。ダイナミック制御は典型的には、比較的より遅い再構成速度ではなく、ＤＳＰリソースの動作速度で行なわれる。こうして、構成メモリの内容の変更は過度に時間を消費する虞があるので、ダイナミック制御が好ましい。この発明の例示的な実施例において、再構成に対するダイナミック制御の実質的な性能向上を示すために、ＦＰＧＡのVirtex（登録商標）ファミリは、多くの構成メモリセルに書込むためにたとえば数十メガヘルツ範囲（たとえば５０ＭＨｚ）で動作する構成クロックを用いて再構成される。これに対し、Virtex（登録商標）論理は、構成クロックの少なくとも１オーダの大きさ速い動作クロック周波数（たとえば数百メガヘルツ、たとえば６００ＭＨｚまたはそれ以上の範囲）で動作し、スイッチングモードは、比較的少ない宛先（たとえば、図１７におけるマルチプレクサ回路１７２１）にモード制御信号が与えられることを要求する。よって、この発明の実施例は１構成クロック期間よりも短い時間スパンでモードを切換可能である。
【００７８】
構成メモリ内の１組のビットを設定または更新するのにかかる時間は、構成クロック速度と設定または更新されるべきビットの数との両方に依存する。たとえば、１つ以上のフレームに属する更新されたビットおよびこれらの更新されたフレームは、次いでバイトシリアルフォーマットで構成メモリに送られる。たとえば、構成クロックが１６ビットワードについて５０ＭＨｚ、または１６＊５０または毎秒８００，０００，０００ビットの構成レートであると想定する。１フレームに１０，０００ビットが存在すると仮定する。したがって、構成メモリにおいて１フレーム（またはその任意の部分）を更新するのに約１０，０００／８００，０００，０００＝１３マイクロ秒がかかる。OpModeレジスタが同じクロック、すなわち５０ＭＨｚ構成クロックを用いるべきであるとしても、OpModeレジスタは１クロックサイクルまたは２０ナノ秒で再プログラムされるであろう。こうして、構成メモリの設定または更新とOpModeレジスタの変更との間には顕著な時間差が存在する。
【００７９】
図６Ａおよび図６Ｂは併せて、複雑な数学的機能を実現するためにＦＰＧＡ４００をどのようにダイナミックに再構成可能であるかを示す。この特定の例において、ＦＰＧＡ４００は２つのシリーズの複素数を受け、対応の対を乗算し、結果を合計する。この周知の演算は典型的に、「複素数乗算累算」機能または「複素数ＭＡＣＣ」と称する。以下の一連の方程式は周知であるが、図６Ａおよび図６ＢのダイナミックＤＳＰ動作を例示するためにここに繰返す。
【００８０】
第１の対の複素数ａ＋ｊｂおよびｃ＋ｊｄを乗算すると、以下の複素数の積が得られる。
【００８１】
R１+jl１＝(a+jb)(c+jd)=(ac-bd)+j(bc+ad)=ac-bd+jbc+jad                  （２）
同様に、第２の対の複素数ｅ＋ｊｆおよびｇ＋ｊｈを乗算すると以下が得られる。
【００８２】
R２+jl２＝(e+jf)(g+jh)=(eg-fh)+j(fg+eh)=eg-fh+jfg+jeh                  （３）
方程式（２）および（３）の積を合計すると以下が得られる。
【００８３】
(R１+jl１)+(R２+jl２)＝ac-bd+jbc+jad+eg-fh+jfg+jeh                     （４）
項を、実数／実数、虚数／虚数、虚数／実数、および実数／虚数の積タイプに再編成すると、以下が得られる。
【００８４】
(R１+jl１)+(R２+jl２)＝(ac+eg)+(-bd-fh)+(jbc+jfg)+(jad+jeh)            （５）
または
(R１+jl１)+(R２+jl２)＝R[(ac+eg)+(-bd-fh)]+l[(bc+fg)+(ad+eh)]          （６）
上記は、４つの積タイプの各々を累算し、次いで結果として生じる実数の対と結果として生じる虚数の対とを合計することにより、一連の複素数積の合計が得られることを示す。これらの動作は、任意の数の対に拡張可能であるが、ここでは例示を容易にするために２つの複素数に限定される。
【００８５】
図６Ａにおいて、ＦＰＧＡ４００は一連の複素数の対ＡＲ（Ｎ）＋ＡＩ（Ｎ）ｊおよびＢＲ（Ｎ）＋ＢＩ（Ｎ）ｊの４つの積タイプの各々を合計するアキュムレータ６００として動作する。汎用配線４０５は、ＤＳＰスライスに入ってくる複素数対の実数および虚数部を提供するよう構成される。構成可能論理４１０において実現されるステートマシン６１０は、汎用配線４０５を介して各モードレジスタ３１０の内容を制御し、したがってＤＳＰスライスの機能および接続性を決定する。他の実施例においては、モードレジスタ３１０はたとえばＦＰＧＡの外部の回路を用いて、またはオンチップマイクロコントローラを用いて制御される。別の実施例においては、ザイリンクスから入手可能であるVirtex II Pro（登録商標）ＦＰＧＡに組入れられる種類の１つ以上のＩＢＭ  PowerPC（登録商標）マイクロプロセッサがＤＳＰスライスにモード制御信号を与える。図６Ａおよび図６Ｂについて、これはステートマシン６１０が組込みマイクロプロセッサで置換されることを示す。
【００８６】
タイルＤＳＰＴ０のＤＳＰスライスＤＳＰＳ０は、一連の実数／実数対ＡＲ（Ｎ）およびＢＲ（Ｎ）を受ける。積生成器４１６は各対を乗算し、加算器４２６が結果として生じる積を出力レジスタ４３０の内容に加算する。出力レジスタ４３０は０に予め設定され、よってＮ＋２クロックサイクル後にＮ個の実数／実数積の和を含む。さらなる２クロックサイクルは、データをレジスタ４１２、４１４、および４１８を通って移動させるのに必要である。結果として生じる積の合計は、上記方程式６の第１の実数和ａｃ＋ｅｇに類似する。別の実施例においては、出力レジスタ４３０は０に予め設定される必要はない。ステートマシン６１０は、第１の積が受けられた時点で０を加算器４２６に入れるようマルチプレクサ４２４を構成可能である。出力レジスタ４３０が０に設定される必要はないことに留意されたい。新しいベクトル演算の各々の第１のデータポイントは、現在の出力レジスタ４３０に加算されない、すなわち、OpmodeはＡＣＣフィードバックなしの標準フロースルーモードに設定される。
【００８７】
タイルＤＳＰＴ０のＤＳＰスライスＤＳＰＳ１は、一連の虚数／虚数対ＡＩ（Ｎ）およびＢＩ（Ｎ）を受ける。積生成器４１６は各対を乗算し、加算器４２６は結果として生じる積を出力レジスタ４３０の内容から減算する。出力レジスタ４３０はこうして、Ｎ＋２クロックサイクル後にＮ個の虚数／虚数積の負の和を含む。結果として生じる積の和は、上記方程式６の第２の実数和−ｂｄ−ｆｈに類似する。
【００８８】
タイルＤＳＰＴ１のＤＳＰスライスＤＳＰＳ０は、一連の実数／虚数対ＡＲ（Ｎ）およびＢＩ（Ｎ）を受ける。積生成器４１６は各対を乗算し、加算器４２６は結果として生じる積を出力レジスタ４３０の内容に加算する。出力レジスタ４３０はこうして、Ｎ＋２クロックサイクル後にＮ個の実数／虚数積の和を含む。結果として生じる積の和は、上記方
程式６の第１の虚数和ｂｃ＋ｆｇに類似する。
【００８９】
最後に、タイルＤＳＰＴ１のＤＳＰスライスＤＳＰＳ１は、一連の虚数／実数対ＡＩ（Ｎ）およびＢＲ（Ｎ）を受ける。積生成器４１６は各対を乗算し、加算器４２６は結果として生じる積を出力レジスタ４３０の内容に加算する。出力レジスタ４３０はこうして、Ｎ＋２クロックサイクル後にＮ個の虚数／実数積の和を含む。結果として生じる積の和は、上記方程式６の第２の虚数和ａｄ＋ｅｈに類似する。
【００９０】
一旦すべての積の対がレジスタ４３０において累算されると、ステートマシン６０５はモードレジスタ３１０の内容を変更して４つのＤＳＰスライスを再構成し、２つの累積実数和（たとえばａｃ＋ａｇおよび−ｂｄ−ｆｈ）および２つの累積虚数和（たとえばｂｃ＋ｆｇおよびａｄ＋ｅｈ）を加算する。結果として生じる構成６５５を図６Ｂに示す。
【００９１】
構成６５５において、タイルＤＳＰＴ０のＤＳＰスライスＤＳＰＳ１は、上流出力カスケードポートＵＯＣにおいて利用可能であるＤＳＰスライスＤＳＰＳ１の出力ＯＵＴ０を、それ自身の出力ＯＵＴ１に加算する。図６Ａを参照して説明したように、ＯＵＴ０およびＯＵＴ１は、各々が実数の結果を含む２つの出力レジスタ４３０の内容を反映する。こうして、さらに１クロックサイクル後に、出力ポートＯＵＴ１はＭＡＣＣ結果の実数部である実数積ＰＲを提供する。タイルＤＳＰＴ１のＤＳＰスライスＤＳＰＳ０およびＤＳＰＳ１は同様に構成されて、それぞれのレジスタ４３０の内容と積の２つの虚数和との両方を加算して、ＭＡＣＣ結果の虚数積ＰＩを提供する。結果として生じる複素数ＰＲ＋ＰＩは、図６Ａの構成６００における端子ＡＲ（Ｎ）、ＡＩ（Ｎ）、ＢＲ（Ｎ）、およびＢＩ（Ｎ）の対応の対の積のすべての和である。こうしてＤＳＰスライスの機能をダイナミックに変更する能力は、複雑な機能の異なった部分を達成するために、ＦＰＧＡ４００に貴重なＤＳＰリソースを再利用させる。
【００９２】
パイプライン化リソースを備えたＤＳＰスライス
図７は、別の実施例に従ったＦＰＧＡ７００を示す。ＦＰＧＡ７００は図４のＦＰＧＡ４００に類似し、同様に名付けられた要素は同一または同様である。しかしながら、ＦＰＧＡ７００における各ＤＳＰスライスが、異なった量の遅延を導入するよう構成可能である入力レジスタ７０５を含む点で、ＦＰＧＡ７００はＦＰＧＡ４００とは異なる。この例において、レジスタ７０５は２対のレジスタ７１０および７１５を用いてオペランド入力ＡおよびＢのいずれかまたはその両方に、２クロックサイクルまでの遅延を導入可能である。図示されない構成メモリセルは、所与のオペランド入力上の所与のレジスタ７０５によって課される遅延の量を決定する。他の実施例においては、レジスタ７０５は、モードレジスタ３１０によりダイナミックにも制御される。
【００９３】
図８は、複素数のためのパイプライン化された乗算器を実現するよう構成される図７のＦＰＧＡ７００を示す。タイルＤＳＰＴ０のＤＳＰスライスＤＳＰＳ０におけるレジスタ３１０の内容は、そのスライスが２つの複素数ＡＲ＋ｊＡＩおよびＢＲ＋ｊＢＩの実数成分ＡＲおよびＢＲの積に（電圧レベル４２２からの）０を加算し、結果を対応のレジスタ４３０に格納するよう構成する。関連の入力レジスタ７０５は、１クロックサイクルの遅延を課すよう構成される。タイルＤＳＰＴ０のＤＳＰスライスＤＳＰＳ１におけるレジスタ３１０の内容は、そのスライスが上流スライスＤＳＰＳ０のレジスタ４３０の内容から複素数ＡＲ＋ｊＡＩおよびＢＲ＋ｊＢＩの虚数成分ＡＩおよびＢＩの実数積を減算するよう構成する。次いでスライスＤＳＰＳ１は、結果として生じる実数積ＰＲをタイルＤＳＰＴ０のＤＳＰＳ１内のレジスタ４３０のうちの１つに格納する。スライスＤＳＰＳ１の入力レジスタ７０５は、２クロックサイクル遅延を課すよう構成され、それにより上流スライスＤＳＰＳ０の出力は、適切なクロックサイクルでスライスＤＳＰＳ１のレジスタ４１８に加算するよう利用可能である。
【００９４】
ＤＳＰタイルＤＳＰＴ１は、ＤＳＰタイルＤＳＰＴ０と同様の態様で機能して、同じ２つの虚数の虚数積ＰＩを計算する。タイルＤＳＰＴ１のＤＳＰスライスＤＳＰＳ０におけるレジスタ３１０の内容は、そのスライスが複素数ＡＲ＋ｊＡＩおよびＢＲ＋ｊＢＩの実数成分ＡＲおよび虚数成分ＢＩの虚数積に０を加算し、結果を対応のレジスタ４３０に格納するよう構成する。対応の入力レジスタ７０５は１クロックサイクルの遅延を課すよう構成される。タイルＤＳＰＴ１のＤＳＰスライスＤＳＰＳ１におけるレジスタ３１０の内容は、そのスライスが上流スライスＤＳＰＳ０のレジスタ４３０の内容から虚数成分ＡＩおよび実数成分ＢＲの虚数積を加算するよう構成する。タイルＤＳＰＴ１のスライスＤＳＰＳ１は次いで、結果として生じる虚数積ＰＩをタイルＤＳＰＴ１のＤＳＰＳ１内のレジスタ４３０のうちの１つに格納する。ＤＳＰスライスＤＳＰＳ１の入力レジスタ７０５は、上流スライスＤＳＰＳ０の出力がスライスＤＳＰＳ１のレジスタ４１８に加算するよう利用可能であるように、２クロックサイクルの遅延を課すよう構成される。
【００９５】
図８の構成は、４クロックサイクルのレイテンシを課す。第１の出力が実現された後で、各クロックサイクルで複素数積ＰＲ＋ｊＰＩが提供される。この構成はしたがって、比較的長いシーケンスの複素数対を乗算するのに非常に効率的である。
【００９６】
図９は、別の実施例に従って適合されたＤＳＰリソースを備えたＦＰＧＡ９００を示す。他の図を参照して上に説明したリソースは、図９においても同様に名付けられる。これらのリソースの説明は簡略化のためにここでは省略する。
【００９７】
ＦＰＧＡ９００の各ＤＳＰスライスは、オペランドのパイプライン化を促進するマルチプレクサ９０５を含む。各スライス内のマルチプレクサ４２４は、シフタ９１０を介して上流スライスの出力に接続されるさらなる入力ポートを含む。シフタ９１０は、いくつかのＤＳＰ回路を実現するために要求されるリソースの量を減じる。図９の包括的な例は、例示を容易にするために符号付きＮビットオペランドおよびＮビットシフタ９１０を想定する。符号付きおよび符号なしのオペランドの両方を用いる特定の例を以下に詳細に説明する。ＤＳＰＳ０の出力はＰ（Ｎ−２：０）であり、ＤＳＰ１の出力はＰ（２（Ｎ−１）＋Ｎ：Ｎ−１）であり、ただしＮは整数である。
【００９８】
図１０は、３ビットの符号付き（２の補数）オペランドを受けるＤＳＰリソース１０００の例を示す。リソース１０００は５ビット符号付き数Ａと３ビット符号付き数Ｂとを乗算する（すなわちＡ×Ｂ）完全にパイプライン化された乗算器として、モードレジスタ３１０を介して構成される。各オペランド入力バスは僅かに３ビット幅なので、５ビットオペランドＡはＡ０とＡ１とに分割され、ここでＡ０は、最上位ビット（ＭＳＢ）が０であって２つの最下位ビット（ＬＳＢ）が数Ａの２つの下位ビットの３ビット数であって、Ａ１はＡのＭＳＢである。この簡単な例は、図９において最初に導入されたシフタ９１０の２ビットバージョンの機能を例示する。
【００９９】
Ｂ＝０１１であって、Ａ＝００１１０であると仮定する。ＭＳＢのゼロはＡおよびＢが両方とも正の数であることを示す。ＡとＢとの積Ｐはしたがって０００１００１０である。数学的には以下のように表記される。
【０１００】
Ｐ＝Ａ×Ｂ＝００１１０×０１１＝０００１００１０                        （７）
Ａは２つの符号付き数Ａ０およびＡ１に分割され、この場合ゼロが２つの最下位ビットの前に付与されて正の符号付き数Ａ０を生成する。（このＬＳＢの０の付与は、Ａの正の値および負の値の両方に用いられる）。こうして、Ａ１＝００１およびＡ＝０１０である。
【０１０１】
図１０のように構成されたＤＳＰスライスＤＳＰＳ０およびＤＳＰＳ１は、２つの下位ビットＰ（１：０）と６つの上位ビットＰ（７：２）との組合せとしてＡとＢとの積Ｐを汎用配線４０５に伝える。図１０の構成は以下のように動作する。
【０１０２】
スライスＤＳＰＳ０の入力レジスタ７０５は、単一のレジスタ７１０および単一のレジスタ７１５を用いて１クロックサイクルだけの遅延を導入するよう構成される。３クロックサイクル後に、レジスタ４３０はＡ０とＢとの積、すなわち０１０×０１１＝０００１１０を含む。レジスタ４３０の２つの下位ビットは、２つの下位積ビットＰ（１：０）として汎用配線４０５におけるレジスタ４３４に与えられる。この例において、２つの下位ビットは「１０」である（すなわち、線Ｐ（０）上の論理レベルが論理０を表わし、線Ｐ（１）上の論理レベルが論理１を示す）。
【０１０３】
スライスＤＳＰＳ１のマルチプレクサ９０５は、上流スライスＤＳＰＳ０の対応の入力−下流カスケードポートＩＤＣに接続される入力−上流カスケードポートＩＵＣを選択するよう構成される。オペランドＢはしたがって、スライスＤＳＰＳ０のレジスタ７０５によって課される１クロックサイクルの遅延後にスライスＤＳＰＳ１に与えられる。
【０１０４】
スライスＤＳＰＳ１の入力レジスタ７０５は、スライスＤＳＰＳ１からのオペランドＢにさらなる１クロックサイクルの遅延を、およびオペランドＡ１に２クロックサイクルの遅延を導入するよう構成される。オペランドＡ０に課される単一のクロックサイクルと比較して、さらなるクロックサイクルの遅延は、３クロックサイクル後に、スライスＤＳＰＳ０のレジスタ４３０がＡ０とＢとの積（０００１１０）を含む場合に、スライスＤＳＰＳ１のレジスタ４１８がＡ１とＢとの積（００１×０１１＝００００１１）を含むことを意味する。
【０１０５】
スライスＤＳＰＳ１のシフタ９１０は、対応のレジスタ４３０の内容（０００１１０）を２ビット右に右シフトする、すなわち、結果として生じる新しい上位ビットを埋めるよう符号ビットを拡張して、０００００１とする。次いで、第４のクロックサイクルの間に、スライスＤＳＰＳ１は関連のレジスタ４１８の内容をスライスＤＳＰＳ０からの右シフトされた値に加算し（０００００１＋００００１１）、結果（０００１００）を６つの最上位積ビットＰ（７：２）としてスライスＤＳＰＳ１のレジスタ４３０に格納する。下位および上位積ビットＰ（７：２）＝０００１００とＰ（１：０）＝１０とを組合せると、Ｐ＝０００１００１０が得られる。この結果は上記方程式６で与えられた積と一致する。
【０１０６】
図１０において、２つの出力Ｐ（７：２）およびＰ（１：０）は、たとえば１つの統合された接続Ｐ（７：０）を有するのではなく、汎用配線４０５への別々の接続を有する。この配置の利点とは、配線に対する要求が分散されることである。
【０１０７】
図１１は、別の実施例に従ったＤＳＰリソース１１００を示す。ＤＳＰリソース１１００は、図１０の例示のＤＳＰリソース１０００に機能的に類似するが、ＤＳＰアーキテクチャは１８ビット符号付きオペランドを受けて操作するよう適合される。この実用的な例において、４つのＤＳＰスライスは完全にパイプライン化された３５×３５乗算器として構成される。いくつかのレジスタ１１０５が構成可能論理リソース４１０から含まれて、パイプライン化を支援する。他の実施例においては、速度性能の向上のために、スライスＤＳＰＴ０およびＤＳＰＴ１は１つ以上のさらなるオペランドレジスタ、出力レジスタまたはそれら両方を含む。そのような実施例のいくつかにおいて、所与のスライス（図１７および図２１を参照）に関連の多数の出力レジスタのうちの１つを、別の出力レジスタの内容が更新される間にデータを保持するよう用いることができる。所与のスライスからの出力はこうして、スライスが下流のスライスに１つ以上の記録されたカスケード入力を与える間に維持され得る。
【０１０８】
図１２Ａは、パイプライン化された４タップＦＩＲフィルタ１２００を実現するよう構成される４つのＤＳＰスライスを示す。出力レジスタ４３０（たとえば図４を参照）の代わりに、各スライスは、０または１クロックサイクルの遅延を課すことができるよう装置構成の間にプログラムされることができる構成可能出力レジスタ１２０５を含む（他の実施例はダイナミックに制御されることができる出力レジスタを含む）。ＤＳＰスライスＤＳＰＳ０におけるレジスタ１２０５はバイパスされ、スライスＤＳＰＳ１におけるレジスタ１２０５がパイプライン化を支援するために含まれる。各ＤＳＰスライス内の入力レジスタ７０５もまた、さらにパイプライン化を支援するよう、オペランドに適切な遅延を課すよう構成される。先の例におけるように、モードレジスタ３１０はフィルタ１２００の接続性を定義する。
【０１０９】
図１２Ｂは、図１２ＡのＦＩＲフィルタ１２００の機能を示す表１２５０である。フィルタ１２００は、データシーケンスＸ（Ｎ）に応答して、以下の出力信号Ｙ３（Ｎ−４）を生成する。
【０１１０】
Y3(N-4)=X(N-4)H0+X(N-5)H１+X(N-6)H2+X(N-7)H3                            （８）
表１２５０は、８のクロックサイクル０−７ごとに図１２ＡのＤＳＰスライスごとにレジスタ７１０、７１５、４１８および１２０５の出力を与えることによるＦＩＲフィルタ１２００の動作を示す。レジスタ７１０および７１５の出力は、それぞれの積生成器４１６に最も近いレジスタ７１０および７１５の出力を指す。
【０１１１】
図１３Ａは、シストリックな４タップＦＩＲフィルタ１３００を実現するようモードレジスタ３１０における適切なモード制御信号を用いて構成される２つのＤＳＰタイルＤＳＰＴ０およびＤＳＰＴ１（４つのＤＳＰスライス）を示す。ＤＳＰタイルを囲み、汎用ルーティングリソースを介してタイルと相互接続される構成可能リソースから選択されたいくつかのレジスタ１３０５が含まれる。フィルタ１３００は、さらなるＤＳＰスライスおよび関連のさらなるレジスタをカスケード接続することにより、Ｎタップに拡張可能であり、ただしＮは４以上である。
【０１１２】
図１３Ｂは、図１３ＡのＦＩＲフィルタ１３００の機能を示す表１３５０である。フィルタ１３００は、データシーケンスＸ（Ｎ）に応答して、以下の出力信号Ｙ３（Ｎ−６）を生成する。
【０１１３】
Y3(N-6)=X(N-6)H0+X(N-7)H１+X(N-8)H2+X(N-9)H3                            （９）
表１３５０は、９のクロックサイクル０−８ごとに図１３ＡのＤＳＰスライスごとにレジスタ７１０、７１５、４１８および１２０５の出力を与えることによる、ＦＩＲフィルタ１３００の動作を示す。レジスタ７１０および７１５の出力は、それぞれの積生成器４１６に最も近いレジスタ７１０および７１５の出力を指す。
【０１１４】
図１４は、積生成器４１６を迂回する連結バスＡ：Ｂを含むよう修正されるＤＳＰスライスを有するＦＰＧＡ１４００を示す。この例において、オペランドＡおよびＢの各々は１８ビットであり、連結バスＡ：Ｂは３６ビットであり、オペランドバスＣは４８ビットである。バスＡ：Ｂの上位１８ビットはオペランドＡを伝達し、下位１８ビットはオペランドＢを伝達する。マルチプレクサ４２０は、バスＡ：Ｂに対するさらなる入力ポートを含む。各ＤＳＰタイルは、図３において最初に導入されたオペランドレジスタ３００をさらに含み、これは第３のオペランドＣを関連のスライスにおけるマルチプレクサ４２４に伝える。利点の中でもとりわけ、レジスタ３００は、テストベクトルが積生成器４１６を囲んで加算器４２６に向けられるので、ＤＳＰタイルのテストを容易にする。
【０１１５】
モードレジスタ３１０は、入力データＸ（Ｎ）で動作するカスケード接続された、積分器コムのデシメーションフィルタとして動作するようＦＰＧＡ１４００を構成するモード制御信号を格納し、ただしＮはたとえば４である。タイルＤＳＰＴ０のスライスＤＳＰＳ０およびＤＳＰＳ１は２段の積分器を構成する。スライスＤＳＰＳ０は出力レジスタ１２０５内のレジスタ３００からの入力データＸ（Ｎ）を累算して、出力データＹ０（Ｎ）［４７：０］を生成し、これが下流スライスＤＳＰＳ１のマルチプレクサ４２４に伝えられる。下流スライスは、対応の出力レジスタ１２０５における上流スライスＤＳＰＳ０からの累算された結果を累算して、出力データＹ１（Ｎ）［４７：０］を生成する。データＹ１（Ｎ）［３５：０］は、汎用配線を介してタイルＤＳＰＴ１のスライスＤＳＰＳ０のＡおよびＢ入力に伝えられる。
【０１１６】
タイルＤＳＰＴ１のスライスＤＳＰＳ０およびＤＳＰＳ１は、２段のコムフィルタを形成する。タイルＤＳＰＴ１のスライスＤＳＰＳ０は、Ｙ１（Ｎ）からＹ１（Ｎ−２）を減算して、出力Ｙ２（Ｎ）を生成する。タイルＤＳＰＴ０のスライスＤＳＰＳ１は同じ演算をＹ２（Ｎ）に繰り返して、フィルタリングされた出力Ｙ３（Ｎ）［３５：０］を生成する。
【０１１７】
ダイナミックおよび構成可能丸め処理
ここに記載される多くのＤＳＰ回路および構成は、大きな数を乗算してやはり大きな積を生成する。大きく不必要に厳密な積の処理は手間がかかりリソース集約的なので、そのような積はしばしば何らかの所望の数のビットに丸められる。いくつかの実施例は、ほとんど付加的なリソースを必要とせず丸め処理に関わるビットの数をダイナミックに変化させるよう調整可能である、高速で柔軟な丸め方策を採用する。
【０１１８】
図１５は、丸め処理を促進する実施例に従ったＤＳＰスライス１５００を示す。所与の丸め処理の精度はダイナミックに、またはスライス１５００がプログラマブル論理装置で実現される場合には装置のプログラミングにより、変更可能である。
【０１１９】
スライス１５００は上述のＤＳＰスライスと同様であり、同様に識別される要素は同一または同様である。スライス１５００はさらに、第１および第２の入力端子がそれぞれ第１および第２のオペランド入力ポートＡおよびＢの符号ビットに結合される訂正回路１５１０を含む。訂正回路１５１０は、加算器４２６の入力に接続される出力端子をさらに含む。訂正回路１５１０は、乗数符号ビットおよび被乗数符号ビットに基づき、１ビット訂正係数ＣＦを生成する。加算器４２６は次いで、積生成器４１６からの積にオペランドレジスタ３００内のＸビット丸め定数と訂正係数ＣＦとを加算して、丸め処理を行なう。レジスタ３００内の丸め定数の長さＸが丸め処理ポイントを決定するので、丸めポイントは容易にダイナミックに変更可能である。
【０１２０】
従来は、対称的な丸め処理は、数を最も近い整数に丸める（たとえば、２．５は３に丸められ、−２．５は−３に丸められ、１．５＜＝Ｘ＜２．５は２に丸められ、−１．５＞＝Ｘ＞−２．５は−２に丸められる）。これを２進算術で行なうためには、正の数に対しては０．１０００の訂正係数を、または負の数に対しては０．０１１１を加算して、結果として生じる小数を切り捨てることにより行ない得る。正の数に対しては訂正係数における末尾の０の数を変更し、または負の数に対しては訂正係数における末尾の１の数を変更することにより、丸めポイントが変更される。スライス１５００は、正の数と負の数との両方からのユーザが特定する数のビットを自動的に丸めるよう修正される。
【０１２１】
図１６は、最下位のＮビットを丸めるために図１５のスライス１５００を用いる実施例に従った丸め処理を説明するフローチャート１６００である。ステップ１６０５から開始して、丸め処理を制御する回路またはシステムは、オペランドレジスタ３００に丸め定数
Ｋを格納する。図示される実施例において、丸め定数ＫはＮ−１の最下位ディジットが２進１であり、残りのビットが論理０である（すなわち、Ｋ＝２(N-1)−１）である、２進数である。たとえば、３つの最下位ビット（Ｎ＝３）を丸めるには、２(3-1)−１、または００００１１を用いる。
【０１２２】
次に、ステップ１６１０において、スライス１５００は丸められるべき数の符号を判断する。もし数がオペランドレジスタ７１５内の乗数とオペランドレジスタ７１０内の被乗数との積（またはその逆）であれば、訂正回路１５１０は乗数および被乗数の符号ビットのＸＮＯＲを行なって（たとえばオペランドＡおよびＢのＭＳＢ）符号が異なれば論理０、符号が同一であれば論理１を得る。符号のインバースを求めることは丸め処理を容易にするが、丸め処理が既に計算された値の符号に基づくべき場合は、この発展した信号計算は不要である。
【０１２３】
もし結果が正であれば（判断１６１５）、訂正回路１５１０は訂正係数ＣＦを１に設定する（ステップ１６２０）。そうでなければ、訂正回路１５１０は訂正係数ＣＦを０に設定する（ステップ１６２５）。加算器４２６は次いで、丸め定数Ｋ、丸め係数ＣＦおよび結果（たとえば、積生成器４１６から）を合計して、丸められた結果を得る（ステップ１６３０）。最後に、丸められた結果は丸めポイントＮで切り捨てられ、ただしＮ−１は丸め定数における下位の１の数である（ステップ１６３５）。丸められた結果は次いで、たとえば所望のビットのみを汎用配線に伝えることにより、切捨て可能である。
【０１２４】
表１は、一実施例に従った４つの最下位２進ビット（すなわち、Ｎ＝４）の丸め処理を例示する。レジスタ３００内の丸め定数はＮ−１の下位の１すなわち０１１１を含むよう設定される。表１の第１の行において、１０進数およびその２進等価物ＢＶは正であり、訂正係数ＣＦ、乗数および被乗数のＸＮＯＲは１である。２進値ＢＶ、丸め定数Ｋおよび訂正係数ＣＦを加算すると、中間の丸められた値が得られる。Ｎ個の下位ビットを除くように中間の丸められた値を切捨てることにより、丸められた結果が得られる。
【０１２５】
【表１】
2007522699.tif 000003
【０１２６】
積の符号を予め定めることにより、丸め処理が容易になる。上述の例は、結果として生じる積の符号を予め決定するために、乗数および被乗数の符号値のＸＮＯＲを用いる。他の実施例は、２つのオペランドを連結させることにより形成される連結のような乗算に加えて、数学的計算のために符号値を予め決定するが、この場合考慮すべき符号ビットは１つだけである。そのような実施例においては、モードレジスタ３１０は、所与の演算に対する適切な訂正係数ＣＦを生成するよう訂正回路１５１０に指示する。モードレジスタ３１０からのモード制御信号に応答してさまざまな形式の訂正係数を生成することが可能な訂正回路１５１０の実施例を、図１７および図１９を参照して以下に詳細に説明する。さ
らに、丸め定数は２(N-1)−１である必要はない。別の実施例においては、たとえば、丸め定数は２(N-1)であって、符号ビットは丸め定数と積との和から減算される。
【０１２７】
複雑なＤＳＰスライス
図１７は、上述の例のさまざまな特徴を組合せる一実施例に従った複雑なＤＳＰスライス１７００を示す。これまでの図面に関して上に記載したものと同様の特徴には、同様の名称が付与され、可能な場合は、無駄のない表現のために、冗長な説明は省略する。
【０１２８】
ＤＳＰスライス１７００は、それぞれの線またはポート上の以下の入力信号および出力信号を介して、ＦＰＧＡ上の他のＤＳＰスライスおよび他のリソースと通信する。
【０１２９】
ａ．符号付きオペランドバスＡおよびＢは、汎用配線にプログラマブルに接続して、それぞれオペランドＡおよびＢを受取る。オペランドバスＡおよびＢの各々は１８ビット幅であり、最上位ビットは符号を表わす。
【０１３０】
ｂ．符号付きオペランドバスＣは、対応するＣレジスタ３００（図３等を参照）に直接接続し、対応するＣレジスタ３００は次いで、汎用配線にプログラマブルに接続してオペランドＣを受取る。オペランドバスＣは４８ビット幅であり、最上位ビットは符号を表わす。
【０１３１】
ｃ．１８ビット入力上流カスケードバスＩＵＣは、図３に示す態様で上流スライスに直接接続する。
【０１３２】
ｄ．１８ビット入力下流カスケードバスＩＤＣは、上流スライスの入力上流カスケードバスＩＵＣに接続する。
【０１３３】
ｅ．４８ビット上流出力カスケードバスＵＯＣは、上流スライスの出力ポートに直接接続する。
【０１３４】
ｆ．４８ビット出力バスＯＵＴは、下流スライスの上流出力カスケードバスＵＯＣと、１対の内部フィードバックポートとに直接接続し、汎用配線にプログラマブルに接続可能である。
【０１３５】
ｇ．７ビット演算モードポートＯＭは、汎用配線にプログラマブルに接続して、スライス１７００を構成するためのモード制御信号の組を受取って記憶する。
【０１３６】
ｈ．１ビットキャリーイン線ＣＩは、汎用配線にプログラマブルに接続する。
ｉ．２ビットキャリーイン選択ポートＣＩＳは、汎用配線にプログラマブルに接続する。
【０１３７】
ｊ．１ビット減算ポートＳＵＢは、汎用配線にプログラマブルに接続して、加算または減算する命令を受取る。
【０１３８】
ｋ．ＤＳＰスライス１７００内の各レジスタは、簡潔にするためにここでは省略されているが、リセット信号およびイネーブル信号をさらに受取る。
【０１３９】
スライス１７００は、スライス１７００のＢオペランドを選択するか、または、上流スライスのＢオペランドをＩＵＣポート上で受取る、Ｂオペランドマルチプレクサ１７０５を含む。マルチプレクサ１７０５は、この実施例において構成メモリセル（図示せず）により制御されるが、ダイナミックに制御されてもよい。マルチプレクサ１７０５の目的は
、同様のマルチプレクサ９０５を含む図９に関連して上で詳細に説明した。
【０１４０】
１対の２深度入力レジスタ１７１０および１７１５は、それぞれオペランドＡおよびＢ上の０クロックサイクル、１クロックサイクル、または２クロックサイクルの遅延を導入するように構成可能である。レジスタ１７１０および１７１５の実施例は、図２０Ａ、図２０Ｂ、および図２１のそれぞれに関して以下に詳細に説明する。レジスタ１７１０および１７１５の目的は、同様の構成可能レジスタ７０５を含む図７等に関して上で詳細に説明した。
【０１４１】
スライス１７００は、演算回路１７１７の積生成器１７２７および加算器１７１９をそれぞれ用いて乗算および加算を実施する。積生成器１７２７と加算器１７１９との間の多重化回路１７２１は、スライス１７００が、モードレジスタ１７２３の方向において加算器１７１９に多数の加数を投入することを可能にする。これらの任意の加数には、オペランドＣ、オペランドＡおよびＢの連結Ａ：Ｂ、スライス出力ＯＵＴのシフトされたバージョンおよびシフトされていないバージョン、上流出力カスケードＵＯＣのシフトされたバージョンおよびシフトされていないバージョン、ならびに、多数のメモリセルアレイ１７２５の内容が含まれる。多重化回路１７２１への入力バスのいくつかは、４８ビット未満を搬送する。これらの入力バスは、適宜、４８ビットまで符号拡張されるか、またはゼロで埋められる。
【０１４２】
１対のシフタ１７２６は、下位ビットを表わすバス線上の入力信号に符号拡張を与えて、空いたより高位のビットを埋めることにより、それぞれの入力信号の１７ビットを右に、すなわちＬＳＢに向けてシフトする。シフタ１７２６の目的は、より単純な２ビットシフトを詳細に説明する図１０に関して上で論じた。いくつかの実施例は、シフタ１７２６の代わりに選択可能な数のビット位置をシフトすることのできるシフタを含む。積生成器１７２７、多重化回路１７２１、および加算器１７１９の組合せの一実施例は、図２６に関して以下に詳細に説明する。
【０１４３】
積生成器１７２７は、従来のものであり（たとえば、アレイ低減回路が後続するＡＮＤアレイ）、１８ビットの乗数および１８ビットの被乗数から２つの３６ビット部分積ＰＰ１およびＰＰ２を生じる（ここで、一方は符号付き部分積であり、他方は符号なし部分積である）。各部分積は、１クロックサイクルの間、１対の３６ビットレジスタ１７３５およびそれぞれのプログラマブルバイパスマルチプレクサ１７４０を含む構成可能パイプラインレジスタ１７３０に任意に記憶される。マルチプレクサ１７４０は、構成メモリセルにより制御されるが、ダイナミックであってもよい。
【０１４４】
加算器１７１９は、５個の入力ポート、すなわち、マルチプレクサ回路１７２１内のマルチプレクサＸ、Ｙ、およびＺからの３個の４８ビット加数ポートと、減算ポートＳＵＢに接続されたレジスタ１７４１からの１個の１ビット加算／減算線と、キャリーイン論理１７５０から１個の１ビットキャリーインポートＣＩＮとを有する。加算器１７１９は加えて、４８ビットレジスタ１７６０および構成可能バイパスマルチプレクサ１７６５を含む構成可能出力レジスタ１７５５を介して出力ポートＯＵＴに接続された４８ビット合計ポートを含む。
【０１４５】
キャリーイン論理１７５０は、キャリーイン信号ＣＩＮを加算器１７１９に生じ、キャリーイン選択ポートＣＩＳにプログラマブルに接続されたキャリーイン選択レジスタ１７７０の内容によって制御される。１つのモードにおいて、キャリーイン論理１７５０は単に、汎用配線から加算器１７１９のキャリーイン端子ＣＩＮにキャリーイン信号ＣＩを運ぶ。多数の他のモードの各々において、キャリーイン論理は、キャリーイン端子ＣＩＮに訂正係数ＣＦを提供する。キャリーイン論理１７５０の一実施例は、図１９に関して以下
に詳細に説明する。
【０１４６】
スライス１７００は、これまでの図面に関して上で論じたもののすべてを含む多くのＤＳＰ演算をサポートする。スライス１７００の演算は、レジスタ１７１０および１７１５の深度、マルチプレクサ１７０５の選択された入力ポート、バイパスマルチプレクサ１７４０および１７６５の状態、ならびにレジスタ１７２５の内容を含む多数の構成可能素子を制御するメモリセル（図示せず）により規定される。スライス１７００の他の素子は、ＦＰＧＡを再構成することなく書込まれ得るレジスタの内容か、または、スライス１７００がその一部である他の装置によって制御される。このようなダイナミックに制御される素子は、モードレジスタ１７２３によって制御される多重化回路１７２１と、モードレジスタ１７２３およびキャリーイン選択レジスタ１７７０により共同で制御されるキャリーイン論理１７５０を含む。他の実施例では、スライス１７００のこれよりも多くのまたはこれよりも少ない構成要素を、ダイナミックに制御されるようにすることができる。ダイナミック制御ビットを記憶するレジスタを、集合的に、OpModeレジスタと称する。
【０１４７】
以下の表２Ａは、図１７に示すスライス１７００の実施例によってサポートされるさまざまな演算モード、または「op-mode」を列挙する。表２の列は、「OpMode」ラベルと、１つ以上のOpmodeレジスタに記憶され得るモード制御信号の、対応する７ビットの組（OpMode＜６：０＞）と、ダイナミック制御信号の選択された組から生じるスライス１７００の出力ポートＯＵＴ上の結果とを含む。いくつかのOpModeを斜字体にして、出力マルチプレクサ１７６５がレジスタ１７６０の出力を選択するように構成されるべきであることを示す。OpModeは、２つ以上のOpmodeコードを用いて得ることができる。
【０１４８】
【表２】
2007522699.tif 000004
【０１４９】
図１７および図２５を参照した表２Ｂは、OpmodeのビットがＸ、Ｙ、およびＺのＭＵＸ入力選択にどのようにマッピングしているかを示す。
【０１５０】
【表３】
2007522699.tif 000005
【０１５１】
上述の演算モードを用いて構成される異なるスライスを組合せて、多くの複雑な「合成」演算を実施することができる。以下の表３は、異なる態様で構成されたスライスを組合せて複雑なＤＳＰ演算を実施するいくつかの合成モードを列挙する。表３の列は、以下のとおりである。すなわち、「合成モード」は、実行された関数を記載しており、「スライス」番号は、それぞれの合成モードで使用された多数の隣接するスライスのいくつかを特定し、小さな番号ほど上流スライスに対応し、「OpMode」は、設計された各スライスの演算モードを記載しており、入力「Ａ」は、所定のOpModeに対するＡオペランドであり、入力「Ｂ」は、所定のOpmodeに対するＢオペランドであり、入力「Ｃ」は、所定のOpmodeに対するＣオペランドである（「Ｘ」は、Ｃオペランドがないことを示し、ＲＮＤは、図１５および図１６に関して上で説明した種類の丸め定数を特定する。）
【０１５２】
【表４】
2007522699.tif 000006
【０１５３】
以下の表４は、表３の合成モードと、適切な演算モード信号、すなわち「OpMode」信号およびレジスタ設定値とを相関付ける。ここで、
ａ．Ｚ、Ｙ、およびＸ（集合的にOpMode）は、マルチプレクサ回路１７２０のＺ、Ｙ、およびＸマルチプレクサへのそれぞれの制御信号を表わす。
【０１５４】
ｂ．ＡおよびＢは、オペランドレジスタ１７１０および１７１５それぞれの構成を指す。すなわち、「Ｘ」は、対応するオペランドレジスタが２つの連続するレジスタを含むように構成されていることを示し、それ以外の場合、レジスタは、１クロックサイクルの遅
延を提供するものと想定される。
【０１５５】
ｃ．Ｍは、レジスタ１７３０を指し、Ｘは、マルチプレクサ１７３０および１７４０がレジスタ１７３５の出力を選択するように構成されていることを示す。
【０１５６】
ｄ．ＯＵＴは、出力レジスタ１７６０を指し、Ｘは、マルチプレクサ１７６５がレジスタ１７６０の出力を選択するように構成されていることを示す。
【０１５７】
ｅ．「外部リソース」は、スライス１７００の外部で使用されるリソースの種類を指す。
【０１５８】
ｆ．「出力」は、数学的結果を指し、ここでＰは「積」を表わすが、積に限定されない。
【０１５９】
ｇ．「２ｄ」は、スライスのＢレジスタのカスケード接続が、全部で２個の遅延を生じることを示す。「３ｄ」は、全部で３個の遅延が存在することを示す。
【０１６０】
【表５】
2007522699.tif 000007
【０１６１】
図６Ａおよび図６Ｂは、ダイナミック制御の例を示した。スライス１７００は、多くのダイナミックＤＳＰ構成をサポートする。これらのダイナミックＤＳＰ構成において、スライスは、モード制御信号の連続する組を用いて、時刻ｔ１に第１の演算モードにおいて、ＤＳＰ演算の第１の部分を実行するようにスライス自体を構成し、次に、後の時刻ｔ２に第２の演算モードにおいて、同じＤＳＰ演算の第２の部分を実行するようにスライス自体を再構成するように指示される。以下の表５は、スライス１７００がサポートするいくつかのダイナミック演算モードを列挙する。ダイナミックモードは、「シーケンシャル」モードとも称される。なぜなら、これらのモードが、ダイナミックなサブモードまたはサブ構成のシーケンスを使用するためである。
【０１６２】
表５の列は、以下のとおりである。すなわち、「シーケンシャルモード」は、実行された関数を記載しており、「スライス」番号は、それぞれのシーケンシャルモードで使用された１つ以上のスライスを特定し、小さな番号ほど上流スライスに対応し、「サイクル♯」は、所定のシーケンシャルモードで使用される多数の演算モードのシーケンス順を特定し、「OpMode」は、各サイクル♯に対する演算モードを記載しており、「OpMode＜６：０＞」は、各演算モードに関し、Ｚ、Ｙ、およびＸマルチプレクサ（図１７参照）への７ビットのモード制御信号を規定する。
【０１６３】
【表６】
2007522699.tif 000008
【０１６４】
以下の表６は、表５のダイナミック演算モードを、適切な入力および出力に相関付ける。ここで、入力「Ａ」は、所定のサイクル♯に対するＡオペランドであり、入力「Ｂ」は、所定のサイクル♯に対するＢオペランドであり、入力「Ｃ」は、所定のサイクル♯に対するＣオペランドであり（「Ｘ」はＣオペランドがないことを示す）、「出力」は、所定の「サイクル♯に対する、スライスによって特定される出力である。
【０１６５】
【表７】
2007522699.tif 000009
【０１６６】
図１８は、図１７のスライス１７００に関して使用されるＣレジスタ３００（図３）の一実施例を示す。レジスタ３００は、１８個の構成可能記憶素子１８００を含み、これらの記憶素子１８００の各々は、１８個のオペランド入力線Ｃ［１７：０］の１つに接続されるデータ端子Ｄを有する。記憶素子１８００は、従来通り、それぞれリセット線およびイネーブル線に接続されたリセット端子およびイネーブル端子を含む。一実施例において、Ａ、Ｂ、およびＣレジスタは、別個のリセット端子およびイネーブル端子を有する。構成可能マルチプレクサ１８０５は、素子１８００のクロック端子に対し、２つのクロック入力ＣＬＫ０およびＣＬＫ１のいずれかを提供する。構成可能バイパスマルチプレクサ１８１０は、Ｃオペランド入力経路内の記憶素子１８００の選択的な内包または除外を行なう。構成可能マルチプレクサ１８０５および１８１０は、構成メモリセル（図示せず）により制御されるが、たとえば拡張されたモードレジスタ１７２３により、ダイナミックに制御されてもよい。
【０１６７】
図１９は、図１７のキャリーイン論理１７５０の一実施例を示す。キャリーイン論理１７５０は、関連する構成可能バイパスマルチプレクサ１９１０を有するキャリーインレジスタ１９０５を含む。これらの素子はともに、汎用配線からキャリーイン選択線ＣＩＮＳＥＬを介して制御されるダイナミック出力マルチプレクサ１９１５に対し、記録されたか、または記録されていないキャリーイン信号を送出する。
【０１６８】
キャリーイン論理１７５０は、従来通り、キャリーイン線ＣＩＮを介して加算器１７１９（図１７）にキャリーイン信号ＣＩを送出する。キャリーイン論理１７５０は加えて、図１５および図１６に関して上に記載した態様と同様の態様で丸めをサポートするが、積の丸めに限定されない。丸めのリソースは、１対のダイナミックマルチプレクサ１９２０および１９２５、ＸＮＯＲゲート１９３０、ならびにバイパスされたレジスタ１９３５を含む。レジスタ１９０５および１９３５は、それぞれの線ＣＩＮＣＥ１およびＣＩＮＣＥ
２上でそれぞれイネーブル信号を受取る。これらの丸めのリソースは、以下の関数をサポートする。
【０１６９】
ＣＩＮＳＥＬ＝００：マルチプレクサ１９１５は、キャリーイン線ＣＩＮを介して加算器１７１９にキャリーイン入力ＣＩを提供する。
【０１７０】
ＣＩＮＳＥＬ＝０１：マルチプレクサ１９１５は、加算器１７１９にマルチプレクサ１９２０の出力を提供する。スライス１７００が積生成器１７２７からの積を丸めるように構成される場合、OpModeビットＯＭ［１］は論理ゼロである。その場合、マルチプレクサ１９２０は、レジスタ１９３５およびマルチプレクサ１９１５に対し、オペランドＡおよびＢの符号ビットのＸＮＯＲを提供する。したがって、線ＣＩＮ上のキャリーイン信号は、乗算／丸め関数について図１５に関して上で論じた訂正係数ＣＦとなる。
【０１７１】
ＣＩＮＳＥＬ＝１０：この機能性は、マルチプレクサ１９２０の出力がレジスタ１９３５から取られることを除き、ＣＩＮＳＥＬ＝０１の場合と同じである。信号ＣＩＮＳＥＬは、レジスタ１７３５（図１７）が含まれるとき、１０に設定される。
【０１７２】
ＣＩＮＳＥＬ＝１１：マルチプレクサ１９２５は、OpModeビットＯＭ［６，５，４，１，０］を復号して、スライス１７００が累算に関してそれ自体の出力ＯＵＴを丸めているのか、またはカスケード演算に関して上流スライスの出力を丸めているのかを判断する。累算は、スライス１７００の出力の符号ビットＯＵＴ［４７］を選択し、一方でカスケード演算は、上流出力カスケードバスＵＯＣの符号ビットＵＯＣ［４７］を選択する。マルチプレクサ１９２５の選択端子は、以下のようにOpModeビットを復号する。すなわち、ＳＥＬＰ４７＝（ＯＭ［１］＆〜ＯＭ［０］）｜｜ＯＭ［５］｜｜〜ＯＭ［６］｜｜ＯＭ［４］であり、ここで「＆」はＡＮＤ関数を示し、「｜｜」はＯＲ関数を示し、「〜」はＮＯＴ関数を示す。
【０１７３】
図２０Ａおよび図２０Ｂは、スライス１７００の一実施例に従った２深度のオペランドレジスタ１７１０および１７１５のそれぞれを詳細に示す。レジスタ１７１０および１７１５は同一であるため、レジスタ１７１５の説明は省略する。示した例では２深度であるが、レジスタ１７１０および１７１２の一方または両方が、カスケード接続された追加の記憶素子を含んで、より大きな深度を提供してよい。
【０１７４】
レジスタ１７１０、すなわち「Ａ」レジスタは、カスケード接続された記憶素子２０００および２００５の２つの１８ビット集合と、バイパスマルチプレクサ２０１０とを含む。マルチプレクサ２０１０は、適切な入力ポートを選択することにより、０、１、または２クロックサイクルだけＡオペランドを遅延させるように構成され得る。マルチプレクサ２０１０は、この実施例において構成メモリセル（図示せず）により制御されているが、OpModeレジスタによる等、ダイナミックに制御されてもよい。図９等の上述の例において、Ｂレジスタは下流スライスにカスケード接続されているが、他の実施例において、Ａレジスタは、同じ態様でカスケード接続され、または、Ｂとは反対方向にカスケード接続される。
【０１７５】
信号処理を中断せずにオペランドを変更することが時として望ましいことがある。たとえば、処理を停止する必要なしに、信号処理構成のフィルタ係数を変更することが有益であることが考えられる。したがって、記憶素子２０００および２００５には、いくつかの実施例において、別個のダイナミックなイネーブル入力が与えられる。したがって、２００５等の一方の記憶素子はマルチプレクサ２０１０を介してフィルタ係数を提供し、２０００等の他方の記憶素子は新規の係数で更新される。その後、マルチプレクサ２０１０は、新規の係数を出力するようにサイクル間で切換えられ得る。代替的な実施例において、
レジスタ２０００は、隣接するレジスタ２００５にデータを転送可能にされる。他の実施例において、レジスタ２０００のＱ出力は、隣接するスライス内のレジスタ２０００のＤ入力にカスケード接続され得、それにより、新規のフィルタ係数がレジスタ２０００内にシフトされ得、一方でレジスタ２００５は、以前のフィルタ係数を保持する。そして、新規に更新された係数は、次のクロック端上で対応するレジスタ２０００からレジスタ２００５が新規の係数を捕捉し得るようにすることにより、適用され得る。
【０１７６】
図２１は、図１７のスライス１７００の代替的な一実施例に従った２深度出力レジスタ１７５５′の詳細を示す。図２１に示す出力レジスタ１７５５′は、任意の第２のレジスタ１７６２がレジスタ１７６０とマルチプレクサ１７６５′との間に接続されていることを除き、図１７の出力レジスタ１７５５と同様である。加算器１７１９からの４８ビット出力は、レジスタ１７６０または１７６２か、または両方のレジスタに記憶され得る。レジスタ１７６０または１７６２のいずれか、または両方のレジスタは、バイパスされ得、それにより、加算器１７１９からの４８ビット出力は、ＯＵＴに直接送られ得る。レジスタ１７６２はＯＵＴに対する保持レジスタとして使用され得、レジスタ１７６０は、加算器１７１９からの別の入力を受取る。
【０１７７】
図２２は、スライス１７００の一実施例に従ったOpModeレジスタ１７２３を示す。レジスタ１７２３は、記憶素子２２０５および構成可能バイパスマルチプレクサ２２１０を含む。レジスタ１７２３の入力バスおよび出力バスは、同じ名称を有する。記憶素子２２０５は、OpModeバスの７本の線ＯＭ［６：０］に並列接続された７個の記憶素子を含む。OpModeレジスタ１７２３内のビットの数は、追加のダイナミックリソースをサポートするように拡張されてよい。
【０１７８】
図２３は、スライス１７００の一実施例に従ったキャリーイン選択レジスタ１７７０を示す。レジスタ１７７０は、記憶素子２３０５および構成可能バイパスマルチプレクサ２３１０を含む。レジスタ１７７０の入力バスおよび出力バスは、同じ名称を有する。記憶素子２３０５は、キャリーイン選択バスの２本のキャリーイン選択線ＣＩＳ［１：０］に並列接続された２つの記憶素子を含む。レジスタ１７７０内のビットの数は、追加の演算をサポートするように拡張されてよい。
【０１７９】
図２４は、スライス１７００の一実施例に従った減算レジスタ１７４１を示す。レジスタ１７４１は、記憶素子２４０５および構成可能バイパスマルチプレクサ２４１０を含む。レジスタ１７４１の入力バスおよび出力バスは、同じ名称を有する。記憶素子２４０５は、減算線ＳＵＢに接続する。一実施例において、減算レジスタ１７４１およびキャリーイン選択レジスタ１７７０は、１つのイネーブル端子ＣＩＮＣＥ１を共有する。
【０１８０】
多重化された加数入力端子を有する演算回路
図２５は、一実施例に従った演算回路２６００を示す。やはり、演算回路２６００は、図１７のスライス１７００内の積生成器１７２７、レジスタバンク１７３０、多重化回路１７２１、および加算器１７１９を含む演算回路１７１７と同様であるが、例示を簡単にするために単純化されている。また、適用可能な場合、例示を簡単にするため、図１７と同じ標識番号が図２５で使用される。
【０１８１】
演算回路２６００の多重化回路は、２つの低位OpModeビットＯＭ［１：０］によりダイナミックに制御されるＸマルチプレクサ２６０５と、２つの中位OpModeビットＯＭ［３：２］によりダイナミックに制御されるＹマルチプレクサ２６１０と、３個の高位OpModeビットＯＭ［６：４］によりダイナミックに制御されるＺマルチプレクサ２６１５とを含む。したがって、OpModeビットＯＭ［６：０］は、さまざまな入力ポートのうちのどれが加算器１７１９にデータを与えるかを判断する。マルチプレクサ２６０５、２６１０、およ
び２６１５の各々は、積生成器１７２７以外のソースから加数を受取って集合的に「ＰＧバイパスポート」と称される入力ポートを含む。この例において、ＰＧバイパスポートは、ＯＵＴポート、したがってＯＵＴ［０：４８］に接続され、このＯＵＴ［０：４８］は、オペランドＡおよびＢ  Ａ：Ｂ［０：３５］、Ｃオペランドの上流出力カスケードバスＵＯＣ、および論理ゼロを表わす電圧レベルに保持された端子のさまざまな集合の連結である。他の実施例は、図２５のポートと同じ機能性または異なる機能性を提供する、より多くのまたはより少ないＰＧバイパスポートを使用してよい。
【０１８２】
Ｘマルチプレクサ２６０５、Ｙマルチプレクサ２６１０、およびキャリーイン信号ＣＩＮの出力の和がマルチプレクサ２６１５からのＺ入力から減算されるべき場合、減算信号ＳＵＢがアサートされる。その結果は以下のとおりである。
【０１８３】
結果＝［Ｚ−（Ｘ＋Ｙ＋Ｃｉｎ）］                                  （８）
以下の図３６に関してさらに説明するように、加算器１７１９内の全加算器は、公知の恒等式を用いて以下の減算を実行する。
【０１８４】
【数１】
2007522699.tif 000010
【０１８５】
方程式９は、Ｚ（１の補数）を反転させて、それを（Ｘ＋Ｙ＋Ｃｉｎ）の和に加えてから、その結果を反転させる（１の補数）ことにより減算が行なわれ得ることを示す。
【０１８６】
図２６は、図２５の積生成器（ＰＧ）１７２７の拡大図である。ＰＧ１７２７は、２つの１８ビット入力ＱＡ［０：１７］およびＱＢ［０：１７］（図１７）を受取る。ＱＡ［０：１７］およびＱＢ［０：１７］は、変形ブースエンコーダ／マルチプレクサ（Modified Booth Encoder/Mux）２６２０を介して冗長４進形式に符号化されて、９個の減算ビットＳ［０：８］、すなわち、ｓ０からｓ８と、［９×１８］の部分積アレイＰ［０：８，０：１８］（図２９参照）を生じる。減算ビットおよび部分積は、カウンタ２６３０および圧縮プログラム２６４０を含むアレイ低減２５３０に入力される。カウンタ２６３０は、減算ビットおよび部分積の入力を受取り、圧縮プログラム２６４０に出力値を送り、圧縮プログラム２６４０は、２個の３６ビット部分積の出力ＰＰ２およびＰＰ１を生じる。
【０１８７】
２種類のカウンタ、すなわち、（１１，４）カウンタおよび（７，３）カウンタが存在する。これらのカウンタは、入力ビット内の１の数をカウントする。したがって、（１１，４）カウンタは、最大１１個の論理１を含む１１個の１ビット入力を有し、１の数は、４ビット出力（００００から１０１１）により示される。同様に、（７，３）カウンタは、最大７個の１を有し得る７個の１ビット入力を有し、１の数は、３ビット出力（０００から１１１）により示される。
【０１８８】
２種類の圧縮プログラム、すなわち、（４，２）圧縮プログラムおよび（３，２）圧縮プログラムが存在し、ここで各圧縮プログラムは、１つ以上の加数を有する。（４，２）圧縮プログラムは５個の入力、すなわち、４個の外部入力および１個のキャリービット入力（Ｃｉｎ）を有し、３個の出力、すなわち、１個の合計ビット（Ｓ）および２個のキャリービット（ＣおよびＣｏｕｔ）を有する。出力ビットＳ、Ｃ、およびＣｏｕｔは、５個の入力ビット、すなわち、４個の外部ビット＋Ｃｉｎの和を表わす。（３，２）は４個の入力、すなわち、３個の外部入力および１個のキャリービット入力（Ｃｉｎ）を有し、３個の出力、すなわち、１個の合計ビット（Ｓ）および２個のキャリービット（ＣおよびＣ
ｏｕｔ）を有する。出力ビットＳ、Ｃ、およびＣｏｕｔは、４個の入力ビット、すなわち、３個の外部ビット＋Ｃｉｎの和を表わす。
【０１８９】
部分積ＰＰ２およびＰＰ１は、３６ビットバス２６４２および２６４４を介して圧縮プログラム２６４０からレジスタバンク１７３０に転送される。図１７、図２５、および図２６を参照すると、ＰＰ２およびＰＰ１は、マルチプレクサ回路１７２１内のＹマルチプレクサ２６１０（ＹＭＵＸ）およびＸマルチプレクサ２６０５（ＸＭＵＸ）を介して加算器１７１９に向かい、ここでＰＰ１およびＰＰ２は、共に加算されて、レジスタバンク１７５５に記憶される４８ビットバス上に３６ビット積を生じる。
【０１９０】
例示的な実施例において、図２６の変形ブースエンコーダ／マルチプレクサ２５２０は、２個の１８ビット入力、すなわち、ＱＡ［０：１７］およびＱＢ［０：１７］を受取り、アレイ低減２５３０に送られる部分積アレイを生じる。９個の１９ビット部分積Ｐ［０：８，０：１８］、および９個の減算ビットｓ０〜ｓ８（以下に示す図２９参照）が存在する。
【０１９１】
ブースエンコーダは、乗数を、２を基数とする形式から４を基数とする形式に変換する。これにより、部分積の数は２分の１に、たとえばこの例では、１８個の部分積から９個の部分積に減る。例示のため、Ｘ＝ｘm-1，ｘm-2，…，ｘ0が２進のｍビットの数であると考えられたい。ここでｍは正の偶数である。そこで、ｍビットの乗数は、以下のように２の補数形式で記述され得る。
【０１９２】
【数２】
2007522699.tif 000011
【０１９３】
ここでｘi＝０，１。
４を基数とするＸの等価表現は、以下により求められる。
【０１９４】
【数３】
2007522699.tif 000012
【０１９５】
ここでｘ-1＝０であり、ｄiは、｛−２，−１，０，１，２｝の組からの値を有し得る。
【０１９６】
【数４】
2007522699.tif 000013
【０１９７】
被乗数がｎ個のビットを有する場合、ＸＹの積は以下により求められる。Ｐiは、ｄiの値に応じてシフトされたおよび／または否定された値Ｘを表わす。ｍ／２個の部分積Ｐiが存在し、ここでは、各部分積が少なくともｎビットを有する。ｍ＝ｎ＝１８（入力Ｘ＝
ＱＡ［０：１７］およびＹ＝ＱＢ［０：１７］）である図２６の場合、９個の部分積、たとえば、Ｐ0からＰ8が存在し、各部分積はｎ＋１または１９個のビットを有する。
【０１９８】
例示のため、乗数をＸとする。ここでＸ＝ＱＡ［０：１７］である。Ｙを被乗数とする。ここでＹ＝ＱＢ［０：１７］である。変形ブースアルゴリズムの特性は、ｄiを求めるのに３個のビットのみが必要とされることである。Ｘの１８ビットは、ｘ2i+1、ｘ2i、およびｘ2i-1により求められ、ここでｉ＝０，１，…８である。ｘ-1＝０と規定する。各ｉに対し、３個のビットｘ2i+1、ｘ2i、およびｘ2i-1を使用して、以下の表７を用いることにより、Ｄiを求める。
【０１９９】
【表８】
2007522699.tif 000014
【０２００】
図２７は、表７によって表わされる変形ブースエンコーダの概略図である。入力は、ビットｘ2i+1、ｘ2i、およびｘ2i-1であるか、または、たとえばｘ2i-1＿ｂが反転されたｘ2i-1であるように、「＿ｂ」で表わされる、それらの反転された値である。図２７は、ＮＡＮＤ２７１４に接続されたＮＡＮＤ２７１２を示し、ＮＡＮＤ２７１４は次いで、出力Ａ＿ｂ（すなわち、反転されたＡ）を生じるインバータ２７１６に接続される。ＮＡＮＤ２７１８は、ＮＡＮＤ２７２０に接続され、ＮＡＮＤ２７２０は次いで、出力Ｓ＿ｂ（すなわち、反転されたＳ）を生じるインバータ２７２２に接続される。ＸＮＯＲ２７２４は、出力Ｘ２＿ｂ（すなわち、反転されたＸ２）を生じるインバータ２７２６に接続される。
【０２０１】
図２８は、部分積Ｐik、すなわちＰ［０：８，０：１８］を生じるブースマルチプレクサの概略図である。乗数Ｘが一旦符号化されると、符号化された乗数（たとえばｄ0からｄ8）が次に、被乗数Ｙにより乗算される。ｄiが組｛−２，−１，０，１，２｝内の値を有するため、ｄiＹの非ゼロ値は、左シフト（すなわち、ｄi＝｛−２，２｝に対し、ビットｋにおいてｙk-1を選択すること）、および被乗数Ｙの否定（すなわち、ｄi＝｛−２，−１｝に対し）の組合せにより計算され得る。マルチプレクサ２８１２および２８１４は、ｙk-1およびｙk、ならびにｙk-1およびｙkのインバース（すなわち、ｙk-1＿ｂおよびｙk＿ｂ）を受取る差動マルチプレクサである。２本の選択線ＳＥＬ０およびＳＥＬ１は、マルチプレクサ２８１６内において互いに対して反転された値を有する。マルチプレクサ２８１６の出力は、インバータ２８１８を介して反転され、インバータ２８１８は、部分積Ｐikを生じる。加えて、反転された減算ビットｓ０＿ｂからｓ８＿ｂが各ｉに対して生成される。
【０２０２】
図２９は、ブースエンコーダ／マルチプレクサ２６２０から生じた部分積のアレイを示す。ヘッダの行２９３０は、変形ブースエンコーダ／マルチプレクサ２６２０により出力された３６個の重みを示す。ヘッダの列２９２０は、９本の行を示し、これらの行は、ブースエンコーダ／マルチプレクサ２６２０により出力された部分積を含む。たとえばｐ０
は、Ｐikを表わし、ここでｉ＝０およびｋ＝０，１，…，１８である。ｐ０に対する減算ビットは、ｓ０により求められる。図２９に示すアレイは、当業者にとって周知である。部分積が２の補数形式であるため、部分積の和についての正しい値を得るために、各部分積は、符号拡張を必要とする。しかしながら、符号拡張は、２つの数を乗算するのに必要とされる回路を増加させる。最上位ビットを反転させること、たとえばビット１８におけるｐ０がｐ０＿ｂになること、および、１８番目のビットにおいて開始する定数１０１０１０１０…１０１０１１を加算すること、すなわち、ビット１８に１を加算して各部分積の右に１を加算することによる、各部分積への変更は、必要とされる回路を減らす（さらなる説明は、１９９７年９月８〜１０日付、ベルギー（Belgium）におけるＰＡＴＭＯＳＴ’９７第７回国際ワークショッププログラム（Seventh International Workshop Program）で提示された、ラファエル・フライド（Rafael Fried）による「高性能並列乗算器における消費電力削減および高速化のためのアルゴリズム（Algorithms for Power Consumption Reduction and Speed Enhancement in High-Performance Parallel Multipliers）」という掲載論文に提示されている。図３０は、サブアレイ３０１２において、変形された部分積のアレイを示す。
【０２０３】
図３０は、４段における部分積のアレイ低減を示す。段１は、サブアレイ３０１２であり、アレイ低減ブロック２５３０（図２６）によりブースエンコード／マルチプレクサ２６２０（図２６）から受取られて変形された部分積アレイを提示する。カウンタブロック２６３０において、（１１，４）カウンタ３０２４は、ビット列１４〜２１に適用され、（７，３）カウンタ３０２２は、ビット列６〜１３および２２〜２８に適用され、全加算器３０２０は、ビット列２、４〜５および２９〜３１に適用される。カウンタおよび全加算器の結果は、段２（サブアレイ３０１４）に送られ、その後、段３（サブアレイ３０１６）に送られる。段２および段３は、圧縮プログラムのブロック２６４０において行なわれる。圧縮プログラムのブロック２６４０において、（４，２）圧縮プログラム３０２８は、ビット列１２および１７〜２４に適用され、（３，２）圧縮プログラム３０２６は、ビット列１３〜１６および２５〜２９に適用され、全加算器３０２０は、ビット列３〜１１および３０〜３３に適用される。段２および段３の結果は、段４（サブアレイ３０１８）において示され、３６ビットの部分積ＰＰ１および３６ビットの部分積ＰＰ２であり、これらはレジスタバンク１７３０（図２６）に送られる。
【０２０４】
図３１、図３２、および図３３Ａ〜図３３Ｅを参照して、図２６のカウンタブロック２６３０の（１１，４）カウンタおよび（７，３）カウンタと、図３０の（１１，４）カウンタおよび（７，３）カウンタとを、以下により詳細に説明する。
【０２０５】
図３１は、（１１，４）カウンタ３０２４および（７，３）カウンタ３０２２のブロック図を示す。（１１，４）カウンタおよび（７，３）カウンタはそれぞれ、それらの１１ビット（すなわちＸ１〜Ｘ１１）入力および７ビット（すなわちＸ１〜Ｘ７）入力内の１の数をカウントし、入力ビット内における１の数の４ビット（Ｓ１〜Ｓ４）出力または３ビット（Ｓ１〜Ｓ３）出力を与える。一実施例において、（１１，４）カウンタは、（１５，４）カウンタを用いて形成される。（１５，４）カウンタおよび（７，３）カウンタの性能を高めるために、一実施例では、対称関数が使用される。
【０２０６】
対称関数は、１度にｋ個取られるｎ個の変数の組合せに基づく。たとえば、ＣＡＴにおける３個の文字の場合（ｎ＝３）、２個の文字からなる３個のグループ（ｋ＝２）、すなわちＣＡ、ＣＴ、およびＡＴが存在する。順序が問題とならないことに注意されたい。対称関数の２つの種類、すなわち、ＸＯＲ対称関数｛ｎ，ｋ｝およびＯＲ対称関数［ｎ，ｋ］が規定される。ｎ個のブール（Boolean）変数、すなわちＸ１，Ｘ２，…，Ｘｎの場合、ＸＯＲ対称関数｛ｎ，ｋ｝は、積のＸＯＲを取ることであり、ここで各積は、ともにＡＮＤにされたｎ個の変数のうちのｋ個からなり、これらの積は、ｎ個からｋ個の変数を選
択する、相違する全態様を含む。ＯＲ対称関数［ｎ，ｋ］は、積のＯＲを取ることであり、ここで各積は、ともにＡＮＤにされたｎ個の変数のうちのｋ個からなり、これらの積は、ｎ個からｋ個の変数を選択する、相違する全態様を含む。カウンタの結果ビットに対するＸＯＲ対称関数およびＯＲ対称関数の例、すなわち（３，２）カウンタのＳ１およびＳ２は以下の通りである。
【０２０７】
【数５】
2007522699.tif 000015
【０２０８】
（７，３）カウンタに対する対称関数は、以下の通りである（ここで、上付き文字ｃは、１の補数、すなわちビットが反転されたことを意味する）。
【０２０９】
【数６】
2007522699.tif 000016
【０２１０】
（１５，４）カウンタに対する対称関数は、以下の通りである。
【０２１１】
【数７】
2007522699.tif 000017
【０２１２】
（７，３）および（１５，４）の対称関数を実現するために、分割統治法が使用される。この方法は、初等対数関数に対するチュー（Chu）の恒等式に基づく。
【０２１３】
【数８】
2007522699.tif 000018
【０２１４】
チューの恒等式は、大きな組合せ関数が、より小さな関数の積の和に分割されることを可能にする。一例として、４個のブール変数Ｘ１、Ｘ２、Ｘ３、およびＸ４を考えられたい。［４，２］を計算するために、２つのグループの変数、たとえばグループ０＝（Ｘ１，Ｘ２）およびグループ１＝（Ｘ３，Ｘ４）が１度に１個取られ、これらの２つのグループの変数は次に、１度に２個取られる。
【０２１５】
【数９】
2007522699.tif 000019
【０２１６】
したがって、ｒ＝ｓ＝２およびｎ＝２であり、上述のチューの恒等式を使用すると、以下のようになる。
【０２１７】
【数１０】
2007522699.tif 000020
【０２１８】
図３２は、（７，３）カウンタの平面図の一例を示す。２の４個のグループ（３１１０、３１１２、３１１４、および３１１６）が存在し、それらの各々は、１度に２個および１個取られたＸ１〜Ｘ８（ここでＸ８＝０）の２個の入力を表わす。次に、４の２個のグループ（３１２０，３１２２）が存在し、それらの各々は、２のグループの各対からの４個の入力を表わす。最終ブロック３１３０は、４の２個のグループ（３１２０および３１２２）を組合せて、和Ｓ３およびＳ２を生じる。
【０２１９】
（７，３）カウンタへの８個の入力はまず、各々が２個の要素の４個のグループ、すなわち（Ｘ１，Ｘ２）、（Ｘ３，Ｘ４）、（Ｘ５，Ｘ６）、および（Ｘ７，Ｘ８）にグループ化され、ここでＸ８＝０である。図３２において上付き文字の０で表示される第１のグループの（Ｘ１，Ｘ２）に関し、以下のようになる。
【０２２０】
【数１１】
2007522699.tif 000021
【０２２１】
図３２において上付き文字の１で表示される第２のグループの（Ｘ３，Ｘ４）に関し、以下のようになる。
【０２２２】
【数１２】
2007522699.tif 000022
【０２２３】
（Ｘ５，Ｘ６）および（Ｘ７，Ｘ８）についても同様の方程式が存在する。次に、２の４個のグループの最初の２個のグループが、４の第１のグループに入力される（上付き文字０）。２の４個のグループの第２の２個のグループが、４の第２のグループに入力される（上付き文字１）。４の第２のグループの計算が４の第１のグループと同様であるため、４の第１のグループのみを以下に提示する。
【０２２４】
【数１３】
2007522699.tif 000023
【０２２５】
次に、４の２個のグループは、組合されて最終カウントを生じる。
【０２２６】
【数１４】
2007522699.tif 000024
【０２２７】
Ｘ８＝０および［４，４］1＝０であるため、以下のようになる。
【０２２８】
【数１５】
2007522699.tif 000025
【０２２９】
（１５，４）カウンタに対する対称関数は、２つの部分に分割される。２つの最上位ビット（ＭＳＢ）、たとえばＳ３およびＳ４は、ＯＲ対称関数（ＡＮＤ−ＯＲおよびＮＡＮＤ−ＮＡＮＤ論理）を用いて計算され、２つの最下位ビット（ＬＳＢ）、たとえばＳ１およびＳ２は、ＸＯＲ対称関数を用いて計算される。
【０２３０】
図３３Ａは、（１５，４）カウンタに対する平面図を示す。１６個の入力ビット（Ｘ１〜Ｘ１６、ここでＸ１６＝０）が存在する。ＭＳＢは、１つおきの行３３２０、３３２２、３３２４、および３３２６を用いて計算される。ＬＳＢは、１つおきの行３３１２、３３１４、３３１６、および３３１８を用いて計算される。行３３１２および３３２０は、２のグループであり、行３３１４および３３２２は、４のグループであり、行３３１６および３３２４は、８のグループであり、行３３１８および３３２６は、和を生じる最終グループである。ＭＳＢに関し、２および４のグループは、（７，３）カウンタと同様に構築され、その説明は繰返さない。８のグループは以下の通りである。
【０２３１】
【数１６】
2007522699.tif 000026
【０２３２】
ＭＳＢに対する最終的な和Ｓ３およびＳ４は以下の通りである。
【０２３３】
【数１７】
2007522699.tif 000027
【０２３４】
図２６の圧縮プログラムのブロック２６４０および図３０の段２〜４（サブアレイ３０１４、３０１６、および３０１８）のより詳細な説明を、次に図３４、図３５Ａ、および図３５Ｂを参照して行なう。
【０２３５】
図３４は、［４，２］圧縮プログラムの概略図である。［４，２］圧縮プログラムは、５個の入力、すなわちＸ１〜Ｘ４およびＣＩＮを受取り、合計（Ｓ）および２個のキャリー（ＣおよびＣＯＵＴ）出力を用いて、これらの入力内の１の表現を生じる。ＣＩＮおよびＣＯＵＴは通常、隣接する［４，２］圧縮プログラムに接続される。［４，２］圧縮プログラム３４１０は、２個の［３，２］カウンタ、すなわち、全加算器３４２０および３４２２で構成される。第１の全加算器３４２０は、入力Ｘ２、Ｘ３、およびＸ４を受取り、中間出力３４３２およびＣＯＵＴを生じる。第２の全加算器３４２２は、入力Ｘ１、中間出力３４３２、およびＣＩＮを受取り、合計（Ｓ）およびキャリー（Ｃ）を生じる。
【０２３６】
再び図３０を参照すると、［４，２］圧縮プログラム３０２８は、５個の入力（Ｘ１〜Ｘ４およびＣＩＮ）を受取り、３個の出力（Ｓ、Ｃ、ＣＯＵＴ）を生じることができる。同様に、図３０からの［３，２］圧縮プログラム３０２６は、４個の入力（Ｘ１〜Ｘ３およびＣＩＮ）を受取り、３個の出力（Ｓ、Ｃ、ＣＯＵＴ）を生じることができる。図３４のブロック３４１２は、図３０の段２（サブアレイ３０１４）に対応する。ブロック３４１２は、４個の入力Ｘ１〜Ｘ４（図３０ではサブアレイ３０１４内のビット列内にある４個の要素として図示）を有し、第１の中間出力３４３０、第２の中間出力３４３２、およびＣＯＵＴを生じる。これらの２つの中間出力およびＣＩＮは、図３４のブロック３４１４に入力される。ブロック３４１４は、図３０の段３（サブアレイ３０１６）に対応する。２つの中間出力３４３０および３４３２ならびにＣＩＮは、全加算器３４２２を介して加算されて、ブロック３４１４から合計（Ｓ）ビットおよびキャリー（Ｃ）ビットを生じる。［３，２］圧縮プログラムに関し、ブロック３４１２は、入力Ｘ４が省略された状態で入力Ｘ１〜Ｘ３を有する。ブロック３４１４は、［３，２］圧縮プログラムに関して同じままである。ブロック３４１４により生じたＳおよびＣのビットを、図３０の段４（サブアレイ３０１８）に示す。
【０２３７】
図３５Ａは、図３０の４本の列３０３０を示し、段１のカウンタのいくつかの出力が段２および段３の圧縮プログラムのいくつかにどのようにマッピングするかを示す。図３０
のサブアレイ３０１２およびビット列１６〜１９（３０３０により表示）からの入力を有する４個の［１１，４］カウンタ３５２０、３５２２、３５２４、および３５２６が存在する。図３５Ａはまた、図３０のサブアレイ３０１４およびビット列１６〜１９からの入力を有する４個の圧縮プログラム３５４０、３５４２、３５４４、および３５４６を示す。ビット１９および［４，２］圧縮プログラム３５４４に注目すると、圧縮プログラム３５４４は入力として、［１１，４］カウンタ３５２０からＳ４と、［１１，４］カウンタ３５２２からＳ３と、［１１，４］カウンタ３５２４からＳ２と、［１１，４］カウンタ３５２６からＳ１とを受取る。
【０２３８】
図３５Ｂは、図３５Ａのビット１９の［４，２］圧縮プログラムに注目する概略図である。それぞれカウンタ３５２０（ビット１６）、３５２２（ビット１７）、３５２４（ビット１８）、および３５２６（ビット１９）からＳ４  ３５６０、Ｓ３  ３５６２、Ｓ２
３５６４、およびＳ１  ３５６６が圧縮プログラム３５４４内に入力として選択される理由は、カウンタの入力重みをアライメントするためであり、それにより、これらの重みは正しく共に加算され得る。たとえば、ビット１８からのＳ２は、ビット１９からのＳ１と同じ重みを有する。これらの４個のビット３５６０、３５６２、３５６４、および３５６６は、圧縮プログラム３５４２からのキャリービットＣＩＮ３５７０と共に圧縮プログラム３５４４内でともに加算され、その総和が合計ビットＳ３５８０、キャリービットＣ３５８２、および別のキャリービットＣＯＵＴ３５８４として出力され、この別のキャリービットＣＯＵＴ３５８４は、圧縮プログラム３５４６に送られる。４個の点線のボックス３０１２、３０１４、３０１６、および３０１８は、図３０内の４個のサブアレイを表わす。段１内の入力は、点線の円３５５８内に示され、図３０のサブアレイ３０１２内のビット列１８内にある要素に対応する。入力３５６０、３５６２、３５６４、および３５６６は、サブアレイ３０１４内のビット例１９内にある要素ｓ１３、ｓ１２、ｓ１１、およびｓ１０に対応する。入力ＣＩＮ３５７０、３５７２、および３５７４は、サブアレイ３０１６内のビット列１９内にある要素ｓ２０、ｓ３０、およびｓ３１に対応する。出力Ｓ３５８０およびＣ３５８２は、サブアレイ３０１８内のそれぞれビット列１９および２０内にある要素ｓ３１およびｓ３０に対応する。
【０２３９】
図２５を参照すると、ＰＰ１  ２６４２およびＰＰ２  ２６４４がレジスタバンク１７３０に記憶された後に、ＰＰ２（符号付きのかつ符号拡張された数）がＹマルチプレクサ２６１０を介して加算器１７１９に送られ、ＰＰ１（符号なしであり、０で埋められた数）がＸマルチプレクサ２６０５を介して加算器１７１９に送られて、共に加算される。ゼロは、Ｚマルチプレクサ２６１５を介して加算器１７１９に送られる。この発明の一実施例において、Ｚ２６１５、Ｙ２６１０、およびＸ２６０５のマルチプレクサの出力は反転される。図３６は、図２５の加算器１７１９の拡大図の概略図である。Ｚ＿ｂ［０：４７］、Ｙ＿ｂ［０：４７］、およびＸ＿ｂ［０：４７］の入力は、複数の１ビット全加算器３６１０に送られる。各全加算器３６１０への減算（ＳＵＢ）入力は、減算Ｚ−（Ｘ＋Ｙ）が行なわれるべきかどうかを示す。１ビット全加算器３６１０の出力は、合計ビットＳ［０：４７］およびキャリービットＣ［０：４７］であり、これらは、キャリールックアヘッド加算器（ＣＬＡ）３６２０内に入力される。４８ビットの総和の結果が次に、レジスタバンク１７５５に記憶される。
【０２４０】
減算の際に、１ビット全加算器３６１０は、Ｚを反転させること、すなわちＺCにより減算のためのＳおよびＣを生じる方程式ＺC＋（Ｘ＋Ｙ）を実行する。減算の結果を生じるため、ＣＬＡ３６２０の出力は、レジスタバンク１７５５に記憶される前にＸＯＲゲート３６２２内で反転される。
【０２４１】
図３７は、図３６の１ビット全加算器３６１０の概略図である。インバータ３７１０、３７１２、３７１４、３７１６、および３７３０は、１ビット入力Ｘ＿ｂ、Ｙ＿ｂ、ＳＵ
Ｂ、およびＺ＿ｂを反転する。インバータ３７４２の後にキャリービット（Ｃ）を生じる差動マルチプレクサ３７４０とともに、差動ＸＯＲゲート３７２６および３７２８が存在する。ブロック３７２０内の２つの差動ＸＯＲゲート３７２２および３７２４は、減算が行なわれる場合に、Ｚを反転する。ＸＯＲ３７４４は、ＸＯＲ３７２６および３７２８の出力と、インバータ３７３２および３７３４を介してブロック３７２０の出力とを受取り、インバータ３７４６の後に１ビットの合計Ｓを生じる。
【０２４２】
一実施例におけるキャリールックアヘッド加算器（ＣＬＡ）３６２０は、図３６内の全加算器３６１０から合計ビットＳ［０：４７］およびキャリービットＣ［０：４７］を受取り、それらを共に加算して、４８ビットの合計を生じる。この４８ビットの合計は、レジスタバンク１７５５に記憶されるべき乗算の積を表わす。
【０２４３】
キャリールックアヘッド加算器は、加算前にキャリーを予め計算するキャリー伝播加算器の一形態である。ＣＬＡが入力、たとえばａ（ｎ）およびｂ（ｎ）を有すると考えた場合、このＣＬＡは、生成（Ｇ）信号および伝播（Ｐ）信号を使用して、キャリーアウトが生じるか否かを判断する。Ｇがハイであるとき、次のビットに対するキャリーインはハイである。Ｇがローであるとき、次のビットに対するキャリーインは、Ｐがハイであるか否かに部分的に依存する。上述の関係は、１ビットキャリールックアヘッド加算器に対する方程式を見ることにより、容易に認識可能である。
【０２４４】
【数１８】
2007522699.tif 000028
【０２４５】
ここでｎは、ｎ番目のビットである。
一般に、従来の高速キャリールックアヘッド加算器に関し、生成関数が以下により提示される。
【０２４６】
【数１９】
2007522699.tif 000029
【０２４７】
従来のＣＬＡの効率を高めるために、生成関数を以下のように分解する。
【０２４８】
【数２０】
2007522699.tif 000030
【０２４９】
ここでａiおよびｂiは、２つの４８ビット加算器の入力の各々の「ｉ番目」のビットである。
【０２５０】
Ｇに対する他の分解は以下の通りである。
【０２５１】
【数２１】
2007522699.tif 000031
【０２５２】
ｎ＝４およびｍ＝２に対する新規の生成関数Ｇ4:0の一例は以下の通りである。
【０２５３】
【数２２】
2007522699.tif 000032
【０２５４】
Ｇの新規の分解を用いて、Ｇ信号に類似したＫ信号およびＰ信号に類似したＱ信号を次に規定する。ＧおよびＰの関数とＫおよびＱの関数との間の対応関係を、以下の表８および表９に提示する。
【０２５５】
【表９】
2007522699.tif 000033
【０２５６】
Ｋ信号は、以下の方程式によりＧ信号に関連付けられる。
【０２５７】
【数２３】
2007522699.tif 000034
【０２５８】
ｎ−１＞ｉ＞ｋ＞ｍ＞ｋ′＞ｍ′＞０と想定されたい。ここでｎ、ｉ、ｋ、ｍ、ｋ′、およびｍ′は正の数である。すると以下のようになる。
【０２５９】
【数２４】
2007522699.tif 000035
【０２６０】
Ｑ信号は、以下の方程式によりＰ信号に関連付けられる。
【０２６１】
【数２５】
2007522699.tif 000036
【０２６２】
図３８は、４ビット毎のＫの生成についての構造である。ＱおよびＤに関して同様の構造が存在する。３種類のＫ段４１３０（２入力）、４１４０（３入力）、および４１５０（４入力）が存在する。通過段４１４２が存在する。領域４１１２は、構造４１１０内への入力０〜４３を示す（入力４４〜４７は必要とされない）。Ｋを計算するために、４つのレベルのツリー４１２０（基数２）、４１２２（基数４）、４１２４（基数３）、および４１２６（基数２）が存在する。
【０２６３】
図３９は、Ｋ（およびＱ）段の各種類に関連する論理関数を示す。Ｋ、Ｑ段４１３０は、ブロック４１５４に示される論理関数を有する。Ｋ、Ｑ段４１４０は、ブロック４１５６に示す論理関数を有する。Ｋ、Ｑ段４１５０は、ブロック４１５８に示す論理関数を有する。
【０２６４】
４８ビットＣＬＡ３６２０に対する最終的な和は、以下により求められる。
【０２６５】
【数２６】
2007522699.tif 000037
【０２６６】
【数２７】
2007522699.tif 000038
【０２６７】
図４０は、ＣＬＡにおいて、２個の４ビットの数の加算からのキャリーアウトが次段に送られないことを示す。たとえば、Ｓ［４：７］およびＣ［４：７］の加算のキャリーアウトは、Ｓ［８：１１］およびＣ［８：１１］を加算する段にキャリーインとして送られない。
【０２６８】
いくつかの実施例で使用するための、図３６〜４０に示すＣＬＡおよび全加算器を含む
加算器の設計と、図３１〜図３５Ｂに示すものを含むカウンタおよび圧縮プログラムの設計とは、カリフォルニア州（California）、レッドウッド市（Redwood City）のアリスマティカ社（Arithmatica Inc.）から入手可能である。以下の文書、すなわち、ＵＫ特許公開ＧＢ２，３７３，８８３、ＵＫ特許公開ＧＢ２３８３４３５、ＵＫ特許公開ＧＢ２３６５６３６、ＵＳ特許出願公開番号第２００２／０１３８５３８号、およびＵＳ特許出願公開番号第２００３／０１４００７７号は、アリスマティカ社から入手可能な加算器／減算器、カウンタ、圧縮プログラム、および乗算器回路のいくつかの局面を詳細に説明する。
【０２６９】
図４１は、この明細書に開示するＤＳＰスライスおよびタイルが調整されてより複雑なフィルタ組織を形成することが容易であることを示すために、パイプライン化された８タップのＦＩＲフィルタ４１００を示す。フィルタ４１００は、図１２Ａのフィルタ１２００に類似した１対の４タップＦＩＲフィルタ１２００Ａおよび１２００Ｂを含む。さらに別のＤＳＰタイル４１１０は、フィルタ１２００Ａおよび１２００Ｂの出力を組合せて、フィルタリングされた出力Ｙ７（Ｎ−６）を提供する。４個のさらに別のレジスタ３００５がＤＳＰタイルの外部から、たとえば付近の構成可能論理ブロックから含まれる。フィルタ１２００Ａおよび１２２０Ｂとタイル４１１０との間の接続Ｙ３Ａ（Ｎ−４）およびＹ３Ｂ（Ｎ−４）は、汎用配線を介して形成される。
【０２７０】
この発明を特定の実施例に関して説明してきたが、当業者にはこれらの実施例の変更例が明らかであろう。したがって、前掲の請求項の精神および範囲は、上述の説明に限定されるべきではない。
【図面の簡単な説明】
【０２７１】
【図１Ａ】一般的な種類のＰＬＤである、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）１００のブロック図（先行技術）である。
【図１Ｂ】汎用論理およびリソースを自由化する態様でＤＳＰ機能をサポートするよう適合されるＦＰＧＡを示す図（先行技術）である。
【図１Ｃ】この発明の実施例のＦＰＧＡの簡略化された概略図である。
【図２Ａ】さまざまなサイズおよび複雑性の複雑なＤＳＰ回路を生成するためのＤＳＰリソースのカスケード接続をサポートする実施例に従ったＦＰＧＡを示す図である。
【図２Ｂ】図２ＡのＤＳＰタイルスイッチの拡大図のブロック図である。
【図３Ａ】図２のＦＰＧＡの一実施例に従った１対のＤＳＰタイルを詳細に示す図である。
【図３Ｂ】この発明の別の実施例のＤＳＰタイルのブロック図である。
【図３Ｃ】この発明の一実施例の図３ＡのＤＳＰ素子またはＤＳＰスライスの概略図である。
【図３Ｄ】この発明の別の実施例の図３ＡのＤＳＰスライスの概略図である。
【図３Ｅ】この発明のさらに別の実施例のＤＳＰタイルのブロック図である。
【図３Ｆ】実質的に同一の構造を有するこの発明の実施例の２つのＤＳＰ素子を示す図である。
【図３Ｇ】この発明のさらに別の実施例に従った複数のＤＳＰ素子を示す図である。
【図４】一実施例に従ったＦＰＧＡの一部の簡略化されたブロック図である。
【図５Ａ】一実施例に従った、転置された、４タップの、有限インパルス応答（ＦＩＲ）フィルタを実現するよう適合された図４のＦＰＧＡを示す図である。
【図５Ｂ】図５ＡのＦＩＲフィルタの機能を示す表である。
【図５Ｃ】１８ビットの４タップのＦＩＲフィルタを実現するよう適合された従来のＤＳＰ素子のブロック図（先行技術）である。
【図５Ｄ】図５Ｃの２つのＤＳＰ素子からなる、１８ビットの８タップのＦＩＲフィルタのブロック図（先行技術）である。
【図６Ａ】複雑な数学的機能を実現するようにどのようにＦＰＧＡがダイナミックに制御され得るかを示す図である。
【図６Ｂ】複雑な数学的機能を実現するようにどのようにＦＰＧＡがダイナミックに制御され得るかを示す図である。
【図７】別の実施例に従ったＦＰＧＡを示す図である。
【図８】複素数のためのパイプライン化乗算器を実現するよう構成された図７のＦＰＧＡを示す図である。
【図９】別の実施例に従って適合されたＤＳＰリソースを備えたＦＰＧＡを示す図である。
【図１０】３ビットの符号付きオペランドを受けるＤＳＰリソースの例を示す図である。
【図１１】別の実施例に従ったＤＳＰリソースを示す図である。
【図１２Ａ】パイプライン化された４タップのＦＩＲフィルタを実現するよう構成される４つのＤＳＰスライスを示す図である。
【図１２Ｂ】図１２ＡのＦＩＲフィルタの機能を示す表である。
【図１３Ａ】シストリックな４タップのＦＩＲフィルタを実現するためにモードレジスタ内の適切なモード制御信号を用いて構成された２つのＤＳＰタイルＤＳＰＴ０およびＤＳＰＴ１（４つのＤＳＰスライス）を示す図である。
【図１３Ｂ】図１３ＡのＦＩＲフィルタの機能を示す表である。
【図１４】積生成器を迂回する連結バスＡ：Ｂを含むよう修正されたＤＳＰスライスを有するＦＰＧＡを示す図である。
【図１５】丸め処理を容易にする実施例に従ったＤＳＰスライスを示す図である。
【図１６】最下位Ｎビットを切捨てるための図１５のスライスを用いる実施例に従った丸め処理を説明するフローチャートである。
【図１７】上述の例のさまざまな特徴を組合せた実施例に従った複雑なＤＳＰスライスを示す図である。
【図１８】図１７のスライスに関連して用いられるＣレジスタ（図３）の実施例を示す図である。
【図１９】図１７のキャリーイン論理の実施例を示す図である。
【図２０Ａ】図１７のスライスの一実施例に従った２深度のオペランドレジスタを詳細に示す図である。
【図２０Ｂ】図１７のスライスの一実施例に従った２深度のオペランドレジスタを詳細に示す図である。
【図２１】図１７のスライスの代替的な実施例に従った２深度の出力レジスタを詳細に示す図である。
【図２２】スライスの一実施例に従ったOpModeレジスタを詳細に示す図である。
【図２３】スライスの一実施例に従ったキャリーイン選択レジスタを示す図である。
【図２４】スライスの一実施例に従った減算レジスタを示す図である。
【図２５】一実施例に従った算術回路ｎを示す図である。
【図２６】図２５の積生成器（ＰＧ）の拡大図である。
【図２７】修正されたブース符号器の概略図である。
【図２８】部分積を生成するブースマルチプレクサの概略図である。
【図２９】ブース符号器／マルチプレクサから生成される部分積アレイを示す図である。
【図３０】段階的な部分積のアレイ低減を示す図である。
【図３１】（１１，４）カウンタおよび（７，３）カウンタのブラックボックス表現を示す図である。
【図３２】（７，３）カウンタの平面図の例を示す図である。
【図３３Ａ】（１５，４）カウンタの平面図である。
【図３３Ｂ】ＬＳＢに対する回路図である。
【図３３Ｃ】ＬＳＢに対する回路図である。
【図３３Ｄ】ＬＳＢに対する回路図である。
【図３３Ｅ】ＬＳＢに対する回路図である。
【図３４】（４，２）圧縮プログラムの概略図である。
【図３５Ａ】図３０の４つの列を示し、段１のカウンタのいくつかの出力がどのように段２および３の圧縮プログラムのいくつかにマッピングされるかを示す図である。
【図３５Ｂ】図３５Ａのビット１９の［４，２］圧縮プログラムに焦点を絞った概略図である。
【図３６】図２５の加算器の拡大図の概略図である。
【図３７】図３６の１ビット全加算器の概略図である。
【図３８】４ビット毎にＫを生成するための構造を示す図である。
【図３９】Ｋ（およびＱ）段の各タイプに関連の論理機能を示す図である。
【図４０】図３６のＣＬＡの例の拡大図である。
【図４１】ここで開示されるＤＳＰスライスおよびタイルが調整されてより複雑なフィルタ機構を形成する容易さを例示するために、パイプライン化された８タップのＦＩＲフィルタを示す図である。
【図１Ａ】
2007522699.tif 000039
【図１Ｂ】
2007522699.tif 000040
【図１Ｃ】
2007522699.tif 000041
【図２Ａ】
2007522699.tif 000042
【図２Ｂ】
2007522699.tif 000043
【図３Ａ】
2007522699.tif 000044
【図３Ｂ】
2007522699.tif 000045
【図３Ｃ】
2007522699.tif 000046
【図３Ｄ】
2007522699.tif 000047
【図３Ｅ】
2007522699.tif 000048
【図３Ｆ】
2007522699.tif 000049
【図３Ｇ】
2007522699.tif 000050
【図４】
2007522699.tif 000051
【図５Ａ】
2007522699.tif 000052
【図５Ｂ】
2007522699.tif 000053
【図５Ｃ】
2007522699.tif 000054
【図５Ｄ】
2007522699.tif 000055
【図６Ａ】
2007522699.tif 000056
【図６Ｂ】
2007522699.tif 000057
【図７】
2007522699.tif 000058
【図８】
2007522699.tif 000059
【図９】
2007522699.tif 000060
【図１０】
2007522699.tif 000061
【図１１】
2007522699.tif 000062
【図１２Ａ】
2007522699.tif 000063
【図１２Ｂ】
2007522699.tif 000064
【図１３Ａ】
2007522699.tif 000065
【図１３Ｂ】
2007522699.tif 000066
【図１４】
2007522699.tif 000067
【図１５】
2007522699.tif 000068
【図１６】
2007522699.tif 000069
【図１７】
2007522699.tif 000070
【図１８】
2007522699.tif 000071
【図１９】
2007522699.tif 000072
【図２０Ａ】
2007522699.tif 000073
【図２０Ｂ】
2007522699.tif 000074
【図２１】
2007522699.tif 000075
【図２２】
2007522699.tif 000076
【図２３】
2007522699.tif 000077
【図２４】
2007522699.tif 000078
【図２５】
2007522699.tif 000079
【図２６】
2007522699.tif 000080
【図２７】
2007522699.tif 000081
【図２８】
2007522699.tif 000082
【図２９】
2007522699.tif 000083
【図３０】
2007522699.tif 000084
【図３１】
2007522699.tif 000085
【図３２】
2007522699.tif 000086
【図３３Ａ】
2007522699.tif 000087
【図３３Ｂ】
2007522699.tif 000088
【図３３Ｃ】
2007522699.tif 000089
【図３３Ｄ】
2007522699.tif 000090
【図３３Ｅ】
2007522699.tif 000091
【図３４】
2007522699.tif 000092
【図３５Ａ】
2007522699.tif 000093
【図３５Ｂ】
2007522699.tif 000094
【図３６】
2007522699.tif 000095
【図３７】
2007522699.tif 000096
【図３８】
2007522699.tif 000097
【図３９】
2007522699.tif 000098
【図４０】
2007522699.tif 000099
【図４１】
2007522699.tif 000100
【手続補正書】
【提出日】平成18年6月30日(2006.6.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
集積回路であって、第１のデジタル信号処理（ＤＳＰ）素子と第２のＤＳＰ素子とを含む複数のＤＳＰ素子を含み、各ＤＳＰ素子は実質的に同一の構造を有し、各ＤＳＰ素子は、スイッチに接続されるハードワイヤード乗算器を含み、前記スイッチはハードワイヤード加算器に接続され、前記スイッチはレジスタを用いるよう構成され、集積回路はさらに、
第１のＤＳＰ素子を第２のＤＳＰ素子に接続する専用信号線を含む、集積回路。
【請求項２】
前記スイッチは、ハードワイヤード加算器への入力を選択する１つ以上のマルチプレクサを含む、請求項１に記載の集積回路。
【請求項３】
前記レジスタはopmodeを格納する、請求項２に記載の集積回路。
【請求項４】
前記第１のＤＳＰ素子の第１のスイッチは第１のopmodeによって構成され、前記第１のＤＳＰ素子の第２のスイッチは第２のopmodeによって構成される、請求項３に記載の集積回路。
【請求項５】
複数の構成可能機能ブロックと、
前記複数の構成可能機能ブロックのいくつかを接続するプログラマブル配線リソースとをさらに含む、請求項１に記載の集積回路。
【請求項６】
前記第１のＤＳＰはさらに、前記プログラマブル配線リソースと前記専用信号線とに接続される出力ポートを含む、請求項５に記載の集積回路。
【請求項７】
前記第１のＤＳＰはフィードバックポートをさらに含み、前記フィードバックポートは前記第１のＤＳＰ素子の前記出力ポートに接続される、請求項６に記載の集積回路。
【請求項８】
ＤＳＰ回路を有する集積回路であって、第１のＤＳＰ回路は、
入力データレートでデータを受けるための入力データポートと、
入力ポートに結合される第１の乗算器と、
第１のプログラマブルルーティング論理によって前記第１の乗算器に結合される第１の加算器と、
前記第１のプログラマブルルーティング論理に結合されるレジスタとを含み、前記レジスタは前記入力データレートの大きさのオーダ内で、第１のプログラマブルルーティング論理における異なった経路を構成可能であり、
第２のプログラマブルルーティング論理によって第２の乗算器に結合される第２の加算器を含む第２のＤＳＰ回路を含み、前記第２の加算器は前記第１の加算器に結合される、集積回路。
【請求項９】
前記ＤＳＰ回路は、前記第１の加算器と前記第１のプログラマブルルーティング論理とに結合される出力ポートをさらに含む、請求項８に記載の集積回路。
【請求項１０】
前記ＤＳＰ回路は、前記入力データポートと前記第１の乗算器との間に結合される第３のプログラマブルルーティング論理をさらに含む、請求項８に記載の集積回路。
【請求項１１】
前記第３のプログラマブルルーティング論理は、前記入力データポートを前記第１のプログラマブルルーティング論理に直接接続する、請求項１０に記載の集積回路。
【請求項１２】
前記集積回路はプログラマブル論理装置（ＰＬＤ）である、請求項８に記載の集積回路。
【請求項１３】
複数の接続されたデジタル信号処理（ＤＳＰ）モジュールを有する集積回路であって、前記複数の接続されたＤＳＰモジュールの各ＤＳＰモジュールは、
多重化回路を含み、前記多重化回路は、
第１のマルチプレクサ入力と、
第２のマルチプレクサ入力と、
マルチプレクサ出力と、
選択入力とを有し、前記ＤＳＰモジュールはさらに、
前記マルチプレクサ出力に接続される第１の加数入力と第２の加数入力とを有するハードワイヤード加算器と、
複数のコマンドを有し前記選択入力に接続されるレジスタとを含み、前記コマンドは前記第１のマルチプレクサ入力または前記第２のマルチプレクサ入力のいずれかを前記マルチプレクサ出力に接続するためのものであり、
前記複数の接続されたＤＳＰモジュールの第１のＤＳＰモジュールは前記複数の接続されたＤＳＰモジュールの第２のＤＳＰモジュールに接続される、集積回路。
【請求項１４】
前記ＤＳＰモジュールは、前記第１のマルチプレクサ入力に接続される乗算回路をさらに含む、請求項１３に記載の集積回路。
【請求項１５】
前記ＤＳＰモジュールは、前記乗算回路に接続されるＤＳＰモジュールへの入力と前記第２のマルチプレクサ入力とをさらに含む、請求項１４に記載の集積回路。
【国際調査報告】
2007522699.tif 000101
2007522699.tif 000102
2007522699.tif 000103
2007522699.tif 000104
2007522699.tif 000105