JP3938238B2 - 高速フーリエ変換処理装置 - Google Patents

高速フーリエ変換処理装置 Download PDF

Info

Publication number
JP3938238B2
JP3938238B2 JP01597198A JP1597198A JP3938238B2 JP 3938238 B2 JP3938238 B2 JP 3938238B2 JP 01597198 A JP01597198 A JP 01597198A JP 1597198 A JP1597198 A JP 1597198A JP 3938238 B2 JP3938238 B2 JP 3938238B2
Authority
JP
Japan
Prior art keywords
data
calculation
complex
output
result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP01597198A
Other languages
English (en)
Other versions
JPH11203272A (ja
Inventor
秀夫 水谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP01597198A priority Critical patent/JP3938238B2/ja
Priority to TW087101271A priority patent/TW420907B/zh
Priority to KR10-1998-0003103A priority patent/KR100390326B1/ko
Priority to EP98101915A priority patent/EP0856801A1/en
Priority to US09/018,530 priority patent/US6230176B1/en
Publication of JPH11203272A publication Critical patent/JPH11203272A/ja
Application granted granted Critical
Publication of JP3938238B2 publication Critical patent/JP3938238B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、例えば音声信号等の信号解析やデジタル伝送の変復調処理に使用する高速フーリエ変換処理に関するものであり、より詳細には、離散的な複素数入力信号の系列に対して可変サンプル点の高速フーリエ変換処理またはその逆変換処理を実行する高速フーリエ変換処理に関するものである。
【0002】
【従来の技術】
従来、例えば音声信号の信号解析やデジタル伝送の変復調処理等において、高速フーリエ変換処理装置が使用されている。かかる高速フーリエ変換処理装置としては、例えば、“ISSCC89,Digest,pp166-167,327,THPM12.5:A200MIPS Single-Chip 1K FFT Processor ”に記載されたものが知られている。
【0003】
この文献に記載された高速フーリエ変換処理装置では、2ポートRAM、ひねり係数ROM、複数の演算器からなるデータパスを用いて演算処理を行う構成となっている。また、この装置では、複数のデータパスを備えており、並列処理を行うことによって内部演算のスループットを向上させている。
【0004】
このデータパスは、乗算器と加減算器とをレジスタファイルで挟んでなるパイプライン構成を備えており、入力された複素数データを時間領域から周波数領域へ変換するフーリエ変換や、周波数領域から時間領域に変換するフーリエ逆変換を、パイプライン処理によって実行する。
【0005】
また、このデータパスは、サンプル点数が1024点の場合、256点の場合、64点の場合について、基数4のアルゴリズムに基づく高速フーリエ変換を実行する。
【0006】
しかしながら、上述の文献に開示されているような従来の高速フーリエ変換処理装置は、データパスアーキテクチャが基数4の高速フーリエ変換アルゴリズム用のものであるため、高速フーリエ変換のサンプル点数が4のべき乗であるときは高速の処理が可能であるものの、それ以外の数値である場合には処理効率が非常に悪くなってしまうという欠点があった。例えば、サンプル点数が512(44 ×2)点の場合や128(43 ×2)点の場合は、高速フーリエ変換処理を行うこと自体は可能であるものの、非常に効率が悪い処理を行わなければならないので、処理速度が遅くなる。
【0007】
また、従来の高速フーリエ変換処理装置には、内部ワーキングメモリが不足する場合には複数個の装置を並列接続して処理を行うことができるが、この処理を行う場合には外付部品として複素加減算器、複素乗算器、作業用メモリ等を新たに追加してシステムの構築を行わなければならず、装置規模が非常に大きくなってしまうという欠点があった。例えば、上述の文献に開示されている高速フーリエ変換処理装置では、単一の装置では1024点を越えるサンプル点数の高速フーリエ変換を行うことができないため、例えばサンプル点数が2048点の場合や4096点の場合には、上述のような新たなシステムを構築しなければならない。
【0008】
このような理由により、基数4または基数2のいずれの高速フーリエ変換アルゴリズムにも対応することができ、また、サンプル点数を2倍に拡張する場合に外付部品を用いることなく単に複数個のチップを接続するだけでよい高速フーリエ変換処理装置の登場が嘱望されていた。
【0011】
【課題を解決するための手段】
この発明に係る高速フーリエ変換処理装置は、離散値の複素数データを入力して、可変サンプル点数の高速フーリエ変換演算を基数4または基数2のアルゴリズムで実行する高速フーリエ変換処理装置に関するものである。
【0012】
そして、サンプル点数が4n ×2個または4n 個(nは自然数)の複素数データを外部から入力して1つのグループとして一時的に記憶する作業用記憶手段と、この作業用記憶手段に記憶された複素数データの各グループを計算列とサンプル点番号とにしたがって16個のグループAG1,BG1,CG1,DG1,AG2,BG2,CG2,DG2,AG3,BG3,CG3,DG3,AG4,BG4,CG4,DG4に分割し、分割後の各グループの組合せ{AG1,BG1,CG1,DG1},{AG2,BG2,CG2,DG2},{AG3,BG3,CG3,DG3},{AG4,BG4,CG4,DG4}のそれぞれについて、各組合わせの各グループに属するi番目の複素数データAi ,Bi ,Ci ,Di とひねり係数Wi1,Wi2,Wi3,Wi4を用いた演算
i ={(Ai +Ci )+(Bi +Di )}×Wi1 ・・・(1)
i ={(Ai +Ci )−(Bi +Di )}×Wi3 ・・・(2)
i ={(Ai −Ci )−j(Bi −Di )}×Wi2 ・・・(3)
i ={(Ai −Ci )+j(Bi −Di )}×Wi4 ・・・(4)
を実行する第1の演算手段と、この第1の演算手段の演算結果ai ,bi ,ci ,di を4個ずつ取り込んで4行4列の行列を形成した後でこの行列を転置し、これにより得られた転置行列を構成する複素数データを1列ずつ出力する転置手段と、この転置手段から入力した複素数データをAi ,Bi ,Ci ,Di として演算(1)〜(4)を順次行うとともにその結果であるai ,bi ,ci ,di を作業用記憶手段にグループの組合せ{AG1,AG2,AG3,AG4},{BG1,BG2,BG3,BG4},{CG1,CG2,CG3,CG4},{DG1,DG2,DG3,DG4}に順次記憶させる第2の演算手段とを備える。
【0025】
【発明の実施の形態】
以下、この発明の実施の形態について、図面を用いて説明する。なお、図中、各構成成分の大きさ、形状および配置関係は、この発明が理解できる程度に概略的に示してあるにすぎず、また、以下に説明する数値的条件は単なる例示にすぎないことを理解されたい。
【0026】
第1の実施の形態
以下、この発明の第1の実施の形態について、図1〜図3を用いて説明する。
なお、この実施の形態では、サンプル点数が2048点の場合を例にとって説明する。
【0027】
図1は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【0028】
同図に示したように、外部データの実数部を入力する入力端子101と虚数部を入力する入力端子102とは、それぞれ、レジスタ103,104の入力端に接続されている。そして、これらのレジスタ103,104の出力端は、セレクタ105,106の一方の入力端に接続されている。また、セレクタ105,106の出力データは、作業用RAM107に取り込まれる。
【0029】
この作業用RAM107は、データ入力バッファ部107aと、実数データ記憶部107bと、虚数データ記憶部107cと、データ出力バッファ部107dとを備えている。この作業用RAM107には、2048点の複素数データを格納することができる。
【0030】
かかる作業用RAM107の出力データは、第1のデータパス108および第2のデータパス109に入力される。また、sin/cos係数用ROM110はひねり係数を記憶している。そして、このsin/cos係数用ROM110から出力されたひねり係数も、第1のデータパス108および第2のデータパス109に入力される。
【0031】
第1のデータパス108および第2のデータパス109は、入力データおよびひねり係数を用いて後述するような演算処理を行い、演算結果を示すデータを出力する。そして、この出力データは、作業用RAM107に、セレクタ105,106を介して入力される。続いて、この作業用RAM107の出力信号が、それぞれ、セレクタ111,112に入力される。そして、これらのセレクタ111,112の出力信号は、レジスタ113,114を介して、実数部用の出力端子115および虚数部用の出力端子116に供給される。
【0032】
セレクタ111,112には、上述したデータパス108,109の出力信号の他、作業用RAM107の出力信号およびsin/cos係数用ROM110の出力信号も入力される。そして、後述するシーケンス制御部119の制御によって選択された信号を、レジスタ113,114を介して、出力端子115,116に供給する。
【0033】
クロック生成部117は、外部から入力したシステムクロック信号SCLKを変換して、メモリアドレス発生部118およびシーケンス制御部119に供給する。
【0034】
メモリアドレス発生部118は、クロック生成部117から入力されたクロック信号のタイミングにしたがってアドレス信号を発生させ、作業用RAM107およびsin/cos係数用ROM110に供給する。
【0035】
シーケンス制御部119は、外部から入力された状態制御信号およびクロック生成部117から入力されたクロック信号にしたがって、作業用RAM107、データパス108,109およびsin/cos係数用ROM110の動作を制御するとともに、セレクタ105,106,111,112の出力信号を選択する。また、外部に対して、状態表示信号を出力することもできる。
【0036】
図2(A)は、図1に示した第1のデータパス108および第2のデータパス109の内部構造を概念的に示したものである。
【0037】
同図に示したように、これらのデータパス108,109は、一段目の演算器として、加算器201,202と、減算器203と、複素減算器204とを備えている。そして、加算器201は演算Ai +Ci を、加算器202は演算Bi +Di を、減算器203は演算Ai −Ci を、複素減算器204は演算j(Bi −Di )を行う。また、これらの4個の演算器201〜204は、それぞれバイパス211〜214を有しており、これらの演算を行うことなく、データAi ,Bi ,Ci ,Di をそのまま二段目の演算器221〜224に転送することもできる。なお、一段目の演算器201〜204での演算を行うのか或いはバイパス211〜214を用いてデータをそのまま転送するのかの制御は、シーケンス制御部119が行う。
【0038】
また、二段目の演算器としては、図2(A)に示したように、加算器221,223および減算器222,224が設けられている。そして、加算器221は一段目の加算器201,202の出力値(またはバイパス211,212から取り込まれたデータ)の加算を行い、減算器222は一段目の加算器201,202の出力値(またはバイパス211,212から取り込まれたデータ)の減算を行い、加算器223は一段目の減算器203の出力値と複素減算器204の出力値と(またはバイパス213,214から取り込まれたデータ)の加算を行い、減算器224は一段目の減算器203の出力値と複素減算器204の出力値と(またはバイパス213,214から取り込まれたデータ)の減算を行う。
【0039】
さらに、三段目の演算器としては、図2(A)に示したように、乗算器231,232,233,234が設けられている。そして、乗算器231は二段目の加算器221の出力値に対してsin/cos係数用ROM110から入力されたひねり係数W1 または「1」(同図では信号S1 )を掛けた数ai を出力し、乗算器232は減算器222の出力値に対してひねり係数W3 または「1」(同図では信号S2 )を掛けた数ci を出力し、乗算器233は加算器223の出力値に対してひねり係数W2 または「1」(同図では信号S3 )を掛けた数bi を出力し、乗算器234は減算器224の出力値に対してひねり係数W4 または「1」(同図では信号S4 )を掛けた数di を出力する。なお、これらの乗算器231〜234で二段目の演算器221〜224の出力値にsin/cos係数用ROM110から入力されたひねり係数を掛けるか「1」を掛けるかの制御は、シーケンス制御部119が行う。
【0040】
この実施の形態では、後述するように、基数が4の演算処理を行う場合には、一段目の各演算器201〜204による演算を行い(すなわちバイパス211〜214を使用せず)、且つ、三段目の各演算器231〜234ではひねり係数を掛ける。このときの第1のデータパス108および第2のデータパス109の等価回路を図2(B)に示す。
【0041】
一方、基数が2の演算処理を行う場合には、一段目はバイパス211〜214を使用してデータの転送のみを行い(すなわち演算器201〜204による演算は行わず)、且つ、三段目の各演算器231〜234では「1」を掛ける。このときの第1のデータパスおよび第2のデータパス109の等価回路を図2(C)に示す。
【0042】
この実施の形態に係る高速フーリエ変換処理演算の演算式は周知であるが、例としてサンプル点数が2048の場合を、表1、表2に示す。
【0043】
【表1】
Figure 0003938238
【0044】
【表2】
Figure 0003938238
【0045】
次に、図1に示した作業用RAM107の内部構造について、図3を用いて説明する。
【0046】
同図に示したように、この作業用RAM107は、情報を記憶するためのメモリアレイ部301〜304と、これらのメモリアレイ部301〜304に書き込むデータを一時的に保持するための書き込みデータレジスタ311〜314と、書き込みデータあるいは読み出しデータの番地を指定する際にアドレスデータを一時的に保持するためのアドレスレジスタ321〜324と、このメモリアレイ部301〜304から出力データを選択するための出力セレクタ331と、4個の出力セレクタから出力されたデータを一時的に保持するための出力レジスタ332とを備えている。
【0047】
なお、ここではメモリアレイ部や各レジスタを4個づつに分離した構成を採用したが、この構成は必須ではない。但し、リード/ライトを同時に行うためには、2個以上に分離するか、または、マルチポートのメモリアレイを用いた方がよい。
【0048】
次に、図1に示した高速フーリエ変換処理装置の動作について説明する。
【0049】
まず、被処理データ(複素数)が、実数部と虚数部とに分けられて、入力端子101,102から装置内に入力される。このとき、セレクタ105,106では、シーケンス制御部119によって、レジスタ103,104からの入力が選択されている。このため、被処理データのうち、実数部は作業用RAM107の実数データ記憶部107bに、虚数部は同RAM107の虚数データ記憶部107cに、それぞれ格納される。このようにして、2048点分の複素数データが、順次、作業用RAM107に格納される。
【0050】
作業用RAM107への被処理データの格納が終了すると、続いて、これらの被処理データを用いて高速フーリエ変換処理を行う。
【0051】
なお、この実施の形態ではサンプル点数を2048(45 ×2)としているので、以下に説明するように、基数4の演算処理を5回繰り返した後、基数2の演算処理を1回行う。
【0052】
まず、1回目の演算処理(基数4)について説明する。
【0053】
この演算処理では、図4のステージ1(なお、各ステージはこの発明の「計算列」に相当する)に示したように、作業用RAM107に格納された複素数データを、格納されたアドレス(この発明の「サンプル点番号」と一致する)にしたがって4個のグループに分けて扱う。すなわち、0番地から511番地までに格納された複素数データをグループA、512番地から1023番地までに格納された複素数データをグループB、1024番地から1535番地までに格納された複素数データをグループC、1536番地から2047番地までに格納された複素数データをグループDとする。
【0054】
最初に、作業用RAM107は、グループA,B,C,Dのそれぞれ最初の複素数データ(すなわち、0番地、512番地、1024番地および1536番地の複素数データ)を出力する。そして、これらの4個の複素数データは、それぞれ、第1のデータパス108および第2のデータパス109に入力される。また、これと同時に、sin/cos係数用ROM110が、0番地、512番地、1024番地および1536番地に対応するひねり係数W1 ,W2 ,W3 ,W4 を出力する。そして、ひねり係数W1 ,W3 は第1のデータパス108に入力され、ひねり係数W2 ,W4 は第2のデータパス109に入力される。
【0055】
そして、第1のデータパス108は、次式(1),(2)の演算を行うことにより、複素数データai ,ci を算出する。
【0056】
i ={(Ai +Ci )+(Bi +Di )}×W1 ・・・(1)
i ={(Ai +Ci )−(Bi +Di )}×W3 ・・・(2)
また、第2のデータパス109は、次式(3),(4)の演算を行うことにより、複素数データbi ,di を算出する。
【0057】
i ={(Ai −Ci )−j(Bi −Di )}×W2 ・・・(3)
i ={(Ai −Ci )+j(Bi −Di )}×W4 ・・・(4)
なお、式(1)〜(4)において、Ai ,Bi ,Ci ,Di は、それぞれ作業用RAM107に格納された複素数データのうち、グループA,B,C,Dの番地に属するデータを示している。すなわち、ここでは、0番地、512番地、1024番地および1536番地の複素数データを示している。
【0058】
これらの式(1)〜(4)を用いたバタフライ演算について、図2(B)用いて説明する。
【0059】
同図に示したように、第1のデータパス108および第2のデータパス109にAi ,Bi ,Ci ,Di に相当する複素数データを取り込んで、まず、第1段階として(Ai +Ci ),(Bi +Di ),(Ai −Ci ),j(Bi −Di )を算出し、次に、これらの算出値を用いて第2段階で(Ai +Ci )+(Bi +Di ),(Ai +Ci )−(Bi +Di ),(Ai −Ci )−j(Bi −Di ),(Ai −Ci )+j(Bi −Di )を算出し、さらに、これらの算出値を用いて第3段階で{(Ai +Ci )+(Bi +Di )}×W1 ,{(Ai +Ci )−(Bi +Di )}×W3 ,{(Ai −Ci )−j(Bi −Di )}×W2 ,{(Ai −Ci )+j(Bi −Di )}×W4 を算出して、それぞれを演算結果ai ,ci ,bi ,di として出力する。
【0060】
演算が終了すると、データパス108,109から、この演算結果ai ,bi ,ci ,di が出力される。このとき、シーケンス制御部119の制御により、セレクタ105,106は、データパス108,109からの入力を選択する。そして、データパス108,109の出力データが、作業用RAM107に格納される。このとき、グループAに属する番地(ここでは0番地)には式(1)の演算結果ai が、グループBに属する番地(ここでは512番地)には式(3)の演算結果bi が、グループCに属する番地(ここでは1024番地)には式(2)の演算結果ci が、グループDに属する番地(ここでは1536番地)には式(4)の演算結果di が、それぞれ格納される。なお、複素数データai ,bi ,ci ,di の格納場所は、シーケンス制御部119がメモリアドレス発生部118を制御することによって決定する。
【0061】
続いて、1番地、513番地、1025番地および1537番地の複素数データを用いて同様の演算処理を行ない、以下同様にしてすべての番地の複素数データについて順次演算処理を行う。
【0062】
このようにして1回目の演算処理が終了すると、次に、以下のようにして2回目の演算処理(基数4)を行う。
【0063】
2回目の演算処理では、図4のステージ2に示したように、作業用RAM107の各番地のうち、0番地〜511番地、512番地〜1023番地、1024番地〜1535番地および1536番地〜2047番地を、それぞれ、さらに4個のグループに分割する。すなわち、この2回目の演算処理では、作業用RAM107の各番地を合計16個に分割する。
【0064】
そして、例えば、0番地〜511番地のうち、0番地〜127番地をグループA、128番地〜255番地をグループB、156番地〜383番地をグループC、384番地〜511番地をグループDとして、上述の式(1)〜(4)を用いた演算処理を行う。
【0065】
すなわち、最初に、0番地、128番地、156番地および384番地の複素数データを作業用RAM107から読み出すとともに、これらの番地に対応するひねり係数をsin/cos係数用ROM110から読み出し、データパス108,109に取り込む。続いて、0番地の複素数データをAi 、128番地の複素数データをBi 、156番地の複素数データをCi 、384番地の複素数データをDi として、上述の式(1)〜(4)を実行する。そして、この演算によって得られた複素数データai ,bi ,ci ,di を、それぞれ、作業用RAM107の0番地、128番地、156番地および384番地に格納する。その後、これと同様にして、0番地〜511番地の各複素数データを用いた演算処理を順次実行する。
【0066】
このようにして0番地〜511番地の複素数データを用いた演算処理が終了すると、次に、512番地〜1023番地をグループA,B,C,Dに分割して、同様の演算処理を行う。さらに、1024番地〜1535番地および1536番地〜2047番地の複素数データについても、同様にして演算処理を行う。
【0067】
以上のようにして2回目の演算処理が終了すると、次に、以下のようにして3回目の演算処理(基数4)を行う。
【0068】
3回目の演算処理では、図4のステージ3に示したように、作業用RAM107の各番地のうち、2回目の演算処理で16分割した番地のそれぞれを、さらにグループA〜Dに4分割する。すなわち、この3回目の演算処理では、作業用RAM107の各番地を合計64個に分割する。
【0069】
例えば、上述の2回目の演算処理で16分割した最初の番地群である0番地〜127番地のうち、0番地〜31番地はグループA、32番地〜63番地はグループB、64番地〜95番地はグループC、96番地〜127番地はグループDとなる。
【0070】
3回目の演算処理においても、まず最初に、0番地、32番地、64番地および96番地の複素数データを作業用RAM107から読み出すとともに、これらの番地に対応するひねり係数をsin/cos係数用ROM110から読み出し、データパス108,109に取り込む。続いて、0番地の複素数データをAi 、32番地の複素数データをBi 、64番地の複素数データをCi 、96番地の複素数データをDi として、上述の式(1)〜(4)を実行する。そして、この演算によって得られた複素数データai ,bi ,ci ,di を、それぞれ、作業用RAM107の0番地、32番地、64番地および96番地に格納する。その後、これと同様にして、他の番地の各複素数データを用いた演算処理を順次実行する。
【0071】
このようにして0番地〜127番地の複素数データを用いた演算処理が終了すると、次に、128番地〜255番地をグループA,B,C,Dに分割して、同様の演算処理を行う。さらに、残りの各番地ブロックの複素数データについても、同様にして演算処理を行う。
【0072】
以上のようにして3回目の演算処理が終了すると、次に、以下のようにして4回目の演算処理(基数4)を行う。
【0073】
4回目の演算処理では、図4のステージ4に示したように、作業用RAM107の各番地のうち、3回目の演算処理で64分割した番地のそれぞれを、さらにグループA〜Dに4分割する。すなわち、この4回目の演算処理では、作業用RAM107の各番地を合計256個に分割する。
【0074】
例えば、上述の3回目の演算処理で64分割した最初の番地ブロックである0番地〜31番地のうち、0番地〜7番地はグループA、8番地〜15番地はグループB、16番地〜23番地はグループC、24番地〜31番地はグループDとなる。
【0075】
そして、最初に、0番地、8番地、16番地および24番地の複素数データを作業用RAM107から読み出すとともに、これらの番地に対応するひねり係数をsin/cos係数用ROM110から読み出し、データパス108,109に取り込む。続いて、0番地の複素数データをAi 、8番地の複素数データをBi 、16番地の複素数データをCi 、24番地の複素数データをDi として、上述の式(1)〜(4)を実行する。その後、この演算によって得られた複素数データai ,bi ,ci ,di を、それぞれ、作業用RAM107の0番地、8番地、16番地および24番地に格納する。その後、これと同様にして、他の番地の各複素数データを用いた演算処理を順次実行する。
【0076】
このようにして0番地〜31番地の複素数データを用いた演算処理が終了すると、次に、32番地〜63番地をグループA,B,C,Dに分割して、同様の演算処理を行う。さらに、残りの各番地ブロックの複素数データについても、同様にして演算処理を行う。
【0077】
以上のようにして4回目の演算処理が終了すると、次に、以下のようにして5回目の演算処理(基数4)を行う。
【0078】
5回目の演算処理でも、図4のステージ5に示したように、作業用RAM107の各番地のうち、4回目の演算処理で256分割した番地のそれぞれを、さらにグループA〜Dに4分割する。すなわち、この4回目の演算処理では、作業用RAM107の各番地を合計1024個に分割する。
【0079】
例えば、256分割した最初の番地ブロックである0番地〜7番地のうち、0番地および1番地はグループA、2番地および3番地はグループB、4番地および5番地はグループC、6番地および7番地はグループDとなる。
【0080】
そして、最初に、0番地、2番地、4番地および6番地の複素数データを作業用RAM107から読み出すとともに、これらの番地に対応するひねり係数をsin/cos係数用ROM110から読み出し、データパス108,109に取り込む。続いて、0番地の複素数データをAi 、2番地の複素数データをBi 、4番地の複素数データをCi 、6番地の複素数データをDi として、上述の式(1)〜(4)を実行する。その後、この演算によって得られた複素数データai ,bi ,ci ,di を、それぞれ、作業用RAM107の0番地、2番地、4番地および6番地に格納する。その後、これと同様にして、1番地、3番地、5番地、7番地の各複素数データを用いた演算処理を実行する。
【0081】
このようにして0番地〜7番地の複素数データを用いた演算処理が終了すると、次に、8番地〜15番地をグループA,B,C,Dに分割して、同様の演算処理を行う。さらに、残りの各番地ブロックの複素数データについても、同様にして演算処理を行う。
【0082】
以上のようにして5回目の演算処理が終了すると、次に、6回目の演算処理として、基数2の演算処理を行う。
【0083】
この演算処理では、図4のステージ6に示したように、5回目の演算処理の場合と同様、作業用RAM107の各番地を合計1024個に分割する。また、この6回目の演算処理では、グループA,BとグループC,Dとは同じ演算処理を行なう。
【0084】
例えば、1024分割した最初の番地群である0番地、1番地および2番目の番地群である2番地、3番地のうち、0番地はグループA、1番地はグループB、2番地はグループC、3番地はグループDとなる。
【0085】
そして、最初に、0番地、1番地、2番地および3番地の複素数データを作業用RAM107から読み出す。
【0086】
そして、第1のデータパス108は、これらの複素数データを用いて次式(5),(6)の演算を行うことにより、複素数データai ,bi を算出する。
【0087】
i =Ai +Bi ・・・(5)
i =Ai −Bi ・・・(6)
また、第2のデータパス109は、次式(7),(8)の演算を行うことにより、複素数データci ,di を算出する。
【0088】
i =Ci +Di ・・・(7)
i =Ci −Di ・・・(8)
なお、式(5)〜(8)において、Ai ,Bi ,Ci ,Di は、それぞれ作業用RAM107に格納された複素数データのうち、グループA,B,C,Dの番地に属するデータを示している。すなわち、ここでは、0番地、1番地、2番地および3番地の複素数データを示している。
【0089】
これらの式(5)〜(8)を用いたバタフライ演算について、図2(C)を用いて説明する。
【0090】
同図に示したように、まず、第1のデータパス108は複素数データAi ,Bi を、データパス109は複素数データCi ,Di を、それぞれ取り込む。そして、第1のデータパス108は、Ai +Bi ,Ai −Bi を算出し、演算結果ai ,bi を出力する。一方、第2のデータパス109は、Ci +Di ,Ci −Di を算出し、演算結果ci ,di を出力する。
【0091】
このようにして得られた演算結果ai ,bi ,ci ,di は、作業用RAM107の0番地、1番地、2番地および3番地に格納される。
【0092】
そして、このようにして0番地〜3番地の複素数データを用いた演算処理が終了すると、残りの番地ブロックの各複素数データについても、同様の演算処理を行なう。
【0093】
その後、作業用RAM107内に格納された複素数データが、レジスタ113,114を介して、出力端子115,116から外部へ出力される。
【0094】
次に、この実施の形態に係るデータパス108,109の他の構成例について、図12を用いて説明する。同図において、図1と同じ符号を付した構成部は、それぞれ図1の場合と同じものを示している。
【0095】
図12に示した第1のデータパス108において、レジスタ1211は、作業用RAM107から入力した複素数データAi 〜Di の実数部または虚数部を、一時的に保持する。
【0096】
また、加算器1212は、レジスタ1211から入力したデータを用いて、後述のような演算を行う。
【0097】
セレクタ1213は、加算器1212から入力したデータまたはレジスタ1211から入力したデータを選択して、レジスタ1214に出力する。
【0098】
レジスタ1214は、セレクタ1213から入力したデータを、一時的に保持する。
【0099】
加減算器1215は、レジスタ1214から入力した複素数データを用いて、後述のような加算または減算を行う。
【0100】
レジスタ1216,1217は、加減算器1215が出力したデータを、交互に、一時的に保持する。
【0101】
レジスタ1218は、sin/cos係数用ROM110(図1参照)から入力したひねり係数W1 を、一時的に保持する。また、レジスタ1219は、sin/cos係数用ROM110から入力したひねり係数W3 を、一時的に保持する。
【0102】
乗算回路1220は、レジスタ1216から入力したデータに、ひねり係数W1 、実数「1」、または実数「0」を乗算する。同様に、乗算回路1221は、レジスタ1217から入力したデータに、ひねり係数W3 、実数「1」、または実数「0」を乗算する。
【0103】
レジスタ1222は、乗算回路1220が出力した演算結果を、一時的に保持する。同様に、レジスタ1223は、乗算回路1221が出力した演算結果を、一時的に保持する。
【0104】
加減算回路1224は、レジスタ1222,1223から入力したデータを用いて、後述のような加算または減算を行う。
【0105】
レジスタ1225は、加減算回路1224から入力したデータを、一時的の保持する。このレジスタ1225に保持されたデータは、セレクタ105,106を介して、作業用RAM107に格納される。
【0106】
第2のデータパス109において、レジスタ1231は、作業用RAM107から入力した複素数データAi 〜Di の実数部または虚数部を、一時的に保持する。
【0107】
また、減算/複素減算器1232は、レジスタ1231から入力したデータを用いて、後述のような演算を行う。
【0108】
セレクタ1233は、減算/複素減算器1232から入力したデータまたはレジスタ1231から入力したデータを選択して、レジスタ1234に出力する。
【0109】
レジスタ1234は、セレクタ1233から入力したデータを、一時的に保持する。
【0110】
加減算器1235は、レジスタ1234から入力した複素数データを用いて、後述のような加算または減算を行う。
【0111】
レジスタ1236,1237は、加減算器1235が出力したデータを、交互に、一時的に保持する。
【0112】
レジスタ1238は、sin/cos係数用ROM110(図1参照)から入力したひねり係数W2 を、一時的に保持する。また、レジスタ1239は、sin/cos係数用ROM110から入力したひねり係数W4 を、一時的に保持する。
【0113】
乗算回路1240は、レジスタ1236から入力したデータに、ひねり係数W2 、実数「1」、または実数「0」を乗算する。同様に、乗算回路1241は、レジスタ1237から入力したデータに、ひねり係数W4 、実数「1」、または実数「0」を乗算する。
【0114】
レジスタ1242は、乗算回路1240が出力した演算結果を、一時的に保持する。同様に、レジスタ1243は、乗算回路1241が出力した演算結果を、一時的に保持する。
【0115】
加減算回路1244は、レジスタ1242,1243から入力したデータを用いて、後述のような加算または減算を行う。
【0116】
レジスタ1245は、加減算回路1244から入力したデータを、一時的の保持する。このレジスタ1245に保持されたデータは、セレクタ105,106を介して、作業用RAM107に格納される。
【0117】
続いて、図12に示したデータパス108,109の動作について、図13〜図16を用いて説明する。
【0118】
図13は基数が4のときのデータパス108の動作を説明するためのタイミングチャートである。
【0119】
図13に示したように、作業用RAM107は、システムクロックSCLKの立ち下がりタイミングで、複素数データAi ,Ci の実数部(図13ではR(A) ,R(C) で表す)、複素数データBi ,Di の実数部(図13ではR(B) ,R(D) で表す)、複素数データAi ,Ci の虚数部(図13ではI(A) ,I(C) で表す)、複素数データBi ,Di の虚数部(図13ではI(B) ,I(D) で表す)を、順次出力する。これらのデータR(A) およびR(C) 、R(B) およびR(D) 、I(A) およびI(C) 、I(B) およびI(D) は、システムクロックSCLKの立ち上がりタイミングで、レジスタ1211に順次格納される。
【0120】
加算器1212は、まず、レジスタ1211からデータR(A) ,R(C) を入力して、演算R(A,C) =R(A) +R(C) を行う。続いて、同様の演算R(B,D) =R(B) +R(D) 、I(A,C) =I(A) +I(C) 、I(B,D) =I(B) +I(D) を、順次実行する。これらの演算結果R(A,C) 、R(B,D) 、I(A,C) 、I(B,D) は、セレクタ1213を介して、レジスタ1214に順次格納される。
【0121】
加減算器1215は、まず、レジスタ1214からデータR(A,C) およびデータR(B,D) を入力して演算R(+) =R(A,C) +R(B,D) を行い、続いて、レジスタ1214からデータR(A,C) およびデータR(B,D) を再び入力して演算R(-) =R(A,C) −R(B,D) を実行する。さらに、レジスタ1214からデータI(A,C) およびデータI(B,D) を入力して演算I(+) =I(A,C) +I(B,D) を行い、続いて、レジスタ1214からデータI(A,C) およびデータI(B,D) を再び入力して演算I(-) =I(A,C) −I(B,D) を実行する。そして、演算結果R(+) ,I(+) はレジスタ1216に格納され、演算結果R(-) ,I(-) はレジス1217に格納される。
【0122】
乗算回路1220は、まず、レジスタ1216から入力したデータR(+) に、レジスタ1218から入力したひねり係数W1 の実数部W1Rを乗算することによってR1 を算出し、さらに、データR(+) にひねり係数W1 の虚数部W1Iを乗算することによってI1 を算出する。次に、レジスタ1216から入力したデータI(+) に、ひねり係数W1 の虚数部W1Iを乗算することによってR2 を算出した後で、さらに、データI(+) にひねり係数W1 の実数部W1Rを乗算することによってI2 を算出する。これらの演算結果R1 ,I1 ,R2 ,I2 は、レジスタ1222に格納される。
【0123】
一方、乗算回路1221は、まず、レジスタ1217から入力したデータR(-) に、レジスタ1219から入力したひねり係数W3 の実数部W3Rを乗算することによってR3 を算出し、さらに、データR(-) にひねり係数W3 の虚数部W3Iを乗算することによってI3 を算出する。次に、レジスタ1217から入力したデータI(-) に、ひねり係数W3 の虚数部W3Iを乗算することによってR4 を算出し、さらに、データI(-) にひねり係数W3 の実数部W3Rを乗算することによってI4 を算出する。これらの演算結果R3 ,I3 ,R4 ,I4 は、レジスタ1223に格納される。
【0124】
加減算器1224は、まず、レジスタ1222から読み込んだデータR1 ,R2 を用いてR(ai )=R1 +R2 を算出し、続いて、レジスタ1223から読み込んだデータR3 ,R4 を用いてR(ci )=R3 +R4 を算出する。さらに、レジスタ1222から読み込んだデータI1 ,I2 を用いてI(ai )=I1 +I2 を算出し、続いて、レジスタ1223から読み込んだデータI3 ,I4 を用いてI(ci )=I3 +I4 を算出する。これにより、上式(1)に示した複素数データai の実数部R(ai )および虚数部I(ai )と、上式(2)に示した複素数データci の実数部R(ci )および虚数部I(ci )とを得ることができる。これらの演算結果は、レジスタ1225およびセレクタ105を介して、作業用RAM107に格納される。
【0125】
また、図14は基数が4のときのデータパス109の動作を説明するためのタイミングチャートである。
【0126】
上述の図13を用いて説明したように、作業用RAM107がデータR(A) ,R(C) 、データR(B) ,R(D) 、データI(A) ,I(C) 、データI(B) ,I(D) を順次出力すると、これらのデータはレジスタ1231にも順次格納される。
【0127】
減算/複素減算器1232は、まず、レジスタ1231からデータR(A) ,R(C) を入力して、演算R(A,C) =R(A) −R(C) を行う。続いて、同様の演算I(B,D) =j(R(B) −R(D) )、I(A,C) =I(A) −I(C) 、R(B,D) =j(I(B) −I(D) )を、順次実行する。これらの演算結果R(A,C) 、I(B,D) 、I(A,C) 、R(B,D) は、セレクタ1233を介して、レジスタ1234に順次格納される。
【0128】
加減算器1235は、まず、レジスタ1234からデータR(A,C) およびデータI(B,D) を入力して演算R(+) =R(A,C) +R(B,D) を行い、続いて、レジスタ1234からデータR(A,C) およびデータR(B,D) を再び入力して演算R(-) =R(A,C) −R(B,D) を実行する。さらに、レジスタ1234からデータI(A,C) およびデータI(B,D) を入力して演算I(-) =I(A,C) −I(B,D) を行い、続いて、レジスタ1234からデータI(A,C) およびデータI(B,D) を再び入力して演算I(+) =I(A,C) +I(B,D) を実行する。そして、演算結果R(+) ,I(-) はレジスタ1236に格納され、演算結果R(-) ,I(+) はレジスタ1237に格納される。
【0129】
乗算回路1240は、まず、レジスタ1236から入力したデータR(+) に、レジスタ1218から入力したひねり係数W2 の実数部W2Rを乗算することによってR5 を算出し、さらに、データR(+) にひねり係数W2 の虚数部W2Iを乗算することによってI5 を算出する。次に、レジスタ1236から入力したデータI(-) に、ひねり係数W2 の虚数部W2Iを乗算することによってR6 を算出した後で、さらに、データI(-) にひねり係数W2 の実数部W2Rを乗算することによってI6 を算出する。これらの演算結果R5 ,I5 ,R6 ,I6 は、レジスタ1242に格納される。
【0130】
一方、乗算回路1241は、まず、レジスタ1237から入力したデータR(-) に、レジスタ1239から入力したひねり係数W4 の実数部W4Rを乗算することによってR7 を算出し、さらに、データR(-) にひねり係数W4 の虚数部W4Iを乗算することによってI7 を算出する。次に、レジスタ1236から入力したデータI(+) に、ひねり係数W4 の虚数部W4Iを乗算することによってR8 を算出し、さらに、データI(+) にひねり係数W4 の実数部W4Rを乗算することによってI8 を算出する。これらの演算結果R7 ,I7 ,R8 ,I8 は、レジスタ1243に格納される。
【0131】
加減算器1244は、まず、レジスタ1242から読み込んだデータR5 ,R6 を用いてR(bi )=R5 +R6 を算出し、続いて、レジスタ1243から読み込んだデータR7 ,R8 を用いてR(di )=R7 +R8 を算出する。さらに、レジスタ1242から読み込んだデータI5 ,I6 を用いてI(bi )=I5 +I6 を算出し、続いて、レジスタ1243から読み込んだデータI7 ,I8 を用いてI(di )=I7 +I8 を算出する。これらの演算結果は、レジスタ1245およびセレクタ105を介して、作業用RAM107に格納される。
【0132】
図15は、基数が2のときのデータパス108の動作を説明するためのタイミングチャートである。
【0133】
図15に示したように、まず、作業用RAM107が、基数が4の場合と同様、システムクロックSCLKの立ち下がりタイミングで、データR(A) ,R(C) 、データR(B) ,R(D) 、データI(A) ,I(C) およびデータI(B) ,I(D) を、順次出力すると、これらのデータのうちR(A) ,R(B) ,I(A) ,I(B) が、システムクロックSCLKの立ち上がりタイミングで、レジスタ1211に順次格納される。
【0134】
ここで、基数が2の場合は、セレクタ1213は、レジスタ1211から入力したデータを出力する。このため、レジスタ1214には、上述のデータR(A) ,R(B) ,I(A) ,I(B) が、順次格納される。
【0135】
加減算器1215は、まず、レジスタ1214からデータR(A) およびデータR(B) を入力して演算R(A,B) =R(A) +R(B) を行い、続いて、レジスタ1214からデータR(A) およびデータR(B) を再び入力して演算R(A,B) =R(A) −R(B) を実行する。さらに、レジスタ1214からデータI(A) およびデータI(B) を入力して演算I(A,B) =I(A) +I(B) を行い、続いて、レジスタ1214からデータI(A) およびデータI(B) を再び入力して演算I(A,B) =I(A) −I(B) を実行する。そして、演算結果R(A,B) ,I(A,B) はレジスタ1216に格納され、演算結果R(A,B) ,I(A,B) はレジスタ1217に格納される。
【0136】
乗算回路1220は、基数が2の場合には、ひねり係数としてW=1+j・0を用いる。すなわち、まず、レジスタ1216から入力したデータR(A,B) に「1」を乗算し、さらに、データR(A,B) に「0」を乗算する。次に、レジスタ1216から入力したデータI(A,B) に「1」乗算し、さらに、データI(A,B) に「0」を乗算する。これらの演算結果R(A,B) ,0,I(A,B) ,0は、レジスタ1222に格納される。
【0137】
また、乗算回路1221も、ひねり係数としてW=1+j・0を用いる。すなわち、まず、レジスタ1217から入力したデータR(A,B) に「1」を乗算し、さらに、データR(A,B) に「0」を乗算する。次に、レジスタ1217から入力したデータI(A,B) に「1」を乗算し、さらに、データI(A,B) に「0」を乗算する。これらの演算結果R(A,B) ,0,I(A,B) ,0は、レジスタ1223に格納される。
【0138】
加減算器1224は、まず、レジスタ1222から読み込んだデータR(A,B) ,0を用いてR(ai )=R(A,B) +0を算出し、続いて、レジスタ1223から読み込んだデータR(A,B) ,0を用いてR(bi )=R(A,B) +0を算出する。さらに、レジスタ1222から読み込んだデータI(A,B) ,0を用いてI(ai )=I(A,B) +0を算出し、続いて、レジスタ1223から読み込んだデータI(A,B) ,0を用いてI(bi )=I(A,B) +0を算出する。これらの演算結果は、レジスタ1225およびセレクタ105を介して、作業用RAM107に格納される。
【0139】
図16は、基数が2のときのデータパス109の動作を説明するためのタイミングチャートである。
【0140】
上述の図15を用いて説明したように、まず、作業用RAM107がデータR(A) ,R(C) 、データR(B) ,R(D) 、データI(A) ,I(C) およびデータI(B) ,I(D) を順次出力すると、これらのデータのうちR(C) ,R(D) ,I(C) ,I(D) が、システムクロックSCLKの立ち上がりタイミングで、レジスタ1231に順次格納される。
【0141】
そして、セレクタ1233が、レジスタ1231から入力したデータを出力することにより、レジスタ1234には上述のデータR(C) ,R(D) ,I(C) ,I(D) が順次格納される。
【0142】
加減算器1235は、このレジスタ1234に格納されたデータR(C) ,R(D) を用いて、演算R(C,D) =R(C) +R(D) および演算R(C,D) =R(C) −R(D) を順次実行する。さらに、レジスタ1234に格納されたデータI(C) ,I(D) を用いて演算I(C,D) =I(C) +I(D) および演算I(C,D) =I(C) −I(D) を実行する。そして、演算結果R(C,D) ,I(C,D) はレジスタ1236に格納され、演算結果R(C,D) ,I(C,D) はレジスタ1237に格納される。
【0143】
乗算回路1240は、図15の乗算回路1220と同様、ひねり係数としてW=1+j・0を用いた演算を行い、演算結果R(C,D) ,0,I(C,D) ,0をレジスタ1242に格納する。
【0144】
また、乗算回路1241も、ひねり係数としてW=1+j・0を用いて演算処理を行い、演算結果R(C,D) ,0,I(C,D) ,0をレジスタ1243に格納する。
【0145】
加減算器1244は、まず、レジスタ1242から読み込んだデータR(C,D) ,0を用いてR(ci )=R(C,D) +0を算出し、続いて、レジスタ1243から読み込んだデータR(C,D) ,0を用いてR(di )=R(C,D) +0を算出する。さらに、レジスタ1242から読み込んだデータI(C,D) ,0を用いてI(ci )=I(C,D) +0を算出し、続いて、レジスタ1243から読み込んだデータI(C,D) ,0を用いてI(di )=I(C,D) +0を算出する。これらの演算結果は、レジスタ1245およびセレクタ105を介して、作業用RAM107に格納される。
【0146】
図12に示したようにデータパス108,109を構成することにより、簡単な回路で効率よく演算処理を行うことができる。
【0147】
以上説明したように、この実施の形態に係る高速フーリエ変換処理装置によれば、基数が4の演算処理であっても基数が2の演算処理であっても高速で実行することが可能なデータパス108,109を、簡単な構成によって得ることができる。すなわち、この実施の形態によれば、基数4または基数2のいずれの高速フーリエ変換アルゴリズムにも対応することができる高速フーリエ変換処理装置を安価に提供することができる。
【0148】
第2の実施の形態
次に、この発明の第2の実施の形態について、図5を用いて説明する。なお、この実施の形態に係る高速フーリエ変換処理装置は、ブロック浮動小数点演算処理機能を有する点で、上述の第1の実施の形態と異なる。
【0149】
この実施の形態でも、サンプル点数が2048点の場合を例にとって説明する。
【0150】
図5は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【0151】
同図において、図1と同じ符号を付した構成部は、それぞれ、図1の場合と同じものを示している。
【0152】
また、図5において、第1のデータパス501および第2のデータパス502は、ブロック浮動小数点演算を行うためのシフト機能を有している点で、図1に示した各データパス108,109と異なる。なお、ブロック浮動小数点演算自体は公知の手法であるので、この演算で使用するシフト機能の詳細構成についての説明は省略する。
【0153】
また、ブロック浮動小数点検出記憶部503は、セレクタ105,106が出力した複素数データを取り込んでブロック浮動小数点を検出するとともに、この検出値を一時的に記憶する。ここで、後述するように、セレクタ105,106から出力されるのは、入力端子101,102を介して外部から入力された複素数データ或いはデータパス501,502が出力した複素数データである。なお、このブロック浮動小数点検出記憶部503が一時的に記憶したブロック浮動小数点の検出値は、データパス501,502およびシーケンス制御部119に転送される。
【0154】
出力ビットシフタ504,505は、作業用RAM107から複素数データを取り込むとともにシーケンス制御部119から浮動小数点指数を取り込む。そして、この浮動小数点指数の値に基づいて複素数データをシフトさせ、その結果を出力する。
【0155】
レジスタ506は、シーケンス制御部119から浮動小数点指数を入力し、外部に対して出力する。
【0156】
続いて、図5に示した高速フーリエ変換処理装置の動作について説明する。
【0157】
まず、上述の第1の実施の形態の場合と同様にして、最初の被処理データが、実数部と虚数部とに分けられて、入力端子101,102から装置内に入力され、さらに、作業用RAM107の実数データ記憶部107bおよび虚数データ記憶部107cにそれぞれ格納される。このとき、ブロック浮動小数点検出記憶部503は、この複素数データをセレクタ105,106から入力して浮動小数点指数を検出し、記憶する。
【0158】
続いて、入力端子101,102から2番目の被処理データが入力されて作業用RAMに格納されるときに、ブロック浮動小数点検出記憶部503は、この被処理データをセレクタ105,106から入力して浮動小数点指数を検出し、すでに記憶された検出値(ここでは1番目の被処理データの浮動小数点指数)と比較する。そして、既に記憶されている検出値の方が2番目の検出値よりも小さい場合は、記憶内容を変更することなく、既に記憶された検出値をそのまま保持する。一方、2番目の検出値の方が既に記憶されている検出値よりも小さい場合は、ブロック浮動小数点検出記憶部503の記憶内容を2番目の検出値に変更する。
【0159】
同様にして、3番目以降の被処理データについても、ブロック浮動小数点検出記憶部503で浮動小数点指数を検出し、これを、このブロック浮動小数点検出記憶部503内に既に記憶されている検出値と比較し、そのときの検出値の小さい方を記憶値とする。この実施の形態では、このような検出動作を、0番地〜511番地、512番地〜1023番地、1024番地〜1535番地および1536番地〜2047番地の4個のブロックについて、共通に行う。すなわち、このときの浮動小数点指数の検出では、後述する1回目の演算処理の時の各グループA,B,C,Dに対して共通の浮動小数点指数が決定される。
【0160】
これにより、作業用RAM107への2048個の被処理データの格納が終了した時点では、各ブロックに対して共通に、浮動小数点指数の検出値の中でもっとも小さいものが、ブロック浮動小数点検出記憶部503内に記憶されていることになる。
【0161】
このようにして被処理データを作業用RAM107に格納する動作が終了すると、続いて、これらの被処理データを用いて高速フーリエ変換処理を行う。
【0162】
この高速フーリエ変換処理は、上述の第1の実施例の場合と同様、以下のようにして、基数が4の演算処理を5回繰り返した後、基数が2の演算処理を1回行う。
【0163】
まず、1回目の演算処理(基数4)においては、作業用RAM107に格納された2048個の複素数データを、第1の実施の形態の場合と同様の4グループA,B,C,Dに分割する(図4のステージ1参照)。そして、データパス501,502が、作業用RAM107の0番地、512番地、1024番地および1536番地に格納された各複素数データとsin/cos係数用ROM110に格納されたひねり係数を読み込むと同時に、ブロック浮動小数点検出記憶部503からグループA,B,C,Dに対して共通な浮動小数点指数の検出値を読み込む。そして、この検出値と上述の式(1)〜(4)とを用いて、ブロック浮動小数点による演算処理を行う。
【0164】
演算が終了すると、データパス501,502から演算結果ai ,bi ,ci ,di が出力され、第1の実施の形態の場合と同様にして作業用RAM107に格納される。このときブロック浮動小数点検出記憶部503は、各演算結果ai ,bi ,ci ,di に対して浮動小数点指数を検出し、これらの検出結果をそのまま記憶する。
【0165】
続いて、作業用RAM107の1番地、513番地、1025番地および1537番地の各複素数データについてもブロック浮動小数点による演算処理を行い、演算結果ai ,bi ,ci ,di を順次作業用RAM107に格納する。また、この格納時に、ブロック浮動小数点検出記憶部503が、これらの演算結果ai ,bi ,ci ,di の浮動小数点指数を検出し、これらの検出値をそれぞれブロック浮動小数点検出記憶部503内に記憶された浮動小数点指数と比較する。このとき、演算結果ai の浮動小数点指数を前回の演算結果ai の浮動小数点指数と比較し、演算結果bi の浮動小数点指数を前回の演算結果bi の浮動小数点指数と比較するというように、それぞれ式(1)〜(4)の内の同じ式で得られた演算結果どうしで浮動小数点指数を比較する。そして、既に記憶されている浮動小数点指数が検出値よりも小さいときは、記憶内容を変更することなく、既に記憶された検出値をそのまま保持する。一方、検出値の方が既に記憶されている浮動小数点指数よりも小さい場合は、ブロック浮動小数点検出記憶部503の記憶内容をこの検出値に変更する。
【0166】
同様にして、他の番地の複素数データについても、ブロック浮動小数点による演算処理を行った後、演算結果ai ,bi ,ci ,di を作業用RAM107に格納する際にブロック浮動小数点検出記憶部503で浮動小数点指数を検出し、これを、このブロック浮動小数点検出記憶部503内に既に記憶されている値と比較して、そのときの検出値の小さい方を記憶値とする。
【0167】
この実施の形態では、このような検出動作により、後述する2回目の演算処理の時の浮動小数点指数が決定される。
【0168】
このようにして1回目の演算処理と浮動小数点指数の検出とが終了すると、次に、以下のようにして2回目の演算処理(基数4)を行う。
【0169】
2回目の演算処理では、第1の実施の形態の場合と同様、データRAM107の各番地のうち、0番地〜511番地、512番地〜1023番地、1024番地〜1535番地および1536番地〜2047番地を、それぞれ、さらに4個のグループに分割する。すなわち、この2回目の演算処理では、データRAM107の各番地を合計16個に分割する。
【0170】
そして、第1の実施の形態の場合と同様にして演算処理を行うとともに、演算結果を作業用RAM107に格納する際にブロック浮動小数点検出記憶部503で浮動小数点指数を検出して、最も小さい検出値をブロック浮動小数点検出記憶部503内に記憶する。そして、このような検出動作により、後述する三回目の演算処理の時の各グループA,B,C,Dに対して共通の浮動小数点指数が決定される。
【0171】
さらに、3回目〜6回目以降の演算処理についても、上述した1回目および2回目の演算処理と同様にして、ブロック浮動小数点による演算処理を行う。
【0172】
なお、ここでは、ブロック浮動小数点検出を演算処理のときの各グループA,B,C,Dについて共通としたが、2回目以降の演算処理に用いるブロック浮動小数点指数を各ステージ毎に全サンプル(この例では2048個)に対して共通に持ってもよい。
【0173】
6回目の演算処理が終了すると、最後に、演算結果を外部に出力する。このときは、まず、シーケンス制御部119がブロック浮動小数点検出記憶部503から各サンプルに対する全ステージで用いた浮動小数点指数の累算値を入力し、出力ビットシフタ504,505に送る。そして、出力ビットシフタ504,505は、この浮動小数点指数に基づいて、作業用RAM107から入力した複素数データをシフトさせた後、セレクタ111,112に対して出力する。これにより、データパス108,109の出力データが、レジスタ113,114を介して、出力端子115,116から外部へ出力される。
【0174】
また、必要であれば、出力ビットシフタ504,505によるシフトを行わずに複素数データを出力端子115,116から出力するとともに、最終的な浮動小数点指数をレジスタ506から外部に出力することもできる。
【0175】
次に、この実施の形態に係るデータパス108,109の他の構成例について、図17を用いて説明する。同図において、図5或いは図12と同じ符号を付した構成部は、これらの図面と同じものを示している。
【0176】
図17に示したデータパス108,109は、シフタ1701,1702を備えている点で、図12に示したデータパス108,109と異なる。このシフタ1701,1702は、ブロック浮動小数点検出記憶部503から、ブロック小数点指数を入力する。そして、このブロック小数点指数に基づいて、レジスタ1211,1231から取り込んだデータを所定ビットだけシフトさせる。これにより、ブロック浮動小数点検出記憶部503の制御に基づくブロック浮動小数点演算処理が可能となる。
【0177】
なお、他の構成部の動作は、上述の図12に示したデータパス108,109と同様であるので、説明を省略する。
【0178】
図17に示したようにデータパス108,109を構成することにより、簡単な回路で効率よく演算処理を行うことができる。
【0179】
以上説明したように、この実施の形態に係る高速フーリエ変換処理装置によれば、浮動小数点によるバタフライ演算を行う際に、基数が4の演算処理であっても基数が2の演算処理であっても高速で実行することが可能となる。すなわち、この実施の形態によれば、基数4または基数2のいずれの高速フーリエ変換アルゴリズムにも対応することができる、ブロック浮動小数点法による高速フーリエ変換処理装置を、安価に提供することができる。
【0180】
第3の実施の形態
次に、この発明の第3の実施の形態について、図6を用いて説明する。なお、この実施の形態は、第1の実施の形態にかかる高速フーリエ変換処理装置を2個並列に接続することによって、処理速度のさらなる向上を図ったものである。
【0181】
図6は、この実施の形態に係る高速フーリエ変換処理システムを概念的に示すブロック図である。
【0182】
同図において、プロセッサ601,602は、上述の第1の実施例で示した高速フーリエ変換処理装置である。かかるプロセッサ601,602の内部構成において、図1と同じ符号を付した構成成分は、それぞれ、図1の高速フーリエ変換処理装置の場合と同じものを示している。
【0183】
各プロセッサ601,602において、出力回路611は、図1のセレクタ111,112、レジスタ113,114および出力端子115,116を略記したものである。そして、この出力回路611は、それぞれ、出力選択回路606に接続されている。また、プロセッサ601のシーケンス制御部119から出力される状態表示信号は、NOTバッファ603を介して、プロセッサ602のシーケンス制御部119に状態制御信号として入力される。同様に、プロセッサ602のシーケンス制御部119から出力される状態表示信号は、NOTバッファ604を介して、プロセッサ601のシーケンス制御部119に状態制御信号として入力される。また、各プロセッサ601,602のシーケンス制御部119には、外部からシステム制御信号が入力される。
【0184】
また、各プロセッサ601,602において、セレクタ612は、図1のセレクタ105,106、レジスタ103,104および入力端子101,102を略記したものである。
【0185】
データ入力ポート605は、外部から被処理データを入力する。また、データ出力ポート607は、出力選択回路606から入力された処理後の複素数データを、外部に出力する。
【0186】
次に、図6に示した高速フーリエ変換処理システムの動作について説明する。
【0187】
まず、外部からのシステム制御信号がプロセッサ601を選択した状態で、N個(たとえばN=2048)の被処理データがデータ入力ポート605に入力される。これにより、これらのN個の被処理データは、プロセッサ601に入力される。次に、外部からのシステム制御信号がプロセッサ602を選択した状態で、例えばN個の被処理データがデータ入力ポート605に入力される。これにより、これらの被処理データは、プロセッサ602に入力される。
【0188】
そして、2個のプロセッサ601,602が、上述の第1の実施の形態の場合と同様の演算処理を、それぞれ別個に行う。
【0189】
各プロセッサ601,602が演算処理を終了すると、処理後の複素数データが出力選択回路606を介して、データ出力ポート607から出力される。
【0190】
この場合、例えばプロセッサ601が複素数データを出力してしている最中は、このプロセッサ601のシーケンス制御部119が状態表示信号をオンする。この信号は、NOTゲート603を介し、状態制御信号としてプロセッサ602のシーケンス制御部119に入力される。これにより、データ出力ポート607はプロセッサ601に占有され、プロセッサ602については処理後の複素数データの出力が禁止される。そして、プロセッサ601による複素数データの出力が終了すると、このプロセッサ601のシーケンス制御部119が出力する状態表示信号(すなわちプロセッサ602のシーケンス制御部119が入力する状態制御信号)がオフし、プロセッサ602に対する複素数データ出力の禁止が解除される。これにより、プロセッサ601が処理後の複素数データを出力している最中にプロセッサ602による複素数データの出力が行われてしまうことを防止することができる。
【0191】
なお、プロセッサ602にデータ出力ポート607を占有させる際の動作も同様である。
【0192】
このように、この実施の形態の高速フーリエ変換処理システムによれば、この発明に係る高速フーリエ変換処理装置(すなわちプロセッサ601,602)を並列に2個接続して2系統の被処理データ群を同時に処理することとしたので、フーリエ変換処理の処理速度をいっそう向上させることができる。
【0193】
なお、この実施の形態では2個の高速フーリエ変換処理装置を並列接続することとしたが、3個以上の高速フーリエ変換処理装置を並列することもできることはもちろんである。この場合には、処理速度のさらなる向上を図ることができる。
【0194】
また、この実施の形態に係る高速フーリエ変換処理システムでは、上述の第1の実施の形態に係る高速フーリエ変換処理装置を接続することとしたが、第2の実施の形態に係る高速フーリエ変換処理装置を並列接続してもよいことも、もちろんである。
【0195】
第4の実施の形態
次に、この発明の第4の実施の形態について、図7〜図10を用いて説明する。なお、この実施の形態は、第1の実施の形態にかかる高速フーリエ変換処理装置であって処理が可能なサンプル点数の最大値がN(この実施の形態ではN=4096とする)を2個並列に接続することによって、サンプル点数が2N(すなわち8192)の高速フーリエ変換処理を行うことができる高速フーリエ変換処理システムに関するものである。
【0196】
図7は、この実施の形態に係る高速フーリエ変換処理システムを概念的に示すブロック図である。
【0197】
同図において、マスタモード用プロセッサ701およびスレーブモード用プロセッサ702は、ともに、上述の第1の実施例で示した高速フーリエ変換処理装置からなる。かかるプロセッサ701,702の内部構成において、図1と同じ符号を付した構成成分は、それぞれ、図1の高速フーリエ変換処理装置の場合と同じものを示している。
【0198】
各プロセッサ701,702において、出力回路711は、図1のセレクタ111,112、レジスタ113,114および出力端子115,116を略記したものである。そして、この出力回路711は、それぞれ、出力選択回路706の入力端子に接続されている。
【0199】
また、各プロセッサ701,702において、セレクタ712は図1のセレクタ105,106、レジスタ103,104および入力端子101,102を略記したものである。
【0200】
マスタモード用プロセッサ701のセレクタ712は、マスタモード用入力選択回路713の出力端子に接続されている。そして、このマスタモード用入力選択回路713の入力端子からは、外部から入力された複素数データ或いはスレーブモード用プロセッサ702が出力した複素数データが選択的に入力される。
【0201】
同様に、スレーブモード用プロセッサ702のセレクタ712は、スレーブモード用入力選択回路714の出力端子に接続されており、このマスタモード用入力選択回路714の入力端子からは外部から入力された複素数データ或いはマスタモード用プロセッサ701が出力した複素数データが選択的に入力される。
【0202】
また、マスタモード用プロセッサ701のシーケンス制御部119から出力される状態表示信号は、NOTバッファ703を介して、スレーブモード用プロセッサ702のシーケンス制御部119に、状態制御信号として入力される。同様に、スレーブモード用プロセッサ702のシーケンス制御部119から出力される状態表示信号は、NOTバッファ704を介して、マスタモード用プロセッサ701のシーケンス制御部119に、状態制御信号として入力される。また、各プロセッサ701,702のシーケンス制御部119には、外部からシステム制御信号が入力される。
【0203】
データ入力ポート705は、外部から被処理データを入力する。また、データ出力ポート707は、出力選択回路706から入力された処理後の複素数データを、外部に出力する。
【0204】
図8は、図7に示した作業用RAM107の内部構成を示すブロック図である。同図において、図3と同じ符号を付した構成部は、それぞれ図3と同じものを示している。図8からわかるように、この作業用RAM107は、デコーダ333を備えている点で、図3の場合と異なる。このデコーダ333は、外部から入力されたアドレスデータの上位2ビットを変換して、4個のメモリアレイ部301〜304のいずれかを指定する信号を出力する。
【0205】
次に、図7および図8に示した高速フーリエ変換処理システムの動作について説明する。
【0206】
まず、8192点の被処理データのうち、最初の1024点が、データ入力ポート705およびマスタモード用入力選択回路713を介して、マスタモード用プロセッサ701内に入力される。そして、図9(A)に示したように、これらの被処理データが、マスタモード用プロセッサ701の作業用RAM107の0番地〜1023番地に格納される。続いて、次の1024点の被処理データが、データ入力ポート705およびスレーブモード用入力選択回路714を介して、スレーブモード用プロセッサ702内に入力され、作業用RAM107の0番地〜1023番地に格納される。以下同様にして、1024点ずつの被処理データが、各プロセッサ701,702の作業用RAM107に交互に格納される。そして、これにより、図9(A)に示したような番地割付で、8192点の被処理データを格納することができる。なお、このような番地割付の各アドレス領域(すなわち各プロセッサ701,702に設けられた作業用RAM107の0番地〜1023番地、1024番地〜2047番地、2048番地〜3071番地および3072番地〜4095番地)は、図8に示した各メモリアレイ301〜304に対応している。
【0207】
各プロセッサ701,702への複素数データの格納が終了すると、続いて、これらの複素数データを用いて高速フーリエ変換処理を行う。
【0208】
なお、この実施の形態では、サンプル点数が8192(=46 ×2)なので、以下に説明するように、基数が4の演算処理を6回繰り返した後、基数が2の演算処理を1回行う。
【0209】
まず、1回目の演算処理(基数4)について説明する。
【0210】
この演算処理では、各プロセッサ701,702ごとに、作業用RAM107に格納された複素数データを、格納されたアドレスにしたがって4個のグループに分けて扱う。ここでは、図9(A)に示したように、マスタモード用プロセッサ701に設けられた作業用RAM107の0番地から1023番地までに格納された複素数データ(サンプル点番号では0〜1023)をグループA1 、1024番地から2047番地までに格納された複素数データ(サンプル点番号では2048〜3071)をグループB1 、2048番地から3071番地までに格納された複素数データ(サンプル点番号では4096〜5119)をグループC1 、3072番地から4095番地までに格納された複素数データ(サンプル点番号では6144〜7167)をグループD1 とする。また、スレーブモード用プロセッサ702に設けられた作業用RAM107の0番地から1023番地までに格納された複素数データ(サンプル点番号では1024〜2047)をグループA2 、1024番地から2047番地までに格納された複素数データ(サンプル点番号では3072〜4095)をグループB2 、2048番地から3071番地までに格納された複素数データ(サンプル点番号では5120〜6143)をグループC2 、3072番地から4095番地までに格納された複素数データ(サンプル点番号では7168〜8191)をグループD2 とする。
【0211】
最初に、図10の第1ステージに示したように、マスタモード用プロセッサ701の第1のデータパス108および第2のデータパス109は、グループA1 ,B1 ,C1 ,D1 のそれぞれ最初の複素数データ(すなわち、0番地、1024番地、2048番地および3072番地の複素数データ)を作業用RAM107から取り込み、上述の第1の実施の形態の場合と同様にして、式(1)〜(4)を用いた演算処理を行い、演算結果ai ,bi ,ci ,di を得る。続いて、これらの演算結果ai ,bi ,ci ,di が、データパス108,109から出力されて、作業用RAM107に格納される。このとき、グループAに属する番地(ここでは0番地)には式(1)の演算結果ai が、グループBに属する番地(ここでは1024番地)には式(3)の演算結果bi が、グループCに属する番地(ここでは2048番地)には式(2)の演算結果ci が、グループDに属する番地(ここでは3072番地)には式(4)の演算結果di が、それぞれ格納される。
【0212】
また、これと同時に、スレーブモード用プロセッサ702の第1のデータパス108および第2のデータパス109は、グループA2 ,B2 ,C2 ,D2 のそれぞれ最初の複素数データ(すなわち、0番地、1024番地、2048番地および3072番地の複素数データ)を作業用RAM107から取り込んで式(1)〜(4)を用いた演算処理を行い、演算結果 i ,b i ,c i ,d i を得る。そして、これらの演算結果が、マスタモード用プロセッサ701の場合と同様にして、スレーブモード用プロセッサ702内の作業用RAM107に格納される。
【0213】
続いて、各プロセッサ701,702は、1番地、1025番地、2049番地および3073番地の複素数データを用いて同様の演算処理を行ない、以下同様にしてすべての番地の複素数データについて順次演算処理を行う。
【0214】
このようにして1回目の演算処理が終了すると、入力選択回路713,714を用いて、マスタモード用プロセッサ701およびスレーブモード用プロセッサ702の間でデータの入れ替えを行う。すなわち、図9(A)に示したように、マスタモード用プロセッサ701に設けられた作業用RAM107の2048番地から3071番地までに格納された複素数データ(すなわちマスタモード用プロセッサ701の演算結果ci )とスレーブモード用プロセッサ702に設けられた作業用RAM107の0番地から1023番地に格納された複素数データ(すなわちスレーブモード用プロセッサ702の演算結果ai )とを入れ換え、さらに、マスタモード用プロセッサ701に設けられた作業用RAM107の3072番地から4095番地までに格納された複素数データ(すなわちマスタモード用プロセッサ701の演算結果di )とスレーブモード用プロセッサ702に設けられた作業用RAM107の1024番地から2047番地に格納された複素数データ(すなわちスレーブモード用プロセッサ702の演算結果bi )とを入れ換える。なお、このデータの入れ替えは、各プロセッサ701,702の出力端子115,116から出力された複素数データを、入力選択回路714,713を介して他方のプロセッサに取り込むことによって行われる。これにより、図9(B)に示したような、複素数データの番地割付を得ることができる。
【0215】
このとき、図9(B)に示したように、各プロセッサ701,702の作業用RAM107に格納された複素数データは、サンプル点番号の小さい順には並んでいない。すなわち、マスタモード用プロセッサ701に設けられた作業用RAM107の1024番地〜2047番地にはサンプル点番号2048〜3071の複素数データが格納され、作業用RAM107の2048番地〜3071番地にはサンプル点番号1024〜2047の複素数データが格納されている。また、スレーブモード用プロセッサ702に設けられた作業用RAM107の1024番地〜2047番地にはサンプル点番号6144〜7167の複素数データが格納され、作業用RAM107の2048番地〜3071番地にはサンプル点番号5120〜6143の複素数データが格納されている。このため、この実施の形態では、各プロセッサ701,702の作業用RAM107に格納された複素数データを、サンプル点番号の小さい順に並べ替える。実際には、この実施の形態では、この入れ替えは、アドレス用のデコーダ333(図8参照)内のデコード用データの変更によって行なう。すなわち、マスタモード用プロセッサ701に設けられた作業用RAM107の1024番地〜2047番地と2048番地〜3071番地でメモリ番地のバイナリーコードの上位2ビットを入れ替え、同様に、スレーブモード用プロセッサ702に設けられた作業用RAM107の1024番地〜2047番地と2048番地〜3071番地でメモリ番地のバイナリーコードの上位2ビットを入れ替える。これにより、データ転送を行わずに、実質的にデータを入れ換えることができる。したがって、処理時間の高速化を図ることができる。但し、このようにデコーダ333内のデコード用データを変更するのではなく、通常のデータ転送を行ってもよいことはもちろんである。
【0216】
以上説明したようにしてデータの入れ替えを行うことにより、2回目以降の演算処理を、各プロセッサ701,702ごとに別個に行うことができる。
【0217】
2回目の演算処理は、図10のステージ2に示したように、各プロセッサ701,702において、データRAM107の各番地を、0番地〜511番地、512番地〜1023番地、1024番地〜1535番地および1536番地〜2047番地の組み合わせと2048番地〜2559番地、2560番地〜3071番地、3072番地〜3583番地、3584番地〜4095番地に分割して演算処理を行う。
【0218】
さらに、3回目〜7回目の演算処理についても、図10のステージ3〜ステージ7に示したように、第1の実施の形態の2回目〜6回目の演算処理と同様の演算処理(但し、サンプル点数は異なる)を行う。
【0219】
そして、上述の第1の実施の形態の場合と同様にして、演算結果を外部に出力する。
【0220】
このように、この実施の形態に係る高速フーリエ変換処理システムでは、この発明に係る高速フーリエ変換処理装置であってサンプル点数の最大がNのものを2個並列に接続することによって、サンプル点数が2Nの高速フーリエ変換処理を行うことができる。したがって、処理が可能なサンプル点数の最大値を安価に増加させることができる。
【0221】
また、このシステムを少数の外付部品の追加によって構築することができるので、システムの規模を小さくすることができる。
【0222】
また、この実施の形態では2個の高速フーリエ変換処理装置を並列接続することとしたが、4個以上の高速フーリエ変換処理装置を並列することもできることはもちろんである。この場合には、処理が可能なサンプル点数の最大値をさらに多くすることができる。
【0223】
第5の実施の形態
次に、この発明の第5の実施の形態について、図11を用いて説明する。なお、この実施の形態は、処理が可能なサンプル点数の最大値がN(この実施の形態ではN=4096とする)を2個並列に接続することによってサンプル点数が2N(すなわち8192点)の高速フーリエ変換処理を行うことができる高速フーリエ変換処理システムに関するものである点では上述の第4の実施の形態と同様であるが、第2の実施の形態と同様のブロック浮動小数点演算処理機能を有する点で第4の実施の形態と異なる。
【0224】
図11は、この実施の形態に係る高速フーリエ変換処理システムを概念的に示すブロック図である。
【0225】
同図において、マスタモード用プロセッサ1001およびスレーブモード用プロセッサ1002は、ともに、上述の第2の実施例で示した高速フーリエ変換処理装置からなる。かかるプロセッサ1001,1002の内部構成において、図5と同じ符号を付した構成成分は、それぞれ、図5の高速フーリエ変換処理装置の場合と同じものを示している。
【0226】
各プロセッサ1001,1002において、出力回路1011は図5のセレクタ111,112、レジスタ113,114および出力端子115,116を略記したものである。そして、この出力回路1011は、それぞれ、出力選択回路1006の入力端子に接続されている。
【0227】
また、各プロセッサ1001,1002において、セレクタ1012は、図5のセレクタ105,106および入力端子101,102を略記したものである。
【0228】
マスタモード用プロセッサ1001のセレクタ1012は、マスタモード用入力選択回路1013の出力端子に接続されている。また、このマスタモード用入力選択回路1013の入力端子からは、外部から入力された複素数データおよびスレーブモード用プロセッサ1002が出力した複素数データが入力される。
【0229】
同様に、スレーブモード用プロセッサ1002のセレクタ1012は、スレーブモード用入力選択回路1014の出力端子に接続されており、このスレーブモード用入力選択回路1014の入力端子からは外部から入力された複素数データおよびマスタモード用プロセッサ1001が出力した複素数データが入力される。
【0230】
また、プロセッサ1001のシーケンス制御部119から出力される状態表示信号は、NOTバッファ1003を介して、プロセッサ1002のシーケンス制御部119に状態制御信号として入力される。同様に、プロセッサ1002のシーケンス制御部119から出力される状態表示信号は、NOTバッファ1004を介して、プロセッサ1001のシーケンス制御部119に状態制御信号として入力される。また、各プロセッサ1001,1002のシーケンス制御部119には、外部からシステム制御信号が入力される。
【0231】
データ入力ポート1005は、外部から被処理データを入力する。また、データ出力ポート1007は、出力選択回路1006から入力された処理後の複素数データを、外部に出力する。
【0232】
次に、図11に示した高速フーリエ変換処理システムの動作について説明する。
【0233】
まず、8192点の被処理データのうち、最初の1024点の被処理データが、データ入力ポート1005およびマスタモード用入力選択回路1013を介して、マスタモード用プロセッサ1001内に入力される。そして、上述の第1の実施例の場合と同様にして、これらの複素数データが、マスタモード用プロセッサ1001の作業用RAM107に格納される。このとき、マスタモード用プロセッサ1001のブロック浮動小数点検出記憶部503は、この複素数データをセレクタ1012から入力して第2の実施の形態と同様の浮動小数点指数検出を行い、記憶する。なお、これと同時に、スレーブモード用プロセッサ1002のブロック浮動小数点検出記憶部503も自動的に動作して浮動小数点指数を検出するが、内部への記憶は行わない。
【0234】
続いて、次の1024点の被処理データが、データ入力ポート1005およびスレーブモード用入力選択回路1014を介して、スレーブモード用プロセッサ1002内に入力され、作業用RAM107に格納される。このときも、スレーブモード用プロセッサ1002のブロック浮動小数点検出記憶部503が、この複素数データを入力して浮動小数点指数を検出し、記憶する。なお、上述のマスタモード用プロセッサ1001の場合と同様に、マスタモード用プロセッサ1001のブロック浮動小数点検出記憶部503も浮動小数点指数を検出するが、内部への記憶は行わない。
【0235】
このように、この実施の形態では各プロセッサ1001,1002に設けられたブロック浮動小数点検出記憶部503は別個に動作するが、結果としては整合性のとれた浮動小数点指数の検出を行うことができる。
【0236】
以下、残りの被処理データも、上述の第4の実施の形態と同様にして、図9に示したような番地割付で両プロセッサ1001,1002の作業用RAM107に格納される。
【0237】
各プロセッサ1001,1002への複素数データの格納が終了すると、続いて、これらの複素数データを用いて高速フーリエ変換処理を行う。
【0238】
なお、この実施の形態では、基数が4の演算処理を6回繰り返した後、基数が2の演算処理を1回行う。また、以下に説明するように、演算処理の動作は、ブロック浮動小数点演算処理以外については、上述の第4の実施の形態の場合と同じである。
【0239】
まず、1回目の演算処理(基数4)について説明する。
【0240】
この演算処理では、各プロセッサ1001,1002ごとに、作業用RAM107に格納された複素数データを、格納されたアドレスにしたがって4個のグループに分けて扱う。ここでは、図9に示したように、マスタモード用プロセッサ1001に設けられた作業用RAM107の0番地から1023番地までに格納された複素数データ(サンプル点番号では0〜1023)をグループA1 、1024番地から2047番地までに格納された複素数データ(サンプル点番号では2048〜3071)をグループB1 、2048番地から3071番地までに格納された複素数データ(サンプル点番号では4096〜5119)をグループC1 、3072番地から4095番地までに格納された複素数データ(サンプル点番号では6114〜7167)をグループD1 とする。また、スレーブモード用プロセッサ1002に設けられた作業用RAM107の0番地から1023番地までに格納された複素数データ(サンプル点番号では1024〜2047)をグループA2 、1024番地から2047番地までに格納された複素数データ(サンプル点番号では3072〜4095)をグループB2 、2048番地から3071番地までに格納された複素数データ(サンプル点番号では5120〜6143)をグループC2 、3072番地から4095番地までに格納された複素数データ(サンプル点番号では7168〜8191)をグループD2 とする。
【0241】
最初に、マスタモード用プロセッサ1001の第1のデータパス501および第2のデータパス502は、グループA1 ,B1 ,C1 ,D1 のそれぞれ最初の複素数データ(すなわち、0番地、1024番地、2048番地および3072番地の複素数データ)とsin/cos係数用ROM110に格納されたひねり係数を読み込むと同時に、ブロック浮動小数点検出記憶部503から最初のブロックの浮動小数点指数の検出値を読み込む。そして、この検出値と上述の式(1)〜(4)とを用いて、ブロック浮動小数点による演算処理を行う。続いて、この演算結果ai ,bi ,ci ,di が、作業用RAM107に格納される。このとき、グループAに属する番地(ここでは0番地)には式(1)の演算結果ai が、グループBに属する番地(ここでは1024番地)には式(3)の演算結果bi が、グループCに属する番地(ここでは2048番地)には式(2)の演算結果ci が、グループDに属する番地(ここでは3072番地)には式(4)の演算結果di が、それぞれ格納される。また、このとき、マスタモード用プロセッサ1001内のブロック浮動小数点検出記憶部503は、演算結果ai ,bi の浮動小数点指数検出のみを行い、演算結果ci ,di についての浮動小数点指数検出は行わない。そして、これらの検出結果は、ブロック浮動小数点検出記憶部503内に、そのまま記憶される。
【0242】
また、これと同時に、スレーブモード用プロセッサ1002の第1のデータパス108および第2のデータパス109は、グループA2 ,B2 ,C2 ,D2 のそれぞれ最初の複素数データ(すなわち、0番地、1024番地、2048番地および3072番地の複素数データ)を作業用RAM107から取り込んで式(1)〜(4)を用いた演算処理を行い、演算結果ai ,bi ,ci ,di を得る。そして、これらの演算結果が、マスタモード用プロセッサ1001の場合と同様にして、スレーブモード用プロセッサ1002内の作業用RAM107に格納される。このとき、スレーブモード用プロセッサ1002内のブロック浮動小数点検出記憶部503は、演算結果ci ,di の浮動小数点指数検出のみを行い、演算結果ai ,bi についての浮動小数点指数検出は行わない。そして、これらの検出結果は、ブロック浮動小数点検出記憶部503内に、そのまま記憶される。
【0243】
続いて、1番地、1025番地、2049番地および3073番地の複素数データを用いて同様の演算処理を行ない、さらに以下同様にしてすべての番地の複素数データについて順次演算処理を行う。
【0244】
このようにして1回目の演算処理が終了すると、入力選択回路1013,1014を用いて、マスタモード用プロセッサ1001およびスレーブモード用プロセッサ1002の間でデータの入れ替えを行う。すなわち、マスタモード用プロセッサ1001に設けられた作業用RAM107の2048番地から3071番地までに格納された複素数データ(すなわちマスタモード用プロセッサ1001の演算結果ci )とスレーブモード用プロセッサ1002に設けられた作業用RAM107の0番地から1023番地に格納された複素数データ(すなわちスレーブモード用プロセッサ1002の演算結果ai )とを入れ換え、さらに、マスタモード用プロセッサ1001に設けられた作業用RAM107の3072番地から4095番地までに格納された複素数データ(すなわちマスタモード用プロセッサ1001の演算結果di )とスレーブモード用プロセッサ1002に設けられた作業用RAM107の1024番地から2047番地に格納された複素数データ(すなわちスレーブモード用プロセッサ1002の演算結果bi )とを入れ換える。このとき、この実施の形態では、入れ替えを行う各複素数データのブロック浮動小数点指数の検出を行う。これにより、1回目の演算処理で得られた演算結果のすべてについてのブロック浮動小数点指数検出が行われたことになる。
【0245】
その後、上述の第4の実施の形態の場合と同様にして、例えば作業用RAMに設けられたアドレス用デコーダのデコード用データを変更することなどにより、各プロセッサ1001、1002内の作業用RAMの1024番地〜2047番地と2048番地〜3071番地の入れ換えを行う。
【0246】
データの入れ替えが終了すると、次に、2回目の演算処理(基数4)を、各プロセッサ1001,1002ごとに独立させて行う。
【0247】
2回目の演算処理は、第2の実施の形態における1回目の演算処理の場合と同様であり、各プロセッサ1001,1002において、データRAM107の各番地を、図9に示したような番地割付で4分割してブロック浮動小数点による演算処理を行う。
【0248】
さらに、3回目〜6回目以降の演算処理についても、第2の実施の形態の2回目〜6回目の演算処理と同様の演算処理を行う。
【0249】
そして、上述の第2の実施の形態の場合と同様にして、演算結果を外部に出力する。
【0250】
このように、この実施の形態に係る高速フーリエ変換処理システムでは、ブロック浮動小数点演算が可能な高速フーリエ変換処理装置であってサンプル点数の最大がNのものを2個並列に接続することによって、サンプル点数が2Nの高速フーリエ変換処理を、ブロック浮動小数点法を用いて行うことができる。
【0251】
また、この実施の形態においても、4個以上の高速フーリエ変換処理装置を並列することもできることはもちろんである。
【0252】
なお、この実施の形態では1回目〜7回目のすべての演算処理でブロック浮動小数点法を用いることとしたが、例えば、1回目の演算処理は固定小数点法を用いて行い、2回目以降の演算処理をブロック浮動小数点法で行うこととしてもよい。この場合には、最初に外部データを読み込む際には各プロセッサ1001,1002に設けられたブロック浮動小数点検出記憶部503の検出動作を停止させ、検出を行わない。そして、1回目の演算処理は第1の実施の形態と同様の固定小数点法で行い、演算結果を格納する際および格納後に各プロセッサ1001,1002間で複素数データを入れ替える際に浮動小数点指数の検出を行う。そして、2回目以降の演算処理では、第2の実施の形態で説明したような浮動小数点指数を用いた演算処理を行えばよい。
【0253】
このような方法によっても、この実施の形態に係る高速フーリエ変換処理システムの効果を得ることが可能である。
【0254】
第6の実施の形態
次に、この発明の第6の実施の形態について、図18を用いて説明する。なお、この実施の形態に係る高速フーリエ変換処理装置は、データパスをさらに2個設けた点と、転置用RAMを設けた点で、上述の第1の実施の形態と異なる。
【0255】
この実施の形態では、サンプル点数が2048点の場合を例にとって説明する。
【0256】
図18は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【0257】
同図において、図1と同じ符号を付した構成部は、それぞれ、図1の場合と同じものを示している。
【0258】
また、同図において、出力回路1801は、図1にセレクタ111,112、レジスタ113,114および出力端子115,116を略記したものである。さらに、セレクタ1802は、図1のセレクタ105,106、レジスタ103,104および入力ポート101,102を略記したものである。
【0259】
第3のデータパス1803は、第1のデータパス108と同じ内部構造、すなわち図2(A)に示した構造または図12に示した構造のいずれかを使用することができる。同様に、第4のデータパス1804は、第2のデータパス109と同じ内部構造、すなわち図2(A)に示した構造または図12に示した構造のいずれかを使用することができる。
【0260】
転置用RAM1805は、第1のデータパス108および第2のデータパス109で算出された複素数データai 〜di を順次取り込んで一時的に記憶する。そして、後述するようにして、これらの複素数データによって形成される4行4列の行列を転置して1列ずつ出力する。
【0261】
続いて、図18に示した高速フーリエ変換処理装置の動作について、図19を用いて説明する。
【0262】
まず、上述の第1の実施の形態の場合と同様にして、2048点の被処理データが、実数部と虚数部とに分けられて、セレクタ1802から作業用RAM107に順次格納される。
【0263】
被処理データを作業用RAM107に格納する動作が終了すると、続いて、これらの被処理データを用いて高速フーリエ変換処理を行う。
【0264】
この実施の形態では、以下に説明するようにして、1回目の演算処理と2回目の演算処理とを同時に行う。
【0265】
この演算処理では、作業用RAM107に格納された2048個の複素数データが、第1の実施の形態の場合と同様の4グループA,B,C,Dに分割され、さらに、各グループA,B,C,Dがそれぞれ4グループAG1〜AG4,BG1〜BG4,CG1〜CG4,DG1〜DG4に4分割される。すなわち、この実施の形態では、作業用RAM107に格納された2048を最初に16分割しており、この点で上述の各実施の形態と異なる。
【0266】
そして、第1のデータパス108および第2のデータパス109が、作業用RAM107の0番地、512番地、1024番地および1536番地に格納された各複素数データ(すなわちグループAG1,BG1,CG1,DG1の最初の複素数データ)とsin/cos係数用ROM110に格納されたひねり係数を読み込む。そして、0番地のデータをAi 、512番地のデータをBi 、1024番地のデータをCi 1536番地のデータをDi として、上述の式(1)〜(4)の演算を行う。
【0267】
演算が終了すると、第1のデータパス108および第2のデータパス109から演算結果a1 ,b1 ,c1 ,d1 が出力される。この実施の形態では、これらの演算結果は、転置用RAM1805に格納される。
【0268】
続いて、第1のデータパス108および第2のデータパス109は、作業用RAM107の128番地、640番地、1152番地および1644番地の各複素数データ(すなわちグループAG2,BG2,CG2,DG2の最初の複素数データ)をデータをAi ,Bi ,Ci ,Di として読み込んで、上式(1)〜(4)を用いた演算を行い、演算結果a2 ,b2 ,c2 ,d2 を転置用RAM1805に格納する。同様にして、グループAG3,BG3,CG3,DG3の最初の複素数データおよびグループAG4,BG4,CG4,DG4の最初の複素数データについても、上式(1)〜(4)を用いた演算を順次行い、演算結果a3 ,b3 ,c3 ,d3 およびa4 ,b4 ,c4 ,d4 を順次転置用RAM1805に格納する。
【0269】
その後、第1のデータパス108および第2のデータパス109は、各グループAG1〜AG4,BG1〜BG4,CG1〜CG4,DG1〜DG4の2番目以降の複素数データについても、同様の演算を行い、演算結果を順次転置用RAM1805に格納していく。
【0270】
転置用RAM1805は、図19に示したように、これらの演算結果を4行4列の行列に分割し、これを転置して(すなわち行と列とを入れ替えて)、1列ずつ出力する。
【0271】
第3のデータパス1803および第4のデータパス1804は、転置用RAM1805から入力した複素数データを読み込む。そして、1行目のデータをAi 2行目のデータをBi 、3行目のデータをCi 4行目のデータをDi として、上式(1)〜(4)の演算を行う。例えば、最初の演算の場合であれば、a1 →Ai ,a2 →Bi ,a3 →Ci ,a4 →Di として、上式(1)〜(4)の演算を行う。そして、この演算によって得られた複素数データai ,bi ,ci ,di が、作業用RAM107に格納される。このとき、例えば最初の演算の場合であれば、グループAG1に属する番地(ここでは0番地)には式(1)の演算結果ai が、グループAG2に属する番地(ここでは128番地)には式(3)の演算結果bi が、グループAG3に属する番地(ここでは256番地)には式(2)の演算結果ci が、グループAG4に属する番地(ここでは384番地)には式(4)の演算結果di が、それぞれ格納される。
【0272】
また、第3のデータパス1803および第4のデータパス1804の2回目の演算では、b1 →Ai ,b2 →Bi ,b3 →Ci ,b4 →Di として上式(1)〜(4)の演算が行われ、演算結果が作業用RAM107に格納される。このとき、グループBG1に属する番地(ここでは512番地)には式(1)の演算結果ai が、グループBG2に属する番地(ここでは640番地)には式(3)の演算結果bi が、グループBG3に属する番地(ここでは768番地)には式(2)の演算結果ci が、グループBG4に属する番地(ここでは896番地)には式(4)の演算結果di が、それぞれ格納される。
【0273】
さらに、転置用RAM1805から入力された複素数データc1 〜c4 ,d1 〜d4 についても上式(1)〜(4)の演算が順次行われ、各演算結果がグループCG1〜CG4,DG1〜DG4の最初の番地に格納される。
【0274】
以下同様にして、第3のデータパス1803および第4のデータパス1804は、転置用RAM1805から入力したすべての複素数データについての演算を行い、作業用RAM107に順次格納する。
【0275】
このように、この実施の形態では、作業用RAM107を4分割して得られた各グループA,B,C,Dをさらにそれぞれ4分割してグループAG1〜AG4,BG1〜BG4,CG1〜CG4,DG1〜DG4を得ることとし、グループAG1,BG1,CG1,DG1の被処理データを用いた演算、グループAG2,BG2,CG2,DG2の被処理データを用いた演算、グループAG3,BG3,CG3,DG3の被処理データを用いた演算およびグループAG4,BG4,CG4,DG4の被処理データを用いた演算を第1のデータパス108および第2のデータパス109で交互に繰り返して行うことにした。これにより、第3のデータパス1803および第4のデータパス1804が転置用RAM1805の出力をそのまま用いて演算を行えるようになり、従って高速の演算処理を実現することができる。
【0276】
このようにして1回目および2回目の演算処理が終了すると、次に、以下のようにして3回目および4回目の演算処理(基数4)を同時に行う。
【0277】
この演算処理では、作業用RAM107の各グループAG1〜AG4,BG1〜BG4,CG1〜CG4,DG1〜DG4のそれぞれを、さらに16個のグループに分割する。すなわち、この演算処理では、データRAM107の各番地を合計256個に分割する。例えば、グループAG1を4分割して得られた各グループをA,B,C,Dとし、さらに各グループをそれぞれ4分割してAG1〜AG4,BG1〜BG4,CG1〜CG4,DG1〜DG4とする。例えば、上述の1回目および2回目の分割におけるグループAG1(0番地〜128番地)をさらに16分割した結果、AG1は0〜7番地、BG1は32〜39番地、CG1は64〜71番地、DG1は96〜103番地となる。
【0278】
そして、第1のデータパス108および第2のデータパス109が、作業用RAM107の0番地、32番地、64番地および96番地に格納された各複素数データとsin/cos係数用ROM110に格納されたひねり係数とを読み込み、0番地のデータをAi 、32番地のデータをBi 、64番地のデータをCi 96番地のデータをDi として、上式(1)〜(4)の演算を行う。そして、この演算によって得られた複素数データが、転置用RAM1805に格納される。以下、1回目および2回目の場合と同様にして、第1のデータパス108および第2のデータパス109による演算が繰り返される。
【0279】
また、転置用RAM1805も、1回目および2回目の場合と同様にして、演算結果を4行4列の行列に分割して転置し、一列ずつ出力する動作を繰り返す。
【0280】
さらに、第3のデータパス1803および第4のデータパス1804も、1回目および2回目の場合と同様にして、転置用RAM1805から取り込んだ複素数データを用いて上式(1)〜(4)の演算を行い、演算結果ai ,bi ,ci ,di を作業用RAM107の所定の番地に格納する。例えば、最初の演算の場合であれば、ai を0番地に、bi を8番地に、ci を16番地に、di を24番地に、それぞれ格納する。
【0281】
このようにして3回目および4回目の演算処理が終了すると、次に、以下のようにして5回目の演算処理(基数4)および6回目の演算処理(基数2)を同時に行う。
【0282】
この演算処理では、上述の3回目および4回目の演算処理で分割されたデータRAM107の各グループを、4個のグループに分割する。すなわち、この演算処理では、データRAM107の各番地を合計1024個に分割する。例えば、上述の3回目および4回目の分割におけるグループAG1(0番地〜7番地)をさらに4分割した結果、AG1は0番地および1番地、BG1は2番地および3番地、CG1は4番地および5番地、DG1は6番地および7番地となる。なお、この演算処理で16分割ではなく4分割することとしたのは、基数2の演算処理(すなわち6回目の演算処理)では作業用RAM内の被処理データを4分割する必要がないことに起因するものである。
【0283】
次に、第1のデータパス108および第2のデータパス109が、作業用RAM107の0番地、2番地、4番地および6番地に格納された各複素数データとsin/cos係数用ROM110に格納されたひねり係数とを読み込み、0番地のデータをAi 、2番地のデータをBi 、4番地のデータをCi 6番地のデータをDi として、上式(1)〜(4)の演算を行う。そして、この演算によって得られた複素数データが、転置用RAM1805に格納される。以下、1回目および2回目の場合と同様にして、第1のデータパス108および第2のデータパス109による演算が繰り返される。
【0284】
また、転置用RAM1805も、1回目および2回目の場合と同様にして、演算結果を4行4列の行列に分割して転置し、一列ずつ出力する動作を繰り返す。
【0285】
第3のデータパス1803および第4のデータパス1804は、基数2の演算処理を行う。すなわち、これらのデータパス1803,1804は、転置用RAM1805から取り込んだ複素数データを用いて上式(5)〜(8)の演算を行い、演算結果ai ,bi ,ci ,di を作業用RAM107の所定の番地に格納する。例えば、最初の演算の場合であれば、ai を0番地に、bi を1番地に、ci を8番地に、di を9番地に、それぞれ格納する。
【0286】
以下、同様の演算を繰り返し、演算結果を作業用RAM107に順次格納する。
【0287】
5回目および6回目の演算処理が終了すると、最後に、上述の第1の実施の形態と同様にして、演算結果を外部に出力する。
【0288】
このように、この実施の形態では、第1のデータパス108および第2のデータパス109の演算結果ai ,bi ,ci ,di を一旦作業用RAMに格納する必要が無く、転置用RAM1805で転置してそのまま第3のデータパス1803および第4のデータパス1804の被処理データとして使用することができるので、処理速度を飛躍的に向上させることができる。
【0289】
なお、ここではデータパスを2段にした場合を例にとって説明したが、4段以上の複数段して、各段の間に転置用RAMを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【0290】
第7の実施の形態
次に、この発明の第7の実施の形態について、図20を用いて説明する。なお、この実施の形態に係る高速フーリエ変換処理装置は、ブロック浮動小数点演算処理機能を有する点で、上述の第6の実施の形態と異なる。
【0291】
この実施の形態でも、サンプル点数が2048点の場合を例にとって説明する。
【0292】
図20は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【0293】
同図において、図1、図18と同じ符号を付した構成部は、それぞれ、これらの図と同じものを示している。
【0294】
また、図20において、第1のデータパス2001および第2のデータパス2002は、ブロック浮動小数点演算を行うためのシフト機能を有している点で、図18に示した各データパス108,109と異なる。なお、このブロック浮動小数点演算で使用するシフト機能の詳細構成については、説明を省略する。
【0295】
また、ブロック浮動小数点検出記憶部2003は、セレクタ1802が出力した複素数データを取り込んでブロック浮動小数点を検出するとともに、この検出値を一時的に記憶する。このブロック浮動小数点検出記憶部2003が一時的に記憶したブロック浮動小数点の検出値は、データパス2001,2002およびシーケンス制御部119に転送される。
【0296】
出力ビットシフタ2004,2005は、作業用RAM107から複素数データを取り込むとともにシーケンス制御部119から浮動小数点指数を取り込み、この浮動小数点指数の値に基づいて複素数データをシフトさせて、その結果を出力する。
【0297】
レジスタ2006は、シーケンス制御部119から浮動小数点指数の累算値を入力し、外部に対して出力する。
【0298】
続いて、図20に示した高速フーリエ変換処理装置の動作を説明する。
【0299】
まず、上述の第6の実施の形態の場合と同様にして、2048点の被処理データが、実数部と虚数部とに分けられて、セレクタ1802から作業用RAM107に順次格納される。このとき、ブロック浮動小数点検出記憶部2003は、これらの複素数データをセレクタ1802から順次入力して浮動小数点指数を検出し、第2の実施の形態の場合と同様にして浮動小数点指数を検出する。
【0300】
被処理データを作業用RAM107に格納する動作が終了すると、続いて、これらの被処理データを用いて高速フーリエ変換処理を行う。
【0301】
この実施の形態では、以下に説明するようにして、1回目の演算処理と2回目の演算処理とを同時に行う。
【0302】
この演算処理では、作業用RAM107に格納された2048個の複素数データが、第6の実施の形態の場合と同様にして、グループAG1〜AG4,BG1〜BG4,CG1〜CG4,DG1〜DG4に分割される。
【0303】
そして、第1のデータパス2001および第2のデータパス2002が、作業用RAM107の0番地、512番地、1024番地および1536番地に格納された各複素数データ(すなわちグループAG1,BG1,CG1,DG1の最初の複素数データ)とsin/cos係数用ROM110に格納されたひねり係数を読み込むと同時に、ブロック浮動小数点検出記憶部2003から、各グループに共通な浮動小数点指数を読み込む。そして、この浮動小数点指数と上式(1)〜(4)とを用いて、ブロック浮動小数点による演算を行う。
【0304】
演算が終了すると、第1のデータパス2001および第2のデータパス2002から演算結果a1 ,b1 ,c1 ,d1 が出力され、転置用RAM1805に格納される。
【0305】
その後、第1のデータパス2001および第2のデータパス2002は、第6の実施の形態の場合と同様にして、他の複素数データを順次作業用RAM107から読み出す。そして、ブロック浮動小数点による演算処理を順次実行し、演算結果を順次転置用RAM1805に格納していく。
【0306】
このとき、転置用RAM1805は、第6の実施の形態と同様、これらの演算結果を4行4列の行列に分割し、これを転置して、1列ずつ出力する。
【0307】
第3のデータパス1803および第4のデータパス1804は、転置用RAM1805から入力した複素数データを読み込む。そして、a1 →Ai ,a2 →Bi ,a3 →Ci ,a4 →Di として、上式(1)〜(4)の演算を固定小数点により行う。さらに、この演算によって得られた複素数データai ,bi ,ci ,di を、作業用RAM107に格納する(格納する番地は第6の実施の形態の場合と同様である)。
【0308】
このとき、ブロック浮動小数点検出記憶部2003は、各演算結果ai ,bi ,ci ,di を入力して、これらの演算結果ごとに浮動小数点指数を検出し、記憶する。
【0309】
次に、第3のデータパス1803および第4のデータパス1804が、b1 →Ai ,b2 →Bi ,b3 →Ci ,b4 →Di として、2回目の演算を固定小数点により行い、演算結果を作業用RAM107に格納する(格納する番地は第6の実施の形態の場合と同様である)。
【0310】
このとき、ブロック浮動小数点検出記憶部2003は、各演算結果ai ,bi ,ci ,di を入力して浮動小数点指数を検出し、これらの検出値をそれぞれブロック浮動小数点検出記憶部2003内に記憶された浮動小数点指数と比較する。そして、既に記憶された浮動小数点指数の方が小さいときは記憶内容を変更せず、今回の検出値の方が小さいときは記憶内容を今回の検出値に変更する。
【0311】
以下同様にして、第3のデータパス1803および第4のデータパス1804は、転置用RAM1805から入力したすべての複素数データについての演算を行って作業用RAM107に順次格納し、ブロック浮動小数点検出記憶部2003は、順次計算結果ごとの浮動小数点検出を行って、この検出値が記憶内容よりも小さいときは記憶内容を書き換える。
【0312】
この実施の形態では、このようにして検出した浮動小数点指数を、後述する3回目の演算処理で使用する。
【0313】
このようにして1回目および2回目の演算処理が終了すると、次に、以下のようにして3回目および4回目の演算処理(基数4)を同時に行う。
【0314】
この演算処理では、第6の実施の形態の場合と同様、作業用RAM107の各グループAG1〜AG4,BG1〜BG4,CG1〜CG4,DG1〜DG4のそれぞれを、さらに16個のグループに分割する。
【0315】
そして、第1のデータパス2001および第2のデータパス2002が、作業用RAM107の0番地、32番地、64番地および96番地に格納された各複素数データとsin/cos係数用ROM110に格納されたひねり係数とを読み込むとともに、ブロック浮動小数点検出記憶部2003から浮動小数点指数を読み込み、上式(1)〜(4)の演算をブロック浮動小数点によって実行する。以下、1回目の演算処理の場合と同様にして、第1のデータパス2001および第2のデータパス2002による演算が繰り返される。
【0316】
また、転置用RAM1805も、1回目および2回目の場合と同様にして、演算結果を4行4列の行列に分割して転置し、一列ずつ出力する動作を繰り返す。
【0317】
さらに、第3のデータパス1803および第4のデータパス1804も、1回目および2回目の場合と同様にして、転置用RAM1805から取り込んだ複素数データを用いて上式(1)〜(4)の演算を固定小数点で行い、演算結果ai ,bi ,ci ,di を作業用RAM107の所定の番地に格納する。このとき、ブロック浮動小数点検出記憶部2003は、2回目の演算処理の場合と同様にして、計算結果ai ,bi ,ci ,di ごとの浮動小数点検出を順次行い、この検出値が記憶内容よりも小さいときは記憶内容を順次書き換える。
【0318】
このようにして検出した浮動小数点指数は、後述する5回目の演算処理で使用される。
【0319】
以上のようにして3回目および4回目の演算処理が終了すると、次に、5回目の演算処理(基数4)および6回目の演算処理(基数2)を同時に行う。
【0320】
この演算処理では、第6の実施の形態の場合と同様、上述の3回目および4回目の演算処理で分割されたデータRAM107の各グループを、4個のグループに分割する。
【0321】
そして、第1のデータパス2001および第2のデータパス2002が、作業用RAM107の0番地、2番地、4番地および6番地に格納された各複素数データとsin/cos係数用ROM110に格納されたひねり係数とを読み込み、これと同時にブロック浮動小数点記憶検出部2003から浮動小数点指数を読み込んで、上式(1)〜(4)の演算をブロック浮動小数点により実行する。続いて、この演算によって得られた複素数データが、転置用RAM1805に格納される。以下、1回目および3回目の場合と同様にして、第1のデータパス2001および第2のデータパス2002による演算が繰り返される。
【0322】
また、転置用RAM1805も、1回目および3回目の場合と同様にして、演算結果を4行4列の行列に分割して転置し、一列ずつ出力する動作を繰り返す。
【0323】
第3のデータパス1803および第4のデータパス1804は、基数2の演算処理を行う。すなわち、これらのデータパス1803,1804は、転置用RAM1805から取り込んだ複素数データを用いて上式(5)〜(8)の演算を固定小数点で行い、演算結果ai ,bi ,ci ,di を作業用RAM107の所定の番地に格納する。このとき、ブロック浮動小数点検出記憶部2003は、演算結果ai ,bi ,ci ,di ごとに浮動小数点検出を順次行い、この検出値が記憶内容よりも小さいときは記憶内容を順次書き換える。
【0324】
5回目および6回目の演算処理が終了すると、最後に、演算結果を外部に出力する。このときは、まず、シーケンス制御部119がブロック浮動小数点検出記憶部2003から各サンプルに対する全ステージで用いた浮動小数点指数の累算値を入力し、出力ビットシフタ2004,2005に送る。そして、出力ビットシフタ2004,2005は、この浮動小数点指数に基づいて、作業用RAM107から入力した複素数データをシフトさせた後、出力回路1801に送る。これにより、シフト後の複素数データが、出力回路1801から外部へ出力される。
【0325】
また、必要であれば、出力ビットシフタ2004,2005によるシフトを行わずに複素数データを出力するとともに、最終的な浮動小数点指数の累算値をレジスタ2006から外部に出力することもできる。
【0326】
このように、この実施の形態では、第1のデータパス2001および第2のデータパス2002の演算結果ai ,bi ,ci ,di を一旦作業用RAMに格納する必要が無く、転置用RAM1805で転置してそのまま第3のデータパス1803および第4のデータパス1804の被処理データとして使用することができるので、ブロック浮動小数点法による処理速度を飛躍的に向上させることができる。
【0327】
なお、ここではデータパスを2段にした場合を例にとって説明したが、4段以上の複数段して、各段の間に転置用RAMを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【0328】
第8の実施の形態
次に、この発明の第8の実施の形態について、図21を用いて説明する。なお、この実施の形態に係る高速フーリエ変換処理装置は、セレクタ2101を設けた点で、上述の第6の実施の形態と異なる。
【0329】
この実施の形態では、サンプル点数が1024点の場合を例にとって説明する。
【0330】
図21は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【0331】
同図において、図18と同じ符号を付した構成部は、それぞれ、図18の場合と同じものを示している。
【0332】
また、同図において、セレクタ2101は、第1、第2ののデータパス108,109の出力または第3、第4ののデータパス1803,1804の出力の一方を選択して、セレクタ1802の一方の入力端子に供給する。この選択は、シーケンス制御部119によって行われる。
【0333】
続いて、図21に示した高速フーリエ変換処理装置の動作を説明する。
【0334】
この実施の形態では、上述のようにサンプル点数が1024(45 )点であるので、基数が4の演算処理を5回行う。
【0335】
まず、外部から入力された被処理データが作業用RAM107に供給されるように、シーケンス制御部119がセレクタ1802を設定する。そして、上述の第1の実施の形態の場合と同様にして、被処理データが、実数部と虚数部とに分けられて、セレクタ1802から作業用RAM107に順次格納される。
【0336】
次に、シーケンス制御部119は、第3、第4のデータパス1803,1804の出力が作業用RAM107に供給されるように、セレクタ1802,2101を設定する。
【0337】
そして、上述の第6の実施の形態と同様にして、1回目および2回目の演算処理を同時に行い、さらに、3回目および4回目の演算処理を同時に行う。
【0338】
1回目〜4回目の演算処理が終了すると、次に、シーケンス制御部119は、第1、第2のデータパス108,109の出力が作業用RAM107に供給されるように、セレクタ1802,2101を設定する。
【0339】
そして、以下のようにして、5回目の演算処理(基数4)を行う。
【0340】
まず、この演算処理では、上述の3回目および4回目の演算処理で256分割されたデータRAM107の各グループを、さらに4個のグループに分割する。すなわち、この演算処理では、データRAM107の各番地を合計1024個に分割する。
【0341】
次に、第1のデータパス108および第2のデータパス109が、作業用RAM107の0番地、1番地、2番地および3番地に格納された各複素数データとsin/cos係数用ROM110に格納されたひねり係数とを読み込み、0番地のデータをAi 、1番地のデータをBi 、2番地のデータをCi 3番地のデータをDi として、上式(1)〜(4)の演算を行う。
【0342】
続いて、この演算によって得られた複素数データai ,bi ,ci ,di を、セレクタ1802,2101を介して、作業用RAM107の0番地、1番地、2番地および3番地に格納する。その後、これと同様にして、4番地、5番地、6番地および7番地の各複素数データを用いた演算処理を行う。
【0343】
以下、同様にして、各番地の複素数データを用いた演算を行う。
【0344】
以上のようにして5回目の演算処理が終了すると、最後に、上述の各実施の形態と同様にして、演算結果を外部に出力する。
【0345】
このように、この実施の形態では、セレクタ2101を設けたので、演算処理の回数が奇数回の場合に有効である。
【0346】
なお、ここではデータパスを2段にした場合を例にとって説明したが、4段以上の複数段して、各段の間に転置用RAMを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【0347】
第9の実施の形態
次に、この発明の第9の実施の形態について、図22を用いて説明する。この実施の形態は、上述の第8の実施の形態に示した高速フーリエ変換処理装置にブロック浮動小数点演算処理機能を設けたものである。
【0348】
この実施の形態でも、サンプル点数が1024点の場合を例にとって説明する。
【0349】
図22は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【0350】
同図において、図21と同じ符号を付した構成部は、それぞれ、これらの図と同じものを示している。
【0351】
また、図22において、第1のデータパス2201および第2のデータパス2202は、ブロック浮動小数点演算を行うためのシフト機能を有している点で、図21に示した各データパス108,109と異なる。なお、このブロック浮動小数点演算で使用するシフト機能の詳細構成については、説明を省略する。
【0352】
また、ブロック浮動小数点検出記憶部2203は、セレクタ1802が出力した複素数データを取り込んでブロック浮動小数点を検出するとともに、この検出値を一時的に記憶する。
【0353】
出力ビットシフタ2204,2205は、作業用RAM107から複素数データを取り込むとともにシーケンス制御部119から浮動小数点指数の累算値を取り込み、この浮動小数点指数の値に基づいて複素数データをシフトさせて、その結果を出力する。
【0354】
レジスタ2206は、シーケンス制御部119から浮動小数点指数の累算値を入力し、外部に対して出力する。
【0355】
続いて、図22に示した高速フーリエ変換処理装置の動作を説明する。
【0356】
まず、外部から入力された被処理データが作業用RAM107に供給されるように、シーケンス制御部119がセレクタ1802を設定する。そして、上述の第8の実施の形態の場合と同様にして、1024点の被処理データが、実数部と虚数部とに分けられて、セレクタ1802から作業用RAM107に順次格納される。このとき、ブロック浮動小数点検出記憶部2203は、これらの複素数データをセレクタ1802から順次入力して浮動小数点指数を検出し、第2の実施の形態の場合と同様にして浮動小数点指数を検出する。
【0357】
次に、シーケンス制御部119は、第3、第4のデータパス1803,1804の出力が作業用RAM107に供給されるように、セレクタ1802,2101を設定する。
【0358】
そして、上述の第7の実施の形態と同様にして、1回目および2回目の演算処理を同時に行い、さらに、3回目および4回目の演算処理を同時に行う。このとき、第1のデータパス2201および第2のデータパス2202ではブロック浮動小数点検出記憶部2203から取り込んだ浮動小数点指数を用いてブロック浮動小数点による演算を行い、第3のデータパス1803および第4のデータパス1804では固定小数点による演算を行う。
【0359】
1回目〜4回目の演算処理が終了すると、次に、シーケンス制御部119は、第1、第2のデータパス2201,2202の出力が作業用RAM107に供給されるように、セレクタ1802,2101を設定する。
【0360】
そして、以下のようにして、5回目の演算処理(基数4)を行う。
【0361】
まず、この演算処理では、上述の3回目および4回目の演算処理で256分割されたデータRAM107の各グループを、さらに4個のグループに分割する。すなわち、この演算処理では、データRAM107の各番地を合計1024個に分割する。
【0362】
次に、第1のデータパス2201および第2のデータパス2202が、作業用RAM107の0番地、1番地、2番地および3番地に格納された各複素数データと、sin/cos係数用ROM110に格納されたひねり係数と、ブロック浮動小数点検出記憶部2203に格納された浮動小数点指数とを読み込み、0番地のデータをAi 、1番地のデータをBi 、2番地のデータをCi 3番地のデータをDi として、上式(1)〜(4)の演算をブロック浮動小数点で行う。
【0363】
続いて、この演算によって得られた複素数データai ,bi ,ci ,di を、セレクタ1802,2101を介して、作業用RAM107の0番地、1番地、2番地および3番地に格納する。このとき、ブロック浮動小数点検出記憶部2203は、浮動小数点指数の検出を順次行い、この検出値が記憶内容よりも小さいときは記憶内容を順次書き換える。
【0364】
その後、これと同様にして、4番地、5番地、6番地および7番地の各複素数データを用いた演算処理を行う。
【0365】
以上のようにして5回目の演算処理が終了すると、最後に、上述の各実施の形態と同様にして、演算結果を外部に出力する。このときは、まず、シーケンス制御部119がブロック浮動小数点検出記憶部2203から各サンプルに対する全ステージで用いた浮動小数点指数の累算値を入力し、出力ビットシフタ2204,2205に送る。そして、出力ビットシフタ2204,2205は、この浮動小数点指数に基づいて、作業用RAM107から入力した複素数データをシフトさせた後、出力回路1801に送る。これにより、シフト後の複素数データが、出力回路1801から外部へ出力される。
【0366】
また、必要であれば、出力ビットシフタ2204,2205によるシフトを行わずに複素数データを出力するとともに、最終的な浮動小数点指数をレジスタ2206から外部に出力することもできる。
【0367】
このように、この実施の形態では、セレクタ2101を設けたので、演算処理の回数が奇数回の場合でも、ブロック浮動小数点法による高速処理を実現することができる。
【0368】
なお、ここではデータパスを2段にした場合を例にとって説明したが、4段以上の複数段して、各段の間に転置用RAMを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【0369】
第10の実施の形態
次に、この発明の第10の実施の形態について、図23を用いて説明する。なお、この実施の形態に係る高速フーリエ変換処理装置は、セレクタ2301を設けた点で、上述の第6の実施の形態と異なる。
【0370】
この実施の形態では、サンプル点数が1024点の場合を例にとって説明する。
【0371】
図23は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【0372】
同図において、図18と同じ符号を付した構成部は、それぞれ、図18の場合と同じものを示している。
【0373】
また、同図において、セレクタ2301は、作業用RAM107の出力または転置用RAM1805の出力の一方を選択して、第3のデータパス1803および第4のデータパス1804に供給する。この選択は、シーケンス制御部119によって行われる。
【0374】
続いて、図23に示した高速フーリエ変換処理装置の動作を説明する。
【0375】
この実施の形態では、上述のようにサンプル点数が1024(45 )点であるので、基数が4の演算処理を5回行う。
【0376】
まず、外部から入力された被処理データが、実数部と虚数部とに分けられて、セレクタ1802から作業用RAM107に順次格納される。
【0377】
次に、シーケンス制御部119は、転置用RAM1805の出力が第3、第4のデータパス1803,1804に供給されるように、セレクタ2301を設定する。
【0378】
そして、上述の第6の実施の形態と同様にして、1回目および2回目の演算処理を同時に行い、さらに、3回目および4回目の演算処理を同時に行う。
【0379】
1回目〜4回目の演算処理が終了すると、次に、シーケンス制御部119は、作業用RAM107の出力が第3、第4のデータパス1803,1804に供給されるように、セレクタ2301を設定する。
【0380】
そして、以下のようにして、5回目の演算処理(基数4)を行う。
【0381】
まず、この演算処理では、上述の3回目および4回目の演算処理で256分割されたデータRAM107の各グループを、さらに4個のグループに分割する。
すなわち、この演算処理では、データRAM107の各番地を合計1024個に分割する。
【0382】
次に、第3のデータパス1803および第4のデータパス1804が、作業用RAM107の0番地、1番地、2番地および3番地に格納された各複素数データとsin/cos係数用ROM110に格納されたひねり係数とを読み込み、0番地のデータをAi 、1番地のデータをBi 、2番地のデータをCi 3番地のデータをDi として、上式(1)〜(4)の演算を行う。
【0383】
続いて、この演算によって得られた複素数データai ,bi ,ci ,di を、作業用RAM107の0番地、1番地、2番地および3番地に格納する。その後、これと同様にして、4番地、5番地、6番地および7番地の各複素数データを用いた演算処理を、第3のデータパス1803および第4のデータパス1804が行う。
【0384】
以下、同様にして、各番地の複素数データを用いた演算を行う。
【0385】
以上のようにして5回目の演算処理が終了すると、最後に、上述の各実施の形態と同様にして、演算結果を外部に出力する。
【0386】
このように、この実施の形態では、セレクタ2301を設けたので、演算処理の回数が奇数回の場合に有効である。
【0387】
なお、ここではデータパスを2段にした場合を例にとって説明したが、4段以上の複数段して、各段の間に転置用RAMを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【0388】
第11の実施の形態
次に、この発明の第11の実施の形態について、図24を用いて説明する。なお、この実施の形態は、上述の第10の実施の形態に示した高速フーリエ変換処理装置にブロック浮動小数点演算処理機構を設けたものである。
【0389】
この実施の形態では、サンプル点数が1024点の場合を例にとって説明する。
【0390】
図24は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【0391】
同図において、図23と同じ符号を付した構成部は、それぞれ、図23の場合と同じものを示している。
【0392】
また、同図において、第1のデータパス2401および第2のデータパス2402は、ブロック浮動小数点演算を行うためのシフト機能を有している点で、図23に示した各データパス108,109と異なる。また、この実施の形態では、第3のデータパス2403および第4のデータパス2404も、かかるシフト機能を有している。なお、ブロック浮動小数点演算で使用するシフト機能の詳細構成については、説明を省略する。
【0393】
また、ブロック浮動小数点検出記憶部2405は、セレクタ1802が出力した複素数データを取り込んでブロック浮動小数点を検出するとともに、この検出値を一時的に記憶する。
【0394】
出力ビットシフタ2406,2407は、作業用RAM107から複素数データを取り込むとともにシーケンス制御部119から浮動小数点指数を取り込み、この浮動小数点指数の値に基づいて複素数データをシフトさせて、その結果を出力する。
【0395】
レジスタ2408は、シーケンス制御部119から浮動小数点指数を入力し、外部に対して出力する。
【0396】
続いて、図24に示した高速フーリエ変換処理装置の動作を説明する。
【0397】
この実施の形態では、上述のようにサンプル点数が1024(45 )点であるので、基数が4の演算処理を5回行う。
【0398】
まず、外部から入力された被処理データが、実数部と虚数部とに分けられて、セレクタ1802から作業用RAM107に順次格納される。このとき、ブロック浮動小数点検出記憶部2405は、これらの複素数データをセレクタ1802から順次入力して浮動小数点指数を検出し、第2の実施の形態の場合と同様にして浮動小数点指数を検出する。
【0399】
次に、シーケンス制御部119は、転置用RAM1805の出力が第3、第4のデータパス2403,2404に供給されるように、セレクタ2301を設定する。
【0400】
そして、上述の第6の実施の形態と同様にして、1回目および2回目の演算処理を同時に行い、さらに、3回目および4回目の演算処理を同時に行う。このとき、第1のデータパス2401および第2のデータパス2402ではブロック浮動小数点検出記憶部2405から取り込んだ浮動小数点指数を用いてブロック浮動小数点による演算を行う。また、1回目〜4回目の演算処理では、第3のデータパス2403および第4のデータパス2404は、ブロック浮動小数点ではなく、固定小数点による演算を行う。
【0401】
1回目〜4回目の演算処理が終了すると、次に、シーケンス制御部119は、作業用RAM107の出力が第3、第4のデータパス2403,2404に供給されるように、セレクタ2301を設定する。
【0402】
そして、以下のようにして、5回目の演算処理(基数4)を行う。
【0403】
まず、この演算処理では、上述の3回目および4回目の演算処理で256分割されたデータRAM107の各グループを、さらに4個のグループに分割する。すなわち、この演算処理では、データRAM107の各番地を合計1024個に分割する。
【0404】
次に、第3のデータパス2403および第4のデータパス2404が、作業用RAM107の0番地、1番地、2番地および3番地に格納された各複素数データと、sin/cos係数用ROM110に格納されたひねり係数と、ブロック浮動小数点検出記憶部2405に格納された浮動小数点指数とを読み込み、0番地のデータをAi 、1番地のデータをBi 、2番地のデータをCi 3番地のデータをDi として、上式(1)〜(4)の演算を行う。
【0405】
続いて、この演算によって得られた複素数データai ,bi ,ci ,di を、作業用RAM107の0番地、1番地、2番地および3番地に格納する。このとき、ブロック小数点検出記憶部2405は、浮動小数点指数の検出を順次行い、この検出値が記憶内容よりも小さいときは記憶内容を順次書き換える。
【0406】
その後、これと同様にして、4番地、5番地、6番地および7番地の各複素数データを用いた演算処理を、第3のデータパス2403および第4のデータパス2404が行う。
【0407】
以下、同様にして、各番地の複素数データを用いた演算を行う。
【0408】
以上のようにして5回目の演算処理が終了すると、最後に、上述の各実施の形態と同様にして、演算結果を外部に出力する。このときは、まず、シーケンス制御部119がブロック浮動小数点検出記憶部2405から各サンプルに対する第1,第3,第5ステージで用いた浮動小数点指数の累算値を入力し、出力ビットシフタ2406,2407に送る。そして、出力ビットシフタ2406,2407は、この浮動小数点指数に基づいて、作業用RAM107から入力した複素数データをシフトさせた後、出力回路1801に送る。これにより、シフト後の複素数データが、出力回路1801から外部へ出力される。
【0409】
また、必要であれば、出力ビットシフタ2406,2407によるシフトを行わずに複素数データを出力するとともに、最終的な浮動小数点指数をレジスタ2408から外部に出力することもできる。
【0410】
このように、この実施の形態では、セレクタ2301を設けたので、演算処理の回数が奇数回の場合に有効である。
【0411】
また、第1のデータパス2401および第2のデータパス2402だけでなく、第3のデータパス2403および第4のデータパス2404もブロック浮動小数点演算を行うことができるように構成したので、5回目の演算もブロック浮動小数点を用いて行うことができ、演算結果の精度を高めることができる。
【0412】
なお、ここではデータパスを2段にした場合を例にとって説明したが、4段以上の複数段して、各段の間に転置用RAMを設けることとしてもよい。この場合には、処理速度を一層向上させることができる。
【0413】
第12の実施の形態
次に、この発明の第12の実施の形態について、図25および図26を用いて説明する。
【0414】
この実施の形態では、サンプル点数が8192の高速フーリエ変換を行う場合を例に採って説明する。
【0415】
図25は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【0416】
同図において、図1と同じ符号を付した構成部は、それぞれ、図1の場合と同じものを示している。
【0417】
また、同図において、出力回路2501は、図1にセレクタ111,112、レジスタ113,114および出力端子115,116を略記したものである。さらに、セレクタ2502は、図1のセレクタ105,106、レジスタ103,104および入力ポート101,102を略記したものである。
【0418】
第1のデータパス2503および第3のデータパス2505としては、上述の第1の実施の形態の第1のデータパス108と同じ内部構造のもの、すなわち図2(A)に示したものまたは図12に示したものを使用することができる。
【0419】
同様に、第2のデータパス2504および第4のデータパス2506としては、上述の第1の実施の形態の第2のデータパス109と同じ内部構造のもの、すなわち図2(A)に示したものまたは図12に示したもののいずれかを使用することができる。
【0420】
デマルチプレクサ2507は、後述するように、セレクタ2502から入力した複素数データを作業用RAM107に格納する際の番地を選択する。なお、この番地の選択は、シーケンス制御部119の制御によって行われる。
【0421】
マルチプレクサ2508は、後述するように、作業用RAM107からデータパス2503〜2506に複素数データを転送する際に、転送先となるデータパスを選択する。この転送先の選択も、シーケンス制御部119の制御によって行われる。
【0422】
図26は、マルチプレクサ2507の動作を説明するための概念図である。なお、同図では、簡単化のために、セレクタ2502を省略している。
【0423】
同図に示したように、マルチプレクサ2507において、セレクタ2601は、作業用RAM107の1024番地〜2047番地の複素数データまたは4096番地〜5119番地の複素数データを選択して、セレクタ2603に出力する。
【0424】
また、セレクタ2602は、作業用RAM107の3072番地〜4095番地の複素数データまたは6144番地〜7167番地の複素数データを選択して、セレクタ2603に出力する。
【0425】
セレクタ2604は、作業用RAM107の1024番地〜2047番地の複素数データまたは4096番地〜5119番地の複素数データを選択して、セレクタ2606に出力する。
【0426】
セレクタ2605は、作業用RAM107の3072番地〜4095番地の複素数データまたは6144番地〜7167番地の複素数データを選択して、セレクタ2606に出力する。
【0427】
セレクタ2603は、作業用RAM107の0番地〜1023番地の複素数データ、2048番地〜3071番地の複素数データ、セレクタ2601から入力した複素数データまたはセレクタ2602から入力した複素数データを選択して、第1,第2のデータパス2503,2504に出力する。
【0428】
セレクタ2606は、作業用RAM107の5120番地〜6143番地の複素数データ、7168番地〜8191番地の複素数データ、セレクタ2604から入力した複素数データまたはセレクタ2605から入力した複素数データを選択して、第3,第4のデータパス2505,2506に出力する。
【0429】
次に、図25および図26に示した高速フーリエ変換処理装置の動作について説明する。
【0430】
まず、8192点の被処理データが、セレクタ2502およびデマルチプレクサ2506を介して、作業用RAM107に順次格納される。
【0431】
作業用RAM107への複素数データの格納が終了すると、続いて、これらの複素数データを用いて高速フーリエ変換を行う。
【0432】
なお、この実施の形態では、サンプル点数が8192(=46 ×2)なので、基数が4の演算処理を6回繰り返した後、基数が2の演算処理を行う。
【0433】
最初に、1回目の演算処理(基数4)について、説明する。
【0434】
まず、シーケンス制御部119が、セレクタ2601が4096番地〜5119番地を、セレクタ2602が6144番地〜7167番地を、セレクタ2604が1024番地〜2047番地を、セレクタ2605が3072番地〜4095番地を選択するように、これらのセレクタ2601,2602,2604,2605を設定する。そして、第1のデータパス2503および第2のデータパス2504が、0番地の被処理データをA1 、2048番地の被処理データをB1 、4096番地の被処理データをC1 、6144番地の被処理データをD1 として作業用RAM107から読み出し、上式(1)〜(4)の演算処理を行う。また、これと平行して、第3のデータパス2505および第4のデータパス2506が、1024番地の被処理データをA1 、3072番地の被処理データをB1 、5120番地の被処理データをC1 、7168番地の被処理データをD1 として作業用RAM107から読み出し、上式(1)〜(4)の演算を行う。
【0435】
続いて、第1のデータパス2503および第2のデータパス2504の演算結果である複素数データa1 ,b1 ,c1 ,d1 が、セレクタ2502を介してデマルチプレクサ2507に入力され、作業用RAM107に書き込まれる。ここで、この実施の形態では、演算結果a1 は0番地に書き込まれ、演算結果b1 は2048番地に書き込まれ、演算結果c1 は4096番地に書き込まれ、且つ、演算結果d1 は6144番地に書き込まれる。
【0436】
また、これと同時に、第3のデータパス2505および第4のデータパス2506の演算結果である複素数データa1 ,b1 ,c1 ,d1 が、セレクタ2502およびデマルチプレクサ2507を介して、作業用RAM107の1024番地、3072番地、5120番地および7168番地に書き込まれる。
【0437】
次に、第1のデータパス2503および第2のデータパス2504は、1番地の被処理データをA1 、2049番地の被処理データをB1 、4097番地の被処理データをC1 、6145番地の被処理データをD1 として上式(1)〜(4)の演算処理を行い、また、これと平行して第3のデータパス2505および第4のデータパス2506が、1025番地の被処理データをA1 、3073番地の被処理データをB1 、5121番地の被処理データをC1 、7169番地の被処理データをD1 として上式(1)〜(4)の演算を行う。そして、第1のデータパス2503および第2のデータパス2504の演算結果は1番地、2049番地、4097番地および6145番地に格納され、また、第3のデータパス2505および第4のデータパス2506の演算結果は1025番地、3073番地、5121番地および7169番地に格納される。
【0438】
以下同様にして、各データパス2503〜2506は、すべての番地の被処理データについて順次演算を行い、演算結果を作業用RAM107に書き込む。
【0439】
このようにして1回目の演算処理が終了すると、続いて、2回目の演算処理が行われる。
【0440】
なお、2回目の演算処理においては、第1のデータパス2503および第2のデータパス2504による演算では、被処理データの読み出しおよび演算結果の書き込みは、作業用RAM107の0番地〜4095番地のみに対して行われる。同様に、第3のデータパス2505および第4のデータパス2506による演算では、被処理データの読み出しおよび演算結果の書き込みは、作業用RAM107の4096番地〜8191番地のみに対して行われる。
【0441】
まず、シーケンス制御部119が、セレクタ2601が1024番地〜2047番地を、セレクタ2602が3072番地〜4095番地を、セレクタ2604が4096番地〜5119番地を、セレクタ2605が6144番地〜7167番地を選択するように、これらのセレクタ2601,2602,2604,2605を設定する。そして、第1のデータパス2503および第2のデータパス2504が、0番地の被処理データをA1 、512番地の被処理データをB1 、1024番地の被処理データをC1 、1536番地の被処理データをD1 として作業用RAM107から読み出し、上式(1)〜(4)の演算処理を行う。同様に、第3のデータパス2505および第4のデータパス2506が、4096番地の被処理データをA1 、4608番地の被処理データをB1 、5120番地の被処理データをC1 、5632番地の被処理データをD1 として作業用RAM107から読み出し、上式(1)〜(4)の演算を行う。
【0442】
続いて、第1のデータパス2503および第2のデータパス2504の演算結果である複素数データa1 ,b1 ,c1 ,d1 が、セレクタ2502およびデマルチプレクサ2507を介して、0番地、512番地、1024番地、1536番地に書き込まれる。同様に、第3のデータパス2505および第4のデータパス2506の演算結果である複素数データa1 ,b1 ,c1 ,d1 が、セレクタ2502およびデマルチプレクサ2507を介して、作業用RAM107の4096番、4608番地、5120番地および5632番地に書き込まれる。
【0443】
以下同様にして、各データパス2503〜2506は、すべての番地の被処理データについて順次演算を行い、演算結果を作業用RAM107に書き込む。
【0444】
その後、2回目の演算処理と同様にして、3回目〜6回目の演算処理(基数4)を行い、さらに、7回目の演算処理(基数2)を行う。
【0445】
このように、この実施の形態にかかる高速フーリエ変換処理装置によれば、4個のデータパスを用いて2系統の演算処理を平行して行うことができるので、処理速度をさらに向上させることができる。また、デマルチプレクサ2507およびマルチプレクサ2508を用いて1回目の演算処理後のデータ転送を不要としたことによっても、処理速度の向上を図っている。
【0446】
第13の実施の形態
次に、この発明の第13の実施の形態に係る高速フーリエ変換処理装置について、図27を用いて説明する。
【0447】
この実施の形態は、上述の第12の実施の形態に係る高速フーリエ変換処理装置に、ブロック浮動小数点演算処理機能を付加したものである。
【0448】
図27は、この実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【0449】
同図において、図25と同じ符号を付した構成部は、それぞれ、図25の場合と同じものを示している。
【0450】
また、同図において、データパス2701〜2704は、ブロック浮動小数点演算を行うためのシフト機能を有している点で、図25に示した各データパス2503〜2506と異なる。なお、かかるシフト機能の詳細構成については、説明を省略する。
【0451】
ブロック浮動小数点検出記憶部2705は、データパス2701〜2704が出力した複素数データを取り込んでブロック浮動小数点を検出するとともに、この検出値を一時的に記憶する。このブロック浮動小数点検出記憶部2705が一時的に記憶したブロック浮動小数点の検出値は、データパス2701〜2704およびシーケンス制御部119に転送される。
【0452】
出力ビットシフタ2706,2707は、作業用RAM107から複素数データを取り込むとともにシーケンス制御部119から浮動小数点指数を取り込む。そして、この浮動小数点指数の値に基づいて複素数データをシフトさせ、その結果を出力する。
【0453】
レジスタ2708は、シーケンス制御部119から浮動小数点指数の各ステージの累算値を入力し、外部に対して出力する。
【0454】
次に、図27に示した高速フーリエ変換処理装置の動作について説明する。なお、この実施の形態でも、上述の第12の実施の形態と同様、サンプル点数が8192(=46 ×2)なので、基数が4の演算処理を6回繰り返した後、基数が2の演算処理を行う。
【0455】
まず、8192点の被処理データが、セレクタ2502およびデマルチプレクサ2507を介して作業用RAM107に、順次格納される。このとき、ブロック浮動小数点検出記憶部2705は、これらの被処理データを順次入力し、第2の実施の形態の場合と同様にして浮動小数点指数を検出する。
【0456】
続いて、1回目の演算処理(基数4)が、開始される。
【0457】
この演算処理でのセレクタ2601〜2606の動作は上述の第12の実施の形態と同様である。すなわち、この演算処理の最初の演算では、第1のデータパス2701および第2のデータパス2702は、0番地の被処理データをA1 、2048番地の被処理データをB1 、4096番地の被処理データをC1 、6144番地の被処理データをD1 として作業用RAM107から読み出し、第3のデータパス2703および第4のデータパス2704は、1024番地の被処理データをA1 、3072番地の被処理データをB1 、5120番地の被処理データをC1 、7168番地の被処理データをD1 として作業用RAM107から読み出す。そして、これらのデータパス2701〜2704により、上式(1)〜(4)の演算が行われる。このとき、データパス2701〜2704は、上述の第2の実施の形態の場合と同様にして、浮動小数点演算を行う。
【0458】
続いて、第1のデータパス2701および第2のデータパス2702の演算結果である複素数データa1 ,b1 ,c1 ,d1 が、セレクタ2502を介してデマルチプレクサ2507に入力され、作業用RAM107の0番地、2048番地、4096番地、6144番地に書き込まれる。同様に、第3のデータパス2703および第4のデータパス2704の演算結果である複素数データa1 ,b1 ,c1 ,d1 は、作業用RAM107の1024番、3072番地、5120番地および7168番地に書き込まれる。
【0459】
以下、上述の第12の実施の形態の場合と同様にして、データパス2701〜2704が、以降の演算を行い、演算結果を作業用RAM107に書き込む。このとき、ブロック浮動小数点検出記憶部2705は、これらの演算結果を順次入力し、第2の実施の形態の場合と同様にして浮動小数点指数を検出する。
【0460】
このようにして1回目の演算処理が終了すると、続いて、2回目の演算処理が行われる。
【0461】
上述の第12の実施の形態と同様、2回目の演算処理においては、第1のデータパス2701および第2のデータパス2702による演算では、被処理データの読み出しおよび演算結果の書き込みは、作業用RAM107の0番地〜4095番地のみに対して行われる。同様に、第3のデータパス2703および第4のデータパス2704による演算では、被処理データの読み出しおよび演算結果の書き込みは、作業用RAM107の4096番地〜8191番地のみに対して行われる。また、それぞれの演算において、データパス2701〜2704は、上述の第2の実施の形態の場合と同様にして、浮動小数点演算を行う。さらに、演算結果を作業用RAM107に格納する際には、ブロック浮動小数点検出記憶部2705が、これらの演算結果を順次入力し、第2の実施の形態の場合と同様にして浮動小数点指数を検出する。
【0462】
その後、2回目の演算処理と同様にして、3回目〜6回目の演算処理(基数4)を行い、さらに、7回目の演算処理(基数2)を行う。
【0463】
このように、この実施の形態にかかる高速フーリエ変換処理装置によれば、上述の第12の実施の形態と同様の高速フーリエ変換処理を、ブロック浮動小数点法を用いて行うことができる。
【0464】
【発明の効果】
以上詳細に説明したように、この発明に係る高速フーリエ変換処理装置によれば、フーリエ変換処理を高速で行うことができ、また、基数4または基数2のいずれの高速フーリエ変換アルゴリズムにも対応することができる。
【図面の簡単な説明】
【図1】第1の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図2】(A)は図1に示した第1のデータパスおよび第2のデータパスの内部構造を概念的に示すブロック図、(B)および(C)は(A)の等価回路である。
【図3】図1に示した作業用RAMの内部構造を概略的に示すブロック図である。
【図4】第1の実施の形態に係る高速フーリエ変換処理装置の動作を説明するための概念図である。
【図5】第2の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図6】第3の実施の形態に係る高速フーリエ変換処理システムの構成を概略的に示すブロック図である。
【図7】第4の実施の形態に係る高速フーリエ変換処理システムの構成を概略的に示すブロック図である。
【図8】図7に示した作業用RAMの内部構造を概略的に示すブロック図である。
【図9】第4の実施の形態に係る高速フーリエ変換処理装置の動作を説明するための概念図である。
【図10】第4の実施の形態に係る高速フーリエ変換処理装置の動作を説明するための概念図である。
【図11】第5の実施の形態に係る高速フーリエ変換処理システムの構成を概略的に示すブロック図である。
【図12】第1の実施の形態に係る第1のデータパスおよび第2のデータパスの他の内部構造例を概念的に示すブロック図である。
【図13】図12に示した第1のデータパスの基数4のときの演算動作を説明するためのタイミングチャートである。
【図14】図12に示した第2のデータパスの基数4のときの演算動作を説明するためのタイミングチャートである。
【図15】図12に示した第1のデータパスの基数2のときの演算動作を説明するためのタイミングチャートである。
【図16】図12に示した第2のデータパスの基数2のときの演算動作を説明するためのタイミングチャートである。
【図17】第2の実施の形態に係る第1のデータパスおよび第2のデータパスの他の内部構造例を概念的に示すブロック図である。
【図18】第6の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図19】図18に示した高速フーリエ変換処理装置の動作を説明するための概念図である。
【図20】第7の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図21】第8の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図22】第9の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図23】第10の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図24】第11の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図25】第12の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【図26】図25に示したマルチプレクサの動作を説明するための概念図である。
【図27】第13の実施の形態に係る高速フーリエ変換処理装置の構成を概略的に示すブロック図である。
【符号の説明】
101,102 入力端子
103,104 レジスタ
105,106,111,112 セレクタ
107 作業用RAM
108,501 第1のデータパス
109,502 第2のデータパス
110 sin/cos係数用ROM
113,114 レジスタ
115,116 出力端子
117 クロック生成部
118 メモリアドレス発生部
119 シーケンス制御部
201,202,221,223 加算器
203,222,224 減算器
204 複素減算器
211,212,213,214 バイパス
231,232,233,234 乗算器
301,302,303,304 メモリアレイ部
311,312,313,314 データレジスタ
321,322,323,324 アドレスレジスタ
331 出力セレクタ
332 出力レジスタ
333 デコーダ
503 ブロック浮動小数点検出記憶部
504,505 出力ビットシフタ
601,602 プロセッサ
701,1001 マスタモード用プロセッサ
702,1002 スレーブモード用プロセッサ

Claims (10)

  1. 離散値の複素数データを入力して、可変サンプル点数の高速フーリエ変換演算を基数4または基数2のアルゴリズムで実行する高速フーリエ変換処理装置において、
    サンプル点数が4n ×2個または4n 個(nは自然数)の前記複素数データを外部から入力して1つのグループとして一時的に記憶する作業用記憶手段と、
    この作業用記憶手段に記憶された前記複素数データの各グループを計算列とサンプル点番号とにしたがって16個のグループAG1,BG1,CG1,DG1,AG2,BG2,CG2,DG2,AG3,BG3,CG3,DG3,AG4,BG4,CG4,DG4に分割し、分割後の各グループの組合せ{AG1,BG1,CG1,DG1},{AG2,BG2,CG2,DG2},{AG3,BG3,CG3,DG3},{AG4,BG4,CG4,DG4}のそれぞれについて、各組合わせの各グループに属するi番目の前記複素数データAi ,Bi ,Ci ,Di とひねり係数Wi1,Wi2,Wi3,Wi4を用いた演算
    i ={(Ai +Ci )+(Bi +Di )}×Wi1 ・・・(1)
    i ={(Ai +Ci )−(Bi +Di )}×Wi3 ・・・(2)
    i ={(Ai −Ci )−j(Bi −Di )}×Wi2 ・・・(3)
    i ={(Ai −Ci )+j(Bi −Di )}×Wi4 ・・・(4)
    を実行する第1の演算手段と、
    この第1の演算手段の演算結果ai ,bi ,ci ,di を4個ずつ取り込んで4行4列の行列を形成した後でこの行列を転置し、これにより得られた転置行列を構成する複素数データを1列ずつ出力する転置手段と、
    この転置手段から入力した前記複素数データをAi ,Bi ,Ci ,Di として前記演算(1)〜(4)を順次行うとともにその結果であるai ,bi ,ci ,di を前記作業用記憶手段に前記グループの組合せ{AG1,AG2,AG3,AG4},{BG1,BG2,BG3,BG4},{CG1,CG2,CG3,CG4},{DG1,DG2,DG3,DG4}に順次記憶させる第2の演算手段と、
    を備えたことを特徴とする高速フーリエ変換処理装置。
  2. 前記第1の演算手段または前記第2の演算手段の一方が、
    前記第1の演算手段および前記第2の演算手段による前記演算(1)〜(4)が合計でn回繰り返された後で、前記サンプル点数が4n ×2個の場合にはさらにこの演算処理によって得られた複素数データAi ,Bi ,Ci ,Di を用いた演算
    i =Ai +Bi ・・・(5)
    i =Ai −Bi ・・・(6)
    i =Ci +Di ・・・(7)
    i =Ci −Di ・・・(8)
    をすべてのiについて実行するとともにその結果であるai ,bi ,ci ,di を前記作業用記憶手段にそれぞれ記憶する演算処理を1回行うように構成されたことを特徴とする請求項1に記載の高速フーリエ変換処理装置。
  3. 前記第1の演算手段が、前記演算(1),(2),(5),(6)または前記演算(1),(2)を適宜行うように構成された第1のデータパスと、前記演算(3),(4),(7),(8)または前記演算(3),(4)を適宜行うように構成された第2のデータパスとを備え、且つ、前記第2の演算手段が、前記演算(1),(2),(5),(6)または前記演算(1),(2)を適宜行うように構成された第3のデータパスと、前記演算(3),(4),(7),(8)または前記演算(3),(4)を適宜行うように構成された第4のデータパスとを備えたことを特徴とする請求項2に記載の高速フーリエ変換処理装置。
  4. 前記第1のデータパスまたは前記第3のデータパスの少なくとも一方が、
    前記複素数データAi ,Ci を入力して加算する第1の加算器と、
    前記複素数データAi ,Ci を前記第1の加算器で加算することなく通過させる第1のバイパスと、
    前記複素数データBi ,Di を入力して加算する第2の加算器と、
    前記複素数データBi ,Di を前記第2の加算器で加算することなく通過させる第2のバイパスと、
    前記第1の加算器の出力または前記第1のバイパスの出力と前記第2の加算器の出力または前記第2のバイパスの出力とを入力して加算する第3の加算器と、
    前記第1の加算器の出力または前記第1のバイパスの出力と前記第2の加算器の出力または前記第2のバイパスの出力とを入力して減算する第1の減算器と、
    前記第3の加算器の演算結果に前記ひねり係数Wi1または「1」を乗算して、演算結果ai を出力する第1の乗算器と、
    前記第1の減算器の演算結果に前記ひねり係数Wi3または「1」を乗算して、演算結果ci を出力する第2の乗算器と、
    を備えたことを特徴とする請求項3に記載の高速フーリエ変換処理装置。
  5. 前記第2のデータパスまたは前記第4のデータパスの少なくとも一方が、
    前記複素数データAi ,Ci を入力して減算する第2の減算器と、
    前記複素数データAi ,Ci を前記第2の減算器で減算することなく通過させる第3のバイパスと、
    前記複素数データBi ,Di を入力して減算したのちjを乗算する複素減算器と、
    前記複素数データBi ,Di を前記複素減算器で複素減算することなく通過させる第4のバイパスと、
    前記第2の減算器の出力または前記第3のバイパスの出力と前記複素減算器の出力または前記第4のバイパスの出力とを入力して加算する第4の加算器と、
    前記第2の減算器の出力または前記第3のバイパスの出力と前記複素減算器の出力または前記第4のバイパスの出力とを入力して減算する第3の減算器と、
    前記第4の加算器の演算結果に前記ひねり係数Wi2または「1」を乗算して、演算結果bi を出力する第3の乗算器と、
    前記第3の減算器の演算結果に前記ひねり係数Wi4または「1」を乗算して、演算結果di を出力する第4の乗算器と、
    を備えたことを特徴とする請求項3または4に記載の高速フーリエ変換処理装置。
  6. 前記第1のデータパスまたは前記第3のデータパスの少なくとも一方が、
    前記複素数データAi ,Ci ,Bi ,Di を入力して演算Ai +Ci ,Bi +Di を行う第5の加算器と、
    前記複素数データAi ,Ci ,Bi ,Di を前記第5の加算器で演算することなく通過させる第5のバイパスと、
    前記第5の加算器または前記第5のバイパスから複素数データを2個ずつ取り込んで、両データの加算結果および減算結果を出力する第1の加減算器と、
    この第1の加減算器の前記加算結果とひねり係数Wi1または「1」との、実数部どうしの乗算、実数部と虚数部との乗算、虚数部どうしの乗算および虚数部と実数部との乗算を順次行う第5の乗算器と、
    前記第1の加減算器の前記減算結果とひねり係数Wi3または「1」との、実数部どうしの乗算、実数部と虚数部との乗算、虚数部どうしの乗算および虚数部と実数部との乗算を順次行う第6の乗算器と、
    前記第5の乗算器から入力した実数部どうしの乗算結果から虚数部どうしの乗算結果を減算するとともに、実数部と虚数部との乗算結果を虚数部と実数部との乗算結果に加算して、これらの演算結果を演算結果ai の実数部および虚数部として出力し、さらに、第6の乗算器から入力した実数部どうしの乗算結果から虚数部どうしの乗算結果を減算するとともに、実数部と虚数部との乗算結果を虚数部と実数部との乗算結果に加算して、これらの演算結果を演算結果ci の実数部および虚数部として出力する第2の加減算器と、
    を備えたことを特徴とする請求項3に記載の高速フーリエ変換処理装置。
  7. 前記第2のデータパスまたは前記第4のデータパスの少なくとも一方が、
    前記複素数データAi ,Ci ,Bi ,Di を入力して演算Ai −Ci ,j(Bi −Di )を行う減算/複素減算器と、
    前記複素数データAi ,Ci ,Bi ,Di を前記減算/複素減算器で演算することなく通過させる第5のバイパスと、
    前記減算/複素減算器または前記第6のバイパスから複素数データを2個ずつ取り込んで、両データの減算結果および加算結果を出力する第3の加減算器と、
    この第3の加減算器の前記減算結果とひねり係数Wi2または「1」との、実数部どうしの乗算、実数部と虚数部との乗算、虚数部どうしの乗算および虚数部と実数部との乗算を順次行う第7の乗算器と、
    前記第3の加減算器の前記加算結果とひねり係数Wi4または「1」との、実数部どうしの乗算、実数部と虚数部との乗算、虚数部どうしの乗算および虚数部と実数部との乗算を順次行う第8の乗算器と、
    前記第7の乗算器から入力した実数部どうしの乗算結果から虚数部どうしの乗算結果を減算するとともに、実数部と虚数部との乗算結果を虚数部と実数部との乗算結果に加算して、これらの演算結果を演算結果bi の実数部および虚数部として出力し、さらに、第8の乗算器から入力した実数部どうしの乗算結果から虚数部どうしの乗算結果を減算するとともに、実数部と虚数部との乗算結果を虚数部と実数部との乗算結果に加算して、これらの演算結果を演算結果di の実数部および虚数部として出力する第4の加減算器と、
    を備えたことを特徴とする請求項3または6に記載の高速フーリエ変換処理装置。
  8. 前記第1、第2の演算手段の演算結果のいずれか一方を選択して前記作業用記憶手段に入力させる第1選択手段を、さらに有することを特徴とする請求項1〜7のいずれかに記載の高速フーリエ変換処理装置。
  9. 前記第1の演算手段の演算結果または前記作業用記憶手段の格納値のいずれか一方を選択して前記第2の演算手段に入力させる第2選択手段を、さらに有することを特徴とする請求項1〜8のいずれかに記載の高速フーリエ変換処理装置。
  10. 前記演算手段にブロック浮動小数点演算法を用いて高速フーリエ変換演算を実行させるためのブロック浮動小数点検出記憶手段を、さらに有することを特徴とする請求項1〜9のいずれかに記載の高速フーリエ変換処理装置。
JP01597198A 1997-02-04 1998-01-28 高速フーリエ変換処理装置 Expired - Fee Related JP3938238B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP01597198A JP3938238B2 (ja) 1997-02-04 1998-01-28 高速フーリエ変換処理装置
TW087101271A TW420907B (en) 1997-02-04 1998-02-03 Fast fourier transform processing device, fast fourier transform processing system, and fast fourier transform processing method
KR10-1998-0003103A KR100390326B1 (ko) 1997-02-04 1998-02-04 고속푸리에변환처리장치,고속푸리에변환처리시스템및고속푸리에변환처리방법
EP98101915A EP0856801A1 (en) 1997-02-04 1998-02-04 Device, system and method for fast fourier transform processing
US09/018,530 US6230176B1 (en) 1997-02-04 1998-02-04 Fast fourier transform processing device, fast fourier transform processing system, and fast fourier transform processing method

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2179997 1997-02-04
JP31365997 1997-11-14
JP9-313659 1997-11-14
JP9-21799 1997-11-14
JP01597198A JP3938238B2 (ja) 1997-02-04 1998-01-28 高速フーリエ変換処理装置

Publications (2)

Publication Number Publication Date
JPH11203272A JPH11203272A (ja) 1999-07-30
JP3938238B2 true JP3938238B2 (ja) 2007-06-27

Family

ID=27281213

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01597198A Expired - Fee Related JP3938238B2 (ja) 1997-02-04 1998-01-28 高速フーリエ変換処理装置

Country Status (5)

Country Link
US (1) US6230176B1 (ja)
EP (1) EP0856801A1 (ja)
JP (1) JP3938238B2 (ja)
KR (1) KR100390326B1 (ja)
TW (1) TW420907B (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167416A (en) * 1997-09-26 2000-12-26 Xilinx, Inc. System and method for RAM-partitioning to exploit parallelism of radix-2 elements in FPGAS
EP0942379A1 (en) * 1998-03-13 1999-09-15 Alcatel Pipelined fast fourier transform processor
DE19930707C2 (de) * 1999-07-02 2003-04-10 Forschungszentrum Juelich Gmbh Meßverfahren, Meßvorrichtung sowie Auswerteelektronik
EP1076297A1 (en) * 1999-08-09 2001-02-14 Deutsche Thomson-Brandt Gmbh Method for fast Fourier transformation of audio signals
US6859816B2 (en) * 2000-07-31 2005-02-22 Sony Corporation Fast Fourier transform method and inverse fast Fourier transform method
US6625203B2 (en) * 2001-04-30 2003-09-23 Interdigital Technology Corporation Fast joint detection
US7088791B2 (en) * 2001-10-19 2006-08-08 Texas Instruments Incorporated Systems and methods for improving FFT signal-to-noise ratio by identifying stage without bit growth
AU2003256426A1 (en) * 2002-08-20 2004-03-11 Interdigital Technology Corporation Efficient joint detection
US7386703B2 (en) * 2003-11-18 2008-06-10 International Business Machines Corporation Two dimensional addressing of a matrix-vector register array
WO2006023770A2 (en) 2004-08-18 2006-03-02 Nielsen Media Research, Inc. Methods and apparatus for generating signatures
US8266196B2 (en) * 2005-03-11 2012-09-11 Qualcomm Incorporated Fast Fourier transform twiddle multiplication
US8229014B2 (en) 2005-03-11 2012-07-24 Qualcomm Incorporated Fast fourier transform processing in an OFDM system
US20060224652A1 (en) * 2005-04-05 2006-10-05 Nokia Corporation Instruction set processor enhancement for computing a fast fourier transform
CN101617306B (zh) 2005-04-12 2012-02-01 Nxp股份有限公司 用于执行快速傅立叶变换操作的设备
US8161093B2 (en) * 2006-12-06 2012-04-17 Samsung Electronics Co., Ltd. Complex multiplier and twiddle factor generator
US7675847B2 (en) 2007-07-10 2010-03-09 Wipro Limited Hardware implementation of a programmable FFT based on a half length FFT core
KR101189767B1 (ko) * 2008-12-17 2012-10-10 한국전자통신연구원 고속 푸리에 변환 장치 및 방법
US8370414B2 (en) * 2009-01-15 2013-02-05 Telefonaktiebolaget L M Ericsson (Publ) FFT-based parallel system with memory reuse scheme
JP6777095B2 (ja) 2015-12-02 2020-10-28 日本電気株式会社 ディジタルフィルタ、フィルタ処理方法及び記録媒体
US9952831B1 (en) * 2017-02-16 2018-04-24 Google Llc Transposing in a matrix-vector processor

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4689762A (en) * 1984-09-10 1987-08-25 Sanders Associates, Inc. Dynamically configurable fast Fourier transform butterfly circuit
US4872132A (en) * 1987-03-13 1989-10-03 Zoran Corporation Method and means for block floating point arithmetic
US5093801A (en) * 1990-07-06 1992-03-03 Rockwell International Corporation Arrayable modular FFT processor
US5293330A (en) 1991-11-08 1994-03-08 Communications Satellite Corporation Pipeline processor for mixed-size FFTs
JP2950703B2 (ja) * 1992-04-30 1999-09-20 シャープ株式会社 高速フーリエ変換用ディジット反転のためのアドレス発生器及び反転フィールドシーケンス発生器並びにディジット反転シーケンス信号発生方法
FR2709007B1 (fr) 1993-08-11 1995-09-29 Joanblanq Christophe Dispositif électronique de calcul d'une transformée de Fourier et procédé pour minimiser la taille des chemins de données internes d'un tel dispositif.
US5481488A (en) * 1994-10-21 1996-01-02 United Microelectronics Corporation Block floating point mechanism for fast Fourier transform processor
US5717620A (en) * 1995-10-24 1998-02-10 Airnet Communications Corporation Improved-accuracy fast-Fourier-transform butterfly circuit
US5951627A (en) * 1996-06-03 1999-09-14 Lucent Technologies Inc. Photonic FFT processor

Also Published As

Publication number Publication date
TW420907B (en) 2001-02-01
EP0856801A1 (en) 1998-08-05
US6230176B1 (en) 2001-05-08
JPH11203272A (ja) 1999-07-30
KR100390326B1 (ko) 2003-10-30

Similar Documents

Publication Publication Date Title
JP3938238B2 (ja) 高速フーリエ変換処理装置
US6115728A (en) Fast fourier transforming apparatus and method, variable bit reverse circuit, inverse fast fourier transforming apparatus and method, and OFDM receiver and transmitter
US5293330A (en) Pipeline processor for mixed-size FFTs
US4689762A (en) Dynamically configurable fast Fourier transform butterfly circuit
US7337205B2 (en) Matrix multiplication in a vector processing system
USRE46712E1 (en) Data processing device and method of computing the cosine transform of a matrix
US20080208944A1 (en) Digital signal processor structure for performing length-scalable fast fourier transformation
US20030041083A1 (en) Method and apparatus for high speed calculation of non-linear functions and networks using non-linear function calculations for digital signal processing
US5331585A (en) Orthogonal transformation processor for compressing information
WO2001035224A1 (en) Bit-serial memory access with wide processing elements for simd arrays
US7043627B2 (en) SIMD operation system capable of designating plural registers via one register designating field
JPH04313157A (ja) 演算処理装置
KR20000050581A (ko) Cbfp알고리즘을 갖는 fft프로세서
US4899301A (en) Signal processor for rapidly calculating a predetermined calculation a plurality of times to typically carrying out FFT or inverse FFT
KR100989797B1 (ko) Fft/ifft 연산코어
US6189021B1 (en) Method for forming two-dimensional discrete cosine transform and its inverse involving a reduced number of multiplication operations
US7653676B2 (en) Efficient mapping of FFT to a reconfigurable parallel and pipeline data flow machine
JP7038608B2 (ja) 半導体装置
KR20030055467A (ko) 다단계 분할을 이용한 기억소자 할당방법
JP2677969B2 (ja) 直交変換装置
WO2008077804A1 (en) Parallel processor
KR100284883B1 (ko) 실수 또는 복소수용 곱셈기
KR19990079171A (ko) 패스트 퓨리에 변환(fft) 장치와 제어방법
JP4248027B2 (ja) データ要素の系列を変換する装置
JP3088472B2 (ja) フーリエ変換装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040830

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060619

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060811

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070320

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070320

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100406

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110406

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees