説明

プログラマブルロジックデバイスのための特殊処理ブロック

【課題】プログラマブルロジックデバイスのための特殊処理ブロックを提供すること。
【解決手段】プログラマブルロジックデバイスのための特殊処理ブロックは、個々の乗算を計算せずに両方の乗算の部分積を加算して、2つの乗算の合計を実行する基本処理ユニットを組み入れる。そのような基本処理ユニットは、従来の別々の乗算器および加算器より少ない領域を消費する。特殊処理ブロックは、ブロックが様々なデジタル信号処理動作のために構成されることを可能にするために、ループバック機能とともに、入力および出力段を更に有する。

【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の参照)
本出願は、2006年2月9日および2006年4月4日にそれぞれ出願された同時係属であり、同一出願人に係る米国仮特許出願第60/772,197号および第60/789,535号の利益を主張する。各々は、本明細書においてそのそれぞれの全容が参考により援用される。
【0002】
(技術分野)
本発明は、プログラマブルロジックデバイス(PLD)に関し、より詳細には、そのようなデバイスに含まれ得る特殊処理ブロックに関する。
【背景技術】
【0003】
PLDが使用されるアプリケーションが複雑性を増す一方、ジェネリックプログラマブルロジックリソースのブロックに加えて特殊処理ブロックを含むようにPLDを設計することはより一般的になった。そのような特殊処理ブロックは、論理演算または数学演算のような特定タスクの1つ以上を実行するために部分的または全体的にハードワイヤードであるPLD上の回路網の集中を含み得る。特殊処理ブロックは、構成可能メモリ要素のアレイのような1つ以上の特定構造も含み得る。そのような特殊処理ブロックに一般的にインプリメントされる構造の例は、乗算器、演算論理ユニット(ALU)、バレルシフタ、様々なメモリ要素(FIFO/LIFO/SIPO/RAM/ROM/CAMブロックおよびレジスタファイル等)、AND/NAND/OR/NORアレイ等、またはそれらの組み合わせを含む。
【0004】
PLD上に提供された特殊処理ブロックの特に有用な種類の1つは、例えば、オーディオ信号を処理するために使用され得るデジタル信号処理(DSP)ブロックである。そのようなブロックは、乗累算(「MAC」)ブロックとしてもよく呼ばれる。なぜなら、それらは、乗算演算、および乗算演算の合計および/または累積を実行するための構造を含むからである。
【0005】
例えば、San Jose, CaliforniaのAltera CorporationによってSTRATIX(登録商標)IIの名の下に販売されるPLDは、各々が4つの18×18乗算器を含むDSPブロックを含む。それらのDSPブロックの各々は、様々な構成要素が異なる態様に構成されることを可能にするプログラマブルコネクタ(例えば、マルチプレクサ)とともに、加算器およびレジスタをも含む。そのようなブロックの各々において、乗算器は、4つの個々の18×18乗算器としてのみ構成され得るのではなく、4つのより小さい乗算器、または1つ大きい(36×36)乗算器としても構成され得る。更に、1つの18×18複素数(complex)乗算(実部および複素数部の各々に対して2つの18×18乗算演算に分解される)が実行され得る。4つの18×18乗算演算をサポートするために、ブロックは、4×(18+18)=144個の入力を有する。同様に、18×18乗算の出力は、36ビット幅である。そのため、4つのそのような乗算演算の出力をサポートするために、ブロックは36×4=144個の出力をも有する。
【0006】
しかしながら、それらの入力および出力は、DSPが動作できるあらゆるモードに使用されない可能性がある。例えば、DSPブロックが18ビットデータおよび係数を用いる有限インパルス応答(FIR)フィルタとして構成される場合、各ブロックは、より長いFIRフィルタの4タップサブブロックを形成するために4つの18×18乗算の加算を実行するために使用され得る。この場合、入力の数は4×(18+18)=144ラインであるが、出力は、DSPブロックが144個の出力ラインをサポートできるにも関らず、たった38ビット幅である。同様に、36×36ビット乗算においては、全ての4つの内部乗算器が使用されるが、(36+36)=72個の入力ラインおよび72個の出力ラインのみが使用される(たとえ144個の入力ラインおよび144個の出力ラインがあっても)。従って、その構成においては、DSPブロックのコアは完全に使用されるが、入力ラインは完全に使用されない。
【0007】
入力/出力(I/O)ドライバおよびラインは、かなりのデバイス領域を消費し得る。実際に、上記のSTRATIX(登録商標)II PLDのDSPブロックにおいては、I/Oリソースは、DSPブロック領域の約50%を消費する。更に、上述されたように、それらはいつも使用されるというわけではない。同時に、ブロックの全ての可能な構成がサポートされるべきであるため、それらを消去することもできない。
【発明の概要】
【発明が解決しようとする課題】
【0008】
DSPブロックのような特殊処理ブロックによって消費されるPLDの領域を、ブロックの機能性を失わずに減少できることが望ましい。
【課題を解決するための手段】
【0009】
本発明は、PLDのための特殊処理ブロックに関する。特殊処理ブロックは、機能性を失わずに減少された領域を有する。本発明の一局面に従うと、特殊処理ブロックは、好ましくは、ディスクリート乗算器の代わりに複数の基本処理ユニットを含む。基本処理ユニットの各々は、好ましくは、少なくとも2つの乗算器の均等物およびこの少なくとも2つの乗算器全ての部分積を合計するためのロジックを含む。結果的に、全ての乗算の合計は、個々の積を形成し、次いでそれらの積を合計するために各乗算器の部分積を合計するよりもむしろ、単一のステップにおいて計算される。そのような基本処理ユニットは、個々の乗算器および加算器のものよりも小さい領域によって構成され得る。単一の乗算が実行されることが必要とされた場合、基本処理ユニットにおける乗算器のうちの1つが使用される一方、他に対する入力はゼロになる。それでも、基本処理ユニットの規定が特殊処理ブロックの領域を減少させるため、効率は上がる。
【0010】
好ましい実施形態においては、基本処理ユニットは、2つの18×18乗算器および1つの加算器の均等物を含む。それは、基本処理ユニットが、2つの乗算演算の合計を出力できるようにである。18×18乗算器の各々がより小さい乗算演算(例えば、9×9または12×12)に対して構成され得る一方、基本処理ユニットの統合された本質は、個々の乗算器出力がアクセス可能ではないことを意味する。合計のみが、残りの特殊処理ブロックによって使用可能である。従って、18×18ビット以下である単一の非複素数乗算の結果を得るために、基本処理ユニットの全体が使用されるべきである。離すことができない第2の乗算器は、単に、その入力がゼロになる。
【0011】
本発明に従う特殊処理ブロックは、好ましくは、オプションとしてパイプラインレジスタおよびフレキシブル出力(flexible output)段とともに、基本処理ユニットの出力の追加の処理に対する1つ以上の追加の加算器をも有する。従って、特殊処理ブロックは、好ましくは、様々な形式のフィルタリングおよび他のデジタル信号処理動作のために構成され得る。更に、特殊処理ブロックは、好ましくは、適合フィルタリング動作において有用である、その出力の少なくとも1つを入力としてフィードバックし、かつ追加の特殊処理ブロックに入力および出力の両方をチェーン状にする能力をも有する。
【0012】
従って、本発明に従うと、プログラマブルロジックデバイスのための特殊処理ブロックが提供される。特殊処理ブロックは、好ましくは、複数の基本処理ユニットを含む。基本処理ユニットの各々は、複数の乗算器およびこの複数の乗算器全てによって生成させる部分積を、一演算において加算するための回路網を含む。
【0013】
本発明はさらに、以下の手段を提供する。
【0014】
(項目1)
プログラマブルロジックデバイスのための特殊処理ブロックであって、該特殊処理ブロックは、
複数の基本処理ユニットを備え、該基本処理ユニットの各々は、
複数の乗算器と、
該複数の乗算器の全てによって生成された部分積を、一演算において、加算するための回路網と
を含む、特殊処理ブロック。
【0015】
(項目2)
上記基本処理ユニットの各々が、上記部分積を加算する前にシフトするための回路網をさらに含む、項目1に記載の特殊処理ブロック。
【0016】
(項目3)
上記特殊処理ブロックの出力を該特殊処理ブロックの入力にフィードバックするためのループバック回路網をさらに備える、項目1に記載の特殊処理ブロック。
【0017】
(項目4)
上記ループバック回路網が、上記特殊処理ブロックを適合フィルタとして構成するために使用される、項目3に記載の特殊処理ブロック。
【0018】
(項目5)
複数のソースからの入力を整列させるための入力前処理回路網をさらに備える、項目3に記載の特殊処理ブロック。
【0019】
(項目6)
上記複数のソースが、上記特殊処理ブロックへの入力および該特殊処理ブロックの出力を含む、項目5に記載の特殊処理ブロック。
【0020】
(項目7)
上記複数のソースが、他の上記特殊処理ブロックの出力をさらに含む、項目6に記載の特殊処理ブロック。
【0021】
(項目8)
上記入力前処理回路網が、上記入力を登録するためのレジスタを含む、項目5に記載の特殊処理ブロック。
【0022】
(項目9)
上記レジスタが、データを上記複数の乗算器の各々に順次入力するためにチェーン状にされている、項目8に記載の特殊処理ブロック。
【0023】
(項目10)
上記レジスタが、上記乗算器の群の間における遅延を上記チェーンにおいて導入するための追加のレジスタを含む、項目9に記載の特殊処理ブロック。
【0024】
(項目11)
出力段をさらに備えており、
該出力段は、
該特殊処理ブロックのうちの少なくとも1つのサブセットの各々に対して複数の加算器を含み、該複数の加算器は、(a)複数の上記基本処理ユニットを含む乗算演算の出力と、(b)(1)該基本処理ユニットのうちの少なくとも1つを含む乗算演算と、(2)該特殊処理ブロックのうちの他の1つにおける他の出力段における他の該複数の加算器からカスケードされる対応出力との合計とのうちの1つを出力として提供するように適合可能である、項目1に記載の特殊処理ブロック。
【0025】
(項目12)
上記出力段が、上記加算器のうちの1つと協働して、累積機能を提供するためのフィードバック回路網をさらに含む、項目11の特殊処理ブロック。
【0026】
(項目13)
上記ブロック出力の複数のビット範囲のうちの1つをシフトされた出力として選択するための回路網をさらに備える、項目11に記載の特殊処理ブロック。
【0027】
(項目14)
シフトされた出力を選択するための上記回路網が、上記出力段および上記複数の基本ユニット間のパイプラインレジスタ段を含む、項目13に記載の特殊処理ブロック。
【0028】
(項目15)
上記複数のビット範囲を結合出力へと結合するための回路網、および、(a)該複数のビット範囲のうちの1つと、(b)該結合出力とのうちの1つを選択するための回路網をさらに備える、項目13に記載の特殊処理ブロック。
【0029】
(項目16)
上記結合するための回路網が、OR回路網を含み、上記結合出力が、上記ブロック出力のローテートを含む、項目15に記載の特殊処理ブロック。
【0030】
(項目17)
上記基本処理ユニットの各々が2つの乗算器を含み、
該複数の基本処理ユニットが、2つずつの該基本処理ユニットの群に構成された少なくとも2つの該基本処理ユニットを含み、
上記出力段における上記複数の加算器が、該群の各々に対して2つの加算器を含み、該加算器の各々が、第1の加算器幅を有し、該2つの加算器が、(a)該少なくとも2つの基本処理ユニットを含む上記乗算演算の上記出力を提供するために該第1の加算器幅より広い幅を有する単一の加算と、(b)該基本処理ユニットのうちの少なくとも1つを含む上記乗算演算を提供するために該第1の加算器幅の最大幅を有する第1の加算、および、(1)該乗算演算と、(2)上記特殊処理ブロックのうちの他の1つにおける他の出力段における他の該複数の加算器からカスケードされる上記対応出力との上記合計を提供するために該第1の加算器幅の最大幅を有する第2の加算とのうちの1つを実行するように構成可能である、項目11に記載の特殊処理ブロック。
【0031】
(項目18)
上記出力段および上記基本処理ユニット間のパイプラインレジスタ段をさらに備えており、
該パイプラインレジスタ段が、上記加算器幅より広い幅を有する上記加算を実行するために該基本ユニットによるデータ出力を整列させるように適合可能である、項目17に記載の特殊処理ブロック。
【0032】
(項目19)
出力段および上記基本処理ユニット間のパイプラインレジスタ段をさらに備える、項目1に記載の特殊処理ブロック。
【0033】
(項目20)
項目1の特殊処理ブロックを備える、プログラマブルロジックデバイス。
【0034】
(項目21)
処理回路網と、
該処理回路網に結合されているメモリと、
該処理回路網および該メモリに結合されている、項目20に記載のプログラマブルロジックデバイスと
を備える、デジタル処理システム。
【0035】
(項目22)
項目20に記載のプログラマブルロジックデバイスが上に取り付けられている、プリント基板。
【0036】
(項目23)
メモリ回路網であって、上記プリント基板上に取り付けられており、かつ上記プログラマブルロジックデバイスに結合されている、メモリ回路網をさらに備える、項目22に記載のプリント基板。
【0037】
(項目24)
処理回路網であって、上記プリント基板上に取り付けらており、かつ上記メモリ回路網に結合されている、処理回路網をさらに備える、項目23に記載のプリント基板。
【0038】
(項目25)
項目1に記載の特殊処理ブロックを備える、集積回路デバイス。
【0039】
(項目26)
処理回路網と、
該処理回路網に結合されているメモリと、
該処理回路網および該メモリに結合されている、項目25に記載の集積回路デバイスと
を備える、デジタル処理システム。
【0040】
(項目27)
項目26に記載の集積回路デバイスが上に取り付けられている、プリント基板。
【0041】
(項目28)
メモリ回路網であって、上記プリント基板上に取り付けらており、かつ上記プログラマブルロジックデバイスに結合されている、メモリ回路網をさらに備える、項目27に記載のプリント基板。
【0042】
(項目29)
処理回路網であって、上記プリント基板上に取り付けられており、かつ上記メモリ回路網に結合されている処理回路網をさらに備える、項目28に記載のプリント基板。
【発明の効果】
【0043】
本発明により、DSPブロックのような特殊処理ブロックによって消費されるPLDの領域を、ブロックの機能性を失わずに減少できる。
【図面の簡単な説明】
【0044】
【図1】本発明に従う、特殊処理ブロックの一好ましい実施形態の高レベル図である。
【図2】図1の特殊処理ブロックの機能図である。
【図3】本発明に従う、特殊処理ブロックのための基本処理ユニットの一好ましい実施形態のブロック図である。
【図4】本発明に従う、特殊処理ブロックの出力段の一好ましい実施形態である。
【図5】有限インパルス応答フィルタとして構成される、本発明に従う、特殊処理ブロックの機能図である。
【図6】算術シフトのために構成される、本発明に従う、特殊処理ブロックの機能図である。
【図7】論理シフトのために構成される、本発明に従う、特殊処理ブロックの出力段の一好ましい実施形態である。
【図8】ローテートのための構成される、本発明に従う、特殊処理ブロックの機能図である。
【図9】バレルシフタとして構成される、好ましい発明に従う、特殊処理ブロックの機能図である。
【図10】本発明を組み入れるプログラマブルロジックデバイスを使用する例示的システムの簡略ブロック図である。
【発明を実施するための形態】
【0045】
本発明の上記および他の目的および利点は、同一の参照番号が本明細書全体に亘って同一部分である、添付の図面と一緒に上記の詳細な説明を考慮して明らかになるであろう。
【0046】
本発明は、図1〜図9を参照して説明される。
【0047】
図1は、本発明に従って、特殊処理ブロックの好ましい一実施形態10の高レベル図を示す。その一方、図2は、同じ実施形態10の機能図である。
【0048】
図1に見られるように、特殊処理ブロック10は、入力プレMUX段11(オプション)、入力レジスタ段12(オプション)、入力マルチプレクシング段13(オプション)、乗算段14、パイプラインレジスタ段15(オプション)および加算器/出力段16を含む。
【0049】
入力プレMUX段11の機能は、提供された場合、通常入力、ループバック入力およびカスケード入力(以下参照)を登録に適した形式にフォーマットすることである。
【0050】
通常入力は、特定フォーマッティングを全く必要としない。カスケード入力は、前の入力の1レジスタ遅れバージョンになり得、従って、状況に応じてフォーマッティングが必要になり得る。しかしながら、そのようなフォーマッティングは、特殊処理ブロック10が一部であるプログラマブルロジックデバイスのプログラマブルロジックにおいても行われ得る。従って、カスケード入力のフォーマッティングが、必要とされている唯一のプレMUX機能である場合、入力プレMUX段11は省略され得るか、または提供された場合でも、バイパスされ得る。ループバック入力17は、特定の乗算器または乗算器の群に常に接続されるように構成され得る。入力プレMUX段11によって実行されるフォーマッティングは、特殊処理ブロック10によって実行される機能によって、特定入力の特定ビット位置への入力の方向付けを含み得る。フォーマッティングは、様々な可能な動作(例えば、様々なサイズの単純または複素数乗算、シフト動作、ローテート動作等)を識別し、かつ必要とされる対応するフォーマッティングを特定する格納された表に従う一実施形態において行われ得る。
【0051】
入力プレMUX段11の出力は、提供された場合、入力レジスタ段12(オプション)によって登録され得る。入力プレMUX段11がない場合、入力レジスタ機能は、必要な場合、ブロック10が一部であるプログラマブルロジックデバイスのプログラマブルロジック部において実行され得る。従って、入力レジスタ段12は、オプションであると考えられる。入力レジスタ段12は、提供された場合でも、好ましくは、未登録出力が必要とされるか、または望まれる場合においては任意にバイパスされ得る。
【0052】
入力マルチプレクシング段13は、提供された場合、登録済および未登録入力を入力プレMUX段11から取得し、場合により、プログラマブルロジックデバイスの他の場所からも入力を取得し、異なる動作モードに対してデータをフォーマットする。そのことに留意すると、入力マルチプレクシング段13は、入力プレMUX段11に類似している。従って、多くの場合、入力プレMUX段11および入力マルチプレクシング段13のうちの1つが提供された場合、もう一方は提供されない。
【0053】
入力プレMUX段11または入力マルチプレクシング段13によって実行されるフォーマッティングの種類の一例として、
Real Result=Re[(a+jb)×(c+jd)]=(ac−bd)
Imag Result=Im[(a+jb)×(c+jd)]=(ad+bc)
である18×18複素数乗算を考慮する。この複素数演算は、4つの18×18乗算を必要とし、従って、8つの18ビット入力を必要とする。しかしながら、4つの固有18ビット共有入力しかないため、入力マルチプレクシング段13は、入力a,b,cおよびdを取得し、かつ必要な複製を実行する。それは、その4つの入力が、実計算および虚計算の各々に対する正確な乗算器入力に適切にルートされるようにである。同様に、9および12ビットモード動作に対して、入力プレMUX段11および/または入力マルチプレクシング段13は、正確な結果を得るために入力ビットの正確な整列を保証する。
【0054】
乗算段14は、好ましくは、上述されたように、複数の基本処理ユニットを含む。好ましい実施形態においては、特殊処理ブロック10(図2参照)の各々は、4つの基本処理ユニット30を含み、すなわち、合計される2つの乗算の群において8つの乗算まで実行できる。その実施形態においては、特殊処理ブロック10における基本処理ユニットは、好ましくは、同一の半ブロックに分類される。それは、半ブロックの各々が、それ自体で、本発明内の特殊処理ブロックとして考慮され得るようにである。
【0055】
基本処理ユニットの各々は、好ましくは、2つの18×18乗算の合計に対する機能性を含む。基本処理ユニットは、好ましくは、全て同一であるが、一部の実施形態においては、例えば、上記から明らかであるように、減算が必要とされ得る複素数乗算に対して必要とされ得る、一部の乗算器の一部の入力のみにおいて否定(negation)機能を提供することが可能である。代替的に、否定機能は、1つ以上の加算器も減算が実行できるように、基本処理ユニットの加算器部分に提供され得る。
【0056】
基本処理ユニットの好ましい実施形態の構造が図3に示される。基本処理ユニット30の各々は、好ましくは、2つの18×18乗算の和をサポートし、好ましくは、2つの部分積生成器31、2つの10ベクトル−2ベクトル圧縮器32、4−2圧縮器33、および2つのキャリー伝搬(carry−propagate)加算器34を含む。加算器34は、好ましくは、制御信号342によって選択的に接続可能である1つの30ビット加算器340および1つの24ビット加算器341を含む。9×9または12×12のようなより小さな乗算に対しては、24ビットのみが必要とされ、2つの加算器は、2つの独立した乗算を可能にするために接続が断ち切られ得る。18×18のようなより大きな乗算に対しては、2つの加算器34は、単一の加算器としてリンクされるべきである。
【0057】
部分積生成器31の各々は、好ましくは、17ビット符号なしキャリーベクトル(ネガティブ部分積は、キャリーベクトルにおける関連キャリーインビットを用いる1の補数フォーマットにある)とともに、9つの20ビットブース符号化ベクトル(ブース符号化は、部分積の数を減少できる既知の技術である)を生成する。追加の19ビット符号付き部分積は、符号なし乗算器の場合に生成され得る(好ましくは、符号付き乗算器に対して常にゼロである)。好ましくは、11ベクトルまで生成され得るが、キャリービットは、好ましくは、10ベクトルのみが圧縮されることを必要として部分積ベクトルと組み合わされ得る。
【0058】
部分積は、好ましくは、2つの39ビットベクトル(36ビット+符号拡張ビット)に圧縮される。任意の符号拡張は、36ビット18×18乗算器境界を越えて適切に保存されるべきである。それは、任意の符号拡張が、72ビット36×36乗算境界まで有効になり得るようにである(下述されるように、2つの基本処理ユニットが、36×36乗算をインプリメントするために組み合わされる場合)。圧縮の後、結果は、mux・シフト回路網35において処理される。その回路網は、好ましくは、実行される動作によって必要とされ得る加算前の結果の任意の符号拡張、ゼロ充てんまたはシフトが4−2圧縮器33およびキャリー伝搬加算器34における結果の最後の組み合わせの前に達成され得る組み合わせロジックを含む。回路350,351の各々に対して、入力が、好ましくは、合計78入力ビットに対して2つの39ビットベクトルである一方、出力は、好ましくは、合計108ビットに対して2つの54ビットベクトルである。エキストラ30ビットは、符号拡張、ゼロ充てんおよび/またはシフトの結果である。マルチプレクサ352は、符号拡張されたかまたはゼロ充てんされた結果の間の選択を示す。4つの54ビットベクトルは、54ビット出力を生成するために加算器34に加算される、2つの54ビットベクトルを出力する圧縮器33に入力される。
【0059】
上述されたように、両方の乗算器からの部分積は一度に加算されるため、基本処理ユニットの2つの乗算器は、2つの独立した乗算に対して使用されることができない。しかしながら、単一の乗算は、第2の乗算器の入力をゼロにすることによって行われ得る。
【0060】
より小さい乗算に対しては、独立したサブセット乗算器(9×9および12×12の場合)は、以下のように扱われ得る。
【0061】
2つの9×9乗算に対して、第1の9×9乗算は、好ましくは、第1の乗算器の最上位ビット(MSB)を使用して計算される(図3の左)。第2の9×9乗算は、好ましくは、第2の乗算器の最下位ビット(LSB)を使用して計算される(図3の右)。右の乗算器のMSBは、適宜、対応する値の符号拡張によって埋められる。左の乗算器の出力(合計およびキャリーベクトル)は、18ビットだけ左にシフトされる。2つの乗算器出力は、好ましくは、一緒に圧縮される。2つの結果的最終ベクトルは、次いで、この動作のために接続されていない2つの加算器34を用いて加算される。第1の9×9結果が、好ましくは、左(30ビット)加算器340のMSB上に出力される一方、第2の9×9結果は、好ましくは、右(24ビット)加算器341のLSB上に出力される。
【0062】
独立した12×12乗算は、MSB/LSB方法を使用して、9×9乗算に類似した方法において計算され得る。
【0063】
両方の場合において、好ましくは、右の乗算器出力は、独立した左の乗算器結果に対するどの干渉をも防ぐために24ビットより上でゼロなる。
【0064】
精度に関らず、乗算合計の場合においては、全ての入力は、好ましくは、使用される乗算器のMSBを占有するためにシフトされ、出力ベクトルは、好ましくは、シフトされない。出力ベクトルは、しかしながら、好ましくは、完全に符号拡張される。それは、加算器34外の符号拡張が累積器の全幅に対して使用され得るようにである(以下)。
【0065】
好ましくは、複素数乗算および積の減算を必要とする他の演算に対しては、加算器入力は、否定され得る(加算器を効率的に加算器/減算器にする)。代替的に、しかしながら、1つ以上の乗算器に、入力を反転させ(1の補数)、かつ結果に被乗数を加算することによって、その出力ベクトルを選択的に否定する能力が提供され得る。被乗数加算は、部分積の圧縮において実行され得る。それは、否定が加算器34の前にインプリメントされ得るようにである。
【0066】
ユーザのオプションにおいて好ましくバイパスされ得るパイプラインレジスタ段15は、好ましくは、乗算段14の出力が更なる加算または累積または他の処理の前に登録されることを可能にする。
【0067】
加算器/出力段16は、好ましくは、その入力または上記の任意の組み合わせを選択的にシフト、加算、累積、または登録する。その入力は、好ましくは、特殊処理ブロック10における2つの基本処理ユニットの出力である。図4に見られるように、それらの2つの入力40,41は、必要に応じて入力40,41をシフトまたは符号拡張し得るレジスタ/シフタユニット42,43のそれぞれに入力される。好ましい実施形態においては、入力40,41の各々は、それぞれの72ビットベクトルを生成するためにシフトされるか、または符号拡張される54ビットベクトルである。
【0068】
好ましくは、ユニット42,43の出力は、好ましくは段16自体の出力45とともに、3:2圧縮器44に入力される。このフィードバックは、累積機能を特殊処理ブロック10に提供する。好ましくは、フィードバックされた出力45は、累積が必要ではないか、または望まれない場合に代替的にゼロ(例えば、接地)を選択できるマルチプレクサ46を通過する。
【0069】
下述されるように、圧縮器44の出力は、それらが出される宛先の使用によって、プログラマブル制御の下でチェーン状になり得る2つの加算器47,48に提供される(下述されるように適切なマルチプレクサを介して)。加算器47,48の出力は、好ましくは、マルチプレクサ401,402によって決定されるように、レジスタ49,400において登録されるか、またはされないかであり得る。登録されていてもされてなくても、出力47,48は、好ましくは、特殊処理ブロック10の出力ベクトルを作り上げる。代替的な経路として、マルチプレクサ403,404,405は、基本処理ユニット30の出力が更なる処理なしに出力されるところで加算器47,48がバイパスされることを可能にする。
【0070】
上述されたように、基本処理ユニット30の各々が2つの18×18乗算の合計を実行できる場合、2つの基本処理ユニット30は、36×36乗算を実行できる。ここにおいて、36×36乗算は、周知であるように、4つの18×18乗算に分解され得る。そのような場合において、2つの圧縮された72ビットベクトルは、好ましくは、圧縮器44によって出力され、かつ好ましくは、ANDゲート406によってこのモードのためにプログラム可能に接続される2つの44ビット加算器47,48によって、加算される。上位16ビットは、このモードにおいて無視され得る。
【0071】
加算器47,48が相互に接続される必要がないより狭い出力を用いる他のモードにおいては、加算器47,48は、必要に応じて、特殊処理ブロック10の出力が他の特殊処理ブロック10の同様の出力とチェーン状になるように構成され得る。そのようなモードを容易にするために、レジスタ400の出力は、例えば、加算器47に2つの入力を提供する4:2マルチプレクサ407に与えられ得る。マルチプレクサ407への他の入力は、他の特殊処理ブロック10からのチェーンイン(chain−in)入力408になり得る。ここにおいて、その入力は、その他の特殊処理ブロック10のレジスタ49からチェーンアウト(chain−out)出力409を介して提供され得る。
【0072】
従って、チェーンモード(chaining mode)において、44ビット加算器48は、例えば、単一の乗算器、乗算器の合計、または累積器として構成される複数の特殊処理ブロック10のうちの1つ内の結果を、前のブロックの結果と加算するために使用され得る。加算器47への入力として、加算器48の出力、および他の特殊処理ブロック10の出力を選択するためにマルチプレクサ407を使用することによって、現行の特殊処理ブロック10の出力は、現行および前の特殊処理ブロック10の出力のチェーン状の合計になり得る。チェーンモードが使用された場合、44ビット累積器のみが利用可能であるが、それでも乗算器の数によって、6ビットから8ビットのガードバンドを与える。しかしながら、明らかであるように、チェーンモードは、加算器47,48の両方が単一の特殊処理ブロック10の結果を得るために必要である36ビットモードに対して利用不可能である。
【0073】
出力経路は、動作のモードによって、わずかに異なり得る。従って、マルチプレクサ401,402は、加算器47,48の登録済または未登録出力の選択を可能にする。しかしながら、示されるように、登録済出力が好ましくは、カスケードまたはチェーンモードにおいて使用されることが理解される。
【0074】
更に、少なくとも1つの出力は、17においてのように、特殊処理ブロック10の入力にループバックされ得る。そのようなループバック特徴は、例えば、特殊処理ブロック10が適合フィルタリングに対してプログラム可能に構成された場合に使用され得る。複数のループバックが提供され得るが、好ましい一実施形態においては、単一の乗算器または一群の乗算器への1つのループバック17が提供される。
【0075】
本発明の特殊処理ブロック10は、長いチェーンの有限インパルス応答(FIR)フィルタとしてプログラム的に構成され得る。図5に示されるように、4つの基本処理ユニット30は、そのようなFIRフィルタ50の一部として構成される。上述されたように、これは、複数の特殊処理ブロック10のうちの1つまたは2つのいずれかになるものと考慮され得る。示されるように、加算器48の各々は、4つの乗算の結果を加算するために使用される。ここにおいて、加算器47は、長いFIRフィルタを形成するために加算器48の出力(可能であれば、他の特殊処理ブロック10の加算器48の出力も)を一緒に加算することに対して、上述されたチェーンまたはカスケードモードにおいて使用される。FIRフィルタの係数が51にて入力される一方、フィルタリングされるデータは、レジスタチェーン52を介して入力され、それは、好ましくは、入力プレMUX段11、入力レジスタ段12または入力マルチプレクシング段13のうちの1つにおいて形成される。出力カスケードチェーンによって導入される遅延を補償するために、少なくとも1つの追加遅延53(例えば、エキストラレジスタの形式で)は、好ましくは、入力カスケードチェーン52に提供される。好ましくは、遅延の数は、加算器47の数に、またはより詳細には、遅延53が補償する出力レジスタ400の数に対応する。一般に、これは、基本処理ユニット30の各対に対する一遅延53に等しい。更なるFIRフィルタインプリメンテーションは、本明細書においてその全容が参考により援用され、本願と同時に出願され、同時係属であり、同一出願人に係る米国特許出願第11/ , 号(代理人整理番号第000174−0465−101)に説明される。
【0076】
FIRフィルタをインプリメントすることに加えて、本発明の特殊処理ブロック10は、バレルシフタとしてプログラム可能に構成され得る。特に、36×36乗算器モードを使用することによって、32ビットベクトルは、左または右に算術シフトまたは論理シフトされ得る。そのようなNビットのシフトは、1であるN番目最下位ビット以外は全てのビットが0である均一の長さの第2のベクトルによってシフトされるようにベクトルを乗算することによって達成され得る。
【0077】
シフトされるベクトルが36ビットに符号拡張され、第2のベクトルが36ビットまでゼロでパッドされた(padded)場合、結果は算術シフトである。シフトが左または右であるかは、結果がそれぞれ64ビット結果の32最上位ビット、または32最下位ビットからとられたかによる。図6は、そのようなシフト動作を示す。
【0078】
同様に、両方のベクトルが36ビットまでゼロでパッドされた場合、結果は論理シフトであり、シフトが左または右であるかは、結果がそれぞれ64ビット結果の32最上位ビット、または32最下位ビットからとられたかによる。図7は、そのようなシフト動作を示す。
【0079】
更に、両方のベクトルが、36ビットまでゼロでパッドされ、64ビット結果の32最上位ビットが32最下位ビットを用いてORされた場合、結果は、図8に示されるように、第1のベクトルのN最上位ビットから結果のN最下位ビットへのローテートである。
【0080】
図9は、算術および論理シフトならびにローテートが、上述されるような32×32乗算を実行するための36×36乗算器モード90、入力が2つの32ビットで64ビット結果の半分であるORゲート91、および3入力マルチプレクサ92を使用して、以下の表に従って動作してどのように実行され得るかを示す。
【0081】
【表1】

