(57)【特許請求の範囲】
【請求項１】
離散値の複素数データを入力して、可変サンプル点数の高速フーリエ変換演算を基数４または基数２のアルゴリズムで実行する高速フーリエ変換処理装置において、
サンプル点数が４n ×２個または４n 個（ｎは自然数）の前記複素数データを外部から入力して１つのグループとして一時的に記憶する作業用記憶手段と、
この作業用記憶手段に記憶された前記複素数データの各グループを計算列とサンプル点番号とにしたがって１６個のグループＡG1，ＢG1，ＣG1，ＤG1，ＡG2，ＢG2，ＣG2，ＤG2，ＡG3，ＢG3，ＣG3，ＤG3，ＡG4，ＢG4，ＣG4，ＤG4に分割し、分割後の各グループの組合せ｛ＡG1，ＢG1，ＣG1，ＤG1｝，｛ＡG2，ＢG2，ＣG2，ＤG2｝，｛ＡG3，ＢG3，ＣG3，ＤG3｝，｛ＡG4，ＢG4，ＣG4，ＤG4｝のそれぞれについて、各組合わせの各グループに属するｉ番目の前記複素数データＡi ，Ｂi ，Ｃi ，Ｄi とひねり係数Ｗi1，Ｗi2，Ｗi3，Ｗi4を用いた演算
ａi ＝｛（Ａi ＋Ｃi ）＋（Ｂi ＋Ｄi ）｝×Ｗi1      ・・・（１）
ｃi ＝｛（Ａi ＋Ｃi ）−（Ｂi ＋Ｄi ）｝×Ｗi3      ・・・（２）
ｂi ＝｛（Ａi −Ｃi ）−ｊ（Ｂi −Ｄi ）｝×Ｗi2    ・・・（３）
ｄi ＝｛（Ａi −Ｃi ）＋ｊ（Ｂi −Ｄi ）｝×Ｗi4    ・・・（４）
を実行する第１の演算手段と、
この第１の演算手段の演算結果ａi ，ｂi ，ｃi ，ｄi を４個ずつ取り込んで４行４列の行列を形成した後でこの行列を転置し、これにより得られた転置行列を構成する複素数データを１列ずつ出力する転置手段と、
この転置手段から入力した前記複素数データをＡi ，Ｂi ，Ｃi ，Ｄi として前記演算（１）〜（４）を順次行うとともにその結果であるａi ，ｂi ，ｃi ，ｄi を前記作業用記憶手段に前記グループの組合せ｛ＡG1，ＡG2，ＡG3，ＡG4｝，｛ＢG1，ＢG2，ＢG3，ＢG4｝，｛ＣG1，ＣG2，ＣG3，ＣG4｝，｛ＤG1，ＤG2，ＤG3，ＤG4｝に順次記憶させる第２の演算手段と、
を備えたことを特徴とする高速フーリエ変換処理装置。
【請求項２】
前記第１の演算手段または前記第２の演算手段の一方が、
前記第１の演算手段および前記第２の演算手段による前記演算（１）〜（４）が合計でｎ回繰り返された後で、前記サンプル点数が４n ×２個の場合にはさらにこの演算処理によって得られた複素数データＡi ，Ｂi ，Ｃi ，Ｄi を用いた演算
ａi ＝Ａi ＋Ｂi       ・・・（５）
ｂi ＝Ａi −Ｂi       ・・・（６）
ｃi ＝Ｃi ＋Ｄi       ・・・（７）
ｄi ＝Ｃi −Ｄi       ・・・（８）
をすべてのｉについて実行するとともにその結果であるａi ，ｂi ，ｃi ，ｄi を前記作業用記憶手段にそれぞれ記憶する演算処理を１回行うように構成されたことを特徴とする請求項１に記載の高速フーリエ変換処理装置。
【請求項３】
前記第１の演算手段が、前記演算（１），（２），（５），（６）または前記演算（１），（２）を適宜行うように構成された第１のデータパスと、前記演算（３），（４），（７），（８）または前記演算（３），（４）を適宜行うように構成された第２のデータパスとを備え、且つ、前記第２の演算手段が、前記演算（１），（２），（５），（６）または前記演算（１），（２）を適宜行うように構成された第３のデータパスと、前記演算（３），（４），（７），（８）または前記演算（３），（４）を適宜行うように構成された第４のデータパスとを備えたことを特徴とする請求項２に記載の高速フーリエ変換処理装置。
【請求項４】
前記第１のデータパスまたは前記第３のデータパスの少なくとも一方が、
前記複素数データＡi ，Ｃi を入力して加算する第１の加算器と、
前記複素数データＡi ，Ｃi を前記第１の加算器で加算することなく通過させる第１のバイパスと、
前記複素数データＢi ，Ｄi を入力して加算する第２の加算器と、
前記複素数データＢi ，Ｄi を前記第２の加算器で加算することなく通過させる第２のバイパスと、
前記第１の加算器の出力または前記第１のバイパスの出力と前記第２の加算器の出力または前記第２のバイパスの出力とを入力して加算する第３の加算器と、
前記第１の加算器の出力または前記第１のバイパスの出力と前記第２の加算器の出力または前記第２のバイパスの出力とを入力して減算する第１の減算器と、
前記第３の加算器の演算結果に前記ひねり係数Ｗi1または「１」を乗算して、演算結果ａi を出力する第１の乗算器と、
前記第１の減算器の演算結果に前記ひねり係数Ｗi3または「１」を乗算して、演算結果ｃi を出力する第２の乗算器と、
を備えたことを特徴とする請求項３に記載の高速フーリエ変換処理装置。
【請求項５】
前記第２のデータパスまたは前記第４のデータパスの少なくとも一方が、
前記複素数データＡi ，Ｃi を入力して減算する第２の減算器と、
前記複素数データＡi ，Ｃi を前記第２の減算器で減算することなく通過させる第３のバイパスと、
前記複素数データＢi ，Ｄi を入力して減算したのちｊを乗算する複素減算器と、
前記複素数データＢi ，Ｄi を前記複素減算器で複素減算することなく通過させる第４のバイパスと、
前記第２の減算器の出力または前記第３のバイパスの出力と前記複素減算器の出力または前記第４のバイパスの出力とを入力して加算する第４の加算器と、
前記第２の減算器の出力または前記第３のバイパスの出力と前記複素減算器の出力または前記第４のバイパスの出力とを入力して減算する第３の減算器と、
前記第４の加算器の演算結果に前記ひねり係数Ｗi2または「１」を乗算して、演算結果ｂi を出力する第３の乗算器と、
前記第３の減算器の演算結果に前記ひねり係数Ｗi4または「１」を乗算して、演算結果ｄi を出力する第４の乗算器と、
を備えたことを特徴とする請求項３または４に記載の高速フーリエ変換処理装置。
【請求項６】
前記第１のデータパスまたは前記第３のデータパスの少なくとも一方が、
前記複素数データＡi ，Ｃi ，Ｂi ，Ｄi を入力して演算Ａi ＋Ｃi ，Ｂi ＋Ｄi を行う第５の加算器と、
前記複素数データＡi ，Ｃi ，Ｂi ，Ｄi を前記第５の加算器で演算することなく通過させる第５のバイパスと、
前記第５の加算器または前記第５のバイパスから複素数データを２個ずつ取り込んで、両データの加算結果および減算結果を出力する第１の加減算器と、
この第１の加減算器の前記加算結果とひねり係数Ｗi1または「１」との、実数部どうしの乗算、実数部と虚数部との乗算、虚数部どうしの乗算および虚数部と実数部との乗算を順次行う第５の乗算器と、
前記第１の加減算器の前記減算結果とひねり係数Ｗi3または「１」との、実数部どうしの乗算、実数部と虚数部との乗算、虚数部どうしの乗算および虚数部と実数部との乗算を順次行う第６の乗算器と、
前記第５の乗算器から入力した実数部どうしの乗算結果から虚数部どうしの乗算結果を減算するとともに、実数部と虚数部との乗算結果を虚数部と実数部との乗算結果に加算して、これらの演算結果を演算結果ａi の実数部および虚数部として出力し、さらに、第６の乗算器から入力した実数部どうしの乗算結果から虚数部どうしの乗算結果を減算するとともに、実数部と虚数部との乗算結果を虚数部と実数部との乗算結果に加算して、これらの演算結果を演算結果ｃi の実数部および虚数部として出力する第２の加減算器と、
を備えたことを特徴とする請求項３に記載の高速フーリエ変換処理装置。
【請求項７】
前記第２のデータパスまたは前記第４のデータパスの少なくとも一方が、
前記複素数データＡi ，Ｃi ，Ｂi ，Ｄi を入力して演算Ａi −Ｃi ，ｊ（Ｂi −Ｄi ）を行う減算／複素減算器と、
前記複素数データＡi ，Ｃi ，Ｂi ，Ｄi を前記減算／複素減算器で演算することなく通過させる第５のバイパスと、
前記減算／複素減算器または前記第６のバイパスから複素数データを２個ずつ取り込んで、両データの減算結果および加算結果を出力する第３の加減算器と、
この第３の加減算器の前記減算結果とひねり係数Ｗi2または「１」との、実数部どうしの乗算、実数部と虚数部との乗算、虚数部どうしの乗算および虚数部と実数部との乗算を順次行う第７の乗算器と、
前記第３の加減算器の前記加算結果とひねり係数Ｗi4または「１」との、実数部どうしの乗算、実数部と虚数部との乗算、虚数部どうしの乗算および虚数部と実数部との乗算を順次行う第８の乗算器と、
前記第７の乗算器から入力した実数部どうしの乗算結果から虚数部どうしの乗算結果を減算するとともに、実数部と虚数部との乗算結果を虚数部と実数部との乗算結果に加算して、これらの演算結果を演算結果ｂi の実数部および虚数部として出力し、さらに、第８の乗算器から入力した実数部どうしの乗算結果から虚数部どうしの乗算結果を減算するとともに、実数部と虚数部との乗算結果を虚数部と実数部との乗算結果に加算して、これらの演算結果を演算結果ｄi の実数部および虚数部として出力する第４の加減算器と、
を備えたことを特徴とする請求項３または６に記載の高速フーリエ変換処理装置。
【請求項８】
前記第１、第２の演算手段の演算結果のいずれか一方を選択して前記作業用記憶手段に入力させる第１選択手段を、さらに有することを特徴とする請求項１〜７のいずれかに記載の高速フーリエ変換処理装置。
【請求項９】
前記第１の演算手段の演算結果または前記作業用記憶手段の格納値のいずれか一方を選択して前記第２の演算手段に入力させる第２選択手段を、さらに有することを特徴とする請求項１〜８のいずれかに記載の高速フーリエ変換処理装置。
【請求項１０】
前記演算手段にブロック浮動小数点演算法を用いて高速フーリエ変換演算を実行させるためのブロック浮動小数点検出記憶手段を、さらに有することを特徴とする請求項１〜９のいずれかに記載の高速フーリエ変換処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えば音声信号等の信号解析やデジタル伝送の変復調処理に使用する高速フーリエ変換処理に関するものであり、より詳細には、離散的な複素数入力信号の系列に対して可変サンプル点の高速フーリエ変換処理またはその逆変換処理を実行する高速フーリエ変換処理に関するものである。
【０００２】
【従来の技術】
従来、例えば音声信号の信号解析やデジタル伝送の変復調処理等において、高速フーリエ変換処理装置が使用されている。かかる高速フーリエ変換処理装置としては、例えば、“ISSCC89,Digest,pp166-167,327,THPM12.5:A200MIPS Single-Chip 1K FFT Processor ”に記載されたものが知られている。
【０００３】
この文献に記載された高速フーリエ変換処理装置では、２ポートＲＡＭ、ひねり係数ＲＯＭ、複数の演算器からなるデータパスを用いて演算処理を行う構成となっている。また、この装置では、複数のデータパスを備えており、並列処理を行うことによって内部演算のスループットを向上させている。
【０００４】
このデータパスは、乗算器と加減算器とをレジスタファイルで挟んでなるパイプライン構成を備えており、入力された複素数データを時間領域から周波数領域へ変換するフーリエ変換や、周波数領域から時間領域に変換するフーリエ逆変換を、パイプライン処理によって実行する。
【０００５】
また、このデータパスは、サンプル点数が１０２４点の場合、２５６点の場合、６４点の場合について、基数４のアルゴリズムに基づく高速フーリエ変換を実行する。
【０００６】
しかしながら、上述の文献に開示されているような従来の高速フーリエ変換処理装置は、データパスアーキテクチャが基数４の高速フーリエ変換アルゴリズム用のものであるため、高速フーリエ変換のサンプル点数が４のべき乗であるときは高速の処理が可能であるものの、それ以外の数値である場合には処理効率が非常に悪くなってしまうという欠点があった。例えば、サンプル点数が５１２（４4 ×２）点の場合や１２８（４3 ×２）点の場合は、高速フーリエ変換処理を行うこと自体は可能であるものの、非常に効率が悪い処理を行わなければならないので、処理速度が遅くなる。
【０００７】
また、従来の高速フーリエ変換処理装置には、内部ワーキングメモリが不足する場合には複数個の装置を並列接続して処理を行うことができるが、この処理を行う場合には外付部品として複素加減算器、複素乗算器、作業用メモリ等を新たに追加してシステムの構築を行わなければならず、装置規模が非常に大きくなってしまうという欠点があった。例えば、上述の文献に開示されている高速フーリエ変換処理装置では、単一の装置では１０２４点を越えるサンプル点数の高速フーリエ変換を行うことができないため、例えばサンプル点数が２０４８点の場合や４０９６点の場合には、上述のような新たなシステムを構築しなければならない。
【０００８】
このような理由により、基数４または基数２のいずれの高速フーリエ変換アルゴリズムにも対応することができ、また、サンプル点数を２倍に拡張する場合に外付部品を用いることなく単に複数個のチップを接続するだけでよい高速フーリエ変換処理装置の登場が嘱望されていた。
【００１１】
【課題を解決するための手段】
この発明に係る高速フーリエ変換処理装置は、離散値の複素数データを入力して、可変サンプル点数の高速フーリエ変換演算を基数４または基数２のアルゴリズムで実行する高速フーリエ変換処理装置に関するものである。
【００１２】
そして、サンプル点数が４n ×２個または４n 個（ｎは自然数）の複素数データを外部から入力して１つのグループとして一時的に記憶する作業用記憶手段と、この作業用記憶手段に記憶された複素数データの各グループを計算列とサンプル点番号とにしたがって１６個のグループＡG1，ＢG1，ＣG1，ＤG1，ＡG2，ＢG2，ＣG2，ＤG2，ＡG3，ＢG3，ＣG3，ＤG3，ＡG4，ＢG4，ＣG4，ＤG4に分割し、分割後の各グループの組合せ｛ＡG1，ＢG1，ＣG1，ＤG1｝，｛ＡG2，ＢG2，ＣG2，ＤG2｝，｛ＡG3，ＢG3，ＣG3，ＤG3｝，｛ＡG4，ＢG4，ＣG4，ＤG4｝のそれぞれについて、各組合わせの各グループに属するｉ番目の複素数データＡi ，Ｂi ，Ｃi ，Ｄi とひねり係数Ｗi1，Ｗi2，Ｗi3，Ｗi4を用いた演算
ａi ＝｛（Ａi ＋Ｃi ）＋（Ｂi ＋Ｄi ）｝×Ｗi1      ・・・（１）
ｃi ＝｛（Ａi ＋Ｃi ）−（Ｂi ＋Ｄi ）｝×Ｗi3      ・・・（２）
ｂi ＝｛（Ａi −Ｃi ）−ｊ（Ｂi −Ｄi ）｝×Ｗi2    ・・・（３）
ｄi ＝｛（Ａi −Ｃi ）＋ｊ（Ｂi −Ｄi ）｝×Ｗi4    ・・・（４）
を実行する第１の演算手段と、この第１の演算手段の演算結果ａi ，ｂi ，ｃi ，ｄi を４個ずつ取り込んで４行４列の行列を形成した後でこの行列を転置し、これにより得られた転置行列を構成する複素数データを１列ずつ出力する転置手段と、この転置手段から入力した複素数データをＡi ，Ｂi ，Ｃi ，Ｄi として演算（１）〜（４）を順次行うとともにその結果であるａi ，ｂi ，ｃi ，ｄi を作業用記憶手段にグループの組合せ｛ＡG1，ＡG2，ＡG3，ＡG4｝，｛ＢG1，ＢG2，ＢG3，ＢG4｝，｛ＣG1，ＣG2，ＣG3，ＣG4｝，｛ＤG1，ＤG2，ＤG3，ＤG4｝に順次記憶させる第２の演算手段とを備える。
【００２５】
【発明の実施の形態】
以下、この発明の実施の形態について、図面を用いて説明する。なお、図中、各構成成分の大きさ、形状および配置関係は、この発明が理解できる程度に概略的に示してあるにすぎず、また、以下に説明する数値的条件は単なる例示にすぎないことを理解されたい。
【００２６】
第１の実施の形態
以下、この発明の第１の実施の形態について、図１〜図３を用いて説明する。
なお、この実施の形態では、サンプル点数が２０４８点の場合を例にとって説明する。
【００２７】
図１は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【００２８】
同図に示したように、外部データの実数部を入力する入力端子１０１と虚数部を入力する入力端子１０２とは、それぞれ、レジスタ１０３，１０４の入力端に接続されている。そして、これらのレジスタ１０３，１０４の出力端は、セレクタ１０５，１０６の一方の入力端に接続されている。また、セレクタ１０５，１０６の出力データは、作業用ＲＡＭ１０７に取り込まれる。
【００２９】
この作業用ＲＡＭ１０７は、データ入力バッファ部１０７ａと、実数データ記憶部１０７ｂと、虚数データ記憶部１０７ｃと、データ出力バッファ部１０７ｄとを備えている。この作業用ＲＡＭ１０７には、２０４８点の複素数データを格納することができる。
【００３０】
かかる作業用ＲＡＭ１０７の出力データは、第１のデータパス１０８および第２のデータパス１０９に入力される。また、ｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０はひねり係数を記憶している。そして、このｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０から出力されたひねり係数も、第１のデータパス１０８および第２のデータパス１０９に入力される。
【００３１】
第１のデータパス１０８および第２のデータパス１０９は、入力データおよびひねり係数を用いて後述するような演算処理を行い、演算結果を示すデータを出力する。そして、この出力データは、作業用ＲＡＭ１０７に、セレクタ１０５，１０６を介して入力される。続いて、この作業用ＲＡＭ１０７の出力信号が、それぞれ、セレクタ１１１，１１２に入力される。そして、これらのセレクタ１１１，１１２の出力信号は、レジスタ１１３，１１４を介して、実数部用の出力端子１１５および虚数部用の出力端子１１６に供給される。
【００３２】
セレクタ１１１，１１２には、上述したデータパス１０８，１０９の出力信号の他、作業用ＲＡＭ１０７の出力信号およびｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０の出力信号も入力される。そして、後述するシーケンス制御部１１９の制御によって選択された信号を、レジスタ１１３，１１４を介して、出力端子１１５，１１６に供給する。
【００３３】
クロック生成部１１７は、外部から入力したシステムクロック信号ＳＣＬＫを変換して、メモリアドレス発生部１１８およびシーケンス制御部１１９に供給する。
【００３４】
メモリアドレス発生部１１８は、クロック生成部１１７から入力されたクロック信号のタイミングにしたがってアドレス信号を発生させ、作業用ＲＡＭ１０７およびｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に供給する。
【００３５】
シーケンス制御部１１９は、外部から入力された状態制御信号およびクロック生成部１１７から入力されたクロック信号にしたがって、作業用ＲＡＭ１０７、データパス１０８，１０９およびｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０の動作を制御するとともに、セレクタ１０５，１０６，１１１，１１２の出力信号を選択する。また、外部に対して、状態表示信号を出力することもできる。
【００３６】
図２（Ａ）は、図１に示した第１のデータパス１０８および第２のデータパス１０９の内部構造を概念的に示したものである。
【００３７】
同図に示したように、これらのデータパス１０８，１０９は、一段目の演算器として、加算器２０１，２０２と、減算器２０３と、複素減算器２０４とを備えている。そして、加算器２０１は演算Ａi ＋Ｃi を、加算器２０２は演算Ｂi ＋Ｄi を、減算器２０３は演算Ａi −Ｃi を、複素減算器２０４は演算ｊ（Ｂi −Ｄi ）を行う。また、これらの４個の演算器２０１〜２０４は、それぞれバイパス２１１〜２１４を有しており、これらの演算を行うことなく、データＡi ，Ｂi ，Ｃi ，Ｄi をそのまま二段目の演算器２２１〜２２４に転送することもできる。なお、一段目の演算器２０１〜２０４での演算を行うのか或いはバイパス２１１〜２１４を用いてデータをそのまま転送するのかの制御は、シーケンス制御部１１９が行う。
【００３８】
また、二段目の演算器としては、図２（Ａ）に示したように、加算器２２１，２２３および減算器２２２，２２４が設けられている。そして、加算器２２１は一段目の加算器２０１，２０２の出力値（またはバイパス２１１，２１２から取り込まれたデータ）の加算を行い、減算器２２２は一段目の加算器２０１，２０２の出力値（またはバイパス２１１，２１２から取り込まれたデータ）の減算を行い、加算器２２３は一段目の減算器２０３の出力値と複素減算器２０４の出力値と（またはバイパス２１３，２１４から取り込まれたデータ）の加算を行い、減算器２２４は一段目の減算器２０３の出力値と複素減算器２０４の出力値と（またはバイパス２１３，２１４から取り込まれたデータ）の減算を行う。
【００３９】
さらに、三段目の演算器としては、図２（Ａ）に示したように、乗算器２３１，２３２，２３３，２３４が設けられている。そして、乗算器２３１は二段目の加算器２２１の出力値に対してｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０から入力されたひねり係数Ｗ1 または「１」（同図では信号Ｓ1 ）を掛けた数ａi を出力し、乗算器２３２は減算器２２２の出力値に対してひねり係数Ｗ3 または「１」（同図では信号Ｓ2 ）を掛けた数ｃi を出力し、乗算器２３３は加算器２２３の出力値に対してひねり係数Ｗ2 または「１」（同図では信号Ｓ3 ）を掛けた数ｂi を出力し、乗算器２３４は減算器２２４の出力値に対してひねり係数Ｗ4 または「１」（同図では信号Ｓ4 ）を掛けた数ｄi を出力する。なお、これらの乗算器２３１〜２３４で二段目の演算器２２１〜２２４の出力値にｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０から入力されたひねり係数を掛けるか「１」を掛けるかの制御は、シーケンス制御部１１９が行う。
【００４０】
この実施の形態では、後述するように、基数が４の演算処理を行う場合には、一段目の各演算器２０１〜２０４による演算を行い（すなわちバイパス２１１〜２１４を使用せず）、且つ、三段目の各演算器２３１〜２３４ではひねり係数を掛ける。このときの第１のデータパス１０８および第２のデータパス１０９の等価回路を図２（Ｂ）に示す。
【００４１】
一方、基数が２の演算処理を行う場合には、一段目はバイパス２１１〜２１４を使用してデータの転送のみを行い（すなわち演算器２０１〜２０４による演算は行わず）、且つ、三段目の各演算器２３１〜２３４では「１」を掛ける。このときの第１のデータパスおよび第２のデータパス１０９の等価回路を図２（Ｃ）に示す。
【００４２】
この実施の形態に係る高速フーリエ変換処理演算の演算式は周知であるが、例としてサンプル点数が２０４８の場合を、表１、表２に示す。
【００４３】
【表１】
0003938238.tif 000002
【００４４】
【表２】
0003938238.tif 000003
【００４５】
次に、図１に示した作業用ＲＡＭ１０７の内部構造について、図３を用いて説明する。
【００４６】
同図に示したように、この作業用ＲＡＭ１０７は、情報を記憶するためのメモリアレイ部３０１〜３０４と、これらのメモリアレイ部３０１〜３０４に書き込むデータを一時的に保持するための書き込みデータレジスタ３１１〜３１４と、書き込みデータあるいは読み出しデータの番地を指定する際にアドレスデータを一時的に保持するためのアドレスレジスタ３２１〜３２４と、このメモリアレイ部３０１〜３０４から出力データを選択するための出力セレクタ３３１と、４個の出力セレクタから出力されたデータを一時的に保持するための出力レジスタ３３２とを備えている。
【００４７】
なお、ここではメモリアレイ部や各レジスタを４個づつに分離した構成を採用したが、この構成は必須ではない。但し、リード／ライトを同時に行うためには、２個以上に分離するか、または、マルチポートのメモリアレイを用いた方がよい。
【００４８】
次に、図１に示した高速フーリエ変換処理装置の動作について説明する。
【００４９】
まず、被処理データ（複素数）が、実数部と虚数部とに分けられて、入力端子１０１，１０２から装置内に入力される。このとき、セレクタ１０５，１０６では、シーケンス制御部１１９によって、レジスタ１０３，１０４からの入力が選択されている。このため、被処理データのうち、実数部は作業用ＲＡＭ１０７の実数データ記憶部１０７ｂに、虚数部は同ＲＡＭ１０７の虚数データ記憶部１０７ｃに、それぞれ格納される。このようにして、２０４８点分の複素数データが、順次、作業用ＲＡＭ１０７に格納される。
【００５０】
作業用ＲＡＭ１０７への被処理データの格納が終了すると、続いて、これらの被処理データを用いて高速フーリエ変換処理を行う。
【００５１】
なお、この実施の形態ではサンプル点数を２０４８（４5 ×２）としているので、以下に説明するように、基数４の演算処理を５回繰り返した後、基数２の演算処理を１回行う。
【００５２】
まず、１回目の演算処理（基数４）について説明する。
【００５３】
この演算処理では、図４のステージ１（なお、各ステージはこの発明の「計算列」に相当する）に示したように、作業用ＲＡＭ１０７に格納された複素数データを、格納されたアドレス（この発明の「サンプル点番号」と一致する）にしたがって４個のグループに分けて扱う。すなわち、０番地から５１１番地までに格納された複素数データをグループＡ、５１２番地から１０２３番地までに格納された複素数データをグループＢ、１０２４番地から１５３５番地までに格納された複素数データをグループＣ、１５３６番地から２０４７番地までに格納された複素数データをグループＤとする。
【００５４】
最初に、作業用ＲＡＭ１０７は、グループＡ，Ｂ，Ｃ，Ｄのそれぞれ最初の複素数データ（すなわち、０番地、５１２番地、１０２４番地および１５３６番地の複素数データ）を出力する。そして、これらの４個の複素数データは、それぞれ、第１のデータパス１０８および第２のデータパス１０９に入力される。また、これと同時に、ｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０が、０番地、５１２番地、１０２４番地および１５３６番地に対応するひねり係数Ｗ1 ，Ｗ2 ，Ｗ3 ，Ｗ4 を出力する。そして、ひねり係数Ｗ1 ，Ｗ3 は第１のデータパス１０８に入力され、ひねり係数Ｗ2 ，Ｗ4 は第２のデータパス１０９に入力される。
【００５５】
そして、第１のデータパス１０８は、次式（１），（２）の演算を行うことにより、複素数データａi ，ｃi を算出する。
【００５６】
ａi ＝｛（Ａi ＋Ｃi ）＋（Ｂi ＋Ｄi ）｝×Ｗ1       ・・・（１）
ｃi ＝｛（Ａi ＋Ｃi ）−（Ｂi ＋Ｄi ）｝×Ｗ3       ・・・（２）
また、第２のデータパス１０９は、次式（３），（４）の演算を行うことにより、複素数データｂi ，ｄi を算出する。
【００５７】
ｂi ＝｛（Ａi −Ｃi ）−ｊ（Ｂi −Ｄi ）｝×Ｗ2     ・・・（３）
ｄi ＝｛（Ａi −Ｃi ）＋ｊ（Ｂi −Ｄi ）｝×Ｗ4     ・・・（４）
なお、式（１）〜（４）において、Ａi ，Ｂi ，Ｃi ，Ｄi は、それぞれ作業用ＲＡＭ１０７に格納された複素数データのうち、グループＡ，Ｂ，Ｃ，Ｄの番地に属するデータを示している。すなわち、ここでは、０番地、５１２番地、１０２４番地および１５３６番地の複素数データを示している。
【００５８】
これらの式（１）〜（４）を用いたバタフライ演算について、図２（Ｂ）用いて説明する。
【００５９】
同図に示したように、第１のデータパス１０８および第２のデータパス１０９にＡi ，Ｂi ，Ｃi ，Ｄi に相当する複素数データを取り込んで、まず、第１段階として（Ａi ＋Ｃi ），（Ｂi ＋Ｄi ），（Ａi −Ｃi ），ｊ（Ｂi −Ｄi ）を算出し、次に、これらの算出値を用いて第２段階で（Ａi ＋Ｃi ）＋（Ｂi ＋Ｄi ），（Ａi ＋Ｃi ）−（Ｂi ＋Ｄi ），（Ａi −Ｃi ）−ｊ（Ｂi −Ｄi ），（Ａi −Ｃi ）＋ｊ（Ｂi −Ｄi ）を算出し、さらに、これらの算出値を用いて第３段階で｛（Ａi ＋Ｃi ）＋（Ｂi ＋Ｄi ）｝×Ｗ1 ，｛（Ａi ＋Ｃi ）−（Ｂi ＋Ｄi ）｝×Ｗ3 ，｛（Ａi −Ｃi ）−ｊ（Ｂi −Ｄi ）｝×Ｗ2 ，｛（Ａi −Ｃi ）＋ｊ（Ｂi −Ｄi ）｝×Ｗ4 を算出して、それぞれを演算結果ａi ，ｃi ，ｂi ，ｄi として出力する。
【００６０】
演算が終了すると、データパス１０８，１０９から、この演算結果ａi ，ｂi ，ｃi ，ｄi が出力される。このとき、シーケンス制御部１１９の制御により、セレクタ１０５，１０６は、データパス１０８，１０９からの入力を選択する。そして、データパス１０８，１０９の出力データが、作業用ＲＡＭ１０７に格納される。このとき、グループＡに属する番地（ここでは０番地）には式（１）の演算結果ａi が、グループＢに属する番地（ここでは５１２番地）には式（３）の演算結果ｂi が、グループＣに属する番地（ここでは１０２４番地）には式（２）の演算結果ｃi が、グループＤに属する番地（ここでは１５３６番地）には式（４）の演算結果ｄi が、それぞれ格納される。なお、複素数データａi ，ｂi ，ｃi ，ｄi の格納場所は、シーケンス制御部１１９がメモリアドレス発生部１１８を制御することによって決定する。
【００６１】
続いて、１番地、５１３番地、１０２５番地および１５３７番地の複素数データを用いて同様の演算処理を行ない、以下同様にしてすべての番地の複素数データについて順次演算処理を行う。
【００６２】
このようにして１回目の演算処理が終了すると、次に、以下のようにして２回目の演算処理（基数４）を行う。
【００６３】
２回目の演算処理では、図４のステージ２に示したように、作業用ＲＡＭ１０７の各番地のうち、０番地〜５１１番地、５１２番地〜１０２３番地、１０２４番地〜１５３５番地および１５３６番地〜２０４７番地を、それぞれ、さらに４個のグループに分割する。すなわち、この２回目の演算処理では、作業用ＲＡＭ１０７の各番地を合計１６個に分割する。
【００６４】
そして、例えば、０番地〜５１１番地のうち、０番地〜１２７番地をグループＡ、１２８番地〜２５５番地をグループＢ、１５６番地〜３８３番地をグループＣ、３８４番地〜５１１番地をグループＤとして、上述の式（１）〜（４）を用いた演算処理を行う。
【００６５】
すなわち、最初に、０番地、１２８番地、１５６番地および３８４番地の複素数データを作業用ＲＡＭ１０７から読み出すとともに、これらの番地に対応するひねり係数をｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０から読み出し、データパス１０８，１０９に取り込む。続いて、０番地の複素数データをＡi 、１２８番地の複素数データをＢi 、１５６番地の複素数データをＣi 、３８４番地の複素数データをＤi として、上述の式（１）〜（４）を実行する。そして、この演算によって得られた複素数データａi ，ｂi ，ｃi ，ｄi を、それぞれ、作業用ＲＡＭ１０７の０番地、１２８番地、１５６番地および３８４番地に格納する。その後、これと同様にして、０番地〜５１１番地の各複素数データを用いた演算処理を順次実行する。
【００６６】
このようにして０番地〜５１１番地の複素数データを用いた演算処理が終了すると、次に、５１２番地〜１０２３番地をグループＡ，Ｂ，Ｃ，Ｄに分割して、同様の演算処理を行う。さらに、１０２４番地〜１５３５番地および１５３６番地〜２０４７番地の複素数データについても、同様にして演算処理を行う。
【００６７】
以上のようにして２回目の演算処理が終了すると、次に、以下のようにして３回目の演算処理（基数４）を行う。
【００６８】
３回目の演算処理では、図４のステージ３に示したように、作業用ＲＡＭ１０７の各番地のうち、２回目の演算処理で１６分割した番地のそれぞれを、さらにグループＡ〜Ｄに４分割する。すなわち、この３回目の演算処理では、作業用ＲＡＭ１０７の各番地を合計６４個に分割する。
【００６９】
例えば、上述の２回目の演算処理で１６分割した最初の番地群である０番地〜１２７番地のうち、０番地〜３１番地はグループＡ、３２番地〜６３番地はグループＢ、６４番地〜９５番地はグループＣ、９６番地〜１２７番地はグループＤとなる。
【００７０】
３回目の演算処理においても、まず最初に、０番地、３２番地、６４番地および９６番地の複素数データを作業用ＲＡＭ１０７から読み出すとともに、これらの番地に対応するひねり係数をｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０から読み出し、データパス１０８，１０９に取り込む。続いて、０番地の複素数データをＡi 、３２番地の複素数データをＢi 、６４番地の複素数データをＣi 、９６番地の複素数データをＤi として、上述の式（１）〜（４）を実行する。そして、この演算によって得られた複素数データａi ，ｂi ，ｃi ，ｄi を、それぞれ、作業用ＲＡＭ１０７の０番地、３２番地、６４番地および９６番地に格納する。その後、これと同様にして、他の番地の各複素数データを用いた演算処理を順次実行する。
【００７１】
このようにして０番地〜１２７番地の複素数データを用いた演算処理が終了すると、次に、１２８番地〜２５５番地をグループＡ，Ｂ，Ｃ，Ｄに分割して、同様の演算処理を行う。さらに、残りの各番地ブロックの複素数データについても、同様にして演算処理を行う。
【００７２】
以上のようにして３回目の演算処理が終了すると、次に、以下のようにして４回目の演算処理（基数４）を行う。
【００７３】
４回目の演算処理では、図４のステージ４に示したように、作業用ＲＡＭ１０７の各番地のうち、３回目の演算処理で６４分割した番地のそれぞれを、さらにグループＡ〜Ｄに４分割する。すなわち、この４回目の演算処理では、作業用ＲＡＭ１０７の各番地を合計２５６個に分割する。
【００７４】
例えば、上述の３回目の演算処理で６４分割した最初の番地ブロックである０番地〜３１番地のうち、０番地〜７番地はグループＡ、８番地〜１５番地はグループＢ、１６番地〜２３番地はグループＣ、２４番地〜３１番地はグループＤとなる。
【００７５】
そして、最初に、０番地、８番地、１６番地および２４番地の複素数データを作業用ＲＡＭ１０７から読み出すとともに、これらの番地に対応するひねり係数をｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０から読み出し、データパス１０８，１０９に取り込む。続いて、０番地の複素数データをＡi 、８番地の複素数データをＢi 、１６番地の複素数データをＣi 、２４番地の複素数データをＤi として、上述の式（１）〜（４）を実行する。その後、この演算によって得られた複素数データａi ，ｂi ，ｃi ，ｄi を、それぞれ、作業用ＲＡＭ１０７の０番地、８番地、１６番地および２４番地に格納する。その後、これと同様にして、他の番地の各複素数データを用いた演算処理を順次実行する。
【００７６】
このようにして０番地〜３１番地の複素数データを用いた演算処理が終了すると、次に、３２番地〜６３番地をグループＡ，Ｂ，Ｃ，Ｄに分割して、同様の演算処理を行う。さらに、残りの各番地ブロックの複素数データについても、同様にして演算処理を行う。
【００７７】
以上のようにして４回目の演算処理が終了すると、次に、以下のようにして５回目の演算処理（基数４）を行う。
【００７８】
５回目の演算処理でも、図４のステージ５に示したように、作業用ＲＡＭ１０７の各番地のうち、４回目の演算処理で２５６分割した番地のそれぞれを、さらにグループＡ〜Ｄに４分割する。すなわち、この４回目の演算処理では、作業用ＲＡＭ１０７の各番地を合計１０２４個に分割する。
【００７９】
例えば、２５６分割した最初の番地ブロックである０番地〜７番地のうち、０番地および１番地はグループＡ、２番地および３番地はグループＢ、４番地および５番地はグループＣ、６番地および７番地はグループＤとなる。
【００８０】
そして、最初に、０番地、２番地、４番地および６番地の複素数データを作業用ＲＡＭ１０７から読み出すとともに、これらの番地に対応するひねり係数をｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０から読み出し、データパス１０８，１０９に取り込む。続いて、０番地の複素数データをＡi 、２番地の複素数データをＢi 、４番地の複素数データをＣi 、６番地の複素数データをＤi として、上述の式（１）〜（４）を実行する。その後、この演算によって得られた複素数データａi ，ｂi ，ｃi ，ｄi を、それぞれ、作業用ＲＡＭ１０７の０番地、２番地、４番地および６番地に格納する。その後、これと同様にして、１番地、３番地、５番地、７番地の各複素数データを用いた演算処理を実行する。
【００８１】
このようにして０番地〜７番地の複素数データを用いた演算処理が終了すると、次に、８番地〜１５番地をグループＡ，Ｂ，Ｃ，Ｄに分割して、同様の演算処理を行う。さらに、残りの各番地ブロックの複素数データについても、同様にして演算処理を行う。
【００８２】
以上のようにして５回目の演算処理が終了すると、次に、６回目の演算処理として、基数２の演算処理を行う。
【００８３】
この演算処理では、図４のステージ６に示したように、５回目の演算処理の場合と同様、作業用ＲＡＭ１０７の各番地を合計１０２４個に分割する。また、この６回目の演算処理では、グループＡ，ＢとグループＣ，Ｄとは同じ演算処理を行なう。
【００８４】
例えば、１０２４分割した最初の番地群である０番地、１番地および２番目の番地群である２番地、３番地のうち、０番地はグループＡ、１番地はグループＢ、２番地はグループＣ、３番地はグループＤとなる。
【００８５】
そして、最初に、０番地、１番地、２番地および３番地の複素数データを作業用ＲＡＭ１０７から読み出す。
【００８６】
そして、第１のデータパス１０８は、これらの複素数データを用いて次式（５），（６）の演算を行うことにより、複素数データａi ，ｂi を算出する。
【００８７】
ａi ＝Ａi ＋Ｂi       ・・・（５）
ｂi ＝Ａi −Ｂi       ・・・（６）
また、第２のデータパス１０９は、次式（７），（８）の演算を行うことにより、複素数データｃi ，ｄi を算出する。
【００８８】
ｃi ＝Ｃi ＋Ｄi       ・・・（７）
ｄi ＝Ｃi −Ｄi       ・・・（８）
なお、式（５）〜（８）において、Ａi ，Ｂi ，Ｃi ，Ｄi は、それぞれ作業用ＲＡＭ１０７に格納された複素数データのうち、グループＡ，Ｂ，Ｃ，Ｄの番地に属するデータを示している。すなわち、ここでは、０番地、１番地、２番地および３番地の複素数データを示している。
【００８９】
これらの式（５）〜（８）を用いたバタフライ演算について、図２（Ｃ）を用いて説明する。
【００９０】
同図に示したように、まず、第１のデータパス１０８は複素数データＡi ，Ｂi を、データパス１０９は複素数データＣi ，Ｄi を、それぞれ取り込む。そして、第１のデータパス１０８は、Ａi ＋Ｂi ，Ａi −Ｂi を算出し、演算結果ａi ，ｂi を出力する。一方、第２のデータパス１０９は、Ｃi ＋Ｄi ，Ｃi −Ｄi を算出し、演算結果ｃi ，ｄi を出力する。
【００９１】
このようにして得られた演算結果ａi ，ｂi ，ｃi ，ｄi は、作業用ＲＡＭ１０７の０番地、１番地、２番地および３番地に格納される。
【００９２】
そして、このようにして０番地〜３番地の複素数データを用いた演算処理が終了すると、残りの番地ブロックの各複素数データについても、同様の演算処理を行なう。
【００９３】
その後、作業用ＲＡＭ１０７内に格納された複素数データが、レジスタ１１３，１１４を介して、出力端子１１５，１１６から外部へ出力される。
【００９４】
次に、この実施の形態に係るデータパス１０８，１０９の他の構成例について、図１２を用いて説明する。同図において、図１と同じ符号を付した構成部は、それぞれ図１の場合と同じものを示している。
【００９５】
図１２に示した第１のデータパス１０８において、レジスタ１２１１は、作業用ＲＡＭ１０７から入力した複素数データＡi 〜Ｄi の実数部または虚数部を、一時的に保持する。
【００９６】
また、加算器１２１２は、レジスタ１２１１から入力したデータを用いて、後述のような演算を行う。
【００９７】
セレクタ１２１３は、加算器１２１２から入力したデータまたはレジスタ１２１１から入力したデータを選択して、レジスタ１２１４に出力する。
【００９８】
レジスタ１２１４は、セレクタ１２１３から入力したデータを、一時的に保持する。
【００９９】
加減算器１２１５は、レジスタ１２１４から入力した複素数データを用いて、後述のような加算または減算を行う。
【０１００】
レジスタ１２１６，１２１７は、加減算器１２１５が出力したデータを、交互に、一時的に保持する。
【０１０１】
レジスタ１２１８は、ｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０（図１参照）から入力したひねり係数Ｗ1 を、一時的に保持する。また、レジスタ１２１９は、ｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０から入力したひねり係数Ｗ3 を、一時的に保持する。
【０１０２】
乗算回路１２２０は、レジスタ１２１６から入力したデータに、ひねり係数Ｗ1 、実数「１」、または実数「０」を乗算する。同様に、乗算回路１２２１は、レジスタ１２１７から入力したデータに、ひねり係数Ｗ3 、実数「１」、または実数「０」を乗算する。
【０１０３】
レジスタ１２２２は、乗算回路１２２０が出力した演算結果を、一時的に保持する。同様に、レジスタ１２２３は、乗算回路１２２１が出力した演算結果を、一時的に保持する。
【０１０４】
加減算回路１２２４は、レジスタ１２２２，１２２３から入力したデータを用いて、後述のような加算または減算を行う。
【０１０５】
レジスタ１２２５は、加減算回路１２２４から入力したデータを、一時的の保持する。このレジスタ１２２５に保持されたデータは、セレクタ１０５，１０６を介して、作業用ＲＡＭ１０７に格納される。
【０１０６】
第２のデータパス１０９において、レジスタ１２３１は、作業用ＲＡＭ１０７から入力した複素数データＡi 〜Ｄi の実数部または虚数部を、一時的に保持する。
【０１０７】
また、減算／複素減算器１２３２は、レジスタ１２３１から入力したデータを用いて、後述のような演算を行う。
【０１０８】
セレクタ１２３３は、減算／複素減算器１２３２から入力したデータまたはレジスタ１２３１から入力したデータを選択して、レジスタ１２３４に出力する。
【０１０９】
レジスタ１２３４は、セレクタ１２３３から入力したデータを、一時的に保持する。
【０１１０】
加減算器１２３５は、レジスタ１２３４から入力した複素数データを用いて、後述のような加算または減算を行う。
【０１１１】
レジスタ１２３６，１２３７は、加減算器１２３５が出力したデータを、交互に、一時的に保持する。
【０１１２】
レジスタ１２３８は、ｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０（図１参照）から入力したひねり係数Ｗ2 を、一時的に保持する。また、レジスタ１２３９は、ｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０から入力したひねり係数Ｗ4 を、一時的に保持する。
【０１１３】
乗算回路１２４０は、レジスタ１２３６から入力したデータに、ひねり係数Ｗ2 、実数「１」、または実数「０」を乗算する。同様に、乗算回路１２４１は、レジスタ１２３７から入力したデータに、ひねり係数Ｗ4 、実数「１」、または実数「０」を乗算する。
【０１１４】
レジスタ１２４２は、乗算回路１２４０が出力した演算結果を、一時的に保持する。同様に、レジスタ１２４３は、乗算回路１２４１が出力した演算結果を、一時的に保持する。
【０１１５】
加減算回路１２４４は、レジスタ１２４２，１２４３から入力したデータを用いて、後述のような加算または減算を行う。
【０１１６】
レジスタ１２４５は、加減算回路１２４４から入力したデータを、一時的の保持する。このレジスタ１２４５に保持されたデータは、セレクタ１０５，１０６を介して、作業用ＲＡＭ１０７に格納される。
【０１１７】
続いて、図１２に示したデータパス１０８，１０９の動作について、図１３〜図１６を用いて説明する。
【０１１８】
図１３は基数が４のときのデータパス１０８の動作を説明するためのタイミングチャートである。
【０１１９】
図１３に示したように、作業用ＲＡＭ１０７は、システムクロックＳＣＬＫの立ち下がりタイミングで、複素数データＡi ，Ｃi の実数部（図１３ではＲ(A) ，Ｒ(C) で表す）、複素数データＢi ，Ｄi の実数部（図１３ではＲ(B) ，Ｒ(D) で表す）、複素数データＡi ，Ｃi の虚数部（図１３ではＩ(A) ，Ｉ(C) で表す）、複素数データＢi ，Ｄi の虚数部（図１３ではＩ(B) ，Ｉ(D) で表す）を、順次出力する。これらのデータＲ(A) およびＲ(C) 、Ｒ(B) およびＲ(D) 、Ｉ(A) およびＩ(C) 、Ｉ(B) およびＩ(D) は、システムクロックＳＣＬＫの立ち上がりタイミングで、レジスタ１２１１に順次格納される。
【０１２０】
加算器１２１２は、まず、レジスタ１２１１からデータＲ(A) ，Ｒ(C) を入力して、演算Ｒ(A,C) ＝Ｒ(A) ＋Ｒ(C) を行う。続いて、同様の演算Ｒ(B,D) ＝Ｒ(B) ＋Ｒ(D) 、Ｉ(A,C) ＝Ｉ(A) ＋Ｉ(C) 、Ｉ(B,D) ＝Ｉ(B) ＋Ｉ(D) を、順次実行する。これらの演算結果Ｒ(A,C) 、Ｒ(B,D) 、Ｉ(A,C) 、Ｉ(B,D) は、セレクタ１２１３を介して、レジスタ１２１４に順次格納される。
【０１２１】
加減算器１２１５は、まず、レジスタ１２１４からデータＲ(A,C) およびデータＲ(B,D) を入力して演算Ｒ(+) ＝Ｒ(A,C) ＋Ｒ(B,D) を行い、続いて、レジスタ１２１４からデータＲ(A,C) およびデータＲ(B,D) を再び入力して演算Ｒ(-) ＝Ｒ(A,C) −Ｒ(B,D) を実行する。さらに、レジスタ１２１４からデータＩ(A,C) およびデータＩ(B,D) を入力して演算Ｉ(+) ＝Ｉ(A,C) ＋Ｉ(B,D) を行い、続いて、レジスタ１２１４からデータＩ(A,C) およびデータＩ(B,D) を再び入力して演算Ｉ(-) ＝Ｉ(A,C) −Ｉ(B,D) を実行する。そして、演算結果Ｒ(+) ，Ｉ(+) はレジスタ１２１６に格納され、演算結果Ｒ(-) ，Ｉ(-) はレジス１２１７に格納される。
【０１２２】
乗算回路１２２０は、まず、レジスタ１２１６から入力したデータＲ(+) に、レジスタ１２１８から入力したひねり係数Ｗ1 の実数部Ｗ1Rを乗算することによってＲ1 を算出し、さらに、データＲ(+) にひねり係数Ｗ1 の虚数部Ｗ1Iを乗算することによってＩ1 を算出する。次に、レジスタ１２１６から入力したデータＩ(+) に、ひねり係数Ｗ1 の虚数部Ｗ1Iを乗算することによってＲ2 を算出した後で、さらに、データＩ(+) にひねり係数Ｗ1 の実数部Ｗ1Rを乗算することによってＩ2 を算出する。これらの演算結果Ｒ1 ，Ｉ1 ，Ｒ2 ，Ｉ2 は、レジスタ１２２２に格納される。
【０１２３】
一方、乗算回路１２２１は、まず、レジスタ１２１７から入力したデータＲ(-) に、レジスタ１２１９から入力したひねり係数Ｗ3 の実数部Ｗ3Rを乗算することによってＲ3 を算出し、さらに、データＲ(-) にひねり係数Ｗ3 の虚数部Ｗ3Iを乗算することによってＩ3 を算出する。次に、レジスタ１２１７から入力したデータＩ(-) に、ひねり係数Ｗ3 の虚数部Ｗ3Iを乗算することによってＲ4 を算出し、さらに、データＩ(-) にひねり係数Ｗ3 の実数部Ｗ3Rを乗算することによってＩ4 を算出する。これらの演算結果Ｒ3 ，Ｉ3 ，Ｒ4 ，Ｉ4 は、レジスタ１２２３に格納される。
【０１２４】
加減算器１２２４は、まず、レジスタ１２２２から読み込んだデータＲ1 ，Ｒ2 を用いてＲ（ａi ）＝Ｒ1 ＋Ｒ2 を算出し、続いて、レジスタ１２２３から読み込んだデータＲ3 ，Ｒ4 を用いてＲ（ｃi ）＝Ｒ3 ＋Ｒ4 を算出する。さらに、レジスタ１２２２から読み込んだデータＩ1 ，Ｉ2 を用いてＩ（ａi ）＝Ｉ1 ＋Ｉ2 を算出し、続いて、レジスタ１２２３から読み込んだデータＩ3 ，Ｉ4 を用いてＩ（ｃi ）＝Ｉ3 ＋Ｉ4 を算出する。これにより、上式（１）に示した複素数データａi の実数部Ｒ（ａi ）および虚数部Ｉ（ａi ）と、上式（２）に示した複素数データｃi の実数部Ｒ（ｃi ）および虚数部Ｉ（ｃi ）とを得ることができる。これらの演算結果は、レジスタ１２２５およびセレクタ１０５を介して、作業用ＲＡＭ１０７に格納される。
【０１２５】
また、図１４は基数が４のときのデータパス１０９の動作を説明するためのタイミングチャートである。
【０１２６】
上述の図１３を用いて説明したように、作業用ＲＡＭ１０７がデータＲ(A) ，Ｒ(C) 、データＲ(B) ，Ｒ(D) 、データＩ(A) ，Ｉ(C) 、データＩ(B) ，Ｉ(D) を順次出力すると、これらのデータはレジスタ１２３１にも順次格納される。
【０１２７】
減算／複素減算器１２３２は、まず、レジスタ１２３１からデータＲ(A) ，Ｒ(C) を入力して、演算Ｒ(A,C) ＝Ｒ(A) −Ｒ(C) を行う。続いて、同様の演算Ｉ(B,D) ＝ｊ（Ｒ(B) −Ｒ(D) ）、Ｉ(A,C) ＝Ｉ(A) −Ｉ(C) 、Ｒ(B,D) ＝ｊ（Ｉ(B) −Ｉ(D) ）を、順次実行する。これらの演算結果Ｒ(A,C) 、Ｉ(B,D) 、Ｉ(A,C) 、Ｒ(B,D) は、セレクタ１２３３を介して、レジスタ１２３４に順次格納される。
【０１２８】
加減算器１２３５は、まず、レジスタ１２３４からデータＲ(A,C) およびデータＩ(B,D) を入力して演算Ｒ(+) ＝Ｒ(A,C) ＋Ｒ(B,D) を行い、続いて、レジスタ１２３４からデータＲ(A,C) およびデータＲ(B,D) を再び入力して演算Ｒ(-) ＝Ｒ(A,C) −Ｒ(B,D) を実行する。さらに、レジスタ１２３４からデータＩ(A,C) およびデータＩ(B,D) を入力して演算Ｉ(-) ＝Ｉ(A,C) −Ｉ(B,D) を行い、続いて、レジスタ１２３４からデータＩ(A,C) およびデータＩ(B,D) を再び入力して演算Ｉ(+) ＝Ｉ(A,C) ＋Ｉ(B,D) を実行する。そして、演算結果Ｒ(+) ，Ｉ(-) はレジスタ１２３６に格納され、演算結果Ｒ(-) ，Ｉ(+) はレジスタ１２３７に格納される。
【０１２９】
乗算回路１２４０は、まず、レジスタ１２３６から入力したデータＲ(+) に、レジスタ１２１８から入力したひねり係数Ｗ2 の実数部Ｗ2Rを乗算することによってＲ5 を算出し、さらに、データＲ(+) にひねり係数Ｗ2 の虚数部Ｗ2Iを乗算することによってＩ5 を算出する。次に、レジスタ１２３６から入力したデータＩ(-) に、ひねり係数Ｗ2 の虚数部Ｗ2Iを乗算することによってＲ6 を算出した後で、さらに、データＩ(-) にひねり係数Ｗ2 の実数部Ｗ2Rを乗算することによってＩ6 を算出する。これらの演算結果Ｒ5 ，Ｉ5 ，Ｒ6 ，Ｉ6 は、レジスタ１２４２に格納される。
【０１３０】
一方、乗算回路１２４１は、まず、レジスタ１２３７から入力したデータＲ(-) に、レジスタ１２３９から入力したひねり係数Ｗ4 の実数部Ｗ4Rを乗算することによってＲ7 を算出し、さらに、データＲ(-) にひねり係数Ｗ4 の虚数部Ｗ4Iを乗算することによってＩ7 を算出する。次に、レジスタ１２３６から入力したデータＩ(+) に、ひねり係数Ｗ4 の虚数部Ｗ4Iを乗算することによってＲ8 を算出し、さらに、データＩ(+) にひねり係数Ｗ4 の実数部Ｗ4Rを乗算することによってＩ8 を算出する。これらの演算結果Ｒ7 ，Ｉ7 ，Ｒ8 ，Ｉ8 は、レジスタ１２４３に格納される。
【０１３１】
加減算器１２４４は、まず、レジスタ１２４２から読み込んだデータＲ5 ，Ｒ6 を用いてＲ（ｂi ）＝Ｒ5 ＋Ｒ6 を算出し、続いて、レジスタ１２４３から読み込んだデータＲ7 ，Ｒ8 を用いてＲ（ｄi ）＝Ｒ7 ＋Ｒ8 を算出する。さらに、レジスタ１２４２から読み込んだデータＩ5 ，Ｉ6 を用いてＩ（ｂi ）＝Ｉ5 ＋Ｉ6 を算出し、続いて、レジスタ１２４３から読み込んだデータＩ7 ，Ｉ8 を用いてＩ（ｄi ）＝Ｉ7 ＋Ｉ8 を算出する。これらの演算結果は、レジスタ１２４５およびセレクタ１０５を介して、作業用ＲＡＭ１０７に格納される。
【０１３２】
図１５は、基数が２のときのデータパス１０８の動作を説明するためのタイミングチャートである。
【０１３３】
図１５に示したように、まず、作業用ＲＡＭ１０７が、基数が４の場合と同様、システムクロックＳＣＬＫの立ち下がりタイミングで、データＲ(A) ，Ｒ(C) 、データＲ(B) ，Ｒ(D) 、データＩ(A) ，Ｉ(C) およびデータＩ(B) ，Ｉ(D) を、順次出力すると、これらのデータのうちＲ(A) ，Ｒ(B) ，Ｉ(A) ，Ｉ(B) が、システムクロックＳＣＬＫの立ち上がりタイミングで、レジスタ１２１１に順次格納される。
【０１３４】
ここで、基数が２の場合は、セレクタ１２１３は、レジスタ１２１１から入力したデータを出力する。このため、レジスタ１２１４には、上述のデータＲ(A) ，Ｒ(B) ，Ｉ(A) ，Ｉ(B) が、順次格納される。
【０１３５】
加減算器１２１５は、まず、レジスタ１２１４からデータＲ(A) およびデータＲ(B) を入力して演算Ｒ(A,B) ＝Ｒ(A) ＋Ｒ(B) を行い、続いて、レジスタ１２１４からデータＲ(A) およびデータＲ(B) を再び入力して演算Ｒ(A,B) ＝Ｒ(A) −Ｒ(B) を実行する。さらに、レジスタ１２１４からデータＩ(A) およびデータＩ(B) を入力して演算Ｉ(A,B) ＝Ｉ(A) ＋Ｉ(B) を行い、続いて、レジスタ１２１４からデータＩ(A) およびデータＩ(B) を再び入力して演算Ｉ(A,B) ＝Ｉ(A) −Ｉ(B) を実行する。そして、演算結果Ｒ(A,B) ，Ｉ(A,B) はレジスタ１２１６に格納され、演算結果Ｒ(A,B) ，Ｉ(A,B) はレジスタ１２１７に格納される。
【０１３６】
乗算回路１２２０は、基数が２の場合には、ひねり係数としてＷ＝１＋ｊ・０を用いる。すなわち、まず、レジスタ１２１６から入力したデータＲ(A,B) に「１」を乗算し、さらに、データＲ(A,B) に「０」を乗算する。次に、レジスタ１２１６から入力したデータＩ(A,B) に「１」乗算し、さらに、データＩ(A,B) に「０」を乗算する。これらの演算結果Ｒ(A,B) ，０，Ｉ(A,B) ，０は、レジスタ１２２２に格納される。
【０１３７】
また、乗算回路１２２１も、ひねり係数としてＷ＝１＋ｊ・０を用いる。すなわち、まず、レジスタ１２１７から入力したデータＲ(A,B) に「１」を乗算し、さらに、データＲ(A,B) に「０」を乗算する。次に、レジスタ１２１７から入力したデータＩ(A,B) に「１」を乗算し、さらに、データＩ(A,B) に「０」を乗算する。これらの演算結果Ｒ(A,B) ，０，Ｉ(A,B) ，０は、レジスタ１２２３に格納される。
【０１３８】
加減算器１２２４は、まず、レジスタ１２２２から読み込んだデータＲ(A,B) ，０を用いてＲ（ａi ）＝Ｒ(A,B) ＋０を算出し、続いて、レジスタ１２２３から読み込んだデータＲ(A,B) ，０を用いてＲ（ｂi ）＝Ｒ(A,B) ＋０を算出する。さらに、レジスタ１２２２から読み込んだデータＩ(A,B) ，０を用いてＩ（ａi ）＝Ｉ(A,B) ＋０を算出し、続いて、レジスタ１２２３から読み込んだデータＩ(A,B) ，０を用いてＩ（ｂi ）＝Ｉ(A,B) ＋０を算出する。これらの演算結果は、レジスタ１２２５およびセレクタ１０５を介して、作業用ＲＡＭ１０７に格納される。
【０１３９】
図１６は、基数が２のときのデータパス１０９の動作を説明するためのタイミングチャートである。
【０１４０】
上述の図１５を用いて説明したように、まず、作業用ＲＡＭ１０７がデータＲ(A) ，Ｒ(C) 、データＲ(B) ，Ｒ(D) 、データＩ(A) ，Ｉ(C) およびデータＩ(B) ，Ｉ(D) を順次出力すると、これらのデータのうちＲ(C) ，Ｒ(D) ，Ｉ(C) ，Ｉ(D) が、システムクロックＳＣＬＫの立ち上がりタイミングで、レジスタ１２３１に順次格納される。
【０１４１】
そして、セレクタ１２３３が、レジスタ１２３１から入力したデータを出力することにより、レジスタ１２３４には上述のデータＲ(C) ，Ｒ(D) ，Ｉ(C) ，Ｉ(D) が順次格納される。
【０１４２】
加減算器１２３５は、このレジスタ１２３４に格納されたデータＲ(C) ，Ｒ(D) を用いて、演算Ｒ(C,D) ＝Ｒ(C) ＋Ｒ(D) および演算Ｒ(C,D) ＝Ｒ(C) −Ｒ(D) を順次実行する。さらに、レジスタ１２３４に格納されたデータＩ(C) ，Ｉ(D) を用いて演算Ｉ(C,D) ＝Ｉ(C) ＋Ｉ(D) および演算Ｉ(C,D) ＝Ｉ(C) −Ｉ(D) を実行する。そして、演算結果Ｒ(C,D) ，Ｉ(C,D) はレジスタ１２３６に格納され、演算結果Ｒ(C,D) ，Ｉ(C,D) はレジスタ１２３７に格納される。
【０１４３】
乗算回路１２４０は、図１５の乗算回路１２２０と同様、ひねり係数としてＷ＝１＋ｊ・０を用いた演算を行い、演算結果Ｒ(C,D) ，０，Ｉ(C,D) ，０をレジスタ１２４２に格納する。
【０１４４】
また、乗算回路１２４１も、ひねり係数としてＷ＝１＋ｊ・０を用いて演算処理を行い、演算結果Ｒ(C,D) ，０，Ｉ(C,D) ，０をレジスタ１２４３に格納する。
【０１４５】
加減算器１２４４は、まず、レジスタ１２４２から読み込んだデータＲ(C,D) ，０を用いてＲ（ｃi ）＝Ｒ(C,D) ＋０を算出し、続いて、レジスタ１２４３から読み込んだデータＲ(C,D) ，０を用いてＲ（ｄi ）＝Ｒ(C,D) ＋０を算出する。さらに、レジスタ１２４２から読み込んだデータＩ(C,D) ，０を用いてＩ（ｃi ）＝Ｉ(C,D) ＋０を算出し、続いて、レジスタ１２４３から読み込んだデータＩ(C,D) ，０を用いてＩ（ｄi ）＝Ｉ(C,D) ＋０を算出する。これらの演算結果は、レジスタ１２４５およびセレクタ１０５を介して、作業用ＲＡＭ１０７に格納される。
【０１４６】
図１２に示したようにデータパス１０８，１０９を構成することにより、簡単な回路で効率よく演算処理を行うことができる。
【０１４７】
以上説明したように、この実施の形態に係る高速フーリエ変換処理装置によれば、基数が４の演算処理であっても基数が２の演算処理であっても高速で実行することが可能なデータパス１０８，１０９を、簡単な構成によって得ることができる。すなわち、この実施の形態によれば、基数４または基数２のいずれの高速フーリエ変換アルゴリズムにも対応することができる高速フーリエ変換処理装置を安価に提供することができる。
【０１４８】
第２の実施の形態
次に、この発明の第２の実施の形態について、図５を用いて説明する。なお、この実施の形態に係る高速フーリエ変換処理装置は、ブロック浮動小数点演算処理機能を有する点で、上述の第１の実施の形態と異なる。
【０１４９】
この実施の形態でも、サンプル点数が２０４８点の場合を例にとって説明する。
【０１５０】
図５は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【０１５１】
同図において、図１と同じ符号を付した構成部は、それぞれ、図１の場合と同じものを示している。
【０１５２】
また、図５において、第１のデータパス５０１および第２のデータパス５０２は、ブロック浮動小数点演算を行うためのシフト機能を有している点で、図１に示した各データパス１０８，１０９と異なる。なお、ブロック浮動小数点演算自体は公知の手法であるので、この演算で使用するシフト機能の詳細構成についての説明は省略する。
【０１５３】
また、ブロック浮動小数点検出記憶部５０３は、セレクタ１０５，１０６が出力した複素数データを取り込んでブロック浮動小数点を検出するとともに、この検出値を一時的に記憶する。ここで、後述するように、セレクタ１０５，１０６から出力されるのは、入力端子１０１，１０２を介して外部から入力された複素数データ或いはデータパス５０１，５０２が出力した複素数データである。なお、このブロック浮動小数点検出記憶部５０３が一時的に記憶したブロック浮動小数点の検出値は、データパス５０１，５０２およびシーケンス制御部１１９に転送される。
【０１５４】
出力ビットシフタ５０４，５０５は、作業用ＲＡＭ１０７から複素数データを取り込むとともにシーケンス制御部１１９から浮動小数点指数を取り込む。そして、この浮動小数点指数の値に基づいて複素数データをシフトさせ、その結果を出力する。
【０１５５】
レジスタ５０６は、シーケンス制御部１１９から浮動小数点指数を入力し、外部に対して出力する。
【０１５６】
続いて、図５に示した高速フーリエ変換処理装置の動作について説明する。
【０１５７】
まず、上述の第１の実施の形態の場合と同様にして、最初の被処理データが、実数部と虚数部とに分けられて、入力端子１０１，１０２から装置内に入力され、さらに、作業用ＲＡＭ１０７の実数データ記憶部１０７ｂおよび虚数データ記憶部１０７ｃにそれぞれ格納される。このとき、ブロック浮動小数点検出記憶部５０３は、この複素数データをセレクタ１０５，１０６から入力して浮動小数点指数を検出し、記憶する。
【０１５８】
続いて、入力端子１０１，１０２から２番目の被処理データが入力されて作業用ＲＡＭに格納されるときに、ブロック浮動小数点検出記憶部５０３は、この被処理データをセレクタ１０５，１０６から入力して浮動小数点指数を検出し、すでに記憶された検出値（ここでは１番目の被処理データの浮動小数点指数）と比較する。そして、既に記憶されている検出値の方が２番目の検出値よりも小さい場合は、記憶内容を変更することなく、既に記憶された検出値をそのまま保持する。一方、２番目の検出値の方が既に記憶されている検出値よりも小さい場合は、ブロック浮動小数点検出記憶部５０３の記憶内容を２番目の検出値に変更する。
【０１５９】
同様にして、３番目以降の被処理データについても、ブロック浮動小数点検出記憶部５０３で浮動小数点指数を検出し、これを、このブロック浮動小数点検出記憶部５０３内に既に記憶されている検出値と比較し、そのときの検出値の小さい方を記憶値とする。この実施の形態では、このような検出動作を、０番地〜５１１番地、５１２番地〜１０２３番地、１０２４番地〜１５３５番地および１５３６番地〜２０４７番地の４個のブロックについて、共通に行う。すなわち、このときの浮動小数点指数の検出では、後述する１回目の演算処理の時の各グループＡ，Ｂ，Ｃ，Ｄに対して共通の浮動小数点指数が決定される。
【０１６０】
これにより、作業用ＲＡＭ１０７への２０４８個の被処理データの格納が終了した時点では、各ブロックに対して共通に、浮動小数点指数の検出値の中でもっとも小さいものが、ブロック浮動小数点検出記憶部５０３内に記憶されていることになる。
【０１６１】
このようにして被処理データを作業用ＲＡＭ１０７に格納する動作が終了すると、続いて、これらの被処理データを用いて高速フーリエ変換処理を行う。
【０１６２】
この高速フーリエ変換処理は、上述の第１の実施例の場合と同様、以下のようにして、基数が４の演算処理を５回繰り返した後、基数が２の演算処理を１回行う。
【０１６３】
まず、１回目の演算処理（基数４）においては、作業用ＲＡＭ１０７に格納された２０４８個の複素数データを、第１の実施の形態の場合と同様の４グループＡ，Ｂ，Ｃ，Ｄに分割する（図４のステージ１参照）。そして、データパス５０１，５０２が、作業用ＲＡＭ１０７の０番地、５１２番地、１０２４番地および１５３６番地に格納された各複素数データとｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数を読み込むと同時に、ブロック浮動小数点検出記憶部５０３からグループＡ，Ｂ，Ｃ，Ｄに対して共通な浮動小数点指数の検出値を読み込む。そして、この検出値と上述の式（１）〜（４）とを用いて、ブロック浮動小数点による演算処理を行う。
【０１６４】
演算が終了すると、データパス５０１，５０２から演算結果ａi ，ｂi ，ｃi ，ｄi が出力され、第１の実施の形態の場合と同様にして作業用ＲＡＭ１０７に格納される。このときブロック浮動小数点検出記憶部５０３は、各演算結果ａi ，ｂi ，ｃi ，ｄi に対して浮動小数点指数を検出し、これらの検出結果をそのまま記憶する。
【０１６５】
続いて、作業用ＲＡＭ１０７の１番地、５１３番地、１０２５番地および１５３７番地の各複素数データについてもブロック浮動小数点による演算処理を行い、演算結果ａi ，ｂi ，ｃi ，ｄi を順次作業用ＲＡＭ１０７に格納する。また、この格納時に、ブロック浮動小数点検出記憶部５０３が、これらの演算結果ａi ，ｂi ，ｃi ，ｄi の浮動小数点指数を検出し、これらの検出値をそれぞれブロック浮動小数点検出記憶部５０３内に記憶された浮動小数点指数と比較する。このとき、演算結果ａi の浮動小数点指数を前回の演算結果ａi の浮動小数点指数と比較し、演算結果ｂi の浮動小数点指数を前回の演算結果ｂi の浮動小数点指数と比較するというように、それぞれ式（１）〜（４）の内の同じ式で得られた演算結果どうしで浮動小数点指数を比較する。そして、既に記憶されている浮動小数点指数が検出値よりも小さいときは、記憶内容を変更することなく、既に記憶された検出値をそのまま保持する。一方、検出値の方が既に記憶されている浮動小数点指数よりも小さい場合は、ブロック浮動小数点検出記憶部５０３の記憶内容をこの検出値に変更する。
【０１６６】
同様にして、他の番地の複素数データについても、ブロック浮動小数点による演算処理を行った後、演算結果ａi ，ｂi ，ｃi ，ｄi を作業用ＲＡＭ１０７に格納する際にブロック浮動小数点検出記憶部５０３で浮動小数点指数を検出し、これを、このブロック浮動小数点検出記憶部５０３内に既に記憶されている値と比較して、そのときの検出値の小さい方を記憶値とする。
【０１６７】
この実施の形態では、このような検出動作により、後述する２回目の演算処理の時の浮動小数点指数が決定される。
【０１６８】
このようにして１回目の演算処理と浮動小数点指数の検出とが終了すると、次に、以下のようにして２回目の演算処理（基数４）を行う。
【０１６９】
２回目の演算処理では、第１の実施の形態の場合と同様、データＲＡＭ１０７の各番地のうち、０番地〜５１１番地、５１２番地〜１０２３番地、１０２４番地〜１５３５番地および１５３６番地〜２０４７番地を、それぞれ、さらに４個のグループに分割する。すなわち、この２回目の演算処理では、データＲＡＭ１０７の各番地を合計１６個に分割する。
【０１７０】
そして、第１の実施の形態の場合と同様にして演算処理を行うとともに、演算結果を作業用ＲＡＭ１０７に格納する際にブロック浮動小数点検出記憶部５０３で浮動小数点指数を検出して、最も小さい検出値をブロック浮動小数点検出記憶部５０３内に記憶する。そして、このような検出動作により、後述する三回目の演算処理の時の各グループＡ，Ｂ，Ｃ，Ｄに対して共通の浮動小数点指数が決定される。
【０１７１】
さらに、３回目〜６回目以降の演算処理についても、上述した１回目および２回目の演算処理と同様にして、ブロック浮動小数点による演算処理を行う。
【０１７２】
なお、ここでは、ブロック浮動小数点検出を演算処理のときの各グループＡ，Ｂ，Ｃ，Ｄについて共通としたが、２回目以降の演算処理に用いるブロック浮動小数点指数を各ステージ毎に全サンプル（この例では２０４８個）に対して共通に持ってもよい。
【０１７３】
６回目の演算処理が終了すると、最後に、演算結果を外部に出力する。このときは、まず、シーケンス制御部１１９がブロック浮動小数点検出記憶部５０３から各サンプルに対する全ステージで用いた浮動小数点指数の累算値を入力し、出力ビットシフタ５０４，５０５に送る。そして、出力ビットシフタ５０４，５０５は、この浮動小数点指数に基づいて、作業用ＲＡＭ１０７から入力した複素数データをシフトさせた後、セレクタ１１１，１１２に対して出力する。これにより、データパス１０８，１０９の出力データが、レジスタ１１３，１１４を介して、出力端子１１５，１１６から外部へ出力される。
【０１７４】
また、必要であれば、出力ビットシフタ５０４，５０５によるシフトを行わずに複素数データを出力端子１１５，１１６から出力するとともに、最終的な浮動小数点指数をレジスタ５０６から外部に出力することもできる。
【０１７５】
次に、この実施の形態に係るデータパス１０８，１０９の他の構成例について、図１７を用いて説明する。同図において、図５或いは図１２と同じ符号を付した構成部は、これらの図面と同じものを示している。
【０１７６】
図１７に示したデータパス１０８，１０９は、シフタ１７０１，１７０２を備えている点で、図１２に示したデータパス１０８，１０９と異なる。このシフタ１７０１，１７０２は、ブロック浮動小数点検出記憶部５０３から、ブロック小数点指数を入力する。そして、このブロック小数点指数に基づいて、レジスタ１２１１，１２３１から取り込んだデータを所定ビットだけシフトさせる。これにより、ブロック浮動小数点検出記憶部５０３の制御に基づくブロック浮動小数点演算処理が可能となる。
【０１７７】
なお、他の構成部の動作は、上述の図１２に示したデータパス１０８，１０９と同様であるので、説明を省略する。
【０１７８】
図１７に示したようにデータパス１０８，１０９を構成することにより、簡単な回路で効率よく演算処理を行うことができる。
【０１７９】
以上説明したように、この実施の形態に係る高速フーリエ変換処理装置によれば、浮動小数点によるバタフライ演算を行う際に、基数が４の演算処理であっても基数が２の演算処理であっても高速で実行することが可能となる。すなわち、この実施の形態によれば、基数４または基数２のいずれの高速フーリエ変換アルゴリズムにも対応することができる、ブロック浮動小数点法による高速フーリエ変換処理装置を、安価に提供することができる。
【０１８０】
第３の実施の形態
次に、この発明の第３の実施の形態について、図６を用いて説明する。なお、この実施の形態は、第１の実施の形態にかかる高速フーリエ変換処理装置を２個並列に接続することによって、処理速度のさらなる向上を図ったものである。
【０１８１】
図６は、この実施の形態に係る高速フーリエ変換処理システムを概念的に示すブロック図である。
【０１８２】
同図において、プロセッサ６０１，６０２は、上述の第１の実施例で示した高速フーリエ変換処理装置である。かかるプロセッサ６０１，６０２の内部構成において、図１と同じ符号を付した構成成分は、それぞれ、図１の高速フーリエ変換処理装置の場合と同じものを示している。
【０１８３】
各プロセッサ６０１，６０２において、出力回路６１１は、図１のセレクタ１１１，１１２、レジスタ１１３，１１４および出力端子１１５，１１６を略記したものである。そして、この出力回路６１１は、それぞれ、出力選択回路６０６に接続されている。また、プロセッサ６０１のシーケンス制御部１１９から出力される状態表示信号は、ＮＯＴバッファ６０３を介して、プロセッサ６０２のシーケンス制御部１１９に状態制御信号として入力される。同様に、プロセッサ６０２のシーケンス制御部１１９から出力される状態表示信号は、ＮＯＴバッファ６０４を介して、プロセッサ６０１のシーケンス制御部１１９に状態制御信号として入力される。また、各プロセッサ６０１，６０２のシーケンス制御部１１９には、外部からシステム制御信号が入力される。
【０１８４】
また、各プロセッサ６０１，６０２において、セレクタ６１２は、図１のセレクタ１０５，１０６、レジスタ１０３，１０４および入力端子１０１，１０２を略記したものである。
【０１８５】
データ入力ポート６０５は、外部から被処理データを入力する。また、データ出力ポート６０７は、出力選択回路６０６から入力された処理後の複素数データを、外部に出力する。
【０１８６】
次に、図６に示した高速フーリエ変換処理システムの動作について説明する。
【０１８７】
まず、外部からのシステム制御信号がプロセッサ６０１を選択した状態で、Ｎ個（たとえばＮ＝２０４８）の被処理データがデータ入力ポート６０５に入力される。これにより、これらのＮ個の被処理データは、プロセッサ６０１に入力される。次に、外部からのシステム制御信号がプロセッサ６０２を選択した状態で、例えばＮ個の被処理データがデータ入力ポート６０５に入力される。これにより、これらの被処理データは、プロセッサ６０２に入力される。
【０１８８】
そして、２個のプロセッサ６０１，６０２が、上述の第１の実施の形態の場合と同様の演算処理を、それぞれ別個に行う。
【０１８９】
各プロセッサ６０１，６０２が演算処理を終了すると、処理後の複素数データが出力選択回路６０６を介して、データ出力ポート６０７から出力される。
【０１９０】
この場合、例えばプロセッサ６０１が複素数データを出力してしている最中は、このプロセッサ６０１のシーケンス制御部１１９が状態表示信号をオンする。この信号は、ＮＯＴゲート６０３を介し、状態制御信号としてプロセッサ６０２のシーケンス制御部１１９に入力される。これにより、データ出力ポート６０７はプロセッサ６０１に占有され、プロセッサ６０２については処理後の複素数データの出力が禁止される。そして、プロセッサ６０１による複素数データの出力が終了すると、このプロセッサ６０１のシーケンス制御部１１９が出力する状態表示信号（すなわちプロセッサ６０２のシーケンス制御部１１９が入力する状態制御信号）がオフし、プロセッサ６０２に対する複素数データ出力の禁止が解除される。これにより、プロセッサ６０１が処理後の複素数データを出力している最中にプロセッサ６０２による複素数データの出力が行われてしまうことを防止することができる。
【０１９１】
なお、プロセッサ６０２にデータ出力ポート６０７を占有させる際の動作も同様である。
【０１９２】
このように、この実施の形態の高速フーリエ変換処理システムによれば、この発明に係る高速フーリエ変換処理装置（すなわちプロセッサ６０１，６０２）を並列に２個接続して２系統の被処理データ群を同時に処理することとしたので、フーリエ変換処理の処理速度をいっそう向上させることができる。
【０１９３】
なお、この実施の形態では２個の高速フーリエ変換処理装置を並列接続することとしたが、３個以上の高速フーリエ変換処理装置を並列することもできることはもちろんである。この場合には、処理速度のさらなる向上を図ることができる。
【０１９４】
また、この実施の形態に係る高速フーリエ変換処理システムでは、上述の第１の実施の形態に係る高速フーリエ変換処理装置を接続することとしたが、第２の実施の形態に係る高速フーリエ変換処理装置を並列接続してもよいことも、もちろんである。
【０１９５】
第４の実施の形態
次に、この発明の第４の実施の形態について、図７〜図１０を用いて説明する。なお、この実施の形態は、第１の実施の形態にかかる高速フーリエ変換処理装置であって処理が可能なサンプル点数の最大値がＮ（この実施の形態ではＮ＝４０９６とする）を２個並列に接続することによって、サンプル点数が２Ｎ（すなわち８１９２）の高速フーリエ変換処理を行うことができる高速フーリエ変換処理システムに関するものである。
【０１９６】
図７は、この実施の形態に係る高速フーリエ変換処理システムを概念的に示すブロック図である。
【０１９７】
同図において、マスタモード用プロセッサ７０１およびスレーブモード用プロセッサ７０２は、ともに、上述の第１の実施例で示した高速フーリエ変換処理装置からなる。かかるプロセッサ７０１，７０２の内部構成において、図１と同じ符号を付した構成成分は、それぞれ、図１の高速フーリエ変換処理装置の場合と同じものを示している。
【０１９８】
各プロセッサ７０１，７０２において、出力回路７１１は、図１のセレクタ１１１，１１２、レジスタ１１３，１１４および出力端子１１５，１１６を略記したものである。そして、この出力回路７１１は、それぞれ、出力選択回路７０６の入力端子に接続されている。
【０１９９】
また、各プロセッサ７０１，７０２において、セレクタ７１２は図１のセレクタ１０５，１０６、レジスタ１０３，１０４および入力端子１０１，１０２を略記したものである。
【０２００】
マスタモード用プロセッサ７０１のセレクタ７１２は、マスタモード用入力選択回路７１３の出力端子に接続されている。そして、このマスタモード用入力選択回路７１３の入力端子からは、外部から入力された複素数データ或いはスレーブモード用プロセッサ７０２が出力した複素数データが選択的に入力される。
【０２０１】
同様に、スレーブモード用プロセッサ７０２のセレクタ７１２は、スレーブモード用入力選択回路７１４の出力端子に接続されており、このマスタモード用入力選択回路７１４の入力端子からは外部から入力された複素数データ或いはマスタモード用プロセッサ７０１が出力した複素数データが選択的に入力される。
【０２０２】
また、マスタモード用プロセッサ７０１のシーケンス制御部１１９から出力される状態表示信号は、ＮＯＴバッファ７０３を介して、スレーブモード用プロセッサ７０２のシーケンス制御部１１９に、状態制御信号として入力される。同様に、スレーブモード用プロセッサ７０２のシーケンス制御部１１９から出力される状態表示信号は、ＮＯＴバッファ７０４を介して、マスタモード用プロセッサ７０１のシーケンス制御部１１９に、状態制御信号として入力される。また、各プロセッサ７０１，７０２のシーケンス制御部１１９には、外部からシステム制御信号が入力される。
【０２０３】
データ入力ポート７０５は、外部から被処理データを入力する。また、データ出力ポート７０７は、出力選択回路７０６から入力された処理後の複素数データを、外部に出力する。
【０２０４】
図８は、図７に示した作業用ＲＡＭ１０７の内部構成を示すブロック図である。同図において、図３と同じ符号を付した構成部は、それぞれ図３と同じものを示している。図８からわかるように、この作業用ＲＡＭ１０７は、デコーダ３３３を備えている点で、図３の場合と異なる。このデコーダ３３３は、外部から入力されたアドレスデータの上位２ビットを変換して、４個のメモリアレイ部３０１〜３０４のいずれかを指定する信号を出力する。
【０２０５】
次に、図７および図８に示した高速フーリエ変換処理システムの動作について説明する。
【０２０６】
まず、８１９２点の被処理データのうち、最初の１０２４点が、データ入力ポート７０５およびマスタモード用入力選択回路７１３を介して、マスタモード用プロセッサ７０１内に入力される。そして、図９（Ａ）に示したように、これらの被処理データが、マスタモード用プロセッサ７０１の作業用ＲＡＭ１０７の０番地〜１０２３番地に格納される。続いて、次の１０２４点の被処理データが、データ入力ポート７０５およびスレーブモード用入力選択回路７１４を介して、スレーブモード用プロセッサ７０２内に入力され、作業用ＲＡＭ１０７の０番地〜１０２３番地に格納される。以下同様にして、１０２４点ずつの被処理データが、各プロセッサ７０１，７０２の作業用ＲＡＭ１０７に交互に格納される。そして、これにより、図９（Ａ）に示したような番地割付で、８１９２点の被処理データを格納することができる。なお、このような番地割付の各アドレス領域（すなわち各プロセッサ７０１，７０２に設けられた作業用ＲＡＭ１０７の０番地〜１０２３番地、１０２４番地〜２０４７番地、２０４８番地〜３０７１番地および３０７２番地〜４０９５番地）は、図８に示した各メモリアレイ３０１〜３０４に対応している。
【０２０７】
各プロセッサ７０１，７０２への複素数データの格納が終了すると、続いて、これらの複素数データを用いて高速フーリエ変換処理を行う。
【０２０８】
なお、この実施の形態では、サンプル点数が８１９２（＝４6 ×２）なので、以下に説明するように、基数が４の演算処理を６回繰り返した後、基数が２の演算処理を１回行う。
【０２０９】
まず、１回目の演算処理（基数４）について説明する。
【０２１０】
この演算処理では、各プロセッサ７０１，７０２ごとに、作業用ＲＡＭ１０７に格納された複素数データを、格納されたアドレスにしたがって４個のグループに分けて扱う。ここでは、図９（Ａ）に示したように、マスタモード用プロセッサ７０１に設けられた作業用ＲＡＭ１０７の０番地から１０２３番地までに格納された複素数データ（サンプル点番号では０〜１０２３）をグループＡ1 、１０２４番地から２０４７番地までに格納された複素数データ（サンプル点番号では２０４８〜３０７１）をグループＢ1 、２０４８番地から３０７１番地までに格納された複素数データ（サンプル点番号では４０９６〜５１１９）をグループＣ1 、３０７２番地から４０９５番地までに格納された複素数データ（サンプル点番号では６１４４〜７１６７）をグループＤ1 とする。また、スレーブモード用プロセッサ７０２に設けられた作業用ＲＡＭ１０７の０番地から１０２３番地までに格納された複素数データ（サンプル点番号では１０２４〜２０４７）をグループＡ2 、１０２４番地から２０４７番地までに格納された複素数データ（サンプル点番号では３０７２〜４０９５）をグループＢ2 、２０４８番地から３０７１番地までに格納された複素数データ（サンプル点番号では５１２０〜６１４３）をグループＣ2 、３０７２番地から４０９５番地までに格納された複素数データ（サンプル点番号では７１６８〜８１９１）をグループＤ2 とする。
【０２１１】
最初に、図１０の第１ステージに示したように、マスタモード用プロセッサ７０１の第１のデータパス１０８および第２のデータパス１０９は、グループＡ1 ，Ｂ1 ，Ｃ1 ，Ｄ1 のそれぞれ最初の複素数データ（すなわち、０番地、１０２４番地、２０４８番地および３０７２番地の複素数データ）を作業用ＲＡＭ１０７から取り込み、上述の第１の実施の形態の場合と同様にして、式（１）〜（４）を用いた演算処理を行い、演算結果ａi ，ｂi ，ｃi ，ｄi を得る。続いて、これらの演算結果ａi ，ｂi ，ｃi ，ｄi が、データパス１０８，１０９から出力されて、作業用ＲＡＭ１０７に格納される。このとき、グループＡに属する番地（ここでは０番地）には式（１）の演算結果ａi が、グループＢに属する番地（ここでは１０２４番地）には式（３）の演算結果ｂi が、グループＣに属する番地（ここでは２０４８番地）には式（２）の演算結果ｃi が、グループＤに属する番地（ここでは３０７２番地）には式（４）の演算結果ｄi が、それぞれ格納される。
【０２１２】
また、これと同時に、スレーブモード用プロセッサ７０２の第１のデータパス１０８および第２のデータパス１０９は、グループＡ2 ，Ｂ2 ，Ｃ2 ，Ｄ2 のそれぞれ最初の複素数データ（すなわち、０番地、１０２４番地、２０４８番地および３０７２番地の複素数データ）を作業用ＲＡＭ１０７から取り込んで式（１）〜（４）を用いた演算処理を行い、演算結果ａi ，ｂi ，ｃi ，ｄi を得る。そして、これらの演算結果が、マスタモード用プロセッサ７０１の場合と同様にして、スレーブモード用プロセッサ７０２内の作業用ＲＡＭ１０７に格納される。
【０２１３】
続いて、各プロセッサ７０１，７０２は、１番地、１０２５番地、２０４９番地および３０７３番地の複素数データを用いて同様の演算処理を行ない、以下同様にしてすべての番地の複素数データについて順次演算処理を行う。
【０２１４】
このようにして１回目の演算処理が終了すると、入力選択回路７１３，７１４を用いて、マスタモード用プロセッサ７０１およびスレーブモード用プロセッサ７０２の間でデータの入れ替えを行う。すなわち、図９（Ａ）に示したように、マスタモード用プロセッサ７０１に設けられた作業用ＲＡＭ１０７の２０４８番地から３０７１番地までに格納された複素数データ（すなわちマスタモード用プロセッサ７０１の演算結果ｃi ）とスレーブモード用プロセッサ７０２に設けられた作業用ＲＡＭ１０７の０番地から１０２３番地に格納された複素数データ（すなわちスレーブモード用プロセッサ７０２の演算結果ａi ）とを入れ換え、さらに、マスタモード用プロセッサ７０１に設けられた作業用ＲＡＭ１０７の３０７２番地から４０９５番地までに格納された複素数データ（すなわちマスタモード用プロセッサ７０１の演算結果ｄi ）とスレーブモード用プロセッサ７０２に設けられた作業用ＲＡＭ１０７の１０２４番地から２０４７番地に格納された複素数データ（すなわちスレーブモード用プロセッサ７０２の演算結果ｂi ）とを入れ換える。なお、このデータの入れ替えは、各プロセッサ７０１，７０２の出力端子１１５，１１６から出力された複素数データを、入力選択回路７１４，７１３を介して他方のプロセッサに取り込むことによって行われる。これにより、図９（Ｂ）に示したような、複素数データの番地割付を得ることができる。
【０２１５】
このとき、図９（Ｂ）に示したように、各プロセッサ７０１，７０２の作業用ＲＡＭ１０７に格納された複素数データは、サンプル点番号の小さい順には並んでいない。すなわち、マスタモード用プロセッサ７０１に設けられた作業用ＲＡＭ１０７の１０２４番地〜２０４７番地にはサンプル点番号２０４８〜３０７１の複素数データが格納され、作業用ＲＡＭ１０７の２０４８番地〜３０７１番地にはサンプル点番号１０２４〜２０４７の複素数データが格納されている。また、スレーブモード用プロセッサ７０２に設けられた作業用ＲＡＭ１０７の１０２４番地〜２０４７番地にはサンプル点番号６１４４〜７１６７の複素数データが格納され、作業用ＲＡＭ１０７の２０４８番地〜３０７１番地にはサンプル点番号５１２０〜６１４３の複素数データが格納されている。このため、この実施の形態では、各プロセッサ７０１，７０２の作業用ＲＡＭ１０７に格納された複素数データを、サンプル点番号の小さい順に並べ替える。実際には、この実施の形態では、この入れ替えは、アドレス用のデコーダ３３３（図８参照）内のデコード用データの変更によって行なう。すなわち、マスタモード用プロセッサ７０１に設けられた作業用ＲＡＭ１０７の１０２４番地〜２０４７番地と２０４８番地〜３０７１番地でメモリ番地のバイナリーコードの上位２ビットを入れ替え、同様に、スレーブモード用プロセッサ７０２に設けられた作業用ＲＡＭ１０７の１０２４番地〜２０４７番地と２０４８番地〜３０７１番地でメモリ番地のバイナリーコードの上位２ビットを入れ替える。これにより、データ転送を行わずに、実質的にデータを入れ換えることができる。したがって、処理時間の高速化を図ることができる。但し、このようにデコーダ３３３内のデコード用データを変更するのではなく、通常のデータ転送を行ってもよいことはもちろんである。
【０２１６】
以上説明したようにしてデータの入れ替えを行うことにより、２回目以降の演算処理を、各プロセッサ７０１，７０２ごとに別個に行うことができる。
【０２１７】
２回目の演算処理は、図１０のステージ２に示したように、各プロセッサ７０１，７０２において、データＲＡＭ１０７の各番地を、０番地〜５１１番地、５１２番地〜１０２３番地、１０２４番地〜１５３５番地および１５３６番地〜２０４７番地の組み合わせと２０４８番地〜２５５９番地、２５６０番地〜３０７１番地、３０７２番地〜３５８３番地、３５８４番地〜４０９５番地に分割して演算処理を行う。
【０２１８】
さらに、３回目〜７回目の演算処理についても、図１０のステージ３〜ステージ７に示したように、第１の実施の形態の２回目〜６回目の演算処理と同様の演算処理（但し、サンプル点数は異なる）を行う。
【０２１９】
そして、上述の第１の実施の形態の場合と同様にして、演算結果を外部に出力する。
【０２２０】
このように、この実施の形態に係る高速フーリエ変換処理システムでは、この発明に係る高速フーリエ変換処理装置であってサンプル点数の最大がＮのものを２個並列に接続することによって、サンプル点数が２Ｎの高速フーリエ変換処理を行うことができる。したがって、処理が可能なサンプル点数の最大値を安価に増加させることができる。
【０２２１】
また、このシステムを少数の外付部品の追加によって構築することができるので、システムの規模を小さくすることができる。
【０２２２】
また、この実施の形態では２個の高速フーリエ変換処理装置を並列接続することとしたが、４個以上の高速フーリエ変換処理装置を並列することもできることはもちろんである。この場合には、処理が可能なサンプル点数の最大値をさらに多くすることができる。
【０２２３】
第５の実施の形態
次に、この発明の第５の実施の形態について、図１１を用いて説明する。なお、この実施の形態は、処理が可能なサンプル点数の最大値がＮ（この実施の形態ではＮ＝４０９６とする）を２個並列に接続することによってサンプル点数が２Ｎ（すなわち８１９２点）の高速フーリエ変換処理を行うことができる高速フーリエ変換処理システムに関するものである点では上述の第４の実施の形態と同様であるが、第２の実施の形態と同様のブロック浮動小数点演算処理機能を有する点で第４の実施の形態と異なる。
【０２２４】
図１１は、この実施の形態に係る高速フーリエ変換処理システムを概念的に示すブロック図である。
【０２２５】
同図において、マスタモード用プロセッサ１００１およびスレーブモード用プロセッサ１００２は、ともに、上述の第２の実施例で示した高速フーリエ変換処理装置からなる。かかるプロセッサ１００１，１００２の内部構成において、図５と同じ符号を付した構成成分は、それぞれ、図５の高速フーリエ変換処理装置の場合と同じものを示している。
【０２２６】
各プロセッサ１００１，１００２において、出力回路１０１１は図５のセレクタ１１１，１１２、レジスタ１１３，１１４および出力端子１１５，１１６を略記したものである。そして、この出力回路１０１１は、それぞれ、出力選択回路１００６の入力端子に接続されている。
【０２２７】
また、各プロセッサ１００１，１００２において、セレクタ１０１２は、図５のセレクタ１０５，１０６および入力端子１０１，１０２を略記したものである。
【０２２８】
マスタモード用プロセッサ１００１のセレクタ１０１２は、マスタモード用入力選択回路１０１３の出力端子に接続されている。また、このマスタモード用入力選択回路１０１３の入力端子からは、外部から入力された複素数データおよびスレーブモード用プロセッサ１００２が出力した複素数データが入力される。
【０２２９】
同様に、スレーブモード用プロセッサ１００２のセレクタ１０１２は、スレーブモード用入力選択回路１０１４の出力端子に接続されており、このスレーブモード用入力選択回路１０１４の入力端子からは外部から入力された複素数データおよびマスタモード用プロセッサ１００１が出力した複素数データが入力される。
【０２３０】
また、プロセッサ１００１のシーケンス制御部１１９から出力される状態表示信号は、ＮＯＴバッファ１００３を介して、プロセッサ１００２のシーケンス制御部１１９に状態制御信号として入力される。同様に、プロセッサ１００２のシーケンス制御部１１９から出力される状態表示信号は、ＮＯＴバッファ１００４を介して、プロセッサ１００１のシーケンス制御部１１９に状態制御信号として入力される。また、各プロセッサ１００１，１００２のシーケンス制御部１１９には、外部からシステム制御信号が入力される。
【０２３１】
データ入力ポート１００５は、外部から被処理データを入力する。また、データ出力ポート１００７は、出力選択回路１００６から入力された処理後の複素数データを、外部に出力する。
【０２３２】
次に、図１１に示した高速フーリエ変換処理システムの動作について説明する。
【０２３３】
まず、８１９２点の被処理データのうち、最初の１０２４点の被処理データが、データ入力ポート１００５およびマスタモード用入力選択回路１０１３を介して、マスタモード用プロセッサ１００１内に入力される。そして、上述の第１の実施例の場合と同様にして、これらの複素数データが、マスタモード用プロセッサ１００１の作業用ＲＡＭ１０７に格納される。このとき、マスタモード用プロセッサ１００１のブロック浮動小数点検出記憶部５０３は、この複素数データをセレクタ１０１２から入力して第２の実施の形態と同様の浮動小数点指数検出を行い、記憶する。なお、これと同時に、スレーブモード用プロセッサ１００２のブロック浮動小数点検出記憶部５０３も自動的に動作して浮動小数点指数を検出するが、内部への記憶は行わない。
【０２３４】
続いて、次の１０２４点の被処理データが、データ入力ポート１００５およびスレーブモード用入力選択回路１０１４を介して、スレーブモード用プロセッサ１００２内に入力され、作業用ＲＡＭ１０７に格納される。このときも、スレーブモード用プロセッサ１００２のブロック浮動小数点検出記憶部５０３が、この複素数データを入力して浮動小数点指数を検出し、記憶する。なお、上述のマスタモード用プロセッサ１００１の場合と同様に、マスタモード用プロセッサ１００１のブロック浮動小数点検出記憶部５０３も浮動小数点指数を検出するが、内部への記憶は行わない。
【０２３５】
このように、この実施の形態では各プロセッサ１００１，１００２に設けられたブロック浮動小数点検出記憶部５０３は別個に動作するが、結果としては整合性のとれた浮動小数点指数の検出を行うことができる。
【０２３６】
以下、残りの被処理データも、上述の第４の実施の形態と同様にして、図９に示したような番地割付で両プロセッサ１００１，１００２の作業用ＲＡＭ１０７に格納される。
【０２３７】
各プロセッサ１００１，１００２への複素数データの格納が終了すると、続いて、これらの複素数データを用いて高速フーリエ変換処理を行う。
【０２３８】
なお、この実施の形態では、基数が４の演算処理を６回繰り返した後、基数が２の演算処理を１回行う。また、以下に説明するように、演算処理の動作は、ブロック浮動小数点演算処理以外については、上述の第４の実施の形態の場合と同じである。
【０２３９】
まず、１回目の演算処理（基数４）について説明する。
【０２４０】
この演算処理では、各プロセッサ１００１，１００２ごとに、作業用ＲＡＭ１０７に格納された複素数データを、格納されたアドレスにしたがって４個のグループに分けて扱う。ここでは、図９に示したように、マスタモード用プロセッサ１００１に設けられた作業用ＲＡＭ１０７の０番地から１０２３番地までに格納された複素数データ（サンプル点番号では０〜１０２３）をグループＡ1 、１０２４番地から２０４７番地までに格納された複素数データ（サンプル点番号では２０４８〜３０７１）をグループＢ1 、２０４８番地から３０７１番地までに格納された複素数データ（サンプル点番号では４０９６〜５１１９）をグループＣ1 、３０７２番地から４０９５番地までに格納された複素数データ（サンプル点番号では６１１４〜７１６７）をグループＤ1 とする。また、スレーブモード用プロセッサ１００２に設けられた作業用ＲＡＭ１０７の０番地から１０２３番地までに格納された複素数データ（サンプル点番号では１０２４〜２０４７）をグループＡ2 、１０２４番地から２０４７番地までに格納された複素数データ（サンプル点番号では３０７２〜４０９５）をグループＢ2 、２０４８番地から３０７１番地までに格納された複素数データ（サンプル点番号では５１２０〜６１４３）をグループＣ2 、３０７２番地から４０９５番地までに格納された複素数データ（サンプル点番号では７１６８〜８１９１）をグループＤ2 とする。
【０２４１】
最初に、マスタモード用プロセッサ１００１の第１のデータパス５０１および第２のデータパス５０２は、グループＡ1 ，Ｂ1 ，Ｃ1 ，Ｄ1 のそれぞれ最初の複素数データ（すなわち、０番地、１０２４番地、２０４８番地および３０７２番地の複素数データ）とｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数を読み込むと同時に、ブロック浮動小数点検出記憶部５０３から最初のブロックの浮動小数点指数の検出値を読み込む。そして、この検出値と上述の式（１）〜（４）とを用いて、ブロック浮動小数点による演算処理を行う。続いて、この演算結果ａi ，ｂi ，ｃi ，ｄi が、作業用ＲＡＭ１０７に格納される。このとき、グループＡに属する番地（ここでは０番地）には式（１）の演算結果ａi が、グループＢに属する番地（ここでは１０２４番地）には式（３）の演算結果ｂi が、グループＣに属する番地（ここでは２０４８番地）には式（２）の演算結果ｃi が、グループＤに属する番地（ここでは３０７２番地）には式（４）の演算結果ｄi が、それぞれ格納される。また、このとき、マスタモード用プロセッサ１００１内のブロック浮動小数点検出記憶部５０３は、演算結果ａi ，ｂi の浮動小数点指数検出のみを行い、演算結果ｃi ，ｄi についての浮動小数点指数検出は行わない。そして、これらの検出結果は、ブロック浮動小数点検出記憶部５０３内に、そのまま記憶される。
【０２４２】
また、これと同時に、スレーブモード用プロセッサ１００２の第１のデータパス１０８および第２のデータパス１０９は、グループＡ2 ，Ｂ2 ，Ｃ2 ，Ｄ2 のそれぞれ最初の複素数データ（すなわち、０番地、１０２４番地、２０４８番地および３０７２番地の複素数データ）を作業用ＲＡＭ１０７から取り込んで式（１）〜（４）を用いた演算処理を行い、演算結果ａi ，ｂi ，ｃi ，ｄi を得る。そして、これらの演算結果が、マスタモード用プロセッサ１００１の場合と同様にして、スレーブモード用プロセッサ１００２内の作業用ＲＡＭ１０７に格納される。このとき、スレーブモード用プロセッサ１００２内のブロック浮動小数点検出記憶部５０３は、演算結果ｃi ，ｄi の浮動小数点指数検出のみを行い、演算結果ａi ，ｂi についての浮動小数点指数検出は行わない。そして、これらの検出結果は、ブロック浮動小数点検出記憶部５０３内に、そのまま記憶される。
【０２４３】
続いて、１番地、１０２５番地、２０４９番地および３０７３番地の複素数データを用いて同様の演算処理を行ない、さらに以下同様にしてすべての番地の複素数データについて順次演算処理を行う。
【０２４４】
このようにして１回目の演算処理が終了すると、入力選択回路１０１３，１０１４を用いて、マスタモード用プロセッサ１００１およびスレーブモード用プロセッサ１００２の間でデータの入れ替えを行う。すなわち、マスタモード用プロセッサ１００１に設けられた作業用ＲＡＭ１０７の２０４８番地から３０７１番地までに格納された複素数データ（すなわちマスタモード用プロセッサ１００１の演算結果ｃi ）とスレーブモード用プロセッサ１００２に設けられた作業用ＲＡＭ１０７の０番地から１０２３番地に格納された複素数データ（すなわちスレーブモード用プロセッサ１００２の演算結果ａi ）とを入れ換え、さらに、マスタモード用プロセッサ１００１に設けられた作業用ＲＡＭ１０７の３０７２番地から４０９５番地までに格納された複素数データ（すなわちマスタモード用プロセッサ１００１の演算結果ｄi ）とスレーブモード用プロセッサ１００２に設けられた作業用ＲＡＭ１０７の１０２４番地から２０４７番地に格納された複素数データ（すなわちスレーブモード用プロセッサ１００２の演算結果ｂi ）とを入れ換える。このとき、この実施の形態では、入れ替えを行う各複素数データのブロック浮動小数点指数の検出を行う。これにより、１回目の演算処理で得られた演算結果のすべてについてのブロック浮動小数点指数検出が行われたことになる。
【０２４５】
その後、上述の第４の実施の形態の場合と同様にして、例えば作業用ＲＡＭに設けられたアドレス用デコーダのデコード用データを変更することなどにより、各プロセッサ１００１、１００２内の作業用ＲＡＭの１０２４番地〜２０４７番地と２０４８番地〜３０７１番地の入れ換えを行う。
【０２４６】
データの入れ替えが終了すると、次に、２回目の演算処理（基数４）を、各プロセッサ１００１，１００２ごとに独立させて行う。
【０２４７】
２回目の演算処理は、第２の実施の形態における１回目の演算処理の場合と同様であり、各プロセッサ１００１，１００２において、データＲＡＭ１０７の各番地を、図９に示したような番地割付で４分割してブロック浮動小数点による演算処理を行う。
【０２４８】
さらに、３回目〜６回目以降の演算処理についても、第２の実施の形態の２回目〜６回目の演算処理と同様の演算処理を行う。
【０２４９】
そして、上述の第２の実施の形態の場合と同様にして、演算結果を外部に出力する。
【０２５０】
このように、この実施の形態に係る高速フーリエ変換処理システムでは、ブロック浮動小数点演算が可能な高速フーリエ変換処理装置であってサンプル点数の最大がＮのものを２個並列に接続することによって、サンプル点数が２Ｎの高速フーリエ変換処理を、ブロック浮動小数点法を用いて行うことができる。
【０２５１】
また、この実施の形態においても、４個以上の高速フーリエ変換処理装置を並列することもできることはもちろんである。
【０２５２】
なお、この実施の形態では１回目〜７回目のすべての演算処理でブロック浮動小数点法を用いることとしたが、例えば、１回目の演算処理は固定小数点法を用いて行い、２回目以降の演算処理をブロック浮動小数点法で行うこととしてもよい。この場合には、最初に外部データを読み込む際には各プロセッサ１００１，１００２に設けられたブロック浮動小数点検出記憶部５０３の検出動作を停止させ、検出を行わない。そして、１回目の演算処理は第１の実施の形態と同様の固定小数点法で行い、演算結果を格納する際および格納後に各プロセッサ１００１，１００２間で複素数データを入れ替える際に浮動小数点指数の検出を行う。そして、２回目以降の演算処理では、第２の実施の形態で説明したような浮動小数点指数を用いた演算処理を行えばよい。
【０２５３】
このような方法によっても、この実施の形態に係る高速フーリエ変換処理システムの効果を得ることが可能である。
【０２５４】
第６の実施の形態
次に、この発明の第６の実施の形態について、図１８を用いて説明する。なお、この実施の形態に係る高速フーリエ変換処理装置は、データパスをさらに２個設けた点と、転置用ＲＡＭを設けた点で、上述の第１の実施の形態と異なる。
【０２５５】
この実施の形態では、サンプル点数が２０４８点の場合を例にとって説明する。
【０２５６】
図１８は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【０２５７】
同図において、図１と同じ符号を付した構成部は、それぞれ、図１の場合と同じものを示している。
【０２５８】
また、同図において、出力回路１８０１は、図１にセレクタ１１１，１１２、レジスタ１１３，１１４および出力端子１１５，１１６を略記したものである。さらに、セレクタ１８０２は、図１のセレクタ１０５，１０６、レジスタ１０３，１０４および入力ポート１０１，１０２を略記したものである。
【０２５９】
第３のデータパス１８０３は、第１のデータパス１０８と同じ内部構造、すなわち図２（Ａ）に示した構造または図１２に示した構造のいずれかを使用することができる。同様に、第４のデータパス１８０４は、第２のデータパス１０９と同じ内部構造、すなわち図２（Ａ）に示した構造または図１２に示した構造のいずれかを使用することができる。
【０２６０】
転置用ＲＡＭ１８０５は、第１のデータパス１０８および第２のデータパス１０９で算出された複素数データａi 〜ｄi を順次取り込んで一時的に記憶する。そして、後述するようにして、これらの複素数データによって形成される４行４列の行列を転置して１列ずつ出力する。
【０２６１】
続いて、図１８に示した高速フーリエ変換処理装置の動作について、図１９を用いて説明する。
【０２６２】
まず、上述の第１の実施の形態の場合と同様にして、２０４８点の被処理データが、実数部と虚数部とに分けられて、セレクタ１８０２から作業用ＲＡＭ１０７に順次格納される。
【０２６３】
被処理データを作業用ＲＡＭ１０７に格納する動作が終了すると、続いて、これらの被処理データを用いて高速フーリエ変換処理を行う。
【０２６４】
この実施の形態では、以下に説明するようにして、１回目の演算処理と２回目の演算処理とを同時に行う。
【０２６５】
この演算処理では、作業用ＲＡＭ１０７に格納された２０４８個の複素数データが、第１の実施の形態の場合と同様の４グループＡ，Ｂ，Ｃ，Ｄに分割され、さらに、各グループＡ，Ｂ，Ｃ，Ｄがそれぞれ４グループＡG1〜ＡG4，ＢG1〜ＢG4，ＣG1〜ＣG4，ＤG1〜ＤG4に４分割される。すなわち、この実施の形態では、作業用ＲＡＭ１０７に格納された２０４８を最初に１６分割しており、この点で上述の各実施の形態と異なる。
【０２６６】
そして、第１のデータパス１０８および第２のデータパス１０９が、作業用ＲＡＭ１０７の０番地、５１２番地、１０２４番地および１５３６番地に格納された各複素数データ（すなわちグループＡG1，ＢG1，ＣG1，ＤG1の最初の複素数データ）とｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数を読み込む。そして、０番地のデータをＡi 、５１２番地のデータをＢi 、１０２４番地のデータをＣi １５３６番地のデータをＤi として、上述の式（１）〜（４）の演算を行う。
【０２６７】
演算が終了すると、第１のデータパス１０８および第２のデータパス１０９から演算結果ａ1 ，ｂ1 ，ｃ1 ，ｄ1 が出力される。この実施の形態では、これらの演算結果は、転置用ＲＡＭ１８０５に格納される。
【０２６８】
続いて、第１のデータパス１０８および第２のデータパス１０９は、作業用ＲＡＭ１０７の１２８番地、６４０番地、１１５２番地および１６４４番地の各複素数データ（すなわちグループＡG2，ＢG2，ＣG2，ＤG2の最初の複素数データ）をデータをＡi ，Ｂi ，Ｃi ，Ｄi として読み込んで、上式（１）〜（４）を用いた演算を行い、演算結果ａ2 ，ｂ2 ，ｃ2 ，ｄ2 を転置用ＲＡＭ１８０５に格納する。同様にして、グループＡG3，ＢG3，ＣG3，ＤG3の最初の複素数データおよびグループＡG4，ＢG4，ＣG4，ＤG4の最初の複素数データについても、上式（１）〜（４）を用いた演算を順次行い、演算結果ａ3 ，ｂ3 ，ｃ3 ，ｄ3 およびａ4 ，ｂ4 ，ｃ4 ，ｄ4 を順次転置用ＲＡＭ１８０５に格納する。
【０２６９】
その後、第１のデータパス１０８および第２のデータパス１０９は、各グループＡG1〜ＡG4，ＢG1〜ＢG4，ＣG1〜ＣG4，ＤG1〜ＤG4の２番目以降の複素数データについても、同様の演算を行い、演算結果を順次転置用ＲＡＭ１８０５に格納していく。
【０２７０】
転置用ＲＡＭ１８０５は、図１９に示したように、これらの演算結果を４行４列の行列に分割し、これを転置して（すなわち行と列とを入れ替えて）、１列ずつ出力する。
【０２７１】
第３のデータパス１８０３および第４のデータパス１８０４は、転置用ＲＡＭ１８０５から入力した複素数データを読み込む。そして、１行目のデータをＡi ２行目のデータをＢi 、３行目のデータをＣi ４行目のデータをＤi として、上式（１）〜（４）の演算を行う。例えば、最初の演算の場合であれば、ａ1 →Ａi ，ａ2 →Ｂi ，ａ3 →Ｃi ，ａ4 →Ｄi として、上式（１）〜（４）の演算を行う。そして、この演算によって得られた複素数データａi ，ｂi ，ｃi ，ｄi が、作業用ＲＡＭ１０７に格納される。このとき、例えば最初の演算の場合であれば、グループＡG1に属する番地（ここでは０番地）には式（１）の演算結果ａi が、グループＡG2に属する番地（ここでは１２８番地）には式（３）の演算結果ｂi が、グループＡG3に属する番地（ここでは２５６番地）には式（２）の演算結果ｃi が、グループＡG4に属する番地（ここでは３８４番地）には式（４）の演算結果ｄi が、それぞれ格納される。
【０２７２】
また、第３のデータパス１８０３および第４のデータパス１８０４の２回目の演算では、ｂ1 →Ａi ，ｂ2 →Ｂi ，ｂ3 →Ｃi ，ｂ4 →Ｄi として上式（１）〜（４）の演算が行われ、演算結果が作業用ＲＡＭ１０７に格納される。このとき、グループＢG1に属する番地（ここでは５１２番地）には式（１）の演算結果ａi が、グループＢG2に属する番地（ここでは６４０番地）には式（３）の演算結果ｂi が、グループＢG3に属する番地（ここでは７６８番地）には式（２）の演算結果ｃi が、グループＢG4に属する番地（ここでは８９６番地）には式（４）の演算結果ｄi が、それぞれ格納される。
【０２７３】
さらに、転置用ＲＡＭ１８０５から入力された複素数データｃ1 〜ｃ4 ，ｄ1 〜ｄ4 についても上式（１）〜（４）の演算が順次行われ、各演算結果がグループＣG1〜ＣG4，ＤG1〜ＤG4の最初の番地に格納される。
【０２７４】
以下同様にして、第３のデータパス１８０３および第４のデータパス１８０４は、転置用ＲＡＭ１８０５から入力したすべての複素数データについての演算を行い、作業用ＲＡＭ１０７に順次格納する。
【０２７５】
このように、この実施の形態では、作業用ＲＡＭ１０７を４分割して得られた各グループＡ，Ｂ，Ｃ，Ｄをさらにそれぞれ４分割してグループＡG1〜ＡG4，ＢG1〜ＢG4，ＣG1〜ＣG4，ＤG1〜ＤG4を得ることとし、グループＡG1，ＢG1，ＣG1，ＤG1の被処理データを用いた演算、グループＡG2，ＢG2，ＣG2，ＤG2の被処理データを用いた演算、グループＡG3，ＢG3，ＣG3，ＤG3の被処理データを用いた演算およびグループＡG4，ＢG4，ＣG4，ＤG4の被処理データを用いた演算を第１のデータパス１０８および第２のデータパス１０９で交互に繰り返して行うことにした。これにより、第３のデータパス１８０３および第４のデータパス１８０４が転置用ＲＡＭ１８０５の出力をそのまま用いて演算を行えるようになり、従って高速の演算処理を実現することができる。
【０２７６】
このようにして１回目および２回目の演算処理が終了すると、次に、以下のようにして３回目および４回目の演算処理（基数４）を同時に行う。
【０２７７】
この演算処理では、作業用ＲＡＭ１０７の各グループＡG1〜ＡG4，ＢG1〜ＢG4，ＣG1〜ＣG4，ＤG1〜ＤG4のそれぞれを、さらに１６個のグループに分割する。すなわち、この演算処理では、データＲＡＭ１０７の各番地を合計２５６個に分割する。例えば、グループＡG1を４分割して得られた各グループをＡ，Ｂ，Ｃ，Ｄとし、さらに各グループをそれぞれ４分割してＡG1〜ＡG4，ＢG1〜ＢG4，ＣG1〜ＣG4，ＤG1〜ＤG4とする。例えば、上述の１回目および２回目の分割におけるグループＡG1（０番地〜１２８番地）をさらに１６分割した結果、ＡG1は０〜７番地、ＢG1は３２〜３９番地、ＣG1は６４〜７１番地、ＤG1は９６〜１０３番地となる。
【０２７８】
そして、第１のデータパス１０８および第２のデータパス１０９が、作業用ＲＡＭ１０７の０番地、３２番地、６４番地および９６番地に格納された各複素数データとｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数とを読み込み、０番地のデータをＡi 、３２番地のデータをＢi 、６４番地のデータをＣi ９６番地のデータをＤi として、上式（１）〜（４）の演算を行う。そして、この演算によって得られた複素数データが、転置用ＲＡＭ１８０５に格納される。以下、１回目および２回目の場合と同様にして、第１のデータパス１０８および第２のデータパス１０９による演算が繰り返される。
【０２７９】
また、転置用ＲＡＭ１８０５も、１回目および２回目の場合と同様にして、演算結果を４行４列の行列に分割して転置し、一列ずつ出力する動作を繰り返す。
【０２８０】
さらに、第３のデータパス１８０３および第４のデータパス１８０４も、１回目および２回目の場合と同様にして、転置用ＲＡＭ１８０５から取り込んだ複素数データを用いて上式（１）〜（４）の演算を行い、演算結果ａi ，ｂi ，ｃi ，ｄi を作業用ＲＡＭ１０７の所定の番地に格納する。例えば、最初の演算の場合であれば、ａi を０番地に、ｂi を８番地に、ｃi を１６番地に、ｄi を２４番地に、それぞれ格納する。
【０２８１】
このようにして３回目および４回目の演算処理が終了すると、次に、以下のようにして５回目の演算処理（基数４）および６回目の演算処理（基数２）を同時に行う。
【０２８２】
この演算処理では、上述の３回目および４回目の演算処理で分割されたデータＲＡＭ１０７の各グループを、４個のグループに分割する。すなわち、この演算処理では、データＲＡＭ１０７の各番地を合計１０２４個に分割する。例えば、上述の３回目および４回目の分割におけるグループＡG1（０番地〜７番地）をさらに４分割した結果、ＡG1は０番地および１番地、ＢG1は２番地および３番地、ＣG1は４番地および５番地、ＤG1は６番地および７番地となる。なお、この演算処理で１６分割ではなく４分割することとしたのは、基数２の演算処理（すなわち６回目の演算処理）では作業用ＲＡＭ内の被処理データを４分割する必要がないことに起因するものである。
【０２８３】
次に、第１のデータパス１０８および第２のデータパス１０９が、作業用ＲＡＭ１０７の０番地、２番地、４番地および６番地に格納された各複素数データとｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数とを読み込み、０番地のデータをＡi 、２番地のデータをＢi 、４番地のデータをＣi ６番地のデータをＤi として、上式（１）〜（４）の演算を行う。そして、この演算によって得られた複素数データが、転置用ＲＡＭ１８０５に格納される。以下、１回目および２回目の場合と同様にして、第１のデータパス１０８および第２のデータパス１０９による演算が繰り返される。
【０２８４】
また、転置用ＲＡＭ１８０５も、１回目および２回目の場合と同様にして、演算結果を４行４列の行列に分割して転置し、一列ずつ出力する動作を繰り返す。
【０２８５】
第３のデータパス１８０３および第４のデータパス１８０４は、基数２の演算処理を行う。すなわち、これらのデータパス１８０３，１８０４は、転置用ＲＡＭ１８０５から取り込んだ複素数データを用いて上式（５）〜（８）の演算を行い、演算結果ａi ，ｂi ，ｃi ，ｄi を作業用ＲＡＭ１０７の所定の番地に格納する。例えば、最初の演算の場合であれば、ａi を０番地に、ｂi を１番地に、ｃi を８番地に、ｄi を９番地に、それぞれ格納する。
【０２８６】
以下、同様の演算を繰り返し、演算結果を作業用ＲＡＭ１０７に順次格納する。
【０２８７】
５回目および６回目の演算処理が終了すると、最後に、上述の第１の実施の形態と同様にして、演算結果を外部に出力する。
【０２８８】
このように、この実施の形態では、第１のデータパス１０８および第２のデータパス１０９の演算結果ａi ，ｂi ，ｃi ，ｄi を一旦作業用ＲＡＭに格納する必要が無く、転置用ＲＡＭ１８０５で転置してそのまま第３のデータパス１８０３および第４のデータパス１８０４の被処理データとして使用することができるので、処理速度を飛躍的に向上させることができる。
【０２８９】
なお、ここではデータパスを２段にした場合を例にとって説明したが、４段以上の複数段して、各段の間に転置用ＲＡＭを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【０２９０】
第７の実施の形態
次に、この発明の第７の実施の形態について、図２０を用いて説明する。なお、この実施の形態に係る高速フーリエ変換処理装置は、ブロック浮動小数点演算処理機能を有する点で、上述の第６の実施の形態と異なる。
【０２９１】
この実施の形態でも、サンプル点数が２０４８点の場合を例にとって説明する。
【０２９２】
図２０は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【０２９３】
同図において、図１、図１８と同じ符号を付した構成部は、それぞれ、これらの図と同じものを示している。
【０２９４】
また、図２０において、第１のデータパス２００１および第２のデータパス２００２は、ブロック浮動小数点演算を行うためのシフト機能を有している点で、図１８に示した各データパス１０８，１０９と異なる。なお、このブロック浮動小数点演算で使用するシフト機能の詳細構成については、説明を省略する。
【０２９５】
また、ブロック浮動小数点検出記憶部２００３は、セレクタ１８０２が出力した複素数データを取り込んでブロック浮動小数点を検出するとともに、この検出値を一時的に記憶する。このブロック浮動小数点検出記憶部２００３が一時的に記憶したブロック浮動小数点の検出値は、データパス２００１，２００２およびシーケンス制御部１１９に転送される。
【０２９６】
出力ビットシフタ２００４，２００５は、作業用ＲＡＭ１０７から複素数データを取り込むとともにシーケンス制御部１１９から浮動小数点指数を取り込み、この浮動小数点指数の値に基づいて複素数データをシフトさせて、その結果を出力する。
【０２９７】
レジスタ２００６は、シーケンス制御部１１９から浮動小数点指数の累算値を入力し、外部に対して出力する。
【０２９８】
続いて、図２０に示した高速フーリエ変換処理装置の動作を説明する。
【０２９９】
まず、上述の第６の実施の形態の場合と同様にして、２０４８点の被処理データが、実数部と虚数部とに分けられて、セレクタ１８０２から作業用ＲＡＭ１０７に順次格納される。このとき、ブロック浮動小数点検出記憶部２００３は、これらの複素数データをセレクタ１８０２から順次入力して浮動小数点指数を検出し、第２の実施の形態の場合と同様にして浮動小数点指数を検出する。
【０３００】
被処理データを作業用ＲＡＭ１０７に格納する動作が終了すると、続いて、これらの被処理データを用いて高速フーリエ変換処理を行う。
【０３０１】
この実施の形態では、以下に説明するようにして、１回目の演算処理と２回目の演算処理とを同時に行う。
【０３０２】
この演算処理では、作業用ＲＡＭ１０７に格納された２０４８個の複素数データが、第６の実施の形態の場合と同様にして、グループＡG1〜ＡG4，ＢG1〜ＢG4，ＣG1〜ＣG4，ＤG1〜ＤG4に分割される。
【０３０３】
そして、第１のデータパス２００１および第２のデータパス２００２が、作業用ＲＡＭ１０７の０番地、５１２番地、１０２４番地および１５３６番地に格納された各複素数データ（すなわちグループＡG1，ＢG1，ＣG1，ＤG1の最初の複素数データ）とｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数を読み込むと同時に、ブロック浮動小数点検出記憶部２００３から、各グループに共通な浮動小数点指数を読み込む。そして、この浮動小数点指数と上式（１）〜（４）とを用いて、ブロック浮動小数点による演算を行う。
【０３０４】
演算が終了すると、第１のデータパス２００１および第２のデータパス２００２から演算結果ａ1 ，ｂ1 ，ｃ1 ，ｄ1 が出力され、転置用ＲＡＭ１８０５に格納される。
【０３０５】
その後、第１のデータパス２００１および第２のデータパス２００２は、第６の実施の形態の場合と同様にして、他の複素数データを順次作業用ＲＡＭ１０７から読み出す。そして、ブロック浮動小数点による演算処理を順次実行し、演算結果を順次転置用ＲＡＭ１８０５に格納していく。
【０３０６】
このとき、転置用ＲＡＭ１８０５は、第６の実施の形態と同様、これらの演算結果を４行４列の行列に分割し、これを転置して、１列ずつ出力する。
【０３０７】
第３のデータパス１８０３および第４のデータパス１８０４は、転置用ＲＡＭ１８０５から入力した複素数データを読み込む。そして、ａ1 →Ａi ，ａ2 →Ｂi ，ａ3 →Ｃi ，ａ4 →Ｄi として、上式（１）〜（４）の演算を固定小数点により行う。さらに、この演算によって得られた複素数データａi ，ｂi ，ｃi ，ｄi を、作業用ＲＡＭ１０７に格納する（格納する番地は第６の実施の形態の場合と同様である）。
【０３０８】
このとき、ブロック浮動小数点検出記憶部２００３は、各演算結果ａi ，ｂi ，ｃi ，ｄi を入力して、これらの演算結果ごとに浮動小数点指数を検出し、記憶する。
【０３０９】
次に、第３のデータパス１８０３および第４のデータパス１８０４が、ｂ1 →Ａi ，ｂ2 →Ｂi ，ｂ3 →Ｃi ，ｂ4 →Ｄi として、２回目の演算を固定小数点により行い、演算結果を作業用ＲＡＭ１０７に格納する（格納する番地は第６の実施の形態の場合と同様である）。
【０３１０】
このとき、ブロック浮動小数点検出記憶部２００３は、各演算結果ａi ，ｂi ，ｃi ，ｄi を入力して浮動小数点指数を検出し、これらの検出値をそれぞれブロック浮動小数点検出記憶部２００３内に記憶された浮動小数点指数と比較する。そして、既に記憶された浮動小数点指数の方が小さいときは記憶内容を変更せず、今回の検出値の方が小さいときは記憶内容を今回の検出値に変更する。
【０３１１】
以下同様にして、第３のデータパス１８０３および第４のデータパス１８０４は、転置用ＲＡＭ１８０５から入力したすべての複素数データについての演算を行って作業用ＲＡＭ１０７に順次格納し、ブロック浮動小数点検出記憶部２００３は、順次計算結果ごとの浮動小数点検出を行って、この検出値が記憶内容よりも小さいときは記憶内容を書き換える。
【０３１２】
この実施の形態では、このようにして検出した浮動小数点指数を、後述する３回目の演算処理で使用する。
【０３１３】
このようにして１回目および２回目の演算処理が終了すると、次に、以下のようにして３回目および４回目の演算処理（基数４）を同時に行う。
【０３１４】
この演算処理では、第６の実施の形態の場合と同様、作業用ＲＡＭ１０７の各グループＡG1〜ＡG4，ＢG1〜ＢG4，ＣG1〜ＣG4，ＤG1〜ＤG4のそれぞれを、さらに１６個のグループに分割する。
【０３１５】
そして、第１のデータパス２００１および第２のデータパス２００２が、作業用ＲＡＭ１０７の０番地、３２番地、６４番地および９６番地に格納された各複素数データとｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数とを読み込むとともに、ブロック浮動小数点検出記憶部２００３から浮動小数点指数を読み込み、上式（１）〜（４）の演算をブロック浮動小数点によって実行する。以下、１回目の演算処理の場合と同様にして、第１のデータパス２００１および第２のデータパス２００２による演算が繰り返される。
【０３１６】
また、転置用ＲＡＭ１８０５も、１回目および２回目の場合と同様にして、演算結果を４行４列の行列に分割して転置し、一列ずつ出力する動作を繰り返す。
【０３１７】
さらに、第３のデータパス１８０３および第４のデータパス１８０４も、１回目および２回目の場合と同様にして、転置用ＲＡＭ１８０５から取り込んだ複素数データを用いて上式（１）〜（４）の演算を固定小数点で行い、演算結果ａi ，ｂi ，ｃi ，ｄi を作業用ＲＡＭ１０７の所定の番地に格納する。このとき、ブロック浮動小数点検出記憶部２００３は、２回目の演算処理の場合と同様にして、計算結果ａi ，ｂi ，ｃi ，ｄi ごとの浮動小数点検出を順次行い、この検出値が記憶内容よりも小さいときは記憶内容を順次書き換える。
【０３１８】
このようにして検出した浮動小数点指数は、後述する５回目の演算処理で使用される。
【０３１９】
以上のようにして３回目および４回目の演算処理が終了すると、次に、５回目の演算処理（基数４）および６回目の演算処理（基数２）を同時に行う。
【０３２０】
この演算処理では、第６の実施の形態の場合と同様、上述の３回目および４回目の演算処理で分割されたデータＲＡＭ１０７の各グループを、４個のグループに分割する。
【０３２１】
そして、第１のデータパス２００１および第２のデータパス２００２が、作業用ＲＡＭ１０７の０番地、２番地、４番地および６番地に格納された各複素数データとｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数とを読み込み、これと同時にブロック浮動小数点記憶検出部２００３から浮動小数点指数を読み込んで、上式（１）〜（４）の演算をブロック浮動小数点により実行する。続いて、この演算によって得られた複素数データが、転置用ＲＡＭ１８０５に格納される。以下、１回目および３回目の場合と同様にして、第１のデータパス２００１および第２のデータパス２００２による演算が繰り返される。
【０３２２】
また、転置用ＲＡＭ１８０５も、１回目および３回目の場合と同様にして、演算結果を４行４列の行列に分割して転置し、一列ずつ出力する動作を繰り返す。
【０３２３】
第３のデータパス１８０３および第４のデータパス１８０４は、基数２の演算処理を行う。すなわち、これらのデータパス１８０３，１８０４は、転置用ＲＡＭ１８０５から取り込んだ複素数データを用いて上式（５）〜（８）の演算を固定小数点で行い、演算結果ａi ，ｂi ，ｃi ，ｄi を作業用ＲＡＭ１０７の所定の番地に格納する。このとき、ブロック浮動小数点検出記憶部２００３は、演算結果ａi ，ｂi ，ｃi ，ｄi ごとに浮動小数点検出を順次行い、この検出値が記憶内容よりも小さいときは記憶内容を順次書き換える。
【０３２４】
５回目および６回目の演算処理が終了すると、最後に、演算結果を外部に出力する。このときは、まず、シーケンス制御部１１９がブロック浮動小数点検出記憶部２００３から各サンプルに対する全ステージで用いた浮動小数点指数の累算値を入力し、出力ビットシフタ２００４，２００５に送る。そして、出力ビットシフタ２００４，２００５は、この浮動小数点指数に基づいて、作業用ＲＡＭ１０７から入力した複素数データをシフトさせた後、出力回路１８０１に送る。これにより、シフト後の複素数データが、出力回路１８０１から外部へ出力される。
【０３２５】
また、必要であれば、出力ビットシフタ２００４，２００５によるシフトを行わずに複素数データを出力するとともに、最終的な浮動小数点指数の累算値をレジスタ２００６から外部に出力することもできる。
【０３２６】
このように、この実施の形態では、第１のデータパス２００１および第２のデータパス２００２の演算結果ａi ，ｂi ，ｃi ，ｄi を一旦作業用ＲＡＭに格納する必要が無く、転置用ＲＡＭ１８０５で転置してそのまま第３のデータパス１８０３および第４のデータパス１８０４の被処理データとして使用することができるので、ブロック浮動小数点法による処理速度を飛躍的に向上させることができる。
【０３２７】
なお、ここではデータパスを２段にした場合を例にとって説明したが、４段以上の複数段して、各段の間に転置用ＲＡＭを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【０３２８】
第８の実施の形態
次に、この発明の第８の実施の形態について、図２１を用いて説明する。なお、この実施の形態に係る高速フーリエ変換処理装置は、セレクタ２１０１を設けた点で、上述の第６の実施の形態と異なる。
【０３２９】
この実施の形態では、サンプル点数が１０２４点の場合を例にとって説明する。
【０３３０】
図２１は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【０３３１】
同図において、図１８と同じ符号を付した構成部は、それぞれ、図１８の場合と同じものを示している。
【０３３２】
また、同図において、セレクタ２１０１は、第１、第２ののデータパス１０８，１０９の出力または第３、第４ののデータパス１８０３，１８０４の出力の一方を選択して、セレクタ１８０２の一方の入力端子に供給する。この選択は、シーケンス制御部１１９によって行われる。
【０３３３】
続いて、図２１に示した高速フーリエ変換処理装置の動作を説明する。
【０３３４】
この実施の形態では、上述のようにサンプル点数が１０２４（４5 ）点であるので、基数が４の演算処理を５回行う。
【０３３５】
まず、外部から入力された被処理データが作業用ＲＡＭ１０７に供給されるように、シーケンス制御部１１９がセレクタ１８０２を設定する。そして、上述の第１の実施の形態の場合と同様にして、被処理データが、実数部と虚数部とに分けられて、セレクタ１８０２から作業用ＲＡＭ１０７に順次格納される。
【０３３６】
次に、シーケンス制御部１１９は、第３、第４のデータパス１８０３，１８０４の出力が作業用ＲＡＭ１０７に供給されるように、セレクタ１８０２，２１０１を設定する。
【０３３７】
そして、上述の第６の実施の形態と同様にして、１回目および２回目の演算処理を同時に行い、さらに、３回目および４回目の演算処理を同時に行う。
【０３３８】
１回目〜４回目の演算処理が終了すると、次に、シーケンス制御部１１９は、第１、第２のデータパス１０８，１０９の出力が作業用ＲＡＭ１０７に供給されるように、セレクタ１８０２，２１０１を設定する。
【０３３９】
そして、以下のようにして、５回目の演算処理（基数４）を行う。
【０３４０】
まず、この演算処理では、上述の３回目および４回目の演算処理で２５６分割されたデータＲＡＭ１０７の各グループを、さらに４個のグループに分割する。すなわち、この演算処理では、データＲＡＭ１０７の各番地を合計１０２４個に分割する。
【０３４１】
次に、第１のデータパス１０８および第２のデータパス１０９が、作業用ＲＡＭ１０７の０番地、１番地、２番地および３番地に格納された各複素数データとｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数とを読み込み、０番地のデータをＡi 、１番地のデータをＢi 、２番地のデータをＣi ３番地のデータをＤi として、上式（１）〜（４）の演算を行う。
【０３４２】
続いて、この演算によって得られた複素数データａi ，ｂi ，ｃi ，ｄi を、セレクタ１８０２，２１０１を介して、作業用ＲＡＭ１０７の０番地、１番地、２番地および３番地に格納する。その後、これと同様にして、４番地、５番地、６番地および７番地の各複素数データを用いた演算処理を行う。
【０３４３】
以下、同様にして、各番地の複素数データを用いた演算を行う。
【０３４４】
以上のようにして５回目の演算処理が終了すると、最後に、上述の各実施の形態と同様にして、演算結果を外部に出力する。
【０３４５】
このように、この実施の形態では、セレクタ２１０１を設けたので、演算処理の回数が奇数回の場合に有効である。
【０３４６】
なお、ここではデータパスを２段にした場合を例にとって説明したが、４段以上の複数段して、各段の間に転置用ＲＡＭを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【０３４７】
第９の実施の形態
次に、この発明の第９の実施の形態について、図２２を用いて説明する。この実施の形態は、上述の第８の実施の形態に示した高速フーリエ変換処理装置にブロック浮動小数点演算処理機能を設けたものである。
【０３４８】
この実施の形態でも、サンプル点数が１０２４点の場合を例にとって説明する。
【０３４９】
図２２は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【０３５０】
同図において、図２１と同じ符号を付した構成部は、それぞれ、これらの図と同じものを示している。
【０３５１】
また、図２２において、第１のデータパス２２０１および第２のデータパス２２０２は、ブロック浮動小数点演算を行うためのシフト機能を有している点で、図２１に示した各データパス１０８，１０９と異なる。なお、このブロック浮動小数点演算で使用するシフト機能の詳細構成については、説明を省略する。
【０３５２】
また、ブロック浮動小数点検出記憶部２２０３は、セレクタ１８０２が出力した複素数データを取り込んでブロック浮動小数点を検出するとともに、この検出値を一時的に記憶する。
【０３５３】
出力ビットシフタ２２０４，２２０５は、作業用ＲＡＭ１０７から複素数データを取り込むとともにシーケンス制御部１１９から浮動小数点指数の累算値を取り込み、この浮動小数点指数の値に基づいて複素数データをシフトさせて、その結果を出力する。
【０３５４】
レジスタ２２０６は、シーケンス制御部１１９から浮動小数点指数の累算値を入力し、外部に対して出力する。
【０３５５】
続いて、図２２に示した高速フーリエ変換処理装置の動作を説明する。
【０３５６】
まず、外部から入力された被処理データが作業用ＲＡＭ１０７に供給されるように、シーケンス制御部１１９がセレクタ１８０２を設定する。そして、上述の第８の実施の形態の場合と同様にして、１０２４点の被処理データが、実数部と虚数部とに分けられて、セレクタ１８０２から作業用ＲＡＭ１０７に順次格納される。このとき、ブロック浮動小数点検出記憶部２２０３は、これらの複素数データをセレクタ１８０２から順次入力して浮動小数点指数を検出し、第２の実施の形態の場合と同様にして浮動小数点指数を検出する。
【０３５７】
次に、シーケンス制御部１１９は、第３、第４のデータパス１８０３，１８０４の出力が作業用ＲＡＭ１０７に供給されるように、セレクタ１８０２，２１０１を設定する。
【０３５８】
そして、上述の第７の実施の形態と同様にして、１回目および２回目の演算処理を同時に行い、さらに、３回目および４回目の演算処理を同時に行う。このとき、第１のデータパス２２０１および第２のデータパス２２０２ではブロック浮動小数点検出記憶部２２０３から取り込んだ浮動小数点指数を用いてブロック浮動小数点による演算を行い、第３のデータパス１８０３および第４のデータパス１８０４では固定小数点による演算を行う。
【０３５９】
１回目〜４回目の演算処理が終了すると、次に、シーケンス制御部１１９は、第１、第２のデータパス２２０１，２２０２の出力が作業用ＲＡＭ１０７に供給されるように、セレクタ１８０２，２１０１を設定する。
【０３６０】
そして、以下のようにして、５回目の演算処理（基数４）を行う。
【０３６１】
まず、この演算処理では、上述の３回目および４回目の演算処理で２５６分割されたデータＲＡＭ１０７の各グループを、さらに４個のグループに分割する。すなわち、この演算処理では、データＲＡＭ１０７の各番地を合計１０２４個に分割する。
【０３６２】
次に、第１のデータパス２２０１および第２のデータパス２２０２が、作業用ＲＡＭ１０７の０番地、１番地、２番地および３番地に格納された各複素数データと、ｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数と、ブロック浮動小数点検出記憶部２２０３に格納された浮動小数点指数とを読み込み、０番地のデータをＡi 、１番地のデータをＢi 、２番地のデータをＣi ３番地のデータをＤi として、上式（１）〜（４）の演算をブロック浮動小数点で行う。
【０３６３】
続いて、この演算によって得られた複素数データａi ，ｂi ，ｃi ，ｄi を、セレクタ１８０２，２１０１を介して、作業用ＲＡＭ１０７の０番地、１番地、２番地および３番地に格納する。このとき、ブロック浮動小数点検出記憶部２２０３は、浮動小数点指数の検出を順次行い、この検出値が記憶内容よりも小さいときは記憶内容を順次書き換える。
【０３６４】
その後、これと同様にして、４番地、５番地、６番地および７番地の各複素数データを用いた演算処理を行う。
【０３６５】
以上のようにして５回目の演算処理が終了すると、最後に、上述の各実施の形態と同様にして、演算結果を外部に出力する。このときは、まず、シーケンス制御部１１９がブロック浮動小数点検出記憶部２２０３から各サンプルに対する全ステージで用いた浮動小数点指数の累算値を入力し、出力ビットシフタ２２０４，２２０５に送る。そして、出力ビットシフタ２２０４，２２０５は、この浮動小数点指数に基づいて、作業用ＲＡＭ１０７から入力した複素数データをシフトさせた後、出力回路１８０１に送る。これにより、シフト後の複素数データが、出力回路１８０１から外部へ出力される。
【０３６６】
また、必要であれば、出力ビットシフタ２２０４，２２０５によるシフトを行わずに複素数データを出力するとともに、最終的な浮動小数点指数をレジスタ２２０６から外部に出力することもできる。
【０３６７】
このように、この実施の形態では、セレクタ２１０１を設けたので、演算処理の回数が奇数回の場合でも、ブロック浮動小数点法による高速処理を実現することができる。
【０３６８】
なお、ここではデータパスを２段にした場合を例にとって説明したが、４段以上の複数段して、各段の間に転置用ＲＡＭを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【０３６９】
第１０の実施の形態
次に、この発明の第１０の実施の形態について、図２３を用いて説明する。なお、この実施の形態に係る高速フーリエ変換処理装置は、セレクタ２３０１を設けた点で、上述の第６の実施の形態と異なる。
【０３７０】
この実施の形態では、サンプル点数が１０２４点の場合を例にとって説明する。
【０３７１】
図２３は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【０３７２】
同図において、図１８と同じ符号を付した構成部は、それぞれ、図１８の場合と同じものを示している。
【０３７３】
また、同図において、セレクタ２３０１は、作業用ＲＡＭ１０７の出力または転置用ＲＡＭ１８０５の出力の一方を選択して、第３のデータパス１８０３および第４のデータパス１８０４に供給する。この選択は、シーケンス制御部１１９によって行われる。
【０３７４】
続いて、図２３に示した高速フーリエ変換処理装置の動作を説明する。
【０３７５】
この実施の形態では、上述のようにサンプル点数が１０２４（４5 ）点であるので、基数が４の演算処理を５回行う。
【０３７６】
まず、外部から入力された被処理データが、実数部と虚数部とに分けられて、セレクタ１８０２から作業用ＲＡＭ１０７に順次格納される。
【０３７７】
次に、シーケンス制御部１１９は、転置用ＲＡＭ１８０５の出力が第３、第４のデータパス１８０３，１８０４に供給されるように、セレクタ２３０１を設定する。
【０３７８】
そして、上述の第６の実施の形態と同様にして、１回目および２回目の演算処理を同時に行い、さらに、３回目および４回目の演算処理を同時に行う。
【０３７９】
１回目〜４回目の演算処理が終了すると、次に、シーケンス制御部１１９は、作業用ＲＡＭ１０７の出力が第３、第４のデータパス１８０３，１８０４に供給されるように、セレクタ２３０１を設定する。
【０３８０】
そして、以下のようにして、５回目の演算処理（基数４）を行う。
【０３８１】
まず、この演算処理では、上述の３回目および４回目の演算処理で２５６分割されたデータＲＡＭ１０７の各グループを、さらに４個のグループに分割する。
すなわち、この演算処理では、データＲＡＭ１０７の各番地を合計１０２４個に分割する。
【０３８２】
次に、第３のデータパス１８０３および第４のデータパス１８０４が、作業用ＲＡＭ１０７の０番地、１番地、２番地および３番地に格納された各複素数データとｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数とを読み込み、０番地のデータをＡi 、１番地のデータをＢi 、２番地のデータをＣi ３番地のデータをＤi として、上式（１）〜（４）の演算を行う。
【０３８３】
続いて、この演算によって得られた複素数データａi ，ｂi ，ｃi ，ｄi を、作業用ＲＡＭ１０７の０番地、１番地、２番地および３番地に格納する。その後、これと同様にして、４番地、５番地、６番地および７番地の各複素数データを用いた演算処理を、第３のデータパス１８０３および第４のデータパス１８０４が行う。
【０３８４】
以下、同様にして、各番地の複素数データを用いた演算を行う。
【０３８５】
以上のようにして５回目の演算処理が終了すると、最後に、上述の各実施の形態と同様にして、演算結果を外部に出力する。
【０３８６】
このように、この実施の形態では、セレクタ２３０１を設けたので、演算処理の回数が奇数回の場合に有効である。
【０３８７】
なお、ここではデータパスを２段にした場合を例にとって説明したが、４段以上の複数段して、各段の間に転置用ＲＡＭを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【０３８８】
第１１の実施の形態
次に、この発明の第１１の実施の形態について、図２４を用いて説明する。なお、この実施の形態は、上述の第１０の実施の形態に示した高速フーリエ変換処理装置にブロック浮動小数点演算処理機構を設けたものである。
【０３８９】
この実施の形態では、サンプル点数が１０２４点の場合を例にとって説明する。
【０３９０】
図２４は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【０３９１】
同図において、図２３と同じ符号を付した構成部は、それぞれ、図２３の場合と同じものを示している。
【０３９２】
また、同図において、第１のデータパス２４０１および第２のデータパス２４０２は、ブロック浮動小数点演算を行うためのシフト機能を有している点で、図２３に示した各データパス１０８，１０９と異なる。また、この実施の形態では、第３のデータパス２４０３および第４のデータパス２４０４も、かかるシフト機能を有している。なお、ブロック浮動小数点演算で使用するシフト機能の詳細構成については、説明を省略する。
【０３９３】
また、ブロック浮動小数点検出記憶部２４０５は、セレクタ１８０２が出力した複素数データを取り込んでブロック浮動小数点を検出するとともに、この検出値を一時的に記憶する。
【０３９４】
出力ビットシフタ２４０６，２４０７は、作業用ＲＡＭ１０７から複素数データを取り込むとともにシーケンス制御部１１９から浮動小数点指数を取り込み、この浮動小数点指数の値に基づいて複素数データをシフトさせて、その結果を出力する。
【０３９５】
レジスタ２４０８は、シーケンス制御部１１９から浮動小数点指数を入力し、外部に対して出力する。
【０３９６】
続いて、図２４に示した高速フーリエ変換処理装置の動作を説明する。
【０３９７】
この実施の形態では、上述のようにサンプル点数が１０２４（４5 ）点であるので、基数が４の演算処理を５回行う。
【０３９８】
まず、外部から入力された被処理データが、実数部と虚数部とに分けられて、セレクタ１８０２から作業用ＲＡＭ１０７に順次格納される。このとき、ブロック浮動小数点検出記憶部２４０５は、これらの複素数データをセレクタ１８０２から順次入力して浮動小数点指数を検出し、第２の実施の形態の場合と同様にして浮動小数点指数を検出する。
【０３９９】
次に、シーケンス制御部１１９は、転置用ＲＡＭ１８０５の出力が第３、第４のデータパス２４０３，２４０４に供給されるように、セレクタ２３０１を設定する。
【０４００】
そして、上述の第６の実施の形態と同様にして、１回目および２回目の演算処理を同時に行い、さらに、３回目および４回目の演算処理を同時に行う。このとき、第１のデータパス２４０１および第２のデータパス２４０２ではブロック浮動小数点検出記憶部２４０５から取り込んだ浮動小数点指数を用いてブロック浮動小数点による演算を行う。また、１回目〜４回目の演算処理では、第３のデータパス２４０３および第４のデータパス２４０４は、ブロック浮動小数点ではなく、固定小数点による演算を行う。
【０４０１】
１回目〜４回目の演算処理が終了すると、次に、シーケンス制御部１１９は、作業用ＲＡＭ１０７の出力が第３、第４のデータパス２４０３，２４０４に供給されるように、セレクタ２３０１を設定する。
【０４０２】
そして、以下のようにして、５回目の演算処理（基数４）を行う。
【０４０３】
まず、この演算処理では、上述の３回目および４回目の演算処理で２５６分割されたデータＲＡＭ１０７の各グループを、さらに４個のグループに分割する。すなわち、この演算処理では、データＲＡＭ１０７の各番地を合計１０２４個に分割する。
【０４０４】
次に、第３のデータパス２４０３および第４のデータパス２４０４が、作業用ＲＡＭ１０７の０番地、１番地、２番地および３番地に格納された各複素数データと、ｓｉｎ／ｃｏｓ係数用ＲＯＭ１１０に格納されたひねり係数と、ブロック浮動小数点検出記憶部２４０５に格納された浮動小数点指数とを読み込み、０番地のデータをＡi 、１番地のデータをＢi 、２番地のデータをＣi ３番地のデータをＤi として、上式（１）〜（４）の演算を行う。
【０４０５】
続いて、この演算によって得られた複素数データａi ，ｂi ，ｃi ，ｄi を、作業用ＲＡＭ１０７の０番地、１番地、２番地および３番地に格納する。このとき、ブロック小数点検出記憶部２４０５は、浮動小数点指数の検出を順次行い、この検出値が記憶内容よりも小さいときは記憶内容を順次書き換える。
【０４０６】
その後、これと同様にして、４番地、５番地、６番地および７番地の各複素数データを用いた演算処理を、第３のデータパス２４０３および第４のデータパス２４０４が行う。
【０４０７】
以下、同様にして、各番地の複素数データを用いた演算を行う。
【０４０８】
以上のようにして５回目の演算処理が終了すると、最後に、上述の各実施の形態と同様にして、演算結果を外部に出力する。このときは、まず、シーケンス制御部１１９がブロック浮動小数点検出記憶部２４０５から各サンプルに対する第１，第３，第５ステージで用いた浮動小数点指数の累算値を入力し、出力ビットシフタ２４０６，２４０７に送る。そして、出力ビットシフタ２４０６，２４０７は、この浮動小数点指数に基づいて、作業用ＲＡＭ１０７から入力した複素数データをシフトさせた後、出力回路１８０１に送る。これにより、シフト後の複素数データが、出力回路１８０１から外部へ出力される。
【０４０９】
また、必要であれば、出力ビットシフタ２４０６，２４０７によるシフトを行わずに複素数データを出力するとともに、最終的な浮動小数点指数をレジスタ２４０８から外部に出力することもできる。
【０４１０】
このように、この実施の形態では、セレクタ２３０１を設けたので、演算処理の回数が奇数回の場合に有効である。
【０４１１】
また、第１のデータパス２４０１および第２のデータパス２４０２だけでなく、第３のデータパス２４０３および第４のデータパス２４０４もブロック浮動小数点演算を行うことができるように構成したので、５回目の演算もブロック浮動小数点を用いて行うことができ、演算結果の精度を高めることができる。
【０４１２】
なお、ここではデータパスを２段にした場合を例にとって説明したが、４段以上の複数段して、各段の間に転置用ＲＡＭを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【０４１３】
第１２の実施の形態
次に、この発明の第１２の実施の形態について、図２５および図２６を用いて説明する。
【０４１４】
この実施の形態では、サンプル点数が８１９２の高速フーリエ変換を行う場合を例に採って説明する。
【０４１５】
図２５は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【０４１６】
同図において、図１と同じ符号を付した構成部は、それぞれ、図１の場合と同じものを示している。
【０４１７】
また、同図において、出力回路２５０１は、図１にセレクタ１１１，１１２、レジスタ１１３，１１４および出力端子１１５，１１６を略記したものである。さらに、セレクタ２５０２は、図１のセレクタ１０５，１０６、レジスタ１０３，１０４および入力ポート１０１，１０２を略記したものである。
【０４１８】
第１のデータパス２５０３および第３のデータパス２５０５としては、上述の第１の実施の形態の第１のデータパス１０８と同じ内部構造のもの、すなわち図２（Ａ）に示したものまたは図１２に示したものを使用することができる。
【０４１９】
同様に、第２のデータパス２５０４および第４のデータパス２５０６としては、上述の第１の実施の形態の第２のデータパス１０９と同じ内部構造のもの、すなわち図２（Ａ）に示したものまたは図１２に示したもののいずれかを使用することができる。
【０４２０】
デマルチプレクサ２５０７は、後述するように、セレクタ２５０２から入力した複素数データを作業用ＲＡＭ１０７に格納する際の番地を選択する。なお、この番地の選択は、シーケンス制御部１１９の制御によって行われる。
【０４２１】
マルチプレクサ２５０８は、後述するように、作業用ＲＡＭ１０７からデータパス２５０３〜２５０６に複素数データを転送する際に、転送先となるデータパスを選択する。この転送先の選択も、シーケンス制御部１１９の制御によって行われる。
【０４２２】
図２６は、マルチプレクサ２５０７の動作を説明するための概念図である。なお、同図では、簡単化のために、セレクタ２５０２を省略している。
【０４２３】
同図に示したように、マルチプレクサ２５０７において、セレクタ２６０１は、作業用ＲＡＭ１０７の１０２４番地〜２０４７番地の複素数データまたは４０９６番地〜５１１９番地の複素数データを選択して、セレクタ２６０３に出力する。
【０４２４】
また、セレクタ２６０２は、作業用ＲＡＭ１０７の３０７２番地〜４０９５番地の複素数データまたは６１４４番地〜７１６７番地の複素数データを選択して、セレクタ２６０３に出力する。
【０４２５】
セレクタ２６０４は、作業用ＲＡＭ１０７の１０２４番地〜２０４７番地の複素数データまたは４０９６番地〜５１１９番地の複素数データを選択して、セレクタ２６０６に出力する。
【０４２６】
セレクタ２６０５は、作業用ＲＡＭ１０７の３０７２番地〜４０９５番地の複素数データまたは６１４４番地〜７１６７番地の複素数データを選択して、セレクタ２６０６に出力する。
【０４２７】
セレクタ２６０３は、作業用ＲＡＭ１０７の０番地〜１０２３番地の複素数データ、２０４８番地〜３０７１番地の複素数データ、セレクタ２６０１から入力した複素数データまたはセレクタ２６０２から入力した複素数データを選択して、第１，第２のデータパス２５０３，２５０４に出力する。
【０４２８】
セレクタ２６０６は、作業用ＲＡＭ１０７の５１２０番地〜６１４３番地の複素数データ、７１６８番地〜８１９１番地の複素数データ、セレクタ２６０４から入力した複素数データまたはセレクタ２６０５から入力した複素数データを選択して、第３，第４のデータパス２５０５，２５０６に出力する。
【０４２９】
次に、図２５および図２６に示した高速フーリエ変換処理装置の動作について説明する。
【０４３０】
まず、８１９２点の被処理データが、セレクタ２５０２およびデマルチプレクサ２５０６を介して、作業用ＲＡＭ１０７に順次格納される。
【０４３１】
作業用ＲＡＭ１０７への複素数データの格納が終了すると、続いて、これらの複素数データを用いて高速フーリエ変換を行う。
【０４３２】
なお、この実施の形態では、サンプル点数が８１９２（＝４6 ×２）なので、基数が４の演算処理を６回繰り返した後、基数が２の演算処理を行う。
【０４３３】
最初に、１回目の演算処理（基数４）について、説明する。
【０４３４】
まず、シーケンス制御部１１９が、セレクタ２６０１が４０９６番地〜５１１９番地を、セレクタ２６０２が６１４４番地〜７１６７番地を、セレクタ２６０４が１０２４番地〜２０４７番地を、セレクタ２６０５が３０７２番地〜４０９５番地を選択するように、これらのセレクタ２６０１，２６０２，２６０４，２６０５を設定する。そして、第１のデータパス２５０３および第２のデータパス２５０４が、０番地の被処理データをＡ1 、２０４８番地の被処理データをＢ1 、４０９６番地の被処理データをＣ1 、６１４４番地の被処理データをＤ1 として作業用ＲＡＭ１０７から読み出し、上式（１）〜（４）の演算処理を行う。また、これと平行して、第３のデータパス２５０５および第４のデータパス２５０６が、１０２４番地の被処理データをＡ1 、３０７２番地の被処理データをＢ1 、５１２０番地の被処理データをＣ1 、７１６８番地の被処理データをＤ1 として作業用ＲＡＭ１０７から読み出し、上式（１）〜（４）の演算を行う。
【０４３５】
続いて、第１のデータパス２５０３および第２のデータパス２５０４の演算結果である複素数データａ1 ，ｂ1 ，ｃ1 ，ｄ1 が、セレクタ２５０２を介してデマルチプレクサ２５０７に入力され、作業用ＲＡＭ１０７に書き込まれる。ここで、この実施の形態では、演算結果ａ1 は０番地に書き込まれ、演算結果ｂ1 は２０４８番地に書き込まれ、演算結果ｃ1 は４０９６番地に書き込まれ、且つ、演算結果ｄ1 は６１４４番地に書き込まれる。
【０４３６】
また、これと同時に、第３のデータパス２５０５および第４のデータパス２５０６の演算結果である複素数データａ1 ，ｂ1 ，ｃ1 ，ｄ1 が、セレクタ２５０２およびデマルチプレクサ２５０７を介して、作業用ＲＡＭ１０７の１０２４番地、３０７２番地、５１２０番地および７１６８番地に書き込まれる。
【０４３７】
次に、第１のデータパス２５０３および第２のデータパス２５０４は、１番地の被処理データをＡ1 、２０４９番地の被処理データをＢ1 、４０９７番地の被処理データをＣ1 、６１４５番地の被処理データをＤ1 として上式（１）〜（４）の演算処理を行い、また、これと平行して第３のデータパス２５０５および第４のデータパス２５０６が、１０２５番地の被処理データをＡ1 、３０７３番地の被処理データをＢ1 、５１２１番地の被処理データをＣ1 、７１６９番地の被処理データをＤ1 として上式（１）〜（４）の演算を行う。そして、第１のデータパス２５０３および第２のデータパス２５０４の演算結果は１番地、２０４９番地、４０９７番地および６１４５番地に格納され、また、第３のデータパス２５０５および第４のデータパス２５０６の演算結果は１０２５番地、３０７３番地、５１２１番地および７１６９番地に格納される。
【０４３８】
以下同様にして、各データパス２５０３〜２５０６は、すべての番地の被処理データについて順次演算を行い、演算結果を作業用ＲＡＭ１０７に書き込む。
【０４３９】
このようにして１回目の演算処理が終了すると、続いて、２回目の演算処理が行われる。
【０４４０】
なお、２回目の演算処理においては、第１のデータパス２５０３および第２のデータパス２５０４による演算では、被処理データの読み出しおよび演算結果の書き込みは、作業用ＲＡＭ１０７の０番地〜４０９５番地のみに対して行われる。同様に、第３のデータパス２５０５および第４のデータパス２５０６による演算では、被処理データの読み出しおよび演算結果の書き込みは、作業用ＲＡＭ１０７の４０９６番地〜８１９１番地のみに対して行われる。
【０４４１】
まず、シーケンス制御部１１９が、セレクタ２６０１が１０２４番地〜２０４７番地を、セレクタ２６０２が３０７２番地〜４０９５番地を、セレクタ２６０４が４０９６番地〜５１１９番地を、セレクタ２６０５が６１４４番地〜７１６７番地を選択するように、これらのセレクタ２６０１，２６０２，２６０４，２６０５を設定する。そして、第１のデータパス２５０３および第２のデータパス２５０４が、０番地の被処理データをＡ1 、５１２番地の被処理データをＢ1 、１０２４番地の被処理データをＣ1 、１５３６番地の被処理データをＤ1 として作業用ＲＡＭ１０７から読み出し、上式（１）〜（４）の演算処理を行う。同様に、第３のデータパス２５０５および第４のデータパス２５０６が、４０９６番地の被処理データをＡ1 、４６０８番地の被処理データをＢ1 、５１２０番地の被処理データをＣ1 、５６３２番地の被処理データをＤ1 として作業用ＲＡＭ１０７から読み出し、上式（１）〜（４）の演算を行う。
【０４４２】
続いて、第１のデータパス２５０３および第２のデータパス２５０４の演算結果である複素数データａ1 ，ｂ1 ，ｃ1 ，ｄ1 が、セレクタ２５０２およびデマルチプレクサ２５０７を介して、０番地、５１２番地、１０２４番地、１５３６番地に書き込まれる。同様に、第３のデータパス２５０５および第４のデータパス２５０６の演算結果である複素数データａ1 ，ｂ1 ，ｃ1 ，ｄ1 が、セレクタ２５０２およびデマルチプレクサ２５０７を介して、作業用ＲＡＭ１０７の４０９６番、４６０８番地、５１２０番地および５６３２番地に書き込まれる。
【０４４３】
以下同様にして、各データパス２５０３〜２５０６は、すべての番地の被処理データについて順次演算を行い、演算結果を作業用ＲＡＭ１０７に書き込む。
【０４４４】
その後、２回目の演算処理と同様にして、３回目〜６回目の演算処理（基数４）を行い、さらに、７回目の演算処理（基数２）を行う。
【０４４５】
このように、この実施の形態にかかる高速フーリエ変換処理装置によれば、４個のデータパスを用いて２系統の演算処理を平行して行うことができるので、処理速度をさらに向上させることができる。また、デマルチプレクサ２５０７およびマルチプレクサ２５０８を用いて１回目の演算処理後のデータ転送を不要としたことによっても、処理速度の向上を図っている。
【０４４６】
第１３の実施の形態
次に、この発明の第１３の実施の形態に係る高速フーリエ変換処理装置について、図２７を用いて説明する。
【０４４７】
この実施の形態は、上述の第１２の実施の形態に係る高速フーリエ変換処理装置に、ブロック浮動小数点演算処理機能を付加したものである。
【０４４８】
図２７は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【０４４９】
同図において、図２５と同じ符号を付した構成部は、それぞれ、図２５の場合と同じものを示している。
【０４５０】
また、同図において、データパス２７０１〜２７０４は、ブロック浮動小数点演算を行うためのシフト機能を有している点で、図２５に示した各データパス２５０３〜２５０６と異なる。なお、かかるシフト機能の詳細構成については、説明を省略する。
【０４５１】
ブロック浮動小数点検出記憶部２７０５は、データパス２７０１〜２７０４が出力した複素数データを取り込んでブロック浮動小数点を検出するとともに、この検出値を一時的に記憶する。このブロック浮動小数点検出記憶部２７０５が一時的に記憶したブロック浮動小数点の検出値は、データパス２７０１〜２７０４およびシーケンス制御部１１９に転送される。
【０４５２】
出力ビットシフタ２７０６，２７０７は、作業用ＲＡＭ１０７から複素数データを取り込むとともにシーケンス制御部１１９から浮動小数点指数を取り込む。そして、この浮動小数点指数の値に基づいて複素数データをシフトさせ、その結果を出力する。
【０４５３】
レジスタ２７０８は、シーケンス制御部１１９から浮動小数点指数の各ステージの累算値を入力し、外部に対して出力する。
【０４５４】
次に、図２７に示した高速フーリエ変換処理装置の動作について説明する。なお、この実施の形態でも、上述の第１２の実施の形態と同様、サンプル点数が８１９２（＝４6 ×２）なので、基数が４の演算処理を６回繰り返した後、基数が２の演算処理を行う。
【０４５５】
まず、８１９２点の被処理データが、セレクタ２５０２およびデマルチプレクサ２５０７を介して作業用ＲＡＭ１０７に、順次格納される。このとき、ブロック浮動小数点検出記憶部２７０５は、これらの被処理データを順次入力し、第２の実施の形態の場合と同様にして浮動小数点指数を検出する。
【０４５６】
続いて、１回目の演算処理（基数４）が、開始される。
【０４５７】
この演算処理でのセレクタ２６０１〜２６０６の動作は上述の第１２の実施の形態と同様である。すなわち、この演算処理の最初の演算では、第１のデータパス２７０１および第２のデータパス２７０２は、０番地の被処理データをＡ1 、２０４８番地の被処理データをＢ1 、４０９６番地の被処理データをＣ1 、６１４４番地の被処理データをＤ1 として作業用ＲＡＭ１０７から読み出し、第３のデータパス２７０３および第４のデータパス２７０４は、１０２４番地の被処理データをＡ1 、３０７２番地の被処理データをＢ1 、５１２０番地の被処理データをＣ1 、７１６８番地の被処理データをＤ1 として作業用ＲＡＭ１０７から読み出す。そして、これらのデータパス２７０１〜２７０４により、上式（１）〜（４）の演算が行われる。このとき、データパス２７０１〜２７０４は、上述の第２の実施の形態の場合と同様にして、浮動小数点演算を行う。
【０４５８】
続いて、第１のデータパス２７０１および第２のデータパス２７０２の演算結果である複素数データａ1 ，ｂ1 ，ｃ1 ，ｄ1 が、セレクタ２５０２を介してデマルチプレクサ２５０７に入力され、作業用ＲＡＭ１０７の０番地、２０４８番地、４０９６番地、６１４４番地に書き込まれる。同様に、第３のデータパス２７０３および第４のデータパス２７０４の演算結果である複素数データａ1 ，ｂ1 ，ｃ1 ，ｄ1 は、作業用ＲＡＭ１０７の１０２４番、３０７２番地、５１２０番地および７１６８番地に書き込まれる。
【０４５９】
以下、上述の第１２の実施の形態の場合と同様にして、データパス２７０１〜２７０４が、以降の演算を行い、演算結果を作業用ＲＡＭ１０７に書き込む。このとき、ブロック浮動小数点検出記憶部２７０５は、これらの演算結果を順次入力し、第２の実施の形態の場合と同様にして浮動小数点指数を検出する。
【０４６０】
このようにして１回目の演算処理が終了すると、続いて、２回目の演算処理が行われる。
【０４６１】
上述の第１２の実施の形態と同様、２回目の演算処理においては、第１のデータパス２７０１および第２のデータパス２７０２による演算では、被処理データの読み出しおよび演算結果の書き込みは、作業用ＲＡＭ１０７の０番地〜４０９５番地のみに対して行われる。同様に、第３のデータパス２７０３および第４のデータパス２７０４による演算では、被処理データの読み出しおよび演算結果の書き込みは、作業用ＲＡＭ１０７の４０９６番地〜８１９１番地のみに対して行われる。また、それぞれの演算において、データパス２７０１〜２７０４は、上述の第２の実施の形態の場合と同様にして、浮動小数点演算を行う。さらに、演算結果を作業用ＲＡＭ１０７に格納する際には、ブロック浮動小数点検出記憶部２７０５が、これらの演算結果を順次入力し、第２の実施の形態の場合と同様にして浮動小数点指数を検出する。
【０４６２】
その後、２回目の演算処理と同様にして、３回目〜６回目の演算処理（基数４）を行い、さらに、７回目の演算処理（基数２）を行う。
【０４６３】
このように、この実施の形態にかかる高速フーリエ変換処理装置によれば、上述の第１２の実施の形態と同様の高速フーリエ変換処理を、ブロック浮動小数点法を用いて行うことができる。
【０４６４】
【発明の効果】
以上詳細に説明したように、この発明に係る高速フーリエ変換処理装置によれば、フーリエ変換処理を高速で行うことができ、また、基数４または基数２のいずれの高速フーリエ変換アルゴリズムにも対応することができる。
【図面の簡単な説明】
【図１】第１の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図２】（Ａ）は図１に示した第１のデータパスおよび第２のデータパスの内部構造を概念的に示すブロック図、（Ｂ）および（Ｃ）は（Ａ）の等価回路である。
【図３】図１に示した作業用ＲＡＭの内部構造を概略的に示すブロック図である。
【図４】第１の実施の形態に係る高速フーリエ変換処理装置の動作を説明するための概念図である。
【図５】第２の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図６】第３の実施の形態に係る高速フーリエ変換処理システムの構成を概略的に示すブロック図である。
【図７】第４の実施の形態に係る高速フーリエ変換処理システムの構成を概略的に示すブロック図である。
【図８】図７に示した作業用ＲＡＭの内部構造を概略的に示すブロック図である。
【図９】第４の実施の形態に係る高速フーリエ変換処理装置の動作を説明するための概念図である。
【図１０】第４の実施の形態に係る高速フーリエ変換処理装置の動作を説明するための概念図である。
【図１１】第５の実施の形態に係る高速フーリエ変換処理システムの構成を概略的に示すブロック図である。
【図１２】第１の実施の形態に係る第１のデータパスおよび第２のデータパスの他の内部構造例を概念的に示すブロック図である。
【図１３】図１２に示した第１のデータパスの基数４のときの演算動作を説明するためのタイミングチャートである。
【図１４】図１２に示した第２のデータパスの基数４のときの演算動作を説明するためのタイミングチャートである。
【図１５】図１２に示した第１のデータパスの基数２のときの演算動作を説明するためのタイミングチャートである。
【図１６】図１２に示した第２のデータパスの基数２のときの演算動作を説明するためのタイミングチャートである。
【図１７】第２の実施の形態に係る第１のデータパスおよび第２のデータパスの他の内部構造例を概念的に示すブロック図である。
【図１８】第６の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図１９】図１８に示した高速フーリエ変換処理装置の動作を説明するための概念図である。
【図２０】第７の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図２１】第８の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図２２】第９の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図２３】第１０の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図２４】第１１の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図２５】第１２の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図２６】図２５に示したマルチプレクサの動作を説明するための概念図である。
【図２７】第１３の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【符号の説明】
１０１，１０２  入力端子
１０３，１０４  レジスタ
１０５，１０６，１１１，１１２  セレクタ
１０７  作業用ＲＡＭ
１０８，５０１  第１のデータパス
１０９，５０２  第２のデータパス
１１０  ｓｉｎ／ｃｏｓ係数用ＲＯＭ
１１３，１１４  レジスタ
１１５，１１６  出力端子
１１７  クロック生成部
１１８  メモリアドレス発生部
１１９  シーケンス制御部
２０１，２０２，２２１，２２３  加算器
２０３，２２２，２２４  減算器
２０４  複素減算器
２１１，２１２，２１３，２１４  バイパス
２３１，２３２，２３３，２３４  乗算器
３０１，３０２，３０３，３０４  メモリアレイ部
３１１，３１２，３１３，３１４  データレジスタ
３２１，３２２，３２３，３２４  アドレスレジスタ
３３１  出力セレクタ
３３２  出力レジスタ
３３３  デコーダ
５０３  ブロック浮動小数点検出記憶部
５０４，５０５  出力ビットシフタ
６０１，６０２  プロセッサ
７０１，１００１  マスタモード用プロセッサ
７０２，１００２  スレーブモード用プロセッサ
【図１】
0003938238.tif 000004
【図２】
0003938238.tif 000005
【図３】
0003938238.tif 000006
【図４】
0003938238.tif 000007
【図５】
0003938238.tif 000008
【図６】
0003938238.tif 000009
【図７】
0003938238.tif 000010
【図８】
0003938238.tif 000011
【図９】
0003938238.tif 000012
【図１０】
0003938238.tif 000013
【図１１】
0003938238.tif 000014
【図１２】
0003938238.tif 000015
【図１３】
0003938238.tif 000016
【図１４】
0003938238.tif 000017
【図１５】
0003938238.tif 000018
【図１６】
0003938238.tif 000019
【図１７】
0003938238.tif 000020
【図１８】
0003938238.tif 000021
【図１９】
0003938238.tif 000022
【図２０】
0003938238.tif 000023
【図２１】
0003938238.tif 000024
【図２２】
0003938238.tif 000025
【図２３】
0003938238.tif 000026
【図２４】
0003938238.tif 000027
【図２５】
0003938238.tif 000028
【図２６】
0003938238.tif 000029
【図２７】
0003938238.tif 000030