(57)【要約】「課題」処理対象のデータの入力や処理結果の出力を任意の順序で行うことが可能な高速フーリエ変換処理方法を提供する。［解決手段］高速フーリエ変換若しくは逆高速フーリエ変換により生成された複数の出力データの出力順序設定に基づく並べ替え、又は高速フーリエ変換若しくは逆高速フーリエ変換の複数の入力データの入力順序設定に基づく並べ替えを行う。
2014115540.tif 000002
【特許請求の範囲】
【請求項１】
高速フーリエ変換又は逆高速フーリエ変換を行って、複数の第１の出力データを生成し、第１の順序で出力する第１の変換手段と、
前記第１の順序で出力された前記複数の第１の出力データを、出力順序設定に基づいて第２の順序に並べ替える第１のデータ並べ替え処理手段と、
を備える高速フーリエ変換装置。
【請求項２】
前記第１の変換処理手段は、バタフライ演算処理を行い、前記第１の順序で前記複数の第１の出力データを出力するバタフライ演算処理手段を含み、
前記第１のデータ並べ替え処理手段は、前記バタフライ演算処理後の前記複数の第１のデータを前記第２の順序に並べ替える
ことを特徴とする請求項１に記載の高速フーリエ変換装置。
【請求項３】
前記第１のデータ並べ替え処理手段は、
前記複数の第１の出力データを記憶する第１の記憶手段と、前記出力順序設定に基づいて、前記第１の記憶手段からの前記複数の第１の出力データの読み出しアドレスを生成する読み出しアドレス生成手段を備え、
前記複数の第１の出力データを前記第１の順序で記憶し、前記第２の順序で読み出すこと
を特徴とする請求項１又は２に記載の高速フーリエ変換装置。
【請求項４】
前記複数の第１の出力データをＸ(k)（kは０≦ｋ≦Ｎ−１の整数、ＮはＮ＞０の高速フーリエ変換又は逆高速フーリエのポイント数）とするとき、前記第１のデータ並べ替え処理手段は、任意のkに対してＸ(k)とＸ(N-k)とを高々１サイクル以内の時間差で出力する
ことを特徴とする請求項１乃至３のいずれかに記載の高速フーリエ変換装置。
【請求項５】
第３の順序で入力される複数の第２の入力データを、入力順序設定に基づいて第４の順序に並べ替える第２のデータ並べ替え処理手段と、
前記第４の順序に並べ替えられた前記複数の第２の入力データに対して、高速フーリエ変換又は逆高速フーリエ変換を行う第２の変換手段と、
を備える高速フーリエ変換装置。
【請求項６】
請求項１又は５に記載の高速フーリエ変換装置を含むディジタルフィルタ装置。
【請求項７】
請求項１に記載の高速フーリエ変換装置と、
前記高速フーリエ変換装置により、入力された時間領域の複素数である前記複数の第１の入力データがフーリエ変換され生成された周波数領域の複数の第１の複素数データを構成する、すべての複素数のそれぞれの共役複素数を含む第２の複素数データを生成する複素共役生成手段と、
入力された複素数の第１、第２及び第３の入力フィルタ係数から、複素数の第１及び第２の周波数領域フィルタ係数を生成するフィルタ係数生成手段と、
前記第１の複素数データに対して前記第１の周波数領域フィルタ係数によりフィルタ処理を行い、第３の複素数データを出力する第１のフィルタ手段と、
前記第２の複素数データに対して前記第２の周波数領域フィルタ係数によりフィルタ処理を行い、第４の複素数データを出力する第２のフィルタ手段と、
前記第３の複素数信号と、前記第４の複素数信号とを合成して第５の複素数データを生成する複素共役合成手段と、
を備えることを特徴とするディジタルフィルタ装置。
【請求項８】
請求項５に記載の高速フーリエ変換装置を備え、
前記第２のデータ並べ替え処理手段は、前記第３の順序で入力される前記第５の複素数データを、前記入力順序設定に基づいて前記第４の順序に並べ替え、
前記第２の変換手段は、前記第４の順序に並べ替えられた前記第５の複素数データに対して逆フーリエ変換を行って時間領域の信号に変換する
ことを特徴とする請求項７記載のディジタルフィルタ装置。
【請求項９】
高速フーリエ変換若しくは逆高速フーリエ変換により生成された複数の出力データの、出力順序設定に基づく並べ替え、又は
前記高速フーリエ変換若しくは前記逆高速フーリエ変換の複数の入力データの、入力順序設定に基づく並べ替えを行う
高速フーリエ変換方法。
【請求項１０】
高速フーリエ変換装置が備えるコンピュータを、
高速フーリエ変換又は逆高速フーリエ変換を行う手段、及び
前記高速フーリエ変換若しくは前記逆高速フーリエ変換により生成された複数の出力データの、出力順序設定に基づいて並べ替える並べ替え手段、又は
前記高速フーリエ変換若しくは前記逆高速フーリエ変換の複数の入力データの、入力順序設定に基づいて並べ替える並べ替え手段
として機能させるための高速フーリエ変換プログラムを格納した非一時的な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル信号処理における演算処理に関し、特に高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラム記憶媒体に関する。
【背景技術】
【０００２】
デジタル信号処理において重要な処理の１つとして、高速フーリエ変換（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
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ＦＦＴ処理によりフーリエ変換された周波数領域の信号Ｘ(k)（k＝0，1，・・・，N-1）に対して、ｋの値が異なる複数のＸ(k)の間で演算が行われる場合がある。例えば、２個のデータＸ(k)、Ｘ(N-k)の間で演算が行われる場合がある。この場合、Ｘ(k)とＸ(N-k)は、ある一つの演算の入力信号であるため、同サイクル、あるいは極力、近いサイクルで入力されることが望ましい。なぜなら、演算を開始するためには、すべての入力信号が揃っていることが必要であるからである。このように、ＦＦＴ処理の結果、得られる複数の信号には、ＦＦＴ処理の後段での処理を高速化するために、同時、あるいは、極力、近いタイミングで後段へ入力することが有効である、特定の組み合わせがある。さらに一般的には、複数の信号を後段へ出力するときの出力順序を、後段の処理にとって最適なものとすることが有効である。【００１５】
しかしながら、非特許文献１、２に記載されたＦＦＴ回路は、後段の演算の高速化を考慮した順序でＦＦＴ処理結果の信号Ｘ(k)を出力することはなく、演算が完了した順にＦＦＴ処理結果Ｘ(k)を出力する。そのため、Ｘ(k)とＸ(N-k)とが、最小の出力間隔である１サイクルよりも多い、複数サイクル離れたサイクルで出力されることがある。例えば、極端な場合では、N＝128の場合、Ｘ(0)とＸ(127)のように、１２７サイクル離れて出力されることがある。【００１６】
このような場合に、Ｘ(k)とＸ(N-k)との間で演算を行うためには、ＦＦＴ回路の後に、Ｘ(k)とＸ(N-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に対して、出力Ｘ(k)とＸ(N-k)とを高々１サイクル以内の時間差で出力するための並べ替え処理も行う。
【００３７】
具体的には、第１のデータ並べ替え処理部１１は、入力データｘ(n)の入力順序である図２に示す「逐次順序」を、第１のバタフライ演算処理部２１に入力する順序である図３に示す「ビットリバース順序」に並べ替える。
【００３８】
図３に示すビットリバース順序は、図１９に示したデータフロー図における、１段目の基数８のバタフライ処理５０２への入力データ組に対応する。具体的には、具体的には、１サイクル目に、データ組Ｐ１を構成するｘ(0)，ｘ(8)，・・・，ｘ(56)の８データを入力する。そして、２サイクル目に、データ組Ｐ２を構成するｘ(1)，ｘ(9)，・・・，ｘ(57)の８データを入力する。以降、３サイクル目から８サイクル目まで同様にして、データ組Ｐ３〜Ｐ８を構成するデータを入力する。
【００３９】
ここで、「逐次順序」と「ビットリバース順序」について、具体的に説明する。「逐次順序」とは、図２に示された、８つのデータ組Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７、Ｐ８の順序をいう。データ組Ｐs（ｓは処理サイクルの順を示す値。s＝1，・・・，8）は、それぞれ、ｐs(0)からｐs(7)まで、順に並んだ８個のデータからなり、ｐs(i)は、
ｐs(i)＝8（s−1）＋i
である。そして、各データ組は、処理のサイクルの進行に対応して、Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７、Ｐ８の順に並べられている。つまり、逐次順序とは、is個のデータを、先頭のデータからｉ個ずつデータ順に並べてデータ組をｓ個作成し、そのデータ組をサイクル順に並べたものである。
【００４０】
「ビットリバース順序」とは、図３に示された、８つのデータ組Ｑ１、Ｑ２、Ｑ３、Ｑ４、Ｑ５、Ｑ６、Ｑ７、Ｑ８の順序をいう。データ組Ｑｓは、それぞれ、ｑs(0)からｑs(7)までの８個のデータからなり、ｑs(i)は、
ｑs(i)＝（s−1）＋8i
である。そして、各データ組は、処理のサイクルの進行に対応して、Ｑ１、Ｑ２、Ｑ３、Ｑ４、Ｑ５、Ｑ６、Ｑ７、Ｑ８の順に並べられている。つまり、ビットリバース順序とは、逐次順序で入力されたis個のデータを、先頭のデータからｓ個ずつサイクル順に並べ、同じサイクルのｉ個のデータを１つの組としてデータ順に並べたものである。
【００４１】
以上のように、ビットリバース順序の各データ組は、逐次順序の各組が設定されれば一意に定まる。ビットリバース順序の各データ組Ｑ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。先入れ先出しバッファ）における先入れ順序で入力して、データ記憶位置１０１ａ〜１０１ｈに書き込み、記憶する。具体的には、データ記憶位置１０１ａ〜１０１ｈのそれぞれに、データ組Ｄ１〜Ｄ８が記憶される。
【００５６】
次に、データ並べ替え処理部１００は、ＦＩＦＯバッファにおける先出し順序で、記憶しているデータを出力する。具体的には、データ並べ替え処理部１００は、データ読み出し位置１０２ａ〜１０２ｈのそれぞれから８個のデータを読み出して１つのデータ組とし、８つのデータ組Ｄ１’〜Ｄ８’を出力情報１０４として出力する。このように、データ組Ｄ１’ 〜Ｄ８’は、サイクル順に並べられたデータ組Ｄ１〜Ｄ８に含まれるデータを、データ位置の順に並べ替えて１つの組としたものである。
【００５７】
一方、図６は、第３のデータ並べ替え処理部１３の実現例を示すデータ並べ替え処理部２００の構成図である。データ並べ替え処理部２００は、入力情報２０３として入力される８個のデータからなるデータ組Ｐ１〜Ｐ８を、ＦＩＦＯバッファにおける先入れ順序で入力して、データ記憶位置２０１ａ〜２０１ｈに書き込み、記憶する。すなわち、サイクル順に対応するデータ記憶位置２０１ａ〜２０１ｈのそれぞれに、データ組Ｄ１〜Ｄ８が順に記憶される。このとき、記憶されたデータをデータ位置の順、すなわち、データ記憶位置２０２ａ〜２０２ｈの順に見ると、データ記憶位置２０２ａ〜２０２ｈのそれぞれには、データ組Ｄ１’〜Ｄ８’が記憶されている。
【００５８】
次に、データ並べ替え処理部２００は、記憶しているデータを、読み出し回路２０５により読み出して、出力情報２０４として出力する。このとき、読み出し回路２０５は、読み出しアドレス５１を参照して、データ記憶位置２０２ａ〜２０２ｈの中からいずれか１つを選択して、データ記憶位置２０２ａ〜２０２ｈに記憶されている８個のデータのいずれか１つを１回の読み出し動作で読み出す。このように、読み出しアドレス５１に任意に指定可能な所望順番で読み出しアドレスを与えることにより、任意の順番でデータを読み出すことができる。例えば、読み出しアドレス５１に、アドレス１、８、２、７、３、６、４、５、の順番で読み出しアドレスを与えた場合、データ並べ替え処理部２００は、データ組Ｄ１’、Ｄ８’、Ｄ２’、Ｄ７’、Ｄ３’、Ｄ６’、Ｄ４’、Ｄ５’、の順番で、記憶しているデータを出力する。すなわち、図４に示した任意データ組逐次順序で、データが出力される。ここで、データ組Ｄ１’ 〜Ｄ８’は、サイクル順に並べられたデータ組Ｄ１〜Ｄ８に含まれるデータを、データ位置の順に並べ替えて１つの組としたものである。
【００５９】
以上説明したように、ＦＦＴ装置１０において、第１のデータ並べ替え処理部１１、第２のデータ並べ替え処理部１２、及び第３のデータ並べ替え処理部１３によって、図２の逐次順序、図３のビットリバース順序、図４の任意データ組逐次順序のそれぞれに従った３回の並べ替え処理が行われる。
【００６０】
第１のデータ並べ替え処理部１１、第２のデータ並べ替え処理部１２、及び第３のデータ並べ替え処理部１３のそれぞれを、以上のように制御することによって、次段の処理に必要な複数のデータを近いタイミングで出力することができるので、さらにデータの並べ替えを行う必要がない。以下に、第３のデータ並べ替え処理部１３におけるデータの並べ替えを例として、説明する。
【００６１】
図１に示したＦＦＴ装置１０を用いて、８データ並列で６４ポイントＦＦＴ処理を行う場合を例として説明する。ＦＦＴ装置１０は、時間領域のデータｘ(n)（n＝0，1，・・・ ，63）を入力し、ＦＦＴ処理によりフーリエ変換した周波数領域の信号Ｘ(k)（k＝0，1，・・・，63）を生成して出力する。入力データｘ(n)は、８データずつ８サイクルの期間に、図２に示す順序で入力され、合計で６４個のデータｘ(n)が入力される。なお、図２には、ｘ(n)の添え字ｎのみが表記されている。
【００６２】
具体的には、１サイクル目に、データ組Ｐ１を構成するｘ(0)，ｘ(1)，・・・，ｘ(7)の８データが入力される。そして、２サイクル目に、データ組Ｐ２を構成するｘ(8)，ｘ(9)，・・・，ｘ(15)の８データが入力される。以降、３サイクル目から８サイクル目まで同様にして、データ組Ｐ３〜Ｐ８を構成するデータが入力される。
【００６３】
一方、出力データＸ(k)は、８データずつ８サイクルの期間に、例えば図４に示す順序で、合計６４個のデータを出力する。なお、図４には、Ｘ(k)の添え字kのみが表記されている。具体的には、各サイクルにおいて、以下のデータが出力される。
１サイクル目：
データ組Ｄ１を構成するＸ(0)，Ｘ(1)，・・・，Ｘ(7)の８データが出力される。
２サイクル目：
データ組Ｄ８を構成するＸ(56)，Ｘ(57)，・・・，Ｘ(63)の８データが出力される。
３サイクル目：
データ組Ｄ２を構成するＸ(8)，Ｘ(9)，・・・，Ｘ(15)の８データが出力される。
４サイクル目：
データ組Ｄ７を構成するＸ(48)，Ｘ(49)，・・・，Ｘ(55)の８データが出力される。
５サイクル目：
データ組Ｄ３を構成するＸ(16)，Ｘ(17)，・・・，Ｘ(23)の８データが出力される。
６サイクル目：
データ組Ｄ６を構成するＸ(40)，Ｘ(41)，・・・，Ｘ(47)の８データが出力される。
７サイクル目：
データ組Ｄ４を構成するＸ(24)，Ｘ(25)，・・・，Ｘ(31)の８データが出力される。
８サイクル目：
データ組Ｄ５を構成するＸ(32)，Ｘ(33)，・・・，Ｘ(39)の８データが出力される。
【００６４】
このように、添え字ｋ１、ｋ２の合計が、ＦＦＴのポイント数に対応する６３になるような、２個の出力データＸ1(k1)、Ｘ2(k2)は、常に、連続したサイクルに出力される。すなわち、ＦＦＴ装置１０は、任意の添え字ｋに対して、出力Ｘ(k)とＸ(N-k)（N＝63）とを、高々１サイクル以内の時間差で出力することができる。
（第１の実施形態の効果）
以上のように、本実施形態では、ＦＦＴ装置１０は、出力順序設定５２を用いて順序を指定することによって、任意の順序でデータを出力することができる。
【００６５】
例えば、ＦＦＴ装置１０の後段において、出力データＸ(k)（k＝0，1，・・・，N-1）に対して、ｋの異なる複数のＸ(k)の間で演算が行われる場合に、演算の入力値である２つのＸ(k)をできるだけ近いサイクルで出力することができる。Ｘ(k)とＸ(N-k)との間で演算をする場合、Ｘ(k)とＸ(N-k)を高々１サイクル以内の時間差で出力することができる。その結果、出力に対する新たな並べ替えを行うための回路の追加を必要としない。
【００６６】
また、出力データを出力する順序を指定可能とするために、追加すべき回路は、読み出しアドレス生成部４１のみであり、回路規模としては非常に小さい。
【００６７】
従って、後段の処理を含め、全体としての回路規模、及び消費電力の増大を抑制することができる。
【００６８】
なお、本実施形態では、ＦＦＴ処理を例として説明したが、ＩＦＦＴにおいても同様である。すなわち、本実施形態の制御方法をＩＦＦＴ処理装置に適用して、ＩＦＦＴ処理の後段の処理内容を考慮して処理結果の出力順序を最適化すれば、ＩＦＦＴ処理の後段の処理を高速化することができる。
（第２の実施形態）
第１の実施形態とは逆に、ＦＦＴ／ＩＦＦＴ処理の前段の処理結果が、その処理に独自の順序で出力され、ＦＦＴ／ＩＦＦＴ処理装置に入力される場合がある。この場合は、入力された前段の処理結果を、ＦＦＴ／ＩＦＦＴ処理に適した順序に並べ替えることが、ＦＴ／ＩＦＦＴ処理の高速化や、回路規模及び消費電力の増加の抑制のために有効である。
【００６９】
第２の実施形態では、前段のＦＦＴ装置１０の出力の順序である任意データ組逐次順序（例えば図４に示す順序）に対応して動作するＩＦＦＴ装置について説明する。
【００７０】
図７は、本発明の第２の実施形態に係るＩＦＦＴ装置２０の構成例を示すブロック図である。ＩＦＦＴ装置２０は、図１９に示されたＦＦＴのデータフロー５００と同様のデータフローで、２段階の基数８のバタフライ処理に分解された６４ポイントＩＦＦＴを、パイプライン回路方式によって処理する。ＩＦＦＴ装置２０は、ＦＦＴ装置１０によりフーリエ変換された周波数領域の信号Ｘ(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)の入力順序を決定する。
【００８２】
書き込みアドレス生成部４２は、ＣＰＵなどの上位回路（図示せず）から与えられる入力順序設定５４を参照して、データ並べ替え処理部１４に出力する書き込みアドレス５３を生成する。
【００８３】
第２のデータ並べ替え処理部１２、及び第３のデータ並べ替え処理部１５は、例えば図５に示すデータ並べ替え処理部１００で実現することができる。
【００８４】
図８は、第１のデータ並べ替え処理部１４の実現例を示すデータ並べ替え処理部３００の構成図である。データ並べ替え処理部３００は、入力情報３０３として任意データ組逐次順序で入力される８個のデータからなるデータ組Ｄ１〜Ｄ８を、書き込み回路３０５により、書き込み位置３０１ａ〜３０１ｈに書き込む。このとき、書き込み回路３０５は、書き込みアドレス５３を参照して、書き込み位置３０１ａ〜３０１ｈの中から、いずれか１つを選択して、１回の書き込み動作を行う。すなわち、書き込みアドレス５３に指定された所定の順番で書き込みアドレスを与えることにより、所望の順番でデータを書き込むことができる。
【００８５】
例えば、書き込みアドレス５３に、アドレス１、８、２、７、３、６、４、５、の順番で書き込みアドレスを与えた場合、データ並べ替え処理部３００は、データ組Ｄ１、Ｄ８、Ｄ２、Ｄ７、Ｄ３、Ｄ６、Ｄ４、Ｄ５、の順番で入力したデータを、書き込み位置３０１ａ〜３０１ｈに対してＤ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７、Ｄ８、の順番で書き込み、記憶する。すなわち、データ記憶位置３０１ａ〜３０１ｈのそれぞれに、データ組Ｄ１〜Ｄ８が順に記憶される。このとき、記憶されたデータをサイクル順、すなわち、データ記憶位置３０２ａ〜３０２ｈの順に見ると、データ記憶位置３０２ａ〜３０２ｈのそれぞれには、データ組Ｄ１’〜Ｄ８’が記憶されている。
【００８６】
次に、データ並べ替え処理部３００は、記憶しているデータを、ＦＩＦＯバッファにおける先出し順序で読み出して出力する。具体的には、データ並べ替え処理部３００は、データ記憶位置３０２ａ〜３０２ｈのそれぞれに記憶されている、データ組Ｄ１’〜Ｄ８ ’を、Ｄ１’、Ｄ２’、Ｄ３’、Ｄ４’、Ｄ５’、Ｄ６’、Ｄ７’、Ｄ８’、の順序で読み出して出力する。
【００８７】
すなわち、第１のデータ並べ替え処理部１４に相当するデータ並べ替え処理部３００は、書き込みアドレス５３に任意に指定可能な所望の順番で書き込みアドレスを与えることにより、任意の順番でデータを入力することができる。例えば、書き込みアドレス５３に、アドレス１、８、２、７、３、６、４、５、の順番で書き込みアドレスを与えた場合、データ並べ替え処理部３００は、データ組Ｄ１、Ｄ８、Ｄ２、Ｄ７、Ｄ３、Ｄ６、Ｄ４、Ｄ５、の順番でデータを入力する。すなわち、図４に示した任意データ組逐次順序でデータ入力して記憶する。
【００８８】
一方、第２のデータ並べ替え処理部１２、第３のデータ並べ替え処理部１５に相当するデータ並べ替え処理部１００は、記憶しているデータを、Ｄ１、Ｄ２、Ｄ３、Ｄ４、Ｄ５、Ｄ６、Ｄ７、Ｄ８、の順番、すなわち図１の逐次順序で、データを出力する。
（第２の実施形態の効果）
以上のように、本実施形態では、ＩＦＦＴ装置２０は、入力順序設定５４を用いて順序を指定することによって、任意の順序でデータを入力することができる。従って、ＦＦＴ装置１０の出力順序に対応して、入力に対する新たな並べ替え手段を必要としない。
【００８９】
また、任意の順序で入力される入力データに対応するために、追加すべき回路は、書き込みアドレス生成部４２のみであり、回路規模としては非常に小さい。
【００９０】
従って、前段の処理を含め、全体としての回路規模、及び消費電力の増大を抑制することができる。
【００９１】
なお、本実施形態では、ＩＦＦＴ処理を例として説明したが、ＦＦＴにおいても同様である。すなわち、本実施形態の制御方法をＦＦＴ処理装置に適用して、ＦＦＴ処理の前段の処理内容を考慮して入力信号の入力順序を最適化すれば、ＦＦＴ処理を高速化することができる。
（第３の実施形態）
ＦＦＴ装置１０において、第２のデータ並べ替え処理部１２に改造を加えることによって、第３のデータ並べ替え処理部１３は省略することができる。ＦＦＴ装置１０から第３のデータ並べ替え処理部１３を除いたＦＦＴ装置３０の構成を、図９を参照して説明する。
【００９２】
図９は、本発明の第３の実施形態に係るＦＦＴ装置３０の構成例を示すブロック図である。ＦＦＴ装置３０は、図１９に示されたＦＦＴのデータフローと同様のデータフローで、２段階の基数８のバタフライ処理に分解された６４ポイントＦＦＴを、パイプライン回路方式によって処理する。ＦＦＴ装置３０は、時間領域のデータｘ(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)の添え字ｋの値である。
【００９６】
具体的には、各サイクルにおいて、以下のデータが出力される。
１サイクル目：
データ組Ｑ１を構成するＸ(0)，Ｘ(8)，・・・，Ｘ(56)の８データが出力される。
２サイクル目：
データ組Ｑ８を構成するＸ(7)，Ｘ(15)，・・・，Ｘ(63)の８データが出力される。
３サイクル目：
データ組Ｑ２を構成するＸ(1)，Ｘ(9)，・・・，Ｘ(57)の８データが出力される。
４サイクル目：
データ組Ｑ７を構成するＸ(6)，Ｘ(14)，・・・，Ｘ(62)の８データが出力される。
５サイクル目：
データ組Ｑ３を構成するＸ(2)，Ｘ(10)，・・・，Ｘ(58)の８データが出力される。
６サイクル目：
データ組Ｑ６を構成するＸ(5)，Ｘ(13)，・・・，Ｘ(61)の８データが出力される。
７サイクル目：
データ組Ｑ４を構成するＸ(3)，Ｘ(11)，・・・，Ｘ(59)の８データが出力される。
８サイクル目：
データ組Ｑ５を構成するＸ(4)，Ｘ(12)，・・・，Ｘ(60)の８データが出力される。
【００９７】
このように、添え字ｋ１、ｋ２の合計が、ＦＦＴのポイント数に対応する６３になるような、２個の出力データＸ1(k1)、Ｘ2(k2)は、常に、連続したサイクルに出力される。すなわち、ＦＦＴ装置３０は、ＦＦＴ装置１０と同様に、任意の添え字ｋに対して、出力Ｘ(k)とＸ(N-k) （N＝63）とを、高々１サイクル以内の時間差で出力することができる。
【００９８】
ＦＦＴ装置３０は、第１のデータ並べ替え処理部１１、第１のバタフライ演算処理部２１、第２のデータ並べ替え処理部１６、ひねり乗算処理部３１、第２のバタフライ演算処理部２２、読み出しアドレス生成部４３を備える。ＦＦＴ装置３０において、ＦＦＴ装置１０と同一の構成には同一の符号を付加し、詳細な説明は省略する。ＦＦＴ装置３０は、第１のデータ並べ替え処理、第１のバタフライ演算処理、第２のデータ並べ替え処理、ひねり乗算処理、第２のバタフライ演算処理を、パイプライン処理する。
【００９９】
ＦＦＴ装置３０は、ＦＦＴ装置１０の構成から第３のデータ並べ替え処理部１３を除いた構成をもつ。ＦＦＴ装置１０における第３のデータ並べ替え処理部１３が、読み出しアドレス５１を参照して行っていた並べ替え処理は、ＦＦＴ装置３０では、第２のデータ並べ替え処理部１６が行う。すなわち、第２のデータ並べ替え処理部１６は、読み出しアドレス５５を入力して、ＦＦＴ処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。さらに、第２のデータ並べ替え処理部１６は、上記の並べ替えに加えて、ＦＦＴ装置３０の出力Ｘ(k)において、任意のkに対して、出力Ｘ(k)とＸ(N-k)とを高々１サイクル以内の時間差で出力するための並べ替え処理を行う。
【０１００】
具体的には、第２のデータ並べ替え処理部１６は、第１のバタフライ演算処理部２１が図２の逐次順序で出力するデータを、ひねり乗算処理部３１に入力する順序である図１０に示す任意データ組ビットリバース順序に並べ替える。
【０１０１】
第２のデータ並べ替え処理部１６は、図６に示したデータ並べ替え処理部２００と同様の構成で実現することができる。
【０１０２】
ひねり乗算処理部３１、及び第２のバタフライ演算処理部２２は、データ組間の順序を変更しないため、第２のバタフライ演算処理部２２は、ＦＦＴ処理結果Ｘ(k)を、図１０の任意データ組ビットリバース順序で出力する。
（第３の実施の形態の効果）
以上のように、本実施形態では、ＦＦＴ装置３０は、出力順序設定５６を用いて順序を指定することによって、任意の順序でデータを出力することができる。
【０１０３】
例えば、ＦＦＴ装置３０の後段において、出力データＸ(k)（k＝0，1，・・・，N-1）に対して、ｋの異なる複数のＸ(k) の間で演算が行われる場合に、演算の入力値であるＸ(k)をできるだけ近いサイクルで出力することができる。Ｘ(k)とＸ(N-k)との間で演算をする場合、Ｘ(k)とＸ(N-k)を高々１サイクル以内の時間差で出力することができる。その結果、出力に対する新たな並べ替えを行うための回路の追加を必要としない。
【０１０４】
また、出力データを出力する順序を指定可能とするために、追加すべき回路は、読み出しアドレス生成部４３のみであり、回路規模としては非常に小さい。
【０１０５】
従って、後段の処理を含め、全体としての回路規模、及び消費電力の増大を抑制することができる。
【０１０６】
さらに、ＦＦＴ装置１０と比較して、第３のデータ並べ替え処理部１３を省略することができる。その結果、回路規模、及び消費電力をさらに削減することができる。
【０１０７】
なお、本実施形態では、ＦＦＴ処理を例として説明したが、ＩＦＦＴにおいても同様である。すなわち、本実施形態の制御方法をＩＦＦＴ処理装置に適用して、ＩＦＦＴ処理の後段の処理内容を考慮して処理結果の出力順序を最適化すれば、ＩＦＦＴ処理の後段の処理を高速化することができる。
（第４の実施形態）
次に、ＦＦＴ装置３０の出力の順序である任意データ組ビットリバース順序に対応して動作するＩＦＦＴ装置について説明する。
【０１０８】
図１１は、本発明の第４の実施形態に係るＩＦＦＴ装置４０の構成例を示すブロック図である。ＩＦＦＴ装置４０は、図１９に示されたＦＦＴのデータフローと同様のデータフローで、２段階の基数８のバタフライ処理に分解された６４ポイントＩＦＦＴを、パイプライン回路方式によって処理する。ＩＦＦＴ装置４０は、ＦＦＴ装置３０によりフーリエ変換された周波数領域の信号Ｘ(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)から、
Ｘ(N−k)＝Ａ(N−k)＋jＢ(N−k)      ・・・(3)
を生成して出力する。
【０１２７】
複素共役生成回路４１５は、0≦k≦N−1の周波数番号kのそれぞれについて、ＦＦＴ回路４１３が出力するＸ(N−k)を入力し、Ｘ(N−k)の複素共役
Ｘ*(N−k)＝Ａ(N−k)−jＢ(N−k)      ・・・(4)
を生成する。
【０１２８】
複素共役生成回路４１５は、入力した複素数信号Ｘ(k)を複素数信号４３２として出力し、生成した複素数信号Ｘ*(N−k)を複素数信号４３３として出力する。
【０１２９】
次に、フィルタ係数生成回路４４１は、0≦k≦N−1の周波数番号kのそれぞれについて、入力した複素数係数Ｖ(k)、Ｗ(k)、及びＨ(k)から、複素数係数
Ｃ1(k)＝{Ｖ(k)＋Ｗ(k)}×Ｈ(k)      ・・・(5)
及び、複素数係数
Ｃ2(k)＝{Ｖ(k)−W(k)}×Ｈ(k)      ・・・(6)
を生成する。
【０１３０】
ここで複素数係数Ｖ(k)、Ｗ(k)、及びＨ(k)は、ディジタルフィルタ回路４００の上位回路（図示せず）から与えられる周波数領域での係数で、時間領域での実数演算によるフィルタ処理を行った場合の、実数フィルタ係数に対応する。Ｖ(k)、Ｗ(k)、及びＨ(k)の詳細に関しては後述する。
【０１３１】
フィルタ係数生成回路４４１は、生成した複素数係数Ｃ1(k)を複素数信号４４５として出力する。また、フィルタ係数生成回路４４１は、複素数信号Ｃ2(k)（式(6)）から複素数信号Ｃ2(N−k)を生成し、複素数信号４４６として出力する。
【０１３２】
次に、フィルタ回路４２１は、複素共役生成回路４１５が複素数信号４３２に出力するＸ(k)（式(2)）に対して、フィルタ係数生成回路４４１が複素数信号４４５に出力するＣ1(k)（式(5)）を用いて、複素数乗算による複素数フィルタ処理を行う。具体的には、フィルタ回路４２１は、0≦k≦N−1の周波数番号kのそれぞれについて、複素数信号
Ｘ'(k)＝Ｘ(k)×Ｃ1(k)      ・・・(7)
を計算して、複素数信号４３４として出力する。
【０１３３】
同様に、フィルタ回路４２２は、複素共役生成回路４１５が複素数信号４３３に出力するＸ*(N−k)（式(4)）に対して、フィルタ係数生成回路４４１が複素数信号４４６に出力するＣ2(N−k)（式(6)）を用いて、複素数乗算による複素数フィルタ処理を行う。具体的には、フィルタ回路４２２は、0≦k≦N−1の周波数番号kのそれぞれについて、複素数信号
Ｘ*'(N−k)＝Ｘ*(N−k)×Ｃ2(N−k)      ・・・(8)
を計算して、複素数信号４３５として出力する。
【０１３４】
Ｃ1(k)、Ｃ2(k)は、それぞれ、実数部と虚数部に分けて、
Ｃ1(k)＝Ｃ1I(k)＋jＣ1Q(k)      ・・・(9)
Ｃ2(k)＝Ｃ2I(k)＋jＣ2Q(k)      ・・・(10)
と書くことができる。
【０１３５】
次に、複素共役合成回路４１６は、フィルタ回路２１が複素数信号４３４に出力するＸ'(k)（式(7)）と、フィルタ回路４２２が複素数信号４３５に出力するＸ*'(N−k)（式(8)）とを合成した複素数信号Ｘ"(k)を生成する。具体的には、複素共役合成回路４１６は、0≦k≦N−1の周波数番号kのそれぞれについて、
Ｘ"(k)＝1/2×{Ｘ'(k)＋Ｘ*'(N−k)}      ・・・(11)
を計算して、複素数信号４３６として出力する。
【０１３６】
次に、ＩＦＦＴ回路４１４は、0≦k≦N−1の周波数番号kのそれぞれについて、複素共役合成回路４１６が複素数信号４３６に出力するＸ"(k)（式(11)）に対して、ＩＦＦＴにより時間領域の複素数信号ｘ"(n)を生成して出力する。
【０１３７】
ＦＦＴ回路４１３の実現方法として、本発明の第１の実施形態に係るＦＦＴ回路１０を使用することができる。同様に、ＩＦＦＴ回路４１４の実現方法として、本発明の第２の実施形態に係るＩＦＦＴ回路２０を使用することができる。
【０１３８】
あるいは、ＦＦＴ回路４１３の実現方法として、本発明の第３の実施形態に係るＦＦＴ回路２０を使用することができる。同様に、ＩＦＦＴ回路４１４の実現方法として、本発明の第４の実施形態に係るＩＦＦＴ回路４０を使用することができる。
【０１３９】
図１４は、複素共役生成回路４１５の構成の詳細を示すブロック図である。複素共役生成回路４１５は、データ記憶部４５２、４５３、データ選択部４５４、４５５を備える。
【０１４０】
複素共役生成回路４１５は、ＦＦＴ回路４１３の出力に含まれるＸ(k)（＝Ａ(k)＋jＢ(k)。式(2)）を入力してそのまま出力する。さらに、複素共役生成回路４１５は、ＦＦＴ回路４１３の出力に含まれる出力Ｘ(N−k)（＝Ａ(N−k)＋jＢ(N−k)。式(3)）を入力して、
Ｘ*(N−k)＝Ａ(N−k)−jＢ(N−k)      ・・・(4)
を計算して出力する。
【０１４１】
Ｘ(k)、Ｘ*(N−k)は、それぞれ、実数部と虚数部に分けて、
Ｘ(k)＝ＸI(k)＋jＸQ(k)                 ・・・(12)
Ｘ*(N−k)＝Ｘ*I(N−k)＋jＸ*Q(N−k)      ・・・(13)
と書くことができる。
【０１４２】
図１５は、フィルタ回路４２１の構成の詳細を示すブロック図である。フィルタ回路４２１は、複素共役生成回路４１５が複素信号線４３２に出力するＸ(k)（＝ＸI(k)＋jＸQ(k)。式(12)）と、複素数係数Ｃ1(k)（＝Ｃ1I(k)＋jＣ1Q(k)。式(9)）を入力して、
Ｘ'(k)＝ＸI'(k)＋jＸQ'(k)
＝Ｘ(k)×Ｃ1(k)      ・・・(14)
を計算して出力する。
【０１４３】
ここで、ＸI'(k)及びＸQ'(k)は、それぞれＸ'(k)の実数部と虚数部であり、次式で与えられる。
【０１４４】
ＸI'(k)＝ＸI(k)×Ｃ1I(k)−ＸQ(k)×Ｃ1Q(k)      ・・・(15)
ＸQ'(k)＝ＸI(k)×Ｃ1Q(k)＋ＸQ(k)×Ｃ1I(k)      ・・・(16)
図１６は、フィルタ回路４２２の構成の詳細を示すブロック図である。フィルタ回路４２２は、複素共役生成回路４１５が複素信号線４３３に出力するＸ*(N−k)（＝Ｘ*I(N−k)＋jＸ*Q(N−k)。式(13)）と複素数係数Ｃ2(k)（＝Ｃ2I(k)＋jＣ2Q(k)。式(10)）を入力して、
Ｘ*'(N−k)＝Ｘ*I'(N−k)＋jＸ*Q'(N−k)
＝Ｘ*(N−k)×Ｃ2(N−k)      ・・・(17)
を計算して出力する。
【０１４５】
ここで、Ｘ*I'(N−k)及びＸ*Q'(N−k)は、それぞれＸ*'(N−k)の実数部と虚数部であり、次式で与えられる。
【０１４６】
Ｘ*I'(N−k)＝Ｘ*I(N−k)×Ｃ2I(N−k)−Ｘ*Q(N−k)×Ｃ2Q(N−k)・・・(18)
Ｘ*Q'(N−k)＝Ｘ*I(N−k)×Ｃ2Q(N−k)＋Ｘ*Q(N−k)×Ｃ2I(N−k)・・・(19)
図１７は、複素共役合成回路４１６の構成の詳細を示すブロック図である。複素共役合成回路４１６は、0≦k≦N−1の周波数番号kのそれぞれについて、フィルタ回路４２１が複素数信号４３４に出力するＸ'(k)（＝ＸI'(k)＋jＸQ'(k)。式(14)）と、フィルタ回路４２２が複素数信号４３５に出力するＸ*'(N−k)（＝Ｘ*I'(N−k)＋jＸ*Q'(N−k)。式(17)）とを入力して、
Ｘ"(k)＝ＸI"(k)＋jＸQ"(k)
＝1/2{Ｘ'(k)＋Ｘ*'(N−k)}      ・・・(20)
を計算して出力する。
【０１４７】
ここで、ＸI"(k)及びＸQ"(k)は、それぞれＸ"(k)の実数部と虚数部であり、次式で与えられる。
【０１４８】
ＸI"(k)＝1/2{ＸI'(k)＋Ｘ*I'(N−k)}      ・・・(21)
ＸQ"(k)＝1/2{ＸQ'(k)＋Ｘ*Q'(N−k)}      ・・・(22)
ここで、ＸI'(k)、ＸQ'(k)、Ｘ*I'(N−k)、Ｘ*Q'(N−k)は、それぞれ式(15)、(16)、(18)、(19)の通りである。
【０１４９】
フィルタ係数生成回路４４１は、フィルタ回路４２１、４２２で用いられる複素数係数Ｃ1(k)、Ｃ2(k)を生成する。図１８は、フィルタ係数生成回路４４１の構成の詳細を示すブロック図である。フィルタ係数生成回路４４１は、0≦k≦N−1の周波数番号kのそれぞれについて、上位回路（図示せず）から入力された複素数係数Ｖ(k)、Ｗ(k)から、Ｖ(k)＋Ｗ(k)及びＶ(k)−Ｗ(k)を計算する。
【０１５０】
ここで、
Ｖ(k)＋Ｗ(k)＝ＶI(k)＋ＷI(k)＋jＶQ(k)＋jＷQ(k)      ・・・(23)
Ｖ(k)−Ｗ(k)＝ＶI(k)−ＷI(k)＋jＶQ(k)−jＷQ(k)      ・・・(24)
である。ＶI(k)及びＶQ(k)は、それぞれＶ(k)の実数部と虚数部であり、ＷI(k)及びＷQ(k)は、それぞれＷ(k)の実数部と虚数部である。
【０１５１】
また、Ｈ(k)も実数部と虚数部とに分けて、
Ｈ(k)＝ＨI(k)＋jＨQ(k)      ・・・(25)
と書くことができる。
【０１５２】
次に、フィルタ係数生成回路４４１は、以下の式で定義された複素数係数Ｃ1(k)及びＣ2(k)を計算して出力する。
【０１５３】
Ｃ1(k)＝Ｃ1I(k)＋jＣ1Q(k)
＝{Ｖ(k)＋Ｗ(k)}×Ｈ(k)      ・・・(26)
Ｃ2(k)＝Ｃ2I(k)＋jＣ2Q(k)
＝{Ｖ(k)−Ｗ(k)}×Ｈ(k)        ・・・(27)
ここで、Ｃ1I(k)、Ｃ1Q(k)は、それぞれＣ1(k)の実数部と虚数部であり、Ｃ2I(k)、Ｃ2Q(k)は、それぞれＣ2(k)の実数部と虚数部である。
【０１５４】
式(26)に式(23)、(25)を代入して、
Ｃ1(k)＝{ＶI(k)＋ＷI(k)＋jＶQ(k)＋jＷQ(k)}×{ＨI(k)＋jＨQ(k)}・・・(28)
である。
【０１５５】
従って、
Ｃ1I(k)＝{ＶI(k)＋ＷI(k)}×ＨI(k)−{ＶQ(k)＋ＷQ(k)}×ＨQ(k)・・・(29)
Ｃ1Q(k)＝{ＶQ(k)＋ＷQ(k)}×ＨI(k)＋{ＶI(k)＋ＷI(k)}×ＨQ(k)・・・(30)
である。
【０１５６】
同様に、式(27)に式(24)、(25)を代入して、
Ｃ2(k)＝Ｃ2I(k)＋jＣ2Q(k)
＝{Ｖ(k)−Ｗ(k)}×Ｈ(k)
＝{ＶI(k)−ＷI(k)＋jＶQ(k)−jＷQ(k)}×{ＨI(k)＋jＨQ(k)}・・・(31)
である。
【０１５７】
従って、
Ｃ2I(k)＝{ＶI(k)−ＷI(k)}×ＨI(k)−{ＶQ(k)−ＷQ(k)}×ＨQ(k)・・・(32)
Ｃ2Q(k)＝{ＶQ(k)−ＷQ(k)}×ＨI(k)＋{ＶI(k)−ＷI(k)}×ＨQ(k)・・・(33)
である。
【０１５８】
以上のように、ディジタルフィルタ回路４００は、時間領域の入力信号をＦＦＴ変換して周波数領域の複素数信号を生成する。そして、ディジタルフィルタ回路４００は、周波数領域の複素数信号の実数部、虚数部のそれぞれを、Ｖ(k)、Ｗ(k)、Ｈ(k)から生成された２種類の係数を用いて独立にフィルタ処理し、その結果をＩＦＦＴによって時間領域の信号に変換する。このように、ディジタルフィルタ回路４００では、ＦＦＴとＩＦＦＴは、それぞれ、時間領域の入力信号に対して１回のみ実行される。
【０１５９】
フィルタ処理に用いられる２種類の係数が、ＦＦＴ及びＩＦＦＴの回数の最小化を可能にする。以下に、Ｖ(k)、Ｗ(k)、Ｈ(k)の物理的な意味と、これらから生成された係数Ｃ1(k)及びＣ2(k)を用いたフィルタ処理により、時間領域での所望のフィルタ処理と同等の、周波数領域でのフィルタ処理が可能となる原理を説明する。
【０１６０】
本実施形態では、入力する時間領域の複素数信号ｘ(n)（＝ｒ(n)＋jｓ(n)。式(1)）を複素ＦＦＴした周波数領域の複素数信号
Ｘ(k)＝Ｒ(k)＋jＳ(k)      ・・・(34)
から、複素共役生成回路１５がＸ*(N−k)を生成する。
【０１６１】
ここで、Ｒ(k)は、時間領域における実数の実数部信号ｒ(n)が実数ＦＦＴにより変換された周波数領域の複素数信号、Ｓ(k)は時間領域における実数の虚数部信号ｓ(n)が実数ＦＦＴにより変換された周波数領域の複素数信号である。このとき、複素共役の対称性から次式が成立する。
【０１６２】
Ｘ*(N−k)＝Ｒ(k)−jＳ(k)      ・・・(35)
ここで、Ｘ*(N−k)は、Ｘ(N−k)の複素共役である。
【０１６３】
式(14)、(34)、(26)から、
Ｘ'(k)＝Ｘ(k)×Ｃ1(k)
＝{Ｒ(k)＋jＳ(k)}×{Ｖ(k)＋Ｗ(k)}×Ｈ(k)
＝Ｒ(k)Ｖ(k)Ｈ(k)＋Ｒ(k)Ｗ(k)Ｈ(k)＋jＳ(k)Ｖ(k)Ｈ(k)＋jＳ(k)Ｗ(k)Ｈ(k)・・・(36)
となる。
【０１６４】
また、式(17)、(35)、(27)から、
Ｘ*'(N−k)＝Ｘ*(N−k)×Ｃ2(N−k)
＝{Ｒ(k)−jＳ(k)}×{Ｖ(k)−Ｗ(k)}×Ｈ(k)
＝Ｒ(k)Ｖ(k)Ｈ(k)−Ｒ(k)Ｗ(k)Ｈ(k)−jＳ(k)Ｖ(k)Ｈ(k)＋jＳ(k)Ｗ(k)Ｈ(k)      ・・・(37)
となる。
【０１６５】
式(20)に、式(36)、(37)を代入すると、
Ｘ"(k)＝1/2×{Ｘ'(k)＋Ｘ*'(N−k)}
＝1/2×{2×Ｒ(k)Ｖ(k)Ｈ(k)＋2×jＳ(k)Ｗ(k)Ｈ(k)}
＝Ｒ(k)Ｖ(k)Ｈ(k)＋jＳ(k)Ｗ(k)Ｈ(k)
＝{Ｒ(k)Ｖ(k)＋jＳ(k)Ｗ(k)}×Ｈ(k)      ・・・(38)
となる。
【０１６６】
式(38)は、ＩＦＦＴ前の信号Ｘ"(k)を、フィルタ係数Ｖ(k)、Ｗ(k)及びＨ(k)と、ＦＦＴ後の信号Ｘ(k)におけるＲ(k)及びＳ(k)を用いて表したものである。Ｒ(k)は、時間領域における実数の実数部信号ｒ(n)が実数ＦＦＴにより変換された周波数領域の複素数信号である。Ｓ(k)は、時間領域における実数の虚数部信号ｓ(n)が実数ＦＦＴにより変換された周波数領域の複素数信号である。つまり、式(38)は、ＦＦＴ後の信号Ｘ(k)に対して施されるフィルタ処理の内容を表す。式(38)から、ディジタルフィルタ回路４００は、複素数信号ｘ(n)＝ｒ(n)＋jｓ(n)が実数ＦＦＴにより変換されて生成された、周波数領域の複素数信号Ｘ(k)（＝Ｒ(k)＋jＳ(k)。式(34)）に対して、以下の３つのフィルタ処理と同等の処理を行うことがわかる。
１）Ｒ(k)に対する係数Ｖ(k)によるフィルタ処理
まず、ディジタルフィルタ回路４００は、時間領域における実数部信号ｒ(n)が実数ＦＦＴにより変換された周波数領域の複素数信号Ｒ(k)に対して、フィルタ係数Ｖ(k)によるフィルタ処理を行う。従って、Ｖ(k)には、実数部信号ｒ(n)に対して時間領域で実数演算によるフィルタ処理を行った場合の、実数フィルタ係数に対応する、周波数領域での複素数フィルタ係数が割り当てられる。
２）Ｓ(k)に対する係数Ｗ(k)によるフィルタ処理
同様に、ディジタルフィルタ回路４００は、時間領域における虚数部信号ｓ(n)が実数ＦＦＴにより変換された周波数領域の複素数信号Ｓ(k)に対して、フィルタ係数Ｗ(k)によるフィルタ処理を行う。従って、Ｗ(k)には、虚数部信号ｓ(n)に対して時間領域で実数演算によるフィルタ処理を行った場合の、実数フィルタ係数に対応する、周波数領域での複素数フィルタ係数が割り当てられる。
３）１）、２）のフィルタ処理結果に対する係数Ｈ(k)によるフィルタ処理
次に、ディジタルフィルタ回路４００は、それぞれ独立に処理された上記の２つのフィルタ処理後の、Ｒ(k)Ｖ(k)及びＳ(k)Ｗ(k)からなる複素数信号Ｒ(k)Ｖ(k)＋jＳ(k)Ｗ(k)に対して、フィルタ係数Ｈ(k)によるフィルタ処理を行う。
【０１６７】
Ｒ(k)Ｖ(k)＋jＳ(k)Ｗ(k)は、時間領域における実数部信号ｒ(n)及び虚数部信号ｓ(n)のそれぞれに独立にフィルタ処理した２つの信号からなる時間領域の信号に対応する、周波数領域の複素数信号である。実数部信号ｒ(n)及び虚数部信号ｓ(n)をそれぞれに独立にフィルタ処理した信号とは、図１５、１６における、Ｘ'(k)、Ｘ*'(N-k)に相当する。そして、ｒ'(n)、ｓ'(n)からなる時間領域の信号とは、図１３のｘ"(n)に相当する。このように、Ｒ(k)Ｖ(k)＋jＳ(k)Ｗ(k)は、時間領域において実数部及び虚数部のそれぞれに独立にフィルタ処理した時間領域の信号に対応する、周波数領域の信号である。
【０１６８】
従って、時間領域における複素数信号に対する複素数演算によるフィルタ処理に相当する処理を、周波数領域の信号Ｒ(k)Ｖ(k)＋jＳ(k)Ｗ(k)に対して行うには、次のような係数を用いればよい。すなわち、Ｈ(k)には、複素数信号ｘ(n)に対して時間領域で複素数演算によるフィルタ処理を行った場合の、複素数フィルタ係数に対応する、周波数領域での複素数フィルタ係数が割り当てればよい。
【０１６９】
以上のように、本実施形態では、外部から３種類の係数が設定される。すなわち、複素数信号ｘ(n)の実数部及び虚数部のそれぞれに対する時間領域でのフィルタ係数に対応する周波数領域のフィルタ係数Ｖ(k)、Ｗ(k)と、ｘ(n)に対する時間領域でのフィルタ係数に対応する周波数領域の係数Ｈ(k)が設定される。以上の３つの係数から求めた２つの係数を用いたフィルタ処理を行うことにより、フィルタ処理の前のＦＦＴ及びフィルタ処理後のＩＦＦＴをそれぞれ１回のみとすることができる。
（第５の実施形態の効果）
以上のように、本実施形態によれば、複素数信号の実数部及び虚数部のそれぞれに対する時間領域でのフィルタ係数に対応する、２種類の周波数領域のフィルタ係数と、複素信号に対する時間領域でのフィルタ係数に対応する周波数領域の係数を用いたフィルタ処理が行われる。すなわち、時間領域における複素数信号の実数部及び虚数部のそれぞれに対する実数演算による独立したフィルタ処理と、時間領域における複素数信号に対する複素数演算によるフィルタ処理と、に対応する周波数領域におけるフィルタ処理が行われる。従って、フィルタ処理前のＦＦＴを行うＦＦＴ回路及びフィルタ処理後のＩＦＦＴを行うＩＦＦＴ回路を、それぞれ１個のみを用いて、所望のフィルタ処理を実現することができる。その結果、フィルタ処理を行うための回路規模や消費電力の低減を図ることができるという効果がある。
【０１７０】
さらに、ＦＦＴ回路、ＩＦＦＴ回路の実現に、それぞれ、本発明の第１の実施形態に係るＦＦＴ回路１０、本発明の第２の実施形態に係るＩＦＦＴ回路２０を使用することができる。あるいは、ＦＦＴ回路、ＩＦＦＴ回路の実現に、それぞれ、本発明の第３の実施形態に係るＦＦＴ回路３０、及び本発明の第４の実施形態に係るＩＦＦＴ回路４０を使用することができる。前述のように、本発明の実施形態に係るＦＦＴ回路、ＩＦＦＴ回路は、それぞれ、ＦＦＴ処理、ＩＦＦＴ処理を行うための回路規模や消費電力の削減することができる。従って、本発明の実施形態に係るＦＦＴ回路又はＩＦＦＴ回路をフィルタ処理に用いることによって、フィルタ処理を行うための回路規模や消費電力の削減することができるという効果がある。
【０１７１】
第１から第５の実施形態では、ＦＦＴ、ＩＦＦＴ、共役複素数の生成及び合成、フィルタ係数の算出、フィルタ処理等、各処理は、すべて個別の回路等の構成要素によって処理されることが想定されている。しかし、各実施形態の処理は、所定の装置が備えるコンピュータ、例えば、ＤＳＰ（Digital Signal Processor）等を用いたソフトウェアによって実行されてもよい。すなわち、各処理を行うコンピュータプログラムは、ＤＳＰ（図示なし）によって読み込まれ、実行される。
【０１７２】
例えば、データの並べ替え処理を、プログラムを用いて行ってもよい。すなわち、ＤＳＰとメモリを用いて、メモリへのデータの書き込み及びメモリからのデータの読み出しをプログラムによって制御することによって、データの並べ替え処理を行ってもよい。
【０１７３】
さらに、第１、第３の実施形態ではＦＦＴ処理を、第２、第４の実施形態ではＩＦＦＴ処理を、プログラムを用いて行ってもよい。第５の実施形態では、Ｖ(k)、Ｗ(k)、及びＨ(k)から、Ｃ1(k)、Ｃ2(k)を求める処理、ＦＦＴ処理、Ｘ(N−k)の共役複素数Ｘ*(N−k)を求める処理、フィルタ処理、ＩＦＦＴ処理を、プログラムを用いて行ってもよい。
【０１７４】
以上のように、プログラムを用いて各処理を行っても、上述の実施形態の処理と同内容の処理を行うことができる。  なお、本プログラムは、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスク等、非一時的な媒体に格納されてもよい。
【０１７５】
なお、以上の実施形態は各々他の実施形態と組み合わせることができる。
【０１７６】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
高速フーリエ変換又は逆高速フーリエ変換を行って、複数の第１の出力データを生成し、第１の順序で出力する第１の変換部と、前記第１の順序で出力された前記複数の第１の出力データを、出力順序設定に基づいて第２の順序に並べ替える第１のデータ並べ替え処理部と、を備える高速フーリエ変換装置。
（付記２）
前記第１の変換処理部は、バタフライ演算処理を行い、前記第１の順序で前記複数の第１の出力データを出力するバタフライ演算処理部を含み、前記第１のデータ並べ替え処理部は、前記バタフライ演算処理後の前記複数の第１のデータを前記第２の順序に並べ替えることを特徴とする付記１に記載の高速フーリエ変換装置。
（付記３）
前記第１のデータ並べ替え処理部は、前記複数の第１の出力データを記憶する第１の記憶部と、前記出力順序設定に基づいて、前記第１の記憶部からの前記複数の第１の出力データの読み出しアドレスを生成する読み出しアドレス生成部を備え、前記複数の第１の出力データを前記第１の順序で記憶し、前記第２の順序で読み出すことを特徴とする付記１又は２に記載の高速フーリエ変換装置。
（付記４）
前記複数の第１の出力データをＸ(k)（kは０≦ｋ≦Ｎ−１の整数、ＮはＮ＞０の高速フーリエ変換又は逆高速フーリエのポイント数）とするとき、前記第１のデータ並べ替え処理部は、任意のkに対してＸ(k)とＸ(N-k)とを高々１サイクル以内の時間差で出力することを特徴とする付記１乃至３のいずれかに記載の高速フーリエ変換装置。
（付記５）
第３の順序で入力される複数の第２の入力データを、入力順序設定に基づいて第４の順序に並べ替える第２のデータ並べ替え処理部と、前記第４の順序に並べ替えられた前記複数の第２の入力データに対して、高速フーリエ変換又は逆高速フーリエ変換を行う第２の変換部と、を備える高速フーリエ変換装置。
【０１７７】
（付記６）
前記第２の変換処理部は、バタフライ演算処理を行うバタフライ演算処理部を含み、前記第２のデータ並べ替え処理部は、前記第４の順序で前記バタフライ演算処理部に前記複数の第２のデータを入力することを特徴とする付記５に記載の高速フーリエ変換装置。
【０１７８】
（付記７）
前記第２のデータ並べ替え処理部は、前記複数の第２の入力データを記憶する第２の記憶部と、前記入力順序設定に基づいて、前記第２の記憶部への前記複数の第２のデータの書き込みアドレスを生成する書き込みアドレス生成部を備え、前記複数の第２の出力データを前記第３の順序で記憶し、前記第４の順序で読み出すことを特徴とする付記５又は６に記載の高速フーリエ変換装置。
【０１７９】
（付記８）
前記複数の第１の入力データをＸ(k)（kは０≦ｋ≦Ｎ−１の整数、ＮはＮ＞０の高速フーリエ変換又は逆高速フーリエのポイント数）とするとき、前記第２のデータ並べ替え処理部は、任意のkに対してＸ(k)とＸ(N-k)とを高々１サイクル以内の時間差で前記バタフライ演算処理部に入力することを特徴とする付記５乃至７のいずれかに記載の高速フーリエ変換装置。
（付記９）
付記１又は５に記載の高速フーリエ変換装置を含むディジタルフィルタ装置。
（付記１０）
付記１に記載の高速フーリエ変換装置と、
前記高速フーリエ変換装置により、入力された時間領域の複素数である前記複数の第１の入力データがフーリエ変換され生成された周波数領域の複数の第１の複素数データを構成する、すべての複素数のそれぞれの共役複素数を含む第２の複素数データを生成する複素共役生成部と、入力された複素数の第１、第２及び第３の入力フィルタ係数から、複素数の第１及び第２の周波数領域フィルタ係数を生成するフィルタ係数生成部と、前記第１の複素数データに対して前記第１の周波数領域フィルタ係数によりフィルタ処理を行い、第３の複素数データを出力する第１のフィルタ部と、前記第２の複素数データに対して前記第２の周波数領域フィルタ係数によりフィルタ処理を行い、第４の複素数データを出力する第２のフィルタ部と、前記第３の複素数信号と、前記第４の複素数信号とを合成して第５の複素数データを生成する複素共役合成部と、を備えることを特徴とするディジタルフィルタ装置。
（付記１１）
付記５に記載の高速フーリエ変換装置を備え、前記第２のデータ並べ替え処理部は、前記第３の順序で入力される前記第５の複素数データを、前記入力順序設定に基づいて前記第４の順序に並べ替え、前記第２の変換部は、前記第４の順序に並べ替えられた前記第５の複素数データに対して逆フーリエ変換を行って時間領域の信号に変換することを特徴とする付記１０記載のディジタルフィルタ装置。
【０１８０】
（付記１２）
前記フーリエ変換及び前記逆フーリエ変換の変換サンプル数をＮ（ＮはＮ＞０の整数）とするとき、前記複素共役生成部は、前記第１の複素数データに含まれる周波数番号（Ｎ−ｋ）の複素数の共役複素数を前記第２の複素数データとして生成することを特徴とする付記１０又は１１記載のディジタルフィルタ装置。
【０１８１】
（付記１３）
前記複素共役合成部は、０≦ｋ≦Ｎ−１の範囲の周波数番号ｋのそれぞれについて、前記第３の複素数データに含まれる周波数番号ｋの第１の複素数と、前記第４の複素数データに含まれる周波数番号（Ｎ−ｋ）の第２の複素数とを、複素加算して前記第５の複素数信号を生成する、ことを特徴とする付記１２に記載のディジタルフィルタ装置。
【０１８２】
（付記１４）
前記フィルタ係数生成部は、前記第１の周波数領域フィルタ係数を、前記第１の入力フィルタ係数に前記第２の入力フィルタ係数を複素加算したのち、さらに前記第３の入力フィルタ係数を複素乗算して生成し、前記第２の周波数領域フィルタ係数を、前記第１の入力フィルタ係数から前記第２の入力フィルタ係数を複素減算したのち、さらに前記第３の入力フィルタ係数を複素乗算して生成する、
ことを特徴とする付記１０乃至１３のいずれかに記載のディジタルフィルタ装置。
【０１８３】
（付記１５）
前記第１の周波数領域フィルタ係数は、前記第１の入力データに対する時間領域でのフィルタ処理である時間領域フィルタ処理における、前記複素入力信号の実数部に対するフィルタ係数に対応する、周波数領域での複素数フィルタ係数であり、前記第２の周波数領域フィルタ係数は、前記時間領域フィルタ処理における、前記第１の入力データの虚数部に対するフィルタ係数に対応する、周波数領域での複素数フィルタ係数であり、前記第３の周波数領域フィルタ係数は、前記時間領域フィルタ処理における、前記第１の入力データに対するフィルタ係数に対応する、周波数領域での複素数フィルタ係数であることを特徴とする付記１０乃至１４のいずれかに記載のディジタルフィルタ装置。
（付記１６）
高速フーリエ変換若しくは逆高速フーリエ変換により生成された複数の出力データの、出力順序設定に基づく並べ替え、又は前記高速フーリエ変換若しくは前記逆高速フーリエ変換の複数の入力データの、入力順序設定に基づく並べ替えを行う高速フーリエ変換方法。
（付記１７）
高速フーリエ変換装置が備えるコンピュータを、高速フーリエ変換又は逆高速フーリエ変換を行う手段、及び前記高速フーリエ変換若しくは前記逆高速フーリエ変換により生成された複数の出力データの、出力順序設定に基づいて並べ替える並べ替え手段、又は前記高速フーリエ変換若しくは前記逆高速フーリエ変換の複数の入力データの、入力順序設定に基づいて並べ替える並べ替え手段として機能させるための高速フーリエ変換プログラムを格納した非一時的な記憶媒体。
【０１８４】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１８５】
この出願は、２０１３年１月２３日に出願された日本出願特願２０１３−０１０１８３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１８６】
１０、３０  ＦＦＴ装置
２０、４０  ＩＦＦＴ装置
１１、１２、１３、１４、１５、１６、１７  データ並べ替え処理部
２１、２２  バタフライ演算処理部
３１  ひねり乗算処理部
４１、４３  読み出しアドレス生成部
４２、４４  書き込みアドレス生成部
５１、５５  読み出しアドレス
５２、５６  出力順序設定
５３、５７  書き込みアドレス
５４、５８  入力順序設定
６０、７０、８０  高速フーリエ変換装置
６１、７２  フーリエ変換部
６２、７１、８３  データ並べ替え処理部
８１、８２  処理部
１００、２００、３００  データ並べ替え処理部
１０１ａ〜１０１ｈ  データ記憶位置
１０２ａ〜１０２ｈ  データ読み出し位置
２０１ａ〜２０１ｈ  データ記憶位置
３０１ａ〜３０１ｈ  データ記憶位置
４００  ディジタルフィルタ回路
４１３  ＦＦＴ回路
４１４  ＩＦＦＴ回路
４１５  複素共役生成回路
４１６  複素共役合成回路
４２１  フィルタ回路
４２２  フィルタ回路
４３１〜４３６  複素数信号
４４１  フィルタ係数生成回路
４４５、４４６  複素数信号
５００  データフロー
５０１  データ並べ替え処理
５０２、５０３  バタフライ演算処理
５０４  ひねり演算処理
５０５  部分データフロー
６００  ＦＦＴ装置
６０１  ＦＦＴ部
６０２  データ並べ替え処理部
【図１】
2014115540.tif 000003
【図２】
2014115540.tif 000004
【図３】
2014115540.tif 000005
【図４】
2014115540.tif 000006
【図５】
2014115540.tif 000007
【図６】
2014115540.tif 000008
【図７】
2014115540.tif 000009
【図８】
2014115540.tif 000010
【図９】
2014115540.tif 000011
【図１０】
2014115540.tif 000012
【図１１】
2014115540.tif 000013
【図１２】
2014115540.tif 000014
【図１３】
2014115540.tif 000015
【図１４】
2014115540.tif 000016
【図１５】
2014115540.tif 000017
【図１６】
2014115540.tif 000018
【図１７】
2014115540.tif 000019
【図１８】
2014115540.tif 000020
【図１９】
2014115540.tif 000021
【図２０】
2014115540.tif 000022
【手続補正書】
【提出日】平成27年7月8日(2015.7.8)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
高速フーリエ変換装置が備えるコンピュータを、
高速フーリエ変換又は逆高速フーリエ変換を行う手段、及び
前記高速フーリエ変換若しくは前記逆高速フーリエ変換により生成された複数の出力データの、出力順序設定に基づいて並べ替える並べ替え手段、又は
前記高速フーリエ変換若しくは前記逆高速フーリエ変換の複数の入力データの、入力順序設定に基づいて並べ替える並べ替え手段
として機能させるための高速フーリエ変換プログラム。
【国際調査報告】
2014115540.tif 000023
2014115540.tif 000024