(57)【要約】【課題】回路規模を大きくすることなく、メモリを分割して高速な演算を行う高速フーリエ変換器を得ることを得ること。【解決手段】４以上を最大基数とするバタフライ演算器１を備える高速フーリエ変換装置であって、最大基数個の分割メモリで構成されバタフライ演算器の入出力データの記憶に使用するメモリ部２と、最大基数の２を底とする指数をビット数とする切り換え制御信号を生成する制御信号生成器５と、最大基数の１／２の個数を１組とする２入力２出力の信号切り換え器を前記ビット数に相当する数だけ含み、書き込み先の分割メモリを切り換える入力信号切り換え部３と、最大基数の１／２の個数を１組とする２入力２出力の信号切り換え器を前記ビット数に相当する数だけ含み、読み出し元の分割メモリを切り換る出力信号切り換え部４と、を備える。【選択図】        図１
2008186396.tif 000002
【特許請求の範囲】
【請求項１】
４以上を最大基数とするバタフライ演算器を備える高速フーリエ変換装置であって、
前記最大基数の個数の分割メモリで構成され、前記バタフライ演算器の入出力データの記憶に使用する記憶手段と、
前記最大基数の２を底とする指数をビット数とする切り換え制御信号を生成する制御手段と、
前記最大基数の１／２の個数を１組とする２入力２出力の信号切り換え器を、前記ビット数に相当する数だけ含み、入力データまたはバタフライ演算の演算結果の書き込み先の分割メモリを切り換える入力信号切り換え手段と、
前記最大基数の１／２の個数を１組とする２入力２出力の信号切り換え器を、前記ビット数に相当する数だけ含み、読み出し元の分割メモリを切り換え、前記バタフライ演算器にデータを出力する出力信号切り換え手段と、
を備え、
前記制御手段は、前記入力信号切り換え手段の各々の組に切り換え制御信号のビットをそれぞれ対応させ、前記出力信号切り換え手段の各々の組に、前記入力信号切り換え手段の各々の組に対応させたビットと対象となるように前記切り換え制御信号のビットをそれぞれ対応させ、
前記入力信号切り換え手段を構成する信号切り換え器、および、前記出力信号切り換え手段を構成する信号切り換え器は、第１の入力および第２の入力をそれぞれ第１の出力および第２の出力に接続する状態と、第１の入力および第２の入力をそれぞれ第２の出力および第１の出力に接続する状態と、を前記切り換え制御信号の対応ビットに基づいて切り換えることを特徴とする高速フーリエ変換装置。
【請求項２】
前記切り換え制御信号を、分割されていない状態の１つのメモリを想定した場合におけるメモリアドレスに相当する数値、を示す各ビットの排他的論理和により生成することを特徴とする請求項１に記載の高速フーリエ変換装置。
【請求項３】
前記バタフライ演算器を単一基数とし、前記最大基数をＮとし、入力データ数を２の（Ｌ＋１）乗個とし、ａ０、ａ１、…、ａＬをそれぞれバタフライ演算ごとの前記数値から選択した最小の数値を示す各ビットとするとき、ｍビットの切り換え制御信号ｃ０´、ｃ１´、・・・、ｃ（ｍ−１）´を、
ｃ０´＝ＥＸＯＲ（ａ０，ａｍ，…，ａ（Ｌ−ｍ＋１））
ｃ１´＝ＥＸＯＲ（ａ１，ａ（ｍ＋１），…，ａ（Ｌ−ｍ＋２））
ｃ２´＝ＥＸＯＲ（ａ２，ａ（ｍ＋２），…，ａ（Ｌ−ｍ＋３））
…
ｃ（ｍ−１）´＝ＥＸＯＲ（ａ（ｍ−１），ａ（２ｍ−１），…，ａＬ）
により生成することを特徴とする請求項２に記載の高速フーリエ変換装置。
【請求項４】
前記バタフライ演算器を混合基数とし、前記最大基数をＮとし、入力データ数を２の（Ｌ＋１）乗個とし、ａ０、ａ１、…、ａＬをそれぞれバタフライ演算ごとの前記数値から選択した最小の数値を示す各ビットとし、（Ｌ＋１）が切り換え制御信号のビット数ｍで割り切れない場合に、（Ｌ＋１）をｍで割った商をＳ、余りをＲＥとするとき、ｍビットの切り換え制御信号ｃ０´、ｃ１´、・・・、ｃ（ｍ−１）´を、
ｃ０´＝ＥＸＯＲ（ａ０，ａｍ，…，ａ（Ｓ×ｍ−ｍ），ａ（Ｓ×ｍ））
ｃ１´＝ＥＸＯＲ（ａ１，ａ（ｍ＋１），…，ａ（Ｓ×ｍ−ｍ＋１），ａ（Ｓ×ｍ＋１））
…
ｃ（ＲＥ−１）´＝ＥＸＯＲ（ａ２，ａ（ｍ＋２），…，ａ（Ｌ―ｍ），ａＬ）
…
ｃ（ｍ−１）´
＝ＥＸＯＲ（ａ（ｍ−１），ａ（２ｍ−１），…，ａ（Ｓ×ｍ−１））
により生成することを特徴とする請求項２に記載の高速フーリエ変換装置。
【請求項５】
２つの分割メモリの接続先の入れ替えを行うメモリ接続入れ替え手段、
をさらに備え、
前記バタフライ演算器を混合基数とし、前記最大基数を４とし、
前記制御手段は、前記最大基数のバタフライ演算と、前記最大基数以外の基数のバタフライ演算と、の切り換えを指示し、前記最大基数のバタフライ演算の指示を行う場合には、前記メモリ接続切り換え手段にメモリの入れ替えを行わない旨を指示し、前記最大基数以外の基数のバタフライ演算の指示を行う場合には、前記メモリ接続切り換え手段にメモリの入れ替えを指示し、
前記バタフライ演算器は、前記最大基数のバタフライ演算と前記最大基数以外の基数のバタフライ演算とを前記制御手段からの指示に基づき切り換えることを特徴とする請求項４に記載の高速フーリエ変換装置。
【請求項６】
前記分割メモリをさらに分割して記憶するための２つのシングルポートメモリと、
前記入力信号切り換え手段と前記分割メモリとの接続を前記２つのシングルポートメモリ間で切り換える入力メモリ切り換え手段と、
前記出力信号切り換え手段と前記分割メモリとの接続を前記２つのシングルポートメモリ間で切り換える出力メモリ切り換え手段と、
をさらに備えることを特徴とする請求項１〜５のいずれか１つに記載の高速フーリエ変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速フーリエ変換装置に関するものである。
【背景技術】
【０００２】
従来、無線通信において用いられるＯＦＤＭ（Orthogonal  Frequency  Division  Multiplexing）方式の送受信機のシステム構成例を図２２に示す。図２２に示すように、このシステムは、送信機１００と受信機２００で構成される。送信機１００においては、送信データを誤り訂正符号化部１０１により誤り訂正符号化し、インターリーバ１０２によりインターリーブを行い、１６ＱＡＭ（Quadrature  Amplitude  Modulation）やＱＰＳＫ（Quadrature  Phase  Shift  Keying）等によるシンボルマッピングをシンボルマッパ１０３により行う。そして、シンボルマッパ１０３の出力をＳ／Ｐ（シリアル／パラレル変換器）１０４によりシリアルパラレル変換し、ＩＦＦＴ（Inverse  Fast  Fourier  Transform：高速フーリエ逆変換）部１０５でＩＦＦＴし、ＩＦＦＴ部の出力をＰ／Ｓ（パラレル／シリアル変換器）１０６によりパラレルシリアル変換して周波数変換部１０７で送信周波数に変換したのちに、増幅器１０８で増幅してアンテナ１０９から送信する。
【０００３】
一方、受信機２００においては、アンテナ２０１から入力した信号を増幅器２０２により増幅し、周波数変換部２０３によりベースバンド信号に変換する。そして、ベースバンド信号をＳ／Ｐ２０４によりシリアルパラレル変換し、ＦＦＴ（Fast  Fourier  Transform：高速フーリエ変換）部２０５でＦＦＴし、Ｐ／Ｓ２０６によりパラレルシリアル変換し、シンボルデマッパ２０７により１６ＱＡＭやＱＰＳＫ等の信号をビット単位の軟判定情報に変換し、デインターリーバ２０８でデインターリーブして誤り訂正復号部２０９で誤り訂正復号を行うことにより、受信データを得る。
【０００４】
このように、ＯＦＤＭ方式では、高速フーリエ逆変換を用いて送信信号を生成し、高速フーリエ変換を用いて復調を行う。また、高速フーリエ逆変換と高速フーリエ変換は、演算内部における位相回転方向が逆方向となるが、演算アルゴリズムは同一である。
【０００５】
高速フーリエ変換とは、離散フーリエ変換（ＤＦＴ：Discrete  Fourier  Transform）を高速に実行するためのアルゴリズムである。離散フーリエ変換は以下の式（１）によって定義される。
【０００６】
【数１】
2008186396.tif 000003
【０００７】
ここで、Ｎは離散フーリエ変換を行うデータの個数、ｘkは時系列の入力データでありｋは０〜Ｎ−１の値を取る。Ｆiは離散フーリエ変換結果であり、ｉは周波数に対応し０〜Ｎ−１の値を取る。また、ｅは自然対数の底，ｊは虚数単位，ｗは回転因子である。式（１）では、乗算がＮ2回発生するため、Ｎが大きくなると演算量が膨大となる。
【０００８】
このためＮが２のべき乗の場合は、乗算回数をＮlog2Ｎに削減することができる高速フーリエ変換と呼ばれる手法が一般に用いられている。高速フーリエ変換には、周波数間引き型と時間間引き型の２種類があり、以下にそれぞれ説明する。
【０００９】
まず、周波数間引き型高速フーリエ変換について説明する。周波数間引き型高速フーリエ変換においては、式（１）におけるｉが偶数の場合と奇数の場合に場合分けを行うことにより演算量を削減できることを利用する。ｉが偶数の場合と奇数の場合に分けることにより、式（１）は以下の式（２）に示す２つの式に変換できる。
【００１０】
【数２】
2008186396.tif 000004
【００１１】
上記式（２）もさらにｉが偶数奇数の場合に分けることができ、この操作を繰り返すことで演算量を削減することができる。例えば１６ポイント（Ｎ＝１６）の周波数間引き型高速フーリエ変換の場合は図２３に示すシグナルフローで演算を行う。この種の演算はシグナルフローの形からバタフライ演算と呼ばれる。また、図２３に示す１６ポイントの周波数間引き型高速フーリエ変換は図２４の様に並び替えて表す場合もある。図２３と図２４は表記上の並び順を変えただけで処理は同じである。
【００１２】
つぎに、時間間引き型高速フーリエ変換について説明する。式（１）は、ｋが偶数の場合と奇数の場合に分けて以下の式（３）のように２つの式に変換できる。
【００１３】
【数３】
2008186396.tif 000005
【００１４】
上記式（３）も周波数間引き型高速フーリエ変換と同様に、偶数と奇数の場合分けを繰り返すことにより演算量を削減することができる。例えば１６ポイントの時間間引き型高速フーリエ変換の場合は図２５に示すシグナルフローで演算を行う。図２５に示す１６ポイント時間間引き型高速フーリエ変換シグナルフローを、ｘkが連続する様に並び順を修正すると図２６のようになる。
【００１５】
このように、高速フーリエ変換により乗算回数をＮlog2Ｎに削減することができるが、近年、無線通信においてはＯＦＤＭ方式，周波数領域等化，大規模な相関演算など高速フーリエ変換を用いる機会が増加しており、特に、第４世代無線通信システムでは１００ＭＨｚ以上の帯域幅の信号を処理する必要があるなど、伝送速度の高速化に伴い、より少ない回路規模と消費電力で高速フーリエ変換の処理を高速に実行することが求められている。このため、さらに演算量を削減する手法として基数４（Radix−４）高速フーリエ変換と呼ばれる手法が用いられる。
【００１６】
以下、Radix−４高速フーリエ変換について説明する。図２５に示した時間間引き型高速フーリエ変換シグナルフローは、図２７に定義するバタフライ演算ブロックにより図２８のブロック図で示すことができる。図２８に示すバタフライ演算ブロックは、ｘ0，ｘ1を入力、ｙ0，ｙ1を出力とするとき下記式（４）に示す演算を行う。
ａ  ＝  ｗkｘ1
ｙ0  ＝  ｘ0＋ａ
ｙ1  ＝  ｘ0−ａ                                      …（４）
【００１７】
ｋは、回転因子を指定する数値であり、図２８のブロック中に示される数値も、ｋと同様に回転因子を指定する数値である。図２８の図は、図２９に示すように４個のバタフライ演算ブロックを１つのまとまりとする基数４のバタフライ演算ブロックを定義すると、図３０のブロック図に変換することができる。基数４高速フーリエ変換では、このように基数４のバタフライ演算ブロックを用いるため、１演算ブロックの乗算回数が３回となり乗算回数を削減することができる。さらに、演算ブロックの数が１／４に削減されることから、ハードウエアで１つの演算ブロックを実装してメモリ上のデータに複数クロックを用いてアクセスして高速フーリエ変換を行う場合には、基数４高速フーリエ変換では、従来の高速フーリエ変換に比べ１／４の時間で演算を行うことができる。
【００１８】
同様な手法により、基数８や基数１６を用いて高速フーリエ変換を高速化することが可能であるが、１演算ブロックへの入出力が増大する。したがって、メモリを用いて演算する場合はマルチポートメモリが必要となる。一般に、マルチポートメモリの回路はポート数の増大とともにＬＳＩ（Large  Scale  Integration）上の面積が増大するためコストが高く現実的ではない。
【００１９】
この問題を解決する方法として、メモリを高速フーリエ変換の基数の値に分割して、並列に読み書きを行うことにより高速化を行う高速フーリエ装置が、下記特許文献１に示されている。
【００２０】
【特許文献１】特開２００１−３３１４７３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２１】
しかしながら、上記特許文献１に示される高速フーリエ変換装置においては、メモリを分割した個数をｎとするとｎ入力１出力の切り換え器を２ｎ個必要とするため、回路規模が大きく、また、さらに、この切り換え器の制御信号の生成に加算器を用いることからさらに回路規模が増大する、という問題があった。
【００２２】
本発明は、上記に鑑みてなされたものであって、回路規模を大きくすることなく、メモリを分割して高速な演算を行う高速フーリエ変換器を得ることを目的とする。
【課題を解決するための手段】
【００２３】
上述した課題を解決し、目的を達成するために、本発明は、４以上を最大基数とするバタフライ演算器を備える高速フーリエ変換装置であって、前記最大基数の個数の分割メモリで構成され、前記バタフライ演算器の入出力データの記憶に使用する記憶手段と、前記最大基数の２を底とする指数をビット数とする切り換え制御信号を生成する制御手段と、前記最大基数の１／２の個数を１組とする２入力２出力の信号切り換え器を、前記ビット数に相当する数だけ含み、入力データまたはバタフライ演算の演算結果の書き込み先の分割メモリを切り換える入力信号切り換え手段と、前記最大基数の１／２の個数を１組とする２入力２出力の信号切り換え器を、前記ビット数に相当する数だけ含み、読み出し元の分割メモリを切り換え、前記バタフライ演算器にデータを出力する出力信号切り換え手段と、を備え、前記制御手段は、前記入力信号切り換え手段の各々の組に切り換え制御信号のビットをそれぞれ対応させ、前記出力信号切り換え手段の各々の組に、前記入力信号切り換え手段の各々の組に対応させたビットと対象となるように前記切り換え制御信号のビットをそれぞれ対応させ、前記入力信号切り換え手段を構成する信号切り換え器、および、前記出力信号切り換え手段を構成する信号切り換え器は、第１の入力および第２の入力をそれぞれ第１の出力および第２の出力に接続する状態と、第１の入力および第２の入力をそれぞれ第２の出力および第１の出力に接続する状態と、を前記切り換え制御信号の対応ビットに基づいて切り換えることを特徴とする。
【発明の効果】
【００２４】
この発明によれば、最大基数が２mのバタフライ演算器の入出力時に使用するメモリ部を、最大基数と同一の数の分割メモリに分割し、２m-1個の２入力２出力の切り換え器で１段を構成する３段の切り換え部によりメモリ部への入力信号切り換えを行うようにした。このため、バタフライ演算器への入出力を並列に行うことにより、演算処理を高速化することができ、また、従来のメモリ分割方式にくらべ、信号の切り換え器の数を削減することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２５】
以下に、本発明にかかる高速フーリエ変換装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００２６】
実施の形態１．
図１は、本発明にかかる高速フーリエ変換装置の実施の形態１の機能構成例を示す図である。図１に示すように、本実施の形態の高速フーリエ変換装置は、基数８のバタフライ演算を行うバタフライ演算器１と、バタフライ演算器１の入出力データが記憶され、８個の分割メモリ＃０〜＃７で構成されるメモリ部２と、入力データの書き込み先の分割メモリ＃０〜＃７を切り換える入力信号切り換え部３と、分割メモリ＃０〜＃７からの出力データの出力先を切り換える出力信号切り換え部４と、入力信号切り換え部３と出力信号切り換え部４の切り換えを制御するための切り換え制御信号を生成するとともに分割メモリ＃０〜＃７に対して書き込みおよび読み出しメモリアドレスを指示する制御信号生成器５と、メモリを分割しない場合のメモリアドレスに相当する未分割メモリアドレス（分割されていない状態の１つのメモリを想定した場合におけるメモリアドレスに相当する数値）を生成するアドレス生成器６と、で構成される。さらに、入力信号切り換え部３は、２入力２出力の信号切り換え器７−１〜７−１２で構成され、出力信号切り換え部４は、２入力２出力の信号切り換え器８−１〜８−１２で構成される。入力信号切り換え部３は、４つの切り換え器ごとに、同じ制御信号に基づき同一の切り換えを行う。この同一の切り換えを行う信号切り換え器７−１〜７−４，信号切り換え器７−５〜７−８，信号切り換え器７−９〜７−１２この同じ制御信号に基づき同一の切り換えを行う４つの切り換え器で１段の切り換え器を行い、合計３段の切り換えを行う。
【００２７】
図１において、バタフライ演算器１のなかには、基数８のバタフライ演算のシグナルフローの例を記載している。シグナルフローにおいて、ｗはバタフライ演算における回転因子であり、ｋは回転因子を指定するための整数、ｊは虚数単位を表す。本実施の形態では、バタフライ演算器１として、基数８のバタフライ演算器を用いているため、バタフライ演算器１の基数にあわせて、メモリ部２を８個に分割している。このようにメモリ部２を分割して１回のバタフライ演算への入力を並列に行うことができ、演算処理の高速化が可能となる。
【００２８】
つづいて、本実施の形態の分割メモリ＃０〜＃７のメモリアドレス制御方法について説明する。本実施の形態では、メモリ部２を分割しているため、分割メモリ＃０〜＃７の指定と分割メモリ＃０〜＃７内のアドレスの組み合わせによりメモリ部２への書き込みおよび読み出しアドレスを指定することになる。
【００２９】
ここでは、基数４のバタフライ演算を行う場合について説明する。基数４のバタフライ演算は、４入力４出力の演算器で、ｘ0，ｘ1，ｘ2，ｘ3を入力データ、ｙ0，ｙ1，ｙ2，ｙ3を出力データとし、ｗを高速フーリエ変換における回転因子、ｋを回転因子を指定するための整数、ｊを虚数単位とするとき、たとえば、下記式（５）で示される演算を行う演算器である。
ａ1  =  ｗ2kｘ1
ａ2  =  ｗkｘ2
ａ3  =  ｗ3kｘ3
ｂ0  =  ｘ0＋a1
ｂ1  =  ｘ0−a1
ｂ2  =  ａ2＋ａ3
ｂ3  =  −ｊ(ａ2−ａ3)
ｙ0  =  ｂ0＋ｂ2
ｙ1  =  ｂ1＋ｂ3
ｙ2  =  ｂ0−ｂ2
ｙ3  =  ｂ1−ｂ3                                        …（５）
【００３０】
図２は、１つの基数４のバタフライ演算を行うバタフライ演算器１０を用い、分割しない１つのメモリ９を用いて高速フーリエ変換処理を行う場合のメモリアクセスを説明するための図である。図２に示したバタフライ演算器１０は基数４のバタフライ演算器であり、メモリ９は分割されていないメモリである。メモリ９内の数値“０”〜“１５”はメモリ９のアドレス（未分割メモリアドレス）を表す。この例では入力データ数を１６個とし、入力データは“０”〜“１５”の１６個のアドレスのいずれかに書き込まれる。バタフライ演算器１０内の数値は、式（５）におけるｋを表す。Ｅ０〜Ｅ７は、バタフライ演算器１０が演算を行うバタフライ演算の番号を示す。ｘ0〜ｘ15は、高速フーリエ変換処理への入力データを示し、Ｆ0〜Ｆ15は、高速フーリエ変換処理の出力データを示す。ここでは、図２に示すように出力データ（Ｆ0〜Ｆ15）が連続するような高速フーリエ変換処理とし、入力データは図２に示すように、０〜１５までを２進数表示した場合のビットの並び順を逆にした順番（たとえば、２番目のデータは、“１（１０進表示）”＝“０００１（２進表示）"のビットの並びを逆にすると“１０００（２進表示）"＝”８（１０進表示）“となるためｘ8）で、図２に示す順（ｘ0，ｘ8，ｘ4，…）に４個（バタフライ演算の基数）ずつ入力されるものとする。
【００３１】
図３は、処理ごとのアクセスするメモリアドレスを示す図である。図３では、処理の順番に使用するメモリアドレスを記載している。処理の順番は、まず、データ入力、つぎにバタフライ演算Ｅ０，バタフライ演算Ｅ１，…，バタフライ演算Ｅ７を行い、最後にデータ出力となる。中央の列は、メモリアドレスの１０進表示を表し、２進表示をしたアドレスであり、最下位のｂｉｔをｂ０，最上位のｂｉｔをｂ３として示している。表では、参考のため、データ入力およびデータ出力の読み出しアドレスも記載しているが、データ入力およびデータ出力は本実施の形態の高速フーリエ変換処理に含まないため、ここでは、バタフライ演算Ｅ０〜Ｅ７のメモリアドレス制御を説明の対象とする。
【００３２】
バタフライ演算Ｅ０〜Ｅ３においては、メモリアドレス“０”〜“１５”を、数値順にアクセスするが、バタフライ演算Ｅ４〜Ｅ７においては、“０”〜“１５”を２進数表示した場合に下位２ビットと上位２ビットを入れ替えた順にメモリアクセスを行う。なお、以下、高速フーリエ変換処理への入力データを処理するバタフライ演算（この例では、バタフライ演算Ｅ０〜Ｅ３）を初段のバタフライ演算とよび、初段のバタフライ演算の結果を用いて演算するバタフライ演算を２段目のバタフライ演算とよぶこととする。
【００３３】
図２の例のようにメモリが１つの場合はメモリアクセスがシリアルに行われるため、基数４のバタフライ演算器１０により高速に演算を行ったとしてもメモリアクセスがネックとなる。バタフライ演算の基数と同じ４個にメモリを分割すると、メモリアクセスの並列化により処理が高速化できる。したがって、以下にメモリを４個に分割する例についてメモリアドレス制御方法に説明する。
【００３４】
本実施の形態では、分割したメモリ（分割メモリ）を識別するための２ｂｉｔのメモリ番号とその分割メモリ内の２ｂｉｔのアドレスの組み合わせによりアクセスするアドレスを特定することとする。まず、本実施の形態のメモリ番号の生成方法について説明する。１回のバタフライ演算のメモリアクセスは、全て並列して行うと高速化の効果が最も高い。このためには、バタフライ演算Ｅ０〜Ｅ７ごとに、それぞれ４つの互いに異なるメモリ番号を生成する必要がある。
【００３５】
つぎに、図３によると、バタフライ演算Ｅ０〜Ｅ７において、各々のバタフライ演算の４回のメモリアクセスのなかで、変化しているｂｉｔはｂ０〜ｂ３のうちの２ｂｉｔのみであることがわかる。具体的には、バタフライ演算Ｅ０〜Ｅ４では下位２ｂｉｔ、バタフライ演算Ｅ４〜Ｅ７では上位２ビットのみが変化している。これは基数が４であるためであり、基数が２ｎ（ｎは正の整数）の場合はｎｂｉｔのみが変化することになる。この性質を利用すると、基数が４の場合は１つとびに排他的論理和をとることで、１つのバタフライ演算の４回のメモリアクセスのメモリアドレスから４個の異なるメモリ番号を生成できる。メモリ番号（“０”〜“３”）を表す２ビットをｃ０，ｃ１とし、式で表すと下記式（６）となる。
ｃ０＝ＥＸＯＲ（ｂ０，ｂ２）
ｃ１＝ＥＸＯＲ（ｂ１，ｂ３）                              …（６）
【００３６】
ＥＸＯＲは、排他的論理和を示し、以下の式（７）に示す演算である。
ＥＸＯＲ（０，０）＝０
ＥＸＯＲ（０，１）＝１
ＥＸＯＲ（１，０）＝１
ＥＸＯＲ（１，１）＝０                                    …（７）
【００３７】
式（６）に示す演算を行い、メモリ番号を求めた場合のメモリ番号と各分割メモリ内のメモリアドレスを図４に示す。各分割メモリ内のメモリアドレスとしては、図３で示したｂ０およびｂ１を用いているが、これに限らず、たとえば、図３で示したｂ２およびｂ３を用いるなど、１組の演算であるバタフライ演算Ｅ０〜Ｅ３およびバタフライ演算Ｅ０〜Ｅ７において、それぞれ、メモリ番号との組み合わせで一意に識別できるようなメモリアドレスであればどのようなものを用いてもよい。このように１つのバタフライ演算で、メモリアクセスを一度に４並列で行うことができるので、１つのメモリを用いる場合にくらべ処理時間を１／４に削減することができる。
【００３８】
ここで、図４に示したｃ０、ｃ１に注目すると、図５に示すパターンＰ１〜パターンＰ４の４パターンに限られることがわかる。これは、図３に示したように、１つのバタフライ演算の４回のメモリアクセスに注目すると、変化しているｂｉｔはｂ０〜ｂ３のうち２ｂｉｔのみであるため、ｃ０，ｃ１は、パターンＰ１に対して、ｃ０またはｃ１を反転したパターン、またはｃ０およびｃ１を反転したパターンのみとなり、その組み合わせが４通りしかないためである。このため、４回のメモリアクセスの最初の１パターン（この場合はパターンＰ１）から残りのパターンを生成することが可能である。
【００３９】
図６−１〜６−３はパターンＰ１からパターンＰ２〜Ｐ４を生成する方法の一例を示す図である。図６−１は、パターンＰ１からパターンＰ２を生成する例を示し、パターンＰ１のｃ０を１段目と２段目、３段目と４段目をそれぞれ入れ替えることによりパターンＰ２が生成できる。図６−２は、パターンＰ１からパターンＰ３を生成する例を示し、パターンＰ１のｃ１を上の２段と下の２段を入れ替えることによりパターンＰ３が生成できる。図６−３は、パターンＰ１からパターンＰ４を生成する例を示し、パターンＰ１のｃ０を１段目と２段目，３段目と４段目をそれぞれ入れ替え、さらに、ｃ１を上２段とした２段を入れ替えることによりパターンＰ４が生成できる。すなわち、ｃ０，ｃ１について、入れ替えるか入れ替えないかを示す１ｂｉｔの信号（入れ替え制御信号とよぶ）が各々あれば、パターンＰ１からパターンＰ２〜パターンＰ４が生成できることになる。
【００４０】
図７は、４分割メモリに対するメモリアクセスを行う切り換え器とメモリの一構成例を示す図である。図７に示すように、メモリ部１１は分割メモリ＃０〜＃３に分割されており、分割メモリ＃０〜＃３のメモリ番号はそれぞれメモリ＃と同一の数値“０”〜“３”とする。４つの信号切り換え器で構成される入力信号切り換え部１２が、メモリ部１１への入力を切り換え、４つの信号切り換え器で構成される出力信号切り換え部１３がメモリ部１１からの出力の切り換えを行う。ｃ０´，ｃ１´は、それぞれｃ０，ｃ１に対する入れ替え制御信号を示している。また、ｘ０，ｘ１，ｘ２，ｘ３，ｘ４は入力データを示し、ｙ０，ｙ１，ｙ２，ｙ３は出力データを示している。なお、出力信号切り換え部１３は、入力信号切り換え部１２と鏡像の関係にあり、読み出しと書き込みを矛盾なく行うことができる。
【００４１】
図８−１〜８−３に、信号切り換え器の接続切り換えを説明するための図を示す。ｓは切り換え制御信号を表し、ｘ１、ｘ２は入力データを、ｙ１，ｙ２は出力データを表す。図８−１は、入力側と出力側が接続されていない状態を示している。切り換え制御信号ｓは“０”または"１"の値をとり、その値により信号切り換え器を制御する。図８−２は、切り換え制御信号ｓが０の場合を表し、切り換え制御信号ｓが“０”の場合には、ｙ１＝ｘ１，ｙ２＝ｘ２となり、入力データの順に出力データが出力される。図８−３は、制御信号ｓが“１”の場合を表し、切り換え制御信号ｓが０の場合には、ｙ２＝ｘ１，ｙ１＝ｘ２と入力データの順と出力データの順が入れ替わる。
【００４２】
図８−１〜図８−３に示した４つの信号切り換え器を図７の入力信号切り換え部１２のように４つ用いることにより、図６−１〜６−３に示した４パターンに対応するメモリアクセスが可能となる。入力信号切り換え部１２の左側のｃ０´の信号を受け取る２つの信号切り換え器は、同一の切り換え制御信号ｃ０´により動作する。
【００４３】
ｃ１´の切り換え制御信号に対しても同様に切り換えが行われ、たとえば、ｃ０´＝０，ｃ１´＝０の場合（図５のパターンＰ１に相当）には、ｘ０は、２段目の信号切り換え器（ｃ１´による切り換え）の後に、分割メモリ＃０に出力される。ｃ０´＝１，ｃ１´＝０の場合（図５のパターンＰ２に相当）には、ｘ０は、分割メモリ＃１に出力される。ｃ０´＝０，ｃ１´＝０の場合に、ｘ０，ｘ１，ｘ２，ｘ３が、それぞれ分割メモリ＃０，＃１，＃２，＃３に入力されるようにメモリを配置する。そして、バタフライ演算ごとの最初のメモリ番号（図４に示したバタフライ演算ごとの一番上の段のｃ１，ｃ０）を切り換え制御信号として入力すると、各バタフライ演算に対応するメモリ番号のパターンにしたがったメモリアクセスが可能である。たとえば、バタフライ演算Ｅ０，Ｅ１，Ｅ２，Ｅ３に対応する切り換え制御信号（“ｃ１´ｃ０´”）は、それぞれ“００”，“０１"，“１０“，“１１"となる。
【００４４】
ｃ１´，ｃ０´は、メモリを分割しない場合の各バタフライ演算（各パターン）の最初のメモリアドレスを示すビット（図３に示したバタフライ演算ごとの一番上の段のｂ０，ｂ１，ｂ２，ｂ３）をａ０，ａ１，ａ２，ａ３とすると、以下の式（８）で表すことができる。
ｃ０´＝ＥＸＯＲ（ａ０，ａ２）
ｃ１´＝ＥＸＯＲ（ａ１，ａ３）                              …（８）
【００４５】
つづいて、メモリを８分割する場合について説明する。図９は、メモリを８分割する場合のメモリと入出力制御に関する部分の構成例を示す図である。図９において、１２個の信号切り換え器で構成される入力信号切り換え部１２ａが、メモリ部１１ａへの入力を切り換え、４つの信号切り換え器で構成される出力信号切り換え部１３ａがメモリ部１１ａからの出力の切り換えを行う。図９では、メモリを分割メモリ＃０〜＃７に８分割しており基数８のバタフライ演算に対応したものである。この場合には、８つの入力データで１つのパターンを構成することになる。基数８の場合も、メモリ４分割の場合と同様に切り換え制御信号を生成するが、この場合には、図５で示したパターンは８種類となる。したがって、メモリ番号を表すためには、３ビット（ｃ０、ｃ１、ｃ２）が必要であり、たとえば、入力データを６４個とし、分割しないメモリを用いたときの各々のアドレスをｂ０〜ｂ５の６ビットで表すとき、メモリ番号を生成するための式は以下の式（９）のようになる。
ｃ０＝ＥＸＯＲ（ｂ０，ｂ３）
ｃ１＝ＥＸＯＲ（ｂ１，ｂ４）
ｃ２＝ＥＸＯＲ（ｂ２，ｂ５）                              …（９）
【００４６】
そして、この場合も、メモリ４分割の場合と同様に、各バタフライ演算の最初のメモリ番号を用いて切り換え制御信号を生成すると、はじめのメモリ番号のパターンから残りのパターン（この場合は７種類）が生成できる。ｃ０´，ｃ１´，ｃ２´の３ビットで制御信号を表すとすると、ｃ０´，ｃ１´は、分割数４と同じく、上下２段の入れ替え，連続する２個ずつ単位の入れ替えをそれぞれ表し、ｃ２´は連続する４個単位の入れ替えを表すことになる。
【００４７】
このような３ビットの制御信号は、基数４の場合と同様に、メモリを分割しない場合の各バタフライ演算の最初のメモリアドレスを表すビットをａ０〜ａ５とすると、以下の式（１０）で表すことができる。
ｃ０´＝ＥＸＯＲ（ａ０，ａ３）
ｃ１´＝ＥＸＯＲ（ａ１，ａ４）
ｃ２´＝ＥＸＯＲ（ａ２，ａ５）                            …（１０）
【００４８】
このように、ｎ＝２mをバタフライ演算の基数とし、メモリ分割数をｎとするときには、ｍビットの切り換え制御信号を用いｍ段のｍ×２m-1個の切り換え器により入力信号切り換え部を構成し、信号切り換えを行う切り換え器と鏡像関係になるように、ｍ×２m-1個の切り換え器を用いて出力信号切り換え部を構成するようにすればよい。この場合、入力データの数をＮ＝２L+1個とし、バタフライ演算ごとのメモリを分割しない場合の入力データの最初のメモリアドレスの２進表示のビットをａ０〜ａＬとするとき、制御信号ｃ０´〜ｃ（ｍ−１）´は、以下の式（１１）のように表すことができる。
ｃ０´＝ＥＸＯＲ（ａ０，ａｍ，…，ａ（Ｌ−ｍ＋１））
ｃ１´＝ＥＸＯＲ（ａ１，ａ（ｍ＋１），…，ａ（Ｌ−ｍ＋２））
ｃ２´＝ＥＸＯＲ（ａ２，ａ（ｍ＋２），…，ａ（Ｌ−ｍ＋３））
…
ｃ（ｍ−１）´＝ＥＸＯＲ（ａ（ｍ−１），ａ（２ｍ−１），…，ａＬ）  …（１１）
【００４９】
また、このとき各入力データに対するメモリ番号を２進表示でｃ０〜ｃ（ｍ-１）とし、各入力データのメモリを分割しない場合のメモリアドレスを２進表示でｂ０〜ｂＬとすると、以下の式（１２）のようになる。
ｃ０＝ＥＸＯＲ（ｂ０，ｂｍ，…，ｂ（Ｌ−ｍ＋１））
ｃ１＝ＥＸＯＲ（ｂ１，ｂ（ｍ＋１），…，ｂ（Ｌ−ｍ＋２））
ｃ２＝ＥＸＯＲ（ｂ２，ｂ（ｍ＋２），…，ｂ（Ｌ−ｍ＋３））
…
ｃ（ｍ−１）＝ＥＸＯＲ（ｂ（ｍ−１），ｂ（２ｍ−１），…，ｂＬ）  …（１２）
【００５０】
つづいて、図１にもどり、本実施の形態の高速フーリエ変換装置の動作について説明する。ここでは、入力データの数を２12＝４０９６個とする。まず、高速フーリエ変換処理の開始時には、高速フーリエ変換装置に対して高速フーリエ変換処理の入力データが信号のならび順に入力される。ここでは、入力データをｘ0，ｘ1，ｘ2，…，入力データをＦ0，Ｆ1，Ｆ2，…とするとき、図２と同様に、出力データが、Ｆ0，Ｆ1，Ｆ2，…と順番に並ぶような処理とし、入力データは、０，１，２，…を２進数表示した場合のビットの並び順を逆にした順番で、８個（＝メモリの分割数）ずつ入力されるものとする。たとえば、最初のデータは、ｘ0で、つぎのデータは、“１０００００００００００（２進）”＝“２０４８（１０進）”であることからｘ2048という順番となる。
【００５１】
本実施の形態では、これらの外部から入力された入力データは、上述のとおり順番を並びかえた後に入力するため、外部から入力された入力データの書き込みのための未分割アドレスは、昇順となり初段のバタフライ演算と同じものとなる。したがって、アドレス生成器６は、初段のバタフライ演算について、バタフライ演算ごとに未分割メモリアドレスを生成し、制御信号生成器５に出力する。つぎに、制御信号生成器５は、受け取った未分割メモリアドレスのうちの最初の未分割メモリアドレス（２進表示の各ビットをａ０〜ａ１１とする）を用いて、式（１１）に基づき切り換え制御信号ｃ０´〜ｃ３´を生成し、生成した切り換え制御信号を、入力信号切り換え部３の信号切り換え器７−１〜７−１２へ出力する。具体的には、ｃ０´については信号切り換え器７−１〜７−４へ、ｃ１´については信号切り換え器７−５〜７−８へ、ｃ２´については信号切り換え器７−９〜７−１２へ出力する。図１の例では、メモリの分割数ｎは、８＝２3であるため、切り換え制御信号は３ビットとなり、式（１１）においてｍ＝３の場合となる。また、入力データは２12個であるため、Ｌ＝１１となる。図１０に、このようなメモリを８分割した場合の切り換え信号を生成するための論理回路の一例を示す。
【００５２】
また、制御信号生成器５は、受け取った未分割メモリアドレスに基づき、メモリ番号と各分割メモリ＃０〜＃７内のメモリアドレスを生成し、メモリ番号に対応する分割メモリ＃０〜＃７にそれぞれ対応するメモリアドレスを保持する。メモリ番号は、式（１２）に基づいて算出する。本実施の形態では、メモリ番号と各分割メモリ内のメモリアドレスの組み合わせで書き込みおよび読み込みアドレスを指定することになるため、メモリ番号の使用ビット数と各分割メモリ内のメモリアドレスの使用ビット数が入力データの個数となる。したがって、この場合は、入力データの個数が１２ビット、メモリ番号が３ビットであるため、各分割メモリ＃０〜＃７内のメモリアドレスは９ビットとなる。このメモリアドレスは、入力データごとの未分割メモリアドレスの１２ビットのうちの任意の９ビットを用いることができるが、ここでは、たとえば、下位９ビットを使用することとする。
【００５３】
つぎに、信号切り換え器７−１〜７−１２は、制御信号生成器５から受け取った切り換え制御信号ｃ０´，ｃ１´，ｃ２´に基づきそれぞれ切り換えを行う。信号切り換え器７−１〜７−１２および信号切り換え器８−１〜８−１２は、それぞれ図８−１〜８−３で示した２入力２出力の信号切り換え器とし、切り換え制御信号ｃ０´，ｃ１´，ｃ２´に基づき、入力データと出力信号の接続を変更することにより、信号を切り換える。そして、信号切り換え器７−１〜７〜４に入力データが入力された場合には、信号切り換え器７−１〜７〜４は、切り換え制御信号ｃ０´に従ったそれぞれの出力先の信号切り換え器７−５〜７〜８に出力する。信号切り換え器７−５〜７〜８は、信号切り換え器７−１〜７〜４から出力された信号を切り換え制御信号ｃ１´に従ったそれぞれの出力先の信号切り換え器７−９〜７〜１２に出力する。そして、信号切り換え器７−９〜７〜１２は、信号切り換え器７−５〜７〜８から出力された信号を切り換え制御信号ｃ２´に従ったそれぞれの出力先のメモリ＃０〜＃７に出力する。そして、制御信号生成器５は、信号切り換え器７−５〜７〜８から出力された信号をメモリ＃０〜＃７にそれぞれ対応する保持しているメモリアドレスに書き込む。以上の、外部からの入力データの入力からメモリアドレスに書き込むまでの処理を、８個の入力データごとにすべての外部からの入力データの書き込みが終了するまで（この場合は２12／８回）行うと、以降のバタフライ演算処理を行う。
【００５４】
制御信号生成器５は、外部からの入力データのメモリ＃０〜＃７への書き込みが終了すると、バタフライ演算処理として、まず、アドレス生成器６に初段のバタフライ演算の未分割アドレスの生成を指示する。そして、アドレス生成器６は、バタフライ演算ごとに未分割メモリアドレスを生成し、制御信号生成器５に出力する。つぎに、制御信号生成器５は、受け取った未分割メモリアドレスのうちの最初の未分割メモリアドレスを用いて、式（１１）に基づき切り換え制御信号ｃ０´〜ｃ３´を生成し、生成した切り換え制御信号を、入力信号切り換え部３の信号切り換え器７−１〜７−１２および出力信号切り換え部４の信号切り換え器８−１〜８−１２へ、それぞれ出力する。具体的には、ｃ０´については信号切り換え器７−１〜７−４および信号切り換え器８−９〜８−１２へ、ｃ１´については信号切り換え器７−５〜７−８および信号切り換え器８−５〜８−８へ、ｃ２´については信号切り換え器７−９〜７−１２および８−１〜８−４へ出力する。信号切り換え器７−１〜７−１２および信号切り換え器８−１〜８−１２は、制御信号生成器５から受け取った切り換え制御信号ｃ０´，ｃ１´，ｃ２´に基づきそれぞれ切り換えを行う。
【００５５】
また、制御信号生成器５は、受け取った未分割メモリアドレスに基づき、メモリ番号と各分割メモリ＃０〜＃７内のメモリアドレスを生成し、メモリ番号に対応する分割メモリ＃０〜＃７にそれぞれ対応するメモリアドレスを保持する。メモリ番号は、式（１２）に基づいて算出する。
【００５６】
そして、制御信号生成器５は、メモリ＃０〜＃７から保持しているメモリアドレスに基づき信号の読み出しを行い、信号切り換え器８−１〜８−４に出力する。そして、信号切り換え器８−１〜８〜４は、メモリ＃０〜＃７から読み出された信号を切り換え制御信号ｃ１´に従ったそれぞれの出力先の信号切り換え器８−５〜８〜８に出力する。信号切り換え器８−５〜８〜８は、信号切り換え器８−１〜８〜４から出力された信号を切り換え制御信号ｃ１´に従ったそれぞれの出力先の信号切り換え器８−９〜８〜１２に出力する。そして、信号切り換え器８−９〜８〜１２は、信号切り換え器８−５〜８〜８から出力された信号を切り換え制御信号ｃ０´に従った接続によりバタフライ演算器１へ出力する。
【００５７】
そして、バタフライ演算器１は、信号切り換え器８−９〜８〜１２から入力された信号を用いてバタフライ演算を行った後に、演算結果である演算結果信号を入力信号切り換え部３に出力する。入力信号切り換え部３は、すでに制御信号生成器５から指示されたｃ０´，ｃ１´，ｃ２´に従った切り換え状態となっているため、ｃ０´，ｃ１´，ｃ２´に従った接続により、演算結果信号をメモリ＃０〜＃７に出力し、制御信号生成器５は、信号切り換え器７−５〜７〜８から出力された信号をメモリ＃０〜＃７にそれぞれ対応する保持しているメモリアドレスに書き込む。
【００５８】
そして、制御信号生成器５は、初段のバタフライ演算が終了するまで、未分割メモリアドレスの生成から演算結果信号のメモリ＃０〜＃７への書き込みまでの上述の処理を繰り返す。初段のバタフライ演算が終了すると、全てのバタフライ演算の終了まで、順次次の段のバタフライ演算を同様に行っていく。
【００５９】
最後のバタフライ演算の演算結果がメモリ＃０〜＃７に書き込まれると、演算結果は、高速フーリエ変換結果の出力データＦ0，Ｆ1，Ｆ2，…として外部に出力されるが、出力のためのメモリ＃０〜＃７からの信号の読み出しの処理はバタフライ演算処理の場合と同様である。出力信号切り換え部４は、このように読み出した演算結果を外部に出力する。ただし、出力の場合の未分割メモリアドレスは、外部からの入力データと同様に昇順となるため、初段のバタフライ演算の未分割メモリアドレスと同じである。
【００６０】
なお、本実施の形態では、出力データＦ0，Ｆ1，Ｆ2，・・・を並び順に出力するバタフライ演算処理としたが、入力データｘ0，ｘ1，ｘ2，・・・を並び順とするバタフライ演算処理としてもよい。その場合は、外部からの入力のデータの並び順をバタフライ演算処理に対応する並び順とし、出力データを外部で並びかえるようにすればよい。
【００６１】
このように、本実施の形態では、基数２mのバタフライ演算器１の入出力時に使用するメモリ部２を、基数と同一の数の分割メモリに分割し、制御信号生成器５が未分割メモリアドレスに基づきｍビットの制御信号を生成し、２m-1個の２入力２出力の切り換え器で１段を構成するｍ段の入力信号切り換え部３および出力信号切り換え部４が、制御信号に基づきバタフライ演算器と分割メモリの入出力を切り換えるようにした。このため、バタフライ演算器への入出力を並列に行うことができ演算処理を高速化することができる。また、従来のメモリ分割方式にくらべ、信号の切り換え器の数を削減することができる。
【００６２】
実施の形態２．
図１１は、本発明にかかる高速フーリエ変換装置の実施の形態２の機能構成例を示す図である。本実施の形態の高速フーリエ変換装置は、実施の形態１の高速フーリエ変換装置のバタフライ演算器１，メモリ部２，入力信号切り換え部３，出力信号切り換え部４，制御信号生成部５を、それぞれバタフライ演算器１ａ，メモリ部２ａ，入力信号切り換え部３ａ，出力信号切り換え部４ａ，制御信号生成器５ａに、替えている。それ以外の構成は実施の形態１と同様である。実施の形態１と同様の機能のものは、同一の符号を付して説明を省略する。
【００６３】
高速フーリエ変換を行う入力データ信号の数（データポイント数）がバタフライ演算の基数のべき乗でない場合には、混合基数と呼ばれる手法を用いる。本実施の形態では、混合基数の例として、入力データの数を３２とし、基数２と基数４の混合基数のバタフライ演算を行う場合について説明する。ここでは、バタフライ演算器１ａは、基数２と基数４のバタフライ演算の両方を行うことができ、切り換え信号（Ｒａｄｉｘ−２／４切り換え信号）によって、基数２と基数４のバタフライ演算が切り換えられる。本実施の形態では、メモリ部２ａは、分割される数が異なる（分割数がバタフライ演算の基数と同一でない）以外は、実施の形態１のメモリ部２と同様である。
【００６４】
入力信号切り換え部３ａは、実施の形態１と同様の信号切り換え器７−１〜７−４と、アクセスするメモリをメモリ＃１とメモリ＃２との間で切り換えるメモリ入れ替えスイッチ１４で構成される。出力信号切り換え部４ａは、実施の形態１の同様の信号切り換え器８−１〜８−４と、アクセスするメモリをメモリ＃１とメモリ＃２との間で切り換えるメモリ入れ替えスイッチ１５で構成される。メモリ入れ替えスイッチ１４，１５は、２入力２出力の切り換えを行うものであり、信号切り換え器７−１〜７−４，８−１〜８−４と同様の切り換え器である。
【００６５】
つづいて、本実施の形態のメモリアドレス制御方法について説明する。本実施の形態では、入力データの数が３２であるが、３２は２×４×４と３つに分解できる。したがって、本実施の形態の高速フーリエ変換処理は、基数４のバタフライを２段、基数２のバタフライ演算を１段行うことにより実現できる。
【００６６】
まず、メモリ分割をしない場合のバタフライ演算ごとのメモリアドレスについて説明する。図１２は、混合基数のバタフライ演算を、分割しない１つのメモリ９ａを用いて行う場合のメモリアクセスを説明するための図である。時間間引き（ＤＩＴ：Decimation  In  Time）型フーリエ変換の場合は最初の段（ステージ）においては乗算が発生せず、後段になると乗算の割合が増大する。このため演算効率のより大きな基数４のバタフライ演算を後段に配置する。一方、周波数間引き（ＤＩＦ：Decimation  In  Frequency）型高速フーリエ変換ではＤＩＴ型とは逆に後段ほど乗算回数が減るので、後段に少ない基数の演算を配置する。本実施の形態では、ＤＦＴ型の高速フーリエ変換を行うものとし、初段で基数２のバタフライ演算を行い、残りの２段で基数４のバタフライ演算を行うものとする。
【００６７】
また、図１２においては、基数４のバタフライ演算の場合の入出力データ数にあわせ、基数２のバタフライ演算については２つの演算をあわせて１つのバタフライ演算として表している。図１２に示したバタフライ演算Ｅ´０〜Ｅ´２３は、１つのバタフライ演算器でされる演算であり、バタフライ演算Ｅ´０，Ｅ´１，…，Ｅ´２３と数値の順に演算が行われる。メモリ９ａ内の数値“０”〜“３１”はメモリ９ａのアドレス（未分割メモリアドレス）を表す。この例では入力データ数を３２個とし、入力データは“０”〜“３１”の３２個のアドレスのいずれかに書き込まれる。バタフライ演算内の数値は、回転因子を指定するための整数を表す。ｘ0〜ｘ31は、高速フーリエ変換処理への入力データを示し、Ｆ0〜Ｆ31は、高速フーリエ変換処理の出力データを示す。ここでは、図１２に示すように出力データ（Ｆ0〜Ｆ31）が連続するような高速フーリエ変換処理とし、入力データは図１２に示すように、０〜３１までを２進数表示した場合のビットの並び順を逆にした順番（たとえば、２番目のデータは、“１（１０進表示）”＝“００００１（２進表示）"のビットの並びを逆にすると“１００００（２進表示）"＝”１６（１０進表示）“となるためｘ16）で、図１２に示す順（ｘ0，ｘ16，ｘ8，…）に４個ずつ入力されるものとする。
【００６８】
ここで、“０”〜“３１”を２進で表した各ビットをｅ０〜ｅ４とし、ｅ０を最下位ビットとする。図１３はステージごとにメモリアドレスを示すビットの位置がシフトする様子を示す図である。図中のｂ０〜ｂ４は、メモリアドレスを２ビット表示した場合の各ビットを示しており、ｂ０が最下位ビットである。図１３に示すように、ｅ０〜ｅ４の並び順を替えることで、各ステージの未分割メモリアドレスを生成することができる。たとえば、ステージ１の未分割メモリアドレスは、“ｅ４，ｅ３，ｅ２，ｅ１，ｅ０”であり、ステージ２の未分割メモリアドレスは“ｅ４，ｅ３，ｅ１，ｅ０，ｅ２”であり、ステージ３の未分割メモリアドレスは“ｅ１，ｅ０，ｅ４，ｅ３，ｅ２”である。
【００６９】
これは、“ｅ２，ｅ３，ｅ４”に対して、ステージごとに“ｅ１，ｅ０”を、それぞれ異なる位置に挿入したと考えればよい。直前のステージのバタフライ演算の基数に依存して決めることができる。ステージ１では直前のバタフライ演算はなく“ｅ１，ｅ０”の挿入位置は一番右側である。ステージ２では、直前のバタフライ演算の基数は２であり、“ｅ１，ｅ０”の挿入位置はステージ１の挿入位置より１ビット左へシフトした位置である。ステージ３では、直前のステージのバタフライ演算の基数が４であり、“ｅ１，ｅ０”の挿入位置はステージ２の挿入位置より２ビット左へシフトした位置となる。このように、“ｅ１，ｅ０”の挿入位置は一番右側を初期の位置とし、ｎ段目のステージにおける“ｅ１，ｅ０”の挿入位置は、（ｎ−１）段目のバタフライ演算の基数をＢ（ｎ−１）とするとき「ｌｏｇ2(Ｂ（ｎ−１）)」ビット左にシフトした位置となる。
【００７０】
ステージ１の場合には、“ｂ４，ｂ３，ｂ２，ｂ１，ｂ０”は、それぞれ“ｅ４，ｅ３，ｅ２，ｅ１，ｅ０”と等しくなる。ステージ２では、上述のとおり、“ｅ１，ｅ０”の挿入位置が左へ１ビットシフトするため、“ｂ４，ｂ３，ｂ２，ｂ１，ｂ０”は、それぞれ“ｅ４，ｅ３，ｅ１，ｅ０，ｅ２”と等しくなる。
【００７１】
つづいて、メモリ分割を行った場合について説明する。本実施の形態では、メモリ分割数を、バタフライ演算の基数の最大値４と同一とする。図１４−１〜１４−３にメモリ分割を行った場合のメモリ番号と分割メモリ内のメモリアドレスを示す。ここでバタフライ演算Ｅ´０〜Ｅ´２３は、図１２に示した演算であり、基数２の場合には２つのバタフライ演算を１つのバタフライ演算として示している。ステージ１のメモリ番号は、実施の形態１で示した基数４の場合と同様にｍ＝２とした場合の式（１２）に準じた方法により求める。本実施の形態では、入力データの数がバタフライ演算のべき乗でないため、排他論理和（ＥＸＯＲ）の対象の数が、ｃ０とｃ１で異なることになるが、それ以外は実施の形態１と同様である。本実施の形態では、メモリアドレスは、以下の式（１３）に従って求めることができる。
ｃ０＝ＥＸＯＲ（ｂ０，ｂ２，ｂ４）＝ＥＸＯＲ（ｅ０，ｅ２，ｅ４）
ｃ１＝ＥＸＯＲ（ｂ１，ｂ３）＝ＥＸＯＲ（ｅ１，ｅ３）            …（１３）
【００７２】
また、図１４−１〜１４−３では、各分割メモリ内のメモリアドレスとして、ｂ２，ｂ１，ｂ０を用いている。なお、このメモリアドレスは、実施の形態１で述べたように、各々のメモリに格納される（入力データの数／メモリ分割数）個のデータ数を一意に識別できるメモリアドレスであれば、これに限らずどのような生成方法でもよい。たとえば、ｂ４，ｂ３，ｂ２を用いてもよい。
【００７３】
ステージ１の切り換え制御信号ｃ０´，ｃ１´については、各バタフライ演算の最初のメモリアドレスを示すビット（図１４−１〜１４−３に示したバタフライ演算ごとの一番上の段のｂ４，ｂ３，ｂ２、ｂ１、ｂ０）をそれぞれａ４，ａ３，ａ２，ａ１，ａ０とすると、以下の式（１４）に従って求めることができる。また、このような切り換え制御信号を生成するための制御信号生成回路例を図１５に示す。
ｃ０´＝ＥＸＯＲ（ａ０，ａ２，ａ４）
ｃ１´＝ＥＸＯＲ（ａ１，ａ３）            …（１４）
【００７４】
ｎ＝２mをバタフライ演算の最大基数とし、メモリ分割数をｎとするときには、ｍビットの切り換え制御信号を用いｍ段のｍ×２m-1個の切り換え器により入力信号切り換え部を構成し、信号切り換えを行う切り換え器と鏡像関係になるように、ｍ×２m-1個の切り換え器を用いて出力信号切り換え部を構成するようにすればよい。この場合、入力データの数をＮ＝２L+1個とし、バタフライ演算ごとのメモリを分割しない場合の入力データの最初のメモリアドレスの２進表示のビットをａ０〜ａＬとし、（Ｌ＋１）をｍで割った商をＳ（整数）、余りをＲＥ（整数）とするとき、制御信号ｃ０´〜ｃ（ｍ−１）´は、以下の式（１５）のように表すことができる。式（１１）との違いは、混合基数の場合は、Ｎがｎのべき乗でないため、ＥＸＯＲの対象とするメモリアドレスの２進表示のビットの個数に余りが生じる点である。したがって、制御信号ｃ０´〜ｃ（ＲＥ−１）´までの制御信号がｃＲＥ´〜ｃ（ｍ−１）´の制御信号より、排他論理和の対象のメモリアドレスビットが１つ多くなる。
ｃ０´＝ＥＸＯＲ（ａ０，ａｍ，…，ａ（Ｓ×ｍ−ｍ），ａ（Ｓ×ｍ））
ｃ１´＝ＥＸＯＲ（ａ１，ａ（ｍ＋１），…，ａ（Ｓ×ｍ−ｍ＋１），ａ（Ｓ×ｍ＋１））
…
ｃ（ＲＥ−１）´＝ＥＸＯＲ（ａ２，ａ（ｍ＋２），…，ａ（Ｌ―ｍ），ａＬ）
…
ｃ（ｍ−１）´
＝ＥＸＯＲ（ａ（ｍ−１），ａ（２ｍ−１），…，ａ（Ｓ×ｍ−１））  …（１５）
【００７５】
一方、ステージ２およびステージ３については、上述のとおり、“ｅ０，ｅ１”が途中の位置に挿入されることになるため、ステージ１とはメモリ番号のパターン（各バタフライ演算ごとの４つのメモリ番号）が異なる。ステージ２のメモリ番号は、以下の式（１６）に従って求めることができる。
ｃ０＝ＥＸＯＲ（ｂ０，ｂ２，ｂ４）＝ＥＸＯＲ（ｅ２，ｅ１，ｅ４）
ｃ１＝ＥＸＯＲ（ｂ１，ｂ３）＝ＥＸＯＲ（ｅ０，ｅ３）            …（１６）
【００７６】
ここで、式（１３）と式（１６）を比較すると、ｅ０とｅ１がそれぞれ入れ替わっていることがわかる。この場合、たとえば、ＥＸＯＲ（ｅ２，ｅ４）とｅ３の値が等しい場合に、ｅ０とｅ１の値が等しければ、式（１３）と式（１６）の値は同じになる（“ｃ１，ｃ０”は、“００”または“１１”となる）。また、この性質を利用すると、ＥＸＯＲ（ｅ２，ｅ４）とｅ３の値が等しい場合に、ｅ０とｅ１の値が異なれば、式（１３）と式（１６）の値はｃ０とｃ１の値が逆となる。このような性質から、ステージ２においては、ステージ１のメモリ番号のパターンに対して、メモリ番号“１（１０進）”（＝“０１（２進）”）と、メモリ番号“２（１０進）”（＝“１０（２進）”）を入れ替えればよいことになる。
【００７７】
また、ステージ３の場合には、以下の式（１７）に従ってメモリ番号を求めることができる。式（１７）は、式（１７）の結果と同じになるため、ステージ３はステージ２と同様にメモリの切り換えを行えばよい。
ｃ０＝ＥＸＯＲ（ｂ０，ｂ２，ｂ４）＝ＥＸＯＲ（ｅ２，ｅ４，ｅ１）
ｃ１＝ＥＸＯＲ（ｂ１，ｂ３）＝ＥＸＯＲ（ｅ３，ｅ０）            …（１７）
【００７８】
以上のように、ステージ１とステージ２，３では、アクセスする分割メモリのうち、分割メモリ＃１と分割メモリ＃２とを入れ替えればよいことになる。本実施の形態では、図１１に示したように、この入れ替えをメモリ入れ替えスイッチ１４，１５が行う。メモリ入れ替えスイッチ１４，１５は、制御信号生成器５ａが送出するメモリ入れ替え制御信号に基づいてメモリの入れ替えを行うが、本実施の形態では、たとえば、メモリ入れ替え制御信号が“０”の場合には入れ替えをせず、“１”の場合には入れ替えを行うこととする。
【００７９】
つづいて、本実施の形態のメモリ制御動作について説明する。実施の形態１と同様の動作については説明を省略し、実施の形態１と異なる部分について説明する。本実施の形態では、実施の形態１と同様にバタフライ演算ごとに分割メモリの数ずつ高速フーリエ変換器に入力されるものとする。入力データの書き込み動作は、実施の形態１と同様とする。入力データの書き込み後、まず、アドレス生成器６は、未分割メモリアドレスを生成する。ここで生成する未分割アドレスは、バタフライ演算器１ａの基数に応じたメモリ分割を行わない場合のメモリアドレスとする。つぎに、制御信号生成器５ａは、まず、ステージ１の基数２の演算を行うために、式（１３）に基づき、バタフライ演算ごとに切り換え制御信号ｃ０´，ｃ１´を生成する。そして、ｃ０´を信号切り換え器７−１，７−２，８−３，８−４に出力し、ｃ１´を信号切り換え器７−３，７−４，８−１，８−２に出力する。また、制御信号生成器５ａは、バタフライ演算器１ａに対して基数２の演算に切り換えるよう指示し、メモリ入れ替えスイッチ１４，１５に対して、メモリ入れ替え制御信号を“０”（メモリ入れ替え無し）として送出する。
【００８０】
信号切り換え器７−１〜７−４，８−１〜８−４は、切り換え制御信号に基づき、実施の形態１と同様各々入出力の接続の切り換えを行う。メモリ入れ替えスイッチ１４，１５は、メモリ入れ替え制御信号に基づきスイッチを切り換える。また、制御信号生成器５ａは、分割メモリ内のメモリアドレスを算出し、入力信号切り換え部３ａを経由した入力データに対して、対応するメモリアドレスに基づき各分割メモリアドレスへの書き込みを行う。
【００８１】
入力データが、入力信号切り換え部３ａ，メモリ部２ａ，出力信号切り換え部４ａを経由してバタフライ演算器１ａに入力されると、バタフライ演算器１ａが演算を行い、演算の出力を入力信号切り換え部３ａに出力し、出力結果がメモリ部２ａに書き込まれる。ステージ１のバタフライ演算がすべて終了すると、制御信号生成器５ａは、ステージ２の演算のために、バタフライ演算器１ａに基数４への切り換えを指示し、メモリ入れ替えスイッチ１４，１５に対して、メモリ入れ替え制御信号を“１”（メモリ入れ替え有り）として送出する。また、制御信号生成器５ａは、ステージ１と同様に、切り換え制御信号ｃ０´，ｃ１´を生成し、ｃ０´を信号切り換え器７−１，７−２，８−３，８−４に出力し、ｃ１´を信号切り換え器７−３，７−４，８−１，８−２に出力する。以降は、ステージ１と同様にバタフライ演算が行われる。
【００８２】
ステージ２のバタフライ演算が全て終了すると、ステージ２と同様に、制御信号生成器５ａは、バタフライ演算器１ａに基数４への切り換えを指示し、メモリ入れ替えスイッチ１４，１５に対して、メモリ入れ替え制御信号を“１”（メモリ入れ替え有り）として送出する。また、制御信号生成器５ａは、ステージ１と同様に、切り換え制御信号ｃ０´，ｃ１´を生成し、ｃ０´を信号切り換え器７−１，７−２，８−３，８−４に出力し、ｃ１´を信号切り換え器７−３，７−４，８−１，８−２に出力する。以降は、ステージ１と同様にバタフライ演算が行われ、ステージ３のバタフライ演算が全て終了すると、出力信号切り換え部４ａは、高速フーリエ演算結果としてメモリ部２ａに書き込まれている演算結果を、実施の形態１と同様に読み出し外部に出力する。
【００８３】
なお、基数２は最初の１回しか行うことがないため、ｋ＝０と決まっており乗算は無い。このため、バタフライ演算器１ａの回転因子の乗算器は混合基数でない場合の基数４の場合と同じでよい。図１６に本実施の形態のバタフライ演算器１ａの構成例を示す。
【００８４】
なお、本実施の形態では、入力のデータポイント数を３２としたが、基数４と基数２の混合基数によりバタフライ演算を行うことのできるデータポイント数であれば、これに限らず、どのような数でもよい。この場合入力のデータポイント数に応じて、アドレス生成器６が、図１２に相当するメモリを分割しない場合の未分割メモリアドレスを生成し、その未分割メモリアドレスと直前のステージの基数に基づき、切り換え制御信号とメモリ入れ替え信号を生成するようにすればよい。
【００８５】
また、基数２と基数４のバタフライ演算器を別個に備えることとし、データ入力時に基数２のバタフライ演算を実行することにしてもよい。図１７は、基数２と基数４のバタフライ演算器を別個に備える場合の本実施の形態の高速フーリエ変換器の機能構成例を示す図である。図１７の例では、図１１のバタフライ演算器１ａを基数４のバタフライ演算を行うバタフライ演算器１ｄに替え、基数２のバタフライ演算を行うバタフライ演算器１ｃとセレクタ１６を追加している。また、さらに、入力信号切り換え部３ａ，出力信号切り換え部４ａをそれぞれ入力信号切り換え部３ｂ，出力信号切り換え部４ｂに替えている。また、分割メモリの配置は、ステージ２，３にあわせ、図１１の場合と分割メモリ＃１と分割メモリ＃２が入れ替わっている。
【００８６】
図１７の例の場合には、データの入力時に、まず、バタフライ演算器１ｃで基数２のバタフライ演算を行い入力信号切り換え部３ｂに入力する。入力信号切り換え部３ｂは、図１１の入力信号切り換え部３ａからメモリ切り換えスイッチ１４を削除したものである。出力信号切り換え部４ｂは、図１１の出力信号切り換え部４ａからメモリ切り換えスイッチ１５を削除したものである。本実施の形態では、図１１の例のステージ１に相当するバタフライ演算を入力信号切り換え部３ｂの入力前に行ってしまうため、制御信号生成器５ａは、図１１の例のステージ２以降のメモリ制御動作を行えばよい。ただし、このとき、基数２と基数４の切り換え指示，メモリ切り換えスイッチ１４，１５に対するメモリ入れ替え信号は不要となる。
【００８７】
また、セレクタ１６は、ｌｏｇ2（入力データポイント数）が、偶数（４のべき乗の場合）であるか奇数（４のべき乗でない場合）であるかによって、バタフライ演算器１ｃの演算を用いるか否かの切り換えを行う。このように、セレクタ１６を用いることにより、基数４のみのバタフライ演算と基数４と基数２の混合基数の演算を同一の高速フーリエ変換器で行うことができる。この場合、メモリ生成器で生成する未分割メモリアドレスは、それぞれのデータポイント数に応じたものとして生成する。なお、ｌｏｇ2（入力データポイント数）が奇数に固定の場合には、セレクタ１６を設けず、必ずバタフライ演算器１ｃを用いるようにしても良い。
【００８８】
つづいて、最大の基数を８とした混合基数の場合について説明する。ここでは、基数２，基数４，基数８の混合基数のバタフライ演算を行うものとする。そして、最大基数８と同一の数にメモリを分割するものとする。この場合、使用する基数は、入力のデータポイント数に応じて３種類に分けることができる。ここで、Ｎを入力のデータポイント数、ｎｍを最大の基数とし、ｄを以下の式（１７）で定義する。
ｄ＝ｌｏｇ2（Ｎ）  mod  ｌｏｇ2（ｎｍ）                        …（１７）
【００８９】
なお、ｘ  mod  ｙ  は、ｘをｙで割った余りを意味する。上記式（１７）で定義されるｄの値に応じて以下の３ケースに分類する。ｄ＝０の場合は、基数８のみを用いる。ｄ＝１の場合は、基数２と基数８を用いる。ｄ＝２の場合は、基数４と基数８を用いる。ｄ＝１の場合の基数２の演算、ｄ＝１の場合の基数４の演算は、それぞれデータポイント数によらず１回となる。この３通りの場合について、いずれも最大基数が８であることから、切り換え制御信号は３ビット（ｃ２´，ｃ１´，ｃ０´）とする。
【００９０】
ｄ＝０の場合の、切り換え制御信号のパターンを基本パターン“ｚ０，ｚ１，ｚ０”とすると、ｄ=１の場合は、基数８の演算を行うステージにおける切り換え制御信号は、“ｚ０、ｚ２、ｚ１”（パターン１とする）となる。また、ｄ=２の場合は、基数８の演算を行うステージにおける切り換え制御信号は、“ｚ１、ｚ０、ｚ２”（パターン２とする）となる。このように、ｄ＝０，１，２の場合の切り換え制御信号は、ｚ２、ｚ１、ｚ０の順番をサイクリックにシフトしたものとなっている。このサイクリックシフトの関係は、基数８より大きな基数の場合においても成り立つ。
【００９１】
図１８は、以上の３通りの切り換え制御信号パターンの場合について、それぞれアクセスする分割メモリのメモリ番号を示したものである。図１９−１〜１９−３は、図１８に示すメモリアクセスの様子を図示したものである。図１９−１，図１９−２，図１９−３は、それぞれ基本パターン，パターン１，パターン２に対応するメモリアクセスを示している。
【００９２】
入力のデータポイント数が固定の場合で、基数ごとに別のバタフライ演算器で演算を行う場合には、基数８のバタフライ演算に対しては、ｄの数値に応じて、基本パターン，パターン１，パターン２の基数ごとに対応するパターンに基づきメモリ番号の変換を配線により行い、基本パターンの切り換え制御信号を生成するようにすればよい。なお、基数８以外の基数の演算（基数２または基数４）については、図１７の例で述べたように、入力時に演算を行うようにすればよい。
【００９３】
また、入力のデータポイント数が可変である場合、および、１つのバタフライ演算器で複数の基数をバタフライ演算を行う場合には、基本パターン，パターン１，パターン２の接続を用意し、ｄの値に応じて、これらの接続をセレクタで切り換えるようにすればよい。なお、このとき、基数８以外の基数の演算（基数２または基数４）は、基本パターンのアクセスとなる。
【００９４】
なお、実施の形態１で説明した図１，本実施の形態で説明した図１１，図１２は、いずれもメモリの読み出しと書き込みが同時に行えるデュアルポートメモリを用いることを想定しているが、以下のようにシングルポートメモリを用いるようにしてもよい。この場合、１回の演算で読み出しと書き込みに分けて２回のメモリアクセスを行うようにすればよい。また、図２０−１，２０−２に示すように、読み出しメモリと書き込みメモリを別として、交互に切り換えて用いるようにしてもよい。図２０−１，２０−２では、メモリ部２ｂを、分割メモリ＃０−１と分割メモリ＃０−２に分割し、読み出し，書き込みを行う先を、分割メモリ＃０−１と分割メモリ＃０−２とで交互にスイッチにより切り換えるようにしている。図１，図１１，図１７の例の分割メモリを、それぞれ同様に、分割メモリ＃ｊ（ｊは分割メモリの番号）を分割メモリ＃ｊ−１と分割メモリ＃ｊ−２に分け各々をスイッチで切り換えるようにしてもよい。このようにメモリをさらに分割する場合、メモリ容量は、図１の場合などに比べて２倍必要となるが、シングルポートメモリを用いることができる。
【００９５】
また、入出力に使用するメモリとバタフライ演算に使用するメモリに分けて、パイプラインで動作させるようにしてもよい。図２１は、入出力に使用するメモリとバタフライ演算に使用するメモリに分けた場合の高速フーリエ変換装置の機能構成例である。図２１に示すように、メモリ部２ｃを、４つのメモリで構成し、切り換え器を追加する。このような構成の場合、入力処理，バタフライ演算器１ｅの処理，出力処理，バタフライ演算器１ｅを同時に行うことができる。
【００９６】
このように、本実施の形態では、混合基数のバタフライ演算器１ａを用いて、基数の最大値にメモリ部２ａを分割し、メモリ入れ替えスイッチ１４，１５を用いて分割メモリ＃１と分割メモリ＃２を入れ替えられるようにし、基数２の演算を行うステージ１では、メモリの入れ替えなしで、基数４の演算を行うステージ２，３では、分割メモリ＃１と分割メモリ＃２の入れ替えを行うようにした。このため、混合基数の場合においても、メモリ分割を行うことができ、従来のメモリ分割方式にくらべ、信号の切り換え器の数を削減することができる。
【産業上の利用可能性】
【００９７】
以上のように、本発明にかかる高速フーリエ変換装置は、メモリを分割して高速処理を行う高速フーリエ変換処理に有用であり、特に、ハードウェア構成を簡略化する必要のある高速フーリエ変換処理に適している。
【図面の簡単な説明】
【００９８】
【図１】本発明にかかる高速フーリエ変換装置の実施の形態１の機能構成例を示す図である。
【図２】メモリを分割しない場合のメモリアクセスを示す図である。
【図３】処理ごとのアクセスするメモリアドレスを示す図である。
【図４】メモリ番号と各分割メモリ内のメモリアドレスを示す図である。
【図５】メモリ番号の４パターンを示す図である。
【図６−１】パターンＰ１からパターンＰ２を生成する方法の一例を示す図である。
【図６−２】パターンＰ１からパターンＰ３を生成する方法の一例を示す図である。
【図６−３】パターンＰ１からパターンＰ４を生成する方法の一例を示す図である。
【図７】４分割メモリに対するメモリアクセスを行う切り換え器とメモリの一構成例を示す図である。
【図８−１】入力側と出力側が接続されていない状態の信号切り換え器の接続を示す図である。
【図８−２】切り換え制御信号が０の場合の信号切り換え器の接続を示す図である。
【図８−３】切り換え制御信号が１の場合の信号切り換え器の接続を示す図である。
【図９】メモリを８分割する場合のメモリと入出力制御に関する部分の構成例を示す図である。
【図１０】メモリを８分割した場合の切り換え信号を生成するための論理回路の一例を示す図である。
【図１１】本発明にかかる高速フーリエ変換装置の実施の形態２の機能構成例を示す図である。
【図１２】混合基数のバタフライ演算を、分割しない１つのメモリ用いて行う場合のメモリアクセスを説明するための図である
【図１３】ステージごとにメモリアドレスを示すビットの位置がシフトする様子を示す図である。
【図１４−１】メモリ分割を行った場合のステージ１のメモリ番号と分割メモリ内のメモリアドレスを示す図である。
【図１４−２】メモリ分割を行った場合のステージ２のメモリ番号と分割メモリ内のメモリアドレスを示す図である。
【図１４−３】メモリ分割を行った場合のステージ３のメモリ番号と分割メモリ内のメモリアドレスを示す図である。
【図１５】実施の形態２の切り換え制御信号を生成するための制御信号生成回路例を示す図である。
【図１６】実施の形態２のバタフライ演算器の構成例を示す図である。
【図１７】基数２と基数４のバタフライ演算器を別個に備える場合の高速フーリエ変換器の機能構成例を示す図である。
【図１８】制御信号パターンごとのアクセスする分割メモリのメモリ番号を示す図である。
【図１９−１】基本パターンのメモリアクセスを示す図である。
【図１９−２】パターン１のメモリアクセスを示す図である。
【図１９−３】パターン２のメモリアクセスを示す図である。
【図２０−１】読み出しメモリと書き込みメモリを別とした場合の切り換えを示す図である。
【図２０−２】読み出しメモリと書き込みメモリを別とした場合の切り換えを示す図である。
【図２１】入出力とバタフライ演算で使用するメモリを別とし場合の高速フーリエ変換装置の機能構成例を示す図である。
【図２２】従来の送受信機のシステム構成例を示す図である。
【図２３】周波数間引き型高速フーリエ変換のシグナルフローを示す図である。
【図２４】データの並び順を変えた周波数間引き型高速フーリエ変換のシグナルフローを示す図である。
【図２５】時間間引き型高速フーリエ変換のシグナルフローを示す図である。
【図２６】データの並び順を変えた時間間引き型高速フーリエ変換のシグナルフローを示す図である。
【図２７】バタフライ演算ブロックを示す図である。
【図２８】バタフライ演算ブロックを用いた時間間引き型高速フーリエ変換シグナルフローを示す図である。
【図２９】基数４のバタフライ演算ブロックを示す図である。
【図３０】基数４のバタフライ演算ブロックを用いた時間間引き型高速フーリエ変換シグナルフローを示す図である。
【符号の説明】
【００９９】
１，１ａ，１ｃ，１ｄ，１ｅ，１０  バタフライ演算器
２，２ａ，２ｂ，２ｃ，１１，１１ａ  メモリ部
３，３ａ，３ｂ，１２，１２ａ  入力信号切り換え部
４，４ａ，４ｂ，１３，１３ａ  出力信号切り換え部
５，５ａ  制御信号生成器
６  アドレス生成器
７−１〜７−１２，８−１〜８−１２  信号切り換え器
９，９ａ  メモリ
１４，１５  メモリ入れ替えスイッチ
１６  セレクタ
【図１】
2008186396.tif 000006
【図２】
2008186396.tif 000007
【図３】
2008186396.tif 000008
【図４】
2008186396.tif 000009
【図５】
2008186396.tif 000010
【図６−１】
2008186396.tif 000011
【図６−２】
2008186396.tif 000012
【図６−３】
2008186396.tif 000013
【図７】
2008186396.tif 000014
【図８−１】
2008186396.tif 000015
【図８−２】
2008186396.tif 000016
【図８−３】
2008186396.tif 000017
【図９】
2008186396.tif 000018
【図１０】
2008186396.tif 000019
【図１１】
2008186396.tif 000020
【図１２】
2008186396.tif 000021
【図１３】
2008186396.tif 000022
【図１４−１】
2008186396.tif 000023
【図１４−２】
2008186396.tif 000024
【図１４−３】
2008186396.tif 000025
【図１５】
2008186396.tif 000026
【図１６】
2008186396.tif 000027
【図１７】
2008186396.tif 000028
【図１８】
2008186396.tif 000029
【図１９−１】
2008186396.tif 000030
【図１９−２】
2008186396.tif 000031
【図１９−３】
2008186396.tif 000032
【図２０−１】
2008186396.tif 000033
【図２０−２】
2008186396.tif 000034
【図２１】
2008186396.tif 000035
【図２２】
2008186396.tif 000036
【図２３】
2008186396.tif 000037
【図２４】
2008186396.tif 000038
【図２５】
2008186396.tif 000039
【図２６】
2008186396.tif 000040
【図２７】
2008186396.tif 000041
【図２８】
2008186396.tif 000042
【図２９】
2008186396.tif 000043
【図３０】
2008186396.tif 000044