【国等の委託研究の成果に係る記載事項】(出願人による申告)平成23年度、独立行政法人情報通信研究機構「高度通信・放送研究開発委託研究/光トランスペアレント伝送技術の研究開発(λリーチ)」、産業技術力強化法第19条の適用を受ける特許出願
(58)【調査した分野】(Int.Cl.,DB名)
フーリエ変換により時間領域の複素数信号が変換され生成された周波数領域の第1の複素数信号を構成するすべての複素数のそれぞれの共役複素数を含む第2の複素数信号を生成する複素共役生成部と、
入力された複素数の第1、第2及び第3の入力フィルタ係数から、複素数の第1及び第2の周波数領域フィルタ係数を生成するフィルタ係数生成部と、
前記第1の複素数信号に対して前記第1の周波数領域フィルタ係数によりフィルタ処理を行い、第3の複素数信号を出力する第1のフィルタ部と、
前記第2の複素数信号に対して前記第2の周波数領域フィルタ係数によりフィルタ処理を行い、第4の複素数信号を出力する第2のフィルタ部と、
前記第3の複素数信号と、前記第4の複素数信号とを合成して第5の複素数信号を生成する複素共役合成部と、
を備えることを特徴とするディジタルフィルタ回路。
前記複素共役合成部は、0≦k≦N−1の範囲の周波数番号kのそれぞれについて、前記第3の複素数信号に含まれる周波数番号kの第1の複素数データと、前記第4の複素数信号に含まれる周波数番号(N−k)の第2の複素数データとを、複素加算して前記第5の複素数信号を生成する、
ことを特徴とする請求項3に記載のディジタルフィルタ回路。
フーリエ変換により時間領域の複素数信号が変換され生成された周波数領域の第1の複素数信号を構成するすべての複素数のそれぞれの共役複素数を含む第2の複素数信号を生成し、
入力された複素数の第1、第2及び第3の入力フィルタ係数から、複素数の第1及び第2の周波数領域フィルタ係数を生成し、
前記第1の複素数信号に対して前記第1の周波数領域フィルタ係数によりフィルタ処理を行い、第3の複素数信号を出力し、
前記第2の複素数信号に対して前記第2の周波数領域フィルタ係数によりフィルタ処理を行い、第4の複素数信号を出力し、
前記第3の複素数信号と、前記第4の複素数信号とを合成して第5の複素数信号を生成する
ことを特徴とするディジタルフィルタ処理方法。
【背景技術】
【0002】
広く利用されているディジタルフィルタとしてFIR(Finite Impulse Response)フィルタやIIR(Infinite Impulse Response)フィルタがある。
図9はFIRフィルタを用いたディジタルフィルタ回路100の構成例である。
【0003】
ディジタルフィルタ回路100は、複素数信号x(n)=r(n)+js(n)(jは虚数単位、nは整数)に対して、時間領域でフィルタ処理を行う。ディジタルフィルタ回路100は、3つのFIRフィルタ101、102、103から構成される。
【0004】
FIRフィルタ101は、入力された複素数信号x(n)の実数部である実数の実数部信号r(n)に対して、実数演算によりフィルタ処理を行う、タップ数5の実数係数のFIRフィルタである。FIRフィルタ101の5つのフィルタ係数a0〜a4は実数である。FIRフィルタ101は、フィルタ処理の結果を実数部信号r'(n)として出力する。
【0005】
同様に、FIRフィルタ102は、入力された複素数信号の虚数部である実数の虚数部信号s(n)に対して、実数演算によりフィルタ処理を行う、タップ数5の実数係数のFIRフィルタである。FIRフィルタ102の5つのフィルタ係数b0〜b4は実数である。FIRフィルタ102は、フィルタ処理の結果を虚数部信号s'(n)として出力する。
【0006】
FIRフィルタ103は、FIRフィルタ101及び102によりフィルタ処理された実数部信号r'(n)及び虚数部信号s'(n)から構成される複素数信号x'(n)=r'(n)+js'(n)に対して、複素数演算によりフィルタ処理を行う、タップ数5の複素数係数のFIRフィルタである。FIRフィルタ103の5つのフィルタ係数c0〜c4は複素数である。FIRフィルタ103は、フィルタ処理の結果を複素数信号x"(n)として出力する。
【0007】
図9の構成図では、複素数信号は、実数の信号を示す線よりも太い線で表記されて区別されている。以下、他の構成図においても、信号を示す線は同様に表記される。
【0008】
FIRフィルタによるフィルタ処理には、ディジタルフィルタ回路100のように、実数のフィルタ係数を用いた実数演算によるフィルタ処理と、複素数のフィルタ係数を用いた複素数演算によるフィルタ処理の両方が行われる場合がある。
【0009】
一般に、FIRフィルタのタップ数の最小値は、実現したいフィルタ関数のインパルス応答長で決定される。そのため、複雑なフィルタ関数を実現する場合、数100タップ以上のタップ数が必要な場合もある。このような、タップ数の大きいFIRフィルタが実装されたLSI(Large Scale Integrated circuit)には、LSIの回路規模や消費電力が莫大になるという問題がある。
【0010】
この問題に対して、周波数領域でフィルタ処理を行う技術が知られている(例えば、特許文献1)。周波数領域でのフィルタ処理では、高速フーリエ変換(FFT。Fast Fourier Transform)により、時間領域上の信号データは一旦、周波数領域上の信号データに変換される。そして、周波数領域で信号データとフィルタ係数とのフィルタ演算が実施された上で、高速逆フーリエ変換(IFFT。Inverse Fast Fourier Transform)により、時間領域上の信号データに再変換される。
【0011】
FIRフィルタのタップ数が大きい場合、周波数領域でフィルタ処理を行うことで、フィルタ処理の実現に必要な回路規模や消費電力を低減することができる。なぜなら、FIRフィルタによる時間領域での畳み込み演算は、周波数領域では単純な乗算に変換できるからである。
【0012】
ところで、時間領域の信号が複素数信号である場合、複素数信号は複素FFTにより周波数領域の複素数信号データに変換される。複素FFT変換では、時間領域における複素数信号の実数部及び虚数部は合成され、周波数領域での複素数信号データに変換される。すなわち、周波数領域での複素数信号データの実数部及び虚数部のそれぞれの算出に、時間領域における複素数信号の実数部及び虚数部の両方が用いられる。このため、時間領域の複素数信号の実数部及び虚数部のそれぞれを独立にフィルタ処理する場合、特許文献1の技術によれば、それぞれを独立に、実数FFTにより周波数領域の信号データに変換する必要がある。
【0013】
図10に、周波数領域においてフィルタ処理を行うディジタルフィルタ回路110の構成例を示す。ディジタルフィルタ回路110は、
図9に示した時間領域でフィルタ処理を行うディジタルフィルタ回路100に対応する。ディジタルフィルタ回路110は、複素数信号x(n)(=r(n)+js(n))に対して、周波数領域でフィルタ処理を行うディジタルフィルタ回路である。ディジタルフィルタ回路110は、3つの周波数領域フィルタ回路111、112、113から構成される。
【0014】
周波数領域フィルタ111は、入力された時間領域上の複素数信号x(n)の実数部である実数部信号r(n)を、FFTにより周波数領域上の複素数信号データに変換する。そして、周波数領域フィルタ111は、周波数領域上の複素数信号データに、周波数領域上で複素数演算によるフィルタ演算を実施した上で、IFFTにより時間領域上の実数部信号データr'(n)に再変換する。実数部信号r(n)は実数の信号であるが、実数の信号をフーリエ変換した場合でも、変換後の信号データは複素数になる。また、フィルタ係数も通常、複素数である。そのため、フィルタ演算には複素数演算が必要である。
【0015】
同様に、周波数領域フィルタ112は、入力された時間領域上の複素数信号x(n)の虚数部である実数の虚数部信号s(n)を、FFTにより周波数領域上の複素数信号データに変換する。そして、周波数領域フィルタ112は、周波数領域上の複素数信号データに、周波数領域上で複素数演算によるフィルタ演算を実施した上で、IFFTにより時間領域上の実数の虚数部信号データs'(n)に再変換する。
【0016】
一方、周波数領域フィルタ113は、実数部信号r'(n)及び虚数部信号s'(n)から構成される複素数信号x'(n)=r'(n)+js'(n)に対して、FFTにより周波数領域上の複素数信号データに変換する。そして、周波数領域フィルタ113は、周波数領域上の複素数信号データに、周波数領域上で複素数演算によるフィルタ演算を実施した上で、IFFTにより時間領域上の実数の虚数部信号データs"(n)に再変換する。
【0017】
入力信号を複素数信号として取り扱うディジタルフィルタは、特許文献2にも記載されている。
【0018】
また、入力信号をフーリエ変換して生成した複素数信号とその複素共役値を用いて所定の演算を施した後、逆フーリエ変換する技術は、特許文献3にも記載されている。
【発明を実施するための形態】
【0027】
次に、本発明の実施形態について図面を参照して説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態にかかるディジタルフィルタ回路10の構成を示すブロック図である。ディジタルフィルタ回路10は、FFT回路13、IFFT回路14、複素共役生成回路15、複素共役合成回路16、フィルタ回路21、フィルタ回路22、フィルタ係数生成回路41、を備える。
【0028】
ディジタルフィルタ回路10は、時間領域における複素数信号
x(n)=r(n)+js(n) ・・・(1)
を入力する。
【0029】
FFT回路13は、入力された複素数信号x(n)を、FFTにより周波数領域の複素数信号
X(k)=A(k)+jB(k) ・・・(2)
に変換する。
【0030】
ここで、nは時間領域上の信号サンプル番号を示す0≦n≦N−1の整数、NはFFTの変換サンプル数を示す0<Nの整数、kは周波数領域上の周波数番号を示す0≦k≦N−1の整数である。
【0031】
また、FFT回路13は、X(k)から、
X(N−k)=A(N−k)+jB(N−k) ・・・(3)
を生成して出力する。
【0032】
なお、FFTは、高速にフーリエ変換を行うための1つの手法である。フーリエ変換の処理形態や処理速度は本発明にとって本質的問題ではない。従って、FFT回路13の代わりに、FFT以外の方式によるフーリエ変換を行う回路が用いられても何ら差し支えない。以上のことは、後述のIFFTについても同様である。
【0033】
複素共役生成回路15は、0≦k≦N−1の周波数番号kのそれぞれについて、FFT回路13が出力するX(N−k)を入力し、X(N−k)の複素共役
X
*(N−k)=A(N−k)−jB(N−k) ・・・(4)
を生成する。
【0034】
複素共役生成回路15は、入力した複素数信号X(k)を複素数信号32として出力し、生成した複素数信号X
*(N−k)を複素数信号33として出力する。
【0035】
次に、フィルタ係数生成回路41は、0≦k≦N−1の周波数番号kのそれぞれについて、入力した複素数係数V(k)、W(k)、及びH(k)から、複素数係数
C1(k)={V(k)+W(k)}×H(k) ・・・(5)
及び、複素数係数
C2(k)={V(k)−V(k)}×H(k) ・・・(6)
を生成する。
【0036】
ここで複素数係数V(k)、W(k)、及びH(k)は、ディジタルフィルタ回路10の上位回路(図示せず)から与えられる周波数領域での係数で、時間領域での実数演算によるフィルタ処理を行った場合の、実数フィルタ係数に対応する。V(k)、W(k)、及びH(k)の詳細に関しては後述する。
【0037】
フィルタ係数生成回路41は、生成した複素数係数C1(k)を複素数信号45として出力する。また、フィルタ係数生成回路41は、複素数信号C2(k)(式(6))から複素数信号C2(N−k)を生成し、複素数信号46として出力する。
【0038】
次に、フィルタ回路21は、複素共役生成回路15が複素数信号32に出力するX(k)(式(2))に対して、フィルタ係数生成回路41が複素数信号45に出力するC1(k)(式(5))を用いて、複素数乗算による複素数フィルタ処理を行う。具体的には、フィルタ回路21は、0≦k≦N−1の周波数番号kのそれぞれについて、複素数信号
X'(k)=X(k)×C1(k) ・・・(7)
を計算して、複素数信号34として出力する。
【0039】
同様に、フィルタ回路22は、複素共役生成回路15が複素数信号33に出力するX
*(N−k)(式(4))に対して、フィルタ係数生成回路41が複素数信号46に出力するC2(N−k)(式(6))を用いて、複素数乗算による複素数フィルタ処理を行う。具体的には、フィルタ回路22は、0≦k≦N−1の周波数番号kのそれぞれについて、複素数信号
X
*'(N−k)=X
*(N−k)×C2(N−k) ・・・(8)
を計算して、複素数信号35として出力する。
【0040】
C1(k)、C2(k)は、それぞれ、実数部と虚数部に分けて、
C1(k)=C1I(k)+jC1Q(k) ・・・(9)
C2(k)=C2I(k)+jC2Q(k) ・・・(10)
と書くことができる。
【0041】
次に、複素共役合成回路16は、フィルタ回路21が複素数信号34に出力するX'(k)(式(7))と、フィルタ回路22が複素数信号35に出力するX
*'(N−k)(式(8))とを合成した複素数信号X"(k)を生成する。具体的には、複素共役合成回路16は、0≦k≦N−1の周波数番号kのそれぞれについて、
X"(k)=1/2×{X'(k)+X
*'(N−k)} ・・・(11)
を計算して、複素数信号36として出力する。
【0042】
次に、IFFT回路14は、0≦k≦N−1の周波数番号kのそれぞれについて、複素共役合成回路16が複素数信号36に出力するX"(k)(式(11))に対して、IFFTにより時間領域の複素数信号x"(n)を生成して出力する。
【0043】
図2は、複素共役生成回路15の構成の詳細を示すブロック図である。複素共役生成回路15は、FFT回路13の出力X(k)(=A(k)+jB(k)。式(2))を入力してそのまま出力すると共に、出力X(N−k)(=A(N−k)+jB(N−k)。式(3))を入力して、
X
*(N−k)=A(N−k)−jB(N−k) ・・・(4)
を計算して出力する。
【0044】
X(k)、X
*(N−k)は、それぞれ、実数部と虚数部に分けて、
X(k)=XI(k)+jXQ(k) ・・・(12)
X
*(N−k)=X
*I(N−k)+jX
*Q(N−k) ・・・(13)
と書くことができる。
【0045】
図3は、フィルタ回路21の構成の詳細を示すブロック図である。フィルタ回路21は、複素共役生成回路15が複素信号線32に出力するX(k)(=XI(k)+jXQ(k)。式(12))と、複素数係数C1(k)(=C1I(k)+jC1Q(k)。式(9))を入力して、
X'(k)=XI'(k)+jXQ'(k)
=X(k)×C1(k) ・・・(14)
を計算して出力する。
【0046】
ここで、XI'(k)及びXQ'(k)は、それぞれX'(k)の実数部と虚数部であり、次式で与えられる。
【0047】
XI'(k)=XI(k)×C1I(k)−XQ(k)×C1Q(k) ・・・(15)
XQ'(k)=XI(k)×C1Q(k)+XQ(k)×C1I(k) ・・・(16)
図4は、フィルタ回路22の構成の詳細を示すブロック図である。フィルタ回路22は、複素共役生成回路15が複素信号線33に出力するX
*(N−k)(=X
*I(N−k)+jX
*Q(N−k)。式(13))と複素数係数C2(k)(=C2I(k)+jC2Q(k)。式(10))を入力して、
X
*'(N−k)=X
*I'(N−k)+jX
*Q'(N−k)
=X
*(N−k)×C2(N−k) ・・・(17)
を計算して出力する。
【0048】
ここで、X
*I'(N−k)及びX
*Q'(N−k)は、それぞれX
*'(N−k)の実数部と虚数部であり、次式で与えられる。
【0049】
X
*I'(N−k)=X
*I(N−k)×C2I(N−k)−X
*Q(N−k)×C2Q(N−k)・・・(18)
X
*Q'(N−k)=X
*I(N−k)×C2Q(N−k)+X
*Q(N−k)×C2I(N−k)・・・(19)
図5は、複素共役合成回路16の構成の詳細を示すブロック図である。複素共役合成回路16は、0≦k≦N−1の周波数番号kのそれぞれについて、フィルタ回路21が複素数信号32に出力するX'(k)(=XI'(k)+jXQ'(k)。式(14))と、フィルタ回路22が複素数信号33に出力するX
*'(N−k)(=X
*I'(N−k)+jX
*Q'(N−k)。式(17))とを入力して、
X"(k)=XI"(k)+jXQ"(k)
=1/2{X'(k)+X
*'(N−k)} ・・・(20)
を計算して出力する。
【0050】
ここで、XI"(k)及びXQ"(k)は、それぞれX"(k)の実数部と虚数部であり、次式で与えられる。
【0051】
XI"(k)=1/2{XI'(k)+X
*I'(N−k)} ・・・(21)
XQ"(k)=1/2{XQ'(k)+X
*Q'(N−k)} ・・・(22)
ここで、XI'(k)、XQ'(k)、X
*I'(N−k)、X
*Q'(N−k)は、それぞれ式(15)、(16)、(18)、(19)の通りである。
【0052】
フィルタ係数生成回路41は、フィルタ回路21、22で用いられる複素数係数C1(k)、C2(k)を生成する。
図6は、フィルタ係数生成回路41の構成の詳細を示すブロック図である。フィルタ係数生成回路41は、0≦k≦N−1の周波数番号kのそれぞれについて、上位回路(図示せず)から入力された複素数係数V(k)、W(k)から、V(k)+W(k)及びV(k)−W(k)を計算する。
【0053】
ここで、
V(k)+W(k)=VI(k)+WI(k)+jVQ(k)+jWQ(k) ・・・(23)
V(k)−W(k)=VI(k)−WI(k)+jVQ(k)−jWQ(k) ・・・(24)
である。VI(k)及びVQ(k)は、それぞれV(k)の実数部と虚数部であり、WI(k)及びWQ(k)は、それぞれW(k)の実数部と虚数部である。
【0054】
また、H(k)も実数部と虚数部とに分けて、
H(k)=HI(k)+jHQ(k) ・・・(25)
と書くことができる。
【0055】
次に、フィルタ係数生成回路41は、以下の式で定義された複素数係数C1(k)及びC2(k)を計算して出力する。
【0056】
C1(k)=C1I(k)+jC1Q(k)
={V(k)+W(k)}×H(k) ・・・(26)
C2(k)=C2I(k)+jC2Q(k)
={V(k)−W(k)}×H(k) ・・・(27)
ここで、C1I(k)、C1Q(k)は、それぞれC1(k)の実数部と虚数部であり、C2I(k)、C2Q(k)は、それぞれC2(k)の実数部と虚数部である。
【0057】
式(26)に式(23)、(25)を代入して、
C1(k)={VI(k)+WI(k)+jVQ(k)+jWQ(k)}×{HI(k)+jHQ(k)}・・・(28)
である。
【0058】
従って、
C1I(k)={VI(k)+WI(k)}×HI(k)−{VQ(k)+WQ(k)}×HQ(k)・・・(29)
C1Q(k)={VQ(k)+WQ(k)}×HI(k)+{VI(k)+WI(k)}×HQ(k)・・・(30)
である。
【0059】
同様に、式(27)に式(24)、(25)を代入して、
C2(k)=C2I(k)+jC2Q(k)
={V(k)−W(k)}×H(k)
={VI(k)−WI(k)+jVQ(k)−jWQ(k)}×{HI(k)+jHQ(k)}・・・(31)
である。
【0060】
従って、
C2I(k)={VI(k)−WI(k)}×HI(k)−{VQ(k)−WQ(k)}×HQ(k)・・・(32)
C2Q(k)={VQ(k)−WQ(k)}×HI(k)+{VI(k)−WI(k)}×HQ(k)・・・(33)
である。
【0061】
以上のように、ディジタルフィルタ回路10は、時間領域の入力信号をFFT変換して周波数領域の複素数信号を生成する。そして、ディジタルフィルタ回路10は、周波数領域の複素数信号の実数部、虚数部のそれぞれを、V(k)、W(k)、H(k)から生成された2種類の係数を用いて独立にフィルタ処理し、その結果をIFFTによって時間領域の信号に変換する。このように、ディジタルフィルタ回路10では、FFTとIFFTは、それぞれ、時間領域の入力信号に対して1回のみ実行される。
【0062】
フィルタ処理に用いられる2種類の係数が、FFT及びIFFTの回数の最小化を可能にする。以下に、V(k)、W(k)、H(k)の物理的な意味と、これらから生成された係数C1(k)及びC2(k)を用いたフィルタ処理により、時間領域での所望のフィルタ処理と同等の、周波数領域でのフィルタ処理が可能となる原理を説明する。
【0063】
本実施形態では、入力する時間領域の複素数信号x(n)(=r(n)+js(n)。式(1))を複素FFTした周波数領域の複素数信号
X(k)=R(k)+jS(k) ・・・(34)
から、複素共役生成回路15がX
*(N−k)を生成する。
【0064】
ここで、R(k)は、時間領域における実数の実数部信号r(n)が実数FFTにより変換された周波数領域の複素数信号、S(k)は時間領域における実数の虚数部信号s(n)が実数FFTにより変換された周波数領域の複素数信号である。このとき、複素共役の対称性から次式が成立する。
【0065】
X
*(N−k)=R(k)−jS(k) ・・・(35)
ここで、X
*(N−k)は、X(N−k)の複素共役である。
【0066】
式(14)、(34)、(26)から、
X'(k)=X(k)×C1(k)
={R(k)+jS(k)}×{V(k)+W(k)}×H(k)
=R(k)V(k)H(k)+R(k)W(k)H(k)+jS(k)V(k)H(k)+jS(k) W(k)H(k)・・・(36)
となる。
【0067】
また、式(17)、(35)、(27)から、
X
*'(N−k)=X
*(N−k)×C2(N−k)
={R(k)−jS(k)}×{V(k)−W(k)}×H(k)
=R(k)V(k)H(k)−R(k)W(k)H(k)−jS(k)V(k)H(k)+jS(k)W(k)H(k) ・・・(37)
となる。
【0068】
式(20)に、式(36)、(37)を代入すると、
X"(k)=1/2×{X'(k)+X
*'(N−k)}
=1/2×{2×R(k)V(k)H(k)+2×jS(k)W(k)H(k)}
=R(k)V(k)H(k)+jS(k)W(k)H(k)
={R(k)V(k)+jS(k)W(k)}×H(k) ・・・(38)
となる。
【0069】
式(38)は、IFFT前の信号X"(k)を、フィルタ係数V(k)、W(k)及びH(k)と、FFT後の信号X(k)におけるR(k)及びS(k)を用いて表したものである。R(k)は、時間領域における実数の実数部信号r(n)が実数FFTにより変換された周波数領域の複素数信号である。S(k)は、時間領域における実数の虚数部信号s(n)が実数FFTにより変換された周波数領域の複素数信号である。つまり、式(38)は、FFT後の信号X(k)に対して施されるフィルタ処理の内容を表す。式(38)から、ディジタルフィルタ回路10は、複素数信号x(n)=r(n)+js(n)が実数FFTにより変換されて生成された、周波数領域の複素数信号X(k)(=R(k)+jS(k)。式(34))に対して、以下の3つのフィルタ処理と同等の処理を行うことがわかる。
1)R(k)に対する係数V(k)によるフィルタ処理
まず、ディジタルフィルタ回路10は、時間領域における実数部信号r(n)が実数FFTにより変換された周波数領域の複素数信号R(k)に対して、フィルタ係数V(k)によるフィルタ処理を行う。従って、V(k)には、実数部信号r(n)に対して時間領域で実数演算によるフィルタ処理を行った場合の、実数フィルタ係数に対応する、周波数領域での複素数フィルタ係数が割り当てられる。
2)S(k)に対する係数W(k)によるフィルタ処理
同様に、ディジタルフィルタ回路10は、時間領域における虚数部信号s(n)が実数FFTにより変換された周波数領域の複素数信号S(k)に対して、フィルタ係数W(k)によるフィルタ処理を行う。従って、W(k)には、虚数部信号s(n)に対して時間領域で実数演算によるフィルタ処理を行った場合の、実数フィルタ係数に対応する、周波数領域での複素数フィルタ係数が割り当てられる。
3)1)、2)のフィルタ処理結果に対する係数H(k)によるフィルタ処理
次に、ディジタルフィルタ回路10は、それぞれ独立に処理された上記の2つのフィルタ処理後の、R(k)V(k)及びS(k)W(k)からなる複素数信号R(k)V(k)+jS(k)W(k)に対して、フィルタ係数H(k)によるフィルタ処理を行う。
【0070】
R(k)V(k)+jS(k)W(k)は、時間領域における実数部信号r(n)及び虚数部信号s(n)のそれぞれに独立にフィルタ処理した2つの信号からなる時間領域の信号に対応する、周波数領域の複素数信号である。実数部信号r(n)及び虚数部信号s(n)をそれぞれに独立にフィルタ処理した信号とは、
図9、10における、r'(n)、s'(n)に相当する。そして、r'(n)、s'(n)からなる時間領域の信号とは、
図9、10のx’(n)に相当する。このように、R(k)V(k)+jS(k)W(k)は、時間領域において実数部及び虚数部のそれぞれに独立にフィルタ処理した時間領域の信号に対応する、周波数領域の信号である。
【0071】
従って、時間領域における複素数信号に対する複素数演算によるフィルタ処理に相当する処理を、周波数領域の信号R(k)V(k)+jS(k)W(k)に対して行うには、次のような係数を用いればよい。すなわち、H(k)には、複素数信号x(n)に対して時間領域で複素数演算によるフィルタ処理を行った場合の、複素数フィルタ係数に対応する、周波数領域での複素数フィルタ係数が割り当てればよい。
【0072】
以上のように、本実施形態では、外部から3種類の係数が設定される。すなわち、複素数信号x(n)の実数部及び虚数部のそれぞれに対する時間領域でのフィルタ係数に対応する周波数領域のフィルタ係数V(k)、W(k)と、x(n)に対する時間領域でのフィルタ係数に対応する周波数領域の係数H(k)が設定される。以上の3つの係数から求めた2つの係数を用いたフィルタ処理を行うことにより、フィルタ処理の前のFFT及びフィルタ処理後のIFFTをそれぞれ1回のみとすることができる。
【0073】
ところで、ディジタルフィルタ回路10におけるFFTとIFFTは、それぞれ通常の変換であり、本発明に独自の処理は行われない。そのため、FFTとIFFTは、ディジタルフィルタ回路10の外部の回路によって処理されてもよい。すなわち、ディジタルフィルタ回路は、外部のフーリエ変換回路からの信号を入力してフィルタ処理のみを行い、処理結果を外部の逆フーリエ変換回路に出力してもよい。従って、本実施形態のフィルタ回路の必須の構成のみを備えるディジタルフィルタ回路110のブロック図は、
図7のようになる。
図7のブロック図は、
図1の構成から、FFT回路13、IFFT回路14を除いたものである。ディジタルフィルタ回路110は、複素共役生成回路15、複素共役合成回路16、フィルタ回路21、フィルタ回路22、フィルタ係数生成回路41を備える。これら各ブロックの機能はディジタルフィルタ回路10のものと同じであるため、説明は省略する。
【0074】
FFTとIFFTの処理を外部で行う場合も、FFT、IFFTを行う回路はそれぞれ1個のみでよく、実数部用、虚数部用のように、複数個用いる必要はない。
(第1の実施形態の効果)
以上のように、本実施形態によれば、複素数信号の実数部及び虚数部のそれぞれに対する時間領域でのフィルタ係数に対応する、2種類の周波数領域のフィルタ係数と、複素信号に対する時間領域でのフィルタ係数に対応する周波数領域の係数を用いたフィルタ処理が行われる。すなわち、時間領域における複素数信号の実数部及び虚数部のそれぞれに対する実数演算による独立したフィルタ処理と、時間領域における複素数信号に対する複素数演算によるフィルタ処理と、に対応する周波数領域におけるフィルタ処理が行われる。従って、フィルタ処理前のFFTを行うFFT回路及びフィルタ処理後のIFFTを行うIFFT回路を、それぞれ1個のみを用いて、所望のフィルタ処理を実現することができる。その結果、フィルタ処理を行うための回路規模や消費電力の低減を図ることができるという効果がある。
(第2の実施形態)
第1の実施形態では、FFT、IFFT、共役複素数の生成及び合成、フィルタ係数の算出、フィルタ処理の各処理は、すべて個別の回路等の構成要素によって処理されることが想定されている。本発明の各処理は、第1の実施形態のような形態ではなく、所定の装置が備えるコンピュータ、例えば、DSP(Digital Signal Processor)等を用いたソフトウェアによって実行されてもよい。
【0075】
第2の実施形態では、コンピュータプログラムによってフィルタ処理を行う場合の例を示す。コンピュータプログラムはDSP(図示なし)によって読み込まれ、実行される。なお、本実施形態では、プログラム処理を行うコンピュータ以外のハードウェアは使用されないので、実施形態の構成は特に図示しない。
【0076】
図8A、8Bは、本発明の第2の実施形態の、フィルタ処理プログラムの処理手順の例を示すフローチャートである。以下の説明に用いられている、X(k)等の信号名やV(k)等の情報名は、すべて第1の実施形態で用いられているものと同じである。
【0077】
図8Aの処理では、まず初めに、DSPは、V(k)、W(k)、及びH(k)から、C1(k)、C2(k)を求める(ステップS0)。なお、ステップ0の処理は、後述のフィルタ処理(ステップS3、S4)までに実施されればよく、必ずしも最初に実行される必要はない。
【0078】
次に、DSPは、入力信号X(n)をフーリエ変換し、X(k)、X(N-k)を生成するする(ステップS1)。
【0079】
さらに、DSPは、X(N-k)の共役複素数X
*(N-k)を求める(ステップS2)。
【0080】
そして、DSPは、C1(k)を用いてX(k)をフィルタ処理し、X'(k)を生成する(ステップS3)。また、DSPは、C2(k)を用いてX
*(N-k)をフィルタ処理し、X
*'(N-k)を生成する(ステップS4)。ステップS3とステップS4の処理順序は、上記と逆であってもよい。
【0081】
次に、DSPは、X'(k)とX
*'(N-k)を合成し、X"(k)を求める(ステップS5)。
【0082】
最後に、DSPは、X"(k)を逆フーリエ変換し、x"(n)を求める(ステップS6)。
【0083】
以上のように、第2の実施形態のフィルタ処理の内容は第1の実施形態と同じである。従って、第2の実施形態のフィルタ処理には第1の実施形態と同様の効果がある。
【0084】
なお、フィルタ係数C1(k)、C2(k)の算出は、別個のプログラムによって予め行われてもよい。その場合、ステップ0の処理は不要となるので、動作を示すフローチャートは、
図8Bのようになる。さらに、FFT、IFFT等、個別の処理が、他のプロセッサによって処理されてもよい。
【0085】
上記のフィルタ処理プログラムは、ROM(Read Only Memory)、RAM(Random Access Memory)、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスク等の、非一時的な媒体に格納されてもよい。
【0086】
第1の実施形態と第2の実施形態は組み合わされてもよい。すなわち、一部の処理はハードウェアによって処理され、他の処理はソフトウェアによって処理されてもよい。例えば、FFTとIFFTは、それぞれFFT回路13、IFFT回路14を用いて処理され、その他の処理はソフトウェアによって行われてもよい。ハードウェアによる処理とソフトウェアによる処理の分担は任意である。
【0087】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0088】
この出願は、2012年2月20日に出願された日本出願特願2012−034002を基礎とする優先権を主張し、その開示の全てをここに取り込む。