(57)【特許請求の範囲】
【請求項１】
フィルタであって、
入力信号と、
前記入力信号、第１の係数、および前記入力信号のシフトレジストされた信号を受取る第１のデジタル信号処理（ＤＳＰ）スライスとを含み、前記第１のＤＳＰスライスは、前記第１のＤＳＰスライスの出力を記憶する第１のレジスタを含み、
前記フィルタはさらに、
前記入力信号、第２の係数、および前記入力信号の前記シフトレジストされた信号を受取る第２のＤＳＰスライスを含み、前記第２のＤＳＰスライスは、前記第２のＤＳＰスライスの出力を記憶する第２のレジスタと、前記第２のレジスタに結合され、第１の乗算器の出力を前記第１のＤＳＰスライスの出力に加算する第１の加算器とを含み、前記第１の乗算器は前記入力信号と前記シフトレジストされた信号の和と前記第２の係数との乗算を行い、
前記第１のＤＳＰスライスは、さらに、前置加算器と前記前置加算器に結合される第３のレジスタを含む前置加算器回路を含み、
前記第３のレジスタは、前記入力信号のシフトレジストされた信号を受けて、前記前置加算器での前記入力信号との加算のために前記前置加算器へ与え、
前記前置加算器回路は、第１のデュアルレジスタ回路と第２のデュアルレジスタ回路を有し、前記第３のレジスタは前記第２のデュアルレジスタ回路で構成され、
前記第１のデュアルレジスタ回路、前記第２のデュアルレジスタ回路、または前記第１および第２のデュアルレジスタ回路の組合せのいずれかが、前記第１のＤＳＰスライスの第２の乗算器への入力を与えるために用いられる、フィルタ。
【請求項２】
前記前置加算器回路は、
制御バスと、
前記制御バスに結合された第１のマルチプレクサの第１の入力ポートと、
前記制御バスに結合された第１の論理ゲートの第２の入力ポートと、
前記制御バスに結合された第２の論理ゲートの第３の入力ポートと、
前記制御バスに結合された前記前置加算器として動作する加算器／減算器の第４の入力ポートとを含む、請求項１に記載のフィルタ。
【請求項３】
前記第１のＤＳＰスライスは、
前記前置加算器回路に結合され、前記前置加算器回路の結果を記憶する第４のレジスタを含み、
前記第１のＤＳＰスライスはさらに、
前記第１の係数を受取る第５のレジスタと、
前記第４のレジスタおよび前記第５のレジスタに結合され、前記第４のレジスタの出力を前記第５のレジスタの出力と乗算する前記第２の乗算器とを含む、請求項２に記載のフィルタ。
【請求項４】
前記前置加算器回路は、前記第３の入力ポートからの入力に応じて前記第２の論理ゲートの出力を介して０の値を受取るよう前記加算器／減算器のデータ入力ポートを動的に設定するように構成される、請求項２または３に記載のフィルタ。
【請求項５】
前記前置加算器回路は、前記第３の入力ポートへの入力に応じて前記第２の論理ゲートの出力を介して前記０の値を受取るよう前記加算器／減算器の第４のデータ入力ポートを動的に設定するように構成される、請求項４に記載のフィルタ。
【請求項６】
前記前置加算器回路は、前記第１の入力ポートへの入力に応じて０−、１−または２−レジスタ遅延を有する入力データを動的に選択するように構成される、請求項２から５のいずれかに記載のフィルタ。
【請求項７】
前記前置加算器回路は、前記第４の入力ポートへの入力に応じて加算および減算のいずれかを行うよう前記加算器／減算器を動的に設定するように構成される、請求項２から５のいずれかに記載のフィルタ。
【請求項８】
集積回路において実現されるべき回路においてフィルタを構成する方法であって、
前記回路の高水準設計を受取るステップと、
前記高水準設計においてフィルタを識別するステップと、
前記フィルタの複数段の各係数を分析するステップと、
前記高水準設計のフィルタを、前記複数段の係数に対応するように構成された前記回路内の処理ブロックを用いて、変換するステップとを備え、
前記処理ブロックは前記係数に対応付けられたタップを受け取るように構成され、前記処理ブロックは複数のデジタル信号処理（ＤＳＰ）スライスを含み、
前記方法はさらに、
入力信号と前記入力信号のシフトレジストされた信号とを前記ＤＳＰスライスの各々に結合するステップと、
前記入力信号のシフトレジストされた信号と前記入力信号とを各前記ＤＳＰスライスにおいて前置加算するステップとを備え、前記前置加算するステップは、前記ＤＳＰスライス各々内の前置加算器回路の加算器／減算器により行われ、
前記ＤＳＰスライス各々の前記前置加算器回路は、第１のデュアルレジスタ回路と第２のデュアルレジスタ回路とを含み、
前記前置加算するステップは、前記ＤＳＰスライス各々において乗算器に対する入力を与えるために、前記第１のデュアルレジスタ回路、前記第２のデュアルレジスタ回路ならびに前記第１のデュアルレジスタ回路および第２のデュアルレジスタ回路の組合せのいずれを用いるかを選択するステップを含み、
前記方法は、さらに、
前記ＤＳＰスライス各々自身の出力を前記ＤＳＰスライスの自身内のレジスタに記憶させるステップと、
前記ＤＳＰスライスの初段のＤＳＰスライスの後のＤＳＰスライス各々に対して、前記ＤＳＰスライスの各ＤＳＰスライス自身の対応の係数と対応の前置加算結果とを乗算する乗算器の出力を前記自身のＤＳＰスライスの前段のＤＳＰスライスの出力に加算するステップとを含む、方法。
【請求項９】
前記高水準設計のフィルタを前記係数に対応するように構成された前記処理ブロックを用いて変換するステップは、前記フィルタを対称的な転置コンボリューションフィルタとして構成するステップを含む、請求項８に記載の方法。
【請求項１０】
前記係数を分析するステップは、前記高水準設計でのフィルタの対称的な係数を識別するステップを含む、請求項８に記載の方法。
【請求項１１】
前記複数の係数のうちの１つの係数を第１の入力として前記処理ブロックのＤＳＰスライスの前記初段のＤＳＰスライスの乗算器に与えるステップをさらに含む、請求項８に記載の方法。
【請求項１２】
前記入力信号および前記入力信号のシフトレジストされた信号との和を前記処理ブロックの前記ＤＳＰスライスの前記初段のＤＳＰスライスの前記乗算器に第２の入力として与えるステップをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記和を前記第２の入力として前記乗算器に与えるステップは、前記ＤＳＰスライスの前記初段のＤＳＰスライスの前記前置加算器回路を用いて前記和を生成するステップを含む、請求項１２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は、集積回路装置（integrated circuit device：ＩＣ）に関する。より特定的には、本発明は、ＩＣのための前置加算器段を備えたデジタル信号処理ブロックに関する。
【背景技術】
【０００２】
発明の背景
プログラマブルロジックデバイス（programmable logic device：ＰＬＤ）は、特定の論理関数を実行するようプログラム可能な周知のタイプの集積回路である。ＰＬＤの一種であるフィールドプログラマブルゲートアレイ（field programmable gate array：ＦＰＧＡ）は典型的にはプログラム可能なタイルのアレイを含む。これらのプログラム可能なタイルは、たとえば、入出力ブロック（input/output block：ＩＯＢ）、構成可能論理ブロック（configurable logic block：ＣＬＢ）、専用のランダムアクセスメモリブロック（random access memory block：ＢＲＡＭ）、乗算器、デジタル信号処理ブロック（digital signal processing block：ＤＳＰ）、プロセッサ、クロックマネージャ、遅延ロックループ（delay lock loop：ＤＬＬ）などを含み得る。本明細書においては、「含む」および「含んでいる」は、限定を伴わずに含むことを意味する。
【０００３】
プログラム可能なタイルは各々、典型的には、プログラマブル相互接続部およびプログラマブルロジックの両方を含む。プログラマブル相互接続部は、典型的には、プログラマブル相互接続点（programmable interconnect point：ＰＩＰ）によって相互接続された長さの異なる多数の相互接続線を含む。プログラマブルロジックは、たとえば、関数発生器、レジスタ、演算ロジックなどを含み得るプログラマブル素子を用いて、ユーザ設計のロジックを実現する。
【０００４】
プログラマブル相互接続部およびプログラマブルロジックは、典型的には、プログラマブル素子がどのように構成されるかを定義する構成データのストリームを内部構成メモリセルにロードすることによってプログラムされる。構成データは、メモリから（たとえば、外部ＰＲＯＭから）読出し可能であるか、または外部装置によってＦＰＧＡに書込み可能である。集団状態の個々のメモリセルが次いでＦＰＧＡの関数を決定する。
【０００５】
別のタイプのＰＬＤとして、複合プログラマブルロジックデバイス（Complex Programmable Logic Device）、すなわちＣＰＬＤ、が挙げられる。ＣＰＬＤは２つ以上の「関数ブロック」を含み、これらの２つ以上の「関数ブロック」は互いに接続され、相互接続スイッチマトリックスによって入出力（「Ｉ／Ｏ」）リソースに接続される。ＣＰＬＤの関数ブロックは各々、プログラマブルロジックアレイ（Programmable Logic Array：ＰＬＡ」）およびプログラマブルアレイロジック（Programmable Array Logic：ＰＡＬ）デバイスにおいて使用されるものと同様の２レベルのＡＮＤ／ＯＲ構造を含む。ＣＰＬＤにおいては、構成データは、典型的には、不揮発性メモリにおいてオンチップで記憶される。いくつかのＣＰＬＤにおいては、構成データは、不揮発性メモリにおいてオンチップで記憶され、次いで、初期構成（プログラミング）シーケンスの一環として揮発性メモリにダウンロードされる。
【０００６】
これらのプログラマブルロジックデバイス（「ＰＬＤ」）の全てに関して、デバイスの機能が、その目的のためにデバイスに与えられるデータビットによって制御される。データビットは、揮発性メモリ（たとえば、ＦＰＧＡおよびいくつかのＣＰＬＤにあるようなスタティックメモリセル）、不揮発性メモリ（たとえば、いくつかのＣＰＬＤにあるようなＦＬＡＳＨメモリ）、または他の何らかのタイプのメモリセルに記憶させることができる。
【０００７】
他のＰＬＤは、デバイス上でさまざまな素子をプログラム可能に相互接続する金属層などの処理層を適用することよってプログラムされる。これらのＰＬＤはマスクプログラマブルデバイスとして公知である。ＰＬＤはまた、たとえば、ヒューズ技術またはアンチヒューズ技術を用いる他の方法でも実現可能である。「ＰＬＤ」および「プログラマブルロジックデバイス」という語句は、これらの例示的なデバイスだけではなく部分的にのみプログラム可能な網羅的なデバイスをも含むが、これらに限定されない。たとえば、あるタイプのＰＬＤは、ハードコード化されたトランジスタロジックと、ハードコード化されたトランジスタロジックをプログラム可能に相互接続するプログラム可能なスイッチ構造との組合せを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＦＰＧＡ（「ＦＰＧＡ構造」）のプログラマブルロジックにおいてインスタンス化された設計の性能は、ＦＰＧＡ構造の速度によって制限される。しかしながら、ＦＰＧＡにおけるＤＳＰなどの専用の回路リソースは、ＦＰＧＡ構造において実現される等価回路よりも速く動作を実行することができる。したがって、ＤＳＰの有用性を拡張するための手段を設けることは望ましく有用となるだろう。
【０００９】
集積回路は、回路設計を実現するのに用いられるさまざまな回路素子を含む。回路設計は、集積回路の回路素子のタイプおよび使用可能な場所に応じてレイアウトまたは「配置」されなければならない。すなわち、回路設計の構成要素を、集積回路の位置に割当てるかまたは配置しなければならない。回路設計の構成要素を配置する際、配置を決定するのにさまざまな要因が考慮される。構成要素を効率的に配置し、構成要素の実現効率を改善することにより、集積回路装置の使用が著しく向上する可能性がある。
【００１０】
デジタル信号処理（digital signal processing：ＤＳＰ）応用例に特有の算術演算を実現する場合に従来の集積回路では非効率的であるが、いくつかの集積回路は、ＤＳＰ関数を実現するための専用の回路ブロックを採用している可能性がある。しかしながら、従来の装置におけるＤＳＰブロックでは、本質的に非効率的なレイアウトになってしまうか、または、ＤＳＰ応用例を実現するのに必要な回路が非効率的に使用されてしまう可能性がある。すなわち、提供できる機能が制限されているＤＳＰブロックを有する集積回路では、結果として、回路リソースの使用が非効率になってしまう可能性がある。回路レイアウトの効率性を改善し得るＤＳＰブロックでは、結果として、集積回路の使用が著しく改善される可能性がある。
【課題を解決するための手段】
【００１１】
発明の概要
１つ以上の実施例は、概して、集積回路装置（ＩＣ）に関し、より特定的には、ＩＣのための前置加算器段を備えたデジタル信号処理ブロックに関する。
【００１２】
この発明の一実施例は、概して、デジタル信号処理ブロックを備えた集積回路に関する。デジタル信号処理ブロックは、前置加算器段および制御バスを含む。制御バスは、前置加算器段の動作を動的に制御するように前置加算器段に結合される。前置加算器段は、制御バスに結合された第１のマルチプレクサの第１の入力ポートと、制御バスに結合された第１の論理ゲートの第２の入力ポートと、制御バスに結合された第２の論理ゲートの第３の入力ポートと、制御バスに結合された加算器／減算器の第４の入力ポートとを含む。
【００１３】
この実施例においては、前置加算器段は、第２の入力ポートへの入力に応じて第１の論理ゲートの出力を介して０の値を受取るよう加算器／減算器の第１のデータ入力を動的に設定するよう構成され得る。前置加算器段は、第３の入力ポートへの入力に応じて第２の論理ゲートの出力を介して０の値を受取るよう加算器／減算器の第２のデータ入力を動的に設定するよう構成され得る。前置加算器段は、第１の入力ポートへの入力に応じて０−、１−または２−レジスタ遅延を有する入力データを動的に選択するよう構成され得る。前置加算器段は、第４の入力ポートへの入力に応じて加算または減算するよう加算器／減算器を動的に設定するよう構成され得る。集積回路のこの実施例はさらに、入力データをデジタル信号処理ブロックに与えるためのインスタンス化された回路関数を与えるよう、構成ビットストリームに応じて構成され得るフィールドプログラマブル論理ゲートを含む。
【００１４】
この実施例においては、前置加算器段は、入力データを与えるためのフィールドプログラマブル論理ゲートを再構成する必要なしに、第１の入力ポート、第２の入力ポート、第３の入力ポートおよび第４の入力ポートからなる群のうち少なくとも１つのポートを介して動的に再構成可能であり得る。前置加算器段は、絶対値関数、連続する複素共役関数、連続する乗算関数、連続する虚数乗法、多重化関数、レジスタファイル関数、シフトレジスタ論理関数およびパイプライン・リバランシング関数を与えるよう動的に再構成可能であり得る。
【００１５】
この発明の別の実施例は、概して、デジタル信号処理ブロックの連鎖に結合されたシフトレジスタを含むシストリック有限インパルス応答フィルタに関する。シフトレジスタは、デジタル信号処理ブロックのこの連鎖のうち最後のブロック以外のすべてのブロックの第１のレジスタの各々に対して同報通信入力を同報通信するよう構成され得る。デジタル信号処理ブロックの各々は第２のレジスタを有し得る。デジタル信号処理ブロックの各々は第３のレジスタを有し得る。第２のレジスタの出力は、デジタル信号処理ブロックの各々に対する第３のレジスタの入力に結合されてそのデュアルレジスタを設けることができる。デュアルレジスタは、デジタル信号処理ブロックの連鎖のうち最初のブロックから最後のブロックにまでフィルタ入力列を伝搬させるために直列に結合され得る。デジタル信号処理ブロックの各々は第１の加算器を有し得る。この第１の加算器は、その第１の和を得るために第１のレジスタおよび第３のレジスタの各々から出力を受取るよう結合される。デジタル信号処理ブロックの各々は、それぞれのフィルタ係数を受取るよう結合された第４のレジスタを有し得る。デジタル信号処理ブロックの各々は乗算器を有し得る。この乗算器は、第１の和とそれぞれのフィルタ係数とを受取るよう結合され、その部分結果を与えるよう構成され得る。デジタル信号処理ブロックの各々は、その部分結果を受取るよう結合された第２の加算器を有し得る。デジタル信号処理ブロックの第２の加算器は、デジタル信号処理ブロックの各々の部分結果を蓄積して、デジタル信号処理ブロックの連鎖のうち最後のブロックからフィルタ出力列を与えるよう結合され得る。
【００１６】
この実施例においては、デジタル信号処理ブロックの各々は、その乗算器に与えられる前にその第１の和を受取るよう結合された第５のレジスタを含み得る。デジタル信号処理ブロックの第２の加算器は直列に結合することができ、デジタル信号処理ブロックのうち最初のブロックの第２の加算器は、デジタル信号処理ブロックのうち隣接したブロックの部分結果を追加してその第２の和を与えるために、入力用のその第２の和として得られた部分結果をデジタル信号処理ブロックのうち隣接したブロックの第２の加算器に対してパスすることができる。デジタル信号処理ブロックの各々は、その部分結果を受取るよう結合された第６のレジスタと、その第２の和を受取るよう結合された第７のレジスタとを含み得る。
【００１７】
フィルタのこの実施例はさらに、第１のレジスタおよび第３のレジスタの各々から第１の加算器への出力をゲート制御するためのゲーティングロジックに結合された制御バスを含み得る。第１の加算器入力は、０値を受取って連鎖の有効長を動的に調整するよう動的に構成可能であり得、第１の加算器は、フィールドプログラマブルゲートアレイ構造では実現されない。ゲーティングロジックは、たとえ連鎖に奇数個のデジタル信号処理ブロックが存在していても、偶数個のタップを有するものとしてシストリック有限インパルス応答フィルタを動作させるよう、デジタル信号処理ブロックのうち最後のブロックを動的にゼロにするよう結合することができる。ゲーティングロジックは、たとえ連鎖に偶数個のデジタル信号処理ブロックが存在してもいても、奇数個のタップを有するものとしてシストリック有限インパルス応答フィルタを動作させるよう、デジタル信号処理ブロックのうち最後のブロックを動的にゼロにするよう結合することができる。
【００１８】
しかしながら、この発明の別の実施例は、概してフィルタリングの方法に関するものである。フィルタ入力列が獲得され、それに対する第１の入力としてデジタル信号処理ブロックの連鎖に与えられる。デジタル信号処理ブロックの有効長は、フィルタタップの数を有効に調整するよう動的に変更される。当該方法のこの実施例はさらに、第１の動作モードでデジタル信号処理ブロックのうち最初のブロックを設定するステップと、第１の動作モードとは異なる第２の動作モードでデジタル信号処理ブロックのうち最初のブロック以外のすべてのブロックを設定するステップとを含む。この方法はさらに、フィールドプログラマブル論理ゲートにおけるシフトレジスタをインスタンス化するステップと、フィルタ入力列をシフトレジスタに与えるステップと、それに対する第２の入力としてデジタル信号処理ブロックの連鎖のうち少なくとも最後のブロック以外のすべてに対して、シフトレジスタからの出力を同報通信するステップとを含む。
【００１９】
この方法はさらに、デジタル信号処理ブロックの各々にフィルタ係数を与えるステップと、デジタル信号処理ブロックの連鎖のうち最初のブロックから順に最後のブロックへと第１の入力をシフトさせるステップと、デジタル信号処理ブロックを用いてそれぞれの部分和を求めるステップと、部分和を蓄積してフィルタ出力列を与えるステップとを含む。デジタル信号処理ブロックは、奇数タップの対称的なシストリック有限インパルス応答フィルタとして動作する状態から、偶数タップの対称的なシストリック有限インパルス応答フィルタとして動作する状態に動的に変更させることができる。デジタル信号処理ブロックは、偶数タップの対称的なシストリック有限インパルス応答フィルタとして動作する状態から、奇数タップの対称的なシストリック有限インパルス応答フィルタとして動作する状態に動的に変更させることができる。
【００２０】
本発明の実施例に従うと、集積回路において実現されるように回路内でフィルタを構成する方法が開示される。当該方法は、回路の高水準設計を受取るステップと、フィルタを高水準設計で識別するステップと、フィルタの係数を分析するステップと、高水準設計のフィルタを、共通の係数に対応するよう構成された回路の処理ブロックを用いるフィルタに変換するステップとを含み、処理ブロックは、共通の係数に関連付けられるタップを受取るよう結合される。高水準設計のフィルタを、共通の係数に対応するよう構成された処理ブロックを用いるフィルタに変換するステップは、フィルタを対称的な転置コンボリューションフィルタとして構成するステップを含み得る。係数を分析するステップは、フィルタの対称的な係数を識別するステップを含み得る。当該方法は、共通の係数を第１の入力として処理ブロックの乗算器に与えるステップをさらに含み得る。当該方法は、共通の係数に関連付けられるタップの和を第２の入力として乗算器に与えるステップをさらに含み得る。共通の係数に関連付けられるタップの和を第２の入力として乗算器に結合するステップは、ＤＳＰブロックの前置加算器回路を用いて和を生成するステップを含み得る。当該方法は、共通の係数に関連付けられるタップの差を第２の入力として乗算器に与えるステップをさらに含み得る。
【００２１】
コンピュータプログラムプロダクトがまた、代替的な実施例に従って開示される。コンピュータプログラムコードは、回路設計を配置構成に変換するコンピュータ読取可能プログラムコードを含むコンピュータ読取可能媒体を含み得る。コンピュータ読取可能媒体は、フィルタを高水準設計で識別するコンピュータ読取可能プログラムコードと、フィルタの係数を分析するコンピュータ読取可能プログラムコードと、共通の係数に対応するよう構成された回路の処理ブロックを用いるフィルタを構成するコンピュータ読取可能プログラムコードとを含み、処理ブロックは、共通の係数に関連付けられるタップを受取るよう結合される。
【００２２】
共通の係数に対応するよう構成された処理ブロックを用いるフィルタを構成するコンピュータ読取可能プログラムコードは、対称的な転置コンボリューションフィルタとしてフィルタを構成するコンピュータ読取可能プログラムコードを含み得る。フィルタの係数を分析するコンピュータ読取可能プログラムコードは、フィルタの対称的な係数を識別するコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、共通の係数を第１の入力として処理ブロックの乗算器に与えるコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、共通の係数に関連付けられるタップの和または差を第２の入力として乗算器に与えるコンピュータ読取可能プログラムコードを含み得る。共通の係数に関連付けられるタップの和または差を第２の入力として乗算器に与えるコンピュータ読取可能プログラムコードは、ＤＳＰブロックの前置加算器回路を用いて和を生成するコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、集積回路の回路素子を用いてフィルタを実現するコンピュータ読取可能プログラムコードを含み得る。
【００２３】
さらなる実施例に従うと、集積回路においてフィルタを実現する回路は、複数の遅延素子と、複数の遅延素子のうち第１の遅延素子を介してフィルタの第１のタップ、および複数の遅延素子のうち第２の遅延素子を介してフィルタの第２のタップを受取るよう結合される前置加算器回路とを含み、第１のタップおよび第２のタップは共通の係数を有する。当該回路はさらに、第１の入力における第１のタップと第２のタップとの和および第２の入力における共通の係数を含む前置加算器回路の出力を受取るよう結合された乗算器と、乗算器の出力を受取るよう結合された加算器とを含む。フィルタは転置コンボリューションフィルタを含み得る。共通の係数は、フィルタの対称的な係数に関連付けられてもよい。フィルタのタップの数は偶数のタップを含んでもよい。フィルタのタップの数は奇数のタップを含んでもよく、奇数個のタップのサブセットは前置加算器回路に結合されてもよい。複数の遅延素子、前置加算器回路および乗算器は、集積回路のデジタル信号処理ブロックの一部をなし得る。
【００２４】
図面の簡単な説明
添付の図面は、本発明の１つ以上の局面に従った具体的な実施例を示す。しかしながら、添付の図面は、本発明を図示した実施例に限定するものとみなされるべきではなく、説明および理解のみを目的としたものである。
【図面の簡単な説明】
【００２５】
【図１】本発明の１つ以上の局面が実現され得るカラム状のフィールドプログラマブルゲートアレイ（Field Programmable Gate Array：ＦＰＧＡ）アーキテクチャの具体的な実施例を示す簡略化されたブロック図である。
【図２】ＤＳＰスライスの具体的な実施例を示すブロック／回路図である。
【図３】図２のＤＳＰスライスの前置加算器の具体的な実施例を示す回路図である。
【図４】図２のＤＳＰスライスのデュアルＢレジスタの具体的な実施例を示す回路図である。
【図５】ｉｎｍｏｄｅ関数テーブルの具体的な実施例を示す表図である。
【図６】先行技術の８タップの偶数の対称的なシストリック有限インパルス応答（finite impulse response：ＦＩＲ）フィルタの具体的な実施例を示すブロック／回路図である。
【図７】８タップの偶数の対称的なシストリックＦＩＲフィルタの具体的な実施例を示すブロック／回路図である。
【図８】対称的なシストリック加算−乗算−加算処理処理モジュールを実現するための、０、０、１、０、１、０、１のＯＰＭＯＤＥを備えた、図７のＤＳＰスライスの具体的な実施例を示すブロック／回路図である。
【図９】９タップの奇数の対称的なシストリックＦＩＲフィルタの具体的な実施例を示すブロック／回路図である。
【図１０】９タップの奇数の対称的なシストリックＦＩＲフィルタの具体的な代替実施例を示すブロック／回路図である。
【図１１】ＦＩＲ使用時のフローの具体的な実施例を示すフロー図である。
【図１２】この発明の実施例に従った対称的な転置コンボリューション有限インパルス応答フィルタを実現する回路のブロック図である。
【図１３】この発明の代替的な実施例に従った、対称的な転置コンボリューション有限インパルス応答フィルタを実現する回路を示すブロック図である。
【図１４】この発明の代替的な実施例に従った、対称的な転置コンボリューション有限インパルス応答フィルタを実現する回路を示すブロック図である。
【図１５】この発明の実施例に従った、集積回路においてフィルタを実現する方法を示すフローチャートである。
【図１６】この発明の実施例に従ったプログラマブルロジックを有する装置を実現するためのシステムを示すブロック図である。
【図１７】この発明の実施例に従ったプログラマブルロジックを有する装置を示すブロック図である。
【図１８】この発明の実施例に従った構成可能な論理ブロックの構成可能な論理素子を示すブロック図である。
【発明を実施するための形態】
【００２６】
図面の詳細な説明
以下の説明においては、本発明の具体的な実施例をより十分に説明するために多くの具体的な詳細が述べられる。しかしながら、当業者にとっては、以下に述べるすべての具体的な詳細がなくても本発明が実施可能であることが明らかになるはずである。他の例においては、本発明を不明瞭にすることを避けるために周知の特徴は詳細には記載されていない。例示を容易にするために、異なる図においても同じ参照符号が付いていれば同じ要素を指すものとする。しかしながら、代替的な実施例においては、要素は異なっている可能性がある。
【００２７】
上述のとおり、高度なＦＰＧＡは、いくつかの異なるタイプのプログラマブル論理ブロックをアレイに含み得る。たとえば、図１に示されるＦＰＧＡアーキテクチャ１００が備える多くのさまざまなプログラム可能なタイルは、マルチギガビットトランシーバ（multi-gigabit transceiver：ＭＧＴ）１０１、構成可能な論理ブロック（configurable logic block：ＣＬＢ）１０２、ランダムアクセスメモリブロック（random access memory block：ＢＲＡＭ）１０３、入出力ブロック（input/output block：ｌＯＢ）１０４、構成および計時論理（configuration and clocking logic：ＣＯＮＦＩＧ／ＣＬＯＣＫＳ）１０５、デジタル信号処理ブロック（digital signal processing block：ＤＳＰ）１０６、特化された入出力ブロック（「Ｉ／Ｏ」）１０７（たとえば、構成ポートおよびクロックポート）、ならびに、デジタルクロックマネージャ、アナログ・デジタル変換器、システム監視ロジックなどの他のプログラマブルロジック１０８を含む。いくつかのＦＰＧＡはまた、専用のプロセッサブロック（processor block：ＰＲＯＣ）１１０を含む。
【００２８】
いくつかのＦＰＧＡにおいては、各々のプログラム可能なタイルは、プログラマブル相互接続要素（programmable interconnect element：ＩＮＴ）１１１を含み、これは隣接する各タイルにおける対応する接続要素１１１への、および接続要素１１１からの標準化された接続を有する。したがって、プログラマブル相互接続要素１１１がまとめられると、図示されたＦＰＧＡのためのプログラマブル相互接続構造が実現される。プログラマブル相互接続要素１１１はまた、図１の上部に含まれる例によって示されるように、同じタイル内のプログラマブル論理素子への、またはプログラマブル論理素子からの接続を含む。
【００２９】
たとえば、ＣＬＢ１０２は、単一のプログラマブル相互接続要素（「ＩＮＴ」）１１１を加えたユーザロジックを実現するようプログラム可能な構成可能論理素子（configurable logic element：ＣＬＥ）１１２を含み得る。ＢＲＡＭ１０３は、１つ以上のプログラマブル相互接続要素に加えて、ＢＲＡＭ論理素子（BRAM logic element：ＢＲＬ）１１３を含み得る。典型的には、タイルに含まれる相互接続要素の数は、タイルの高さに依存する。図示された実施例においては、ＢＲＡＭタイルは、５個のＣＬＢと同じ高さを有するが、他の数（たとえば、４）が用いられてもよい。ＤＳＰタイル１０６は、適切な数のプログラマブル相互接続要素１１１に加えて、ＤＳＰ論理素子（ＤＳＰＬ）１１４を含み得る。ＩＯＢ  １０４は、たとえば、プログラマブル相互接続要素１１１の１つのインスタンスに加えて、入出力論理素子（input/output logic element：ＩＯＬ）の２つのインスタンスを含み得る。当業者に明らかになるように、たとえば、Ｉ／Ｏ論理素子１１５に接続される実際のＩ／Ｏパッドは、典型的には、入出力論理素子１１５の領域には限定されない。
【００３０】
図示された実施例においては、（図１に示される）ダイの中央に近いカラム状領域は、構成、クロックおよび他の制御ロジックのために用いられる。このカラムから延在する水平領域１０９は、ＦＰＧＡの幅方向にわたって、クロックおよび構成信号を分配するのに用いられる。
【００３１】
図１に示されるアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大部分を構築する規則的なカラム構造をバラバラにする追加論理ブロックを含む。この追加論理ブロックは、プログラマブルブロックおよび／または専用の論理であり得る。たとえば、プロセッサブロック１１０は、ＣＬＢおよびＢＲＡＭの複数のカラムに及ぶ。
【００３２】
なお、図１は、単に例示的なＦＰＧＡアーキテクチャを図示することを意図しているにすぎない。たとえば、カラムにおける論理ブロックの数、カラムの相対幅、カラムの数および順序、カラムに含まれる論理ブロックの種類、論理ブロックの相対サイズ、ならびに図１の上部に含まれる相互接続／論理インプリメンテーションは、単に例示的なものにすぎない。たとえば、実際のＦＰＧＡにおいては、ＣＬＢが現れるところにはどこでも、典型的には２つ以上の隣接するＣＬＢのカラムが含まれ、ユーザロジックの効率的な実行を容易にするが、隣接するＣＬＢカラムの数はＦＰＧＡの全体的なサイズに応じて変化する。
【００３３】
ＤＳＰ１０６は、ジェイムズ・エム・シムキンズ（James M. Simkins）他による「カスケーディングＤＳＰスライスを備えた集積回路（"Integrated Circuit with Cascading DSP Slices）」と題されその全体が引用によりこの明細書中に援用される米国特許第７，４７２，１５５号にさらに詳細に記載されている。ＤＳＰ１０６の実現例を、カリフォルニア州（California）、サンホセ（San Jose）のザイリンクス社（Xilinx Inc.）から入手可能なＶｉｒｔｅｘＴＭおよびＳｐａｒｔａｎＴＭに見出すことができるだろう。
【００３４】
図２は、ＤＳＰスライス２００の具体的な実施例を示すブロック／回路図である。ＤＳＰスライス２００は、図１のＦＰＧＡ１００のＤＳＰ１０６の具体的な実施例であり得るが、かならずしもそうである必要はない。Ｄ入力信号（「ｉｎｐｕｔ」）２０１、Ａ入力２１１、ＡＣ入力（「ＡＣＩＮ」）３４１および入力モード信号（「ｉｎｍｏｄｅ」）２０２は、前置加算器（「ｐｒｅａｄｄｅｒ」）２０４を備えたデュアルＡ、Ｄレジスタに与えられる。ここで、ｉｎｍｏｄｅ２０２は前置加算器２０４のためのｉｎｍｏｄｅレジスタ２０３に与えられる。Ｂ入力２１２およびＢＣ入力（「ＢＣＩＮ」）４４１はデュアルＢレジスタ２４２に与えられる。ＤＳＰスライス２００のうち、乗算器２５１およびＭレジスタ２５３、さらにはＣレジスタおよび図２中の右側にある他の回路は従来型であり、Ｖｉｒｔｅｘ−５ＴＭのＦＰＧＡにおいて見出すことができるだろう。したがって、明確にするために、以前から知られているこのような回路の説明は省く。さらに、「入力」および「出力」という語句は、信号およびポートのどちらかまたは両方を、複数形を含むが複数形に限定することなく示すのに用いられる。
【００３５】
図３は、前置加算器２０４の具体的な実施例を示す回路図である。以下にさらに詳細に述べるように、前置加算器２０４は、０、１、２または３段のレジスタとして動作するよう動的に構成され得る。
【００３６】
前置加算器２０４は、マルチプレクサ３０１〜３０６、レジスタ３１１〜３１４、論理ゲート３２１および３２２、ならびに加算器／減算器３３１を含む。ビット幅が図３だけでなく図２および図４にも例示的に示されているが、Ｖｉｒｔｅｘ−５ＴＭＦＰＧＡのＤＳＰスライスのビット幅に従って、この明細書中に例示的に示されるもの以外のビット幅もしくはそれと同じビット幅、またはこれらの組合せが使用され得ることが認識されるはずである。
【００３７】
限定ではなく明確にするために図示されていないが、この実施例においては、マルチプレクサ３０１〜３０５に対する制御選択入力がＦＰＧＡ構造の構成メモリセルから与えられる。このような構成メモリセルは構成ビットストリームから構成される。このため、ＦＰＧＡの文脈においては、このようなＦＰＧＡが電源投入サイクルの一部としての状態情報を獲得している場合、それらのメモリセルのプログラム状態により、マルチプレクサ３０１〜３０５のための選択された出力が決定される。このようなメモリセルは、ＦＰＧＡをリセットしなくてはそれらの状態を変更させることができない。言い換えれば、動作中のマルチプレクサ３０１〜３０５の状態は静的になる。ＦＰＧＡ動作中のマルチプレクサ３０１〜３０５の静的な状態とは対照的に、マルチプレクサ３０６は動的に動作可能である。言い換えれば、マルチプレクサ３０６は、このようなＦＰＧＡをリセットする必要なしに、ＦＰＧＡの動作中にその制御選択を変更させてもよい。このような制御選択は、この具体的な実施例においては、ｉｎｍｏｄｅ２０２の一部、すなわちｉｎｍｏｄｅ２０２−０、によって与えられる。ここで、「−０」は、ｉｎｍｏｄｅバスのビット位置０を示すのに用いられる。
【００３８】
さらに、マルチプレクサ３０６の動的動作に加えて、論理ゲート３２１および３２２、さらには減算器３３１も動的に動作させてもよい。このため、このような動的に動作可能な構成要素はユーザ設計の動作中に変更されてもよい。この実施例においては、図３のｉｎｍｏｄｅ２０２−０〜２０２−３だけでなく、図４のｉｎｍｏｄｅ２０２−４も、クロック信号のサイクル毎に変更され得る。限定ではなく例示を明確にする目的で、この明細書中で用いられ得るようなクロック信号方式は図示しない。
【００３９】
ｉｎｍｏｄｅ２０２−０は、Ａ１レジスタ３１１もしくはＡ２レジスタ３１２のいずれかによって遅延されるか、Ａ１レジスタ３１１およびＡ２レジスタ３１２の両方によって遅延されるか、またはＡ１レジスタ３１１およびＡ２レジスタ３１２のどちらにもよっても遅延されないＡ入力２１１またはＡＣ入力３４１を与えるようゲート制御するための動的制御選択信号としてマルチプレクサ３０６に与えられる。また、メモリセル状態によって選択されると、マルチプレクサ３０１〜３０５からの選択された出力はＦＰＧＡをリセットしなくても動作中に静的となる。
【００４０】
Ａ入力２１１またはＡＣ入力３４１はマルチプレクサ３０１から出力され得る。マルチプレクサ３０１からの出力は、データ入力としてＡ１レジスタ３１１に与えられ、データ入力としてマルチプレクサ３０２に与えられる。Ａ１レジスタ３１１の出力は、データ入力としてマルチプレクサ３０２、３０４および３０６に与えられる。マルチプレクサ３０２の出力は、データ入力としてＡ２レジスタ３１２に与えられ、データ入力としてマルチプレクサ３０３に与えられる。マルチプレクサ３０３の出力は、データ入力としてマルチプレクサ３０４および３０６に与えられ、同様に、Ｘ  ＭＵＸ出力３４２として与えられる。図２を参照すると、前置加算器２０４のＸ  ＭＵＸ出力３４２は、ＡＢ連結信号２５０のために図２のデュアルＢレジスタ２４２の出力４４２と組合わされてもよい。
【００４１】
再び図３を参照すると、限定ではなく例示を明確にするために、ユーザがマルチプレクサ３０２および３０３を、それらの最下位入力を出力として選択するよう設定し、そして、ユーザが、ＡＣ入力３４１、すなわち別のＤＳＰスライスからのＡカスケード型入力、をマルチプレクサ３０１の出力として選択したと想定すると、データ入力としてマルチプレクサ３０６に与えられるＡＣ入力３４１が、マルチプレクサ３０６の上位データ入力上でＡ１レジスタ３１１およびＡ２レジスタ３１２によって登録され、さらに、マルチプレクサ３０６の下位入力上で、ＡＣ入力３４１がＡ１レジスタ３１１によって登録される。したがって、ユーザがマルチプレクサ３０６の上位ポートまでのレジスタ段数を選択し得る一方で、マルチプレクサ３０６の下位ポートまでの入力のレジスタ段数が、常にＡ１の段数となることが認識されるべきである。
【００４２】
先に述べたように、前置加算器２０４はデュアルＡレジスタおよびデュアルＤレジスタを含む。これは、たとえば、マルチプレクサ３０６の出力を介して論理ゲート３２２に入力を与えるのにＡ１レジスタおよびＡ２レジスタの両方を用いるか、Ａ１レジスタおよびＡ２レジスタのうちの片方だけを用いるか、または、Ａ１レジスタおよびＡ２レジスタのどちらも用いない可能性があるとしても、Ａ１レジスタ３１１およびＡ２レジスタ３１２が構成可能なデュアルレジスタであることを意味する。さらに、デュアルＤレジスタはＤレジスタ３１３およびＡＤレジスタ３１４に関連している。
【００４３】
また、マルチプレクサ３０１の出力から得られるマルチプレクサ３０６に対する上位入力およびマルチプレクサ３０４に対する下位入力のレジスタ段数が、０段であり得るか、Ａ１もしくはＡ２の１段であり得るか、またはＡ１およびＡ２の２段であり得ることが認識されるべきである。さらに、マルチプレクサ３０６の下位入力だけでなく、マルチプレクサ３０４の上位入力も、常にＡ１の段数である。マルチプレクサ３０４の出力は、図２のＤＳＰスライス２００に与えられているＡＣ入力３４１と同様に、別のＤＳＰスライスに与えられ得る図２のＡＣ出力（「ＡＣＯＵＴ」）信号（「ＡＣ  ｏｕｔｐｕｔ」）３４３である。
【００４４】
マルチプレクサ３０６の上位入力または下位入力のどちらが出力用に選択されるかについては、ｉｎｍｏｄｅ２０２−０の状態によって制御され、マルチプレクサ３０６からの出力がデータ入力として論理ゲート３２２に与えられる。論理ゲート３２１および３２２のためのＡＮＤゲートが例示的に図示されているが、この明細書中の記載に従って他の論理ゲートが用いられ得ることが認識されるべきである。ＡＮＤゲート３２２のもう一方の入力は反転入力であり、ｉｎｍｏｄｅ２０２−１を受取るよう結合される。この実施例の場合、ｉｎｍｏｄｅ２０２−１は、ｉｎｍｏｄｅ２０２のバスのうちのビット位置１を表わす。ＡＮＤゲート３２２の出力は、以下にさらに詳細に記載されるように、入力として加算器／減算器３３１、すなわちＡ経路入力２６１、に与えられ、さらにはマルチプレクサ３０５の上位入力に与えられる。
【００４５】
Ｄ入力２０１はデータ入力としてＤレジスタ３１３に与えられる。Ｄレジスタ３１３のデータ出力はＡＮＤゲート３２１の上位入力に与えられる。ＡＮＤゲート３２１の下位入力は、この実施例の場合にはｉｎｍｏｄｅ２０２のバスのうちビット位置２であるｉｎｍｏｄｅ２０２−２を受取るよう結合される。ＡＮＤゲート３２１の出力は、以下にさらに詳細に記載されるように、別の入力として加算器／減算器３３１、すなわちＤ経路入力２６２、に与えられる。加算器／減算器３３１が加算用または減算用のどちらに構成されているかについては、この実施例の場合にはｉｎｍｏｄｅ２０２のバスのうちビット位置３であるｉｎｍｏｄｅ２０２−３によって制御される。加算器／減算器３３１の出力はＡＤレジスタ３１４のデータ入力ポートに与えられる。ＡＤレジスタ３１４の出力は、別の入力としてマルチプレクサ３０５に与えられる。マルチプレクサ３０５の出力は、乗算器オペランド信号、すなわち（図２に例示的に示される）Ａ乗算器（「Ａ  ＭＵＬＴ」）信号３４４、である。
【００４６】
また、マルチプレクサ３０６、ＡＮＤゲート３２２、ＡＮＤゲート３２１、加算器／減算器３３１が、それぞれ、ｉｎｍｏｄｅ２０２のバスのビット位置０〜３をそれぞれ表わすｉｎｍｏｄｅ２０２−０〜２０２−３によって、動的に動作させる目的で制御されることが認識されるはずである。ｉｎｍｏｄｅ２０２−０および２０２−３は出力または関数を選択するための制御選択信号として用いられており、ｉｎｍｏｄｅ２０２−１および２０２−２は、それぞれ、それらの状態によってＡＮＤゲート３２２および３２１の出力に影響を及ぼすかまたは影響を及ぼさないよう動作する。
【００４７】
ＡＮＤゲート３２１および３２２が動的に制御可能であることに加えて、ＡＮＤゲート３２１および３２２のいずれの出力も、加算器／減算器３３１に入力される０の供給源として用いられ得る。したがって、ＡＮＤゲート３２２が加算器／減算器３３１に０オペランド入力を与える場合、マルチプレクサ３０５の出力として与えられ得るＤ入力２０１の入力が、レジスタ３１３および３１４、すなわち２段のレジスタ経路、を通過し得ることが認識されるべきである。代替的には、０がＡＮＤゲート３２１の出力から得られ、加算器／減算器３３１が用いられる場合、Ａ入力２１１またはＡＣ入力の３４１のどちらかのための３段のレジスタ経路を備える、すなわちＡ１レジスタ３１１、Ａ２レジスタ３１２およびＡＤレジスタ３１４を通る、ことが可能となる。
【００４８】
図４は、図２のＤＳＰスライス２００のデュアルＢレジスタ２４２の具体的な実施例を示す回路図である。Ｂ入力信号（「Ｂ入力」）２１２およびＢＣ入力（「ＢＣＩＮ」）信号（「ＢＣ入力」）４４１は、入力としてマルチプレクサ４０１に与えられる。デュアルＢレジスタ２４２のマルチプレクサ４０１〜４０４は、マルチプレクサ３０１〜３０４のように、動作中には静的である。すなわち、それらの出力は、ＦＰＧＡの構成中に設けられるが、動作中には動的に再構成できない。マルチプレクサ４０５は、マルチプレクサ３０６と同様に、この実施例の場合にはｉｎｍｏｄｅ２０２のバスのうちのビット位置４を表すｉｎｍｏｄｅ２０２−４に応じて、動的に動作可能である。Ｂ１レジスタ４１１およびＢ２レジスタ４１２はＡ１レジスタ３１１およびＡ２レジスタ３１２に対応する。同様に、マルチプレクサ４０１〜４０４は、それぞれ、マルチプレクサ３０１〜３０４に対応する。さらに、マルチプレクサ４０５はマルチプレクサ３０６に対応する。マルチプレクサ４０４からの（図２に例示的に示される）ＢＣ出力（「ＢＣＯＵＴ」）信号（「ＢＣ出力」）４４３はＡＣ出力３４３に相当するが、この実施例の場合、ビット幅がより狭くなっている。
【００４９】
同様に、Ｘマルチプレクサ（「Ｘ  ＭＵＸ」）信号４４２はＸマルチプレクサ信号３４２に対応するが、この実施例の場合も、ビット幅がより狭くなっている。Ｘマルチプレクサ信号３４２および４４２が、Ｘマルチプレクサ２５２に入力されるべき、概して図２のＡＢ信号２５０として示されるように連結されたＡＢであることが認識されるべきである。
【００５０】
マルチプレクサ４０５の出力は、別の乗算器オペランド信号、すなわち（図２に例示的に示される）Ｂ乗算器（「Ｂ  ＭＵＬＴ」）信号４４４であり、Ａ乗算器信号３４４に対応する。Ｂ乗算器信号４４４およびＡ乗算器信号３４４は、この実施例の場合、異なるビット幅を有しているが、両方の出力が入力オペランドとして図２の乗算器２５１に与えられてもよい。デュアルＢレジスタ２４２が、前置加算器２０４のデュアルＡレジスタ部分と同じであるかまたは類似しているので、明瞭にするために説明は繰り返さない。
【００５１】
同時に図２〜図４を参照して、ＤＳＰスライス２００をさらに説明する。Ｉｎｍｏｄｅ２０２は動的制御バスとみなされてもよい。ｉｎｍｏｄｅ２０２に加えて、他のレジスタ制御信号として、クロック信号、クロックイネーブル信号、セット信号またはリセット信号があり得る。これらの信号は、限定ではなく明確にするために、レジスタに入力されるものとしては示されていない。
【００５２】
ＡＢ連結信号２５０はその経路内にＭレジスタ２５３を有していない。このため、ＡとＢとの間の乗算演算は３つのパイプラインレジスタ段を有し、連結されたＡＢ（「Ａ：Ｂ」）およびＣの追加などの加算演算は２つのレジスタ段を有する。しかしながら、Ａ２レジスタ３１２およびＢ２レジスタ４１２を用いることにより、レジスタＡ２  ３１２およびレジスタＢ２  ４１２を用いて、レジスタパイプライン段を設けてもよい。これは、他の場合には、Ｍレジスタ２５３に関連付けられることとなる。言い換えれば、Ｘマルチプレクサ２５２への入力用のパイプライン段の数は、ＤＳＰスライス２００内と同じになるように構成され得る。これは、レジスタミス、すなわち「バブル（bubbles）」、を避けるのに用いることができる。したがって、動作モードを設定することにより、以下にさらに詳細に述べるように、たとえばＡ：Ｂ＋Ｃ演算およびたとえばＡ＊Ｂ＋Ｃ演算はともに、３クロックサイクルで実行され得る。たとえば、Ａ：Ｂ＋Ｃ演算の場合、Ａ１レジスタ３１１〜Ａ２レジスタ３１２〜図２のＰレジスタであり、Ａ＊Ｂ＋Ｃ演算の場合、Ａ１レジスタ３１１〜Ｍレジスタ２５３〜図２のＰレジスタとなる（たとえば、同様に、Ｂ１レジスタ４１１〜Ｍレジスタ２５３〜図２のＰレジスタ）。図２のＣレジスタは、上述の両方の例におけるＡおよびＢよりもレジスタが１つ少ないが、このような差はすべての動作モードで予測可能であり、このため、ＦＰＧＡ構造においては、別のレジスタ段においてＣとして追加することの説明となり得る。これにより、バブルを引起こすことなく、交互のクロックサイクルで乗算演算と加算演算とを動的に交互に行なうことが可能となることが理解されるはずである。
【００５３】
Ａ１レジスタ３１１、およびＡ２レジスタ３１２、さらにはＢ１レジスタ４１１およびＢ２レジスタ４１２を用いてレジスタファイル関数を与えてもよい。ｉｎｍｏｄｅ２０２に動的制御バス関数があるために、このようなレジスタファイルがランダムアクセスレジスタファイルとして動作する可能性がある。代替的には、Ａ１レジスタ３１１およびＡ２レジスタ３１２だけでなく、Ｂ１レジスタ４１１およびＢ２レジスタ４１２も、シフトレジスタ論理（shift register logic：ＳＲＬ）を与えるよう構成され得る。こうして、ランダムアクセスレジスタファイルおよびＳＲＬの両方の二重機能が、ｉｎｍｏｄｅバス２０２を介して動的制御を用いてＤＳＰスライス２００内で与えられる。バスは、たとえば、信号群もしくは信号トレース群、またはこれらの両方を意味し得る。
【００５４】
他の機能としては、前置加算器２０４を２対１マルチプレクサとして使用させることもできる。これは、オペランドのうちの１つを０にすることによりＡＤレジスタ３１４に対する出力用の加算器／減算器３３１を入力間で選択させることによるものである。言い換えれば、ＡＮＤゲート３２２および３２１の出力のうちの一方は、ｉｎｍｏｄｅ２０２−１および２０２−２に応じてそれぞれ強制的に０にされ得る。加えて、Ａ入力経路の出力が負である場合、０がＤ経路に沿ってオペランド入力から加算器／減算器３３１に与えられ得る。このため、加算器／減算器３３１を用いて、加算器／減算器３３１に与えられるＡまたはＡＣオペランドの絶対値を生成することが可能となる。さらに、Ａ１レジスタおよびＡ２レジスタを用いてビットをシフトさせることにより、２の補数反転が実行され得る。
【００５５】
要約すると、ｉｎｍｏｄｅ２０２−０は、非／Ａ１／Ａ２選択信号として用いられる。Ｉｍｏｄｅ２０２−１を用いて、Ａレジスタ経路、すなわちレジスタＡ１およびＡ２（「Ａレジスタ」）に沿った出力をゼロにしてもよい。言い換えれば、出力をゼロにする能力は、リセットを用いたりレジスタ内容を破壊したりすることなく、ＡレジスタとＤレジスタとの間の多重化を容易にする。Ｉｎｍｏｄｅ２０２−１が論理１と等しい場合、加算器／減算器３３１へのＡ経路入力２６１は強制的に０にされる。こうして、前置加算器３３１に対するＤ経路入力２６２が出力用に有効に選択され得る。加えて、ｉｎｍｏｄｅ２０２−１が論理１と等しい場合、マルチプレクサ３０５に対するＡ経路入力２６１を用いて、Ａ乗算器信号３４４を強制的にゼロにしてもよい。しかしながら、Ａ乗算器信号３４４を強制的にゼロにするために、Ｄポート設定、すなわち、制御選択信号をマルチプレクサ３０５に与えるための構成メモリセル設定が、Ｄポートを使用不能にするよう設定される。すなわち「if use_D port = false」である。
【００５６】
Ｉｎｍｏｄｅ２０２−２を用いて、ｉｎｍｏｄｅ２０２−１に関して上述したラインに沿ったＤレジスタ３１３の出力をゼロにし、Ａレジスタ選択済み経路の出力をゼロにしてもよい。こうして、加算器／減算器３３１に対するＤ経路入力２６２が論理０になり、これを用いて、Ａ経路入力２６１とＤ経路入力２６２との間の多重化を容易にし得る。さらに、電力節約のために、ｉｎｍｏｄｅ２０２−１およびｉｎｍｏｄｅ２０２−２を動的なパワーゲーティングに用いてもよい。ｉｎｍｏｄｅ２０２−１が論理１状態であれば、加算器／減算器３３１に対するＡ経路入力２６１が強制的に０にされる。また、ｉｎｍｏｄｅ２０２−２が論理０状態であれば、加算器／減算器３３１に対するＤ経路入力２６２が強制的に０にされる。加算器／減算器３３１に対する両方の入力が論理０であれば、加算器／減算器３３１の演算で消費される電力が少なくなる。というのも、このような条件下では加算器／減算器３３１内にトランジスタスイッチングがないからである。このように、「動的なパワーゲーティング」とは、加算器／減算器３３１の機能が選択されていない場合、加算器／減算器３３１に対する両方の入力が論理０に設定され得ることを意味する。加算器／減算器３３１にオペランド入力として一定の論理値を与えることにより、加算器／減算器３３１は切替わらない。このことは電力を動的に節約するのに用いられてもよい。言い換えれば、加算器／減算器３３１に対するオペランド入力を動的に固定するためにｉｎｍｏｄｅが動的に設定され得るので、加算器／減算器の機能は動的に選択または選択解除することもでき、後者の場合には、動的な電力節約が実現され得る。
【００５７】
Ｉｎｍｏｄｅ２０２−３を用いて、加算器／減算器３３１により、Ａ入力経路２６１のＡオペランドをＤ入力経路２６２のＤオペランドに加えるかまたはＤ入力経路２６２のＤオペランドから減じてもよい。また、Ａ入力経路２６１上のＡオペランドの動的な反転を絶対値関数として用いてもよい。言い換えれば、たとえばＡ１またはＡ２に保持されるレジスタ値は、上述したようにＤオペランド入力２６２を強制的に０にさせることによって動的に反転させもよい。
【００５８】
Ｉｎｍｏｄｅ２０２−４は、ｉｎｍｏｄｅ２０２−０がＡ１／Ａ２レジスタ選択信号として用いられ得るのと同じようにＢ１／Ｂ２レジスタ選択信号として用いられてもよい。したがって、カリフォルニア州、サンホセにあるザイリンクス社から入手可能なＳｐａｒｔａｎＴＭＦＰＧＡ  ＤＳＰ  ４８Ａにおいてなされたのと同様に単に前置加算器をＤＳＰに追加する場合よりもＤＳＰスライス２００の機能がはるかに優れていることが認識されるはずである。
【００５９】
さらに、（Ａ＋ａｉ）＊（Ｂ＋ｂｉ）＝（ＡＢ−ａｂ）＋（Ａｂ＋ａＢ）ｉなどの虚数乗法演算が実行され得ることが認識されるはずである。Ａおよびａは、それぞれのレジスタに与えられる別個のクロックイネーブル信号を用いることによって、そして、ｉｎｍｏｄｅ２０２−０に応じてマルチプレクサ３０６からこのような２つのオペランドのうち１つのオペランドを選択的に出力することによって、Ａ２レジスタ３１２およびＡ１レジスタ３１１にそれぞれ入力される別個のオペランドであり得る。同様に、Ｂおよびｂは、それぞれのレジスタに与えられる別個のクロックイネーブル信号を用いることによって、そして、ｉｎｍｏｄｅ２０２−４に応じてマルチプレクサ４０５からこのような２つのオペランドのうち１つのオペランドを選択的に出力することによって、Ｂ２レジスタ４１２およびＢ１レジスタ４１１にそれぞれ入力される別個のオペランドであり得る。オペランドＡ、Ｂ、ａおよびｂは、ＢＲＡＭに局所的に記憶され得る。オペランドが再使用されるので、ＢＲＡＭは、ＤＳＰスライス２００によって２クロックサイクルおきのバーストにおいてのみアクセスされ、例示的な虚数乗法演算のために一度だけ読取られ得る。というのも、Ａ１、Ａ２、Ｂ１およびＢ２のそれぞれのレジスタを用いて、このようなオペランドの実数部および虚数部を局所的に記憶し得るからである。虚数乗法の例が用いられたとしても、たとえば（Ａ：ａ）＊（Ｂ：ｂ）などの連続的な乗算を実行するために同じことが述べられる可能性があることが理解されるはずである。限定ではなく例示を明確にするために、（Ａ：ａ）＊（Ｂ：ｂ）について４２ビット＊３４ビットであると仮定すると、Ａ＊Ｂ＋ｓｈ１７（Ａ＊０ｂ＋Ｂ＊００００００００ａ＋ｓｈ１７（０ｂ＊００００００００ａ）によって結果が得られる可能性がある。この場合、「ｓｈ１７」は１７ビットシフトを示す。
【００６０】
図５は、ｉｎｍｏｄｅ関数表５００の具体的な実施例を示す表図である。表５００の最初の５つのカラムは、ｉｎｍｏｄｅ２０２−４から２０２−０にそれぞれ対応するｉｎｍｏｄｅビット４〜０の起こり得る論理状態をそれぞれ示す。Ｉｎｍｏｄｅ２０２−４はＢ２／Ｂ１レジスタ選択信号であり、このため、論理０がｉｎｍｏｄｅ２０２−４の状態である場合、レジスタＢ２の内容は乗算器Ｂポート４４４入力として与えられてもよく、ｉｎｍｏｄｅ２０２−４が論理状態１である場合、乗算器Ｂポート４４４入力はＢ１レジスタ４１１の内容となる。したがって、表５００の第１のカラムの論理０および論理１は、それぞれ、表５００の最後のカラムのＢ２およびＢ１に対応する。
【００６１】
表５００の第６のカラムは、（図３に例示的に示される）制御選択信号５０１として概して示される、図３のマルチプレクサ３０５の選択制御を制御するのに用いられるメモリセルのプログラミング状態を示す。このため、制御選択信号５０１は、Ｄポート、すなわちＤ入力２０１、が使用中であるかどうかを示す。表５００の最初の４つの行に示されるように、偽値は前置加算器２０４のＤポートが使用されていないことを示す。カラム５０１における残りの行は、前置加算器２０４のＤポートが使用中であることを意味する制御信号５０１についての真値を示す。
【００６２】
表５００の第７のカラムは、乗算器Ａポート３４４上のオペランド入力を示す。例示的に図示された起こり得るオペランド入力はＤレジスタのためのＡ１またはＡ２に保持された値である。加えて、先に述べたように、論理０はＡ乗算器出力３４４として与えられてもよい。さらに、ＡＤレジスタ３１４に記憶されたＤ＋Ａ２、Ｄ＋Ａ１、Ｄ−Ａ２またはＤ−Ａ１のオペランド値を加えることによって得られる値は、Ａ乗算器出力３４４として与えられてもよい。符号Ａ１／Ａ２およびＢ１／Ｂ２は、それぞれ、１段および２段のレジスタを記述するのに用いられる。加算器／減算器３３１に対するＡ入力オペランドがオフにゲート制御される場合、レジスタＤ３１３およびレジスタＡＤ３１４は、組合されると、Ｄポート２０１のための２段のレジストレーションのように現われる。このように、符号Ｄ１／Ｄ２は、それぞれ、１段および２段のレジストレーション用のＤ／ＡＤレジスタを指す。
【００６３】
ＳｐａｒｔａｎＴＭＦＰＧＡにおいては、前置加算器が入力レジスタと出力レジスタとの間に位置決めされ、ここで出力レジスタが乗数を供給する。しかしながら、この構成はシストリックフィルタを実現するのに用いることができない。以下の説明においては、シストリックフィルタを実現するためのＤＳＰスライス２００を説明する。
【００６４】
前置加算器２０４およびデュアルＢレジスタ２４２が追加されたＤＳＰスライス２００が、連続した虚数乗法、連続した乗算および連続した複素共役演算をサポートできることが理解されるはずである。加えて、Ａ２レジスタおよびＢ２レジスタをＭレジスタ２５３に対して本質的に仮想レジスタとすることによりＡＢ連結経路とＡＢ乗算経路とのバランスをとる能力は、３段パイプラインで乗算演算と加算演算とを動的に切替えることを可能にする。さらに、２つの深い入力レジスタのいずれかに書込むかまたは２つの深い入力レジスタのいずれかから読取るためにＡ１、Ａ２、Ｂ１、Ｂ２のレジスタに動的にアクセスする能力は、上述のように、ｉｎｍｏｄｅ２０２によって促進される。さらに、どちらかの前置加算器入力ポートに０を入力させる融通性があることにより、マルチチャンネルフィルタが簡易化される。
【００６５】
３セットのフィルタ係数は、Ａ１レジスタ３１１、Ａ２レジスタ３１２およびＤレジスタ３１３を使用するなどして、局所的に記憶されてもよく、対称的な演算から非対称的な演算に動的に、すなわちクロックサイクルごとに、切替えることができる。加えて、加算および減算関数が不要であれば、加算器／減算器３３１を用いるＡＤ多重化能力が動的な演算のためにサポートされることが認識されるべきである。３セットのフィルタ係数が局所的に記憶される場合、前置加算器の対称性は用いられていない。生データは、Ａ入力ポート２１１および／またはＡカスケード入力ポート３４１ではなく、Ｂ入力ポート２１２および／またはＢカスケード入力ポート４４１を介して与えられており、フィルタ係数は、加算器／減算器３３１を用いて多重化機能を与えることによって選択され得る。このように、非対称的なフィルタは３セットのフィルタ係数で実現可能となる。
【００６６】
図６は、先行技術の８タップの偶数の対称的なシストリック有限インパルス応答（「ＦＩＲ」）フィルタ６００の具体的な実施例を示すブロック／回路図である。ＦＩＲフィルタ６００は、動作モード（「ＯＰＭＯＤＥ」）でプログラムされたＤＳＰブロック１０６で構成される。したがって、ＤＳＰブロック１０６−１〜１０６−４は、結果として得られるカスケードされた出力、すなわち「Ｐ」カスケード６０３、を与えるためにカスケードされた出力を有する先行技術のＤＳＰを表す。これまで、シフトレジスタ論理（shift-register logic：ＳＲＬ）６０４は、ＦＰＧＡ構造６０２においてレジスタで形成されてきており、このため、性能に対して抑制する作用を果たしていた。加えて、前置加算器段６０５および入力レジスタ段６０６はＦＰＧＡ構造６０２において予め形成されていた。
【００６７】
図７は、ＤＳＰスライス２００−１〜２００−４を有する８タップの偶数の対称的なシストリックＦＩＲフィルタ７００の具体的な実施例を示すブロック／回路図である。ＤＳＰスライス２００−１〜２００−４の各々は図２のＤＳＰスライス２００であり得る。図２〜図４を再び参照し、かつ図７を引き続き参照して、ＦＩＲフィルタ７００をさらに説明する。８タップフィルタを例示的に示しているが、８よりも少ないかまたは多いタップが実現され得るため、４つよりも少ないかまたは多いＤＳＰスライス２００が実現され得ることが認識されるはずである。ＤＳＰスライス２００−１は０、０、０、０、１、０、１のＯＰＭＯＤＥに対して設定され、ＤＳＰスライス２００−２〜２００−４は各々、ＯＰＭＯＤＥ  ０、０、１、０、１、０、１で設定される。これらのＯＰＭＯＤＥは、図６のＦＩＲフィルタ６００の場合には同じであり、予め公知であるので、この明細書中には不必要に詳細には記載されない。
【００６８】
ＦＩＲフィルタ７００が図６のＦＩＲフィルタ６００とは異なる設計であったとしても、ＦＩＲフィルタ６００のレジスタ６０６が前置加算器６０５の入力へと推し進められる場合、図２のＡ入力ポート２１１またはＦＩＲフィルタ７００のフィルタ入力ｘ（ｎ）７０１などの、前置加算器３３１に対するＡ入力は、２つのタップ付き遅延線値を整合させる２つのパイプライン型遅延段を備える。したがって、ＳＲＬ６０４などのレジスタ遅延線からのタップオフや、リバランシングのためのＡポートレジスタ６０６への接続とは対照的に、このようなタッピングは、ＦＩＲフィルタ７００で例示的に示されるように回避され得る。前置加算器６０５のＡ入力に対するレジスタ６０６のミラーリングも回避され得る。言い換えれば、このようなミラーリングは用いられない。というのも、２段のＡレジスタ出力、すなわちＡレジスタ３１１および３１２、を用いて、たとえば、ミラーリングされた経路を介して予め与えられたのと同じ生データを提供することもでき、このため、このようなミラーリングされた経路が排除され得るからである。このように、前置加算器６０５のＤ入力側のレジスタ６０６に対するミラーレジスタは、実質上、ＦＩＲフィルタ７００におけるＤレジスタ３１３と置換えられる。１０６−１における第１のレジスタは、こうして、前置加算器出力レジスタ、すなわち、ＤＳＰスライス２００−１におけるＡＤレジスタ３１４となる。ＦＩＲフィルタ６００の前置加算器Ａ入力上における余剰のレジスタをなくすことに加えて、ＦＩＲフィルタ７００においては、ＦＩＲフィルタ６００とは対照的に、Ａ１レジスタ入力およびＡ２レジスタ入力の両方を同時にタップオフする必要がなくなる。
【００６９】
しかしながら、ＦＩＲフィルタ６００とは対照的に、ＦＩＲフィルタ７００の場合、入力レジスタ段６０６が前置加算器段６０５の入力にまで動かされ、前置加算器段６０５が入力レジスタ６０６とともにＤＳＰにおいて実現されてもよく、ＦＰＧＡ構造６０２においてはＳＲＬ６０４だけが実現される。ＳＲＬ６０４は、たとえば８つのレジスタ段を備えたＳＲＬ１６である。ＳＲＬ６０４に対する入力はフィルタ入力ｘ（ｎ）７０１であり、ＳＲＬ６０４からの出力は、ＤＳＰスライス２００−１〜２００−４のＤレジスタ３１３の各々に並列に与えられる、すなわち同報通信される。
【００７０】
フィルタ入力ｘ（ｎ）７０１がまた、ＤＳＰスライス２００−１〜２００−４の連鎖のうち最初のレジスタに与えられる。ＦＩＲフィルタ７００に対する入力は、このようなＦＩＲフィルタ７００が実現されるＦＰＧＡに対してオンチップまたはオフチップで得られてもよい。フィルタ入力７０１は、ＤＳＰスライス２００−１のＡ１レジスタ３１１およびＡ２レジスタ３１２に与えられ、さらに、シフトレジスタの形式で、すなわち連続して入力するように、他のＤＳＰスライスの各々のＡ１レジスタおよびＡ２レジスタに与えられる。この実施例においては、ＤＳＰスライス２００−１〜２００−４のＡ１レジスタ３１１およびＡ２レジスタ３１２は、組合わされると、ＳＲＬ６０４が有するのと同じレジスタ段の数および遅延を有することとなる。
【００７１】
ＳＲＬ６０４に対するフィルタ入力７０１は、ＤＳＰスライス２００−１〜２００−４に対して同報通信される前はＤ入力２０１である。この実施例においては、Ｄ入力２０１は、ＤＳＰスライス２００−１〜２００−４の各々に同報通信されるので、ＦＰＧＡ構造において実現される。フィルタ入力７０１はまた、ＤＳＰスライス２００−１、すなわち第１段のＤＳＰスライス、への入力Ａ２１１として与えられる。しかしながら、ＤＳＰスライス２００−２〜２００−４に対する入力の場合、このような入力は、カスケードにおける次の段に対するＡＣ入力３４１として与えられるＡＣ出力３４３となる。
【００７２】
４つの係数ｈ０からｈ３は、それぞれ、Ｂ入力ポート、すなわち、ＤＳＰスライス２００−１〜２００−４のＢ入力２１２、に与えられる。この実施例においては、係数ｈ０からｈ３、すなわち係数７０３は、それぞれ、ＤＳＰスライス２００−１〜２００−４の各々のＢ入力ポート２１２に与えられる。このため、係数はカスケードされない。言い換えれば、ＢＣ入力４４１およびＢＣ出力４４３はこの実施例においては用いられない。係数７０３はＢ１レジスタ４１１またはＢ２レジスタ４１２のいずれかに入力され得る。限定ではなく例示を明確にするために、Ｂ１レジスタ４１１が用いられると想定する。しかしながら、Ｂ１レジスタ４１１の代わりにＢ２レジスタ４１２が用いられてもよく、または、Ｂ１レジスタとＢ２レジスタとの組合わせが用いられてもよいことが認識されるべきである。
【００７３】
ＰＣ出力８０２は、ＤＳＰスライスの各々の間においてＰＣ入力８０１でカスケードされる。ＤＳＰスライス２００−４のＰＣ出力により、結果としてフィルタ出力ｙ（ｎ−８）７１０が得られる。二重タップ遅延７１１は、タイミング調整を行なうためにＳＲＬ６０４に入力される。
【００７４】
ＤＳＰスライス２００がモジュール式構成要素としてＶＨＤＬを用いてモデル化され得ることが認識されるべきである。図８は、ＤＳＰスライス２００−２の具体的な実施例を示すブロック／回路図である。ＤＳＰスライス２００−２は、対称的なシストリック加算−乗算−加算処理モジュールを実現するためのこの実施例について先に述べたような０、０、１、０、１、０、１のＯＰＭＯＤＥを有し得る。
【００７５】
また、ＡＣ入力３４１は、Ａ１レジスタ３１１およびＡ２レジスタ３１２に連続して与えられる。Ｄ入力２０１は各々、Ｄレジスタ３１３に与えられ、それらのレジスタの出力は加算モードで加算器／減算器３３１に与えられる。
【００７６】
また、レジスタ３１２の出力は、ＡＣ出力３４３として下流のＤＳＰスライス２００−３に、すなわち、このような下流のＤＳＰスライス２００−３のＡＣ入力３４１に連続して与えられる。同様に、ＡＣ入力３４１は、上流のＤＳＰスライス２００−１のＡＣ出力３４３から得られる。
【００７７】
Ｂ入力２１２は各々、Ｂ１レジスタ４１１などのＢレジスタに対する係数を受取る。加算器／減算器３３１の出力がＡＤレジスタ３１４に与えられ、レジスタ４１１および３１４の出力が乗算器２５１に与えられる。
【００７８】
乗算器２５１の出力がＭレジスタ２５３に与えられる。Ｍレジスタ２５３の出力は、加算器と、さらには後続の出力レジスタ段とに与えられる。このことは、先行技術においてなされており、明確にするために不必要に詳細には説明されない。さらに、先行技術において実行されているので、明確にするために不必要に詳細には説明されないが、上流のＤＳＰスライス２００−１のＰＣ入力８０２から獲得され得るＰＣ入力８０１がこのような加算器に入力されてレジスタ２５３の出力と合計され、このような加算の結果が出力レジスタに与えられて、下流のＤＳＰスライス２００−３にＰＣ出力８０２が与えられる。
【００７９】
図９は、９タップの奇数の対称的なシストリックＦＩＲフィルタ９００の具体的な実施例を示すブロック／回路図である。ＦＩＲフィルタ９００が図７のＦＩＲフィルタ７００と同様であるので、明瞭にするためにその違いだけを記載する。ＳＲＬ９０４は、先に記載したようにＤ入力２０１を同報通信するための９段のシフトレジスタである。付加的なＤＳＰスライス、すなわち、ＤＳＰスライス２００−５が、出力ｙ（ｎ−９）９１０を生成するために最終ステージとして追加される。加えて、係数９０３の付加的な係数ｈ４が入力としてＤＳＰスライス２００−５のＢレジスタ４１１に与えられる。ＤＳＰスライス２００−５は、ＤＳＰスライス２００−２〜２００−４と同じＯＰＭＯＤＥを有する。
【００８０】
Ｄ入力２０１がＤＳＰスライス２００−５のレジスタ３１３にシフトされる可能性があるが、ＤＳＰスライス２００−５はＤポートを使用不能にするように構成されるか、または、ＤＳＰスライス２００−５の加算モードで、Ｄ入力経路２６２を介して加算器／減算器３３１に０が入力される。したがって、動的な構成を用いて、ＦＩＲフィルタ９００などのＦＩＲフィルタの最終段におけるＤＳＰスライス２００−５などの奇数スライスを、タップフィルタの奇数として演算する目的で動的に変更させ得ることが認識されるはずである。同様に、Ａ入力経路２６１は、レジスタ３１１および３１２中の内容がＤＳＰスライス２００−５の加算器／減算器３３１において現われないように動的に変更されてもよいが、むしろ、論理０が算器／減算器３３１の両方の入力ポートに与えられる。
【００８１】
言い換えれば、ｉｎｍｏｄｅ２０２−１および２０２−２を適切に設定することにより、加算器／減算器３３１への両方の入力が０になり得る。加えて、偶数のフィルタの場合、ｈ４９０３などの奇数の係数が存在し得ず、このため、いずれかの未使用のタップ用の係数入力も論理１または論理０になる可能性がある。このように、レジスタ２５３からの出力は論理０であってもよく、この論理０は最終段の加算器に与えられて、実質上、余剰なパイプライン遅延のある状態で図７のｙ（ｎ−８）７１０である出力を与え得る。結果として得られるフィルタは、図９のｙ（ｎ−９）９１０の出力待ち時間を有する８タップフィルタである。このように、先に記載されたｉｎｍｏｄｅ２０２−１および２０２−２を用い、奇数のＤＳＰスライスを有することにより、このようなＤＳＰフィルタが奇数または偶数の対称的なシストリックＦＩＲフィルタリングを行なうよう動的に調整可能になり得ることが認識されるはずである。ＳＲＬ１６はさまざまなフィルタ長に対応するよう動的に調整され得る。したがって、９タップフィルタをｙ（ｎ−９）９１０の出力を有する８タップフィルタに変換する従来の例の場合、ＳＲＬ１６はｚ−８となる。
【００８２】
加えて、この実施例においては、演算時、またはＦＩＲフィルタへのデータのシフト時にタイムラグがあり、このため、動的な調整だけでなく、あるシーケンスのＦＩＲ演算から別のシーケンスのＦＩＲ演算までのデータも同様に、シャドウ化される可能性がある。言い換えれば、奇数のＦＩＲ演算などの１つのＦＩＲ演算の完了を待つことなく、先行するＦＩＲ演算シーケンスを完了させるようＦＩＲフィルタを動作させつつ、後続のＦＩＲ演算用のデータおよびパラメータがＦＩＲフィルタにシャドウ化され得る。奇数のＦＩＲシーケンスの演算から偶数のＦＩＲシーケンスの演算についても同様である。
【００８３】
図１０は、図９のＦＩＲフィルタ９００の代替例である９タップの奇数の対称的なシストリックＦＩＲフィルタ１０００の具体的な実施例を示すブロック／回路図である。この実施例においては、奇数演算の場合、加算器／減算器３３１は、実際には、Ｄ入力経路２６２から０を入力させていない。このため、実質上、この実施例ではＤＳＰスライス２００−５である最終のＤＳＰスライスが、それ自体に数を追加して、実質上、数を２倍にする。したがって、係数１００３は０．５ｈ４となる。これは、実質上、このようなスライスの加算器／減算器３３１による加算の影響を無効にするために、ＤＳＰスライス２００−５において、２ｘ（ｎ）に０．５ｈ４を掛けることを意味する。この実施例においては、係数１００３の精度がいくらか失われる可能性がある。しかしながら、この実施例は、ｉｎｍｏｄｅ２０２−２を介して動的にＤ入力２０１を調整する必要なしに、ＤＳＰスライスのタイリングを可能にする。
【００８４】
図９および図１０の実施例のいずれにおいても、最後のＤＳＰスライスにより、実質上、奇数の対称的なシストリックＦＩＲフィルタリングのための前置加算器演算が回避される。最後のタップでは、さまざまな処理が用いられるかまたはオペランド入力として論理０が強制される。
【００８５】
したがって、この実施例においては、複数段のＦＩＲフィルタが実現され得る。このようなＦＩＲフィルタは、適用例に応じて可能な限り長いＦＩＲを使用できるように実現され得る。このようなＦＩＲフィルタは、たとえば時分割多重化の応用例において用いられてもよく、この場合、さまざまな長さのＦＩＲフィルタが、プログラマブルロジックを再構成することなく動的に設定される。言い換えれば、Ｄ入力２０１を同報通信するためのシフトレジスタは、ユーザアプリケーションの最長のＦＩＲフィルタ用に設定され得るが、ＳＲＬ遅延は、フィルタ内のタップの数と一致するよう動的に変更される。
【００８６】
ｉｎｍｏｄｅを用いて動的に設定するための奇数のＦＩＲフィルタのうち最後のＤＳＰスライスしか説明していないが、ＦＩＲの端部におけるいくつかのＤＳＰスライスがそのようなものとして動的に設定され得ることが認識されるはずである。したがって、上述の９タップＦＩＲフィルタにおいては、このようなＦＩＲフィルタは、９タップから１タップにまで、または、実質上タップなしでバイパスモードで、シフトレジスタを実現するのに用いられるプログラマブルロジックを再構成することなく、動的に調整され得る。より一般的には、フィルタ入力列ｘ（ｎ）は、フィルタ出力列ｙ（ｎ−ｐ）を与えるためにＦＩＲフィルタを形成する一連のＤＳＰへの入力用に結合され得る。この場合、ｐはタップの有効数の整数であり、動的に調整可能である。
【００８７】
概して一定の係数を説明してきたが、このような係数が応用例ごとに異なり得ることが認識されるべきである。また、２段のレジスタバッファリングが用いられるので、或る１つのＦＩＲ段数から次のＦＩＲ段数への情報のシャドウ化が用いられてもよい。この場合、転送は各々の段毎に互い違いにずらされる。
【００８８】
図１１は、ＦＩＲ使用時のフロー１１００の具体的な実施例を示すフロー図である。１１０１においては、使用されるすべての応用例のうち最長の段数を有するＦＩＲフィルタが実現される。１１０２においては、当時で最新の応用例に用いられるいくつかの段が得られる。１１０３においては、ＦＩＲフィルタが、正確な長さになっていなければ、１１０２において見出されるような使用される数の段に対応できるよう動的に調整される。１１０４においては、別のＦＩＲシーケンスを実行すべきかどうかが判断される。他のいずれのＦＩＲシーケンスも実行すべきでなければ、フロー１１００は１１９９で終了し得る。１１０４において判断されたように、別のＦＩＲシーケンスを実行すべきであれば、他のこのようなＦＩＲシーケンスのための入力が１１０５において獲得され、シャドウ化され得る。１１０３においてＦＩＲフィルタを（必要であれば）動的に調整するために、使用する段の数が１１０２において決定されてもよい。
【００８９】
したがって、連鎖中に奇数個のＤＳＰブロックがあったとしても、このようなフィルタを偶数個のタップを有するものとして動作させるために、末尾の１つ以上のＤＳＰブロックを動的に初期化するよう、ゲーティングロジックによりこのようなフィルタがゲート制御され得ることが認識されるべきである。さらに、このようなゲーティングロジックは、連鎖中に偶数個のＤＳＰブロックがあったとしても、このようなフィルタを奇数個のタップを有するものとして動作させるために、末尾の１つ以上のＤＳＰブロックを動的に初期化するのに用いられてもよい。
【００９０】
図１２を参照すると、この発明の代替的な実施例に従った、対称的な転置コンボリューション有限インパルス応答フィルタ（ＦＩＲ）を実現する回路のブロック図が示される。図１２の実施例が示すＤＳＰブロックの構成はＤＳＰスライス２００を含み得る。このＤＳＰスライス２００は、ＤＳＰブロックの前置加算器を用い、レジスタを有する対称的な転置コンボリューションＦＩＲフィルタが、単一のＤＳＰブロックにおける共通の係数が乗じられる共通の係数を有するタップに必要な遅延を与えることを可能にするように構成され得る。レジスタを含む遅延の選択は、実現されるフィルタの機能に依存することとなり、この場合、図１２〜図１４のＤＳＰブロックにおける適切な遅延は、上述の図３の回路または他の好適な回路を用いて実現され得る。ＤＳＰブロックは、同じ要素を含むことが好ましいが、異なる態様に構成することもできる。一例として、図１に関して上述されたプログラマブル相互接続部などのプログラマブル相互接続部は、図示されるような遅延を接続するのに用いられてもよく、または、構成ビットは、図３を参照して記載されるようなマルチプレクサを選択するのに用いられてもよい。
【００９１】
図１２〜図１４の実施例は、奇数個のタップを有する対称的な転置コンボリューションＦＩＲフィルタに関連しているため、ＤＳＰ段のうちの１つがタップを１つしか受取らず、他のＤＳＰ段が共通の係数を有する複数のタップを受取ることとなる。図１２〜図１４において構成されるように、ＤＳＰブロックの配置および構成により、対称的な転置コンボリューションＦＩＲフィルタが、方程式ｙ（ｎ−４）＝ｋ０＊ｘ（ｎ−４）＋ｋ１＊ｘ（ｎ−５）＋ｋ２＊ｘ（ｎ−６）＋ｋ１＊ｘ（ｎ−７）＋ｋ０＊ｘ（ｎ−８）に従って実現可能となる。これは、因数分解された形式で書くと、ｋ０｛ｘ（ｎ−４）＋ｘ（ｎ−８）｝＋ｋ１｛ｘ（ｎ−５）＋ｘ（ｎ−７）｝＋ｋ２＊ｘ（ｎ−６）であり、または、図１２および図１３に示されるような乗算器への入力のタイムフレームで表すと、因数分解された形式では、ｙ（ｎ−２）＝ｋ０｛ｘ（ｎ−２）＋ｘ（ｎ−６）｝＋ｋ１｛ｘ（ｎ−３）＋ｘ（ｎ−５）｝＋ｋ２＊ｘ（ｎ−４）として表される。各フィルタタップの生データインデックスはｙ（ｎ−４）の内積計算の結果として示される。このように、乗算器１２１０に入力された最も右側のタップｘ（ｎ−２）がｘ（ｎ）と合致し、他方のフィルタが、時間内での異なるスナップショットにおける生データを示す。ｚ−１が１つの遅延を表し、ｚ−２が２つの遅延を表わしている遅延は、図３において上述されたＡｃａｓｃａｄｅパイプライン遅延（３１１および３１２）に従って実現され得る。たとえば、加算器１２０６は図６の加算器／減算器３３１によって実現されてもよく、この場合、加算器／減算器３３１への入力信号の有する選択された遅延値は、上に述べたような図３のマルチプレクサへの選択入力に基づいている。
【００９２】
構成１２００を示す図１２の実施例においては、第１の段２００−１が、第１のレジスタ１２０２に結合されるｘ（ｎ）信号を含む入力１２０１を受取る。図１３を参照して以下により詳細に記載するように、第２のレジスタ１２０４が用いられてもよい。レジスタ１２０２の出力および０を受取るよう結合されたＤＳＰ段２００−１における加算器１２０６が示されているが、加算器１２０６は、図１３の構成１３００におけるＤＳＰ段２００−２および２００−３ならびにＤＳＰ段２００−１に図示されるように、レジスタ１２０２および１２０４の出力を受取るよう結合され得る。なお、加算器１２０６が反転符号を有する係数を処理するために減算器としても実現され得ることに留意されたい。レジスタ１２０８は加算器１２０６の出力に結合され、乗算器１２１０に結合される出力を有する。乗算器１２１０はまた、レジスタ１２１２からの係数を含む因数を受取る。乗算器１２１０の出力におけるレジスタ１２１４も加算器１２１６に結合され、その出力がレジスタ１２１８に記憶される。加算器９１６への入力が第１の段２００−１において０である間に、加算器１２１６が、ＤＳＰブロック２００−２および２００−３に関して図示したような先行の段の出力を受取り得る。信号ｙ（ｎ−４）を含む出力１２２０は、ＤＳＰ段２００−３のレジスタ１２１８において生成される。
【００９３】
第１の段が奇数個のタップのうち中間のタップを含んでおり、このため、単一のタップしか加算器１２０６に結合しないことに留意されたい。しかしながら、第２の段および第３の段の各々は、共通の係数を有する２つのタップを受取る。図１２の実施例に従うと、第２のＤＳＰ段２００−２は、（ｘ（ｎ−５）＋ｘ（ｎ−３））を共通の係数ｋ１を受取る乗算器１２１０の一方の入力に結合し、第３のＤＳＰ段２００−３は、（ｘ（ｎ−６）＋ｘ（ｎ−２））を共通の係数ｋ０を受取る乗算器１２１０の一方の入力に結合する。加算器１２０６または乗算器１２１０に関連付けられる遅延の数は、加算器１２０６または乗算器１２１０において正確な入力が受取られることを確実にするよう選択される。たとえば、図３のマルチプレクサに適切なマルチプレクサ選択信号を与えることによって正確な数の遅延が選択され得る。図１３に図示のとおり、ＤＳＰ段２００−１はレジスタ１２０４を実現するよう構成され得る。この場合、２ｘ（ｎ−４）が乗算器１２１０の一方の入力に与えられ、ｋ２／２が他方の入力に与えられる。図１２および図１３の実施例は、対称的な転置コンボリューションＦＩＲフィルタのー例を示しており、他の方程式によって表わされるフィルタが実現され得ることが理解されるべきである。さらに、図１２および図１３の実施例を用いることにより、入力が共通の係数を有し得る如何なる機能をも実現することができ、共通の係数を有する因数がいくつも実現され得る。
【００９４】
なお、タップの最初の数が偶数であるか奇数であるかにかかわらず、この発明の１つ以上の回路が機能することに留意されたい。図１４の構成１４００に図示のとおり、奇数のタップを有するフィルタ関数が実現される。特に、対称的な転置コンボリューション有限インパルス応答フィルタを実現する回路のブロック図は、方程式ｙ（ｎ−４）＝ｋ０＊ｘ（ｎ−４）＋ｋ１＊ｘ（ｎ−５）＋ｋ２＊ｘ（ｎ−６）＋ｋ２＊ｘ（ｎ−７）＋ｋ１＊ｘ（ｎ−８）＋ｋ０＊ｘ（ｎ−９）に従って、３つのＤＳＰブロックにおいて実現される６タップを示す。この方程式は、因数分解された形式で書くと、ｙ（ｎ−４）＝ｋ０｛ｘ（ｎ−４）＋ｘ（ｎ−９）｝＋ｋ１｛ｘ（ｎ−５）＋ｘ（ｎ−８）｝＋ｋ２｛（ｘ−６）＋ｘ（ｎ−７）｝であり、または、図１４に示されるような乗算器への入力のタイムフレームで表すと、因数分解された形式では、ｙ（ｎ−２）＝ｋ０｛ｘ（ｎ−２）＋ｘ（ｎ−７）｝＋ｋ１｛ｘ（ｎ−３）＋ｘ（ｎ−６）｝＋ｋ２｛ｘ（ｎ−４）＋ｘ（ｎ−５）｝として表される。図１４から分かるように、各々の段は、共通の係数を有する２つの入力を受取る。この場合、段２００−１のＤＳＰが係数ｋ２に関連付けられたタップを受取り、段２００−２のＤＳＰが係数ｋ１に関連付けられたタップを受取り、段２００−３のＤＳＰが係数ｋ０に関連付けられたタップを受取る。
【００９５】
所望のクロックサイクルでの前置加算器へのデータサンプルの到達が、ＡＣＯＵＴ／ＡＣＩＮ伝搬経路を通じて制御される前置加算器を採用することにより、装置資源の消費がより少なく、電力消費のより少ないフィルタが実現され得る。すなわち、５つのＤＳＰブロックにおいて図１２および図１３のフィルタを実現したり、６つのＤＳＰブロックにおいて図１４のフィルタを実現したりするのではなく、フィルタの各々が３つのＤＳＰブロックにおいて実現され得る。さらに、図１５を参照して以下にさらに詳細に記載するような方法により、フィルタについての包括的で最適化されていない高水準の記述を最適化された形式に変換することが可能となる。この方法は、最適な方法でこのようなフィルタをマニュアルで記述しようとする人であれば誰でも使用可能であるだけでなく、如何なる合成ツールにおいても新しく高度な推論能力として自動化もされ得る。すなわち、たとえば図１２〜図１４において実現されるようなＤＳＰブロックの記述をユーザが提供するのではなく、合成ツールが、対称的な係数を自動的に検出し、加算器１２０６などの前置加算器を活用できるようＤＳＰブロックを構成し、これにより、フィルタを実現するのに必要なＤＳＰブロックの数を減らし得る。したがって、この発明の１つ以上回路および方法では、ＤＳＰの前置加算器を用いて対称的な結合を実行することによって係数の対称性が推進されて、カスケードされたＤＳＰブロックの数が最小限にされる。
【００９６】
この発明の１つ以上の回路および方法が、結果として、シストリックフィルタ実現例などの他の実現例と比べて、回路性能の点で如何なる不利点ももたらさないことに留意されたい。ＤＳＰブロック連鎖は、ＤＳＰブロック間においてＰｃａｓｃａｄｅ（ＰＣＯＵＴ／ＰＣＩＮ）およびＡｃａｓｃａｄｅ（ＡＣＯＵＴ／ＡＣＩＮ）を含む高速接続を採用することによっていずれの場合にも最適化される。加えて、この発明の１つ以上の回路および方法により、確実に、連鎖における各々のＤＳＰブロックが、レジスタ１２０２、１２０４、１２０８、１２１４および１２１８を含むブロックにおいて利用可能なパイプライン段を用いることにより、最適な性能が得られるように完全にパイプライン化されることに留意されたい。加えて、どちらの場合にも、ＤＳＰ段の数と等しい論理出力数が暗黙に定義されている。これは、シストリック実現例の場合にはシフトレジスタの出力において見出され、上述の転置コンボリューション実現例の場合には受信データノード自体において見出される。
【００９７】
最後に、変換原理が包括的であり、そして、この変換原理が、符号−ｋ２、−ｋ１、−ｋ０、ｋ０、ｋ１、ｋ２を有する係数などの対称的な係数間に符号反転がある場合、または、符号反転がない場合に作用することに留意されたい。現在では、公知または共通のフィルタ応用例に対処する必要はないかもしれないが、係数のうちのいくつかが符号反転され、−ｋ２、ｋ１、ｋ０、ｋ０、ｋ１、ｋ２の符号を有する係数などの他の係数が符号反転されていない混在した状況においても、この発明の１つ以上の回路および方法は適用され得る。
【００９８】
ここで図１５を参照すると、フローチャートにおいて、この発明の実施例に従った集積回路においてフィルタを実現する方法が示される。図１５の方法は、上述の図１〜図１４のいずれかにおいて、または他のいくつかの好適な回路で実現され得る。回路の高水準設計がステップ１５０２において受取られる。たとえば、高水準設計は、ＨＤＬ記述であってもよく、または、フィルタを有する回路の他の何らかの高水準言語記述であってもよい。上述のとおり、フィルタの記述は係数および関連付けられるタップに基づいたフィルタの記述と同じくらい単純であり得る。高水準設計でのフィルタがステップ１５０４において識別される。フィルタの係数はステップ１５０６において分析される。フィルタは、共通の係数に対応するよう処理ブロックの構成を用いて構成される。この場合、単一の処理ブロックが、ステップ１５０８において、共通の係数に関連付けられるタップを受取るよう結合される。処理ブロックの構成は、たとえば、図１２〜図１４に関連して図示および記載されるように実現されてもよい。処理ブロックの前置加算器の入力に対する必要な遅延がステップ１５１０において確立される。前置加算器の関数は、フィルタを表わす式中の係数の符号に基づいて、ステップ１５１２において加算または減算するよう選択される。前置加算器の出力は、ステップ１５１４において乗算器の第１の入力に与えられる。ステップ１５１６において、共通の係数が第２の入力として単一の処理ブロックの乗算器に与えられる。最後に、ステップ１５１８において、集積回路の回路素子を用いた構成に従ってフィルタが実現される。
【００９９】
一実施例に従うと、コンピュータプログラムコードが、図１６を参照して以下により詳細に記載されるように、制御回路１６０２などの制御回路において実現され得る。コンピュータプログラムコードは、回路設計を配置構成に変換するコンピュータ読取可能プログラムコードを有するコンピュータ読取可能媒体を含み得る。この場合、コンピュータ読取可能媒体は、高水準設計でフィルタを識別するコンピュータ読取可能プログラムコードと、フィルタの係数を分析するコンピュータ読取可能プログラムコードと、共通の係数に対応するよう構成された回路の処理ブロックを用いてフィルタを構成するコンピュータ読取可能プログラムコードとを含む。処理ブロックは、共通の係数に関連付けられるタップを受取るよう結合される。
【０１００】
共通の係数に対応するよう構成された処理ブロックを用いてフィルタを構成するコンピュータ読取可能プログラムコードは、対称的な転置コンボリューションフィルタとしてフィルタを構成するコンピュータ読取可能プログラムコードを含み得る。フィルタの係数を分析するコンピュータ読取可能プログラムコードは、フィルタの対称的な係数を識別するコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、共通の係数を第１の入力として処理ブロックの乗算器に与えるコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、共通の係数に関連付けられるタップの和または差を第２の入力として乗算器に与えるコンピュータ読取可能プログラムコードを含み得る。共通の係数に関連付けられるタップの和または差を第２の入力として乗算器に与えるコンピュータ読取可能プログラムコードは、ＤＳＰブロックの前置加算器回路を用いて和を生成するコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、集積回路の回路素子を用いてフィルタを実現するコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトは、集積回路において回路を実現するための他の特徴を有し得るか、またはより大きなプログラムの一部であり得る。
【０１０１】
図１６は、この発明の実施例に従ったプログラマブルリソースを有する装置を実現するためのシステム１６００のブロック図を示す。特に、制御回路１６０２は、メモリ１６０４から入力データを受取りかつメモリ１６０６に記憶される構成ビットストリームを生成するよう結合される。以下により詳細に記載されるように、入力データは、ＶＨＤＬなどのハードウェア記述言語（hardware description language：ＨＤＬ）で定義される回路設計などの高水準設計として記述された回路設計を含み得る。制御回路は、メモリ１６０６に記憶される構成ビットストリームを生成するソフトウェアを実行するコンピュータを含み得る。構成ビットストリームは、装置において実現されるべき回路設計のＤＳＰ回路の構成要素などの構成要素の配置に関連する情報を提供する配置構成を含む。メモリ１６０６は、プログラマブルリソース１６０８を有する集積回路装置にロードされる構成ビットストリームを記憶するための不揮発性メモリを含む。プログラマブルリソースは、以下に詳細に記載されるプログラマブルロジック、または集積回路の他のプログラマブル素子であってもよい。この発明の１つ以上の方法は、如何なるタイプの集積回路におけるＤＳＰ回路の配置にも適用され得るが、これらの方法は、プログラマブルロジックを有する装置に特定的に適用されており、プログラマブルロジックを有する装置を参照しつつ、以下に詳細に説明される。以下により詳細に記載されるように、制御回路１０２は、最適化された配置のＤＳＰ回路を有する構成ビットストリームを生成する。
【０１０２】
当技術において周知のように、プログラマブルリソースを有する装置の設計のためのソフトウェアフローは、合成、パッキング、配置および経路指定を含む。合成は、高水準設計の回路設計を、プログラマブルロジックを有する装置に見出される素子の構成に変換するステップを含む。たとえば、制御回路１６０２によって操作される合成ツールは、以下により詳細に記載するように、回路設計のうち、構成可能な論理ブロック（configurable logic block：ＣＬＢ）またはＤＳＰブロックにおけるいくつかの関数を実現する部分を実現し得る。この発明の１つ以上の方法を実現し得る合成ツールの一例として、カリフォルニア州、サンホセにあるザイリンクス社から入手可能なＩＳＥＴＭツールが挙げられる。この場合、この発明の１つ以上の方法を実現する合成ツールの出力は、ＤＳＰブロックの最適化された構成を有する構成ビットストリームを含む。パッキングは、回路設計の部分を、装置のうち構成可能な論理ブロックなどの規定されたブロックにグループ化するステップを含む。以下により詳細に記載されるように、ＤＳＰブロックへのＤＳＰ回路のパッキングは、この発明のさまざまな方法に従って効率的に実現され得る。配置は、パッキングするステップ中に規定される装置のブロックの位置を決定するステップを含む。この場合、ある設計のブロックが、装置の位置に関連付けられる二次元格子上に配置される。配置は、コンピュータ上で実行される配置ソフトウェア、または、装置において回路設計を実現するためのコンピュータ上で実行されるより大型のソフトウェアパッケージの一部を含み得るプレーサによって実行される。最後に、経路指定は、プログラマブルロジックを有する装置においてプログラマブル相互接続部などの相互接続素子の経路を選択するステップを含む。
【０１０３】
この発明の１つ以上の回路および方法は、前置加算器能力を最適に利用する対称的な転置コンボリューションフィルタの実現を可能にしつつ、ＤＳＰブロック以外の如何なる論理をも必要としない。結果として、対称的なシストリックＦＩＲフィルタなどの他のフィルタ実現例、または対称的な転置コンボリューションフィルタを実現する他の回路と比べて、リソース条件および電力損失が低下する。加えて、以下に述べる回路および方法は、合成ツールが、フィルタの包括的な高水準設計記述を取込み、フィルタ設計を推論する高度な能力によって自動的に微調整および最適化作業を実行することを可能にするであろう方法を導入することによって、設計者がそれらの回路において用いられるフィルタの記述を手作業で微調整する必要性について解決する。
【０１０４】
この発明の１つ以上の回路および方法は、所望のＤＳＰ段の点から見て最小限であるだけでなく、ＤＳＰブロック以外の如何なる論理も必要としない対称的な転置コンボリューションフィルタの実現を可能にする。したがって、当該回路および方法はさらに、装置利用および静的かつ動的な電力損失を低減させる。ＤＳＰブロックの特徴についての深遠な知識が不足している設計者、これらのＤＳＰブロックを特定の装置に制約しないであろう移植可能なソリューションを探索している設計者、または製造業者にとっては、合成ツールがＨＤＬコードなどの包括的に記述される何らかのフィルタコードを取り込んで、最適化された実現例への変換を実行する能力は有益となる。したがって、合成ツールにおいて自動化することのできる推論および最適化方法を説明する。以下により詳細に記載するように、当該方法によれば、このような使用可能なツールを推進する設計者が対称的な転置コンボリューションフィルタを包括的に記述することができるようになる。たとえば、設計者は、合成ツールによって生成される最適な実現例を達成するために所与のフィルタの各タップに適用すべき係数の表および積和を単に記述するだけであってもよい。
【０１０５】
ここで図１７を参照すると、この発明の実施例に従ったプログラマブルロジックを有する装置のブロック図が示される。装置１７０２はプログラマブルロジック１７０４を組込んでいる。この場合、プログラマブルロジックはＣＬＢ回路１７０６、ＤＳＰ回路１７０７および揮発性メモリ１７０８を含んでもよく、不揮発性メモリ１７１０および／または揮発性メモリ１７１２などの他の回路に結合されてもよい。不揮発性メモリ１７１０は当該装置のＩ／Ｏポート１７１３に結合されて、制御回路１７１４が構成ビットストリームを当該装置のＩ／Ｏポート１７１３から不揮発性メモリ１７１０にロードすることを可能にし得る。
【０１０６】
構成ビットストリームは、装置１７０２の不揮発性メモリ１７１０にロードされ、次いで、揮発性メモリ１７０８および揮発性メモリ１７１２にロードされ得る。代替的には、構成ビットストリームは、制御回路１７１４または構成コントローラ１７１８によって揮発性メモリ１７０８および揮発性メモリ１７１２に直接ロードされてもよい。揮発性メモリ１７０８は構成可能な論理ブロックに関連付けられてもよく、揮発性メモリ１７１２は、たとえば、ランダムアクセスメモリ（ＢＲＡＭ）のブロックまたは構成メモリセルに関連付けられてもよい。以下により詳細に記載されるように、構成ビットストリームは、プログラマブルロジック１７０４のＤＳＰ回路１７０７を実現するよう生成されることとなる。
【０１０７】
ここで図１８を参照すると、この発明の実施例に従った図１の装置の構成可能な論理素子のブロック図が示される。特に、図１８は、図１の構成論理ブロック１０２の構成可能な論理素子を単純化して示す。図１８の実施例においては、スライスＭ  １８０１は、４つのルックアップテーブル（ＬＵＴＭ）１８０１Ａ〜１８０１Ｄを含み、各々は、６つのＬＵＴデータ入力入力端子Ａ１〜Ａ６、Ｂ１〜Ｂ６、Ｃ１〜Ｃ６、およびＤ１〜Ｄ６によって駆動され、２つのＬＵＴ出力信号Ｏ５およびＯ６を与える。ＬＵＴ  １８０１Ａ〜１８０１ＤからのＯ６出力端子は、スライス出力端子Ａ〜Ｄをそれぞれ駆動する。ＬＵＴデータ入力信号は、プログラマブル相互接続部素子１８１１によって実現され得る入力マルチプレクサを介してＦＰＧＡ相互接続構造によって供給され、ＬＵＴ出力信号も相互接続構造に供給される。スライスＭはまた、出力端子ＡＭＵＸ〜ＤＭＵＸを駆動する出力選択マルチプレクサ１８１１Ａ〜１８１１Ｄと、メモリ素子１８０２Ａ〜１８０２Ｄのデータ入力端子を駆動するマルチプレクサ１８１２Ａ〜１８１２Ｄと、組合せマルチプレクサ１８１６、１８１８および１８１９と、バウンスマルチプレクサ回路１８２２〜１８２３と、インバータ１８０５およびマルチプレクサ１８０６（ともに、入力クロック経路上で任意の反転をもたらす）によって表わされる回路と、マルチプレクサ１８１４Ａ〜１８１４Ｄ、１８１５Ａ〜１８１５Ｄ、１８２０および１８２１ならびに排他的ＯＲゲート１８１３Ａ〜１８１３Ｄを含むキャリーロジックとを含む。図１８において示されるように、これらの素子同士はすべて結合される。選択入力が図１８において示されるマルチプレクサとして示されない場合、選択入力は構成メモリセルによって制御される。すなわち、構成メモリセルに記憶される構成ビットストリームの構成ビットは、マルチプレクサへの正確な入力を選択するようマルチプレクサの選択入力に結合される。これらの構成メモリセルは周知であり、明確にするために図１８と、この明細書中における他の選択された図とからは省かれる。
【０１０８】
図示される実施例においては、各々のメモリ素子１８０２Ａ〜１８０２Ｄは、同期または非同期フリップフロップまたはラッチとして機能するようプログラムされてもよい。同期機能と非同期機能との選択は、Ｓｙｎｃ／Ａｓｙｎｃｈ選択回路１８０３をプログラムすることによって１つのスライスにおける４つのメモリ素子すべてに対してなされる。Ｓ／Ｒ（セット／リセット）入力信号が集合関数を与えるようにメモリ素子がプログラムされると、ＲＥＶ入力端子がリセット関数を提供する。Ｓ／Ｒ入力信号がリセット関数を与えるようにメモリ素子がプログラムされると、ＲＥＶ入力端子が集合関数を提供する。メモリ素子１８０２Ａ〜１８０２Ｄは、たとえばグローバルクロックネットワークまたは相互接続構造によって供給され得るクロック信号ＣＫによってクロックされる。このようなプログラマブルメモリ素子はＦＰＧＡ設計の技術において周知である。各々のメモリ素子１８０２Ａ〜１８０２Ｄは、登録された出力信号ＡＱ〜ＤＱを相互接続構造に与える。各々のＬＵＴ  １８０１Ａ〜１８０１Ｄが２つの出力信号、すなわちＯ５およびＯ６、を与えるので、ＬＵＴは５つの共有される入力信号（ＩＮ１〜ＩＮ５）を備えた２つの５−入力ＬＵＴとして、または、入力信号ＩＮ１〜ＩＮ６を有する１つの６−入力ＬＵＴとして機能するよう構成され得る。
【０１０９】
図１８の実施例においては、各々のＬＵＴＭ  １８０１Ａ〜１８０１Ｄがいくつかのモードのうちのいずれかで機能し得る。ルックアップテーブルモードであれば、各々のＬＵＴは、入力マルチプレクサを介してＦＰＧＡ相互接続構造によって供給される６つのデータ入力信号ＩＮ１〜ＩＮ６を有する。６４のデータ値のうちの１つは、信号ＩＮ１〜ＩＮ６の値に基づいて構成メモリセルからプログラム可能に選択される。ＲＡＭモードであれば、各々のＬＵＴは、単一の６４ビットＲＡＭまたはアドレス指定が共有される２つの３２ビットＲＡＭとして機能する。ＲＡＭ書込データは、（ＬＵＴ  １８０１Ａ〜１８０１Ｃについてはマルチプレクサ１８１７Ａ〜１８１７Ｃを介して）入力端子ＤＩ１を介して６４ビットＲＡＭに供給されるか、または、入力端子ＤＩ１およびＤＩ２を介して２つの３２ビットＲＡＭに供給される。ＬＵＴ  ＲＡＭにおけるＲＡＭ書込み動作は、マルチプレクサ１８０６からのクロック信号ＣＫによって、そしてマルチプレクサ１８０７からのライトイネーブル信号ＷＥＮによって制御される。これにより、クロックイネーブル信号ＣＥまたはライトイネーブル信号ＷＥのいずれかが選択的にパスされ得る。シフトレジスタモードでは、各々のＬＵＴは、２つの１６ビットシフトレジスタとして機能するか、または、２つの１６ビットシフトレジスタが直列に結合されて単一の３２ビットシフトレジスタを作り出す。シフトイン信号は、入力端子ＤＩ１およびＤＩ２のうちのいずれかまたはこれら両方を介して与えられる。１６ビットおよび３２ビットのシフトアウト信号はＬＵＴ出力端子を介して与えられ得る。３２ビットシフトアウト信号はまた、ＬＵＴ出力端子ＭＣ３１を介してより直接的に与えられ得る。ＬＵＴ  １８０１Ａの３２ビットシフトアウト信号ＭＣ３１はまた、出力選択マルチプレクサ１８１１ＤおよびＣＬＥ出力端子端子ＤＭＵＸを介して、シフトレジスタ連鎖のために汎用相互接続構造に与えられてもよい。
【０１１０】
以上により、本発明の１つ以上の局面に従った具体的な実施例を記載したが、本発明の１つ以上の局面に従った他の実施例およびさらなる実施例が、添付の特許請求の範囲およびその同等例によって規定される範囲から逸脱することなく考案され得る。ステップを列挙している特許請求の範囲は、これらのステップの如何なる順序をも示唆するものではない。商標は、それぞれの所有者が所有するものとする。
【図１】
0005356537.tif 000002
【図２】
0005356537.tif 000003
【図３】
0005356537.tif 000004
【図４】
0005356537.tif 000005
【図５】
0005356537.tif 000006
【図６】
0005356537.tif 000007
【図７】
0005356537.tif 000008
【図８】
0005356537.tif 000009
【図９】
0005356537.tif 000010
【図１０】
0005356537.tif 000011
【図１１】
0005356537.tif 000012
【図１２】
0005356537.tif 000013
【図１３】
0005356537.tif 000014
【図１４】
0005356537.tif 000015
【図１５】
0005356537.tif 000016
【図１６】
0005356537.tif 000017
【図１７】
0005356537.tif 000018
【図１８】
0005356537.tif 000019