(57)【特許請求の範囲】
【請求項１】
少なくとも１つのフィルタ係数を含んだフィルタ関数を実現するように構成された回路装置であって、
（ａ）入力値、及び、前記フィルタ関数からのフィルタ係数を表す予めスケーリングされたフィルタ係数を受け取り、それらの積を出力するように構成された乗算器と、
（ｂ）前記乗算器から前記積を受け取るように結合され、前記予めスケーリングされたフィルタ係数と関連したシフト距離だけ前記積を右にシフトして、シフトされた積を生成するように構成されているプログラマブルシフタと、
を備え、
前記予めスケーリングされたフィルタ係数は、前記フィルタ関数からの前記フィルタ係数に対して、２に等しい桁移動子により、前記シフト距離の累乗にスケーリングされるものであり、前記フィルタ関数からの前記フィルタ係数に前記桁移動子を掛け、さらに整数値に丸めたものに等しいことを特徴とする回路装置。
【請求項２】
前記予めスケーリングされたフィルタ係数は、前記フィルタ関数からの前記フィルタ係数に前記桁移動子を掛けて、整数値に丸め、さらに前記予めスケーリングされたフィルタ係数に関連した補正項を加えたものに等しいことを特徴とする請求項１に記載の回路装置。
【請求項３】
前記フィルタ関数は複数のフィルタ係数を含み、かつ、前記回路装置は、前記乗算器に結合された係数メモリをさらに備え、前記係数メモリは、複数の予めスケーリングされたフィルタ係数を格納するように構成され、各予めスケーリングされたフィルタ係数は、前記複数のフィルタ係数の１つを表すことを特徴とする請求項１に記載の回路装置。
【請求項４】
前記複数の予めスケーリングされたフィルタ係数の各々が共通の幅Ｗを有し、かつ、前記各予めスケーリングされたフィルタ係数は、等式
２Ｗ−１−１≧｜予めスケーリングされたフィルタ係数｜≧２Ｗ−２
を満たすように構成されていることを特徴とする請求項３に記載の回路装置。
【請求項５】
前記複数の予めスケーリングされたフィルタ係数の各々は、シフト距離に関連し、前記回路装置は、
（ａ）前記プログラマブルシフタに結合され、かつ、前記各予めスケーリングされたフィルタ係数に関連したシフト距離を格納するように構成されたシフトメモリと、
（ｂ）一連の入力値を格納するように構成された入力メモリと、
（ｃ）前記入力メモリ、前記係数メモリ及び前記シフトメモリにアクセスして、入力値と予めスケーリングされたフィルタ係数とを前記乗算器にそれぞれ出力し、シフト距離をプログラマブルシフタに出力して、複数のシフトされた積を生成するように構成された制御回路と、
をさらに備えていることを特徴とする請求項３に記載の回路装置。
【請求項６】
前記複数のシフトされた積を合計してフィルタ処理された出力を生成するように構成された合計回路をさらに備えていることを特徴とする請求項５に記載の回路装置。
【請求項７】
前記フィルタ関数からの前記複数のフィルタ係数は複数の対称的なフィルタ係数の対を含み、前記係数メモリ及び前記シフトメモリの各々は、各フィルタ係数の対の１つのフィルタ係数に関連した予めスケーリングされた係数及びシフト距離を格納するように構成されており、前記入力メモリが第１及び第２の出力ポートを含み、各出力ポートが前記複数の入力値の１つを出力するように構成されており、前記回路装置は、前記第１及び第２の出力ポートと前記乗算器との中間に結合され、かつ、前記第１及び第２の出力ポートから出力される前記入力値を合計するように構成された加算器をさらに備え、前記制御回路は、さらに、前記入力メモリを制御して、フィルタ係数の対の両方のフィルタ係数に関連した入力値を前記入力メモリの前記第１及び第２の出力ポートから同時に出力するように構成されていることを特徴とする請求項５に記載の回路装置。
【請求項８】
前記フィルタ関数は、有限インパルス応答（ＦＩＲ）フィルタ関数であることを特徴とする請求項１に記載の回路装置。
【請求項９】
前記乗算器は、Booth-Wallace乗算器を含むことを特徴とする請求項１に記載の回路装置。
【請求項１０】
請求項１に記載の回路装置を備えていることを特徴とする集積回路装置。
【請求項１１】
請求項１に記載の回路装置を備えていることを特徴とする電子装置。
【請求項１２】
（ａ）一連の入力値を格納するように構成された入力メモリと、
（ｂ）ｎを整数のシフト距離とすると、各々が、２ｎによりスケーリングされて整数値に丸められさらに関連した補正項を加えられた所定のフィルタ関数の理想的なＦＩＲフィルタ係数に等しい複数の予めスケーリングされたフィルタ係数を格納するように構成された係数メモリと、
（ｃ）各々の予めスケーリングされたフィルタ係数に関連した前記シフト距離ｎを格納するように構成されたシフトメモリと、
（ｄ）前記入力メモリから入力値を受け取り、前記係数メモリから予めスケーリングされたフィルタ係数を受け取り、かつ、それらの積を出力するように構成された乗算器と、
（ｅ）前記乗算器からの前記積、及び、前記積が生成された前記予めスケーリングされたフィルタ係数に関連した前記シフト距離ｎを受け取り、前記積をｎビットだけ右にシフトするように構成されたプログラマブルシフタと、
（ｆ）前記入力メモリ、前記係数メモリ及び前記シフトメモリにアクセスして、入力値及び予めスケーリングされた係数を前記乗算器に出力し、シフト距離を前記プログラマブルシフタに出力して、複数のシフトされた積を生成するように構成された制御回路と、
（ｇ）前記複数のシフトされた積を合計してフィルタ処理された出力を生成するように構成された合計回路と、
を備えていることを特徴とするディジタル有限インパルス応答（ＦＩＲ）フィルタ回路装置。
【請求項１３】
前記複数の予めスケーリングされたフィルタ係数の各々が共通の幅Ｗを有し、かつ、前記各予めスケーリングされたフィルタ係数は、等式
２Ｗ−１−１≧｜予めスケーリングされたフィルタ係数｜≧２Ｗ−２
を満たすように構成されていることを特徴とする請求項１６に記載の回路装置。
【請求項１４】
前記フィルタ関数からの前記複数のフィルタ係数は複数の対称的なフィルタ係数の対を含み、前記係数メモリ及び前記シフトメモリの各々は、各フィルタ係数の対の１つのフィルタ係数に関連した予めスケーリングされた係数及びシフト距離を格納するように構成されており、前記入力メモリが第１及び第２の出力ポートを含み、各出力ポートが前記複数の入力値の１つを出力するように構成されており、前記回路装置は、前記第１及び第２の出力ポートと前記乗算器との中間に結合され、かつ、前記第１及び第２の出力ポートから出力される前記入力値を合計するように構成された加算器をさらに備え、前記制御回路は、さらに、前記入力メモリを制御して、フィルタ係数の対の両方のフィルタ係数に関連した入力値を前記入力メモリの前記第１及び第２の出力ポートから同時に出力するように構成されていることを特徴とする請求項１２に記載の回路装置。
【請求項１５】
一連の入力値を処理してフィルタ関数を表すフィルタ処理された出力を生成する方法であって、
（ａ）一連の入力値を受け取るステップと、
（ｂ）シフトされた積ごとに、
（ｉ）前記一連の入力値からの入力値に、前記フィルタにより実現されるフィルタ関数からのフィルタ係数を表す予めスケーリングされたフィルタ係数を掛けて、積を生成すること、及び、
（ii）前記予めスケーリングされたフィルタ係数に関連したシフト距離だけ前記積を右にシフトして前記シフトされた積を生成すること、
を含む、複数のシフトされた積を生成するステップと、
（ｃ）前記複数のシフトされた積を合計して前記フィルタ処理された出力を生成するステップと、
を備え、
各予めスケーリングされたフィルタ係数は、前記フィルタ関数からの前記表されたフィルタ係数に対して、２に等しい桁移動子により、前記シフト距離の累乗にスケーリングされるものであり、
各予めスケーリングされたフィルタ係数は、前記フィルタ関数からの前記表されたフィルタ係数に前記桁移動子を掛け、さらに整数値に丸めたものに等しいことを特徴とする方法。
【請求項１６】
各予めスケーリングされたフィルタ係数は、前記フィルタ関数からの前記表されたフィルタ係数に前記桁移動子を掛けて、整数値に丸め、さらに前記予めスケーリングされたフィルタ係数に関連した補正項を加えたものに等しいことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記複数の予めスケーリングされたフィルタ係数の各々が共通の幅Ｗを有し、かつ、前記各予めスケーリングされたフィルタ係数は、等式
２Ｗ−１−１≧｜予めスケーリングされたフィルタ係数｜≧２Ｗ−２
を満たすように構成されていることを特徴とする請求項１５に記載の方法
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、概してディジタルフィルタに関し、より詳細には、有限インパルス応答（ＦＩＲ）フィルタ及びそのハードウェアの実現に関する。
【０００２】
【従来の技術】
有限インパルス応答（ＦＩＲ）フィルタのようなディジタルフィルタは、いくつかの電子的な用途で使用されている。例えば、ディジタルフィルタは、無線通信の用途、例えば、無線電話送受話器、無線ネットワークのハードウェアなどで広範に使用されて、入力無線信号をフィルタにかけ処理して、そこからデータストリームを回復する。一般的に、しかしそれに限られないが、ディジタルフィルタは、他の制御回路及びディジタル信号処理回路とともに集積回路装置に実装される。
【０００３】
ディジタルフィルタは、比較的高速にデータを処理しなければならないことが多く、そのために多くの場合に、ディジタルフィルタ内の内部遅延を最小にすることが望ましい。また、小型化に向けての絶え間のない努力を想定すれば、ディジタルフィルタは、集積回路装置上において可能な限りコンパクトでかつ可能な限り小さなスペースを占めることが多くの場合に望ましい。さらに、無線電話送受話器のような携帯型の用途で使用されるときには、装置の全体的な電池寿命の延長を支援するために、ディジタルフィルタの電力消費を最小限にすることが多くの場合に望ましい。
【０００４】
１つの一般に使用される種類のディジタルフィルタは、有限インパルス応答（ＦＩＲ）フィルタであり、そのフィルタの（時間領域における）挙動は、一般に次式で表される。
【０００５】
【数１】
0004729685.tif 000002
ここで、ｎは係数の番号であり、ｘ［ｋ］はｋ番目の時間ステップにおける入力値であり、Ｈ［ｉ］は符号付き整数ＦＩＲフィルタ係数であり、さらにｙ［ｋ］はｋ番目の時間ステップにおけるフィルタのフィルタ処理された出力値である。
【０００６】
そのような伝達関数をハードウェアで実現するために、一般に別個の乗算器段と加算器段とが利用されて、乗算器段は各入力値とフィルタ係数との積を生成するように構成されており、さらに加算器段は乗算器段により生成された積を合計してフィルタ処理された出力を生成するように構成されている。いくつかの用途では、並列回路を使用して各乗算を並列に行うように、乗算器段は構成されている。しかし、スペースが制約されるいくつかの用途では、そのような並列回路は大きすぎることが多い。他の方法では、単一の乗算器が使用されて、その単一乗算器に入力値と係数とを順次に供給して積を生成し、それが加算器段で合計される。
【０００７】
乗算器構造の最適化の進歩にもかかわらず（例えば、ブース・ウォレス（Booth-Wallace）乗算器の設計）、多くの場合に依然として乗算器段がＦＩＲフィルタの中で最も大きくかつ最も遅い構成要素である。従って、フィルタ設計に関連した大きさ、電力消費及び遅延を減少させようとする試みは、フィルタの乗算器段の縮小に集中することが多い。
【０００８】
乗算器の大きさを小さくする１つの方法は、理想的なフィルタ係数を表すために使用されるディジタル値の分解能（又は、ビット数）を減少させることである。しかし、分解能を減少させると、理想的なフィルタ係数を固定幅のディジタル値に丸めて変換することに起因する打切り誤差の増加のために、必ず、フィルタの応答（即ち、実際のフィルタ変換関数が、そのフィルタが目的として設計された理想的な伝達関数に一致する程度）もまた減少する。従って、係数の分解能を減少させることができる程度は、フィルタの必要な許容範囲で制限されることが多い。
【０００９】
他の方法では、ＦＩＲフィルタ係数の操作により使用乗算器を無くそうとする。一例として、係数は２の整数乗に等しいことが要求され得るものであり、その結果、簡単で効率のよいシフトレジスタの設計を使用して乗算を行うようにすることができる。他の例として、加算器とシフトレジスタとの構成可能なブロックを使用して、基本的に各係数を２の整数乗の和として表し、それにより、入力値に対して複数のシフト動作を並列に行って係数と入力値との乗算を表すことができる（例えば、１０の値を持つ係数の乗算は、８及び２と入力値との乗算にそれぞれ対応する２つのシフト動作の結果を互いに合計することで、実現し得る。
【００１０】
【発明が解決しようとする課題】
しかし、これらの方法の各々では、係数の分解能が著しく減少して、適切なフィルタ応答を維持するために追加の係数が必要になることがある。その結果、追加の係数を処理するための追加の回路が必要になり、フィルタのスペース、電力消費及び遅延が増大する。さらに、そのような乗算器代替物の配置は、乗算器よりも難しくかつ複雑であることが多く、結果として生じる回路配置は効率のよいものではない。いくつかの乗算器設計は、コンパクトさ、低電力消費及び速度に対して高度に最適化されており、その結果、そのような代替構造の乗算器に優る利益は、あるとしても、無視できる程度である。さらに、そのような代替構造で得られる大きさ縮小の改良は、多くの場合に遅延の増大で埋め合わされて、いくつかの高速の用途に対してそのような構造は不適当になっている。
【００１１】
従って、当技術分野では、従来の設計よりも小さなスペース、小さな電力でかつ遅延が少なくて望ましいフィルタ応答を実現する改良されたディジタルフィルタ設計が非常に必要とされている。
【００１２】
【課題を解決するための手段】
本発明は、従来技術に関連したこれら及び他の問題に対処して、ディジタルフィルタの乗算器段が、乗算器の下流に結合されたプログラマブルシフタを使用して、所定のフィルタ機能を実現する「予めスケーリングされた」フィルタ係数と入力値との積をシフトする回路構成及び方法を提供する。適切な予めスケーリングされたフィルタ係数、及び、積をシフトすべき「シフト距離」の適切な選択によって、フィルタのディジタル実施に関連した打切り誤差を最小にすることが可能であり、同じ係数分解能を持った他のフィルタ実施に比べて改良されたフィルタ応答を提供し、又は、代替として、減少された係数分解能を用いて適切なフィルタ応答を維持することができるようになる。さらに、係数分解能を減少させた場合に、同等の従来設計よりも比較的小さなスペース、小さな電力消費、さらに少ない遅延のフィルタを実現することができる。
【００１３】
いくつかの方法でフィルタ関数からの理想的なフィルタ係数を表すために、本発明に従った予めスケーリングされたフィルタ係数を使用することができる。予めスケーリングされたフィルタ係数に関連したシフト距離を桁移動子とする２の累乗に等しいスケーリング係数で、理想的なフィルタ係数をスケーリングすることにより、予めスケーリングされたフィルタ係数を、理想的なフィルタ係数から得ることができる。そのようなものとして、予めスケーリングされたフィルタ係数に固有なスケーリング動作は、プログラマブルシフタでシフト動作を行うことにより不要になる。
【００１４】
また、理想的なフィルタ係数とスケーリング係数との積に対して行われる丸め操作によって、予めスケーリングされたフィルタ係数を、理想的なフィルタ係数から得ることができる。さらに、理想的なフィルタ係数と基準係数の丸められた積とに補正項を加えることによって、予めスケーリングされたフィルタ係数を、理想的なフィルタ係数から得ることができる。補正項を加えることで、スケーリング係数によるスケーリングで実現されるもの以上に、フィルタ応答の一層の改良を得ることができる。
【００１５】
一般に、理解されるであろうが、本発明に従った様々な予めスケーリングされたフィルタ係数の表現を生成するために、いくつかの演算を実施することができる。従って、本発明はここで議論する特定の実施に限定されない。
【００１６】
本発明を特徴付けるこれら及び他の利点及び特徴は、本明細書に添付され本明細書の他の部分を形成する特許請求の範囲に示される。しかし、本発明及びそれの使用により達成される利点及び目的をより適切に理解するために、図面及び本発明の例示的な実施形態が説明されている添付の記述内容を参照すべきである。
【００１７】
【発明の実施の形態】
本発明に従った実施形態は、一般に、ハードウェア回路で有限インパルス応答（ＦＩＲ）ディジタルフィルタを効率的に実施するために使用される。以下でより明らかになるように、フィルタ処理の品質にほとんど又は全く悪影響を及ぼすことなく、フィルタの大きさ、電力消費、及び遅延を最小にすることができる。
本発明をより適切に理解するために、以下で次の用語を使用する。
Ｈ［ｉ］  理想的なフィルタ係数
ｈ［ｉ］  符号付き整数フィルタ係数
Ｈ＊［ｉ］  スケーリングされた理想的なフィルタ係数
ｈ＊［ｉ］  予めスケーリングされた符号付き整数フィルタ係数
ｎ  ＦＩＲフィルタ係数の番号
ｘ［ｋ］  ｋ番目のＦＩＲフィルタ入力値
ｙ［ｋ］  ｋ番目のＦＩＲフィルタ出力値
ｚｋ  ｋ番目の複素周波数点
Ｒ  所望の伝達関数と達成される伝達関数との間の偏差を決定する離散的（計算された）実伝達関数の点の数
ＳＥ  二乗誤差、離散的（Ｒの周波数点ｚｋについて計算された）実伝達関数と離散化（同じＲの周波数点ｚｋについて計算された）理想的な（所望の）伝達関数との間の合計二乗差
ｓ［ｉ］  ＦＩＲフィルタ動作時のシフト距離
ｃ［ｉ］  補正項
Ｗ  最終ＦＩＲフィルタ係数の分解能
Ｔ  丸められた結果が所望ＦＩＲ係数範囲（−２Ｗ−１≦ｈ［ｉ］×２Ｔ≦２Ｗ−１−１）に適合するように、理想的なＦＩＲフィルタ係数に掛ける共通係数２Ｔを決定する。
【００１８】
さらに、そのようなフィルタの使用及び構成の背景にある原理を具体的に説明する前に、１つの従来のＦＩＲフィルタ設計を簡単に説明する。
【００１９】
具体的には、図１は、上の式（１）で表される伝達関数を実現することができる１つの従来のＦＩＲフィルタ設計１０を示す。フィルタ１０は、１２で表されるような入力データｘ［ｋ］を受け取り、最後のｎの入力値が任意の与えられた時間ステップｋでの計算に使用することができるように、そのような入力データを入力メモリ１４（例えば、ランダムアクセスメモリ、レジスタ又はラッチのバンク、又は他の形態の記憶装置）に格納する。入力メモリ１４の出力は、乗算器１６の１つの入力に供給される。その乗算器の他方の入力は係数メモリ１８に結合され、その係数メモリ１８には、フィルタ１０で実現される伝達関数を表すフィルタ係数がその中に格納されている。乗算器１６の出力は合計回路２０に供給され、その合計回路２０が乗算器で出力された値を累積し、時間ステップｋの結果ｙ［ｋ］を出力２２から出力する。
【００２０】
制御回路２４は各メモリ１４、１８に結合されて、各メモリ１４、１８に向けるべき一連のインデックス値ｉを供給して、適切な入力及び係数項を順次に乗算器１６に出力する。その結果、乗算器は、入力値とフィルタ係数との適切な積を合計回路２０に順次に出力する。制御回路２４は、また、第１の項を乗算器１６に供給する前に、リセット信号を合計回路２０に出力するようにも構成される。
その結果、総てのインデックス値０．．ｎ−１がメモリ１４、１８に供給されると、合計回路が補正結果を出力２２から出力する。
【００２１】
入力データｘ［ｋ］はＬビット符号付き整数値で表され、各ＦＩＲフィルタ係数Ｈ［ｉ］はＭビット符号付き整数値（以下で、項ｈ［ｉ］で示す）で表されると想定すると、単一の出力値ｙ［ｋ］を計算するには、ｎＬ×Ｍの符号付き乗算及びＬ×Ｍ乗算器が必要になる。上で議論したように、乗算器は比較的大きな機能ブロックであり、フィルタの全遅延の相当な部分を占めるだけでなく、フィルタで使用される全電力の相当な部分を消費することが多い。そのようなものとして、ＦＩＲ乗算器に関連した遅延だけでなく、大きさも最小にすることが望ましい。乗算器のスペースの要求、電力消費及び遅延特性を最適化するいくつかの乗算器の設計が開発された。しかし、大きさ、電力消費及び遅延の減少は、乗算器に供給される各入力値の分解能の減少によって単純に起こリ得るそれらの減少に一致しない可能性がある。
【００２２】
各入力値と「予めスケーリングされた」フィルタ係数との積の結果に対して可変シフト動作が行われる乗算器段を使用することにより、本発明に従って、乗算器の大きさを縮小することができる。従って、変更されたフィルタの式は、次式のようになる。
【００２３】
【数２】
0004729685.tif 000003
ここでｈ＊［ｉ］は予めスケーリングされた符号付き整数係数であり、ｓ［ｉ］は予めスケーリングされた係数と入力値ｘ［ｋ−ｉ］との積が右にシフトされる（２ｓ［ｉ］で割るのに等しい）可変シフト距離である。
【００２４】
上記のフィルタの式を実現するために使用される可能性のあるフィルタ設計の１つの適当な表現は、図２にフィルタ３０として図示する。フィルタ３０は、図１のフィルタ１０と類似しており、入力３２、入力メモリ３４、乗算器３６、係数メモリ３８、合計回路４０、出力４２及び制御回路４４を使用している。しかし、フィルタ１０とは異なって、フィルタ３０は、予めスケーリングされた係数ｈ＊［ｉ］を係数メモリ３８に格納し、さらに、各フィルタ係数に対するシフト距離ｓ［ｉ］を格納するシフトメモリ４６、並びに、乗算器３６の出力と合計回路４０との間に置かれたプログラマブルシフタ４８を使用する。シフトメモリ４６は制御回路４４からインデックス入力を受け取り、それに応答して、シフタ４８が乗算器３６の出力を右にシフトさせなければならないシフト距離を出力する。
【００２５】
以下で明らかになるように、予めスケーリングされた係数及び乗算後シフトの使用によって、より少ないビットに符号化されたフィルタ係数を用いて、より優れたフィルタ性能を得ることができる。そのビットは、図２でＭ−Ｚの幅を持つ予めスケーリングされた係数で表わされる（また、以下ではＷとして示す）。その結果、乗算器３６の大きさは、Ｌ×（Ｍ−Ｚ）乗算器に縮小させることができて、大きさ、電力消費及び遅延が節約される。特定の設計に関したＺの最適値の選択については、図５に関連して以下でより詳細に説明する。
【００２６】
本発明に従った予めスケーリングされた係数は、少なくとも、丸め及び打切りの前に２Ｓ［ｉ］の値で関連した理想的な係数をスケーリングして丸め及び打切りの動作に起因する誤差を減少させることを取り入れている。さらに、いくつかの実施においては、最も大きな係数が許可され選ばれた係数の幅Ｗに適合するように、理想的な係数の総てを共通の係数２Ｔでスケーリングすることも必要となり得る。換言すると、共通スケーリング動作を行う際に使用するＴの値は、次の式に従って設定しなければならない。
｜round（max（ｈ［ｉ］）×２Ｔ）｜≦２Ｗ−１−１      （３）
具体的には、丸め及び打切りの前に、理想的な係数Ｈ［ｉ］がスケーリングされて、次式のスケーリングされた理想的な係数Ｈ＊［ｉ］が生成される可能性がある。
Ｈ＊［ｉ］＝Ｈ［ｉ］×２Ｔ×２Ｓ［ｉ］≦２Ｗ−１−１      （４）
ここで共通スケーリング動作を行う必要がない場合、Ｔはゼロに等しくてもよい。
【００２７】
本発明に従った予めスケーリングされた係数の１つの実施では、次式に示すように、Ｗビット符号付き整数に丸められ打切られたスケーリングされた理想的な係数Ｈ＊［ｉ］が使用される。
｜ｈ＊［ｉ］｜＝｜round（Ｈ＊［ｉ］）｜
＝｜round（Ｈ［ｉ］×２Ｔ×２Ｓ［ｉ］）｜
≦２Ｗ−１−１                            （５）
予めスケーリングされた係数ごとにシフト距離を適切に選ぶことによって、フィルタ係数の符号付き整数表現の先頭のゼロを取り除いて、そのような係数の少数部分を予めスケーリングされた係数の中に入れることができる限りにおいて、利点が得られる。
【００２８】
本発明に従った予めスケーリングされた係数の他の実施では、追加の符号付き整数補正項ｃ［ｉ］が、次式で示すように、丸められ切り捨てられたスケーリングされた理想的な係数Ｈ＊［ｉ］に加えられる。
ｈ＊［ｉ］＝round（Ｈ［ｉ］×２Ｔ×２Ｓ［ｉ］）＋ｃ［ｉ］  （６）
各予めスケーリングされた係数に対する適切な補正項ｃ［ｉ］の決定は、数学的なシミュレーション及び解析によろうが、又は直接的な経験プロセスによろうが、いくつかの方法で行われ得る。さらに、図５に関連して以下で議論するように、最適な補正項の決定は、最適なシフト距離及び係数（従って、乗算器）幅の減少の決定と組み合わされ得る。しかし、他の実施形態では、そのような最適値の選択は、互いに独立に行われ得る。
【００２９】
ここで図３に移ると、本発明に従ったＦＩＲフィルタ設計の使用に適した１つの特定の環境は無線通信用途、例えば、無線電話のような無線通信装置５０の受信経路であり、その一般的な構成は当技術分野で周知である。装置５０はアンテナ５２を含むものとして図示されている。そのアンテナ５２は無線信号を受信し、その信号を低雑音増幅器５４に送り、その低雑音増幅器５４の出力は、ミキサ５６により局部発振器５８からの中間周波（ＩＦ）信号と組み合わされ、ＩＦ帯域フィルタ６０を通してフィルタ処理されて、無線信号からアナログデータ信号を復調する。デルタシグマアナログディジタル変換器（ＡＤＣ）６２が、そのアナログ信号を受け取り、ディジタル信号を生成する。そのディジタル信号は、くし形フィルタ６４に供給され、次に、デルタシグマＡＤＣで生成された高周波量子化雑音を除去する低域フィルタとして動作するディジタルＦＩＲフィルタ６６に供給される。フィルタ６６の出力は、受け取られたディジタル信号を用途に適切な方法で処理するディジタル信号処理装置６８に供給される。
【００３０】
しかし、理解されるであろうが、本発明に従ったＦＩＲフィルタは、ＦＩＲフィルタが一般に使用される無数の他の電子装置で使用され得る。例として、他の無線応用分野、高速信号処理応用分野などで使用される他の装置がある。従って、本発明はここで議論した特定の無線の用途に限定されない。
【００３１】
さらに、理解されるであろうが、ＦＩＲフィルタは１つ又は複数の集積回路装置に組み込まれ得るものであり、さらにそのような集積回路装置は、ＦＩＲフィルタの機能を実施するだけであることもあり、又は本発明に従った他の機能も実施する可能性がある。例えば、図３に示される例示的な用途では、ＦＩＲフィルタ６６は、ＡＤＣ６２、くし形フィルタ６４、ディジタル信号処理装置６８、及び他のディジタルハードウェア回路とともに単一集積回路装置に実装され得るということが予期されている。また、システムオンチップ（ＳＯＣ）用途のような応用分野では、追加のアナログ回路、例えば、ＬＮＡ５４、ミキサ５６及びＩＦ帯域フィルタ６０もまた、同じ集積回路装置に組み込まれ得る。
【００３２】
さらに、認識すべきことであるが、ここでハードウェア定義プログラムと呼ぶ、デバイス上の回路配列の配置を定義する１つ又は複数のコンピュータデータファイルを使用して、集積回路装置は一般に設計製造される。そのプログラムは一般に、設計ツールによって公知の方法で生成され、その後製造時使用されて、半導体ウェハに適用される回路配列を定義する配置マスクを作成する。一般に、そのプログラムは、ＶＨＤＬ、ｖｅｒｉｌｏｇ、ＥＤＩＦなどのハードウェア定義言語（ＨＤＬ）を使用して、予め定義されたフォーマットで与えられる。このように、本発明は完全に機能する集積回路装置に実装された回路配列に関して以上及び以下に記載されており、当業者は理解するであろうが、本発明に従った回路配列は様々な形のプログラム製品として配布することができるし、また、本発明はその配布を実際に行うために使用される信号記録媒体の特定の種類に無関係に等しく適用される。信号記録媒体の例には、特に、揮発性及び不揮発性メモリ装置、フロッピーディスク、ハードディスクドライブ、ＣＤＲＯＭ、ＤＶＤのような記録可能型媒体、及びディジタル通信リンク及びアナログ通信リンクのような伝送型媒体が含まれるが、これらに限定されない。
【００３３】
さて、図４は、制御回路７６により制御される入力メモリ７０、係数メモリ７２及びシフトメモリ７４を含んだＦＩＲフィルタ６６の１つの適当な実施を示す。図示の実施形態では、メモリ７２及び７４は読み出し専用メモリ（ＲＯＭ）であるが、他の実施形態では、様々な揮発性又は不揮発性ランダムアクセスメモリ（ＲＡＭ）装置のようなリプログラマブルメモリが使用され得る。
【００３４】
フィルタ６６は、対称的なＦＩＲ関数を実現するように構成されており、各フィルタ係数は次式の条件を満たす。
【００３５】
ｈ［ｉ］＝ｈ［（ｎ−１）−ｉ］        （７）
対称的なフィルタ係数を用い、分配の性質ａｂ＋ａｃ＝ａ（ｂ＋ｃ）に基づいて、乗算の前に互いに加算すべき対称的な係数を入力値に掛けることが可能になる。従って、上の式（２）は次のように変更することができる。
【００３６】
【数３】
0004729685.tif 000004
総てのフィルタ係数は対称的であるので、係数メモリ７２及びシフトメモリ７４は、それぞれｎ／２の予めスケーリングされた係数及びシフト距離を格納する必要があるだけである（ｎは偶数であると仮定する）。さらに、入力メモリ７０はマルチポートメモリとして構成される可能性があり、それぞれ、ポート８０、８２から２つの入力値（ｘ［ｋ−ｉ］及びｘ［ｋ−（（ｎ−１）−ｉ）］）を同時に出力することができる。また、入力メモリ７０は、格納された値をポート８０、８２から出力するのと並行して、入力ポート７８から受け取られた新しい入力値を格納することもできるのが望ましいこともある。
【００３７】
ポート８０、８２から出力される入力値は、乗算器段８３に供給され、その乗算器段は加算器８４、乗算器８６及びプログラマブルシフタ８８を含む。加算器８４は、係数メモリ７２から出力される予めスケーリングされた係数を乗算器８６により掛ける前に、ポート８０、８２からの入力値を受け取り、合計する。合計された入力値と予めスケーリングされた係数との積は、次に、シフトメモリ７４から出力されるシフト距離に基づいて、プログラマブルシフタ８８によってシフトされる。
シフトされた積は、それから合計段９０に供給される。その合計段９０は、シフトされた積を累積レジスタ９４に格納された現在合計と加算し、それから新しい現在合計を累積器レジスタ９４に格納する。レジスタ９４は、フィルタ計算の開始時に制御回路７６からのリセット信号によりリセットされてもよく、フィルタ処理された出力値をフィルタの出力ポート９６に出力する。理解されるであろうが、レジスタ９４の出力は計算中に利用し得るようにしてもよく、又は、フィルタ処理された出力の計算の終了時にラッチ動作によってのみアクセスできるようにしてもよい。
【００３８】
図示された実施形態の乗算器８６は、Booth-Wallace乗算器として実現されており、その乗算器の使用及び構成は当技術分野で公知である。しかし、係数メモリ７２から出力される予めスケーリングされたフィルタ係数に必要な減少された分解能に基づいて、フィルタ性能を犠牲にすることなく、より小さな乗算器を使用することができる。さらに、他の乗算器構成を代替として使用することができる。
【００３９】
動作に関して、制御回路７６は、新しい入力値が入力ポート７８で受け取られる各入力サイクルのための計算を行うように構成されている。各サイクル中に、制御回路７６は、最初にレジスタ９４をリセットし、ポート７８で受け取られた新しい入力値を入力メモリ７０に格納する。それから、制御回路７６はｎ／２の制御信号をメモリ７０、７２及び７４に順次に供給して、上の式（８）を実現するために、メモリが適切な入力値、予めスケーリングされた係数及びシフト距離を出力するようにする。
【００４０】
上の一連の動作を実施するのに適した制御回路及びメモリのアーキテクチャの設計は、この開示の恩恵を受ける当業者の能力内に十分にある。例えば、他のアーキテクチャが使用される可能性があるが、制御回路７６は、フィルタの入力サイクルごとにインクリメントされる基準ポインタを利用して、入力メモリ７０のための適切な制御信号を生成するように構成される可能性があり、その結果、入力メモリ７０は論理的に円形配列として構成される。
【００４１】
上記の対称的な構成を用いて、非対称な設計に優る重要な利点を実現することができる。性能の観点から、非対称設計の場合のｎ回の乗算に対して、ｎ／２回の乗算を行う必要があるとすれば、フィルタ計算を半分の時間で行うことができる。さらに、設計の観点から、ｎ／２のフィルタ計算とシフト距離だけを格納する必要があるので、各メモリ７２、７４の大きさが縮小され、従って、フィルタ全体の大きさが縮小される。しかし、理解すべきことであるが、他の実施形態では、例えば上で図２に示すように、係数の対称的な性質を利用する必要はない。
【００４２】
上で言及したように、最適シフト距離及び予めスケーリングされたフィルタ係数の決定は、経験的又は数学計算方法を含んむいくつかの方法により行ってよい。さらに、そのような決定は、様々な用途で独立又は一括に行ってよい。
【００４３】
例えば、図５はフィルタ設計ルーチン１００のプログラムの流れを示し、この設計ルーチンはフィルタの最適設計を決定するためにコンピュータにより実行するとよい。ルーチン１００は、例えば、The Math Works,Inc.から販売されているＭＡＴＬＡＢマトリックスベースの数学プログラムで使用するために実施されるようにしてもよい。
【００４４】
ルーチン１００は一般に、例えば浮動小数点表現で格納され、次式の要求を満たすｎの理想的なＦＩＲフィルタ係数ｈ［ｉ］（ここで、０≦ｉ≦ｎ−１）の組を含んだ、理想的なフィルタ設計が行われた後で実行される。
【数４】
0004729685.tif 000005
ルーチン１００は、ブロック１０２で開始し、以下でＷとして識別される予めスケーリングされたフィルタ係数の幅、又は分解能を試験するための初期値を選択する。例えば、係数分解能Ｗの１つの適当な初期値は、ＦＩＲフィルタの出力ワード幅の半分であるが、他の初期値が選ばれてもよい。また、このときに、いくつかの実施形態では、最も大きな係数が選ばれた係数幅（式（３）に関連して上で説明した）に適合するように、総ての理想的なフィルタ係数に適用する共通スケーリング係数２Ｔを決定することが必要となり得る。
【００４５】
次に、ブロック１０４で、反復回数の値をゼロに初期設定する。このことは、最初の反復がＷの初期値のために行われることを示す。さらに、また、分解能値Ｒだけでなく反復制限を初期設定することが望ましいこともある。ここで反復制限はＷの各値（例えば、１０００）に対して行うべき反復の最大数を表し、分解能値Ｒは離散化伝達関数の分解能（例えば、１０２４）を表す。
【００４６】
次に、ブロック１０６で、１組の最適シフト距離ｓ［ｉ］を決定する。例えば、次式の条件を満たす各シフト距離ｓ［ｉ］を選ぶことが望ましいことがある。
２Ｗ−１−３≧round（ｈ［ｉ］×２Ｔ×２Ｓ［ｉ］）≧２Ｗ−２    （１０）
上限（２Ｗ−１−３）は、各補正項が２よりも小さい絶対値を持つという仮定に基づいて選ばれる。理解すべきことであるが、他のシフト距離選択方法が代替として使用される可能性がある。
【００４７】
次に、ブロック１０８で、次式の条件を満たす１組のｎ個の整数補正項ｃ［ｉ］を決定する。
２Ｗ−１−１≧round（ｈ［ｉ］×２Ｔ×２Ｓ［ｉ］）＋ｃ［ｉ］≧２Ｗ−２  （１１）
他の選択方法が使用される可能性があるが、例えば次式を使用して各補正項を選ぶことにより（Monte Carloシミュレーションとして知られている）、上の条件を満たす無差別な補正項をただ単に選ぶことが望ましいことがある。
ｃ［ｉ］＝round（４×（rand（）−０．５））      （１２）
ここでrand（）は、ゼロ以上でかつ１よりも小さい無差別な数を生成する関数である。
【００４８】
次に、ブロック１１０で、選ばれたシフト距離と補正項に基づいてフィルタの伝達関数Ｈ＊（ｚｋ）を計算する。それにより、伝達関数は次のようになる。
【数５】
0004729685.tif 000006
ここで、
【数６】
0004729685.tif 000007
である。
Ｒの値は、一般に、Ｈ＊（ｚｋ）伝達関数の細部総てが見えるほどに十分に大きく設定すべきである。例えば、Ｒは１０×ｎ以上の大きな値に設定すべきであることがある。例えば、Ｒ＝１０２４である。
【００４９】
伝達関数が作成されると、Ｈ＊（ｚｋ）と要求された伝達関数との偏差を表す二乗誤差ＳＥが計算される。特に、伝達関数は次式の条件を満たさなければならない。
【００５０】
｜Ｈｕｐ（ｚｋ）｜≧｜Ｈ＊（ｚｋ）｜≧｜Ｈｌｏｗ（ｚｋ）｜    （１５）
ここで、Ｈｕｐ（ｚｋ）及びＨｌｏｗ（ｚｋ）は理想的な伝達関数の許容上限及び許容下限である。
【００５１】
フィルタ設計に関連した誤差を計算するために他の方法が使用される可能性があるが、二乗誤差の近似を使用して誤差を計算する１つの方法を下に式（１６）及び（１７）により示す。
【００５２】
【数７】
0004729685.tif 000008
ここで、
【数８】
0004729685.tif 000009
である。
【００５３】
次に、ブロック１１４で、二乗誤差値がゼロに等しいかどうかを決定する。即ち、現在フィルタ係数及びシフト距離の選択が理想的なフィルタの許容範囲内に完全にあるかどうかを決定する。範囲内にある場合、最適補正項、シフト距離及び係数分解能の設計は完成し、制御はブロック１１６に進んで、最適補正項及びシフト距離から予めスケーリングされたフィルタ係数を生成し、それから、フィルタメモリ内の現在の予めスケーリングされたフィルタ係数及びシフト距離を使用することができる。それで、ルーチン１００は完了する。理解されるであろうが、次の式によって関連した補正項及びシフト距離から予めスケーリングされたフィルタ係数を生成することができる。
ｈ＊［ｉ］＝round（ｈ［ｉ］×２Ｔ×２ｓ［ｉ］）＋ｃ［ｉ］  （１８）  ブロック１１４に戻って、二乗誤差がゼロでない場合、制御はブロック１１８に進んで反復回数をインクリメントする。それから、制御はブロック１２０に進んで、反復回数が反復限界を超えたかどうかを決定する。超えていない場合、制御はブロック１０８に戻って、新しい組の整数補正項を決定する。しかし、超えている場合、制御はブロック１２２に進んで係数分解能Ｗをインクリメントし（共通因数指数Ｔをインクリメントするだけでなく）、それから、ブロック１０４に進んで反復回数をリセットし、新しい係数分解能に基づいて新しいシフト距離及び補正項を生成することに取り掛かる。そのようなものとして、係数分解能が順次にインクリメントされて、遂には、適当なフィルタ設計を示すゼロの二乗誤差を生成する適当な組の補正項及びシフト距離が見出される。
【００５４】
上で計算された予めスケーリングされた係数及びシフト距離の実施には、Ｗビット幅の係数メモリ７２及びＬ×Ｗ乗算器８６（ここでＬは入力値の幅である）が必要である。シフトメモリ７４は、少なくとも最大シフト距離の底２の対数の幅を持たなければならない。ここで、最大シフト距離は、次式を使用して決定されるとよい。
【００５５】
【数９】
0004729685.tif 000010
ここで、ｈ［ｉｍｉｎ］はフィルタ設計の最小の理想的な係数である。
【００５６】
予めスケーリングされたフィルタ係数及びシフト距離を生成する他の方法が代替として使用されてもよい。例えば、ルーチン１００で必要な処理の量を減少させるために、乱数を使用しない方法が補正項を生成するために使用されてもよい。１つの適当な方法は、短時間アニール（ＲＴＡ）のアルゴリズムに依拠し、そのアルゴリズムに従って、ブロック１１２で生成された二乗誤差を使用して、１組の補正項が別の組の補正項よりもより適切な解につながるかどうかを決定する。いくつかのＲＴＡアルゴリズムが代替として使用される可能性があり、そのようなアルゴリズムの使用及び構成は、本開示の恩恵を受ける当業者の能力内に十分にある。
【００５７】
理解されるであろうが、本発明に従ったフィルタを設計するために、一般に、理想的な伝達関数が定義され、それから、フィルタのハードウェア実現のための最適な特性を決定するために、ルーチン１００と同様なルーチンが実行される。
それから、実際のフィルタ実現の配置が、最適な特性を使用してメモリ及び乗算器の大きさを決定するように行われ、さらに、係数メモリ及びシフトメモリのＲＯＭ具現物が使用される場合は、どのデータをメモリに表現するかを決定するように、最適な特性を使用して行われる。
【００５８】
【実施例】
本発明に従ったフィルタに関連した電力、スペース及び遅延の減少例として、１３ビット入力値を受け取るのに適し、かつ下記の対称浮動少数点（理想的な）係数を有する３６タップＦＩＲ低域フィルタを考える。
【００５９】
【表１】
0004729685.tif 000011
ここで説明したような、予めスケーリング、丸め、及び事後乗算シフトを使用すると（但し、補正項の使用を含まない）、実効フィルタ係数（依然として、１３ビットの分解能）は次表のようになった。
【００６０】
【表２】
0004729685.tif 000012
そのように、係数を予めスケーリングすることで、打切り誤差は大幅に減少した。この打切り誤差の減少は、所望の係数分解能の減少で埋め合わされたので、実効打切り誤差は基本的に従来設計と同じであったが、乗算器の大きさは実質的に縮小した。
【００６１】
設計をＶＨＤＬにより実施した後に、合成、配置し、さらにステップを経た後に、達成可能な面積及び電力消費量の減少は約１７％であった。これは、乗算器が全ＦＩＲフィルタ面積の３３％を占めるに過ぎないためであった。残りの６６％は、フィルタのＲＡＭ（約６０％）並びにＲＯＭ及び制御回路（６％）が占めた。乗算器のゲート数の減少は相当に大きく、一実施形態では、ゲート数を１４９８ゲート（１３×１３、Wallace、条件付き合計）から８２３ゲート（１３×７、Wallace、条件付き合計）に減少した。計算された遅延は、６．５８ｎｓ（１３×１３）から５．５８ｎｓ（１３×７）に減少した。これは１５％の減少に相当する。結果として、フィルタの全面積は１７％だけ縮小し、達成可能な速度は１５％だけ増加した（ＦＩＲフィルタの中で、乗算器が最も遅いブロックであると想定して）。
【００６２】
本発明の精神及び範囲から逸脱することなしに、説明した実施に対して他の修正を行うことができる。従って、本発明は、添付された特許請求の範囲の中に見出される。
【図面の簡単な説明】
【図１】  有限インパルス応答（ＦＩＲ）フィルタの従来の実施のブロック図である。
【図２】  本発明に従ったＦＩＲフィルタのブロック図である。
【図３】  本発明に従ったＦＩＲフィルタ実施を組み込んだ無線装置の受信経路内の主要な電子構成要素のブロック図である。
【図４】  図３のＦＩＲフィルタのブロック図である。
【図５】  本発明に従ったＦＩＲフィルタの最適フィルタパラメータを決定するのに適したフィルタ設計ルーチンのプログラムの流れを説明する流れ図である。
【図１】
0004729685.tif 000013
【図２】
0004729685.tif 000014
【図３】
0004729685.tif 000015
【図４】
0004729685.tif 000016
【図５】
0004729685.tif 000017