(57)【要約】【課題】回路規模を大きくすることなく、タップ数の多いフィルタ演算を行なうことができるシストリックＦＩＲフィルタを提供する。【解決手段】乗算器と加算器とを備えたプロセシングエレメントをアレイ状に接続したシストリックＦＩＲフィルタであって、最終段のプロセシングエレメントの出力を選択的に初段のプロセシングユニットの加算対象入力として帰還させるマルチプレクサ部と、各プロセシングエレメントにフィルタ係数を供給するフィルタ係数供給部と、フィルタ演算のタップ数とプロセシングエレメントの数とに応じて、動作単位毎に、フィルタ係数供給部がそれぞれのプロセシングエレメントに供給するフィルタ係数と、マルチプレクサ部の選択動作と、初段のプロセシングエレメントにフィルタ係数との乗算対象として入力する入力データとを制御するタイミングコントローラ部とを備える。【選択図】図１
2012253592.tif 000002
【特許請求の範囲】
【請求項１】
乗算器と加算器とを備えたプロセシングエレメントをアレイ状に接続したシストリックＦＩＲフィルタであって、
最終段のプロセシングエレメントの出力を選択的に初段のプロセシングユニットの加算対象入力として帰還させるマルチプレクサ部と、
各プロセシングエレメントにフィルタ係数を供給するフィルタ係数供給部と、
フィルタ演算のタップ数と前記プロセシングエレメントの数とに応じて、動作単位毎に、前記フィルタ係数供給部がそれぞれのプロセシングエレメントに供給するフィルタ係数と、前記マルチプレクサ部の選択動作と、初段のプロセシングエレメントに前記フィルタ係数との乗算対象として入力する入力データとを制御するタイミングコントローラ部と、
を備えたことを特徴とするシストリックＦＩＲフィルタ。
【請求項２】
前記タイミングコントローラ部は、
前記タップ数が前記プロセシングエレメントの個数分を上回る場合に、前記プロセシングエレメントの個数分のフィルタ演算をセットとして、タップ数分の演算が行なわれるまで、最終段のプロセシングエレメントの出力データを初段のプロセシングユニットの加算対象入力として帰還させるように前記マルチプレクサ部を制御することを特徴とする請求項１に記載のシストリックＦＩＲフィルタ。
【請求項３】
前記タイミングコントローラ部は、
前記セットとされたフィルタ演算に用いる入力データを動作単位毎に連続して初段のプロセシングエレメントに前記フィルタ係数との乗算対象として入力することを特徴とする請求項２に記載のシストリックＦＩＲフィルタ。
【請求項４】
前記タイミングコントローラ部は、
前記セットとされたフィルタ演算において、各プロセシングエレメントにおいて乗算すべきフィルタ係数がそれぞれのプロセシングエレメントに乗算動作時に供給されるように前記フィルタ係数供給部を制御することを特徴とする請求項３に記載のシストリックＦＩＲフィルタ。
【請求項５】
前記タイミングコントローラ部は、
前記セットとされたフィルタ演算において、最終段のプロセシングエレメントがタップ数分の演算が行なわれたデータを出力している間に、出力データが有効である旨の信号を出力することを特徴とする請求項２〜４のいずれか１項に記載のシストリックＦＩＲフィルタ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタルフィルタに関し、特に、１次元シストリックアレイにより実現されるＦＩＲフィルタに関する。
【背景技術】
【０００２】
ＦＩＲ（Finite impulse response：有限インパルス応答）フィルタは、ディジタルフィルタの１種であり、インパルスを入力したときの出力信号が有限時間で０に収束するフィルタである。一般に、ＦＩＲフィルタは［数１］に示すような非再帰型の差分方程式で表わすことができる。
【数１】
2012253592.tif 000003
【０００３】
ここで、ｄ［ｎ］は入力データであり、ｙ［ｎ］は出力データであり、フィルタ演算結果である。ｋｉはフィルタ係数であり、右辺の項数である（Ｎ＋１）はタップ数と呼ばれる。
【０００４】
ＦＩＲフィルタの構成方法は数多く提案されているが、例えば、ＬＳＩ化に適したフィルタ構成方法として、単純な演算ユニットであるプロセシングエレメント（以下「ＰＥ」と略す）をアレイ状に接続することが知られている。
【０００５】
図５は、ＰＥ１〜ＰＥ５（１００ａ〜１００ｅ）の５つのＰＥをアレイ状に接続したＦＩＲフィルタ２０の構成例を示しており、図６は、ＰＥ１００単体の構成例を示すブロック図である。なお、ＰＥ１〜ＰＥ５について、それぞれの符号の末尾にａ〜ｅを付すものとする。
【０００６】
図６に示すようにＰＥ１００は、外部端子として第１入力端子１０１、第２入力端子１０２、第１出力端子１０３、第２出力端子１０４、フィルタ係数入力端子１０５、クロック入力端子１０６を備えている。
【０００７】
また、ＰＥ１００は、内部に第１遅延素子１０７、第２遅延素子１０８、第３遅延素子１０９、第４遅延素子１１０、乗算器１１１、加算器１１２を備えている。各遅延素子は、フリップフロップ等で構成され、クロック入力端子１０６に入力されるクロックＣＬＫに同期して動作する。
【０００８】
第１遅延素子１０７は、第１入力端子１０１からのデータを１クロック分遅延させる。第１遅延素子１０７の出力点をａ点とする。第２遅延素子１０８は、第１遅延素子１０７が出力するデータを１クロック分遅延させる。第２遅延素子１０８の出力点をｂ点とする。第２遅延素子１０８が出力するデータは、乗算器１１１に導かれるとともに、第１出力端子１０３から出力される。このため、第１出力端子１０３からは、第１入力端子１０１に入力されたデータが２クロック後にそのまま出力される。
【０００９】
乗算器１１１では、第２遅延素子１０８が出力するデータと、フィルタ係数入力端子１０５に入力されるフィルタ係数との乗算が行なわれる。乗算器１１１の入力点をｃ点とする。乗算器１１１の演算結果は、第３遅延素子１０９で遅延された後、加算器１１２において、第２入力端子１０２に入力されたデータと加算される。
【００１０】
加算器１１２の演算結果は、第４遅延素子１１０で遅延された後、第２出力端子１０４から出力される。第４遅延素子１１０の出力点をｄ点とする。
【００１１】
１つのＰＥ１００では、乗算と加算の単純な演算しか実行できないが、図５に示すように、１次元アレイ状に接続するとＦＩＲフィルタ２０を構成することができる。図５に示すＦＩＲフィルタ２０は、５段であり、５タップのフィルタ演算を実行することができる。
【００１２】
ＦＩＲフィルタ２０において、各ＰＥ１００のフィルタ係数入力端子１０５には、フィルタ係数が常時入力される。本例で、ＰＥ１（１００ａ）、ＰＥ２（１００ｂ）、ＰＥ３（１００ｃ）、ＰＥ４（１００ｄ）、ＰＥ５（１００ｅ）に、それぞれフィルタ係数Ｋ４、Ｋ３、Ｋ２、Ｋ１、Ｋ０が入力されるようになっている。一般に、ＦＩＲフィルタの係数は対称性を有しており、対称性を有している場合には、ＰＥ１（１００ａ）、ＰＥ２（１００ｂ）、ＰＥ３（１００ｃ）、ＰＥ４（１００ｄ）、ＰＥ５（１００ｅ）に、それぞれフィルタ係数Ｋ０、Ｋ１、Ｋ２、Ｋ３、Ｋ４が入力されるようになっていてもよい。
【００１３】
初段のＰＥ１（１００ａ）の第１入力端子１０１ａには、入力データ（ＤＡＴＡ  ＩＮ）が連続的に入力され、２段目以降のＰＥ１００の第１入力端子１０１に、前段のＰＥ１００の第１出力端子１０３が出力するデータが入力される。
【００１４】
また、初段のＰＥ１（１００ａ）の第２入力端子１０２ａには常時「０」が入力され、２段目以降のＰＥ１００の第２入力端子１０２に、前段のＰＥ１００の第２出力端子１０４が出力するデータが入力される。そして、最終段のＰＥ５（１００ｅ）の第２出力端子１０４ｅからフィルタ演算結果である出力データ（ＤＡＴＡ  ＯＵＴ）が連続的に出力される。
【００１５】
ＦＩＲフィルタ２０の動作について、図７のタイミング図を参照して説明する。初段のＰＥ１（１００ａ）の第１入力端子１０１ａには、時刻Ｔ０から、入力データ（ＤＡＴＡ  ＩＮ）がＤ０、Ｄ１、Ｄ２…の順に入力される。
【００１６】
時刻Ｔ０から６クロック後の時刻Ｔ６に、データＤ０がＰＥ３（１００ｃ）のｂ点（以下「ＰＥ３−ｂ」のように示す）に到達したとき、データＤ１はＰＥ３−ａに到達し、データＤ２はＰＥ２−ｂに到達し、データＤ３はＰＥ２−ａに到達し、データＤ４はＰＥ１−ｂに到達している。
【００１７】
ＰＥ１−ｂのデータＤ４は、乗算器１１１ａにより、係数Ｋ４と乗算され、その演算結果であるＤ４×Ｋ４が、加算器１１２ａで０と加算された後、時刻Ｔ８でＰＥ１−ｄに到達し、ＰＥ１の第２出力端子１０４ａから出力される。
【００１８】
時刻Ｔ６で、ＰＥ２−ａに到達していたデータＤ３は、乗算器１１１ｂにより、係数Ｋ３と乗算され、時刻Ｔ８で、ＰＥ１の第２出力端子１０４ａから出力されたＤ４×Ｋ４と加算される。この演算結果であるＤ４×Ｋ４＋Ｄ３×Ｋ３が、時刻Ｔ９でＰＥ２−ｄに到達し、ＰＥ２の第２出力端子１０４ｂから出力される。
【００１９】
同様に、ＰＥ３（１００ｃ）では、時刻Ｔ９でデータＤ２と係数Ｋ２との乗算結果であるＤ２×Ｋ２が、Ｄ４×Ｋ４＋Ｄ３×Ｋ３に加算さる。この演算結果であるＤ４×Ｋ４＋Ｄ３×Ｋ３＋Ｄ２×Ｋ２が、時刻Ｔ１０でＰＥ３−ｄに到達し、ＰＥ３の第２出力端子１０４ｃから出力される。
【００２０】
同様に、ＰＥ４（１００ｄ）では、時刻Ｔ１０でデータＤ１と係数Ｋ１との乗算結果であるＤ１×Ｋ１が、Ｄ４×Ｋ４＋Ｄ３×Ｋ３＋Ｄ２×Ｋ２に加算される。この演算結果であるＤ４×Ｋ４＋Ｄ３×Ｋ３＋Ｄ２×Ｋ２＋Ｄ１×Ｋ１が、時刻Ｔ１１でＰＥ４−ｄに到達し、ＰＥ４の第２出力端子１０４ｄから出力される。
【００２１】
そして、ＰＥ５（１００ｅ）では、時刻Ｔ１１でデータＤ０と係数Ｋ０との乗算結果であるＤ０×Ｋ０が、Ｄ４×Ｋ４＋Ｄ３×Ｋ３＋Ｄ２×Ｋ２＋Ｄ１×Ｋ１に加算される。この演算結果であるＤ４×Ｋ４＋Ｄ３×Ｋ３＋Ｄ２×Ｋ２＋Ｄ１×Ｋ１＋Ｄ０×Ｋ０が、時刻Ｔ１２でＰＥ５−ｄに到達し、ＰＥ５の第２出力端子１０４ｅからＤＡＴＡ  ＯＵＴとして出力される。
【００２２】
この結果、ＦＩＲフィルタ２０で、ｙ［０］＝Ｄ０×Ｋ０＋Ｄ１×Ｋ１＋Ｄ２×Ｋ２＋Ｄ３×Ｋ３＋Ｄ４×Ｋ４で表わされる５タップのフィルタ演算が行なわれたことになる。
【００２３】
時刻Ｔ１３以降では、ｙ［１］＝Ｄ１×Ｋ０＋Ｄ２×Ｋ１＋Ｄ３×Ｋ２＋Ｄ４×Ｋ３＋Ｄ５×Ｋ４、ｙ［２］＝Ｄ２×Ｋ０＋Ｄ３×Ｋ１＋Ｄ４×Ｋ２＋Ｄ５×Ｋ３＋Ｄ６×Ｋ４、ｙ［３］＝Ｄ３×Ｋ０＋Ｄ４×Ｋ１＋Ｄ５×Ｋ２＋Ｄ６×Ｋ３＋Ｄ７×Ｋ４、…の５タップのフィルタ演算結果が、ＰＥ５の第２出力端子１０４ｅからＤＡＴＡ  ＯＵＴとして順次出力される。
【００２４】
このように、個々のＰＥ１００が規則的に接続され、規則的に演算を進める構成は、シストリックアレイと呼ばれ、シストリックアレイで構成されたＦＩＲフィルタは、シストリックＦＩＲフィルタと呼ばれる。
【先行技術文献】
【特許文献】
【００２５】
【特許文献１】特開平１０−４３５１号公報
【発明の概要】
【発明が解決しようとする課題】
【００２６】
例えば、図５に示したＦＩＲフィルタ２０は、５個のＰＥ１００で構成されているため、５タップまでのフィルタ演算を行なうことができる。しかしながら、一般に、ＦＩＲフィルタで要求されるタップ数はもっと多い。例えば、１０００タップのフィルタ演算を行なう場合、ＰＥ１００を１０００個並べる必要がある。この結果、回路規模が非常に大きくなってしまうという問題がある。
【００２７】
そこで、本発明は回路規模を大きくすることなく、タップ数の多いフィルタ演算を行なうことができるシストリックＦＩＲフィルタを提供することを目的とする。
【課題を解決するための手段】
【００２８】
上記課題を解決するため、本発明のシストリックＦＩＲフィルタは、乗算器と加算器とを備えたプロセシングエレメントをアレイ状に接続したシストリックＦＩＲフィルタであって、最終段のプロセシングエレメントの出力を選択的に初段のプロセシングユニットの加算対象入力として帰還させるマルチプレクサ部と、各プロセシングエレメントにフィルタ係数を供給するフィルタ係数供給部と、フィルタ演算のタップ数と前記プロセシングエレメントの数とに応じて、動作単位毎に、前記フィルタ係数供給部がそれぞれのプロセシングエレメントに供給するフィルタ係数と、前記マルチプレクサ部の選択動作と、初段のプロセシングエレメントに前記フィルタ係数との乗算対象として入力する入力データとを制御するタイミングコントローラ部と、を備えたことを特徴とする。
【００２９】
ここで。前記タイミングコントローラ部は、前記タップ数が前記プロセシングエレメントの個数分を上回る場合に、前記プロセシングエレメントの個数分のフィルタ演算をセットとして、タップ数分の演算が行なわれるまで、最終段のプロセシングエレメントの出力データを初段のプロセシングユニットの加算対象入力として帰還させるように前記マルチプレクサ部を制御することができる。
【００３０】
また、前記タイミングコントローラ部は、前記セットとされたフィルタ演算に用いる入力データを動作単位毎に連続して初段のプロセシングエレメントに前記フィルタ係数との乗算対象として入力することができる。
【００３１】
また、前記タイミングコントローラ部は、前記セットとされたフィルタ演算において、各プロセシングエレメントにおいて乗算すべきフィルタ係数がそれぞれのプロセシングエレメントに乗算動作時に供給されるように前記フィルタ係数供給部を制御することができる。
【００３２】
また、前記タイミングコントローラ部は、前記セットとされたフィルタ演算において、最終段のプロセシングエレメントがタップ数分の演算が行なわれたデータを出力している間に、出力データが有効である旨の信号を出力することができる。
【発明の効果】
【００３３】
本発明によれば、回路規模を大きくすることなく、タップ数の多いフィルタ演算を行なうことができるシストリックＦＩＲフィルタが提供される。
【図面の簡単な説明】
【００３４】
【図１】本実施形態のシストリックＦＩＲフィルタの構成を示すブロック図である。
【図２】１０タップのフィルタ演算を実行する場合のシストリックＦＩＲフィルタの動作を説明するタイミング図である。
【図３】時刻ＴとＯｕｔｐｕｔ  Ｄａｔａ  Ｅｎａｂａｌｅ信号とマルチプレクサの設定との関係を説明するタイミング図である。
【図４】本実施形態のシストリックＦＩＲフィルタの別構成を示すブロック図である。
【図５】従来のシストリックＦＩＲフィルタの構成を示すブロック図である。
【図６】ＰＥの構成を示すブロック図である。
【図７】従来のシストリックＦＩＲフィルタの動作を説明するタイミング図である。
【発明を実施するための形態】
【００３５】
本発明の実施の形態について図面を参照して説明する。図１は、本実施形態に係るシストリックＦＩＲフィルタ１０の構成を示すブロック図である。本実施形態では、アレイ状に接続された５個のＰＥ１００を用いているが、シストリックＦＩＲフィルタ１０を構成するＰＥ１００の数は５個に限られない。シストリックＦＩＲフィルタ１０に用いるＰＥ１００は、図６に示した従来のＰＥ１００と同様とすることができる。このため、ＰＥ１００については、図６に示した図を参照して、同じ符号を用いて説明する。
【００３６】
本図に示すように、シストリックＦＩＲフィルタ１０は、５個のＰＥ１００に加えて、連続的に入力される入力データ（ＤＡＴＡ  ＩＮ）を一時的に格納して初段のＰＥ１（１００ａ）に出力するデータメモリ１１８と、ＰＥ１００に対応して設けられ、対応するＰＥ１００に供給するフィルタ係数を格納する５個の係数メモリ１２０（１２０ａ〜１２０ｅ）と、タイミングコントローラ１３０と、マルチプレクサ１４０とを備えている。
【００３７】
マルチプレクサ１４０は、最終段のＰＥ５（１００ｅ）の第２出力端子１０４ｅからの出力データと、「０」とを入力し、タイミングコントローラ１３０からの制御に基づいて選択的に出力して、ＰＥ１００ａの第２入力端子１０２ａに入力する。
【００３８】
タイミングコントローラ１３０は、データメモリ１１８からのデータ読み出し順序およびタイミング、係数メモリ１２０が対応するＰＥ１００に出力するフィルタ係数の設定、マルチプレクサ１４０の切り替え、シストリックＦＩＲフィルタ１０が出力するデータ（ＤＡＴＡ  ＯＵＴ）が有効か無効かを示すＯｕｔｐｕｔＤａｔａＥｎａｂｌｅ信号の出力を制御する。
【００３９】
すなわち、本実施形態において、データメモリ１１８は、入力データ（ＤＡＴＡ  ＩＮ）を必ずしも入力順に出力せず、後述する規則に従って初段のＰＥ１（１００ａ）に出力する。また、シストリックＦＩＲフィルタ１０は、有効なデータと無効なデータとを出力する。有効なデータは、ＰＥ１００の個数分連続して出力することができる。また、無効なデータには、フィルタ演算の途中のテンポラルなデータが含まれる。
【００４０】
係数メモリ１２０（１２０ａ〜１２０ｅ）には、それぞれ複数個のフィルタ係数が格納されている。ここでは、各係数メモリ１２０とも、アドレスＡ０、アドレスＡ１、アドレスＡ２…にフィルタ係数が格納されるものとする。
【００４１】
Ｎ＋１タップのフィルタ演算に用いる係数をＫ０、Ｋ１、…、ＫＮとすると、出力側のＰＥ５（１００ｅ）に対応する係数メモリ５（１２０ｅ）から入力側のＰＥ１（１００ａ）に対応する係数メモリ１（１２０ａ）に向かって、順番にＫ０、Ｋ１、Ｋ２、Ｋ３、Ｋ４をそれぞれのアドレスＡ０に格納する。フィルタ係数Ｋ５以降は、係数メモリ５（１２０ｅ）に戻って、係数メモリ１（１２０ａ）に向かって、順番にＫ５、Ｋ６、Ｋ７、Ｋ８、Ｋ９をそれぞれのアドレスＡ１に格納する。
【００４２】
フィルタ係数Ｋ１０以降も同様の規則で各係数メモリ１２０に格納する。タップ数ＮがＰＥ１００の個数である５の倍数でない場合には、係数ＫＮ以降を０として係数メモリ１２０に格納すればよい。なお、フィルタ係数に対称性がある場合であっても、入力側の係数メモリ１（１２０ａ）から出力側の係数メモリ５（１２０ｅ）に向かって、Ｋ０、Ｋ１、Ｋ２、Ｋ３、Ｋ４というように格納することは原則的にできない。
【００４３】
具体例として、１０タップのフィルタ演算を実行する場合のＦＩＲフィルタ１０の動作について説明する。この場合、フィルタ演算に必要なフィルタ係数はＫ０〜Ｋ９であり、係数メモリ５（１２０ｅ）にフィルタ係数Ｋ０とフィルタ係数Ｋ５を格納し、係数メモリ４（１２０ｄ）にフィルタ係数Ｋ１とフィルタ係数Ｋ６を格納し、係数メモリ３（１２０ｃ）にフィルタ係数Ｋ２とフィルタ係数Ｋ７を格納し、係数メモリ２（１２０ｂ）にフィルタ係数Ｋ３とフィルタ係数Ｋ８を格納し、係数メモリ１（１２０ａ）にフィルタ係数Ｋ４とフィルタ係数Ｋ９を格納する。
【００４４】
図２は、１０タップのフィルタ演算を実行する場合のシストリックＦＩＲフィルタ１０の動作を説明するタイミング図である。また、図３は、時刻ＴとＯｕｔｐｕｔ  Ｄａｔａ  Ｅｎａｂａｌｅ信号とマルチプレクサ１４０の設定との関係を説明するタイミング図である。
【００４５】
本実施形態のシストリックＦＩＲフィルタ１０において、フィルタ係数Ｋ０からＫ４を用いた時刻Ｔ０〜時刻Ｔ１２における演算は、従来のＦＩＲフィルタ２０の動作例と同様に行なわれる。
【００４６】
時刻Ｔ１３以降では、最終段のＰＥ５（１００ｅ）の第２出力端子１０４ｅからの出力データを再度初段のＰＥ１（１００ａ）の第２入力端子１０２ａにフィードバックして、フィルタ係数Ｋ５からＫ９を用いた演算を行なうようにする。
【００４７】
このため、タイミングコントローラ１３０は、時刻Ｔ１２〜時刻Ｔ１６の間、マルチプレクサ１４０を、ＰＥ５（１００ｅ）の第２出力端子１０４ｅからの出力データが出力されるように切り替える。
【００４８】
例えば、図２に示すように、時刻Ｔ１２で、ＰＥ５−ｄに出力されるＤ４×Ｋ４＋Ｄ３×Ｋ３＋Ｄ２×Ｋ２＋Ｄ１×Ｋ１＋Ｄ０×Ｋ０（＝Ｆｔ０とする）は、マルチプレクサ１４０を介してＰＥ１の第２入力端子１０２ａに入力される。そして、ＰＥ１において、Ｄ９×Ｋ９の演算結果と加算されて、時刻Ｔ１３にＦｔ０＋Ｄ９×Ｋ９として、ＰＥ１の第２出力端子１０４ａから出力される。
【００４９】
このために、タイミングコントローラ１３０は、時刻Ｔ１１以降、係数メモリ１（１２０ａ）からフィルタ係数Ｋ９がＰＥ１（１００ａ）に読み出されるように係数メモリ１（１２０ａ）を制御する。
【００５０】
時刻Ｔ１４においてＰＥ２−ｄには、さらに係数Ｋ８とデータＤ８の乗算結果が加算されたＦｔ０＋Ｄ９×Ｋ９＋Ｄ８×Ｋ８が到達する。このために、タイミングコントローラ１３０は、時刻Ｔ１２以降、係数メモリ２（１２０ｂ）からフィルタ係数Ｋ８がＰＥ２（１００ｂ）に読み出されるように係数メモリ２（１２０ｂ）を制御する。
【００５１】
同様に、ＰＥ３（１００ｃ）を通過すると、フィルタ係数Ｋ７とデータＤ７との乗算結果が加算され、ＰＥ４（１００ｄ）を通過すると、フィルタ係数Ｋ６とデータＤ６との乗算結果が加算され、ＰＥ５（１００ｅ）を通過すると、フィルタ係数Ｋ５とデータＤ５との乗算結果が加算される。
【００５２】
この結果、時刻Ｔ１７で、Ｆｔ０＋Ｄ９×Ｋ９＋Ｄ８×Ｋ８＋Ｄ７×Ｋ７＋Ｄ６×Ｋ６＋Ｄ５×Ｋ５が、ＰＥ５の第２出力端子１０４ｅからＤＡＴＡ  ＯＵＴとして出力される。すなわち、ＦＩＲフィルタ１０で、ｙ［０］＝Ｄ０×Ｋ０＋Ｄ１×Ｋ１＋Ｄ２×Ｋ２＋Ｄ３×Ｋ３＋Ｄ４×Ｋ４＋Ｄ５×Ｋ５＋Ｄ６×Ｋ６＋Ｄ７×Ｋ７＋Ｄ８×Ｋ８＋Ｄ９×Ｋ９で表わされる１０タップのフィルタ演算が行なわれたことになる。
【００５３】
なお、タイミングコントローラ１３０は、時刻Ｔ１３以降、係数メモリ３（１２０ｃ）からフィルタ係数Ｋ７がＰＥ３（１００ｃ）に読み出されるように係数メモリ３（１２０ｃ）を制御し、時刻Ｔ１４以降、係数メモリ４（１２０ｄ）からフィルタ係数Ｋ６がＰＥ４（１００ｄ）に読み出されるように係数メモリ４（１２０ｄ）を制御し、時刻Ｔ１５以降、係数メモリ５（１２０ｅ）からフィルタ係数Ｋ５がＰＥ５（１００ｅ）に読み出されるように係数メモリ５（１２０ｅ）を制御する。
【００５４】
また、時刻Ｔ１７以降は、時刻Ｔ１８で、フィルタ係数Ｋ０〜Ｋ９とデータＤ１〜Ｄ１０のフィルタ演算結果ｙ［１］が得られ、時刻Ｔ１９で、フィルタ係数Ｋ０〜Ｋ９とデータＤ２〜Ｄ１１のフィルタ演算結果ｙ［２］が得られ、時刻Ｔ２０で、フィルタ係数Ｋ０〜Ｋ９とデータＤ３〜Ｄ１２のフィルタ演算結果ｙ［３］が得られ、時刻Ｔ２１で、フィルタ係数Ｋ０〜Ｋ９とデータＤ４〜Ｄ１３のフィルタ演算結果ｙ［４］が得られる。このため、タイミングコントローラ１３０は、図３に示すように、時刻Ｔ１７〜時刻Ｔ２１の間、Ｏｕｔｐｕｔ  Ｄａｔａ  Ｅｎａｂｌｅ信号を有効にする。
【００５５】
連続して得ることができるフィルタ演算結果は、用いるＰＥ１００の数に等しくなる。本実施形態では、５個のＰＥ１００を用いているため、５つのフィルタ演算結果ｙ［０］〜ｙ［４］を連続して得ることができる。この連続するフィルタ演算を１セットとする。
【００５６】
フィルタ演算結果ｙ［５］以降が必要な場合は、ｙ［５］以降を算出するために、次セットとして、データメモリ１１８からの読み出しデータをデータＤ５まで戻ってデータＤ１９まで同じ動作を繰り返す。これにより、５つのフィルタ演算結果ｙ［５］〜ｙ［９］を連続して得ることができる。
【００５７】
このとき、時刻Ｔ２１で、ｙ［５］のための最初の乗算であるＤ９×Ｋ４が初段のＰＥ１（１００ａ）の乗算器１１１ａで行なわれる。ｙ［５］のためのテンポラルな演算結果Ｆｔ５は、時刻Ｔ２７において最終段のＰＥ５（１００ｅ）から出力される。以降同様にして、時刻Ｔ２８にＦｔ６が出力され、時刻Ｔ２９にＦｔ７が出力され、時刻Ｔ３０にＦｔ８が出力され、時刻Ｔ３１にＦｔ９が出力される。
【００５８】
そして、時刻Ｔ３２で、フィルタ係数Ｋ０〜Ｋ９とデータＤ５〜Ｄ１４のフィルタ演算結果ｙ［５］が得られ、時刻Ｔ３３で、フィルタ係数Ｋ０〜Ｋ９とデータＤ６〜Ｄ１５のフィルタ演算結果ｙ［６］が得られ、時刻Ｔ３４で、フィルタ係数Ｋ０〜Ｋ９とデータＤ７〜Ｄ１６のフィルタ演算結果ｙ［７］が得られ、時刻Ｔ３５で、フィルタ係数Ｋ０〜Ｋ９とデータＤ８〜Ｄ１７のフィルタ演算結果ｙ［８］が得られ、時刻Ｔ３６で、フィルタ係数Ｋ０〜Ｋ９とデータＤ９〜Ｄ１８のフィルタ演算結果ｙ［９］が得られる。このため、タイミングコントローラ１３０は、図３に示すように、時刻Ｔ３２〜時刻Ｔ３６の間、Ｏｕｔｐｕｔ  Ｄａｔａ  Ｅｎａｂｌｅ信号を有効にする。
【００５９】
ＰＥ１（１００ａ）に対応する係数メモリ１（１２０ａ）では、時刻Ｔ１１以降、フィルタ係数Ｋ９を出力するようにしていたが、時刻Ｔ２１には、フィルタ係数Ｋ４を出力するように切り替える必要がある。この切り替えタイミングは、時刻Ｔ１６から時刻Ｔ２１の間であればよく、タイミングコントローラ１３０によって制御される。
【００６０】
同様に、ＰＥ２（１００ｂ）に対応する係数メモリ２（１２０ｂ）では、時刻Ｔ２２までにフィルタ係数Ｋ３を出力するように切り替え、ＰＥ３（１００ｃ）に対応する係数メモリ３（１２０ｃ）では、時刻Ｔ２３までにフィルタ係数Ｋ２を出力するように切り替え、ＰＥ４（１００ｄ）に対応する係数メモリ４（１２０ｄ）では、時刻Ｔ２４までにフィルタ係数Ｋ１を出力するように切り替え、ＰＥ５（１００ｅ）に対応する係数メモリ５（１２０ｅ）では、時刻Ｔ２５までにフィルタ係数Ｋ０を出力するように切り替える。
【００６１】
タイミングコントローラ１３０のマルチプレクサ１４０に対する制御については、図３に示すように、データメモリ１１８から最初のデータＤ０が初段のＰＥ１（１００ａ）に入力されてから加算器１１２ａで加算が行なわれる前の時刻Ｔ６までは、マルチプレクサ１４０の出力はＤｏｎ'ｔ  ｃａｒｅとすることができる。時刻Ｔ７〜時刻Ｔ１１は、０を出力するようにマルチプレクサ１４０を制御し、時刻Ｔ１２〜時刻Ｔ１６は、ＰＥ５（１００ｅ）の出力データを出力するようにマルチプレクサ１４０を制御する。
【００６２】
同様に時刻Ｔ１７〜時刻Ｔ２１は、Ｄｏｎ'ｔ  ｃａｒｅとすることができ、時刻Ｔ２２〜時刻Ｔ２６は、０を出力するようにし、時刻Ｔ２７〜時刻Ｔ３１は、ＰＥ５（１００ｅ）の出力データを出力するようにマルチプレクサ１４０を制御する。
【００６３】
上述の例では、タップ数を１０とし、１回ループするようにしたが、例えば、タップ数を１５とした場合には、最終段のＰＥ５（１００ｅ）からの出力をフィードバックする期間を延ばして２回ループするようにし、フィルタ係数Ｋ１０〜Ｋ１４を用いた演算結果をさらに加算するように制御すればよい。
【００６４】
すなわち、時刻Ｔ１７以降も最終段のＰＥ５（１００ｅ）からの出力が初段のＰＥ１（１００ａ）に入力され続けるようにマルチプレクサ１４０を制御することにより、フィルタ係数Ｋ０〜Ｋ９によるフィルタ演算結果に対して、フィルタ係数Ｋ１０〜Ｋ１４と入力データとの乗算結果を加算していくことができる。
【００６５】
このとき必要となるフィルタ係数Ｋ１０、Ｋ１１、Ｋ１２、Ｋ１３、Ｋ１４は、それぞれ係数メモリ５（１２０ｅ）、係数メモリ４（１２０ｄ）、係数メモリ３（１２０ｃ）、係数メモリ２（１２０ｂ）、係数メモリ１（１２０ａ）に保存しておく。
【００６６】
そして、時刻Ｔ１６で、係数メモリ１（１２０ａ）の出力をフィルタ係数Ｋ９からＫ１４に切り替え、時刻Ｔ１７で、係数メモリ２（１２０ｂ）の出力をフィルタ係数Ｋ８からＫ１３に切り替え、時刻Ｔ１８で、係数メモリ３（１２０ｃ）の出力をフィルタ係数Ｋ７からＫ１２に切り替え、時刻Ｔ１９で、係数メモリ４（１２０ｄ）の出力をフィルタ係数Ｋ６からＫ１１に切り替え、時刻Ｔ２０で、係数メモリ５（１２０ｅ）の出力をフィルタ係数Ｋ５からＫ１０に切り替えるように制御する。
【００６７】
その後も、最終段のＰＥ５（１００ｅ）からの出力を、マルチプレクサ１４０を介してフィードバックし続け、適切なタイミングで係数フィルタを切り替えることで、もっと長いタップ数のフィルタ演算に対応することができる。
【００６８】
次に、タイミングコントローラ１３０のデータメモリ１１８からの読み出し制御について説明する。ＦＩＲフィルタ１０では、ＰＥ１００の数に等しい１セットずつのフィルタ演算結果の出力となるため、ＰＥ１００の数を超えるフィルタ演算結果を得るためには、１セット目のフィルタ演算で必要なデータ数をデータメモリ１１８から読み出した後、次セットのフィルタ演算のために、ＰＥ１００の個数分ずらして読み出しを開始するように制御する。
【００６９】
すなわち、タップ数が１０の場合、タイミングコントローラ１３０は、１セット目のフィルタ演算でデータＤ０からデータＤ１４まで連続的に読み出した後、２セット目のフィルタ演算のためにデータＤ５（＝Ｄ０＋ＰＥ数）からデータＤ１９まで読み出し、さらに３セット目のフィルタ演算のために、Ｄ１０（＝Ｄ５＋ＰＥ数）からＤ２４まで読み出すようにデータメモリ１１８を制御すればよい。
【００７０】
以上のタイミングコントローラ１３０の制御を一般化すると、以下のように示すことができる。すなわち、ＰＥ１００の数をＰＥ（ｎ）とし、タップ数をＮとすると、フィルタ演算結果を得るために必要なループ数Ｌｏｏｐ（ｎ）は、
Ｌｏｏｐ（ｎ）＝（タップ数Ｎ−１）÷ＰＥ（ｎ）の商
となる。例えば、ＰＥ（ｎ）が５の場合、タップ数Ｎが１〜５のとき、ループ数Ｌｏｏｐ（ｎ）は０となりループの必要はない。タップ数Ｎが６〜１０のとき、ループ数Ｌｏｏｐ（ｎ）は１となりループを１回行なえばよい。タップ数Ｎが１１〜１５のとき、ループ数Ｌｏｏｐ（ｎ）は２となりループを２回行なえばよい。
【００７１】
ループ数Ｌｏｏｐ（ｎ）≧１の場合、データメモリ１１８からの読み出し制御は、データＤ０からＤｎ１まで読み出した後、データＤｎ２〜Ｄｎ３を読み出し、データＤｎ４〜Ｄｎ５…を読み出すようにする。
【００７２】
ここで、ｎ１＝（Ｌｏｏｐ（ｎ）＋２）×ＰＥ（ｎ）−１であり、ｎ２＝ＰＥ（ｎ）であり、ｎ３＝ｎ２＋（Ｌｏｏｐ（ｎ）＋２）×ＰＥ（ｎ）−１であり、ｎ４＝ＰＥ（ｎ）×２であり、ｎ５＝ｎ４＋（Ｌｏｏｐ（ｎ）＋２）×ＰＥ（ｎ）−１である。すなわち、（Ｌｏｏｐ（ｎ）＋２）×ＰＥ（ｎ）個のデータを連続して読み出す毎に、ＰＥ（ｎ）個ずれたところから読み出し直せばよい。
【００７３】
また、ループ数Ｌｏｏｐ（ｎ）≧１の場合、フィルタ係数の切り替え制御は、最も入力側の係数メモリ１２０について、まずＰＥ（ｎ）×２＋１クロック目に切り替え、以降ＰＥ（ｎ）クロック毎に切り替える制御を行なう。そして、出力側に隣接する係数メモリ１２０について、１クロックずつ遅れて切り替える制御を行なえばよい。
【００７４】
以上説明したように、本実施形態のシストリックＦＩＲフィルタ１０によれば、最終段のＰＥ５（１００ｅ）の出力を初段のＰＥ１（１００ａ）にフィードバックできる構成としているため、演算可能なタップ数がＰＥ１００の数に依存しない。このため、回路規模を大きくすることなく、タップ数の多いフィルタ演算を行なうことができる。このため、必要最小限度のＰＥ１００をＬＳＩ等に実装すればよく、コストと性能のバランスの取れたフィルタＩＣを実現することが可能となる。
【００７５】
なお、上述の実施形態では、各ＰＥ１００に対応した係数メモリ１２０を設けるようにしていたが、図４に示すように共通の係数メモリ１８０を１つ設けるようにしてもよい。
【００７６】
この場合、各ＰＥ１００に対応させてラッチ１９０（ラッチ１（１９０ａ）〜ラッチ５（１９０ｅ））を設けるようにする。各ラッチ１９０はタイミングコントローラ１３０によって制御される。図２に示したタイミング図からわかるように、フィルタ係数は、複数のＰＥ１００に対して同時に変化することはなく、１クロックずつずれて変化する。このため、共通の係数メモリ１８０からフィルタ係数を読み出して、最も入力側のラッチ１９０ａから順にラッチするように制御すればよい。なお、係数メモリ１８０は、必ずしもメモリである必要はなく、フィルタ係数を生成するような演算装置であってもよい。
【００７７】
また、本実施形態において、ＬＳＩ等の実装上は、シストリックアレイの最終段のＰＥ５（１００ｅ）と初段のＰＥ１（１００ａ）とが近接するように配置することが望ましい。最終段のＰＥ５（１００ｅ）と初段のＰＥ１（１００ａ）との距離が離れると、フィードバックラインの配線長が長くなり、動作スピード上のネックとなるおそれがあるからである。
【符号の説明】
【００７８】
１０…シストリックＦＩＲフィルタ、２０…ＦＩＲフィルタ、１００…プロセシングエレメント（ＰＥ）、１０１…第１入力端子、１０２…第２入力端子、１０３…第１出力端子、１０４…第２出力端子、１０５…フィルタ係数入力端子、１０６…クロック入力端子、１０７…第１遅延素子、１０８…第２遅延素子、１０９…第３遅延素子、１１０…第４遅延素子、１１１…乗算器、１１２…加算器、１１８…データメモリ、１２０…係数メモリ、１３０…タイミングコントローラ、１４０…マルチプレクサ、１８０…係数メモリ、１９０…ラッチ
【図１】
2012253592.tif 000004
【図２】
2012253592.tif 000005
【図３】
2012253592.tif 000006
【図４】
2012253592.tif 000007
【図５】
2012253592.tif 000008
【図６】
2012253592.tif 000009
【図７】
2012253592.tif 000010