説明

アップサンプリングフィルタ

【課題】データに対してN倍のアップサンプリングを行うアップサンプリングフィルタで、使用する乗算器の数を削減する。
【解決手段】2つ以上のデータ生成手段Cがデータの時系列値について予め設定された態様で異なる時刻の時系列値の和のデータ或いは差のデータを2種類以上生成し、データ選択手段1、Bがそれぞれ生成される1種類のデータを選択し、2つ以上の係数記憶手段Dがフィルタ係数に基づいて予め設定された2種類以上の係数を記憶し、係数選択手段2がそれぞれ記憶された1種類の係数を選択し、乗算手段Eが選択されたデータと係数を乗算し、総和手段3、4が乗算結果を総和し、出力候補値生成手段5〜8が予め設定された態様で総和結果に基づいて2種類以上の出力候補値を生成し、出力値選択手段9、10が1種類の出力候補値を出力値として選択する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アップサンプリングフィルタに関し、特に、使用する乗算器の数を削減したアップサンプリングフィルタに関する。
【背景技術】
【0002】
従来技術に係るN倍のアップサンプリングフィルタ(タップ数:L)の実装方法について説明する。ここでは、例として、N=4、L=17、すなわち4倍のオーバサンプリングで、フィルタタップ数が17である場合を考える。入力データレートをFsとすると、出力データレートは4Fsとなる。
図9には、従来技術に係るアップサンプリングフィルタの回路の一構成例を示してある。
本例の従来技術に係るアップサンプリングフィルタの回路において行われる動作の一例を示す。
【0003】
直列に接続された17個のフリップフロップF(0)〜F(16)のうちの1番目のフリップフロップF(0)に、アップサンプル前のデータxを入力する(図9の処理1)。オーバサンプリングを行うためにデータ間に0データを挿入してある。ここでは、4倍オーバサンプリングであるため、データ間に3つの0を挿入したデータを用意する。
これら17個のフリップフロップF(0)〜F(16)により、タップ数(本例では、17個)分のデータを4Fsのレートで保持する(図9の処理2)。なお、本処理は全て、N×Fsのレート(本例では、4Fsのレート)で動作する。
【0004】
各フリップフロップF(0)〜F(16)からの出力に対応したフィルタ係数を記憶する17個の記憶部G(0)〜G(16)と、各フリップフロップF(0)〜F(16)からの出力に対応した17個の乗算器H(0)〜H(16)により、各フリップフロップF(0)〜F(16)からの出力データに対して用意したフィルタ係数を乗算する(図9の処理3)。
加算器101により、17個の乗算器H(0)〜H(16)からの出力の和を求め(図9の処理4)、この和のデータを出力する(図9の処理5)。
そして、1サンプルずつ進ませて、(図9の処理1)〜(図9の処理5)の処理を繰り返して行う。
【0005】
図9に示されるアップサンプリングフィルタの回路構成では、1つの出力データの生成に必要な乗算回数はL(本例では、17)回であり、この回路ではL個の乗算器を同時に動作させる必要がある。しかしながら、乗算を行うデータは0が内挿されており、その部分の乗算は省くことが可能である。
【0006】
図10には、この点を考慮したアップサンプリングフィルタの実装方法として、従来技術に係るアップサンプリングフィルタの回路の他の一構成例を示してある。図9の場合と同様に、4倍のオーバサンプリングで、フィルタタップ数が17であるとする。
本例の従来技術に係るアップサンプリングフィルタの回路において行われる動作の一例を示す。
【0007】
直列に接続された5個のフリップフロップI(0)〜I(4)のうちの1番目のフリップフロップI(0)に、アップサンプル前のデータxを入力する(図10の処理1)。
5個のフリップフロップI(0)〜I(4)により、{タップ数/4}(本例では、繰り上げて、5)分のデータをFsのレートで保持する(図10の処理2)。
各フリップフロップI(0)〜I(4)からの出力に対応したフィルタ係数が5個の記憶部J(0)〜J(4)に記憶されており、4Fsのレートで動作するセレクタ111によりそれぞれのデータに乗算するフィルタ係数を選択する(図10の処理3)。なお、以降の処理は全て、N×Fsのレート(本例では、4Fsのレート)で動作する。
【0008】
各フリップフロップI(0)〜I(4)からの出力に対応した5個の乗算器K(0)〜K(4)により、各フリップフロップI(0)〜I(4)からの出力データに対して、セレクタ111により選択されたフィルタ係数を乗算する(図10の処理4)。
加算器112により、5個の乗算器K(0)〜K(4)からの出力の和を求め(図10の処理5)、この和のデータを出力する(図10の処理6)。
そして、選択するフィルタ係数を変更しながら、(図10の処理3)〜(図10の処理6)の処理を繰り返して行い、0〜3サンプルのデータを出力する。その後、アップサンプル前のデータを1つ進ませて、(図10の処理1)〜(図10の処理6)の処理を繰り返して行う。
【0009】
【特許文献1】特開2001−077669号公報
【特許文献2】特開2000−040942号公報
【特許文献3】特開平04−266281号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
上記した図10に示される方法では、回路上で必要な乗算回数をL/N(本例では、繰り上げて、5)に減らすことができる。
しかしながら、それでもフィルタは多くの乗算を必要とする。乗算は回路上では専用の乗算器を用いることが多いが、用意されている乗算器の数が設計上の制約となるため、なるべく使用する乗算器の数を減らすことが望ましい。
【0011】
アップサンプリングフィルタは通信分野などで頻繁に用いられる。特に、無線通信機器などにおいては、装置を小型にするために、使用リソースを小さく収めることが求められる。リソースでは、特に、乗算器の数がデバイス上の制約になることが多い。
【0012】
本発明は、このような従来の事情に鑑み為されたもので、N倍のアップサンプリングに用いる内挿フィルタについて、使用する乗算器の数を、例えば従来の半分(或いは、ほぼ半分)に、削減した回路を実現することができるアップサンプリングフィルタを提供することを目的とする。
【課題を解決するための手段】
【0013】
上記目的を達成するため、本発明では、データに対してN倍のアップサンプリングを行うアップサンプリングフィルタにおいて、次のような構成とした。
すなわち、2つ以上のデータ生成手段が、それぞれ、前記データの時系列値について、予め設定された態様で、異なる時刻の時系列値の和のデータ或いは差のデータを2種類以上生成する。データ選択手段が、前記データ生成手段のそれぞれについて、生成されるデータの中から1種類のデータを選択する。
2つ以上の係数記憶手段が、それぞれ、前記2つ以上のデータ生成手段に対応して設けられ、フィルタ係数に基づいて予め設定された2種類以上の係数を記憶する。係数選択手段が、前記係数記憶手段のそれぞれについて、記憶された係数の中から1種類の係数を選択する。
乗算手段が、前記データ生成手段及び前記係数記憶手段の組み合わせ毎に、前記データ選択手段により選択されたデータと前記係数選択手段により選択された係数とを乗算する。総和手段が、前記乗算手段により得られた乗算結果を総和する。
出力候補値生成手段が、予め設定された態様で、前記総和手段により得られた総和結果に基づいて2種類以上の出力候補値を生成する。出力値選択手段が、前記出力候補値生成手段により生成された出力候補値の中から1種類の出力候補値を出力値として選択する。
【0014】
そして、前記データ選択手段と前記係数選択手段と前記出力値選択手段は、アップサンプル後のサンプル毎のフィルタ係数がフィルタタップ番号に関して昇順と降順とで等しくなる異なる2つのサンプルについて、対応するデータの和と対応するフィルタ係数の和とを乗算して加算し、対応するデータの差と対応するフィルタ係数の差とを乗算して加算し、これら2つの加算結果を加算したものに基づく値を一方のサンプルの出力値とし、これら2つの加算結果を減算したものに基づく値を他方のサンプルの出力値とし、また、アップサンプル後のフィルタ係数がフィルタタップ番号に関して中心に対して対称となるサンプルについて、フィルタ係数が同一となるデータの和とそのフィルタ係数とを乗算するとともに前記中心に対応したデータがある場合には当該データとそのフィルタ係数とを乗算してこれらの乗算結果を総和したものを当該サンプルの出力値とするように、選択を実行する。
【0015】
ここで、後述する実施例で参照される図5〜図8との対応を分かり易くするために、かっこ“()”内に具体例を示したものを記載しておく。
すなわち、前記データ選択手段と前記係数選択手段と前記出力値選択手段は、アップサンプル後のサンプル毎のフィルタ係数がフィルタタップ番号に関して昇順と降順とで等しくなる異なる2つのサンプル(図7及び図8に関するサンプル1、3)について、対応するデータの和(x+xとx+x)と対応するフィルタ係数の和(C+CとC+C)とを乗算して加算(総和)し、対応するデータの差(x−xとx−x)と対応するフィルタ係数の差(C−CとC−C)とを乗算して加算(総和)し、これら2つの加算結果(総和結果)を加算したものに基づく値(y)を一方のサンプル(サンプル1)の出力値とし、これら2つの加算結果を減算したものに基づく値(y)を他方のサンプル(サンプル3)の出力値とし、また、アップサンプル後のフィルタ係数がフィルタタップ番号に関して中心に対して対称となるサンプル(図5及び図6に関するサンプル0、2)について、フィルタ係数が同一となるデータの和(図5の場合にはx+xとx+x、図6の場合にはx+xとx+x)とそのフィルタ係数(図5の場合にはCとC、図6の場合にはCとC)とを乗算するとともに前記中心に対応したデータがある場合(図5の場合)には当該データ(x)とそのフィルタ係数(C)とを乗算してこれらの乗算結果を総和したものを当該サンプルの出力値(図5の場合にはy、図6の場合にはy)とするように、選択を実行する。
【0016】
従って、N倍のアップサンプリングに用いるフィルタについて、使用する乗算器の数を、例えば従来の半分(或いは、ほぼ半分)に、削減した回路を実現することができる。
なお、好ましい構成例としては、更に、フィルタ係数をデータのN倍のレートで変更しながら動作させることにより、乗算器の数を1/N(或いは、ほぼ1/N)に削減した回路の構成を用いる。
【0017】
ここで、アップサンプリングの倍数Nとしては、種々な値が用いられてもよい。
また、係数記憶手段としては、例えば、メモリを用いて構成することができる。
また、係数記憶手段に記憶される係数としては、例えば、フィルタ係数そのままや、2つのフィルタ係数の和や差を用いることができる。
【発明の効果】
【0018】
以上説明したように、本発明に係るアップサンプリングフィルタによると、例えば、N倍のアップサンプリングに用いるフィルタについて、使用する乗算器の数を削減した回路を実現することができる。
【発明を実施するための最良の形態】
【0019】
本発明に係る実施例を図面を参照して説明する。
図1には、本発明の一実施例に係るFIR(Finite Impulse Response)フィルタからなるアップサンプリングフィルタの回路の構成例を示してある。本例では、N倍のアップサンプリングフィルタであり、タップ数がLである場合について説明する。入力データレートをFsとすると、出力データレートはN×Fsとなる。
【0020】
本例のアップサンプリングフィルタは、M個のフリップフロップA(0)〜A(M−1)と、{(M/2)+1}個の保持部B(1)〜B(M/2+1)と、{3×(M/2)}個の加算器C(1−1)、C(1−2)、C(1−3)〜C(M/2−1)、C(M/2−2)、C(M/2−3)と、セレクタ1と、{(M/2)+1}個の記憶部D(1)〜D(M/2+1)と、{(M/2)+1}個の乗算器E(1)〜E(M/2+1)と、セレクタ2と、2個の加算器3、4と、2個のフリップフロップ5、6と、2個の加算器7、8と、セレクタ9と、出力部10を備えている。
ここで、M=L/Nである。
【0021】
本例のアップサンプリングフィルタにおいて行われる動作の概略的な一例を示す。
直列に接続されたM個のフリップフロップA(0)〜A(M−1)のうちの1番目のフリップフロップA(0)に、アップサンプル前のデータxを入力する(図1の処理1)。
M個のフリップフロップA(0)〜A(M−1)により、フィルタ処理に必要な分(本例では、M=L/N)のデータをFsのレートで保持する(図1の処理2)。
【0022】
保持部B(1)〜B(M/2+1)及び加算器C(1−1)〜C(M/2−3)により、適当な2データ(後述するフィルタ係数との乗算に対応)について加減算し、若しくは1データをそのまま通過させる(図1の処理3)。なお、以降の処理は全て、N×Fsのレートで動作する。
セレクタ1により、上記した(図1の処理3)の処理が施されたデータの中からそれぞれ1つを選択する(図1の処理4)。
各記憶部D(1)〜D(M/2+1)はそれぞれフィルタ係数に関する係数を記憶しており、セレクタ2により、用意しておいた係数の中から1つ(或いは、0)を選択する(図1の処理5)。
【0023】
セレクタ1により選択されたデータとセレクタ2により選択された係数を、対応する乗算器E(1)〜E(M/2+1)により、乗算する(図1の処理6)。
加算器3、4により、この乗算結果の出力の和を求める(図1の処理7)。
直列に接続された2個のフリップフロップ5、6により、この和の結果を保持する(図1の処理8)。
そして、(図1の処理3)〜(図1の処理7)の処理を、選択するデータや選択する係数を変えて繰り返して行う。
【0024】
フリップフロップ5、6により保持されたデータを、加算器7、8により加減算し、若しくは1データをそのまま通過させ、出力部10に入力する(図1の処理9)。
セレクタ9により、上記した(図1の処理9)の処理が施されたデータの中から1つを選択する(図1の処理10)。
この選択された出力結果がN倍にオーバサンプリングされたデータとなり、出力部10から出力される(図1の処理11)。
そして、セレクタ9により選択するデータを変更しながら繰り返して、N個のデータ(0〜N−1サンプル)を出力する。その後、アップサンプル前のデータを1つ進ませて、(図1の処理1)〜(図1の処理11)の処理を繰り返して行う。
【0025】
以下で、具体例として、4倍のオーバサンプリングで、タップ数が17である場合に、本例のアップサンプリングフィルタにおいて行われる動作の例を示す。
ここで、M=L/N(本例では、繰り上げて、M=5とする)である。また、本例では、(M/2)は繰り下げて2を用いる。
また、フィルタ係数をC(0≦n<17)とする。
【0026】
図2には、タップ数が17である場合におけるフィルタ係数の一例を示してあり、また、4倍アップサンプル時における該当サンプルを示してある。
図3には、タップ数が17である場合におけるフィルタ係数のグラフの一例を示してある。
本方式で用いるフィルタ係数は、中心(本例では、C)について対称である。4倍オーバサンプリングの場合には、例えば従来技術に係る図10に示されるように、フィルタ係数をデータの4倍のレートで変更しながら動作させることにより乗算器の数を削減することができる。
【0027】
本方式においても、まず、その処理に適するようにフィルタ係数をサンプル毎(本例では、0〜3)に分類する。
図4には、分類後のフィルタ係数として、サンプル毎のフィルタ係数の一例を示してある。
ここで、0サンプルと2サンプルに注目すると、これらは中心について対称となる。従って、同じ値の係数を乗算する2つの入力データを乗算前に加算することにより、半分の乗算回数にすることができる。
【0028】
また、1サンプルと3サンプルの係数では、タップ番号の昇順と降順で同じデータ列となる。
4倍オーバサンプリングを行うフィルタであるため、同じ入力データ(レート:Fs)からサンプル0〜3(レート:4Fs)を出力する。入力データをxとするとサンプル1、3におけるフィルタ出力y、yは図4から、次の(式1)〜(式6)で表わされる。
【0029】
=C+C+C+C ・・(式1)
=C+C+C+C ・・(式2)
ここで、
A=(C+C)(x+x)+(C+C)(x+x
・・(式3)
B=(C−C)(x−x)+(C−C)(x−x
・・(式4)
とすると、
=(A+B)/2 ・・(式5)
=(A−B)/2 ・・(式6)
となる。
【0030】
A、Bの算出に用いる乗算数はそれぞれ2となる。従って、0サンプルと2サンプルの場合と同様に、必要な乗算器の数を半分とすることが可能である。
このように、サンプルによって処理を変更することで、乗算器の数を半分とした動作が可能となる。
以下で、各サンプルにおける動作の例を示す。
【0031】
図5には、サンプル0について、本例のアップサンプリングフィルタにより行われる動作の一例を示してある。
サンプル0では、タップ係数は中心において対称であるため、先にデータを加算してから乗算を行う。具体的には、x+x、x+xを求めて、xは中心であるためそのままとする。それぞれの値に適当なフィルタ係数(C、C、C)を乗算して総和を求めることで出力が得られる。
【0032】
直列に接続された5個のフリップフロップA(0)〜A(4)のうちの1番目のフリップフロップA(0)に、アップサンプル前のデータxを入力する(図5の処理1)。
5個のフリップフロップA(0)〜A(4)により、フィルタ処理に必要な分(本例では、5個)のデータをFsのレートで保持する(図5の処理2)。
加算器C(1−1)、C(1−2)、C(1−3)及び加算器C(2−1)、C(2−2)、C(2−3)や保持部B(1)〜B(3)では、適当な2データ(本例では、xとx、xとx)について加減算を行い、1データ(本例では、x)をそのまま通過させる(図5の処理3)。なお、以降の処理は全て、N×Fsのレート(本例では、4Fs)で動作する。
【0033】
具体的には、加算器C(1−1)は(x+x)を求めて保持部B(1)へ出力し、加算器C(1−2)は(x−x)を求めて保持部B(1)へ出力し、加算器C(1−3)は(x+x)を求めて保持部B(1)へ出力する。また、加算器C(2−1)は(x+x)を求めて保持部B(2)へ出力し、加算器C(2−2)は(x−x)を求めて保持部B(2)へ出力し、加算器C(2−3)は(x+x)を求めて保持部B(2)へ出力する。また、xが保持部B(3)に入力される。
【0034】
セレクタ1により、(図5の処理3)の処理を施したデータである各保持部B(1)〜B(3)のデータの中からそれぞれ1つを選択する(図5の処理4)。本例では、保持部B(1)からx+xを選択し、保持部B(2)からx+xを選択し、保持部B(3)からxを選択する。
各記憶部D(1)〜D(3)にはそれぞれ必要となる1つ以上のフィルタ係数に関する係数が記憶されており、セレクタ2により、用意しておいた係数の中からそれぞれ1つを選択する(図5の処理5)。本例では、記憶部D(1)からフィルタ係数Cを選択し、記憶部D(2)からフィルタ係数Cを選択し、記憶部D(3)からフィルタ係数Cを選択する。
【0035】
乗算器E(1)〜E(3)により、選択されたデータと選択された係数を乗算する(図5の処理6)。本例では、乗算器E(1)によりC(x+x)を求め、乗算器E(2)によりC(x+x)を求め、乗算器E(3)によりCを求める。
加算器3、4により、全ての乗算器E(1)〜E(3)からの出力の和を求める(図5の処理7)。これにより、C(x+x)+C(x+x)+Cが求められる。
【0036】
直列に接続された2個のフリップフロップ5、6により、加算器4による加算結果のデータを保持する(図5の処理8)。
加算器4による加算結果のデータをそのまま通過させて出力部10に入力し、また、この加算結果のデータとその時間差を有するデータとを加算器7により加算した結果を出力部10に入力し、また、この加算結果のデータからその時間差を有するデータを加算器8により減算(例えば、位相を反転して加算)した結果を出力部10に入力する(図5の処理9)。
【0037】
セレクタ9により、(図5の処理9)の処理を施した出力部10のデータの中から1つを選択する。本例では、加算器4による加算結果のデータをそのまま通過させたデータを選択する(図5の処理10)。これにより、出力部10から、0サンプルのフィルタ結果y=C(x+x)+C(x+x)+Cを出力する(図5の処理11)。
【0038】
次に、サンプル2では、サンプル0と同様にタップ係数は中心において対称であり、偶数タップとなるために加算を行わないデータが無いことを除いては、サンプル0の場合と同じ処理を行う。
図6には、サンプル2について、本例のアップサンプリングフィルタにより行われる動作の一例を示してある。
【0039】
直列に接続された5個のフリップフロップA(0)〜A(4)のうちの1番目のフリップフロップA(0)に、アップサンプル前のデータxを入力する(図6の処理1)。
5個のフリップフロップA(0)〜A(4)により、フィルタ処理に必要な分(本例では、5個)のデータをFsのレートで保持する(図6の処理2)。
加算器C(1−1)、C(1−2)、C(1−3)及び加算器C(2−1)、C(2−2)、C(2−3)や保持部B(1)〜B(3)では、適当な2データ(本例では、xとx、xとx)について加減算を行う(図6の処理3)。なお、以降の処理は全て、N×Fsのレート(本例では、4Fs)で動作する。
【0040】
具体的には、加算器C(1−1)は(x+x)を求めて保持部B(1)へ出力し、加算器C(1−2)は(x−x)を求めて保持部B(1)へ出力し、加算器C(1−3)は(x+x)を求めて保持部B(1)へ出力する。また、加算器C(2−1)は(x+x)を求めて保持部B(2)へ出力し、加算器C(2−2)は(x−x)を求めて保持部B(2)へ出力し、加算器C(2−3)は(x+x)を求めて保持部B(2)へ出力する。また、xが保持部B(3)に入力される。
【0041】
セレクタ1により、(図6の処理3)の処理を施したデータである各保持部B(1)〜B(3)のデータの中からそれぞれ1つ(或いは、0)を選択する(図6の処理4)。本例では、保持部B(1)からx+xを選択し、保持部B(2)からx+xを選択し、保持部B(3)からは選択しない。
各記憶部D(1)〜D(3)にはそれぞれ必要となる1つ以上のフィルタ係数に関する係数が記憶されており、セレクタ2により、用意しておいた係数の中からそれぞれ1つを選択する(図6の処理5)。本例では、記憶部D(1)からフィルタ係数Cを選択し、記憶部D(2)からフィルタ係数Cを選択し、記憶部D(3)からはフィルタ係数を選択しない(本例では、0を出力する)。
【0042】
乗算器E(1)〜E(3)により、選択されたデータと選択された係数を乗算する(図6の処理6)。本例では、乗算器E(1)によりC(x+x)を求め、乗算器E(2)によりC(x+x)を求め、乗算器E(3)では0が求められる。
加算器3、4により、全ての乗算器E(1)〜E(3)からの出力の和を求める(図6の処理7)。これにより、C(x+x)+C(x+x)が求められる。
【0043】
直列に接続された2個のフリップフロップ5、6により、加算器4による加算結果のデータを保持する(図6の処理8)。
加算器4による加算結果のデータをそのまま通過させて出力部10に入力し、また、この加算結果のデータとその時間差を有するデータとを加算器7により加算した結果を出力部10に入力し、また、この加算結果のデータからその時間差を有するデータを加算器8により減算(例えば、位相を反転して加算)した結果を出力部10に入力する(図6の処理9)。
【0044】
セレクタ9により、(図6の処理9)の処理を施した出力部10のデータの中から1つを選択する。本例では、加算器4による加算結果のデータをそのまま通過させたデータを選択する(図6の処理10)。これにより、出力部10から、2サンプルのフィルタ結果y=C(x+x)+C(x+x)を出力する(図6の処理11)。
【0045】
次に、サンプル1、3について説明する。サンプル1では、サンプル3との関係を用いて算出する。
図7には、サンプル1、3について、本例のアップサンプリングフィルタにより行われる動作の一例(前半部)を示してある。
直列に接続された5個のフリップフロップA(0)〜A(4)のうちの1番目のフリップフロップA(0)に、アップサンプル前のデータxを入力する(図7の処理1)。
5個のフリップフロップA(0)〜A(4)により、フィルタ処理に必要な分(本例では、5個)のデータをFsのレートで保持する(図7の処理2)。
加算器C(1−1)、C(1−2)、C(1−3)及び加算器C(2−1)、C(2−2)、C(2−3)や保持部B(1)〜B(3)では、適当な2データ(本例では、xとx、xとx)について加減算を行う(図7の処理3)。なお、以降の処理は全て、N×Fsのレート(本例では、4Fs)で動作する。
【0046】
具体的には、加算器C(1−1)は(x+x)を求めて保持部B(1)へ出力し、加算器C(1−2)は(x−x)を求めて保持部B(1)へ出力し、加算器C(1−3)は(x+x)を求めて保持部B(1)へ出力する。また、加算器C(2−1)は(x+x)を求めて保持部B(2)へ出力し、加算器C(2−2)は(x−x)を求めて保持部B(2)へ出力し、加算器C(2−3)は(x+x)を求めて保持部B(2)へ出力する。また、xが保持部B(3)に入力される。
【0047】
セレクタ1により、(図7の処理3)の処理を施したデータである各保持部B(1)〜B(3)のデータの中からそれぞれ1つ(或いは、0)を選択する(図7の処理4)。本例では、保持部B(1)からx+xを選択し、保持部B(2)からx+xを選択する。
各記憶部D(1)〜D(3)にはそれぞれ必要となる1つ以上のフィルタ係数に関する係数が記憶されており、セレクタ2により、用意しておいた係数の中からそれぞれ1つを選択する(図7の処理5)。本例では、記憶部D(1)からフィルタ係数C+Cを選択し、記憶部D(2)からフィルタ係数C+Cを選択し、記憶部D(3)からはフィルタ係数を選択しない(本例では、0を出力する)。
【0048】
乗算器E(1)〜E(3)により、選択されたデータと選択された係数を乗算する(図7の処理6)。本例では、乗算器E(1)により(C+C)(x+x)を求め、乗算器E(2)により(C+C)(x+x)を求め、乗算器E(3)では0が求められる。
加算器3、4により、全ての乗算器E(1)〜E(3)からの出力の和を求める(図7の処理7)。これにより、(C+C)(x+x)+(C+C)(x+x)が求められる。
直列に接続された2個のフリップフロップ5、6により、加算器4による加算結果のデータを保持する(図7の処理8)。
【0049】
図8には、サンプル1、3について、本例のアップサンプリングフィルタにより行われる動作の一例(後半部)を示してある。上記した図7に示される処理の後に引き続いて行われる動作について説明する。
直列に接続された5個のフリップフロップA(0)〜A(4)のうちの1番目のフリップフロップA(0)に、アップサンプル前のデータxを入力する(図8の処理1)。
5個のフリップフロップA(0)〜A(4)により、フィルタ処理に必要な分(本例では、5個)のデータをFsのレートで保持する(図8の処理2)。
加算器C(1−1)、C(1−2)、C(1−3)及び加算器C(2−1)、C(2−2)、C(2−3)や保持部B(1)〜B(3)では、適当な2データ(本例では、xとx、xとx)について加減算を行う(図8の処理3)。なお、以降の処理は全て、N×Fsのレート(本例では、4Fs)で動作する。
【0050】
具体的には、加算器C(1−1)は(x+x)を求めて保持部B(1)へ出力し、加算器C(1−2)は(x−x)を求めて保持部B(1)へ出力し、加算器C(1−3)は(x+x)を求めて保持部B(1)へ出力する。また、加算器C(2−1)は(x+x)を求めて保持部B(2)へ出力し、加算器C(2−2)は(x−x)を求めて保持部B(2)へ出力し、加算器C(2−3)は(x+x)を求めて保持部B(2)へ出力する。また、xが保持部B(3)に入力される。
【0051】
セレクタ1により、(図8の処理3)の処理を施したデータである各保持部B(1)〜B(3)のデータの中からそれぞれ1つ(或いは、0)を選択する(図8の処理4)。本例では、保持部B(1)からx−xを選択し、保持部B(2)からx−xを選択する。
各記憶部D(1)〜D(3)にはそれぞれ必要となる1つ以上のフィルタ係数に関する係数が記憶されており、セレクタ2により、用意しておいた係数の中からそれぞれ1つを選択する(図8の処理5)。本例では、記憶部D(1)からフィルタ係数C−Cを選択し、記憶部D(2)からフィルタ係数C−Cを選択し、記憶部D(3)からはフィルタ係数を選択しない(本例では、0を出力する)。
【0052】
乗算器E(1)〜E(3)により、選択されたデータと選択された係数を乗算する(図8の処理6)。本例では、乗算器E(1)により(C−C)(x−x)を求め、乗算器E(2)により(C−C)(x−x)を求め、乗算器E(3)では0が求められる。
加算器3、4により、全ての乗算器E(1)〜E(3)からの出力の和を求める(図8の処理7)。これにより、(C−C)(x−x)+(C−C)(x−x)が求められる。
直列に接続された2個のフリップフロップ5、6により、加算器4による加算結果のデータを保持する(図8の処理8)。
【0053】
加算器4による加算結果のデータ{(C−C)(x−x)+(C−C)(x−x)}をそのまま通過させて出力部10に入力し、また、この加算結果のデータ{(C−C)(x−x)+(C−C)(x−x)}とその時間差を有するデータ{(C+C)(x+x)+(C+C)(x+x)}とを加算器7により加算した結果を出力部10に入力し、また、この加算結果のデータ{(C−C)(x−x)+(C−C)(x−x)}をその時間差を有するデータ{(C+C)(x+x)+(C+C)(x+x)}から加算器8により減算(例えば、位相を反転して加算)した結果を出力部10に入力する(図8の処理9)。
【0054】
セレクタ9により、(図7の処理9)の処理を施した出力部10のデータの中から1つを選択する。本例のサンプル1の場合には、加算器7による加算結果である{(C+C)(x+x)+(C+C)(x+x)}+{(C−C)(x−x)+(C−C)(x−x)}のデータを選択する(図8の処理10)。これにより、出力部10から、1サンプルのフィルタ結果y=C+C+C+Cを出力する(図8の処理11)。なお、y=(加算結果)/2である。
【0055】
また、セレクタ9による選択動作など(上記した図8の処理10、11)を変更することで、3サンプルの場合における出力を得ることができる。
具体的には、セレクタ9により、(図8の処理9)の処理を施した出力部10のデータの中から1つを選択する。本例のサンプル3の場合には、加算器8による加算結果(減算結果)である{(C+C)(x+x)+(C+C)(x+x)}−{(C−C)(x−x)+(C−C)(x−x)}のデータを選択する(図8の処理12)。これにより、出力部10から、3サンプルのフィルタ結果y=C+C+C+Cを出力する(図8の処理13)。なお、y=(減算結果)/2である。
【0056】
以上のように、本例のアップサンプリングフィルタでは、N倍アップサンプリングを行うFIRフィルタにおいて、乗算器の数を1/N(或いは、ほぼ1/N)に減らした回路を用いるとともに、フィルタ係数の対称性を用いて更に半分(或いは、ほぼ半分)に乗算器の数を減らす構成とした。
また、本例のアップサンプリングフィルタでは、アップサンプル後のサンプル毎にフィルタ係数を分類し、昇順と降順でフィルタ係数が等しくなる係数列の和及び差を求め、また、データについても該当部分の和及び差を求め、これらを乗算して加減算(加算や減算)することにより、フィルタ出力(ここで、第1のフィルタ出力と言う)を行う。
【0057】
また、本例のアップサンプリングフィルタでは、フィルタ係数が中心について対称となるサンプルについて、データの該当部分の和を求め、これらを乗算して加算することにより、フィルタ出力(ここで、第2のフィルタ出力と言う)を行う。
また、本例のアップサンプリングフィルタでは、前記した第1のフィルタ出力を行うモードと前記した第2のフィルタ出力を行うモードを切り替えることが可能な選択部を有し、この切り替えを動作させることにより、全入力データに対するフィルタ出力を行う。
【0058】
このように、本例では、アップサンプリングフィルタの実装回路において、使用する乗算器の数を少なくすることができ、例えば、従来と比べて、回路を小規模にし、装置をより小型にすることが可能である。
【0059】
なお、図5〜図8を例とすると、本例のアップサンプリングフィルタでは、3個の加算器C(1−1)、C(1−2)、C(1−3)の機能により1つのデータ生成手段が構成されており、3個の加算器C(2−1)、C(2−2)、C(2−3)の機能により他の1つのデータ生成手段が構成されており、第1のセレクタ1や保持部B(1)〜B(3)の機能によりデータ選択手段が構成されており、複数の記憶部D(1)〜D(3)の機能により複数の係数記憶手段が構成されており、第2のセレクタ2の機能により係数選択手段が構成されており、乗算器E(1)〜E(3)の機能により乗算手段が構成されており、加算器3、4の機能により総和手段が構成されており、フリップフロップ5、6や加算器7、8の機能及び加算器4からの出力をそのまま出力部10に入力する機能により出力候補値生成手段が構成されており、第3のセレクタ9や出力部10の機能により出力値選択手段が構成されている。
【0060】
ここで、本発明に係るシステムや装置などの構成としては、必ずしも以上に示したものに限られず、種々な構成が用いられてもよい。また、本発明は、例えば、本発明に係る処理を実行する方法或いは方式や、このような方法や方式を実現するためのプログラムや当該プログラムを記録する記録媒体などとして提供することも可能であり、また、種々なシステムや装置として提供することも可能である。
また、本発明の適用分野としては、必ずしも以上に示したものに限られず、本発明は、種々な分野に適用することが可能なものである。
また、本発明に係るシステムや装置などにおいて行われる各種の処理としては、例えばプロセッサやメモリ等を備えたハードウエア資源においてプロセッサがROM(Read Only Memory)に格納された制御プログラムを実行することにより制御される構成が用いられてもよく、また、例えば当該処理を実行するための各機能手段が独立したハードウエア回路として構成されてもよい。
また、本発明は上記の制御プログラムを格納したフロッピー(登録商標)ディスクやCD(Compact Disc)−ROM等のコンピュータにより読み取り可能な記録媒体や当該プログラム(自体)として把握することもでき、当該制御プログラムを当該記録媒体からコンピュータに入力してプロセッサに実行させることにより、本発明に係る処理を遂行させることができる。
【図面の簡単な説明】
【0061】
【図1】本発明の一実施例に係るアップサンプリングフィルタの回路の構成例を示す図である。
【図2】タップ数が17である場合におけるフィルタ係数の一例を示す図である。
【図3】タップ数が17である場合におけるフィルタ係数のグラフの一例を示す図である。
【図4】サンプル毎のフィルタ係数の一例を示す図である。
【図5】サンプル0についてアップサンプリングフィルタにより行われる動作の一例を示す図である。
【図6】サンプル2についてアップサンプリングフィルタにより行われる動作の一例を示す図である。
【図7】サンプル1、3についてアップサンプリングフィルタにより行われる動作の一例を示す図である。
【図8】サンプル1、3についてアップサンプリングフィルタにより行われる動作の一例を示す図である。
【図9】従来技術に係るアップサンプリングフィルタの回路の一構成例を示す図である。
【図10】従来技術に係るアップサンプリングフィルタの回路の他の一構成例を示す図である。
【符号の説明】
【0062】
1、2、9、111・・セレクタ、 3、4、7、8、101、112、C・・加算器、 5、6、A、F、I・・フリップフロップ、 10・・出力部、 B・・保持部、 D、G、J・・記憶部、 E、H、K・・乗算器、

【特許請求の範囲】
【請求項1】
データに対してN倍のアップサンプリングを行うアップサンプリングフィルタにおいて、
前記データの時系列値について、予め設定された態様で、異なる時刻の時系列値の和のデータ或いは差のデータを2種類以上生成する2つ以上のデータ生成手段と、
前記データ生成手段のそれぞれについて生成されるデータの中から1種類のデータを選択するデータ選択手段と、
前記2つ以上のデータ生成手段に対応して設けられ、フィルタ係数に基づいて予め設定された2種類以上の係数を記憶する2つ以上の係数記憶手段と、
前記係数記憶手段のそれぞれについて記憶された係数の中から1種類の係数を選択する係数選択手段と、
前記データ生成手段及び前記係数記憶手段の組み合わせ毎に、前記データ選択手段により選択されたデータと前記係数選択手段により選択された係数とを乗算する乗算手段と、
前記乗算手段により得られた乗算結果を総和する総和手段と、
予め設定された態様で、前記総和手段により得られた総和結果に基づいて2種類以上の出力候補値を生成する出力候補値生成手段と、
前記出力候補値生成手段により生成された出力候補値の中から1種類の出力候補値を出力値として選択する出力値選択手段と、を備え、
前記データ選択手段と前記係数選択手段と前記出力値選択手段は、アップサンプル後のサンプル毎のフィルタ係数がフィルタタップ番号に関して昇順と降順とで等しくなる異なる2つのサンプルについて、対応するデータの和と対応するフィルタ係数の和とを乗算して加算し、対応するデータの差と対応するフィルタ係数の差とを乗算して加算し、これら2つの加算結果を加算したものに基づく値を一方のサンプルの出力値とし、これら2つの加算結果を減算したものに基づく値を他方のサンプルの出力値とし、また、アップサンプル後のフィルタ係数がフィルタタップ番号に関して中心に対して対称となるサンプルについて、フィルタ係数が同一となるデータの和とそのフィルタ係数とを乗算するとともに前記中心に対応したデータがある場合には当該データとそのフィルタ係数とを乗算してこれらの乗算結果を総和したものを当該サンプルの出力値とするように、選択を実行する、
ことを特徴とするアップサンプリングフィルタ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2010−148034(P2010−148034A)
【公開日】平成22年7月1日(2010.7.1)
【国際特許分類】
【出願番号】特願2008−326074(P2008−326074)
【出願日】平成20年12月22日(2008.12.22)
【出願人】(000001122)株式会社日立国際電気 (5,007)