説明

前置加算器段を備えたデジタル信号処理ブロック

集積回路のための前置加算器段(204)を備えたデジタル信号処理ブロック(200)を記載する。デジタル信号処理ブロックは前置加算器段(204)および制御バス(202)を含む。制御バスは、前置加算器段の演算を動的に制御するために前置加算器段(204)に結合される。前置加算器段は、制御バスに結合された第1のマルチプレクサ(306)の第1の入力ポートと、制御バスに結合された第1の論理ゲート(322)の第2の入力ポートと、制御バスに結合された第2の論理ゲート(321)の第3の入力ポートと、制御バスに結合された加算器/減算器(331)の第4の入力ポートとを含む。

【発明の詳細な説明】
【技術分野】
【0001】
発明の分野
本発明は、集積回路装置(integrated circuit device:IC)に関する。より特定的には、本発明は、ICのための前置加算器段を備えたデジタル信号処理ブロックに関する。
【背景技術】
【0002】
発明の背景
プログラマブルロジックデバイス(programmable logic device:PLD)は、特定の論理関数を実行するようプログラム可能な周知のタイプの集積回路である。PLDの一種であるフィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)は典型的にはプログラム可能なタイルのアレイを含む。これらのプログラム可能なタイルは、たとえば、入出力ブロック(input/output block:IOB)、構成可能論理ブロック(configurable logic block:CLB)、専用のランダムアクセスメモリブロック(random access memory block:BRAM)、乗算器、デジタル信号処理ブロック(digital signal processing block:DSP)、プロセッサ、クロックマネージャ、遅延ロックループ(delay lock loop:DLL)などを含み得る。本明細書においては、「含む」および「含んでいる」は、限定を伴わずに含むことを意味する。
【0003】
プログラム可能なタイルは各々、典型的には、プログラマブル相互接続部およびプログラマブルロジックの両方を含む。プログラマブル相互接続部は、典型的には、プログラマブル相互接続点(programmable interconnect point:PIP)によって相互接続された長さの異なる多数の相互接続線を含む。プログラマブルロジックは、たとえば、関数発生器、レジスタ、演算ロジックなどを含み得るプログラマブル素子を用いて、ユーザ設計のロジックを実現する。
【0004】
プログラマブル相互接続部およびプログラマブルロジックは、典型的には、プログラマブル素子がどのように構成されるかを定義する構成データのストリームを内部構成メモリセルにロードすることによってプログラムされる。構成データは、メモリから(たとえば、外部PROMから)読出し可能であるか、または外部装置によってFPGAに書込み可能である。集団状態の個々のメモリセルが次いでFPGAの関数を決定する。
【0005】
別のタイプのPLDとして、複合プログラマブルロジックデバイス(Complex Programmable Logic Device)、すなわちCPLD、が挙げられる。CPLDは2つ以上の「関数ブロック」を含み、これらの2つ以上の「関数ブロック」は互いに接続され、相互接続スイッチマトリックスによって入出力(「I/O」)リソースに接続される。CPLDの関数ブロックは各々、プログラマブルロジックアレイ(Programmable Logic Array:PLA」)およびプログラマブルアレイロジック(Programmable Array Logic:PAL)デバイスにおいて使用されるものと同様の2レベルのAND/OR構造を含む。CPLDにおいては、構成データは、典型的には、不揮発性メモリにおいてオンチップで記憶される。いくつかのCPLDにおいては、構成データは、不揮発性メモリにおいてオンチップで記憶され、次いで、初期構成(プログラミング)シーケンスの一環として揮発性メモリにダウンロードされる。
【0006】
これらのプログラマブルロジックデバイス(「PLD」)の全てに関して、デバイスの機能が、その目的のためにデバイスに与えられるデータビットによって制御される。データビットは、揮発性メモリ(たとえば、FPGAおよびいくつかのCPLDにあるようなスタティックメモリセル)、不揮発性メモリ(たとえば、いくつかのCPLDにあるようなFLASHメモリ)、または他の何らかのタイプのメモリセルに記憶させることができる。
【0007】
他のPLDは、デバイス上でさまざまな素子をプログラム可能に相互接続する金属層などの処理層を適用することよってプログラムされる。これらのPLDはマスクプログラマブルデバイスとして公知である。PLDはまた、たとえば、ヒューズ技術またはアンチヒューズ技術を用いる他の方法でも実現可能である。「PLD」および「プログラマブルロジックデバイス」という語句は、これらの例示的なデバイスだけではなく部分的にのみプログラム可能な網羅的なデバイスをも含むが、これらに限定されない。たとえば、あるタイプのPLDは、ハードコード化されたトランジスタロジックと、ハードコード化されたトランジスタロジックをプログラム可能に相互接続するプログラム可能なスイッチ構造との組合せを含む。
【発明の概要】
【発明が解決しようとする課題】
【0008】
FPGA(「FPGA構造」)のプログラマブルロジックにおいてインスタンス化された設計の性能は、FPGA構造の速度によって制限される。しかしながら、FPGAにおけるDSPなどの専用の回路リソースは、FPGA構造において実現される等価回路よりも速く動作を実行することができる。したがって、DSPの有用性を拡張するための手段を設けることは望ましく有用となるだろう。
【0009】
集積回路は、回路設計を実現するのに用いられるさまざまな回路素子を含む。回路設計は、集積回路の回路素子のタイプおよび使用可能な場所に応じてレイアウトまたは「配置」されなければならない。すなわち、回路設計の構成要素を、集積回路の位置に割当てるかまたは配置しなければならない。回路設計の構成要素を配置する際、配置を決定するのにさまざまな要因が考慮される。構成要素を効率的に配置し、構成要素の実現効率を改善することにより、集積回路装置の使用が著しく向上する可能性がある。
【0010】
デジタル信号処理(digital signal processing:DSP)応用例に特有の算術演算を実現する場合に従来の集積回路では非効率的であるが、いくつかの集積回路は、DSP関数を実現するための専用の回路ブロックを採用している可能性がある。しかしながら、従来の装置におけるDSPブロックでは、本質的に非効率的なレイアウトになってしまうか、または、DSP応用例を実現するのに必要な回路が非効率的に使用されてしまう可能性がある。すなわち、提供できる機能が制限されているDSPブロックを有する集積回路では、結果として、回路リソースの使用が非効率になってしまう可能性がある。回路レイアウトの効率性を改善し得るDSPブロックでは、結果として、集積回路の使用が著しく改善される可能性がある。
【課題を解決するための手段】
【0011】
発明の概要
1つ以上の実施例は、概して、集積回路装置(IC)に関し、より特定的には、ICのための前置加算器段を備えたデジタル信号処理ブロックに関する。
【0012】
この発明の一実施例は、概して、デジタル信号処理ブロックを備えた集積回路に関する。デジタル信号処理ブロックは、前置加算器段および制御バスを含む。制御バスは、前置加算器段の動作を動的に制御するように前置加算器段に結合される。前置加算器段は、制御バスに結合された第1のマルチプレクサの第1の入力ポートと、制御バスに結合された第1の論理ゲートの第2の入力ポートと、制御バスに結合された第2の論理ゲートの第3の入力ポートと、制御バスに結合された加算器/減算器の第4の入力ポートとを含む。
【0013】
この実施例においては、前置加算器段は、第2の入力ポートへの入力に応じて第1の論理ゲートの出力を介して0の値を受取るよう加算器/減算器の第1のデータ入力を動的に設定するよう構成され得る。前置加算器段は、第3の入力ポートへの入力に応じて第2の論理ゲートの出力を介して0の値を受取るよう加算器/減算器の第2のデータ入力を動的に設定するよう構成され得る。前置加算器段は、第1の入力ポートへの入力に応じて0−、1−または2−レジスタ遅延を有する入力データを動的に選択するよう構成され得る。前置加算器段は、第4の入力ポートへの入力に応じて加算または減算するよう加算器/減算器を動的に設定するよう構成され得る。集積回路のこの実施例はさらに、入力データをデジタル信号処理ブロックに与えるためのインスタンス化された回路関数を与えるよう、構成ビットストリームに応じて構成され得るフィールドプログラマブル論理ゲートを含む。
【0014】
この実施例においては、前置加算器段は、入力データを与えるためのフィールドプログラマブル論理ゲートを再構成する必要なしに、第1の入力ポート、第2の入力ポート、第3の入力ポートおよび第4の入力ポートからなる群のうち少なくとも1つのポートを介して動的に再構成可能であり得る。前置加算器段は、絶対値関数、連続する複素共役関数、連続する乗算関数、連続する虚数乗法、多重化関数、レジスタファイル関数、シフトレジスタ論理関数およびパイプライン・リバランシング関数を与えるよう動的に再構成可能であり得る。
【0015】
この発明の別の実施例は、概して、デジタル信号処理ブロックの連鎖に結合されたシフトレジスタを含むシストリック有限インパルス応答フィルタに関する。シフトレジスタは、デジタル信号処理ブロックのこの連鎖のうち最後のブロック以外のすべてのブロックの第1のレジスタの各々に対して同報通信入力を同報通信するよう構成され得る。デジタル信号処理ブロックの各々は第2のレジスタを有し得る。デジタル信号処理ブロックの各々は第3のレジスタを有し得る。第2のレジスタの出力は、デジタル信号処理ブロックの各々に対する第3のレジスタの入力に結合されてそのデュアルレジスタを設けることができる。デュアルレジスタは、デジタル信号処理ブロックの連鎖のうち最初のブロックから最後のブロックにまでフィルタ入力列を伝搬させるために直列に結合され得る。デジタル信号処理ブロックの各々は第1の加算器を有し得る。この第1の加算器は、その第1の和を得るために第1のレジスタおよび第3のレジスタの各々から出力を受取るよう結合される。デジタル信号処理ブロックの各々は、それぞれのフィルタ係数を受取るよう結合された第4のレジスタを有し得る。デジタル信号処理ブロックの各々は乗算器を有し得る。この乗算器は、第1の和とそれぞれのフィルタ係数とを受取るよう結合され、その部分結果を与えるよう構成され得る。デジタル信号処理ブロックの各々は、その部分結果を受取るよう結合された第2の加算器を有し得る。デジタル信号処理ブロックの第2の加算器は、デジタル信号処理ブロックの各々の部分結果を蓄積して、デジタル信号処理ブロックの連鎖のうち最後のブロックからフィルタ出力列を与えるよう結合され得る。
【0016】
この実施例においては、デジタル信号処理ブロックの各々は、その乗算器に与えられる前にその第1の和を受取るよう結合された第5のレジスタを含み得る。デジタル信号処理ブロックの第2の加算器は直列に結合することができ、デジタル信号処理ブロックのうち最初のブロックの第2の加算器は、デジタル信号処理ブロックのうち隣接したブロックの部分結果を追加してその第2の和を与えるために、入力用のその第2の和として得られた部分結果をデジタル信号処理ブロックのうち隣接したブロックの第2の加算器に対してパスすることができる。デジタル信号処理ブロックの各々は、その部分結果を受取るよう結合された第6のレジスタと、その第2の和を受取るよう結合された第7のレジスタとを含み得る。
【0017】
フィルタのこの実施例はさらに、第1のレジスタおよび第3のレジスタの各々から第1の加算器への出力をゲート制御するためのゲーティングロジックに結合された制御バスを含み得る。第1の加算器入力は、0値を受取って連鎖の有効長を動的に調整するよう動的に構成可能であり得、第1の加算器は、フィールドプログラマブルゲートアレイ構造では実現されない。ゲーティングロジックは、たとえ連鎖に奇数個のデジタル信号処理ブロックが存在していても、偶数個のタップを有するものとしてシストリック有限インパルス応答フィルタを動作させるよう、デジタル信号処理ブロックのうち最後のブロックを動的にゼロにするよう結合することができる。ゲーティングロジックは、たとえ連鎖に偶数個のデジタル信号処理ブロックが存在してもいても、奇数個のタップを有するものとしてシストリック有限インパルス応答フィルタを動作させるよう、デジタル信号処理ブロックのうち最後のブロックを動的にゼロにするよう結合することができる。
【0018】
しかしながら、この発明の別の実施例は、概してフィルタリングの方法に関するものである。フィルタ入力列が獲得され、それに対する第1の入力としてデジタル信号処理ブロックの連鎖に与えられる。デジタル信号処理ブロックの有効長は、フィルタタップの数を有効に調整するよう動的に変更される。当該方法のこの実施例はさらに、第1の動作モードでデジタル信号処理ブロックのうち最初のブロックを設定するステップと、第1の動作モードとは異なる第2の動作モードでデジタル信号処理ブロックのうち最初のブロック以外のすべてのブロックを設定するステップとを含む。この方法はさらに、フィールドプログラマブル論理ゲートにおけるシフトレジスタをインスタンス化するステップと、フィルタ入力列をシフトレジスタに与えるステップと、それに対する第2の入力としてデジタル信号処理ブロックの連鎖のうち少なくとも最後のブロック以外のすべてに対して、シフトレジスタからの出力を同報通信するステップとを含む。
【0019】
この方法はさらに、デジタル信号処理ブロックの各々にフィルタ係数を与えるステップと、デジタル信号処理ブロックの連鎖のうち最初のブロックから順に最後のブロックへと第1の入力をシフトさせるステップと、デジタル信号処理ブロックを用いてそれぞれの部分和を求めるステップと、部分和を蓄積してフィルタ出力列を与えるステップとを含む。デジタル信号処理ブロックは、奇数タップの対称的なシストリック有限インパルス応答フィルタとして動作する状態から、偶数タップの対称的なシストリック有限インパルス応答フィルタとして動作する状態に動的に変更させることができる。デジタル信号処理ブロックは、偶数タップの対称的なシストリック有限インパルス応答フィルタとして動作する状態から、奇数タップの対称的なシストリック有限インパルス応答フィルタとして動作する状態に動的に変更させることができる。
【0020】
本発明の実施例に従うと、集積回路において実現されるように回路内でフィルタを構成する方法が開示される。当該方法は、回路の高水準設計を受取るステップと、フィルタを高水準設計で識別するステップと、フィルタの係数を分析するステップと、高水準設計のフィルタを、共通の係数に対応するよう構成された回路の処理ブロックを用いるフィルタに変換するステップとを含み、処理ブロックは、共通の係数に関連付けられるタップを受取るよう結合される。高水準設計のフィルタを、共通の係数に対応するよう構成された処理ブロックを用いるフィルタに変換するステップは、フィルタを対称的な転置コンボリューションフィルタとして構成するステップを含み得る。係数を分析するステップは、フィルタの対称的な係数を識別するステップを含み得る。当該方法は、共通の係数を第1の入力として処理ブロックの乗算器に与えるステップをさらに含み得る。当該方法は、共通の係数に関連付けられるタップの和を第2の入力として乗算器に与えるステップをさらに含み得る。共通の係数に関連付けられるタップの和を第2の入力として乗算器に結合するステップは、DSPブロックの前置加算器回路を用いて和を生成するステップを含み得る。当該方法は、共通の係数に関連付けられるタップの差を第2の入力として乗算器に与えるステップをさらに含み得る。
【0021】
コンピュータプログラムプロダクトがまた、代替的な実施例に従って開示される。コンピュータプログラムコードは、回路設計を配置構成に変換するコンピュータ読取可能プログラムコードを含むコンピュータ読取可能媒体を含み得る。コンピュータ読取可能媒体は、フィルタを高水準設計で識別するコンピュータ読取可能プログラムコードと、フィルタの係数を分析するコンピュータ読取可能プログラムコードと、共通の係数に対応するよう構成された回路の処理ブロックを用いるフィルタを構成するコンピュータ読取可能プログラムコードとを含み、処理ブロックは、共通の係数に関連付けられるタップを受取るよう結合される。
【0022】
共通の係数に対応するよう構成された処理ブロックを用いるフィルタを構成するコンピュータ読取可能プログラムコードは、対称的な転置コンボリューションフィルタとしてフィルタを構成するコンピュータ読取可能プログラムコードを含み得る。フィルタの係数を分析するコンピュータ読取可能プログラムコードは、フィルタの対称的な係数を識別するコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、共通の係数を第1の入力として処理ブロックの乗算器に与えるコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、共通の係数に関連付けられるタップの和または差を第2の入力として乗算器に与えるコンピュータ読取可能プログラムコードを含み得る。共通の係数に関連付けられるタップの和または差を第2の入力として乗算器に与えるコンピュータ読取可能プログラムコードは、DSPブロックの前置加算器回路を用いて和を生成するコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、集積回路の回路素子を用いてフィルタを実現するコンピュータ読取可能プログラムコードを含み得る。
【0023】
さらなる実施例に従うと、集積回路においてフィルタを実現する回路は、複数の遅延素子と、複数の遅延素子のうち第1の遅延素子を介してフィルタの第1のタップ、および複数の遅延素子のうち第2の遅延素子を介してフィルタの第2のタップを受取るよう結合される前置加算器回路とを含み、第1のタップおよび第2のタップは共通の係数を有する。当該回路はさらに、第1の入力における第1のタップと第2のタップとの和および第2の入力における共通の係数を含む前置加算器回路の出力を受取るよう結合された乗算器と、乗算器の出力を受取るよう結合された加算器とを含む。フィルタは転置コンボリューションフィルタを含み得る。共通の係数は、フィルタの対称的な係数に関連付けられてもよい。フィルタのタップの数は偶数のタップを含んでもよい。フィルタのタップの数は奇数のタップを含んでもよく、奇数個のタップのサブセットは前置加算器回路に結合されてもよい。複数の遅延素子、前置加算器回路および乗算器は、集積回路のデジタル信号処理ブロックの一部をなし得る。
【0024】
図面の簡単な説明
添付の図面は、本発明の1つ以上の局面に従った具体的な実施例を示す。しかしながら、添付の図面は、本発明を図示した実施例に限定するものとみなされるべきではなく、説明および理解のみを目的としたものである。
【図面の簡単な説明】
【0025】
【図1】本発明の1つ以上の局面が実現され得るカラム状のフィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA)アーキテクチャの具体的な実施例を示す簡略化されたブロック図である。
【図2】DSPスライスの具体的な実施例を示すブロック/回路図である。
【図3】図2のDSPスライスの前置加算器の具体的な実施例を示す回路図である。
【図4】図2のDSPスライスのデュアルBレジスタの具体的な実施例を示す回路図である。
【図5】inmode関数テーブルの具体的な実施例を示す表図である。
【図6】先行技術の8タップの偶数の対称的なシストリック有限インパルス応答(finite impulse response:FIR)フィルタの具体的な実施例を示すブロック/回路図である。
【図7】8タップの偶数の対称的なシストリックFIRフィルタの具体的な実施例を示すブロック/回路図である。
【図8】対称的なシストリック加算−乗算−加算処理処理モジュールを実現するための、0、0、1、0、1、0、1のOPMODEを備えた、図7のDSPスライスの具体的な実施例を示すブロック/回路図である。
【図9】9タップの奇数の対称的なシストリックFIRフィルタの具体的な実施例を示すブロック/回路図である。
【図10】9タップの奇数の対称的なシストリックFIRフィルタの具体的な代替実施例を示すブロック/回路図である。
【図11】FIR使用時のフローの具体的な実施例を示すフロー図である。
【図12】この発明の実施例に従った対称的な転置コンボリューション有限インパルス応答フィルタを実現する回路のブロック図である。
【図13】この発明の代替的な実施例に従った、対称的な転置コンボリューション有限インパルス応答フィルタを実現する回路を示すブロック図である。
【図14】この発明の代替的な実施例に従った、対称的な転置コンボリューション有限インパルス応答フィルタを実現する回路を示すブロック図である。
【図15】この発明の実施例に従った、集積回路においてフィルタを実現する方法を示すフローチャートである。
【図16】この発明の実施例に従ったプログラマブルロジックを有する装置を実現するためのシステムを示すブロック図である。
【図17】この発明の実施例に従ったプログラマブルロジックを有する装置を示すブロック図である。
【図18】この発明の実施例に従った構成可能な論理ブロックの構成可能な論理素子を示すブロック図である。
【発明を実施するための形態】
【0026】
図面の詳細な説明
以下の説明においては、本発明の具体的な実施例をより十分に説明するために多くの具体的な詳細が述べられる。しかしながら、当業者にとっては、以下に述べるすべての具体的な詳細がなくても本発明が実施可能であることが明らかになるはずである。他の例においては、本発明を不明瞭にすることを避けるために周知の特徴は詳細には記載されていない。例示を容易にするために、異なる図においても同じ参照符号が付いていれば同じ要素を指すものとする。しかしながら、代替的な実施例においては、要素は異なっている可能性がある。
【0027】
上述のとおり、高度なFPGAは、いくつかの異なるタイプのプログラマブル論理ブロックをアレイに含み得る。たとえば、図1に示されるFPGAアーキテクチャ100が備える多くのさまざまなプログラム可能なタイルは、マルチギガビットトランシーバ(multi-gigabit transceiver:MGT)101、構成可能な論理ブロック(configurable logic block:CLB)102、ランダムアクセスメモリブロック(random access memory block:BRAM)103、入出力ブロック(input/output block:lOB)104、構成および計時論理(configuration and clocking logic:CONFIG/CLOCKS)105、デジタル信号処理ブロック(digital signal processing block:DSP)106、特化された入出力ブロック(「I/O」)107(たとえば、構成ポートおよびクロックポート)、ならびに、デジタルクロックマネージャ、アナログ・デジタル変換器、システム監視ロジックなどの他のプログラマブルロジック108を含む。いくつかのFPGAはまた、専用のプロセッサブロック(processor block:PROC)110を含む。
【0028】
いくつかのFPGAにおいては、各々のプログラム可能なタイルは、プログラマブル相互接続要素(programmable interconnect element:INT)111を含み、これは隣接する各タイルにおける対応する接続要素111への、および接続要素111からの標準化された接続を有する。したがって、プログラマブル相互接続要素111がまとめられると、図示されたFPGAのためのプログラマブル相互接続構造が実現される。プログラマブル相互接続要素111はまた、図1の上部に含まれる例によって示されるように、同じタイル内のプログラマブル論理素子への、またはプログラマブル論理素子からの接続を含む。
【0029】
たとえば、CLB102は、単一のプログラマブル相互接続要素(「INT」)111を加えたユーザロジックを実現するようプログラム可能な構成可能論理素子(configurable logic element:CLE)112を含み得る。BRAM103は、1つ以上のプログラマブル相互接続要素に加えて、BRAM論理素子(BRAM logic element:BRL)113を含み得る。典型的には、タイルに含まれる相互接続要素の数は、タイルの高さに依存する。図示された実施例においては、BRAMタイルは、5個のCLBと同じ高さを有するが、他の数(たとえば、4)が用いられてもよい。DSPタイル106は、適切な数のプログラマブル相互接続要素111に加えて、DSP論理素子(DSPL)114を含み得る。IOB 104は、たとえば、プログラマブル相互接続要素111の1つのインスタンスに加えて、入出力論理素子(input/output logic element:IOL)の2つのインスタンスを含み得る。当業者に明らかになるように、たとえば、I/O論理素子115に接続される実際のI/Oパッドは、典型的には、入出力論理素子115の領域には限定されない。
【0030】
図示された実施例においては、(図1に示される)ダイの中央に近いカラム状領域は、構成、クロックおよび他の制御ロジックのために用いられる。このカラムから延在する水平領域109は、FPGAの幅方向にわたって、クロックおよび構成信号を分配するのに用いられる。
【0031】
図1に示されるアーキテクチャを利用するいくつかのFPGAは、FPGAの大部分を構築する規則的なカラム構造をバラバラにする追加論理ブロックを含む。この追加論理ブロックは、プログラマブルブロックおよび/または専用の論理であり得る。たとえば、プロセッサブロック110は、CLBおよびBRAMの複数のカラムに及ぶ。
【0032】
なお、図1は、単に例示的なFPGAアーキテクチャを図示することを意図しているにすぎない。たとえば、カラムにおける論理ブロックの数、カラムの相対幅、カラムの数および順序、カラムに含まれる論理ブロックの種類、論理ブロックの相対サイズ、ならびに図1の上部に含まれる相互接続/論理インプリメンテーションは、単に例示的なものにすぎない。たとえば、実際のFPGAにおいては、CLBが現れるところにはどこでも、典型的には2つ以上の隣接するCLBのカラムが含まれ、ユーザロジックの効率的な実行を容易にするが、隣接するCLBカラムの数はFPGAの全体的なサイズに応じて変化する。
【0033】
DSP106は、ジェイムズ・エム・シムキンズ(James M. Simkins)他による「カスケーディングDSPスライスを備えた集積回路("Integrated Circuit with Cascading DSP Slices)」と題されその全体が引用によりこの明細書中に援用される米国特許第7,472,155号にさらに詳細に記載されている。DSP106の実現例を、カリフォルニア州(California)、サンホセ(San Jose)のザイリンクス社(Xilinx Inc.)から入手可能なVirtexTMおよびSpartanTMに見出すことができるだろう。
【0034】
図2は、DSPスライス200の具体的な実施例を示すブロック/回路図である。DSPスライス200は、図1のFPGA100のDSP106の具体的な実施例であり得るが、かならずしもそうである必要はない。D入力信号(「input」)201、A入力211、AC入力(「ACIN」)341および入力モード信号(「inmode」)202は、前置加算器(「preadder」)204を備えたデュアルA、Dレジスタに与えられる。ここで、inmode202は前置加算器204のためのinmodeレジスタ203に与えられる。B入力212およびBC入力(「BCIN」)441はデュアルBレジスタ242に与えられる。DSPスライス200のうち、乗算器251およびMレジスタ253、さらにはCレジスタおよび図2中の右側にある他の回路は従来型であり、Virtex−5TMのFPGAにおいて見出すことができるだろう。したがって、明確にするために、以前から知られているこのような回路の説明は省く。さらに、「入力」および「出力」という語句は、信号およびポートのどちらかまたは両方を、複数形を含むが複数形に限定することなく示すのに用いられる。
【0035】
図3は、前置加算器204の具体的な実施例を示す回路図である。以下にさらに詳細に述べるように、前置加算器204は、0、1、2または3段のレジスタとして動作するよう動的に構成され得る。
【0036】
前置加算器204は、マルチプレクサ301〜306、レジスタ311〜314、論理ゲート321および322、ならびに加算器/減算器331を含む。ビット幅が図3だけでなく図2および図4にも例示的に示されているが、Virtex−5TMFPGAのDSPスライスのビット幅に従って、この明細書中に例示的に示されるもの以外のビット幅もしくはそれと同じビット幅、またはこれらの組合せが使用され得ることが認識されるはずである。
【0037】
限定ではなく明確にするために図示されていないが、この実施例においては、マルチプレクサ301〜305に対する制御選択入力がFPGA構造の構成メモリセルから与えられる。このような構成メモリセルは構成ビットストリームから構成される。このため、FPGAの文脈においては、このようなFPGAが電源投入サイクルの一部としての状態情報を獲得している場合、それらのメモリセルのプログラム状態により、マルチプレクサ301〜305のための選択された出力が決定される。このようなメモリセルは、FPGAをリセットしなくてはそれらの状態を変更させることができない。言い換えれば、動作中のマルチプレクサ301〜305の状態は静的になる。FPGA動作中のマルチプレクサ301〜305の静的な状態とは対照的に、マルチプレクサ306は動的に動作可能である。言い換えれば、マルチプレクサ306は、このようなFPGAをリセットする必要なしに、FPGAの動作中にその制御選択を変更させてもよい。このような制御選択は、この具体的な実施例においては、inmode202の一部、すなわちinmode202−0、によって与えられる。ここで、「−0」は、inmodeバスのビット位置0を示すのに用いられる。
【0038】
さらに、マルチプレクサ306の動的動作に加えて、論理ゲート321および322、さらには減算器331も動的に動作させてもよい。このため、このような動的に動作可能な構成要素はユーザ設計の動作中に変更されてもよい。この実施例においては、図3のinmode202−0〜202−3だけでなく、図4のinmode202−4も、クロック信号のサイクル毎に変更され得る。限定ではなく例示を明確にする目的で、この明細書中で用いられ得るようなクロック信号方式は図示しない。
【0039】
inmode202−0は、A1レジスタ311もしくはA2レジスタ312のいずれかによって遅延されるか、A1レジスタ311およびA2レジスタ312の両方によって遅延されるか、またはA1レジスタ311およびA2レジスタ312のどちらにもよっても遅延されないA入力211またはAC入力341を与えるようゲート制御するための動的制御選択信号としてマルチプレクサ306に与えられる。また、メモリセル状態によって選択されると、マルチプレクサ301〜305からの選択された出力はFPGAをリセットしなくても動作中に静的となる。
【0040】
A入力211またはAC入力341はマルチプレクサ301から出力され得る。マルチプレクサ301からの出力は、データ入力としてA1レジスタ311に与えられ、データ入力としてマルチプレクサ302に与えられる。A1レジスタ311の出力は、データ入力としてマルチプレクサ302、304および306に与えられる。マルチプレクサ302の出力は、データ入力としてA2レジスタ312に与えられ、データ入力としてマルチプレクサ303に与えられる。マルチプレクサ303の出力は、データ入力としてマルチプレクサ304および306に与えられ、同様に、X MUX出力342として与えられる。図2を参照すると、前置加算器204のX MUX出力342は、AB連結信号250のために図2のデュアルBレジスタ242の出力442と組合わされてもよい。
【0041】
再び図3を参照すると、限定ではなく例示を明確にするために、ユーザがマルチプレクサ302および303を、それらの最下位入力を出力として選択するよう設定し、そして、ユーザが、AC入力341、すなわち別のDSPスライスからのAカスケード型入力、をマルチプレクサ301の出力として選択したと想定すると、データ入力としてマルチプレクサ306に与えられるAC入力341が、マルチプレクサ306の上位データ入力上でA1レジスタ311およびA2レジスタ312によって登録され、さらに、マルチプレクサ306の下位入力上で、AC入力341がA1レジスタ311によって登録される。したがって、ユーザがマルチプレクサ306の上位ポートまでのレジスタ段数を選択し得る一方で、マルチプレクサ306の下位ポートまでの入力のレジスタ段数が、常にA1の段数となることが認識されるべきである。
【0042】
先に述べたように、前置加算器204はデュアルAレジスタおよびデュアルDレジスタを含む。これは、たとえば、マルチプレクサ306の出力を介して論理ゲート322に入力を与えるのにA1レジスタおよびA2レジスタの両方を用いるか、A1レジスタおよびA2レジスタのうちの片方だけを用いるか、または、A1レジスタおよびA2レジスタのどちらも用いない可能性があるとしても、A1レジスタ311およびA2レジスタ312が構成可能なデュアルレジスタであることを意味する。さらに、デュアルDレジスタはDレジスタ313およびADレジスタ314に関連している。
【0043】
また、マルチプレクサ301の出力から得られるマルチプレクサ306に対する上位入力およびマルチプレクサ304に対する下位入力のレジスタ段数が、0段であり得るか、A1もしくはA2の1段であり得るか、またはA1およびA2の2段であり得ることが認識されるべきである。さらに、マルチプレクサ306の下位入力だけでなく、マルチプレクサ304の上位入力も、常にA1の段数である。マルチプレクサ304の出力は、図2のDSPスライス200に与えられているAC入力341と同様に、別のDSPスライスに与えられ得る図2のAC出力(「ACOUT」)信号(「AC output」)343である。
【0044】
マルチプレクサ306の上位入力または下位入力のどちらが出力用に選択されるかについては、inmode202−0の状態によって制御され、マルチプレクサ306からの出力がデータ入力として論理ゲート322に与えられる。論理ゲート321および322のためのANDゲートが例示的に図示されているが、この明細書中の記載に従って他の論理ゲートが用いられ得ることが認識されるべきである。ANDゲート322のもう一方の入力は反転入力であり、inmode202−1を受取るよう結合される。この実施例の場合、inmode202−1は、inmode202のバスのうちのビット位置1を表わす。ANDゲート322の出力は、以下にさらに詳細に記載されるように、入力として加算器/減算器331、すなわちA経路入力261、に与えられ、さらにはマルチプレクサ305の上位入力に与えられる。
【0045】
D入力201はデータ入力としてDレジスタ313に与えられる。Dレジスタ313のデータ出力はANDゲート321の上位入力に与えられる。ANDゲート321の下位入力は、この実施例の場合にはinmode202のバスのうちビット位置2であるinmode202−2を受取るよう結合される。ANDゲート321の出力は、以下にさらに詳細に記載されるように、別の入力として加算器/減算器331、すなわちD経路入力262、に与えられる。加算器/減算器331が加算用または減算用のどちらに構成されているかについては、この実施例の場合にはinmode202のバスのうちビット位置3であるinmode202−3によって制御される。加算器/減算器331の出力はADレジスタ314のデータ入力ポートに与えられる。ADレジスタ314の出力は、別の入力としてマルチプレクサ305に与えられる。マルチプレクサ305の出力は、乗算器オペランド信号、すなわち(図2に例示的に示される)A乗算器(「A MULT」)信号344、である。
【0046】
また、マルチプレクサ306、ANDゲート322、ANDゲート321、加算器/減算器331が、それぞれ、inmode202のバスのビット位置0〜3をそれぞれ表わすinmode202−0〜202−3によって、動的に動作させる目的で制御されることが認識されるはずである。inmode202−0および202−3は出力または関数を選択するための制御選択信号として用いられており、inmode202−1および202−2は、それぞれ、それらの状態によってANDゲート322および321の出力に影響を及ぼすかまたは影響を及ぼさないよう動作する。
【0047】
ANDゲート321および322が動的に制御可能であることに加えて、ANDゲート321および322のいずれの出力も、加算器/減算器331に入力される0の供給源として用いられ得る。したがって、ANDゲート322が加算器/減算器331に0オペランド入力を与える場合、マルチプレクサ305の出力として与えられ得るD入力201の入力が、レジスタ313および314、すなわち2段のレジスタ経路、を通過し得ることが認識されるべきである。代替的には、0がANDゲート321の出力から得られ、加算器/減算器331が用いられる場合、A入力211またはAC入力の341のどちらかのための3段のレジスタ経路を備える、すなわちA1レジスタ311、A2レジスタ312およびADレジスタ314を通る、ことが可能となる。
【0048】
図4は、図2のDSPスライス200のデュアルBレジスタ242の具体的な実施例を示す回路図である。B入力信号(「B入力」)212およびBC入力(「BCIN」)信号(「BC入力」)441は、入力としてマルチプレクサ401に与えられる。デュアルBレジスタ242のマルチプレクサ401〜404は、マルチプレクサ301〜304のように、動作中には静的である。すなわち、それらの出力は、FPGAの構成中に設けられるが、動作中には動的に再構成できない。マルチプレクサ405は、マルチプレクサ306と同様に、この実施例の場合にはinmode202のバスのうちのビット位置4を表すinmode202−4に応じて、動的に動作可能である。B1レジスタ411およびB2レジスタ412はA1レジスタ311およびA2レジスタ312に対応する。同様に、マルチプレクサ401〜404は、それぞれ、マルチプレクサ301〜304に対応する。さらに、マルチプレクサ405はマルチプレクサ306に対応する。マルチプレクサ404からの(図2に例示的に示される)BC出力(「BCOUT」)信号(「BC出力」)443はAC出力343に相当するが、この実施例の場合、ビット幅がより狭くなっている。
【0049】
同様に、Xマルチプレクサ(「X MUX」)信号442はXマルチプレクサ信号342に対応するが、この実施例の場合も、ビット幅がより狭くなっている。Xマルチプレクサ信号342および442が、Xマルチプレクサ252に入力されるべき、概して図2のAB信号250として示されるように連結されたABであることが認識されるべきである。
【0050】
マルチプレクサ405の出力は、別の乗算器オペランド信号、すなわち(図2に例示的に示される)B乗算器(「B MULT」)信号444であり、A乗算器信号344に対応する。B乗算器信号444およびA乗算器信号344は、この実施例の場合、異なるビット幅を有しているが、両方の出力が入力オペランドとして図2の乗算器251に与えられてもよい。デュアルBレジスタ242が、前置加算器204のデュアルAレジスタ部分と同じであるかまたは類似しているので、明瞭にするために説明は繰り返さない。
【0051】
同時に図2〜図4を参照して、DSPスライス200をさらに説明する。Inmode202は動的制御バスとみなされてもよい。inmode202に加えて、他のレジスタ制御信号として、クロック信号、クロックイネーブル信号、セット信号またはリセット信号があり得る。これらの信号は、限定ではなく明確にするために、レジスタに入力されるものとしては示されていない。
【0052】
AB連結信号250はその経路内にMレジスタ253を有していない。このため、AとBとの間の乗算演算は3つのパイプラインレジスタ段を有し、連結されたAB(「A:B」)およびCの追加などの加算演算は2つのレジスタ段を有する。しかしながら、A2レジスタ312およびB2レジスタ412を用いることにより、レジスタA2 312およびレジスタB2 412を用いて、レジスタパイプライン段を設けてもよい。これは、他の場合には、Mレジスタ253に関連付けられることとなる。言い換えれば、Xマルチプレクサ252への入力用のパイプライン段の数は、DSPスライス200内と同じになるように構成され得る。これは、レジスタミス、すなわち「バブル(bubbles)」、を避けるのに用いることができる。したがって、動作モードを設定することにより、以下にさらに詳細に述べるように、たとえばA:B+C演算およびたとえばAB+C演算はともに、3クロックサイクルで実行され得る。たとえば、A:B+C演算の場合、A1レジスタ311〜A2レジスタ312〜図2のPレジスタであり、AB+C演算の場合、A1レジスタ311〜Mレジスタ253〜図2のPレジスタとなる(たとえば、同様に、B1レジスタ411〜Mレジスタ253〜図2のPレジスタ)。図2のCレジスタは、上述の両方の例におけるAおよびBよりもレジスタが1つ少ないが、このような差はすべての動作モードで予測可能であり、このため、FPGA構造においては、別のレジスタ段においてCとして追加することの説明となり得る。これにより、バブルを引起こすことなく、交互のクロックサイクルで乗算演算と加算演算とを動的に交互に行なうことが可能となることが理解されるはずである。
【0053】
A1レジスタ311、およびA2レジスタ312、さらにはB1レジスタ411およびB2レジスタ412を用いてレジスタファイル関数を与えてもよい。inmode202に動的制御バス関数があるために、このようなレジスタファイルがランダムアクセスレジスタファイルとして動作する可能性がある。代替的には、A1レジスタ311およびA2レジスタ312だけでなく、B1レジスタ411およびB2レジスタ412も、シフトレジスタ論理(shift register logic:SRL)を与えるよう構成され得る。こうして、ランダムアクセスレジスタファイルおよびSRLの両方の二重機能が、inmodeバス202を介して動的制御を用いてDSPスライス200内で与えられる。バスは、たとえば、信号群もしくは信号トレース群、またはこれらの両方を意味し得る。
【0054】
他の機能としては、前置加算器204を2対1マルチプレクサとして使用させることもできる。これは、オペランドのうちの1つを0にすることによりADレジスタ314に対する出力用の加算器/減算器331を入力間で選択させることによるものである。言い換えれば、ANDゲート322および321の出力のうちの一方は、inmode202−1および202−2に応じてそれぞれ強制的に0にされ得る。加えて、A入力経路の出力が負である場合、0がD経路に沿ってオペランド入力から加算器/減算器331に与えられ得る。このため、加算器/減算器331を用いて、加算器/減算器331に与えられるAまたはACオペランドの絶対値を生成することが可能となる。さらに、A1レジスタおよびA2レジスタを用いてビットをシフトさせることにより、2の補数反転が実行され得る。
【0055】
要約すると、inmode202−0は、非/A1/A2選択信号として用いられる。Imode202−1を用いて、Aレジスタ経路、すなわちレジスタA1およびA2(「Aレジスタ」)に沿った出力をゼロにしてもよい。言い換えれば、出力をゼロにする能力は、リセットを用いたりレジスタ内容を破壊したりすることなく、AレジスタとDレジスタとの間の多重化を容易にする。Inmode202−1が論理1と等しい場合、加算器/減算器331へのA経路入力261は強制的に0にされる。こうして、前置加算器331に対するD経路入力262が出力用に有効に選択され得る。加えて、inmode202−1が論理1と等しい場合、マルチプレクサ305に対するA経路入力261を用いて、A乗算器信号344を強制的にゼロにしてもよい。しかしながら、A乗算器信号344を強制的にゼロにするために、Dポート設定、すなわち、制御選択信号をマルチプレクサ305に与えるための構成メモリセル設定が、Dポートを使用不能にするよう設定される。すなわち「if use_D port = false」である。
【0056】
Inmode202−2を用いて、inmode202−1に関して上述したラインに沿ったDレジスタ313の出力をゼロにし、Aレジスタ選択済み経路の出力をゼロにしてもよい。こうして、加算器/減算器331に対するD経路入力262が論理0になり、これを用いて、A経路入力261とD経路入力262との間の多重化を容易にし得る。さらに、電力節約のために、inmode202−1およびinmode202−2を動的なパワーゲーティングに用いてもよい。inmode202−1が論理1状態であれば、加算器/減算器331に対するA経路入力261が強制的に0にされる。また、inmode202−2が論理0状態であれば、加算器/減算器331に対するD経路入力262が強制的に0にされる。加算器/減算器331に対する両方の入力が論理0であれば、加算器/減算器331の演算で消費される電力が少なくなる。というのも、このような条件下では加算器/減算器331内にトランジスタスイッチングがないからである。このように、「動的なパワーゲーティング」とは、加算器/減算器331の機能が選択されていない場合、加算器/減算器331に対する両方の入力が論理0に設定され得ることを意味する。加算器/減算器331にオペランド入力として一定の論理値を与えることにより、加算器/減算器331は切替わらない。このことは電力を動的に節約するのに用いられてもよい。言い換えれば、加算器/減算器331に対するオペランド入力を動的に固定するためにinmodeが動的に設定され得るので、加算器/減算器の機能は動的に選択または選択解除することもでき、後者の場合には、動的な電力節約が実現され得る。
【0057】
Inmode202−3を用いて、加算器/減算器331により、A入力経路261のAオペランドをD入力経路262のDオペランドに加えるかまたはD入力経路262のDオペランドから減じてもよい。また、A入力経路261上のAオペランドの動的な反転を絶対値関数として用いてもよい。言い換えれば、たとえばA1またはA2に保持されるレジスタ値は、上述したようにDオペランド入力262を強制的に0にさせることによって動的に反転させもよい。
【0058】
Inmode202−4は、inmode202−0がA1/A2レジスタ選択信号として用いられ得るのと同じようにB1/B2レジスタ選択信号として用いられてもよい。したがって、カリフォルニア州、サンホセにあるザイリンクス社から入手可能なSpartanTMFPGA DSP 48Aにおいてなされたのと同様に単に前置加算器をDSPに追加する場合よりもDSPスライス200の機能がはるかに優れていることが認識されるはずである。
【0059】
さらに、(A+ai)(B+bi)=(AB−ab)+(Ab+aB)iなどの虚数乗法演算が実行され得ることが認識されるはずである。Aおよびaは、それぞれのレジスタに与えられる別個のクロックイネーブル信号を用いることによって、そして、inmode202−0に応じてマルチプレクサ306からこのような2つのオペランドのうち1つのオペランドを選択的に出力することによって、A2レジスタ312およびA1レジスタ311にそれぞれ入力される別個のオペランドであり得る。同様に、Bおよびbは、それぞれのレジスタに与えられる別個のクロックイネーブル信号を用いることによって、そして、inmode202−4に応じてマルチプレクサ405からこのような2つのオペランドのうち1つのオペランドを選択的に出力することによって、B2レジスタ412およびB1レジスタ411にそれぞれ入力される別個のオペランドであり得る。オペランドA、B、aおよびbは、BRAMに局所的に記憶され得る。オペランドが再使用されるので、BRAMは、DSPスライス200によって2クロックサイクルおきのバーストにおいてのみアクセスされ、例示的な虚数乗法演算のために一度だけ読取られ得る。というのも、A1、A2、B1およびB2のそれぞれのレジスタを用いて、このようなオペランドの実数部および虚数部を局所的に記憶し得るからである。虚数乗法の例が用いられたとしても、たとえば(A:a)(B:b)などの連続的な乗算を実行するために同じことが述べられる可能性があることが理解されるはずである。限定ではなく例示を明確にするために、(A:a)(B:b)について42ビット34ビットであると仮定すると、AB+sh17(A0b+B00000000a+sh17(0b00000000a)によって結果が得られる可能性がある。この場合、「sh17」は17ビットシフトを示す。
【0060】
図5は、inmode関数表500の具体的な実施例を示す表図である。表500の最初の5つのカラムは、inmode202−4から202−0にそれぞれ対応するinmodeビット4〜0の起こり得る論理状態をそれぞれ示す。Inmode202−4はB2/B1レジスタ選択信号であり、このため、論理0がinmode202−4の状態である場合、レジスタB2の内容は乗算器Bポート444入力として与えられてもよく、inmode202−4が論理状態1である場合、乗算器Bポート444入力はB1レジスタ411の内容となる。したがって、表500の第1のカラムの論理0および論理1は、それぞれ、表500の最後のカラムのB2およびB1に対応する。
【0061】
表500の第6のカラムは、(図3に例示的に示される)制御選択信号501として概して示される、図3のマルチプレクサ305の選択制御を制御するのに用いられるメモリセルのプログラミング状態を示す。このため、制御選択信号501は、Dポート、すなわちD入力201、が使用中であるかどうかを示す。表500の最初の4つの行に示されるように、偽値は前置加算器204のDポートが使用されていないことを示す。カラム501における残りの行は、前置加算器204のDポートが使用中であることを意味する制御信号501についての真値を示す。
【0062】
表500の第7のカラムは、乗算器Aポート344上のオペランド入力を示す。例示的に図示された起こり得るオペランド入力はDレジスタのためのA1またはA2に保持された値である。加えて、先に述べたように、論理0はA乗算器出力344として与えられてもよい。さらに、ADレジスタ314に記憶されたD+A2、D+A1、D−A2またはD−A1のオペランド値を加えることによって得られる値は、A乗算器出力344として与えられてもよい。符号A1/A2およびB1/B2は、それぞれ、1段および2段のレジスタを記述するのに用いられる。加算器/減算器331に対するA入力オペランドがオフにゲート制御される場合、レジスタD313およびレジスタAD314は、組合されると、Dポート201のための2段のレジストレーションのように現われる。このように、符号D1/D2は、それぞれ、1段および2段のレジストレーション用のD/ADレジスタを指す。
【0063】
SpartanTMFPGAにおいては、前置加算器が入力レジスタと出力レジスタとの間に位置決めされ、ここで出力レジスタが乗数を供給する。しかしながら、この構成はシストリックフィルタを実現するのに用いることができない。以下の説明においては、シストリックフィルタを実現するためのDSPスライス200を説明する。
【0064】
前置加算器204およびデュアルBレジスタ242が追加されたDSPスライス200が、連続した虚数乗法、連続した乗算および連続した複素共役演算をサポートできることが理解されるはずである。加えて、A2レジスタおよびB2レジスタをMレジスタ253に対して本質的に仮想レジスタとすることによりAB連結経路とAB乗算経路とのバランスをとる能力は、3段パイプラインで乗算演算と加算演算とを動的に切替えることを可能にする。さらに、2つの深い入力レジスタのいずれかに書込むかまたは2つの深い入力レジスタのいずれかから読取るためにA1、A2、B1、B2のレジスタに動的にアクセスする能力は、上述のように、inmode202によって促進される。さらに、どちらかの前置加算器入力ポートに0を入力させる融通性があることにより、マルチチャンネルフィルタが簡易化される。
【0065】
3セットのフィルタ係数は、A1レジスタ311、A2レジスタ312およびDレジスタ313を使用するなどして、局所的に記憶されてもよく、対称的な演算から非対称的な演算に動的に、すなわちクロックサイクルごとに、切替えることができる。加えて、加算および減算関数が不要であれば、加算器/減算器331を用いるAD多重化能力が動的な演算のためにサポートされることが認識されるべきである。3セットのフィルタ係数が局所的に記憶される場合、前置加算器の対称性は用いられていない。生データは、A入力ポート211および/またはAカスケード入力ポート341ではなく、B入力ポート212および/またはBカスケード入力ポート441を介して与えられており、フィルタ係数は、加算器/減算器331を用いて多重化機能を与えることによって選択され得る。このように、非対称的なフィルタは3セットのフィルタ係数で実現可能となる。
【0066】
図6は、先行技術の8タップの偶数の対称的なシストリック有限インパルス応答(「FIR」)フィルタ600の具体的な実施例を示すブロック/回路図である。FIRフィルタ600は、動作モード(「OPMODE」)でプログラムされたDSPブロック106で構成される。したがって、DSPブロック106−1〜106−4は、結果として得られるカスケードされた出力、すなわち「P」カスケード603、を与えるためにカスケードされた出力を有する先行技術のDSPを表す。これまで、シフトレジスタ論理(shift-register logic:SRL)604は、FPGA構造602においてレジスタで形成されてきており、このため、性能に対して抑制する作用を果たしていた。加えて、前置加算器段605および入力レジスタ段606はFPGA構造602において予め形成されていた。
【0067】
図7は、DSPスライス200−1〜200−4を有する8タップの偶数の対称的なシストリックFIRフィルタ700の具体的な実施例を示すブロック/回路図である。DSPスライス200−1〜200−4の各々は図2のDSPスライス200であり得る。図2〜図4を再び参照し、かつ図7を引き続き参照して、FIRフィルタ700をさらに説明する。8タブフィルタを例示的に示しているが、8よりも少ないかまたは多いタップが実現され得るため、4つよりも少ないかまたは多いDSPスライス200が実現され得ることが認識されるはずである。DSPスライス200−1は0、0、0、0、1、0、1のOPMODEに対して設定され、DSPスライス200−2〜200−4は各々、OPMODE 0、0、1、0、1、0、1で設定される。これらのOPMODEは、図6のFIRフィルタ600の場合には同じであり、予め公知であるので、この明細書中には不必要に詳細には記載されない。
【0068】
FIRフィルタ700が図6のFIRフィルタ600とは異なる設計であったとしても、FIRフィルタ600のレジスタ606が前置加算器605の入力へと推し進められる場合、図2のA入力ポート211またはFIRフィルタ700のフィルタ入力x(n)701などの、前置加算器331に対するA入力は、2つのタップ付き遅延線値を整合させる2つのパイプライン型遅延段を備える。したがって、SRL604などのレジスタ遅延線からのタップオフや、リバランシングのためのAポートレジスタ606への接続とは対照的に、このようなタッピングは、FIRフィルタ700で例示的に示されるように回避され得る。前置加算器605のA入力に対するレジスタ606のミラーリングも回避され得る。言い換えれば、このようなミラーリングは用いられない。というのも、2段のAレジスタ出力、すなわちAレジスタ311および312、を用いて、たとえば、ミラーリングされた経路を介して予め与えられたのと同じ生データを提供することもでき、このため、このようなミラーリングされた経路が排除され得るからである。このように、前置加算器605のD入力側のレジスタ606に対するミラーレジスタは、実質上、FIRフィルタ700におけるDレジスタ313と置換えられる。106−1における第1のレジスタは、こうして、前置加算器出力レジスタ、すなわち、DSPスライス200−1におけるADレジスタ314となる。FIRフィルタ600の前置加算器A入力上における余剰のレジスタをなくすことに加えて、FIRフィルタ700においては、FIRフィルタ600とは対照的に、A1レジスタ入力およびA2レジスタ入力の両方を同時にタップオフする必要がなくなる。
【0069】
しかしながら、FIRフィルタ600とは対照的に、FIRフィルタ700の場合、入力レジスタ段606が前置加算器段605の入力にまで動かされ、前置加算器段605が入力レジスタ606とともにDSPにおいて実現されてもよく、FPGA構造602においてはSRL604だけが実現される。SRL604は、たとえば8つのレジスタ段を備えたSRL16である。SRL604に対する入力はフィルタ入力x(n)701であり、SRL604からの出力は、DSPスライス200−1〜200−4のDレジスタ313の各々に並列に与えられる、すなわち同報通信される。
【0070】
フィルタ入力x(n)701がまた、DSPスライス200−1〜200−4の連鎖のうち最初のレジスタに与えられる。FIRフィルタ700に対する入力は、このようなFIRフィルタ700が実現されるFPGAに対してオンチップまたはオフチップで得られてもよい。フィルタ入力701は、DSPスライス200−1のA1レジスタ311およびA2レジスタ312に与えられ、さらに、シフトレジスタの形式で、すなわち連続して入力するように、他のDSPスライスの各々のA1レジスタおよびA2レジスタに与えられる。この実施例においては、DSPスライス200−1〜200−4のA1レジスタ311およびA2レジスタ312は、組合わされると、SRL604が有するのと同じレジスタ段の数および遅延を有することとなる。
【0071】
SRL604に対するフィルタ入力701は、DSPスライス200−1〜200−4に対して同報通信される前はD入力201である。この実施例においては、D入力201は、DSPスライス200−1〜200−4の各々に同報通信されるので、FPGA構造において実現される。フィルタ入力701はまた、DSPスライス200−1、すなわち第1段のDSPスライス、への入力A211として与えられる。しかしながら、DSPスライス200−2〜200−4に対する入力の場合、このような入力は、カスケードにおける次の段に対するAC入力341として与えられるAC出力343となる。
【0072】
4つの係数hからhは、それぞれ、B入力ポート、すなわち、DSPスライス200−1〜200−4のB入力212、に与えられる。この実施例においては、係数hからh、すなわち係数703は、それぞれ、DSPスライス200−1〜200−4の各々のB入力ポート212に与えられる。このため、係数はカスケードされない。言い換えれば、BC入力441およびBC出力443はこの実施例においては用いられない。係数703はB1レジスタ411またはB2レジスタ412のいずれかに入力され得る。限定ではなく例示を明確にするために、B1レジスタ411が用いられると想定する。しかしながら、B1レジスタ411の代わりにB2レジスタ412が用いられてもよく、または、B1レジスタとB2レジスタとの組合わせが用いられてもよいことが認識されるべきである。
【0073】
PC出力802は、DSPスライスの各々の間においてPC入力801でカスケードされる。DSPスライス200−4のPC出力により、結果としてフィルタ出力y(n−8)710が得られる。二重タップ遅延711は、タイミング調整を行なうためにSRL604に入力される。
【0074】
DSPスライス200がモジュール式構成要素としてVHDLを用いてモデル化され得ることが認識されるべきである。図8は、DSPスライス200−2の具体的な実施例を示すブロック/回路図である。DSPスライス200−2は、対称的なシストリック加算−乗算−加算処理モジュールを実現するためのこの実施例について先に述べたような0、0、1、0、1、0、1のOPMODEを有し得る。
【0075】
また、AC入力341は、A1レジスタ311およびA2レジスタ312に連続して与えられる。D入力201は各々、Dレジスタ313に与えられ、それらのレジスタの出力は加算モードで加算器/減算器331に与えられる。
【0076】
また、レジスタ312の出力は、AC出力343として下流のDSPスライス200−3に、すなわち、このような下流のDSPスライス200−3のAC入力341に連続して与えられる。同様に、AC入力341は、上流のDSPスライス200−1のAC出力343から得られる。
【0077】
B入力212は各々、B1レジスタ411などのBレジスタに対する係数を受取る。加算器/減算器331の出力がADレジスタ314に与えられ、レジスタ411および314の出力が乗算器251に与えられる。
【0078】
乗算器251の出力がMレジスタ253に与えられる。Mレジスタ253の出力は、加算器と、さらには後続の出力レジスタ段とに与えられる。このことは、先行技術においてなされており、明確にするために不必要に詳細には説明されない。さらに、先行技術において実行されているので、明確にするために不必要に詳細には説明されないが、上流のDSPスライス200−1のPC入力802から獲得され得るPC入力801がこのような加算器に入力されてレジスタ253の出力と合計され、このような加算の結果が出力レジスタに与えられて、下流のDSPスライス200−3にPC出力802が与えられる。
【0079】
図9は、9タップの奇数の対称的なシストリックFIRフィルタ900の具体的な実施例を示すブロック/回路図である。FIRフィルタ900が図7のFIRフィルタ700と同様であるので、明瞭にするためにその違いだけを記載する。SRL904は、先に記載したようにD入力201を同報通信するための9段のシフトレジスタである。付加的なDSPスライス、すなわち、DSPスライス200−5が、出力y(n−9)910を生成するために最終ステージとして追加される。加えて、係数903の付加的な係数hが入力としてDSPスライス200−5のBレジスタ411に与えられる。DSPスライス200−5は、DSPスライス200−2〜200−4と同じOPMODEを有する。
【0080】
D入力201がDSPスライス200−5のレジスタ313にシフトされる可能性があるが、DSPスライス200−5はDポートを使用不能にするように構成されるか、または、DSPスライス200−5の加算モードで、D入力経路262を介して加算器/減算器331に0が入力される。したがって、動的な構成を用いて、FIRフィルタ900などのFIRフィルタの最終段におけるDSPスライス200−5などの奇数スライスを、タップフィルタの奇数として演算する目的で動的に変更させ得ることが認識されるはずである。同様に、A入力経路261は、レジスタ311および312中の内容がDSPスライス200−5の加算器/減算器331において現われないように動的に変更されてもよいが、むしろ、論理0が算器/減算器331の両方の入力ポートに与えられる。
【0081】
言い換えれば、inmode202−1および202−2を適切に設定することにより、加算器/減算器331への両方の入力が0になり得る。加えて、偶数のフィルタの場合、h903などの奇数の係数が存在し得ず、このため、いずれかの未使用のタップ用の係数入力も論理1または論理0になる可能性がある。このように、レジスタ253からの出力は論理0であってもよく、この論理0は最終段の加算器に与えられて、実質上、余剰なパイプライン遅延のある状態で図7のy(n−8)710である出力を与え得る。結果として得られるフィルタは、図9のy(n−9)910の出力待ち時間を有する8タップフィルタである。このように、先に記載されたinmode202−1および202−2を用い、奇数のDSPスライスを有することにより、このようなDSPフィルタが奇数または偶数の対称的なシストリックFIRフィルタリングを行なうよう動的に調整可能になり得ることが認識されるはずである。SRL16はさまざまなフィルタ長に対応するよう動的に調整され得る。したがって、9タップフィルタをy(n−9)910の出力を有する8タップフィルタに変換する従来の例の場合、SRL16はz−8となる。
【0082】
加えて、この実施例においては、演算時、またはFIRフィルタへのデータのシフト時にタイムラグがあり、このため、動的な調整だけでなく、あるシーケンスのFIR演算から別のシーケンスのFIR演算までのデータも同様に、シャドウ化される可能性がある。言い換えれば、奇数のFIR演算などの1つのFIR演算の完了を待つことなく、先行するFIR演算シーケンスを完了させるようFIRフィルタを動作させつつ、後続のFIR演算用のデータおよびパラメータがFIRフィルタにシャドウ化され得る。奇数のFIRシーケンスの演算から偶数のFIRシーケンスの演算についても同様である。
【0083】
図10は、図9のFIRフィルタ900の代替例である9タップの奇数の対称的なシストリックFIRフィルタ1000の具体的な実施例を示すブロック/回路図である。この実施例においては、奇数演算の場合、加算器/減算器331は、実際には、D入力経路262から0を入力させていない。このため、実質上、この実施例ではDSPスライス200−5である最終のDSPスライスが、それ自体に数を追加して、実質上、数を2倍にする。したがって、係数1003は0.5hとなる。これは、実質上、このようなスライスの加算器/減算器331による加算の影響を無効にするために、DSPスライス200−5において、2x(n)に0.5hを掛けることを意味する。この実施例においては、係数1003の精度がいくらか失われる可能性がある。しかしながら、この実施例は、inmode202−2を介して動的にD入力201を調整する必要なしに、DSPスライスのタイリングを可能にする。
【0084】
図9および図10の実施例のいずれにおいても、最後のDSPスライスにより、実質上、奇数の対称的なシストリックFIRフィルタリングのための前置加算器演算が回避される。最後のタップでは、さまざまな処理が用いられるかまたはオペランド入力として論理0が強制される。
【0085】
したがって、この実施例においては、複数段のFIRフィルタが実現され得る。このようなFIRフィルタは、適用例に応じて可能な限り長いFIRを使用できるように実現され得る。このようなFIRフィルタは、たとえば時分割多重化の応用例において用いられてもよく、この場合、さまざまな長さのFIRフィルタが、プログラマブルロジックを再構成することなく動的に設定される。言い換えれば、D入力201を同報通信するためのシフトレジスタは、ユーザアプリケーションの最長のFIRフィルタ用に設定され得るが、SRL遅延は、フィルタ内のタップの数と一致するよう動的に変更される。
【0086】
inmodeを用いて動的に設定するための奇数のFIRフィルタのうち最後のDSPスライスしか説明していないが、FIRの端部におけるいくつかのDSPスライスがそのようなものとして動的に設定され得ることが認識されるはずである。したがって、上述の9タップFIRフィルタにおいては、このようなFIRフィルタは、9タップから1タップにまで、または、実質上タップなしでバイパスモードで、シフトレジスタを実現するのに用いられるプログラマブルロジックを再構成することなく、動的に調整され得る。より一般的には、フィルタ入力列x(n)は、フィルタ出力列y(n−p)を与えるためにFIRフィルタを形成する一連のDSPへの入力用に結合され得る。この場合、pはタップの有効数の整数であり、動的に調整可能である。
【0087】
概して一定の係数を説明してきたが、このような係数が応用例ごとに異なり得ることが認識されるべきである。また、2段のレジスタバッファリングが用いられるので、或る1つのFIR段数から次のFIR段数への情報のシャドウ化が用いられてもよい。この場合、転送は各々の段毎に互い違いにずらされる。
【0088】
図11は、FIR使用時のフロー1100の具体的な実施例を示すフロー図である。1101においては、使用されるすべての応用例のうち最長の段数を有するFIRフィルタが実現される。1102においては、当時で最新の応用例に用いられるいくつかの段が得られる。1103においては、FIRフィルタが、正確な長さになっていなければ、1102において見出されるような使用される数の段に対応できるよう動的に調整される。1104においては、別のFIRシーケンスを実行すべきかどうかが判断される。他のいずれのFIRシーケンスも実行すべきでなければ、フロー1100は1199で終了し得る。1104において判断されたように、別のFIRシーケンスを実行すべきであれば、他のこのようなFIRシーケンスのための入力が1105において獲得され、シャドウ化され得る。1103においてFIRフィルタを(必要であれば)動的に調整するために、使用する段の数が1102において決定されてもよい。
【0089】
したがって、連鎖中に奇数個のDSPブロックがあったとしても、このようなフィルタを偶数個のタップを有するものとして動作させるために、末尾の1つ以上のDSPブロックを動的に初期化するよう、ゲーティングロジックによりこのようなフィルタがゲート制御され得ることが認識されるべきである。さらに、このようなゲーティングロジックは、連鎖中に偶数個のDSPブロックがあったとしても、このようなフィルタを奇数個のタップを有するものとして動作させるために、末尾の1つ以上のDSPブロックを動的に初期化するのに用いられてもよい。
【0090】
図12を参照すると、この発明の代替的な実施例に従った、対称的な転置コンボリューション有限インパルス応答フィルタ(FIR)を実現する回路のブロック図が示される。図12の実施例が示すDSPブロックの構成はDSPスライス200を含み得る。このDSPスライス200は、DSPブロックの前置加算器を用い、レジスタを有する対称的な転置コンボリューションFIRフィルタが、単一のDSPブロックにおける共通の係数が乗じられる共通の係数を有するタップに必要な遅延を与えることを可能にするように構成され得る。レジスタを含む遅延の選択は、実現されるフィルタの機能に依存することとなり、この場合、図12〜図14のDSPブロックにおける適切な遅延は、上述の図3の回路または他の好適な回路を用いて実現され得る。DSPブロックは、同じ要素を含むことが好ましいが、異なる態様に構成することもできる。一例として、図1に関して上述されたプログラマブル相互接続部などのプログラマブル相互接続部は、図示されるような遅延を接続するのに用いられてもよく、または、構成ビットは、図3を参照して記載されるようなマルチプレクサを選択するのに用いられてもよい。
【0091】
図12〜図14の実施例は、奇数個のタップを有する対称的な転置コンボリューションFIRフィルタに関連しているため、DSP段のうちの1つがタップを1つしか受取らず、他のDSP段が共通の係数を有する複数のタップを受取ることとなる。図12〜図14において構成されるように、DSPブロックの配置および構成により、対称的な転置コンボリューションFIRフィルタが、方程式y(n−4)=kx(n−4)+kx(n−5)+kx(n−6)+kx(n−7)+kx(n−8)に従って実現可能となる。これは、因数分解された形式で書くと、k{x(n−4)+x(n−8)}+k{x(n−5)+x(n−7)}+kx(n−6)であり、または、図12および図13に示されるような乗算器への入力のタイムフレームで表すと、因数分解された形式では、y(n−2)=k{x(n−2)+x(n−6)}+k1{x(n−3)+x(n−5)}+kx(n−4)として表される。各フィルタタップの生データインデックスはy(n−4)の内積計算の結果として示される。このように、乗算器1210に入力された最も右側のタップx(n−2)がx(n)と合致し、他方のフィルタが、時間内での異なるスナップショットにおける生データを示す。z−1が1つの遅延を表し、z−2が2つの遅延を表わしている遅延は、図3において上述されたAcascadeパイプライン遅延(311および312)に従って実現され得る。たとえば、加算器1206は図6の加算器/減算器331によって実現されてもよく、この場合、加算器/減算器331への入力信号の有する選択された遅延値は、上に述べたような図3のマルチプレクサへの選択入力に基づいている。
【0092】
構成1200を示す図12の実施例においては、第1の段200−1が、第1のレジスタ1202に結合されるx(n)信号を含む入力1201を受取る。図13を参照して以下により詳細に記載するように、第2のレジスタ1204が用いられてもよい。レジスタ1202の出力および0を受取るよう結合されたDSP段200−1における加算器1206が示されているが、加算器1206は、図13の構成1300におけるDSP段200−2および200−3ならびにDSP段200−1に図示されるように、レジスタ1202および1204の出力を受取るよう結合され得る。なお、加算器1206が反転符号を有する係数を処理するために減算器としても実現され得ることに留意されたい。レジスタ1208は加算器1206の出力に結合され、乗算器1210に結合される出力を有する。乗算器1210はまた、レジスタ1212からの係数を含む因数を受取る。乗算器1210の出力におけるレジスタ1214も加算器1216に結合され、その出力がレジスタ1218に記憶される。加算器916への入力が第1の段200−1において0である間に、加算器1216が、DSPブロック200−2および200−3に関して図示したような先行の段の出力を受取り得る。信号y(n−4)を含む出力1220は、DSP段200−3のレジスタ1218において生成される。
【0093】
第1の段が奇数個のタップのうち中間のタップを含んでおり、このため、単一のタップしか加算器1206に結合しないことに留意されたい。しかしながら、第2の段および第3の段の各々は、共通の係数を有する2つのタップを受取る。図12の実施例に従うと、第2のDSP段200−2は、(x(n−5)+x(n−3))を共通の係数kを受取る乗算器1210の一方の入力に結合し、第3のDSP段200−3は、(x(n−6)+x(n−2))を共通の係数kを受取る乗算器1210の一方の入力に結合する。加算器1206または乗算器1210に関連付けられる遅延の数は、加算器1206または乗算器1210において正確な入力が受取られることを確実にするよう選択される。たとえば、図3のマルチプレクサに適切なマルチプレクサ選択信号を与えることによって正確な数の遅延が選択され得る。図13に図示のとおり、DSP段200−1はレジスタ1204を実現するよう構成され得る。この場合、2x(n−4)が乗算器1210の一方の入力に与えられ、k/2が他方の入力に与えられる。図12〜図12の実施例は、対称的な転置コンボリューションFIRフィルタのー例を示しており、他の方程式によって表わされるフィルタが実現され得ることが理解されるべきである。さらに、図12および図13の実施例を用いることにより、入力が共通の係数を有し得る如何なる機能をも実現することができ、共通の係数を有する因数がいくつも実現され得る。
【0094】
なお、タップの最初の数が偶数であるか奇数であるかにかかわらず、この発明の1つ以上の回路が機能することに留意されたい。図14の構成1400に図示のとおり、奇数のタップを有するフィルタ関数が実現される。特に、対称的な転置コンボリューション有限インパルス応答フィルタを実現する回路のブロック図は、方程式y(n−4)=kx(n−4)+kx(n−5)+kx(n−6)+kx(n−7)+kx(n−8)+kx(n−9)に従って、3つのDSPブロックにおいて実現される6タップを示す。この方程式は、因数分解された形式で書くと、y(n−4)=k{x(n−4)+x(n−9)}+k{x(n−5)+x(n−8)}+k{(x−6)+x(n−7)}であり、または、図14に示されるような乗算器への入力のタイムフレームで表すと、因数分解された形式では、y(n−2)=k{x(n−2)+x(n−7)}+k{x(n−3)+x(n−6)}+k{x(n−4)+x(n−5)}として表される。図14から分かるように、各々の段は、共通の係数を有する2つの入力を受取る。この場合、段200−1のDSPが係数kに関連付けられたタップを受取り、段200−2のDSPが係数kに関連付けられたタップを受取り、段200−3のDSPが係数kに関連付けられたタップを受取る。
【0095】
所望のクロックサイクルでの前置加算器へのデータサンプルの到達が、ACOUT/ACIN伝搬経路を通じて制御される前置加算器を採用することにより、装置資源の消費がより少なく、電力消費のより少ないフィルタが実現され得る。すなわち、5つのDSPブロックにおいて図12および図13のフィルタを実現したり、6つのDSPブロックにおいて図14のフィルタを実現したりするのではなく、フィルタの各々が3つのDSPブロックにおいて実現され得る。さらに、図15を参照して以下にさらに詳細に記載するような方法により、フィルタについての包括的で最適化されていない高水準の記述を最適化された形式に変換することが可能となる。この方法は、最適な方法でこのようなフィルタをマニュアルで記述しようとする人であれば誰でも使用可能であるだけでなく、如何なる合成ツールにおいても新しく高度な推論能力として自動化もされ得る。すなわち、たとえば図12〜図14において実現されるようなDSPブロックの記述をユーザが提供するのではなく、合成ツールが、対称的な係数を自動的に検出し、加算器1206などの前置加算器を活用できるようDSPブロックを構成し、これにより、フィルタを実現するのに必要なDSPブロックの数を減らし得る。したがって、この発明の1つ以上回路および方法では、DSPの前置加算器を用いて対称的な結合を実行することによって係数の対称性が推進されて、カスケードされたDSPブロックの数が最小限にされる。
【0096】
この発明の1つ以上の回路および方法が、結果として、シストリックフィルタ実現例などの他の実現例と比べて、回路性能の点で如何なる不利点ももたらさないことに留意されたい。DSPブロック連鎖は、DSPブロック間においてPcascade(PCOUT/PCIN)およびAcascade(ACOUT/ACIN)を含む高速接続を採用することによっていずれの場合にも最適化される。加えて、この発明の1つ以上の回路および方法により、確実に、連鎖における各々のDSPブロックが、レジスタ1202、1204、1208、1214および1218を含むブロックにおいて利用可能なパイプライン段を用いることにより、最適な性能が得られるように完全にパイプライン化されることに留意されたい。加えて、どちらの場合にも、DSP段の数と等しい論理出力数が暗黙に定義されている。これは、シストリック実現例の場合にはシフトレジスタの出力において見出され、上述の転置コンボリューション実現例の場合には受信データノード自体において見出される。
【0097】
最後に、変換原理が包括的であり、そして、この変換原理が、符号−k2、−k1、−k0、k0、k1、k2を有する係数などの対称的な係数間に符号反転がある場合、または、符号反転がない場合に作用することに留意されたい。現在では、公知または共通のフィルタ応用例に対処する必要はないかもしれないが、係数のうちのいくつかが符号反転され、−k2、k1、k0、k0、k1、k2の符号を有する係数などの他の係数が符号反転されていない混在した状況においても、この発明の1つ以上の回路および方法は適用され得る。
【0098】
ここで図15を参照すると、フローチャートにおいて、この発明の実施例に従った集積回路においてフィルタを実現する方法が示される。図15の方法は、上述の図1〜図14のいずれかにおいて、または他のいくつかの好適な回路で実現され得る。回路の高水準設計がステップ1502において受取られる。たとえば、高水準設計は、HDL記述であってもよく、または、フィルタを有する回路の他の何らかの高水準言語記述であってもよい。上述のとおり、フィルタの記述は係数および関連付けられるタップに基づいたフィルタの記述と同じくらい単純であり得る。高水準設計でのフィルタがステップ1504において識別される。フィルタの係数はステップ1506において分析される。フィルタは、共通の係数に対応するよう処理ブロックの構成を用いて構成される。この場合、単一の処理ブロックが、ステップ1508において、共通の係数に関連付けられるタップを受取るよう結合される。処理ブロックの構成は、たとえば、図12〜図14に関連して図示および記載されるように実現されてもよい。処理ブロックの前置加算器の入力に対する必要な遅延がステップ1510において確立される。前置加算器の関数は、フィルタを表わす式中の係数の符号に基づいて、ステップ1512において加算または減算するよう選択される。前置加算器の出力は、ステップ1514において乗算器の第1の入力に与えられる。ステップ1516において、共通の係数が第2の入力として単一の処理ブロックの乗算器に与えられる。最後に、ステップ1518において、集積回路の回路素子を用いた構成に従ってフィルタが実現される。
【0099】
一実施例に従うと、コンピュータプログラムコードが、図16を参照して以下により詳細に記載されるように、制御回路1602などの制御回路において実現され得る。コンピュータプログラムコードは、回路設計を配置構成に変換するコンピュータ読取可能プログラムコードを有するコンピュータ読取可能媒体を含み得る。この場合、コンピュータ読取可能媒体は、高水準設計でフィルタを識別するコンピュータ読取可能プログラムコードと、フィルタの係数を分析するコンピュータ読取可能プログラムコードと、共通の係数に対応するよう構成された回路の処理ブロックを用いてフィルタを構成するコンピュータ読取可能プログラムコードとを含む。処理ブロックは、共通の係数に関連付けられるタップを受取るよう結合される。
【0100】
共通の係数に対応するよう構成された処理ブロックを用いてフィルタを構成するコンピュータ読取可能プログラムコードは、対称的な転置コンボリューションフィルタとしてフィルタを構成するコンピュータ読取可能プログラムコードを含み得る。フィルタの係数を分析するコンピュータ読取可能プログラムコードは、フィルタの対称的な係数を識別するコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、共通の係数を第1の入力として処理ブロックの乗算器に与えるコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、共通の係数に関連付けられるタップの和または差を第2の入力として乗算器に与えるコンピュータ読取可能プログラムコードを含み得る。共通の係数に関連付けられるタップの和または差を第2の入力として乗算器に与えるコンピュータ読取可能プログラムコードは、DSPブロックの前置加算器回路を用いて和を生成するコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトはさらに、集積回路の回路素子を用いてフィルタを実現するコンピュータ読取可能プログラムコードを含み得る。コンピュータプログラムプロダクトは、集積回路において回路を実現するための他の特徴を有し得るか、またはより大きなプログラムの一部であり得る。
【0101】
図16は、この発明の実施例に従ったプログラマブルリソースを有する装置を実現するためのシステム1600のブロック図を示す。特に、制御回路1602は、メモリ1604から入力データを受取りかつメモリ1606に記憶される構成ビットストリームを生成するよう結合される。以下により詳細に記載されるように、入力データは、VHDLなどのハードウェア記述言語(hardware description language:HDL)で定義される回路設計などの高水準設計として記述された回路設計を含み得る。制御回路は、メモリ1606に記憶される構成ビットストリームを生成するソフトウェアを実行するコンピュータを含み得る。構成ビットストリームは、装置において実現されるべき回路設計のDSP回路の構成要素などの構成要素の配置に関連する情報を提供する配置構成を含む。メモリ1606は、プログラマブルリソース1608を有する集積回路装置にロードされる構成ビットストリームを記憶するための不揮発性メモリを含む。プログラマブルリソースは、以下に詳細に記載されるプログラマブルロジック、または集積回路の他のプログラマブル素子であってもよい。この発明の1つ以上の方法は、如何なるタイプの集積回路におけるDSP回路の配置にも適用され得るが、これらの方法は、プログラマブルロジックを有する装置に特定的に適用されており、プログラマブルロジックを有する装置を参照しつつ、以下に詳細に説明される。以下により詳細に記載されるように、制御回路102は、最適化された配置のDSP回路を有する構成ビットストリームを生成する。
【0102】
当技術において周知のように、プログラマブルリソースを有する装置の設計のためのソフトウェアフローは、合成、パッキング、配置および経路指定を含む。合成は、高水準設計の回路設計を、プログラマブルロジックを有する装置に見出される素子の構成に変換するステップを含む。たとえば、制御回路1602によって操作される合成ツールは、以下により詳細に記載するように、回路設計のうち、構成可能な論理ブロック(configurable logic block:CLB)またはDSPブロックにおけるいくつかの関数を実現する部分を実現し得る。この発明の1つ以上の方法を実現し得る合成ツールの一例として、カリフォルニア州、サンホセにあるザイリンクス社から入手可能なISETMツールが挙げられる。この場合、この発明の1つ以上の方法を実現する合成ツールの出力は、DSPブロックの最適化された構成を有する構成ビットストリームを含む。パッキングは、回路設計の部分を、装置のうち構成可能な論理ブロックなどの規定されたブロックにグループ化するステップを含む。以下により詳細に記載されるように、DSPブロックへのDSP回路のパッキングは、この発明のさまざまな方法に従って効率的に実現され得る。配置は、パッキングするステップ中に規定される装置のブロックの位置を決定するステップを含む。この場合、ある設計のブロックが、装置の位置に関連付けられる二次元格子上に配置される。配置は、コンピュータ上で実行される配置ソフトウェア、または、装置において回路設計を実現するためのコンピュータ上で実行されるより大型のソフトウェアパッケージの一部を含み得るプレーサによって実行される。最後に、経路指定は、プログラマブルロジックを有する装置においてプログラマブル相互接続部などの相互接続素子の経路を選択するステップを含む。
【0103】
この発明の1つ以上の回路および方法は、前置加算器能力を最適に利用する対称的な転置コンボリューションフィルタの実現を可能にしつつ、DSPブロック以外の如何なる論理をも必要としない。結果として、対称的なシストリックFIRフィルタなどの他のフィルタ実現例、または対称的な転置コンボリューションフィルタを実現する他の回路と比べて、リソース条件および電力損失が低下する。加えて、以下に述べる回路および方法は、合成ツールが、フィルタの包括的な高水準設計記述を取込み、フィルタ設計を推論する高度な能力によって自動的に微調整および最適化作業を実行することを可能にするであろう方法を導入することによって、設計者がそれらの回路において用いられるフィルタの記述を手作業で微調整する必要性について解決する。
【0104】
この発明の1つ以上の回路および方法は、所望のDSP段の点から見て最小限であるだけでなく、DSPブロック以外の如何なる論理も必要としない対称的な転置コンボリューションフィルタの実現を可能にする。したがって、当該回路および方法はさらに、装置利用および静的かつ動的な電力損失を低減させる。DSPブロックの特徴についての深遠な知識が不足している設計者、これらのDSPブロックを特定の装置に制約しないであろう移植可能なソリューションを探索している設計者、または製造業者にとっては、合成ツールがHDLコードなどの包括的に記述される何らかのフィルタコードを取り込んで、最適化された実現例への変換を実行する能力は有益となる。したがって、合成ツールにおいて自動化することのできる推論および最適化方法を説明する。以下により詳細に記載するように、当該方法によれば、このような使用可能なツールを推進する設計者が対称的な転置コンボリューションフィルタを包括的に記述することができるようになる。たとえば、設計者は、合成ツールによって生成される最適な実現例を達成するために所与のフィルタの各タップに適用すべき係数の表および積和を単に記述するだけであってもよい。
【0105】
ここで図17を参照すると、この発明の実施例に従ったプログラマブルロジックを有する装置のブロック図が示される。装置1702はプログラマブルロジック1704を組込んでいる。この場合、プログラマブルロジックはCLB回路1706、DSP回路1707および揮発性メモリ1708を含んでもよく、不揮発性メモリ1710および/または揮発性メモリ1712などの他の回路に結合されてもよい。不揮発性メモリ1710は当該装置のI/Oポート1713に結合されて、制御回路1714が構成ビットストリームを当該装置のI/Oポート1713から不揮発性メモリ1710にロードすることを可能にし得る。
【0106】
構成ビットストリームは、装置1702の不揮発性メモリ1710にロードされ、次いで、揮発性メモリ1708および揮発性メモリ1712にロードされ得る。代替的には、構成ビットストリームは、制御回路1714または構成コントローラ1718によって揮発性メモリ1708および揮発性メモリ1712に直接ロードされてもよい。揮発性メモリ1708は構成可能な論理ブロックに関連付けられてもよく、揮発性メモリ1712は、たとえば、ランダムアクセスメモリ(BRAM)のブロックまたは構成メモリセルに関連付けられてもよい。以下により詳細に記載されるように、構成ビットストリームは、プログラマブルロジック1704のDSP回路1707を実現するよう生成されることとなる。
【0107】
ここで図18を参照すると、この発明の実施例に従った図1の装置の構成可能な論理素子のブロック図が示される。特に、図18は、図1の構成論理ブロック102の構成可能な論理素子を単純化して示す。図18の実施例においては、スライスM 1801は、4つのルックアップテーブル(LUTM)1801A〜1801Dを含み、各々は、6つのLUTデータ入力入力端子A1〜A6、B1〜B6、C1〜C6、およびD1〜D6によって駆動され、2つのLUT出力信号O5およびO6を与える。LUT 1801A〜1801DからのO6出力端子は、スライス出力端子A〜Dをそれぞれ駆動する。LUTデータ入力信号は、プログラマブル相互接続部素子1811によって実現され得る入力マルチプレクサを介してFPGA相互接続構造によって供給され、LUT出力信号も相互接続構造に供給される。スライスMはまた、出力端子AMUX〜DMUXを駆動する出力選択マルチプレクサ1811A〜1811Dと、メモリ素子1802A〜1802Dのデータ入力端子を駆動するマルチプレクサ1812A〜1812Dと、組合せマルチプレクサ1816、1818および1819と、バウンスマルチプレクサ回路1822〜1823と、インバータ1805およびマルチプレクサ1806(ともに、入力クロック経路上で任意の反転をもたらす)によって表わされる回路と、マルチプレクサ1814A〜1814D、1815A〜1815D、1820および1821ならびに排他的ORゲート1813A〜1813Dを含むキャリーロジックとを含む。図18において示されるように、これらの素子同士はすべて結合される。選択入力が図18において示されるマルチプレクサとして示されない場合、選択入力は構成メモリセルによって制御される。すなわち、構成メモリセルに記憶される構成ビットストリームの構成ビットは、マルチプレクサへの正確な入力を選択するようマルチプレクサの選択入力に結合される。これらの構成メモリセルは周知であり、明確にするために図18と、この明細書中における他の選択された図とからは省かれる。
【0108】
図示される実施例においては、各々のメモリ素子1802A〜1802Dは、同期または非同期フリップフロップまたはラッチとして機能するようプログラムされてもよい。同期機能と非同期機能との選択は、Sync/Asynch選択回路1803をプログラムすることによって1つのスライスにおける4つのメモリ素子すべてに対してなされる。S/R(セット/リセット)入力信号が集合関数を与えるようにメモリ素子がプログラムされると、REV入力端子がリセット関数を提供する。S/R入力信号がリセット関数を与えるようにメモリ素子がプログラムされると、REV入力端子が集合関数を提供する。メモリ素子1802A〜1802Dは、たとえばグローバルクロックネットワークまたは相互接続構造によって供給され得るクロック信号CKによってクロックされる。このようなプログラマブルメモリ素子はFPGA設計の技術において周知である。各々のメモリ素子1802A〜1802Dは、登録された出力信号AQ〜DQを相互接続構造に与える。各々のLUT 1801A〜1801Dが2つの出力信号、すなわちO5およびO6、を与えるので、LUTは5つの共有される入力信号(IN1〜IN5)を備えた2つの5−入力LUTとして、または、入力信号IN1〜IN6を有する1つの6−入力LUTとして機能するよう構成され得る。
【0109】
図18の実施例においては、各々のLUTM 1801A〜1801Dがいくつかのモードのうちのいずれかで機能し得る。ルックアップテーブルモードであれば、各々のLUTは、入力マルチプレクサを介してFPGA相互接続構造によって供給される6つのデータ入力信号IN1〜IN6を有する。64のデータ値のうちの1つは、信号IN1〜IN6の値に基づいて構成メモリセルからプログラム可能に選択される。RAMモードであれば、各々のLUTは、単一の64ビットRAMまたはアドレス指定が共有される2つの32ビットRAMとして機能する。RAM書込データは、(LUT 1801A〜1801Cについてはマルチプレクサ1817A〜1817Cを介して)入力端子DI1を介して64ビットRAMに供給されるか、または、入力端子DI1およびDI2を介して2つの32ビットRAMに供給される。LUT RAMにおけるRAM書込み動作は、マルチプレクサ1806からのクロック信号CKによって、そしてマルチプレクサ1807からのライトイネーブル信号WENによって制御される。これにより、クロックイネーブル信号CEまたはライトイネーブル信号WEのいずれかが選択的にパスされ得る。シフトレジスタモードでは、各々のLUTは、2つの16ビットシフトレジスタとして機能するか、または、2つの16ビットシフトレジスタが直列に結合されて単一の32ビットシフトレジスタを作り出す。シフトイン信号は、入力端子DI1およびDI2のうちのいずれかまたはこれら両方を介して与えられる。16ビットおよび32ビットのシフトアウト信号はLUT出力端子を介して与えられ得る。32ビットシフトアウト信号はまた、LUT出力端子MC31を介してより直接的に与えられ得る。LUT 1801Aの32ビットシフトアウト信号MC31はまた、出力選択マルチプレクサ1811DおよびCLE出力端子端子DMUXを介して、シフトレジスタ連鎖のために汎用相互接続構造に与えられてもよい。
【0110】
以上により、本発明の1つ以上の局面に従った具体的な実施例を記載したが、本発明の1つ以上の局面に従った他の実施例およびさらなる実施例が、添付の特許請求の範囲およびその同等例によって規定される範囲から逸脱することなく考案され得る。ステップを列挙している特許請求の範囲は、これらのステップの如何なる順序をも示唆するものではない。商標は、それぞれの所有者が所有するものとする。

【特許請求の範囲】
【請求項1】
集積回路であって、
デジタル信号処理ブロックと、
前置加算器段および制御バスを含むデジタル信号処理ブロックと、
前置加算器段の演算を動的に制御するために前置加算器段に結合された制御バスとを含み、
前記前置加算器段は、
制御バスに結合された第1のマルチプレクサの第1の入力ポートと、
制御バスに結合された第1の論理ゲートの第2の入力ポートと、
制御バスに結合された第2の論理ゲートの第3の入力ポートと、
制御バスに結合された加算器/減算器の第4の入力ポートとを含む、集積回路。
【請求項2】
前置加算器段は、第2の入力ポートへの入力に応じて第1の論理ゲートの出力を介して0の値を受取るよう加算器/減算器の第1のデータ入力を動的に設定するように構成される、請求項1に記載の集積回路。
【請求項3】
前置加算器段は、第3の入力ポートへの入力に応じて第2の論理ゲートの出力を介して0の値を受取るよう加算器/減算器の第2のデータ入力を動的に設定するように構成される、請求項2に記載の集積回路。
【請求項4】
前置加算器段は、第1の入力ポートへの入力に応じて0−、1−または2−レジスタ遅延を有する入力データを動的に選択するように構成される、請求項3に記載の集積回路。
【請求項5】
前置加算器段は、第4の入力ポートへの入力に応じて加算または減算するよう加算器/減算器を動的に設定するように構成される、請求項4に記載の集積回路。
【請求項6】
デジタル信号処理ブロックに入力データを与えるためにインスタンス化された回路関数を与えるよう、構成ビットストリームに応じて構成されたフィールドプログラマブル論理ゲートをさらに含む、請求項5に記載の集積回路。
【請求項7】
前置加算器段は、入力データを与えるためにフィールドプログラマブル論理ゲートを再構成する必要なしに、第1の入力ポート、第2の入力ポート、第3の入力ポートおよび第4の入力ポートからなる群のうち少なくとも1つのポートを介して動的に再構成可能であり、
前置加算器段は、絶対値関数、連続する複素共役関数、連続する乗算関数、連続する虚数乗法、多重化関数、レジスタファイル関数、シフトレジスタ論理関数、およびパイプライン・リバランシング関数を与えるよう動的に再構成可能である、請求項6に記載の集積回路。
【請求項8】
複数の遅延素子と、
複数の遅延素子のうち第1の遅延素子を介してフィルタの第1のタップ、および複数の遅延素子のうち第2の遅延素子を介してフィルタの第2のタップを受取るよう結合された前置加算器段とを含む、請求項1に記載の集積回路であって、前記第1のタップおよび前記第2のタップは共通の係数を有し、前記集積回路はさらに、
第1の入力における第1のタップと第2タップとの和および第2の入力における共通の係数を含む前置加算器段の出力を受取るよう結合された乗算器と、
乗算器の出力を受取るよう結合された加算器とを含む、請求項1に記載の集積回路。
【請求項9】
集積回路において実現されるべき回路においてフィルタを構成する方法であって、
回路の高水準設計を受取るステップと、
高水準設計でフィルタを識別するステップと、
フィルタの係数を分析するステップと、
高水準設計のフィルタを、共通の係数に対応するよう構成された回路の処理ブロックを用いるフィルタに変換するステップとを含み、処理ブロックは共通の係数に関連付けられるタップを受取るよう結合される、方法。
【請求項10】
高水準設計のフィルタを、共通の係数に対応するよう構成された処理ブロックを用いるフィルタに変換するステップは、フィルタを対称的な転置コンボリューションフィルタとして構成するステップを含む、請求項9に記載の方法。
【請求項11】
係数を分析するステップは、高水準設計でフィルタの対称的な係数を識別するステップを含む、請求項9に記載の方法。
【請求項12】
共通の係数を第1の入力として処理ブロックの乗算器に与えるステップをさらに含む、請求項9に記載の方法。
【請求項13】
共通の係数に関連付けられるタップの和を第2の入力として乗算器に与えるステップをさらに含む、請求項12に記載の方法。
【請求項14】
共通の係数に関連付けられるタップの和を第2の入力として乗算器に与えるステップは、DSPブロックの前置加算器回路を用いて和を生成するステップを含む、請求項13に記載の方法。
【請求項15】
共通の係数に関連付けられるタップの差を第2の入力として乗算器に与えるステップをさらに含む、請求項12に記載の方法。

【図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

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公表番号】特表2012−514909(P2012−514909A)
【公表日】平成24年6月28日(2012.6.28)
【国際特許分類】
【出願番号】特願2011−544689(P2011−544689)
【出願日】平成22年1月8日(2010.1.8)
【国際出願番号】PCT/US2010/020565
【国際公開番号】WO2010/088017
【国際公開日】平成22年8月5日(2010.8.5)
【出願人】(591025439)ザイリンクス インコーポレイテッド (58)
【氏名又は名称原語表記】XILINX INCORPORATED
【Fターム(参考)】