JPWO2004102800A1 - デジタルフィルタおよびその設計方法、設計装置、デジタルフィルタ設計用プログラム - Google Patents
デジタルフィルタおよびその設計方法、設計装置、デジタルフィルタ設計用プログラム Download PDFInfo
- Publication number
- JPWO2004102800A1 JPWO2004102800A1 JP2005506147A JP2005506147A JPWO2004102800A1 JP WO2004102800 A1 JPWO2004102800 A1 JP WO2004102800A1 JP 2005506147 A JP2005506147 A JP 2005506147A JP 2005506147 A JP2005506147 A JP 2005506147A JP WO2004102800 A1 JPWO2004102800 A1 JP WO2004102800A1
- Authority
- JP
- Japan
- Prior art keywords
- filter
- filter coefficient
- coefficient
- digital
- original
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H17/02—Frequency selective networks
- H03H17/06—Non-recursive filters
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Filters That Use Time-Delay Elements (AREA)
- Picture Signal Circuits (AREA)
- Tone Control, Compression And Expansion, Limiting Amplitude (AREA)
Abstract
数値列が対称型の第1のフィルタ係数を有するオリジナルフィルタと、オリジナルフィルタの周波数振幅特性Aにおいて極大値をとる位置に接点を有し、当該接点において極小値をとる周波数振幅特性Bを実現する対称型の第2のフィルタ係数を有する調整フィルタとを縦続接続し、第1のフィルタ係数と第2のフィルタ係数との畳み込み演算によって、求めるフィルタ係数の設計を行うようにする。
Description
本発明はデジタルフィルタおよびその設計方法、設計装置、デジタルフィルタ設計用プログラムに関し、特に、FIRフィルタの設計法に関するものである。
デジタルフィルタの1つの形態として、FIR(Finite Impulse Response:有限長インパルス応答)フィルタが存在する。このFIRフィルタは、複数の遅延器から成るタップ付き遅延線を備え、各タップの出力信号をそれぞれフィルタ係数により数倍した後、それらの乗算結果を加算して出力するタイプのフィルタであり、次のような利点を持つ。第1に、FIRフィルタの伝達関数の極はz平面の原点のみにあるため、回路は常に安定である。第2に、フィルタ係数が対称型であれば、完全に正確な直線位相特性を実現することができる。
このFIRフィルタは、有限時間長で表されるインパルス応答がそのままフィルタ係数となっている。したがって、FIRフィルタを設計するということは、希望の周波数特性が得られるようにフィルタ係数を決定するということである。従来、FIRフィルタを設計する際には、目標とする周波数特性に基づきフィルタ係数を算出し、これに窓掛けを行って有限個の係数群を得る。そして、得られた係数群をFFT(高速フーリエ変換)することによって周波数特性に変換し、これが目標の特性を満足しているか否かを確認する方法で設計していた。
目標とする周波数特性からフィルタ係数を算出する際には、例えば、サンプリング周波数とカットオフ周波数との比率をもとに、チェビシェフ近似法を用いた畳み込み演算等を行っていた。これにより求められる係数の数は膨大となり、その係数を全て使用すると、フィルタ回路のタップ数や乗算器が非常に多くなってしまい、現実的でない。そのため、畳み込み演算により求めたフィルタ係数の数を窓掛けによって実用上耐えうる程度に減らしていた。
しかしながら、従来の設計法で得られるFIRフィルタの周波数特性は、窓関数や近似式に依存するので、これらをうまく設定しないと、目標とする良好な周波数特性を得ることができない。ところが、窓関数や近似式を適当に設定することは、一般に困難である。また、フィルタ係数の数を減らすために窓掛けをすると、周波数特性に係数の打ち切り誤差が発生するため、所望の周波数特性を実現するのが困難となる。特に、阻止域(通過域と遮断域との間の帯域)の傾斜が急峻となっている理想的な周波数特性を得ることは極めて難しいという問題があった。
また、従来のフィルタ設計法で所望の周波数特性を得るためには、求めたフィルタ係数をFFTしてその周波数特性を確認しながらの試行錯誤が必要であった。したがって、従来は熟練した技術者が時間と手間をかけて設計する必要があり、所望特性のFIRフィルタを容易には設計できないという問題があった。
なお、上述の従来法によって生成したFIRフィルタを複数段縦続接続することによって急峻な周波数特性を実現する方法が知られている(例えば、特開平5−243908号公報参照)。また、タップ付き遅延線の各タップ間(各フィルタ係数間)に複数のゼロ値を挿入することによってフィルタバンク帯域を調整する方法も知られている(例えば、特表平6−503450号公報参照)。しかしながら、これら何れの方法も、調整前に比べてフィルタの通過帯域は狭くなる方向に働き、通過帯域のバンド幅を広げて傾斜を急峻にすることはできなかった。
このFIRフィルタは、有限時間長で表されるインパルス応答がそのままフィルタ係数となっている。したがって、FIRフィルタを設計するということは、希望の周波数特性が得られるようにフィルタ係数を決定するということである。従来、FIRフィルタを設計する際には、目標とする周波数特性に基づきフィルタ係数を算出し、これに窓掛けを行って有限個の係数群を得る。そして、得られた係数群をFFT(高速フーリエ変換)することによって周波数特性に変換し、これが目標の特性を満足しているか否かを確認する方法で設計していた。
目標とする周波数特性からフィルタ係数を算出する際には、例えば、サンプリング周波数とカットオフ周波数との比率をもとに、チェビシェフ近似法を用いた畳み込み演算等を行っていた。これにより求められる係数の数は膨大となり、その係数を全て使用すると、フィルタ回路のタップ数や乗算器が非常に多くなってしまい、現実的でない。そのため、畳み込み演算により求めたフィルタ係数の数を窓掛けによって実用上耐えうる程度に減らしていた。
しかしながら、従来の設計法で得られるFIRフィルタの周波数特性は、窓関数や近似式に依存するので、これらをうまく設定しないと、目標とする良好な周波数特性を得ることができない。ところが、窓関数や近似式を適当に設定することは、一般に困難である。また、フィルタ係数の数を減らすために窓掛けをすると、周波数特性に係数の打ち切り誤差が発生するため、所望の周波数特性を実現するのが困難となる。特に、阻止域(通過域と遮断域との間の帯域)の傾斜が急峻となっている理想的な周波数特性を得ることは極めて難しいという問題があった。
また、従来のフィルタ設計法で所望の周波数特性を得るためには、求めたフィルタ係数をFFTしてその周波数特性を確認しながらの試行錯誤が必要であった。したがって、従来は熟練した技術者が時間と手間をかけて設計する必要があり、所望特性のFIRフィルタを容易には設計できないという問題があった。
なお、上述の従来法によって生成したFIRフィルタを複数段縦続接続することによって急峻な周波数特性を実現する方法が知られている(例えば、特開平5−243908号公報参照)。また、タップ付き遅延線の各タップ間(各フィルタ係数間)に複数のゼロ値を挿入することによってフィルタバンク帯域を調整する方法も知られている(例えば、特表平6−503450号公報参照)。しかしながら、これら何れの方法も、調整前に比べてフィルタの通過帯域は狭くなる方向に働き、通過帯域のバンド幅を広げて傾斜を急峻にすることはできなかった。
本発明は、このような問題を解決するために成されたものであり、周波数特性のバンド幅を広げて傾斜を急峻にする簡易的なフィルタ設計法および、傾斜が急峻な理想的な周波数特性を有するFIRデジタルフィルタを新たに提供することを目的とする。
上記の課題を解決するために、本発明によるデジタルフィルタの設計方法は、数値列が対称型の第1のフィルタ係数を生成する第1のステップと、上記第1のフィルタ係数により表される第1の周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる第2の周波数振幅特性を実現する対称型の第2のフィルタ係数を求める第2のステップと、上記第1のフィルタ係数を有する第1のフィルタと上記第2のフィルタ係数を有する第2のフィルタとを縦続接続した場合に得られる第3のフィルタ係数を求める演算を行う第3のステップとを有し、上記第2のステップで生成された上記第3のフィルタ係数を、求めるフィルタ係数として決定するようにしたことを特徴とする。
また、本発明のデジタルフィルタは、数値列が対称型の第1のフィルタ係数を有するオリジナルフィルタと、上記オリジナルフィルタの周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる周波数振幅特性を実現する対称型の第2のフィルタ係数を有する調整フィルタとを備え、上記オリジナルフィルタと上記調整フィルタとを縦続接続することによって構成したことを特徴とする。
また、上述の設計方法を用いて決定された第3のフィルタ係数を各タップの信号に対するフィルタ係数として設定した単一のフィルタによってデジタルフィルタを構成しても良い。
このように構成した本発明によれば、窓関数や近似式を用いることなく、通過帯域幅が比較的広くて阻止域の傾斜が急峻な周波数特性を有するFIRデジタルフィルタを簡易的に設計することができる。
上記の課題を解決するために、本発明によるデジタルフィルタの設計方法は、数値列が対称型の第1のフィルタ係数を生成する第1のステップと、上記第1のフィルタ係数により表される第1の周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる第2の周波数振幅特性を実現する対称型の第2のフィルタ係数を求める第2のステップと、上記第1のフィルタ係数を有する第1のフィルタと上記第2のフィルタ係数を有する第2のフィルタとを縦続接続した場合に得られる第3のフィルタ係数を求める演算を行う第3のステップとを有し、上記第2のステップで生成された上記第3のフィルタ係数を、求めるフィルタ係数として決定するようにしたことを特徴とする。
また、本発明のデジタルフィルタは、数値列が対称型の第1のフィルタ係数を有するオリジナルフィルタと、上記オリジナルフィルタの周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる周波数振幅特性を実現する対称型の第2のフィルタ係数を有する調整フィルタとを備え、上記オリジナルフィルタと上記調整フィルタとを縦続接続することによって構成したことを特徴とする。
また、上述の設計方法を用いて決定された第3のフィルタ係数を各タップの信号に対するフィルタ係数として設定した単一のフィルタによってデジタルフィルタを構成しても良い。
このように構成した本発明によれば、窓関数や近似式を用いることなく、通過帯域幅が比較的広くて阻止域の傾斜が急峻な周波数特性を有するFIRデジタルフィルタを簡易的に設計することができる。
図1は、本実施形態によるFIRデジタルフィルタの設計方法の手順を示すフローチャートである。
図2は、本実施形態によるFIRデジタルフィルタの設計方法の概念を説明するための周波数特性図である。
図3は、第2のフィルタ係数を求める演算内容を説明するための図である。
図4は、オリジナルバンドパスフィルタの周波数振幅特性およびこのオリジナルバンドパスフィルタに対して1〜3個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。
図5は、本実施形態の調整フィルタを縦続接続した場合に得られる周波数特性の変化の原理を説明するための図である。
図6は、オリジナルバンドパスフィルタに対して、k=1.5の調整フィルタを3段縦続接続するとともに、最終段にk=1の調整フィルタを更に縦続接続した場合に得られる周波数特性を示す図である。
図7は、オリジナルローパスフィルタの周波数振幅特性およびこのオリジナルローパスフィルタに対して1〜5個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。
図8は、16ビットの演算精度で実際に算出したフィルタ係数値(丸め処理前のもの)をグラフ化した図である。
図9は、フィルタ係数を丸め処理する前におけるデジタルフィルタの周波数特性を示す図である。
図10は、本実施形態によるデジタルフィルタの一構成例を示す図である。
図11は、基本ローパスフィルタL4anのフィルタ係数を示す図である。
図12は、基本ローパスフィルタL4a4のハードウェア構成例を示す図である。
図13は、基本ローパスフィルタL4a4の周波数特性を示す図である。
図14は、基本ローパスフィルタL4anの周波数−ゲイン特性を示す図である。
図15は、基本ハイパスフィルタH4snのフィルタ係数を示す図である。
図16は、基本バンドパスフィルタB4snのフィルタ係数を示す図である。
図2は、本実施形態によるFIRデジタルフィルタの設計方法の概念を説明するための周波数特性図である。
図3は、第2のフィルタ係数を求める演算内容を説明するための図である。
図4は、オリジナルバンドパスフィルタの周波数振幅特性およびこのオリジナルバンドパスフィルタに対して1〜3個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。
図5は、本実施形態の調整フィルタを縦続接続した場合に得られる周波数特性の変化の原理を説明するための図である。
図6は、オリジナルバンドパスフィルタに対して、k=1.5の調整フィルタを3段縦続接続するとともに、最終段にk=1の調整フィルタを更に縦続接続した場合に得られる周波数特性を示す図である。
図7は、オリジナルローパスフィルタの周波数振幅特性およびこのオリジナルローパスフィルタに対して1〜5個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。
図8は、16ビットの演算精度で実際に算出したフィルタ係数値(丸め処理前のもの)をグラフ化した図である。
図9は、フィルタ係数を丸め処理する前におけるデジタルフィルタの周波数特性を示す図である。
図10は、本実施形態によるデジタルフィルタの一構成例を示す図である。
図11は、基本ローパスフィルタL4anのフィルタ係数を示す図である。
図12は、基本ローパスフィルタL4a4のハードウェア構成例を示す図である。
図13は、基本ローパスフィルタL4a4の周波数特性を示す図である。
図14は、基本ローパスフィルタL4anの周波数−ゲイン特性を示す図である。
図15は、基本ハイパスフィルタH4snのフィルタ係数を示す図である。
図16は、基本バンドパスフィルタB4snのフィルタ係数を示す図である。
以下、本発明の一実施形態を図面に基づいて説明する。図1は、本実施形態によるFIRデジタルフィルタの設計方法の手順を示すフローチャートである。また、図2は、本実施形態によるFIRデジタルフィルタの設計方法の概念を説明するための周波数特性図である。
図1において、まず、数値列が対称型の第1のフィルタ係数を生成する(ステップS1)。この第1のフィルタ係数の生成法については、本発明では特に限定しない。フィルタ係数の数値列が対称型になっていれば、近似式や窓関数を用いる従来の設計法を用いても良いし、本発明者が過去に提案した設計法(例えば、特願2001−365146号、特願2002−129168号、特願2002−205014号、特願2002−306315号、特願2002−306316号、特願2003−56265号など)を用いても良い。
本発明者が過去に提案したフィルタ設計法を簡単に説明すると、次の通りである。特願2001−365146号に記載の第1の設計法は、所望の周波数特性を表す複数の振幅値を入力し、当該入力した数値列を逆フーリエ変換した後、得られた数値列に対して窓掛けを行うことによってフィルタ係数を求める方法である。また、特願2002−129168号、特願2002−205014号、特願2002−306315号、特願2002−306316号に記載の第2の設計法は、所定の基本的な数値列から成る1以上の基本ユニットフィルタを作成し、これらを任意に縦続接続することによってフィルタ係数を求める方法である。
また、特願2003−56265号に記載の第3の設計法は、所定の基本的な数値列より成るフィルタ係数に基づきFIR演算を行った後、その演算データに対して、演算前の元データとそれより所定遅延量だけ前の前データとを加算し振幅調整して出力する移動平均演算をn回繰り返し行うことによってフィルタ係数を求める方法である。少ないタップ数で減衰特性の良好な周波数特性が得られるという点では、第2の設計法または第3の設計法を用いるのが好ましい。
図2中に符号Aで示す周波数特性は、ステップS1で生成した第1のフィルタ係数によって実現されるオリジナルフィルタの周波数−ゲイン特性の一例を示している。なお、ここでは、オリジナルフィルタの周波数特性においてゲインおよび周波数を“1”で基準化(正規化)している。
次に、第1のフィルタ係数により表される周波数振幅特性(図2中のA)において極大値をとる位置に接点を有し、当該接点において極小値をとる周波数振幅特性(図2中のB)を実現する対称型の第2のフィルタ係数を求める(ステップS2)。周波数振幅特性がこのような特徴を有していれば、第2のフィルタ係数をどのような方法を用いて生成しても良いが、例えば次のような演算によって求めることができる。
すなわち、オリジナルフィルタを構成する第1のフィルタ係数の数値列を{Hm,Hm−1,・・・,H1,H0,H−1,・・・,H−(m−1),H−m}(H0が中央値で、当該中央値を境として対称型となっている。Hm=H−m,Hm−1=H−(m−1),・・・,H1=H−1)とした場合に、第2のフィルタ係数は、{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH−(m−1),−kH−m}(kは任意の正数)なる演算によって求める。つまり、中央値以外の係数は全て−k倍し、中央値だけは−k倍して更に(1+k)を加算することによって、第2のフィルタ係数を求める。以下、この第2のフィルタ係数を有するフィルタを「調整フィルタ」と呼ぶ。
このようにして第2のフィルタ係数を求めたら、第1のフィルタ係数を有するオリジナルフィルタと、第2のフィルタ係数を有する調整フィルタとを縦続接続した場合に得られる第3のフィルタ係数を求める演算を行う(ステップS3)。オリジナルフィルタと調整フィルタとを縦続接続することにより、第1のフィルタ係数と第2のフィルタ係数とが乗算・加算されて新しいフィルタ係数が作り出される。
図3は、ステップS3における演算内容を説明するための図である。この図3に示すように、ステップS3では、第1のフィルタ係数を構成する(2m+1)個(2m+1は、第1のフィルタ係数を構成する全数値列の個数を表す)の数値列と、第2のフィルタ係数を構成する(2m+1)個の数値列との畳み込み演算を行うことによって、第3のフィルタ係数の数値列を求める。
この畳み込み演算では、第2のフィルタ係数については、{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH− (m−1),−kH−m}の全ての数値列を常に固定的に乗加算の対象とする。一方、第1のフィルタ係数については、{Hm,Hm−1,・・・,H1,H0,H−1,・・・,H−(m−1),H−m}の数値列の前後に0列があるものと仮定し、この0値も含めて(2m+1)個の数値列を畳み込み演算の対象とする。このとき、第3のフィルタ係数におけるn番目の数値を求める際には、第1のフィルタ係数におけるn番目の数値を含めてそれより前にある(2m+1)個の数値列を乗加算の対象とする。
例えば、第3のフィルタ係数における1番目の数値を求める際には、第2のフィルタ係数における全ての数値列{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH−(m−1),−kH−m}(符号31で示す点線で囲った配列)と、第1のフィルタ係数における1番目の数値を含めてそれより前にある(2m+1)個の数値列{0,0,・・・,0,Hm}(符号32で示す点線で囲った配列)とを対象として、配列の対応する要素の積を合計する演算を行う。すなわち、この場合の演算結果は、(Hm×(−kH−m))となる。
また、第3のフィルタ係数における2番目の数値を求める際には、第2のフィルタ係数における全ての数値列{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH−(m−1),−kH−m}(符号31で示す点線で囲った配列)と、第1のフィルタ係数における2番目の数値を含めてそれより前にある(2m+1)個の数値列{0,0,・・・,0,Hm,Hm−1}(符号33で示す点線で囲った配列)とを対象として、配列の対応する要素の積を合計する演算を行う。すなわち、この場合の演算結果は、(Hm×(−kH−m)+Hm−1×(−kH−(m−1)))となる。以下同様にして、第3のフィルタ係数を構成する(2×(2m+1)−1)個の数値列を求める。
なお、ここでは、オリジナルフィルタに対して1個の調整フィルタを縦続接続する場合を例にとって説明したが、複数の調整フィルタを縦続接続するようにしても良い。この場合は、図1中に点線の矢印で示すように、ステップS3で生成した第3のフィルタ係数を新たに第1のフィルタ係数とみなしてステップS2に戻る。そして、当該新たな第1のフィルタ係数(オリジナルフィルタに単一パルスを入力した場合に1段目の調整フィルタから出力される数値列に相当)に基づいて、第2のフィルタ係数を再び求める(新しい調整フィルタを生成する)。
さらに、こうして生成した新たな第1のフィルタ係数と新たな第2のフィルタ係数とを畳み込み演算することによって、新しい調整フィルタを更に縦続接続した場合に得られる新たな第3のフィルタ係数を演算する。このような演算を、縦続接続したい調整フィルタの数だけ繰り返し行う。
図4は、オリジナルフィルタ(バンドパスフィルタ)の周波数振幅特性およびこのオリジナルフィルタに対して1〜3個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。図4において、41はオリジナルフィルタの周波数振幅特性、42は調整フィルタを1個縦続接続した場合に得られる周波数振幅特性、43は調整フィルタを2個縦続接続した場合に得られる周波数振幅特性、44は調整フィルタを3個縦続接続した場合に得られる周波数振幅特性をそれぞれ示す。
この図4に示すように、オリジナルフィルタに対して本実施形態の調整フィルタを縦続接続することにより、フィルタの通過帯域幅を広げ、かつ、阻止域の傾斜を急峻にすることができる。縦続接続する調整フィルタの数を多くすることにより、通過帯域幅がより広くて傾斜もより急峻なフィルタ特性を得ることができる。
なお、この図4は、第1のフィルタ係数から第2のフィルタ係数を求める際のパラメータkの値を1.5とした場合の周波数特性を示している。図4に示されるように、k≠1とした場合には、周波数特性の頂部に若干のオーバーシュートやリンギングが生じる。ただし、k=1とした場合には、周波数特性の頂部にオーバーシュートやリンギングが生じることはなく、平坦な特性となる。
図5は、本実施形態の調整フィルタを縦続接続した場合に得られる周波数特性の変化の原理を説明するための図である。なお、この図5は基本原理を説明するためのものであり、図4に示した周波数特性の波形と一致するものではない。この図5は、k=1とした場合の原理を示している。
図5(a)は、オリジナルフィルタに対して1個目の調整フィルタを縦続接続した場合における周波数振幅特性の変化を示す。図5(a)において、Aはオリジナルフィルタの周波数振幅特性、Bは当該オリジナルフィルタが有する第1のフィルタ係数から生成した第2のフィルタ係数を有する1個目の調整フィルタの周波数振幅特性、Cはオリジナルフィルタと1個目の調整フィルタとを縦続接続した場合に得られる周波数振幅特性を示す。
すなわち、オリジナルフィルタに対して調整フィルタを1個縦続接続した場合の新たな周波数振幅特性Cは、オリジナルフィルタの周波数振幅特性Aと、調整フィルタの周波数振幅特性Bとを掛け合わせた形となる。2個目の調整フィルタを更に縦続接続する場合には、このように生成された周波数振幅特性Cに対応する第3のフィルタ係数を新たに第1のフィルタ係数として用い、2個目の調整フィルタに関する新たな第2のフィルタ係数を求める。
図5(b)は、2個目の調整フィルタを更に縦続接続した場合における周波数振幅特性の変化を示す。図5(b)において、A’は1個目の調整フィルタを縦続接続した場合の周波数振幅特性であり、図5(a)の手順で求められた周波数振幅特性Cと同じものである。B’は当該周波数振幅特性A’に対応する新たな第1のフィルタ係数から生成した新たな第2のフィルタ係数を有する2個目の調整フィルタの周波数振幅特性である。C’は2個目の調整フィルタを更に縦続接続した場合に得られる新たな周波数振幅特性であり、2つの周波数振幅特性A’,B’を掛け合わせた形のものとなっている。
ここでは図示しないが、3個目の調整フィルタを更に縦続接続する場合には、図5(b)の手順で生成された新たな周波数振幅特性C’に対応するフィルタ係数を再び第1のフィルタ係数として用い、3個目の調整フィルタに関する新たな第2のフィルタ係数を求める。そして、上述と同様の手順に従って新たな周波数振幅特性を得る。
このように、オリジナルフィルタに対して複数の調整フィルタを縦続接続することにより、フィルタの通過帯域幅を広げるとともに、阻止域の傾斜を急峻にしていくことができる。k=1とした場合には、オリジナルフィルタの周波数振幅特性と調整フィルタの周波数振幅特性とは、振幅が“1”のラインを境として線対称となる。したがって、調整フィルタを何個接続しても、掛け合わされた新たなフィルタの周波数振幅特性が振幅“1”のラインを超えることはなく、オーバーシュートやリンギングは発生しない。このことから、kの値は“1”とするのが好ましい。
一方、kの値を1より大きくすると、多少のオーバーシュートやリンギングは発生するが、1個当たりの調整フィルタの接続で広げられる通過帯域幅の割合を大きくすることができる。したがって、少ない数の調整フィルタで通過帯域幅を効率的に広げたい場合には、kの値を大きくするのが良い。この場合において、k≠1として第2のフィルタ係数を求めた調整フィルタを複数段縦続接続した後、最終段にk=1の調整フィルタを接続することによって、通過帯域幅を効率的に広げるとともに、オーバーシュートやリンギングのない良好な周波数特性を得ることができる。
図6は、オリジナルフィルタに対して、k=1.5の調整フィルタを3段縦続接続するとともに、最終段にk=1の調整フィルタを更に縦続接続した場合に得られる周波数特性を示す図である。この図6から分かるように、最終段にk=1の調整フィルタを接続すれば、通過帯域幅が広く、阻止域の傾斜が急峻で、かつ、頂部が平坦な良好な周波数特性を得ることができる。また、フィルタ係数は対称型なので、位相の直線性も確保できる。また、k<1としてkの値を調整することにより、通過周波数帯域幅を微調整することが可能である。
なお、以上ではバンドパスフィルタの設計例について説明したが、ローパスフィルタやハイパスフィルタなども同様の手順で設計することができる。図7は、オリジナルのローパスフィルタの周波数振幅特性およびこのオリジナルローパスフィルタに対して1〜5個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。この図7は、k=1とした場合の周波数特性を示している。
図7において、51はオリジナルローパスフィルタの周波数振幅特性、52〜56はそれぞれ調整フィルタを1個〜5個縦続接続した場合に得られる周波数振幅特性を示す。この図7に示すように、ローパスフィルタの場合も図4のバンドパスフィルタと同様に、調整フィルタを縦続接続することによってフィルタの通過帯域幅を広げ、かつ、阻止域の傾斜を急峻にすることができる。また、縦続接続する調整フィルタの数を多くすることにより、通過帯域幅がより広くて傾斜もより急峻なフィルタ特性を得ることができる。
最後に、以上のようにして生成した第3のフィルタ係数に対して、ビット数を減らす丸め処理によって不要なフィルタ係数を大幅に削減するとともに、整数化によってフィルタ係数を簡素化する(ステップS4)。以下に、このステップS4における丸め処理について詳しく説明する。図8は、例えば16ビットの演算精度で上述のステップS1〜S3の手順によって算出される第3のフィルタ係数の値(丸め処理前のもの)をグラフ化した図である。また、図9は、フィルタ係数を丸め処理する前におけるデジタルフィルタの周波数特性を示す図であり、(a)はゲインを直線目盛りで示し、(b)はゲインを対数目盛りで示している。
本発明者が過去に提案した第2のフィルタ設計法または第3のフィルタ設計法によって第1のフィルタ係数を求め、これをもとに第2のフィルタ、第3のフィルタ係数を以上の手順で求めると、第3のフィルタ係数の値は、図8に示すように中央(係数H0)で最大となる。また、各フィルタ係数の値の差は、従来のフィルタ設計法で得られるフィルタ係数のそれに比べて極めて大きくなる。そのため、所定の閾値より小さい値のフィルタ係数を丸め処理によって破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。また、周波数特性の帯域外減衰量はフィルタ係数のビット数によって制約を受けるが、図9に示すように、第2または第3のフィルタ設計法によって得られる周波数特性は非常に深い減衰を持っているので、ビット数を多少減らしても、所望の減衰量は確保できる。
したがって、丸め処理によって不要なフィルタ係数を大幅に削減することができる。例えば、フィルタ係数の下位数ビットを切り捨てることでビット数を減らすことにより、その下位数ビットだけで表される最大値よりも小さい値のフィルタ係数を全て“0”に丸めて破棄することができる。よって、フィルタ係数の数を減らすために従来のような窓掛けは必要ない。
この点は、従来のフィルタ設計法と大きく異なる本実施形態の特徴点である。すなわち、従来のフィルタ設計法では、求められる各フィルタ係数の値の差がそれほど大きくならないため、フィルタ係数の値で丸め処理をすると、周波数特性を決定付ける主要なフィルタ係数も破棄されてしまうことが多い。また、非常に深い帯域外減衰量を持った周波数特性を得ることも困難なため、フィルタ係数のビット数を減らすと必要な帯域外減衰量を確保できなくなってしまう。よって、従来はビット数を減らす丸め処理を行うことができず、窓掛けによってフィルタ係数の数を減らさざるを得なかった。そのため、周波数特性に打ち切り誤差が発生し、所望の周波数特性を得ることが極めて困難であった。
これに対して、本実施形態では窓掛けを行うことなくフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることはない。したがって、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。周波数−ゲイン特性では平坦部のリップルが極めて小さく、±0.3dBの範囲内に充分収めることができる。
上述のような手順で求まる第3のフィルタ係数の値は小数であり、10ビットの丸め処理によってその桁数を減らすことができるが、ランダムな値の集合である。この数値列をそのままフィルタ係数として用いても良いが、デジタルフィルタを実装する際に使用する乗算器の数をより少なくするために、フィルタ係数の数値を更に丸めて単純化するようにしても良い。そのために本実施形態では、10ビットで丸めたフィルタ係数の数値列を210倍して小数点以下を丸め、係数値を整数化する。
このような整数化の丸め演算を行うと、デジタルフィルタの各タップからの出力信号に対して整数のフィルタ係数を個別に乗算し、それぞれの乗算出力を全て加算した後にまとめて1/210倍するようにデジタルフィルタを構成することが可能となる。しかも、整数のフィルタ係数は、2i+2j+・・・(i,jは任意の整数)のように2進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
なお、ここでは丸め処理の例として、フィルタ係数のデータに対して下位数ビットを切り捨てることによってyビットのデータをxビット(x<y)に丸める処理について説明したが、この例に限定されない。例えば、各フィルタ係数の値を所定の閾値と比較し、閾値より小さいフィルタ係数を破棄するようにしても良い。この場合、残されるフィルタ係数は元のyビットのままであるから、これを整数化する際には2y倍する。
以上に説明した本実施形態によるフィルタ設計法を実現するための装置は、ハードウェア構成、DSP、ソフトウェアの何れによっても実現することが可能である。例えばソフトウェアによって実現する場合、本実施形態のフィルタ設計装置は、実際にはコンピュータのCPUあるいはMPU、RAM、ROMなどで構成され、RAMやROMあるいはハードディスク等に記憶されたプログラムが動作することによって実現できる。
例えば、第2または第3の設計法に関する各種の基本フィルタのフィルタ係数をデータとしてRAMやROM、ハードディスク等の記憶装置に記憶しておく。そして、ユーザが基本フィルタに関する任意の組み合わせと接続順などを指示すると、CPUが、上記記憶装置に記憶されているフィルタ係数のデータを用いて、指示された内容に対応するオリジナルフィルタの第1のフィルタ係数を求める。
さらに、ユーザが調整フィルタに関するパラメータkと調整フィルタの縦続接続数を指示入力すると、CPUが、第1のフィルタ係数から第2のフィルタ係数を求め、更に第2のフィルタ係数から第3のフィルタ係数を求めるようにすることが可能である。この場合、記憶装置が本発明のフィルタ係数記憶手段に相当し、CPUが本発明の演算手段に相当する。
ユーザが各基本フィルタに関する組み合わせと接続順、調整フィルタに関するパラメータk、調整フィルタの縦続接続数などを指示する際のユーザインタフェースは、任意に構成することが可能である。例えば、基本フィルタのタイプを画面表示された一覧表からキーボードやマウスの操作によって選択できるようにするとともに、各種パラメータの値をキーボードやマウスの操作によって入力できるようにする。CPUは、このようにして入力された情報を取得し、その入力情報により指示された内容に対応するフィルタ係数を上述した演算により求める。
また、各種の基本フィルタをアイコン化してディスプレイ画面上に表示するようにし(各アイコンに対応してフィルタ係数をデータとして記憶装置に記憶している)、ユーザがこれらのアイコンをキーボードやマウスの操作によりディスプレイ画面上で任意に組み合わせて配置する。また、その他の必要なパラメータはキーボードやマウスの操作によって入力する。そして、CPUがアイコンの配列や入力パラメータに対応するフィルタ係数を自動的に演算して求めるようにしても良い。
また、パーソナルコンピュータ等にインストールされている表計算ソフトの関数機能などを利用して、第1のフィルタ係数、第2のフィルタ係数、第3のフィルタ係数を順に求める演算を行うようにすることも可能である。この場合の演算は、実際には、表計算ソフトがインストールされているパーソナルコンピュータ等のCPU、ROM、RAMなどによって行われる。
また、求めたフィルタ係数を自動的にFFT変換し、その結果を周波数−ゲイン特性図としてディスプレイ画面に表示するようにしても良い。このようにすれば、設計したフィルタの周波数特性を視覚的に確認することができ、フィルタ設計をより容易に行うことができる。
このようなフィルタ設計装置は、コンピュータが上記本実施形態の機能を果たすように動作させるプログラムを例えばCD−ROMのような記録媒体に記録し、これをコンピュータに読み込ませることによって実現できる。上記プログラムを記録する記録媒体としては、CD−ROM以外に、フレキシブルディスク、ハードディスク、磁気テープ、光ディスク、光磁気ディスク、DVD、不揮発性メモリカード等を用いることができる。また、上記プログラムをインターネット等のネットワークを介してコンピュータにダウンロードすることによっても実現できる。
なお、コンピュータが供給されたプログラムを実行することにより上述の実施形態の機能が実現されるだけでなく、そのプログラムがコンピュータにおいて稼働しているOS(オペレーティングシステム)あるいは他のアプリケーションソフト等と共同して上述の実施形態の機能が実現される場合や、供給されたプログラムの処理の全てあるいは一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて上述の実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。
次に、本実施形態によるデジタルフィルタの構成について説明する。実際にデジタルフィルタを電子機器内や半導体ICに実装する場合には、例えば、オリジナルフィルタおよび調整フィルタをそれぞれハードウェアとして構成し、それらをハードウェアとして接続することによってデジタルフィルタを実装することが可能である。図10は、その場合のデジタルフィルタの一構成例を示す図である。図10に示すデジタルフィルタは、1個のオリジナルフィルタ10と1個の調整フィルタ20とを縦続接続して構成されている。オリジナルフィルタ10は、縦続接続されたi個のD型フリップフロップ11−1〜11−iと、(i+1)個の係数器12−1〜12−(i+1)と、i個の加算器13−1〜13−iとにより構成される。
i個のD型フリップフロップ11−1〜11−iは、入力データを1クロックCKずつ順次遅延させる。(i+1)個の係数器12−1〜12−(i+1)は、各D型フリップフロップ11−1〜11−iの入出力タップから取り出した信号に対し、対称型の第1のフィルタ係数をそれぞれ乗算する。i個の加算器13−1〜13−iは、各係数器12−1〜12−(i+1)での乗算結果を全て加算して出力する。
オリジナルフィルタ10から出力されたデータは、調整フィルタ20に入力されるとともに、フィルタ係数演算部30に入力される。フィルタ係数演算部30は、オリジナルフィルタ10からの出力データをもとに、調整フィルタ20に設定する第2のフィルタ係数を演算する。
すなわち、オリジナルフィルタ10に単一パルスを入力したときに当該オリジナルフィルタ10から出力されるデータ列を{Hm,Hm−1,・・・,H1,H0,H−1,・・・,H−(m−1),H−m}とすると、フィルタ係数演算部30は、{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH−(m−1),−kH−m}(kは任意に設定した正数)なる演算によって第2のフィルタ係数を求める。そして、求めた第2のフィルタ係数を、調整フィルタ20内の(j+1)個の係数器22−1〜22−(j+1)にそれぞれ設定する。
調整フィルタ20は、縦続接続されたj個(j>i)のD型フリップフロップ21−1〜22−jと、(j+1)個の係数器22−1〜22−(j+1)と、j個の加算器23−1〜23−jとにより構成される。j個のD型フリップフロップ21−1〜21−iは、オリジナルフィルタ10からの入力データを1クロックCKずつ順次遅延させる。(j+1)個の係数器22−1〜22−(j +1)は、各D型フリップフロップ21−1〜21−jの入出力タップから取り出した信号に対し、対称型の第2のフィルタ係数をそれぞれ乗算する。j個の加算器23−1〜23−jは、各係数器22−1〜22−(j+1)の乗算結果を全て加算して出力する。
ここでは、オリジナルフィルタ10に対して調整フィルタ20を1個だけ縦続接続する構成例について示したが、2個以上の調整フィルタ20を縦続接続する場合には、図10に示した構成の後段にフィルタ係数演算部30および調整フィルタ20と同様の構成を複数接続していけば良い(ただし、調整フィルタに必要な係数の数は、後段にいくほど増えていく)。
また、図10のようにオリジナルフィルタ10と調整フィルタ20とを縦続接続する形ではなく、単に複数のD型フリップフロップと複数の係数器と複数の加算器とにより1つのデジタルフィルタを構成し、図1のような手順で求めた最終的なフィルタ係数を、当該デジタルフィルタ内の複数の係数器に設定する形で構成するようにしても良い。
その場合、求められたフィルタ係数の数は10ビットの丸め処理によって大幅に削減されており、かつ、210倍による丸め処理によって単純な整数に変換されている。したがって、タップ数は少なく、しかも基本的に乗算器は不要でビットシフト回路にて対応可能であり、所望の周波数特性を小さな回路規模で高精度に実現することができる。
なお、上述のように、本実施形態のフィルタ設計法によれば、調整フィルタの縦続数を増やすと、後段の調整フィルタに必要なフィルタ係数の数は増えていく。したがって、デジタルフィルタ全体でのタップ数を少なくするためには、大元となるオリジナルフィルタで使用するフィルタ係数の数をできるだけ少なくしておくのが好ましい。この点に関し、本発明者が既に出願した特開2003−56265号に係る第3の設計法によれば、非常に少ないタップ数で良好な周波数特性を有するオリジナルフィルタを構成することが可能である。以下に、この第3の設計法に関する特開2003−号の内容を抜粋して説明する。なお、以下の説明においてm,i,j,xのパラメータを用いるが、上述したものとは意味が全く異なるものである。
既出願に係る第3の設計法では、特定のインパルス応答を有する数種類の基本フィルタ群を定義し、それらを任意に縦続接続する形で所望の周波数特性を有するFIRフィルタを実現する。基本フィルタは、基本ローパスフィルタ、基本ハイパスフィルタ、基本バンドパスフィルタの3種類に大きく分類される。以下、これらの基本フィルタについて説明する。
<基本ローパスフィルタLman(m,nは変数で、nは自然数)>
基本ローパスフィルタLmanのフィルタ係数は、“−1,m,−1”の数値列を出発点として、演算前の元データとそれより所定遅延量だけ前の前データとを順次加算していく移動平均演算によって求める。
図11は、基本ローパスフィルタL4an(m=4とした場合)のフィルタ係数を示す図である。図11において、移動平均演算によってn列目の上からj番目のフィルタ係数を求める際に、元データとは、(n−1)列目の上からj番目のデータを指す。また、前データとは、(n−1)列目の上から(j−1)番目のデータを指す。
例えば、基本ローパスフィルタL4a1の上から1番目の数値“−1”は元データ“−1”と前データ“0”とを加算することによって得られ、2番目の数値“3”は元データ“4”と前データ“−1”とを加算することによって得られる。また、3番目の数値“3”は元データ“−1”と前データ“4”とを加算することによって得られ、4番目の数値“−1”は元データ“0”と前データ“−1”とを加算することによって得られる。
図11に示す基本ローパスフィルタL4anの何れのフィルタ係数も、その数値列は対称型であり、数値列の1つ飛びの合計値が同符号で互いに等しくなるという性質を持っている(例えば基本ローパスフィルタL4a4の場合、−1+9+9+(−1)=16,0+16+0=16)。
上記“−1,m,−1”の数値列は、大元の数値列“−1,N”を基本として生成する。この数値列“−1,N”をフィルタ係数とする基本単位フィルタは、1〜2個(N=0の場合は1個、それ以外の場合は2個)のタップを有する。なお、Nの値は必ずしも整数である必要はない。
この数値列“−1,N”をフィルタ係数として持つ基本単位フィルタは非対称型なので、対称型とするために、これを偶数段縦続接続して使用する必要がある。例えば2段縦続接続した場合、数値列“−1,N”の畳み込みにより、フィルタ係数は“−N,N2+1,−N”となる。ここで、(N2+1)/N=mとすると、mを整数としたとき、N=(m+(m2−4)1/2)/2となる。
図11の例のようにm=4とした場合、N=2+√3である。すなわち、基本単位フィルタの係数は“−1,3.732”となる(ここでは、小数点以下を3桁まで表示している)。また、この基本単位フィルタを2段縦続接続した場合のフィルタ係数は、“−3.732,14.928,−3.732”となる。この数値列は、−1:4:−1の関係になっている。
この数値列を実際にフィルタ係数として使用する場合は、数値列の各値を2N(=2*(2+√3)=7.464)で割ることにより、フィルタ係数の数値列をFFT変換した場合の振幅が“1”となるようにして、ゲインを“1”に基準化する。すなわち、実際に使用するフィルタ係数の数値列は、“−1/2,2,−1/2”となる。この実際に使用する数値列“−1/2,2,−1/2”は、元の数値列“−1,4,−1”をx倍(x=1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本ローパスフィルタLmanのフィルタ係数は、何れもその数値列の総和が“1”で、数値列の1つ飛びの合計値が同符号で互いに等しくなるという性質を持つ。
図12は、基本ローパスフィルタL4a4(m=4,n=4とした場合)のハードウェア構成を示す図である。図12に示すように、基本ローパスフィルタL4a4は、出発点となる数値列“−1/2,2,−1/2”をフィルタ係数として持つFIR演算部101と、当該数値列を移動平均演算する移動平均演算部201とを備えて構成される。このうちFIR演算部101は、縦続接続された2個のD型フリップフロップ1−1〜1− 2と、3個の係数器2−1〜2−3と、2個の減算器3−1〜3−2とにより構成される。
2個のD型フリップフロップ1−1〜1−2は、入力データを1クロックCKずつ順次遅延させる。3個の係数器2−1〜2−3は、各D型フリップフロップ1−1〜1−2の入出力タップから取り出した信号に対し、1/2,2,1/2のフィルタ係数をそれぞれ乗算する。第1の減算器3−1は、第2の係数器2−2の乗算結果から第1の係数器2−1の乗算結果を減算する。また、第2の減算器3−2は、第1の減算器3−1の減算結果から第3の係数器2−3の乗算結果を減算する。
また、移動平均演算部201は、何れも同様に構成された4個の積分器4−1〜4−4を縦続接続することによって構成される。例えば1段目の積分器4−1は、入力データを1クロック分遅延させるD型フリップフロップ5−1と、当該D型フリップフロップ5−1を通らない元データとD型フリップフロップ5−1を通って遅延を受けた前データとを加算する加算器6−1と、加算結果の振幅を元に戻すための調整器7−1とにより構成される。
この図12に示す基本ローパスフィルタL4a4の構成では、フィルタ係数の乗算が行われる係数器2−1〜2−3およびその係数器2−1〜2−3へのデータの取出口である出力タップが必要なのは、初段のFIR演算部101だけである。しかも、その数はわずか3個である。
さらに、フィルタ係数の値は1/2,2,1/2であるので、係数器2−1〜2−3はビットシフト回路で構成することが可能である。また、4個の積分器4−1〜4−4が備える調整器7−1〜7−4もビットシフト回路で構成することが可能である。nの値を4以外として調整器の数が変わっても、その調整器は全てビットシフト回路で構成できる。よって、基本ローパスフィルタL4anのハードウェア構成において、乗算器は全く不要である。
なお、ここではm=4の場合について説明したが、m=2i(iは整数)であれば、全ての係数器と調整器とをビットシフト回路で構成することが可能であり、乗算器は必要でない。
図13は、基本ローパスフィルタL4a4のフィルタ係数の数値列をFFT変換して得られる周波数特性(周波数−ゲイン特性および周波数−位相特性)を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを32倍して示している。一方、周波数は“1”で基準化している。
この図13から分かるように、周波数−ゲイン特性は通過域がほぼ平坦で、阻止域の傾斜がなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、図12のように構成するだけで、オーバーシュートやリンギングも存在しない良好な周波数特性を持つローパスフィルタを得ることができる。
図14は、基本ローパスフィルタL4anのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図14より、nの値が大きくなるほど阻止域の傾斜が急峻になり、通過域のバンド幅は狭くなる。また、nの値が小さいときは、周波数特性の頂部は両端が盛り上がる。nの値が大きくなるに従って頂部は徐々に平坦に近づき、n=4で完全に平坦になる。nの値がそれより大きくなると、今度は頂部の両端が中央値より低くなっていく。
なお、ここではm=4とした場合の周波数特性を示しているが、mの値を小さくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。以上のことから、パラメータm,nの値を適当に設定することにより、基本ローパスフィルタLmanの周波数特性を調整することができる。
<基本ハイパスフィルタHmsn(m,nは変数で、nは自然数)>
基本ハイパスフィルタHmsnのフィルタ係数は、“1,m,1”の数値列を出発点として、演算前の元データからそれより所定遅延量だけ前の前データを順次減算していく移動平均演算によって求める。
図15は、基本ハイパスフィルタH4sn(m=4とした場合)のフィルタ係数を示す図である。図15において、移動平均演算によってn列目の上からj番目のフィルタ係数を求める際に、元データとは、(n−1)列目の上からj番目のデータを指す。また、前データとは、(n−1)列目の上から(j−1)番目のデータを指す。
例えば、基本ハイパスフィルタH4s1の上から1番目の数値“1”は元データ“1”から前データ“0”を減算することによって得られ、2番目の数値“3”は元データ“4”から前データ“1”を減算することによって得られる。また、3番目の数値“−3”は元データ“1”から前データ“4”を減算することによって得られ、4番目の数値“−1”は元データ“0”から前データ“1”を減算することによって得られる。
図15に示す基本ハイパスフィルタH4snにおいて、nが偶数のときは何れのフィルタ係数も、その数値列は対称型であり、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている(例えば基本ハイパスフィルタH4s4の場合、1+(−9)+(−9)+1=−16,0+16+0=16)。nが奇数のときは、その数値列は絶対値が対称型となっており、前半の数値列と後半の数値列とは逆符号になる。また、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている。
上記“1,m,1”の数値列は、大元の数値列“1,N”を基本として生成する。この数値列“1,N”をフィルタ係数とする基本単位フィルタは、1〜2個(N=0の場合は1個、それ以外の場合は2個)のタップを有する。なお、Nの値は必ずしも整数である必要はない。
この数値列“1,N”をフィルタ係数として持つ基本単位フィルタは非対称型なので、対称型とするために、これを偶数段縦続接続して使用する必要がある。例えば2段縦続接続した場合、数値列“1,N”の畳み込みにより、フィルタ係数は“N,N2+1,N”となる。ここで、(N2+1)/N=mとすると、mを整数としたとき、N=(m+(m2−4)1/2)/2となる。
図15の例のようにm=4とした場合、N=2+√3である。すなわち、基本単位フィルタの係数は“1,3.732”となる(ここでは、小数点以下を3桁まで表示している)。また、この基本単位フィルタを2段縦続接続した場合のフィルタ係数は、“3.732,14.928,3.732”となる。この数値列は、1:4:1の関係になっている。
この数値列を実際にフィルタ係数として使用する場合は、数値列の各値を2N(=2*(2+√3)=7.464)で割ることにより、フィルタ係数の数値列をFFT変換した場合の振幅が“1”となるようにして、ゲインを“1”に基準化する。すなわち、実際に使用するフィルタ係数の数値列は、“1/2,2,1/2”となる。この実際に使用する数値列“1/2,2,1/2”も、元の数値列“1,4,1”をx倍(x=1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本ハイパスフィルタHmsnのフィルタ係数は、何れもその数値列の総和が“0”で、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持つ。
ここでは、基本ハイパスフィルタHmsnのハードウェア構成については図示を省略するが、図12と同様に構成される。すなわち、出発点となる数値列“1/2,2,1/2”をフィルタ係数として持つFIR演算部と、この数値列を移動平均演算する移動平均演算部とにより構成される。この基本ハイパスフィルタHmsnのハードウェア構成においても、出力タップが必要なのは初段のFIR演算部だけであり、タップ数はわずかである。また、乗算器は全く不要である。
基本ハイパスフィルタHmsnの周波数特性についても図示を省略するが、基本ローパスフィルタLmanと同様に、周波数−ゲイン特性は通過域がほぼ平坦で、阻止域の傾斜がなだらかな特性となる。また、周波数−位相特性では直線的な特性も得られる。すなわち、オーバーシュートやリンギングも存在しない良好な周波数特性を持つハイパスフィルタを得ることができる。ここで、nの値が大きくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。また、mの値を小さくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。
<基本バンドパスフィルタBmsn(m,nは変数で、nは自然数)>
基本バンドパスフィルタBmsnのフィルタ係数は、“1,0,m,0,1”の数値列を出発点として、元データから2つ前の前データを順次減算していく移動平均演算によって求める。
図16は、基本バンドパスフィルタB4sn(m=4とした場合)のフィルタ係数を示す図である。図16において、移動平均演算によってn列目の上からj番目のフィルタ係数を求める際に、元データとは、(n−1)列目の上からj番目のデータを指す。また、前データとは、(n−1)列目の上から(j−2)番目のデータを指す。
例えば、基本バンドパスフィルタB4s1の上から1番目の数値“1”は元データ“1”から前データ“0”を減算することによって得られ、3番目の数値“3”は元データ“4”から前データ“1”を減算することによって得られる。また、5番目の数値“−3”は元データ“1”から前データ“4”を減算することによって得られ、7番目の数値“−1”は元データ“0”から前データ“1”を減算することによって得られる。
図16に示す基本バンドパスフィルタB4snにおいて、nが偶数とのきは何れのフィルタ係数も、その数値列は対称型であり、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている(例えば基本バンドパスフィルタB4s4の場合、1+(−9)+(−9)+1=−16,0+16+0=16)。nが奇数のときは、その数値列は絶対値が対称型となっており、前半の数値列と後半の数値列とは逆符号になる。また、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている。
上記“1,0,m,0,1”の数値列は、大元の数値列“1,0,N”を基本として生成する。この数値列“1,0,N”をフィルタ係数とする基本単位フィルタは、1〜2個(N=0の場合は1個、それ以外の場合は2個)のタップを有する。なお、Nの値は必ずしも整数である必要はない。
この数値列“1,0,N”をフィルタ係数として持つ基本単位フィルタは非対称型なので、対称型とするために、これを偶数段縦続接続して使用する必要がある。例えば2段縦続接続した場合、数値列“1,0,N”の畳み込みにより、フィルタ係数は“N,0,N2+1,0,N”となる。ここで、(N2+1)/N=mとすると、mを整数としたとき、N=(m+(m2−4)1/2)/2となる。
図16の例のようにm=4とした場合、N=2+√3である。すなわち、基本単位フィルタの係数は“1,0,3.732”となる(ここでは、小数点以下を3桁まで表示している)。また、この基本単位フィルタを2段縦続接続した場合のフィルタ係数は、“3.732,0,14.928,0,3.732”となる。この数値列は、1:0:4:0:1の関係になっている。
この数値列を実際にフィルタ係数として使用する場合は、数値列の各値を2N(=2*(2+√3)=7.464)で割ることにより、フィルタ係数の数値列をFFT変換した場合の振幅が“1”となるようにして、ゲインを“1”に基準化する。すなわち、実際に使用するフィルタ係数の数値列は、“1/2,0,2,0,1/2”となる。この実際に使用する数値列“1/2,0,2,0,1/2”も、元の数値列“1,0,4,0,1”をx倍(x=1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本バンドパスフィルタBmsnのフィルタ係数は、何れもその数値列の総和が“0”で、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持つ。
ここでは、基本バンドパスフィルタBmsnのハードウェア構成については図示を省略するが、図12と同様に構成される。すなわち、出発点となる数値列“1/2,0,2,0,1/2”をフィルタ係数として持つFIR演算部と、この数値列を移動平均演算する移動平均演算部とにより構成される。この基本バンドパスフィルタBmsnのハードウェア構成においても、出力タップが必要なのは初段のFIR演算部だけであり、タップ数はわずかである。また、乗算器は全く不要である。
基本バンドパスフィルタBmsnの周波数特性についても図示を省略するが、基本ローパスフィルタLmanや基本ハイパスフィルタHmsnと同様に、周波数−ゲイン特性は通過域がほぼ平坦で、阻止域の傾斜がなだらかな特性となる。また、周波数−位相特性では直線的な特性も得られる。すなわち、オーバーシュートやリンギングも存在しない良好な周波数特性を持つバンドパスフィルタを得ることができる。ここで、nの値が大きくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。また、mの値を小さくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。
以上に示した3種類の基本フィルタLman,Hmsn,Bmsnのインパルス応答をとると、何れも、時間軸に沿った標本位置が一定の間にあるときにのみ“0”以外の有限な値を有し、それ以外の領域では値が全て“0”となる関数、つまり所定の標本位置において値が“0”に収束する関数となる。このように、関数の値が局所的な領域で“0”以外の有限の値を有し、それ以外の領域で“0”となる場合を「有限台」と称する。
このような有限台のインパルス応答では、“0”以外の有限の値を有する局所的な領域内のデータだけが意味を持つ。この領域外のデータについては、本来これを考慮すべきであるのに無視している訳ではなく、理論的に考慮する必要がないため、打ち切り誤差は発生しない。したがって、上記3種類の基本フィルタLman,Hmsn,Bmsnを用いれば、窓関数を用いた窓掛けによって係数の打ち切りを行う必要もなく、良好なフィルタ特性を得ることができる。
以上詳しく説明したように、本実施形態では、数値列が対称型の第1のフィルタ係数を有するオリジナルフィルタと、オリジナルフィルタの周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる周波数振幅特性を実現する対称型の第2のフィルタ係数を有する調整フィルタとを縦続接続することによってフィルタ設計を行うようにしたので、窓関数や近似式を用いることなく、通過帯域幅が比較的広くて阻止域の傾斜が急峻な、理想的な周波数特性を有するFIRデジタルフィルタを簡易的に設計することができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
図1において、まず、数値列が対称型の第1のフィルタ係数を生成する(ステップS1)。この第1のフィルタ係数の生成法については、本発明では特に限定しない。フィルタ係数の数値列が対称型になっていれば、近似式や窓関数を用いる従来の設計法を用いても良いし、本発明者が過去に提案した設計法(例えば、特願2001−365146号、特願2002−129168号、特願2002−205014号、特願2002−306315号、特願2002−306316号、特願2003−56265号など)を用いても良い。
本発明者が過去に提案したフィルタ設計法を簡単に説明すると、次の通りである。特願2001−365146号に記載の第1の設計法は、所望の周波数特性を表す複数の振幅値を入力し、当該入力した数値列を逆フーリエ変換した後、得られた数値列に対して窓掛けを行うことによってフィルタ係数を求める方法である。また、特願2002−129168号、特願2002−205014号、特願2002−306315号、特願2002−306316号に記載の第2の設計法は、所定の基本的な数値列から成る1以上の基本ユニットフィルタを作成し、これらを任意に縦続接続することによってフィルタ係数を求める方法である。
また、特願2003−56265号に記載の第3の設計法は、所定の基本的な数値列より成るフィルタ係数に基づきFIR演算を行った後、その演算データに対して、演算前の元データとそれより所定遅延量だけ前の前データとを加算し振幅調整して出力する移動平均演算をn回繰り返し行うことによってフィルタ係数を求める方法である。少ないタップ数で減衰特性の良好な周波数特性が得られるという点では、第2の設計法または第3の設計法を用いるのが好ましい。
図2中に符号Aで示す周波数特性は、ステップS1で生成した第1のフィルタ係数によって実現されるオリジナルフィルタの周波数−ゲイン特性の一例を示している。なお、ここでは、オリジナルフィルタの周波数特性においてゲインおよび周波数を“1”で基準化(正規化)している。
次に、第1のフィルタ係数により表される周波数振幅特性(図2中のA)において極大値をとる位置に接点を有し、当該接点において極小値をとる周波数振幅特性(図2中のB)を実現する対称型の第2のフィルタ係数を求める(ステップS2)。周波数振幅特性がこのような特徴を有していれば、第2のフィルタ係数をどのような方法を用いて生成しても良いが、例えば次のような演算によって求めることができる。
すなわち、オリジナルフィルタを構成する第1のフィルタ係数の数値列を{Hm,Hm−1,・・・,H1,H0,H−1,・・・,H−(m−1),H−m}(H0が中央値で、当該中央値を境として対称型となっている。Hm=H−m,Hm−1=H−(m−1),・・・,H1=H−1)とした場合に、第2のフィルタ係数は、{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH−(m−1),−kH−m}(kは任意の正数)なる演算によって求める。つまり、中央値以外の係数は全て−k倍し、中央値だけは−k倍して更に(1+k)を加算することによって、第2のフィルタ係数を求める。以下、この第2のフィルタ係数を有するフィルタを「調整フィルタ」と呼ぶ。
このようにして第2のフィルタ係数を求めたら、第1のフィルタ係数を有するオリジナルフィルタと、第2のフィルタ係数を有する調整フィルタとを縦続接続した場合に得られる第3のフィルタ係数を求める演算を行う(ステップS3)。オリジナルフィルタと調整フィルタとを縦続接続することにより、第1のフィルタ係数と第2のフィルタ係数とが乗算・加算されて新しいフィルタ係数が作り出される。
図3は、ステップS3における演算内容を説明するための図である。この図3に示すように、ステップS3では、第1のフィルタ係数を構成する(2m+1)個(2m+1は、第1のフィルタ係数を構成する全数値列の個数を表す)の数値列と、第2のフィルタ係数を構成する(2m+1)個の数値列との畳み込み演算を行うことによって、第3のフィルタ係数の数値列を求める。
この畳み込み演算では、第2のフィルタ係数については、{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH− (m−1),−kH−m}の全ての数値列を常に固定的に乗加算の対象とする。一方、第1のフィルタ係数については、{Hm,Hm−1,・・・,H1,H0,H−1,・・・,H−(m−1),H−m}の数値列の前後に0列があるものと仮定し、この0値も含めて(2m+1)個の数値列を畳み込み演算の対象とする。このとき、第3のフィルタ係数におけるn番目の数値を求める際には、第1のフィルタ係数におけるn番目の数値を含めてそれより前にある(2m+1)個の数値列を乗加算の対象とする。
例えば、第3のフィルタ係数における1番目の数値を求める際には、第2のフィルタ係数における全ての数値列{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH−(m−1),−kH−m}(符号31で示す点線で囲った配列)と、第1のフィルタ係数における1番目の数値を含めてそれより前にある(2m+1)個の数値列{0,0,・・・,0,Hm}(符号32で示す点線で囲った配列)とを対象として、配列の対応する要素の積を合計する演算を行う。すなわち、この場合の演算結果は、(Hm×(−kH−m))となる。
また、第3のフィルタ係数における2番目の数値を求める際には、第2のフィルタ係数における全ての数値列{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH−(m−1),−kH−m}(符号31で示す点線で囲った配列)と、第1のフィルタ係数における2番目の数値を含めてそれより前にある(2m+1)個の数値列{0,0,・・・,0,Hm,Hm−1}(符号33で示す点線で囲った配列)とを対象として、配列の対応する要素の積を合計する演算を行う。すなわち、この場合の演算結果は、(Hm×(−kH−m)+Hm−1×(−kH−(m−1)))となる。以下同様にして、第3のフィルタ係数を構成する(2×(2m+1)−1)個の数値列を求める。
なお、ここでは、オリジナルフィルタに対して1個の調整フィルタを縦続接続する場合を例にとって説明したが、複数の調整フィルタを縦続接続するようにしても良い。この場合は、図1中に点線の矢印で示すように、ステップS3で生成した第3のフィルタ係数を新たに第1のフィルタ係数とみなしてステップS2に戻る。そして、当該新たな第1のフィルタ係数(オリジナルフィルタに単一パルスを入力した場合に1段目の調整フィルタから出力される数値列に相当)に基づいて、第2のフィルタ係数を再び求める(新しい調整フィルタを生成する)。
さらに、こうして生成した新たな第1のフィルタ係数と新たな第2のフィルタ係数とを畳み込み演算することによって、新しい調整フィルタを更に縦続接続した場合に得られる新たな第3のフィルタ係数を演算する。このような演算を、縦続接続したい調整フィルタの数だけ繰り返し行う。
図4は、オリジナルフィルタ(バンドパスフィルタ)の周波数振幅特性およびこのオリジナルフィルタに対して1〜3個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。図4において、41はオリジナルフィルタの周波数振幅特性、42は調整フィルタを1個縦続接続した場合に得られる周波数振幅特性、43は調整フィルタを2個縦続接続した場合に得られる周波数振幅特性、44は調整フィルタを3個縦続接続した場合に得られる周波数振幅特性をそれぞれ示す。
この図4に示すように、オリジナルフィルタに対して本実施形態の調整フィルタを縦続接続することにより、フィルタの通過帯域幅を広げ、かつ、阻止域の傾斜を急峻にすることができる。縦続接続する調整フィルタの数を多くすることにより、通過帯域幅がより広くて傾斜もより急峻なフィルタ特性を得ることができる。
なお、この図4は、第1のフィルタ係数から第2のフィルタ係数を求める際のパラメータkの値を1.5とした場合の周波数特性を示している。図4に示されるように、k≠1とした場合には、周波数特性の頂部に若干のオーバーシュートやリンギングが生じる。ただし、k=1とした場合には、周波数特性の頂部にオーバーシュートやリンギングが生じることはなく、平坦な特性となる。
図5は、本実施形態の調整フィルタを縦続接続した場合に得られる周波数特性の変化の原理を説明するための図である。なお、この図5は基本原理を説明するためのものであり、図4に示した周波数特性の波形と一致するものではない。この図5は、k=1とした場合の原理を示している。
図5(a)は、オリジナルフィルタに対して1個目の調整フィルタを縦続接続した場合における周波数振幅特性の変化を示す。図5(a)において、Aはオリジナルフィルタの周波数振幅特性、Bは当該オリジナルフィルタが有する第1のフィルタ係数から生成した第2のフィルタ係数を有する1個目の調整フィルタの周波数振幅特性、Cはオリジナルフィルタと1個目の調整フィルタとを縦続接続した場合に得られる周波数振幅特性を示す。
すなわち、オリジナルフィルタに対して調整フィルタを1個縦続接続した場合の新たな周波数振幅特性Cは、オリジナルフィルタの周波数振幅特性Aと、調整フィルタの周波数振幅特性Bとを掛け合わせた形となる。2個目の調整フィルタを更に縦続接続する場合には、このように生成された周波数振幅特性Cに対応する第3のフィルタ係数を新たに第1のフィルタ係数として用い、2個目の調整フィルタに関する新たな第2のフィルタ係数を求める。
図5(b)は、2個目の調整フィルタを更に縦続接続した場合における周波数振幅特性の変化を示す。図5(b)において、A’は1個目の調整フィルタを縦続接続した場合の周波数振幅特性であり、図5(a)の手順で求められた周波数振幅特性Cと同じものである。B’は当該周波数振幅特性A’に対応する新たな第1のフィルタ係数から生成した新たな第2のフィルタ係数を有する2個目の調整フィルタの周波数振幅特性である。C’は2個目の調整フィルタを更に縦続接続した場合に得られる新たな周波数振幅特性であり、2つの周波数振幅特性A’,B’を掛け合わせた形のものとなっている。
ここでは図示しないが、3個目の調整フィルタを更に縦続接続する場合には、図5(b)の手順で生成された新たな周波数振幅特性C’に対応するフィルタ係数を再び第1のフィルタ係数として用い、3個目の調整フィルタに関する新たな第2のフィルタ係数を求める。そして、上述と同様の手順に従って新たな周波数振幅特性を得る。
このように、オリジナルフィルタに対して複数の調整フィルタを縦続接続することにより、フィルタの通過帯域幅を広げるとともに、阻止域の傾斜を急峻にしていくことができる。k=1とした場合には、オリジナルフィルタの周波数振幅特性と調整フィルタの周波数振幅特性とは、振幅が“1”のラインを境として線対称となる。したがって、調整フィルタを何個接続しても、掛け合わされた新たなフィルタの周波数振幅特性が振幅“1”のラインを超えることはなく、オーバーシュートやリンギングは発生しない。このことから、kの値は“1”とするのが好ましい。
一方、kの値を1より大きくすると、多少のオーバーシュートやリンギングは発生するが、1個当たりの調整フィルタの接続で広げられる通過帯域幅の割合を大きくすることができる。したがって、少ない数の調整フィルタで通過帯域幅を効率的に広げたい場合には、kの値を大きくするのが良い。この場合において、k≠1として第2のフィルタ係数を求めた調整フィルタを複数段縦続接続した後、最終段にk=1の調整フィルタを接続することによって、通過帯域幅を効率的に広げるとともに、オーバーシュートやリンギングのない良好な周波数特性を得ることができる。
図6は、オリジナルフィルタに対して、k=1.5の調整フィルタを3段縦続接続するとともに、最終段にk=1の調整フィルタを更に縦続接続した場合に得られる周波数特性を示す図である。この図6から分かるように、最終段にk=1の調整フィルタを接続すれば、通過帯域幅が広く、阻止域の傾斜が急峻で、かつ、頂部が平坦な良好な周波数特性を得ることができる。また、フィルタ係数は対称型なので、位相の直線性も確保できる。また、k<1としてkの値を調整することにより、通過周波数帯域幅を微調整することが可能である。
なお、以上ではバンドパスフィルタの設計例について説明したが、ローパスフィルタやハイパスフィルタなども同様の手順で設計することができる。図7は、オリジナルのローパスフィルタの周波数振幅特性およびこのオリジナルローパスフィルタに対して1〜5個の調整フィルタを縦続接続した場合に得られる周波数振幅特性を示す図である。この図7は、k=1とした場合の周波数特性を示している。
図7において、51はオリジナルローパスフィルタの周波数振幅特性、52〜56はそれぞれ調整フィルタを1個〜5個縦続接続した場合に得られる周波数振幅特性を示す。この図7に示すように、ローパスフィルタの場合も図4のバンドパスフィルタと同様に、調整フィルタを縦続接続することによってフィルタの通過帯域幅を広げ、かつ、阻止域の傾斜を急峻にすることができる。また、縦続接続する調整フィルタの数を多くすることにより、通過帯域幅がより広くて傾斜もより急峻なフィルタ特性を得ることができる。
最後に、以上のようにして生成した第3のフィルタ係数に対して、ビット数を減らす丸め処理によって不要なフィルタ係数を大幅に削減するとともに、整数化によってフィルタ係数を簡素化する(ステップS4)。以下に、このステップS4における丸め処理について詳しく説明する。図8は、例えば16ビットの演算精度で上述のステップS1〜S3の手順によって算出される第3のフィルタ係数の値(丸め処理前のもの)をグラフ化した図である。また、図9は、フィルタ係数を丸め処理する前におけるデジタルフィルタの周波数特性を示す図であり、(a)はゲインを直線目盛りで示し、(b)はゲインを対数目盛りで示している。
本発明者が過去に提案した第2のフィルタ設計法または第3のフィルタ設計法によって第1のフィルタ係数を求め、これをもとに第2のフィルタ、第3のフィルタ係数を以上の手順で求めると、第3のフィルタ係数の値は、図8に示すように中央(係数H0)で最大となる。また、各フィルタ係数の値の差は、従来のフィルタ設計法で得られるフィルタ係数のそれに比べて極めて大きくなる。そのため、所定の閾値より小さい値のフィルタ係数を丸め処理によって破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。また、周波数特性の帯域外減衰量はフィルタ係数のビット数によって制約を受けるが、図9に示すように、第2または第3のフィルタ設計法によって得られる周波数特性は非常に深い減衰を持っているので、ビット数を多少減らしても、所望の減衰量は確保できる。
したがって、丸め処理によって不要なフィルタ係数を大幅に削減することができる。例えば、フィルタ係数の下位数ビットを切り捨てることでビット数を減らすことにより、その下位数ビットだけで表される最大値よりも小さい値のフィルタ係数を全て“0”に丸めて破棄することができる。よって、フィルタ係数の数を減らすために従来のような窓掛けは必要ない。
この点は、従来のフィルタ設計法と大きく異なる本実施形態の特徴点である。すなわち、従来のフィルタ設計法では、求められる各フィルタ係数の値の差がそれほど大きくならないため、フィルタ係数の値で丸め処理をすると、周波数特性を決定付ける主要なフィルタ係数も破棄されてしまうことが多い。また、非常に深い帯域外減衰量を持った周波数特性を得ることも困難なため、フィルタ係数のビット数を減らすと必要な帯域外減衰量を確保できなくなってしまう。よって、従来はビット数を減らす丸め処理を行うことができず、窓掛けによってフィルタ係数の数を減らさざるを得なかった。そのため、周波数特性に打ち切り誤差が発生し、所望の周波数特性を得ることが極めて困難であった。
これに対して、本実施形態では窓掛けを行うことなくフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることはない。したがって、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。周波数−ゲイン特性では平坦部のリップルが極めて小さく、±0.3dBの範囲内に充分収めることができる。
上述のような手順で求まる第3のフィルタ係数の値は小数であり、10ビットの丸め処理によってその桁数を減らすことができるが、ランダムな値の集合である。この数値列をそのままフィルタ係数として用いても良いが、デジタルフィルタを実装する際に使用する乗算器の数をより少なくするために、フィルタ係数の数値を更に丸めて単純化するようにしても良い。そのために本実施形態では、10ビットで丸めたフィルタ係数の数値列を210倍して小数点以下を丸め、係数値を整数化する。
このような整数化の丸め演算を行うと、デジタルフィルタの各タップからの出力信号に対して整数のフィルタ係数を個別に乗算し、それぞれの乗算出力を全て加算した後にまとめて1/210倍するようにデジタルフィルタを構成することが可能となる。しかも、整数のフィルタ係数は、2i+2j+・・・(i,jは任意の整数)のように2進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
なお、ここでは丸め処理の例として、フィルタ係数のデータに対して下位数ビットを切り捨てることによってyビットのデータをxビット(x<y)に丸める処理について説明したが、この例に限定されない。例えば、各フィルタ係数の値を所定の閾値と比較し、閾値より小さいフィルタ係数を破棄するようにしても良い。この場合、残されるフィルタ係数は元のyビットのままであるから、これを整数化する際には2y倍する。
以上に説明した本実施形態によるフィルタ設計法を実現するための装置は、ハードウェア構成、DSP、ソフトウェアの何れによっても実現することが可能である。例えばソフトウェアによって実現する場合、本実施形態のフィルタ設計装置は、実際にはコンピュータのCPUあるいはMPU、RAM、ROMなどで構成され、RAMやROMあるいはハードディスク等に記憶されたプログラムが動作することによって実現できる。
例えば、第2または第3の設計法に関する各種の基本フィルタのフィルタ係数をデータとしてRAMやROM、ハードディスク等の記憶装置に記憶しておく。そして、ユーザが基本フィルタに関する任意の組み合わせと接続順などを指示すると、CPUが、上記記憶装置に記憶されているフィルタ係数のデータを用いて、指示された内容に対応するオリジナルフィルタの第1のフィルタ係数を求める。
さらに、ユーザが調整フィルタに関するパラメータkと調整フィルタの縦続接続数を指示入力すると、CPUが、第1のフィルタ係数から第2のフィルタ係数を求め、更に第2のフィルタ係数から第3のフィルタ係数を求めるようにすることが可能である。この場合、記憶装置が本発明のフィルタ係数記憶手段に相当し、CPUが本発明の演算手段に相当する。
ユーザが各基本フィルタに関する組み合わせと接続順、調整フィルタに関するパラメータk、調整フィルタの縦続接続数などを指示する際のユーザインタフェースは、任意に構成することが可能である。例えば、基本フィルタのタイプを画面表示された一覧表からキーボードやマウスの操作によって選択できるようにするとともに、各種パラメータの値をキーボードやマウスの操作によって入力できるようにする。CPUは、このようにして入力された情報を取得し、その入力情報により指示された内容に対応するフィルタ係数を上述した演算により求める。
また、各種の基本フィルタをアイコン化してディスプレイ画面上に表示するようにし(各アイコンに対応してフィルタ係数をデータとして記憶装置に記憶している)、ユーザがこれらのアイコンをキーボードやマウスの操作によりディスプレイ画面上で任意に組み合わせて配置する。また、その他の必要なパラメータはキーボードやマウスの操作によって入力する。そして、CPUがアイコンの配列や入力パラメータに対応するフィルタ係数を自動的に演算して求めるようにしても良い。
また、パーソナルコンピュータ等にインストールされている表計算ソフトの関数機能などを利用して、第1のフィルタ係数、第2のフィルタ係数、第3のフィルタ係数を順に求める演算を行うようにすることも可能である。この場合の演算は、実際には、表計算ソフトがインストールされているパーソナルコンピュータ等のCPU、ROM、RAMなどによって行われる。
また、求めたフィルタ係数を自動的にFFT変換し、その結果を周波数−ゲイン特性図としてディスプレイ画面に表示するようにしても良い。このようにすれば、設計したフィルタの周波数特性を視覚的に確認することができ、フィルタ設計をより容易に行うことができる。
このようなフィルタ設計装置は、コンピュータが上記本実施形態の機能を果たすように動作させるプログラムを例えばCD−ROMのような記録媒体に記録し、これをコンピュータに読み込ませることによって実現できる。上記プログラムを記録する記録媒体としては、CD−ROM以外に、フレキシブルディスク、ハードディスク、磁気テープ、光ディスク、光磁気ディスク、DVD、不揮発性メモリカード等を用いることができる。また、上記プログラムをインターネット等のネットワークを介してコンピュータにダウンロードすることによっても実現できる。
なお、コンピュータが供給されたプログラムを実行することにより上述の実施形態の機能が実現されるだけでなく、そのプログラムがコンピュータにおいて稼働しているOS(オペレーティングシステム)あるいは他のアプリケーションソフト等と共同して上述の実施形態の機能が実現される場合や、供給されたプログラムの処理の全てあるいは一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて上述の実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。
次に、本実施形態によるデジタルフィルタの構成について説明する。実際にデジタルフィルタを電子機器内や半導体ICに実装する場合には、例えば、オリジナルフィルタおよび調整フィルタをそれぞれハードウェアとして構成し、それらをハードウェアとして接続することによってデジタルフィルタを実装することが可能である。図10は、その場合のデジタルフィルタの一構成例を示す図である。図10に示すデジタルフィルタは、1個のオリジナルフィルタ10と1個の調整フィルタ20とを縦続接続して構成されている。オリジナルフィルタ10は、縦続接続されたi個のD型フリップフロップ11−1〜11−iと、(i+1)個の係数器12−1〜12−(i+1)と、i個の加算器13−1〜13−iとにより構成される。
i個のD型フリップフロップ11−1〜11−iは、入力データを1クロックCKずつ順次遅延させる。(i+1)個の係数器12−1〜12−(i+1)は、各D型フリップフロップ11−1〜11−iの入出力タップから取り出した信号に対し、対称型の第1のフィルタ係数をそれぞれ乗算する。i個の加算器13−1〜13−iは、各係数器12−1〜12−(i+1)での乗算結果を全て加算して出力する。
オリジナルフィルタ10から出力されたデータは、調整フィルタ20に入力されるとともに、フィルタ係数演算部30に入力される。フィルタ係数演算部30は、オリジナルフィルタ10からの出力データをもとに、調整フィルタ20に設定する第2のフィルタ係数を演算する。
すなわち、オリジナルフィルタ10に単一パルスを入力したときに当該オリジナルフィルタ10から出力されるデータ列を{Hm,Hm−1,・・・,H1,H0,H−1,・・・,H−(m−1),H−m}とすると、フィルタ係数演算部30は、{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH−(m−1),−kH−m}(kは任意に設定した正数)なる演算によって第2のフィルタ係数を求める。そして、求めた第2のフィルタ係数を、調整フィルタ20内の(j+1)個の係数器22−1〜22−(j+1)にそれぞれ設定する。
調整フィルタ20は、縦続接続されたj個(j>i)のD型フリップフロップ21−1〜22−jと、(j+1)個の係数器22−1〜22−(j+1)と、j個の加算器23−1〜23−jとにより構成される。j個のD型フリップフロップ21−1〜21−iは、オリジナルフィルタ10からの入力データを1クロックCKずつ順次遅延させる。(j+1)個の係数器22−1〜22−(j +1)は、各D型フリップフロップ21−1〜21−jの入出力タップから取り出した信号に対し、対称型の第2のフィルタ係数をそれぞれ乗算する。j個の加算器23−1〜23−jは、各係数器22−1〜22−(j+1)の乗算結果を全て加算して出力する。
ここでは、オリジナルフィルタ10に対して調整フィルタ20を1個だけ縦続接続する構成例について示したが、2個以上の調整フィルタ20を縦続接続する場合には、図10に示した構成の後段にフィルタ係数演算部30および調整フィルタ20と同様の構成を複数接続していけば良い(ただし、調整フィルタに必要な係数の数は、後段にいくほど増えていく)。
また、図10のようにオリジナルフィルタ10と調整フィルタ20とを縦続接続する形ではなく、単に複数のD型フリップフロップと複数の係数器と複数の加算器とにより1つのデジタルフィルタを構成し、図1のような手順で求めた最終的なフィルタ係数を、当該デジタルフィルタ内の複数の係数器に設定する形で構成するようにしても良い。
その場合、求められたフィルタ係数の数は10ビットの丸め処理によって大幅に削減されており、かつ、210倍による丸め処理によって単純な整数に変換されている。したがって、タップ数は少なく、しかも基本的に乗算器は不要でビットシフト回路にて対応可能であり、所望の周波数特性を小さな回路規模で高精度に実現することができる。
なお、上述のように、本実施形態のフィルタ設計法によれば、調整フィルタの縦続数を増やすと、後段の調整フィルタに必要なフィルタ係数の数は増えていく。したがって、デジタルフィルタ全体でのタップ数を少なくするためには、大元となるオリジナルフィルタで使用するフィルタ係数の数をできるだけ少なくしておくのが好ましい。この点に関し、本発明者が既に出願した特開2003−56265号に係る第3の設計法によれば、非常に少ないタップ数で良好な周波数特性を有するオリジナルフィルタを構成することが可能である。以下に、この第3の設計法に関する特開2003−号の内容を抜粋して説明する。なお、以下の説明においてm,i,j,xのパラメータを用いるが、上述したものとは意味が全く異なるものである。
既出願に係る第3の設計法では、特定のインパルス応答を有する数種類の基本フィルタ群を定義し、それらを任意に縦続接続する形で所望の周波数特性を有するFIRフィルタを実現する。基本フィルタは、基本ローパスフィルタ、基本ハイパスフィルタ、基本バンドパスフィルタの3種類に大きく分類される。以下、これらの基本フィルタについて説明する。
<基本ローパスフィルタLman(m,nは変数で、nは自然数)>
基本ローパスフィルタLmanのフィルタ係数は、“−1,m,−1”の数値列を出発点として、演算前の元データとそれより所定遅延量だけ前の前データとを順次加算していく移動平均演算によって求める。
図11は、基本ローパスフィルタL4an(m=4とした場合)のフィルタ係数を示す図である。図11において、移動平均演算によってn列目の上からj番目のフィルタ係数を求める際に、元データとは、(n−1)列目の上からj番目のデータを指す。また、前データとは、(n−1)列目の上から(j−1)番目のデータを指す。
例えば、基本ローパスフィルタL4a1の上から1番目の数値“−1”は元データ“−1”と前データ“0”とを加算することによって得られ、2番目の数値“3”は元データ“4”と前データ“−1”とを加算することによって得られる。また、3番目の数値“3”は元データ“−1”と前データ“4”とを加算することによって得られ、4番目の数値“−1”は元データ“0”と前データ“−1”とを加算することによって得られる。
図11に示す基本ローパスフィルタL4anの何れのフィルタ係数も、その数値列は対称型であり、数値列の1つ飛びの合計値が同符号で互いに等しくなるという性質を持っている(例えば基本ローパスフィルタL4a4の場合、−1+9+9+(−1)=16,0+16+0=16)。
上記“−1,m,−1”の数値列は、大元の数値列“−1,N”を基本として生成する。この数値列“−1,N”をフィルタ係数とする基本単位フィルタは、1〜2個(N=0の場合は1個、それ以外の場合は2個)のタップを有する。なお、Nの値は必ずしも整数である必要はない。
この数値列“−1,N”をフィルタ係数として持つ基本単位フィルタは非対称型なので、対称型とするために、これを偶数段縦続接続して使用する必要がある。例えば2段縦続接続した場合、数値列“−1,N”の畳み込みにより、フィルタ係数は“−N,N2+1,−N”となる。ここで、(N2+1)/N=mとすると、mを整数としたとき、N=(m+(m2−4)1/2)/2となる。
図11の例のようにm=4とした場合、N=2+√3である。すなわち、基本単位フィルタの係数は“−1,3.732”となる(ここでは、小数点以下を3桁まで表示している)。また、この基本単位フィルタを2段縦続接続した場合のフィルタ係数は、“−3.732,14.928,−3.732”となる。この数値列は、−1:4:−1の関係になっている。
この数値列を実際にフィルタ係数として使用する場合は、数値列の各値を2N(=2*(2+√3)=7.464)で割ることにより、フィルタ係数の数値列をFFT変換した場合の振幅が“1”となるようにして、ゲインを“1”に基準化する。すなわち、実際に使用するフィルタ係数の数値列は、“−1/2,2,−1/2”となる。この実際に使用する数値列“−1/2,2,−1/2”は、元の数値列“−1,4,−1”をx倍(x=1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本ローパスフィルタLmanのフィルタ係数は、何れもその数値列の総和が“1”で、数値列の1つ飛びの合計値が同符号で互いに等しくなるという性質を持つ。
図12は、基本ローパスフィルタL4a4(m=4,n=4とした場合)のハードウェア構成を示す図である。図12に示すように、基本ローパスフィルタL4a4は、出発点となる数値列“−1/2,2,−1/2”をフィルタ係数として持つFIR演算部101と、当該数値列を移動平均演算する移動平均演算部201とを備えて構成される。このうちFIR演算部101は、縦続接続された2個のD型フリップフロップ1−1〜1− 2と、3個の係数器2−1〜2−3と、2個の減算器3−1〜3−2とにより構成される。
2個のD型フリップフロップ1−1〜1−2は、入力データを1クロックCKずつ順次遅延させる。3個の係数器2−1〜2−3は、各D型フリップフロップ1−1〜1−2の入出力タップから取り出した信号に対し、1/2,2,1/2のフィルタ係数をそれぞれ乗算する。第1の減算器3−1は、第2の係数器2−2の乗算結果から第1の係数器2−1の乗算結果を減算する。また、第2の減算器3−2は、第1の減算器3−1の減算結果から第3の係数器2−3の乗算結果を減算する。
また、移動平均演算部201は、何れも同様に構成された4個の積分器4−1〜4−4を縦続接続することによって構成される。例えば1段目の積分器4−1は、入力データを1クロック分遅延させるD型フリップフロップ5−1と、当該D型フリップフロップ5−1を通らない元データとD型フリップフロップ5−1を通って遅延を受けた前データとを加算する加算器6−1と、加算結果の振幅を元に戻すための調整器7−1とにより構成される。
この図12に示す基本ローパスフィルタL4a4の構成では、フィルタ係数の乗算が行われる係数器2−1〜2−3およびその係数器2−1〜2−3へのデータの取出口である出力タップが必要なのは、初段のFIR演算部101だけである。しかも、その数はわずか3個である。
さらに、フィルタ係数の値は1/2,2,1/2であるので、係数器2−1〜2−3はビットシフト回路で構成することが可能である。また、4個の積分器4−1〜4−4が備える調整器7−1〜7−4もビットシフト回路で構成することが可能である。nの値を4以外として調整器の数が変わっても、その調整器は全てビットシフト回路で構成できる。よって、基本ローパスフィルタL4anのハードウェア構成において、乗算器は全く不要である。
なお、ここではm=4の場合について説明したが、m=2i(iは整数)であれば、全ての係数器と調整器とをビットシフト回路で構成することが可能であり、乗算器は必要でない。
図13は、基本ローパスフィルタL4a4のフィルタ係数の数値列をFFT変換して得られる周波数特性(周波数−ゲイン特性および周波数−位相特性)を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを32倍して示している。一方、周波数は“1”で基準化している。
この図13から分かるように、周波数−ゲイン特性は通過域がほぼ平坦で、阻止域の傾斜がなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、図12のように構成するだけで、オーバーシュートやリンギングも存在しない良好な周波数特性を持つローパスフィルタを得ることができる。
図14は、基本ローパスフィルタL4anのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図14より、nの値が大きくなるほど阻止域の傾斜が急峻になり、通過域のバンド幅は狭くなる。また、nの値が小さいときは、周波数特性の頂部は両端が盛り上がる。nの値が大きくなるに従って頂部は徐々に平坦に近づき、n=4で完全に平坦になる。nの値がそれより大きくなると、今度は頂部の両端が中央値より低くなっていく。
なお、ここではm=4とした場合の周波数特性を示しているが、mの値を小さくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。以上のことから、パラメータm,nの値を適当に設定することにより、基本ローパスフィルタLmanの周波数特性を調整することができる。
<基本ハイパスフィルタHmsn(m,nは変数で、nは自然数)>
基本ハイパスフィルタHmsnのフィルタ係数は、“1,m,1”の数値列を出発点として、演算前の元データからそれより所定遅延量だけ前の前データを順次減算していく移動平均演算によって求める。
図15は、基本ハイパスフィルタH4sn(m=4とした場合)のフィルタ係数を示す図である。図15において、移動平均演算によってn列目の上からj番目のフィルタ係数を求める際に、元データとは、(n−1)列目の上からj番目のデータを指す。また、前データとは、(n−1)列目の上から(j−1)番目のデータを指す。
例えば、基本ハイパスフィルタH4s1の上から1番目の数値“1”は元データ“1”から前データ“0”を減算することによって得られ、2番目の数値“3”は元データ“4”から前データ“1”を減算することによって得られる。また、3番目の数値“−3”は元データ“1”から前データ“4”を減算することによって得られ、4番目の数値“−1”は元データ“0”から前データ“1”を減算することによって得られる。
図15に示す基本ハイパスフィルタH4snにおいて、nが偶数のときは何れのフィルタ係数も、その数値列は対称型であり、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている(例えば基本ハイパスフィルタH4s4の場合、1+(−9)+(−9)+1=−16,0+16+0=16)。nが奇数のときは、その数値列は絶対値が対称型となっており、前半の数値列と後半の数値列とは逆符号になる。また、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている。
上記“1,m,1”の数値列は、大元の数値列“1,N”を基本として生成する。この数値列“1,N”をフィルタ係数とする基本単位フィルタは、1〜2個(N=0の場合は1個、それ以外の場合は2個)のタップを有する。なお、Nの値は必ずしも整数である必要はない。
この数値列“1,N”をフィルタ係数として持つ基本単位フィルタは非対称型なので、対称型とするために、これを偶数段縦続接続して使用する必要がある。例えば2段縦続接続した場合、数値列“1,N”の畳み込みにより、フィルタ係数は“N,N2+1,N”となる。ここで、(N2+1)/N=mとすると、mを整数としたとき、N=(m+(m2−4)1/2)/2となる。
図15の例のようにm=4とした場合、N=2+√3である。すなわち、基本単位フィルタの係数は“1,3.732”となる(ここでは、小数点以下を3桁まで表示している)。また、この基本単位フィルタを2段縦続接続した場合のフィルタ係数は、“3.732,14.928,3.732”となる。この数値列は、1:4:1の関係になっている。
この数値列を実際にフィルタ係数として使用する場合は、数値列の各値を2N(=2*(2+√3)=7.464)で割ることにより、フィルタ係数の数値列をFFT変換した場合の振幅が“1”となるようにして、ゲインを“1”に基準化する。すなわち、実際に使用するフィルタ係数の数値列は、“1/2,2,1/2”となる。この実際に使用する数値列“1/2,2,1/2”も、元の数値列“1,4,1”をx倍(x=1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本ハイパスフィルタHmsnのフィルタ係数は、何れもその数値列の総和が“0”で、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持つ。
ここでは、基本ハイパスフィルタHmsnのハードウェア構成については図示を省略するが、図12と同様に構成される。すなわち、出発点となる数値列“1/2,2,1/2”をフィルタ係数として持つFIR演算部と、この数値列を移動平均演算する移動平均演算部とにより構成される。この基本ハイパスフィルタHmsnのハードウェア構成においても、出力タップが必要なのは初段のFIR演算部だけであり、タップ数はわずかである。また、乗算器は全く不要である。
基本ハイパスフィルタHmsnの周波数特性についても図示を省略するが、基本ローパスフィルタLmanと同様に、周波数−ゲイン特性は通過域がほぼ平坦で、阻止域の傾斜がなだらかな特性となる。また、周波数−位相特性では直線的な特性も得られる。すなわち、オーバーシュートやリンギングも存在しない良好な周波数特性を持つハイパスフィルタを得ることができる。ここで、nの値が大きくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。また、mの値を小さくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。
<基本バンドパスフィルタBmsn(m,nは変数で、nは自然数)>
基本バンドパスフィルタBmsnのフィルタ係数は、“1,0,m,0,1”の数値列を出発点として、元データから2つ前の前データを順次減算していく移動平均演算によって求める。
図16は、基本バンドパスフィルタB4sn(m=4とした場合)のフィルタ係数を示す図である。図16において、移動平均演算によってn列目の上からj番目のフィルタ係数を求める際に、元データとは、(n−1)列目の上からj番目のデータを指す。また、前データとは、(n−1)列目の上から(j−2)番目のデータを指す。
例えば、基本バンドパスフィルタB4s1の上から1番目の数値“1”は元データ“1”から前データ“0”を減算することによって得られ、3番目の数値“3”は元データ“4”から前データ“1”を減算することによって得られる。また、5番目の数値“−3”は元データ“1”から前データ“4”を減算することによって得られ、7番目の数値“−1”は元データ“0”から前データ“1”を減算することによって得られる。
図16に示す基本バンドパスフィルタB4snにおいて、nが偶数とのきは何れのフィルタ係数も、その数値列は対称型であり、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている(例えば基本バンドパスフィルタB4s4の場合、1+(−9)+(−9)+1=−16,0+16+0=16)。nが奇数のときは、その数値列は絶対値が対称型となっており、前半の数値列と後半の数値列とは逆符号になる。また、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている。
上記“1,0,m,0,1”の数値列は、大元の数値列“1,0,N”を基本として生成する。この数値列“1,0,N”をフィルタ係数とする基本単位フィルタは、1〜2個(N=0の場合は1個、それ以外の場合は2個)のタップを有する。なお、Nの値は必ずしも整数である必要はない。
この数値列“1,0,N”をフィルタ係数として持つ基本単位フィルタは非対称型なので、対称型とするために、これを偶数段縦続接続して使用する必要がある。例えば2段縦続接続した場合、数値列“1,0,N”の畳み込みにより、フィルタ係数は“N,0,N2+1,0,N”となる。ここで、(N2+1)/N=mとすると、mを整数としたとき、N=(m+(m2−4)1/2)/2となる。
図16の例のようにm=4とした場合、N=2+√3である。すなわち、基本単位フィルタの係数は“1,0,3.732”となる(ここでは、小数点以下を3桁まで表示している)。また、この基本単位フィルタを2段縦続接続した場合のフィルタ係数は、“3.732,0,14.928,0,3.732”となる。この数値列は、1:0:4:0:1の関係になっている。
この数値列を実際にフィルタ係数として使用する場合は、数値列の各値を2N(=2*(2+√3)=7.464)で割ることにより、フィルタ係数の数値列をFFT変換した場合の振幅が“1”となるようにして、ゲインを“1”に基準化する。すなわち、実際に使用するフィルタ係数の数値列は、“1/2,0,2,0,1/2”となる。この実際に使用する数値列“1/2,0,2,0,1/2”も、元の数値列“1,0,4,0,1”をx倍(x=1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本バンドパスフィルタBmsnのフィルタ係数は、何れもその数値列の総和が“0”で、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持つ。
ここでは、基本バンドパスフィルタBmsnのハードウェア構成については図示を省略するが、図12と同様に構成される。すなわち、出発点となる数値列“1/2,0,2,0,1/2”をフィルタ係数として持つFIR演算部と、この数値列を移動平均演算する移動平均演算部とにより構成される。この基本バンドパスフィルタBmsnのハードウェア構成においても、出力タップが必要なのは初段のFIR演算部だけであり、タップ数はわずかである。また、乗算器は全く不要である。
基本バンドパスフィルタBmsnの周波数特性についても図示を省略するが、基本ローパスフィルタLmanや基本ハイパスフィルタHmsnと同様に、周波数−ゲイン特性は通過域がほぼ平坦で、阻止域の傾斜がなだらかな特性となる。また、周波数−位相特性では直線的な特性も得られる。すなわち、オーバーシュートやリンギングも存在しない良好な周波数特性を持つバンドパスフィルタを得ることができる。ここで、nの値が大きくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。また、mの値を小さくすると阻止域の傾斜は急峻になり、通過域のバンド幅は狭くなる。
以上に示した3種類の基本フィルタLman,Hmsn,Bmsnのインパルス応答をとると、何れも、時間軸に沿った標本位置が一定の間にあるときにのみ“0”以外の有限な値を有し、それ以外の領域では値が全て“0”となる関数、つまり所定の標本位置において値が“0”に収束する関数となる。このように、関数の値が局所的な領域で“0”以外の有限の値を有し、それ以外の領域で“0”となる場合を「有限台」と称する。
このような有限台のインパルス応答では、“0”以外の有限の値を有する局所的な領域内のデータだけが意味を持つ。この領域外のデータについては、本来これを考慮すべきであるのに無視している訳ではなく、理論的に考慮する必要がないため、打ち切り誤差は発生しない。したがって、上記3種類の基本フィルタLman,Hmsn,Bmsnを用いれば、窓関数を用いた窓掛けによって係数の打ち切りを行う必要もなく、良好なフィルタ特性を得ることができる。
以上詳しく説明したように、本実施形態では、数値列が対称型の第1のフィルタ係数を有するオリジナルフィルタと、オリジナルフィルタの周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる周波数振幅特性を実現する対称型の第2のフィルタ係数を有する調整フィルタとを縦続接続することによってフィルタ設計を行うようにしたので、窓関数や近似式を用いることなく、通過帯域幅が比較的広くて阻止域の傾斜が急峻な、理想的な周波数特性を有するFIRデジタルフィルタを簡易的に設計することができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明は、複数の遅延器から成るタップ付き遅延線を備え、各タップの出力信号をそれぞれフィルタ係数により数倍した後、それらの乗算結果を加算して出力するタイプのFIRデジタルフィルタに有用である。
Claims (15)
- 複数の遅延器から成るタップ付き遅延線における各タップの信号に対して、与えられるフィルタ係数をそれぞれ乗じた後、各乗算結果を加算して出力するデジタルフィルタを設計する方法であって、
数値列が対称型の第1のフィルタ係数を生成する第1のステップと、
上記第1のフィルタ係数により表される第1の周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる第2の周波数振幅特性を実現する対称型の第2のフィルタ係数を求める第2のステップと、
上記第1のフィルタ係数を有する第1のフィルタと上記第2のフィルタ係数を有する第2のフィルタとを縦続接続した場合に得られる第3のフィルタ係数を求める演算を行う第3のステップとを有し、
上記第2のステップで生成された上記第3のフィルタ係数を、求めるフィルタ係数として決定するようにしたことを特徴とするデジタルフィルタの設計方法。 - 上記第1のフィルタに単一パルスを入力した場合に出力される数値列を{Hm,Hm−1・・・,H1,H0,H−1,・・・,H−(m−1),H−m}で表した場合に、
上記第2のステップでは、上記第2のフィルタ係数を{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH−(m−1),−kH−m}(kは任意の正数)なる演算によって求めることを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。 - 上記第3のステップで生成された上記第3のフィルタ係数を上記第1のフィルタ係数として用いることにより、上記第2のステップおよび上記第3のステップの処理を2回以上繰り返し行い、最終段階の上記第3のステップで生成されたフィルタ係数を、求めるフィルタ係数として決定するようにしたことを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。
- 上記第3のステップで生成された上記第3のフィルタ係数を上記第1のフィルタ係数として用いることにより、上記第2のステップおよび上記第3のステップの処理を2回以上繰り返し行うように成し、
当該繰り返し処理の途中段階における上記第2のステップではk≠1として上記第2のフィルタ係数を求め、最終段階の上記第2のステップではk=1として上記第2のフィルタ係数を求めて、最終段階の上記第3のステップで生成された上記第3のフィルタ係数を、求めるフィルタ係数として決定するようにしたことを特徴とする請求の範囲第2項に記載のデジタルフィルタの設計方法。 - 上記第3のフィルタ係数のyビットのデータに対して下位数ビットを切り捨てる丸め処理を行うことによってxビット(x<y)のフィルタ係数を求めるようにしたことを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。
- 上記丸め処理によって求められたxビットのフィルタ係数を2x倍して小数点以下を丸める第2の丸め処理を行うことによってフィルタ係数を整数化するようにしたことを特徴とする請求の範囲第5項に記載のデジタルフィルタの設計方法。
- 数値列が対称型の第1のフィルタ係数に関するデータを記憶するフィルタ係数記憶手段と、
上記基本フィルタ係数記憶手段に記憶されたデータを用いて、上記第1のフィルタ係数により表される第1の周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる第2の周波数振幅特性を実現する対称型の第2のフィルタ係数を求める演算および、上記第1のフィルタ係数を有する第1のフィルタと上記第2のフィルタ係数を有する第2のフィルタとを縦続接続した場合に得られる第3のフィルタ係数を求める演算を行う演算手段とを備えたことを特徴とするデジタルフィルタの設計装置。 - 請求の範囲第1項〜第6項の何れか1項に記載されたデジタルフィルタの設計方法に関する処理手順をコンピュータに実行させるためのデジタルフィルタ設計用プログラム。
- 請求の範囲第7項に記載の各手段としてコンピュータを機能させるためのデジタルフィルタ設計用プログラム。
- 複数の遅延器から成るタップ付き遅延線における各タップの信号に対して、与えられるフィルタ係数をそれぞれ乗じた後、各乗算結果を加算して出力するように成されたデジタルフィルタであって、
数値列が対称型の第1のフィルタ係数を有するオリジナルフィルタと、
上記オリジナルフィルタの周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる周波数振幅特性を実現する対称型の第2のフィルタ係数を有する調整フィルタとを備え、
上記オリジナルフィルタと上記調整フィルタとを縦続接続することによって構成したことを特徴とするデジタルフィルタ。 - 上記オリジナルフィルタに単一パルスを入力した場合に当該オリジナルフィルタより出力される数値列を{Hm,Hm−1,・・・,H1,H0,H−1,・・・,H−(m−1),H−m}で表した場合、
上記調整フィルタを構成する第2のフィルタ係数は、{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH−(m−1),−kH−m}(kは任意の正数)であることを特徴とする請求の範囲第10項に記載のデジタルフィルタ。 - 複数の遅延器から成るタップ付き遅延線における各タップの信号に対して、与えられるフィルタ係数をそれぞれ乗じた後、各乗算結果を加算して出力するように成されたデジタルフィルタであって、
数値列が対称型の第1のフィルタ係数を有するオリジナルフィルタと、数値列が対称型の第2のフィルタ係数を有する複数の調整フィルタとをこの順番で縦続接続することによって構成され、
上記複数の調整フィルタを構成する上記第2のフィルタ係数は、それぞれ、上記オリジナルフィルタに単一パルスを入力した場合に前段のフィルタより出力される数値列により特定される周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる周波数振幅特性を実現する対称型のフィルタ係数であることを特徴とするデジタルフィルタ。 - 上記前段のフィルタより出力される数値列を{Hm,Hm−1,・・・,H1,H0,H−1,・・・,H−(m−1),H−m}とした場合、
上記調整フィルタを構成する第2のフィルタ係数は、{−kHm,−kHm−1,・・・,−kH1,−kH0+(1+k),−kH−1,・・・,−kH−(m−1),−kH−m}(kは任意の正数)であることを特徴とする請求の範囲第12項に記載のデジタルフィルタ。 - 上記オリジナルフィルタと、k≠1として上記第2のフィルタ係数を設定した1以上の上記調整フィルタと、k=1として上記第2のフィルタ係数を設定した1以上の上記調整フィルタとをこの順番で縦続接続することによって構成したことを特徴とする請求の範囲第13項に記載のデジタルフィルタ。
- 複数の遅延器から成るタップ付き遅延線における各タップの信号に対して、与えられるフィルタ係数をそれぞれ乗じた後、各乗算結果を加算して出力するように成されたデジタルフィルタであって、
請求の範囲第1項に記載の設計方法を用いて決定された上記第3のフィルタ係数を、上記各タップの信号に対するフィルタ係数として設定したことを特徴とするデジタルフィルタ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003137134 | 2003-05-15 | ||
JP2003137134 | 2003-05-15 | ||
PCT/JP2004/003668 WO2004102800A1 (ja) | 2003-05-15 | 2004-03-18 | デジタルフィルタおよびその設計方法、設計装置、デジタルフィルタ設計用プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2004102800A1 true JPWO2004102800A1 (ja) | 2006-07-20 |
Family
ID=33447247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005506147A Pending JPWO2004102800A1 (ja) | 2003-05-15 | 2004-03-18 | デジタルフィルタおよびその設計方法、設計装置、デジタルフィルタ設計用プログラム |
Country Status (7)
Country | Link |
---|---|
US (1) | US7590675B2 (ja) |
EP (1) | EP1626499A1 (ja) |
JP (1) | JPWO2004102800A1 (ja) |
KR (1) | KR20060009238A (ja) |
CN (1) | CN1792033A (ja) |
TW (1) | TW200501565A (ja) |
WO (1) | WO2004102800A1 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200501565A (en) | 2003-05-15 | 2005-01-01 | Neuro Solution Corp | Digital filter and design method, design apparatus, and digital filter design program thereof |
JPWO2005104365A1 (ja) * | 2004-04-19 | 2008-03-13 | 有限会社ニューロソリューション | デジタルフィルタの設計方法および設計装置、デジタルフィルタ設計用プログラム、デジタルフィルタ、所望周波数特性の数値列の生成方法および生成装置、所望周波数特性の数値列生成用プログラム |
CN1965478A (zh) * | 2004-11-05 | 2007-05-16 | 神经网路处理有限公司 | 数字滤波器及其设计方法、设计装置、数字滤波器设计用程序 |
EP2208352A2 (en) * | 2007-10-14 | 2010-07-21 | Nokia Corporation | Fixed-point implementation of an adaptive image filter with high coding efficiency |
US8416861B2 (en) * | 2007-10-14 | 2013-04-09 | Nokia Corporation | Fixed-point implementation of an adaptive image filter with high coding efficiency |
WO2015064277A1 (ja) * | 2013-10-31 | 2015-05-07 | 富士フイルム株式会社 | 信号処理装置、撮像装置、パラメータ生成方法、信号処理方法及びプログラム |
ES2905572T3 (es) * | 2018-03-09 | 2022-04-11 | Huawei Tech Co Ltd | Método y aparato para filtración de imagen con coeficientes multiplicadores adaptativos |
EP4246973A3 (en) | 2018-03-09 | 2023-12-06 | Huawei Technologies Co., Ltd. | Method and apparatus for image filtering with adaptive multiplier coefficients |
WO2021118427A1 (en) * | 2019-12-09 | 2021-06-17 | Telefonaktiebolaget Lm Ericsson (Publ) | Adaptive loop filtering |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE517525C2 (sv) * | 1999-09-07 | 2002-06-18 | Ericsson Telefon Ab L M | Förfarande och anordning för konstruktion av digitala filter |
US6678708B1 (en) * | 2000-11-15 | 2004-01-13 | Intel Corporation | Method and apparatus for two-dimensional separable symmetric filtering |
JP2002368584A (ja) | 2001-06-06 | 2002-12-20 | Sony Corp | ディジタルフィルタおよびそれを用いたディジタルビデオエンコーダ |
KR20040029471A (ko) | 2001-09-10 | 2004-04-06 | 유겐가이샤 뉴로솔루션 | 디지털 필터 및 그 설계 방법 |
US6993464B2 (en) * | 2002-12-03 | 2006-01-31 | Chunghwa Telecom Co., Ltd. | Optimized filter parameters design for digital IF programmable downconverter |
TW200501565A (en) | 2003-05-15 | 2005-01-01 | Neuro Solution Corp | Digital filter and design method, design apparatus, and digital filter design program thereof |
WO2005078925A1 (ja) * | 2004-02-17 | 2005-08-25 | Neuro Solution Corp. | デジタルフィルタの設計方法および装置、デジタルフィルタ設計用プログラム、デジタルフィルタ |
CN1965478A (zh) * | 2004-11-05 | 2007-05-16 | 神经网路处理有限公司 | 数字滤波器及其设计方法、设计装置、数字滤波器设计用程序 |
-
2004
- 2004-03-17 TW TW093107150A patent/TW200501565A/zh unknown
- 2004-03-18 KR KR1020057018016A patent/KR20060009238A/ko not_active Application Discontinuation
- 2004-03-18 EP EP04721663A patent/EP1626499A1/en not_active Withdrawn
- 2004-03-18 WO PCT/JP2004/003668 patent/WO2004102800A1/ja active Application Filing
- 2004-03-18 JP JP2005506147A patent/JPWO2004102800A1/ja active Pending
- 2004-03-18 CN CNA2004800133370A patent/CN1792033A/zh active Pending
- 2004-03-18 US US10/556,775 patent/US7590675B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7590675B2 (en) | 2009-09-15 |
US20060208831A1 (en) | 2006-09-21 |
WO2004102800A1 (ja) | 2004-11-25 |
CN1792033A (zh) | 2006-06-21 |
KR20060009238A (ko) | 2006-01-31 |
EP1626499A1 (en) | 2006-02-15 |
TW200501565A (en) | 2005-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPWO2006048958A1 (ja) | デジタルフィルタおよびその設計方法、設計装置、デジタルフィルタ設計用プログラム | |
US7529788B2 (en) | Digital filter design method and device, digital filter design program, and digital filter | |
US11263293B2 (en) | Digital sample rate conversion | |
JP4300272B2 (ja) | デジタルフィルタおよびその設計方法 | |
JPWO2004102800A1 (ja) | デジタルフィルタおよびその設計方法、設計装置、デジタルフィルタ設計用プログラム | |
US20050289206A1 (en) | Digital filter design method and device, digital filter design program, digital filter | |
JPWO2005078925A1 (ja) | デジタルフィルタの設計方法および装置、デジタルフィルタ設計用プログラム、デジタルフィルタ | |
JPWO2004036747A1 (ja) | デジタルフィルタの設計方法および装置、デジタルフィルタ設計用プログラム、デジタルフィルタ | |
Eddla et al. | Low Area and Power-Efficient FPGA Implementation of Improved AM-CSA-IIR Filter Design for the DSP Application | |
EP1533898A1 (en) | Digital filter designing method, digital filter designing program, digital filter | |
JPWO2004036746A1 (ja) | デジタルフィルタの設計方法および装置、デジタルフィルタ設計用プログラム、デジタルフィルタ | |
US6486813B1 (en) | Oversampling circuit digital/analog converter | |
WO2003047097A1 (fr) | Procede de conception d'un filtre numerique, appareil de projet, programme de projet pour la realisation d'un tel filtre, et filtre numerique y relatif | |
JPWO2007102611A1 (ja) | 補間関数生成回路 | |
US20050171988A1 (en) | Digital filter design method and device, digital filter design program, and digital filter | |
JPWO2005104365A1 (ja) | デジタルフィルタの設計方法および設計装置、デジタルフィルタ設計用プログラム、デジタルフィルタ、所望周波数特性の数値列の生成方法および生成装置、所望周波数特性の数値列生成用プログラム | |
JP2005020554A (ja) | デジタルフィルタ | |
US20050120067A1 (en) | Digital filter designing method, digital filter designing program, digital filter | |
Mottaghi-Kashtiban et al. | FIR filters involving shifts and only two additions, efficient for short word-length signal processing | |
JP4989575B2 (ja) | フィルタ及びフィルタの構成方法 | |
Thyagarajan et al. | Digital Filter Structures | |
Aydin et al. | FPGA Implementation of Multichannel FIR Filters | |
Thyagarajan et al. | Discrete-Time Signals and Systems | |
JPWO2003096534A1 (ja) | 音質調整装置の設計方法および設計装置、音質調整装置設計用プログラム、音質調整装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070319 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20090319 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100216 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100622 |