(57)【要約】標準関数を入力してこれから有限長の補間関数を計算し、補間関数の周波数特性を周波数軸方向に所望量だけシフトすることによって、仕様に基づく入力周波数特性を定める。そして、この入力周波数特性を表す数値列を逆ＦＦＴすることによってフィルタ係数化し、係数値に基づく丸め処理によって少ない数のフィルタ係数を得るようにすることにより、フィルタ係数の数を少なくするための演算として窓掛けを不要とし、所望の周波数特性を有するＦＩＲフィルタを簡易的に設計できるようにする。【特許請求の範囲】
【請求項１】
複数の遅延器から成るタップ付き遅延線における各タップのデータに対して各フィルタ係数をそれぞれ乗算した後、それらの乗算結果を加算して出力するタイプのデジタルフィルタの設計方法であって、
標準関数を入力し、設計すべきフィルタの仕様に基づいて、周波数振幅特性の最大振幅値と最小振幅値との間を繋ぐ有限長の補間関数を上記標準関数から計算し、上記補間関数を用いて、上記設計すべきフィルタの仕様に対応する周波数特性を表す数値列を定める第１のステップと、
上記第１のステップで定めた数値列を逆フーリエ変換してその結果の実数項を抽出する第２のステップと、
上記第２のステップで抽出した実数項から成る数値列に対して、その前半部と後半部とを並べ替える処理を必要に応じて行う第３のステップと、
上記第２のステップあるいは上記第３のステップで算出した数値列の所定ビットのデータに対して下位数ビットを丸める丸め処理を行うことによってビット数を減らす第４のステップとを有し、
上記第４のステップで得られた数値列を上記フィルタ係数として决定するようにしたことを特徴とするデジタルフィルタの設計方法。
【請求項２】
上記標準関数は、そのインパルス応答が、一定の領域内でのみゼロ以外の有限な値を有し、それ以外の領域では値が全てゼロとなるような関数であることを特徴とする請求の範囲第１項に記載のデジタルフィルタの設計方法。
【請求項３】
上記第１のステップは、上記標準関数を入力する第５のステップと、
上記標準関数を基にして有限長の上記補間関数を求める第６のステップと、
上記第６のステップで求められた上記補間関数の周波数特性を所望量だけ周波数軸方向にシフトさせ、上記最大振幅値と上記最小振幅値とを当該シフトした補間関数で繋ぐ第７のステップと、
上記第７のステップで求められた補間関数の周波数特性を左右対称型に変換する第８のステップとを有することを特徴とする請求の範囲第１項に記載のデジタルフィルタの設計方法。
【請求項４】
上記第６のステップは、上記標準関数によって特定される周波数特性における遷移域の全領域に対する比率を求める第９のステップと、
上記第９のステップで求められた遷移域比率と、上記設計すべきフィルタの仕様に基づく遷移域幅とから、上記補間関数の補間関数長を求める第１０のステップと、
上記第１０のステップで求められた補間関数長を用いて有限長の上記補間関数を求める第１１のステップとを有することを特徴とする請求の範囲第３項に記載のデジタルフィルタの設計方法。
【請求項５】
上記第１のステップは、上記標準関数を入力する第５のステップと、
上記標準関数を基にして、周波数振幅特性上で所望量だけ周波数軸方向にシフトされた位置にて上記最大振幅値と上記最小振幅値との間を繋ぐ有限長の補間関数を求める第６のステップと、
上記第６のステップで求められた補間関数の周波数特性を左右対称型に変換する第７のステップとを有することを特徴とする請求の範囲第１項に記載のデジタルフィルタの設計方法。
【請求項６】
上記第６のステップは、上記設計すべきフィルタの仕様によって特定される周波数特性における遷移域の、上記標準関数によって特定される周波数特性における遷移域に対する比率を求める第８のステップと、
上記第８のステップで求められた遷移域比率を用いて、上記設計すべきフィルタの仕様によって特定される周波数特性における遷移域の開始点および終了点の位置を求める第９のステップと、
上記第８のステップで求められた遷移域比率と、上記第９のステップで求められた上記遷移域の開始点および終了点の位置とを用いて、上記有限長の補間関数を求める第１０のステップとを有することを特徴とする請求の範囲第５項に記載のデジタルフィルタの設計方法。
【請求項７】
複数の遅延器から成るタップ付き遅延線における各タップのデータに対して各フィルタ係数をそれぞれ乗算した後、それらの乗算結果を加算して出力するタイプのデジタルフィルタの設計装置であって、
標準関数を入力する入力手段と、
設計すべきフィルタの仕様に基づいて、周波数振幅特性の最大振幅値と最小振幅値との間を繋ぐ有限長の補間関数を上記標準関数から計算し、上記補間関数を用いて、上記設計すべきフィルタの仕様に対応する周波数特性を表す数値列を定める第１の演算、当該定めた数値列を逆フーリエ変換してその結果の実数項を抽出する第２の演算、当該抽出した実数項から成る数値列に対して、その前半部と後半部とを並べ替える処理を必要に応じて行う第３の演算、上記実数項から成る数値列の所定ビットのデータに対して下位数ビットを丸める丸め処理を行うことによってビット数を減らす第４の演算を行う演算手段とを備え、
上記第４の演算で得られた数値列を上記フィルタ係数として決定するようにしたことを特徴とするデジタルフィルタの設計装置。
【請求項８】
上記第１の演算は、上記標準関数によって特定される周波数特性における遷移域の全領域に対する比率である遷移域比率を求める演算と、
上記設計すべきフィルタの仕様に基づく遷移域幅と上記遷移域比率とから上記補間関数の補間関数長を求める演算と、
上記補間関数長を用いて有限長の上記補間関数を求める演算と、
上記補間関数の周波数特性を所望量だけ周波数軸方向にシフトさせ、上記最大振幅値と上記最小振幅値とを当該シフトした補間関数で繋ぐ演算と、
上記シフトされた補間関数の周波数特性を左右対称型に変換する演算とを含むことを特徴とする請求の範囲第７項に記載のデジタルフィルタの設計装置。
【請求項９】
上記第１の演算は、上記設計すべきフィルタの仕様によって特定される周波数特性における遷移域の、上記標準関数によって特定される周波数特性における遷移域に対する比率である遷移域比率を求める演算と、
上記遷移域比率を用いて、上記設計すべきフィルタの仕様によって特定される周波数特性における遷移域の開始点および終了点の位置を求める演算と、
上記遷移域比率と、上記遷移域の開始点および終了点の位置とを用いて、上記最大振幅値と上記最小振幅値とを繋ぐ有限長の補間関数を求める演算と、
上記補間関数の周波数特性を左右対称型に変換する演算とを含むことを特徴とする請求の範囲第７項に記載のデジタルフィルタの設計装置。
【請求項１０】
請求の範囲第１項〜第６項の何れか１項に記載されたデジタルフィルタの設計方法に関する処理手順をコンピュータに実行させるためのコンピュータ読み取り可能なデジタルフィルタ設計用プログラム。
【請求項１１】
請求の範囲第７項〜第９項の何れか１項に記載の各手段としてコンピュータを機能させるためのコンピュータ読み取り可能なデジタルフィルタ設計用プログラム。
【請求項１２】
請求の範囲第１項〜第６項の何れか１項に記載の設計方法、あるいは、請求の範囲第７項〜第９項の何れか１項に記載の設計装置を用いて算出された数値列をフィルタ係数として持つＦＩＲ型のデジタルフィルタ。
【請求項１３】
設計すべきＦＩＲデジタルフィルタの仕様に対応する周波数特性を表す数値列の生成方法であって、
標準関数を入力する第１のステップと、
上記設計すべきＦＩＲデジタルフィルタの仕様に基づいて、周波数振幅特性の最大振幅値と最小振幅値との間を繋ぐ有限長の補間関数を上記標準関数から求める第２のステップと、
上記第２のステップで求められた上記補間関数の周波数特性を所望量だけ周波数軸方向にシフトさせ、上記最大振幅値と上記最小振幅値とを当該シフトした補間関数で繋ぐことによって、上記設計すべきＦＩＲデジタルフィルタの仕様に対応する周波数特性の数値列を求める第３のステップとを有することを特徴とする所望周波数特性の数値列の生成方法。
【請求項１４】
上記標準関数は、そのインパルス応答が、一定の領域内でのみゼロ以外の有限な値を有し、それ以外の領域では値が全てゼロとなるような関数であることを特徴とする請求の範囲第１３項に記載の所望周波数特性の数値列の生成方法。
【請求項１５】
上記第２のステップは、上記標準関数によって特定される周波数特性における遷移域の全領域に対する比率を求める第４のステップと、
上記第４のステップで求められた遷移域比率と、上記設計すべきＦＩＲデジタルフィルタの仕様に基づく遷移域幅とから、上記補間関数の補間関数長を求める第５のステップと、
上記第５のステップで求められた補間関数長を用いて有限長の上記補間関数を求める第６のステップとを有することを特徴とする請求の範囲第１３項に記載の所望周波数特性の数値列の生成方法。
【請求項１６】
設計すべきＦＩＲデジタルフィルタの仕様に対応する周波数特性を表す数値列の生成方法であって、
標準関数を入力する第１のステップと、
上記設計すべきＦＩＲデジタルフィルタの仕様に基づいて、周波数振幅特性上で所望量だけ周波数軸方向にシフトされた位置にて上記周波数振幅特性の最大振幅値と最小振幅値との間を繋ぐ有限長の補間関数を上記標準関数から求める第２のステップとを有することを特徴とする所望周波数特性の数値列の生成方法。
【請求項１７】
上記標準関数は、そのインパルス応答が、一定の領域内でのみゼロ以外の有限な値を有し、それ以外の領域では値が全てゼロとなるような関数であることを特徴とする請求の範囲第１６項に記載の所望周波数特性の数値列の生成方法。
【請求項１８】
上記第２のステップは、上記設計すべきフィルタの仕様によって特定される周波数特性における遷移域の、上記標準関数によって特定される周波数特性における遷移域に対する比率である遷移域比率を求める第３のステップと、
上記第３のステップで求められた遷移域比率を用いて、上記設計すべきフィルタの仕様によって特定される周波数特性における遷移域の開始点および終了点の位置を求める第４のステップと、
上記第３のステップで求められた遷移域比率と、上記第４のステップで求められた上記遷移域の開始点および終了点の位置とを用いて、上記有限長の補間関数を求める第５のステップとを有することを特徴とする請求の範囲第１３項に記載の所望周波数特性の数値列の生成方法。
【請求項１９】
設計すべきＦＩＲデジタルフィルタの仕様に対応する周波数特性を表す数値列の生成装置であって、
標準関数を入力する入力手段と、
上記設計すべきＦＩＲデジタルフィルタの仕様に基づいて、周波数振幅特性の最大振幅値と最小振幅値との間を繋ぐ有限長の補間関数を上記標準関数から求める第１の演算、上記第１の演算で求められた上記補間関数の周波数特性を所望量だけ周波数軸方向にシフトさせ、上記最大振幅値と上記最小振幅値とを当該シフトした補間関数で繋ぐことによって、上記設計すべきＦＩＲデジタルフィルタの仕様に対応する周波数特性の数値列を求める第２の演算を行う演算手段とを備えたことを特徴とする所望周波数特性の数値列の生成装置。
【請求項２０】
上記第１の演算は、上記標準関数によって特定される周波数特性における遷移域の全領域に対する比率である遷移域比率を求める演算と、
上記遷移域比率と、上記設計すべきＦＩＲデジタルフィルタの仕様に基づく遷移域幅とから、上記補間関数の補間関数長を求める演算と、
上記補間関数長を用いて有限長の上記補間関数を求める演算とを含むことを特徴とする請求項１３に記載の所望周波数特性の数値列の生成装置。
【請求項２１】
設計すべきＦＩＲデジタルフィルタの仕様に対応する周波数特性を表す数値列の生成装置であって、
標準関数を入力する入力手段と、
上記設計すべきＦＩＲデジタルフィルタの仕様に基づいて、周波数振幅特性上で所望量だけ周波数軸方向にシフトされた位置にて上記周波数振幅特性の最大振幅値と最小振幅値との間を繋ぐ有限長の補間関数を上記標準関数から求め、上記設計すべきＦＩＲデジタルフィルタの仕様に対応する周波数特性の数値列を上記補間関数から求める演算を行う演算手段とを備えたことを特徴とする所望周波数特性の数値列の生成装置。
【請求項２２】
上記演算手段は、上記設計すべきフィルタの仕様によって特定される周波数特性における遷移域の、上記標準関数によって特定される周波数特性における遷移域に対する比率である遷移域比率を求める演算と、
上記遷移域比率を用いて、上記設計すべきフィルタの仕様によって特定される周波数特性における遷移域の開始点および終了点の位置を求める演算と、
上記遷移域比率と、上記遷移域の開始点および終了点の位置とを用いて、上記有限長の補間関数を求める演算とを行うことを特徴とする請求の範囲第２１項に記載の所望周波数特性の数値列の生成装置。
【請求項２３】
請求の範囲第１３項〜第１８項の何れか１項に記載された所望周波数特性の数値列の生成方法に関する処理手順をコンピュータに実行させるためのコンピュータ読み取り可能な所望周波数特性の数値列生成用プログラム。
【請求項２４】
請求の範囲第１９項〜第２２項の何れか１項に記載の各手段としてコンピュータを機能させるためのコンピュータ読み取り可能な所望周波数特性の数値列生成用プログラム。
【発明の詳細な説明】
【技術分野】  本発明はデジタルフィルタの設計方法および設計装置、デジタルフィルタ設計用プログラム、デジタルフィルタ、所望周波数特性の数値列の生成方法および生成装置、所望周波数特性の数値列生成用プログラムに関し、特に、複数の遅延器から成るタップ付き遅延線を備え、各タップの信号をそれぞれ数倍した後、それらの乗算結果を加算して出力するタイプのＦＩＲフィルタおよびその設計法、更にはそのフィルタ設計で用いる入力周波数特性を表す数値列の生成法に関するものである。
【背景技術】  様々な技術分野で提供されている種々の電子機器においては、その内部で何らかのデジタル信号処理を行っているのが通常である。デジタル信号処理の最も重要な基本操作に、各種の信号や雑音が混在している入力信号の中から、必要な周波数帯域の信号のみを取り出すフィルタリング処理がある。このために、デジタル信号処理を行う電子機器では、デジタルフィルタが用いられることが多い。
デジタルフィルタとしては、ＩＩＲ（Ｉｎｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ：無限長インパルス応答）フィルタやＦＩＲ（Ｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ：有限長インパルス応答）フィルタが多く用いられる。このうちＦＩＲフィルタは、次のような利点を持つ。第１に、ＦＩＲフィルタの伝達関数の極はｚ平面の原点のみにあるため、回路は常に安定である。第２に、フィルタ係数が対称型であれば、完全に正確な直線位相特性を実現することが可能である。
このＦＩＲフィルタは、有限時間長で表されるインパルス応答がそのままフィルタ係数となっている。したがって、ＦＩＲフィルタを設計するということは、希望の周波数特性が得られるようにフィルタ係数を決定するということである。従来、フィルタ係数を算出する方法として、いくつかの方法が提案されてきた。
例えば、目標とする周波数特性のサンプリング周波数とカットオフ周波数との比率をもとに、チェビシェフ近似式を用いた畳み込み演算等によりフィルタ係数を求める方法が存在する。また、所望の周波数特性の波形を数値列もしくは関数として入力し、当該入力した数値列もしくは関数を逆フーリエ変換（逆ＦＦＴ）してその結果の実数項を抽出することによってフィルタ係数を求める方法も存在する（例えば、特許文献１，２参照）。
【特許文献１】特開昭６３−２３４６１７号公報
【特許文献２】特開２００３−１６８９５８号公報
しかしながら、上記従来の技術で求められるフィルタ係数の数は膨大であり、しかもそれらの数値は非常に複雑でランダムな値である。そのため、得られたフィルタ係数を全て使用すると、フィルタ回路のタップ数が非常に多くなるばかりでなく、複雑でランダムなフィルタ係数値を乗算するために多くの乗算器が必要になってしまう。つまり、大規模な回路構成が必要となり、現実的でない。そこで、窓関数を用いた窓掛け演算によってフィルタ係数の数を実用上耐えうる程度に減らす必要があった。
ところが、フィルタ係数の数を減らすために窓掛けを行うと、周波数特性に大きな影響を与えるフィルタ係数も打ち切られてしまうことが多く、目標とする良好な周波数特性を得ることができなくなってしまう。また、入力した波形の数値列を逆ＦＦＴすることによってフィルタ係数を求める方法では、入力波形を表す数値列や関数次第で周波数特性が決まるが、そもそもこの数値列や関数を求めること自体が難しかった。そのため、従来の何れのフィルタ設計法を用いても、所望の周波数特性を実現するのは非常に困難という問題があった。
また、窓掛けを行う従来のフィルタ設計法で所望の周波数特性を得るためには、仮に求めたフィルタ係数をＦＦＴしてその周波数特性を確認しながらの試行錯誤が必要となる。特に、入力波形を逆ＦＦＴする手法の場合は、その入力波形の数値列や関数自体を試行錯誤して求めなければならない。したがって、従来は熟練した技術者が時間と手間をかけて設計する必要があり、所望特性のＦＩＲフィルタを容易には設計できないという問題もあった。
【発明の開示】
本発明は、このような問題を解決するために成されたものであり、フィルタ係数の数が少なく小さな回路規模で所望の周波数特性を高精度に実現することが可能なＦＩＲデジタルフィルタを、試行錯誤を殆ど要することなく簡易的に設計できるようにすることを目的とする。
上記した課題を解決するために、本発明では、標準関数を入力してこれから有限長の補間関数を計算することによって、仕様に基づく入力周波数特性を定める。そして、この入力周波数特性を表す数値列を逆フーリエ変換することによってフィルタ係数化し、係数値に基づく丸め処理によって処理ビット数に応じた少ない数のフィルタ係数を得るようにしている。
上記のように構成した本発明によれば、専門知識がなくても、ローパスフィルタ、ハイパスフィルタ、バンドパスフィルタ、バンドエミリネーションフィルタなどの所望の周波数特性を有するＦＩＲデジタルフィルタを簡易的に設計することができる。また、本発明によれば、フィルタ係数の数を減らすために窓掛けが不要で、数値の丸め演算によって、周波数特性の精度を落とさずにフィルタ係数の数（デジタルフィルタのタップ数）を減らすことができる。つまり、タップ数が少なく、かつ、リップルの少ない通過域特性と一様な減衰特性とを有する良好な周波数特性のＦＩＲフィルタを簡易的に設計することができる。
【図面の簡単な説明】  図１は、本実施形態によるデジタルフィルタの設計方法の処理手順を示すフローチャートである。
図２は、図１のステップＳ１における入力周波数特性の第１の生成方法に係る計算手順を示すフローチャートである。
図３は、図１のステップＳ１における入力周波数特性の第２の生成方法に係る計算手順を示すフローチャートである。
図４は、第２の生成方法によって生成される補間関数（設計仕様に基づくローパスフィルタ）の周波数振幅特性を示す図である。
図５は、図１のステップＳ３における並べ替え処理を説明するための図である。
図６は、図２のステップＳ１１で入力するローパスフィルタの標準関数の例を示す図である。
図７は、図６の標準関数から計算される補間関数の例を示す図である。
図８は、図７の補間関数を所望量だけシフトして得られる周波数特性を示す図である。
図９は、図８の周波数特性を左右対称型に変換して生成した入力周波数特性を示す図である。
図１０は、図４６に示す仕様のローパスフィルタについて、図６に示す標準関数から本実施形態のフィルタ設計法に従って求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。
図１１は、図１０に示すフィルタ係数に対して丸め演算を実施した後のフィルタ係数の分布を拡大して示す図である。
図１２は、図１１に示すフィルタ係数によって実現されるＦＩＲローパスフィルタの周波数振幅特性を示す図である。
図１３は、図２のステップＳ１１で入力するローパスフィルタの標準関数およびこれから計算される補間関数の他の例を示す図である。
図１４は、図２のステップＳ１１で入力するローパスフィルタの標準関数およびこれから計算される補間関数の他の例を示す図である。
図１５は、図４６に示す仕様のローパスフィルタについて、図１３に示す標準関数から本実施形態のフィルタ設計法に従って求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。
図１６は、図４６に示す仕様のローパスフィルタについて、図１４に示す標準関数から本実施形態のフィルタ設計法に従って求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。
図１７は、図２のステップＳ１１で入力するハイパスフィルタの標準関数の例を示す図である。
図１８は、図１７の標準関数から計算される補間関数の例を示す図である。
図１９は、図１８の補間関数を所望量だけシフトして得られる周波数特性を示す図である。
図２０は、図１９の周波数特性を左右対称型に変換して生成した入力周波数特性を示す図である。
図２１は、第２の生成方法によって生成される補間関数（設計仕様に基づくハイパスフィルタ）の周波数振幅特性を示す図である。
図２２は、図４７に示す仕様のハイパスフィルタについて、図１７に示す標準関数から本実施形態のフィルタ設計法に従って求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。
図２３は、図２２に示すフィルタ係数に対して丸め演算を実施した後のフィルタ係数の分布を拡大して示す図である。
図２４は、図２３に示すフィルタ係数によって実現されるＦＩＲハイパスフィルタの周波数振幅特性を示す図である。
図２５は、図４８に示す仕様のバンドパスフィルタを設計する場合に図６および図１７の標準関数から計算される補間関数の例を示す図である。
図２６は、図２５の補間関数を所望量だけシフトして得られる周波数特性を示す図である。
図２７は、図２６の周波数特性を左右対称型に変換して生成した入力周波数特性を示す図である。
図２８は、第２の生成方法によって生成される補間関数（設計仕様に基づくバンドパスフィルタ）の周波数振幅特性を示す図である。
図２９は、図４８に示す仕様のハイパスフィルタについて、図２５に示す補間関数から本実施形態のフィルタ設計法に従って求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。
図３０は、図２９に示すフィルタ係数に対して丸め演算を実施した後のフィルタ係数の分布を拡大して示す図である。
図３１は、図３０に示すフィルタ係数によって実現されるＦＩＲバンドパスフィルタの周波数振幅特性を示す図である。
図３２は、図２のステップＳ１１で入力するローパスフィルタの他の標準関数の例を示す図である。
図３３は、図３２の標準関数から計算される補間関数の例を示す図である。
図３４は、図２のステップＳ１１で入力するローパスフィルタの標準関数およびこれから計算される補間関数の他の例を示す図である。
図３５は、図４６に示す仕様のローパスフィルタについて、図３４に示す標準関数から本実施形態のフィルタ設計法に従って求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。
図３６は、図２のステップＳ１１で入力するローパスフィルタの標準関数およびこれから計算される補間関数の他の例を示す図である。
図３７は、図４６に示す仕様のローパスフィルタについて、図３６に示す標準関数から本実施形態のフィルタ設計法に従って求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。
図３８は、図２のステップＳ１１で入力するローパスフィルタの更に別の標準関数の例を示す図である。
図３９は、図３８の標準関数から計算される補間関数の例を示す図である。
図４０は、３種類の標準関数、これら標準関数から計算される３種類の補間関数、補間関数をシフトして定めた入力周波数特性を逆ＦＦＴすることによって得られる３種利のフィルタ係数の分布を示す図である。
図４１は、丸め演算の際に使うｘの値（丸め後のビット数ｘ）と必要なタップ数との関係を示す図である。
図４２は、本実施形態によるデジタルフィルタの構成例を示す図である。
図４３は、本実施形態によるデジタルフィルタの他の構成例を示すブロック図である。
図４４は、本実施形態によるデジタルフィルタの他の構成例を示すブロック図である。
図４５は、本実施形態によるデジタルフィルタの他の構成例を示すブロック図である。
図４６は、ローパスフィルタの設計仕様例を示す図である。
図４７は、ハイパスフィルタの設計仕様例を示す図である。
図４８は、バンドパスフィルタの設計仕様例を示す図である。
【発明を実施するための最良の形態】  以下、本発明の一実施形態を図面に基づいて説明する。図１は、本実施形態によるデジタルフィルタの設計方法の処理手順を示すフローチャートである。ここで設計するデジタルフィルタは、複数の遅延器から成るタップ付き遅延線を備え、各タップから取り出した信号に各フィルタ係数をそれぞれ乗算した後、それらの乗算結果を加算して出力するタイプのＦＩＲフィルタである。図１のフローチャートは、ＦＩＲフィルタにおけるフィルタ係数の決定方法を示している。
図１に示すように、まず、設計したいフィルタの仕様に基づいて補間関数を計算し、計算した補間関数を用いて入力周波数特性を定める（ステップＳ１）。ここで計算する補間関数は、設計したいフィルタの仕様に基づく周波数振幅特性の最大振幅値と最小振幅値との間を補間する関数である。また、この補間関数によって定める入力周波数特性は、設計したいフィルタの周波数特性そのものを表すものである。補間関数の計算方法については、図２および図３のフローチャートを用いて後で詳述する。
次に、このようにして入力した補間関数により定まる数値列を逆ＦＦＴし、その結果の実数項を抽出する（ステップＳ２）。周知のように、ある数値列に対してＦＦＴの処理を行うと、その数値列に対応した周波数特性が得られる。したがって、補間関数により入力した周波数特性を表す数値列を逆ＦＦＴし、その実数項を抽出すれば、当該入力周波数特性を実現するのに必要な数値列が得られる。この数値列が、求めるフィルタ係数に相当するものである。
ただし、ステップＳ１で計算した補間関数から逆ＦＦＴにより求められる数値列そのものは、必ずしもフィルタ係数としてそのまま使える順番には並んでいない。すなわち、どのようなタイプのデジタルフィルタでも、フィルタ係数の数値列は、中央値が最も大きく、中央から離れるに従って振幅を繰り返しながら値が徐々に小さくなるという対称性を持っている。これに対して、補間関数から逆ＦＦＴにより求められる数値列は、中央値が最も小さく、端の値が最も大きくなっている。
そこで、図５に示すように、逆ＦＦＴにより求められた数値列の最大値が中央部にくるように、数値列を前半部と後半部とに分けてそれらを並べ替える（ステップＳ３）。
このようにして得られた数値列をそのまま求めるフィルタ係数として決定することも可能であるが、本実施形態では更に、以下に述べる丸め演算を行うことによって、フィルタ係数を必要な数に減らすとともに、その数値を簡素化するようにしている（ステップＳ４）。
例えば、ステップＳ３において適宜並べ替えが行われた後の数値列がｙビットのデータである場合、当該ｙビットのデータを２ｘ倍して小数点以下を丸める処理を行うことによってｘビット（ｘ＜ｙ）の整数化されたデータを求め、これをフィルタ係数として利用するようにする。また、ｙビットのデータに対して丸め処理を行うことによってｘビット（ｘ＜ｙ）のデータとし、これを２ｘ倍することによって値を整数化するようにしても良い。
このような整数化の丸め演算を行うと、デジタルフィルタは、図４３に示すように、複数の遅延器（Ｄ型フリップフロップ）１から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器２で個別に乗算し、それぞれの乗算出力を複数の加算器３で全て加算した後に、１つのシフト演算器４でまとめて１／２ｘ倍するように構成することが可能となる。しかも、整数のフィルタ係数は、２ｉ＋２ｊ＋・・・（ｉ，ｊは任意の整数）のように２進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器２を構成することができるので、ＦＩＲフィルタ全体として乗算器や加算器などの使用数を大きく削減し、デジタルフィルタの回路規模を大幅に削減することができる。
本実施形態では、このような丸め演算によって求められた数値列を、求めるフィルタ係数として決定する。なお、上述のステップＳ３とステップＳ４の処理は必ずしもこの順番で行う必要はなく、この順番を逆にしても良い。
次に、ステップＳ１における入力周波数特性の計算方法を具体例に沿って詳細に説明する。ここでは、入力周波数特性を求める方法を２通り示す。
＜第１の生成方法＞
図２は、本実施形態による入力周波数特性の第１の生成方法に係る計算手順を示すフローチャートである。図２において、まず、標準関数を入力する（ステップＳ１１）。ここで入力する標準関数は、そのインパルス応答が一定の領域内でのみ“０”以外の有限な値を有し、それ以外の領域では値が全て“０”となるような関数、つまり所定の標本位置において値が“０”に収束するインパルス応答を持った係数列を有する関数であることが好ましい。
このように、局所的な領域で“０”以外の有限の値を有し、それ以外の領域で値が“０”となるような有限台のインパルス応答を持つ係数列の例として、本発明者が発案した特願２００３−５６２６５号に記載のような数値列が存在する。例えば、図４６に示すような仕様のローパスフィルタを設計する場合には、標準関数ＸＦ１として、特願２００３−５６２６５号に記載の数値列を利用して次の（式１）に示すような関数を入力する。
ＸＦ１＝８／１６＋９／１６＊ｃｏｓ（２πｔ）−１／１６＊ｃｏｓ（６πｔ）  ・・・（式１）
ここで、（式１）で示される関数は、振幅最大値＝１、周波数最大値＝１で基準化されている。この（式１）における各項の係数｛８／１６，９／１６，０，−１／１６｝（“０”はｃｏｓ（４πｔ）の項の係数）は、特願２００３−５６２６５号に記載されているローパスフィルタのフィルタ係数｛−１，０，９，１６，９，０，−１｝／１６をその中央で半分に分けたものの片側に相当する数値列である。特願２００３−５６２６５号に詳細に記述しているように、｛−１，０，９，１６，９，０，−１｝／１６の数値列をフィルタ係数とするローパスフィルタのインパルス応答は有限台であり、滑らかな波形となるために必要なサンプル点を全て通る。｛８，９，０，−１｝／１６の数値列も同様に、有限台のインパルス応答を有する数値列である。
図４６に示すような仕様のローパスフィルタを設計する場合には、例えばこのような有限台のインパルス応答を持った係数｛８，９，０，−１｝／１６によって特定される（式１）のような標準関数ＸＦ１を入力する。具体的には、（式１）中のサンプリング時間（クロック）ｔの値を０／１０２４から１０２３／１０２４まで変化させて計算した結果の１０２４個の数値列を入力する。図６は、この１０２４個の数値列をグラフ化したものである。これから分かるように、標準関数を入力するということは、例えば有限台のインパルス応答を持った数値列によって特定される所望の周波数特性の波形を入力することに相当する。
標準関数ＸＦ１の数値列を入力したら、次に、この標準関数ＸＦ１を基にして補間関数を求める（ステップＳ１２）。ここで求める補間関数は、周波数振幅特性の振幅値“１”と“０”との間を補間するための関数である。補間関数を求める際には、まず、標準関数ＸＦ１によって特定される周波数特性における遷移域の全領域に対する比率（以下、標準遷移域比率Ｒ１ｓと言う）を求める。ここで遷移域とは、通過域と遮断域との間における傾斜部分の領域を言う。第１の生成方法においては、傾斜部分における代表の２点間（例えば、振幅が−０．３ｄＢの点から−４５ｄＢの点までの範囲）を遷移域と考える。
通過域の振幅値を“１”とした場合、標準関数ＸＦ１の−０．３ｄＢの振幅値は０．９６６０５１、−４５ｄＢの振幅値は０．００５６２３となる。図６に示す周波数特性前半上でこれらの振幅値に対応する基準化クロックＴｄの値を計算すると、それぞれＴｄ−０．３＝０．１０７８７８，Ｔｄ−４５＝０．４３２７７５となる。よって、標準関数ＸＦ１の遷移域の基準幅Ｌｓは、Ｌｓ＝Ｔｄ−４５−Ｔｄ−０．３＝０．３２４８９７となる。一方、標準関数ＸＦ１の周波数特性前半の基準化クロック数は０．５である。したがって、標準関数ＸＦ１の標準遷移域比率Ｒｔｓは、Ｒｔｓ＝Ｌｓ／０．５＝０．６４９７９４と求まる。
次に、この標準遷移域比率Ｒｔｓから補間関数長Ｌｉを求める。補間関数長Ｌｉとは、求める補間関数の有効領域の長さ（基準化クロック数）を言う。この補間関数長Ｌｉは、設計したいＦＩＲフィルタの遷移域のクロック幅Ｌｄと、上述の標準遷移域比率Ｒｔｓとから求める。図４６に示す仕様のローパスフィルタを設計する場合、遷移域幅の仕様は８．５ＭＨｚ〜１１．８ＭＨｚである。サンプリング周波数８０ＭＨｚのクロック幅が１０２４であるから、８．５ＭＨｚに対応するクロックはＴ８．５Ｍ＝１０９、１１．８ＭＨｚに対応するクロックはＴ１１．８Ｍ＝１５１となり、設計したい遷移域のクロック幅ＬｄはＬｄ＝Ｔ１１．８Ｍ−Ｔ８．５Ｍ＝４２となる。この場合、補間関数長Ｌｉは、Ｌｉ＝Ｌｄ／Ｒｔｓ＝６４．５７６５３９と求まる。
ローパスフィルタにおいてタップ数を削減するためには、補間関数長Ｌｉは計算値より大きい偶整数とすることが望ましい。そこで、この場合の補間関数長Ｌｉは６６とする。補間関数長Ｌｉが６６クロックの補間関数Ｉ（ＬＰＦ１）は、次の区分方程式（式２−１）（式２−２）のように求まる。
Ｉ（ＬＰＦ１）＝８／１６＋９／１６＊ｃｏｓ（２πｔ／６６）−１／１６＊ｃｏｓ（６πｔ／６６）
（０／１０２４≦ｔ≦６５／１０２４のとき）    ・・・（式２−１）
Ｉ（ＬＰＦ１）＝０
（６５／１０２４＜ｔ≦１０２３／１０２４のとき）・・・（式２−２）
上述の補間関数Ｉ（ＬＰＦ１）は、具体的には、（式２−１，２−２）中のクロックｔの値を０／１０２４から１０２３／１０２４まで変化させて計算した結果の１０２４個の数値列として求める。図７は、この１０２４個の数値列をグラフ化したものである。
このようにして補間関数Ｉ（ＬＰＦ１）を求めたら、次に、この補間関数Ｉ（ＬＰＦ１）の周波数特性を周波数軸方向（クロック方向）にシフトさせ、振幅値の“１”と“０”とをこのシフトした補間関数Ｉ（ＬＰＦ１）で繋ぐ（ステップＳ１３）。具体的には、（式２−１）で求められた基準化クロックｔ＝０／１０２４〜６５／１０２４の位置に対応する６６個の数値列を基準化クロックｔ＝ｉ／１０２４〜（ｉ＋６５）／１０２４の位置にシフトさせ（ｉは整数）、基準化クロックｔ＝０／１０２４〜（ｉ−１）／１０２４の位置の数値列を全て“１”、基準化クロックｔ＝（ｉ＋６６）／１０２４〜１０２３／１０２４の位置の数値列を全て“０”とする。図８は、このように補間関数Ｉ（ＬＰＦ１）をシフトして求めた１０２４個の数値列をグラフ化したものである。
次に、図８にて示される周波数特性を、クロックｔ＝０．５の位置を境界として左右対称となるように変換する（ステップＳ１４）。具体的には、基準化クロックｔ＝０／１０２４以外のｔ＝１／１０２４〜５１１／１０２４の数値列を、その並び順を逆にして基準化クロックｔ＝５１２／１０２４〜１０２３／１０２４の位置にコピーする。このようにして左右対称型とした１０２４個の数値列を、図１のステップＳ１における入力周波数特性の数値列として決定する。図９は、図８の周波数特性を左右対称型に変換した結果の周波数特性を示す図である。
なお、補間関数のシフト量ｉは、補間関数の振幅値“０．５”が周波数軸の１／８，２／８，３／８の位置にくるような値に設定すると、図１のステップＳ２で入力周波数特性の数値列を逆ＦＦＴした結果として得られるフィルタ係数が単純になり、結果として少ないタップ数のＦＩＲフィルタを設計することが可能である。
＜第２の生成方法＞
次に、入力周波数特性数を求める第２の方法について説明する。図３は、本実施形態による入力周波数特性の第２の生成方法に係る計算手順を示すフローチャートである。また、図４は、第２の生成方法を説明するための図であり、第２の生成方法によって生成される補間関数（設計仕様に基づくローパスフィルタ）の周波数振幅特性を示している。
図３において、まず、標準関数を入力する（ステップＳ２１）。ここで入力する標準関数は、第１の生成方法で入力したものと同様に有限台の関数であり、例えば（式１）で示される標準関数ＸＦ１である。
標準関数ＸＦ１の数値列を入力したら、次に、この標準関数ＸＦ１を基にして補間関数を求める（ステップＳ２２）。ここで求める補間関数は、周波数振幅特性の振幅値“１”と“０”との間を補間するための関数であり、要求されるデジタルフィルタの設計仕様に基づき周波数シフトされたものである。
周波数シフトされた補間関数を求める際には、まず、標準関数ＸＦ１から生成しようとする補間関数が持つ遷移域（デジタルフィルタの設計仕様に基づく遷移域）の、標準関数ＸＦ１が持つ遷移域に対する比率（以下、要求遷移域比率Ｒｔｒと言う）を求める。第２の生成方法で言う遷移域は、第１の生成方法のそれと異なり、振幅値が“１”と“０”との間に基準化された周波数振幅特性において、振幅値が“１”および“０”以外の値をとる領域を言う。要求遷移域比率Ｒｔｒを求める際には、遷移域における代表の２点（例えば、振幅が−０．３ｄＢの点、−４５ｄＢの点）の情報を用いる。
通過域の振幅値を“１”とした場合、標準関数ＸＦ１の−０．３ｄＢの振幅値は０．９６６０５１、−４５ｄＢの振幅値は０．００５６２３となる。図６に示す周波数特性前半上でこれらの振幅値に対応する基準化クロックＴｄを計算すると、それぞれＴｄ−０．３＝０．１０７８７８，Ｔｄ−４５＝０．４３２７７５となる。したがって、標準関数ＸＦ１の遷移域の基準幅Ｌｓは、Ｌｓ＝Ｔｄ−４５−Ｔｄ−０．３＝０．３２４８９７となる。一方、図４６のフィルタ規格より、要求されるデジタルフィルタの遷移域の基準幅Ｌｒｄは、Ｌｒｄ＝（１１．８−８．５）／８０＝０．０４１２５となる。したがって、要求されるデジタルフィルタ（補間関数）の要求遷移域比率Ｒｔｒは、Ｒｔｒ＝Ｌｒｄ／Ｌｓ＝０．１２６９６３と求まる。
次に、要求されるデジタルフィルタの基準化クロックｔ＝０から遷移域の開始点ｔ＝ｋ１（図４参照）までのクロック数Ｌｈｓを計算する。遷移域の開始点ｋ１から−０．３ｄＢの点ｋ２までのクロック数をＴｋ１−ｋ２、−０．３ｄＢの点ｋ２の基準化クロックをＴｋ２とすると、基準化クロックｔ＝０から遷移域の開始点ｔ＝ｋ１までのクロック数Ｌｈｓは、Ｌｈｓ＝Ｔｋ２−Ｔｋ１−ｋ２で求められる。ここで、図４６に示すフィルタ規格より−０．３ｄＢの周波数は８．５ＭＨＺであるから、これに相当する点ｋ２の基準化クロックＴｋ２は、Ｔｋ２＝８．５／８０＝０．１０６２５となる。一方、遷移域の開始点ｋ１から−０．３ｄＢの点ｋ２までのクロック数Ｔｋ１−ｋ２は、標準関数ＸＦ１における遷移域の開始点（ｔ＝０の点）から−０．３ｄＢの点までのクロック数Ｔｄ−０．３と要求遷移域比率Ｒ１ｒとを用いて、Ｔｄ−０．３＊Ｒｔｒで求められる。上述のように、Ｔｄ−０．３＝０．１０７８７８、Ｒｔｒ＝０．１２６９６３であるから、Ｔｋ１−ｋ２＝０．１０７８７８＊０．１２６９６３＝０．０１３６９７となる。したがって、遷移域の開始点ｋ１までのクロック数Ｌｈｓは、Ｌｈｓ＝０．１０６２５−０．０１３６９７＝０．０９２５５３と求まる。
さらに、要求されるデジタルフィルタの基準化クロックｔ＝０から遷移域の終了点ｔ＝ｋ４までのクロック数Ｌｈｅを計算する。遷移域の開始点ｋ１から終了点ｋ４までのクロック数をＴｋ１−ｋ４とすると、基準化クロックｔ＝０から遷移域の終了点ｔ＝ｋ４までのクロック数Ｌｈｅは、Ｌｈｅ＝Ｌｈｓ＋Ｔｋ１−ｋ４で求められる。ここで、遷移域の開始点ｋ１から終了点ｋ４までのクロック数Ｔｋ１−ｋ４は、標準関数ＸＦ１における遷移域の開始点（ｔ＝０の点）から終了点（ｔ＝５１１／１０２４の点）までのクロック数（＝０．５）と要求遷移域比率Ｒｔｒとを用いて、０．５＊Ｒｔｒで求められる。上述のように、Ｒｔｒ＝０．１２６９６３であるから、Ｔｋ１−ｋ４＝０．５＊０．１２６９６３＝０．０６３４８２となる。したがって、基準化クロックｔ＝０から遷移域の終了点ｔ＝ｋ４までのクロック数Ｌｈｅは、Ｌｈｅ＝０．０９２５５３＋０．０６３４８２＝０．１５６０３５と求まる。
以上の結果、補間関数Ｉ（ＬＰＦ１）は、次の区分方程式（式３−１，３−２，３−３）のように求まる。
Ｉ（ＬＰＦ１）＝１
（０／１０２４≦ｔ＜Ｌｈｓのとき）    ・・・（式３−１）
Ｉ（ＬＰＦ１）＝８／１６＋９／１６＊ｃｏｓ（（２π（ｔ−Ｌｈｓ）／Ｒｔｒ））−１／１６＊ｃｏｓ（（６π（ｔ−Ｌｈｓ）／Ｒｔｒ））
（Ｌｈｓ≦ｔ≦Ｌｈｃのとき）・・・（式３−２）
Ｉ（ＬＰＦ１）＝０
（Ｌｈｃ＜ｔ≦１０２３／１０２４のとき）・・・（式３−３）
上述の補間関数Ｉ（ＬＰＦ１）は、具体的には、（式３）中のクロックｔの値を０／１０２４から１０２３／１０２４まで変化させて計算した結果の１０２４個の数値列として求める。このような１０２４個の数値列をグラフ化すると、第１の生成方法で求めた図８のグラフとほぼ同様になる。ただし、上述した第１の生成方法では、計算によって求めた補間関数長Ｌｉを計算値より大きい偶整数に丸めている。また、当該丸めた偶整数の補間関数長Ｌｉで定まる補間関数を周波数軸方向にクロック単位でしかシフトしていない。これに対して、第２の生成方法では、求めた要求遷移比率Ｒｔｒを精度の良い計算値のまま用い、当該要求遷移比率Ｒｔｒを用いて周波数シフト（遷移域の開始点と終了点）まで含めて計算式で補間関数を求めているので、図４６に示した設計仕様に基づく遷移域の位置をより正確に実現することができる。
次に、図８にて示される周波数特性を、基準化クロックｔ＝０．５の位置を境界として左右対称となるように変換する（ステップＳ２３）。具体的には、基準化クロックｔ＝０／１０２４以外のｔ＝１／１０２４〜５１１／１０２４の数値列を、その並び順を逆にしてクロックｔ＝５１２／１０２４〜１０２３／１０２４の位置にコピーする。このようにして左右対称型とした１０２４個の数値列を、図１のステップＳ１における入力周波数特性の数値列として決定する。
図１０は、図４６に示す仕様のローパスフィルタについて、図１および図２の手順に従って例えば３２ビット（ｙ＝３２）の演算精度で実際に求めたフィルタ係数（ステップＳ４における丸め処理前のもの）の分布を示す図である。なお、ここでは、フィルタ係数の絶対値をとって、正の係数も負の係数も同じ象現に図示している。
図１０に示すように、本実施形態のフィルタ設計法によって求められるフィルタ係数の値は、中央部（基準化クロックｔ＝５１１／１０２４の位置）で最大となる。そして、各フィルタ係数の分布は、中央付近の局所的な領域で値が大きくなり、他の領域では値が小さくなるとともに、中央付近のフィルタ係数値と周辺のフィルタ係数値との差が極めて大きくなるといった尖鋭度の高い分布となる。図１および図３の手順に従ってフィルタ係数を求めた場合も同様である。そのため、所定の閾値より小さい値のフィルタ係数を丸め処理によって破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。また、周波数特性の帯域外減衰量はフィルタ係数のビット数によって制約を受けるが、本実施形態のフィルタ設計法によって得られる周波数特性は非常に深い減衰を持っているので、ビット数を多少減らしても、所望の減衰量は確保できる。
したがって、丸め処理により不要なフィルタ係数を大幅に削減することができる。例えば、フィルタ係数の下位数ビットを切り捨ててビット数を減らすことにより、その下位数ビットだけで表される最大値よりも小さい値のフィルタ係数を全て“０”に丸めて破棄することができる。
このように、本実施形態では係数値を利用した丸め演算によってフィルタ係数の数を減らすことが可能であり、従来のような窓掛けは必ずしも必要でない。なお、上述したように、最初にステップＳ１で入力する標準関数は、そのインパルス応答が有限台の関数である。そのため、この標準関数をもとに設計されるフィルタ係数の数は、従来に比べてそもそも少なく、丸め処理をすることなくそのまま使用することも可能である。しかし、よりタップ数を少なくするために、ビット数を減らす丸め処理を行うのが好ましい。
このように係数値を利用した丸め演算を行える点は、従来のフィルタ設計法と大きく異なる本実施形態の特徴点である。すなわち、従来のフィルタ設計法では、求められる各フィルタ係数の分布で尖鋭度がそれほど大きくならないため、フィルタ係数の値で丸め処理をすると、周波数特性を決定付ける主要なフィルタ係数も破棄されてしまうことが多い。また、非常に深い帯域外減衰量を持った周波数特性を得ることも困難なため、フィルタ係数のビット数を減らすと必要な帯域外減衰量を確保できなくなってしまう。よって、従来はビット数を減らす丸め処理を行うことができず、窓掛けによってフィルタ係数の数を減らさざるを得なかった。そのため、周波数特性に打ち切り誤差が発生し、所望の周波数特性を得ることが極めて困難であった。
これに対して、本実施形態では窓掛けを行うことなくＦＩＲフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることはない。したがって、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。つまり、リップルの少ない通過域特性と一様な減衰特性とを有する良好な周波数特性を実現することができる。
図１１は、ｘ＝１０とした場合、つまり逆ＦＦＴによって求められた３２ビットのフィルタ係数を２１０倍して小数点以下を切り捨て、その結果を１／２１０倍することによって得られたフィルタ係数を示す分布図であり、ｔ＝５１１／１０２４の中央付近を拡大して示している。また、図１２は、図１１に示すフィルタ係数によって実現されるＦＩＲローパスフィルタの周波数振幅特性を示す図であり、（ａ）はゲインを対数目盛りで示し、（ｂ）はゲインを直線目盛りで示している。
図１１に示すように、本実施形態のフィルタ設計法によると、最終的に求められるフィルタ係数の数は僅か４３個となる。また、図１２からよく分かるように、本実施形態ではフィルタ設計の際に窓掛けを行っていないので、周波数振幅特性における平坦部のリップルが極めて小さく、±０．３ｄＢの範囲内に充分収まっている。また、丸め処理後の帯域外減衰量は約４５ｄＢとなっており、僅か４３タップでも図４６に示す仕様を満たしている。
なお、ここではローパスフィルタを設計する場合に（式１）のような標準関数ＸＦ１を用いる例について説明しているが、この（式１）は単なる例に過ぎない。例えば、次の（式４）または（式５）で表される標準関数ＸＦ２，ＸＦ３を用いても良い。
ＸＦ２＝１／２＋ｃｏｓ（２πｔ）  ・・・（式４）
ＸＦ３＝ｃｏｓ（πｔ）＋１／８＊ｃｏｓ（３πｔ）−１／８＊ｃｏｓ（５πｔ）  ・・・（式５）
ここで、（式４）における各項の係数｛１／２，１｝は、数値列｛１，２，１｝／２をその中央で半分に分けたものの片側に相当する数値列である。また、（式５）における各項の係数｛１，１／８，−１／８｝は、特願２００３−５６２６５号に記載されている基本ローパスフィルタＬ４ａ３の数値列｛−１，１，８，８，１，−１｝／８をその中央で半分に分けたものの片側に相当する数値列である。
なお、特願２００３−５６２６５号には、これら（式１）（式４）（式５）における各項の係数に対応する数値列以外にもローパスフィルタに対応する数値列が幾つか示されており、それらの数値列に対応する関数を本実施形態の標準関数として用いても良い。
図１３は、（式４）で表される標準関数ＸＦ２およびこれから求められる補間関数Ｉ（ＬＰＦ２）をグラフ化した図である。図１４は、（式５）で表される標準関数ＸＦ３およびこれから求められる補間関数Ｉ（ＬＰＦ３）をグラフ化した図である。また、図１５は、補間関数Ｉ（ＬＰＦ２）を用いて図１および図２の手順に従って例えば３２ビットの演算精度で実際に求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。図１６は、補間関数Ｉ（ＬＰＦ３）を用いて図１および図２の手順に従って例えば３２ビットの演算精度で実際に求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。これらの図１５および図１６においても、フィルタ係数の絶対値をとって、正の係数も負の係数も同じ象現に図示している。
図１５および図１６に示すように、（式４）または（式５）のような標準関数ＸＦ２，ＸＦ３を用いた場合にも、本実施形態のフィルタ設計法によって求められるフィルタ係数の値は、中央（クロックｔ＝５１１／１０２４の位置）で最大となる。そして、各フィルタ係数の分布は、中央付近の局所的な領域で値が大きくなり、他の領域では値が小さくなるとともに、中央付近のフィルタ係数値と周辺のフィルタ係数値との差が極めて大きくなるといった尖鋭度の高い分布となる。図１および図３の手順に従ってフィルタ係数を求めた場合も同様である。
そのため、所定の閾値より小さい値のフィルタ係数を丸め処理によって破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。したがって、丸め処理によって不要なフィルタ係数を大幅に削減することができる。例えば、フィルタ係数の下位数ビットを切り捨ててビット数を減らすことにより、その下位数ビットだけで表される最大値よりも小さい値のフィルタ係数を全て“０”に丸めて破棄することができる。
次に、図４７に示すような仕様のハイパスフィルタを設計する場合を例にとって説明する。
＜第１の生成方法＞
上述した第１の生成方法によって入力周波数特性を生成する場合は、まず、次の（式６）に示すような標準関数ＸＦ４を入力する。ここで入力する標準関数ＸＦ４も、そのインパルス応答が局所的な領域内で“０”以外の有限な値を有し、それ以外の領域では値が全て“０”となるような有限台の関数である。
ＸＦ４＝８／１６−９／１６＊ｃｏｓ（２πｔ）＋１／１６＊ｃｏｓ（６πｔ）  ・・・（式６）
ここで、（式６）で示される関数は、振幅最大値＝１、周波数最大値＝１で基準化されている。この（式６）における各項の係数｛８／１６，−９／１６，０，１／１６｝（“０”はｃｏｓ（４πｔ）の項の係数）は、特願２００３−５６２６５号に記載されているハイパスフィルタのフィルタ係数｛１，０，−９，１６，−９，０，１｝／１６をその中央で半分に分けたものの片側に相当する数値列である。特願２００３−５６２６５号に詳細に記述しているように、｛１，０，−９，１６，−９，０，１｝／１６の数値列をフィルタ係数とするハイパスフィルタのインパルス応答は有限台であり、滑らかな波形となるために必要なサンプル点を全て通る。｛８，−９，０，１｝／１６の数値列も同様に、有限台のインパルス応答を有する数値列である。
図４７に示すような仕様のハイパスフィルタを設計する場合は、例えばこのような有限台のインパルス応答を持った係数｛８，−９，０，１｝／１６によって特定される（式６）のような標準関数ＸＦ４を入力する。具体的には、（式６）中のクロックｔの値を０／１０２４から１０２３／１０２４まで変化させて計算した結果の１０２４個の数値列を入力する。図１７は、この１０２４個の数値列をグラフ化したものである。
標準関数ＸＦ４の数値列を入力したら、次に、この標準関数ＸＦ４を基にして補間関数を求める。この補間関数を求める際には、まず、標準関数ＸＦ４によって特定される周波数特性の標準遷移域比率Ｒｔｓを求める。
通過域の振幅値を“１”とした場合、標準関数ＸＦ４の−０．３ｄＢの振幅値は０．９６６０５１、−４５ｄＢの振幅値は０．００５６２３となる。図１７に示す周波数特性前半上でこれらの振幅値に対応する基準化クロックＴｕの値を計算すると、それぞれＴｕ−０．３＝０．３９２１２２，Ｔｕ−４５＝０．０６７２２５となる。よって、標準関数ＸＦ４の遷移域の基準幅Ｌｓは、Ｌｓ＝Ｔｕ−０．３−Ｔｕ−４５＝０．３２４８９７となる。一方、標準関数ＸＦ４の周波数特性前半の基準化クロック数は０．５である。したがって、標準関数ＸＦ４の標準遷移域比率Ｒｔｓは、Ｒｔｓ＝Ｌｓ／０．５＝０．６４９７９４と求まる。
次に、標準遷移域比率Ｒｔｓから補間関数長Ｌｉを求める。図４７に示す仕様のハイパスフィルタを設計する場合、遷移域幅の仕様は８．５ＭＨｚ〜１１．８ＭＨｚである。サンプリング周波数８０ＭＨｚのクロック幅が１０２４であるから、８．５ＭＨｚに対応するクロックはＴ８．５Ｍ＝１０９、１１．８ＭＨｚに対応するクロックはＴ１１．８Ｍ＝１５１となり、設計したい遷移域のクロック幅はＬｄ＝Ｔ１１．８Ｍ−Ｔ８．５Ｍ＝４２となる。この場合、補間関数長Ｌｉは、Ｌｉ＝Ｌｄ／Ｒｔｓ＝６４．５７６５３９と求まる。
ハイパスフィルタにおいてタップ数を削減するためには、補間関数長Ｌｉは計算値より大きい偶整数とすることが望ましい。そこで、この場合の補間関数長Ｌｉは６６とする。補間関数長Ｌｉが６６クロックの補間関数Ｉ（ＨＰＦ）は、次の区分方程式（式７−１）（式７−２）のように求まる。
Ｉ（ＨＰＦ）＝８／１６−９／１６＊ｃｏｓ（２πｔ／６６）＋１／１６＊ｃｏｓ（６πｔ／６６）
（０／１０２４≦ｔ≦６５／１０２４のとき）    ・・・（式７−１）
Ｉ（ＨＰＦ）＝１
（６５／１０２４＜ｔ≦１０２３／１０２４のとき）・・・（式７−２）
上述の補間関数Ｉ（ＨＰＦ）は、具体的には、（式７−１，７−２）中のクロックｔの値を０／１０２４から１０２３／１０２４まで変化させて計算した結果の１０２４個の数値列として求める。図１８は、この１０２４個の数値列をグラフ化したものである。
このようにして補間関数Ｉ（ＨＰＦ）を求めたら、次に、この補間関数Ｉ（ＨＰＦ）の周波数特性を周波数軸方向（クロック方向）にシフトさせ、振幅値の“１”と“０”とをこのシフトした補間関数Ｉ（ＨＰＦ）で繋ぐ。具体的には、（式７−１）で求められた基準化クロックｔ＝０／１０２４〜６５／１０２４の位置に対応する６６個の数値列をクロックｔ＝ｉ／１０２４〜（ｉ＋６５）／１０２４の位置にシフトさせ（ｉは整数）、基準化クロックｔ＝０／１０２４〜（ｉ−１）／１０２４の位置の数値列を全て“０”、基準化クロックｔ＝（ｉ＋６６）／１０２４〜１０２３／１０２４の位置の数値列を全て“１”とする。図１９は、このように補間関数Ｉ（ＨＰＦ）をシフトして求めた１０２４個の数値列をグラフ化したものである。
次に、図１９にて示される周波数特性を、クロックｔ＝０．５の位置を境界として左右対称となるように変換する。具体的には、クロックｔ＝０／１０２４以外のｔ＝１／１０２４〜５１１／１０２４の数値列を、その並び順を逆にしてクロックｔ＝５１２／１０２４〜１０２３／１０２４の位置にコピーする。このようにして左右対称型とした１０２４個の数値列を、図１のステップＳ１における入力周波数特性の数値列として決定する。図２０は、図１９の周波数特性を左右対称型に変換した結果の周波数特性を示す図である。
この場合の補間関数のシフト量ｉも、補間関数の振幅値“０．５”が周波数軸の１／８，２／８，３／８の位置にくるような値に設定すると、図１のステップＳ２で入力周波数特性の数値列を逆ＦＦＴした結果として得られるフィルタ係数が単純になり、結果として少ないタップ数のＦＩＲフィルタを設計することが可能である。
＜第２の生成方法＞
図２１は、第２の生成方法を説明するための図であり、第２の生成方法によって生成される補間関数（設計仕様に基づくハイパスフィルタ）の周波数振幅特性を示している。
第２の生成方法によって入力周波数特性を生成する場合は、まず、（式６）に示したような標準関数ＸＦ４を入力する。標準関数ＸＦ４の数値列を入力したら、次に、この標準関数ＸＦ４を基にして、周波数シフトを含んだ補間関数を求める。
周波数シフトされた補間関数を求める際には、まず、標準関数ＸＦ４に対する補間関数の要求遷移域比率Ｒｔｒを求める。要求遷移域比率Ｒｔｒを求める際には、遷移域における代表の２点（例えば、振幅が−０．３ｄＢ，−４５ｄＢとなる点）の情報を用いる。
通過域の振幅値を“１”とした場合、標準関数ＸＦ４の−０．３ｄＢの振幅値は０．９６６０５１、−４５ｄＢの振幅値は０．００５６２３となる。図１７に示す周波数特性前半上でこれらの振幅値に対応する基準化クロックＴｕを計算すると、それぞれＴｕ−０．３＝０．３９２１２２，Ｔｕ−４５＝０．０６７２２５となる。したがって、標準関数ＸＦ４の遷移域の基準幅Ｌｓは、Ｌｓ＝Ｔｕ−０．３−Ｔｕ−４５＝０．３２４８９７となる。一方、図４７のフィルタ規格より、要求されるデジタルフィルタの遷移域の基準幅Ｌｒｄは、Ｌｒｄ＝（１１．８−８．５）／８０＝０．０４１２５となる。したがって、要求されるデジタルフィルタ（補間関数）の要求遷移域比率Ｒｔｒは、Ｒｔｒ＝Ｌｒｄ／Ｌｓ＝０．１２６９６３と求まる。
次に、要求されるデジタルフィルタの基準化クロックｔ＝０から遷移域の開始点ｔ＝ｋ１（図２１参照）までのクロック数Ｌｈｓを計算する。遷移域の開始点ｋ１から−４５ｄＢの点ｋ３までのクロック数をＴｋ１−ｋ３、−４５ｄＢの点ｋ３の基準化クロックをＴｋ３とすると、基準化クロックｔ＝０から遷移域の開始点ｔ＝ｋ１までのクロック数Ｌｈｓは、Ｌｈｓ＝Ｔｋ３−Ｔｋ１−ｋ３で求められる。ここで、図４７に示すフィルタ規格より−４５ｄＢの周波数は８．５ＭＨｚであるから、これに相当する点ｋ３の基準化クロックＴｋ３は、Ｔｋ３＝８．５／８０＝０．１０６２５となる。一方、遷移域の開始点ｋ１から−４５ｄＢの点ｋ３までのクロック数Ｔｋ１−ｋ３は、標準関数ＸＦ４における遷移域の開始点（ｔ＝０の点）から−４５ｄＢの点までのクロック数Ｔｕ−４５と要求遷移域比率Ｒｔｒとを用いて、Ｔｕ−４５＊Ｒｔｒで求められる。上述のように、Ｔｕ−４５＝０．０６７２２５、Ｒｔｒ＝０．１２６９６３であるから、Ｔｋ１−ｋ３＝０．０６７２２５＊０．１２６９６３＝０．００８５３５となる。したがって、遷移域の開始点ｋ１までのクロック数Ｌｈｓは、Ｌｈｓ＝０．１０６２５−０．００８５３５＝０．０９７７１５と求まる。
さらに、要求されるデジタルフィルタの基準化クロックｔ＝０から遷移域の終了点ｔ＝ｋ４までのクロック数Ｌｈｅを計算する。遷移域の開始点ｋ１から終了点ｋ４までのクロック数をＴｋ１−ｋ４とすると、基準化クロックｔ＝０から遷移域の終了点ｔ＝ｋ４までのクロック数Ｌｈｅは、Ｌｈｅ＝Ｌｈｓ＋Ｔｋ１−ｋ４で求められる。ここで、遷移域の開始点ｋ１から終了点ｋ４までのクロック数Ｔｋ１−ｋ４は、標準関数ＸＦ４における遷移域の開始点（ｔ＝０の点）から終了点（ｔ＝５１１／１０２４の点）までのクロック数（＝０．５）と要求遷移域比率Ｒｔｒとを用いて、０．５＊Ｒｔｒで求められる。上述のように、Ｒｔｒ＝０．１２６９６３であるから、Ｔｋ１−ｋ４＝０．５＊０．１２６９６３＝０．０６３４８２となる。したがって、基準化クロックｔ＝０から遷移域の終了点ｔ＝ｋ４までのクロック数Ｌｈｅは、Ｌｈｅ＝０．０９７７１５＋０．０６３４８２＝０．１６１１９７と求まる。
以上の結果、補間関数Ｉ（ＨＰＦ）は、次の区分方程式（式８−１，８−２，８−３）のように求まる。
Ｉ（ＨＰＦ）＝０
（０／１０２４≦ｔ＜Ｌｈｓのとき）    ・・・（式８−１）
Ｉ（ＨＰＦ）＝８／１６−９／１６＊ｃｏｓ（（２π（ｔ−Ｌｈｓ）／Ｒｔｒ））＋１／１６＊ｃｏｓ（（６π（ｔ−Ｌｈｓ）／Ｒｔｒ）
（Ｌｈｓ≦ｔ≦Ｌｈｅのとき）・・・（式８−２）
Ｉ（ＨＰＦ）＝１
（Ｌｈｅ＜ｔ≦１０２３／１０２４のとき）・・・（式８−３）
上述の補間関数Ｉ（ＨＰＦ）は、具体的には、（式８）中のクロックｔの値を０／１０２４から１０２３／１０２４まで変化させて計算した結果の１０２４個の数値列として求める。このような１０２４個の数値列をグラフ化すると、第１の生成方法で求めた図１９のグラフとほぼ同様になる。ただし、上述した第１の生成方法で求めた周波数特性に比べて、図４７に示した設計仕様に基づく遷移域の位置をより正確に実現することができる。
次に、図１９にて示される周波数特性を、基準化クロックｔ＝０．５の位置を境界として左右対称となるように変換する。具体的には、基準化クロックｔ＝０／１．０２４以外のｔ＝１／１０２４〜５１１／１０２４の数値列を、その並び順を逆にしてクロックｔ＝５１２／１０２４〜１０２３／１０２４の位置にコピーする。このようにして左右対称型とした１０２４個の数値列を、図１のステップＳ１における入力周波数特性の数値列として決定する。
図２２は、図４７に示す仕様のハイパスフィルタについて、図１および図２の手順に従って例えば３２ビットの演算精度で実際に求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。なお、ここでは、フィルタ係数の絶対値をとって、正の係数も負の係数も同じ象現に図示している。
図２２に示すように、本実施形態のフィルタ設計法によって求められるフィルタ係数の値は、中央部（クロックｔ＝５１２／１０２４の位置）で最大となる。そして、各フィルタ係数の分布は、中央付近の局所的な領域で値が大きくなり、他の領域では値が小さくなるとともに、中央付近のフィルタ係数値と周辺のフィルタ係数値との差が極めて大きくなるといった尖鋭度の高い分布となる。図１および図３の手順に従ってフィルタ係数を求めた場合も同様である。
そのため、所定の閾値より小さい値のフィルタ係数を丸め処理によって破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。また、本実施形態のフィルタ設計法によって得られる周波数特性は非常に深い減衰を持っているので、ビット数を多少減らしても、所望の減衰量は確保できる。
したがって、丸め処理によって不要なフィルタ係数を大幅に削減することができる。例えば、フィルタ係数の下位数ビットを切り捨ててビット数を減らすことによって、その下位数ビットだけで表される最大値よりも小さい値のフィルタ係数を全て“０”に丸めて破棄することができる。
このように、本実施形態では係数値を利用した丸め演算によってフィルタ係数の数を減らすことが可能であり、従来のような窓掛けは必ずしも必要でない。なお、上述したように、最初にステップＳ１で入力する標準関数は、そのインパルス応答が有限台の関数である。そのため、この標準関数をもとに設計されるフィルタ係数の数は、従来に比べてそもそも少なく、丸め処理をすることなくそのまま使用することも可能である。しかし、より回路を簡素化するために、ビット数を減らす丸め処理を行うのが好ましい。
図２３は、ｘ＝１０とした場合、つまり逆ＦＦＴによって求められた３２ビットのフィルタ係数を２１０倍して小数点以下を切り捨て、その結果を１／２１０倍することによって得られたフィルタ係数を示す分布図であり、ｔ＝５１２／１０２４の中央付近を拡大して示している。また、図２４は、図２３に示すフィルタ係数によって実現されるＦＩＲハイパスフィルタの周波数振幅特性を示す図であり、（ａ）はゲインを対数目盛りで示し、（ｂ）はゲインを直線目盛りで示している。
図２３に示すように、本実施形態のフィルタ設計法によると、最終的に求められるフィルタ係数の数は僅か５９個となる。また、図２４からよく分かるように、本実施形態ではフィルタ設計の際に窓掛けを行っていないので、周波数振幅特性における平坦部のリップルが極めて小さく、±０．３ｄＢの範囲内に充分収まっている。また、丸め処理後の帯域外減衰量は約４５ｄＢとなっており、僅か５９タップでも図４７に示す仕様を満たしている。
なお、ここではハイパスフィルタを設計する場合に（式６）のような標準関数ＸＦ４を用いる例について説明しているが、ローパスフィルタの標準関数ＸＦ１を用いて、クロックを０．５だけシフトしてもよい。また、この（式６）は単なる例に過ぎない。例えば、次の（式９）または（式１０）で表される標準関数ＸＦ５，ＸＦ６を用いても良い。
ＸＦ５＝１／２＋ｓｉｎ（２πｔ）  ・・・（式９）
ＸＦ６＝ｃｏｓ（πｔ）−１／８＊ｃｏｓ（３πｔ）−１／８＊ｃｏｓ（５πｔ）  ・・・（式１０）
ここで、（式９）における各項の係数｛−１／２，１｝は、数値列｛−１，２，−１｝／２をその中央で半分に分けたものの片側に相当する数値列である。また、（式１０）における各項の係数｛１，−１／８，−１／８｝は、特願２００３−５６２６５号に記載されている基本ハイパスフィルタＨ４ａ３の数値列｛１，１，−８，８，−１，−１｝／８をその中央で半分に分けたものの片側に相当する数値列である。
なお、特願２００３−５６２６５号には、これら（式６）（式９）（式１０）における各項の係数に対応する数値列以外にもハイパスフィルタに対応する数値列が幾つか示されており、それらの数値列に対応する関数を本実施形態の標準関数として用いても良い。
特に図示はしないが、（式６）だけでなく、例えば（式９）または（式１０）のような標準関数を用いた場合にも、本実施形態のフィルタ設計法によって求められるフィルタ係数の値は、中央（クロックｔ＝５１２／１０２４の位置）で最大となる。そして、各フィルタ係数の分布は、中央付近の局所的な領域で値が大きくなり、他の領域では値が小さくなるとともに、中央付近のフィルタ係数値と周辺のフィルタ係数値との差が極めて大きくなるといった尖鋭度の高い分布となる。
そのため、所定の閾値より小さい値のフィルタ係数を丸め処理によって破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。したがって、丸め処理によって不要なフィルタ係数を大幅に削減することができる。例えば、フィルタ係数の下位数ビットを切り捨ててビット数を減らすことにより、その下位数ビットだけで表される最大値よりも小さい値のフィルタ係数を全て“０”に丸めて破棄することができる。
次に、図４８に示すような仕様のバントパスフィルタを設計する場合を例にとって説明する。
＜第１の生成方法＞
第１の生成方法によって入力周波数特性を生成する場合は、まず、例えば上述した（式１）に示すローパスフィルタの標準関数ＸＦ１および（式６）に示すハイパスフィルタの標準関数ＸＦ４（図６、図１７参照）を入力する。
標準関数ＸＦ１，ＸＦ４を入力したら、次に、この標準関数ＸＦ１，ＸＦ４を基にして補間関数を求める。この補間関数を求める際には、まず、標準関数ＸＦ１，ＸＦ４によって特定される周波数特性の標準遷移域比率ＲｔｓＬ，ＲｔｓＨを求める。
通過域の振幅値を“１”とした場合、−０．３ｄＢの振幅値は０．９６６０５１、−４５ｄＢの振幅値は０．００５６２３となる。例えば、図６に示す周波数特性前半上でこれらの振幅値に対応する基準化クロックＴｄの値を計算すると、それぞれＴｄ−０．３＝０．１０７８７８，Ｔｄ−４５＝０．４３２７７５となる。よって、標準関数ＸＦ１の遷移域の基準幅ＬｓＬは、ＬｓＬ＝Ｔｄ−４５−Ｔｄ−０．３＝０．３２４８９７となる。また、図１７に示す周波数特性前半上でこれらの振幅値に対応する基準化クロックＴｕの値を計算すると、それぞれＴｕ−０．３＝０．３９２１２２，Ｔｕ−４５＝０．０６７２２５となる。よって、標準関数ＸＦ４の遷移域の基準幅ＬｓＨは、ＬｓＨ＝Ｔｕ−０．３−Ｔｕ−４５＝０．３２４８９７となる。一方、標準関数ＸＦ１，ＸＦ４の周波数特性前半の基準化クロック数は０．５である。したがって、標準関数ＸＦ１，ＸＦ４の標準遷移域比率ＲｔｓＬ，ＲｔｓＨは、ＲｔｓＬ＝ＬｓＬ／０．５＝０．６４９７９４、ＲｔｓＨ＝ＬｓＨ／０．５＝０．６４９７９４と求まる。
次に、この標準遷移域比率ＲｔｓＬ，ＲｔｓＨからローパスフィルタおよびハイパスフィルタの補間関数長ＬｉＬ，ＬｉＨを求める。図４８に示す仕様のバンドパスフィルタを設計する場合、遷移域幅の仕様は５ＭＨｚ〜８．５ＭＨｚおよび１２．５ＭＨｚ〜１６ＭＨｚである。サンプリング周波数８０ＭＨｚのクロック幅が１０２４であるから、ローパスフィルタの遷移域に関する１２．５ＭＨｚに対応するクロックはＴ１２．５Ｍ＝１６０、１６ＭＨｚに対応するクロックはＴ１６Ｍ＝２０５となり、設計したい遷移域のクロック幅はＬｄＬ＝Ｔ１６Ｍ−Ｔ１２．５Ｍ＝４５となる。この場合、ローパスフィルタの補間関数長ＬｉＬは、ＬｉＬ＝ＬｄＬ／ＲｔｓＬ＝６９．１８９１４９と求まる。
ハイパスフィルタの遷移域に関しては、５ＭＨｚに対応するクロックはＴ５Ｍ＝６４、８．５ＭＨｚに対応するクロックはＴ８．５Ｍ＝１０９となり、設計したい遷移域のクロック幅はＬｄＨ＝Ｔ８．５Ｍ−Ｔ５Ｍ＝４５となる。したがって、ハイパスフィルタの補間関数長ＬｉＨも、ＬｉＨ＝ＬｄＨ／ＲｔｓＨ＝６９．１８９１４９と求まる。
バンドパスフィルタフィルタにおいてタップ数を削減するためには、補間関数長ＬｉＬ，ＬｉＨは計算値より大きい偶整数とすることが望ましい。そこで、この場合の補間関数長ＬｉＬ，ＬｉＨは共に７０とする。
補間関数長ＬｉＬが７０クロックのローパスフィルタの補間関数Ｉ（ＬＰＦＢ）は、次の区分方程式（式１１−１）（式１１−２）のように求まる。
Ｉ（ＬＰＦＢ）＝８／１６＋９／１６＊ｃｏｓ（２πｔ／７０）−１／１６＊ｃｏｓ（６πｔ／７０）
（０／１０２４≦ｔ≦６９／１０２４のとき）      ・・・（式１１−１）
Ｉ（ＬＰＦＢ）＝０
（６９／１０２４＜ｔ≦１０２３／１０２４のとき）・・・（式１１−２）
また、補間関数長ＬｉＨが７０クロックのハイパスフィルタの補間関数Ｉ（ＨＰＦＢ）は、次の区分方程式（式１２−１）（式１２−２）のように求まる。
Ｉ（ＨＰＦＢ）＝８／１６−９／１６＊ｃｏｓ（２πｔ／７０）＋１／１６＊ｃｏｓ（６πｔ／７０）
（０／１０２４≦ｔ≦６９／１０２４のとき）    ・・・（式１２−１）
Ｉ（ＨＰＦＢ）＝１
（６９／１０２４＜ｔ≦１０２３／１０２４のとき）・・・（式１２−２）
図２５は、（式１１−１，１１−２）で表されるローパスフィルタの補間関数Ｉ（ＬＰＦＢ）および（式１２−１，１２−２）で表されるハイパスフィルタの補間関数Ｉ（ＨＰＦＢ）を示す図である。図２５（ａ）がローパスフィルタの補間関数Ｉ（ＬＰＦＢ）を示し、図２５（ｂ）がハイパスフィルタの補間関数Ｉ（ＨＰＦＢ）を示している。
このようにしてローパスフィルタおよびハイパスフィルタの補間関数Ｉ（ＬＰＦＢ），Ｉ（ＨＰＦＢ）を求めたら、次に、これらの補間関数Ｉ（ＬＰＦＢ），Ｉ（ＨＰＦＢ）の周波数特性を周波数軸方向（クロック方向）にシフトさせ、振幅値の“１”と“０”とをこのシフトした補間関数Ｉ（ＬＰＦＢ），Ｉ（ＨＰＦＢ）で繋ぐ。具体的には、（式１１−１）で求められたクロックｔ＝０／１０２４〜６９／１０２４の位置に対応する７０個の数値列をクロックｔ＝ｉ／１０２４〜（ｉ＋６９）／１０２４（ｉは整数）の位置にシフトさせるとともに、（式１２−１）で求められたクロックｔ＝０／１０２４〜６９／１０２４の位置に対応する７０個の数値列をクロックｔ＝ｊ／１０２４〜（ｊ＋６９）／１０２４（ｉ＞ｊ：ｊは整数）の位置にシフトさせる。そして、クロックｔ＝１／１０２４〜（ｊ−１）／１０２４，（ｉ±７０）／１０２４〜１０２３／１０２４の位置の数値列を全て“０”とし、クロックｔ＝（ｊ＋７０）／１０２４〜（ｉ−１）／１０２４の位置の数値列を全て“１”とする。図２６は、このように補間関数Ｉ（ＬＰＦＢ），Ｉ（ＨＰＦＢ）をシフトして求めた１０２４個の数値列をグラフ化したものである。
次に、図２６にて示される周波数特性を、クロックｔ＝０．５の位置を境界として左右対称となるように変換する。具体的には、クロックｔ＝０／１０２４以外のｔ＝１／１０２４〜５１１／１０２４の数値列を、その並び順を逆にしてクロックｔ＝５１２／１０２４〜１０２３／１０２４の位置にコピーする。このようにして左右対称型とした１０２４個の数値列を、図１のステップＳ１における入力周波数特性の数値列として決定する。図２７は、図２６の周波数特性を左右対称型に変換した結果の周波数特性を示す図である。
この場合の補間関数のシフト量ｉ，ｊも、補間関数の振幅値“０．５”が周波数軸の１／８，２／８，３／８の位置にくるような値に設定すると、図１のステップＳ２で入力周波数特性の数値列を逆ＦＦＴした結果として得られるフィルタ係数が単純になり、結果として少ないタップ数のＦＩＲフィルタを設計することが可能である。
＜第２の生成方法＞
図２８は、第２の生成方法を説明するための図であり、第２の生成方法によって生成される補間関数（設計仕様に基づくバンドパスフィルタ）の周波数振幅特性を示している。
第２の生成方法によって入力周波数特性を生成する場合は、まず、（式１）および（式６）に示したような標準関数ＸＦ１，ＸＦ４を入力する。標準関数ＸＦ１，ＸＦ４の数値列を入力したら、次に、この標準関数ＸＦ１，ＸＦ４を基にして、周波数シフトを含んだ補間関数を求める。
周波数シフトされた補間関数を求める際には、まず、標準関数ＸＦ１，ＸＦ４に対する補間関数の要求遷移域比率ＲｔｒＬ，ＲｔｒＨを求める。要求遷移域比率Ｒｔｒを求める際には、遷移域における代表の２点（例えば、振幅が−０．３ｄＢ，−４５ｄＢとなる点）の情報を用いる。
通過域の振幅値を“１”とした場合、標準関数ＸＦ１，ＸＦ４の−０．３ｄＢの振幅値は０．９６６０５１、−４５ｄＢの振幅値は０．００５６２３となる。図６および図１７に示す周波数特性前半上でこれらの振幅値に対応する基準化クロックを計算すると、それぞれＴｄ−０．３＝０．１０７８７８，Ｔｄ−４５＝０．４３２７７５、Ｔｕ−０．３＝０．３９２１２２，Ｔｕ−４５＝０．０６７２２５となる。したがって、標準関数ＸＦ１，ＸＦ４の遷移域の基準幅Ｌｓｄ，Ｌｓｕは、Ｌｓｄ＝Ｔｄ−４５−Ｔｄ−０．３＝０．３２４８９７、Ｌｓｕ＝Ｔｕ−０．３−Ｔｕ−４５＝０．３２４８９７となる。一方、図４７のフィルタ規格より、要求されるデジタルフィルタの遷移域の基準幅ＬｒｄＬ，ＬｒｄＨは、ＬｒｄＨ＝（１１．８−８．５）／８０＝０．０４１２５、ＬｒｄＬ＝（１６−１２．５）／８０＝０．０４３７５となる。したがって、要求されるデジタルフィルタ（補間関数）の要求遷移域比率ＲｔｒＬ，ＲｔｒＨは、ＲｔｒＬ＝ＬｒｄＬ／Ｌｓｄ＝０．１３４６５８、ＲｔｒＨ＝ＬｒｄＨ／Ｌｓｕ＝０．１２６９６３と求まる。
次に、要求されるデジタルフィルタの基準化クロックｔ＝０から遷移域の開始点ｔ＝ｋ１（図２８参照）までのクロック数ＬｈｓＨを計算する。遷移域の開始点ｋ１から−４５ｄＢの点ｋ３までのクロック数をＴｋ１−ｋ３、−４５ｄＢの点ｋ３の基準化クロックをＴｋ３とすると、基準化クロックｔ＝０から遷移域の開始点ｔ＝ｋ１までのクロック数ＬｈｓＨは、ＬｈｓＨ＝Ｔｋ３−Ｔｋ１−ｋ３で求められる。ここで、図４８に示すフィルタ規格より−４５ｄＢの周波数は８．５ＭＨｚであるから、これに相当する点ｋ３の基準化クロックＴｋ３は、Ｔｋ３＝８．５／８０＝０．１０６２５となる。一方、遷移域の開始点ｋ１から−４５ｄＢの点ｋ３までのクロック数Ｔｋ１−ｋ３は、標準関数ＸＦ４における遷移域の開始点（ｔ＝０の点）から−４５ｄＢの点までのクロックＴｕ−４５と要求遷移域比率ＲｔｒＨとを用いて、Ｔｕ−４５＊ＲｔｒＨで求められる。上述のように、Ｔｕ−４５＝０．０６７２２５、ＲｔｒＨ＝０．１２６９６３であるから、Ｔｋ１−ｋ３＝０．０６７２２５＊０．１２６９６３＝０．００８５３５となる。したがって、遷移域の開始点ｋ１までのクロック数ＬｈｓＨは、ＬｈｓＨ＝０．１０６２５−０．００８５３５＝０．０９７７１５と求まる。
次に、要求されるデジタルフィルタの基準化クロックｔ＝０から遷移域の終了点ｔ＝ｋ４までのクロック数ＬｈｅＨを計算する。遷移域の開始点ｋ１から終了点ｋ４までのクロック数をＴｋ１−ｋ４とすると、基準化クロックｔ＝０から遷移域の開始点ｔ＝ｋ４までのクロック数ＬｈｅＨは、ＬｈｅＨ＝ＬｈｓＨ＋Ｔｋ１−ｋ４で求められる。ここで、遷移域の開始点ｋ１から終了点ｋ４までのクロック数Ｔｋ１−ｋ４は、標準関数ＸＦ４における遷移域の開始点（ｔ＝０の点）から終了点（ｔ＝５１１／１０２４の点）までのクロック数（＝０．５）と要求遷移域比率ＲｔｒＨとを用いて、０．５＊ＲｔｒＨで求められる。上述のように、ＲｔｒＨ＝０．１２６９６３であるから、Ｔｋ１−ｋ４＝０．５＊０．１２６９６３＝０．０６３４８２となる。したがって、基準化クロックｔ＝０から遷移域の終了点ｔ＝ｋ４までのクロック数ＬｈｅＨは、ＬｈｅＨ＝０．０９７７１５＋０．０６３４８２＝０．１６１１９７と求まる。
次に、要求されるデジタルフィルタの基準化クロックｔ＝０から遷移域の開始点ｔ＝ｋ５までのクロック数ＬｈｓＬを計算する。遷移域の開始点ｋ５から−０．３ｄＢの点ｋ２’までのクロック数をＴｋ５−ｋ２’、−０．３ｄＢの点ｋ２の基準化クロックをＴｋ２’とすると、基準化クロックｔ＝０から遷移域の開始点ｔ＝ｋ５までのクロック数ＬｈｓＬは、ＬｈｓＬ＝Ｔｋ２’−Ｔｋ５−ｋ２’で求められる。ここで、図４８に示すフィルタ規格より−０．３ｄＢの周波数は１．６ＭＨＺであるから、これに相当する点ｋ２’の基準化クロックＴｋ２’は、Ｔｋ２’＝１６／８０＝０．２となる。一方、遷移域の開始点ｋ５から−０．３ｄＢの点ｋ２’までのクロック数Ｔｋ５−ｋ２’は、標準関数ＸＦ１における遷移域の開始点（ｔ＝０の点）から−０．３ｄＢの点中でのクロック数Ｔｄ−０．３と要求遷移域比率ＲｔｒＬとを用いて、Ｔｄ−０．３＊ＲｔｒＬで求められる。上述のように、Ｔｄ−０．３＝０．１０７８７８、ＲｔｒＬ＝０．１３４６５８であるから、Ｔｋ５−ｋ２’＝０．１０７８７８＊０．１３４６５８＝０．０１４５２７となる。したがって、遷移域の開始点ｋ５までのクロック数ＬｈｓＬは、ＬｈｓＬ＝０．２−０．０１４５２７＝０．１８５４７３と求まる。
さらに、要求されるデジタルフィルタの基準化クロックｔ＝０から遷移域の終了点ｔ＝ｋ６までのクロック数ＬｈｅＬを計算する。遷移域の開始点ｋ５から終了点ｋ６までのクロック数をＴｋ５−ｋ６とすると、基準化クロックｔ＝０から遷移域の終了点ｔ＝ｋ６までのクロック数ＬｈｅＬは、ＬｈｅＬ＝ＬｈｓＬ＋Ｔｋ５−ｋ６で求められる。ここで、遷移域の開始点ｋ５から終了点ｋ６までのクロック数Ｔｋ５−ｋ６は、標準関数ＸＦ１における遷移域の開始点（ｔ＝０の点）から終了点（ｔ＝５１１／１０２４の点）までのクロック数（＝０．５）と要求遷移域比率ＲｔｒＬとを用いて、０．５＊ＲｔｒＬで求められる。上述のように、ＲｔｒＬ＝０．１３４６５８であるから、Ｔｋ５−ｋ６＝０．５＊０．１３４６５８＝０．０６７３２９となる。したがって、基準化クロックｔ＝０から遷移域の終了点、ｔ＝ｋ６までのクロック数ＬｈｅＬは、ＬｈｅＬ＝０．１８５４７３＋０．０６７３２９＝０．２５２８０２と求まる。
以上の結果、補間関数（ＢＰＦ）は、次の区分方程式（式１３−１，１３−２，１３−３，１３−４，１３−５）のように求まる。
Ｉ（ＢＰＦ）＝０
（０／１０２４≦ｔ＜ＬｈｓＨのとき）    ・・・（式１３−１）
Ｉ（ＢＰＦ）＝８／１６−９／１６＊ｃｏｓ（（２π（ｔ−ＬｈｓＨ）／ＲｔｒＨ））＋１／１６＊ｃｏｓ（（６π（ｔ−ＬｈｓＨ）／ＲｔｒＨ））
（ＬｈｓＨ≦ｔ≦ＬｈｅＨのとき）・・・（式１３−２）
Ｉ（ＢＰＦ）＝１
（ＬｈｅＨ＜ｔ＜ＬｈｓＬのとき）・・・（式１３−３）
Ｉ（ＢＰＦ）＝８／１６＋９／１６＊ｃｏｓ（（２π（ｔ−ＬｈｓＬ）／ＲｔｒＬ））＋１／１６＊ｃｏｓ（（６π（ｔ−ＬｈｓＬ）／ＲｔｒＬ））
（ＬｈｓＬ≦ｔ≦ＬｈｅＬのとき）・・・（式１３−４）
Ｉ（ＢＰＦ）＝０
（ＬｈｅＬ＜ｔ≦１０２３／１０２４のとき）・・・（式１３−５）
上述の補間関数Ｉ（ＢＰＦ）は、具体的には、（式１３）中のクロックｔの値を０／１０２４から１０２３／１０２４まで変化させて計算した結果の１０２４個の数値列として求める。このような１０２４個の数値列をグラフ化すると、第１の生成方法で求めた図２６のグラフとほぼ同様になる。ただし、上述した第１の生成方法で求めた周波数特性に比べて、図４８に示した設計仕様に基づく遷移域の位置をより正確に実現することができる。
次に、図２６にて示される周波数特性を、基準化クロックｔ＝０．５の位置を境界として左右対称となるように変換する。具体的には、基準化クロックｔ＝０／１０２４以外のｔ＝１／１０２４〜５１１／１０２４の数値列を、その並び順を逆にしてクロックｔ＝５１２／１０２４〜１０２３／１０２４の位置にコピーする。このようにして左右対称型とした１０２４個の数値列を、図１のステップＳ１における入力周波数特性の数値列として決定する。
図２９は、図４８に示す仕様のバンドパスフィルタについて、図１および図２の手順に従って例えば３２ビットの演算精度で実際に求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。なお、ここでは、フィルタ係数の絶対値をとって、正の係数も負の係数も同じ象現に図示している。
図２９に示すように、本実施形態のフィルタ設計法によって求められるフィルタ係数の値は、中央部（クロックｔ＝５１２／１０２４の位置）で最大となる。そして、各フィルタ係数の分布は、中央付近の局所的な領域で値が大きくなり、他の領域では値が小さくなるとともに、中央付近のフィルタ係数値と周辺のフィルタ係数値との差が極めて大きくなるといった尖鋭度の高い分布となる。図１および図３の手順に従ってフィルタ係数を求めた場合も同様である。
そのため、所定の閾値より小さい値のフィルタ係数を丸め処理によって破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。また、本実施形態のフィルタ設計法によって得られる周波数特性は非常に深い減衰を持っているので、ビット数を多少減らしても、所望の減衰量は確保できる。
したがって、丸め処理によって不要なフィルタ係数を大幅に削減することができる。例えば、フィルタ係数の下位数ビットを切り捨ててビット数を減らすことによって、その下位数ビットだけで表される最大値よりも小さい値のフィルタ係数を全て“０”に丸めて破棄することができる。
このように、本実施形態では係数値を利用した丸め演算によってフィルタ係数の数を減らすことが可能であり、従来のような窓掛けは必ずしも必要でない。なお、上述したように、最初にステップＳ１で入力する標準関数は、そのインパルス応答が有限台の関数である。そのため、この標準関数をもとに設計されるフィルタ係数の数は、従来に比べてそもそも少なく、丸め処理をすることなくそのまま使用することも可能である。しかし、より回路を簡素化するために、ビット数を減らす丸め処理を行うのが好ましい。
図３０は、ｘ＝１０とした場合、つまり逆ＦＦＴによって求められた３２ビットのフィルタ係数を２１０倍して小数点以下を切り捨て、その結果を１／２１０倍することによって得られたフィルタ係数を示す分布図であり、ｔ＝５１２／１０２４の中央付近を拡大して示している。また、図３１は、図３０に示すフィルタ係数によって実現されるＦＩＲハイパスフィルタの周波数振幅特性を示す図であり、（ａ）はゲインを対数目盛りで示し、（ｂ）はゲインを直線目盛りで示している。
図３０に示すように、本実施形態のフィルタ設計法によると、最終的に求められるフィルタ係数の数は僅か５３個となる。また、図３１からよく分かるように、本実施形態ではフィルタ設計の際に窓掛けを行っていないので、周波数振幅特性における平坦部のリップルが極めて小さく、±０．３ｄＢの範囲内に充分収まっている。また、丸め処理後の帯域外減衰量は約４５ｄＢとなっており、僅か５３タップでも図４８に示す仕様を満たしている。
以上のように、本実施形態のフィルタ設計法によれば、リップル特性の良好なローパスフィルタ、ハイパスフィルタ、バンドパスフィルタを設計することができる。また、窓掛け演算を行うことは必ずしも必要でなく、窓掛け演算を行わなくてもタップ数を非常に少なくすることができる。さらに、丸め演算の際にフィルタ係数を２ｘ倍して整数化するので、乗算器の使用数を少なくすることができる。これにより、フィルタ回路を小面積でＩＣ化することができる。また、所望の周波数特性のフィルタ係数を求めるのに試行錯誤が殆ど不要であり、ＦＩＲフィルタを容易に設計することができる。
次に、図４６に示した仕様のローパスフィルタを、上述した標準関数ＸＦ１〜ＸＦ３と異なる標準関数から設計する場合について説明する。例えば、標準関数として他のＣＯＳ関数を入力する場合について以下に説明する。このＣＯＳ関数も、そのインパルス応答が局所的な領域内で“０”以外の有限な値を有し、それ以外の領域では値が全て“０”となるような有限台の関数であることが好ましい。ここでは、ＣＯＳ関数の一例として、次の（式１４）で表される関数を標準関数ＸＳ１として用いる場合について説明する。
ＸＳ１＝１／２＋１／２＊ｃｏｓ（２πｔ）    ・・・（式１４）
図３２は、この（式１４）に示すＣＯＳ関数の数値列（（式１４）中におけるクロックｔの値を０／１０２４から１０２３／１０２４まで変化させて計算した結果の１０２４個の数値列）をグラフ化したものである。
このようなＣＯＳ関数ＸＳ１から補間関数を求める際にも、上述した第１の生成方法および第２の生成方法の何れも適用することが可能である。ここでは代表として、第１の生成方法によって補間関数を求める方法について説明する。
第１の生成方法によって補間関数を求める際には、まず、ＣＯＳ関数ＸＳ１の標準遷移域比率Ｒｔｓを求める。通過域の振幅値を“１”とした場合、−０．３ｄＢの振幅値は０．９６６０５１、−４５ｄＢの振幅値は０．００５６２３となる。図３２に示すＣＯＳ関数ＸＳ１の周波数特性前半上でこれらの振幅値に対応する基準化クロックＴｄの値を計算すると、それぞれＴｄ−０．３＝０．０５９５７０，Ｔｄ−４５＝０．４７６５６３となる。よって、ＣＯＳ関数ＸＳ１の遷移域の基準幅Ｌｓは、Ｌｓ＝Ｔｄ−４５−Ｔｄ−０．３＝０．４１６９９３となる。一方、ＣＯＳ関数ＸＳ１の周波数特性前半の基準化クロック数は０．５である。したがって、ＣＯＳ関数ＸＳ１の標準遷移域比率Ｒｔｓは、Ｒｔｓ＝Ｌｓ／０．５＝０．８３３９８６と求まる。
次に、この標準遷移域比率Ｒｔｓから補間関数長Ｌｉを求める。図４６に示す仕様のローパスフィルタを設計する場合、遷移域幅の仕様は８．５ＭＨｚ〜１１．８ＭＨｚである。サンプリング周波数８０ＭＨｚのクロック幅が１０２４であるから、８．５ＭＨｚに対応するクロックはＴ８．５Ｍ＝１０９、１１．８ＭＨｚに対応するクロックはＴ１１．８Ｍ＝１５１となり、設計したい遷移域のクロック幅ＬｄはＬｄ＝Ｔ１１．８Ｍ−Ｔ８．５Ｍ＝４２となる。この場合、補間関数長Ｌｉは、Ｌｉ＝４２／Ｒｔｓ＝５０．３６０５５８と求まる。
ローパスフィルタにおいてタップ数を削減するためには、補間関数長Ｌｉは計算値より大きい偶整数とすることが望ましい。そこで、この場合の補間関数長Ｌｉは５２とする。ＣＯＳ関数ＸＳ１に基づく補間関数長Ｌｉが５２クロックの補間関数ＩＩ（ＬＰＦ１）は、次の区分方程式（式１５−１）（式１５−２）のように求まる。
ＩＩ（ＬＰＦ１）＝１／２＋１／２＊ｃｏｓ（２πｔ／５２）
（０／１０２４≦ｔ≦５１／１０２４のとき）    ・・・（式１５−１）
ＩＩ（ＬＰＦ１）＝０
（５１／１０２４＜ｔ≦１０２３／１０２４のとき）・・・（式１５−２）
上述の補間関数ＩＩ（ＬＰＦ１）は、具体的には、（式１５−１，１５−２）中のクロックｔの値を０／１０２４から１０２３／１０２４まで変化させて計算した結果の１０２４個の数値列として求める。図３３は、この１０２４個の数値列をグラフ化したものである。
このようにして補間関数ＩＩ（ＬＰＦ１）を求めたら、次に、この補間関数ＩＩ（ＬＰＦ１）の周波数特性を周波数軸方向（クロック方向）にシフトさせ、振幅値の“１”と“０”とをこのシフトした補間関数ＩＩ（ＬＰＦ１）で繋ぐ。具体的には、（式１５−１）で求められた基準化クロックｔ＝０／１０２４〜５１／１０２４の位置に対応する５２個の数値列をクロックｔ＝ｉ／１０２４〜（ｉ＋５１）／１０２４の位置にシフトさせ（ｉは整数）、クロックｔ＝０／１０２４〜（ｉ−１）／１０２４の位置の数値列を全て“１”、クロックｔ＝（ｉ＋５２）／１０２４〜１０２３／１０２４の位置の数値列を全て“０”とする。
次に、このようにして生成した数値列で表される周波数特性を、クロックｔ＝０．５の位置を境界として左右対称となるように変換する。具体的には、基準化クロックｔ＝０／１０２４以外のｔ＝１／１０２４〜５１１／１０２４の数値列を、その並び順を逆にしてクロックｔ＝５１２／１０２４〜１０２３／１０２４の位置にコピーする。このようにして左右対称型とした１０２４個の数値列を、図１のステップＳ１における入力周波数特性の数値列として決定する。
この場合の補間関数のシフト量ｉも、補間関数の振幅値“０．５”が周波数軸の１／８，２／８，３／８の位置にくるような値に設定すると、図１のステップＳ２で入力周波数特性の数値列を逆ＦＦＴした結果として得られるフィルタ係数が単純になり、結果として少ないタップ数のＦＩＲフィルタを設計することが可能である。
なお、次のようなスプライン関数を標準関数として用いることもできる。
ＸＳ２＝１−２ｔ２
（０／１０２４≦ｔ≦５１１／１０２４のとき）          ・・・（式１６−１）
ＸＳ２＝２（ｔ−１）２
（５１１／１０２４＜ｔ≦１０２３／１０２４のとき）    ・・・（式１６−２）
図３４は、上記（式１６−１，１６−２）で表される標準関数ＸＳ２およびこれから求められる補間関数ＩＩ（ＬＰＦ２）をグラフ化した図である。また、図３５は、補間関数ＩＩ（ＬＰＦ２）を用いて図１および図２の手順に従って例えば３２ビットの演算精度で実際に求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。この図３５においても、フィルタ係数の絶対値をとって、正の係数も負の係数も同じ象現に図示している。
また、次の（式１７−１，１７−２）で表されるスプライン関数ＸＳ３を標準関数として用いても良い。
ＸＳ３＝１−８ｔ２
（０／１０２４≦ｔ≦２５５／１０２４のとき）          ・・・（式１７−１）
ＸＳ３＝８（１／２−ｔ）２
（２５５／１０２４＜ｔ≦５１１／１０２４のとき）    ・・・（式１７−２）
図３６は、上記（式１７−１，１７−２）で表される標準関数ＸＳ３およびこれから求められる補間関数ＩＩ（ＬＰＦ３）をグラフ化した図である。また、図３７は、補間関数ＩＩ（ＬＰＦ３）を用いて図１および図２の手順に従って例えば３２ビットの演算精度で実際に求めたフィルタ係数（丸め処理前のもの）の分布を示す図である。この図３７においても、フィルタ係数の絶対値をとって、正の係数も負の係数も同じ象現に図示している。
図３５および図３７に示すように、（式１６−１，１６−２）または（式１７−１，１７−２）のような標準関数ＸＳ２，ＸＳ３を用いた場合も、本実施形態のフィルタ設計法によって求められるフィルタ係数の値は、中央部（基準化クロックｔ＝５１１／１０２４の位置）で最大となる。そして、各フィルタ係数の分布は、中央付近の局所的な領域で値が大きくなり、他の領域では値が小さくなるとともに、中央付近のフィルタ係数値と周辺のフィルタ係数値との差が極めて大きくなるといった尖鋭度の高い分布となる。図１および図３の手順に従ってフィルタ係数を求めた場合も同様である。
そのため、所定の閾値より小さい値のフィルタ係数を丸め処理によって破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。また、本実施形態のフィルタ設計法によって得られる周波数特性は非常に深い減衰を持っているので、ビット数を多少減らしても、所望の減衰量は確保できる。したがって、丸め処理によって不要なフィルタ係数を大幅に削減することができる。例えば、フィルタ係数の下位数ビットを切り捨ててビット数を減らすことにより、その下位数ビットだけで表される最大値よりも小さい値のフィルタ係数を全て“０”に丸めて破棄することができる。
なお、本実施形態に適用可能なスプライン関数は以上の例に限定されない。すなわち、有限台のスプライン関数を標準関数として用いれば、図３５や図３７と同様の好適な結果を得ることができる。
この他、標準関数として、リニア関数を用いることも可能である。標準関数としてリニア関数を用いる場合、当該標準関数ＸＬは次の区分方程式（式１８−１）（式１８−２）のように表される。
ＸＬ＝１−ｔ／５１２
（０／１０２４≦ｔ≦５１１／１０２４のとき）      ・・・（式１８−１）
ＸＬ＝０
（５１１／１０２４＜ｔ≦１０２３／１０２４のとき）    ・・・（式１８−２）
図３８は、この（式１８−１，１８−２）に示すリニア関数ＸＬの数値列をグラフ化したものである。
このようなリニア関数ＸＬから補間関数を求める際にも、上述した第１の生成方法および第２の生成方法の何れも適用することが可能である。ここでは代表として、第１の生成方法によって補間関数を求める方法について説明する。
第１の生成方法によって補間関数を求める際には、まず、リニア関数ＸＬの標準遷移域比率Ｒｔｓを求める。通過域の振幅値を“１”とした場合、−０．３ｄＢの振幅値は０．９６６０５１、−４５ｄＢの振幅値は０．００５６２３となる。図３８に示すリニア関数ＸＬの周波数特性前半上でこれらの振幅値に対応する基準化クロックＴｄの値を計算すると、それぞれＴｄ−０．３＝０．０１６６０２，Ｔｄ−４５＝０．４９７０７０となる。よって、リニア関数ＸＬの遷移域の基凖幅Ｌｓは、Ｌｓ＝Ｔｄ−４５−Ｔｄ−０．３＝０．４８０４６８となる。一方、リニア関数ＸＬの周波数特性前半の基準化クロック数は０．５である。したがって、リニア関数ＸＬの標準遷移域比率Ｒｔｓは、Ｒｔｓ＝Ｌｓ／０．５＝０．９６０９３６と求まる。
次に、この標準遷移域比率Ｒｔｓから補間関数長Ｌｉを求める。図４６に示す仕様のローパスフィルタを設計する場合、遷移域幅の仕様は８．５ＭＨｚ〜１１．８ＭＨｚである。サンプリング周波数８０ＭＨｚのクロック幅が１０２４であるから、８．５ＭＨｚに対応するクロックはＴ８．５Ｍ＝１０９、１１．８ＭＨｚに対応するクロックはＴ１１．８Ｍ＝１５１となり、設計したい遷移域のクロック幅ＬｄはＬｄ＝Ｔ１１．８Ｍ−Ｔ８．５Ｍ＝４２となる。この場合、補間関数長Ｌｉは、Ｌｉ＝４２／Ｒｔｓ＝４２／０．９６０９３８＝４３．７０７３８５と求まる。
ローパスフィルタにおいてタップ数を削減するためには、補間関数長Ｌｉは計算値より大きい偶整数とすることが望ましい。そこで、この場合の補間関数長Ｌｉは４４とする。リニア関数ＸＬに基づく補間関数長Ｌｉが４４クロックの補間関数ＩＩＩ（ＬＰＦ）は、次の区分方程式（式１９−１）（式１９−２）のように求まる。
ＩＩＩ（ＬＰＦ）＝１−ｔ／４４
（０／１０２４≦ｔ≦４３／１０２４のとき）    ・・・（式１９−１）
ＩＩＩ（ＬＰＦ）＝０
（４３／１０２４＜ｔ≦１０２３／１０２４のとき）・・・（式１９−２）
上述の補間関数ＩＩＩ（ＬＰＦ）は、具体的には、（式１９−１，１９−２）中のクロックｔの値を０／１０２４から１０２３／１０２４まで変化させて計算した結果の１０２４個の数値列として求める。図３９は、この１０２４個の数値列をグラフ化したものである。
このようにして補間関数ＩＩＩ（ＬＰＦ）を求めたら、次に、この補間関数ＩＩＩ（ＬＰＦ）の周波数特性を周波数軸方向（クロック方向）にシフトさせ、振幅値の“１”と“０”とをこのシフトした補間関数ＩＩＩ（ＬＰＦ）で繋ぐ。具体的には、（式１９−１）で求められた基準化クロックｔ＝０／１０２４〜４３／１０２４の位置に対応する４４個の数値列をクロックｔ＝ｉ／１０２４〜（ｉ＋４３）／１０２４の位置にシフトさせ（ｉは整数）、クロックｔ＝０／１０２４〜（ｉ−１）／１０２４の位置の数値列を全て“１”、クロックｔ＝（ｉ＋４４）／１０２４〜１０２３／１０２４の位置の数値列を全て“０”とする。
次に、このようにして生成した数値列で表される周波数特性を、クロックｔ＝０．５の位置を境界として左右対称となるように変換する。具体的には、基準化クロックｔ＝０／１０２４以外のｔ＝１／１０２４〜５１１／１０２４の数値列を、その並び順を逆にしてクロックｔ＝５１２／１０２４〜１０２３／１０２４の位置にコピーする。このようにして左右対称型とした１０２４個の数値列を、図１のステップＳ１における入力周波数特性の数値列として決定する。
この場合の補間関数のシフト量ｉも、補間関数の振幅値“０．５”が周波数軸の１／８，２／８，３／８の位置にくるような値に設定すると、図１のステップＳ２で入力周波数特性の数値列を逆ＦＦＴした結果として得られるフィルタ係数が単純になり、結果として少ないタップ数のＦＩＲフィルタを設計することが可能である。
図４０は、（式１）、（式１４）、（式１８−１，１８−２）によって示される３種類の標準関数ＸＦ１，ＸＳ１，ＸＬ、これら標準関数から計算される３種類の補間関数Ｉ（ＬＰＦ１），ＩＩ（ＬＰＦ１），ＩＩＩ（ＬＰＦ）、これら補間関数を周波数シフトして定めた入力周波数特性を逆ＦＦＴすることによって得られるフィルタ係数（丸め処理前のもの）の分布を示す図である。図４０（ａ）が（式１）、図４０（ｂ）が（式１４）、図４０（ｃ）が（式１８−１，１８−２）に対応するものである。また、図４１は、丸め演算の際に使うｘの値（丸め後のビット数ｘ）と必要なタップ数との関係を示す図である。
図４０に示すように、（式１）に示す関数を用いた場合には、（式１４）に示すＣＯＳ関数や（式１８−１，１８−２）に示すリニア関数を用いた場合に比べて、係数分布の尖鋭度が高く、中央付近のフィルタ係数値と周辺のフィルタ係数値との差がより大きな分布なる。そのため、丸め演算でｘの値を１０より大きくしても、必要となるタップ数の増加度はＣＯＳ関数やリニア関数に比べてはるかに小さい。
一般に、フィルタの帯域外減衰量は、実装しようとするハードウェアで対応可能なビット数によって制約される。したがって、ハードウェア規模の制約がなければ、丸め処理後のビット数ｘを大きくして、より減衰の深い帯域外減衰特性を得ることができる。（式１）に示す標準関数を用いてフィルタ設計を行った場合には、丸め処理後のフィルタ係数のビット数を１６ビットとしても、殆どタップ数は増えず、周波数特性の帯域外減衰量を−４５ｄＢよりも大きくとることが可能である。
これに対して、標準関数としてＣＯＳ関数やスプライン関数、リニア関数を用いた場合は、丸め処理後のフィルタ係数のビット数ｘを大きくすると、必要なタップ数が多くなっていく。しかし、フィルタ係数のビット数をある程度小さくすれば、必要なタップ数は（式１）に示す関数を用いた場合と同等程度まで少なくすることができる。したがって、丸め処理によってビット数をある程度小さくすることが可能な条件の下では、ＣＯＳ関数やスプライン関数、リニア関数を標準関数として用いたフィルタ設計法も有効である。
ちなみに、デジタルフィルタの分野で多く用いられる１２ビット精度であれば、（式１）に示す関数、（式１４）に示すＣＯＳ関数、（式１８−１，１８−２）に示すリニア関数のどれを用いても、タップ数に大きな差はない。よって、どの関数を標準関数として用いたフィルタ設計法も有効である。
以上に説明した本実施形態によるデジタルフィルタの設計方法を実現するための装置は、ハードウェア構成、ＤＳＰ、ソフトウェアの何れによっても実現することが可能である。例えばソフトウェアによって実現する場合、本実施形態のフィルタ設計装置は、実際にはコンピュータのＣＰＵあるいはＭＰＵ、ＲＡＭ、ＲＯＭなどで構成され、ＲＡＭやＲＯＭあるいはハードディスク等に記憶されたプログラムが動作することによって実現できる。
例えば、パーソナルコンピュータ等にインストールされている表計算ソフトの関数機能などを利用して、標準関数の入力、標準関数から補間関数の計算、補間関数の周波数シフト、補間関数をシフトして生成した入力周波数特性の逆ＦＦＴ演算、数値列の並び替え演算、丸め演算などを行うようにすることも可能である。この場合の演算は、実際には、表計算ソフトがインストールされているパーソナルコンピュータ等のＣＰＵ、ＲＯＭ、ＲＡＭなどによって行われる。
また、０ｄＢからの各減衰値と、所定の標準関数上で各減衰値に対応する基準化クロックの値とを関連付けたテーブル情報を記憶するテーブル情報記憶部と、図４６〜図４８のような要求仕様に関する情報を入力するための入力デバイスと、入力された要求仕様に関する情報と上述のテーブル情報とを用いて補間関数を算出するための演算を行う演算装置とを備えて本実施形態のフィルタ設計装置を構成しても良い。このように構成した場合は、入力デバイスを用いて要求仕様に関する情報を入力するだけで、その要求仕様に合致する補間関数（逆ＦＦＴするための入力周波数特性）を自動的に求めることができる。
また、求めたフィルタ係数を自動的にＦＦＴ変換し、その結果を周波数特性図としてディスプレイ画面に表示するようにしても良い。このようにすれば、設計したフィルタの周波数特性を視覚的に確認することができ、フィルタ設計をより容易に行うことができる。
実際にデジタルフィルタを電子機器内や半導体ＩＣに実装する場合には、以上のようなフィルタ設計装置によって最終的に求められた数値列をフィルタ係数として持つＦＩＲフィルタを構成すればよい。すなわち、図４２に示すように、単に複数のＤ型フリップフロップ１と、複数の係数器２と、複数の加算器３とにより１つのデジタルフィルタを構成し、以上のような手順で求めた最終的なフィルタ係数を、当該デジタルフィルタ内の複数の係数器２に設定する形で構成する。フィルタ係数を２ｘ倍して整数化した場合は、図４３のようにデジタルフィルタを構成することが可能である。
以上詳しく説明したように、本実施形態では、標準関数を入力してこれから補間関数を計算することによって入力周波数特性を定める。そして、この入力周波数特性を表す数値列を逆ＦＦＴすることによってフィルタ係数を求めるようにしたので、特別な数学知識や電気工学知識がなくても、所望の周波数特性を実現するＦＩＲデジタルフィルタの係数を簡単に決定することができる。さらに特筆すべきは、ローパスフィルタのみならず、ハイパスフィルタやバンドパスフィルタ、バンドエミリネーションフィルタ、コムフィルタなども、同一の手法で簡単に設計することができる。
また、本実施形態によれば、フィルタ係数の数を減らすために窓掛け演算は必ずしも必要でなく、数値の丸め演算によって、周波数特性の精度を落とさずにフィルタ係数の数を減らすことができる。また、本実施形態では、逆ＦＦＴにより求められた数値列に対して整数化の演算を行うことにより、フィルタ係数の値を簡素化することもできる。これにより、フィルタ構成要素の乗算器の使用数を大幅に削減してデジタルフィルタの構成を簡略化することができるとともに、希望する周波数特性を高精度に実現することができる。
なお、上記実施形態では、標準関数ＸＦ１〜ＸＦ６，ＸＳ１〜ＸＳ３，ＸＬを用いる例について説明したが、本発明で用いることが可能な標準関数はこれに限定されない。
また、上記実施形態では、整数化演算の例として、数値列を２ｘ倍して小数点以下を切り捨てる処理について説明したが、本発明はこれに限定されない。例えば、数値列を２ｘ倍して小数点以下を切り上げたり、四捨五入したりするようにしても良い。
整数化演算の他の例として、フィルタ係数の数値列をＮ倍（Ｎは２のべき乗以外の値）して小数点以下を丸める（切り捨て、切り上げ、四捨五入など）ようにしても良い。このようなＮ倍の丸め演算を行った場合、デジタルフィルタは、図４４に示すように、複数の遅延器（Ｄ型フリップフロップ）１から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器２で個別に乗算し、それぞれの乗算出力を複数の加算器３で全て加算した後に、１つの乗算器５でまとめて１／Ｎ倍するように構成することが可能となる。しかも、整数のフィルタ係数は、２ｉ＋２ｊ＋・・・（ｉ，ｊは任意の整数）のように２進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
また、数値列を２ｘ倍する場合はフィルタ係数に対してビット単位の丸めを実施することができるのに対し、数値列をＮ倍する場合はフィルタ係数に対してビット間の丸めを実施することができる。ビット単位の丸め処理とは、例えば係数値を２ｘ倍して小数点以下を切り捨てる場合には、２ｘ〜２ｘ＋１の範囲に属する数値は全て２ｘに丸めるといったように、係数値を１／２ｘの整数倍とする処理を言う。また、ビット間の丸め処理とは、例えば係数値をＮ倍（例えば、２ｘ−１＜Ｎ＜２ｘ）して小数点以下を切り捨てる場合には、Ｎ〜Ｎ＋１の範囲に属する数値は全てＮに丸めるといったように、係数値を１／Ｎの整数倍とする処理を言う。Ｎ倍の丸め演算を行うことにより、整数化されるフィルタ係数の値を、２のべき乗以外の任意の値に調整することが可能である。このようにすれば、デジタルフィルタで使用するフィルタ係数の数（タップの数）を微妙に調整することができる。
その他、整数化を伴う丸め演算の例として、ｙビットのフィルタ係数のデータ値が１／２ｘより小さいものは全てゼロとし、当該データ値が１／２ｘ以上のものについては、当該データ値を２ｘ＋Ｘ倍（ｘ＋Ｘ＜ｙ）して小数点以下を丸める（切り捨て、切り上げ、四捨五入など）ようにしても良い。
このような丸め処理を行った場合、デジタルフィルタは、図４５に示すように、複数の遅延器（Ｄ型フリップフロップ）１から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器２で個別に乗算し、それぞれの乗算出力を複数の加算器３で全て加算した後に、１つのシフト演算器６でまとめて１／２ｘ＋Ｘ倍するように構成することが可能となる。しかも、整数のフィルタ係数は、２ｉ＋２ｊ＋・・・（ｉ，ｊは任意の整数）のように２進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
また、データ値が１／２ｘより小さいものは全てゼロとして切り捨てることによってフィルタ係数の数（タップ数）を大幅に削減できると同時に、ｘビットに比べてビット数が多い（ｘ＋Ｘ）ビットの精度の良いフィルタ係数を求めることができるので、より良好な周波数特性を得ることもできる。
その他、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本弁明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【産業上の利用可能性】  本発明は、複数の遅延器から成るタップ付き遅延線を備え、各タップの出力信号をそれぞれフィルタ係数により数倍した後、それらの乗算結果を加算して出力するタイプのＦＩＲデジタルフィルタおよびその設計法に有用である。
【図１】
2005104365.tif 000002
【図２】
2005104365.tif 000003
【図３】
2005104365.tif 000004
【図４】
2005104365.tif 000005
【図５】
2005104365.tif 000006
【図６】
2005104365.tif 000007
【図７】
2005104365.tif 000008
【図８】
2005104365.tif 000009
【図９】
2005104365.tif 000010
【図１０】
2005104365.tif 000011
【図１１】
2005104365.tif 000012
【図１２】
2005104365.tif 000013
【図１３】
2005104365.tif 000014
【図１４】
2005104365.tif 000015
【図１５】
2005104365.tif 000016
【図１６】
2005104365.tif 000017
【図１７】
2005104365.tif 000018
【図１８】
2005104365.tif 000019
【図１９】
2005104365.tif 000020
【図２０】
2005104365.tif 000021
【図２１】
2005104365.tif 000022
【図２２】
2005104365.tif 000023
【図２３】
2005104365.tif 000024
【図２４】
2005104365.tif 000025
【図２５】
2005104365.tif 000026
【図２６】
2005104365.tif 000027
【図２７】
2005104365.tif 000028
【図２８】
2005104365.tif 000029
【図２９】
2005104365.tif 000030
【図３０】
2005104365.tif 000031
【図３１】
2005104365.tif 000032
【図３２】
2005104365.tif 000033
【図３３】
2005104365.tif 000034
【図３４】
2005104365.tif 000035
【図３５】
2005104365.tif 000036
【図３６】
2005104365.tif 000037
【図３７】
2005104365.tif 000038
【図３８】
2005104365.tif 000039
【図３９】
2005104365.tif 000040
【図４０】
2005104365.tif 000041
【図４１】
2005104365.tif 000042
【図４２】
2005104365.tif 000043
【図４３】
2005104365.tif 000044
【図４４】
2005104365.tif 000045
【図４５】
2005104365.tif 000046
【図４６】
2005104365.tif 000047
【図４７】
2005104365.tif 000048
【図４８】
2005104365.tif 000049
【国際調査報告】
2005104365.tif 000050
2005104365.tif 000051
2005104365.tif 000052
2005104365.tif 000053