説明

デシメーションフィルタ

【課題】入力された信号の周波数を低い周波数に変換するために用いられるデシメーションフィルタに関し、ハードウェアの増大を招くことなく任意のデシメーション比に容易に対応可能なフィルタ構成を提供することを目的とする。
【解決手段】乗算器21とアキュムレータ22とからなる複数の演算装置20と、フィルタ係数を格納し、演算装置と対応する複数の係数メモリ(リングメモリ30、シフトレジスタ31)と、クロックに同期して複数の演算装置20の出力を順次選択的に出力するセレクタ13とを備え、デシメーション比をnとした場合、複数の係数メモリからは順次n個ずつずれたフィルタ係数を読み出し、演算装置20の乗算器21において信号と乗算を行い、アキュムレータ22において累算して出力することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、信号の周波数を所定比の低い周波数に変換するデシメーションフィルタに関する。
【背景技術】
【0002】
信号処理を行うに際し、所定のサンプリング周波数でサンプルされた信号のサンプリングレートを変化させる必要が生じる場合がある。周波数を上げるシステムをインタポレータ(補間器:interpolator)と呼び、周波数を下げるシステムをデシメータ(間引き器:decimator)と呼ぶ。本発明は、デシメータに関するものである。
【0003】
デシメータでは、データに対してフィルタリング処理を行った後、データを間引くことで実現する。フィルタリング処理は、低い周波数にダウンサンプリングする際に、その低い周波数の1/2の周波数(ナイキスト周波数)よりも高い成分が含まれていると折り返しひずみ(エリアジング成分)が生じてしまうことから、周波数帯域をナイキスト周波数以下に制限するために行う。このフィルタリング処理に用いるフィルタを、デシメーションフィルタと呼ぶ。
【0004】
デシメータを原理通りに実現すればアナログ信号を介さずにサンプリングレートを変換できるが、ダウンサンプリング前に高レートでフィルタリングを行わなくてならないことの処理負担、理想フィルタを使用できないことなどの問題点がある。そこで伝達関数H(z)をデシメーション比Mに相当する複数のフィルタ係数のグループに分割して演算処理することが行われる。このようなフィルタ構成のことをポリフェーズ構成と呼び、このような構成のフィルタのことをポリフェーズフィルタと呼ぶ。
【0005】
ポリフェーズ構成における各フィルタの係数は、もとのフィルタ係数からM個おきに係数を取りだしたものである。そして、各フィルタにデータを入力する前にダウンサンプリングを実施することで、フィルタの動作スピードをダウンサンプリング後の低レートで動作させることができ、効率的なフィルタを構成することが可能となる。
【0006】
図4はポリフェーズ構成で実現されるデシメータの例を示す図である。図において入力側50から高いサンプリング周波数Fsで入力された信号は、出力側51から低いサンプリング周波数Fdで出力される。遅延素子52は、信号を1/Fs周期(1周波数分)だけ遅延させるシフトレジスタである。図において[↓D]で示されるダウンサンプラ53は、入力信号をデシメーション比Mにダウンサンプリングする。ポリフェーズフィルタ54のD0(z)…Dm-1(z)は伝達関数H(z)をポリフェーズ分解したものであり、それぞれM個おきにフィルタ係数が選択されたフィルタ群となる。加算器55は、フィルタをかけられた各信号を重ね合わせる。
【0007】
例えば1:3にデシメートするタップ数nのフィルタの伝達関数H(z)が次式で表されるとする。
H(z) = h0 + h1*z-1 + h2*z-2 + h3*z-3 + h4*z-4 + … + hn-2*zn-2 + hn-1*zn-1 (a)
すると、ポリフェーズフィルタ54はD0(z)〜D2(z)までの3つとなり、次式で表される(タップ数nが3の倍数とした場合)。
D0(z) =h0 + h3*z-1 + h6*z-2 + … +hn-3*z-n/3+1 (b)
D1(z) =h1 + h4*z-1 + h7*z-2 + … +hn-2*z-n/3+1 (c)
D2(z) =h2 + h5*z-1 + h8*z-2 + … +hn-1*z-n/3+1 (d)
【0008】
このようにして、各ポリフェーズフィルタ54はダウンサンプリング後のレートでフィルタ演算を行えばよいことになるから、処理負担の軽減を図ることができる。各出力は加算器55で加算されて、最終的なダウンサンプリングされた信号を出力側51から出力する。ポリフェーズフィルタ54内の演算は、FIRフィルタ(Finite Impulse Response Filter)やIIRフィルタ(Infinite Impulse Response Filter)、FFT演算(Fast Fourier Transform:高速フーリエ変換)を用いることができる。
【非特許文献1】マルチレート信号処理(昭晃堂 貴家仁志著)特に第3章
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかし、上記従来構成のデシメータでは、デシメーション比が100を越えるような大きなデシメーションを行う場合、遅延素子52がデシメーション比に比例して必要となり、回路規模の増大を招いてしまう(上の例のようにデシメーション比が3であれば、遅延素子は3つでよい)。また各ポリフェーズフィルタ54の演算規模も大きなものとなってしまう。このような場合、デシメータを何段かに分けて行うなどの方法が取られている。
【0010】
一方、測定器のようなアプリケーションにおいては、デシメーション比が大きいうえ、あらかじめデシメーション比が定まっていない場合がある。このような場合には、デシメータを多段にすることも必ずしも適切な構成とはいえず、目的とするデシメーションフィルタを実現する回路を提供することは難しかった。
【0011】
そこで本発明は、入力された信号の周波数を低い周波数に変換するために用いられるデシメーションフィルタに関し、ハードウェアの増大を招くことなく任意のデシメーション比に容易に対応可能なフィルタ構成を提供することを目的とする。
【課題を解決するための手段】
【0012】
上記課題を解決するために、本発明にかかるデシメーションフィルタの代表的な構成は、乗算器とアキュムレータとからなる複数の演算装置と、フィルタ係数を格納し、演算装置と対応する複数の係数メモリと、クロックに同期して複数の演算装置の出力を順次選択的に出力するセレクタとを備え、デシメーション比をnとした場合、複数の係数メモリからは順次n個ずつずれたフィルタ係数を読み出し、演算装置の乗算器において信号と乗算を行い、アキュムレータにおいて累算して出力することを特徴とする。これにより、ハードウェアの増大を招くことなく任意のデシメーション比に容易に対応可能なフィルタ構成を提供することができる。
【0013】
複数の係数メモリは、あらかじめ計算された全てのフィルタ係数を格納し、クロックに同期して順次巡回的に読み出すリングメモリと、リングメモリにカスケードに接続された複数のシフトレジスタとからなり、シフトレジスタは、デシメーション比をnとした場合にn個のフィルタ係数を格納しうる容量を備えることにより、リングメモリから読み出したフィルタ係数を複数のシフトレジスタに順次ずらしながら保存および読み出すことができる。これにより、係数メモリに必要な記憶容量を大幅に削減することができる。
【0014】
演算装置の数は、フィルタ係数の数をデシメーション比で除算した値と等しいか、または除算した値より大きな整数値であることが好ましい。または、係数メモリに格納するフィルタ係数の数は、演算装置の数とデシメーション比とを乗算した数と等しいかまたは少ないことが好ましい。これにより、備えられた数の演算装置を効率的に使用して演算を行うことができる。
【発明の効果】
【0015】
本発明によれば、入力された信号の周波数を低い周波数に変換するために用いられるデシメーションフィルタに関し、ハードウェアの増大を招くことなく任意のデシメーション比に容易に対応可能なフィルタ構成を提供することを目的としている。
【発明を実施するための最良の形態】
【0016】
本発明にかかるデシメーションフィルタの実施形態について説明する。図1は本実施形態にかかるデシメーションフィルタの構成を説明する図、図2はサンプリングされた信号とフィルタ係数の関係を説明する図である。なお、本発明にかかるデシメーションフィルタは、ポリフェーズフィルタではない。また、以下の実施例に示す係数、分割数、その他具体的な数値などは、発明の理解を容易とするための例示に過ぎず、特に断る場合を除き、本発明を限定するものではない。
【0017】
図1に示すデシメーションフィルタは、入力側10から高いサンプリング周波数Fsで入力された信号を、出力側11から低いサンプリング周波数Fdで出力する。またデシメーションフィルタは、乗算器21とアキュムレータ22とからなる複数の演算装置20と、係数メモリの例としてのリングメモリ30と、同じく係数メモリの例としての複数のシフトレジスタ31と、演算装置20の出力を順次選択して出力するセレクタ13とを備えている。
【0018】
リングメモリ30はあらかじめ計算された全てのフィルタ係数を保存し、クロックに同期して順次巡回的に読み出すことができる。シフトレジスタ31はリングメモリ30にカスケード(階層的)に接続され、リングメモリ30から読み出したフィルタ係数を複数のシフトレジスタ31に順次ずらしながら保存し、また読み出しを行う。
【0019】
リングメモリ30とシフトレジスタ31の動作について詳細に説明する。リングメモリ30から演算装置20にフィルタ係数を読み出すとき、同時に1つめのシフトレジスタ31にもフィルタ係数のデータが送られる。リングメモリ30においては、次に読み出すフィルタ係数のアドレスがシフトする。シフトレジスタ31においては、送られたフィルタ係数を順次シフトしながら格納していき、シフトレジスタ31の容量が充満したところで、シフトレジスタ31から演算装置20へと読み出しが行われる。このとき読み出しと同時に、さらに次のシフトレジスタ31へとフィルタ係数のデータが送られる。これを繰り返すことにより、各シフトレジスタ31には、あたかも押し出すように、順にフィルタ係数のデータが移動する。
【0020】
リングメモリ30には、デシメーション比をnとした場合に、n*k−m個のフィルタ係数が保存される。シフトレジスタ31は、n個のフィルタ係数を格納しうる容量(深さ)を備えている。ここで係数kは演算装置20の個数であって、フィルタタップ長を決定する係数でもあり、例えば24程度の値である。また係数mは0以上の整数であり、乗算器21を余らせないためにはn−1以下とすることが好ましい。
【0021】
演算装置20の数は、フィルタ係数の数をデシメーション比で除算した値と等しいか、または除算した値より大きな整数値であることが好ましい。換言すれば、リングメモリ30に格納するフィルタ係数の数は、演算装置20の数とデシメーション比とを乗算した数と等しいかまたは少ないことが好ましい。これにより、備えられた数の演算装置を効率的に使用して演算を行うことができる。
【0022】
入力側10から入力された信号は、複数の演算装置20の乗算器21の一方の入力にそれぞれ入力される。各乗算器21の他方の入力には、リングメモリ30またはシフトレジスタ31の出力が接続されており、入力信号とフィルタ係数との間でそれぞれ乗算が行われる。乗算された結果は一連のフィルタタップ長の演算が完了するまでアキュムレータ22によって累算され、セレクタ13が接続されることによって出力側11に出力される。
【0023】
図2を用いて、上記デシメーションフィルタの動作の例を説明する。例としてデシメーション比は3とし、係数kは24、係数mは0とする。するとフィルタタップ長は72となるため、リングメモリ30は72タップのフィルタ係数を保存する容量とし、シフトレジスタ31は3タップのフィルタ係数を保存する容量とする。図1において演算装置20を左から順に20−1、20−2、20−3、…20−24とし、また図2において72タップのフィルタ係数をそれぞれh0、h1、h2、…h71、各サンプル点における入力信号をd0、d1、d2…とする。
【0024】
上記条件において、演算装置20−1、20−2、20−3、20−24では、それぞれ次の(e)(f)(g)(h)で示される演算が行われる。
(20-1)d0*h0 + dl*h1 + d2*h2 + d3*h3 + …d69*h69 + d70*h70 + d71*h71 (e)
(20-2)d3*h0 + d4*h1 + d5*h2 + d6*h3 + …d72*h69 + d73*h70 + d74*h71 (f)
(20-3)d6*h0 + d7*h1 + d8*h2 + d9*h3 + …d75*h69 + d76*h70 + d77*h71 (g)
(20-24)d69*h0 + d70*h1 + d71*h2 + d72*h3 + …d138*h69 + d139*h70 + d140*h71 (h)
演算装置20−2は、演算装置20−1が演算を開始してからnクロック後(本実施形態では3クロック後)に演算を開始する。以下同様に、nクロックおきに各演算装置20が順に動作を開始する。
【0025】
演算装置20−1において式(e)で示される演算が終了すると、アキュムレータ22をリセットした後、d72のタイミングから式(i)で示されるフィルタ演算を引き続き開始する。同様に各演算装置20−2〜20−24においても、このように後続のデータを処理することで、連続して周波数のデシメーションが可能となる。
(20-1)d72*h0 + d73*hl + d74*h2 + d75*h3 + …d141*h69 + d142*h70 + d143*h71 (i)
【0026】
セレクタ13は演算装置20−1が72タップの演算を終了したタイミングで演算装置20−1に接続し、それからサンプリング周波数Fsの1/3のレートで各演算装置20を順次切り替えて接続し、累算されたデータを出力する。すなわち式(e)の演算が終了した時点で演算装置20−1の出力を選択し、その3クロック後には演算装置20−2の出力を選択し、順次演算装置20−24まで選択した後、再び演算装置20−1の出力を選択する。なお、演算装置20−24の演算(h)が終了してから3クロック後には、演算装置20−1で次の演算が終了する。
【0027】
上記構成のデシメーションフィルタは、係数メモリ(リングメモリ30、シフトレジスタ31)の深さ(容量)を調節するだけで、任意のデシメーション比のフィルタを容易に構成することができる。従来例であれば、入力データをシフトさせる遅延素子52やポリフェーズフィルタ54の数が変わることになり、大幅な回路変更を伴うため、任意のデシメーションフィルタを実現することは困難であった。しかし本発明によれば、ハードウェアの増大を招くことなく任意のデシメーション比に容易に対応可能なフィルタ構成を提供することができる。
【0028】
特に、係数メモリを1つのリングメモリ30と複数のシフトレジスタ31によって構成し、フィルタ係数データを次段の係数メモリに順次シフトしながら格納することにより、各演算装置に対応してそれぞれの係数メモリに全てのフィルタ係数データを持たせる必要がなくなり、係数メモリに必要な記憶容量を大幅に削減することができる。
【0029】
また上記構成のデシメーションフィルタは、例えばFPGAで構成することができる。昨今のFPGAにはこのような乗算器21やメモリ(リングメモリ30、シフトレジスタ31)100個以上内蔵されており、上記構成を実現するために最適である。そしてFPGAを用いて上記フィルタを構成することにより、演算装置20の数や、メモリの容量(深さ)を動的に適宜設定することができる。
【0030】
演算装置20の数はフィルタタップ長と対応しており、演算装置20の数を増減させることで要求されるフィルタ特性を調整することができる。すなわち遮断周波数領域において急峻な過渡特性を必要とするような場合は、演算装置20の数を増やすことでよい。逆に許容される程度までフィルタ条件をゆるくできる場合は、演算装置20の数を減らすことができ、廉価で実現可能なデシメーションフィルタを構成することができる。
【0031】
また各演算装置20は常時無駄な期間なく動作しており、一般にマルチコアで構成されるコンピュータなどでソフトウェア処理するよりも、高速で演算処理することが可能である。特にICテスタやメモリテスタなどの測定器において、被測定対象によりそれぞれ異なる比率で入力信号をデシメーションする必要がある場合、このような構成でフィルタを構成することにより、実時間で動作する高速かつ高精度なフィルタが実現できる。
【0032】
[他の実施形態]
上記実施形態においては、係数メモリを1つのリングメモリ30と複数のシフトレジスタ31によって構成するよう説明した。しかし、全ての係数メモリをリングメモリとすることによっても、本発明を実現することができる。
【0033】
図3は、デシメーションフィルタの他の構成例を説明する図である。図3ではシフトレジスタ31を設けておらず、全ての係数メモリはリングメモリ30である。各リングメモリ30にはあらかじめ計算された全てのフィルタ係数を保存しているが、デシメーション比をnとした場合、各リングメモリ30からは順次n個ずつずれたフィルタ係数を読み出すよう構成している。そして、読み出したフィルタ係数と信号とを各演算装置20の乗算器21において乗算を行い、アキュムレータ22において累算して出力することにより、上記実施形態と同様の演算処理を行うことができる。
【0034】
本発明にかかるデシメーションフィルタは、デシメーション比を1とすることによって一般的なFIRフィルタとなる。このため、実時間で動作する高速かつ高精度なFIRフィルタとしても利用することができる。
【0035】
以上、添付図面を参照しながら本発明の好適な実施例について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【産業上の利用可能性】
【0036】
本発明は、信号の周波数を所定比の低い周波数に変換するデシメーションフィルタとして利用することができる。
【図面の簡単な説明】
【0037】
【図1】本実施形態にかかるデシメーションフィルタの構成を説明する図である。
【図2】サンプリングされた信号とフィルタ係数の関係を説明する図である。
【図3】デシメーションフィルタの他の構成例を説明する図である。
【図4】ポリフェーズ構成で実現されるデシメータの例を示す図である。
【符号の説明】
【0038】
10 …入力側
11 …出力側
13 …セレクタ
20 …演算装置
21 …乗算器
22 …アキュムレータ
30 …リングメモリ
31 …シフトレジスタ
50 …入力側
51 …出力側
52 …遅延素子
53 …ダウンサンプラ
54 …ポリフェーズフィルタ
55 …加算器

