(57)【要約】数値列が対称型の第１のフィルタ係数を有するオリジナルフィルタと、オリジナルフィルタの周波数振幅特性Ａと振幅最大値“１”において接する逆方向周波数振幅特性Ｂを実現する第２のフィルタ係数を有する調整フィルタとを縦続接続し、第１のフィルタ係数と第２のフィルタ係数との積和演算によって、求めるフィルタ係数の設計を行うようにする。【特許請求の範囲】
【請求項１】
複数の遅延器から成るタップ付き遅延線における各タップの信号に対して、与えられるフィルタ係数をそれぞれ乗じた後、各乗算結果を加算して出力するデジタルフィルタを設計する方法であって、
数値列が対称型の第１のフィルタ係数を生成する第１のステップと、
上記第１のフィルタ係数により表される周波数振幅特性とその振幅最大値において接する逆方向周波数振幅特性を実現する第２のフィルタ係数を求める第２のステップと、
上記第１のフィルタ係数を有する第１のフィルタと上記第２のフィルタ係数を有する第２のフィルタとを縦続接続した場合に得られる第３のフィルタ係数を求める演算を行い、この演算によって生成された上記第３のフィルタ係数を、求めるフィルタ係数として決定する第３のステップとを有し、
上記第１のフィルタに単一パルスを入力した場合に出力される数値列を｛Ｈｍ，Ｈｍ−１，・・・，Ｈ１，Ｈ０，Ｈ−１，・・・，Ｈ−（ｍ−１），Ｈ−ｍ｝で表した場合に、
上記第２のステップでは、上記第２のフィルタ係数を｛−ｋＨｍ，−ｋＨｍ−１，・・・，−ｋＨ１，−ｋＨ０＋（１＋ｋ），−ｋＨ−１，・・・，−ｋＨ−（ｍ−１），−ｋＨ−ｍ｝（ｋは任意の正数）なる演算によって求めることを特徴とするデジタルフィルタの設計方法。
【請求項２】
上記第１のフィルタに単一パルスを入力した場合に出力される数値列を｛Ｈｍ，Ｈｍ−１，・・・，Ｈ１，Ｈ０，Ｈ０，Ｈ−１，・・・，Ｈ−（ｍ−１），Ｈ−ｍ｝で表した場合に、
上記第２のステップでは、上記数値列の各数値を−ｋ倍（ｋは任意の正数）したものを高速フーリエ変換し、その結果得られる数値列の各数値にｋを加算し、その加算の結果得られる数値列を逆高速フーリエ変換することによって上記第２のフィルタ係数を求めることを特徴とする請求の範囲第１項に記載のデジタルフィルタの設計方法。
【請求項３】
複数の遅延器から成るタップ付き遅延線における各タップの信号に対して、与えられるフィルタ係数をそれぞれ乗じた後、各乗算結果を加算して出力するデジタルフィルタを設計する方法であって、
数値列が対称型の第１のフィルタ係数を生成する第１のステップと、
上記第１のフィルタ係数により表される周波数振幅特性とその振幅最大値において接する逆方向周波数振幅特性を実現する第２のフィルタ係数を求める第２のステップと、
上記第１のフィルタ係数を有する第１のフィルタと上記第２のフィルタ係数を有する第２のフィルタとを縦続接続した場合に得られる第３のフィルタ係数を求める演算を行い、この演算によって生成された上記第３のフィルタ係数を、求めるフィルタ係数として決定する第３のステップとを有し、
上記第１のフィルタに単一パルスを入力した場合に出力される数値列を｛Ｈｍ，Ｈｍ−１，・・・，Ｈ１，Ｈ０，Ｈ０，Ｈ−１，・・・，Ｈ−（ｍ−１），Ｈ−ｍ｝で表した場合に、
上記第２のステップでは、上記数値列の各数値を−ｋ倍（ｋは任意の正数）したものを高速フーリエ変換し、その結果得られる数値列の各数値にｋを加算し、その加算の結果得られる数値列を逆高速フーリエ変換することによって上記第２のフィルタ係数を求めることを特徴とするデジタルフィルタの設計方法。
【請求項４】
上記第３のステップで生成された上記第３のフィルタ係数を上記第１のフィルタ係数として用いることにより、上記第２のステップおよび上記第３のステップの処理を２回以上繰り返し行い、最終段階の上記第３のステップで生成されたフィルタ係数を、求めるフィルタ係数として決定するようにしたことを特徴とする請求の範囲第１項〜第３項の何れか１項に記載のデジタルフィルタの設計方法。
【請求項５】
上記第３のステップで生成された上記第３のフィルタ係数を上記第１のフィルタ係数として用いることにより、上記第２のステップおよび上記第３のステップの処理を２回以上繰り返し行うように成し、
当該繰り返し処理の途中段階における上記第２のステップではｋ≠１として上記第２のフィルタ係数を求め、最終段階の上記第２のステップではｋ＝１として上記第２のフィルタ係数を求めて、最終段階の上記第３のステップで生成された上記第３のフィルタ係数を、求めるフィルタ係数として決定するようにしたことを特徴とする請求の範囲第１項〜第３項の何れか１項に記載のデジタルフィルタの設計方法。
【請求項６】
数値列が対称型の第１のフィルタ係数に関するデータを記憶するフィルタ係数記憶手段と、
上記基本フィルタ係数記憶手段に記憶されたデータを用いて、上記第１のフィルタ係数により表される周波数振幅特性とその振幅最大値において接する逆方向周波数振幅特性を実現する対称型の第２のフィルタ係数を求める演算および、上記第１のフィルタ係数を有する第１のフィルタと上記第２のフィルタ係数を有する第２のフィルタとを縦続接続した場合に得られる第３のフィルタ係数を求める演算を行う演算手段とを備えたことを特徴とするデジタルフィルタの設計装置。
【請求項７】
請求の範囲第１項〜第５項の何れか１項に記載されたデジタルフィルタの設計方法に関する処理手順をコンピュータに実行させるためのデジタルフィルタ設計用プログラム。
【請求項８】
請求の範囲第６項に記載の各手段としてコンピュータを機能させるためのデジタルフィルタ設計用プログラム。
【請求項９】
複数の遅延器から成るタップ付き遅延線における各タップの信号に対して、与えられるフィルタ係数をそれぞれ乗じた後、各乗算結果を加算して出力するように成されたデジタルフィルタであって、
請求の範囲第１項〜第５項の何れか１項に記載の設計方法を用いて決定された上記第３のフィルタ係数を、上記各タップの信号に対するフィルタ係数として設定したことを特徴とするデジタルフィルタ。
【請求項１０】
複数の遅延器から成るタップ付き遅延線における各タップの信号に対して、与えられるフィルタ係数をそれぞれ乗じた後、各乗算結果を加算して出力するように成されたデジタルフィルタであって、
数値列が対称型の第１のフィルタ係数を有するオリジナルフィルタと、
上記オリジナルフィルタの周波数振幅特性とその振幅最大値において接する逆方向周波数振幅特性を実現する対称型の第２のフィルタ係数を有する調整フィルタとを備え、
上記オリジナルフィルタと上記調整フィルタとを縦続接続することによって構成したことを特徴とするデジタルフィルタ。
【請求項１１】
上記オリジナルフィルタに単一パルスを入力した場合に当該オリジナルフィルタより出力される数値列を｛Ｈｍ，Ｈｍ−１，・・・，Ｈ１，Ｈ０，Ｈ−１，・・・，Ｈ−（ｍ−１），Ｈ−ｍ｝で表した場合、
上記調整フィルタを構成する第２のフィルタ係数は、｛−ｋＨｍ，−ｋＨｍ−１，・・・，−ｋＨ１，−ｋＨ０＋（１＋ｋ），−ｋＨ−１，・・・，−ｋＨ−（ｍ−１），−ｋＨ−ｍ｝（ｋは任意の正数）であることを特徴とする請求の範囲第１０項に記載のデジタルフィルタ。
【請求項１２】
複数の遅延器から成るタップ付き遅延線における各タップの信号に対して、与えられるフィルタ係数をそれぞれ乗じた後、各乗算結果を加算して出力するように成されたデジタルフィルタであって、
数値列が対称型の第１のフィルタ係数を有するオリジナルフィルタと、数値列が対称型の第２のフィルタ係数を有する複数の調整フィルタとをこの順番で縦続接続することによって構成され、
上記複数の調整フィルタを構成する上記第２のフィルタ係数は、それぞれ、上記オリジナルフィルタに単一パルスを入力した場合に前段のフィルタより出力される数値列により特定される周波数振幅特性とその振幅最大値において接する逆方向周波数振幅特性を実現する対称型のフィルタ係数であることを特徴とするデジタルフィルタ。
【請求項１３】
上記前段のフィルタより出力される数値列を｛Ｈｍ，Ｈｍ−１，・・・，Ｈ１，Ｈ０，Ｈ−１，・・・，Ｈ−（ｍ−１），Ｈ−ｍ｝とした場合、
上記調整フィルタを構成する第２のフィルタ係数は、｛−ｋＨｍ，−ｋＨｍ−１，・・・，−ｋＨ１，−ｋＨ０＋（１＋ｋ），−ｋＨ−１，・・・，−ｋＨ−（ｍ−１），−ｋＨ−ｍ｝（ｋは任意の正数）であることを特徴とする請求の範囲第１２項に記載のデジタルフィルタ。
【請求項１４】
上記オリジナルフィルタと、ｋ≠１として上記第２のフィルタ係数を設定した１以上の上記調整フィルタと、ｋ＝１として上記第２のフィルタ係数を設定した１以上の上記調整フィルタとをこの順番で縦続接続することによって構成したことを特徴とする請求の範囲第１３項に記載のデジタルフィルタ。
【発明の詳細な説明】
【技術分野】  本発明はデジタルフィルタおよびその設計方法、設計装置、デジタルフィルタ設計用プログラムに関し、特に、ＦＩＲフィルタの設計法に関するものである。
【背景技術】  デジタルフィルタの１つの形態として、ＦＩＲ（Ｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ：有限長インパルス応答）フィルタが存在する。このＦＩＲフィルタは、複数の遅延器から成るタップ付き遅延線を備え、各タップの出力信号をそれぞれフィルタ係数により数倍した後、それらの乗算結果を加算して出力するタイプのフィルタであり、次のような利点を持つ。第１に、ＦＩＲフィルタの伝達関数の極はｚ平面の原点のみにあるため、回路は常に安定である。第２に、フィルタ係数が対称型であれば、完全に正確な直線位相特性を実現することができる。
このＦＩＲフィルタは、有限時間長で表されるインパルス応答がそのままフィルタ係数となっている。したがって、ＦＩＲフィルタを設計するということは、希望の周波数特性が得られるようにフィルタ係数を決定するということである。従来、ＦＩＲフィルタを設計する際には、目標とする周波数特性に基づきフィルタ係数を算出し、これに窓掛けを行って有限個の係数群を得る。そして、得られた係数群をＦＦＴ（高速フーリエ変換）することによって周波数特性に変換し、これが目標値を満足しているかを確認する方法で設計していた。
目標とする周波数特性からフィルタ係数を算出する際には、例えば、サンプリング周波数とカットオフ周波数との比率をもとに、チェビシェフ近似法を用いた畳み込み演算等を行っていた。これにより求められる係数の数は膨大となり、その係数を全て使用すると、フィルタ回路のタップ数や乗算器が非常に多くなってしまい、現実的でない。そのため、畳み込み演算により求めたフィルタ係数の数を窓掛けによって実用上耐えうる程度に減らしていた。
【発明の開示】
しかしながら、従来の設計法で得られるＦＩＲフィルタの周波数特性は、窓関数や近似式に依存するので、これらをうまく設定しないと、目標とする良好な周波数特性を得ることができない。ところが、窓関数や近似式を適当に設定することは、一般に困難である。また、窓掛けをすると係数の打ち切り誤差が発生するため、所望の周波数特性を実現するのが困難となる。特に、阻止域（通過域と遮断域との間の帯域）の傾斜が急峻となっている理想的な周波数特性を得ることは極めて難しいという問題があった。
なお、上述の従来法によって生成したＦＩＲフィルタを複数段縦続接続することによって急峻な周波数特性を実現する方法が知られている（例えば、特開平５−２４３９０８号公報参照）。また、タップ付き遅延線の各タップ間（各フィルタ係数間）に複数のゼロ値を挿入することによってフィルタバンク帯域を調整する方法も知られている（例えば、特表平６−５０３４５０号公報参照）。しかしながら、これら何れの方法も、調整前に比べてフィルタの通過帯域は狭くなる方向に働き、バンド幅を広げて傾斜を急峻にすることはできなかった。
本発明は、このような問題を解決するために成されたものであり、周波数特性のバンド幅を広げて傾斜を急峻にする簡易的なフィルタ設計法および、傾斜が急峻な理想的な周波数特性を有するＦＩＲデジタルフィルタを新たに提供することを目的とする。
上記の課題を解決するために、本発明によるデジタルフィルタの設計方法は、数値列が対称型の第１のフィルタ係数を生成する第１のステップと、上記第１のフィルタ係数により表される周波数振幅特性とその振幅最大値において接する逆方向周波数振幅特性を実現する第２のフィルタ係数を求める第２のステップと、上記第１のフィルタ係数を有する第１のフィルタと上記第２のフィルタ係数を有する第２のフィルタとを縦続接続した場合に得られる第３のフィルタ係数を求める演算を行い、この演算により生成された上記第３のフィルタ係数を、求めるフィルタ係数として決定する第３のステップとを有する。
ここで、上記第１のフィルタ係数を構成する数値列を｛Ｈｍ，Ｈ，ｍ−１，・・・，Ｈ１，Ｈ０，Ｈ−１，・・・，Ｈ−（ｍ−１），Ｈ−ｍ｝で表した場合に、上記第２のステップでは、上記第２のフィルタ係数を｛−ｋＨｍ，−ｋＨｍ−１，・・・，−ｋＨ１，−ｋＨ０＋（１＋ｋ），−ｋＨ−１，・・・，−ｋＨ−（ｍ−１），−ｋＨ−ｍ｝（ｋは任意の正数）なる演算によって求める。なお、第１のフィルタ係数は、これを高速フーリエ変換した結果の周波数−ゲイン特性において振幅が“１”となるように基準化されているものである。
また、上記第１のフィルタ係数を構成する数値列を｛Ｈｍ，Ｈｍ−１，・・・，Ｈ１，Ｈ０，Ｈ０，Ｈ−１，・・・，Ｈ−（ｍ−１），Ｈ−ｍ｝で表した場合に、上記第２のステップでは、上記数値列の各数値を−ｋ倍（ｋは任意の正数）したものを高速フーリエ変換し、その結果得られる数値列の各数値にｋを加算し、その加算の結果得られる数値列を逆高速フーリエ変換することによって上記第２のフィルタ係数を求める。
以上説明したように本発明によれば、窓関数や近似式を用いることなく、通過帯域幅が比較的広くて阻止域の傾斜が急峻な周波数特性を有するＦＩＲデジタルフィルタを簡易的に設計することができる。
【図面の簡単な説明】  図１は、本実施形態によるＦＩＲデジタルフィルタの設計方法の手順を示すフローチャートである。
図２は、本実施形態によるＦＩＲデジタルフィルタの設計方法の概念を説明するための周波数特性図である。
図３は、第２のフィルタ係数を求める演算内容を説明するための図である。
図４は、オリジナルバンドパスフィルタの周波数振幅特性およびこのオリジナルバンドパスフィルタに対して１〜３個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。
図５は、本実施形態の調整フィルタを縦続接続した場合に得られる周波数特性の変化の原理を説明するための図である。
図６は、オリジナルバンドパスフィルタに対して、ｋ＝１．５の調整フィルタを３段縦続接続するとともに、最終段にｋ＝１の調整フィルタを更に縦続接続した場合に得られる周波数特性を示す図である。
図７は、オリジナルローパスフィルタの周波数振幅特性およびこのオリジナルローパスフィルタに対して１〜５個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。
図８は、本実施形態によるデジタルフィルタの一構成例を示す図である。
図９は、基本ローパスフィルタＬ４ａｎのフィルタ係数を示す図である。
図１０は、基本ローパスフィルタＬ４ａ４のハードウェア構成例を示す図である。
図１１は、基本ローパスフィルタＬ４ａ４の周波数特性を示す図である。
図１２は、基本ローパスフィルタＬ４ａｎの周波数−ゲイン特性を示す図である。
図１３は、基本ハイパスフィルタＨ４ｓｎのフィルタ係数を示す図である。
図１４は、基本バンドパスフィルタＢ４ｓｎのフィルタ係数を示す図である。
図１５は、本実施形態によるデジタルフィルタの他の構成例を示すブロック図である。
図１６は、本実施形態によるデジタルフィルタの他の構成例を示すブロック図である。
図１７は、本実施形態によるデジタルフィルタの他の構成例を示すブロック図である。
【発明を実施するための最良の形態】  以下、本発明の一実施形態を図面に基づいて説明する。図１は、本実施形態によるＦＩＲデジタルフィルタの設計方法の手順を示すフローチャートである。また、図２は、本実施形態によるＦＩＲデジタルフィルタの設計方法の概念を説明するための周波数特性図である。
図１において、まず、数値列が対称型の第１のフィルタ係数を生成する（ステップＳ１）。この第１のフィルタ係数の生成法については、本発明では特に限定しない。フィルタ係数の数値列が対称型になっていれば、近似式や窓関数を用いる従来の設計法を用いても良いし、本発明者が過去に提案した設計法（例えば、特願２００１−３６５１４６号、特願２００２−１２９１６８号、特願２００２−２０５０１４号、特願２００２−３０６３１５号、特願２００２−３０６３１６号、特願２００３−５６２６５号など）を用いても良い。
本発明者が過去に提案したフィルタ設計法を簡単に説明すると、次の通りである。特願２００１−３６５１４６号に記載の第１の設計法は、所望の周波数特性を表す複数の振幅値を入力し、当該入力した数値列を逆フーリエ変換した後、得られた数値列に対して窓掛けを行うことによってフィルタ係数を求める方法である。また、特願２００２−１２９１６８号、特願２００２−２０５０１４号、特願２００２−３０６３１５号、特願２００２−３０６３１６号に記載の第２の設計法は、所定の基本的な数値列から成る１以上の基本ユニットフィルタを作成し、これらを任意に縦続接続することによってフィルタ係数を求める方法である。
また、特願２００３−５６２６５号に記載の第３の設計法は、所定の基本的な数値列より成るフィルタ係数に基づきＦＩＲ演算を行った後、その演算データに対して、演算前の元データとそれより所定遅延量だけ前の前データとを加算し振幅調整して出力する移動平均演算をｎ回繰り返し行うことによってフィルタ係数を求める方法である。少ないタップ数で減衰特性の良好な周波数特性が得られるという点では、第２の設計法または第３の設計法を用いるのが好ましい。
図２中に符号Ａで示す周波数特性は、ステップＳ１で生成した第１のフィルタ係数によって実現されるオリジナルフィルタの周波数−ゲイン特性の一例を示している。なお、ここでは、オリジナルフィルタの周波数特性においてゲインおよび周波数を“１”で基準化（正規化）している。
次に、第１のフィルタ係数により表される周波数振幅特性（図２中のＡ）とその振幅最大値“１”において接する逆方向周波数振幅特性（図２中のＢ）を実現する第２のフィルタ係数を求める（ステップＳ２）。すなわち、第１のフィルタ係数により表される第１の周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる第２の周波数振幅特性を実現する対称型の第２のフィルタ係数を求める。周波数振幅特性がこのような特徴を有していれば、第２のフィルタ係数をどのような方法を用いて生成しても良いが、例えば次のような演算によって求めることができる。
すなわち、オリジナルフィルタに単一パルスを入力した場合に出力される数値列（この場合は第１のフィルタ係数の数値列と同じ）を｛Ｈｍ，Ｈｍ−１，・・・，Ｈ１，Ｈ０，Ｈ−１，・・・，Ｈ−（ｍ−１），Ｈ−ｍ｝とした場合に、第２のフィルタ係数は、｛−ｋＨｍ，−ｋＨｍ−１，・・・，−ｋＨ１，−ｋＨ０＋（１＋ｋ），−ｋＨ−１，・・・，−ｋＨ−（ｍ−１），−ｋＨ−ｍ｝（ｋは任意の正数）なる演算によって求める。つまり、中央値以外の係数は全て−ｋ倍し、中央値だけは−ｋ倍して更に（１＋ｋ）を加算することによって、第２のフィルタ係数を求める。以下、この第２のフィルタ係数を有するフィルタを「調整フィルタ」と呼ぶ。なお、第１のフィルタ係数は、全体の係数の数が奇数個でＨ０が中央値であり、当該中央値を境として対称型となっている（Ｈｍ＝Ｈ−ｍ，Ｈｍ−１＝Ｈ−（ｍ−１），・・・，Ｈ１＝Ｈ−１）。また、第１のフィルタ係数は、その数値列を高速フーリエ変換した結果の周波数−ゲイン特性において振幅が“１”となるように基準化されている。
一方、オリジナルフィルタに単一パルスを入力した場合に出力される数値列が｛Ｈｍ，Ｈｍ−１，・・・，Ｈ１，Ｈ０，Ｈ０，Ｈ−１，・・・，Ｈ−（ｍ−１），Ｈ−ｍ｝（全体の係数の数が偶数個で中央値Ｈ０が２つあり、当該２つの中央値を境として対称型となっている。Ｈｍ＝Ｈ−ｍ，Ｈｍ−１＝Ｈ−（ｍ−１），・・・，Ｈ１＝Ｈ−１）のように表される場合には、上述のような係数演算で調整フィルタを求めるのは難しい。そこで、この数値列の各数値を−ｋ倍（ｋは任意の正数）したものに対してＦＦＴの処理を行った後、その結果得られる数値列の各数値にｋを加算し、その加算の結果得られる数値列を逆ＦＦＴすることによって、第２のフィルタ係数を求める。
周知のように、ある数値列に対してＦＦＴの処理を行うと、その数値列に対応した周波数特性が得られる。したがって、第１のフィルタ係数の数値列を−ｋ倍したもの｛−ｋＨｍ，−ｋＨｍ−１，・・・，−ｋＨ１，−ｋＨ０，−ｋＨ０，−ｋＨ−１，・・・，−ｋＨ−（ｍ−１），−ｋＨ−ｍ｝に対してＦＦＴの処理を行うことにより、オリジナルフィルタの周波数特性をゲイン方向に−ｋ倍したような周波数特性を求めることができる。さらに、このＦＦＴにより得られた数値列にｋを加算することによって、求めた周波数特性を更にゲイン方向にｋだけシフトさせることができる。このようにシフトした周波数特性を表す数値列を逆ＦＦＴし、その実数項を抽出すれば、調整フィルタの周波数特性を実現するのに必要な数値列が得られる。
ただし、逆ＦＦＴにより求められる数値列そのものは、必ずしも調整フィルタのフィルタ係数としてそのまま使える順番には並んでいない。すなわち、どのようなタイプのデジタルフィルタでも、フィルタ係数の数値列は、中央値が最も大きく、中央から離れるに従って振幅を繰り返しながら値が徐々に小さくなるという対称性を持っている。これに対して、調整フィルタの周波数特性から逆ＦＦＴにより求められる数値列は、中央値が最も小さく、両端の値が最も大きくなっている。
そこで、逆ＦＦＴにより求められた数値列の中央値が両端にくるように、数値列を前半部と後半部とに分けてそれらを並べ替える。例えば、５１２個の係数で数値列が構成される場合、１番目の係数を２５７番目の係数に（以下、１→２５７と表記する）、２→２５８、３→２５９、・・・、２５６→５１２、２５７→１、２５８→２、・・・５１２→２５６のように並べ替えることにより、中央値が最大値となり前後対称となるようにする。
このようにして得られた数値列をそのまま調整フィルタのフィルタ係数として決定することも可能であるが、丸め演算を行うことによって、フィルタ係数を必要な数に減らすことが好ましい。ここで行う丸め演算は、数値の或る桁以下を単に丸める（切り捨て、切り上げ、四捨五入など）だけでも良いが、以下のような丸め演算を行うことによって、求められるフィルタ係数の値を簡素化することも可能である。
例えば、並べ替えが行われた後の数値列がｙビットのデータ（絶対値が０以上１以下のデータ）である場合、当該ｙビットのデータを２ｘ倍して小数点以下を丸める処理（切り捨て、切り上げ、四捨五入など）を行うことによってｘビット（ｘ＜ｙ）の整数化されたデータを求め、これをフィルタ係数として利用するようにする。また、ｙビットのデータに対して丸め処理を行うことによってｘビット（ｘ＜ｙ）のデータとし、これを２ｘ倍することによって値を整数化するようにしても良い。
このような整数化の丸め演算を行うと、デジタルフィルタは、図１５に示すように、複数の遅延器（Ｄ型フリップフロップ）６１から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器６２で個別に乗算し、それぞれの乗算出力を複数の加算器６３で全て加算した後に、１つのシフト演算器６４でまとめて１／２ｘ倍するように構成することが可能となる。しかも、整数のフィルタ係数は、２ｉ＋２ｊ＋・・・（ｉ，ｊは任意の整数）のように２進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器６２を構成することができるので、ＦＩＲフィルタ全体として乗算器や加算器などの使用数を大きく削減し、デジタルフィルタの回路規模を大幅に削減することができる。
整数化を伴う丸め演算の他の例として、フィルタ係数の数値列をＮ倍（Ｎは２のべき乗以外の値）して小数点以下を丸める（切り捨て、切り上げ、四捨五入など）ようにしても良い。このようなＮ倍の丸め演算を行った場合、デジタルフィルタは、図１６に示すように、複数の遅延器（Ｄ型フリップフロップ）６１から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器６２で個別に乗算し、それぞれの乗算出力を複数の加算器６３で全て加算した後に、１つの乗算器６５でまとめて１／Ｎ倍するように構成することが可能となる。しかも、整数のフィルタ係数は、２ｉ＋２ｊ＋・・・（ｉ，ｊは任意の整数）のように２進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
また、数値列を２ｘ倍する場合はフィルタ係数に対してビット単位の丸めを実施することができるのに対し、数値列をＮ倍する場合はフィルタ係数に対してビット間の丸めを実施することができる。ビット単位の丸め処理とは、例えば係数値を２ｘ倍して小数点以下を切り捨てる場合には、２ｘ〜２ｘ＋１の範囲に属する数値は全て２ｘに丸めるといったように、係数値を１／２ｘの整数倍とする処理を言う。また、ビット間の丸め処理とは、例えば係数値をＮ倍（例えば、２ｘ−１＜Ｎ＜２ｘ）して小数点以下を切り捨てる場合には、Ｎ〜Ｎ＋１の範囲に属する数値は全てＮに丸めるといったように、係数値を１／Ｎの整数倍とする処理を言う。Ｎ倍の丸め演算を行うことにより、整数化されるフィルタ係数の値を、２のべき乗以外の任意の値に調整することが可能である。このようにすれば、調整フィルタで使用するフィルタ係数の数（タップの数）を微妙に調整することができる。
その他、整数化を伴う丸め演算の例として、ｙビットのフィルタ係数のデータ値が１／２ｘより小さいものは全てゼロとし、当該データ値が１／２ｘ以上のものについては、当該データ値を２ｘ＋Ｘ倍（ｘ＋Ｘ＜ｙ）して小数点以下を丸める（切り捨て、切り上げ、四捨五入など）ようにしても良い。
このような丸め処理を行った場合、デジタルフィルタは、図１７に示すように、複数の遅延器（Ｄ型フリップフロップ）６１から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器６２で個別に乗算し、それぞれの乗算出力を複数の加算器６３で全て加算した後に、１つのシフト演算器６６でまとめて１／２ｘ＋Ｘ倍するように構成することが可能となる。しかも、整数のフィルタ係数は、２ｉ＋２ｊ＋・・・（ｉ，ｊは任意の整数）のように２進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
また、データ値が１／２ｘより小さいものは全てゼロとして切り捨てることによってフィルタ係数の数（タップ数）を大幅に削減できると同時に、ｘビットに比べてビット数が多い（ｘ＋Ｘ）ビットの精度の良いフィルタ係数を求めることができるので、より良好な調整フィルタの周波数特性を得ることもできる。
本実施形態では、このような丸め演算によって求められた数値列を、求める調整フィルタの周波数特性を表す第２のフィルタ係数として決定する。このようにして第２のフィルタ係数を求めたら、第１のフィルタ係数を有するオリジナルフィルタと、第２のフィルタ係数を有する調整フィルタとを縦続接続した場合に得られる第３のフィルタ係数を求める演算を行う（ステップＳ３）。オリジナルフィルタと調整フィルタとを縦続接続することにより、第１のフィルタ係数と第２のフィルタ係数とが乗算・加算されて新しいフィルタ係数が作り出される。そして、これによって生成された第３のフィルタ係数を、求めるフィルタ係数として決定する（ステップＳ４）。
図３は、ステップＳ３における演算内容を説明するための図である。この図３に示すように、ステップＳ３では、第１のフィルタ係数を構成する（２ｍ＋１）個（２ｍ＋１は、第１のフィルタ係数を構成する全数値列の個数を表す）の数値列と、第２のフィルタ係数を構成する（２ｍ＋１）個の数値列との積和演算を行うことによって、第３のフィルタ係数の数値列を求める。
この積和演算では、第２のフィルタ係数については、例えば｛−ｋＨｍ，−ｋＨｍ−１，・・・，−ｋＨ１，−ｋＨ０＋（１＋ｋ），−ｋＨ−１，・・・，−ｋＨ−（ｍ−１），−ｋＨ−ｍ｝の全ての数値列を常に固定的に乗加算の対象とする。一方、第１のフィルタ係数については、｛Ｈｍ，Ｈｍ−１，・・・，Ｈ１，Ｈ０，Ｈ−１，・・・，Ｈ−（ｍ−１），Ｈ−ｍ｝の数値列の前後に０列があるものと仮定し、この０値も含めて（２ｍ＋１）個の数値列を積和演算の対象とする。このとき、第３のフィルタ係数のｎ番目の数値を求める際には、第１のフィルタ係数のｎ番目の数値を含めてそれより前にある（２ｍ＋１）個の数値列を乗加算の対象とする。
例えば、第３のフィルタ係数の１番目の数値を求める際には、第２のフィルタ係数の全ての数値列｛−ｋＨｍ，−ｋＨｍ−１，・・・，−ｋＨ１，−ｋＨ０＋（１＋ｋ），−ｋＨ−１，・・・，−ｋＨ−（ｍ−１），−ｋＨ−ｍ｝（符号３１で示す点線で囲った配列）と、第１のフィルタ係数の１番目の数値を含めてそれより前にある（２ｍ＋１）個の数値列｛０，０，・・・，０，Ｈｍ｝（符号３２で示す点線で囲った配列）とを対象として、配列の対応する要素の積を合計する演算を行う。すなわち、この場合の演算結果は、（Ｈｍ×（−ｋＨ−ｍ））となる。
また、第３のフィルタ係数の２番目の数値を求める際には、第２のフィルタ係数の全ての数値列｛−ｋＨｍ，−ｋＨｍ−１，・・・，−ｋＨ１，−ｋＨ０＋（１＋ｋ），−ｋＨ−１，・・・，−ｋＨ−（ｍ−１），−ｋＨ−ｍ｝（符号３１で示す点線で囲った配列）と、第１のフィルタ係数の２番目の数値を含めてそれより前にある（２ｍ＋１）個の数値列｛０，０，・・・，０，Ｈｍ，Ｈｍ−１｝（符号３３で示す点線で囲った配列）とを対象として、配列の対応する要素の積を合計する演算を行う。すなわち、この場合の演算結果は、（Ｈｍ×（−ｋＨ−ｍ）＋Ｈｍ−１×（−ｋＨ−（ｍ−１）））となる。以下同様にして、第３のフィルタ係数を構成する（２×（２ｍ＋１）−１）個の数値列を求める。
なお、ここでは、オリジナルフィルタに対して１個の調整フィルタを縦続接続する場合を例にとって説明したが、複数の調整フィルタを縦続接続するようにしても良い。この場合は、図１中に点線の矢印で示すように、ステップＳ３で生成した第３のフィルタ係数を新たに第１のフィルタ係数とみなしてステップＳ２に戻る。そして、当該新たな第１のフィルタ係数（オリジナルフィルタに単一パルスを入力した場合に１段目の調整フィルタから出力される数値列に相当）に基づいて、第２のフィルタ係数を再び求める（新しい調整フィルタを生成する）。
さらに、こうして生成した新たな第１のフィルタ係数と新たな第２のフィルタ係数とを積和演算することによって、新しい調整フィルタを更に縦続接続した場合に得られる新たな第３のフィルタ係数を演算する。このような演算を、縦続接続したい調整フィルタの数だけ繰り返し行った後、最終段階のステップＳ３で生成された第３のフィルタ係数を、求めるフィルタ係数として決定する。
図４は、オリジナルフィルタ（バンドパスフィルタ）の周波数振幅特性およびこのオリジナルフィルタに対して１〜３個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。図４において、４１はオリジナルフィルタの周波数振幅特性、４２は調整フィルタを１個縦続接続した場合に得られる周波数振幅特性、４３は調整フィルタを２個縦続接続した場合に得られる周波数振幅特性、４４は調整フィルタを３個縦続接続した場合に得られる周波数振幅特性をそれぞれ示す。
この図４に示すように、オリジナルフィルタに対して本実施形態の調整フィルタを縦続接続することにより、フィルタの通過帯域幅を広げ、かつ、阻止域の傾斜を急峻にすることができる。縦続接続する調整フィルタの数を多くすることにより、通過帯域幅がより広くて傾斜もより急峻なフィルタ特性を得ることができる。
なお、この図４は、第１のフィルタ係数から第２のフィルタ係数を求める際のパラメータｋの値を１．５とした場合の周波数特性を示している。図４に示されるように、ｋ≠１とした場合には、周波数特性の頂部に若干のオーバーシュートやリンギングが生じる。ただし、ｋ＝１とした場合には、周波数特性の頂部にオーバーシュートやリンギングが生じることはなく、平坦な特性となる。
なお、ステップＳ３で求められたフィルタ係数を新たに第１のフィルタ係数とみなす場合、ｋ≠１のときは、新たな第１のフィルタ係数により表される周波数振幅特性には、オーバーシュート等の影響により複数の振幅最大値（極大値）が存在するが（図４の符号４２で表される特性参照）、オーバーシュート等の影響により生まれた振幅最大値ではなく、元々のオリジナルフィルタのみの場合に存在していた振幅最大値（周波数軸方向で中央の振幅値）において接する逆方向周波数振幅特性を実現する第２のフィルタ係数を求める。すなわち、本実施形態において振幅最大値とは、あくまでも、周波数振幅特性において振幅が“１”に基凖化されている場合における振幅の最大値“１”を指す。
図５は、本実施形態の調整フィルタを縦続接続した場合に得られる周波数特性の変化の原理を説明するための図である。なお、この図５は基本原理を説明するためのものであり、図４に示した周波数特性の波形と一致するものではない。この図５は、ｋ＝１とした場合の原理を示している。
図５（ａ）は、オリジナルフィルタに対して１個目の調整フィルタを縦続接続した場合における周波数振幅特性の変化を示す。図５（ａ）において、Ａはオリジナルフィルタの周波数振幅特性、Ｂは当該オリジナルフィルタが有する第１のフィルタ係数から生成した第２のフィルタ係数を有する１個目の調整フィルタの周波数振幅特性、Ｃはオリジナルフィルタと１個目の調整フィルタとを縦続接続した場合に得られる周波数振幅特性を示す。
すなわち、オリジナルフィルタに対して調整フィルタを１個縦続接続した場合の新たな周波数振幅特性Ｃは、オリジナルフィルタの周波数振幅特性Ａと、調整フィルタの周波数振幅特性Ｂとを掛け合わせた形となる。２個目の調整フィルタを更に縦続接続する場合には、このように生成された周波数振幅特性Ｃに対応する第３のフィルタ係数を新たに第１のフィルタ係数として用い、２個目の調整フィルタに関する新たな第２のフィルタ係数を求める。
図５（ｂ）は、２個目の調整フィルタを更に縦続接続した場合における周波数振幅特性の変化を示す。図５（ｂ）において、Ａ’は１個目の調整フィルタを縦続接続した場合の周波数振幅特性であり、図５（ａ）の手順で求められた周波数振幅特性Ｃと同じものである。Ｂ’は当該周波数振幅特性Ａ’に対応する新たな第１のフィルタ係数から生成した新たな第２のフィルタ係数を有する２個目の調整フィルタの周波数振幅特性である。Ｃ’は２個目の調整フィルタを更に縦続接続した場合に得られる新たな周波数振幅特性であり、２つの周波数振幅特性Ａ’，Ｂ’を掛け合わせた形のものとなっている。
ここでは図示しないが、３個目の調整フィルタを更に縦続接続する場合には、図５（ｂ）の手順で生成された新たな周波数振幅特性Ｃ’に対応するフィルタ係数を再び第１のフィルタ係数として用い、３個目の調整フィルタに関する新たな第２のフィルタ係数を求める。そして、上述と同様の手順に従って新たな周波数振幅特性を得る。
このように、オリジナルフィルタに対して複数の調整フィルタを縦続接続することにより、フィルタの通過帯域幅を広げるとともに、阻止域の傾斜を急峻にしていくことができる。ｋ＝１とした場合には、オリジナルフィルタの周波数振幅特性と調整フィルタの周波数振幅特性とは、振幅が“１”のラインを境として線対称となる。したがって、調整フィルタを何個接続しても、掛け合わされた新たなフィルタの周波数振幅特性が振幅“１”のラインを超えることはなく、オーバーシュートやリンギングは発生しない。このことから、ｋの値は“１”とするのが好ましい。
一方、ｋの値を１より大きくすると、多少のオーバーシュートやリンギングは発生するが、１個当たりの調整フィルタの接続で広げられる通過帯域幅の割合を大きくすることができる。したがって、少ない数の調整フィルタで通過帯域幅を効率的に広げたい場合には、ｋの値を大きくするのが良い。この場合において、ｋ≠１として第２のフィルタ係数を求めた調整フィルタを複数段縦続接続した後、最終段にｋ＝１の調整フィルタを接続することによって、通過帯域幅を効率的に広げるとともに、オーバーシュートやリンギングのない良好な周波数特性を得ることができる。
図６は、オリジナルフィルタに対して、ｋ＝１．５の調整フィルタを３段縦続接続するとともに、最終段にｋ＝１の調整フィルタを更に縦続接続した場合に得られる周波数特性を示す図である。この図６から分かるように、最終段にｋ＝１の調整フィルタを接続すれば、通過帯域幅が広く、阻止域の傾斜が急峻で、かつ、頂部が平坦な良好な周波数特性を得ることができる。また、フィルタ係数は対称型なので、位相の直線性も確保できる。また、ｋ＜１としてｋの値を調整することにより、通過周波数帯域幅を微調整することが可能である。
なお、以上ではバンドパスフィルタの設計例について説明したが、ローパスフィルタやハイパスフィルタなども同様の手順で設計することができる。図７は、オリジナルのローパスフィルタの周波数振幅特性およびこのオリジナルローパスフィルタに対して１〜５個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。この図７は、ｋ＝１とした場合の周波数特性を示している。
図７において、５１はオリジナルローパスフィルタの周波数振幅特性、５２〜５６はそれぞれ調整フィルタを１個〜５個縦続接続した場合に得られる周波数振幅特性を示す。この図７に示すように、ローパスフィルタの場合も図４のバンドパスフィルタと同様に、調整フィルタを縦続接続することによってフィルタの通過帯域幅を広げ、かつ、阻止域の傾斜を急峻にすることができる。また、縦続接続する調整フィルタの数を多くすることにより、通過帯域幅がより広くて傾斜もより急峻なフィルタ特性を得ることができる。
以上に説明した本実施形態によるフィルタ設計法を実現するための装置は、ハードウェア構成、ＤＳＰ、ソフトウェアの何れによっても実現することが可能である。例えばソフトウェアによって実現する場合、本実施形態のフィルタ設計装置は、実際にはコンピュータのＣＰＵあるいはＭＰＵ、ＲＡＭ、ＲＯＭなどで構成され、ＲＡＭやＲＯＭあるいはハードディスク等に記憶されたプログラムが動作することによって実現できる。
例えば、第２または第３の設計法に関する各種の基本フィルタのフィルタ係数をデータとしてＲＡＭやＲＯＭ、ハードディスク等の記憶装置に記憶しておく。そして、ユーザが基本フィルタに関する任意の組み合わせと接続順などを指示すると、ＣＰＵが、上記記憶装置に記憶されているフィルタ係数のデータを用いて、指示された内容に対応するオリジナルフィルタの第１のフィルタ係数を求める。
さらに、ユーザが調整フィルタに関するパラメータｋと調整フィルタの縦続接続数を指示入力すると、ＣＰＵが、第１のフィルタ係数から第２のフィルタ係数を求め、更に第２のフィルタ係数から第３のフィルタ係数を求めるようにすることが可能である。この場合、記憶装置が本発明のフィルタ係数記憶手段に相当し、ＣＰＵが本発明の演算手段に相当する。
ユーザが各基本フィルタに関する組み合わせと接続順、調整フィルタに関するパラメータｋ、調整フィルタの縦続接続数などを指示する際のユーザインタフェースは、任意に構成することが可能である。例えば、基本フィルタのタイプを画面表示された一覧表からキーボードやマウスの操作によって選択できるようにするとともに、各種パラメータの値をキーボードやマウスの操作によって入力できるようにする。ＣＰＵは、このようにして入力された情報を取得し、その入力情報により指示された内容に対応するフィルタ係数を上述した演算により求める。
また、各種の基本フィルタをアイコン化してディスプレイ画面上に表示するようにし（各アイコンに対応してフィルタ係数をデータとして記憶装置に記憶している）、ユーザがこれらのアイコンをキーボードやマウスの操作によりディスプレイ画面上で任意に組み合わせて配置する。また、その他の必要なパラメータはキーボードやマウスの操作によって入力する。そして、ＣＰＵがアイコンの配列や入力パラメータに対応するフィルタ係数を自動的に演算して求めるようにしても良い。
また、パーソナルコンピュータ等にインストールされている表計算ソフトの関数機能などを利用して、第１のフィルタ係数、第２のフィルタ係数、第３のフィルタ係数を順に求める演算を行うようにすることも可能である。この場合の演算は、実際には、表計算ソフトがインストールされているパーソナルコンピュータ等のＣＰＵ、ＲＯＭ、ＲＡＭなどによって行われる。
また、求めたフィルタ係数を自動的にＦＦＴ変換し、その結果を周波数−ゲイン特性図としてディスプレイ画面に表示するようにしても良い。このようにすれば、設計したフィルタの周波数特性を視覚的に確認することができ、フィルタ設計をより容易に行うことができる。
このようなフィルタ設計装置は、コンピュータが上記本実施形態の機能を果たすように動作させるプログラムを例えばＣＤ−ＲＯＭのような記録媒体に記録し、これをコンピュータに読み込ませることによって実現できるものである。上記プログラムを記録する記録媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、ハードディスク、磁気テープ、光ディスク、光磁気ディスク、ＤＶＤ、不揮発性メモリカード等を用いることができる。また、上記プログラムをインターネット等のネットワークを介してコンピュータにダウンロードすることによっても実現できる。
なお、コンピュータが供給されたプログラムを実行することにより上述の実施形態の機能が実現されるだけでなく、そのプログラムがコンピュータにおいて稼働しているＯＳ（オペレーティングシステム）あるいは他のアプリケーションソフト等と共同して上述の実施形態の機能が実現される場合や、供給されたプログラムの処理の全てあるいは一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて上述の実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。
次に、本実施形態によるデジタルフィルタの構成について説明する。図８は、本実施形態によるデジタルフィルタの一構成例を示す図である。図８に示すデジタルフィルタは、１個のオリジナルフィルタ１０と１個の調整フィルタ２０とを縦続接続して構成されている。オリジナルフィルタ１０は、縦続接続されたｉ個のＤ型フリップフロップ１１−１〜１１−ｉと、（ｉ＋１）個の係数器１２−１〜１２−（ｉ＋１）と、ｉ個の加算器１３−１〜１３−ｉとにより構成される。
ｉ個のＤ型フリップフロップ１１−１〜１１−ｉは、入力データを１クロックＣＫずつ順次遅延させる。（ｉ＋１）個の係数器１２−１〜１２−（ｉ＋１）は、各Ｄ型フリップフロップ１１−１〜１１−ｉの入出力タップから取り出した信号に対し、対称型の第１のフィルタ係数をそれぞれ乗算する。ｉ個の加算器１３−１〜１３−ｉは、各係数器１２−１〜１２−（ｉ＋１）での乗算結果を全て加算して出力する。
オリジナルフィルタ１０から出力されたデータは、調整フィルタ２０に入力されるとともに、フィルタ係数演算部３０に入力される。フィルタ係数演算部３０は、オリジナルフィルタ１０からの出力データをもとに、調整フィルタ２０に設定する第２のフィルタ係数を演算する。
すなわち、オリジナルフィルタ１０に単一パルスを入力したときに当該オリジナルフィルタ１０から出力されるデータ列を｛Ｈｍ，Ｈｍ−１，・・・，Ｈ１，Ｈ０，Ｈ−１，・・・，Ｈ−（ｍ−１），Ｈ−ｍ｝とすると、フィルタ係数演算部３０は、｛−ｋＨｍ，−ｋＨｍ−１，・・・，−ｋＨ１，−ｋＨ０＋（１＋ｋ），−ｋＨ−１，・・・，−ｋＨ−（ｍ−１），−ｋＨ−ｍ｝（ｋは任意に設定した正数）なる演算によって第２のフィルタ係数を求める。そして、求めた第２のフィルタ係数を、調整フィルタ２０内の（ｊ＋１）個の係数器２２−１〜２２−（ｊ＋１）にそれぞれ設定する。
調整フィルタ２０は、縦続接続されたｊ個（ｊ＞ｉ）のＤ型フリップフロップ２１−１〜２２−ｊと、（ｊ＋１）個の係数器２２−１〜２２−（ｊ＋１）と、ｊ個の加算器２３−１〜２３−ｊとにより構成される。ｊ個のＤ型フリップフロップ２１−１〜２１−ｊは、オリジナルフィルタ１０からの入力データを１クロックＣＫずつ順次遅延させる。（ｊ＋１）個の係数器２２−１〜２２−（ｊ＋１）は、各Ｄ型フリップフロップ２１−１〜２１−ｊの入出力タップから取り出した信号に対し、対称型の第２のフィルタ係数をそれぞれ乗算する。ｊ個の加算器２３−１〜２３−ｊは、各係数器２２−１〜２２−（ｊ＋１）での乗算結果を全て加算して出力する。
なお、調整フィルタ２０のフィルタ係数を求めるときに、上述した整数化を伴う丸め演算を行ったときには、調整フィルタ２０を図１５〜図１７の何れかのように構成することが可能である。また、オリジナルフィルタ１０についても同様に整数化を伴う丸め演算を行うことにより、図１５〜図１７の何れかのように構成することが可能である。
ここでは、オリジナルフィルタ１０に対して調整フィルタ２０を１個だけ縦続接続する構成例について示したが、２個以上の調整フィルタ２０を縦続接続する場合には、図８に示した構成の後段にフィルタ係数演算部３０および調整フィルタ２０と同様の構成を複数接続していけば良い（ただし、調整フィルタに必要な係数の数は、後段にいくほど増えていく）。
また、図８のようにオリジナルフィルタ１０と調整フィルタ２０とを縦続接続する形ではなく、単に複数のＤ型フリップフロップと複数の係数器と複数の加算器とにより１つのデジタルフィルタを構成し、図１のような手順で求めた最終的なフィルタ係数を、当該デジタルフィルタ内の複数の係数器に設定する形で構成するようにしても良い。
上述のように、本実施形態のフィルタ設計法によれば、調整フィルタの縦続数を増やすと、後段の調整フィルタに必要なフィルタ係数の数は増えていく。したがって、デジタルフィルタ全体でのタップ数を少なくするためには、大元となるオリジナルフィルタで使用するフィルタ係数の数をできるだけ少なくしておくのが好ましい。この点に関し、本発明者が既に出願した特願２００３−５６２６５号に係る第３の設計法によれば、非常に少ないタップ数で良好な周波数特性を有するオリジナルフィルタを構成することが可能である。以下に、この第３の設計法に関する特願２００３−５６２６５号（ＷＯ２００４／０７９９０５号公報）の内容を抜粋して説明する。なお、以下の説明においてｍ，ｉ，ｊ，ｘ等のパラメータを用いるが、上述したものとは意味が全く異なるものである。
既出願に係る第３の設計法では、特定のインパルス応答を有する数種類の基本フィルタ群を定義し、それらを任意に縦続接続するハードウェアの形で所望の周波数特性を有するＦＩＲフィルタを実現する。基本フィルタは、基本ローパスフィルタ、基本ハイパスフィルタ、基本バンドパスフィルタの３種類に大きく分類される。以下、これらの基本フィルタについて説明する。
＜基本ローパスフィルタＬｍａｎ（ｍ，ｎは変数で、ｍは任意の数、ｎは自然数）＞
基本ローパスフィルタＬｍａｎは、“−１，ｍ，−１”の数値列をフィルタ係数とするＦＩＲ演算部と、ＦＩＲ演算部より出力される数値列に対して移動平均演算を順次行っていく移動平均演算部とを備えて構成される。移動平均演算部は、現在の数値列とこれを１サンプル（１クロック）ずらした数値列とを重み付け加算するといった移動平均演算（重みの合計値は“１”）を行い、これによって得られた数値列に対して同様の移動平均演算を再度行うといったように、元の数値列“−１，ｍ，−１”に対して移動平均演算を順次行っていく。
図９は、基本ローパスフィルタＬ４ａｎ（ｍ＝４とした場合）のフィルタ係数（ＦＩＲ演算部が持つフィルタ係数の数値列を移動平均演算部で移動平均演算したときに得られる数値列）を示す図である。なお、図９に示すフィルタ係数の数値列は“１”に基準化されておらず、説明を分かりやすくするために値を整数化して示している。
図９において、移動平均演算によってｎ列目の上からｊ番目のフィルタ係数を求める際には、（ｎ−１）列目のデータ列のうち上からｊ番目のデータと、これを１サンプル（１クロック）ずらしたデータ列の上からｊ番目のデータとを重み付け加算する。
例えば、基本ローパスフィルタＬ４ａ１（１列目）の上から１番目の数値“−１”は、０列目の１番目の元データ“−１”とその１サンプル前の前データ“０”とを加算することによって得られ、２番目の数値“３”は、０列目の２番目の元データ“４”とその１サンプル前の前データ“−１”とを加算することによって得られる。また、３番目の数値“３”は、０列目の３番目の元データ“−１”とその１サンプル前の前データ“４”とを加算することによって得られ、４番目の数値“−１”は、０列目の４番目の元データ“０”とその１サンプル前の前データ“−１”とを加算することによって得られる。なお、図９では数値を整数にて分かりやすく示すために、重み演算は省略している。
図９に示す基本ローパスフィルタＬ４ａｎの何れのフィルタ係数も、その数値列は対称型であり、数値列の１つ飛びの合計値が同符号で互いに等しくなるという性質を持っている（例えば基本ローパスフィルタＬ４ａ４の場合、−１＋９＋９＋（−１）＝１６，０＋１６＋０＝１６）。
これらの数値列を実際にフィルタ係数として使用する場合は、フィルタ係数の数値列をＦＦＴ変換した場合の振幅が“１”となるようにして、ゲインを“１”に基準化する。例えば、ＦＩＲ演算部で実際に使用するフィルタ係数の数値列は、“−１，４，−１”ではなく“−１／２，２，−１／２”となる。また、移動平均演算後のオリジナルフィルタのフィルタ係数（第１のフィルタ係数）として実際に使用する数値列は、例えば｛−１，０，９，１６，９，０，−１｝ではなく｛−１，０，９，１６，９，０，−１｝／３２である。
このように基準化した数値列をフィルタ係数として使用した場合、基本ローパスフィルタＬｍａｎのフィルタ係数は、何れもその数値列の総和が“１”で、数値列の１つ飛びの合計値が同符号で互いに等しくなるという性質を持つ。
図１０は、基本ローパスフィルタＬ４ａ４（ｍ＝４，ｎ＝４とした場合）のハードウェア構成を示す図である。図１０に示すように、出発点となる数値列“−１／２，２，−１／２”をフィルタ係数として持つＦＩＲ演算部１０１は、縦続接続された２個のＤ型フリップフロップ１−１〜１−２と、３個の係数器２−１〜２−３と、２個の減算器３−１〜３−２とにより構成される。
２個のＤ型フリップフロップ１−１〜１−２は、入力データを１クロックＣＫずつ順次遅延させる。３個の係数器２−１〜２−３は、各Ｄ型フリップフロップ１−１〜１−２の入出力タップから取り出した信号に対し、１／２，２，１／２のフィルタ係数をそれぞれ乗算する。第１の減算器３−１は、第２の係数器２−２の乗算結果から第１の係数器２−１の乗算結果を減算する。また、第２の減算器３−２は、第１の減算器３−１の減算結果から第３の係数器２−３の乗算結果を減算する。
また、上述の数値列“−１／２，２，−１／２”を移動平均演算する移動平均演算部２０１は、何れも同様に構成された４個の積分器４−１〜４−４を縦続接続することによって構成される。例えば１段目の積分器４−１は、入力データを１クロック分遅延させるＤ型フリップフロップ５−１と、当該Ｄ型フリップフロップ５−１を通らない元データとＤ型フリップフロップ５−１を通って遅延を受けた前データとを加算する加算器６−１と、加算結果の振幅を元に戻す（重み付けをする）ための調整器７−１とにより構成される。
この図１０に示す基本ローパスフィルタＬ４ａ４の構成では、フィルタ係数の乗算が行われる係数器２−１〜２−３およびその係数器２−１〜２−３へのデータの取出口である出力タップが必要なのは、初段のＦＩＲ演算部１０１だけである。しかも、その数はわずか３個である。
さらに、フィルタ係数の値は１／２，２，１／２であるので、係数器２−１〜２−３はビットシフト回路で構成することが可能である。また、４個の積分器４−１〜４−４が備える調整器７−１〜７−４もビットシフト回路で構成することが可能である。ｎの値を４以外として調整器の数が変わっても、その調整器は全てビットシフト回路で構成できる。よって、基本ローパスフィルタＬ４ａｎのハードウェア構成において、乗算器は全く不要である。
なお、ここではｍ＝４の場合について説明したが、ｍ＝２ｉ（ｉは整数）であれば、全ての係数器と調整器とをビットシフト回路で構成することが可能であり、乗算器は必要でない。
図１１は、基本ローパスフィルタＬ４ａ４のフィルタ係数の数値列をＦＦＴ変換して得られる周波数特性（周波数−ゲイン特性および周波数−位相特性）を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを３２倍して示している。一方、周波数は“１”で基準化している。
この図１１から分かるように、周波数−ゲイン特性は通過域がほぼ平坦で、阻止域の傾斜がなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、図１０のように構成するだけで、オーバーシュートやリンギングも存在しない良好な周波数特性を持つローパスフィルタを得ることができる。
図１２は、基本ローパスフィルタＬ４ａｎのｎをパラメータとした周波数−ゲイン特性を示す図であり、（ａ）はゲインを直線目盛りで表し、（ｂ）はゲインを対数目盛りで表している。この図１２より、ｎの値が大きくなるほど阻止域の傾斜が急峻になり、通過域のバンド幅は狭くなる。また、ｎの値が小さいときは、周波数特性の頂部は両端が盛り上がる。ｎの値が大きくなるに従って頂部は徐々に平坦に近づき、ｎ＝４で完全に平坦になる。ｎの値がそれより大きくなると、今度は頂部の両端が中央値より低くなっていく。
なお、ここではｍ＝４とした場合の周波数特性を示しているが、ｍの値を小さくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。以上のことから、パラメータｍ，ｎの値を適当に設定することにより、基本ローパスフィルタＬｍａｎの周波数特性を調整することができる。
＜基本ハイパスフィルタＨｍｓｎ（ｍ，ｎは変数で、ｍは任意の数、ｎは自然数）＞
基本ハイパスフィルタＨｍｓｎは、“１，ｍ，１”の数値列をフィルタ係数とするＦＩＲ演算部と、このＦＩＲ演算部より出力される数値列に対して移動平均演算を順次行っていく移動平均演算部とを備えて構成される。この場合の移動平均演算部は、現在の数値列とこれを１サンプル（１クロック）ずらして符号反転した数値列とを重み付け加算するといった移動平均演算（重みの合計値は“１”）を行い、これによって得られた数値列に対して同様の移動平均演算を再度行うといったように、元の数値列“１，ｍ，１”に対して移動平均演算を順次行っていく。
図１３は、基本ハイパスフィルタＨ４ｓｎ（ｍ＝４とした場合）のフィルタ係数（ＦＩＲ演算部が持つフィルタ係数の数値列を移動平均演算部で移動平均演算したときに得られる数値列）を示す図である。なお、図１３に示すフィルタ係数の数値列は“１”に基準化されておらず、説明を分かりやすくするために値を整数化して示している。
図１３において、移動平均演算によってｎ列目の上からｊ番目のフィルタ係数を求める際には、（ｎ−１）列目のデータ列のうち上からｊ番目のデータと、これを１サンプル（１クロック）ずらして符号反転したデータ列の上からｊ番目のデータとを重み付け加算する。
例えば、基本ハイパスフィルタＨ４ｓ１（１列目）の上から１番目の数値“１”は、０列目の１番目の元データ“１”からその１サンプル前の前データ“０”を減算することによって得られ、２番目の数値“３”は、０列目の２番目の元データ“４”からその１サンプル前の前データ“１”を減算することによって得られる。また、３番目の数値“−３”は、０列目の３番目の元データ“１”からその１サンプル前の前データ“４”を減算することによって得られ、４番目の数値“−１”は、０列目の４番目の元データ“０”からその１サンプル前の前データ“１”を減算することによって得られる。なお、図１３では数値を整数にて分かりやすく示すために、重み演算は省略している。
図１３に示す基本ハイパスフィルタＨ４ｓｎにおいて、ｎが偶数のときは何れのフィルタ係数も、その数値列は対称型であり、数値列の１つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている（例えば基本ハイパスフィルタＨ４ｓ４の場合、１＋（−９）＋（−９）＋１＝−１６，０＋１６＋０＝１６）。ｎが奇数のときは、その数値列は絶対値が対称型となっており、前半の数値列と後半の数値列とは逆符号になる。また、数値列の１つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている。
これらの数値列を実際にフィルタ係数として使用する場合は、フィルタ係数の数値列をＦＦＴ変換した場合の振幅が“１”となるようにして、ゲインを“１”に基準化する。例えば、ＦＩＲ演算部で実際に使用するフィルタ係数の数値列は、“１，４，１”ではなく“１／２，２，１／２”となる。また、移動平均演算後のオリジナルフィルタのフィルタ係数（第１のフィルタ係数）として実際に使用する数値列は、例えば｛１，０，−９，１６，−９，０，１｝ではなく｛１，０，−９，１６，−９，０，１｝／３２である。
このように基準化した数値列をフィルタ係数として使用した場合、基本ハイパスフィルタＨｍｓｎのフィルタ係数は、何れもその数値列の総和が“０”で、数値列の１つ飛びの合計値が逆符号で互いに等しくなるという性質を持つ。
ここでは、基本ハイパスフィルタＨｍｓｎのハードウェア構成については図示を省略するが、図１０と同様に構成される。すなわち、出発点となる数値列“１／２，２，１／２”をフィルタ係数として持つＦＩＲ演算部と、この数値列を移動平均演算する移動平均演算部とにより構成される。この基本ハイパスフィルタＨｍｓｎのハードウェア構成においても、出力タップが必要なのは初段のＦＩＲ演算部だけでめり、タップ数はわずかである。また、乗算器は全く不要である。
基本ハイパスフィルタＨｍｓｎの周波数特性についても図示を省略するが、基本ローパスフィルタＬｍａｎと同様に、周波数−ゲイン特性は通過域がほぼ平坦で、阻止域の傾斜がなだらかな特性となる。また、周波数−位相特性では直線的な特性も得られる。すなわち、オーバーシュートやリンギングも存在しない良好な周波数特性を持つハイパスフィルタを得ることができる。ここで、ｎの値が大きくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。また、ｍの値を小さくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。
＜基本バンドパスフィルタＢｍｓｎ（ｍ，ｎは変数で、ｍは任意の数、ｎは自然数）＞
基本バンドパスフィルタＢｍｓｎは、“１，０，ｍ，０，１”の数値列をフィルタ係数とするＦＩＲ演算部と、このＦＩＲ演算部より出力される数値列に対して移動平均演算を順次行っていく移動平均演算部とを備えて構成される。この場合の移動平均演算部は、現在の数値列とこれを２サンプル（２クロック）ずらして符号反転した数値列とを重み付け加算するといった移動平均演算（重みの合計値は“１”）を行い、これによって得られた数値列に対して同様の移動平均演算を再度行うといったように、元の数値列“１，０，ｍ，０，１”に対して移動平均演算を順次行っていく。
図１４は、基本バンドパスフィルタＢ４ｓｎ（ｍ＝４とした場合）のフィルタ係数（ＦＩＲ演算部が持つフィルタ係数の数値列を移動平均演算部で移動平均演算したときに得られる数直列）を示す図である。なお、図１４に示すフィルタ係数の数値列は“１”に基準化されておらず、説明を分かりやすくするために値を整数化して示している。
図１４において、移動平均演算によってｎ列目の上からｊ番目のフィルタ係数を求める際には、（ｎ−１）列目のデータ列のうち上からｊ番目のデータと、これを２サンプル（２クロック）ずらして符号反転したデータ列の上からｊ番目のデータとを重み付け加算する。
例えば、基本バンドパスフィルタＢ４ｓ１（１列目）の上から１番目の数値“１”は、０列目の１番目の元データ“１”からその２サンプル前の前データ“０”を減算することによって得られ、３番目の数値“３”は、０列目の３番目の元データ“４”からその２サンプル前の前データ“１”を減算することによって得られる。また、５番目の数値“−３”は、０列目の５番目の元データ“１”からその２サンプル前の前データ“４”を減算することによって得られ、７番目の数値“−１”は、０列目の７番目の元データ“０”からその２サンプル前の前データ“１”を減算することによって得られる。なお、図１４では数値を整数にて分かりやすく示すために、重み演算は省略している。
図１４に示す基本バンドパスフィルタＢ４ｓｎにおいて、ｎが偶数とのきは何れのフィルタ係数も、その数値列は対称型であり、数値列の３つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている（例えば基本バンドパスフィルタＢ４ｓ４の場合、１＋（−９）＋（−９）＋１＝−１６，０＋１６＋０＝１６）。ｎが奇数のときは、その数値列は絶対値が対称型となっており、前半の数値列と後半の数値列とは逆符号になる。また、数値列の３つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている。
これらの数値列を実際にフィルタ係数として使用する場合は、フィルタ係数の数値列をＦＦＴ変換した場合の振幅が“１”となるようにして、ゲインを“１”に基準化する。例えば、ＦＩＲ演算部で実際に使用するフィルタ係数の数値列は、“１，０，４，０，１”ではなく“１／２，０，２，０，１／２”となる。また、移動平均演算後のオリジナルフィルタのフィルタ係数（第１のフィルタ係数）として実際に使用する数値列は、例えば｛１，０，０，０，−９，０，１６，０，−９，０，０，０，１｝ではなく｛１，０，０，０，−９，０，１６，０，−９，０，０，０，１｝／３２である。
このように基準化した数値列をフィルタ係数として使用した場合、基本バンドパスフィルタＢｍｓｎのフィルタ係数は、何れもその数値列の総和が“０”で、数値列の３つ飛びの合計値が逆符号で互いに等しくなるという性質を持つ。
ここでは、基本バンドパスフィルタＢｍｓｎのハードウェア構成については図示を省略するが、図１０と同様に構成される。すなわち、出発点となる数値列“１／２，０，２，０，１／２”をフィルタ係数として持つＦＩＲ演算部と、この数値列を移動平均演算する移動平均演算部とにより構成される。この基本バンドパスフィルタＢｍｓｎのハードウェア構成においても、出力タップが必要なのは初段のＦＩＲ演算部だけであり、タップ数はわずかである。また、乗算器は全く不要である。
基本バンドパスフィルタＢｍｓｎの周波数特性についても図示を省略するが、基本ローパスフィルタＬｍａｎや基本ハイパスフィルタＨｍｓｎと同様に、周波数−ゲイン特性は通過域がほぼ平坦で、阻止域の傾斜がなだらかな特性となる。また、周波数−位相特性では直線的な特性も得られる。すなわち、オーバーシュートやリンギングも存在しない良好な周波数特性を持つバンドパスフィルタを得ることができる。ここで、ｎの値が大きくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。また、ｍの値を小さくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。
以上に示した３種類の基本フィルタＬｍａｎ，Ｈｍｓｎ，Ｂｍｓｎのインパルス応答をとると、何れも、時間軸に沿った標本位置が一定の間にあるときにのみ“０”以外の有限な値を有し、それ以外の領域では値が全て“０”となる関数、つまり所定の標本位置において値が“０”に収束する関数となる。このように、関数の値が局所的な領域で“０”以外の有限の値を有し、それ以外の領域で“０”となる場合を「有限台」と称する。
このような有限台のインパルス応答では、“０”以外の有限の値を有する局所的な領域内のデータだけが意味を持つ。この領域外のデータについては、本来これを考慮すべきであるのに無視している訳ではなく、理論的に考慮する必要がないため、打ち切り誤差は発生しない。したがって、上記３種類の基本フィルタＬｍａｎ，Ｈｍｓｎ，Ｂｍｓｎを用いれば、窓関数を用いて係数の打ち切りを行う必要もなく、良好なフィルタ特性を得ることができる。
以上詳しく説明したように、本実施形態では、数値列が対称型の第１のフィルタ係数を有するオリジナルフィルタと、オリジナルフィルタの周波数振幅特性と振幅最大値において接する逆方向周波数振幅特性を実現する第２のフィルタ係数を有する調整フィルタとを縦続接続することによってフィルタ設計を行うようにしたので、窓関数や近似式を用いることなく、通過帯域幅が比較的広くて阻止域の傾斜が急峻な、理想的な周波数特性を有するＦＩＲデジタルフィルタを簡易的に設計することができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【産業上の利用可能性】  本発明は、複数の遅延器から成るタップ付き遅延線を備え、各タップの出力信号をそれぞれフィルタ係数により数倍した後、それらの乗算結果を加算して出力するタイプのＦＩＲデジタルフィルタおよびその設計法に有用である。
【図１】
2006048958.tif 000002
【図２】
2006048958.tif 000003
【図３】
2006048958.tif 000004
【図４】
2006048958.tif 000005
【図５】
2006048958.tif 000006
【図６】
2006048958.tif 000007
【図７】
2006048958.tif 000008
【図８】
2006048958.tif 000009
【図９】
2006048958.tif 000010
【図１０】
2006048958.tif 000011
【図１１】
2006048958.tif 000012
【図１２】
2006048958.tif 000013
【図１３】
2006048958.tif 000014
【図１４】
2006048958.tif 000015
【図１５】
2006048958.tif 000016
【図１６】
2006048958.tif 000017
【図１７】
2006048958.tif 000018
【国際調査報告】
2006048958.tif 000019
2006048958.tif 000020
2006048958.tif 000021