(57)【特許請求の範囲】
【請求項１】
プログラマブルロジックデバイスのための特殊処理ブロックであって、該特殊処理ブロックは、有限インパルス応答（ＦＩＲ）フィルタを形成するように適合可能であり、該特殊処理ブロックは、
複数の基本処理ユニットであって、該複数の基本処理ユニットの各々は、
複数の部分積生成器であって、該複数の部分積生成器のうちのそれぞれ１つは、それぞれの部分積を表すそれぞれの複数のベクトルを提供する、複数の部分積生成器と、
該複数の部分積生成器の全てによって生成された該複数のベクトルによって表された部分積を、一演算において、加算するための回路網であって、該複数の部分積生成器のうちのいずれの部分積生成器の部分積も個別には出力されず、該加算するための回路網は、該複数の部分積生成器の全ての部分積の全ての合計のみを出力する、加算するための回路網と
を含む、複数の基本処理ユニットと、
該複数の部分積生成器への入力として該ＦＩＲフィルタの係数を入力するための第１の複数の入力レジスタと、
該ＦＩＲフィルタにデータを入力するための第２の複数の入力レジスタであって、該複数のレジスタは、該複数の部分積生成器の各々にデータを順次入力するためにチェーン状にされている、第２の複数の入力レジスタと、
（１）該複数の基本処理ユニットのうちの２つの基本処理ユニットを必要とする演算と、（２）該複数の特殊処理ブロックのうちの第１の他の特殊処理ブロックからカスケードされる対応出力とを出力として結合するための出力段であって、該出力段は、該複数の特殊処理ブロックのうちの第２の他の特殊処理ブロックにおいて第２の他の出力段にカスケードするために該出力を登録するための出力カスケードレジスタを含む、出力段と
を含み、
該第２の複数の入力レジスタは、該複数の特殊処理ブロックのうちの該第２の他の特殊処理ブロックにおいて、該第２の複数の入力レジスタが対応する第２の複数の入力レジスタにチェーン状にされているとき、該出力カスケードレジスタに対して補償するための遅延レジスタを含む、特殊処理ブロック。
【請求項２】
前記遅延レジスタは、複数の遅延レジスタを含み、該複数の遅延レジスタは、前記複数の基本処理ユニットの各対に対して１つの遅延レジスタを含む、請求項１に記載の特殊処理ブロック。
【請求項３】
前記複数の基本処理ユニットの各々は、それぞれの複数のベクトルの各々が前記加算するための回路網によって加算される前に、該それぞれの複数のベクトルの各々を圧縮する圧縮器回路網をさらに含む、請求項１に記載の特殊処理ブロック。
【請求項４】
前記出力段は、複数の加算器をさらに含み、該複数の加算器は、（１）前記複数の基本処理ユニットのうちの２つの基本処理ユニットを必要とする前記演算と、（２）前記複数の特殊処理ブロックのうちの第１の他の特殊処理ブロックからカスケードされた前記対応出力との合計を出力として提供するように適合可能である、請求項１に記載の特殊処理ブロック。
【請求項５】
有限インパルス応答（ＦＩＲ）フィルタを形成するように適合可能であるプログラマブルロジックデバイスであって、該プログラマブルロジックデバイスは、
少なくとも１つの特殊処理ブロックであって、該少なくとも１つの特殊処理ブロックの各々は、
複数の基本処理ユニットであって、該複数の基本処理ユニットの各々は、
複数の部分積生成器であって、該複数の部分積生成器のうちのそれぞれ１つは、それぞれの部分積を表すそれぞれの複数のベクトルを提供する、複数の部分積生成器と、
該複数の部分積生成器の全てによって生成された該複数のベクトルによって表された部分積を、一演算において、加算するための回路網であって、該複数の部分積生成器のうちのいずれの部分積生成器の部分積も個別には出力されず、該加算するための回路網は、該複数の部分積生成器の全ての部分積の全ての合計のみを出力する、加算するための回路網と
を含む、複数の基本処理ユニットと、
（１）該複数の基本処理ユニットのうちの２つの基本処理ユニットを必要とする演算と、（２）該複数の特殊処理ブロックのうちの第１の他の特殊処理ブロックにおいて第１の他の出力段からカスケードされる対応出力とを出力として結合するための出力段と
を含み、
該少なくとも１つの特殊処理ブロックの各々は、
該複数の特殊処理ブロックのうちの第２の他の特殊処理ブロックにおいて、第２の他の出力段にカスケードするために該出力を登録するための出力カスケードレジスタをさらに含み、
該プログラマブルロジックデバイスは、
該ＦＩＲフィルタにデータを入力するための第１の複数の入力レジスタであって、該複数のレジスタは、該複数の乗算器の各々にデータを順次入力するためにチェーン状にされている、第１の複数の入力レジスタと、
該第１の複数の入力レジスタが、該複数の特殊処理ブロックのうちの該第２の他の特殊処理ブロックにおいて対応する第１の複数の入力レジスタにチェーン状にされているとき、該出力カスケードレジスタを補償するために該第１の複数の入力レジスタにチェーン状にされる遅延レジスタと
をさらに含む、プログラマブルロジックデバイス。
【請求項６】
前記遅延レジスタは、複数の遅延レジスタを含み、該複数の遅延レジスタは、前記複数の基本処理ユニットの各対に対して１つの遅延レジスタを含む、請求項５に記載のプログラマブルロジックデバイス。
【請求項７】
前記複数の基本処理ユニットの各々は、それぞれの複数のベクトルの各々が前記加算するための回路網によって加算される前に、該それぞれの複数のベクトルの各々を圧縮する圧縮器回路網をさらに含む、請求項５に記載のプログラマブルロジックデバイス。
【請求項８】
前記出力段は、複数の加算器を含み、該複数の加算器は、（１）前記複数の基本処理ユニットのうちの２つの基本処理ユニットを必要とする前記演算と、（２）前記複数の特殊処理ブロックのうちの前記第１の他の特殊処理ブロックにおいて、前記第１の他の出力段からカスケードされた前記対応出力との合計を出力として提供するように適合可能である、請求項５に記載のプログラマブルロジックデバイス。
【請求項９】
前記第１の複数の入力レジスタと前記遅延レジスタとは、前記特殊処理ブロックに含まれている、請求項５に記載のプログラマブルロジックデバイス。
【請求項１０】
前記複数の部分積生成器への入力として、前記ＦＩＲフィルタの係数を入力するための第２の複数の入力レジスタをさらに含む、請求項５に記載のプログラマブルロジックデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の参照）
本出願は、２００６年２月９日および２００６年４月４日にそれぞれ出願された同時係属であり、同一出願人に係る米国仮特許出願第６０／７７２，１９７号および第６０／７８９，５３５号の利益を主張する。各々は、本明細書においてそのそれぞれの全容が参考により援用される。
【０００２】
（技術分野）
本発明は、プログラマブルロジックデバイス（ＰＬＤ）に関し、より詳細には、そのようなデバイスに含まれ得る特殊処理ブロックに関する。
【背景技術】
【０００３】
ＰＬＤが使用されるアプリケーションが複雑性を増す一方、ジェネリックプログラマブルロジックリソースのブロックに加えて特殊処理ブロックを含むようにＰＬＤを設計することはより一般的になった。そのような特殊処理ブロックは、論理演算または数学演算のような特定タスクの１つ以上を実行するために部分的または全体的にハードワイヤードであるＰＬＤ上の回路網の集中を含み得る。特殊処理ブロックは、構成可能メモリ要素のアレイのような１つ以上の特定構造も含み得る。そのような特殊処理ブロックに一般的にインプリメントされる構造の例は、乗算器、演算論理ユニット（ＡＬＵ）、バレルシフタ、様々なメモリ要素（ＦＩＦＯ／ＬＩＦＯ／ＳＩＰＯ／ＲＡＭ／ＲＯＭ／ＣＡＭブロックおよびレジスタファイル等）、ＡＮＤ／ＮＡＮＤ／ＯＲ／ＮＯＲアレイ等、またはそれらの組み合わせを含む。
【０００４】
ＰＬＤ上に提供された特殊処理ブロックの特に有用な種類の１つは、例えば、オーディオ信号を処理するために使用され得るデジタル信号処理（ＤＳＰ）ブロックである。そのようなブロックは、乗累算（「ＭＡＣ」）ブロックとしてもよく呼ばれる。なぜなら、それらは、乗算演算、および乗算演算の合計および／または累積を実行するための構造を含むからである。
【０００５】
例えば、Ｓａｎ  Ｊｏｓｅ，  ＣａｌｉｆｏｒｎｉａのＡｌｔｅｒａ  ＣｏｒｐｏｒａｔｉｏｎによってＳＴＲＡＴＩＸ（登録商標）ＩＩの名の下に販売されるＰＬＤは、各々が４つの１８×１８乗算器を含むＤＳＰブロックを含む。それらのＤＳＰブロックの各々は、様々な構成要素が異なる態様に構成されることを可能にするプログラマブルコネクタ（例えば、マルチプレクサ）とともに、加算器およびレジスタをも含む。そのようなブロックの各々において、乗算器は、４つの個々の１８×１８乗算器としてのみ構成され得るのではなく、４つのより小さい乗算器、または１つ大きい（３６×３６）乗算器としても構成され得る。更に、１つの１８×１８複素数（ｃｏｍｐｌｅｘ）乗算（実部および複素数部の各々に対して２つの１８×１８乗算演算に分解される）が実行され得る。４つの１８×１８乗算演算をサポートするために、ブロックは、４×（１８＋１８）＝１４４個の入力を有する。同様に、１８×１８乗算の出力は、３６ビット幅である。そのため、４つのそのような乗算演算の出力をサポートするために、ブロックは３６×４＝１４４個の出力をも有する。
【０００６】
しかしながら、それらの入力および出力は、ＤＳＰが動作できるあらゆるモードに使用されない可能性がある。例えば、ＤＳＰブロックが１８ビットデータおよび係数を用いる有限インパルス応答（ＦＩＲ）フィルタとして構成される場合、各ブロックは、より長いＦＩＲフィルタの４タップサブブロックを形成するために４つの１８×１８乗算の加算を実行するために使用され得る。この場合、入力の数は４×（１８＋１８）＝１４４ラインであるが、出力は、ＤＳＰブロックが１４４個の出力ラインをサポートできるにも関らず、たった３８ビット幅である。同様に、３６×３６ビット乗算においては、全ての４つの内部乗算器が使用されるが、（３６＋３６）＝７２個の入力ラインおよび７２個の出力ラインのみが使用される（たとえ１４４個の入力ラインおよび１４４個の出力ラインがあっても）。従って、その構成においては、ＤＳＰブロックのコアは完全に使用されるが、入力ラインは完全に使用されない。
【０００７】
入力／出力（Ｉ／Ｏ）ドライバおよびラインは、かなりのデバイス領域を消費し得る。実際に、上記のＳＴＲＡＴＩＸ（登録商標）ＩＩ  ＰＬＤのＤＳＰブロックにおいては、Ｉ／Ｏリソースは、ＤＳＰブロック領域の約５０％を消費する。更に、上述されたように、それらはいつも使用されるというわけではない。同時に、ブロックの全ての可能な構成がサポートされるべきであるため、それらを消去することもできない。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＤＳＰブロックのような特殊処理ブロックによって消費されるＰＬＤの領域を、ブロックの機能性を失わずに減少できることが望ましい。
【課題を解決するための手段】
【０００９】
本発明は、ＰＬＤのための特殊処理ブロックに関する。特殊処理ブロックは、機能性を失わずに減少された領域を有する。本発明の一局面に従うと、特殊処理ブロックは、好ましくは、ディスクリート乗算器の代わりに複数の基本処理ユニットを含む。基本処理ユニットの各々は、好ましくは、少なくとも２つの乗算器の均等物およびこの少なくとも２つの乗算器全ての部分積を合計するためのロジックを含む。結果的に、全ての乗算の合計は、個々の積を形成し、次いでそれらの積を合計するために各乗算器の部分積を合計するよりもむしろ、単一のステップにおいて計算される。そのような基本処理ユニットは、個々の乗算器および加算器のものよりも小さい領域によって構成され得る。単一の乗算が実行されることが必要とされた場合、基本処理ユニットにおける乗算器のうちの１つが使用される一方、他に対する入力はゼロになる。それでも、基本処理ユニットの規定が特殊処理ブロックの領域を減少させるため、効率は上がる。
【００１０】
好ましい実施形態においては、基本処理ユニットは、２つの１８×１８乗算器および１つの加算器の均等物を含む。それは、基本処理ユニットが、２つの乗算演算の合計を出力できるようにである。１８×１８乗算器の各々がより小さい乗算演算（例えば、９×９または１２×１２）に対して構成され得る一方、基本処理ユニットの統合された本質は、個々の乗算器出力がアクセス可能ではないことを意味する。合計のみが、残りの特殊処理ブロックによって使用可能である。従って、１８×１８ビット以下である単一の非複素数乗算の結果を得るために、基本処理ユニットの全体が使用されるべきである。離すことができない第２の乗算器は、単に、その入力がゼロになる。
【００１１】
本発明に従う特殊処理ブロックは、好ましくは、オプションとしてパイプラインレジスタおよびフレキシブル出力（ｆｌｅｘｉｂｌｅ  ｏｕｔｐｕｔ）段とともに、基本処理ユニットの出力の追加の処理に対する１つ以上の追加の加算器をも有する。従って、特殊処理ブロックは、好ましくは、様々な形式のフィルタリングおよび他のデジタル信号処理動作のために構成され得る。更に、特殊処理ブロックは、好ましくは、適合フィルタリング動作において有用である、その出力の少なくとも１つを入力としてフィードバックし、かつ追加の特殊処理ブロックに入力および出力の両方をチェーン状にする能力をも有する。
【００１２】
従って、本発明に従うと、プログラマブルロジックデバイスのための特殊処理ブロックが提供される。特殊処理ブロックは、好ましくは、複数の基本処理ユニットを含む。基本処理ユニットの各々は、複数の乗算器およびこの複数の乗算器全てによって生成させる部分積を、一演算において加算するための回路網を含む。
【００１３】
本発明はさらに、以下の手段を提供する。
【００１４】
（項目１）  
プログラマブルロジックデバイスのための特殊処理ブロックであって、該特殊処理ブロックは、
複数の基本処理ユニットを備え、該基本処理ユニットの各々は、
複数の乗算器と、
該複数の乗算器の全てによって生成された部分積を、一演算において、加算するための回路網と
を含む、特殊処理ブロック。
【００１５】
（項目２）
上記基本処理ユニットの各々が、上記部分積を加算する前にシフトするための回路網をさらに含む、項目１に記載の特殊処理ブロック。
【００１６】
（項目３）
上記特殊処理ブロックの出力を該特殊処理ブロックの入力にフィードバックするためのループバック回路網をさらに備える、項目１に記載の特殊処理ブロック。
【００１７】
（項目４）
上記ループバック回路網が、上記特殊処理ブロックを適合フィルタとして構成するために使用される、項目３に記載の特殊処理ブロック。
【００１８】
（項目５）
複数のソースからの入力を整列させるための入力前処理回路網をさらに備える、項目３に記載の特殊処理ブロック。
【００１９】
（項目６）
上記複数のソースが、上記特殊処理ブロックへの入力および該特殊処理ブロックの出力を含む、項目５に記載の特殊処理ブロック。
【００２０】
（項目７）
上記複数のソースが、他の上記特殊処理ブロックの出力をさらに含む、項目６に記載の特殊処理ブロック。
【００２１】
（項目８）
上記入力前処理回路網が、上記入力を登録するためのレジスタを含む、項目５に記載の特殊処理ブロック。
【００２２】
（項目９）
上記レジスタが、データを上記複数の乗算器の各々に順次入力するためにチェーン状にされている、項目８に記載の特殊処理ブロック。
【００２３】
（項目１０）
上記レジスタが、上記乗算器の群の間における遅延を上記チェーンにおいて導入するための追加のレジスタを含む、項目９に記載の特殊処理ブロック。
【００２４】
（項目１１）
出力段をさらに備えており、
該出力段は、
該特殊処理ブロックのうちの少なくとも１つのサブセットの各々に対して複数の加算器を含み、該複数の加算器は、（ａ）複数の上記基本処理ユニットを含む乗算演算の出力と、（ｂ）（１）該基本処理ユニットのうちの少なくとも１つを含む乗算演算と、（２）該特殊処理ブロックのうちの他の１つにおける他の出力段における他の該複数の加算器からカスケードされる対応出力との合計とのうちの１つを出力として提供するように適合可能である、項目１に記載の特殊処理ブロック。
【００２５】
（項目１２）
上記出力段が、上記加算器のうちの１つと協働して、累積機能を提供するためのフィードバック回路網をさらに含む、項目１１の特殊処理ブロック。
【００２６】
（項目１３）
上記ブロック出力の複数のビット範囲のうちの１つをシフトされた出力として選択するための回路網をさらに備える、項目１１に記載の特殊処理ブロック。
【００２７】
（項目１４）
シフトされた出力を選択するための上記回路網が、上記出力段および上記複数の基本ユニット間のパイプラインレジスタ段を含む、項目１３に記載の特殊処理ブロック。
【００２８】
（項目１５）
上記複数のビット範囲を結合出力へと結合するための回路網、および、（ａ）該複数のビット範囲のうちの１つと、（ｂ）該結合出力とのうちの１つを選択するための回路網をさらに備える、項目１３に記載の特殊処理ブロック。
【００２９】
（項目１６）
上記結合するための回路網が、ＯＲ回路網を含み、上記結合出力が、上記ブロック出力のローテートを含む、項目１５に記載の特殊処理ブロック。
【００３０】
（項目１７）
上記基本処理ユニットの各々が２つの乗算器を含み、
該複数の基本処理ユニットが、２つずつの該基本処理ユニットの群に構成された少なくとも２つの該基本処理ユニットを含み、
上記出力段における上記複数の加算器が、該群の各々に対して２つの加算器を含み、該加算器の各々が、第１の加算器幅を有し、該２つの加算器が、（ａ）該少なくとも２つの基本処理ユニットを含む上記乗算演算の上記出力を提供するために該第１の加算器幅より広い幅を有する単一の加算と、（ｂ）該基本処理ユニットのうちの少なくとも１つを含む上記乗算演算を提供するために該第１の加算器幅の最大幅を有する第１の加算、および、（１）該乗算演算と、（２）上記特殊処理ブロックのうちの他の１つにおける他の出力段における他の該複数の加算器からカスケードされる上記対応出力との上記合計を提供するために該第１の加算器幅の最大幅を有する第２の加算とのうちの１つを実行するように構成可能である、項目１１に記載の特殊処理ブロック。
【００３１】
（項目１８）
上記出力段および上記基本処理ユニット間のパイプラインレジスタ段をさらに備えており、
該パイプラインレジスタ段が、上記加算器幅より広い幅を有する上記加算を実行するために該基本ユニットによるデータ出力を整列させるように適合可能である、項目１７に記載の特殊処理ブロック。
【００３２】
（項目１９）
出力段および上記基本処理ユニット間のパイプラインレジスタ段をさらに備える、項目１に記載の特殊処理ブロック。
【００３３】
（項目２０）
項目１の特殊処理ブロックを備える、プログラマブルロジックデバイス。
【００３４】
（項目２１）
処理回路網と、
該処理回路網に結合されているメモリと、
該処理回路網および該メモリに結合されている、項目２０に記載のプログラマブルロジックデバイスと
を備える、デジタル処理システム。
【００３５】
（項目２２）
項目２０に記載のプログラマブルロジックデバイスが上に取り付けられている、プリント基板。
【００３６】
（項目２３）
メモリ回路網であって、上記プリント基板上に取り付けられており、かつ上記プログラマブルロジックデバイスに結合されている、メモリ回路網をさらに備える、項目２２に記載のプリント基板。
【００３７】
（項目２４）
処理回路網であって、上記プリント基板上に取り付けらており、かつ上記メモリ回路網に結合されている、処理回路網をさらに備える、項目２３に記載のプリント基板。
【００３８】
（項目２５）
項目１に記載の特殊処理ブロックを備える、集積回路デバイス。
【００３９】
（項目２６）
処理回路網と、
該処理回路網に結合されているメモリと、
該処理回路網および該メモリに結合されている、項目２５に記載の集積回路デバイスと
を備える、デジタル処理システム。
【００４０】
（項目２７）
項目２６に記載の集積回路デバイスが上に取り付けられている、プリント基板。
【００４１】
（項目２８）
メモリ回路網であって、上記プリント基板上に取り付けらており、かつ上記プログラマブルロジックデバイスに結合されている、メモリ回路網をさらに備える、項目２７に記載のプリント基板。
【００４２】
（項目２９）
処理回路網であって、上記プリント基板上に取り付けられており、かつ上記メモリ回路網に結合されている処理回路網をさらに備える、項目２８に記載のプリント基板。
【発明の効果】
【００４３】
本発明により、ＤＳＰブロックのような特殊処理ブロックによって消費されるＰＬＤの領域を、ブロックの機能性を失わずに減少できる。
【図面の簡単な説明】
【００４４】
【図１】本発明に従う、特殊処理ブロックの一好ましい実施形態の高レベル図である。
【図２】図１の特殊処理ブロックの機能図である。
【図３】本発明に従う、特殊処理ブロックのための基本処理ユニットの一好ましい実施形態のブロック図である。
【図４】本発明に従う、特殊処理ブロックの出力段の一好ましい実施形態である。
【図５】有限インパルス応答フィルタとして構成される、本発明に従う、特殊処理ブロックの機能図である。
【図６】算術シフトのために構成される、本発明に従う、特殊処理ブロックの機能図である。
【図７】論理シフトのために構成される、本発明に従う、特殊処理ブロックの出力段の一好ましい実施形態である。
【図８】ローテートのための構成される、本発明に従う、特殊処理ブロックの機能図である。
【図９】バレルシフタとして構成される、好ましい発明に従う、特殊処理ブロックの機能図である。
【図１０】本発明を組み入れるプログラマブルロジックデバイスを使用する例示的システムの簡略ブロック図である。
【発明を実施するための形態】
【００４５】
本発明の上記および他の目的および利点は、同一の参照番号が本明細書全体に亘って同一部分である、添付の図面と一緒に上記の詳細な説明を考慮して明らかになるであろう。
【００４６】
本発明は、図１〜図９を参照して説明される。
【００４７】
図１は、本発明に従って、特殊処理ブロックの好ましい一実施形態１０の高レベル図を示す。その一方、図２は、同じ実施形態１０の機能図である。
【００４８】
図１に見られるように、特殊処理ブロック１０は、入力プレＭＵＸ段１１（オプション）、入力レジスタ段１２（オプション）、入力マルチプレクシング段１３（オプション）、乗算段１４、パイプラインレジスタ段１５（オプション）および加算器／出力段１６を含む。
【００４９】
入力プレＭＵＸ段１１の機能は、提供された場合、通常入力、ループバック入力およびカスケード入力（以下参照）を登録に適した形式にフォーマットすることである。
【００５０】
通常入力は、特定フォーマッティングを全く必要としない。カスケード入力は、前の入力の１レジスタ遅れバージョンになり得、従って、状況に応じてフォーマッティングが必要になり得る。しかしながら、そのようなフォーマッティングは、特殊処理ブロック１０が一部であるプログラマブルロジックデバイスのプログラマブルロジックにおいても行われ得る。従って、カスケード入力のフォーマッティングが、必要とされている唯一のプレＭＵＸ機能である場合、入力プレＭＵＸ段１１は省略され得るか、または提供された場合でも、バイパスされ得る。ループバック入力１７は、特定の乗算器または乗算器の群に常に接続されるように構成され得る。入力プレＭＵＸ段１１によって実行されるフォーマッティングは、特殊処理ブロック１０によって実行される機能によって、特定入力の特定ビット位置への入力の方向付けを含み得る。フォーマッティングは、様々な可能な動作（例えば、様々なサイズの単純または複素数乗算、シフト動作、ローテート動作等）を識別し、かつ必要とされる対応するフォーマッティングを特定する格納された表に従う一実施形態において行われ得る。
【００５１】
入力プレＭＵＸ段１１の出力は、提供された場合、入力レジスタ段１２（オプション）によって登録され得る。入力プレＭＵＸ段１１がない場合、入力レジスタ機能は、必要な場合、ブロック１０が一部であるプログラマブルロジックデバイスのプログラマブルロジック部において実行され得る。従って、入力レジスタ段１２は、オプションであると考えられる。入力レジスタ段１２は、提供された場合でも、好ましくは、未登録出力が必要とされるか、または望まれる場合においては任意にバイパスされ得る。
【００５２】
入力マルチプレクシング段１３は、提供された場合、登録済および未登録入力を入力プレＭＵＸ段１１から取得し、場合により、プログラマブルロジックデバイスの他の場所からも入力を取得し、異なる動作モードに対してデータをフォーマットする。そのことに留意すると、入力マルチプレクシング段１３は、入力プレＭＵＸ段１１に類似している。従って、多くの場合、入力プレＭＵＸ段１１および入力マルチプレクシング段１３のうちの１つが提供された場合、もう一方は提供されない。
【００５３】
入力プレＭＵＸ段１１または入力マルチプレクシング段１３によって実行されるフォーマッティングの種類の一例として、
Ｒｅａｌ  Ｒｅｓｕｌｔ＝Ｒｅ［（ａ＋ｊｂ）×（ｃ＋ｊｄ）］＝（ａｃ−ｂｄ）
Ｉｍａｇ  Ｒｅｓｕｌｔ＝Ｉｍ［（ａ＋ｊｂ）×（ｃ＋ｊｄ）］＝（ａｄ＋ｂｃ）
である１８×１８複素数乗算を考慮する。この複素数演算は、４つの１８×１８乗算を必要とし、従って、８つの１８ビット入力を必要とする。しかしながら、４つの固有１８ビット共有入力しかないため、入力マルチプレクシング段１３は、入力ａ，ｂ，ｃおよびｄを取得し、かつ必要な複製を実行する。それは、その４つの入力が、実計算および虚計算の各々に対する正確な乗算器入力に適切にルートされるようにである。同様に、９および１２ビットモード動作に対して、入力プレＭＵＸ段１１および／または入力マルチプレクシング段１３は、正確な結果を得るために入力ビットの正確な整列を保証する。
【００５４】
乗算段１４は、好ましくは、上述されたように、複数の基本処理ユニットを含む。好ましい実施形態においては、特殊処理ブロック１０（図２参照）の各々は、４つの基本処理ユニット３０を含み、すなわち、合計される２つの乗算の群において８つの乗算まで実行できる。その実施形態においては、特殊処理ブロック１０における基本処理ユニットは、好ましくは、同一の半ブロックに分類される。それは、半ブロックの各々が、それ自体で、本発明内の特殊処理ブロックとして考慮され得るようにである。
【００５５】
基本処理ユニットの各々は、好ましくは、２つの１８×１８乗算の合計に対する機能性を含む。基本処理ユニットは、好ましくは、全て同一であるが、一部の実施形態においては、例えば、上記から明らかであるように、減算が必要とされ得る複素数乗算に対して必要とされ得る、一部の乗算器の一部の入力のみにおいて否定（ｎｅｇａｔｉｏｎ）機能を提供することが可能である。代替的に、否定機能は、１つ以上の加算器も減算が実行できるように、基本処理ユニットの加算器部分に提供され得る。
【００５６】
基本処理ユニットの好ましい実施形態の構造が図３に示される。基本処理ユニット３０の各々は、好ましくは、２つの１８×１８乗算の和をサポートし、好ましくは、２つの部分積生成器３１、２つの１０ベクトル−２ベクトル圧縮器３２、４−２圧縮器３３、および２つのキャリー伝搬（ｃａｒｒｙ−ｐｒｏｐａｇａｔｅ）加算器３４を含む。加算器３４は、好ましくは、制御信号３４２によって選択的に接続可能である１つの３０ビット加算器３４０および１つの２４ビット加算器３４１を含む。９×９または１２×１２のようなより小さな乗算に対しては、２４ビットのみが必要とされ、２つの加算器は、２つの独立した乗算を可能にするために接続が断ち切られ得る。１８×１８のようなより大きな乗算に対しては、２つの加算器３４は、単一の加算器としてリンクされるべきである。
【００５７】
部分積生成器３１の各々は、好ましくは、１７ビット符号なしキャリーベクトル（ネガティブ部分積は、キャリーベクトルにおける関連キャリーインビットを用いる１の補数フォーマットにある）とともに、９つの２０ビットブース符号化ベクトル（ブース符号化は、部分積の数を減少できる既知の技術である）を生成する。追加の１９ビット符号付き部分積は、符号なし乗算器の場合に生成され得る（好ましくは、符号付き乗算器に対して常にゼロである）。好ましくは、１１ベクトルまで生成され得るが、キャリービットは、好ましくは、１０ベクトルのみが圧縮されることを必要として部分積ベクトルと組み合わされ得る。
【００５８】
部分積は、好ましくは、２つの３９ビットベクトル（３６ビット＋符号拡張ビット）に圧縮される。任意の符号拡張は、３６ビット１８×１８乗算器境界を越えて適切に保存されるべきである。それは、任意の符号拡張が、７２ビット３６×３６乗算境界まで有効になり得るようにである（下述されるように、２つの基本処理ユニットが、３６×３６乗算をインプリメントするために組み合わされる場合）。圧縮の後、結果は、ｍｕｘ・シフト回路網３５において処理される。その回路網は、好ましくは、実行される動作によって必要とされ得る加算前の結果の任意の符号拡張、ゼロ充てんまたはシフトが４−２圧縮器３３およびキャリー伝搬加算器３４における結果の最後の組み合わせの前に達成され得る組み合わせロジックを含む。回路３５０，３５１の各々に対して、入力が、好ましくは、合計７８入力ビットに対して２つの３９ビットベクトルである一方、出力は、好ましくは、合計１０８ビットに対して２つの５４ビットベクトルである。エキストラ３０ビットは、符号拡張、ゼロ充てんおよび／またはシフトの結果である。マルチプレクサ３５２は、符号拡張されたかまたはゼロ充てんされた結果の間の選択を示す。４つの５４ビットベクトルは、５４ビット出力を生成するために加算器３４に加算される、２つの５４ビットベクトルを出力する圧縮器３３に入力される。
【００５９】
上述されたように、両方の乗算器からの部分積は一度に加算されるため、基本処理ユニットの２つの乗算器は、２つの独立した乗算に対して使用されることができない。しかしながら、単一の乗算は、第２の乗算器の入力をゼロにすることによって行われ得る。
【００６０】
より小さい乗算に対しては、独立したサブセット乗算器（９×９および１２×１２の場合）は、以下のように扱われ得る。
【００６１】
２つの９×９乗算に対して、第１の９×９乗算は、好ましくは、第１の乗算器の最上位ビット（ＭＳＢ）を使用して計算される（図３の左）。第２の９×９乗算は、好ましくは、第２の乗算器の最下位ビット（ＬＳＢ）を使用して計算される（図３の右）。右の乗算器のＭＳＢは、適宜、対応する値の符号拡張によって埋められる。左の乗算器の出力（合計およびキャリーベクトル）は、１８ビットだけ左にシフトされる。２つの乗算器出力は、好ましくは、一緒に圧縮される。２つの結果的最終ベクトルは、次いで、この動作のために接続されていない２つの加算器３４を用いて加算される。第１の９×９結果が、好ましくは、左（３０ビット）加算器３４０のＭＳＢ上に出力される一方、第２の９×９結果は、好ましくは、右（２４ビット）加算器３４１のＬＳＢ上に出力される。
【００６２】
独立した１２×１２乗算は、ＭＳＢ／ＬＳＢ方法を使用して、９×９乗算に類似した方法において計算され得る。
【００６３】
両方の場合において、好ましくは、右の乗算器出力は、独立した左の乗算器結果に対するどの干渉をも防ぐために２４ビットより上でゼロなる。
【００６４】
精度に関らず、乗算合計の場合においては、全ての入力は、好ましくは、使用される乗算器のＭＳＢを占有するためにシフトされ、出力ベクトルは、好ましくは、シフトされない。出力ベクトルは、しかしながら、好ましくは、完全に符号拡張される。それは、加算器３４外の符号拡張が累積器の全幅に対して使用され得るようにである（以下）。
【００６５】
好ましくは、複素数乗算および積の減算を必要とする他の演算に対しては、加算器入力は、否定され得る（加算器を効率的に加算器／減算器にする）。代替的に、しかしながら、１つ以上の乗算器に、入力を反転させ（１の補数）、かつ結果に被乗数を加算することによって、その出力ベクトルを選択的に否定する能力が提供され得る。被乗数加算は、部分積の圧縮において実行され得る。それは、否定が加算器３４の前にインプリメントされ得るようにである。
【００６６】
ユーザのオプションにおいて好ましくバイパスされ得るパイプラインレジスタ段１５は、好ましくは、乗算段１４の出力が更なる加算または累積または他の処理の前に登録されることを可能にする。
【００６７】
加算器／出力段１６は、好ましくは、その入力または上記の任意の組み合わせを選択的にシフト、加算、累積、または登録する。その入力は、好ましくは、特殊処理ブロック１０における２つの基本処理ユニットの出力である。図４に見られるように、それらの２つの入力４０，４１は、必要に応じて入力４０，４１をシフトまたは符号拡張し得るレジスタ／シフタユニット４２，４３のそれぞれに入力される。好ましい実施形態においては、入力４０，４１の各々は、それぞれの７２ビットベクトルを生成するためにシフトされるか、または符号拡張される５４ビットベクトルである。
【００６８】
好ましくは、ユニット４２，４３の出力は、好ましくは段１６自体の出力４５とともに、３：２圧縮器４４に入力される。このフィードバックは、累積機能を特殊処理ブロック１０に提供する。好ましくは、フィードバックされた出力４５は、累積が必要ではないか、または望まれない場合に代替的にゼロ（例えば、接地）を選択できるマルチプレクサ４６を通過する。
【００６９】
下述されるように、圧縮器４４の出力は、それらが出される宛先の使用によって、プログラマブル制御の下でチェーン状になり得る２つの加算器４７，４８に提供される（下述されるように適切なマルチプレクサを介して）。加算器４７，４８の出力は、好ましくは、マルチプレクサ４０１，４０２によって決定されるように、レジスタ４９，４００において登録されるか、またはされないかであり得る。登録されていてもされてなくても、出力４７，４８は、好ましくは、特殊処理ブロック１０の出力ベクトルを作り上げる。代替的な経路として、マルチプレクサ４０３，４０４，４０５は、基本処理ユニット３０の出力が更なる処理なしに出力されるところで加算器４７，４８がバイパスされることを可能にする。
【００７０】
上述されたように、基本処理ユニット３０の各々が２つの１８×１８乗算の合計を実行できる場合、２つの基本処理ユニット３０は、３６×３６乗算を実行できる。ここにおいて、３６×３６乗算は、周知であるように、４つの１８×１８乗算に分解され得る。そのような場合において、２つの圧縮された７２ビットベクトルは、好ましくは、圧縮器４４によって出力され、かつ好ましくは、ＡＮＤゲート４０６によってこのモードのためにプログラム可能に接続される２つの４４ビット加算器４７，４８によって、加算される。上位１６ビットは、このモードにおいて無視され得る。
【００７１】
加算器４７，４８が相互に接続される必要がないより狭い出力を用いる他のモードにおいては、加算器４７，４８は、必要に応じて、特殊処理ブロック１０の出力が他の特殊処理ブロック１０の同様の出力とチェーン状になるように構成され得る。そのようなモードを容易にするために、レジスタ４００の出力は、例えば、加算器４７に２つの入力を提供する４：２マルチプレクサ４０７に与えられ得る。マルチプレクサ４０７への他の入力は、他の特殊処理ブロック１０からのチェーンイン（ｃｈａｉｎ−ｉｎ）入力４０８になり得る。ここにおいて、その入力は、その他の特殊処理ブロック１０のレジスタ４９からチェーンアウト（ｃｈａｉｎ−ｏｕｔ）出力４０９を介して提供され得る。
【００７２】
従って、チェーンモード（ｃｈａｉｎｉｎｇ  ｍｏｄｅ）において、４４ビット加算器４８は、例えば、単一の乗算器、乗算器の合計、または累積器として構成される複数の特殊処理ブロック１０のうちの１つ内の結果を、前のブロックの結果と加算するために使用され得る。加算器４７への入力として、加算器４８の出力、および他の特殊処理ブロック１０の出力を選択するためにマルチプレクサ４０７を使用することによって、現行の特殊処理ブロック１０の出力は、現行および前の特殊処理ブロック１０の出力のチェーン状の合計になり得る。チェーンモードが使用された場合、４４ビット累積器のみが利用可能であるが、それでも乗算器の数によって、６ビットから８ビットのガードバンドを与える。しかしながら、明らかであるように、チェーンモードは、加算器４７，４８の両方が単一の特殊処理ブロック１０の結果を得るために必要である３６ビットモードに対して利用不可能である。
【００７３】
出力経路は、動作のモードによって、わずかに異なり得る。従って、マルチプレクサ４０１，４０２は、加算器４７，４８の登録済または未登録出力の選択を可能にする。しかしながら、示されるように、登録済出力が好ましくは、カスケードまたはチェーンモードにおいて使用されることが理解される。
【００７４】
更に、少なくとも１つの出力は、１７においてのように、特殊処理ブロック１０の入力にループバックされ得る。そのようなループバック特徴は、例えば、特殊処理ブロック１０が適合フィルタリングに対してプログラム可能に構成された場合に使用され得る。複数のループバックが提供され得るが、好ましい一実施形態においては、単一の乗算器または一群の乗算器への１つのループバック１７が提供される。
【００７５】
本発明の特殊処理ブロック１０は、長いチェーンの有限インパルス応答（ＦＩＲ）フィルタとしてプログラム的に構成され得る。図５に示されるように、４つの基本処理ユニット３０は、そのようなＦＩＲフィルタ５０の一部として構成される。上述されたように、これは、複数の特殊処理ブロック１０のうちの１つまたは２つのいずれかになるものと考慮され得る。示されるように、加算器４８の各々は、４つの乗算の結果を加算するために使用される。ここにおいて、加算器４７は、長いＦＩＲフィルタを形成するために加算器４８の出力（可能であれば、他の特殊処理ブロック１０の加算器４８の出力も）を一緒に加算することに対して、上述されたチェーンまたはカスケードモードにおいて使用される。ＦＩＲフィルタの係数が５１にて入力される一方、フィルタリングされるデータは、レジスタチェーン５２を介して入力され、それは、好ましくは、入力プレＭＵＸ段１１、入力レジスタ段１２または入力マルチプレクシング段１３のうちの１つにおいて形成される。出力カスケードチェーンによって導入される遅延を補償するために、少なくとも１つの追加遅延５３（例えば、エキストラレジスタの形式で）は、好ましくは、入力カスケードチェーン５２に提供される。好ましくは、遅延の数は、加算器４７の数に、またはより詳細には、遅延５３が補償する出力レジスタ４００の数に対応する。一般に、これは、基本処理ユニット３０の各対に対する一遅延５３に等しい。更なるＦＩＲフィルタインプリメンテーションは、本明細書においてその全容が参考により援用され、本願と同時に出願され、同時係属であり、同一出願人に係る米国特許出願第１１／    ，    号（代理人整理番号第０００１７４−０４６５−１０１）に説明される。
【００７６】
ＦＩＲフィルタをインプリメントすることに加えて、本発明の特殊処理ブロック１０は、バレルシフタとしてプログラム可能に構成され得る。特に、３６×３６乗算器モードを使用することによって、３２ビットベクトルは、左または右に算術シフトまたは論理シフトされ得る。そのようなＮビットのシフトは、１であるＮ番目最下位ビット以外は全てのビットが０である均一の長さの第２のベクトルによってシフトされるようにベクトルを乗算することによって達成され得る。
【００７７】
シフトされるベクトルが３６ビットに符号拡張され、第２のベクトルが３６ビットまでゼロでパッドされた（ｐａｄｄｅｄ）場合、結果は算術シフトである。シフトが左または右であるかは、結果がそれぞれ６４ビット結果の３２最上位ビット、または３２最下位ビットからとられたかによる。図６は、そのようなシフト動作を示す。
【００７８】
同様に、両方のベクトルが３６ビットまでゼロでパッドされた場合、結果は論理シフトであり、シフトが左または右であるかは、結果がそれぞれ６４ビット結果の３２最上位ビット、または３２最下位ビットからとられたかによる。図７は、そのようなシフト動作を示す。
【００７９】
更に、両方のベクトルが、３６ビットまでゼロでパッドされ、６４ビット結果の３２最上位ビットが３２最下位ビットを用いてＯＲされた場合、結果は、図８に示されるように、第１のベクトルのＮ最上位ビットから結果のＮ最下位ビットへのローテートである。
【００８０】
図９は、算術および論理シフトならびにローテートが、上述されるような３２×３２乗算を実行するための３６×３６乗算器モード９０、入力が２つの３２ビットで６４ビット結果の半分であるＯＲゲート９１、および３入力マルチプレクサ９２を使用して、以下の表に従って動作してどのように実行され得るかを示す。
【００８１】
【表１】
0005406331.tif 000002
左の算術シフトおよび左の論理シフトが同じ結果を生み出し、従ってそれらのケースが繰り返しであることに留意されたい。別の言い方をすれば、符号付き入力は、右の算術シフトに対してのみ実際に必要である。
【００８２】
従って、複数の基本処理ユニットに基づいて、プログラマブルロジックデバイスのための特殊処理ブロックが提供されたことが見られる。
【００８３】
本発明に従うそのような回路網を組み入れるＰＬＤ  １００は、多種の電子デバイスにおいて使用され得る。１つの可能な使用は、図１０に示されるデータ処理システム９００にある。データ処理システム９００は、以下の構成要素、プロセッサ９０１、メモリ９０２、Ｉ／Ｏ回路網９０３、および周辺デバイス９０４の１つ以上を含み得る。これらの構成要素は、システムバス９０５によって相互に結合され、エンドユーザシステム９０７に含まれる回路基板９０６上を占有する。
【００８４】
システム９００は、コンピュータネットワーキング、データネットワーキング、計装、映像処理、デジタル信号処理、もしくはプログラマブルまたは再プログラマブルロジックを使用する利点が好ましい任意の他のアプリケーションのような様々なアプリケーションにおいて使用され得る。ＰＬＤ  １００は、様々な異なる論理機能を実行するために使用され得る。例えば、ＰＬＤ  １００は、プロセッサ９０１と協働するプロセッサまたはコントローラとして構成され得る。ＰＬＤ  １００は、システム９００における共有リソースへのアービトレーティングアクセスのためのアービターとしても使用され得る。更なる他の例においては、ＰＬＤ  １００は、プロセッサ９０１とシステム９００における他の構成要素のうちの１つと間のインターフェースとして構成され得る。システム９００が単に例示に過ぎず、本発明の真の範囲および精神が添付の特許請求の範囲によって示されるべきことに留意されたい。
【００８５】
様々な技術は、上述されたようにＰＬＤ  ９０をインプリメントし、本発明を組み入れるために使用され得る。
【００８６】
前述したものが、本発明の原理の単なる例示に過ぎず、様々な修正が、本発明の範囲および精神から逸脱せずに当業者によって行われ得ることが理解される。例えば、本発明の様々な要素は、任意の所望の数および／または構成においてＰＬＤ上に提供され得る。本発明が、限定の目的ではなく例示目的のために示される説明された実施形態以外によって実施され得ることが当業者に理解されるであろう。更に、本発明は、添付の特許請求の範囲にのみ限定される。
【００８７】
プログラマブルロジックデバイスのための特殊処理ブロックは、個々の乗算を計算せずに両方の乗算の部分積を加算して、２つの乗算の合計を実行する基本処理ユニットを組み入れる。そのような基本処理ユニットは、従来の別々の乗算器および加算器より少ない領域を消費する。特殊処理ブロックは、ブロックが様々なデジタル信号処理動作のために構成されることを可能にするために、ループバック機能とともに、入力および出力段を更に有する。
【００８８】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【符号の説明】
【００８９】
１０  特殊処理ブロック
１１  入力プレＭＵＸ段
１２  入力レジスタ段
１３  入力マルチプレクシング段
１４  乗算段
１５  パイプラインレジスタ段
１６  加算器／出力段
１７  ループバック
【図１】
0005406331.tif 000003
【図２】
0005406331.tif 000004
【図３】
0005406331.tif 000005
【図４】
0005406331.tif 000006
【図５】
0005406331.tif 000007
【図６】
0005406331.tif 000008
【図７】
0005406331.tif 000009
【図８】
0005406331.tif 000010
【図９】
0005406331.tif 000011
【図１０】
0005406331.tif 000012