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