(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-02-25
(45)【発行日】2025-03-05
(54)【発明の名称】高速フーリエ変換装置及びデジタルフィルタ装置
(51)【国際特許分類】
G06F 17/14 20060101AFI20250226BHJP
【FI】
G06F17/14
(21)【出願番号】P 2021054596
(22)【出願日】2021-03-29
【審査請求日】2024-02-07
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和2年度、総務省「新たな社会インフラを担う革新的光ネットワーク技術の研究開発に関する研究開発課題I 5テラビット級高速大容量・低消費電力光伝送技術」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【氏名又は名称】家入 健
(72)【発明者】
【氏名】柴山 充文
【審査官】三坂 敏夫
(56)【参考文献】
【文献】米国特許出願公開第2018/0336161(US,A1)
【文献】国際公開第2014/115540(WO,A1)
【文献】国際公開第2019/225576(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/00-17/18
(57)【特許請求の範囲】
【請求項1】
第1の順序でN個(Nは整数)の第1の入力データを並べ替えて、第2の順序でN個の第1の出力データを出力するデータ並べ替え処理部と、
前記N個の第1の出力データに対して、ひねり係数を乗算したひねり乗算処理を行い、前記第2の順序でN個の第1の出力データを出力するひねり乗算処理部と、
前記N個の第1の出力データに対してバタフライ演算処理を行い、前記第2の順序でN個の第2の出力データを出力するバタフライ演算処理部と、
有し、
前記第2の順序は、N個の第2の出力データX(k)(0≦k≦N-1)の1以上のN-1以下の任意の添え字kに対して、X(k)とX(N-k)とが1サイクル以内の時間差であって、前記ひねり係数の連続するサイクル間の
ビット単位の動作率(トグル率)が小さい順序である高速フーリエ変換装置。
【請求項2】
前記N個の第2の出力データをX(k)(kは0≦k≦N-1の整数、NはN>0の高速フーリエ変換又は逆高速フーリエのポイント数)とするとき、前記データ並べ替え
処理部は、任意のkに対してX(k)とX(N-k)とを1サイクル以内の時間差で出力する請求項1に記載の高速フーリエ変換装置。
【請求項3】
前記データ並べ替え処理部は、前記第2の出力データであるX(k)とX(N-k)とを、高々1サイクル以内の時間差で出力することができる順序である最適化データ組ビットリバース順序の複数の候補の中から、ひねり係数に関するハミング距離の総和が最も小さくなる候補を選択する請求項1又は2に記載の高速フーリエ変換装置。
【請求項4】
前記データ並べ替え処理部の前段に、
前段入力データに対してバタフライ演算処理を行い、前記第1の入力データを出力する前段バタフライ演算処理部をさらに有する請求項1乃至3のいずれか1項に記載の高速フーリエ変換装置。
【請求項5】
請求項1乃至4のいずれか1項に記載の高速フーリエ変換装置と、
時間領域の複素数であって、前記高速フーリエ変換装置により出力される前記N個の第2の出力データにより構成される第1の複素数データから、それぞれの共役複素数を含む第2の複素数データを生成する複素共役生成手段と、
入力された複素数の第1、第2及び第3の入力フィルタ係数から、複素数の第1及び第2の周波数領域フィルタ係数を生成するフィルタ係数生成手段と、
前記第1の複素数データに対して前記第1の周波数領域フィルタ係数によりフィルタ処理を行い、第3の複素数データを出力する第1のフィルタ手段と、
前記第2の複素数データに対して前記第2の周波数領域フィルタ係数によりフィルタ処理を行い、第4の複素数データを出力する第2のフィルタ手段と、
前記第3の複素数データと、前記第4の複素数データとを合成して第5の複素数データを生成する複素共役合成手段と、
を備えるデジタルフィルタ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、デジタル信号処理を行う高速フーリエ変換装置及びデジタルフィルタ装置に関する。
【背景技術】
【0002】
デジタル信号処理において重要な処理の1つとして、高速フーリエ変換(Fast Fourier Transform。以降、「FFT」という。)処理がある。例えば、無線通信や有線通信における信号伝送中の波形歪みを補償する技術として、周波数領域等化(Frequency domain equalization(FDE))技術が知られている。周波数領域等化では、まず高速フーリエ変換により時間領域上の信号データが周波数領域上のデータに変換され、次に等化のためのフィルタ処理が行われる。そして、フィルタ処理後のデータは、逆高速フーリエ変換(Inverse FFT。以降、「IFFT」という。)により時間領域上の信号データに再変換されることによって、元の時間領域上の信号の波形歪みが補償される。以降、FFTとIFFTを区別しないときは、「FFT/IFFT」と表記する。
【0003】
一般に、FFT/IFFT処理では、「バタフライ演算」が用いられる。このバタフライ演算では、逐次的な順序に並べられたデータが、所定の規則に従った順序で読み出され、処理される。そのため、バタフライ演算では、データの並べ替えが必要であり、その回路実現には主にRAM(Random Access Memory)回路が用いられる。このとき、FFT装置の後段処理の高速化や低消費電力化を実現する場合、FFT装置から出力されるデータの順序が重要になる。そこで、FFT装置の後段の処理の高速化や低消費電力化を目的とした、FFT処理の処理結果の出力タイミングや出力順序の最適化技術が、特許文献1に記載されている。
【0004】
特許文献1に記載の高速フーリエ変換装置では、高速フーリエ変換又は逆高速フーリエ変換を行って、複数の第1の出力データを生成し、第1の順序で出力する第1の変換手段と、前記第1の順序で出力された前記複数の第1の出力データを、出力順序設定に基づいて第2の順序に並べ替える第1のデータ並べ替え処理手段と、を備える。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1には、処理対象のデータの入力や処理結果の出力を任意の順序で行うことが可能なFFT装置が記載されており、出力X(k)とX(N-k)とを、高々1サイクル以内の時間差で出力することができる。しかし、特許文献1は、Prime Factor法により2段階のバタフライ処理に分解されたFFTデータフローに対して、2段階のバタフライ処理にそれぞれ割り当てられた1つのバタフライ演算回路を複数回繰り返して使用することで、FFT処理を実現する方法について開示されているが、FFT処理のさらなる高速化のために、処理の並列度をさらに増加させた場合の最適な構成については明らかにされていない。より具体的には、特許文献1では、高速フーリエ変換を用いたデジタル信号処理の処理レイテンシが大きく、デジタル信号処理を実現する回路の回路規模や消費電力を抑制できない問題がある。
【課題を解決するための手段】
【0007】
本発明に係る高速フーリエ変換装置の一態様は、第1の順序でN個(Nは整数)の第1の入力データを並べ替えて、第2の順序でN個の第1の出力データを出力するデータ並べ替え処理部と、前記N個の第1の出力データに対して、ひねり係数を乗算したひねり乗算処理を行い、前記第2の順序でN個の第1の出力データを出力するひねり乗算処理部と、前記N個の第1の出力データに対してバタフライ演算処理を行い、前記第2の順序でN個の第2の出力データを出力するバタフライ演算処理部と、し、前記第2の順序は、N個の第2の出力データX(k)(0≦k≦N-1)の1以上のN-1以下の任意の添え字kに対して、X(k)とX(N-k)とが1サイクル以内の時間差であって、前記ひねり係数の連続するサイクル間のビット遷移率が小さい順序である。
【0008】
また、本発明に係るデジタルフィルタ装置の一態様は、上記高速フーリエ変換装置と、時間領域の複素数であって、前記高速フーリエ変換装置により出力される前記N個の第2の出力データにより構成される第1の複素数データから、それぞれの共役複素数を含む第2の複素数データを生成する複素共役生成手段と、入力された複素数の第1、第2及び第3の入力フィルタ係数から、複素数の第1及び第2の周波数領域フィルタ係数を生成するフィルタ係数生成手段と、前記第1の複素数データに対して前記第1の周波数領域フィルタ係数によりフィルタ処理を行い、第3の複素数データを出力する第1のフィルタ手段と、前記第2の複素数データに対して前記第2の周波数領域フィルタ係数によりフィルタ処理を行い、第4の複素数データを出力する第2のフィルタ手段と、前記第3の複素数データと、前記第4の複素数データとを合成して第5の複素数データを生成する複素共役合成手段と、を備える。
【発明の効果】
【0009】
本発明は、高速フーリエ変換を用いたデジタル信号処理の処理レイテンシが小さく、デジタル信号処理を実現する回路の回路規模や消費電力が小さいデジタルフィルタ装置を提供する。
【図面の簡単な説明】
【0010】
【
図1】第1の実施形態に係るFFT装置の構成を示すブロック図である。
【
図2】第1の実施形態に係る逐次順序に従うデータ組の配列を示す図である。
【
図3】第1の実施形態に係るビットリバース順序に従うデータ組の配列を示す図である。
【
図4】第1の実施形態に係る基数8バタフライ演算処理の演算順序を示す図である。
【
図5】第1の実施形態に係る電力最適化データ組逐次順序に従うデータ組の配列を示す図である。
【
図6】第1の実施形態に係る電力最適化データ組逐次順序に従うひねり係数の配列を示す図である。
【
図7】第1の実施形態に係る基数8バタフライ演算処理の演算順序を示す図である。
【
図8】第1の実施形態に係る第1のデータ並べ替え回路、第2のデータ並べ替え回路の構成例を示すブロック図である。
【
図9】第1の実施形態に係る第3のデータ並べ替え処理回路の構成例を示すブロック図である。
【
図10】第1の実施形態に係るデジタルフィルタ回路の構成例を示すブロック図である。
【
図11】第1の実施形態に係る複素共役生成回路の構成を示すブロック図である。
【
図12】第1の実施形態に係るフィルタ回路の構成を示すブロック図である。
【
図13】第1の実施形態に係るフィルタ回路の構成を示すブロック図である。
【
図14】第1の実施形態に係る複素共役合成回路の構成を示すブロック図である。
【
図15】第1の実施形態に係るフィルタ係数生成回路の構成を示すブロック図である。
【
図16】2段階のバタフライ演算を用いる64ポイントFFT処理のデータフロー500を示す図である。
【
図17】データ並べ替え回路を備えるFFT装置の構成を示すブロック図である。
【発明を実施するための形態】
【0011】
(第1の実施形態)
図1は、第1の実施形態に係るFFT装置10の構成例を示すブロック図である。FFT装置10は、
図16に示されたデータフロー500に従って、2段階の基数8のバタフライ処理に分解された64ポイントFFTを、パイプライン回路方式によって処理する。FFT装置10は、時間領域のデータx(n)(n=0,1,・・・,N-1)を入力し、x(n)をFFT処理によりフーリエ変換して周波数領域の信号X(k)(k=0,1,・・・,N-1を生成し、出力する。ここで、NはFFTブロックサイズを表す正整数である。
【0012】
FFT装置10は、第1のデータ並べ替え処理部11、第1のバタフライ演算処理部21、第2のデータ並べ替え処理部12、ひねり乗算処理部31、第2のバタフライ演算処理部22、読み出しアドレス生成部41を備える。FFT装置10は、第1のデータ並べ替え処理、第1のバタフライ演算処理、第2のデータ並べ替え処理、ひねり乗算処理、第2のバタフライ演算処理、をパイプライン処理する。
【0013】
第1のデータ並べ替え処理部11、第2のデータ並べ替え処理部12は、データ並べ替えのためのバッファ回路である。第1のデータ並べ替え処理部11は、第1のバタフライ演算処理部21の前で、FFT処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。同様に、第2のデータ並べ替え処理部12は、第1のバタフライ演算処理部21の後で、読み出しアドレス51を入力して、FFT処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。さらに、第2のデータ並べ替え処理部12は、上記の並べ替えに加えて、FFT装置10の出力X(k)において、1以上のN-1以下の任意のkに対して、出力X(k)とX(N-k)とを同じサイクルで出力するための並べ替え処理を行う。
【0014】
FFT装置10は、8データ並列で64ポイントFFT処理を行うものとする。この場合、FFT回路10は、時間領域のデータx(n)を入力し、FFT処理によりフーリエ変換した周波数領域の信号X(k)を生成して出力する。このとき、入力データx(n)として、8データずつ、8サイクルの期間に、
図2に示す順序で、合計で64個のデータが入力される。なお、ここでは、
図2の表の内容として示された、0から63までの数字は、x(n)の添え字nを意味する。
【0015】
具体的には、0サイクル目に、データ組P0を構成するx(0),x(1),・・・,x(7)の8データが入力される。そして、1サイクル目に、データ組P1を構成するx(8),x(9),・・・,x(15)の8データが入力される。以降同様に、2サイクル目から7サイクル目にも、データ組P2~P7を構成するデータが入力される。
【0016】
次に、第1のデータ並べ替え処理部11は、入力データx(n)の入力順序である
図2に示す「逐次順序」を、第1のバタフライ演算処理部21に入力する順序である
図3に示す「ビットリバース順序」に並べ替える。
【0017】
図3に示すビットリバース順序は、
図16に示したデータフロー図における、1段目の基数8のバタフライ処理502への入力データ組に対応する。具体的には、第1のデータ並べ替え処理部11は、0サイクル目に、データ組Q0を構成するx(0),x(8),・・・,x(56)の8データを出力する。そして、1サイクル目に、データ組Q1を構成するx(1),x(9),・・・,x(57)の8データを出力する。以降、2サイクル目から7サイクル目も同様にして、データ組Q3~Q7を構成するデータを出力する。
【0018】
ここで、「逐次順序」と「ビットリバース順序」について、具体的に説明する。「逐次順序」とは、
図2に示された、8つのデータ組P0~P7に係わる順序をいう。データ組Ps(s=0,1,・・・,7)は、それぞれ、ps(0)からps(7)まで、順に並んだ8個のデータからなり、ps(i)は、
ps(i)=8x+i
である。つまり、逐次順序とは、i・s個のデータを、先頭のデータからi個ずつデータ順に並べてデータ組をs個作成して並べたものである。
【0019】
「ビットリバース順序」とは、
図3に示された、8つのデータ組Q0~Q7に係わる順序をいう。データ組Qs(s=0,1,・・・,7)は、それぞれ、qs(0)からqs(7)までの8個のデータからなり、qs(i)は、
qs(i)=s+8i
である。つまり、ビットリバース順序とは、i・s個のデータを、先頭のデータからi個ずつ8個おきに並べてデータ組をs個作成して並べたものである。
【0020】
以上のように、ビットリバース順序の各データ組Qs(s=0,1,・・・,7)を構成するデータのiデータ目は、逐次順序におけるデータ組Piを構成するsデータ目のデータである。すなわち、
Qs(i)=Pi(s)
である。このように、Qs(i)とPi(s)とは、各データ組を構成するデータについて、データ組の順序とデータ組内のデータ位置に対する順序が入れ替えられた関係にある。従って、ビットリバース順序で入力されたデータを、ビットリバース順序に従って並べ替えると、逐次順序になる。
【0021】
図2における各行ps(i)、及び
図3における各行qs(i)は、それぞれ、次段のiデータ目に入力されるデータを示す。各データ組に含まれる8個の数字は、FFTのポイントのうちの1個を特定する識別情報であり、具体的にはx(n)の添え字nの値である。
【0022】
なお、逐次順序及びビットリバース順序は、
図2、3に例示されたものに限定されない。すなわち、逐次順序の各データ組は、上記のように、FFTのポイント数、サイクル数、並列に処理するデータ数に応じて、データを順に並べて作成すればよい。そして、ビットリバース順序の各データ組は、上記のように、逐次順序で入力されるデータの、サイクルの進行に対する順序とデータ位置に対する順序を入れ替えて作成すればよい。
【0023】
第1のバタフライ演算処理部21は、
図16のデータフロー500において2段階で行われる基数8のバタフライ演算処理の、1回目のバタフライ演算処理502(第1のバタフライ演算処理)を処理するバタフライ回路である。第1のバタフライ演算処理部21は、基数8バタフライ演算処理部21aから構成され、基数8バタフライ演算処理を行う。具体的には、第1のバタフライ演算処理部21は、バタフライ演算処理502を構成する#0~#7の8回の基数8バタフライ演算処理を、
図4に示す順序で処理を行う。
【0024】
すなわち、サイクル0では、基数8バタフライ演算処理部21aは、第1のデータ並べ替え処理部11が出力する、基数8バタフライ演算処理#0に対応するビットリバース順序のデータ組Q0を入力して、基数8のバタフライ演算処理#0を行う。サイクル1では、基数8バタフライ演算処理部21aは、第1のデータ並べ替え処理部11が出力する、基数8バタフライ演算処理#1に対応するビットリバース順序のデータ組Q1を入力して、基数8のバタフライ演算処理#1を行う。サイクル2では、基数8バタフライ演算処理部21aは、第1のデータ並べ替え処理部11が出力する、基数8バタフライ演算処理#2に対応するビットリバース順序のデータ組Q2を入力して、基数8のバタフライ演算処理#2を行う。サイクル3では、基数8バタフライ演算処理部21aは、第1のデータ並べ替え処理部11が出力する、基数8バタフライ演算処理#3に対応するビットリバース順序のデータ組Q3を入力して、基数8のバタフライ演算処理#3を行う。以降のサイクルでも同様にして、サイクル4からサイクル7では、基数8バタフライ演算処理部21aは、第1のデータ並べ替え処理部11が出力する、基数8バタフライ演算処理#4~#7にそれぞれ対応するビットリバース順序のデータ組Q4~Q7を入力して、基数8のバタフライ演算処理#4~#7を行う。
【0025】
第1のバタフライ演算処理部21は、バタフライ演算処理の結果を、データy(n)(0,1,・・・,63)として、
図2の逐次順序で出力する。
【0026】
第2のデータ並べ替え処理部12は、第1のバタフライ演算処理部21が逐次順序で出力するデータy(n)を、
図5に示す順序(以降、「電力最適化データ組ビットリバース順序」という。)に並べ替える。「電力最適化データ組ビットリバース順序」は、ビットリバース順序で作成されたs個のデータ組Qsが、サイクルの進行に合わせて出力されるときの順序に係わり、出力順序
設定52によって指定することができる。本実施形態では、電力最適化データ組ビットリバース順序は、Q3、Q5、Q1、Q7、Q0、Q2、Q6,Q4、という順序に指定され、サイクル0にデータ組Q3が、サイクル1にデータ組Q5が、サイクル2にデータ組Q1が、サイクル3にデータ組Q7が、サイクル4にデータ組Q0が、サイクル5にデータ組Q2が、サイクル6にデータ組Q6が、サイクル7にデータ組Q4が、出力される。
【0027】
第2のデータ並べ替え処理部12は、読み出しアドレス生成部41が出力する読み出しアドレス51を入力して、出力順序を決定する。読み出しアドレス生成部41は、CPU(Central Processing Unit)などの上位回路(図示せず)から与えられる出力順序設定52を参照して、第2のデータ並べ替え処理部12に出力する読み出しアドレス51を生成する。
【0028】
ひねり乗算処理部31は、第1のバタフライ演算処理後に、FFT演算における複素平面上の複素回転を処理する回路であり、
図16のデータフロー500における、ひねり乗算処理504に対応する。なお、ひねり乗算処理では、データの並へ替えは行われない。
【0029】
ひねり乗算処理部31は、ひねり係数テーブル31a、及びひねり乗算部31b、から構成される。ひねり係数テーブル31aは、第2のデータ並べ替え処理部12が、「電力最適化データ組ビットリバース順序」で出力するデータy(n)(n=0,1,・・・,63)に対応して、ひねり係数W(n)(n=0,1,・・・,63)を出力する。W(n)はデータy(n)に対応するひねり係数である。従って、ひねり乗算処理部31がひねり係数W(n)を出力する順序は、第2のデータ並べ替え処理部12が並べ替えたデータを出力する順序である「電力最適化データ組ビットリバース順序」で一意に決定される。具体的には、第2のデータ並べ替え処理部12が
図5に示す「電力最適化データ組ビットリバース順序」で出力する場合、ひねり係数テーブル31aは、
図6に示す順序でひねり係数を出力する。
図5、及び
図6から明らかのように、第2のデータ並べ替え処理部12が出力するy(n)に対して、ひねり乗算処理部31が出力するひねり係数W(n)(n=0,1,・・・,63)が対応する。
【0030】
ひねり乗算部31bは、第2のデータ並べ替え処理部12が出力するy(n)とひねり乗算処理部31が出力するひねり係数W(n)とを乗算することでひねり乗算処理を行い、第2のバタフライ演算処理部22に出力する。
【0031】
第2のバタフライ演算処理部22は、
図16のデータフロー500において2段階で行われる基数8のバタフライ演算処理の、2回目のバタフライ演算処理503(第2のバタフライ演算処理)を処理するバタフライ回路である。第2のバタフライ演算処理部22は、基数8バタフライ演算処理部22aから構成され、基数8バタフライ演算処理を処理する。具体的には、第2のバタフライ演算処理部22は、バタフライ演算処理503を構成する#0~#7の8回の基数8バタフライ演算処理を、
図7に示す順序で処理を行う。
【0032】
すなわち、サイクル0では、基数8バタフライ演算処理部22aは、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#3に対応する電力最適化データ組ビットリバース順序のデータ組Q3を入力して、基数8のバタフライ演算処理#3を行う。サイクル1では、基数8バタフライ演算処理部22aは、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#5に対応する電力最適化データ組ビットリバース順序のデータ組Q5を入力して、基数8のバタフライ演算処理#5を行う。サイクル2では、基数8バタフライ演算処理部22aは、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#1に対応する電力最適化データ組ビットリバース順序のデータ組Q1を入力して、基数8のバタフライ演算処理#1を行う。サイクル3では、基数8バタフライ演算処理部22aは、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#7に対応する電力最適化データ組ビットリバース順序のデータ組Q7を入力して、基数8のバタフライ演算処理#7を行う。サイクル4では、基数8バタフライ演算処理部22aは、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#0に対応する電力最適化データ組ビットリバース順序のデータ組Q0を入力して、基数8のバタフライ演算処理#0を行う。サイクル5では、基数8バタフライ演算処理部22aは、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#2に対応する電力最適化データ組ビットリバース順序のデータ組Q2を入力して、基数8のバタフライ演算処理#2を行う。サイクル6では、基数8バタフライ演算処理部22aは、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#6に対応する電力最適化データ組ビットリバース順序のデータ組Q6を入力して、基数8のバタフライ演算処理#6を行う。サイクル7では、基数8バタフライ演算処理部22aは、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#4に対応する電力最適化データ組ビットリバース順序のデータ組Q4を入力して、基数8のバタフライ演算処理#4を行う。
【0033】
第2のバタフライ演算処理部22は、バタフライ演算処理の結果X(k)(k=0,1,・・・,63)を、同じく電力最適化データ組ビットリバース順序で出力する。
【0034】
第1のデータ並べ替え処理部11、及び第2のデータ並べ替え処理部12は、入力されたデータを一旦記憶し、記憶したデータの選択及び出力を制御することによって、
図3のビットリバース順序、
図5の電力最適化データ組ビットリバース順序のそれぞれに従ったデータの並べ替え処理が実現される。以下に、データ並べ替え処理部の具体例を示す。
【0035】
第1のデータ並べ替え処理部11は、例えば
図8に示すデータ並べ替え処理部100で実現することができる。
【0036】
データ並べ替え処理部100は、入力情報103として入力される8個のデータからなるデータ組D0~D7を、FIFOバッファ(First In First Out Buffer。先入れ先出しバッファ)における先入れ順序で2データ組ずつ入力して、データ記憶位置101a~101hに書き込み、記憶する。具体的には、データ記憶位置101a~101hのそれぞれに、データ組D0~D7が記憶される。
【0037】
次に、データ並べ替え処理部100は、FIFOバッファにおける先出し順序で、記憶しているデータを2データ組ずつ出力する。具体的には、データ並べ替え処理部100は、データ読み出し位置102a~102hのそれぞれから8個のデータを読み出して1つのデータ組とし、8つのデータ組D0’~D7’を出力情報104として出力する。このように、データ組D0’~D7’は、サイクル順に並べられたデータ組D0~D7に含まれるデータを、データ位置の順に並べ替えて1つの組としたものである。
【0038】
一方、
図8は、第2のデータ並べ替え処理部12の実現例を示すデータ並べ替え処理部200の構成図である。データ並べ替え処理部200は、入力情報203として入力される8個のデータからなるデータ組P0~P7を、FIFOバッファにおける先入れ順序で2データ組ずつ入力して、データ記憶位置201a~201hに書き込み、記憶する。すなわち、サイクル順に対応するデータ記憶位置201a~201hのそれぞれに、データ組D0~D7が順に記憶される。このとき、記憶されたデータをデータ位置の順、すなわち、データ記憶位置202a~202hの順に見ると、データ記憶位置202a~202hのそれぞれには、データ組D0’~D7’が記憶されている。
【0039】
次に、データ並べ替え処理部200は、記憶しているデータを、読み出し回路205により1データ組ずつ読み出して、出力情報204として出力する。このとき、読み出し回路205は、読み出しアドレス51を参照して、データ記憶位置202a~202hの中からいずれか1つを選択して、データ記憶位置202a~202hに記憶されている8個のデータのいずれか1つを1回の読み出し動作で読み出す。このように、読み出しアドレス51に任意に指定可能な所望の組み合わせ、及び順番で読み出しアドレスを与えることにより、任意の組み合わせ、及び順番でデータを読み出すことができる。例えば、読み出しアドレス51に、アドレス3、5、1、7、0、2、6、4、の順番で読み出しアドレスを与えた場合、データ並べ替え処理部200は、データ組D3’、D5’、D1’、D7’、D0’、D2’、D6’、D4’、の順番で、記憶しているデータを出力する。すなわち、
図5に示した電力最適化データ組ビットリバース順序で、データが出力される。ここで、データ組D0’~D7’は、サイクル順に並べられたデータ組D0~D7に含まれるデータを、データ位置の順に並べ替えて1つの組としたものである。
【0040】
以上説明したように、FFT装置10において、第1のデータ並べ替え処理部11、及び第2のデータ並べ替え処理部12によって、
図2の逐次順序、
図3のビットリバース順序、
図5の電力最適化データ組ビットリバース順序のそれぞれに従った2回の並べ替え処理が行われる。
【0041】
第1のデータ並べ替え処理部11、及び第2のデータ並べ替え処理部12のそれぞれを、以上のように制御することによって、第1のバタフライ演算処理部21、及び第2のバタフライ演算処理部22が処理する基数8バタフライ演算処理の処理順序を、
図4及び
図7にそれぞれ示した順序に制御することができる。その結果、次段の処理に必要な複数のデータを同じタイミングで出力することができるので、さらにデータの並べ替えを行う必要がない。以下に、第2のデータ並べ替え処理部12におけるデータの並べ替え、及び第2のバタフライ演算処理部22における処理順序を例として、説明する。
【0042】
図1に示したFFT装置10を用いて、8データ並列で64ポイントFFT処理を行う場合を例として説明する。FFT装置10は、時間領域のデータx(n)(n=0,1,・・・,63)を入力し、FFT処理によりフーリエ変換した周波数領域の信号X(k)(k=0,1,・・・,63)を生成して出力する。入力データx(n)は、8データずつ8サイクルの期間に、
図2に示す逐次順序で入力され、合計で64個のデータx(n)が入力される。なお、
図2には、x(n)の添え字nのみが表記されている。
【0043】
具体的には、0サイクル目に、データ組P0を構成するx(0),x(1),・・・,x(7)の8データが入力される。そして、1サイクル目に、及びデータ組P1を構成するx(8),x(9),・・・,x(15)の8データが入力される。以降同様に、2サイクル目から7サイクル目に、データ組P2~P7を構成するデータが入力される。
【0044】
一方、出力データX(k)は、8データずつ8サイクルの期間に、例えば
図5に示す電力最適化データ組ビットリバース順序で、合計64個のデータを出力する。なお、
図5には、X(k)の添え字kのみが表記されている。具体的には、各サイクルにおいて、以下のデータが出力される。
サイクル0に、データ組Q3を構成するX(3),X(11),・・・,X(59)の8データが出力される。
サイクル1に、データ組Q5を構成するX(5),X(13),・・・,X(61)の8データが出力される。
サイクル2に、データ組Q1を構成するX(1),X(9),・・・,X(57)の8データが出力される。
サイクル3に、データ組Q7を構成するX(7),X(15),・・・,X(63)の8データが出力される。
サイクル4に、データ組Q0を構成するX(0),X(8),・・・,X(56)の8データが出力される。
サイクル5に、データ組Q2を構成するX(2),X(10),・・・,X(58)の8データが出力される。
サイクル6に、データ組Q6を構成するX(6),X(14),・・・,X(62)の8データが出力される。
サイクル7に、データ組Q4を構成するX(4),X(12),・・・,X(60)の8データが出力される。
【0045】
このように、添え字k1、k2の合計が、FFTのポイント数に対応する64になるような、2個の出力データX1(k1)、X2(k2)は、常に連続したサイクルに出力される。すなわち、FFT装置10は、1以上のN-1以下の任意の添え字kに対して、出力X(k)とX(N-k)(N=64)とを、高々1サイクル以内の時間差で出力することができる。
【0046】
以上説明したように、本実施形態では、サイクル0~7において、データ組Q3、Q5、Q1、Q7、Q0、Q2、Q6、Q4、の順序で出力することで、出力X(k)とX(N-k)(N=64)とを、高々1サイクル以内の時間差で出力することを実現している。ところで、出力X(k)とX(N-k)(N=64)とを、高々1サイクル以内の時間差で出力可能なデータ組の順序は本実施形態の順序の他にも複数存在し、例えば、データ組Q0、Q7、Q1、Q6、Q2、Q5、Q3、Q4、の順序や、データ組Q0、Q7、Q2、Q5、Q3、Q4、Q1、Q6、の順序で出力しても、出力X(k)とX(N-k)(N=64)とを、高々1サイクル以内の時間差で出力することができる。以降、これら、出力X(k)とX(N-k)(N=64)とを、高々1サイクル以内の時間差で出力することができる順序を「最適化データ組ビットリバース順序」という。
【0047】
ここで、本実施形態が採用するデータ組Q3、Q5、Q1、Q7、Q0、Q2、Q6、Q4、の順序である「電力最適化データ組ビットリバース順序」と、データ組Q0、Q7、Q1、Q6、Q2、Q5、Q3、Q4、等の順序である「最適化データ組ビットリバース順序」との違いについて説明する。
【0048】
本実施形態において、FFT装置10の出力順序は、第2のデータ並べ替え処理部12の出力順序である電力最適化データ組ビットリバース順序で決定される。同様に、本実施形態のひねり乗算処理部31がひねり係数W(n)を出力する順序は、第2のデータ並べ替え処理部12の出力順序である電力最適化データ組ビットリバース順序で決定され、具体的には
図6で示す順序で出力する。
【0049】
ひねり係数W(n)の値はFFT処理に固有の値であり、FFT装置10が入力するデータの値には依存しない。
図6においてデータ組W0~W7は、それぞれws(0)からws(7)までの8個のデータからなり、ws(0)からws(7)の値は、サイクル0~サイクル7まで、電力最適化データ組ビットリバース順序である、W3、W5、W1、W7、W0、W2、W6、W4、の順序に応じて変化する。ここで、ひねり乗算処理部31の消費電力について着目すると、このws(0)からws(7)までの8個のデータの値の変化の大きさが、消費電力に大きく影響する。具体的には、ひねり係数W(n)を2進数で表現した2進数値において、ws(0)からws(7)までの8個のデータのビット単位の動作率(トグル率)が、消費電力に大きく影響する。なぜなら、CMOS(Complementary Metal Oxide Semiconductor)回路により実現したデジタル信号処理回路の動的な消費電力(ダイナミック電力)Pは、下記に示す式(1)で表現することができ、
P=(1/2)*a*C*V2*f ・・・ (1)
ここで、
a:回路動作率、
C:負荷容量、
V:電圧、
f:動作周波数
ws(0)からws(7)までの8個のデータのビット単位の動作率が、回路動作率aに大きく影響するからである。すなわち、ws(0)からws(7)までの8個のデータのビット単位の動作率が小さくなる出力順序を選択することが、ひねり乗算処理部31の消費電力の低減に有効である。
【0050】
ws(0)からws(7)までの8個のデータのビット単位の動作率が小さくなる出力順序を選択する具体的な方法として、ハミング距離を指標とする方法がある。ハミング距離は2つのデータ間の距離であり、2進数データの場合、2つの2進数データで異なっているビット数に等しい。すなわち、あるひねり係数データが変化した場合の動作率は、変化前の係数データ値と変化後の係数データ値とのハミング距離に等しい。従って、ひねり係数W(n)に関する動作率は、FFT処理中のひねり係数W(n)に関するハミング距離の総和により算出することができる。
【0051】
例えば、
図6に示した電力最適化データ組ビットリバース順序によるひねり係数W(n)に関する動作率は、ひねり係数W(i)とW(j)とのハミング距離をHamming(i,j)、データws(i)に関するハミング距離をH(i)と表記すると、データws(0)は、サイクル0ではW(3)、サイクル1ではW(5)、サイクル2ではW(1)、サイクル3ではW(7)、サイクル4ではW(0)、サイクル5ではW(2)、サイクル6ではW(6)、サイクル7ではW(4)であるので、
H(0)=Hamming(3,5)+Hamming(5,5)+Hamming(1,7)+Hamming(7,0)+Hamming(0,2)+Hamming(2,6)+Hamming(6,4)
により算出することができる。
【0052】
同様に、H(1)~H(7)について、
H(1)=Hamming(11,13)+Hamming(13,9)+Hamming(9,15)+Hamming(15,8)+Hamming(8,10)+Hamming(10,14)+Hamming(14,12)
H(2)=Hamming(19,21)+Hamming(21,17)+Hamming(17,23)+Hamming(23,16)+Hamming(16,18)+Hamming(18,22)+Hamming(22,20)
H(3)=Hamming(27,29)+Hamming(29,25)+Hamming(25,31)+Hamming(31,24)+Hamming(24,26)+Hamming(26,30)+Hamming(30,28)
H(4)=Hamming(35,37)+Hamming(37,33)+Hamming(33,39)+Hamming(39,32)+Hamming(32,34)+Hamming(34,38)+Hamming(38,36)
H(5)=Hamming(43,45)+Hamming(45,41)+Hamming(41,47)+Hamming(47,40)+Hamming(40,42)+Hamming(42,46)+Hamming(46,44)
H(6)=Hamming(51,53)+Hamming(53,49)+Hamming(49,55)+Hamming(55,48)+Hamming(48,50)+Hamming(50,54)+Hamming(54,52)
H(7)=Hamming(59,61)+Hamming(61,57)+Hamming(57,63)+Hamming(63,56)+Hamming(56,58)+Hamming(58,62)+Hamming(62,60)
により算出することができる。
【0053】
従って、ひねり係数W(n)に関する動作率Aは、ひねり係数W(n)に関するハミング距離の総和Pから
A=P=H(0)+H(1)+H(2)+H(3)+H(4)+H(5)+H(6)+H(7)
で求められる。
【0054】
本実施形態の「電力最適化データ組ビットリバース順序」は、出力X(k)とX(N-k)(N=64)とを、高々1サイクル以内の時間差で出力することができる順序である「最適化データ組ビットリバース順序」の複数の候補の中から、このひねり係数W(n)に関する動作率Aが最も小さい順序を選択したものである。すなわち、本実施形態の「電力最適化データ組ビットリバース順序」は、「最適化データ組ビットリバース順序」の複数の候補の中で、ひねり係数W(n)を出力するひねり係数テーブル31aに係わる消費電力が最も小さい順序といえる。
【0055】
一方、ひねり乗算処理部31を構成するひねり乗算部31bは、ひねり係数W(n)の動作率に加えて、第2のデータ並べ替え処理部12が出力するy(n)の動作率が影響するが、FFT装置10は任意のデータを入力するため、y(n)の動作率は、y(n)が出力される順序に係わらず、長期的には一定であると考えられる。同様に、FFT装置10を構成するデータ並べ替え処理部やバタフライ演算処理部についても、FFT装置10は任意のデータを入力するため、それら処理部の動作率は、処理の順序に係わらず、長期的には一定であると考えられる。従って、本実施形態の「電力最適化データ組ビットリバース順序」は、「最適化データ組ビットリバース順序」の複数の候補の中で、FFT装置10の消費電力が最も小さい順序といえる。
【0056】
(第1の実施形態の効果)
以上のように、本実施形態では、FFT装置10は、出力順序設定52を用いて順序を指定することによって、任意の順序でデータを出力することができる。
【0057】
例えば、FFT装置10の後段において、出力データX(k)(k=0,1,・・・,N-1)に対して、1以上のN-1以下の任意の添え字kに対して、X(k)とX(N-k)との間で演算をする場合、X(k)とX(N-k)とを高々1サイクル以内の時間差で出力することができる。その結果、出力に対する新たな並べ替えを行うための回路の追加を必要としない。
【0058】
また、出力データを出力する順序を指定可能とするために、追加すべき回路は、読み出しアドレス生成部41のみであり、回路規模としては非常に小さい。
【0059】
従って、後段の処理を含め、全体としての処理レイテンシや回路規模、及び消費電力の増大を抑制することができる。
【0060】
さらに本実施形態は、ひねり乗算処理に係わる電力が最小となる順序で処理を行う。その結果、FFT処理全体の消費電力を低減することができる。
【0061】
なお、本実施形態では、FFT処理を例として説明したが、IFFTにおいても同様である。すなわち、本実施形態の制御方法をIFFT処理装置に適用して、IFFT処理の後段の処理内容を考慮して処理結果の出力順序を最適化すれば、IFFT処理の後段の処理を高速化することができる。
【0062】
(第2の実施形態)
図10は、本発明の第2の実施形態に係るデジタルフィルタ回路400の構成を示すブロック図である。デジタルフィルタ回路400は、FFT回路413、IFFT回路414、複素共役生成回路415、複素共役合成回路416、フィルタ回路421、フィルタ回路422、フィルタ係数生成回路441、を備える。
【0063】
デジタルフィルタ回路400は、時間領域における複素数信号
x(n)=r(n)+js(n) ・・・(1)
を入力する。
【0064】
FFT回路413は、入力された複素数信号x(n)を、FFTにより周波数領域の複素数信号431
X(k)=A(k)+jB(k) ・・・(2)
に変換する。
【0065】
ここで、nは時間領域上の信号サンプル番号を示す0≦n≦N-1の整数、NはFFTの変換サンプル数を示す0<Nの整数、kは周波数領域上の周波数番号を示す0≦k≦N-1の整数である。
【0066】
また、FFT回路413は、X(k)から、
X(N-k)=A(N-k)+jB(N-k) ・・・(3)
を生成して出力する。
【0067】
複素共役生成回路415は、0≦k≦N-1の周波数番号kのそれぞれについて、FFT回路413が出力するX(N-k)を入力し、X(N-k)の複素共役
X*(N-k)=A(N-k)-jB(N-k) ・・・(4)
を生成する。
【0068】
複素共役生成回路415は、入力した複素数信号X(k)を複素数信号432として出力し、生成した複素数信号X*(N-k)を複素数信号433として出力する。
【0069】
次に、フィルタ係数生成回路441は、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)
を生成する。
【0070】
ここで複素数係数V(k)、W(k)、及びH(k)は、デジタルフィルタ回路400の上位回路(図示せず)から与えられる周波数領域での係数で、時間領域での実数演算によるフィルタ処理を行った場合の、実数フィルタ係数に対応する。V(k)、W(k)、及びH(k)の詳細に関しては後述する。
【0071】
フィルタ係数生成回路441は、生成した複素数係数C1(k)を複素数信号445として出力する。また、フィルタ係数生成回路441は、複素数信号C2(k)(式(6))から複素数信号C2(N-k)を生成し、複素数信号446として出力する。
【0072】
次に、フィルタ回路421は、複素共役生成回路415が複素数信号432に出力するX(k)(式(2))に対して、フィルタ係数生成回路441が複素数信号445に出力するC1(式(5))を用いて、複素数乗算による複素数フィルタ処理を行う。具体的には、フィルタ回路421は、0≦k≦N-1の周波数番号kのそれぞれについて、複素数信号
X’(k)=X(k)×C1(k) ・・・(7)
を計算して、複素数信号434として出力する。
【0073】
同様に、フィルタ回路422は、複素共役生成回路415が複素数信号433に出力するX*(N-k)(式(4))に対して、フィルタ係数生成回路441が複素数信号446に出力するC2(N-k)(式(6))を用いて、複素数乗算による複素数フィルタ処理を行う。具体的には、フィルタ回路422は、0≦k≦N-1の周波数番号kのそれぞれについて、複素数信号
X*’(N-k)=X*(N-k)×C2(N-k) ・・・(8)
を計算して、複素数信号435として出力する。
C1(k)、C2(k)は、それぞれ、実数部と虚数部に分けて、
C1(k)=C1I(k)+jC1Q(k) ・・・(9)
C2(k)=C2I(k)+JC2Q(k) ・・・(10)
と書くことができる。
【0074】
次に、複素共役合成回路416は、フィルタ回路421が複素数信号434に出力するX'(k)(式(7))と、フィルタ回路422が複素数信号435に出力するX*'(N-k)(式(8))とを合成した複素数信号X"(k)を生成する。具体的には、複素共役合成回路416は、0≦k≦N-1の周波数番号kのそれぞれについて、
X"(k)=1/2×{X'(k)+X*'(N-k)} ・・・(11)
を計算して、複素数信号436として出力する。
【0075】
次に、IFFT回路414は、0≦k≦N-1の周波数番号kのそれぞれについて、複素共役合成回路416が複素数信号436に出力するX”(k)(式(11))に対して、IFFTにより時間領域の複素数信号x”(n)を生成して出力する。
【0076】
FFT回路413の実現方法として、本発明の第1の実施形態に係るFFT回路10を使用することができる。あるいは、FFT回路413の実現方法として、本発明の第2の実施形態に係るFFT回路20を使用することができる。
【0077】
図11は、複素共役生成回路415の構成の詳細を示すブロック図である。複素共役生成回路415は、FFT回路413の出力に含まれるX(k)(=A(k)+jB(k)。式(2))を入力してそのまま出力する。さらに、複素共役生成回路415は、FFT回路413の出力に含まれる出力X(N-k)(=A(N-k)+jB(N-k)。式(3))を入力して、
X
*(N-k)=A(N-k)-jB(N-k) ・・・(4)
を計算して出力する。
X(k)、X
*(N-k)は、それぞれ、実数部と虚数部に分けて、
X(k)=XI(k)+jXQ(k) ・・・(12)
X
*(N-k)=X
*I(N-k)+jX
*Q(N-k) ・・・(13)
と書くことができる。
【0078】
図12は、フィルタ回路421の構成の詳細を示すブロック図である。フィルタ回路421は、複素共役生成回路415が複素信号線432に出力する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)
を計算して出力する。
ここで、XI’(k)及びXQ’(k)は、それぞれX’(k)の実数部と虚数部であり、次式で与えられる。
XI’(k)=XI(k)×C1I(k)-XQ(k)×C1Q(k) ・・・(15)
XQ’(k)=XI(k)×C1Q(k)+XQ(k)×C1I(k) ・・・(16)
【0079】
図13は、フィルタ回路422の構成の詳細を示すブロック図である。フィルタ回路422は、複素共役生成回路415が複素信号線433に出力する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)
を計算して出力する。
ここで、X
*I’(N-k)及びX
*Q’(N-k)は、それぞれX
*’(N-k)の実数部と虚数部であり、次式で与えられる。
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)
【0080】
図14は、複素共役合成回路416の構成の詳細を示すブロック図である。複素共役合成回路416は、0≦k≦N-1の周波数番号kのそれぞれについて、フィルタ回路421が
複素信号線434に出力するX'(k)(=XI'(k)+jXQ'(k)。式(14))と、フィルタ回路422が複素数信号435に出力する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)
を計算して出力する。
ここで、XI"(k)及びXQ"(k)は、それぞれX"(k)の実数部と虚数部であり、次式で与えられる。
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)の通りである。
【0081】
フィルタ係数生成回路441は、フィルタ回路421、422で用いられる複素数係数C1(k)、C2(k)を生成する。
図18は、フィルタ係数生成回路441の構成の詳細を示すブロック図である。フィルタ係数生成回路441は、0≦k≦N-1の周波数番号kのそれぞれについて、上位回路(図示せず)から入力された複素数係数V(k)、W(k)から、V(k)+W(k)及びV(k)-W(k)を計算する。
ここで、
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)の実数部と虚数部である。
また、H(k)も実数部と虚数部とに分けて、
H(k)=HI(k)+jHQ(k) ・・・(25)
と書くことができる。
【0082】
次に、フィルタ係数生成回路441は、以下の式で定義された複素数係数C1(k)及びC2(k)を計算して出力する。
C1(k)=C1I(k)+jC1Q(k)
={V(k)+W(k)}×H(k) ・・・(26)
C2(k)=C2I(k)+jCQ(k)
={V(k)-W(k)}×H(k) ・・・(27)
ここで、C1I(k)、C1Q(k)は、それぞれC1(k)の実数部と虚数部であり、C2I(k)、C2Q(k)は、それぞれC2(k)の実数部と虚数部である。
式(26)に式(23)及び式(25)を代入して、
C1(k)={VI(k)+WI(k)+jVQ(k)+jWQ(k)}×{HI(k)+jHQ(k)}・・・(28)
である。
従って、
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)
である。
同様に、式(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)
である。
従って、
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)
である。
【0083】
以上のように、デジタルフィルタ回路400は、時間領域の入力信号をFFT変換して周波数領域の複素数信号を生成する。そして、デジタルフィルタ回路400は、周波数領域の複素数信号の実数部、虚数部のそれぞれを、V(k)、W(k)、H(k)から生成された2種類の係数を用いて独立にフィルタ処理し、その結果をIFFTによって時間領域の信号に変換する。このように、デジタルフィルタ回路400では、FFTとIFFTは、それぞれ、時間領域の入力信号に対して1回のみ実行される。
【0084】
フィルタ処理に用いられる2種類の係数が、FFT及びIFFTの回数の最小化を可能にする。以下に、V(k)、W(k)、H(k)の物理的な意味と、これらから生成された係数C1(k)及びC2(k)を用いたフィルタ処理により、時間領域での所望のフィルタ処理と同等の、周波数領域でのフィルタ処理が可能となる原理を説明する。
【0085】
本実施形態では、入力する時間領域の複素数信号x(n)(=r(n)+js(n)。式(1))を複素FFTした周波数領域の複素数信号
X(k)=R(k)+jS(k) ・・・(34)
から、複素共役生成回路15がX*(N-k)を生成する。
ここで、R(k)は、時間領域における実数の実数部信号r(n)が実数FFTにより変換された周波数領域の複素数信号、S(k)は時間領域における実数の虚数部信号s(n)が実数FFTにより変換された周波数領域の複素数信号である。このとき、複素共役の対称性から次式が成立する。
X*(N-k)=R(k)-jS(k) ・・・(35)
ここで、X*(N-k)は、X(N-k)の複素共役である。
式(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)
となる。
また、式(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)
となる。
式(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)
となる。
【0086】
式(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)から、デジタルフィルタ回路400は、複素数信号x(n)=r(n)+js(n)が実数FFTにより変換されて生成された、周波数領域の複素数信号X(k)(=R(k)+jS(k)。式(34))に対して、以下の3つのフィルタ処理と同等の処理を行うことがわかる。
【0087】
1)R(k)に対する係数V(k)によるフィルタ処理
まず、デジタルフィルタ回路400は、時間領域における実数部信号r(n)が実数FFTにより変換された周波数領域の複素数信号R(k)に対して、フィルタ係数V(k)によるフィルタ処理を行う。従って、V(k)には、実数部信号r(n)に対して時間領域で実数演算によるフィルタ処理を行った場合の、実数フィルタ係数に対応する、周波数領域での複素数フィルタ係数が割り当てられる。
【0088】
2)S(k)に対する係数W(k)によるフィルタ処理
同様に、デジタルフィルタ回路400は、時間領域における虚数部信号s(n)が実数FFTにより変換された周波数領域の複素数信号S(k)に対して、フィルタ係数W(k)によるフィルタ処理を行う。従って、W(k)には、虚数部信号s(n)に対して時間領域で実数演算によるフィルタ処理を行った場合の、実数フィルタ係数に対応する、周波数領域での複素数フィルタ係数が割り当てられる。
【0089】
3)1)、2)のフィルタ処理結果に対する係数H(k)によるフィルタ処理
次に、デジタルフィルタ回路400は、それぞれ独立に処理された上記の2つのフィルタ処理後の、R(k)V(k)及びS(k)W(k)からなる複素数信号R(k)V(k)+jS(k)W(k)に対して、フィルタ係数H(k)によるフィルタ処理を行う。
【0090】
R(k)V(k)+jS(k)W(k)は、時間領域における実数部信号r(n)及び虚数部信号s(n)のそれぞれに独立にフィルタ処理した2つの信号からなる時間領域の信号に対応する、周波数領域の複素数信号である。実数部信号r(n)及び虚数部信号s(n)をそれぞれに独立にフィルタ処理した信号とは、
図12、13における、X’(k)、X
*’(N-k)に相当する。そして、r’(n)、s’(n)からなる時間領域の信号とは、
図10のx”(n)に相当する。このように、R(k)V(k)+jS(k)W(k)は、時間領域において実数部及び虚数部のそれぞれに独立にフィルタ処理した時間領域の信号に対応する、周波数領域の信号である。
【0091】
従って、時間領域における複素数信号に対する複素数演算によるフィルタ処理に相当する処理を、周波数領域の信号R(k)V(k)+jS(k)W(k)に対して行うには、次のような係数を用いればよい。すなわち、H(k)には、複素数信号x(n)に対して時間領域で複素数演算によるフィルタ処理を行った場合の、複素数フィルタ係数に対応する、周波数領域での複素数フィルタ係数が割り当てればよい。
【0092】
以上のように、本実施形態では、外部から3種類の係数が設定される。すなわち、複素数信号x(n)の実数部及び虚数部のそれぞれに対する時間領域でのフィルタ係数に対応する周波数領域のフィルタ係数V(k)、W(k)と、x(n)に対する時間領域でのフィルタ係数に対応する周波数領域の係数H(k)が設定される。以上の3つの係数から求めた2つの係数を用いたフィルタ処理を行うことにより、フィルタ処理の前のFFT及びフィルタ処理後のIFFTをそれぞれ1回のみとすることができる。
【0093】
(第2の実施形態の効果)
以上のように、本実施形態によれば、複素数信号の実数部及び虚数部のそれぞれに対する時間領域でのフィルタ係数に対応する、2種類の周波数領域のフィルタ係数と、複素信号に対する時間領域でのフィルタ係数に対応する周波数領域の係数を用いたフィルタ処理が行われる。すなわち、時間領域における複素数信号の実数部及び虚数部のそれぞれに対する実数演算による独立したフィルタ処理と、時間領域における複素数信号に対する複素数演算によるフィルタ処理と、に対応する周波数領域におけるフィルタ処理が行われる。従って、フィルタ処理前のFFTを行うFFT回路及びフィルタ処理後のIFFTを行うIFFT回路を、それぞれ1個のみを用いて、所望のフィルタ処理を実現することができる。その結果、フィルタ処理を行うための回路規模や消費電力の低減を図ることができるという効果がある。
【0094】
さらに、FFT回路、IFFT回路の実現に、本発明の第1の実施形態に係るFFT回路10、あるいは、本発明の第2の実施形態に係るFFT回路20を使用することができる。前述のように、本発明の実施形態に係るFFT回路は、1以上のN-1以下の任意の添え字kに対して、X(k)とX(N-k)とを同じサイクルに出力することができる。そのため、フィルタ処理において、並べ替えを行うための回路の追加を必要としない。従って、本発明の実施形態に係るFFT回路をフィルタ処理に用いることによって、フィルタ処理を行うための回路規模や消費電力の削減することができるという効果がある。
【0095】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【0096】
10 FFT装置
11、12 データ並べ替え処理部
21、22 バタフライ演算処理部
21a、22a 基数8バタフライ演算処理部
31 ひねり乗算処理部
41 読み出しアドレス生成部
51 読み出しアドレス
52 出力順序設定
100、200 データ並べ替え処理部
101a~101h データ記憶位置
102a~102h データ読み出し位置
201a~201h データ記憶位置
202a~202h データ読み出し位置
400 デジタルフィルタ回路
413 FFT回路
414 IFFT回路
415 複素共役生成回路
416 複素共役合成回路
421 フィルタ回路
422 フィルタ回路
431~436 複素数信号
441 フィルタ係数生成回路
445、446 複素数信号
500 データフロー
501 データ並べ替え処理
502、503 バタフライ演算処理
504 ひねり演算処理
505 部分データフロー
600 FFT装置
601 FFT部
602 データ並べ替え処理部