左の算術シフトおよび左の論理シフトが同じ結果を生み出し、従ってそれらのケースが繰り返しであることに留意されたい。別の言い方をすれば、符号付き入力は、右の算術シフトに対してのみ実際に必要である。
【0082】
従って、複数の基本処理ユニットに基づいて、プログラマブルロジックデバイスのための特殊処理ブロックが提供されたことが見られる。
【0083】
本発明に従うそのような回路網を組み入れるPLD 100は、多種の電子デバイスにおいて使用され得る。1つの可能な使用は、図10に示されるデータ処理システム900にある。データ処理システム900は、以下の構成要素、プロセッサ901、メモリ902、I/O回路網903、および周辺デバイス904の1つ以上を含み得る。これらの構成要素は、システムバス905によって相互に結合され、エンドユーザシステム907に含まれる回路基板906上を占有する。
【0084】
システム900は、コンピュータネットワーキング、データネットワーキング、計装、映像処理、デジタル信号処理、もしくはプログラマブルまたは再プログラマブルロジックを使用する利点が好ましい任意の他のアプリケーションのような様々なアプリケーションにおいて使用され得る。PLD 100は、様々な異なる論理機能を実行するために使用され得る。例えば、PLD 100は、プロセッサ901と協働するプロセッサまたはコントローラとして構成され得る。PLD 100は、システム900における共有リソースへのアービトレーティングアクセスのためのアービターとしても使用され得る。更なる他の例においては、PLD 100は、プロセッサ901とシステム900における他の構成要素のうちの1つと間のインターフェースとして構成され得る。システム900が単に例示に過ぎず、本発明の真の範囲および精神が添付の特許請求の範囲によって示されるべきことに留意されたい。
【0085】
様々な技術は、上述されたようにPLD 90をインプリメントし、本発明を組み入れるために使用され得る。
【0086】
前述したものが、本発明の原理の単なる例示に過ぎず、様々な修正が、本発明の範囲および精神から逸脱せずに当業者によって行われ得ることが理解される。例えば、本発明の様々な要素は、任意の所望の数および/または構成においてPLD上に提供され得る。本発明が、限定の目的ではなく例示目的のために示される説明された実施形態以外によって実施され得ることが当業者に理解されるであろう。更に、本発明は、添付の特許請求の範囲にのみ限定される。
【0087】
プログラマブルロジックデバイスのための特殊処理ブロックは、個々の乗算を計算せずに両方の乗算の部分積を加算して、2つの乗算の合計を実行する基本処理ユニットを組み入れる。そのような基本処理ユニットは、従来の別々の乗算器および加算器より少ない領域を消費する。特殊処理ブロックは、ブロックが様々なデジタル信号処理動作のために構成されることを可能にするために、ループバック機能とともに、入力および出力段を更に有する。
【0088】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【符号の説明】
【0089】
10 特殊処理ブロック
11 入力プレMUX段
12 入力レジスタ段
13 入力マルチプレクシング段
14 乗算段
15 パイプラインレジスタ段
16 加算器/出力段
17 ループバック

