(57)【特許請求の範囲】
【請求項１】
高速フーリエ変換又は逆高速フーリエ変換を行って、複数の第１の出力データを生成し、第１の順序で出力する第１の変換手段と、
前記第１の順序で出力された前記複数の第１の出力データを、第１の移動量に基づく出力順序設定に従って第２の順序に並べ替える第１のデータ並べ替え処理手段と、
を備え、
前記第１の移動量は、前記第１の変換手段が高速フーリエ変換を行うときは周波数の移動量であり、前記第１の変換手段が逆高速フーリエ変換を行うときは時間の移動量である
高速フーリエ変換装置。
【請求項２】
前記第１の変換手段は、バタフライ演算処理を行い、前記第１の順序で前記複数の第１の出力データを出力するバタフライ演算処理手段を含み、
前記第１のデータ並べ替え処理手段は、前記バタフライ演算処理後の前記複数の第１のデータを前記第２の順序に並べ替える
ことを特徴とする請求項１に記載の高速フーリエ変換装置。
【請求項３】
前記第１のデータ並べ替え処理手段は、
前記複数の第１の出力データを記憶する第１の記憶手段と、前記移動量設定に基づいて、前記第１の記憶手段からの前記複数の第１の出力データの読み出しアドレスを生成する読み出しアドレス生成手段とを備え、
前記複数の第１の出力データを前記第１の順序で記憶し、前記第２の順序で読み出すこと
を特徴とする請求項１又は２に記載の高速フーリエ変換装置。
【請求項４】
前記複数の第１の出力データをＸ（ｋ）（ｋは０≦ｋ≦Ｎ−１の整数、ＮはＮ＞０の高速フーリエ変換又は逆高速フーリエのポイント数）とするとき、前記第１のデータ並べ替え処理手段は、前記出力設定が指定する順序で出力すること
を特徴とする請求項１乃至３のいずれかに記載の高速フーリエ変換装置。
【請求項５】
第３の順序で入力される複数の第２の入力データを、第２の移動量に基づく入力順序設定に従って第４の順序に並べ替える第２のデータ並べ替え処理手段と、
前記第４の順序に並べ替えられた前記複数の第２の入力データに対して、高速フーリエ変換又は逆高速フーリエ変換を行う第２の変換手段と、
を備え、
前記第２の移動量は、前記第２の変換手段が高速フーリエ変換を行うときは時間の移動量であり、前記第２の変換手段が逆高速フーリエ変換を行うときは周波数の移動量である高速フーリエ変換装置。
【請求項６】
前記第２の変換手段は、バタフライ演算処理を行うバタフライ演算処理手段を含み、前記第２のデータ並べ替え処理手段は、前記第４の順序で前記バタフライ演算処理手段に前記複数の第２の入力データを入力することを特徴とする請求項５に記載の高速フーリエ変換装置。
【請求項７】
前記第２のデータ並べ替え処理手段は、前記複数の第２の入力データを記憶する第２の記憶手段と、前記入力順序設定に基づいて、前記第２の記憶手段への前記複数の第２の入力データの書き込みアドレスを生成する書き込みアドレス生成手段とを備え、前記複数の第２の入力データを前記第３の順序で記憶し、前記第４の順序で読み出すことを特徴とする請求項５又は６に記載の高速フーリエ変換装置。
【請求項８】
請求項１又は５に記載の高速フーリエ変換装置を含むデジタルフィルタ装置。
【請求項９】
高速フーリエ変換装置が備えるコンピュータを、
高速フーリエ変換又は逆高速フーリエ変換を行う手段、及び
前記高速フーリエ変換若しくは前記逆高速フーリエ変換により生成された複数の出力データの、第１の移動量設定に基づく出力順序設定に従って並べ替える並べ替え手段、又は前記高速フーリエ変換若しくは前記逆高速フーリエ変換の複数の入力データの、第２の移動量設定に基づく入力順序設定に従って並べ替える並べ替え手段
として機能させ、
前記第１の移動量は、前記コンピュータを前記高速フーリエ変換を行う手段として機能させるときは周波数の移動量であり、前記コンピュータを前記逆高速フーリエ変換を行う手段として機能させるときは時間の移動量である、
高速フーリエ変換プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル信号処理における演算処理に関し、特に高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラムが記憶された記憶媒体に関する。
【背景技術】
【０００２】
デジタル信号処理において重要な処理の１つとして、高速フーリエ変換（Fast Fourier Transform。以降、「ＦＦＴ」という。）処理がある。そして、無線通信や有線通信における信号伝送中の波形歪みを補償する技術の１つとして、例えば、周波数領域等化（Frequency domain equalization（ＦＤＥ））技術が知られている。周波数領域等化では、まず高速フーリエ変換により時間領域上の信号データが周波数領域上のデータに変換され、次に等化のためのフィルタ処理が行われる。そして、フィルタ処理後のデータは、逆高速フーリエ変換（Inverse ＦＦＴ。以降、「ＩＦＦＴ」という。）により時間領域上の信号データに再変換されることによって、元の時間領域上の信号の波形歪みが補償される。以降、ＦＦＴとＩＦＦＴを区別しないときは、「ＦＦＴ／ＩＦＦＴ」と表記する。【０００３】
一般に、ＦＦＴ／ＩＦＦＴ処理では、「バタフライ演算」が用いられる。バタフライ演算を用いたＦＦＴ装置については、例えば特許文献１に記載がある。特許文献１には、後述の「ひねり乗算」、すなわち、ひねり係数を用いた乗算についても記載されている。【０００４】
効率的なＦＦＴ／ＩＦＦＴ処理方式としては、例えば非特許文献１に記載されたCooley-Tukeyによるバタフライ演算が有名である。しかし、Cooley-TukeyによるＦＦＴ／ＩＦＦＴ処理方式はポイント数が大きいので、当該処理方式を実現するための回路が複雑になる。そのため、例えば非特許文献２に記載されたPrime Factor法を用いて２つの小さなＦＦＴ／ＩＦＦＴに分解して、ＦＦＴ／ＩＦＦＴ処理が行われる。【０００５】
図１４は、例えばPrime Factor法を利用して基数を８とする２段階のバタフライ処理に分解された、６４ポイントＦＦＴのデータフロー５００を示す。データフロー５００は、データ並べ替え処理５０１、バタフライ演算処理５０２、５０３からなる延べ１６回の基数８のバタフライ演算処理、ひねり乗算処理５０４を含む。【０００６】
図１４に示すデータフローでは、入力された時間領域のデータｘ(n)（n＝0，1，・・・ ，63）が、ＦＦＴ処理により、周波数領域の信号Ｘ(k)（k＝0，1，・・・，63）にフーリエ変換される。図１４に示す例では、一部のデータフローの図示は省略されている。なお、図１４に示すデータフローは、ＩＦＦＴ処理を行う場合についても、基本構成は同じである。【０００７】
図１４に示すデータフローのすべてを回路で実現するためには、膨大な規模の回路を要する。そのため、必要な処理性能に応じて、データフローの一部分の処理を実現する回路を繰り返し使用することで、ＦＦＴ処理の全体を実現する方法が一般的である。【０００８】
例えば、図１４に示すデータフローにおいて、８個のデータに対して並列に（以降、単に「８データ並列で」という。）ＦＦＴ処理を行うＦＦＴ装置を物理的な回路として作成した場合、合計８回の繰り返し処理により６４ポイントＦＦＴ処理を実現することができる。【０００９】
８回の繰り返し処理は、８個のデータに対して行われる部分データフロー５０５ａ〜５０５ｈの、それぞれにあたる処理が順に行われるものであり、具体的には、次のように行われる。すなわち、１回目には、部分データフロー５０５ａに相当する処理が、２回目には、部分データフロー５０５ｂに相当する処理が、３回目には、部分データフロー５０５ｃ（図示せず）に相当する処理が行われる。以降同様に、８回目の部分データフロー５０５ｈに相当する処理までが順に行われる。以上の処理により、６４ポイントＦＦＴ処理が実現される。【００１０】
バタフライ演算では、逐次的な順序に並べられたデータが、所定の規則に従った順序で読み出され、処理される。そのため、バタフライ演算では、データの並べ替えが必要であり、そのためにはＲＡＭ（Random Access Memory）が用いられる。バタフライ演算においてＲＡＭを用いたデータの並べ替えを行うＦＦＴ装置については、例えば特許文献２に記載がある。【００１１】
また、メモリ使用量を削減したＦＦＴ演算装置については、バタフライ演算の並列処理による高速化技術が、例えば特許文献３に記載されている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開平８−１３７８３２号公報  （第３−５頁、図２５）
【特許文献２】特開２００１−５６８０６号公報  （第５頁、図１）
【特許文献３】特開２０１２−２２５００号公報  （第５頁、図１）
【非特許文献】
【００１３】
【非特許文献１】J.W.Cooley, J.W.Tukey, "An Algorithm for the Machine Calculation of Complex Fourier Series," Mathematics of Computation, US,American Mathematical Society, Apr. 1965, Vol.19, No. 90, pp. 297-301
【非特許文献２】D.P.Kolba, "A Prime Factor FFT Algorithm Using High-Speed Convolution," IEEE Trans. on Acoustics, US, IEEE Signal Processing Society, Aug. 1977, Vol.29, No.4 , pp. 281-294
【発明の概要】
【発明が解決しようとする課題】
【００１４】
デジタルフィルタの用途の１つに「周波数オフセット補償処理」がある。周波数オフセット補償処理は、周波数軸上で周波数スペクトルを移動させることにより実現することができる。そのため、周波数オフセット補償処理は、周波数領域フィルタに、より効率的に実装することができ、ＦＤＥ処理等に利用されている。【００１５】
具体例として、時間領域の信号ｘ(n) （ｎは離散的な時間を示す時間番号。n＝0，1，・・・，N−1。Ｎは自然数。）がＦＦＴによりフーリエ変換された周波数領域の信号Ｘ(k)（ｋは離散的な周波数を示す周波数番号。k＝0，1，・・・，N−1）に、周波数オフセット補償を行う場合について説明する。補償量Ｄ（Ｄは整数）だけ周波数オフセット補償を行うためには、周波数番号ｋの値を補償量Ｄだけシフトさせればよい。従って、補償量Ｄの周波数オフセットが付加された周波数領域の信号Ｘ'(k)（k＝0，1，・・・，N−1）は、Ｄの符号によりそれぞれ以下の通りとなる。
１）Ｄ＞０の場合（高周波数方向へシフトさせるためのオフセット付加）
Ｘ'(k)＝Ｘ(k−D＋N)      (0≦k＜D のとき)
Ｘ(k−D)         (D≦k＜N／2 のとき)
０               (N／2≦k＜N／2＋D のとき)
Ｘ(k−D)         (N／2＋D≦k＜N のとき)
２）Ｄ＜０の場合（低周波数方向へシフトさせるためのオフセット付加）
Ｘ'(k)＝Ｘ(k−D)         (0≦k＜N／2＋D のとき)
０               (N／2＋D≦k＜N／2 のとき)
Ｘ(k−D)         (N／2≦k＜N＋D のとき)
Ｘ(k−D−N)      (N＋D≦k＜N のとき)
３）Ｄ＝０の場合（シフトなし）
Ｘ'(k)＝Ｘ(k)            (0≦k＜N)
このように、周波数オフセット補償後の信号の周波数番号には、補償前の信号の周波数番号に対して、周波数番号の値に応じた所定のずれが生じる。通常、周波数領域における信号処理は、ある周波数番号の処理を１サイクルとして、周波数番号の順に行われる。そのため、周波数オフセット補償後の信号Ｘ'(k)の処理と、補償前の信号Ｘ(k)の処理とは、同じサイクルで実行することができない。従って、周波数オフセット補償を実現するためには、周波数領域の信号Ｘ(k)（k＝0，1，・・・，N−1）の処理サイクルを、信号Ｘ(k)が入力されたサイクルとは異なるサイクルへ移動させる必要がある。この場合、信号Ｘ(k)の処理サイクルの移動先サイクルに極力近いサイクルに、信号Ｘ(k)が入力されることが望ましい。なぜなら、異なるサイクルへ信号Ｘ(k)の処理サイクルを移動させるためには、信号Ｘ(k)が入力されたサイクルから移動先サイクルまで、信号Ｘ(k)を保持する必要があり、信号Ｘ(k)の保持が全体としての処理速度の低下の原因になるためである。【００１６】
このように、ＦＦＴ処理の後段、すなわち周波数領域で周波数オフセット補償を高速で行うためには、ＦＦＴ処理の結果の信号を、所望のタイミングで後段へ入力することが有効である。このことは、周波数オフセット補償の処理に限らず、一般的に、ＦＦＴ処理結果の信号を後段へ出力するときの出力順序を、後段の処理にとって最適なものとすることが有効である。【００１７】
しかしながら、非特許文献１、２に記載されたＦＦＴ回路は、後段の演算の高速化を考慮した順序でＦＦＴ処理結果の信号Ｘ(k)を出力することはなく、演算が完了した順にＦＦＴ処理結果Ｘ(k)を出力する。このような場合に、周波数領域において、上記のような所望のスペクトルの移動等の処理を実現するためには、ＦＦＴ処理結果Ｘ(k)を所望の順序に並べ替えるデータ並べ替え手段を設ける必要がある。【００１８】
ＦＦＴ回路６０１の後段にデータ並べ替え処理回路６０２を接続した、ＦＦＴ装置６００の構成例を図１５に示す。データ並べ替え回路６０２は、少なくともＦＦＴの１ブロック分のデータを保持可能な記憶手段を備えることが必要である。さらに、複数の処理結果の、個々の処理結果についての後段への出力タイミングあるいは出力順序は、後段の処理にとって最適であることが望ましい。【００１９】
ところが、非特許文献１、２に記載されたＦＦＴ回路では、データ並べ替え回路を備えていないため、処理結果の出力タイミングも出力順序も制御することができない。そのため、ＦＦＴ処理を含む処理全体の遅延時間（レイテンシ）が増大するという問題がある。【００２０】
特許文献２、３のＦＦＴ装置においても、ＦＦＴ処理によって得られる、複数の結果の出力タイミングは考慮されていない。特許文献２のＦＦＴ装置では、バタフライ演算部への入力データの並べ替えは行われる。特許文献３のＦＦＴ演算装置は、バタフライ演算を並列化することによって高速化を図っている。しかし、特許文献２、３のＦＦＴ装置においても、ＦＦＴ処理の結果の信号の出力順序については、特に考慮されていない。そのため、ＦＦＴ処理の演算が完了した順に、信号が出力されることとなり、その順序は必ずしも後段の処理の高速化に適したものではない。従って、特許文献２、３のＦＦＴ装置にも、処理全体の遅延時間が増大するという、上記と同様の問題がある。【００２１】
以上のように、非特許文献１、２及び特許文献２、３の技術は、ＦＦＴ処理の処理結果の出力タイミングや出力順序を最適化することができないという問題がある。【００２２】
処理結果のタイミングあるいは出力順序の最適化が有効であることは、ＩＦＦＴ処理の後段において、ＩＦＦＴ処理の結果を用いた処理が行われる場合についても同様である。【００２３】
さらに、ＦＦＴ処理やＩＦＦＴ処理の前段における処理の結果の出力順序が、ＦＦＴ処理やＩＦＦＴ処理において行われる演算の実行順序にとって最適でない場合も考えられる。そのような場合には、ＦＦＴ処理やＩＦＦＴ処理にとって最適な順序となるように、前段からの入力データを並べ替えることが有効である。
（発明の目的）
本発明は、デジタル信号処理におけるＦＦＴ／ＩＦＦＴ処理において、処理対象のデータの入力や処理結果の出力を任意の順序で行うことが可能な高速フーリエ変換回路、高速フーリエ変換処理方法、及び高速フーリエ変換プログラムが記憶された記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【００２４】
本発明の高速フーリエ変換装置は、高速フーリエ変換又は逆高速フーリエ変換を行って、複数の第１の出力データを生成し、第１の順序で出力する第１の変換手段と、第１の順序で出力された複数の第１の出力データを、第１の移動量に基づく出力順序設定に従って第２の順序に並べ替える第１のデータ並べ替え処理手段と、を備える。【００２５】
本発明の高速フーリエ変換装置は、第３の順序で入力される複数の第２の入力データを、第２の移動量に基づく入力順序設定に従って第４の順序に並べ替える第２のデータ並べ替え処理手段と、第４の順序に並べ替えられた複数の第２の入力データに対して、高速フーリエ変換又は逆高速フーリエ変換を行う第２の変換手段と、を備える。【００２６】
本発明の高速フーリエ変換方法は、高速フーリエ変換若しくは逆高速フーリエ変換により生成された複数の出力データの、第１の移動量設定に基づく出力順序設定に従った並べ替え、又は、高速フーリエ変換若しくは逆高速フーリエ変換の複数の入力データの、第２の移動量設定に基づく入力順序設定に従った並べ替えを行うことを特徴とする。【００２７】
本発明の記憶媒体に記憶された高速フーリエ変換プログラムは、高速フーリエ変換装置が備えるコンピュータを、高速フーリエ変換又は逆高速フーリエ変換を行う手段、及び高速フーリエ変換若しくは逆高速フーリエ変換により生成された複数の出力データの、第１の移動量設定に基づく出力順序設定に従って並べ替える並べ替え手段、又は、高速フーリエ変換若しくは逆高速フーリエ変換の複数の入力データの、第２の移動量設定に基づく入力順序設定に従って並べ替える並べ替え手段として機能させることを特徴とする。
【発明の効果】
【００２８】
本発明によれば、デジタル信号処理におけるＦＦＴ／ＩＦＦＴ処理において、処理対象のデータの入力や処理結果の出力を任意の順序で行うことができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の第１の実施形態におけるＦＦＴ装置１０の構成を示すブロック図である。
【図２】本発明の第１の実施形態における逐次順序に従うデータ組の配列を示す図である。
【図３】本発明の第１の実施形態におけるビットリバース順序に従うデータ組の配列を示す図である。
【図４】本発明の第１の実施形態における任意データ組逐次順序に従うデータ組の配列を示す図である。
【図５】本発明の第１の実施形態における第１のデータ並べ替え回路１１、第２のデータ並べ替え回路１２の構成例１００を示すブロック図である。
【図６】本発明の第１の実施形態における第３のデータ並べ替え処理回路１３の構成例２００を示すブロック図である。
【図７】本発明の第２の実施形態におけるＩＦＦＴ装置２０の構成を示すブロック図である。
【図８】本発明の第２の実施形態における第１のデータ並べ替え処理回路１４の構成例３００を示すブロック図である。
【図９】本発明の第３の実施形態におけるＦＦＴ装置３０の構成を示すブロック図である。
【図１０】本発明の第３の実施形態における任意データ組ビットリバース順序に従うデータ組の配列を示す図である。
【図１１】本発明の第４の実施形態におけるＩＦＦＴ装置４０の構成を示すブロック図である。
【図１２Ａ】本発明の高速フーリエ変換装置が備える必須の構成を示すブロック図である。
【図１２Ｂ】本発明の高速フーリエ変換装置が備える必須の構成を示すブロック図である。
【図１２Ｃ】本発明の高速フーリエ変換装置が備える必須の構成を示すブロック図である。
【図１３】本発明の第５の実施形態におけるデジタルフィルタ回路４００の構成例を示すブロック図である。
【図１４】２段階のバタフライ演算を用いる６４ポイントＦＦＴ処理のデータフロー５００を示す図である。
【図１５】データ並べ替え回路を備えるＦＦＴ装置６００の構成を示すブロック図である。
【発明を実施するための形態】
【００３０】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るＦＦＴ装置１０の構成例を示すブロック図である。ＦＦＴ装置１０は、図１４に示されたデータフロー５００に従って、２段階の基数８のバタフライ処理に分解された６４ポイントＦＦＴを、パイプライン回路方式によって処理する。ＦＦＴ装置１０は、時間領域のデータｘ(n)（n＝0，1，・・・ ，N−1）が入力されると、ｘ(n)をＦＦＴ処理によりフーリエ変換して周波数領域の信号Ｘ(k)（k＝0，1，・・・，N−1）を生成し、出力する。ここで、ＮはＦＦＴブロックサイズを表す正整数である。
【００３１】
ＦＦＴ装置１０は、８データ並列で６４ポイントＦＦＴ処理を行うものとする。この場合、ＦＦＴ回路１０は、時間領域のデータｘ(n)を入力し、ＦＦＴ処理によりフーリエ変換した周波数領域の信号Ｘ(k)を生成して出力する。このとき、入力データｘ(n) として、８データずつ、８サイクルの期間に、図２に示す順序で、合計で６４個のデータが入力される。なお、ここでは、図２の表の内容として示された、0から63までの数字は、ｘ(n)の添え字nを意味する。
【００３２】
具体的には、１サイクル目に、データ組Ｐ１を構成するｘ(0)，ｘ(1)，・・・，ｘ(7)の８データが入力される。そして、２サイクル目に、データ組Ｐ２を構成するｘ(8)，ｘ(9)，・・・，ｘ(15)の８データが入力される。以降同様に、３サイクル目から８サイクル目まで、データ組Ｐ３〜Ｐ８を構成するデータが入力される。
【００３３】
同様に、出力データＸ(k)として、８データずつ、８サイクルの期間に、図２に示す順序で、６４データが出力される。なお、ここでは、図２の表の内容として示された、0から63までの数字は、Ｘ(k)の添え字kを意味する。
【００３４】
具体的には、１サイクル目に、データ組Ｐ１を構成するＸ(0)，Ｘ(1)，・・・，Ｘ(7)の８データが出力される。２サイクル目に、データ組Ｐ２を構成するＸ(8)，Ｘ(9)，・・・，Ｘ(15)の８データが出力される。以降同様に、３サイクル目から８サイクル目まで、データ組Ｐ３〜Ｐ８を構成するデータが出力される。
【００３５】
ＦＦＴ装置１０は、第１のデータ並べ替え処理部１１、第１のバタフライ演算処理部２１、第２のデータ並べ替え処理部１２、ひねり乗算処理部３１、第２のバタフライ演算処理部２２、第３のデータ並べ替え処理部１３、及び読み出しアドレス生成部４１を備える。ＦＦＴ装置１０は、第１のデータ並べ替え処理、第１のバタフライ演算処理、第２のデータ並べ替え処理、ひねり乗算処理、第２のバタフライ演算処理、及び第３のデータ並べ替え処理を、パイプライン処理する。
【００３６】
第１のデータ並べ替え処理部１１、及び第２のデータ並べ替え処理部１２は、データ並べ替えのためのバッファ回路である。第１のデータ並べ替え処理部１１、及び第２のデータ並べ替え処理部１２は、それぞれ、第１のバタフライ演算処理部２１の前と後とで、ＦＦＴ処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。
【００３７】
第３のデータ並べ替え処理部１３も、同様に、データ並べ替えのためのバッファ回路である。すなわち、第３のデータ並べ替え処理部１３は、第２のバタフライ演算処理部２２の後で、ＦＦＴ処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。さらに、第３のデータ並べ替え処理部１３は、上記の並べ替えに加えて、ＦＦＴ装置１０の出力Ｘ(k)の並べ替え処理も行う。この並べ替えによって、例えば、前述の周波数スペクトルの移動を実現するための、出力Ｘ(k)の処理サイクルの移動等が可能となる。
【００３８】
具体的には、第１のデータ並べ替え処理部１１は、入力データｘ(n)を、入力順序である図２に示す「逐次順序」から、第１のバタフライ演算処理部２１に入力する順序である図３に示す「ビットリバース順序」に並べ替える。
【００３９】
図３に示すビットリバース順序は、図１４に示したデータフロー図における、１段目の基数８のバタフライ処理５０２への入力データ組に対応する。具体的には、１サイクル目に、データ組Ｐ１を構成するｘ(0)，ｘ(8)，・・・，ｘ(56)の８データを入力する。そして、２サイクル目に、データ組Ｐ２を構成するｘ(1)，ｘ(9)，・・・，ｘ(57)の８データを入力する。以降、３サイクル目から８サイクル目まで同様にして、データ組Ｐ３〜Ｐ８を構成するデータを入力する。
【００４０】
ここで、「逐次順序」と「ビットリバース順序」について、具体的に説明する。「逐次順序」とは、図２に示された、８つのデータ組Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７、Ｐ８の順序をいう。データ組Ｐs（ｓは処理サイクルの順を示す値。s＝1，・・・，8）は、それぞれ、ｐs(0)からｐs(7)まで、順に並んだ８個のデータからなり、ｐs(i)は、
ｐs(i)＝8（s−1）＋i
である。そして、各データ組は、処理のサイクルの進行に対応して、Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７、Ｐ８の順に並べられている。つまり、逐次順序とは、i×s個のデータを、先頭のデータからｉ個ずつデータ順に並べてデータ組をｓ個作成し、そのデータ組をサイクル順に並べたものである。
【００４１】
「ビットリバース順序」とは、図３に示された、８つのデータ組Ｑ１、Ｑ２、Ｑ３、Ｑ４、Ｑ５、Ｑ６、Ｑ７、Ｑ８の順序をいう。データ組Ｑｓは、それぞれ、ｑs(0)からｑs(7)までの８個のデータからなり、ｑs(i)は、
ｑs(i)＝（s−1）＋8i
である。そして、各データ組は、処理のサイクルの進行に対応して、Ｑ１、Ｑ２、Ｑ３、Ｑ４、Ｑ５、Ｑ６、Ｑ７、Ｑ８の順に並べられている。つまり、ビットリバース順序とは、逐次順序で入力されたi×s個のデータを、先頭のデータからｓ個ずつサイクル順に並べ、同じサイクルのｉ個のデータを１つの組としてデータ順に並べたものである。
【００４２】
以上のように、ビットリバース順序の各データ組は、逐次順序の各組が設定されれば一意に定まる。ビットリバース順序の各データ組Ｑs（s＝1，・・・，8）を構成するデータのｉデータ目は、逐次順序に従ったサイクルｉにおける、ｓデータ目のデータである。すなわち、
Ｑs(i)＝Ｐi(s)
である。このように、Ｑs(i)とＰi(s)とは、各データ組を構成するデータについての、サイクルの進行に対する順序とデータ位置に対する順序とが入れ替えられた関係にある。従って、ビットリバース順序で入力されたデータを、ビットリバース順序に従って並べ替えると、逐次順序になる。
【００４３】
図２における各行ｐs(i)、及び図３における８つの行ｑs(i)は、それぞれ、次段のｉデータ目に入力されるデータを示す。各データ組に含まれる８個の数字は、ＦＦＴのポイントのうちの１個を特定する識別情報であり、具体的にはｘ(n)の添え字ｎの値である。
【００４４】
図２のデータ組Ｐsと、図３のデータ組Ｑsとの間の並べ替え、すなわち各データ組とそれに含まれる識別情報との対応関係の入れ替えは、第２の実施形態以降に示す他のデータ並べ替え回路においても行われることがある。
【００４５】
なお、逐次順序及びビットリバース順序は、図２、３に例示されたものに限定されない。すなわち、逐次順序の各データ組は、上記のように、ＦＦＴのポイント数、サイクル数、及び並列に処理するデータ数に応じて、データを順に並べて作成すればよい。そして、ビットリバース順序の各データ組は、上記のように、逐次順序で入力されるデータの、サイクルの進行に対する順序とデータ位置に対する順序とを入れ替えて作成すればよい。
【００４６】
第１のバタフライ演算処理部２１は、図１４のデータフロー５００において２回行われる基数８のバタフライ演算処理の、１回目のバタフライ演算処理５０２（第１のバタフライ演算処理）を処理するバタフライ回路である。第１のバタフライ演算処理部２１は、バタフライ演算処理の結果を、データｙ(n)（n＝0，1，・・・ ，63）として、図２の逐次順序で出力する。
【００４７】
第２のデータ並べ替え処理部１２は、第１のバタフライ演算処理部２１が逐次順序で出力したデータｙ(n)を、第２のバタフライ演算処理部２２に入力するために、図３のビットリバース順序に並べ替える。
【００４８】
ひねり乗算処理部３１は、第１のバタフライ演算処理後に、ＦＦＴ演算における複素平面上の複素回転を処理する回路であり、図１４のデータフロー５００における、ひねり乗算処理５０４に対応する。なお、ひねり乗算処理では、データの並べ替えは行われない。
【００４９】
第２のバタフライ演算処理部２２は、図１４のデータフロー図における、２回目の基数８のバタフライ処理５０３を処理するバタフライ回路である。第２のバタフライ演算処理部２２は、ビットリバース順序で入力されるひねり乗算処理後のデータｙ'(n)（n＝0，1，・・・ ，63）に対してバタフライ演算処理を行い、その結果のＸ(k)（n＝0，1，・・・ ，63）を、同じくビットリバース順序で出力する。
【００５０】
第３のデータ並べ替え処理部１３は、第２のバタフライ演算処理部２２がビットリバース順序で出力するデータＸ(k)を、図４の順序（以降、「任意データ組逐次順序」という。）に並べ替える。「任意データ組逐次順序」は、ＦＦＴ装置１０が、ＦＦＴ処理の最終結果として出力する順序である。任意データ組逐次順序は、逐次順序で作成されたｓ個のデータ組Ｐsが、サイクルの進行に合わせて出力されるときの順序であり、周波数オフセット設定５２によって指定することができる。本実施形態では、任意データ組逐次順序は、Ｐ８、Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７という順序に指定される。
【００５１】
図４における各行ｐs(i)は、次段のｉデータ目に入力されるデータを示す。各データ組に含まれる８個の数字は、ＦＦＴのポイントのうちの１個を特定する識別情報であり、具体的にはＸ(k)の添え字ｋの値である。
【００５２】
第３のデータ並べ替え処理部１３は、読み出しアドレス生成部４１が出力する読み出しアドレス５１に基づいて、データＸ(k)の出力順序を決定する。
【００５３】
読み出しアドレス生成部４１は、ＣＰＵ（Central Processing Unit）などの上位回路（図示せず）から与えられる周波数オフセット設定５２を参照して読み出しアドレス５１を生成し、データ並べ替え処理部１３に出力する。
【００５４】
データ並べ替え処理部が、入力されたデータを一旦記憶し、記憶したデータの選択及び出力を制御することによって、図２に示す逐次順序、図３に示すビットリバース順序、及び図４に示す任意データ組逐次順序のそれぞれに従ったデータの並べ替え処理が実現される。以下に、データ並べ替え処理部の具体例を示す。
【００５５】
第１のデータ並べ替え処理部１１、及び第２のデータ並べ替え処理部１２は、例えば図５に示すデータ並べ替え処理部１００で実現することができる。
【００５６】
データ並べ替え処理部１００は、入力情報１０３として入力される８個のデータからなるデータ組Ｄ１〜Ｄ８を、ＦＩＦＯバッファ（First In First Out Buffer。先入れ先出しバッファ）における先入れ順序で入力して、データ記憶位置１０１ａ〜１０１ｈに書き込み、記憶させる。具体的には、データ記憶位置１０１ａ〜１０１ｈのそれぞれに、データ組Ｄ１〜Ｄ８が記憶される。
【００５７】
次に、データ並べ替え処理部１００は、ＦＩＦＯバッファにおける先出し順序で、記憶しているデータを出力する。具体的には、データ並べ替え処理部１００は、データ読み出し位置１０２ａ〜１０２ｈのそれぞれから読み出した８個のデータを１つのデータ組とし、８つのデータ組Ｄ１’〜Ｄ８’を出力情報１０４として出力する。このように、データ組Ｄ１’ 〜Ｄ８’は、サイクル順に並べられたデータ組Ｄ１〜Ｄ８に含まれるデータを、データ位置の順に並べ替えて１つの組としたものである。
【００５８】
一方、図６は、第３のデータ並べ替え処理部１３の実現例を示すデータ並べ替え処理部２００の構成図である。データ並べ替え処理部２００は、入力情報２０３として入力される８個のデータからなるデータ組Ｐ１〜Ｐ８を、ＦＩＦＯバッファにおける先入れ順序で入力して、データ記憶位置２０１ａ〜２０１ｈに書き込み、記憶する。すなわち、サイクル順に対応するデータ記憶位置２０１ａ〜２０１ｈのそれぞれに、データ組Ｄ１〜Ｄ８が順に記憶される。このとき、記憶されたデータをデータ位置の順、すなわち、データ記憶位置２０２ａ〜２０２ｈの順に見ると、データ記憶位置２０２ａ〜２０２ｈのそれぞれには、データ組Ｄ１’〜Ｄ８’が記憶されている。
【００５９】
次に、データ並べ替え処理部２００は、記憶しているデータを、読み出し回路２０５により読み出して、出力情報２０４として出力する。このとき、読み出し回路２０５は、読み出しアドレス５１を参照して、データ記憶位置２０２ａ〜２０２ｈの中からいずれか１つを選択して、データ記憶位置２０２ａ〜２０２ｈに記憶されている８個のデータのいずれか１つを１回の読み出し動作で読み出す。このように、読み出しアドレス５１に任意に指定可能な所望順番で読み出しアドレスを与えることにより、任意の順番でデータを読み出すことができる。例えば、読み出しアドレス５１に、アドレス８、１、２、３、４、５、６、７、の順番で読み出しアドレスを与えた場合、データ並べ替え処理部２００は、データ組Ｄ８’、Ｄ１’、Ｄ２’、Ｄ３’、Ｄ４’、Ｄ５’、Ｄ６’、Ｄ７’、の順番で、記憶されているデータを出力する。すなわち、図４に示した任意データ組逐次順序で、データが出力される。ここで、データ組Ｄ１’ 〜Ｄ８’は、サイクル順に並べられたデータ組Ｄ１〜Ｄ８に含まれるデータを、データ位置の順に並べ替えて１つの組としたものである。
【００６０】
以上説明したように、ＦＦＴ装置１０において、第１のデータ並べ替え処理部１１、第２のデータ並べ替え処理部１２、及び第３のデータ並べ替え処理部１３によって、図２の逐次順序、図３のビットリバース順序、及び図４の任意データ組逐次順序のそれぞれに従った３回の並べ替え処理が行われる。
【００６１】
第１のデータ並べ替え処理部１１、第２のデータ並べ替え処理部１２、及び第３のデータ並べ替え処理部１３のそれぞれを、以上のように制御することによって、望ましいタイミングでデータを出力することができるので、さらなるデータの並べ替えを行う必要がない。この並べ替えによって、例えば、前述の周波数スペクトルの移動を実現するための、出力Ｘ(k)の処理サイクルの移動等が可能となる。以下に、第３のデータ並べ替え処理部１３におけるデータの並べ替えを例として、説明する。
【００６２】
図１に示したＦＦＴ装置１０を用いて、例として、８データ並列で６４ポイントＦＦＴ処理を行う場合について説明する。ＦＦＴ装置１０は、時間領域のデータｘ(n)（n＝0，1，・・・ ，63）が入力されると、ＦＦＴ処理によりフーリエ変換した周波数領域の信号Ｘ(k)（k＝0，1，・・・，63）を生成して出力する。入力データｘ(n)は、８データずつ８サイクルの期間に、図２に示す順序で入力され、合計で６４個のデータｘ(n)が入力される。なお、図２には、ｘ(n)の添え字ｎのみが表記されている。
【００６３】
具体的には、１サイクル目に、データ組Ｐ１を構成するｘ(0)，ｘ(1)，・・・，ｘ(7)の８データが入力される。そして、２サイクル目に、データ組Ｐ２を構成するｘ(8)，ｘ(9)，・・・，ｘ(15)の８データが入力される。以降、３サイクル目から８サイクル目まで同様にして、データ組Ｐ３〜Ｐ８を構成するデータが入力される。
【００６４】
一方、出力データＸ(k)は、８データずつ８サイクルの期間に、例えば図４に示す順序で、合計６４個のデータを出力する。なお、図４には、Ｘ(k)の添え字kのみが表記されている。具体的には、各サイクルにおいて、以下のデータが出力される。
１サイクル目：
データ組Ｄ８を構成するＸ(56)，Ｘ(57)，・・・，Ｘ(63)の８データが出力される。
２サイクル目：
データ組Ｄ１を構成するＸ(0)，Ｘ(1)，・・・，Ｘ(7)の８データが出力される。
３サイクル目：
データ組Ｄ２を構成するＸ(8)，Ｘ(9)，・・・，Ｘ(15)の８データが出力される。
４サイクル目：
データ組Ｄ３を構成するＸ(16)，Ｘ(17)，・・・，Ｘ(23)の８データが出力される。
５サイクル目：
データ組Ｄ４を構成するＸ(24)，Ｘ(25)，・・・，Ｘ(31)の８データが出力される。
６サイクル目：
データ組Ｄ５を構成するＸ(32)，Ｘ(33)，・・・，Ｘ(39)の８データが出力される。
７サイクル目：
データ組Ｄ６を構成するＸ(40)，Ｘ(41)，・・・，Ｘ(47)の８データが出力される。
８サイクル目：
データ組Ｄ７を構成するＸ(48)，Ｘ(49)，・・・，Ｘ(55)の８データが出力される。
【００６５】
すなわち、周波数スペクトル移動後の信号Ｘ'(k) は、ｋの値に従って以下のサイクルで出力される。
【００６６】
Ｘ'(k)  (k＝0〜7)：  １サイクル目
Ｘ'(k)  (k＝8〜15)： ２サイクル目
Ｘ'(k)  (k＝16〜23)：３サイクル目
Ｘ'(k)  (k＝24〜31)：４サイクル目
Ｘ'(k)  (k＝32〜39)：５サイクル目
Ｘ'(k)  (k＝40〜47)：６サイクル目
Ｘ'(k)  (k＝48〜55)：７サイクル目
Ｘ'(k)  (k＝56〜63)：８サイクル目
このとき、以下の関係が成り立つ。
【００６７】
Ｘ'(k)＝Ｘ(k−8＋64)      (0≦k＜8 の場合)
Ｘ(k−8)           (8≦k＜64 の場合)
周波数領域の信号Ｘ(k)に、高周波数の方向に周波数番号ｋの値について８だけ周波数オフセットが付加された周波数領域の信号Ｘ'(k)は、以下の通りである。
【００６８】
Ｘ'(k)＝Ｘ(k−8＋64)      (0≦k＜8 の場合)
Ｘ(k−8)          (8≦k＜32 の場合)
０                (32≦k＜40 の場合)
Ｘ(k−8)          (40≦k＜64 の場合)
従って、周波数領域の信号Ｘ'(k)を生成するために、新たに異なるサイクル間での信号の移動が必要ではなく、新たにデータの並べ替えのための回路を必要としない。すなわち、周波数領域の信号Ｘ(k)（k＝0，1，・・・，63）の周波数スペクトルを、周波数番号ｋの値について８だけ高周波数の方向に移動させるため、望ましい信号の出力順序が実現される。
【００６９】
このように、処理サイクルの移動を実現するためのＦＦＴ回路の出力の順序を、周波数オフセット設定５２に従って制御することができる。
（第１の実施形態の効果）
以上のように、本実施形態では、ＦＦＴ装置１０は、周波数オフセット設定５２を用いて順序を指定することによって、任意の順序でデータを出力することができる。
【００７０】
例えば、ＦＦＴ装置１０の後段において、周波数オフセットを補償するためのスペクトル移動を実現するため、ＦＦＴ回路の出力の順序を周波数オフセット量に応じて出力することができる。その結果、出力に対する新たな並べ替えを行うための回路の追加を必要としない。
【００７１】
また、出力データを出力する順序を指定可能とするために、追加すべき回路は、読み出しアドレス生成部４１のみであり、回路規模としては非常に小さい。
【００７２】
従って、後段の処理を含め、全体としての回路規模、及び消費電力の増大を抑制することができる。
【００７３】
なお、本実施形態では、ＦＦＴ処理を例として説明したが、ＩＦＦＴにおいても同様である。すなわち、本実施形態の制御方法をＩＦＦＴ処理装置に適用して、ＩＦＦＴ処理の後段の処理内容を考慮して処理結果の出力順序を最適化すれば、ＩＦＦＴ処理の後段の処理を高速化することができる。
【００７４】
なお、ＩＦＦＴ処理に本実施形態の方法を適用する場合は、本実施形態における「周波数オフセット量」ではなく、時間的な移動量である「時間オフセット量」でＩＦＦＴ処理の結果の出力順序を指定する。このように、本実施形態では、周波数又は時間の「移動量」に応じて、それぞれＦＦＴ処理、ＩＦＦＴ処理の結果の出力順序が変更される。
（第２の実施形態）
第１の実施形態とは逆に、ＦＦＴ／ＩＦＦＴ処理の前段の処理結果を、任意の順序で、ＦＦＴ／ＩＦＦＴ処理装置に入力することもできる。そのため、例えば、周波数スペクトルの移動等、処理サイクルの移動が必要な処理を行う処理装置に、その処理にとって望ましい順序で、ＦＦＴ／ＩＦＦＴ処理の前段の処理結果を入力することができる。この場合は、入力された前段の処理結果を、ＦＦＴ／ＩＦＦＴ処理に適した順序に並べ替えることが、ＦＦＴ／ＩＦＦＴ処理の高速化や、回路規模及び消費電力の増加の抑制のために有効である。
【００７５】
第２の実施形態では、処理サイクルの移動の実現に望ましい順序である任意データ組逐次順序（例えば図４に示す順序）に対応して動作するＩＦＦＴ装置について説明する。
【００７６】
図７は、本発明の第２の実施形態におけるＩＦＦＴ装置２０の構成例を示すブロック図である。ＩＦＦＴ装置２０は、図１４に示されたＦＦＴのデータフロー５００と同様のデータフローで、２段階の基数８のバタフライ処理に分解された６４ポイントＩＦＦＴを、パイプライン回路方式によって処理する。ＩＦＦＴ装置２０は、ＦＦＴ装置１０によりフーリエ変換された周波数領域の信号Ｘ(k)（k＝0，1，・・・，N−1）が入力されると、Ｘ(k)をフーリエ逆変換により時間領域のデータｙ(n)（n＝0，1，・・・ ，N−1）を生成し、出力する。ここで、ＮはＩＦＦＴブロックサイズを表す正整数である。
【００７７】
図７において、ＩＦＦＴ装置２０は、８データ並列で６４ポイントＩＦＦＴ処理を行う。ＩＦＦＴ装置２０は、ＦＦＴ装置１０の出力と同様の、図４に示す任意データ組逐次順序で入力Ｘ(k)を入力する。一方、ＩＦＦＴ装置２０は、図２に示す逐次順序で出力ｙ(n)を出力する。
【００７８】
ＩＦＦＴ装置２０は、第１のデータ並べ替え処理部１４、第１のバタフライ演算処理部２１、第２のデータ並べ替え処理部１２、ひねり乗算処理部３１、第２のバタフライ演算処理部２２、第３のデータ並べ替え処理部１５、及び書き込みアドレス生成部４２を備える。ＩＦＦＴ装置２０は、第１のデータ並べ替え処理、第１のバタフライ演算処理、第２のデータ並べ替え処理、ひねり乗算処理、第２のバタフライ演算処理、及び第３のデータ並べ替え処理を、パイプライン処理する。
【００７９】
第１のデータ並べ替え処理部１４は、データ並べ替えのためのバッファ回路である。すなわち、第１のデータ並べ替え処理部１４は、第１のバタフライ回路２１の前で、ＩＦＦＴ処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。さらに、第１のデータ並べ替え処理部１４は、上記の並べ替えに加えて、任意データ組逐次順序でデータを入力するための並べ替え処理も行う。
【００８０】
具体的には、第１のデータ並べ替え処理部１４は、入力データＸ(k)の入力順序である図４に示す任意データ組逐次順序を、第１のバタフライ演算処理部２１に入力する順序である図３に示すビットリバース順序に並べ替える。
【００８１】
第２のデータ並べ替え処理部１２、及び第３のデータ並べ替え処理部１５も、同様に、データ並べ替えのためのバッファ回路である。第２のデータ並べ替え処理部１２、及び第３のデータ並べ替え処理部１５は、それぞれ、第１のバタフライ演算回路２１、及び第２のバタフライ演算回路２２の後で、ＩＦＦＴ処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。
【００８２】
第１のバタフライ演算処理部２１は、図１４のデータフロー５００において２回行われる基数８のバタフライ演算処理の、１回目のバタフライ演算処理５０２（第１のバタフライ演算処理）を処理するバタフライ回路である。第１のバタフライ演算処理部２１は、バタフライ演算処理の結果を、データｙ(n)（n＝0，1，・・・ ，63）として、図２の逐次順序で出力する。
【００８３】
第２のデータ並べ替え処理部１２は、第１のバタフライ演算処理部２１が逐次順序で出力したデータｙ(n)を、ひねり乗算処理部３１に入力するために、図３のビットリバース順序に並べ替える。
【００８４】
ひねり乗算処理部３１は、第１のバタフライ演算処理後に、ＩＦＦＴ演算における複素平面上の複素回転を処理する回路であり、図１４のデータフロー５００における、ひねり乗算処理５０４に対応する。なお、ひねり乗算処理では、データの並べ替えは行われない。
【００８５】
第２のバタフライ演算処理部２２は、図１４のデータフロー５００における、２回目の基数８のバタフライ処理５０３を処理するバタフライ回路である。第２のバタフライ演算処理部２２は、ビットリバース順序で入力されたひねり乗算処理後のデータｙ'(n)（n＝0，1，・・・ ，63）に対してバタフライ演算処理を行い、その結果のＸ(k)（n＝0，1，・・・ ，63）を、同じくビットリバース順序で出力する。
【００８６】
第３のデータ並べ替え処理部１５は、第２のバタフライ演算処理部２２がビットリバース順序で出力したデータＸ(k)を、図２の逐次順序に並べ替える。すなわち、ＩＦＦＴ装置２０は、ＩＦＦＴ処理の最終結果を逐次順序で出力する。
【００８７】
第１のデータ並べ替え処理部１４は、書き込みアドレス生成部４２が出力した書き込みアドレス５３に基づいて、データＸ(k)の入力順序を決定する。
【００８８】
書き込みアドレス生成部４２は、ＣＰＵなどの上位回路（図示せず）から与えられる周波数オフセット設定５４を参照して、データ並べ替え処理部１４に出力する書き込みアドレス５３を生成する。
【００８９】
第２のデータ並べ替え処理部１２、及び第３のデータ並べ替え処理部１５は、例えば図５に示すデータ並べ替え処理部１００で実現することができる。
【００９０】
図８は、第１のデータ並べ替え処理部１４の実現例を示すデータ並べ替え処理部３００の構成図である。データ並べ替え処理部３００は、入力情報３０３として任意データ組逐次順序で入力される８個のデータからなるデータ組Ｄ１〜Ｄ８を、書き込み回路３０５により、書き込み位置３０１ａ〜３０１ｈに書き込む。このとき、書き込み回路３０５は、書き込みアドレス５３を参照して、書き込み位置３０１ａ〜３０１ｈの中から、いずれか１つを選択して、１回の書き込み動作を行う。すなわち、書き込みアドレス５３に指定された所定の順番で書き込みアドレスを与えることにより、所望の順番でデータを書き込むことができる。
【００９１】
例えば、書き込みアドレス５３に、アドレス８、１、２、３、４、５、６、７、の順番で書き込みアドレスを与えた場合、データ並べ替え処理部３００は、データ組Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７、Ｄ８、の順番で入力したデータを、書き込み位置３０１ａ〜３０１ｈに対して３０１ｈ、３０１ａ、３０１ｂ、３０１ｃ、３０１ｄ、３０１ｅ、３０１ｆ、３０１ｇ、の順番で書き込み、記憶させる。すなわち、データ記憶位置３０１ａ〜３０１ｈのそれぞれに、データ組Ｄ１〜Ｄ８がＤ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７、Ｄ８、Ｄ１、の順序で記憶される。このとき、記憶されたデータをサイクル順、すなわち、データ記憶位置３０２ａ〜３０２ｈの順に見ると、データ記憶位置３０２ａ〜３０２ｈのそれぞれには、データ組Ｄ１’〜Ｄ８’が記憶されている。
【００９２】
次に、データ並べ替え処理部３００は、記憶しているデータを、ＦＩＦＯバッファにおける先出し順序で読み出して出力する。具体的には、データ並べ替え処理部３００は、データ記憶位置３０２ａ〜３０２ｈのそれぞれに記憶されている、データ組Ｄ１’〜Ｄ８’を、Ｄ１’、Ｄ２’、Ｄ３’、Ｄ４’、Ｄ５’、Ｄ６’、Ｄ７’、Ｄ８’、の順序で読み出して出力する。
【００９３】
すなわち、第１のデータ並べ替え処理部１４に相当するデータ並べ替え処理部３００は、書き込みアドレス５３に任意に指定可能な所望の順番で書き込みアドレスを与えることにより、処理サイクルの移動に望ましい順番でデータを入力することができる。例えば、書き込みアドレス５３に、アドレス８、１、２、３、４、５、６、７、の順番で書き込みアドレスを与えた場合、データ並べ替え処理部３００は、データ組Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７、Ｄ８の順番で入力したデータを、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７、Ｄ８、Ｄ１の順番で入力されたものとして処理する。
【００９４】
この場合、データ並べ替え処理部３００の入力信号Ｘ (k)に対して、データ並べ替え処理部３００の出力信号Ｘ'(k)は、以下のようになる。
【００９５】
Ｘ'(k)＝Ｘ(k＋8)          (0≦k＜56 の場合)
Ｘ(k＋8−64)      (56≦k＜64 の場合)
周波数領域の信号Ｘ(k)に、低周波数の方向に周波数番号ｋの値について８だけ周波数オフセットが付加された周波数領域の信号Ｘ'(k)は、以下の通りである。
【００９６】
Ｘ'(k)＝Ｘ(k＋8)          (0≦k＜24 の場合)
０                (24≦k＜32 の場合)
Ｘ(k＋8)          (32≦k＜56 の場合)
Ｘ(k＋8−64)      (56≦k＜64 の場合)
従って、周波数領域の信号Ｘ'(k)を生成するために、新たに異なるサイクル間での信号の移動が必要なく、新たにデータの並べ替えのための回路を必要としない。すなわち、周波数領域の信号Ｘ(k)（k＝0，1，・・・，63）の周波数スペクトルを、周波数番号ｋの値について８だけ低周波数の方向に移動させるため、望ましい信号の出力順序が実現される。
【００９７】
一方、第２のデータ並べ替え処理部１２、第３のデータ並べ替え処理部１５に相当するデータ並べ替え処理部１００は、記憶されているデータを、Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７、Ｄ８、の順番、すなわち図１の逐次順序で出力する。
（第２の実施形態の効果）
以上のように、本実施形態では、ＩＦＦＴ装置２０は、周波数オフセット設定５４を用いて順序を指定することによって、周波数スペクトルの移動等のための、処理サイクルの移動の実現に望ましい順序でデータを入力することができる。従って、ＦＦＴ装置１０の出力順序に対応して、入力に対する新たな並べ替え手段を必要としない。
【００９８】
また、任意の順序で入力される入力データに対応するために、追加すべき回路は、書き込みアドレス生成部４２のみであり、回路規模としては非常に小さい。
【００９９】
従って、前段の処理を含め、全体としての回路規模、及び消費電力の増大を抑制することができる。
【０１００】
なお、本実施形態では、ＩＦＦＴ処理を例として説明したが、ＦＦＴにおいても同様である。すなわち、本実施形態の制御方法をＦＦＴ処理装置に適用して、ＦＦＴ処理の前段の処理内容を考慮して入力信号の入力順序を最適化すれば、ＦＦＴ処理を高速化することができる。
【０１０１】
なお、ＦＦＴ処理に本実施形態の方法を適用する場合は、本実施形態における「周波数オフセット量」ではなく、時間的な移動量である「時間オフセット量」がＦＦＴ処理へのデータの入力順序を指定する。このように、本実施形態では、周波数又は時間の「移動量」に応じて、それぞれＩＦＦＴ処理、ＦＦＴ処理へのデータの入力順序が変更される。
（第３の実施形態）
ＦＦＴ装置１０において、第２のデータ並べ替え処理部１２に改造を加えることによって、第３のデータ並べ替え処理部１３は省略することができる。ＦＦＴ装置１０から第３のデータ並べ替え処理部１３を除いたＦＦＴ装置３０の構成を、図９を参照して説明する。
【０１０２】
図９は、本発明の第３の実施形態に係るＦＦＴ装置３０の構成例を示すブロック図である。ＦＦＴ装置３０は、図１４に示されたＦＦＴのデータフローと同様のデータフローで、２段階の基数８のバタフライ処理に分解された６４ポイントＦＦＴを、パイプライン回路方式によって処理する。ＦＦＴ装置３０は、時間領域のデータｘ(n)（n＝0，1，・・・ ，N−1）が入力されると、ｘ(n)をＦＦＴ処理によりフーリエ変換して周波数領域の信号Ｘ(k)（k＝0，1，・・・，N−1）を生成し、出力する。ここで、ＮはＦＦＴブロックサイズを表す正整数である。
【０１０３】
図９に示したＦＦＴ装置３０を用いて、８データ並列で６４ポイントＦＦＴ処理を行う場合を例として説明する。ＦＦＴ装置３０は、時間領域のデータｘ(n)（n＝0，1，・・・ ，63）が入力されると、ＦＦＴ処理によりフーリエ変換した周波数領域の信号Ｘ(k)（k＝0，1，・・・，63）を生成して出力する。入力データｘ(n)は、８データずつ８サイクルの期間に、図２に示す順序で入力され、合計で６４個のデータｘ(n)が入力される。
【０１０４】
一方、出力データＸ(k)は、８データずつ８サイクルの期間に、例えば図１０に示す順序（以降、「任意データ組ビットリバース順序」という。）で、合計で６４個が出力される。
【０１０５】
図１０における各行ｑs(i)は、次段のｉデータ目に入力されるデータを示す。各データ組に含まれる８個の数字は、ＦＦＴのポイントのうちの１個を特定する識別情報であり、具体的にはｘ(k)の添え字ｋの値である。
【０１０６】
具体的には、各サイクルにおいて、以下のデータが出力される。
１サイクル目：
データ組Ｑ８を構成するＸ(7)，Ｘ(15)，・・・，Ｘ(63)の８データを出力される。
２サイクル目：
データ組Ｑ１を構成するＸ(0)，Ｘ(8)，・・・，Ｘ(56)の８データを出力される。
３サイクル目：
データ組Ｑ２を構成するＸ(1)，Ｘ(9)，・・・，Ｘ(57)の８データを出力される。
４サイクル目：
データ組Ｑ３を構成するＸ(2)，Ｘ(10)，・・・，Ｘ(58)の８データを出力される。
５サイクル目：
データ組Ｑ４を構成するＸ(3)，Ｘ(11)，・・・，Ｘ(59)の８データを出力される。
６サイクル目：
データ組Ｑ５を構成するＸ(4)，Ｘ(12)，・・・，Ｘ(60)の８データを出力される。
７サイクル目：
データ組Ｑ６を構成するＸ(5)，Ｘ(13)，・・・，Ｘ(61)の８データを出力される。
８サイクル目：
データ組Ｑ７を構成するＸ(6)，Ｘ(14)，・・・，Ｘ(62)の８データを出力される。
【０１０７】
すなわち、周波数スペクトル移動後の信号Ｘ'(k)は、ｋの値に従って以下のように出力される。
【０１０８】
Ｘ'(0)，Ｘ'(8)，・・・，Ｘ'(56)： １サイクル目
Ｘ'(1)，Ｘ'(9)，・・・，Ｘ'(57)： ２サイクル目
Ｘ'(2)，Ｘ'(10)，・・・，Ｘ'(58)：３サイクル目
Ｘ'(3)，Ｘ'(11)，・・・，Ｘ'(59)：４サイクル目
Ｘ'(4)，Ｘ'(12)，・・・，Ｘ'(60)：５サイクル目
Ｘ'(5)，Ｘ'(13)，・・・，Ｘ'(61)：６サイクル目
Ｘ'(6)，Ｘ'(14)，・・・，Ｘ'(62)：７サイクル目
Ｘ'(7)，Ｘ'(15)，・・・，Ｘ'(63)：８サイクル目
このとき、以下の関係が成り立つ。
【０１０９】
Ｘ'(k)＝Ｘ(k−1＋64)      (0≦k＜1 の場合)
Ｘ(k−1)          (1≦k＜64 の場合)
周波数領域の信号Ｘ(k)に、高周波数の方向に周波数番号ｋの値について１だけ周波数オフセットが付加された周波数領域の信号Ｘ'(k)は、以下の通りである。
【０１１０】
Ｘ'(k)＝Ｘ(k−1＋64)      (0≦k＜1 の場合)
Ｘ(k−1)          (1≦k＜32 の場合)
０                (32≦k＜33 の場合)
Ｘ(k−1)          (33≦k＜64 の場合)
従って、周波数領域の信号Ｘ'(k)を生成するために、新たに異なるサイクル間での信号の移動が必要なく、新たにデータの並べ替えのための回路を必要としない。すなわち、周波数領域の信号Ｘ(k)（k＝0，1，・・・，63）の周波数スペクトルを、周波数番号ｋの値について１だけ高周波数の方向に移動させるため、望ましい信号の出力順序が実現される。
【０１１１】
このように、処理サイクルの移動を実現するためのＦＦＴ回路の出力の順序を、周波数オフセット設定５２に従って制御することができる。
【０１１２】
ＦＦＴ装置３０は、第１のデータ並べ替え処理部１１、第１のバタフライ演算処理部２１、第２のデータ並べ替え処理部１６、ひねり乗算処理部３１、第２のバタフライ演算処理部２２、及び読み出しアドレス生成部４３を備える。ＦＦＴ装置３０において、ＦＦＴ装置１０と同一の構成には同一の符号を付加し、詳細な説明は省略する。ＦＦＴ装置３０は、第１のデータ並べ替え処理、第１のバタフライ演算処理、第２のデータ並べ替え処理、ひねり乗算処理、及び第２のバタフライ演算処理を、パイプライン処理する。
【０１１３】
ＦＦＴ装置３０は、ＦＦＴ装置１０の構成から第３のデータ並べ替え処理部１３を除いた構成をもつ。ＦＦＴ装置１０における第３のデータ並べ替え処理部１３が、読み出しアドレス５１を参照して行っていた並べ替え処理は、ＦＦＴ装置３０では、第２のデータ並べ替え処理部１６が行う。すなわち、第２のデータ並べ替え処理部１６は、読み出しアドレス５５に基づいて、ＦＦＴ処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。さらに、第２のデータ並べ替え処理部１６は、上記の並べ替えに加えて、ＦＦＴ装置３０の出力Ｘ(k)の並べ替え処理を行う。この並べ替えによって、例えば、前述の周波数スペクトルの移動を実現するための、出力Ｘ(k)の処理サイクルの移動等が可能となる。
【０１１４】
具体的には、第２のデータ並べ替え処理部１６は、第１のバタフライ演算処理部２１が図２の逐次順序で出力するデータを、ひねり乗算処理部３１に入力する順序である図１０に示す任意データ組ビットリバース順序に並べ替える。
【０１１５】
第２のデータ並べ替え処理部１６は、図６に示したデータ並べ替え処理部２００と同様の構成で実現することができる。
【０１１６】
ひねり乗算処理部３１、及び第２のバタフライ演算処理部２２は、データ組間の順序を変更しないため、第２のバタフライ演算処理部２２は、ＦＦＴ処理結果Ｘ(k)を、図１０の任意データ組ビットリバース順序で出力する。
（第３の実施の形態の効果）
以上のように、本実施形態では、ＦＦＴ装置３０は、周波数オフセット設定５６を用いて順序を指定することによって、任意の順序でデータを出力することができる。
【０１１７】
例えば、ＦＦＴ装置３０の後段において、出力データＸ(k)（k＝0，1，・・・，N−1）に対して、周波数オフセットを補償するためのスペクトル移動を実現するため、ＦＦＴ回路の出力の順序を周波数オフセット量に応じて出力することができる。その結果、出力に対する新たな並べ替えを行うための回路の追加を必要としない。
【０１１８】
また、出力データを出力する順序を指定可能とするために、追加すべき回路は、読み出しアドレス生成部４３のみであり、回路規模としては非常に小さい。
【０１１９】
従って、後段の処理を含め、全体としての回路規模、及び消費電力の増大を抑制することができる。
【０１２０】
さらに、ＦＦＴ装置１０と比較して、第３のデータ並べ替え処理部１３を省略することができる。その結果、回路規模、及び消費電力をさらに削減することができる。
【０１２１】
なお、本実施形態では、ＦＦＴ処理を例として説明したが、ＩＦＦＴにおいても同様である。すなわち、本実施形態の制御方法をＩＦＦＴ処理装置に適用して、ＩＦＦＴ処理の後段の処理内容を考慮して処理結果の出力順序を最適化すれば、ＩＦＦＴ処理の後段の処理を高速化することができる。
【０１２２】
なお、ＩＦＦＴ処理に本実施形態の方法を適用する場合は、本実施形態における「周波数オフセット量」ではなく、時間的な移動量である「時間オフセット量」でＩＦＦＴ処理の結果の出力順序を指定する。このように、本実施形態では、周波数又は時間の「移動量」に応じて、それぞれＦＦＴ処理、ＩＦＦＴ処理の結果の出力順序が変更される。
（第４の実施形態）
第３の実施形態とは逆に、ＦＦＴ／ＩＦＦＴ処理の前段の処理結果を、任意の順序で、ＦＦＴ／ＩＦＦＴ処理装置に入力することもできる。そのため、例えば、周波数スペクトルの移動等、処理サイクルの移動が必要な処理を行う処理装置に、その処理にとって望ましい順序で、ＦＦＴ／ＩＦＦＴ処理の前段の処理結果を入力することができる。この場合は、入力された前段の処理結果を、ＦＦＴ／ＩＦＦＴ処理に適した順序に並べ替えることが、ＦＦＴ／ＩＦＦＴ処理の高速化や、回路規模及び消費電力の増加の抑制のために有効である。
【０１２３】
第４の実施形態では、処理サイクルの移動の実現に望ましい順序である任意データ組ビットリバース順序に対応して動作するＩＦＦＴ装置について説明する。
【０１２４】
図１１は、本発明の第４の実施形態に係るＩＦＦＴ装置４０の構成例を示すブロック図である。ＩＦＦＴ装置４０は、図１４に示されたＦＦＴのデータフローと同様のデータフローで、２段階の基数８のバタフライ処理に分解された６４ポイントＩＦＦＴを、パイプライン回路方式によって処理する。ＩＦＦＴ装置４０は、ＦＦＴ装置３０によりフーリエ変換された周波数領域の信号Ｘ(k)（k＝0，1，・・・，N−1）が入力されると、Ｘ(k)をフーリエ逆変換により時間領域のデータｙ(n)（n＝0，1，・・・ ，N−1）を生成し、出力する。ここで、ＮはＩＦＦＴブロックサイズを表す正整数である。
【０１２５】
図７において、ＩＦＦＴ装置４０は、８データ並列で６４ポイントＩＦＦＴ処理を行う。ＩＦＦＴ装置４０は、ＦＦＴ装置３０の出力と同様の、図１０に示す任意データ組ビットリバース順序で入力Ｘ(k)が入力される。そして、ＩＦＦＴ装置４０は、図２に示す逐次順序で出力ｙ(n)を出力する。
【０１２６】
ＩＦＦＴ装置４０は、第１のバタフライ演算処理部２１、第１のデータ並べ替え処理部１７、ひねり乗算処理部３１、第２のバタフライ演算処理部２２、第２のデータ並べ替え処理部１５、及び書き込みアドレス生成部４４を備える。ＩＦＦＴ装置４０において、ＩＦＦＴ装置２０と同一の構成には同一の符号を付加し、詳細な説明は省略する。ＩＦＦＴ装置４０は、第１のバタフライ演算処理、第１のデータ並べ替え処理、ひねり乗算処理、第２のバタフライ演算処理、及び第２のデータ並べ替え処理を、パイプライン処理する。
【０１２７】
ＩＦＦＴ装置４０は、ＩＦＦＴ装置２０の構成から第１のデータ並べ替え処理部１４を除いた構成をもつ。ＩＦＦＴ装置２０における第１のデータ並べ替え処理部１４が、書き込みアドレス５３を参照して行っていた並べ替え処理は、ＩＦＦＴ装置４０では、第２のデータ並べ替え処理部１７が行う。すなわち、第２のデータ並べ替え処理部１７は、書き込みアドレス５７に基づいて、ＩＦＦＴ処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。さらに、第２のデータ並べ替え処理部１７は、上記の並べ替えに加えて、任意データ組逐次順序でデータを入力するための並べ替え処理を行う。
【０１２８】
具体的には、第２のデータ並べ替え処理部１７は、第１のバタフライ演算処理部２１が図４の任意データ組逐次順序で出力するデータを、第２のバタフライ演算処理部２２に入力する順序である図３のビットリバース順序に並べ替える。
【０１２９】
第２のデータ並べ替え処理部１７は、図８に示したデータ並べ替え処理部３００と同様の構成で実現することができる。
（第４の実施形態の効果）
以上のように、本実施形態では、ＩＦＦＴ装置４０は、周波数オフセット設定５８を用いて順序を指定することによって、周波数スペクトルの移動等のための処理サイクルの移動の実現に望ましい順序でデータを入力することができる。従って、ＦＦＴ装置３０の出力順序に対応して、入力に対する新たな並べ替え手段を必要としない。
【０１３０】
また、任意の順序で入力される入力データに対応するために、追加すべき回路は、書き込みアドレス生成部４４のみであり、回路規模としては非常に小さい。
【０１３１】
従って、前段の処理を含め、全体としての回路規模、及び消費電力の増大を抑制することができる。
【０１３２】
さらに、ＩＦＦＴ装置２０と比較して、第１のデータ並べ替え処理部１４を省略することができる。その結果、回路規模、及び消費電力をさらに削減することができる。
【０１３３】
なお、本実施形態では、ＩＦＦＴ処理を例として説明したが、ＦＦＴにおいても同様である。すなわち、本実施形態の制御方法をＦＦＴ処理装置に適用して、ＦＦＴ処理の前段の処理内容を考慮して入力信号の入力順序を最適化すれば、ＦＦＴ処理を高速化することができる。
【０１３４】
ＦＦＴ処理に本実施形態の方法を適用する場合は、本実施形態における「周波数オフセット量」ではなく、時間的な移動量である「時間オフセット量」でＦＦＴ処理へのデータの入力順序を指定する。このように、本実施形態では、周波数又は時間の「移動量」に応じて、それぞれＩＦＦＴ処理、ＦＦＴ処理へのデータの入力順序が変更される。
【０１３５】
以上の説明から明らかなように、本発明の高速フーリエ変換装置の特徴は、ＦＦＴ／ＩＦＦＴの変換前、又は変換後に、処理サイクルの移動の実現に望ましい任意の順序へのデータの並べ替えを行うことができる点にある。それによって、データ並べ替え後の処理の高速化が可能となる。ＦＦＴ／ＩＦＦＴが、複数の段階の処理に分けて行われるときは、データの並べ替えは、ある段階の処理と次の段階の処理との間に行われてもよい。
【０１３６】
図１２Ａ，図１２Ｂ，図１２Ｃは、本発明の高速フーリエ変換装置が備える必須の構成を示すブロック図である。
【０１３７】
高速フーリエ変換装置６０は、フーリエ変換部６１、及びデータ並べ替え処理部６２を備える。フーリエ変換部６１は、高速フーリエ変換又は逆高速フーリエ変換を行って、複数の出力データを生成し、第１の順序で出力する。データ並べ替え処理部６２は、第１の順序で出力された複数の第１の出力データを、移動量設定に基づいて第２の順序に並べ替える。このように、高速フーリエ変換装置６０は、フーリエ変換後に、データの並べ替えを行う。なお、「移動量」は、フーリエ変換部６１が高速フーリエ変換を行うときは「周波数オフセット」であり、逆高速フーリエ変換を行うときは「時間オフセット」である。
【０１３８】
高速フーリエ変換装置７０は、フーリエ変換部７２、及びデータ並べ替え処理部７１を備える。データ並べ替え処理部７１は、第３の順序で入力される複数の入力データを、移動量設定に基づいて第４の順序に並べ替える。フーリエ変換部７２は、第４の順序に並べ替えられた複数の入力データに対して、高速フーリエ変換又は逆高速フーリエ変換を行う。このように、高速フーリエ変換装置７０は、フーリエ変換前に、データの並べ替えを行う。
【０１３９】
高速フーリエ変換装置８０は、処理部８１、８２、及びデータ並べ替え処理部８３１を備える。高速フーリエ変換装置８０は、処理部８１、８２を用いて、２段階に分けて、高速フーリエ変換又は逆高速フーリエ変換を行う。処理部８１は、複数の中間データを生成し、第５の順序で出力する。データ並べ替え処理部８３は、第５の順序で入力される複数の中間データを、順序設定に基づいて第６の順序に並べ替える。処理部８２は、第６の順序に並べ替えられた複数の中間データに対して、所定の処理を行い、高速フーリエ変換又は逆高速フーリエ変換結果の出力データを生成する。このように、高速フーリエ変換装置８０では、データの並べ替えは、高速フーリエ変換又は逆高速フーリエ変換の、処理の途中の段階で行われる。
（第５の実施形態）
図１３は、本発明の第５の実施形態におけるデジタルフィルタ回路４００の構成例を示すブロック図である。デジタルフィルタ回路４００は、ＦＦＴ回路４１３、ＩＦＦＴ回路４１４、データシフト回路４１５、及びフィルタ回路４２１、を備える。
【０１４０】
デジタルフィルタ回路４００は、時間領域における複素数信号
ｘ(n)＝ｒ(n)＋jｓ(n)      ・・・(1)
を入力する。
【０１４１】
ＦＦＴ回路４１３は、入力された複素数信号ｘ(n)を、ＦＦＴにより周波数領域の複素数信号４３１
Ｘ(k)＝Ａ(k)＋jＢ(k)      ・・・(2)
に変換する。
【０１４２】
ここで、nは時間領域上の信号サンプル番号を示す0≦n≦N−1の整数、NはＦＦＴの変換サンプル数を示す0＜Nの整数、kは周波数領域上の周波数番号を示す0≦k≦N−1の整数である。
【０１４３】
データシフト回路４１５は、サイクル移動量信号４４４に基づいて、入力された複素数信号４３１の出力サイクルを移動させて複素数信号４３２として出力する。また、データシフト回路４１５は、サイクル移動量信号４４４に基づいて、入力された複素数信号４３１の一部を値”０”に置き換えて、複素数信号４３２として出力する。
【０１４４】
具体的には、データシフト回路４１５は、周波数領域の信号Ｘ(k)（k＝0，1，・・・，N−1）（複素数信号４３１）の入力サイクルが、移動量Ｄ（Ｄは整数）だけシフトされた出力サイクルで、周波数領域の信号Ｘ'(k)（k＝0，1，・・・，N−1）（複素数信号４３２）を出力する。データシフト回路４１５は、Ｄの符号に従って、信号Ｘ'(k)がそれぞれ以下の通りとなるように、出力サイクルの移動、及び値”０”への置き換えを行う。
１）Ｄ＞０の場合（高周波数方向へサイクルをシフト）
Ｘ'(k)＝Ｘ(k−D＋N)      (0≦k＜D のとき)
Ｘ(k−D)         (D≦k＜N／2 のとき)
０               (N／2≦k＜N／2＋D のとき)
Ｘ(k−D)         (N／2＋D≦k＜N のとき)
２）Ｄ＜０の場合（低周波数方向へサイクルをシフト）
Ｘ'(k)＝Ｘ(k−D)         (0≦k＜N／2＋D のとき)
０               (N／2＋D≦k＜N／2 のとき)
Ｘ(k−D)         (N／2≦k＜N＋D のとき)
Ｘ(k−D−N)      (N＋D≦k＜N のとき)
３）Ｄ＝０の場合（シフトなし）
Ｘ'(k)＝Ｘ(k)            (0≦k＜N)
次に、フィルタ回路４２１は、データシフト回路４１５が複素数信号４３２として出力したＸ(k)に対して、フィルタ係数信号４４５によって入力されるフィルタ係数Ｃ1(k)を用いて、複素数乗算による複素数フィルタ処理を行う。具体的には、フィルタ回路４２１は、0≦k≦N−1の周波数番号ｋのそれぞれについて、複素数信号
Ｘ'(k)＝Ｘ(k)×Ｃ1(k)      ・・・(3)
を計算して、複素数信号４３３として出力する。
【０１４５】
次に、ＩＦＦＴ回路４１４は、0≦k≦N−1の周波数番号kのそれぞれについて、入力された複素数信号４３３に対して、ＩＦＦＴにより時間領域の複素数信号ｘ"(n)を生成して出力する。
【０１４６】
ＦＦＴ回路４１３の実現方法として、本発明の第１の実施形態に係るＦＦＴ回路１０を使用することができる。同様に、ＩＦＦＴ回路４１４の実現方法として、本発明の第２の実施形態におけるＩＦＦＴ回路２０を使用することができる。
【０１４７】
あるいは、ＦＦＴ回路４１３の実現方法として、本発明の第３の実施形態におけるＦＦＴ回路２０を使用することができる。同様に、ＩＦＦＴ回路４１４の実現方法として、本発明の第４の実施形態におけるＩＦＦＴ回路４０を使用することができる。
【０１４８】
以上のように、デジタルフィルタ回路４００は、時間領域の入力信号をＦＦＴ変換して周波数領域の複素数信号を生成する。そして、デジタルフィルタ回路４００は、周波数領域の複素数信号をデータシフト回路４１５により、サイクル移動量信号４４４に基づいて信号データの出力サイクルのシフト処理を行う。そして、フィルタ回路４２１によって所定のフィルタ処理を行い、その結果をＩＦＦＴ回路４１４によって時間領域の信号に変換する。
（第５の実施形態の効果）
以上のように、本実施形態によれば、周波数領域の複素数信号をデータシフト回路により、サイクル移動量の設定値に基づいて信号データのシフト処理を行うことで、処理サイクルの移動を実現する。これにより、周波数オフセットの付加等、処理サイクルの移動が必要な処理の高速化が実現される。
【０１４９】
さらに、ＦＦＴ回路、ＩＦＦＴ回路の実現に、それぞれ、本発明の第１の実施形態に係るＦＦＴ回路１０、本発明の第２の実施形態に係るＩＦＦＴ回路２０を使用することができる。あるいは、ＦＦＴ回路、ＩＦＦＴ回路の実現に、それぞれ、本発明の第３の実施形態に係るＦＦＴ回路３０、及び本発明の第４の実施形態に係るＩＦＦＴ回路４０を使用することができる。前述のように、本発明の実施形態に係るＦＦＴ回路、ＩＦＦＴ回路は、それぞれ、ＦＦＴ処理、ＩＦＦＴ処理を行うための回路規模や消費電力の削減することができる。この場合、データシフト回路４１５は、異なるサイクルの間での信号データの並べ替えが不要なので、従って、本発明の実施形態に係るＦＦＴ回路又はＩＦＦＴ回路をフィルタ処理に用いることによって、フィルタ処理を行うための回路規模や消費電力を削減することができるという効果がある。
【０１５０】
第１から第５の実施形態では、ＦＦＴ、ＩＦＦＴ、共役複素数の生成及び合成、フィルタ係数の算出、フィルタ処理等、各処理は、すべて個別の回路等の構成要素によって処理されることが想定されている。しかし、各実施形態の処理は、所定の装置が備えるコンピュータ、例えば、ＤＳＰ（Digital Signal Processor）等を用いたソフトウェアによって実行されてもよい。すなわち、各処理を行うコンピュータプログラムは、ＤＳＰ（図示なし）によって読み込まれ、実行される。
【０１５１】
例えば、データの並べ替え処理を、プログラムを用いて行ってもよい。すなわち、ＤＳＰとメモリを用いて、メモリへのデータの書き込み及びメモリからのデータの読み出しをプログラムによって制御することによって、データの並べ替え処理を行ってもよい。
【０１５２】
さらに、第１、第３の実施形態ではＦＦＴ処理を、第２、第４の実施形態ではＩＦＦＴ処理を、プログラムを用いて行ってもよい。第５の実施形態では、ＦＦＴ処理、データシフト処理、フィルタ処理、ＩＦＦＴ処理を、プログラムを用いて行ってもよい。
【０１５３】
以上のように、プログラムを用いて各処理を行っても、上述の実施形態の処理と同内容の処理を行うことができる。  なお、本プログラムは、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスク等、非一時的な媒体に格納されてもよい。
【０１５４】
なお、以上の実施形態は各々他の実施形態と組み合わせることができる。
【０１５５】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
高速フーリエ変換又は逆高速フーリエ変換を行って、複数の第１の出力データを生成し、第１の順序で出力する第１の変換手段と、前記第１の順序で出力された前記複数の第１の出力データを、第１の移動量に基づく出力順序設定に従って第２の順序に並べ替える第１のデータ並べ替え処理手段と、を備える高速フーリエ変換装置。
（付記２）
前記第１の移動量は、前記第１の変換手段が高速フーリエ変換を行うときは周波数の移動量であり、前記第１の変換手段が逆高速フーリエ変換を行うときは時間の移動量であることを特徴とする付記１に記載の高速フーリエ変換装置。
（付記３）
前記第１の変換処理手段は、バタフライ演算処理を行い、前記第１の順序で前記複数の第１の出力データを出力するバタフライ演算処理手段を含み、前記第１のデータ並べ替え処理手段は、前記バタフライ演算処理後の前記複数の第１のデータを前記第２の順序に並べ替えることを特徴とする付記１又は２に記載の高速フーリエ変換装置。
（付記４）
前記第１のデータ並べ替え処理手段は、前記複数の第１の出力データを記憶する第１の記憶手段と、前記出力順序設定に基づいて、前記第１の記憶手段からの前記複数の第１の出力データの読み出しアドレスを生成する読み出しアドレス生成手段とを備え、前記複数の第１の出力データを前記第１の順序で記憶し、前記第２の順序で読み出すことを特徴とする付記１乃至３のいずれかに記載の高速フーリエ変換装置。
（付記５）
前記複数の第１の出力データをＸ(k)（kは０≦ｋ≦Ｎ−１の整数、ＮはＮ＞０の高速フーリエ変換又は逆高速フーリエのポイント数）とするとき、前記第１のデータ並べ替え処理手段は、前記出力設定が指定する順序で出力することを特徴とする付記１乃至４のいずれかに記載の高速フーリエ変換装置。
（付記６）
第３の順序で入力される複数の第２の入力データを、第２の移動量に基づく入力順序設定に従って第４の順序に並べ替える第２のデータ並べ替え処理手段と、前記第４の順序に並べ替えられた前記複数の第２の入力データに対して、高速フーリエ変換又は逆高速フーリエ変換を行う第２の変換手段と、を備える高速フーリエ変換装置。
（付記７）
前記第２の移動量は、前記第２の変換手段が高速フーリエ変換を行うときは時間の移動量であり、前記第２の変換手段が逆高速フーリエ変換を行うときは周波数の移動量であることを特徴とする付記６に記載の高速フーリエ変換装置。
【０１５６】
（付記８）
前記第２の変換手段は、バタフライ演算処理を行うバタフライ演算処理手段を含み、前記第２のデータ並べ替え処理手段は、前記第４の順序で前記バタフライ演算処理手段に前記複数の第２の入力データを入力することを特徴とする付記６又は７に記載の高速フーリエ変換装置。
【０１５７】
（付記９）
前記第２のデータ並べ替え処理手段は、前記複数の第２の入力データを記憶する第２の記憶手段と、前記入力順序設定に基づいて、前記第２の記憶手段への前記複数の第２の入力データの書き込みアドレスを生成する書き込みアドレス生成手段とを備え、前記複数の第２の入力データを前記第３の順序で記憶し、前記第４の順序で読み出すことを特徴とする付記６乃至８のいずれかに記載の高速フーリエ変換装置。
【０１５８】
（付記１０）
前記複数の第１の入力データをＸ(k)（kは０≦ｋ≦Ｎ−１の整数、ＮはＮ＞０の高速フーリエ変換又は逆高速フーリエのポイント数）とするとき、前記第２のデータ並べ替え処理手段は、前記入力設定が指定する順序で前記バタフライ演算処理手段に入力することを特徴とする付記６乃至９のいずれかに記載の高速フーリエ変換装置。
（付記１１）
付記１又は６に記載の高速フーリエ変換装置を含むフィルタ装置。
（付記１２）
高速フーリエ変換若しくは逆高速フーリエ変換により生成された複数の出力データの、第１の移動量設定に基づく出力順序設定に従った並べ替え、又は前記高速フーリエ変換若しくは前記逆高速フーリエ変換の複数の入力データの、第２の移動量設定に基づく入力順序設定に従った並べ替えを行う高速フーリエ変換方法。
（付記１３）
高速フーリエ変換装置が備えるコンピュータを、高速フーリエ変換又は逆高速フーリエ変換を行う手段、及び前記高速フーリエ変換若しくは前記逆高速フーリエ変換により生成された複数の出力データの、第１の移動量設定に基づく出力順序設定に従って並べ替える並べ替え手段、又は前記高速フーリエ変換若しくは前記逆高速フーリエ変換の複数の入力データの、第２の移動量設定に基づく入力順序設定に従って並べ替える並べ替え手段として機能させるための高速フーリエ変換プログラム。
【０１５９】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１６０】
この出願は、２０１３年１２月１３日に出願された日本出願特願２０１３−２５８２７１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１６１】
１０、３０    ＦＦＴ装置
２０、４０    ＩＦＦＴ装置
１１、１２、１３、１４、１５、１６、１７    データ並べ替え処理部
２１、２２    バタフライ演算処理部
３１    ひねり乗算処理部
４１、４３    読み出しアドレス生成部
４２、４４    書き込みアドレス生成部
５１、５５    読み出しアドレス
５２、５６    周波数オフセット設定
５３、５７    書き込みアドレス
５４、５８    周波数オフセット設定
６０、７０、８０    高速フーリエ変換装置
６１、７２    フーリエ変換部
６２、７１、８３    データ並べ替え処理部
８１、８２    処理部
１００、２００、３００    データ並べ替え処理部
１０１ａ〜１０１ｈ    データ記憶位置
１０２ａ〜１０２ｈ    データ読み出し位置
２０１ａ〜２０１ｈ    データ記憶位置
３０１ａ〜３０１ｈ    データ記憶位置
４００    デジタルフィルタ回路
４１３    ＦＦＴ回路
４１４    ＩＦＦＴ回路
４１５    データシフト回路
４２１    フィルタ回路
４３１〜４３３    複素数信号
４４４    サイクル移動量信号
４４５    フィルタ係数信号
５００    データフロー
５０１    データ並べ替え処理
５０２、５０３    バタフライ演算処理
５０４    ひねり演算処理
５０５    部分データフロー
６００    ＦＦＴ装置
６０１    ＦＦＴ部
６０２    データ並べ替え処理部
【図１】
0006451647.tif 000002
【図２】
0006451647.tif 000003
【図３】
0006451647.tif 000004
【図４】
0006451647.tif 000005
【図５】
0006451647.tif 000006
【図６】
0006451647.tif 000007
【図７】
0006451647.tif 000008
【図８】
0006451647.tif 000009
【図９】
0006451647.tif 000010
【図１０】
0006451647.tif 000011
【図１１】
0006451647.tif 000012
【図１２Ａ】
0006451647.tif 000013
【図１２Ｂ】
0006451647.tif 000014
【図１２Ｃ】
0006451647.tif 000015
【図１３】
0006451647.tif 000016
【図１４】
0006451647.tif 000017
【図１５】
0006451647.tif 000018