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