【特許請求の範囲】
【請求項1】
乗算器とアキュムレータとからなる複数の演算装置と、
フィルタ係数を格納し、前記演算装置と対応する複数の係数メモリと、
クロックに同期して前記複数の演算装置の出力を順次選択的に出力するセレクタとを備え、
デシメーション比をnとした場合、前記複数の係数メモリからは順次n個ずつずれたフィルタ係数を読み出し、前記演算装置の乗算器において信号と乗算を行い、前記アキュムレータにおいて累算して出力することを特徴とするデシメーションフィルタ。
【請求項2】
前記複数の係数メモリは、
あらかじめ計算された全てのフィルタ係数を格納し、クロックに同期して順次巡回的に読み出すリングメモリと、
前記リングメモリにカスケードに接続された複数のシフトレジスタとからなり、
前記シフトレジスタは、デシメーション比をnとした場合にn個のフィルタ係数を格納しうる容量を備え、前記リングメモリから読み出したフィルタ係数を前記複数のシフトレジスタに順次ずらしながら保存および読み出すことを特徴とする請求項1記載のデシメーションフィルタ。
【請求項3】
前記演算装置の数は、フィルタ係数の数をデシメーション比で除算した値と等しいか、または前記除算した値より大きな整数値であることを特徴とする請求項1記載のデシメーションフィルタ。
【請求項4】
前記係数メモリに格納するフィルタ係数の数は、前記演算装置の数とデシメーション比とを乗算した数と等しいかまたは少ないことを特徴とする請求項1記載のデシメーションフィルタ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2008−124593(P2008−124593A)
【公開日】平成20年5月29日(2008.5.29)
【国際特許分類】
【出願番号】特願2006−303461(P2006−303461)
【出願日】平成18年11月9日(2006.11.9)
【出願人】(000006507)横河電機株式会社 (4,443)