JPWO2005078925A1 - デジタルフィルタの設計方法および装置、デジタルフィルタ設計用プログラム、デジタルフィルタ - Google Patents
デジタルフィルタの設計方法および装置、デジタルフィルタ設計用プログラム、デジタルフィルタ Download PDFInfo
- Publication number
- JPWO2005078925A1 JPWO2005078925A1 JP2005517898A JP2005517898A JPWO2005078925A1 JP WO2005078925 A1 JPWO2005078925 A1 JP WO2005078925A1 JP 2005517898 A JP2005517898 A JP 2005517898A JP 2005517898 A JP2005517898 A JP 2005517898A JP WO2005078925 A1 JPWO2005078925 A1 JP WO2005078925A1
- Authority
- JP
- Japan
- Prior art keywords
- filter
- filter coefficient
- basic
- value
- coefficient
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims description 156
- 238000013461 design Methods 0.000 title claims description 65
- 238000012545 processing Methods 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 16
- 238000005070 sampling Methods 0.000 claims description 9
- 238000012935 Averaging Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 84
- 230000007423 decrease Effects 0.000 description 5
- DNTFEAHNXKUSKQ-RFZPGFLSSA-N (1r,2r)-2-aminocyclopentane-1-sulfonic acid Chemical compound N[C@@H]1CCC[C@H]1S(O)(=O)=O DNTFEAHNXKUSKQ-RFZPGFLSSA-N 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 101100381996 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) BRO1 gene Proteins 0.000 description 2
- 230000002411 adverse Effects 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000002238 attenuated effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H2017/0072—Theoretical filter design
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Geometry (AREA)
- Evolutionary Computation (AREA)
- Complex Calculations (AREA)
- Architecture (AREA)
- Filters That Use Time-Delay Elements (AREA)
Abstract
例えば、所定の特性を有する対称型の数値列をフィルタ係数として持つFIR型の1以上の基本フィルタを任意に組み合わせて縦続接続した場合のフィルタ係数を算出し、当該算出したフィルタ係数のyビットのデータに対し
て下位数ビットを切り捨てる丸め処理を行うことによってxビット(x<y)のフィルタ係数を求めるようにすることにより、従来のような窓掛けを行うことなく不要なフィルタ係数を大幅に削減することができるようにするとともに、周波数特性に窓掛けによる打ち切り誤差が生じないようにして、所望の周波数特性を有するデジタルフィルタを小さな回路規模で高精度に実現できるようにする。
て下位数ビットを切り捨てる丸め処理を行うことによってxビット(x<y)のフィルタ係数を求めるようにすることにより、従来のような窓掛けを行うことなく不要なフィルタ係数を大幅に削減することができるようにするとともに、周波数特性に窓掛けによる打ち切り誤差が生じないようにして、所望の周波数特性を有するデジタルフィルタを小さな回路規模で高精度に実現できるようにする。
Description
本発明はデジタルフィルタの設計方法および装置、デジタルフィルタ設計用プログラム、デジタルフィルタに関し、特に、複数の遅延器から成るタップ付き遅延線を備え、各タップの出力信号をそれぞれ数倍した後、それらの乗算結果を加算して出力するタイプのFIRフィルタおよびその設計法に関するものである。
様々な技術分野で提供されている種々の電子機器においては、その内部で何らかのデジタル信号処理を行っているのが通常である。デジタル信号処理の最も重要な基本操作に、各種の信号や雑音が混在している入力信号の中から、必要なある周波数帯域の信号のみを取り出すフィルタリング処理がある。このために、デジタル信号処理を行う電子機器では、デジタルフィルタが用いられることが多い。
デジタルフィルタとしては、IIR(Infinite Impulse Response:無限長インパルス応答)フィルタやFIR(Finite Impulse Response:有限長インパルス応答)フィルタが多く用いられる。このうちFIRフィルタは、次のような利点を持つ。第1に、FIRフィルタの伝達関数の極はz平面の原点のみにあるため、回路は常に安定である。第2に、フィルタ係数が対称型であれば、完全に正確な直線位相特性を実現することが可能である。
このFIRフィルタは、有限時間長で表されるインパルス応答がそのままフィルタ係数となっている。したがって、FIRフィルタを設計するということは、希望の周波数特性が得られるようにフィルタ係数を決定するということである。従来、FIRフィルタを設計する際には、目標とする周波数特性に基づきフィルタ係数を算出し、これに窓掛けを行って有限個の係数群を得る。そして、得られた係数群をFFT(高速フーリエ変換)することによって周波数特性に変換し、これが目標の特性を満足しているか否かを確認する方法で設計していた。
目標とする周波数特性からフィルタ係数を算出する際には、例えば、サンプリング周波数とカットオフ周波数との比率をもとに、窓関数やチェビシェフ近似式を用いた畳み込み演算等を行っていた。これにより求められる係数の数は膨大となり、その係数を全て使用すると、フィルタ回路のタップ数や乗算器は非常に多くなってしまい、現実的でない。そのため、窓掛けによってフィルタ係数の数を実用上耐えうる程度に減らす必要があった。
しかしながら、従来の設計法で得られるFIRフィルタの周波数特性は、窓関数や近似式に依存するので、これらをうまく設定しないと、目標とする良好な周波数特性を得ることができない。ところが、窓関数や近似式を適当に設定することは、一般に困難である。また、フィルタ係数の数を減らすために窓掛けをすると、周波数特性に打ち切り誤差が発生してしまう。そのため、従来のフィルタ設計法で所望の周波数特性を実現するのは非常に困難という問題があった。
また、所望の周波数特性をできるだけ精密に実現するFIRフィルタを設計するためには、窓掛けによって減らせるフィルタ係数の数に限界がある。そのため、設計されたFIRフィルタのタップ数は非常に多くなり、しかもそのフィルタ係数値は非常に複雑でランダムな値となる。そのため、そのタップ数およびフィルタ係数値を実現するためには大規模な回路構成(加算器、乗算器)が必要になるという問題もあった。
また、従来のフィルタ設計法で所望の周波数特性を得るためには、仮に求めたフィルタ係数をFFTしてその周波数特性を確認しながらの試行錯誤が必要となる。したがって、従来は熟練した技術者が時間と手間をかけて設計する必要があり、所望特性のFIRフィルタを容易には設計できないという問題もあった。
なお、タップ付き遅延線の各タップ間(各フィルタ係数間)に1以上のゼロ値を挿入することによってフィルタ帯域を調整する方法が知られている(例えば、特表平6−503450号公報参照)。また、複数のFIRフィルタを縦続接続することによって急峻な周波数特性を実現する方法も知られている(例えば、特開平5−243908号公報参照)。しかしながら、これら何れの方法を用いても、ただ単にフィルタの通過帯域を狭くすることができるのみで、任意形状の周波数特性を少ないタップ数で精密に実現することはできなかった。
デジタルフィルタとしては、IIR(Infinite Impulse Response:無限長インパルス応答)フィルタやFIR(Finite Impulse Response:有限長インパルス応答)フィルタが多く用いられる。このうちFIRフィルタは、次のような利点を持つ。第1に、FIRフィルタの伝達関数の極はz平面の原点のみにあるため、回路は常に安定である。第2に、フィルタ係数が対称型であれば、完全に正確な直線位相特性を実現することが可能である。
このFIRフィルタは、有限時間長で表されるインパルス応答がそのままフィルタ係数となっている。したがって、FIRフィルタを設計するということは、希望の周波数特性が得られるようにフィルタ係数を決定するということである。従来、FIRフィルタを設計する際には、目標とする周波数特性に基づきフィルタ係数を算出し、これに窓掛けを行って有限個の係数群を得る。そして、得られた係数群をFFT(高速フーリエ変換)することによって周波数特性に変換し、これが目標の特性を満足しているか否かを確認する方法で設計していた。
目標とする周波数特性からフィルタ係数を算出する際には、例えば、サンプリング周波数とカットオフ周波数との比率をもとに、窓関数やチェビシェフ近似式を用いた畳み込み演算等を行っていた。これにより求められる係数の数は膨大となり、その係数を全て使用すると、フィルタ回路のタップ数や乗算器は非常に多くなってしまい、現実的でない。そのため、窓掛けによってフィルタ係数の数を実用上耐えうる程度に減らす必要があった。
しかしながら、従来の設計法で得られるFIRフィルタの周波数特性は、窓関数や近似式に依存するので、これらをうまく設定しないと、目標とする良好な周波数特性を得ることができない。ところが、窓関数や近似式を適当に設定することは、一般に困難である。また、フィルタ係数の数を減らすために窓掛けをすると、周波数特性に打ち切り誤差が発生してしまう。そのため、従来のフィルタ設計法で所望の周波数特性を実現するのは非常に困難という問題があった。
また、所望の周波数特性をできるだけ精密に実現するFIRフィルタを設計するためには、窓掛けによって減らせるフィルタ係数の数に限界がある。そのため、設計されたFIRフィルタのタップ数は非常に多くなり、しかもそのフィルタ係数値は非常に複雑でランダムな値となる。そのため、そのタップ数およびフィルタ係数値を実現するためには大規模な回路構成(加算器、乗算器)が必要になるという問題もあった。
また、従来のフィルタ設計法で所望の周波数特性を得るためには、仮に求めたフィルタ係数をFFTしてその周波数特性を確認しながらの試行錯誤が必要となる。したがって、従来は熟練した技術者が時間と手間をかけて設計する必要があり、所望特性のFIRフィルタを容易には設計できないという問題もあった。
なお、タップ付き遅延線の各タップ間(各フィルタ係数間)に1以上のゼロ値を挿入することによってフィルタ帯域を調整する方法が知られている(例えば、特表平6−503450号公報参照)。また、複数のFIRフィルタを縦続接続することによって急峻な周波数特性を実現する方法も知られている(例えば、特開平5−243908号公報参照)。しかしながら、これら何れの方法を用いても、ただ単にフィルタの通過帯域を狭くすることができるのみで、任意形状の周波数特性を少ないタップ数で精密に実現することはできなかった。
本発明はこのような問題を解決するために成されたものであり、所望の周波数特性を小さな回路規模で高精度に実現することが可能なFIRデジタルフィルタおよびその設計法を提供することを目的とする。
また、本発明は、所望の周波数特性を有するFIRデジタルフィルタを簡易的に設計できるようにすることを目的とする。
上記課題を解決するために、本発明では、例えば、所定の特性を有する対称型の数値列をフィルタ係数として持つFIR型の1以上の基本フィルタを任意に組み合わせて縦続接続した場合のフィルタ係数を算出し、当該算出したフィルタ係数のデータに対して下位数ビットを丸める処理を行うことによってフィルタ係数のビット数を減らすようにしている。
本発明の他の態様では、算出したフィルタ係数を所定倍して小数点以下を丸める処理を行うことによってフィルタ係数を整数化するようにしている。
上記のように構成した本発明によれば、フィルタ係数の下位数ビットを丸める処理によって不要なフィルタ係数を大幅に削減することができる。これにより、すなわち、設計されるデジタルフィルタに必要なタップ数は非常にわずかで済み、かつ、各タップ出力に対して必要なフィルタ係数の種類も非常に少なくて済む。したがって、回路素子数(特に乗算器)を大幅に削減して回路規模を削減することができる。
また、丸め処理によってフィルタ係数の数を大幅に減らせるので、フィルタ係数の数を減らすために従来のような窓掛けを不要とすることができる。本発明の場合、ビット数を減らす丸め処理によって所定の閾値より小さい値のフィルタ係数を破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。また、窓掛けを行うことなくデジタルフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることがなく、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。すなわち、デジタルフィルタの希望する周波数特性を高精度に実現することができる。
さらに、任意の基本フィルタを組み合わせて縦続接続するなどの簡易な操作だけで、所望の周波数特性を有するデジタルフィルタを設計することができるので、熟練した技術者でなくてもフィルタの設計を極めて簡単に行うことができる。
また、本発明の他の特徴によれば、フィルタ係数の数値を整数化して単純化することができる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を更に簡素化することができる。
また、本発明は、所望の周波数特性を有するFIRデジタルフィルタを簡易的に設計できるようにすることを目的とする。
上記課題を解決するために、本発明では、例えば、所定の特性を有する対称型の数値列をフィルタ係数として持つFIR型の1以上の基本フィルタを任意に組み合わせて縦続接続した場合のフィルタ係数を算出し、当該算出したフィルタ係数のデータに対して下位数ビットを丸める処理を行うことによってフィルタ係数のビット数を減らすようにしている。
本発明の他の態様では、算出したフィルタ係数を所定倍して小数点以下を丸める処理を行うことによってフィルタ係数を整数化するようにしている。
上記のように構成した本発明によれば、フィルタ係数の下位数ビットを丸める処理によって不要なフィルタ係数を大幅に削減することができる。これにより、すなわち、設計されるデジタルフィルタに必要なタップ数は非常にわずかで済み、かつ、各タップ出力に対して必要なフィルタ係数の種類も非常に少なくて済む。したがって、回路素子数(特に乗算器)を大幅に削減して回路規模を削減することができる。
また、丸め処理によってフィルタ係数の数を大幅に減らせるので、フィルタ係数の数を減らすために従来のような窓掛けを不要とすることができる。本発明の場合、ビット数を減らす丸め処理によって所定の閾値より小さい値のフィルタ係数を破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。また、窓掛けを行うことなくデジタルフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることがなく、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。すなわち、デジタルフィルタの希望する周波数特性を高精度に実現することができる。
さらに、任意の基本フィルタを組み合わせて縦続接続するなどの簡易な操作だけで、所望の周波数特性を有するデジタルフィルタを設計することができるので、熟練した技術者でなくてもフィルタの設計を極めて簡単に行うことができる。
また、本発明の他の特徴によれば、フィルタ係数の数値を整数化して単純化することができる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を更に簡素化することができる。
図1は、基本ローパスフィルタL4anのフィルタ係数を示す図である。
図2は、基本ローパスフィルタL4a4の周波数特性を示す図である。
図3は、基本ローパスフィルタL4anの周波数−ゲイン特性を示す図である。
図4は、基本ローパスフィルタLanのフィルタ係数を示す図である。
図5は、基本ローパスフィルタLa4の周波数特性を示す図である。
図6は、基本ローパスフィルタLanの周波数−ゲイン特性を示す図である。
図7は、基本ハイパスフィルタH4snのフィルタ係数を示す図である。
図8は、基本ハイパスフィルタH4s4の周波数特性を示す図である。
図9は、基本ハイパスフィルタH4snの周波数−ゲイン特性を示す図である。
図10は、基本ハイパスフィルタHsnのフィルタ係数を示す図である。
図11は、基本ハイパスフィルタHs4の周波数特性を示す図である。
図12は、基本ハイパスフィルタHsnの周波数−ゲイン特性を示す図である。
図13は、基本バンドパスフィルタB4snのフィルタ係数を示す図である。
図14は、基本バンドパスフィルタB4s4の周波数特性を示す図である。
図15は、基本バンドパスフィルタB4snの周波数−ゲイン特性を示す図である。
図16は、基本バンドパスフィルタBsnのフィルタ係数を示す図である。
図17は、基本バンドパスフィルタBs4の周波数特性を示す図である。
図18は、基本バンドパスフィルタBsnの周波数−ゲイン特性を示す図である。
図19は、基本ハイパスフィルタHmsnにおいてmをパラメータとした周波数−ゲイン特性を示す図である。
図20は、パラメータmに対するパラメータnの最適値を示す図である。
図21は、パラメータmとそれに対するパラメータnの最適値との関係およびパラメータmとそれに対するパラメータxとの関係を示す図である。
図22は、基本ハイパスフィルタHmsnのインパルス応答を示す図である。
図23は、基本ローパスフィルタL4a4,L4a4(1)の周波数−ゲイン特性を示す図である。
図24は、基本フィルタを縦続接続した場合のフィルタ係数の演算内容を説明するための図である。
図25は、基本ローパスフィルタ(L4a4)Mの周波数−ゲイン特性を示す図である。
図26は、基本ハイパスフィルタ(H4s4)Mの周波数−ゲイン特性を示す図である。
図27は、基本フィルタの縦続接続によるバンドパスフィルタの設計法を模式的に示す図である。
図28は、基本フィルタの縦続接続によるバンドパスフィルタの具体的な設計例を示す図である。
図29は、基本フィルタの縦続接続によるバンドパスフィルタの具体的な設計例を示す図である。
図30は、異種の基本フィルタの縦続接続によってバンド幅を狭める手段を模式的に示す図である。
図31は、同種の基本フィルタの縦続接続によってバンド幅を広げる手段を模式的に示す図である。
図32は、バンド幅を微調整する手段を模式的に示す図である。
図33は、16ビットの演算精度で実際に算出したフィルタ係数値(丸め処理前のもの)をグラフ化した図である。
図34は、フィルタ係数を丸め処理する前におけるデジタルフィルタの周波数特性を示す図である。
図35は、図33のフィルタ係数に対して10ビットの丸め処理を行った結果として残った41タップ(ゼロ値を含めた段数は46段)分のフィルタ係数値とそれを整数化した係数値とを示す図である。
図36は、16ビットの演算精度でフィルタ係数を算出した後、それを10ビットに丸めて更に整数化した場合の周波数−ゲイン特性を示す図である。
図37は、第2の実施形態によるデジタルフィルタの設計方法の手順を示すフローチャートである。
図38は、第2の実施形態によるデジタルフィルタの設計方法の概念を説明するための周波数特性図である。
図39は、オリジナルバンドパスフィルタの周波数−ゲイン特性およびこのオリジナルバンドパスフィルタに対して1〜3個の調整フィルタを縦続接続した場合に得られる周波数−ゲイン特性を示す図である。
図40は、第2の実施形態による調整フィルタを縦続接続した場合に得られる周波数特性の変化の原理を説明するための図である。
図41は、オリジナルバンドパスフィルタに対して、α=1.5の調整フィルタを3段縦続接続するとともに、最終段にα=1の調整フィルタを更に縦続接続した場合に得られる周波数特性を示す図である。
図42は、オリジナルローパスフィルタの周波数−ゲイン特性およびこのオリジナルローパスフィルタに対して1〜5個の調整フィルタを縦続接続した場合に得られる周波数−ゲイン特性を示す図である。
図43は、第3の実施形態によるデジタルフィルタの設計方法の手順を示すフローチャートである。
図44は、第3の実施形態による基本フィルタの生成方法の手順を示すフローチャートである。
図45は、第3の実施形態による基本フィルタの周波数−ゲイン特性を示す図である。
図46は、第3の実施形態による基本フィルタおよびこれから生成した複数の周波数シフトフィルタの周波数−ゲイン特性を示す図である。
図47は、第3の実施形態のフィルタ設計法により生成されるデジタルフィルタの周波数−ゲイン特性の一例を示す図である。
図48は、窓フィルタによる基本フィルタの切り出しを説明するための周波数−ゲイン特性図である。
図49は、第3の実施形態によるデジタルフィルタの設計装置の構成例を示すブロック図である。
図50は、第1の実施形態によるデジタルフィルタの構成例を示すブロック図である。
図51は、第2の実施形態によるデジタルフィルタの構成例を示すブロック図である。
図52は、第3の実施形態によるデジタルフィルタの構成例を示すブロック図である。
図2は、基本ローパスフィルタL4a4の周波数特性を示す図である。
図3は、基本ローパスフィルタL4anの周波数−ゲイン特性を示す図である。
図4は、基本ローパスフィルタLanのフィルタ係数を示す図である。
図5は、基本ローパスフィルタLa4の周波数特性を示す図である。
図6は、基本ローパスフィルタLanの周波数−ゲイン特性を示す図である。
図7は、基本ハイパスフィルタH4snのフィルタ係数を示す図である。
図8は、基本ハイパスフィルタH4s4の周波数特性を示す図である。
図9は、基本ハイパスフィルタH4snの周波数−ゲイン特性を示す図である。
図10は、基本ハイパスフィルタHsnのフィルタ係数を示す図である。
図11は、基本ハイパスフィルタHs4の周波数特性を示す図である。
図12は、基本ハイパスフィルタHsnの周波数−ゲイン特性を示す図である。
図13は、基本バンドパスフィルタB4snのフィルタ係数を示す図である。
図14は、基本バンドパスフィルタB4s4の周波数特性を示す図である。
図15は、基本バンドパスフィルタB4snの周波数−ゲイン特性を示す図である。
図16は、基本バンドパスフィルタBsnのフィルタ係数を示す図である。
図17は、基本バンドパスフィルタBs4の周波数特性を示す図である。
図18は、基本バンドパスフィルタBsnの周波数−ゲイン特性を示す図である。
図19は、基本ハイパスフィルタHmsnにおいてmをパラメータとした周波数−ゲイン特性を示す図である。
図20は、パラメータmに対するパラメータnの最適値を示す図である。
図21は、パラメータmとそれに対するパラメータnの最適値との関係およびパラメータmとそれに対するパラメータxとの関係を示す図である。
図22は、基本ハイパスフィルタHmsnのインパルス応答を示す図である。
図23は、基本ローパスフィルタL4a4,L4a4(1)の周波数−ゲイン特性を示す図である。
図24は、基本フィルタを縦続接続した場合のフィルタ係数の演算内容を説明するための図である。
図25は、基本ローパスフィルタ(L4a4)Mの周波数−ゲイン特性を示す図である。
図26は、基本ハイパスフィルタ(H4s4)Mの周波数−ゲイン特性を示す図である。
図27は、基本フィルタの縦続接続によるバンドパスフィルタの設計法を模式的に示す図である。
図28は、基本フィルタの縦続接続によるバンドパスフィルタの具体的な設計例を示す図である。
図29は、基本フィルタの縦続接続によるバンドパスフィルタの具体的な設計例を示す図である。
図30は、異種の基本フィルタの縦続接続によってバンド幅を狭める手段を模式的に示す図である。
図31は、同種の基本フィルタの縦続接続によってバンド幅を広げる手段を模式的に示す図である。
図32は、バンド幅を微調整する手段を模式的に示す図である。
図33は、16ビットの演算精度で実際に算出したフィルタ係数値(丸め処理前のもの)をグラフ化した図である。
図34は、フィルタ係数を丸め処理する前におけるデジタルフィルタの周波数特性を示す図である。
図35は、図33のフィルタ係数に対して10ビットの丸め処理を行った結果として残った41タップ(ゼロ値を含めた段数は46段)分のフィルタ係数値とそれを整数化した係数値とを示す図である。
図36は、16ビットの演算精度でフィルタ係数を算出した後、それを10ビットに丸めて更に整数化した場合の周波数−ゲイン特性を示す図である。
図37は、第2の実施形態によるデジタルフィルタの設計方法の手順を示すフローチャートである。
図38は、第2の実施形態によるデジタルフィルタの設計方法の概念を説明するための周波数特性図である。
図39は、オリジナルバンドパスフィルタの周波数−ゲイン特性およびこのオリジナルバンドパスフィルタに対して1〜3個の調整フィルタを縦続接続した場合に得られる周波数−ゲイン特性を示す図である。
図40は、第2の実施形態による調整フィルタを縦続接続した場合に得られる周波数特性の変化の原理を説明するための図である。
図41は、オリジナルバンドパスフィルタに対して、α=1.5の調整フィルタを3段縦続接続するとともに、最終段にα=1の調整フィルタを更に縦続接続した場合に得られる周波数特性を示す図である。
図42は、オリジナルローパスフィルタの周波数−ゲイン特性およびこのオリジナルローパスフィルタに対して1〜5個の調整フィルタを縦続接続した場合に得られる周波数−ゲイン特性を示す図である。
図43は、第3の実施形態によるデジタルフィルタの設計方法の手順を示すフローチャートである。
図44は、第3の実施形態による基本フィルタの生成方法の手順を示すフローチャートである。
図45は、第3の実施形態による基本フィルタの周波数−ゲイン特性を示す図である。
図46は、第3の実施形態による基本フィルタおよびこれから生成した複数の周波数シフトフィルタの周波数−ゲイン特性を示す図である。
図47は、第3の実施形態のフィルタ設計法により生成されるデジタルフィルタの周波数−ゲイン特性の一例を示す図である。
図48は、窓フィルタによる基本フィルタの切り出しを説明するための周波数−ゲイン特性図である。
図49は、第3の実施形態によるデジタルフィルタの設計装置の構成例を示すブロック図である。
図50は、第1の実施形態によるデジタルフィルタの構成例を示すブロック図である。
図51は、第2の実施形態によるデジタルフィルタの構成例を示すブロック図である。
図52は、第3の実施形態によるデジタルフィルタの構成例を示すブロック図である。
(第1の実施形態)
以下、本発明の第1の実施形態を図面に基づいて説明する。本実施形態では、特定のインパルス応答を有する数種類の基本フィルタを定義し、それらを任意に縦続接続する形で所望の周波数特性を有するFIRフィルタを実現する。基本フィルタは、基本ローパスフィルタ、基本ハイパスフィルタ、基本バンドパスフィルタ(櫛型フィルタを含む)の3種類に大きく分類される。以下、これらの基本フィルタについて説明する。
<基本ローパスフィルタLman(m,nは変数で、nは自然数)>
基本ローパスフィルタLmanのフィルタ係数は、“−1,m,−1”の数値列を出発点として、演算前の元データとそれより所定遅延量だけ前の前データとを順次加算していく移動平均演算によって求める。
図1は、基本ローパスフィルタL4an(m=4とした場合)のフィルタ係数を示す図である。図1において、移動平均演算によって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”とを加算することによって得られる。
図1に示す基本ローパスフィルタ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となる。
図1の例のように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”をz倍(z−1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本ローパスフィルタLmanのフィルタ係数は、何れもその数値列の総和が“1”で、数値列の1つ飛びの合計値が同符号で互いに等しくなるという性質を持つ。
図2は、基本ローパスフィルタL4a4(m=4,n=4とした場合)のフィルタ係数の数値列をFFT変換して得られる周波数特性(周波数−ゲイン特性および周波数−位相特性)を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを32倍して示している。一方、周波数は“1”で基準化している。
この図2から分かるように、周波数−ゲイン特性は通過域がほぼ平坦で、遮断域の傾斜がなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本ローパスフィルタL4a4では、オーバーシュートやリンギングも存在しない良好なローパスフィルタの周波数特性を得ることができる。
図3は、基本ローパスフィルタL4anのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図3より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本ローパスフィルタL4anは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
図4は、基本単位フィルタの数値列“−1,N”でN=0とした場合の基本ローパスフィルタLanのフィルタ係数を示す図である。N=0の場合、基本単位フィルタを2段縦続接続したときのフィルタ係数は“0,1,0”となる。したがって、基本ローパスフィルタLanのフィルタ係数は、“1”を出発点として、元データと前データとを順次加算していく移動平均演算によって求められる。
図4に示す基本ローパスフィルタLanの何れのフィルタ係数も、その数値列は対称型であり、数値列の1つ飛びの合計値が同符号で互いに等しくなるという性質を持っている(例えば基本ローパスフィルタLa4の場合、1+6+1=8,4+4=8)。
図5は、基本ローパスフィルタLa4のフィルタ係数の数値列をFFT変換して得られる周波数特性を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを16倍して示している。一方、周波数は“1”で基準化している。
この図5から分かるように、周波数−ゲイン特性でほぼ平坦な通過域は図2に比べて狭くなるが、遮断域の傾斜はなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本ローパスフィルタLa4においても、オーバーシュートやリンギングも存在しない良好なローパスフィルタの周波数特性を得ることができる。
図6は、基本ローパスフィルタLanのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図6より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本ローパスフィルタLanは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
<基本ハイパスフィルタHmsn(m,nは変数で、nは自然数)>
基本ハイパスフィルタHmsnのフィルタ係数は、“1,m,1”の数値列を出発点として、演算前の元データからそれより所定遅延量だけ前の前データを順次減算していく移動平均演算によって求める。
図7は、基本ハイパスフィルタH4sn(m=4とした場合)のフィルタ係数を示す図である。図7において、移動平均演算によって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”を減算することによって得られる。
図7に示す基本ハイパスフィルタ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となる。
図7の例のように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”をz倍(z=1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本ハイパスフィルタHmsnのフィルタ係数は、何れもその数値列の総和が“0”で、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持つ。
図8は、基本ハイパスフィルタH4s4(m=4,n=4とした場合)のフィルタ係数の数値列をFFT変換して得られる周波数特性を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを32倍して示している。一方、周波数は“1”で基準化している。
この図8から分かるように、周波数−ゲイン特性は通過域がほぼ平坦で、遮断域の傾斜がなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本ハイパスフィルタH4s4では、オーバーシュートやリンギングも存在しない良好なハイパスフィルタの周波数特性を得ることができる。
図9は、基本ハイパスフィルタH4snのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図9より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本ハイパスフィルタH4snは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
図10は、基本単位フィルタの数値列“1,N”でN=0とした場合の基本ハイパスフィルタHsnのフィルタ係数を示す図である。N=0の場合、基本単位フィルタを2段縦続接続したときのフィルタ係数は“0,1,0”となる。したがって、基本ハイパスフィルタHsnのフィルタ係数は、“1”を出発点として、元データから前データを順次減算していく移動平均演算によって求められる。
図10に示す基本ハイパスフィルタHsnにおいて、nが偶数のときは何れのフィルタ係数も、その数値列は対称型であり、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている(例えば基本ハイパスフィルタHs4の場合、1+6+1=8,−4+(−4)=−8)。nが奇数のときは、その数値列は絶対値が対称型となっており、前半の数値列と後半の数値列とは逆符号になる。また、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている。
図11は、基本ハイパスフィルタHs4のフィルタ係数の数値列をFFT変換して得られる周波数特性を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを16倍して示している。一方、周波数は“1”で基準化している。
この図11から分かるように、周波数−ゲイン特性でほぼ平坦な通過域は図8に比べて狭くなるが、遮断域の傾斜はなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本ハイパスフィルタHs4においても、オーバーシュートやリンギングも存在しない良好なハイパスフィルタの周波数特性を得ることができる。
図12は、基本ハイパスフィルタHsnのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図12より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本ハイパスフィルタHsnは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
<基本バンドパスフィルタBmsn(m,nは変数で、nは自然数)>
基本バンドパスフィルタBmsnのフィルタ係数は、“1,0,m,0,1”の数値列を出発点として、元データから2つ前の前データを順次減算していく移動平均演算によって求める。
図13は、基本バンドパスフィルタB4sn(m=4とした場合)のフィルタ係数を示す図である。図13において、移動平均演算によって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”を減算することによって得られる。
図13に示す基本バンドパスフィルタ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となる。
図13の例のように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”をz倍(z=1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本バンドパスフィルタBmsnのフィルタ係数は、何れもその数値列の総和が“0”で、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持つ。
図14は、基本バンドパスフィルタB4s4(m=4,n=4とした場合)のフィルタ係数の数値列をFFT変換して得られる周波数特性を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを32倍して示している。一方、周波数は“1”で基準化している。
この図14から分かるように、周波数−ゲイン特性は通過域がほぼ平坦で、遮断域の傾斜がなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本バンドパスフィルタB4s4では、オーバーシュートやリンギングも存在しない良好なバンドパスフィルタの周波数特性を得ることができる。
図15は、基本バンドパスフィルタB4snのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図15より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本バンドパスフィルタB4snは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
図16は、基本単位フィルタの数値列“1,0,N”でN=0とした場合の基本バンドパスフィルタBsnのフィルタ係数を示す図である。N=0の場合、基本単位フィルタを2段縦続接続したときのフィルタ係数は“0,0,1,0,0”となる。したがって、基本バンドパスフィルタBsnのフィルタ係数は、“1”を出発点として、元データから2つ前の前データを順次減算していく移動平均演算によって求められる。
図16に示す基本バンドパスフィルタBsnにおいて、nが偶数のときは何れのフィルタ係数も、その数値列は対称型であり、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている(例えば基本バンドパスフィルタBs4の場合、1+6+1=8,−4+(−4)=−8)。nが奇数のときは、その数値列は絶対値が対称型となっており、前半の数値列と後半の数値列とは逆符号になる。また、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている。
図17は、基本バンドパスフィルタBs4のフィルタ係数の数値列をFFT変換して得られる周波数特性を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを16倍して示している。一方、周波数は“1”で基準化している。
この図17から分かるように、周波数−ゲイン特性でほぼ平坦な通過域は図14に比べて狭くなるが、遮断域の傾斜はなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本バンドパスフィルタBs4においても、オーバーシュートやリンギングも存在しない良好なバンドパスフィルタの周波数特性を得ることができる。
図18は、基本バンドパスフィルタBsnのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図18より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本バンドパスフィルタBsnは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
なお、以上では、図4、図10および図16において、“1”を出発点として移動平均演算を行う例について説明したが、“−1”を出発点としても良い。“−1”を出発点とした場合は、位相特性がπだけシフトするだけで、周波数特性は同一で変化はない。
<パラメータ値m,nの特性に与える影響>
まず、移動平均演算の段数nを変えた場合の影響について説明する。例えば図3に示したように、基本ローパスフィルタLmanにおいて、nの値を大きくすると遮断域の傾斜が急峻になり、通過域のバンド幅は狭くなる。また、nの値が小さいときは、周波数特性の頂部は両端が盛り上がる。nの値が大きくなるに従って頂部は徐々に平坦に近づき、n=4で完全に平坦になる。nの値がそれより大きくなると、今度は頂部の両端が中央値より低くなっていく。このような傾向は、基本ハイパスフィルタHmsn、基本バンドパスフィルタBmsnについても同様に言える(図9、図15参照)。
一方、基本単位フィルタの係数値をN=0として構成した基本ローパスフィルタLan、基本ハイパスフィルタHsnおよび基本バンドパスフィルタBsnに関しては、図6、図12、図18に示したように、nの値が何れの場合も頂部の両端は中央値より低くなる。nの値を大きくすると遮断域の傾斜が急峻になり、通過域のバンド幅が狭くなることは、N≠0である基本ローパスフィルタLman、基本ハイパスフィルタHmsnおよび基本バンドパスフィルタBmsnの場合と同様である。
次に、mの値を変えた場合の影響について説明する。図19は、基本ハイパスフィルタHmsnにおいてmをパラメータとした周波数−ゲイン特性を示す図である。この図19より、mの値を小さくすると遮断域の傾斜が急峻になり、通過域のバンド幅が狭くなることが分かる。ここでは図示を省略するが、基本ローパスフィルタLmanおよび基本バンドパスフィルタBmsnについても同様のことが言える。
この図19は、パラメータmに対するパラメータnの最適値(周波数特性の頂部が平坦になるnの値)も同時に示している。すなわち、m=4のときの最適値はn=4、m=3.5のときの最適値はn=6、m=3のときの最適値はn=8、m=2.5のときの最適値はn=16である。図20は、これを分かりやすくグラフ化したものである。この図20から分かるように、パラメータmに対するパラメータnの最適値は、mの値が小さくなるにつれて大きくなる。
このことを、図21を用いて更に詳細に説明する。図21は、パラメータmとそれに対するパラメータnの最適値との関係を表形式によって示す図である。なお、この図21では、パラメータmに対するパラメータzの関係も併せて示している。
上述のように、パラメータmに対するパラメータnの最適値は、mの値が小さくなるにつれて大きくなる。ここで、m=2になるとフィルタ特性が大きく変わってしまい、良好な周波数特性が得られなくなる。逆に言うと、m>2の条件であれば、タップ間に挿入する遅延量を増やさなくても、通過域におけるバンド幅の狭い良好なフィルタ特性を得ることができる。一方、パラメータmの値が大きくなるにつれてパラメータnの最適値は小さくなり、m=10のときにn=1となる。つまり、m=10のときは、移動平均演算の段数は1段で良い。このことから、パラメータmは、2<m≦10の条件で使用するのが好ましい。
また、パラメータnの値は、図21に示す最適値を中心として前後の或る範囲で選択した任意の値を用いることにより、図3、図9、図15のように周波数特性の調整をすることができる。
図22は、図19に示した4種類の基本ハイパスフィルタHmsnのインパルス応答を示す図である。この図22に示すような波形を有するインパルス応答は、横軸に沿った標本位置が一定の間にあるときにのみ“0”以外の有限な値を有し、それ以外の領域では値が全て“0”となる関数、つまり所定の標本位置において値が“0”に収束する関数である。
このように、関数の値が局所的な領域で“0”以外の有限の値を有し、それ以外の領域で“0”となる場合を「有限台」と称する。ここでは図示を省略するが、基本ハイパスフィルタHsn、基本ローパスフィルタLman,Lanおよび基本バンドパスフィルタBmsn,Bsnについても同様に、インパルス応答は有限台となる。
このような有限台のインパルス応答では、“0”以外の有限の値を有する局所的な領域内のデータだけが意味を持つ。この領域外のデータについては、本来これを考慮すべきであるのに無視している訳ではなく、理論的に考慮する必要がないため、打ち切り誤差は発生しない。したがって、図1、図4、図7、図10、図13、図16に示した数値列をフィルタ係数として用いれば、窓掛けによって係数の打ち切りを行う必要もなく、良好なフィルタ特性を得ることができる。
<フィルタ係数間のゼロ値の調整>
基本フィルタのフィルタ係数を構成する数値列の各数値間のゼロ値(各タップ間の遅延量に相当)を変えることによって、基本フィルタの通過域のバンド幅を調整することが可能である。すなわち、上述の基本ローパスフィルタLman,Lan、基本ハイパスフィルタHmsn,Hsn、基本バンドパスフィルタBmsn,Bsnでは、各タップ間の遅延量は1クロック分であったが、これを(k+1)クロック分とすると(各フィルタ係数の間に“0”をk個ずつ挿入すると)、その周波数−ゲイン特性の周波数軸(周波数方向に対する周期)は1/(k+1)となり、通過域のバンド幅は狭くなる。
以下、例えば基本ローパスフィルタLmanにおいて各フィルタ係数の間に“0”をk個ずつ挿入する場合をLman(k)と表記することにする。ただし、k=0の場合は(0)を省略して表記する。
図23は、基本ローパスフィルタL4a4および、その各フィルタ係数の間に“0”を1つずつ挿入することによって生成した基本ローパスフィルタL4a4(1)の周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図23から分かるように、フィルタ係数の間に挿入する“0”の数をk個とすると、その周波数−ゲイン特性の周波数軸(周波数方向に対する周期)は1/(k+1)となり、通過域のバンド幅を狭くすることが可能である。
<同種の基本フィルタの縦続接続>
同種の基本フィルタを縦続接続することにより、各基本フィルタの係数どうしが乗算・加算されて新しいフィルタ係数が作り出される。以下では、例えば基本ローパスフィルタLmanの縦続接続数をMとするとき、これを(Lman)Mと記述することにする。
ここで、基本フィルタを縦続接続した場合におけるフィルタ係数の演算内容について説明する。図24は、縦続接続によるフィルタ係数の演算内容を説明するための図である。この図24に示すように、2つの基本フィルタを縦続接続した場合には、一方のフィルタ係数を構成する(2i+1)個(2i+1は、一方のフィルタ係数を構成する全数値列の個数を表す)の数値列{H1−i,H1−(i−1),H1−(i−2),・・・,H−1,H10,H11,・・・,H1i−2,H1i−1,H1i}と、他方のフィルタ係数を構成する(2i+1)個の数値列{H2−i,H2−(i−1),H2−(i−2),・・・,H2−1,H20,H21,・・・,H2i−2,H2i−1,H2i}との畳み込み演算を行うことによって、新たなフィルタ係数の数値列を求める。
この畳み込み演算では、他方のフィルタ係数については、{H2−i,H2−(i−1),H2−(i−2),・・・,H2−1,H20,H21,・・・,H2i−2,H2i−1,H2i}の全ての数値列を常に固定的に乗加算の対象とする。一方、一方のフィルタ係数については、{H1−i,H1−(i−1),H1−(i−2),・・・,H1−1,H10,H11,・・・,H1i−2,H1i−1,H1i}の数値列の前後に0列があるものと仮定し、この0値も含めて(2i+1)個の数値列を畳み込み演算の対象とする。このとき、新たなフィルタ係数のp番目の数値を求める際には、一方のフィルタ係数のp番目の数値を含めてそれより前にある(2i+1)個の数値列を乗加算の対象とする。
例えば、新たなフィルタ係数の1番目の数値を求める際には、他方のフィルタ係数の全ての数値列{H2−i,H2−(i−1),H2−(i−2),・・・,H2−1,H20,H21,・・・,H2i−2,H2i−1,H2i}(符号31で示す点線で囲った配列)と、一方のフィルタ係数の1番目の数値を含めてそれより前にある(2i+1)個の数値列{0,0,・・・,0,H1−i}(符号32で示す点線で囲った配列)とを対象として、配列の対応する要素の積を合計する演算を行う。すなわち、この場合の演算結果は、(H1−i×H2−i)となる。
また、新たなフィルタ係数の2番目の数値を求める際には、他方のフィルタ係数の全ての数値列{H2−i,H2−(i−1),H2−(i−2),・・・,H2−1,H20,H21,・・・,H2i−2,H2i−1,H2i}(符号31で示す点線で囲った配列)と、一方のフィルタ係数の2番目の数値を含めてそれより前にある(2i+1)個の数値列{0,0,・・・,0,H1−i,H1−(i−1)}(符号33で示す点線で囲った配列)とを対象として、配列の対応する要素の積を合計する演算を行う。すなわち、この場合の演算結果は、(H1−i×H2−i+H1−(i−1)×H2−(i−1)となる。以下同様にして、新たなフィルタ係数を構成する(2×(2i+1)−1)個の数値列を求める。
図25は、基本ローパスフィルタL4a4,(L4a4)2,(L4a4)4,(L4a4)8の周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。基本ローパスフィルタL4a4が1個のみの場合、振幅が0.5となる位置のクロックは0.25である。これに対して縦続接続数Mが多くなると、フィルタの通過帯域幅が狭くなる。例えばM=8の場合、振幅が0.5となる位置のクロックは0.125となる。
上記図25から分かるように、基本ローパスフィルタL4a4は、周波数特性のカットオフ周波数部分の傾斜が急峻であるという特徴を持つ。また、基本ローパスフィルタフィルタ(L4a4)Mの周波数−ゲイン特性は、縦続接続数Mが多くなるほど通過帯域幅が狭くなり、低周波域においても極めて深くストレートに落ち込む特性が得られる。
図26は、基本ハイパスフィルタH4s4,(H4s4)2,(H4s4)4,(H4s4)8の周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。る。基本ハイパスフィルタH4s4が1個のみの場合、振幅が0.5となる位置のクロックは0.25である。これに対して縦続接続数Mが多くなると、フィルタの通過帯域幅が狭くなる。例えばM=8の場合、振幅が0.5となる位置のクロックは0.375となる。
上記図26から分かるように、基本ハイパスフィルタH4s4は、周波数特性のカットオフ周波数部分の傾斜が急峻であるという特徴を持つ。また、基本ハイパスフィルタフィルタ(H4s4)Mの周波数−ゲイン特性は、縦続接続数Mが多くなるほど通過帯域幅が狭くなり、高周波域においても極めて深くストレートに落ち込む特性が得られる。
<異種の基本フィルタの縦続接続>
異種の基本フィルタを縦続接続した場合も、各基本フィルタの係数どうしが畳み込み演算により乗算・加算されて新しいフィルタ係数が作り出される。この場合は、異種の基本フィルタを任意に組み合わせることによって、各基本フィルタの特性どうしが相殺し合い、所望の周波数帯域を抜き取ることができる。これにより、所望特性のローパスフィルタやハイパスフィルタ、バンドパスフィルタ、バンドエリミネーションフィルタ、コムフィルタなどを簡単に設計することができる。
例えば、上述した基本ローパスフィルタL4a4(k)と基本ハイパスフィルタH4s4(k)とを組み合わせることによって、所望の周波数帯域を通過域とするバンドパスフィルタを設計する例について説明する。
バンドパスフィルタの中心周波数Fcまたは信号のサンプリング周波数Fsの何れかを自由に決定できるときは、周波数抜き取りの条件を最適化することにより、フィルタの構成をより簡素化することができる。今、バンドパスフィルタの中心周波数Fcと信号のサンプリング周波数Fsとの関係が、
Fs=Fc*(4+2q) (q=0,1,2,・・・)
であるとする。
この場合において、Fc=450KHzのとき、Fs=1.8MHz,2.7MHz,3.6MHz,・・・である。このような設定の場合には、基本ハイパスフィルタH4s4(5+3q)と基本ローパスフィルタL4a4(3+2q)とを縦続接続するだけで、バンドパスフィルタを設計することができる。これらの基本ハイパスフィルタH4s4(5+3q)、基本ローパスフィルタL4a4(3+2q)は共に、中心周波数Fcが450KHzとなる通過域を有している。
例えば、q=0(Fs=4Fc)の場合、基本ハイパスフィルタH4s4(5)と基本ローパスフィルタL4a4(3)との縦続接続によりバンドパスフィルタを設計することができる。また、q=1(Fs=6Fc)の場合、基本ハイパスフィルタH4s4(8)と基本ローパスフィルタL4a4(5)との縦続接続によりバンドパスフィルタを設計することができる。
図27は、上述したバンドパスフィルタの設計法を模式的に示す図であり、(a)はq=0の場合、(b)はq=1の場合を示している。例えば図27(a)において、基本ハイパスフィルタH4s4(5)と基本ローパスフィルタL4a4(3)とを縦続接続すると、それぞれの通過域#1,#2で互いに重なった部分のみを通過域#3として取り出すことができる。
図27(b)においても同様に、基本ハイパスフィルタH4s4(8)と基本ローパスフィルタL4a4(5)とを縦続接続すると、それぞれの通過域#1,#2で互いに重なった部分のみを通過域#3として取り出すことができる。q>0の場合は、求めるバンドパスフィルタの中心周波数Fc以外にも通過域が生じるので、これをローパスフィルタ(LPF1)#4によって抜き取る。
バンドパスフィルタのバンド幅は、基本ハイパスフィルタ(H4s4(k))Mあるいは基本ローパスフィルタ(L4a4(k))Mの縦続接続の段数(Mの数)によって調整することが可能である。図27(b)に示す例では、基本ハイパスフィルタH4s4(8)および基本ローパスフィルタL4a4(5)の双方ともM=1としているが、これらを何れもM=8とした場合の周波数特性を、図28および図29に示す。
図28は、基本ハイパスフィルタ(H4s4(8))8および基本ローパスフィルタ(L4a4(5))8の周波数特性を重ねて示したものであり、これらのフィルタを縦続接続することにより、互いに重なった部分のみを取り出すことができる。また、図29は、LPF1あるいはLPF2による通過域の抜き取りを示したものであり、図28のように取り出した3つのバンドパスに対してLPF1あるいはLPF2をかけることにより、両端の通過域のみを取り出すことができる。
次に、異種の基本フィルタの縦続接続によって通過域のバンド幅を狭く調整するための手段について説明する。図25および図26を用いて説明したように、バンド幅を狭くするためには同種の基本フィルタの縦続段数を増やせば良いが、これには限界がある。ここでは、より効率的にバンド幅を狭くできる方法について説明する。図30は、その方法を模式的に示す図である。
図30(a)は図27(b)と同じものである。これより狭いバンド幅を得たい場合は、図30(b)に示すように、基本ハイパスフィルタH4s4(8)の代わりに、例えば基本ハイパスフィルタH4s4(14)を用いる。基本ハイパスフィルタH4s4(14)は、基本ハイパスフィルタH4s4(8)と同様に中心周波数Fcが450KHzとなる通過域を有しており、しかも、バンド幅が基本ハイパスフィルタH4s4(8)の9/15=3/5となっている。
したがって、この基本ハイパスフィルタH4s4(14)を用いることにより、フィルタの縦続段数を増やすことなく、バンド幅を効率的に狭めることができる。また、基本ハイパスフィルタH4s4(14)は、各フィルタ係数の間に挿入する“0”の数を増やしただけなので、係数として実際に取り出すタップ数は全く増えず、回路規模が大きくなることもない。なお、ここでは基本ハイパスフィルタH4s4(14)を用いる例について説明したが、同じ中心周波数Fc=450KHzに通過域を有する基本フィルタであれば、同様に用いることが可能である。
次に、同種の基本フィルタの縦続接続によって通過域のバンド幅を広く調整するための手段について説明する。図31は、傾斜を含めたバンド幅の調整手法を説明するための周波数−ゲイン特性図である。ここでは、調整前の基本フィルタの周波数特性をYFで表すものとする。上述したように、#1に示す基本フィルタYFを2個縦続接続すると、#2に示すように、傾斜が急峻になってバンド幅が狭くなる(−6dBのクロック位置が低周波側に移動する)。
そして、ゲインの中心値(=0.5)を軸として、#2に示す基本フィルタYF2の周波数−ゲイン特性を反転させる(#3)。これは、ディレイを合わせて基準ゲイン値“1”のユニットパルス(中心値が1で、その他が全て0のフィルタ係数に相当)から基本フィルタYF2のフィルタ係数を引くことによって求められる(1−YF2)。ここでは、これを反転基本フィルタと呼ぶことにする。
さらに、#3に示す反転基本フィルタを2個縦続接続する。これにより得られる周波数−ゲイン特性の傾斜は、#4に示すように更に急峻になり、バンド幅も更に狭くなる(−6dBのクロック位置が高周波側に移動する)。ここでは、縦続接続する反転基本フィルタの個数を#2の場合と同じ2個としているが、これより多くすることにより、高周波側への移動量を、先ほどの低周波側への移動量より大きくすることができる。
最後に、ゲインの中心値(=0.5)を軸として、#4に示す周波数−ゲイン特性を反転させる(#5)。これは、ディレイを合わせて基準ゲイン値“1”のユニットパルスから#4のフィルタ係数を引くことによって求められる(1−(1−YF2)2)。元データ#1の周波数特性と調整後データ#5の周波数特性とを比較して見ると、調整後データ#5の周波数特性は元データ#1より傾斜が急峻になるとともに、バンド幅が広くなっている。
調整後データ#5の式を展開すると、以下のようになる。
1−(1−YF2)2
=1−1+2YF2−YF4
=2YF2−YF4 ・・・(式1)
この式1は、#1の基本フィルタおよび#3の反転基本フィルタをそれぞれ2個縦続接続した場合に得られる式であるが、縦続接続する段数はこれに限られない。ただし、バンド幅を広げるためには、#1の縦続段数より#3の縦続段数の方を多くするのが好ましい。この場合、上述した式1は、次の式2のように一般化できる。
a*YFM1−b*YFM2 ・・・(式2)
ただし、a,bは係数(a>b)、M1<M2であり、*は縦続接続を表す。
次に、バンド幅の周波数を微調整するための手段について説明する。図32は、周波数の微調整手法を説明するための周波数−ゲイン特性図である。図32に示すように、基本ハイパスフィルタH4s4(8)の比較的広い通過域の中で、通過域が互いにオーバーラップするようにハイパスフィルタ(HPF)とローパスフィルタ(LPF)とを設計する。そして、これらの各フィルタH4s4(8),HPF,LPFを縦続接続することにより、それぞれの通過域の重なった部分(斜線部分)が通過域となるバンドパスフィルタを得ることができる。
このとき、ハイパスフィルタHPFおよびローパスフィルタLPFの何れか一方、あるいはその両方に対して、図25および図26、あるいは図30で示したような通過域を狭める操作、または、図31で示したような通過域を広げる操作をすることにより、バンドパスフィルタのバンド幅を任意に微調整することができる。
図32(a)では、ローパスフィルタLPFに対して通過域を広げる操作をすることにより、バンドパスフィルタの片側のみを高周波側にシフトする例を示している。また、図32(b)では、ハイパスフィルタHPFに対して通過域を広げる操作をするとともに、ローパスフィルタLPFに対して通過域を狭める操作をすることにより、バンド幅を変えずにバンドパスフィルタの両側を低周波側にシフトする例を示している。
<フィルタ係数の丸め処理>
以上のような基本フィルタの縦続接続、バンド幅の調整等によって求められた数値列が、所望の周波数特性を実現するためのフィルタ係数となる。図33は、16ビットの演算精度で実際に算出したフィルタ係数値(丸め処理前のもの)をグラフ化した図である。また、図34は、フィルタ係数を丸め処理する前におけるデジタルフィルタの周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで示し、(b)はゲインを対数目盛りで示している。
図33に示すように、本実施形態の設計法によって得られるフィルタ係数の値は、中央(係数H0)で最大となる。また、各フィルタ係数の値の差は、従来のフィルタ設計法で得られるフィルタ係数のそれに比べて極めて大きくなる。すなわち、本実施形態の設計法によって得られる各フィルタ係数の分布は、中央付近の局所的な領域で値が大きくなり、他の領域では値が小さくなるとともに、中央付近のフィルタ係数値と周辺のフィルタ係数値との差が極めて大きくなるといった尖鋭度の高い分布となる。そのため、所定の閾値より小さい値のフィルタ係数を丸め処理によって破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。また、周波数特性の帯域外減衰量はフィルタ係数のビット数によって制約を受けるが、図34に示すように、本実施形態のフィルタ設計法によって得られる周波数特性は非常に深い減衰を持っているので、ビット数を多少減らしても、所望の減衰量は確保できる。
したがって、丸め処理によって不要なフィルタ係数を大幅に削減することができる。例えば、フィルタ係数の下位数ビットを切り捨てることでビット数を減らすことにより、その下位数ビットだけで表される最大値よりも小さい値のフィルタ係数を全て“0”に丸めて破棄することができる。よって、フィルタ係数の数を減らすために従来のような窓掛けは必ずしも必要でない。なお、上述したように、縦続接続されている基本フィルタのインパルス応答は有限台の関数となる。そのため、この基本フィルタをもとに設計されるフィルタ係数の数は、従来に比べてそもそも少なく、丸め処理をすることなくそのまま使用することも可能である。しかし、よりタップ数を少なくするために、ビット数を減らす丸め処理を行うのが好ましい。
この点は、従来のフィルタ設計法と大きく異なる本実施形態の特徴点である。すなわち、従来のフィルタ設計法では、求められる各フィルタ係数の分布で尖鋭度がそれほど大きくならないため、フィルタ係数の値で丸め処理をすると、周波数特性を決定付ける主要なフィルタ係数も破棄されてしまうことが多い。また、非常に深い帯域外減衰量を持った周波数特性を得ることも困難なため、フィルタ係数のビット数を減らすと必要な帯域外減衰量を確保できなくなってしまう。よって、従来はビット数を減らす丸め処理を行うことができず、窓掛けによってフィルタ係数の数を減らさざるを得なかった。そのため、周波数特性に打ち切り誤差が発生し、所望の周波数特性を得ることが極めて困難であった。
これに対して、本実施形態では窓掛けを行うことなくフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることはない。したがって、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。
図35は、例えば16ビットの演算精度で算出した図33のようなフィルタ係数に対して10ビットの丸め処理(16ビットから成るフィルタ係数の下位10ビット以下に対して、切り捨て、切り上げまたは四捨五入を行うことによって10ビットのデータとする処理)を行った結果として残った41タップ(ゼロ値を含めた段数は46段)分のフィルタ係数値とそれを整数化した係数値とを示す図である。上述のような基本フィルタの縦続接続によって求まるフィルタ係数の値は小数であり、10ビットの丸め処理によってその桁数を減らすことができるが、ランダムな値の集合である。この数値列をそのままフィルタ係数として用いても良いが、デジタルフィルタを実装する際に使用する乗算器の数をより少なくするために、フィルタ係数の数値を更に丸めて単純化するようにしても良い。そのために本実施形態では、10ビットで丸めたフィルタ係数の数値列を210倍して、係数値を整数化する。なお、ここでは16ビットから成るフィルタ係数の下位10ビット以下を丸めた後、10ビットに丸められたフィルタ係数を更に210倍して整数化する例について説明したが、16ビットから成るフィルタ係数を直接210倍し、その結果得られる値の小数点以下を丸める(切り捨て、切り上げまたは四捨五入など)ことにより、整数化された10ビットのフィルタ係数を直接求めるようにしても良い。
このような整数化の丸め演算を行うと、デジタルフィルタは、図50に示すように、複数の遅延器(D型フリップフロップ)1から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器2で個別に乗算し、それぞれの乗算出力を複数の加算器3で全て加算した後に、1つのシフト演算器4でまとめて1/210倍するように構成することが可能となる。しかも、整数のフィルタ係数は、2i+2j+・・・(i,jは任意の整数)のように2進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
図36は、16ビットの演算精度でフィルタ係数を算出した後、それを10ビットに丸めて(例えば、10ビット以下の桁数を切り捨てて)、その結果を更に整数化した場合の周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで示し、(b)はゲインを対数目盛りで示している。
図36からよく分かるように、本実施形態ではフィルタ設計の際に窓掛けを行っていないので、周波数−ゲイン特性における平坦部のリップルが極めて小さく、±0.3dBの範囲内に充分収まっている。また、丸め処理後の帯域外減衰量は約44dBとなっているが、この帯域外減衰量は実装しようとするハードウェアで対応可能なビット数によって制約される。したがって、ハードウェア規模の制約がなければ、丸め処理後のビット数を大きくしてより減衰の深い帯域外減衰特性を得ることができる。
なお、ここでは丸め処理の例として、フィルタ係数のデータに対して下位数ビットを切り捨てることによってyビットのデータをxビットに丸める処理について説明したが、この例に限定されない。例えば、各フィルタ係数の値を所定の閾値と比較し、閾値より小さいフィルタ係数を破棄するようにしても良い。この場合、残されるフィルタ係数は元のyビットのままであるから、これを整数化する際には2y倍する。
また、整数化演算の他の例として、フィルタ係数の数値列をN倍(Nは2のべき乗以外の値)して小数点以下を丸める(切り捨て、切り上げ、四捨五入など)ようにしても良い。このようなN倍の丸め演算を行った場合、デジタルフィルタは、図51に示すように、複数の遅延器(D型フリップフロップ)1から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器2で個別に乗算し、それぞれの乗算出力を複数の加算器3で全て加算した後に、1つの乗算器5でまとめて1/N倍するように構成することが可能となる。しかも、整数のフィルタ係数は、2i+2j+・・・(i,jは任意の整数)のように2進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
また、数値列を2x倍(xは整数)する場合はフィルタ係数に対してビット単位の丸めを実施することができるのに対し、数値列をN倍する場合はフィルタ係数に対してビット間の丸めを実施することができる。ビット単位の丸め処理とは、例えば係数値を2x倍して小数点以下を切り捨てる場合には、2x〜2x+1の範囲に属する数値は全て2xに丸めるといったように、係数値を1/2xの整数倍とする処理を言う。また、ビット間の丸め処理とは、例えば係数値をN倍(例えば、2x−1<N<2x)して小数点以下を切り捨てる場合には、N〜N+1の範囲に属する数値は全てNに丸めるといったように、係数値を1/Nの整数倍とする処理を言う。N倍の丸め演算を行うことにより、整数化されるフィルタ係数の値を、2のべき乗以外の任意の値に調整することが可能である。このようにすれば、デジタルフィルタで使用するフィルタ係数の数(タップの数)を微妙に調整することができる。
その他、整数化を伴う丸め演算の例として、yビットのフィルタ係数のデータ値が1/2xより小さいものは全てゼロとし、当該データ値が1/2x以上のものについては、当該データ値を2x+X倍(x+X<y)して小数点以下を丸める(切り捨て、切り上げ、四捨五入など)ようにしても良い。このような丸め処理を行った場合、デジタルフィルタは、図52に示すように、複数の遅延器(D型フリップフロップ)1から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器2で個別に乗算し、それぞれの乗算出力を複数の加算器3で全て加算した後に、1つのシフト演算器6でまとめて1/2x+X倍するように構成することが可能となる。しかも、整数のフィルタ係数は、2i+2j+・・・(i,jは任意の整数)のように2進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
また、データ値が1/2xより小さいものは全てゼロとして切り捨てることによってフィルタ係数の数(タップ数)を大幅に削減できると同時に、xビットに比べてビット数が多い(x+X)ビットの精度の良いフィルタ係数を求めることができるので、より良好な周波数特性を得ることもできる。
<フィルタ設計装置の実装例>
以上に説明した本実施形態によるデジタルフィルタの設計方法を実現するための装置は、ハードウェア構成、DSP、ソフトウェアの何れによっても実現することが可能である。例えばソフトウェアによって実現する場合、本実施形態のフィルタ設計装置は、実際にはコンピュータのCPUあるいはMPU、RAM、ROMなどで構成され、RAMやROMあるいはハードディスク等に記憶されたプログラムが動作することによって実現できる。
例えば、各種の基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnに関ナるフィルタ係数をデータとしてRAMやROM、ハードディスク等の記憶装置に記憶しておく。そして、ユーザが基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnに関する任意の組み合わせと接続順、各フィルタ係数間に挿入するゼロ値の数k、基本フィルタの同種縦続接続数Mなどを指示すると、CPUが、上記記憶装置に記憶されているフィルタ係数のデータを用いて、指示された内容に対応するフィルタ係数を上述した演算により求めるようにすることが可能である。この場合、記憶装置が本発明の基本フィルタ係数記憶手段に相当し、CPUが本発明の演算手段に相当する。
ユーザが各基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnに関する組み合わせと接続順、ゼロ値の挿入数k、縦続接続数Mなどを指示する際のユーザインタフェースは、任意に構成することが可能である。例えば、基本フィルタのタイプ(Lman,Lan,Hmsn,Hsn,Bmsn,Bsnの何れか)を画面表示された一覧表からキーボードやマウスの操作によって選択できるようにするとともに、パラメータm,n,k,Mの値をキーボードやマウスの操作によって入力できるようにする。そして、タイプの選択とパラメータの入力とを1つずつ順に行っていったときの入力順を基本フィルタの接続順として入力する。CPUは、このようにして入力された情報を取得し、その入力情報により指示された内容に対応するフィルタ係数を上述した演算により求める。
また、各種の基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnをアイコン化してディスプレイ画面上に表示するようにし(各アイコンに対応してフィルタ係数をデータとして記憶装置に記憶している)、ユーザがこれらのアイコンをキーボードやマウスの操作によりディスプレイ画面上で任意に組み合わせて配置する。また、その他の必要なパラメータはキーボードやマウスの操作によって入力する。そして、CPUがアイコンの配列や入力パラメータに対応するフィルタ係数を自動的に演算して求めるようにしても良い。
また、パーソナルコンピュータ等にインストールされている表計算ソフトの関数機能などを利用して、基本フィルタを求める際の移動平均演算、基本フィルタを縦続接続するときの畳み込み演算などを行うようにすることも可能である。この場合の演算は、実際には、表計算ソフトがインストールされているパーソナルコンピュータ等のCPU、ROM、RAMなどによって行われる。
また、求めたフィルタ係数を自動的にFFT変換し、その結果を周波数−ゲイン特性図としてディスプレイ画面に表示するようにしても良い。このようにすれば、設計したフィルタの周波数特性を視覚的に確認することができ、フィルタ設計をより容易に行うことができる。
<デジタルフィルタの実装例>
実際にデジタルフィルタを電子機器内や半導体ICに実装する場合には、以上のようなフィルタ設計装置によって最終的に求められた数値列をフィルタ係数として持つFIRフィルタを構成すればよい。すなわち、図50〜図52に示したように、単に複数のD型フリップフロップ1と複数の係数器2と複数の加算器3と1つのビットシフト回路4,6または乗算器5とにより1つのデジタルフィルタを構成し、以上のような手順で求めた最終的なフィルタ係数を、当該デジタルフィルタ内の複数の係数器2に設定する形で構成する。
その場合、求められたフィルタ係数の数は10ビットの丸め処理によって大幅に削減されており、かつ、210倍による整数化処理によって単純な整数に変換されている。したがって、タップ数は非常に少なく、しかも基本的に係数器2の部分に乗算器は不要でビットシフト回路にて対応可能であり、所望の周波数特性を小さな回路規模で高精度に実現することができる。
なお、フィルタ設計の際に用いた基本フィルタをそれぞれハードウェアとして構成し、それらをハードウェアとして接続することによってデジタルフィルタを実装するようにしても良い。
以上詳しく説明したように、第1の実施形態によれば、1以上の基本フィルタを任意に組み合わせて縦続接続する形でフィルタ係数を算出し、更に丸め処理によって不要なフィルタ係数を大幅に削除するようにしたので、従来のFIRフィルタに比べてタップ数を大幅に削減することができる。また、フィルタ係数を整数化することにより、各タップ出力にある係数器はビットシフト回路で構成できるので、乗算器が不要となり、構成の殆どはD型フリップフロップおよび加減算器となる。したがって、回路素子数を大幅に削減して回路規模を小さくすることができるとともに、消費電力の低減、演算負荷の軽減等を図ることができる。
しかも、丸め処理によってフィルタ係数の数を大幅に減らせるので、フィルタ係数の数を減らすために従来のような窓掛けを不要とすることができる。窓掛けを行うことなくデジタルフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることがない。したがって、デジタルフィルタの希望する周波数特性を高精度に実現することができる。
また、基本フィルタの組み合わせだけでデジタルフィルタを構成することが可能であり、設計は実際の周波数軸での周波数特性を合成する作業となる。したがって、フィルタ設計が単純で考えやすく、熟練した技術者でなくても、フィルタ設計を極めて簡単に感覚的に行うことができる。
(第2の実施形態)
次に、本発明の第2の実施形態を図面に基づいて説明する。図37は、第2の実施形態によるデジタルフィルタの設計方法の手順を示すフローチャートである。また、図38は、第2の実施形態によるデジタルフィルタの設計方法の概念を説明するための周波数特性図である。
図37において、まず、数値列が対称型の第1のフィルタ係数を生成する(ステップS1)。この第1のフィルタ係数の生成法については特に限定しない。フィルタ係数の数値列が対称型になっていれば、近似式や窓関数を用いる従来の設計法を用いても良い。また、所望の周波数特性を表す複数の振幅値を入力し、当該入力した数値列を逆フーリエ変換した後、得られた数値列に対して窓掛けを行うことによって第1のフィルタ係数を求めるようにしても良い。また、第1の実施形態で説明した設計法を用いても良い。好ましくは、第1の実施形態(丸め処理を除く)で説明した設計法を用いて第1のフィルタ係数を生成する。
図38中に符号Aで示す周波数特性は、ステップS1で生成した第1のフィルタ係数によって実現されるオリジナルフィルタの周波数−ゲイン特性の一例を示している。
次に、第1のフィルタ係数により表される周波数−ゲイン特性(図38中のA)において極大値をとる位置に接点を有し、当該接点において極小値をとる周波数−ゲイン特性(図38中のB)を実現する対称型の第2のフィルタ係数を求める(ステップS2)。周波数−ゲイン特性がこのような特徴を有していれば、第2のフィルタ係数をどのような方法を用いて生成しても良いが、例えば次のような演算によって求めることができる。
すなわち、オリジナルフィルタを構成する第1のフィルタ係数の数値列を{H−i,H−(i−1),・・・,H−1,H0,H1,・・・,Hi−1,Hi}(H0が中央値で、当該中央値を境として対称型となっている。H−i=Hi,H−(i−1)=Hi−1),・・・,H−1=H1)とした場合に、第2のフィルタ係数は、{−αH−i,−αH−(i−1),・・・,−αH−1,−αH0+(1+α),−αH1,・・・,−αHi−1,−αHi}(αは任意の正数)なる演算によって求める。つまり、中央値以外の係数は全て−α倍し、中央値だけは−α倍して更に(1+α)を加算することによって、第2のフィルタ係数を求める。以下、この第2のフィルタ係数を有するフィルタを「調整フィルタ」と呼ぶ。
このようにして第2のフィルタ係数を求めたら、第1のフィルタ係数を有するオリジナルフィルタと、第2のフィルタ係数を有する調整フィルタとを縦続接続した場合に得られる第3のフィルタ係数を求める演算を行う(ステップS3)。オリジナルフィルタと調整フィルタとを縦続接続することにより、第1のフィルタ係数と第2のフィルタ係数とが乗算・加算されて新しいフィルタ係数が作り出される。縦続接続の演算内容は第1の実施形態で述べた通りである。
そして、これによって生成された第3のフィルタ係数に対して、ビット数を減らす丸め処理によって不要なフィルタ係数を大幅に削減するとともに、整数化によってフィルタ係数を簡素化する(ステップS4)。
なお、ここでも第1の実施形態と同様に、フィルタ係数のビット数を減らす処理と係数値を整数化する処理とを別に行う必要は必ずしもなく、係数値を直接2x倍またはN倍し、その結果得られる値の小数点以下を丸める(切り捨て、切り上げまたは四捨五入など)ことによって、フィルタ係数のビット数を減らす処理と係数値を整数化する処理とを1つの丸め演算によって同時に行うようにしても良い。また、yビットの係数値が1/2xより小さいものは全てゼロとし、係数値が1/2x以上のものについては、係数値を2x+X倍(x+X<y)して小数点以下を丸める処理を行うことによって(x+X)ビットの整数化されたフィルタ係数を求めるようにしても良い。
第2の実施形態においても、フィルタ係数の数を減らすために従来のような窓掛けは必ずしも必要でない。窓掛けを行うことなくフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることがない。したがって、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。
なお、ここでは、オリジナルフィルタに対して1個の調整フィルタを縦続接続する場合を例にとって説明したが、複数の調整フィルタを縦続接続するようにしても良い。この場合は、図37中に点線の矢印で示すように、ステップS3で生成した第3のフィルタ係数を新たに第1のフィルタ係数とみなしてステップS2に戻る。そして、当該新たな第1のフィルタ係数(オリジナルフィルタに単一パルスを入力した場合に1段目の調整フィルタから出力される数値列に相当)に基づいて、第2のフィルタ係数を再び求める(新しい調整フィルタを生成する)。
さらに、こうして生成した新たな第1のフィルタ係数と新たな第2のフィルタ係数とを畳み込み演算することによって、新しい調整フィルタを更に縦続接続した場合に得られる新たな第3のフィルタ係数を演算する。このような演算を、縦続接続したい調整フィルタの数だけ繰り返し行った後、最終段階のステップS3で生成された第3のフィルタ係数に対して、ステップS4の丸め処理を実行する。
図39は、オリジナルフィルタ(バンドパスフィルタ)の周波数−ゲイン特性およびこのオリジナルフィルタに対して1〜3個の調整フィルタを縦続接続した場合に得られる周波数−ゲイン特性を示す図である。図39において、41はオリジナルフィルタの周波数−ゲイン特性、42は調整フィルタを1個縦続接続した場合に得られる周波数−ゲイン特性、43は調整フィルタを2個縦続接続した場合に得られる周波数−ゲイン特性、44は調整フィルタを3個縦続接続した場合に得られる周波数−ゲイン特性をそれぞれ示す。
この図39に示すように、オリジナルフィルタに対して本実施形態の調整フィルタを縦続接続することにより、フィルタの通過帯域幅を広げ、かつ、阻止域の傾斜を急峻にすることができる。縦続接続する調整フィルタの数を多くすることにより、通過帯域幅がより広くて傾斜もより急峻なフィルタ特性を得ることができる。
なお、この図39は、第1のフィルタ係数から第2のフィルタ係数を求める際のパラメータαの値を1.5とした場合の周波数特性を示している。図39に示されるように、α≠1とした場合には、周波数特性の頂部に若干のオーバーシュートやリンギングが生じる。ただし、α=1とした場合には、周波数特性の頂部にオーバーシュートやリンギングが生じることはなく、平坦な特性となる。
図40は、本実施形態の調整フィルタを縦続接続した場合に得られる周波数特性の変化の原理を説明するための図である。なお、この図40は基本原理を説明するためのものであり、図39に示した周波数特性の波形と一致するものではない。この図40は、α=1とした場合の原理を示している。
図40(a)は、オリジナルフィルタに対して1個目の調整フィルタを縦続接続した場合における周波数−ゲイン特性の変化を示す。図40(a)において、Aはオリジナルフィルタの周波数−ゲイン特性、Bは当該オリジナルフィルタが有する第1のフィルタ係数から生成した第2のフィルタ係数を有する1個目の調整フィルタの周波数−ゲイン特性、Cはオリジナルフィルタと1個目の調整フィルタとを縦続接続した場合に得られる周波数−ゲイン特性を示す。
すなわち、オリジナルフィルタに対して調整フィルタを1個縦続接続した場合の新たな周波数−ゲイン特性Cは、オリジナルフィルタの周波数−ゲイン特性Aと、調整フィルタの周波数−ゲイン特性Bとを掛け合わせた形となる。2個目の調整フィルタを更に縦続接続する場合には、このように生成された周波数−ゲイン特性Cに対応する第3のフィルタ係数を新たに第1のフィルタ係数として用い、2個目の調整フィルタに関する新たな第2のフィルタ係数を求める。
図40(b)は、2個目の調整フィルタを更に縦続接続した場合における周波数−ゲイン特性の変化を示す。図40(b)において、A’は1個目の調整フィルタを縦続接続した場合の周波数−ゲイン特性であり、図40(a)の手順で求められた周波数−ゲイン特性Cと同じものである。B’は当該周波数−ゲイン特性A’に対応する新たな第1のフィルタ係数から生成した新たな第2のフィルタ係数を有する2個目の調整フィルタの周波数−ゲイン特性である。C’は2個目の調整フィルタを更に縦続接続した場合に得られる新たな周波数−ゲイン特性であり、2つの周波数−ゲイン特性A’,B’を掛け合わせた形のものとなっている。
ここでは図示しないが、3個目の調整フィルタを更に縦続接続する場合には、図40(b)の手順で生成された新たな周波数−ゲイン特性C’に対応するフィルタ係数を再び第1のフィルタ係数として用い、3個目の調整フィルタに関する新たな第2のフィルタ係数を求める。そして、上述と同様の手順に従って新たな周波数−ゲイン特性を得る。
このように、オリジナルフィルタに対して複数の調整フィルタを縦続接続することにより、フィルタの通過帯域幅を広げるとともに、阻止域の傾斜を急峻にしていくことができる。α=1とした場合には、オリジナルフィルタの周波数−ゲイン特性と調整フィルタの周波数−ゲイン特性とは、振幅が“1”のラインを境として線対称となる。したがって、調整フィルタを何個接続しても、掛け合わされた新たなフィルタの周波数−ゲイン特性が振幅“1”のラインを超えることはなく、オーバーシュートやリンギングは発生しない。このことから、αの値は“1”とするのが好ましい。
一方、αの値を1より大きくすると、多少のオーバーシュートやリンギングは発生するが、1個当たりの調整フィルタの接続で広げられる通過帯域幅の割合を大きくすることができる。したがって、少ない数の調整フィルタで通過帯域幅を効率的に広げたい場合には、αの値を大きくするのが良い。この場合において、α≠1として第2のフィルタ係数を求めた調整フィルタを複数段縦続接続した後、最終段にα=1の調整フィルタを接続することによって、通過帯域幅を効率的に広げるとともに、オーバーシュートやリンギングのない良好な周波数特性を得ることができる。
図41は、オリジナルフィルタに対して、α=1.5の調整フィルタを3段縦続接続するとともに、最終段にα=1の調整フィルタを更に縦続接続した場合に得られる周波数特性を示す図である。この図41から分かるように、最終段にα=1の調整フィルタを接続すれば、通過帯域幅が広く、阻止域の傾斜が急峻で、かつ、頂部が平坦な良好な周波数特性を得ることができる。また、フィルタ係数は対称型なので、位相の直線性も確保できる。また、α<1としてαの値を調整することにより、通過周波数帯域幅を微調整することが可能である。
なお、以上ではバンドパスフィルタの設計例について説明したが、ローパスフィルタやハイパスフィルタなども同様の手順で設計することができる。図42は、オリジナルのローパスフィルタの周波数−ゲイン特性およびこのオリジナルローパスフィルタに対して1〜5個の調整フィルタを縦続接続した場合に得られる周波数−ゲイン特性を示す図である。この図42は、α=1とした場合の周波数特性を示している。
図42において、51はオリジナルローパスフィルタの周波数−ゲイン特性、52〜56はそれぞれ調整フィルタを1個〜5個縦続接続した場合に得られる周波数−ゲイン特性を示す。この図42に示すように、ローパスフィルタの場合も図39のバンドパスフィルタと同様に、調整フィルタを縦続接続することによってフィルタの通過帯域幅を広げ、かつ、阻止域の傾斜を急峻にすることができる。また、縦続接続する調整フィルタの数を多くすることにより、通過帯域幅がより広くて傾斜もより急峻なフィルタ特性を得ることができる。
以上に説明した第2の実施形態によるフィルタ設計法を実現するための装置も、ハードウェア構成、DSP、ソフトウェアの何れによっても実現することが可能である。例えばソフトウェアによって実現する場合、本実施形態のフィルタ設計装置は、実際にはコンピュータのCPUあるいはMPU、RAM、ROMなどで構成され、RAMやROMあるいはハードディスク等に記憶されたプログラムが動作することによって実現できる。
第1のフィルタ係数を求めることは、第1の実施形態と同様に構成することができる。すなわち、各種の基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnに関するフィルタ係数をデータとして記憶装置に記憶しておく。そして、ユーザが基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnに関する任意の組み合わせと接続順、各フィルタ係数間に挿入するゼロ値の数k、基本フィルタの同種縦続接続数Mなどを指示すると、CPUが、上記記憶装置に記憶されているフィルタ係数のデータを用いて、指示された内容に対応するフィルタ係数を上述した演算により求める。
また、第1のフィルタ係数から調整フィルタの第2のフィルタ係数を求めることは、CPUが数値列の中央値以外の係数を全て−α倍し、中央値だけは−α倍して更に(1+α)を加算することによって行うことが可能である。また、第1のフィルタ係数と第2のフィルタ係数から縦続接続による第3のフィルタ係数を求めることも、CPUが上述した図24のような演算をすることによって行うことが可能である。さらに、フィルタ係数の丸め処理もCPUによって自動的に行うことが可能である。
また、パーソナルコンピュータ等にインストールされている表計算ソフトの関数機能などを利用して、第1のフィルタ係数を求める演算、第2のフィルタ係数を求める演算、第3のフィルタ係数を求める演算、第3のフィルタ係数を丸め処理する演算を行うようにすることも可能である。この場合の演算は、実際には、表計算ソフトがインストールされているパーソナルコンピュータ等のCPU、ROM、RAMなどによって行われる。
また、求めたフィルタ係数を自動的にFFT変換し、その結果を周波数−ゲイン特性図としてディスプレイ画面に表示するようにしても良い。このようにすれば、設計したフィルタの周波数特性を視覚的に確認することができ、フィルタ設計をより容易に行うことができる。
実際にデジタルフィルタを電子機器内や半導体ICに実装する場合には、図50〜図52に示したように、以上のようなフィルタ設計装置によって最終的に求められた数値列をフィルタ係数として持つFIRフィルタを構成すればよい。この場合も、求められたフィルタ係数の数は丸め処理によって大幅に削減されており、かつ、単純な整数に変換されている。したがって、基本的に乗算器は不要でビットシフト回路にて対応可能であり、所望の周波数特性を小さな回路規模で高精度に実現することができる。
なお、オリジナルフィルタと調整フィルタとをそれぞれハードウェアとして構成し、それらをハードウェアとして接続することによってデジタルフィルタを実装するようにしても良い。
(第3の実施形態)
次に、本発明の第3の実施形態を図面に基づいて説明する。図43および図44は、第3の実施形態によるデジタルフィルタの設計方法の手順を示すフローチャートである。また、図45〜図48は、第3の実施形態によるデジタルフィルタの設計方法の概念を説明するための周波数特性図である。
図43は、第3の実施形態によるデジタルフィルタ設計方法の全体的な処理の流れを示すフローチャートである。図43において、まず、フィルタ係数の数値列が対称型の基本フィルタを生成する(ステップS11)。この基本フィルタは、フィルタリングの処理対象とする信号のサンプリング周波数fsの1/β(βは1以上の整数)の通過帯域幅を有する周波数−ゲイン特性を有するものである。図45に、基本フィルタの周波数−ゲイン特性を示す。この図45は、サンプリング周波数fsの半分を128等分した帯域幅を持つ基本フィルタの周波数−ゲイン特性を示したものである。
次に、図45のような周波数−ゲイン特性を有する基本フィルタに対して周波数シフトの演算を行うことによって、互いに隣接するフィルタ群が振幅1/2の部分で重なり合うように基本フィルタの周波数−ゲイン特性が所定周波数ずつシフトされた複数の周波数シフトフィルタを生成する(ステップS12)。この周波数シフトは、次のような演算で行うことができる。
基本フィルタのフィルタ係数列を{H−i 0,H−(i−1) 0,H−(i−2) 0,・・・,H−1 0,H0 0,H1 0,・・・,Hi−2 0,Hi−1 0,Hi 0}(係数H0 0を中心として対称型となっている)、基本フィルタから数えてγ個目の周波数シフトフィルタ(基本フィルタの周波数−ゲイン特性を「所定周波数×γ」だけ周波数シフトしたもの)のフィルタ係数列を{H−i γ,H−(i−1) γ,H−(i−2) γ,・・・,H−1 γ,H0 γ,H1 γ,・・・,Hi−2 γ,Hi−1 γ,Hi γ}とした場合、γ個目の周波数シフトフィルタにおける係数番号j(j=−i,−(i−1),−(i−2),・・・,−1,0,1,・・・,i−2,i−1,i)の係数Hj γは、
Hj γ=Hj 0*2cos(2πγj/(β/2))
によって求められる。
例えばγ個目の周波数シフトフィルタにおける係数番号が−iの係数H−i γは、
H−i γ=H−i 0*2cos(2πγ*(−i)/(β/2))
によって求められる。また、係数番号が−(i−1)の係数H−(i−1) γは、
H−(i−1) γ=H−(i−1) 0*2cos(2πγ*(−(i−1)/(β/2))
によって求められる。他の係数{H−(i−2) γ,・・・,H−1 γ,H0 γ,H1 γ,・・・,Hi−2 γ,Hi−1 γ,Hi γ}も同様の演算によって求められる。
図46に、このステップS12で生成される複数の周波数シフトフィルタが有する周波数−ゲイン特性を示す(点線は基本フィルタの周波数−ゲイン特性)。上記ステップS11およびステップ312の処理により、フィルタ群が振幅1/2の部分で重なり合うような周波数−ゲイン特性を有する複数のフィルタのフィルタ係数群が得られる。周波数シフトによって生成するフィルタの個数は任意であるが、基本フィルタの帯域幅がサンプリング周波数fsの半分を128分割したものであるときは、一例として、基本フィルタと周波数シフトフィルタとを含めて合計128個とする。ここで生成するフィルタの個数によって決まる周波数範囲が、最終生成物たるデジタルフィルタの設計エリアとなる。
そして、上記ステップS11およびステップS12で生成された複数のフィルタの中から任意の1以上のフィルタを取り出して、それらのフィルタ係数を対応する係数番号どうしで加算することにより、新たなフィルタ係数を求める(ステップS13)。例えば、基本フィルタから数えてγ個目の周波数シフトフィルタと(γ+1)個目の周波数シフトフィルタとを加算する場合、求めるフィルタ係数は、
{H−i γ+H−i γ+1,H−(i−1) γ+H−(i−1) γ+1,H−(i−2) γ+H−(i−2) γ+1,・・・,H−1 γ+H−1 γ+1,H0 γ+H0 γ+1,H1 γ+H1 γ+1,・・・,Hi−2 γ+Hi−2 γ+1,Hi−1 γ+Hi−1 γ+1,Hi γ+Hi γ+1}となる。
図47は、このステップS13で生成されるデジタルフィルタが有する周波数−ゲイン特性の一例を示す図である。なお、この図47において、周波数軸のスケールは図45、図46と比べて大幅に圧縮している。この図47に示す周波数−ゲイン特性は、γ=0〜31およびγ=33〜38に相当する複数のフィルタを取り出して、それらのフィルタ係数を対応する係数番号どうしで加算することによって生成したデジタルフィルタの周波数特性を示したものである。
上述のように、互いに隣接するフィルタは、振幅1/2の部分でちょうど重なり合うように作られているので、それらのフィルタ係数を加算すると、振幅はちょうど“1”となる。その結果、得られるフィルタの通過域の頂部が平坦化される。したがって、γ=0〜31に相当する32個のフィルタの係数を加算すると、それら32個のフィルタの頂部が平坦化され、(fs/2/128)×32のバンド幅を有する通過域が得られる。また、γ=32に相当するフィルタは加算の対象となっていないので、その部分にはトラップが生じる。さらに、γ=33〜38に相当する6個のフィルタの係数を加算すると、それら6個のフィルタの頂部が平坦化され、(fs/2/128)×6のバンド幅を有する通過域が得られる。以上により、γ=0〜38の部分に通過域を有し、かつ、γ=32の部分にトラップを有する特殊形状のローパスフィルタを得ることができる。
次に、ステップS13で生成されたフィルタ係数に対して、ビット数を減らす丸め処理によって不要なフィルタ係数を大幅に削減するとともに、整数化によってフィルタ係数を簡素化する(ステップS14)。
なお、ここでも第1の実施形態と同様に、フィルタ係数のビット数を減らす処理と係数値を整数化する処理とを別に行う必要は必ずしもなく、係数値を直接2x倍またはN倍し、その結果得られる値の小数点以下を丸める(切り捨て、切り上げまたは四捨五入など)ことによって、フィルタ係数のビット数を減らす処理と係数値を整数化する処理とを1つの丸め演算によって同時に行うようにしても良い。また、yビットの係数値が1/2xより小さいものは全てゼロとし、係数値が1/2x以上のものについては、係数値を2x+X倍(x+X<y)して小数点以下を丸める処理を行うことによって(x+X)ビットの整数化されたフィルタ係数を求めるようにしても良い。
第3の実施形態においても、フィルタ係数の数を減らすために従来のような窓掛けは必ずしも必要でない。窓掛けを行うことなくフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることがない。したがって、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。
次に、上記ステップ311における基本フィルタの生成法について詳しく説明する。本発明では、この基本フィルタの生成法については特に限定しない。フィルタ係数の数値列が対称型になっていれば、様々な生成法を適用することが可能である。例えば、近似式や窓関数を用いる従来の設計法を用いても良い。また、所望の周波数特性を表す複数の振幅値を逆フーリエ変換する設計法を用いても良い。また、第1の実施形態で説明した設計法(丸め処理を除く)を用いても良い。
図44は、基本フィルタの生成処理の一例を示すフローチャートである。図44において、まず、対称型の基本的な数値列をフィルタ係数として持つ第1の実施形態のような基本フィルタに対し、数値列の間に複数の“0”を挿入することによってフィルタ帯域を調整する(ステップS21)。例えば、基本ローパスフィルタL4a4のフィルタ係数を構成する数値列{−1,0,9,16,9,0,−1}の間に“0”を1個ずつ挿入する。
図23に示したように、数値列が{−1,0,9,16,9,0,−1}から成るフィルタ係数の基本ローパスフィルタL4a4は、中心周波数の両側に通過域を1つずつ有するローパスフィルタ特性を実現するものである。このような基本ローパスフィルタL4a4のフィルタ係数間に“0”を1個ずつ挿入すると、その周波数−ゲイン特性の周波数軸(周波数方向に対する周期)は1/2となり、通過域の数が2倍に増える。同様にして、フィルタ係数間に挿入する“0”の数をk個とすると、その周波数−ゲイン特性の周波数軸は1/(k+1)となる。
したがって、挿入する“0”の数を127個とすることにより、サンプリング周波数fsの半分を128等分した帯域幅を通過域として持つローパスフィルタの周波数−ゲイン特性が得られる。ただし、このままでは中心周波数より低い帯域内に128個の通過域が存在する連続波の周波数特性となっているので、この連続波から図45のような基本フィルタを構成する単独波の周波数特性を切り出す必要がある。この切り出しを行うのが、以下に説明するステップS22,S23の処理である。
単独波の切り出しを行う際には、まず、図48に示すような窓フィルタWFを生成する(ステップS22)。この窓フィルタWFは、図45のような基本フィルタとして抽出すべき単独波の通過域のみと共通の通過域を有するものである。そして、このような窓フィルタWFと基本ローパスフィルタL4a4(127)とを縦続接続することにより、図45のような基本フィルタを抽出する(ステップS23)。この窓フィルタWFと基本ローパスフィルタL4a4(127)との縦続接続は、図24で説明したようなフィルタ係数の演算によって行うことができる。
本発明では、窓フィルタWFの生成法も特に限定せず、様々な生成法を適用することが可能である。一例としては、窓フィルタWFの周波数特性を表す複数の振幅値を入力し、当該入力した数値列を逆フーリエ変換するという方法がある。周知のように、ある数値列に対してフーリエ変換(FFT)の処理を行うと、その数値列に対応した周波数−ゲイン特性の波形が得られる。したがって、所望の周波数−ゲイン特性の波形を表す数値列を入力してそれを逆FFTし、その実数項を抽出すれば、当該周波数−ゲイン特性を実現するのに必要な元の数値列が得られる。この数値列が、求める窓フィルタWFのフィルタ係数に相当する。
なお、理想的なフィルタを構成するには、本来、フィルタ係数を無限個必要とし、フィルタのタップ数も無限個にする必要がある。したがって、所望の周波数特性との誤差を小さくするためには、フィルタ係数の数に対応する入力データの数を、周波数誤差が必要な範囲内に入る程度まで多くするのが好ましい。ただし、窓フィルタWFに関しては、その通過域の中に基本フィルタだけの通過域が全て含まれていれば良く、それ以上の精度は要求されない。したがって、数値列の入力データ数(窓フィルタWFのフィルタ係数の数)はそれほど多くしなくも良い。
窓フィルタWFの周波数特性を表す振幅値の入力は、個々のサンプル点の数値を直接入力しても良いし、周波数−ゲイン特性を表すための2次元入力座標上において、所望の周波数特性の波形を描画し、描画された波形をそれに対応する数値列に置換入力するようにしても良い。後者の入力手法を用いれば、所望の周波数−ゲインをイメージとして確認しながらデータ入力を行うことができるので、所望の周波数特性を表すデータの入力を直感的に行いやすくすることができる。
後者の入力手法を実現する手段は幾つか考えられる。例えば、コンピュータのディスプレイ画面上に周波数−ゲイン特性を表す2次元平面を表示して、その2次元平面上に所望の周波数特性の波形をGUI(Graphical User Interface)等により描画し、それを数値データ化するという方法が考えられる。また、コンピュータ画面上のGUIの代わりに、ディジタイザやプロッタ等のポインティングデバイスを用いても良い。ここに挙げている手法は単なる例に過ぎず、これ以外の手法により数値列を入力するようにしても良い。また、ここでは所望の周波数−ゲイン特性を数値列として入力しているが、当該周波数−ゲイン特性の波形を表す関数として入力するようにしても良い。
なお、窓フィルタWFを用いることなく、基本フィルタの周波数特性を表す振幅値を入力して逆FFTすることにより、基本フィルタのフィルタ係数を直接求めることも可能である。ただし、逆FFT演算によって理想的な基本フィルタを構成するため(所望の周波数特性との誤差を小さくするため)には、フィルタ係数の数に対応する入力データの数を非常に多くする必要がる。この場合、基本フィルタを構成するフィルタ係数の数が膨大になり、これを利用して生成される最終生成物としてのフィルタ係数の数も膨大になってしまう。したがって、フィルタ係数の数をできるだけ少なくすることを希望する場合には、上述のように窓フィルタWFを用いて基本フィルタを生成するのが好ましい。
上述したように、基本フィルタのフィルタ係数を求めたら、周波数シフトの演算によって複数の周波数シフトフィルタのフィルタ係数を更に求める。そして、基本フィルタおよび複数の周波数シフトフィルタの中から任意の1以上のフィルタを取り出して、それらのフィルタ係数を対応する係数番号どうしで加算することにより、新たなフィルタ係数を求める。抽出するフィルタを任意に変えることにより、任意の周波数特性を有するデジタルフィルタを生成することができる。
また、以上のようにして求めたフィルタ係数の数値列に対して、ビット数を減らす丸め処理によって不要なフィルタ係数を大幅に削減するとともに、整数化によってフィルタ係数を簡素化することができる。よって、フィルタ係数の数を減らすために従来のような窓掛けは必要ない。窓掛けを行うことなくフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることがない。したがって、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。
図47では一部にトラップを有するローパスフィルタの生成例を示したが、これ以外にも、任意の周波数帯域に通過域を有するローパスフィルタやハイパスフィルタ、バンドパスフィルタ、バンドエリミネーションフィルタを生成することが可能である。さらに、櫛型フィルタやその他の特殊な周波数特性を有するデジタルフィルタも簡単に生成することができる。また、基本フィルタを生成するときに分割数(βの数)を大きくしておけば、基本フィルタおよび個々の周波数シフトフィルタの阻止域の傾斜が大きくなるとともに、フィルタ設計エリアに対する分解能も高くなるので、希望の周波数特性に精密に合致したデジタルフィルタを生成することができる。
以上に説明した第3の実施形態によるフィルタ設計法を実現するための装置も、ハードウェア構成、DSP、ソフトウェアの何れによっても実現することが可能である。例えばソフトウェアによって実現する場合、本実施形態のフィルタ設計装置は、実際にはコンピュータのCPUあるいはMPU、RAM、ROMなどで構成され、RAMやROMあるいはハードディスク等に記憶されたプログラムが動作することによって実現できる。
例えば、パーソナルコンピュータ等にインストールされている表計算ソフトの関数機能などを利用して、基本フィルタを求める演算、周波数シフトフィルタを求める演算、基本フィルタと複数の周波数シフトフィルタの中から任意に選択されたもののフィルタ係数を加算する演算を行うようにすることも可能である。この場合の演算は、実際には、表計算ソフトがインストールされているパーソナルコンピュータ等のCPU、ROM、RAMなどによって行われる。
また、基本フィルタのフィルタ係数と、複数の周波数シフトフィルタのフィルタ係数とをあらかじめ計算して記憶装置に記憶しておき、ユーザによってキーボードやマウスの操作により選択されたものをCPUが抽出して演算するようにしても良い。図49は、その場合のデジタルフィルタ設計装置の構成例を示すブロック図である。
図49において、61はフィルタ係数テーブルであり、上述した基本フィルタのフィルタ係数と、複数の周波数シフトフィルタのフィルタ係数とを含むフィルタ係数群(フィルタ設計エリアを構成する全周波数帯域のフィルタ係数群)のテーブルデータを記憶している。図中、横軸の数字はフィルタの番号を示している。すなわち、0番の列は基本フィルタのフィルタ係数を記憶しており、1番以降の列は周波数シフトフィルタのフィルタ係数を記憶している。62はコントローラであり、装置全体の制御を行う。
63は操作部であり、基本フィルタおよび複数の周波数シフトフィルタの中から任意の1以上のフィルタを選択するためのものである。この操作部13は、例えばキーボードやマウスなどの入力デバイスにより構成される。64は表示部であり、任意の1以上のフィルタを選択する際の選択画面を表示する。この選択画面は、フィルタ係数テーブル61の列番号を表示して何れかを選択させるものであっても良いし、図46のような周波数特性の波形を表示して何れかを選択させるものであっても良い。
65は演算部であり、基本フィルタおよび複数の周波数シフトフィルタの中から操作部13によって選択されたフィルタのフィルタ係数(コントローラ12がフィルタ係数テーブル11から読み出す)を対応する係数番号どうしで加算することにより、デジタルフィルタのフィルタ係数を求める。この演算部65は、このようにして求めたフィルタ係数のデータに対して下位数ビットを切り捨てることによってyビットのデータをxビットに丸める処理や、xビットの係数値を2x倍して小数点以下を丸める処理も行う。
このように構成したデジタルフィルタ設計装置では、基本フィルタおよび複数の周波数シフトフィルタのフィルタ係数をあらかじめ求めてテーブルデータ化しておくことにより、ユーザが操作部63を操作して選択したフィルタのフィルタ係数を単に足し算するだけの極めて簡単な演算だけで、所望のデジタルフィルタを設計することができる。
実際にデジタルフィルタを電子機器内や半導体ICに実装する場合には、図50〜図52に示したように、以上のようなフィルタ設計装置によって最終的に求められた数値列をフィルタ係数として持つFIRフィルタを構成すればよい。この場合、求められたフィルタ係数の数は丸め処理によって大幅に削減されるとともに、単純な整数に変換されている。したがって、基本的に乗算器は不要でビットシフト回路にて対応可能であり、所望の周波数特性を小さな回路規模で高精度に実現することができる。
なお、基本フィルタと周波数シフトフィルタとをそれぞれハードウェアとして構成し、それらをハードウェアとして接続することによってデジタルフィルタを実装するようにしても良い。
上記のように構成した第3の実施形態によれば、基本フィルタおよびこれから生成した複数の周波数シフトフィルタの中から所望の1以上のフィルタを選択してそのフィルタ係数を加算するだけの極めて簡易な処理で、任意形状の周波数−ゲイン特性を有するデジタルフィルタを精密に設計することができる。さらに、丸め処理によって不要なフィルタ係数を大幅に削減することができるとともに、フィルタ係数を簡素化することができる。これにより、所望の周波数特性を高精度に実現するデジタルフィルタを極めて小さい回路規模で構成することができる。
なお、上記第3の実施形態では、基本ユニットフィルタのフィルタ係数の数値列として{−1,0,9,16,9,0,−1}を用いる例について説明したが、本発明はこれに限定されない。数値列が対称型になっていれば、本発明に適用することが可能である。
また、上記第3の実施形態では、基本フィルタとしてローパスフィルタを用い、これを高周波側に周波数シフトする例について説明したが、本発明はこれに限定されない。基本フィルタとしてハイパスフィルタを用い、これを低周波側に周波数シフトするようにしても良いし、基本フィルタとしてバンドパスフィルタを用い、これを高周波側および低周波側に周波数シフトするようにしても良い。
また、上記第3の実施形態において、演算部63は、操作部13によって選択された1以上のフィルタのフィルタ係数(コントローラ12がフィルタ係数テーブル11から読み出したもの)を加算することによって新たなフィルタ係数を算出する演算を行う際に、当該選択された1以上のフィルタのフィルタ係数に対してそれぞれ任意の重み付けを行うようにしても良い。このようにすれば、特定の周波数帯域のみを強調したり減衰させたりした任意形状の周波数−ゲイン特性を有するデジタルフィルタを極めて簡易に設計することができる。また、この特性を利用したグラフィックイコライザ等も簡単に設計することができる。
その他、上記第1〜第3の実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
以下、本発明の第1の実施形態を図面に基づいて説明する。本実施形態では、特定のインパルス応答を有する数種類の基本フィルタを定義し、それらを任意に縦続接続する形で所望の周波数特性を有するFIRフィルタを実現する。基本フィルタは、基本ローパスフィルタ、基本ハイパスフィルタ、基本バンドパスフィルタ(櫛型フィルタを含む)の3種類に大きく分類される。以下、これらの基本フィルタについて説明する。
<基本ローパスフィルタLman(m,nは変数で、nは自然数)>
基本ローパスフィルタLmanのフィルタ係数は、“−1,m,−1”の数値列を出発点として、演算前の元データとそれより所定遅延量だけ前の前データとを順次加算していく移動平均演算によって求める。
図1は、基本ローパスフィルタL4an(m=4とした場合)のフィルタ係数を示す図である。図1において、移動平均演算によって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”とを加算することによって得られる。
図1に示す基本ローパスフィルタ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となる。
図1の例のように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”をz倍(z−1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本ローパスフィルタLmanのフィルタ係数は、何れもその数値列の総和が“1”で、数値列の1つ飛びの合計値が同符号で互いに等しくなるという性質を持つ。
図2は、基本ローパスフィルタL4a4(m=4,n=4とした場合)のフィルタ係数の数値列をFFT変換して得られる周波数特性(周波数−ゲイン特性および周波数−位相特性)を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを32倍して示している。一方、周波数は“1”で基準化している。
この図2から分かるように、周波数−ゲイン特性は通過域がほぼ平坦で、遮断域の傾斜がなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本ローパスフィルタL4a4では、オーバーシュートやリンギングも存在しない良好なローパスフィルタの周波数特性を得ることができる。
図3は、基本ローパスフィルタL4anのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図3より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本ローパスフィルタL4anは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
図4は、基本単位フィルタの数値列“−1,N”でN=0とした場合の基本ローパスフィルタLanのフィルタ係数を示す図である。N=0の場合、基本単位フィルタを2段縦続接続したときのフィルタ係数は“0,1,0”となる。したがって、基本ローパスフィルタLanのフィルタ係数は、“1”を出発点として、元データと前データとを順次加算していく移動平均演算によって求められる。
図4に示す基本ローパスフィルタLanの何れのフィルタ係数も、その数値列は対称型であり、数値列の1つ飛びの合計値が同符号で互いに等しくなるという性質を持っている(例えば基本ローパスフィルタLa4の場合、1+6+1=8,4+4=8)。
図5は、基本ローパスフィルタLa4のフィルタ係数の数値列をFFT変換して得られる周波数特性を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを16倍して示している。一方、周波数は“1”で基準化している。
この図5から分かるように、周波数−ゲイン特性でほぼ平坦な通過域は図2に比べて狭くなるが、遮断域の傾斜はなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本ローパスフィルタLa4においても、オーバーシュートやリンギングも存在しない良好なローパスフィルタの周波数特性を得ることができる。
図6は、基本ローパスフィルタLanのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図6より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本ローパスフィルタLanは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
<基本ハイパスフィルタHmsn(m,nは変数で、nは自然数)>
基本ハイパスフィルタHmsnのフィルタ係数は、“1,m,1”の数値列を出発点として、演算前の元データからそれより所定遅延量だけ前の前データを順次減算していく移動平均演算によって求める。
図7は、基本ハイパスフィルタH4sn(m=4とした場合)のフィルタ係数を示す図である。図7において、移動平均演算によって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”を減算することによって得られる。
図7に示す基本ハイパスフィルタ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となる。
図7の例のように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”をz倍(z=1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本ハイパスフィルタHmsnのフィルタ係数は、何れもその数値列の総和が“0”で、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持つ。
図8は、基本ハイパスフィルタH4s4(m=4,n=4とした場合)のフィルタ係数の数値列をFFT変換して得られる周波数特性を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを32倍して示している。一方、周波数は“1”で基準化している。
この図8から分かるように、周波数−ゲイン特性は通過域がほぼ平坦で、遮断域の傾斜がなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本ハイパスフィルタH4s4では、オーバーシュートやリンギングも存在しない良好なハイパスフィルタの周波数特性を得ることができる。
図9は、基本ハイパスフィルタH4snのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図9より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本ハイパスフィルタH4snは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
図10は、基本単位フィルタの数値列“1,N”でN=0とした場合の基本ハイパスフィルタHsnのフィルタ係数を示す図である。N=0の場合、基本単位フィルタを2段縦続接続したときのフィルタ係数は“0,1,0”となる。したがって、基本ハイパスフィルタHsnのフィルタ係数は、“1”を出発点として、元データから前データを順次減算していく移動平均演算によって求められる。
図10に示す基本ハイパスフィルタHsnにおいて、nが偶数のときは何れのフィルタ係数も、その数値列は対称型であり、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている(例えば基本ハイパスフィルタHs4の場合、1+6+1=8,−4+(−4)=−8)。nが奇数のときは、その数値列は絶対値が対称型となっており、前半の数値列と後半の数値列とは逆符号になる。また、数値列の1つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている。
図11は、基本ハイパスフィルタHs4のフィルタ係数の数値列をFFT変換して得られる周波数特性を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを16倍して示している。一方、周波数は“1”で基準化している。
この図11から分かるように、周波数−ゲイン特性でほぼ平坦な通過域は図8に比べて狭くなるが、遮断域の傾斜はなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本ハイパスフィルタHs4においても、オーバーシュートやリンギングも存在しない良好なハイパスフィルタの周波数特性を得ることができる。
図12は、基本ハイパスフィルタHsnのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図12より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本ハイパスフィルタHsnは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
<基本バンドパスフィルタBmsn(m,nは変数で、nは自然数)>
基本バンドパスフィルタBmsnのフィルタ係数は、“1,0,m,0,1”の数値列を出発点として、元データから2つ前の前データを順次減算していく移動平均演算によって求める。
図13は、基本バンドパスフィルタB4sn(m=4とした場合)のフィルタ係数を示す図である。図13において、移動平均演算によって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”を減算することによって得られる。
図13に示す基本バンドパスフィルタ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となる。
図13の例のように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”をz倍(z=1/(m−2))したものに相当する。
このように基準化した数値列をフィルタ係数として使用した場合、基本バンドパスフィルタBmsnのフィルタ係数は、何れもその数値列の総和が“0”で、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持つ。
図14は、基本バンドパスフィルタB4s4(m=4,n=4とした場合)のフィルタ係数の数値列をFFT変換して得られる周波数特性を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを32倍して示している。一方、周波数は“1”で基準化している。
この図14から分かるように、周波数−ゲイン特性は通過域がほぼ平坦で、遮断域の傾斜がなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本バンドパスフィルタB4s4では、オーバーシュートやリンギングも存在しない良好なバンドパスフィルタの周波数特性を得ることができる。
図15は、基本バンドパスフィルタB4snのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図15より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本バンドパスフィルタB4snは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
図16は、基本単位フィルタの数値列“1,0,N”でN=0とした場合の基本バンドパスフィルタBsnのフィルタ係数を示す図である。N=0の場合、基本単位フィルタを2段縦続接続したときのフィルタ係数は“0,0,1,0,0”となる。したがって、基本バンドパスフィルタBsnのフィルタ係数は、“1”を出発点として、元データから2つ前の前データを順次減算していく移動平均演算によって求められる。
図16に示す基本バンドパスフィルタBsnにおいて、nが偶数のときは何れのフィルタ係数も、その数値列は対称型であり、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている(例えば基本バンドパスフィルタBs4の場合、1+6+1=8,−4+(−4)=−8)。nが奇数のときは、その数値列は絶対値が対称型となっており、前半の数値列と後半の数値列とは逆符号になる。また、数値列の3つ飛びの合計値が逆符号で互いに等しくなるという性質を持っている。
図17は、基本バンドパスフィルタBs4のフィルタ係数の数値列をFFT変換して得られる周波数特性を示す図である。ここではゲインを直線目盛りで表し、基準化されたゲインを16倍して示している。一方、周波数は“1”で基準化している。
この図17から分かるように、周波数−ゲイン特性でほぼ平坦な通過域は図14に比べて狭くなるが、遮断域の傾斜はなだらかな特性が得られている。また、周波数−位相特性ではほぼ直線的な特性も得られている。このように、基本バンドパスフィルタBs4においても、オーバーシュートやリンギングも存在しない良好なバンドパスフィルタの周波数特性を得ることができる。
図18は、基本バンドパスフィルタBsnのnをパラメータとした周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図18より、nの値が大きくなるほど遮断域の傾斜が急峻になることが分かる。この基本バンドパスフィルタBsnは、n≧5のときは比較的急峻な周波数特性の用途に適し、n<5のときは比較的緩やかな周波数特性の用途に適すると言える。
なお、以上では、図4、図10および図16において、“1”を出発点として移動平均演算を行う例について説明したが、“−1”を出発点としても良い。“−1”を出発点とした場合は、位相特性がπだけシフトするだけで、周波数特性は同一で変化はない。
<パラメータ値m,nの特性に与える影響>
まず、移動平均演算の段数nを変えた場合の影響について説明する。例えば図3に示したように、基本ローパスフィルタLmanにおいて、nの値を大きくすると遮断域の傾斜が急峻になり、通過域のバンド幅は狭くなる。また、nの値が小さいときは、周波数特性の頂部は両端が盛り上がる。nの値が大きくなるに従って頂部は徐々に平坦に近づき、n=4で完全に平坦になる。nの値がそれより大きくなると、今度は頂部の両端が中央値より低くなっていく。このような傾向は、基本ハイパスフィルタHmsn、基本バンドパスフィルタBmsnについても同様に言える(図9、図15参照)。
一方、基本単位フィルタの係数値をN=0として構成した基本ローパスフィルタLan、基本ハイパスフィルタHsnおよび基本バンドパスフィルタBsnに関しては、図6、図12、図18に示したように、nの値が何れの場合も頂部の両端は中央値より低くなる。nの値を大きくすると遮断域の傾斜が急峻になり、通過域のバンド幅が狭くなることは、N≠0である基本ローパスフィルタLman、基本ハイパスフィルタHmsnおよび基本バンドパスフィルタBmsnの場合と同様である。
次に、mの値を変えた場合の影響について説明する。図19は、基本ハイパスフィルタHmsnにおいてmをパラメータとした周波数−ゲイン特性を示す図である。この図19より、mの値を小さくすると遮断域の傾斜が急峻になり、通過域のバンド幅が狭くなることが分かる。ここでは図示を省略するが、基本ローパスフィルタLmanおよび基本バンドパスフィルタBmsnについても同様のことが言える。
この図19は、パラメータmに対するパラメータnの最適値(周波数特性の頂部が平坦になるnの値)も同時に示している。すなわち、m=4のときの最適値はn=4、m=3.5のときの最適値はn=6、m=3のときの最適値はn=8、m=2.5のときの最適値はn=16である。図20は、これを分かりやすくグラフ化したものである。この図20から分かるように、パラメータmに対するパラメータnの最適値は、mの値が小さくなるにつれて大きくなる。
このことを、図21を用いて更に詳細に説明する。図21は、パラメータmとそれに対するパラメータnの最適値との関係を表形式によって示す図である。なお、この図21では、パラメータmに対するパラメータzの関係も併せて示している。
上述のように、パラメータmに対するパラメータnの最適値は、mの値が小さくなるにつれて大きくなる。ここで、m=2になるとフィルタ特性が大きく変わってしまい、良好な周波数特性が得られなくなる。逆に言うと、m>2の条件であれば、タップ間に挿入する遅延量を増やさなくても、通過域におけるバンド幅の狭い良好なフィルタ特性を得ることができる。一方、パラメータmの値が大きくなるにつれてパラメータnの最適値は小さくなり、m=10のときにn=1となる。つまり、m=10のときは、移動平均演算の段数は1段で良い。このことから、パラメータmは、2<m≦10の条件で使用するのが好ましい。
また、パラメータnの値は、図21に示す最適値を中心として前後の或る範囲で選択した任意の値を用いることにより、図3、図9、図15のように周波数特性の調整をすることができる。
図22は、図19に示した4種類の基本ハイパスフィルタHmsnのインパルス応答を示す図である。この図22に示すような波形を有するインパルス応答は、横軸に沿った標本位置が一定の間にあるときにのみ“0”以外の有限な値を有し、それ以外の領域では値が全て“0”となる関数、つまり所定の標本位置において値が“0”に収束する関数である。
このように、関数の値が局所的な領域で“0”以外の有限の値を有し、それ以外の領域で“0”となる場合を「有限台」と称する。ここでは図示を省略するが、基本ハイパスフィルタHsn、基本ローパスフィルタLman,Lanおよび基本バンドパスフィルタBmsn,Bsnについても同様に、インパルス応答は有限台となる。
このような有限台のインパルス応答では、“0”以外の有限の値を有する局所的な領域内のデータだけが意味を持つ。この領域外のデータについては、本来これを考慮すべきであるのに無視している訳ではなく、理論的に考慮する必要がないため、打ち切り誤差は発生しない。したがって、図1、図4、図7、図10、図13、図16に示した数値列をフィルタ係数として用いれば、窓掛けによって係数の打ち切りを行う必要もなく、良好なフィルタ特性を得ることができる。
<フィルタ係数間のゼロ値の調整>
基本フィルタのフィルタ係数を構成する数値列の各数値間のゼロ値(各タップ間の遅延量に相当)を変えることによって、基本フィルタの通過域のバンド幅を調整することが可能である。すなわち、上述の基本ローパスフィルタLman,Lan、基本ハイパスフィルタHmsn,Hsn、基本バンドパスフィルタBmsn,Bsnでは、各タップ間の遅延量は1クロック分であったが、これを(k+1)クロック分とすると(各フィルタ係数の間に“0”をk個ずつ挿入すると)、その周波数−ゲイン特性の周波数軸(周波数方向に対する周期)は1/(k+1)となり、通過域のバンド幅は狭くなる。
以下、例えば基本ローパスフィルタLmanにおいて各フィルタ係数の間に“0”をk個ずつ挿入する場合をLman(k)と表記することにする。ただし、k=0の場合は(0)を省略して表記する。
図23は、基本ローパスフィルタL4a4および、その各フィルタ係数の間に“0”を1つずつ挿入することによって生成した基本ローパスフィルタL4a4(1)の周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。この図23から分かるように、フィルタ係数の間に挿入する“0”の数をk個とすると、その周波数−ゲイン特性の周波数軸(周波数方向に対する周期)は1/(k+1)となり、通過域のバンド幅を狭くすることが可能である。
<同種の基本フィルタの縦続接続>
同種の基本フィルタを縦続接続することにより、各基本フィルタの係数どうしが乗算・加算されて新しいフィルタ係数が作り出される。以下では、例えば基本ローパスフィルタLmanの縦続接続数をMとするとき、これを(Lman)Mと記述することにする。
ここで、基本フィルタを縦続接続した場合におけるフィルタ係数の演算内容について説明する。図24は、縦続接続によるフィルタ係数の演算内容を説明するための図である。この図24に示すように、2つの基本フィルタを縦続接続した場合には、一方のフィルタ係数を構成する(2i+1)個(2i+1は、一方のフィルタ係数を構成する全数値列の個数を表す)の数値列{H1−i,H1−(i−1),H1−(i−2),・・・,H−1,H10,H11,・・・,H1i−2,H1i−1,H1i}と、他方のフィルタ係数を構成する(2i+1)個の数値列{H2−i,H2−(i−1),H2−(i−2),・・・,H2−1,H20,H21,・・・,H2i−2,H2i−1,H2i}との畳み込み演算を行うことによって、新たなフィルタ係数の数値列を求める。
この畳み込み演算では、他方のフィルタ係数については、{H2−i,H2−(i−1),H2−(i−2),・・・,H2−1,H20,H21,・・・,H2i−2,H2i−1,H2i}の全ての数値列を常に固定的に乗加算の対象とする。一方、一方のフィルタ係数については、{H1−i,H1−(i−1),H1−(i−2),・・・,H1−1,H10,H11,・・・,H1i−2,H1i−1,H1i}の数値列の前後に0列があるものと仮定し、この0値も含めて(2i+1)個の数値列を畳み込み演算の対象とする。このとき、新たなフィルタ係数のp番目の数値を求める際には、一方のフィルタ係数のp番目の数値を含めてそれより前にある(2i+1)個の数値列を乗加算の対象とする。
例えば、新たなフィルタ係数の1番目の数値を求める際には、他方のフィルタ係数の全ての数値列{H2−i,H2−(i−1),H2−(i−2),・・・,H2−1,H20,H21,・・・,H2i−2,H2i−1,H2i}(符号31で示す点線で囲った配列)と、一方のフィルタ係数の1番目の数値を含めてそれより前にある(2i+1)個の数値列{0,0,・・・,0,H1−i}(符号32で示す点線で囲った配列)とを対象として、配列の対応する要素の積を合計する演算を行う。すなわち、この場合の演算結果は、(H1−i×H2−i)となる。
また、新たなフィルタ係数の2番目の数値を求める際には、他方のフィルタ係数の全ての数値列{H2−i,H2−(i−1),H2−(i−2),・・・,H2−1,H20,H21,・・・,H2i−2,H2i−1,H2i}(符号31で示す点線で囲った配列)と、一方のフィルタ係数の2番目の数値を含めてそれより前にある(2i+1)個の数値列{0,0,・・・,0,H1−i,H1−(i−1)}(符号33で示す点線で囲った配列)とを対象として、配列の対応する要素の積を合計する演算を行う。すなわち、この場合の演算結果は、(H1−i×H2−i+H1−(i−1)×H2−(i−1)となる。以下同様にして、新たなフィルタ係数を構成する(2×(2i+1)−1)個の数値列を求める。
図25は、基本ローパスフィルタL4a4,(L4a4)2,(L4a4)4,(L4a4)8の周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。基本ローパスフィルタL4a4が1個のみの場合、振幅が0.5となる位置のクロックは0.25である。これに対して縦続接続数Mが多くなると、フィルタの通過帯域幅が狭くなる。例えばM=8の場合、振幅が0.5となる位置のクロックは0.125となる。
上記図25から分かるように、基本ローパスフィルタL4a4は、周波数特性のカットオフ周波数部分の傾斜が急峻であるという特徴を持つ。また、基本ローパスフィルタフィルタ(L4a4)Mの周波数−ゲイン特性は、縦続接続数Mが多くなるほど通過帯域幅が狭くなり、低周波域においても極めて深くストレートに落ち込む特性が得られる。
図26は、基本ハイパスフィルタH4s4,(H4s4)2,(H4s4)4,(H4s4)8の周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで表し、(b)はゲインを対数目盛りで表している。る。基本ハイパスフィルタH4s4が1個のみの場合、振幅が0.5となる位置のクロックは0.25である。これに対して縦続接続数Mが多くなると、フィルタの通過帯域幅が狭くなる。例えばM=8の場合、振幅が0.5となる位置のクロックは0.375となる。
上記図26から分かるように、基本ハイパスフィルタH4s4は、周波数特性のカットオフ周波数部分の傾斜が急峻であるという特徴を持つ。また、基本ハイパスフィルタフィルタ(H4s4)Mの周波数−ゲイン特性は、縦続接続数Mが多くなるほど通過帯域幅が狭くなり、高周波域においても極めて深くストレートに落ち込む特性が得られる。
<異種の基本フィルタの縦続接続>
異種の基本フィルタを縦続接続した場合も、各基本フィルタの係数どうしが畳み込み演算により乗算・加算されて新しいフィルタ係数が作り出される。この場合は、異種の基本フィルタを任意に組み合わせることによって、各基本フィルタの特性どうしが相殺し合い、所望の周波数帯域を抜き取ることができる。これにより、所望特性のローパスフィルタやハイパスフィルタ、バンドパスフィルタ、バンドエリミネーションフィルタ、コムフィルタなどを簡単に設計することができる。
例えば、上述した基本ローパスフィルタL4a4(k)と基本ハイパスフィルタH4s4(k)とを組み合わせることによって、所望の周波数帯域を通過域とするバンドパスフィルタを設計する例について説明する。
バンドパスフィルタの中心周波数Fcまたは信号のサンプリング周波数Fsの何れかを自由に決定できるときは、周波数抜き取りの条件を最適化することにより、フィルタの構成をより簡素化することができる。今、バンドパスフィルタの中心周波数Fcと信号のサンプリング周波数Fsとの関係が、
Fs=Fc*(4+2q) (q=0,1,2,・・・)
であるとする。
この場合において、Fc=450KHzのとき、Fs=1.8MHz,2.7MHz,3.6MHz,・・・である。このような設定の場合には、基本ハイパスフィルタH4s4(5+3q)と基本ローパスフィルタL4a4(3+2q)とを縦続接続するだけで、バンドパスフィルタを設計することができる。これらの基本ハイパスフィルタH4s4(5+3q)、基本ローパスフィルタL4a4(3+2q)は共に、中心周波数Fcが450KHzとなる通過域を有している。
例えば、q=0(Fs=4Fc)の場合、基本ハイパスフィルタH4s4(5)と基本ローパスフィルタL4a4(3)との縦続接続によりバンドパスフィルタを設計することができる。また、q=1(Fs=6Fc)の場合、基本ハイパスフィルタH4s4(8)と基本ローパスフィルタL4a4(5)との縦続接続によりバンドパスフィルタを設計することができる。
図27は、上述したバンドパスフィルタの設計法を模式的に示す図であり、(a)はq=0の場合、(b)はq=1の場合を示している。例えば図27(a)において、基本ハイパスフィルタH4s4(5)と基本ローパスフィルタL4a4(3)とを縦続接続すると、それぞれの通過域#1,#2で互いに重なった部分のみを通過域#3として取り出すことができる。
図27(b)においても同様に、基本ハイパスフィルタH4s4(8)と基本ローパスフィルタL4a4(5)とを縦続接続すると、それぞれの通過域#1,#2で互いに重なった部分のみを通過域#3として取り出すことができる。q>0の場合は、求めるバンドパスフィルタの中心周波数Fc以外にも通過域が生じるので、これをローパスフィルタ(LPF1)#4によって抜き取る。
バンドパスフィルタのバンド幅は、基本ハイパスフィルタ(H4s4(k))Mあるいは基本ローパスフィルタ(L4a4(k))Mの縦続接続の段数(Mの数)によって調整することが可能である。図27(b)に示す例では、基本ハイパスフィルタH4s4(8)および基本ローパスフィルタL4a4(5)の双方ともM=1としているが、これらを何れもM=8とした場合の周波数特性を、図28および図29に示す。
図28は、基本ハイパスフィルタ(H4s4(8))8および基本ローパスフィルタ(L4a4(5))8の周波数特性を重ねて示したものであり、これらのフィルタを縦続接続することにより、互いに重なった部分のみを取り出すことができる。また、図29は、LPF1あるいはLPF2による通過域の抜き取りを示したものであり、図28のように取り出した3つのバンドパスに対してLPF1あるいはLPF2をかけることにより、両端の通過域のみを取り出すことができる。
次に、異種の基本フィルタの縦続接続によって通過域のバンド幅を狭く調整するための手段について説明する。図25および図26を用いて説明したように、バンド幅を狭くするためには同種の基本フィルタの縦続段数を増やせば良いが、これには限界がある。ここでは、より効率的にバンド幅を狭くできる方法について説明する。図30は、その方法を模式的に示す図である。
図30(a)は図27(b)と同じものである。これより狭いバンド幅を得たい場合は、図30(b)に示すように、基本ハイパスフィルタH4s4(8)の代わりに、例えば基本ハイパスフィルタH4s4(14)を用いる。基本ハイパスフィルタH4s4(14)は、基本ハイパスフィルタH4s4(8)と同様に中心周波数Fcが450KHzとなる通過域を有しており、しかも、バンド幅が基本ハイパスフィルタH4s4(8)の9/15=3/5となっている。
したがって、この基本ハイパスフィルタH4s4(14)を用いることにより、フィルタの縦続段数を増やすことなく、バンド幅を効率的に狭めることができる。また、基本ハイパスフィルタH4s4(14)は、各フィルタ係数の間に挿入する“0”の数を増やしただけなので、係数として実際に取り出すタップ数は全く増えず、回路規模が大きくなることもない。なお、ここでは基本ハイパスフィルタH4s4(14)を用いる例について説明したが、同じ中心周波数Fc=450KHzに通過域を有する基本フィルタであれば、同様に用いることが可能である。
次に、同種の基本フィルタの縦続接続によって通過域のバンド幅を広く調整するための手段について説明する。図31は、傾斜を含めたバンド幅の調整手法を説明するための周波数−ゲイン特性図である。ここでは、調整前の基本フィルタの周波数特性をYFで表すものとする。上述したように、#1に示す基本フィルタYFを2個縦続接続すると、#2に示すように、傾斜が急峻になってバンド幅が狭くなる(−6dBのクロック位置が低周波側に移動する)。
そして、ゲインの中心値(=0.5)を軸として、#2に示す基本フィルタYF2の周波数−ゲイン特性を反転させる(#3)。これは、ディレイを合わせて基準ゲイン値“1”のユニットパルス(中心値が1で、その他が全て0のフィルタ係数に相当)から基本フィルタYF2のフィルタ係数を引くことによって求められる(1−YF2)。ここでは、これを反転基本フィルタと呼ぶことにする。
さらに、#3に示す反転基本フィルタを2個縦続接続する。これにより得られる周波数−ゲイン特性の傾斜は、#4に示すように更に急峻になり、バンド幅も更に狭くなる(−6dBのクロック位置が高周波側に移動する)。ここでは、縦続接続する反転基本フィルタの個数を#2の場合と同じ2個としているが、これより多くすることにより、高周波側への移動量を、先ほどの低周波側への移動量より大きくすることができる。
最後に、ゲインの中心値(=0.5)を軸として、#4に示す周波数−ゲイン特性を反転させる(#5)。これは、ディレイを合わせて基準ゲイン値“1”のユニットパルスから#4のフィルタ係数を引くことによって求められる(1−(1−YF2)2)。元データ#1の周波数特性と調整後データ#5の周波数特性とを比較して見ると、調整後データ#5の周波数特性は元データ#1より傾斜が急峻になるとともに、バンド幅が広くなっている。
調整後データ#5の式を展開すると、以下のようになる。
1−(1−YF2)2
=1−1+2YF2−YF4
=2YF2−YF4 ・・・(式1)
この式1は、#1の基本フィルタおよび#3の反転基本フィルタをそれぞれ2個縦続接続した場合に得られる式であるが、縦続接続する段数はこれに限られない。ただし、バンド幅を広げるためには、#1の縦続段数より#3の縦続段数の方を多くするのが好ましい。この場合、上述した式1は、次の式2のように一般化できる。
a*YFM1−b*YFM2 ・・・(式2)
ただし、a,bは係数(a>b)、M1<M2であり、*は縦続接続を表す。
次に、バンド幅の周波数を微調整するための手段について説明する。図32は、周波数の微調整手法を説明するための周波数−ゲイン特性図である。図32に示すように、基本ハイパスフィルタH4s4(8)の比較的広い通過域の中で、通過域が互いにオーバーラップするようにハイパスフィルタ(HPF)とローパスフィルタ(LPF)とを設計する。そして、これらの各フィルタH4s4(8),HPF,LPFを縦続接続することにより、それぞれの通過域の重なった部分(斜線部分)が通過域となるバンドパスフィルタを得ることができる。
このとき、ハイパスフィルタHPFおよびローパスフィルタLPFの何れか一方、あるいはその両方に対して、図25および図26、あるいは図30で示したような通過域を狭める操作、または、図31で示したような通過域を広げる操作をすることにより、バンドパスフィルタのバンド幅を任意に微調整することができる。
図32(a)では、ローパスフィルタLPFに対して通過域を広げる操作をすることにより、バンドパスフィルタの片側のみを高周波側にシフトする例を示している。また、図32(b)では、ハイパスフィルタHPFに対して通過域を広げる操作をするとともに、ローパスフィルタLPFに対して通過域を狭める操作をすることにより、バンド幅を変えずにバンドパスフィルタの両側を低周波側にシフトする例を示している。
<フィルタ係数の丸め処理>
以上のような基本フィルタの縦続接続、バンド幅の調整等によって求められた数値列が、所望の周波数特性を実現するためのフィルタ係数となる。図33は、16ビットの演算精度で実際に算出したフィルタ係数値(丸め処理前のもの)をグラフ化した図である。また、図34は、フィルタ係数を丸め処理する前におけるデジタルフィルタの周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで示し、(b)はゲインを対数目盛りで示している。
図33に示すように、本実施形態の設計法によって得られるフィルタ係数の値は、中央(係数H0)で最大となる。また、各フィルタ係数の値の差は、従来のフィルタ設計法で得られるフィルタ係数のそれに比べて極めて大きくなる。すなわち、本実施形態の設計法によって得られる各フィルタ係数の分布は、中央付近の局所的な領域で値が大きくなり、他の領域では値が小さくなるとともに、中央付近のフィルタ係数値と周辺のフィルタ係数値との差が極めて大きくなるといった尖鋭度の高い分布となる。そのため、所定の閾値より小さい値のフィルタ係数を丸め処理によって破棄しても、周波数特性を決定付ける主要なフィルタ係数は殆ど残り、周波数特性に悪影響を与えることは殆どない。また、周波数特性の帯域外減衰量はフィルタ係数のビット数によって制約を受けるが、図34に示すように、本実施形態のフィルタ設計法によって得られる周波数特性は非常に深い減衰を持っているので、ビット数を多少減らしても、所望の減衰量は確保できる。
したがって、丸め処理によって不要なフィルタ係数を大幅に削減することができる。例えば、フィルタ係数の下位数ビットを切り捨てることでビット数を減らすことにより、その下位数ビットだけで表される最大値よりも小さい値のフィルタ係数を全て“0”に丸めて破棄することができる。よって、フィルタ係数の数を減らすために従来のような窓掛けは必ずしも必要でない。なお、上述したように、縦続接続されている基本フィルタのインパルス応答は有限台の関数となる。そのため、この基本フィルタをもとに設計されるフィルタ係数の数は、従来に比べてそもそも少なく、丸め処理をすることなくそのまま使用することも可能である。しかし、よりタップ数を少なくするために、ビット数を減らす丸め処理を行うのが好ましい。
この点は、従来のフィルタ設計法と大きく異なる本実施形態の特徴点である。すなわち、従来のフィルタ設計法では、求められる各フィルタ係数の分布で尖鋭度がそれほど大きくならないため、フィルタ係数の値で丸め処理をすると、周波数特性を決定付ける主要なフィルタ係数も破棄されてしまうことが多い。また、非常に深い帯域外減衰量を持った周波数特性を得ることも困難なため、フィルタ係数のビット数を減らすと必要な帯域外減衰量を確保できなくなってしまう。よって、従来はビット数を減らす丸め処理を行うことができず、窓掛けによってフィルタ係数の数を減らさざるを得なかった。そのため、周波数特性に打ち切り誤差が発生し、所望の周波数特性を得ることが極めて困難であった。
これに対して、本実施形態では窓掛けを行うことなくフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることはない。したがって、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。
図35は、例えば16ビットの演算精度で算出した図33のようなフィルタ係数に対して10ビットの丸め処理(16ビットから成るフィルタ係数の下位10ビット以下に対して、切り捨て、切り上げまたは四捨五入を行うことによって10ビットのデータとする処理)を行った結果として残った41タップ(ゼロ値を含めた段数は46段)分のフィルタ係数値とそれを整数化した係数値とを示す図である。上述のような基本フィルタの縦続接続によって求まるフィルタ係数の値は小数であり、10ビットの丸め処理によってその桁数を減らすことができるが、ランダムな値の集合である。この数値列をそのままフィルタ係数として用いても良いが、デジタルフィルタを実装する際に使用する乗算器の数をより少なくするために、フィルタ係数の数値を更に丸めて単純化するようにしても良い。そのために本実施形態では、10ビットで丸めたフィルタ係数の数値列を210倍して、係数値を整数化する。なお、ここでは16ビットから成るフィルタ係数の下位10ビット以下を丸めた後、10ビットに丸められたフィルタ係数を更に210倍して整数化する例について説明したが、16ビットから成るフィルタ係数を直接210倍し、その結果得られる値の小数点以下を丸める(切り捨て、切り上げまたは四捨五入など)ことにより、整数化された10ビットのフィルタ係数を直接求めるようにしても良い。
このような整数化の丸め演算を行うと、デジタルフィルタは、図50に示すように、複数の遅延器(D型フリップフロップ)1から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器2で個別に乗算し、それぞれの乗算出力を複数の加算器3で全て加算した後に、1つのシフト演算器4でまとめて1/210倍するように構成することが可能となる。しかも、整数のフィルタ係数は、2i+2j+・・・(i,jは任意の整数)のように2進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
図36は、16ビットの演算精度でフィルタ係数を算出した後、それを10ビットに丸めて(例えば、10ビット以下の桁数を切り捨てて)、その結果を更に整数化した場合の周波数−ゲイン特性を示す図であり、(a)はゲインを直線目盛りで示し、(b)はゲインを対数目盛りで示している。
図36からよく分かるように、本実施形態ではフィルタ設計の際に窓掛けを行っていないので、周波数−ゲイン特性における平坦部のリップルが極めて小さく、±0.3dBの範囲内に充分収まっている。また、丸め処理後の帯域外減衰量は約44dBとなっているが、この帯域外減衰量は実装しようとするハードウェアで対応可能なビット数によって制約される。したがって、ハードウェア規模の制約がなければ、丸め処理後のビット数を大きくしてより減衰の深い帯域外減衰特性を得ることができる。
なお、ここでは丸め処理の例として、フィルタ係数のデータに対して下位数ビットを切り捨てることによってyビットのデータをxビットに丸める処理について説明したが、この例に限定されない。例えば、各フィルタ係数の値を所定の閾値と比較し、閾値より小さいフィルタ係数を破棄するようにしても良い。この場合、残されるフィルタ係数は元のyビットのままであるから、これを整数化する際には2y倍する。
また、整数化演算の他の例として、フィルタ係数の数値列をN倍(Nは2のべき乗以外の値)して小数点以下を丸める(切り捨て、切り上げ、四捨五入など)ようにしても良い。このようなN倍の丸め演算を行った場合、デジタルフィルタは、図51に示すように、複数の遅延器(D型フリップフロップ)1から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器2で個別に乗算し、それぞれの乗算出力を複数の加算器3で全て加算した後に、1つの乗算器5でまとめて1/N倍するように構成することが可能となる。しかも、整数のフィルタ係数は、2i+2j+・・・(i,jは任意の整数)のように2進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
また、数値列を2x倍(xは整数)する場合はフィルタ係数に対してビット単位の丸めを実施することができるのに対し、数値列をN倍する場合はフィルタ係数に対してビット間の丸めを実施することができる。ビット単位の丸め処理とは、例えば係数値を2x倍して小数点以下を切り捨てる場合には、2x〜2x+1の範囲に属する数値は全て2xに丸めるといったように、係数値を1/2xの整数倍とする処理を言う。また、ビット間の丸め処理とは、例えば係数値をN倍(例えば、2x−1<N<2x)して小数点以下を切り捨てる場合には、N〜N+1の範囲に属する数値は全てNに丸めるといったように、係数値を1/Nの整数倍とする処理を言う。N倍の丸め演算を行うことにより、整数化されるフィルタ係数の値を、2のべき乗以外の任意の値に調整することが可能である。このようにすれば、デジタルフィルタで使用するフィルタ係数の数(タップの数)を微妙に調整することができる。
その他、整数化を伴う丸め演算の例として、yビットのフィルタ係数のデータ値が1/2xより小さいものは全てゼロとし、当該データ値が1/2x以上のものについては、当該データ値を2x+X倍(x+X<y)して小数点以下を丸める(切り捨て、切り上げ、四捨五入など)ようにしても良い。このような丸め処理を行った場合、デジタルフィルタは、図52に示すように、複数の遅延器(D型フリップフロップ)1から成るタップ付き遅延線の各タップからの出力信号に対して整数のフィルタ係数を複数の係数器2で個別に乗算し、それぞれの乗算出力を複数の加算器3で全て加算した後に、1つのシフト演算器6でまとめて1/2x+X倍するように構成することが可能となる。しかも、整数のフィルタ係数は、2i+2j+・・・(i,jは任意の整数)のように2進数の足し算で表現できる。これにより、乗算器の代わりにビットシフト回路で係数器を構成し、実装するデジタルフィルタの構成を簡素化することができる。
また、データ値が1/2xより小さいものは全てゼロとして切り捨てることによってフィルタ係数の数(タップ数)を大幅に削減できると同時に、xビットに比べてビット数が多い(x+X)ビットの精度の良いフィルタ係数を求めることができるので、より良好な周波数特性を得ることもできる。
<フィルタ設計装置の実装例>
以上に説明した本実施形態によるデジタルフィルタの設計方法を実現するための装置は、ハードウェア構成、DSP、ソフトウェアの何れによっても実現することが可能である。例えばソフトウェアによって実現する場合、本実施形態のフィルタ設計装置は、実際にはコンピュータのCPUあるいはMPU、RAM、ROMなどで構成され、RAMやROMあるいはハードディスク等に記憶されたプログラムが動作することによって実現できる。
例えば、各種の基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnに関ナるフィルタ係数をデータとしてRAMやROM、ハードディスク等の記憶装置に記憶しておく。そして、ユーザが基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnに関する任意の組み合わせと接続順、各フィルタ係数間に挿入するゼロ値の数k、基本フィルタの同種縦続接続数Mなどを指示すると、CPUが、上記記憶装置に記憶されているフィルタ係数のデータを用いて、指示された内容に対応するフィルタ係数を上述した演算により求めるようにすることが可能である。この場合、記憶装置が本発明の基本フィルタ係数記憶手段に相当し、CPUが本発明の演算手段に相当する。
ユーザが各基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnに関する組み合わせと接続順、ゼロ値の挿入数k、縦続接続数Mなどを指示する際のユーザインタフェースは、任意に構成することが可能である。例えば、基本フィルタのタイプ(Lman,Lan,Hmsn,Hsn,Bmsn,Bsnの何れか)を画面表示された一覧表からキーボードやマウスの操作によって選択できるようにするとともに、パラメータm,n,k,Mの値をキーボードやマウスの操作によって入力できるようにする。そして、タイプの選択とパラメータの入力とを1つずつ順に行っていったときの入力順を基本フィルタの接続順として入力する。CPUは、このようにして入力された情報を取得し、その入力情報により指示された内容に対応するフィルタ係数を上述した演算により求める。
また、各種の基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnをアイコン化してディスプレイ画面上に表示するようにし(各アイコンに対応してフィルタ係数をデータとして記憶装置に記憶している)、ユーザがこれらのアイコンをキーボードやマウスの操作によりディスプレイ画面上で任意に組み合わせて配置する。また、その他の必要なパラメータはキーボードやマウスの操作によって入力する。そして、CPUがアイコンの配列や入力パラメータに対応するフィルタ係数を自動的に演算して求めるようにしても良い。
また、パーソナルコンピュータ等にインストールされている表計算ソフトの関数機能などを利用して、基本フィルタを求める際の移動平均演算、基本フィルタを縦続接続するときの畳み込み演算などを行うようにすることも可能である。この場合の演算は、実際には、表計算ソフトがインストールされているパーソナルコンピュータ等のCPU、ROM、RAMなどによって行われる。
また、求めたフィルタ係数を自動的にFFT変換し、その結果を周波数−ゲイン特性図としてディスプレイ画面に表示するようにしても良い。このようにすれば、設計したフィルタの周波数特性を視覚的に確認することができ、フィルタ設計をより容易に行うことができる。
<デジタルフィルタの実装例>
実際にデジタルフィルタを電子機器内や半導体ICに実装する場合には、以上のようなフィルタ設計装置によって最終的に求められた数値列をフィルタ係数として持つFIRフィルタを構成すればよい。すなわち、図50〜図52に示したように、単に複数のD型フリップフロップ1と複数の係数器2と複数の加算器3と1つのビットシフト回路4,6または乗算器5とにより1つのデジタルフィルタを構成し、以上のような手順で求めた最終的なフィルタ係数を、当該デジタルフィルタ内の複数の係数器2に設定する形で構成する。
その場合、求められたフィルタ係数の数は10ビットの丸め処理によって大幅に削減されており、かつ、210倍による整数化処理によって単純な整数に変換されている。したがって、タップ数は非常に少なく、しかも基本的に係数器2の部分に乗算器は不要でビットシフト回路にて対応可能であり、所望の周波数特性を小さな回路規模で高精度に実現することができる。
なお、フィルタ設計の際に用いた基本フィルタをそれぞれハードウェアとして構成し、それらをハードウェアとして接続することによってデジタルフィルタを実装するようにしても良い。
以上詳しく説明したように、第1の実施形態によれば、1以上の基本フィルタを任意に組み合わせて縦続接続する形でフィルタ係数を算出し、更に丸め処理によって不要なフィルタ係数を大幅に削除するようにしたので、従来のFIRフィルタに比べてタップ数を大幅に削減することができる。また、フィルタ係数を整数化することにより、各タップ出力にある係数器はビットシフト回路で構成できるので、乗算器が不要となり、構成の殆どはD型フリップフロップおよび加減算器となる。したがって、回路素子数を大幅に削減して回路規模を小さくすることができるとともに、消費電力の低減、演算負荷の軽減等を図ることができる。
しかも、丸め処理によってフィルタ係数の数を大幅に減らせるので、フィルタ係数の数を減らすために従来のような窓掛けを不要とすることができる。窓掛けを行うことなくデジタルフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることがない。したがって、デジタルフィルタの希望する周波数特性を高精度に実現することができる。
また、基本フィルタの組み合わせだけでデジタルフィルタを構成することが可能であり、設計は実際の周波数軸での周波数特性を合成する作業となる。したがって、フィルタ設計が単純で考えやすく、熟練した技術者でなくても、フィルタ設計を極めて簡単に感覚的に行うことができる。
(第2の実施形態)
次に、本発明の第2の実施形態を図面に基づいて説明する。図37は、第2の実施形態によるデジタルフィルタの設計方法の手順を示すフローチャートである。また、図38は、第2の実施形態によるデジタルフィルタの設計方法の概念を説明するための周波数特性図である。
図37において、まず、数値列が対称型の第1のフィルタ係数を生成する(ステップS1)。この第1のフィルタ係数の生成法については特に限定しない。フィルタ係数の数値列が対称型になっていれば、近似式や窓関数を用いる従来の設計法を用いても良い。また、所望の周波数特性を表す複数の振幅値を入力し、当該入力した数値列を逆フーリエ変換した後、得られた数値列に対して窓掛けを行うことによって第1のフィルタ係数を求めるようにしても良い。また、第1の実施形態で説明した設計法を用いても良い。好ましくは、第1の実施形態(丸め処理を除く)で説明した設計法を用いて第1のフィルタ係数を生成する。
図38中に符号Aで示す周波数特性は、ステップS1で生成した第1のフィルタ係数によって実現されるオリジナルフィルタの周波数−ゲイン特性の一例を示している。
次に、第1のフィルタ係数により表される周波数−ゲイン特性(図38中のA)において極大値をとる位置に接点を有し、当該接点において極小値をとる周波数−ゲイン特性(図38中のB)を実現する対称型の第2のフィルタ係数を求める(ステップS2)。周波数−ゲイン特性がこのような特徴を有していれば、第2のフィルタ係数をどのような方法を用いて生成しても良いが、例えば次のような演算によって求めることができる。
すなわち、オリジナルフィルタを構成する第1のフィルタ係数の数値列を{H−i,H−(i−1),・・・,H−1,H0,H1,・・・,Hi−1,Hi}(H0が中央値で、当該中央値を境として対称型となっている。H−i=Hi,H−(i−1)=Hi−1),・・・,H−1=H1)とした場合に、第2のフィルタ係数は、{−αH−i,−αH−(i−1),・・・,−αH−1,−αH0+(1+α),−αH1,・・・,−αHi−1,−αHi}(αは任意の正数)なる演算によって求める。つまり、中央値以外の係数は全て−α倍し、中央値だけは−α倍して更に(1+α)を加算することによって、第2のフィルタ係数を求める。以下、この第2のフィルタ係数を有するフィルタを「調整フィルタ」と呼ぶ。
このようにして第2のフィルタ係数を求めたら、第1のフィルタ係数を有するオリジナルフィルタと、第2のフィルタ係数を有する調整フィルタとを縦続接続した場合に得られる第3のフィルタ係数を求める演算を行う(ステップS3)。オリジナルフィルタと調整フィルタとを縦続接続することにより、第1のフィルタ係数と第2のフィルタ係数とが乗算・加算されて新しいフィルタ係数が作り出される。縦続接続の演算内容は第1の実施形態で述べた通りである。
そして、これによって生成された第3のフィルタ係数に対して、ビット数を減らす丸め処理によって不要なフィルタ係数を大幅に削減するとともに、整数化によってフィルタ係数を簡素化する(ステップS4)。
なお、ここでも第1の実施形態と同様に、フィルタ係数のビット数を減らす処理と係数値を整数化する処理とを別に行う必要は必ずしもなく、係数値を直接2x倍またはN倍し、その結果得られる値の小数点以下を丸める(切り捨て、切り上げまたは四捨五入など)ことによって、フィルタ係数のビット数を減らす処理と係数値を整数化する処理とを1つの丸め演算によって同時に行うようにしても良い。また、yビットの係数値が1/2xより小さいものは全てゼロとし、係数値が1/2x以上のものについては、係数値を2x+X倍(x+X<y)して小数点以下を丸める処理を行うことによって(x+X)ビットの整数化されたフィルタ係数を求めるようにしても良い。
第2の実施形態においても、フィルタ係数の数を減らすために従来のような窓掛けは必ずしも必要でない。窓掛けを行うことなくフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることがない。したがって、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。
なお、ここでは、オリジナルフィルタに対して1個の調整フィルタを縦続接続する場合を例にとって説明したが、複数の調整フィルタを縦続接続するようにしても良い。この場合は、図37中に点線の矢印で示すように、ステップS3で生成した第3のフィルタ係数を新たに第1のフィルタ係数とみなしてステップS2に戻る。そして、当該新たな第1のフィルタ係数(オリジナルフィルタに単一パルスを入力した場合に1段目の調整フィルタから出力される数値列に相当)に基づいて、第2のフィルタ係数を再び求める(新しい調整フィルタを生成する)。
さらに、こうして生成した新たな第1のフィルタ係数と新たな第2のフィルタ係数とを畳み込み演算することによって、新しい調整フィルタを更に縦続接続した場合に得られる新たな第3のフィルタ係数を演算する。このような演算を、縦続接続したい調整フィルタの数だけ繰り返し行った後、最終段階のステップS3で生成された第3のフィルタ係数に対して、ステップS4の丸め処理を実行する。
図39は、オリジナルフィルタ(バンドパスフィルタ)の周波数−ゲイン特性およびこのオリジナルフィルタに対して1〜3個の調整フィルタを縦続接続した場合に得られる周波数−ゲイン特性を示す図である。図39において、41はオリジナルフィルタの周波数−ゲイン特性、42は調整フィルタを1個縦続接続した場合に得られる周波数−ゲイン特性、43は調整フィルタを2個縦続接続した場合に得られる周波数−ゲイン特性、44は調整フィルタを3個縦続接続した場合に得られる周波数−ゲイン特性をそれぞれ示す。
この図39に示すように、オリジナルフィルタに対して本実施形態の調整フィルタを縦続接続することにより、フィルタの通過帯域幅を広げ、かつ、阻止域の傾斜を急峻にすることができる。縦続接続する調整フィルタの数を多くすることにより、通過帯域幅がより広くて傾斜もより急峻なフィルタ特性を得ることができる。
なお、この図39は、第1のフィルタ係数から第2のフィルタ係数を求める際のパラメータαの値を1.5とした場合の周波数特性を示している。図39に示されるように、α≠1とした場合には、周波数特性の頂部に若干のオーバーシュートやリンギングが生じる。ただし、α=1とした場合には、周波数特性の頂部にオーバーシュートやリンギングが生じることはなく、平坦な特性となる。
図40は、本実施形態の調整フィルタを縦続接続した場合に得られる周波数特性の変化の原理を説明するための図である。なお、この図40は基本原理を説明するためのものであり、図39に示した周波数特性の波形と一致するものではない。この図40は、α=1とした場合の原理を示している。
図40(a)は、オリジナルフィルタに対して1個目の調整フィルタを縦続接続した場合における周波数−ゲイン特性の変化を示す。図40(a)において、Aはオリジナルフィルタの周波数−ゲイン特性、Bは当該オリジナルフィルタが有する第1のフィルタ係数から生成した第2のフィルタ係数を有する1個目の調整フィルタの周波数−ゲイン特性、Cはオリジナルフィルタと1個目の調整フィルタとを縦続接続した場合に得られる周波数−ゲイン特性を示す。
すなわち、オリジナルフィルタに対して調整フィルタを1個縦続接続した場合の新たな周波数−ゲイン特性Cは、オリジナルフィルタの周波数−ゲイン特性Aと、調整フィルタの周波数−ゲイン特性Bとを掛け合わせた形となる。2個目の調整フィルタを更に縦続接続する場合には、このように生成された周波数−ゲイン特性Cに対応する第3のフィルタ係数を新たに第1のフィルタ係数として用い、2個目の調整フィルタに関する新たな第2のフィルタ係数を求める。
図40(b)は、2個目の調整フィルタを更に縦続接続した場合における周波数−ゲイン特性の変化を示す。図40(b)において、A’は1個目の調整フィルタを縦続接続した場合の周波数−ゲイン特性であり、図40(a)の手順で求められた周波数−ゲイン特性Cと同じものである。B’は当該周波数−ゲイン特性A’に対応する新たな第1のフィルタ係数から生成した新たな第2のフィルタ係数を有する2個目の調整フィルタの周波数−ゲイン特性である。C’は2個目の調整フィルタを更に縦続接続した場合に得られる新たな周波数−ゲイン特性であり、2つの周波数−ゲイン特性A’,B’を掛け合わせた形のものとなっている。
ここでは図示しないが、3個目の調整フィルタを更に縦続接続する場合には、図40(b)の手順で生成された新たな周波数−ゲイン特性C’に対応するフィルタ係数を再び第1のフィルタ係数として用い、3個目の調整フィルタに関する新たな第2のフィルタ係数を求める。そして、上述と同様の手順に従って新たな周波数−ゲイン特性を得る。
このように、オリジナルフィルタに対して複数の調整フィルタを縦続接続することにより、フィルタの通過帯域幅を広げるとともに、阻止域の傾斜を急峻にしていくことができる。α=1とした場合には、オリジナルフィルタの周波数−ゲイン特性と調整フィルタの周波数−ゲイン特性とは、振幅が“1”のラインを境として線対称となる。したがって、調整フィルタを何個接続しても、掛け合わされた新たなフィルタの周波数−ゲイン特性が振幅“1”のラインを超えることはなく、オーバーシュートやリンギングは発生しない。このことから、αの値は“1”とするのが好ましい。
一方、αの値を1より大きくすると、多少のオーバーシュートやリンギングは発生するが、1個当たりの調整フィルタの接続で広げられる通過帯域幅の割合を大きくすることができる。したがって、少ない数の調整フィルタで通過帯域幅を効率的に広げたい場合には、αの値を大きくするのが良い。この場合において、α≠1として第2のフィルタ係数を求めた調整フィルタを複数段縦続接続した後、最終段にα=1の調整フィルタを接続することによって、通過帯域幅を効率的に広げるとともに、オーバーシュートやリンギングのない良好な周波数特性を得ることができる。
図41は、オリジナルフィルタに対して、α=1.5の調整フィルタを3段縦続接続するとともに、最終段にα=1の調整フィルタを更に縦続接続した場合に得られる周波数特性を示す図である。この図41から分かるように、最終段にα=1の調整フィルタを接続すれば、通過帯域幅が広く、阻止域の傾斜が急峻で、かつ、頂部が平坦な良好な周波数特性を得ることができる。また、フィルタ係数は対称型なので、位相の直線性も確保できる。また、α<1としてαの値を調整することにより、通過周波数帯域幅を微調整することが可能である。
なお、以上ではバンドパスフィルタの設計例について説明したが、ローパスフィルタやハイパスフィルタなども同様の手順で設計することができる。図42は、オリジナルのローパスフィルタの周波数−ゲイン特性およびこのオリジナルローパスフィルタに対して1〜5個の調整フィルタを縦続接続した場合に得られる周波数−ゲイン特性を示す図である。この図42は、α=1とした場合の周波数特性を示している。
図42において、51はオリジナルローパスフィルタの周波数−ゲイン特性、52〜56はそれぞれ調整フィルタを1個〜5個縦続接続した場合に得られる周波数−ゲイン特性を示す。この図42に示すように、ローパスフィルタの場合も図39のバンドパスフィルタと同様に、調整フィルタを縦続接続することによってフィルタの通過帯域幅を広げ、かつ、阻止域の傾斜を急峻にすることができる。また、縦続接続する調整フィルタの数を多くすることにより、通過帯域幅がより広くて傾斜もより急峻なフィルタ特性を得ることができる。
以上に説明した第2の実施形態によるフィルタ設計法を実現するための装置も、ハードウェア構成、DSP、ソフトウェアの何れによっても実現することが可能である。例えばソフトウェアによって実現する場合、本実施形態のフィルタ設計装置は、実際にはコンピュータのCPUあるいはMPU、RAM、ROMなどで構成され、RAMやROMあるいはハードディスク等に記憶されたプログラムが動作することによって実現できる。
第1のフィルタ係数を求めることは、第1の実施形態と同様に構成することができる。すなわち、各種の基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnに関するフィルタ係数をデータとして記憶装置に記憶しておく。そして、ユーザが基本フィルタLman,Lan,Hmsn,Hsn,Bmsn,Bsnに関する任意の組み合わせと接続順、各フィルタ係数間に挿入するゼロ値の数k、基本フィルタの同種縦続接続数Mなどを指示すると、CPUが、上記記憶装置に記憶されているフィルタ係数のデータを用いて、指示された内容に対応するフィルタ係数を上述した演算により求める。
また、第1のフィルタ係数から調整フィルタの第2のフィルタ係数を求めることは、CPUが数値列の中央値以外の係数を全て−α倍し、中央値だけは−α倍して更に(1+α)を加算することによって行うことが可能である。また、第1のフィルタ係数と第2のフィルタ係数から縦続接続による第3のフィルタ係数を求めることも、CPUが上述した図24のような演算をすることによって行うことが可能である。さらに、フィルタ係数の丸め処理もCPUによって自動的に行うことが可能である。
また、パーソナルコンピュータ等にインストールされている表計算ソフトの関数機能などを利用して、第1のフィルタ係数を求める演算、第2のフィルタ係数を求める演算、第3のフィルタ係数を求める演算、第3のフィルタ係数を丸め処理する演算を行うようにすることも可能である。この場合の演算は、実際には、表計算ソフトがインストールされているパーソナルコンピュータ等のCPU、ROM、RAMなどによって行われる。
また、求めたフィルタ係数を自動的にFFT変換し、その結果を周波数−ゲイン特性図としてディスプレイ画面に表示するようにしても良い。このようにすれば、設計したフィルタの周波数特性を視覚的に確認することができ、フィルタ設計をより容易に行うことができる。
実際にデジタルフィルタを電子機器内や半導体ICに実装する場合には、図50〜図52に示したように、以上のようなフィルタ設計装置によって最終的に求められた数値列をフィルタ係数として持つFIRフィルタを構成すればよい。この場合も、求められたフィルタ係数の数は丸め処理によって大幅に削減されており、かつ、単純な整数に変換されている。したがって、基本的に乗算器は不要でビットシフト回路にて対応可能であり、所望の周波数特性を小さな回路規模で高精度に実現することができる。
なお、オリジナルフィルタと調整フィルタとをそれぞれハードウェアとして構成し、それらをハードウェアとして接続することによってデジタルフィルタを実装するようにしても良い。
(第3の実施形態)
次に、本発明の第3の実施形態を図面に基づいて説明する。図43および図44は、第3の実施形態によるデジタルフィルタの設計方法の手順を示すフローチャートである。また、図45〜図48は、第3の実施形態によるデジタルフィルタの設計方法の概念を説明するための周波数特性図である。
図43は、第3の実施形態によるデジタルフィルタ設計方法の全体的な処理の流れを示すフローチャートである。図43において、まず、フィルタ係数の数値列が対称型の基本フィルタを生成する(ステップS11)。この基本フィルタは、フィルタリングの処理対象とする信号のサンプリング周波数fsの1/β(βは1以上の整数)の通過帯域幅を有する周波数−ゲイン特性を有するものである。図45に、基本フィルタの周波数−ゲイン特性を示す。この図45は、サンプリング周波数fsの半分を128等分した帯域幅を持つ基本フィルタの周波数−ゲイン特性を示したものである。
次に、図45のような周波数−ゲイン特性を有する基本フィルタに対して周波数シフトの演算を行うことによって、互いに隣接するフィルタ群が振幅1/2の部分で重なり合うように基本フィルタの周波数−ゲイン特性が所定周波数ずつシフトされた複数の周波数シフトフィルタを生成する(ステップS12)。この周波数シフトは、次のような演算で行うことができる。
基本フィルタのフィルタ係数列を{H−i 0,H−(i−1) 0,H−(i−2) 0,・・・,H−1 0,H0 0,H1 0,・・・,Hi−2 0,Hi−1 0,Hi 0}(係数H0 0を中心として対称型となっている)、基本フィルタから数えてγ個目の周波数シフトフィルタ(基本フィルタの周波数−ゲイン特性を「所定周波数×γ」だけ周波数シフトしたもの)のフィルタ係数列を{H−i γ,H−(i−1) γ,H−(i−2) γ,・・・,H−1 γ,H0 γ,H1 γ,・・・,Hi−2 γ,Hi−1 γ,Hi γ}とした場合、γ個目の周波数シフトフィルタにおける係数番号j(j=−i,−(i−1),−(i−2),・・・,−1,0,1,・・・,i−2,i−1,i)の係数Hj γは、
Hj γ=Hj 0*2cos(2πγj/(β/2))
によって求められる。
例えばγ個目の周波数シフトフィルタにおける係数番号が−iの係数H−i γは、
H−i γ=H−i 0*2cos(2πγ*(−i)/(β/2))
によって求められる。また、係数番号が−(i−1)の係数H−(i−1) γは、
H−(i−1) γ=H−(i−1) 0*2cos(2πγ*(−(i−1)/(β/2))
によって求められる。他の係数{H−(i−2) γ,・・・,H−1 γ,H0 γ,H1 γ,・・・,Hi−2 γ,Hi−1 γ,Hi γ}も同様の演算によって求められる。
図46に、このステップS12で生成される複数の周波数シフトフィルタが有する周波数−ゲイン特性を示す(点線は基本フィルタの周波数−ゲイン特性)。上記ステップS11およびステップ312の処理により、フィルタ群が振幅1/2の部分で重なり合うような周波数−ゲイン特性を有する複数のフィルタのフィルタ係数群が得られる。周波数シフトによって生成するフィルタの個数は任意であるが、基本フィルタの帯域幅がサンプリング周波数fsの半分を128分割したものであるときは、一例として、基本フィルタと周波数シフトフィルタとを含めて合計128個とする。ここで生成するフィルタの個数によって決まる周波数範囲が、最終生成物たるデジタルフィルタの設計エリアとなる。
そして、上記ステップS11およびステップS12で生成された複数のフィルタの中から任意の1以上のフィルタを取り出して、それらのフィルタ係数を対応する係数番号どうしで加算することにより、新たなフィルタ係数を求める(ステップS13)。例えば、基本フィルタから数えてγ個目の周波数シフトフィルタと(γ+1)個目の周波数シフトフィルタとを加算する場合、求めるフィルタ係数は、
{H−i γ+H−i γ+1,H−(i−1) γ+H−(i−1) γ+1,H−(i−2) γ+H−(i−2) γ+1,・・・,H−1 γ+H−1 γ+1,H0 γ+H0 γ+1,H1 γ+H1 γ+1,・・・,Hi−2 γ+Hi−2 γ+1,Hi−1 γ+Hi−1 γ+1,Hi γ+Hi γ+1}となる。
図47は、このステップS13で生成されるデジタルフィルタが有する周波数−ゲイン特性の一例を示す図である。なお、この図47において、周波数軸のスケールは図45、図46と比べて大幅に圧縮している。この図47に示す周波数−ゲイン特性は、γ=0〜31およびγ=33〜38に相当する複数のフィルタを取り出して、それらのフィルタ係数を対応する係数番号どうしで加算することによって生成したデジタルフィルタの周波数特性を示したものである。
上述のように、互いに隣接するフィルタは、振幅1/2の部分でちょうど重なり合うように作られているので、それらのフィルタ係数を加算すると、振幅はちょうど“1”となる。その結果、得られるフィルタの通過域の頂部が平坦化される。したがって、γ=0〜31に相当する32個のフィルタの係数を加算すると、それら32個のフィルタの頂部が平坦化され、(fs/2/128)×32のバンド幅を有する通過域が得られる。また、γ=32に相当するフィルタは加算の対象となっていないので、その部分にはトラップが生じる。さらに、γ=33〜38に相当する6個のフィルタの係数を加算すると、それら6個のフィルタの頂部が平坦化され、(fs/2/128)×6のバンド幅を有する通過域が得られる。以上により、γ=0〜38の部分に通過域を有し、かつ、γ=32の部分にトラップを有する特殊形状のローパスフィルタを得ることができる。
次に、ステップS13で生成されたフィルタ係数に対して、ビット数を減らす丸め処理によって不要なフィルタ係数を大幅に削減するとともに、整数化によってフィルタ係数を簡素化する(ステップS14)。
なお、ここでも第1の実施形態と同様に、フィルタ係数のビット数を減らす処理と係数値を整数化する処理とを別に行う必要は必ずしもなく、係数値を直接2x倍またはN倍し、その結果得られる値の小数点以下を丸める(切り捨て、切り上げまたは四捨五入など)ことによって、フィルタ係数のビット数を減らす処理と係数値を整数化する処理とを1つの丸め演算によって同時に行うようにしても良い。また、yビットの係数値が1/2xより小さいものは全てゼロとし、係数値が1/2x以上のものについては、係数値を2x+X倍(x+X<y)して小数点以下を丸める処理を行うことによって(x+X)ビットの整数化されたフィルタ係数を求めるようにしても良い。
第3の実施形態においても、フィルタ係数の数を減らすために従来のような窓掛けは必ずしも必要でない。窓掛けを行うことなくフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることがない。したがって、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。
次に、上記ステップ311における基本フィルタの生成法について詳しく説明する。本発明では、この基本フィルタの生成法については特に限定しない。フィルタ係数の数値列が対称型になっていれば、様々な生成法を適用することが可能である。例えば、近似式や窓関数を用いる従来の設計法を用いても良い。また、所望の周波数特性を表す複数の振幅値を逆フーリエ変換する設計法を用いても良い。また、第1の実施形態で説明した設計法(丸め処理を除く)を用いても良い。
図44は、基本フィルタの生成処理の一例を示すフローチャートである。図44において、まず、対称型の基本的な数値列をフィルタ係数として持つ第1の実施形態のような基本フィルタに対し、数値列の間に複数の“0”を挿入することによってフィルタ帯域を調整する(ステップS21)。例えば、基本ローパスフィルタL4a4のフィルタ係数を構成する数値列{−1,0,9,16,9,0,−1}の間に“0”を1個ずつ挿入する。
図23に示したように、数値列が{−1,0,9,16,9,0,−1}から成るフィルタ係数の基本ローパスフィルタL4a4は、中心周波数の両側に通過域を1つずつ有するローパスフィルタ特性を実現するものである。このような基本ローパスフィルタL4a4のフィルタ係数間に“0”を1個ずつ挿入すると、その周波数−ゲイン特性の周波数軸(周波数方向に対する周期)は1/2となり、通過域の数が2倍に増える。同様にして、フィルタ係数間に挿入する“0”の数をk個とすると、その周波数−ゲイン特性の周波数軸は1/(k+1)となる。
したがって、挿入する“0”の数を127個とすることにより、サンプリング周波数fsの半分を128等分した帯域幅を通過域として持つローパスフィルタの周波数−ゲイン特性が得られる。ただし、このままでは中心周波数より低い帯域内に128個の通過域が存在する連続波の周波数特性となっているので、この連続波から図45のような基本フィルタを構成する単独波の周波数特性を切り出す必要がある。この切り出しを行うのが、以下に説明するステップS22,S23の処理である。
単独波の切り出しを行う際には、まず、図48に示すような窓フィルタWFを生成する(ステップS22)。この窓フィルタWFは、図45のような基本フィルタとして抽出すべき単独波の通過域のみと共通の通過域を有するものである。そして、このような窓フィルタWFと基本ローパスフィルタL4a4(127)とを縦続接続することにより、図45のような基本フィルタを抽出する(ステップS23)。この窓フィルタWFと基本ローパスフィルタL4a4(127)との縦続接続は、図24で説明したようなフィルタ係数の演算によって行うことができる。
本発明では、窓フィルタWFの生成法も特に限定せず、様々な生成法を適用することが可能である。一例としては、窓フィルタWFの周波数特性を表す複数の振幅値を入力し、当該入力した数値列を逆フーリエ変換するという方法がある。周知のように、ある数値列に対してフーリエ変換(FFT)の処理を行うと、その数値列に対応した周波数−ゲイン特性の波形が得られる。したがって、所望の周波数−ゲイン特性の波形を表す数値列を入力してそれを逆FFTし、その実数項を抽出すれば、当該周波数−ゲイン特性を実現するのに必要な元の数値列が得られる。この数値列が、求める窓フィルタWFのフィルタ係数に相当する。
なお、理想的なフィルタを構成するには、本来、フィルタ係数を無限個必要とし、フィルタのタップ数も無限個にする必要がある。したがって、所望の周波数特性との誤差を小さくするためには、フィルタ係数の数に対応する入力データの数を、周波数誤差が必要な範囲内に入る程度まで多くするのが好ましい。ただし、窓フィルタWFに関しては、その通過域の中に基本フィルタだけの通過域が全て含まれていれば良く、それ以上の精度は要求されない。したがって、数値列の入力データ数(窓フィルタWFのフィルタ係数の数)はそれほど多くしなくも良い。
窓フィルタWFの周波数特性を表す振幅値の入力は、個々のサンプル点の数値を直接入力しても良いし、周波数−ゲイン特性を表すための2次元入力座標上において、所望の周波数特性の波形を描画し、描画された波形をそれに対応する数値列に置換入力するようにしても良い。後者の入力手法を用いれば、所望の周波数−ゲインをイメージとして確認しながらデータ入力を行うことができるので、所望の周波数特性を表すデータの入力を直感的に行いやすくすることができる。
後者の入力手法を実現する手段は幾つか考えられる。例えば、コンピュータのディスプレイ画面上に周波数−ゲイン特性を表す2次元平面を表示して、その2次元平面上に所望の周波数特性の波形をGUI(Graphical User Interface)等により描画し、それを数値データ化するという方法が考えられる。また、コンピュータ画面上のGUIの代わりに、ディジタイザやプロッタ等のポインティングデバイスを用いても良い。ここに挙げている手法は単なる例に過ぎず、これ以外の手法により数値列を入力するようにしても良い。また、ここでは所望の周波数−ゲイン特性を数値列として入力しているが、当該周波数−ゲイン特性の波形を表す関数として入力するようにしても良い。
なお、窓フィルタWFを用いることなく、基本フィルタの周波数特性を表す振幅値を入力して逆FFTすることにより、基本フィルタのフィルタ係数を直接求めることも可能である。ただし、逆FFT演算によって理想的な基本フィルタを構成するため(所望の周波数特性との誤差を小さくするため)には、フィルタ係数の数に対応する入力データの数を非常に多くする必要がる。この場合、基本フィルタを構成するフィルタ係数の数が膨大になり、これを利用して生成される最終生成物としてのフィルタ係数の数も膨大になってしまう。したがって、フィルタ係数の数をできるだけ少なくすることを希望する場合には、上述のように窓フィルタWFを用いて基本フィルタを生成するのが好ましい。
上述したように、基本フィルタのフィルタ係数を求めたら、周波数シフトの演算によって複数の周波数シフトフィルタのフィルタ係数を更に求める。そして、基本フィルタおよび複数の周波数シフトフィルタの中から任意の1以上のフィルタを取り出して、それらのフィルタ係数を対応する係数番号どうしで加算することにより、新たなフィルタ係数を求める。抽出するフィルタを任意に変えることにより、任意の周波数特性を有するデジタルフィルタを生成することができる。
また、以上のようにして求めたフィルタ係数の数値列に対して、ビット数を減らす丸め処理によって不要なフィルタ係数を大幅に削減するとともに、整数化によってフィルタ係数を簡素化することができる。よって、フィルタ係数の数を減らすために従来のような窓掛けは必要ない。窓掛けを行うことなくフィルタの設計ができるので、周波数特性に打ち切り誤差が生じることがない。したがって、遮断特性の極めて大きな改善が可能となり、位相特性も直線で優れたフィルタ特性を得ることができる。
図47では一部にトラップを有するローパスフィルタの生成例を示したが、これ以外にも、任意の周波数帯域に通過域を有するローパスフィルタやハイパスフィルタ、バンドパスフィルタ、バンドエリミネーションフィルタを生成することが可能である。さらに、櫛型フィルタやその他の特殊な周波数特性を有するデジタルフィルタも簡単に生成することができる。また、基本フィルタを生成するときに分割数(βの数)を大きくしておけば、基本フィルタおよび個々の周波数シフトフィルタの阻止域の傾斜が大きくなるとともに、フィルタ設計エリアに対する分解能も高くなるので、希望の周波数特性に精密に合致したデジタルフィルタを生成することができる。
以上に説明した第3の実施形態によるフィルタ設計法を実現するための装置も、ハードウェア構成、DSP、ソフトウェアの何れによっても実現することが可能である。例えばソフトウェアによって実現する場合、本実施形態のフィルタ設計装置は、実際にはコンピュータのCPUあるいはMPU、RAM、ROMなどで構成され、RAMやROMあるいはハードディスク等に記憶されたプログラムが動作することによって実現できる。
例えば、パーソナルコンピュータ等にインストールされている表計算ソフトの関数機能などを利用して、基本フィルタを求める演算、周波数シフトフィルタを求める演算、基本フィルタと複数の周波数シフトフィルタの中から任意に選択されたもののフィルタ係数を加算する演算を行うようにすることも可能である。この場合の演算は、実際には、表計算ソフトがインストールされているパーソナルコンピュータ等のCPU、ROM、RAMなどによって行われる。
また、基本フィルタのフィルタ係数と、複数の周波数シフトフィルタのフィルタ係数とをあらかじめ計算して記憶装置に記憶しておき、ユーザによってキーボードやマウスの操作により選択されたものをCPUが抽出して演算するようにしても良い。図49は、その場合のデジタルフィルタ設計装置の構成例を示すブロック図である。
図49において、61はフィルタ係数テーブルであり、上述した基本フィルタのフィルタ係数と、複数の周波数シフトフィルタのフィルタ係数とを含むフィルタ係数群(フィルタ設計エリアを構成する全周波数帯域のフィルタ係数群)のテーブルデータを記憶している。図中、横軸の数字はフィルタの番号を示している。すなわち、0番の列は基本フィルタのフィルタ係数を記憶しており、1番以降の列は周波数シフトフィルタのフィルタ係数を記憶している。62はコントローラであり、装置全体の制御を行う。
63は操作部であり、基本フィルタおよび複数の周波数シフトフィルタの中から任意の1以上のフィルタを選択するためのものである。この操作部13は、例えばキーボードやマウスなどの入力デバイスにより構成される。64は表示部であり、任意の1以上のフィルタを選択する際の選択画面を表示する。この選択画面は、フィルタ係数テーブル61の列番号を表示して何れかを選択させるものであっても良いし、図46のような周波数特性の波形を表示して何れかを選択させるものであっても良い。
65は演算部であり、基本フィルタおよび複数の周波数シフトフィルタの中から操作部13によって選択されたフィルタのフィルタ係数(コントローラ12がフィルタ係数テーブル11から読み出す)を対応する係数番号どうしで加算することにより、デジタルフィルタのフィルタ係数を求める。この演算部65は、このようにして求めたフィルタ係数のデータに対して下位数ビットを切り捨てることによってyビットのデータをxビットに丸める処理や、xビットの係数値を2x倍して小数点以下を丸める処理も行う。
このように構成したデジタルフィルタ設計装置では、基本フィルタおよび複数の周波数シフトフィルタのフィルタ係数をあらかじめ求めてテーブルデータ化しておくことにより、ユーザが操作部63を操作して選択したフィルタのフィルタ係数を単に足し算するだけの極めて簡単な演算だけで、所望のデジタルフィルタを設計することができる。
実際にデジタルフィルタを電子機器内や半導体ICに実装する場合には、図50〜図52に示したように、以上のようなフィルタ設計装置によって最終的に求められた数値列をフィルタ係数として持つFIRフィルタを構成すればよい。この場合、求められたフィルタ係数の数は丸め処理によって大幅に削減されるとともに、単純な整数に変換されている。したがって、基本的に乗算器は不要でビットシフト回路にて対応可能であり、所望の周波数特性を小さな回路規模で高精度に実現することができる。
なお、基本フィルタと周波数シフトフィルタとをそれぞれハードウェアとして構成し、それらをハードウェアとして接続することによってデジタルフィルタを実装するようにしても良い。
上記のように構成した第3の実施形態によれば、基本フィルタおよびこれから生成した複数の周波数シフトフィルタの中から所望の1以上のフィルタを選択してそのフィルタ係数を加算するだけの極めて簡易な処理で、任意形状の周波数−ゲイン特性を有するデジタルフィルタを精密に設計することができる。さらに、丸め処理によって不要なフィルタ係数を大幅に削減することができるとともに、フィルタ係数を簡素化することができる。これにより、所望の周波数特性を高精度に実現するデジタルフィルタを極めて小さい回路規模で構成することができる。
なお、上記第3の実施形態では、基本ユニットフィルタのフィルタ係数の数値列として{−1,0,9,16,9,0,−1}を用いる例について説明したが、本発明はこれに限定されない。数値列が対称型になっていれば、本発明に適用することが可能である。
また、上記第3の実施形態では、基本フィルタとしてローパスフィルタを用い、これを高周波側に周波数シフトする例について説明したが、本発明はこれに限定されない。基本フィルタとしてハイパスフィルタを用い、これを低周波側に周波数シフトするようにしても良いし、基本フィルタとしてバンドパスフィルタを用い、これを高周波側および低周波側に周波数シフトするようにしても良い。
また、上記第3の実施形態において、演算部63は、操作部13によって選択された1以上のフィルタのフィルタ係数(コントローラ12がフィルタ係数テーブル11から読み出したもの)を加算することによって新たなフィルタ係数を算出する演算を行う際に、当該選択された1以上のフィルタのフィルタ係数に対してそれぞれ任意の重み付けを行うようにしても良い。このようにすれば、特定の周波数帯域のみを強調したり減衰させたりした任意形状の周波数−ゲイン特性を有するデジタルフィルタを極めて簡易に設計することができる。また、この特性を利用したグラフィックイコライザ等も簡単に設計することができる。
その他、上記第1〜第3の実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明は、複数の遅延器から成るタップ付き遅延線を備え、各タップの出力信号をそれぞれフィルタ係数により数倍した後、それらの乗算結果を加算して出力するタイプのFIRデジタルフィルタに有用である。
Claims (48)
- 数値列が対称型であり、当該数値列の合計値が非ゼロで、当該数値列の1つ飛びの合計値が同符号で互いに等しくなるように値が設定された基本のフィルタ係数、または、数値列が対称型であり、当該数値列の合計値がゼロで、当該数値列の1つ飛びの合計値が逆符号で互いに等しくなるように値が設定された基本のフィルタ係数を有するFIR型の1以上の基本フィルタを任意に組み合わせて縦続接続した場合のフィルタ係数を算出する第1のステップと、
上記第1のステップで算出したフィルタ係数のデータに対して下位数ビットを丸める丸め処理を行うことによってフィルタ係数のビット数を減らす第2のステップとを有することを特徴とするデジタルフィルタの設計方法。 - 上記第1のステップで算出したyビットのフィルタ係数に対して上記第2のステップで上記丸め処理を行うことによって求められたxビット(x<y)のフィルタ係数を2x倍することによってフィルタ係数を整数化する第3のステップを更に有することを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。
- 上記第1のステップで算出したyビットのフィルタ係数に対して上記第2のステップで上記丸め処理を行うことによって求められたxビット(x<y)のフィルタ係数をN倍(Nは2のべき乗以外の値)して小数点以下を丸める第2の丸め処理を行うことによってフィルタ係数を整数化する第3のステップを更に有することを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。
- 上記第2のステップでは、上記第1のステップで算出したyビットのフィルタ係数を2x倍して小数点以下を丸める処理を行うことによってxビット(x<y)の整数化されたフィルタ係数を求めることを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。
- 上記第2のステップでは、上記第1のステップで算出したyビットのフィルタ係数をN倍(Nは2のべき乗以外の値)して小数点以下を丸める処理を行うことによってxビット(x<y)の整数化されたフィルタ係数を求めることを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。
- 上記第2のステップでは、上記第1のステップで算出したyビットのフィルタ係数のデータ値が1/2xより小さいものは全てゼロとし、上記データ値が1/2x以上のものについては、上記データ値を2x+X倍(x+X<y)して小数点以下を丸める処理を行うことによって(x+X)ビットの整数化されたフィルタ係数を求めることを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。
- 上記基本のフィルタ係数は、“−1,m,−1”の比率より成る数値列に対して、演算前の元データとそれより所定遅延量だけ前の前データとを加算し振幅調整して出力する移動平均演算をn回繰り返し行うことによって求められる数値列から成ることを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。
- 上記基本のフィルタ係数は、“1,m,1”の比率より成る数値列に対して、演算前の元データからそれより所定遅延量だけ前の前データを減算し振幅調整して出力する移動平均演算をn回繰り返し行うことによって求められる数値列から成ることを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。
- 上記1以上の基本フィルタは、略同じ中心周波数を有する基本ハイパスフィルタと基本ローパスフィルタとを含むことを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。
- 上記基本のフィルタ係数を構成する数値列の各数値の間にゼロ値を数個ずつ挿入することにより、上記基本フィルタの通過域のバンド幅を狭くするようにしたことを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。
- 上記基本フィルタをYFで表した場合、
a*YFM1−b*YFM2
ただし、YFに対する乗算は上記基本フィルタの縦続接続を表し、a,b,M1,M2は上記基本フィルタの縦続接続数を表す係数であり、a>b、M1<M2
の関係が成り立つように上記基本フィルタを縦続接続することにより、上記基本フィルタの通過域のバンド幅を広くするようにしたことを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。 - 上記第1のステップと上記第2のステップとの間に第4のステップおよび第5のステップを有し、
上記第4のステップでは、上記第1のステップで算出した上記第1のフィルタ係数により表される第1の周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる第2の周波数振幅特性を実現する対称型の第2のフィルタ係数を算出し、
上記第5のステップでは、上記第1のフィルタ係数を有する第1のフィルタと上記第2のフィルタ係数を有する第2のフィルタとを縦続接続した場合に得られる第3のフィルタ係数を算出し、
上記第2のステップでは、上記第5のステップで算出した上記第3のフィルタ係数のyビットのデータに対して下位数ビットを丸める丸め処理を行うことによってxビット(x<y)のフィルタ係数を求めることを特徴とする請求の範囲第1項に記載のデジタルフィルタの設計方法。 - サンプリング周波数の整数分の1の通過帯域幅を有する周波数振幅特性を実現する基本フィルタに対して周波数シフトの演算を行うことにより、互いに隣接するフィルタ群が振幅1/2の部分で重なり合うように上記基本フィルタの周波数振幅特性が所定周波数ずつシフトされた周波数振幅特性を実現する複数の周波数シフトフィルタを生成する第1のステップと。
上記基本フィルタおよび上記周波数シフトフィルタを含む複数のフィルタのうち、任意の1以上のフィルタを抽出してそのフィルタ係数を加算することによって新たなフィルタ係数を求める第2のステップと、
上記第2のステップで算出したフィルタ係数のデータに対して下位数ビットを丸める丸め処理を行うことによってフィルタ係数のビット数を減らす第3のステップとを有することを特徴とするデジタルフィルタの設計方法。 - 上記第2のステップで算出したyビットのフィルタ係数に対して上記第3のステップで上記丸め処理を行うことによって求められたxビット(x<y)のフィルタ係数を2x倍することによってフィルタ係数を整数化する第4のステップを更に有することを特徴とする請求の範囲第13項に記載のデジタルフィルタの設計方法。
- 上記第2のステップで算出したyビットのフィルタ係数に対して上記第3のステップで上記丸め処理を行うことによって求められたxビット(x<y)のフィルタ係数をN倍(Nは2のべき乗以外の値)して小数点以下を丸める第2の丸め処理を行うことによってフィルタ係数を整数化する第4のステップを更に有することを特徴とする請求の範囲第13項に記載のデジタルフィルタの設計方法。
- 上記第3のステップでは、上記第2のステップで算出したyビットのフィルタ係数を2x倍して小数点以下を丸める丸め処理を行うことによってxビット(x<y)の整数化されたフィルタ係数を求めることを特徴とする請求の範囲第13項に記載のデジタルフィルタの設計方法。
- 上記第3のステップでは、上記第2のステップで算出したyビットのフィルタ係数をN倍(Nは2のべき乗以外の値)して小数点以下を丸める丸め処理を行うことによってxビット(x<y)の整数化されたフィルタ係数を求めることを特徴とする請求の範囲第13項に記載のデジタルフィルタの設計方法。
- 上記第3のステップでは、上記第2のステップで算出したyビットのフィルタ係数のデータ値が1/2xより小さいものは全てゼロとし、上記データ値が1/2x以上のものについては、上記データ値を2x+X倍(x+X<y)して小数点以下を丸める処理を行うことによって(x+X)ビットの整数化されたフィルタ係数を求めることを特徴とする請求の範囲第13項に記載のデジタルフィルタの設計方法。
- 数値列が対称型であり、当該数値列の合計値が非ゼロで、当該数値列の1つ飛びの合計値が同符号で互いに等しくなるように値が設定された基本のフィルタ係数、および、数値列が対称型であり、当該数値列の合計値がゼロで、当該数値列の1つ飛びの合計値が逆符号で互いに等しくなるように値が設定された基本のフィルタ係数に関するデータを記憶する基本フィルタ係数記憶手段と、
上記基本のフィルタ係数を有するFIR型の1以上の基本フィルタを任意に組み合わせて縦続接続した場合のフィルタ係数を、上記基本フィルタ係数記憶手段に記憶されたデータを用いて算出する演算、および、当該算出したフィルタ係数のデータに対して下位数ビットを丸める丸め処理を行うことによってフィルタ係数のビット数を減らす演算を行う演算手段とを備えたことを特徴とするデジタルフィルタの設計装置。 - 上記演算手段は、上記基本フィルタ係数記憶手段に記憶されたデータを用いて算出したyビットのフィルタ係数に対して上記丸め処理を行うことによって求められたxビット(x<y)のフィルタ係数を2x倍することによってフィルタ係数を整数化する手段を更に備えることを特徴とする請求の範囲第19項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記基本フィルタ係数記憶手段に記憶されたデータを用いて算出したyビットのフィルタ係数に対して上記丸め処理を行うことによって求められたxビット(x<y)のフィルタ係数をN倍(Nは2のべき乗以外の値)して小数点以下を丸める第2の丸め処理を行うことによってフィルタ係数を整数化する手段を更に備えることを特徴とする請求の範囲第19項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記フィルタ係数のyビットのデータを2x倍して小数点以下を丸める丸め処理を行うことによってxビット(x<y)の整数化されたフィルタ係数を求めることを特徴とする請求の範囲第19項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記フィルタ係数のyビットのデータをN倍(Nは2のべき乗以外の値)して小数点以下を丸める丸め処理を行うことによってxビット(x<y)の整数化されたフィルタ係数を求めることを特徴とする請求の範囲第19項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記フィルタ係数のyビットのデータ値が1/2xより小さいものは全てゼロとし、上記データ値が1/2x以上のものについては、上記データ値を2x+X倍(x+X<y)して小数点以下を丸める処理を行うことによって(x+X)ビットの整数化されたフィルタ係数を求めることを特徴とする請求の範囲第19項に記載のデジタルフィルタの設計装置。
- 上記基本のフィルタ係数は、“−1,m,−1”の比率より成る数値列に対して、演算前の元データとそれより所定遅延量だけ前の前データとを加算し振幅調整して出力する移動平均演算をn回繰り返し行うことによって求められる数値列から成ることを特徴とする請求の範囲第19項に記載のデジタルフィルタの設計装置。
- 上記基本のフィルタ係数は、“1,m,1”の比率より成る数値列に対して、演算前の元データからそれより所定遅延量だけ前の前データを減算し振幅調整して出力する移動平均演算をn回繰り返し行うことによって求められる数値列から成ることを特徴とする請求の範囲第19項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記基本のフィルタ係数を構成する数値列の各数値の間にゼロ値を数個ずつ挿入する手段を備えることを特徴とする請求の範囲第19項に記載のデジタルフィルタの設計装置。
- 上記基本フィルタをYFで表した場合、上記演算手段は、
a*YFM1−b*YFM2
ただし、YFに対する乗算は上記基本フィルタの縦続接続を表し、a,b,M1,M2は上記基本フィルタの縦続接続数を表す係数であり、a>b、M1<M2
の関係が成り立つように演算を行う手段を備えることを特徴とする請求の範囲第19項に記載のデジタルフィルタの設計装置。 - 数値列が対称型であり、当該数値列の合計値が非ゼロで、当該数値列の1つ飛びの合計値が同符号で互いに等しくなるように値が設定された基本のフィルタ係数、および、数値列が対称型であり、当該数値列の合計値がゼロで、当該数値列の1つ飛びの合計値が逆符号で互いに等しくなるように値が設定された基本のフィルタ係数に関するデータを記憶する基本フィルタ係数記憶手段と、
上記基本のフィルタ係数を有するFIR型の1以上の基本フィルタを任意に組み合わせて縦続接続した場合に得られる対称型の第1のフィルタ係数を、上記基本フィルタ係数記憶手段に記憶されたデータを用いて算出する演算、上記第1のフィルタ係数により表される第1の周波数振幅特性において極大値をとる位置に接点を有し、当該接点において極小値をとる第2の周波数振幅特性を実現する対称型の第2のフィルタ係数を求める演算、上記第1のフィルタ係数を有する第1のフィルタと上記第2のフィルタ係数を有する第2のフィルタとを縦続接続した場合に得られる第3のフィルタ係数を求める演算、および、上記第3のフィルタ係数のデータに対して下位数ビットを丸める丸め処理を行うことによってフィルタ係数のビット数を減らす演算を行う演算手段とを備えたことを特徴とするデジタルフィルタの設計装置。 - 上記演算手段は、yビットの上記第3のフィルタ係数に対して上記丸め処理を行うことによって求められたxビット(x<y)のフィルタ係数を2x倍することによってフィルタ係数を整数化する手段を更に備えることを特徴とする請求の範囲第29項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、yビットの上記第3のフィルタ係数に対して上記丸め処理を行うことによって求められたxビット(x<y)のフィルタ係数をN倍(Nは2のべき乗以外の値)して小数点以下を丸める第2の丸め処理を行うことによってフィルタ係数を整数化する手段を更に備えることを特徴とする請求の範囲第29項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記フィルタ係数のyビットのデータを2x倍して小数点以下を丸める丸め処理を行うことによってxビット(x<y)の整数化されたフィルタ係数を求めることを特徴とする請求の範囲第29項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記フィルタ係数のyビットのデータをN倍(Nは2のべき乗以外の値)して小数点以下を丸める丸め処理を行うことによってxビット(x<y)の整数化されたフィルタ係数を求めることを特徴とする請求の範囲第29項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記フィルタ係数のyビットのデータ値が1/2xより小さいものは全てゼロとし、上記データ値が1/2x以上のものについては、上記データ値を2x+X倍(x+X<y)して小数点以下を丸める処理を行うことによって(x+X)ビットの整数化されたフィルタ係数を求めることを特徴とする請求の範囲第29項に記載のデジタルフィルタの設計装置。
- サンプリング周波数の整数分の1の通過帯域幅を有する周波数振幅特性を実現する基本フィルタのフィルタ係数と、互いに隣接するフィルタ群が振幅1/2の部分で重なり合うように上記基本フィルタの周波数振幅特性が所定周波数ずつシフトされた周波数振幅特性を実現する複数の周波数シフトフィルタのフィルタ係数とを含むフィルタ係数群のテーブルデータを記憶する係数テーブル記憶手段と、
上記係数テーブル記憶手段に記憶されているフィルタ係数群のうち、指定された1以上のフィルタのフィルタ係数を加算することによって新たなフィルタ係数を算出する演算、および、当該算出したフィルタ係数のデータに対して下位数ビットを丸める丸め処理を行うことによってフィルタ係数のビット数を減らす演算を行う演算手段とを備えたことを特徴とするデジタルフィルタの設計装置。 - 上記演算手段は、上記指定された1以上のフィルタのフィルタ係数を加算することによって新たなフィルタ係数を算出する演算を行う際に、上記指定された1以上のフィルタのフィルタ係数に対してそれぞれ任意の重み付けを行うことを特徴とする請求の範囲第35項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記新たなフィルタ係数を算出する演算によって求めたyビットのフィルタ係数に対して上記丸め処理を行うことによって求められたxビット(x<y)のフィルタ係数を2x倍することによってフィルタ係数を整数化する手段を更に備えることを特徴とする請求の範囲第35項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記新たなフィルタ係数を算出する演算によって求めたyビットのフィルタ係数に対して上記丸め処理を行うことによって求められたxビット(x<y)のフィルタ係数をN倍(Nは2のべき乗以外の値)して小数点以下を丸める第2の丸め処理を行うことによってフィルタ係数を整数化する手段を更に備えることを特徴とする請求の範囲第35項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記フィルタ係数のyビットのデータを2x倍して小数点以下を丸める丸め処理を行うことによってxビット(x<y)の整数化されたフィルタ係数を求めることを特徴とする請求の範囲第35項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記フィルタ係数のyビットのデータをN倍(Nは2のべき乗以外の値)して小数点以下を丸める丸め処理を行うことによってxビット(x<y)の整数化されたフィルタ係数を求めることを特徴とする請求の範囲第35項に記載のデジタルフィルタの設計装置。
- 上記演算手段は、上記フィルタ係数のyビットのデータ値が1/2xより小さいものは全てゼロとし、上記データ値が1/2x以上のものについては、上記データ値を2x+X倍(x+X<y)して小数点以下を丸める処理を行うことによって(x+X)ビットの整数化されたフィルタ係数を求めることを特徴とする請求の範囲第35項に記載のデジタルフィルタの設計装置。
- 請求の範囲第1項〜第18項の何れか1項に記載されたデジタルフィルタの設計方法に関する処理手順をコンピュータに実行させるためのデジタルフィルタ設計用プログラム。
- 請求の範囲第19項〜第41項の何れか1項に記載の各手段としてコンピュータを機能させるためのデジタルフィルタ設計用プログラム。
- 請求の範囲第1項〜第18項の何れか1項に記載の設計方法、あるいは、請求の範囲第19項〜第41項の何れか1項に記載の設計装置を用いて算出された数値列をフィルタ係数として持つFIR型のデジタルフィルタ。
- 複数の遅延器から成るタップ付き遅延線を備え、各タップの出力信号を、請求の範囲第1項〜第18項の何れか1項に記載の設計方法、あるいは、請求の範囲第19項〜第41項の何れか1項に記載の設計装置を用いて求められたフィルタ係数によりそれぞれ数倍した後、それらの乗算結果を加算して出力するように構成したことを特徴とするデジタルフィルタ。
- 複数の遅延器から成るタップ付き遅延線を備え、各タップの出力信号を、請求の範囲第2項、第4項、第14項もしくは第16項の何れか1項に記載の設計方法、または、請求の範囲第20項、第22項、第30項、第32項、第37項もしくは第39項の何れか1項に記載の設計装置を用いて求められたフィルタ係数によりそれぞれ数倍した後、それらの乗算結果を加算し、その加算結果を1/2x倍して出力するように構成したことを特徴とするデジタルフィルタ。
- 複数の遅延器から成るタップ付き遅延線を備え、各タップの出力信号を、請求の範囲第3項、第5項、第15項もしくは第17項の何れか1項に記載の設計方法、または、請求の範囲第21項、第23項、第31項、第33項、第38項もしくは第40項の何れか1項に記載の設計装置を用いて求められたフィルタ係数によりそれぞれ数倍した後、それらの乗算結果を加算し、その加算結果を1/N倍して出力するように構成したことを特徴とするデジタルフィルタ。
- 複数の遅延器から成るタップ付き遅延線を備え、各タップの出力信号を、請求の範囲第6項もしくは第18項の何れか1項に記載の設計方法、または、請求の範囲第24項、第34項もしくは第41項の何れか1項に記載の設計装置を用いて求められたフィルタ係数によりそれぞれ数倍した後、それらの乗算結果を加算し、その加算結果を1/2x+X倍して出力するように構成したことを特徴とするデジタルフィルタ。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004039779 | 2004-02-17 | ||
JP2004039779 | 2004-02-17 | ||
PCT/JP2004/015562 WO2005078925A1 (ja) | 2004-02-17 | 2004-10-14 | デジタルフィルタの設計方法および装置、デジタルフィルタ設計用プログラム、デジタルフィルタ |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2005078925A1 true JPWO2005078925A1 (ja) | 2008-01-10 |
Family
ID=34857856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005517898A Withdrawn JPWO2005078925A1 (ja) | 2004-02-17 | 2004-10-14 | デジタルフィルタの設計方法および装置、デジタルフィルタ設計用プログラム、デジタルフィルタ |
Country Status (6)
Country | Link |
---|---|
US (1) | US20070053420A1 (ja) |
JP (1) | JPWO2005078925A1 (ja) |
CN (1) | CN1938947A (ja) |
GB (1) | GB2427093A (ja) |
TW (1) | TW200529552A (ja) |
WO (1) | WO2005078925A1 (ja) |
Families Citing this family (13)
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 |
KR100660841B1 (ko) * | 2004-10-22 | 2006-12-26 | 삼성전자주식회사 | 오버랩된 필터 뱅크들을 가지는 부분 탭 적응 등화기 및이를 이용한 등화 방법 |
IL178744A0 (en) * | 2006-10-19 | 2007-09-20 | Eci Telecom Ltd | Method for estimating bandwidth limiting effects in transmission communication systems |
JP2010041311A (ja) * | 2008-08-04 | 2010-02-18 | Japan Science & Technology Agency | フィルタ、フィルタの構成システム及び構成方法 |
EP2315353B1 (en) | 2008-06-10 | 2020-07-29 | Japan Science and Technology Agency | Filter |
JP2010021860A (ja) * | 2008-07-11 | 2010-01-28 | Japan Science & Technology Agency | 帯域分離フィルタ及び帯域分離方法 |
AU2008360010B2 (en) * | 2008-07-30 | 2014-02-13 | Micro Motion, Inc. | Optimizing processor operation in a processing system including one or more digital filters |
JP5882917B2 (ja) * | 2010-02-26 | 2016-03-09 | インダストリー−ユニバーシティーコオペレーション ファウンデーション ハンヤン ユニバーシティー | 周波数再構成が可能なデジタルフィルタとフィルタリング方法及びこれを用いたイコライザとその設計方法 |
CN102739195B (zh) * | 2012-06-06 | 2015-12-09 | 华为技术有限公司 | 一种fir滤波器的处理方法、装置和系统 |
CN104954051A (zh) * | 2014-03-31 | 2015-09-30 | 富士通株式会社 | 脉冲成型滤波器的优化装置、发射机及方法 |
US9450601B1 (en) | 2015-04-02 | 2016-09-20 | Microsoft Technology Licensing, Llc | Continuous rounding of differing bit lengths |
JP7497659B2 (ja) * | 2020-09-23 | 2024-06-11 | ヤマハ株式会社 | Firフィルタを制御する方法および装置 |
CN114448389A (zh) * | 2020-11-04 | 2022-05-06 | 南京中兴新软件有限责任公司 | 滤波方法、服务器及存储介质 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4542475A (en) * | 1982-11-23 | 1985-09-17 | Rca Corporation | Sampled data filter system as for a digital TV |
JP2511253B2 (ja) * | 1985-10-07 | 1996-06-26 | 日本ビクター株式会社 | デジタル・グラフイツク・イコライザ |
JPH0650810B2 (ja) * | 1986-06-25 | 1994-06-29 | 富士通テン株式会社 | 音質制御装置 |
JP3114464B2 (ja) * | 1993-11-12 | 2000-12-04 | 松下電器産業株式会社 | 信号分析及び合成フィルタバンク |
JP2541128B2 (ja) * | 1993-11-16 | 1996-10-09 | 日本電気株式会社 | マルチキャリアロ―ルオフフィルタ |
EP0791242B1 (en) * | 1995-09-07 | 2000-12-06 | Koninklijke Philips Electronics N.V. | Improved digital filter |
CA2177664C (en) * | 1996-05-29 | 2003-01-28 | Andrew G. Deczky | Digital receive filter for communications systems |
JPH10149348A (ja) * | 1996-07-01 | 1998-06-02 | Sun Microsyst Inc | フィルタ対称を使用した信号内挿及びデシメーション |
JP3181879B2 (ja) * | 1998-07-22 | 2001-07-03 | シャープ株式会社 | 送信装置 |
US6662200B2 (en) * | 2001-01-03 | 2003-12-09 | Intel Corporation | Multiplierless pyramid filter |
US7158591B2 (en) * | 2001-05-09 | 2007-01-02 | Signum Concept, Inc. | Recursive resampling digital filter structure for demodulating 3G wireless signals |
JP2002368584A (ja) * | 2001-06-06 | 2002-12-20 | Sony Corp | ディジタルフィルタおよびそれを用いたディジタルビデオエンコーダ |
CN100358239C (zh) * | 2001-09-10 | 2007-12-26 | 神经网路处理有限公司 | 数字滤波器及其设计方法 |
JP2003168958A (ja) * | 2001-11-29 | 2003-06-13 | Sakai Yasue | デジタルフィルタの設計方法および設計装置、デジタルフィルタ設計用プログラム、デジタルフィルタ |
EP1533898A1 (en) * | 2002-07-15 | 2005-05-25 | Neuro Solution Corp. | Digital filter designing method, digital filter designing program, digital filter |
-
2004
- 2004-10-14 WO PCT/JP2004/015562 patent/WO2005078925A1/ja active Application Filing
- 2004-10-14 GB GB0617380A patent/GB2427093A/en not_active Withdrawn
- 2004-10-14 JP JP2005517898A patent/JPWO2005078925A1/ja not_active Withdrawn
- 2004-10-14 CN CNA2004800427694A patent/CN1938947A/zh active Pending
- 2004-10-27 TW TW093132628A patent/TW200529552A/zh unknown
-
2006
- 2006-08-16 US US11/465,056 patent/US20070053420A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
GB0617380D0 (en) | 2006-10-11 |
WO2005078925A1 (ja) | 2005-08-25 |
GB2427093A (en) | 2006-12-13 |
US20070053420A1 (en) | 2007-03-08 |
CN1938947A (zh) | 2007-03-28 |
TW200529552A (en) | 2005-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070053420A1 (en) | Method, apparatus, and program for designing digital filters | |
US7529788B2 (en) | Digital filter design method and device, digital filter design program, and digital filter | |
EP1808962A1 (en) | Digital filter and its designing method, desiging apparatus, and program for designing digital filter | |
TW569523B (en) | Digital filter and design method thereof | |
US20060233392A1 (en) | Digital filter designing method and designing device | |
US20060218213A1 (en) | Optimization technique for FIR and IIR filter design | |
US20050289206A1 (en) | Digital filter design method and device, digital filter design program, digital filter | |
US20070067377A1 (en) | Methods, devices, and programs for designing a digital filter and for generating a numerical sequence of desired frequency characteristics | |
JPWO2004036747A1 (ja) | デジタルフィルタの設計方法および装置、デジタルフィルタ設計用プログラム、デジタルフィルタ | |
JP2010041311A (ja) | フィルタ、フィルタの構成システム及び構成方法 | |
US7590675B2 (en) | Digital filter, design method thereof, design device, and digital filter design program | |
JP2003168958A (ja) | デジタルフィルタの設計方法および設計装置、デジタルフィルタ設計用プログラム、デジタルフィルタ | |
EP1533898A1 (en) | Digital filter designing method, digital filter designing program, digital filter | |
JPWO2007102611A1 (ja) | 補間関数生成回路 | |
JPWO2004036746A1 (ja) | デジタルフィルタの設計方法および装置、デジタルフィルタ設計用プログラム、デジタルフィルタ | |
US20050171988A1 (en) | Digital filter design method and device, digital filter design program, and digital filter | |
US7400676B2 (en) | Tone quality adjustment device designing method and designing device, tone quality adjustment device designing program, and tone quality adjustment device | |
US20050120067A1 (en) | Digital filter designing method, digital filter designing program, digital filter | |
JPWO2003096534A1 (ja) | 音質調整装置の設計方法および設計装置、音質調整装置設計用プログラム、音質調整装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A529 | Written submission of copy of amendment under article 34 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A5211 Effective date: 20060814 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070928 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20090319 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20100121 |