【特許請求の範囲】
【請求項1】
プログラマブルロジックデバイスのための特殊処理ブロックであって、該特殊処理ブロックは、有限インパルス応答(FIR)フィルタを形成するように適合可能であり、該特殊処理ブロックは、
複数の基本処理ユニットを備え、
該複数の基本処理ユニットの各々は、
複数の部分積生成器であって、該複数の部分積生成器のうちのそれぞれ1つは、それぞれの部分積を表すそれぞれの複数のベクトルを提供する、複数の部分積生成器と、
該複数の部分積生成器への入力として該FIRフィルタの係数を入力するための第1の複数の入力レジスタと、
該FIRフィルタにデータを入力するための第2の複数の入力レジスタであって、該レジスタは、該複数の部分積生成器の各々にデータを順次入力するためにチェーン状にされている、第2の複数の入力レジスタと、
(1)該複数の基本処理ユニットのうちの2つの基本処理ユニットを必要とする演算と、(2)該複数の特殊処理ブロックのうちの第1の他の特殊処理ブロックからカスケードされる対応出力とを出力として結合するための出力段であって、該出力段は、該複数の特殊処理ブロックのうちの第2の他の特殊処理ブロックにおいて第2の他の出力段にカスケードするために該出力を登録するための出力カスケードレジスタを含む、出力段と
を含み、
該第2の複数の入力レジスタは、該複数の特殊処理ブロックのうちの該第2の他の特殊処理ブロックにおいて、該第2の複数の入力レジスタが対応する第2の複数の入力レジスタにチェーン状にされているとき、該出力カスケードレジスタに対して補償するための遅延レジスタを含む、特殊処理ブロック。
【請求項2】
前記遅延レジスタは、複数の遅延レジスタを含み、該複数の遅延レジスタは、前記複数の基本処理ユニットの各一対に対する1つの遅延レジスタを含む、請求項1に記載の特殊処理ブロック。
【請求項3】
前記それぞれの複数のベクトルの各々を、前記それぞれの部分積を表すより少ない数のベクトルに圧縮する圧縮器回路網と、
該複数の部分積生成器の全てによって生成された該より少ない数のベクトルによって表された部分積を、一演算において、加算するための回路網と
を含み、
該加算するための回路網は、該複数の部分積生成器の全ての部分積の全ての合計のみを出力し、
前記複数の部分積生成器のうちのいずれの部分積生成器の部分積も個別には出力されない、請求項1に記載の特殊処理ブロック。
【請求項4】
前記出力段は、複数の加算器をさらに含み、該複数の加算器は、(1)前記複数の基本処理ユニットのうちの2つの基本処理ユニットを必要とする前記演算と、(2)前記複数の特殊処理ブロックのうちの第1の他の特殊処理ブロックからカスケードされた前記対応出力との合計を出力として提供するように適合可能である、請求項1に記載の特殊処理ブロック。
【請求項5】
有限インパルス応答(FIR)フィルタを形成するように適合可能であるプログラマブルロジックデバイスであって、該プログラマブルロジックデバイスは、
少なくとも1つの特殊処理ブロックであって、該少なくとも1つの特殊処理ブロックの各々は、
複数の基本処理ユニットであって、該複数の基本処理ユニットの各々は、
複数の部分積生成器であって、該複数の部分積生成器のうちのそれぞれ1つは、それぞれの部分積を表すそれぞれの複数のベクトルを提供する、複数の部分積生成器と、
(1)該複数の基本処理ユニットのうちの2つの基本処理ユニットを必要とする演算と、(2)該複数の特殊処理ブロックのうちの第1の他の特殊処理ブロックにおいて第1の他の出力段からカスケードされる対応出力とを出力として結合するための出力段と
を含む複数の基本処理ユニットと、
該複数の特殊処理ブロックのうちの第2の他の特殊処理ブロックにおいて、第2の他の出力段にカスケードするために該出力を登録するための出力カスケードレジスタと
をさらに含む、少なくとも1つの特殊処理ブロックと、
該FIRフィルタにデータを入力するための第1の複数の入力レジスタであって、該レジスタは、該複数の乗算器の各々にデータを順次入力するためにチェーン状にされている、第1の複数の入力レジスタと、
該第1の複数の入力レジスタが、該複数の特殊処理ブロックのうちの該第2の他の特殊処理ブロックにおいて対応する第1の複数の入力レジスタにチェーン状にされているとき、該出力カスケードレジスタを補償するために該第1の複数の入力レジスタにチェーン状にされる遅延レジスタと
を含む、プログラマブルロジックデバイス。
【請求項6】
前記遅延レジスタは、複数の遅延レジスタを含み、該複数の遅延レジスタは、前記複数の基本処理ユニットの各一対のための1つの遅延レジスタを含む、請求項5に記載のプログラマブルロジックデバイス。
【請求項7】
前記特殊処理ブロックは、
前記それぞれの複数のベクトルの各々を、前記それぞれの部分積を表すより少ない数のベクトルに圧縮する圧縮器回路網と、
前記複数の部分積生成器の全てによって生成された該より少ない数のベクトルによって表された部分積を、一演算において、加算するための回路網と
をさらに含み、
該加算するための回路網は、該複数の部分積生成器の全ての部分積の全ての合計のみを出力し、
前記複数の部分積生成器のうちのいずれの部分積生成器の部分積も個別には出力されない、請求項5に記載のプログラマブルロジックデバイス。
【請求項8】
前記出力段は、複数の加算器を含み、該複数の加算器は、(1)前記複数の基本処理ユニットのうちの2つの基本処理ユニットを必要とする前記演算と、(2)前記複数の特殊処理ブロックのうちの前記第1の他の特殊処理ブロックにおいて、前記第1の他の出力段からカスケードされた前記対応出力との合計を出力として提供するように適合可能である、請求項5に記載のプログラマブルロジックデバイス。
【請求項9】
前記第1の複数の入力レジスタと前記遅延レジスタとは、前記特殊処理ブロックに含まれている、請求項5に記載のプログラマブルロジックデバイス。
【請求項10】
前記複数の部分積生成器への入力として、前記FIRフィルタの係数を入力するための第2の複数の入力レジスタをさらに含む、請求項5に記載のプログラマブルロジックデバイス。
【請求項11】
第1の複数のビット数のうちのN個のビットをローテートしてローテート数を生成する回路網であって、
N番目の位置に1を有し他の位置のそれぞれに0を有する第2の複数のビット数によって、複数のビット数を乗算して、中間数を生成する乗算器と、
該中間数の上位ビットを第1の入力として有し、該中間数の下位ビットを第2の入力として有する複数のビットのORゲートであって、該ORゲートの出力は該ローテート数である、複数のビットのORゲートと
を含む、回路網。
【請求項12】
マルチプレクサが前記上位ビット、前記下位ビット、前記ORゲートを選択することをさらに含み、
該ORゲートを選択することは、前記ローテート数を出力し、
該上位ビットを選択することは、左シフト数を出力し、
該下位ビットを選択することは、右シフト数を出力する、請求項11に記載の回路網。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−157066(P2012−157066A)
【公開日】平成24年8月16日(2012.8.16)
【国際特許分類】
【出願番号】特願2012−92020(P2012−92020)
【出願日】平成24年4月13日(2012.4.13)
【分割の表示】特願2006−344566(P2006−344566)の分割
【原出願日】平成18年12月21日(2006.12.21)
【出願人】(597154922)アルテラ コーポレイション (163)
【氏名又は名称原語表記】Altera Corporation
【Fターム(参考)】