(57)【要約】  デジタルフィルタを構成する集積回路は２つのデータサンプルのアクセスを同時に許容するための２つのポート210、220を有するデータメモリ100と、フィルタ係数を記憶するための係数メモリ105とを有する。第１の加算器110は第１及び第２のポート210、220からのデータサンプルを加算し、乗算器115は第１の加算器110からの値を係数メモリ105からの値と乗算し、第２の加算器は乗算器115からの値を累算する。マスター制御装置190は累算された値をさらに処理または出力するためにデータメモリ100に累算された値を選択的に記憶するように構成されている。データメモリ100及び係数メモリ105と通信するアドレス及び制御ブロック125は実行されるフィルタに対して適切な値を保持する。アドレス及び制御ブロック125は第１の予め定められたデジタルフィルタと第２の予め定められたデジタルフィルタの値をカスケードに保持するためのレジスタの第１のセットの２つのセットを有している。方法は円形リストとしてアドレスおよび制御ブロック125にデータの現在の書込みアドレスを維持し、円形リストはフィルタタップの予め定められた数に等しいサイズを有する。方法は先入れ先出し待ち行列として第１のポートからのデータの第１の読取アドレスと、後入れ先出しスタックとして第２のポートからのデータの第２の読取アドレスと、円形リストとして係数読取アドレスを維持する。【選択図】図１
2009507423.tif 000002
【特許請求の範囲】
【請求項１】
２つのデータサンプルのアクセスを同時に許容するための第１及び第２のポートを有するデータメモリと、
フィルタ係数を記憶するための係数メモリと、
第１及び第２のポートから読取られるデータサンプルを加算する第１の加算器と、
係数メモリから読取られた値により第１の加算器からの値を乗算する乗算器と、
乗算器からの値を累算するための第２の加算器と、
累算された値をさらに処理または出力するためにデータメモリ中に累算された値を選択的に記憶するように構成されているマスター制御装置とを具備しているデジタルフィルタを構成する集積回路。
【請求項２】
データメモリと係数メモリはランダムアクセスメモリで或る請求項１記載の集積回路。
【請求項３】
さらに実行されるフィルタに対して適切に値を保持するためのアドレス及び制御ブロックを具備し、そのアドレス及び制御ブロックはデータメモリ及び係数メモリと通信する請求項１記載の集積回路。
【請求項４】
アドレス及び制御ブロックはさらに、第１の予め定められたデジタルフィルタに対する値を保持するためのレジスタの第１のセットと、第２の予め定められたデジタルフィルタに対する対応する値を保持するためのレジスタの第２のセットとを具備している請求項３記載の集積回路。
【請求項５】
レジスタの第１のセットは少なくとも、
選択的にデータメモリまたは係数メモリへの次の入力データのアドレスを保持する書込みアドレスレジスタと、
データメモリの第１のポートから読取られる次のデータのアドレスを保持する第１の読取アドレスレジスタと、
データメモリの第２のポートから読取られる次のデータのアドレスを保持する第２の読取アドレスレジスタと、
読取られる次の係数のアドレスを保持する係数アドレスレジスタとを具備している請求項４記載の集積回路。
【請求項６】
さらに、予め定められたデジタルフィルタを構成する命令を含んでいるコンピュータが読取可能な媒体を有するマスター制御装置を具備している請求項１記載の集積回路。
【請求項７】
第１及び第２のポートを具備するデータメモリと、係数メモリを設け、
さらに、デジタルフィルタの動作を制御するためのパラメータの第１のセットを保持するためのアドレス及び制御ブロックを設け、
フィルタタップの予め定められた数に等しいサイズを有する円形リストとしてアドレス制御ブロック中にデータの現在の書込みアドレスを維持し、
先入れ先出し待ち行列として第１のデータメモリポートから読取られるデータの第１の読取アドレスを維持し、
後入れ先出しスタックとして第２のデータメモリポートから読取られるデータの第２の読取アドレスを維持し、
円形リストとして、２で割算されるフィルタタップの予め定められた数に等しく、フィルタタップ数が奇数ならば切り上げられたサイズを有する係数読取アドレスを維持し、
アドレス制御ブロック中の現在の書込みアドレスにより決定された位置においてデータメモリ中に入力デジタルサンプルを記憶し、
データメモリ中の記憶されたサンプルと係数メモリ中の記憶された係数からの出力サンプルを計算するステップを含んでいるデジタルフィルタを構成する方法。
【請求項８】
さらに、計算された出力サンプルをデータメモリ中に記憶するステップを含んでいる請求項７記載の方法。
【請求項９】
さらに、アドレス制御ブロック中にデシメーションカウンタを維持し、
各入力サンプルに対して、出力サンプルの計算前に、デシメーションカウンタがゼロになるまでデシメーションカウンタをデクリメントするステップを含んでいる請求項７記載の方法。
【請求項１０】
第１及び第２の読取アドレス、書込みアドレス、および係数アドレスはそれぞれのメモリ中に仮想メモリアドレスとして維持される請求項７記載の方法。
【請求項１１】
第１及び第２のメモリポートを具備するデータメモリと、係数メモリを設け、
さらに、第１のデジタルフィルタの動作を制御するためのパラメータの第１のセットと、第２のデジタルフィルタの動作を制御するための値を保持するパラメータの第２のセットとを保持するアドレス及び制御ブロックを設け、
フィルタタップの予め定められた数に等しいサイズを有する円形リストとしてアドレス制御ブロック中のデータに対する現在の書込みアドレスを維持し、
先入れ先出し待ち行列として第１のデータメモリポートから読取られるデータの第１の読取アドレスを維持し、
後入れ先出しスタックとして第２のデータメモリポートから読取られるデータの第２の読取アドレスを維持し、
円形リストとして、２で割算されるフィルタタップの予め定められた数に等しく、フィルタタップ数が奇数ならば切り上げられたサイズを有する係数読取アドレスを維持し、
アドレス制御ブロック中の現在の書込みアドレスにより決定された位置においてデータメモリ中に入力デジタルサンプルを記憶し、
データメモリ中の記憶されたサンプルと係数メモリ中の記憶された係数からの第１のデジタルフィルタの出力サンプルを計算し、
アドレス制御ブロック中のパラメータの第１のセットをアドレス制御ブロック中のパラメータの第２のセットと交換し、
データメモリ中の記憶されたサンプルと係数メモリ中の係数中の記憶された係数からのカスケード接続されたデジタルフィルタの出力サンプルを計算し、
アドレス制御ブロック中のパラメータの第１のセットをアドレス制御ブロック中のパラメータの第２のセットと交換するステップを含んでいるカスケード接続されたデジタルフィルタを構成する方法。
【請求項１２】
さらに、計算された出力サンプルをデータメモリ中に記憶するステップを含んでいる請求項１０記載の方法。
【請求項１３】
さらに、アドレス制御ブロックにデシメーションカウンタを維持し、
各入力サンプルに対して、出力サンプルの計算前に、デシメーションカウンタがゼロになるまでデシメーションカウンタをデクリメントするステップを含んでいる請求項１０記載の方法。
【請求項１４】
第１及び第２の読取アドレス、書込みアドレス、および係数アドレスはそれぞれのメモリ中に仮想メモリアドレスとして維持されている請求項１０記載の方法。
【請求項１５】
第１及び第２のメモリポートを具備するデータメモリと、係数メモリと、デジタルフィルタの動作を制御するためのパラメータの第１のセットを保持するアドレス及び制御ブロックとを具備しており、装置中にデジタルフィルタを構成する方法を行うためのコンピュータが実行可能な命令を有するコンピュータが読取可能な媒体において、前記方法は、
フィルタタップの予め定められた数に等しいサイズを有する円形リストとしてアドレス制御ブロック中にデータの現在の書込みアドレスを維持し、
先入れ先出し待ち行列として第１のデータメモリポートから読取られるデータの第１の読取アドレスを維持し、
後入れ先出しスタックとして第２のデータメモリポートから読取られるデータの第２の読取アドレスを維持し、
円形リストとして、２で割算されるフィルタタップの予め定められた数に等しく、フィルタタップ数が奇数ならば切り上げられたサイズを有する係数読取アドレスを維持し、
アドレス制御ブロック中の現在の書込みアドレスにより決定された位置においてデータメモリ中に入力デジタルサンプルを記憶し、
データメモリ中の記憶されたサンプルと係数メモリ中の記憶された係数からの出力サンプルを計算する処理を含んでいるコンピュータが読取可能な媒体。
【請求項１６】
方法はさらに、計算された出力サンプルをデータメモリ中に記憶するステップを含んでいる請求項１５記載のコンピュータが読取可能な媒体。
【請求項１７】
方法はさらに、アドレス制御ブロック中にデシメーションカウンタを維持し、
各入力サンプルに対して、出力サンプルの計算前に、デシメーションカウンタがゼロになるまでデシメーションカウンタをデクリメントするステップを含んでいる請求項１５記載のコンピュータが読取可能な媒体。
【請求項１８】
第１及び第２の読取アドレス、書込みアドレス、および係数アドレスはそれぞれのメモリ中に仮想メモリアドレスとして維持されている請求項１５記載のコンピュータが読取可能な媒体。
【請求項１９】
カスケード接続されたデジタルフィルタを装置中に構成する方法を行うためのコンピュータが実行可能な命令を有するコンピュータが読取可能な媒体において、装置は、
第１及び第２のメモリポートを具備するデータメモリと、係数メモリと、第１のデジタルフィルタの動作を制御するためのパラメータの第１のセットと第２のデジタルフィルタの動作を制御するための値を保持するパラメータの第２のセットとを保持するアドレス及び制御ブロックとを具備し、前記方法は、
フィルタタップの予め定められた数に等しいサイズを有する円形リストとしてアドレス制御ブロック中にデータの現在の書込みアドレスを維持し、
先入れ先出し待ち行列として第１のデータメモリポートから読取られるデータの第１の読取アドレスを維持し、
後入れ先出しスタックとして第２のデータメモリポートから読取られるデータの第２の読取アドレスを維持し、
円形リストとして、２で割算されるフィルタタップの予め定められた数に等しく、フィルタタップ数が奇数ならば切り上げられたサイズを有する係数読取アドレスを維持し、
アドレス制御ブロック中の現在の書込みアドレスにより決定された位置においてデータメモリ中に入力デジタルサンプルを記憶し、
データメモリ中の記憶されたサンプルと係数メモリ中の記憶された係数から第１のデジタルフィルタの出力サンプルを計算し、
アドレス制御ブロック中のパラメータの第１のセットをアドレス制御ブロック中のパラメータの第２のセットと交換し、
データメモリ中の記憶されたサンプルと係数メモリ中の係数中の記憶された係数からのカスケード接続されたデジタルフィルタの出力サンプルを計算し、
アドレス制御ブロック中のパラメータの第１のセットをアドレス制御ブロック中のパラメータの第２のセットと交換する処理を含んでいるコンピュータが読取可能な媒体。
【請求項２０】
方法はさらに、計算された出力サンプルをデータメモリ中に記憶するステップを含んでいる請求項１９記載のコンピュータが読取可能な媒体。
【請求項２１】
方法はさらに、アドレス制御ブロック中にデシメーションカウンタを維持し、
各入力サンプルに対して、出力サンプルの計算前に、デシメーションカウンタがゼロになるまでデシメーションカウンタをデクリメントするステップを含んでいる請求項１９記載のコンピュータが読取可能な媒体。
【請求項２２】
第１及び第２の読取アドレス、書込みアドレス、および係数アドレスはそれぞれのメモリ中に仮想メモリアドレスとして維持されている請求項１９記載のコンピュータが読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は広く選択可能な範囲の周波数にわたって電子信号のデジタル濾波を行うための電子回路の電力、性能、物理的寸法において効率的な構成に関する。その構成は特定の有限インパルス応答（ＦＩＲ）フィルタ、ＦＩＲフィルタのカスケード、またはアプリケーションの周波数選択仕様を満たすための多速度ＦＩＲフィルタを迅速にプログラムし実行するために使用されることができる。
【背景技術】
【０００２】
本出願は2004年７月６日出願の米国特許出願第10/884,200号明細書（発明の名称“System and method for design and implementation of integrated-circuit digital filters”）に関連し、この出願は本出願で参考文献とされている。
【０００３】
デジタルＦＩＲフィルタを計算するための数学アルゴリズムはよく知られており、高い計算速度のデジタルハードウェアが利用可能になったので最近広く使用されている。しかしながら、計算は高い乗算と累算速度を必要とし、乗算器は構成するのに高価であり、大きな面積または時間遅延するので、ほとんどの構成は固定された周波数帯域に対して非常に特定的である。低い周波数帯域の構成ではしばしばソフトウェアを介してデジタル信号プロセッサで行われるが、高い周波数帯域では典型的に高く最適化された特定のハードウェアで構成され、周波数の特定のセットに対して適用可能であり、時には特別なフィルタ（固定され多数のタップ）に対してプログラム能力の所望の属性を失う。
【０００４】
ＦＩＲフィルタを構成するためのサンプルされたデータ式の通常の形態は次式のようになる。  
【数１】
2009507423.tif 000003
【０００５】
ここで、ｙ（ｎ）＝サンプル時間ｎに対するフィルタ出力であり、ｂ（ｉ）＝次数Ｎ−１のフィルタに対するフィルタ係数であり、ｘ（ｎ）＝サンプル時間ｎにおけるフィルタ入力であり、Ｎ＝フィルタのタップ数である。
【０００６】
線形位相ＦＩＲフィルタは中心係数について「鏡像」係数を有するので、折り返し係数方法は２の係数により乗算数を減少させることができる。固定されたタップ数（固定された次数）を有する特定のフィルタでは、式は、長さＮ−１のシフトレジスタ中にサンプルを保存し、次の入力サンプルの到着前に各出力サンプルに対する計算を完了するために十分な加算器と乗算器を設けることによって容易に実行されることができる。しかしながら、タップ数がプログラム可能であるならば、最小から最大のタップ数に適合するためのシフトレジスタのアドレスには非常に複雑なハードウェアを必要とする。構成がプログラム可能なサンプル周波数速度に適合しなければならないならば、加算器、乗算器、累算器の処理速度は最悪の場合のスループット速度（タップ数×入力サンプル速度）に適合するように設計されなければならない。また（過剰にサンプルされた入力速度を所望の出力サンプル速度へ減少するためのデシメーションと共に使用される）カスケード接続されたフィルタと（非常に減少された数の乗算器により非常に多数のタップフィルタを効率的に実行するために第１のフィルタのデシメーションと第２のフィルタ中の補間と共に使用される）多速度フィルタを提供することが望まれるならば、論理装置及びレジスタはさらに増加し、電力の要求はサンプル周波数と共に線形にスケールしない。
【発明の開示】
【課題を解決するための手段】
【０００７】
本発明はデジタルフィルタを構成する集積回路及び方法を開示する。集積回路は２つのデータサンプルのアクセスを同時に許容するための第１及び第２のポートを有するデータメモリと、フィルタ係数を記憶するための係数メモリとを有する。データメモリ中でアドレスされる第１及び第２のポートからのデータサンプルを加算するための第１の加算器と、第１の加算器からの値を係数メモリからの値により乗算する乗算器と、乗算器からの値を累算する第２の加算器とが存在する。
【０００８】
マスター制御装置は累算された値をさらに処理または出力するためにデータメモリに累算された値を選択的に記憶するように設けられ構成されている。
【０００９】
集積回路はさらに実行されるフィルタに対して適切に値を保持するためのアドレス及び制御ブロックを具備し、アドレス及び制御ブロックはデータメモリ及び係数メモリと通信している。
【００１０】
アドレス及び制御ブロックはさらに第１の予め定められたデジタルフィルタの値を保持するためのレジスタの第１のセットと、第２の予め定められたデジタルフィルタの対応する値を保持するためのレジスタの第２のセットを具備している。レジスタの第１のセットは少なくとも、選択的にデータメモリまたは係数メモリへの次の入力データのアドレスを保持する書込みアドレスレジスタと、第１のポートから読取られる次のデータメモリアドレスのアドレスを保持する第１の読取アドレスレジスタと、第２のポートから読取られる次のデータメモリアドレスのアドレスを保持する第２の読取アドレスレジスタと、読取られる次の係数のアドレスを保持する係数アドレスレジスタとを有する。
【００１１】
好ましい実施形態でフィルタを構成する方法は、円形リストとしてアドレス制御ブロック中にデータの現在の書込みアドレスを維持する処理を含んでおり、円形リストはフィルタタップの予め定められた数に等しいサイズを有する。その方法は先入れ先出し待ち行列として第１のポートからのデータの第１の読取アドレスと、後入れ先出しスタックとして第２のポートからのデータの第２の読取アドレスと、円形リストとして係数読取アドレスを維持する。係数アドレスは２で割算されるフィルタタップの予め定められた数に等しく、フィルタタップ数が奇数ならば切り上げられたサイズを有する。この方法はさらにアドレス制御ブロックの現在の書込みアドレスにより決定された位置においてデータメモリ中に入力デジタルサンプルを記憶し、データメモリ中の記憶されたサンプルと係数メモリ中の記憶された係数からの第１のデジタルフィルタの出力サンプルを計算し、アドレス制御ブロック中のパラメータの第１のセットをアドレス制御ブロック中のパラメータの第２のセットと交換し、データメモリ中の記憶されたサンプルと係数メモリ中の記憶されたサンプルからカスケード接続されたデジタルフィルタの出力サンプルを計算するステップを含んでいる。計算後、アドレス制御ブロック中のパラメータの第１のセットはアドレス制御ブロック中のパラメータの第２のセットと交換され、第２のフィルタが計算される。
【発明を実施するための最良の形態】
【００１２】
この明細書は広い周波数範囲にわたってプログラム可能であるハードウェアセットの構成を記載し、その範囲は乗算器の性能またはデータ及び係数の記憶に使用されるメモリまたはレジスタのアクセス時間によってのみ制限される。設計はまた３乃至Ｎ個のタップの線形のフィルタを適合し、Ｎは現在のＩＣ技術制約で実際的なメモリサイズと計算速度によってのみ制限される。同じハードウェアリソースが付加的な制御ハードウェアが少数で、カスケードされたまたは多速度フィルタを実現するために使用されることができる。
【００１３】
図１は好ましい実施形態の全体的なブロック図を示している。データメモリ100は典型的にアナログデジタル変換器によりエイリアス除去濾波されデジタル化されているアナログ入力からの入力サンプルを記憶するために使用される。データメモリ100は、システムがカスケードまたは多速度濾波用にプログラムされるとき第２のフィルタ動作により使用するため第１のフィルタ動作から計算された出力サンプルを記憶するために使用される。メモリ100は好ましくは一度に２つのサンプルのアクセスを許容するために２ポートメモリとして構成され、一方のポートは読取専用ポートであり、他方は読取又は書込みポートである。
【００１４】
係数メモリ105は１以上のフィルタの係数またはタップ加重を保持する。この係数メモリ105は実行される１以上のフィルタに対する複数の特有の係数を保持する大きさにされている。係数の数は折り返しフィルタ設計用のタップ数の１／２である。
【００１５】
データメモリ100と係数メモリ105の両メモリは好ましくはランダムアクセスメモリ（ＲＡＭ）である。
【００１６】
加算、乗算、累算（ＡＭＡＣ）機能はＦＩＲ演算の基本的な計算機能を行うために使用される。ＡＭＡＣ機能は第１の加算器110、乗算器115、累算機能120を含んでいる。好ましい実施形態では、累算された結果はデータメモリ100に記憶されるか、さらに処理するために出力されることに注意すべきである。ＡＮＡＣ機能はアドレス及び制御ブロック125に記憶された値により制御される。マスター制御装置190はプログラム入力からの係数を係数メモリ105へロードし、所望のフィルタ機能を実行するために必要な他の制御パラメータを記憶する。これらのパラメータは各フィルタの複数のタップの数と、各フィルタのサンプルと係数の初期開始及び終了アドレスと、各フィルタのデシメーションおよび補間値を含んでいる。
【００１７】
図１は次のフィルタアドレス及び制御レジスタ150のセットと、アクチブフィルタアドレス及び制御レジスタ155のセットを示しており、これらは共にアドレス及び制御ブロックレジスタ125を構成している。マスター制御装置190はコンピュータが読取可能な媒体195にそれを関連付けするプロセッサである。コンピュータが読取可能な媒体はマスター制御装置190のプログラムが先にロードされている読取専用メモリ（ＲＯＭ）、フラッシュメモリまたはＲＡＭであってもよい。ＲＯＭ195（図１ではこのように示されている）はこの明細書に記載されているようにデジタルフィルタを構成するのに必要な命令を実行するための記憶されたプログラムを保持している。
【００１８】
折り返されたＦＩＲ演算では、ＡＭＡＣ機能はデータメモリ100から２つのオペランドを受取り、これらのオペランドを第１の加算器110で加算し、この結果を計数メモリ105から選択された係数によって乗算器115で乗算し、この結果を累算器120で累算する。累算された値が単一のＦＩＲフィルタまたはカスケード接続されたフィルタの第２のフィルタの演算の結果であるならば、その結果は後処理プロセッサ（図示せず）に出力され、値がカスケード接続されたフィルタの第１のフィルタの結果であるならば、その結果は第２のフィルタ演算に入力するために確保されたデータメモリスペースに記憶される。
【００１９】
アドレス及び制御ブロックレジスタ125と係数メモリ105は実行されるフィルタに適切な値をマスター制御装置190によって予めロードされる。好ましい実施形態ではロードされる値はマスター制御装置190によりフィルタハードウェアに対して外部のソースから外部プロセッサに接続される直列ポート等により予めロードされる。フィルタパラメータを予めロードするこのような方法と装置の１例では、参考とされる同時出願の米国特許出願第10/884,200号明細書を参照されたい。しかしながらこの明細書はこの同時出願で開示されているシステム及び方法により限定されない。
【００２０】
マスター制御装置190は入力サンプルを捕捉するために必要な全てのアドレス、ゲーティング機能、タイミングを生成し、出力サンプルを生成するための一般化されたＦＩＲ式を行い、サンプルを出力し、または第２のフィルタにより使用するためのサンプルをデータメモリ100に記憶し、（カスケードフィルタが実行されるならば）第１のフィルタ演算から第２のフィルタ演算への制御を適時に切り換えることによりフィルタ演算の実行を開始する。デシメーションがエネーブルされるならば、ｎ個の出力サンプルの１つのみが計算され、ここでｎはデシメーション値であることに注意する。
【００２１】
好ましい実施形態のＦＩＲ設計は乗算数を減少するために実行は折り返し方法に基づいている。タップ数は非常に大きい可能性があるので、シフトレジスタの構成は現実的ではなく、それ故データ点をメモリ中に維持し、データエレメントを係数と共に正しい順序でＡＭＡＣハードウェアに提示しなければならない。このことは図２及び３で示され、以下説明するように、フィルタの予め規定されたタップ数にわたって循環シフト方法でエレメントをアドレスし、新しいデータエレメントがデータのアレイに入ったときにプロセスを反復することによって行われる（最も古いデータ点を最新のデータ点で重ね書きするとき開始アドレスを適切にシフトする）。
【００２２】
この設計はＡＭＡＣ機能とデュアルポート、１６ビットデータメモリ100の単一のセットを使用する。図１は２つのデータポート、即ち第１のポート210に対するマークされたｄａｔａ＿０と第２のポート220に対するマークされたｄａｔａ＿１を示している。好ましい実施形態では、係数は２０ビット幅である別々のメモリ105に記憶される。読者はより長い又はより短いワードが他の構成のデータまたは係数に対して使用されることができることを知るであろう。
【００２３】
マスター制御装置190または類似のコンピュータ手段は割当てられたメモリスペースに対する新しいデータの書込みを制御し、新しいデータ点の計算を開始する。この制御装置はまた各フィルタについてデシメーションを有するかそれを有しないカスケード接続されたフィルタを許容するために適切な開始アドレスをアドレスレジスタに入力する。
【００２４】
［メモリ割当て］  
各フィルタに対してデータメモリ100は仮想アドレススペース０乃至Ｎ−１を割当てられ、ここでＮはタップ数である。デュアルポートメモリは第１のポート210および第２のポート220を有し、一方は読取及び書込みポートであり、他方は読取専用ポートである。多数のフィルタに適合するために実際のアドレススペースはゼロからオフセットされる。割当てられる係数メモリ105は好ましい実施形態ではＮ／２  ２０ビットワードであり、２により割算されないＮでは切り上げられる。新しいデータをデータメモリ100に記憶するための開始アドレスはＮ−１＋適切なオフセットであり、書込みアドレスレジスタはこれが仮想アドレスゼロに到達するまでカウントダウンし、その後仮想アドレスＮ−１で再ロードされる。第１のフィルタデータスペースはアドレス０からＮ１−１までの範囲であり、第２のフィルタデータスペースはアドレスＮ１で開始しＮ１＋Ｎ２−１で終了する。係数は上部アドレススペースでは係数ゼロで記憶され、係数アドレスは係数の次数が高い程減少する。上部係数は係数仮想アドレスゼロにある。
【００２５】
［メモリアドレッシング］  
書込みアドレスレジスタ130（ｗｒｉｔｅ＿ａｄｄｒ）は仮想メモリスペースへ次の入力オペランドを記憶するためのアドレスを含んでいる。これはデータ出力計算の終了において更新される。
【００２６】
係数アドレスレジスタ145（ｃｏｅｆ＿ａｄｄｒ）は係数メモリ105のデータポート230からアクセスされる次の係数のアドレスを含んでいる。これは各クロックサイクルで更新される。係数メモリ105のデータポート230でｃｏｅｆおよびｃｏｅｆ＿１とマークされているボックスは第２のバッファが乗算器115へのオペランドのデータ流のタイミングを維持するためにこのポート230で使用されることが好ましいことを示している。
【００２７】
オペランドアドレスレジスタｒｅａｄ＿ａｄｄｒ０  135とｒｅａｄ＿ａｄｄｒ１  140はそれぞれ第１のデータポート210と第２のデータポート220から各クロックでアクセスされる２つのオペランドのアドレスを含んでおり、ｒｅａｄ＿ａｄｄｒ０は第１のデータポート210からのデータを読取るためのアドレスであり、ｒｅａｄ＿ａｄｄｒ１は第２のデータポート220からのデータを読取るためのアドレスである。
【００２８】
定数レジスタは対にされたデータオペランドと係数の最大及び最小のアドレス、即ちａｄｄｒ＿ｍａｘ165、ａｄｄｒ＿ｍｉｎ170、ｃｏｅｆ＿ｍａｘ175、ｃｏｅｆ＿ｍｉｎ180をそれぞれ含んでいる。これらの値はオペランドアドレス範囲にわたってアドレス値を「ラップ」するために比較し、データ点計算の終了時に初期アドレスを提供するために使用される。
【００２９】
ダウンサンプリングはゼロに予めロードされるデクリメントカウンタ185（ｄｅｃｍ＿ｃｔｒ）と定数レジスタ160（ｄｅｃｍ）により制御される。データ点はデクリメントカウンタ185がゼロに等しい入力に対してのみ計算される。他の入力は記憶されるが計算されず（即ち出力データ点は存在しない）、アドレスカウンタは更新される。例えば４のデシメーション値を有するフィルタは４毎の入力サンプルでのみ出力サンプルを計算する。
【００３０】
各データ点計算のアドレスの制御は、基本的に第１のポート210から読取られる最新のデータワードで開始するＦＩＦＯ待ち行列として動作するｒｅａｄ＿ａｄｄｒ０レジスタ135と第２のポートから読取られる最も古いデータワードで開始するＬＩＦＯスタックとして動作するｒｅａｄ＿ａｄｄｒ１レジスタ140を有するスタックとして入力データを処理する。実行サイクルの完了後、次のデータ入力はメモリ中の最も古いデータ点を置換し、スタックアドレスは適切にシフトされ、次の出力の実行が開始する。
【００３１】
［制御動作］  
アドレスレジスタの制御は図２と３の簡単化されたフローチャートにより示されている。図２はマスター制御装置190で動作するプログラムを示し、図３はマスター制御装置190のアドレス制御装置の機能の動作を示している。
【００３２】
マスター制御装置190は各フィルタの状態制御を別々に維持する。この制御は次の入力サンプルと、係数の数と、係数セットの開始アドレスとを記憶するためにアドレスに対するポインタを含んでいる。入力を受信するとき、マスター制御装置190はサンプルポインタアドレスで入力を記憶し、加算、乗算、累積論理装置で使用される係数及びサンプルをアドレスし、計算されたサンプルを出力する。デシメーションが使用されるならば、マスター制御装置190は入力を記憶するが、ｎ個の入力から１つの入力だけを計算し出力し、ここでｎはデシメーション値である。マスター制御装置190はその後入力ポインタアドレスをインクリメントし、コンテキストを第２のフィルタ演算の状態に切換え、第２のフィルタに対して同じ機能を行う。（補間がエネーブルされるならば、マスター制御装置190は多速度フィルタにおいて第１のフィルタから第２のフィルタへ通過されるｍ＋１出力のｍに対してゼロを挿入することに注意する。）第２のフィルタの演算の終了時に、マスター制御装置190は第２のフィルタのポインタを更新し、状態を第１のフィルタに戻すように切換え、プロセスは以下の説明および図２および３のフローチャートで説明されているように継続する。
【００３３】
アドレス及び制御ブロック125のレジスタはフィルタまたはフィルタの対に対して適切な値を予めロードされる。ステップ240で、プログラムは動作モードが設定されているか否かをチェックする。設定されているならば、プログラムはステップ245でアナログデジタル変換器からの入力を選択する。プログラムはステップ250で新しいデータ（新しい入力サンプル）をチェックする。マスター制御装置190は新しいデータ信号により示されているようにｗｒｉｔｅ＿ｄａｔａレジスタ200へ入力サンプルを受信するまでアイドル状態である。マスター制御装置190は第１のフィルタの出力サンプルの処理を開始するためにステップ255でアドレス制御装置機能へＧｏ信号を設定し、第１のサンプルをデータメモリ100へ書込む。プログラムはその後出力サンプル処理の終了を待機するためにステップ260で実行Ｆ１状態に入る（「Ｆ１」は２つのカスケード接続されたフィルタのうちの第１のものを示している）。アドレス制御装置はステップ315またはステップ325でＧｏ信号をリセットすることによりサンプル処理の終了を通報する。プログラムがこの状態であり、サンプルが計算されない（デクリメントカウンタ180がゼロではない）ならば、エネーブルされるフィルタが１つのみ存在する場合のように、マスター制御装置190はステップ275でアイドル状態に戻ることに注意する。サンプルが計算されないことを示すためにＮｏｎｅ信号が245でアドレス制御装置機能により設定される。第２のフィルタが存在するならば、第２のフィルタの制御レジスタはステップ280でアクチブレジスタに移動される。
【００３４】
第２のフィルタサンプルが計算されるならば、プログラムはサンプル結果がＡＭＡＣパイプライン中の処理を終了したことを示す遅延されたＬａｓｔ信号を待機するためにステップ285で待機状態に入る。サンプル結果値はその後、ステップ290でデータメモリ100に書き込まれ、制御装置がステップ300で実行Ｆ２状態（「Ｆ２」は２つのカスケード接続されたフィルタの第２のものを指している）に入り、Ｆ２値を制御レジスタへ移動してＮｏｎｅをゼロに設定するときサンプル処理を開始するためにＧｏが設定される。アドレス制御機能はＧｏのリセットによりＦ２出力サンプルの終了を示す。
【００３５】
図３に示されているように、アドレス制御装置機能はメモリアドレッシングのために全てのアドレス計算を行い、ＡＭＡＣ機能を供給するオペランドレジスタに転送する。Ｇｏ信号がステップ305で存在するならば、アドレス制御装置機能はステップ310でデシメーションカウンタ値185をチェックする。
【００３６】
デシメーション値がステップ310でゼロではないならば、プログラムはステップ315でデシメーションカウンタをデクリメントし、Ｇｏをゼロへ、Ｎｏｎｅを真へ設定し、そうでなければプログラムは次にステップ320で係数アドレスをチェックし、これが最小のアドレスであるか否かを決定する。最小のアドレスではないならば、デシメーションカウンタはステップ325でデシメーション定数160でロードされ、Ｇｏはゼロに設定され、Ｌａｓｔフラグは真に設定され、係数アドレス値145は定数レジスタ175中で最大値に設定される。係数アドレスがその最小値にあるならば、ステップ330でプログラムは係数アドレスをデクリメントし、ｒｅａｄ＿ａｄｄｒレジスタ（135、140）の読取アドレス値におけるデータメモリ100中のデータを第１の加算器のデータレジスタに移動し、現在の係数アドレスにおける係数値を乗算器115に関連される係数レジスタ（ｃｏｅｆ＿１）に移動する。
【００３７】
係数アドレスがその最小値にあるならば、ステップ325後、プログラムはステップ335で奇数タップフィルタについてチェックする。何も存在しないならば、ステップ340でデータは係数データと同様に現在の読取アドレスでデータメモリ100からロードされる。奇数タップフィルタが存在するならば、ステップ345で第１のポート210（ｄａｔａ＿０）に関連されるデータレジスタはｒｅａｄ＿ａｄｄｒ０  135値により指向される値に設定され、第２のポート220（ｄａｔａ＿１）に関連されるレジスタはゼロに設定され、係数メモリポート230（ｃｏｅｆ）に関連されるレジスタは現在の係数アドレスからロードされる。ステップ345からの実行はステップ365へ進み、ここで書込みアドレスがその最小値であるかについてチェックされる。値が最小値であるならば、書込みアドレスレジスタ130はａｄｄｒ＿ｍａｘ定数レジスタ165から最大アドレスに設定され、ｒｅａｄ＿ａｄｄｒ０レジスタ135は書込みアドレスに設定され、ｒｅａｄ＿ａｄｄｒ１  140は最大のアドレスに設定される。書込みアドレスがその最小ではないならば、ステップ370は書込みアドレスレジスタ130をデクリメントし、書込みアドレスをｒｅａｄ＿ａｄｄｒ０レジスタ135へ移動し、デクリメントされた書込みアドレスをｒｅａｄ＿ａｄｄｒ１  140へ移動する。実行はその後ステップ300へ戻る。
【００３８】
ステップ330から継続して、プログラムはステップ350で、ｒｅａｄ＿ａｄｄｒ０レジスタ135の値がその最大であるか否かを決定するようにチェックする。最大ではないならば、読取アドレスはステップ360でデクリメントされ、実行はステップ380へ進む。そうでなければａｄｄｒ＿ｍｉｎレジスタ170の定数がｒｅａｄ＿ａｄｄｒ０レジスタ135へロードされ、実行はステップ380へ進む。
【００３９】
ステップ380はｒｅａｄ＿ａｄｄｒ１  140の値が定数レジスタａｄｄｒ＿ｍｉｎ  170の最小のアドレスであるか否かを決定するようにチェックする。最小ではないならば、読取アドレスはデクリメントされ、そうでなければｒｅａｄ＿ａｄｄｒ１  140はａｄｄｒ＿ｍａｘ定数レジスタ165中の値に設定され、実行はステップ300へ進む。
【００４０】
以上説明したように、アドレス制御装置機能はさらに折り返されたＦＩＲ演算のためのＦＩＦＯおよびＬＩＦＯアドレッシングのラップアラウンドを処理する。これはＧｏのリセットによる計算の完了を示している。
【００４１】
オペランドアドレスレジスタは５１２×１６ビットデータメモリをアドレスするために９ビットであり、係数アドレスレジスタは２５６×２０ビット係数メモリをアドレスするために８ビットであることにも注意すべきである。読者はこれらの値が単なる例示であり、他の構成がメモリ中に異なる寸法のワードを有することができることを認識すべきである。
【００４２】
例示的な実施形態で列挙した値に対応して、オペランド加算レジスタは１７ビットであり、被乗数レジスタは３７ビットであり、累算器は長さが４５ビットである。出力は１６ビットに切り捨てられる。
【００４３】
１例として、４の係数により入力サンプル速度をデシメートするために使用される２つのカスケード接続されたローパスフィルタを考慮すると、後続の演算に対してクリーンでエイリアス除去された出力が提示される。
【００４４】
第１のフィルタは２のデシメーションを有する２７タップローパスであり、第２のフィルタは同様に２のデシメーションを有する６３タップローパスである。入力サンプル速度は毎秒２００，０００サンプルであり、出力は毎秒５０，０００サンプルである。フィルタブロックは各出力サンプルが入力サンプル間で時間内に計算されることのできる任意のサンプル速度で動作することに注意すべきである。非常に高いサンプル速度では、付加的な加算、乗算、累算機能が付加されることができ、メモリはメモリ帯域幅を改良するために付加的な係数によりインターリーブされることができる。
【００４５】
例えば２７タップフィルタは０から２６の記憶メモリアドレスを割当てられ、６３タップフィルタはアドレス２８乃至９０を割当てられる。第１のフィルタの係数はメモリ105のアドレス０乃至１３にロードされ、第２のフィルタタップ加重は位置１４乃至４５に記憶される。マスター制御装置190は各フィルタの現在の状態を維持し、別のフィルタが適切なデシメーションで後続する１つのフィルタ動作を行うように制御を切換える。２のデシメーションは１つおきの出力サンプルのみが計算され、各入力サンプルにおいて出力することを示している。
【図面の簡単な説明】
【００４６】
【図１】好ましい実施形態の全体的なブロック図。
【図２】好ましい実施形態のマスター制御装置の機能の実行の流れを示すフローチャート。
【図３】マスター制御装置のアドレス制御機能における実行の流れを示すフローチャート。
【図１】
2009507423.tif 000004
【図２】
2009507423.tif 000005
【図３】
2009507423.tif 000006