JP2007513431A - Fftアーキテクチャおよび方法 - Google Patents

Fftアーキテクチャおよび方法 Download PDF

Info

Publication number
JP2007513431A
JP2007513431A JP2006542780A JP2006542780A JP2007513431A JP 2007513431 A JP2007513431 A JP 2007513431A JP 2006542780 A JP2006542780 A JP 2006542780A JP 2006542780 A JP2006542780 A JP 2006542780A JP 2007513431 A JP2007513431 A JP 2007513431A
Authority
JP
Japan
Prior art keywords
fft
value
memory
partial
writing
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.)
Pending
Application number
JP2006542780A
Other languages
English (en)
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2007513431A publication Critical patent/JP2007513431A/ja
Pending 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/26Systems using multi-frequency codes
    • H04L27/2601Multicarrier modulation systems
    • H04L27/2647Arrangements specific to the receiver only
    • H04L27/2649Demodulators
    • H04L27/265Fourier transform demodulators, e.g. fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators
    • H04L27/2651Modification of fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators for performance improvement

Landscapes

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

Abstract

高速フーリエ変換(FFT)ハードウェア実施および方法は、集積回路(IC)に必要なダイ領域を最小化しながら効率的なFFT処理を提供する。FFTハードウェアはNポイントFFTを実施することができる。但し、N=rnは基数(r)の関数である。ハードウェア実装は、各々がサンプルを記憶するN/r行を有するサンプルメモリを含む。回転因子メモリは、1行あたりkの回転因子を記憶することができる。但し、0<k<rは利用可能な複雑な回転乗算器(complex twiddle multiplier)の数を表す。FFTモジュールはメモリから行を読み、サンプルにrポイント複素FFTを実行し、次に回転乗算(twiddle multiplication)を行い、その結果をr×rのレジスターバンクに書き込む。レジスターバンクの内容は転置された順番でサンプルメモリに書き戻される。この動作は各ステージに対してN/r2回反復され、次にnステージに対して反復され、NポイントFFTを生成する。

Description

関連出願のクロスリファレンス
この出願は、2003年12月5日に出願された、「ハードウェアで高速FFTSを実施するための新規なアーキテクチャー(NOVEL ARCHITECTURE FOR IMPLEMENTING HIGHSPEED FFTS IN HARDWARE)というタイトルの米国仮出願番号第60/527,196の利益を主張する。この仮出願は、その全体が本明細書に組み込まれる。
この開示は信号処理の分野に関する。特に、この開示は高速フーリエ変換(FFT)を実施するための装置および方法に関する。
フーリエ変換は時間領域信号をその周波数領域対応物にマッピングするために使用することができる。反対に、逆フーリエ変換は周波数領域信号をその時間領域対応物にマッピングするために使用することができる。フーリエ変換は、時間領域信号のスペクトル解析に特に有効である。さらに、直交周波数分割多重化(OFDM)を実施する通信システムのような通信システムは、フーリエ変換の特性を使用してリニアに離間された階調から複数の時間領域シンボルを発生することができ、シンボルから周波数をリカバーすることができる。
サンプルされたデータシステムは、プロセッサーが所定の数のサンプルに変換を実行することを可能にするために離散フーリエ変換(DFT)を実施することができる。しかしながら、DFTは計算上集中的であり実行するために途方もない処理能力を必要とする。NポイントDFTを実行するのに必要な計算の数はN2のオーダーであり、O(N2)として示される。多くのシステムにおいて、DFTを実行するためにささげられる処理能力の量は、他のシステム動作のために利用可能な処理量を低減するかもしれない。さらに、リアルタイムシステムとして動作するように構成されるシステムは、その計算のために割り当てられた時間内に所望のサイズのDFTを実行するための十分な処理能力を持たないかもしれない。
高速フーリエ変換(FFT)は、DFT実施に比べて極めて少ない動作で実行されるフーリエ変換を可能にするフーリエ変換の離散的実施である。特定の実施に応じて、基数rのFFTを実行するのに必要な計算の数は典型的にN×logr(N)のオーダーであり、O(Nlogr(N))として示される。
これまで、FFTを実施するシステムは、FFTを実行するために汎用プロセッサーまたはスタンドアロンデジタルシグナルプロセッサー(DSP)を使用したかもしれない。しかしながら、システムは、装置に要求される機能性の大多数を実施するように特別にデザインされた特定用途向け集積回路(ASIC)をますます組み込みつつある。ASIC内でシステム機能性を実施することは、複数の集積回路をインターフェースするのに必要なチップカウント(chip count)およびグルーロジック(glue logic)を最小化する。縮小されたチップカウントは、機能性のいずれをも犠牲にすることなしに、デバイスのためのより小さな物理的設置面積を典型的に可能にさせる。
ASICダイ内の面積量は限られており、ASIC内で実施される機能ブロックは、全体のASIC設計の機能性を改良するために、サイズ、速度、および電力を最適化する必要がある。FFTにささげられるリソースの量は、FFTにささげられる利用可能なリソースのパーセンテージを制限するために最小でなければならない。それにもかかわらず、システム要件をサポートするのに十分な速度で変換を実行してもよいことを保証するために十分なリソースをFFTにささげる必要がある。さらに、電源要件および関連する放熱を最小にするためにFFTモジュールにより消費される電力量は最小にする必要がある。それゆえ、ASICのような集積回路内で実施するためのFFTアーキテクチャーを最適化することは望ましいかもしれない。
発明の概要
FFTハードウェア実施および方法は、集積回路(IC)に必要とされるダイ領域を最小にしながら、効率的なFFT処理を提供する。FFTハードウェアはNポイントのFFTを実施するために使用することができる。但し、N=rnは基数(r)の関数である。ハードウェア実施は、各々がサンプルを記憶するN/r行を有するサンプルメモリを含む。回転因子を記憶するために使用されるメモリは、1行あたりkの回転因子を有する。但し、0<k<rは、利用可能な複素回転乗算器の数を表す。FFTモジュールは、(行アドレスがFFTのステージの関数である)メモリから行を読み、各行のサンプルに適所r−ポイント複素FFTを実行し、それに続いて(最後のステージを除いて)回転乗算を実施し、結果を、r×rのサイズのマトリクスメモリ(レジスターバンク)に書き込む。r×rのサイズのマトリクスメモリの内容は、転置された順番で、または任意に転置なしで、サンプルメモリに書き戻される。この動作は、各ステージに対してN/r2回反復され、次にnステージに対して反復され、NポイントFFTを生成する。
1つの観点において、rポイントの、基数がrのFFTを決定する方法が開示される。この方法、変換するサンプルを、行あたりrのサンプルを有するメモリに書くことと、メモリからr行を読むことと、基数rの、rの部分FFTsを決定してr2の部分FFT値を発生させることと、回転因子をr2部分FFT値に印加してr2の重み付けされた部分FFT値を発生することと、r2の重み付けされた部分FFT値をレジスターブロックに書きこむことと、r2の重み付けされた部分FFT値をレジスターブロック内で置き換えて転置された値を発生することと、転置された値をメモリに書くことと、メモリの内容からFFT値を決定することとを含む。
他の観点において、rnポイントの、基数rのFFTを決定する方法が開示される。この方法は、変換されるサンプルを、行あたりrのサンプルを有するメモリに書くことと、ステージ値をイニシャライズすることと、ブロック値をイニシャライズすることと、FFTステージを処理することと、FFTステージの処理をn回反復することと、メモリの内容からFFT値を決定することとを含む。FFTステージを処理することは、a)ステージ値に基づいてブロックの数を決定することと、b)メモリから行を検索することと、c)r基数のrの部分FFTsを決定し、r2部分FFT値を発生することと、d)回転因子をr2部分FFT値に印加し、r2の重み付けされた部分FFT値を発生することと、e)r2の重み付けされた部分FFT値をレジスターブロック内で転置し転置された値を発生することと、f)転置された値をメモリに書くことと、g)ブロック値およびステージ値に基づいてステップb)乃至ステップf)を反復し、ステージ値をインクリメントすることを含む。
さらに、他の観点において、rn−ポイントの、基数rのFFTを決定する方法が開示される。この方法は、行あたりrのサンプルを有するメモリに変換されるサンプルを書き込むことと、a)ステージカウンターをイニシャライズすることと、b)ブロックカウンターおよび部分FFT出力カウンターをイニシャライズすることと、c)ステージ値、ブロック値および部分FFTカウンター値に基づいてメモリからrの行を検索することと、d)rの基数のrの部分FFTsを決定してr2の部分FFT値を発生することと、e)回転因子をr2部分FFT値に印加してr2の部分FFT値を発生することと、f)r2の重み付けされた部分FFT値をレジスターブロックに書くことと、g)r2の重み付けされた部分FFT値をレジスターブロック内で置き換えて転置された値を発生することと、i)転置された値をメモリに書くことと、j)部分FFTカウンターおよびブロックカウンターを更新することと、k)ブロックカウンターと部分FFTカウンターの値に基づいて、ステップc)乃至j)を反復することと、l)ステージカウンターの値を更新することと、m)ステージカウンターの値に基づいてステップb)乃至ステップk)を反復し、メモリの内容からFFT値を決定することとを含む。
他の観点において、rポイントの、基数rのFFT装置が開示される。
この装置は、メモリ行あたりrのサンプルを有するサンプルを記憶するように構成されたメモリと、メモリのrの行からのサンプルにrのr−ポイント部分FFTを実行するように構成されたFFTエンジンと、r行r列として構成されたr2のレジスターを有し、FFTエンジンから出力値を受信するように構成されたレジスターバンクと、レジスターバンク内の値を置換し転置された値を、FFTエンジンにより動作されるメモリからのr行に書き込むように構成された転置モジュールとを含む。
本発明の特徴、性質及び利点は、類似による参照文字が相応して、全体で特定する図面と関連して解釈されるときに後述される詳細な説明からさらに明らかになるであろう。
FFTまたは逆FFT(IFFT)、FFTモジュールを組み込んだ装置に適したハードウェアアーキテクチャーおよびFFTまたはIFFTを実行する方法が開示される。FFTアーキテクチャーは任意の基数のFFTの実施を可能にさせるために一般化される。FFTアーキテクチャーは小さなチップ面積を維持しながら、FFTを実行するために使用されるサイクルの数を最小化可能にする。特に、FFTアーキテクチャーは、しかるべく機能するFFTの期間に実行されるメモリアクセスの数を最適化するためにメモリとレジスター空間を構成する。FFTアーキテクチャーはさらなる柔軟性をその実施において提供し、特定の設計制約に依存して、基数の変動および複雑な乗算器の数の変動を可能にさせる。速度に敏感に反応するが、ダイ領域にそれほど敏感でない実施において、FFTアーキテクチャーはさらなる複雑な乗算器およびより高次の基数を用いて実施することができる。ダイ領域により敏感である実施において、基数を低減することができ、複素乗算器の数を低減することができる。
FFTアーキテクチャーは、FFT基数に等しいサンプルの数を記憶するのに十分である、メモリ行幅を有するように構成されるサンプルメモリを含む。従って、サンプルメモリは、行あたりrサンプルのN/r行を有するように構成される。但し、NはFFTのサイズを表し、rはFFT基数を表す。FFTブロックは、メモリから行を検索して、各行内のサンプルにr−ポイントFFTを実行するように構成される。FFTブロックは、FFT基数に等しい多数の行を検索するが、各個々の行からのサンプルに対してr-ポイントFFTを実行する。
FFTブロックはr-ポイントFFTsの結果を、r2サンプルを記憶するように構成されるレジスターバンクに書く。レジスターバンクおよび回転因子メモリに接続された複素乗算器は、適切な回転因子でFFT結果を重み付けする。重み付けされた因子は同じレジスターに戻される。
レジスターバンクの内容は、サンプルメモリ内のオリジナル行に再書き込みされる前に転置される。レジスターバンク内の値の転置は、FFTサンプルの関係をサンプルメモリの同じ行内に維持することにより、FFTが適所で実行されることを可能にする。サンプルメモリ内のサンプルは検索され、処理され、N−ポイントFFTを実行するために十分な多数のステージのためにサンプルメモリに戻される。開示されたアーキテクチャーにおいてハードウェアベースのトレードオフの議論に進む前に種々のFFTアルゴリズムの算術の複雑性を最初に調べることは重要である。基数2、4、8、16のCooley−Tukeyアルゴリズムおよび分割基数アルゴリズムが調べられる。たとえ、これらのアルゴリズムの複雑性がCooley−Tukeyベースアルゴリズムよりも低いかもしれないとしても、主要因ベースアルゴリズムは、正規構造を有さず、量子化により敏感であるので、主要因ベースアルゴリズムは、考慮されない。
アルゴリズムの複雑性はここでは、要求される実際の実質乗算および加算の数に基づいて評価される。複素乗算は4つの実質の乗算と2つの実質の加算に等しいと仮定される。
基数rアルゴリズムにより要求される実質乗算と実質加算の数は、これらのアルゴリズムがrnポイントDFTの計算を、(rn-1−1)(r−1)回転乗算を犠牲にしてr、rn-1−ポイントDFTsの計算に分割することに留意して、さらにrn-1r-ポイントTFTsによる更なる処理によって決定することができる。図1は、この構造を実証する8ポイントの基数2 FFTの信号フローの例である。
Figure 2007513431
によりrnポイントFFTに対して要求される実質乗算の数と、
Figure 2007513431
により要求される実質加算の数を表示すると、処理の複雑性は再帰により定義される。
Figure 2007513431
初期条件を用いて:
Figure 2007513431
分割基数アルゴリズムの複雑性は同様の方法で評価される。分割基数アルゴリズムは、いくつかの回転乗算を犠牲にして、N−ポイントFFTをサイズN/2の1つのFFTとサイズN/4の2つのFFTsに分割する。アルゴリズムの複雑性は再帰により定義される。
Figure 2007513431
これらの再帰に基づいて、いくつかの共通のFFTアルゴリズムの複雑性は、表にして比較することができる。表1および2は、共通のFFTアルゴリズムのための複雑性結果を編集する。表は、評価されなかったこれらの設定のための空のセルを含む。
Figure 2007513431
Figure 2007513431
表1および2における算術複雑性は、異なるアルゴリズムでFFTを実施する際のハードウェアコストの全体像を与えない。メモリからのデータと回転因子をアクセスし、データをメモリに書くコストを考慮する必要がある。下記の表は、異なる基数サイズのための異なるアルゴリズムにより要求されるメモリアクセスの数(データアクセスのみがカウントされる)を示す。データアクセスの数は、N−ポイントFFT/IFFTの基数rの実施の場合、ステージの合計数はlogr(N)であり、各ステージは2Nのリード動作およびライト動作を必要とし、2Nlogr(N)メモリ複素サンプルアクセス動作をもたらす。
Figure 2007513431
ハードウェア内におけるFFT実施の解析は、使用されるサイクルの観点から主要なコストはメモリアクセスで消費されることを示す。メモリアクセスの数は増加する基数とともに減少する。しかしながら、1つの複雑なサンプル/サイクルをアクセスすることは多くのアプリケーションに対して重要ではないかもしれない。簡単な例は潜在的な問題を例証する。
4μsのシンボル期間と40MHzのクロックレートを有する直交周波数分割多重(OFDM)のための64−ポイントFFTを実施する問題を考える。そのようなシステムは、例えば、40MHzのクロックを有した1EEE802.11aシステムであってよい。40MHzのクロックレートと組み合わせた4μsのOFDMシンボル期間は、シンボル間で利用可能な160サイクルに変換する。
基数−2アルゴリズムを用いた64ポイントFFTを実施するコストが最初に調べられる。上記の表で示されるように、必要とされるメモリアクセスの合計数は768である。それゆえ、サイクルあたり1サンプルリードまたはライトのみを有するメモリを用いて基数−2アルゴリズムを実施することは、最小で768サイクルかかるであろう。これは、計算のために利用可能なサイクル数の約5倍である。分割基数アルゴリズムは、基数−2アルゴリズムとして比較可能な量のメモリアクセスを要求する同じ問題に苦しむ。
しかしながら、基数−4アルゴリズムを用いた64ポイントFFTの場合、要求されるメモリアクセスの数は384である。これはよりよいが依然として利用可能なサイクルの数よりはるかに高い。FFT内のステージの数が減少するにつれ、FFTアルゴリズムの基数内のさらなる増加、メモリアクセスのさらなる減少が要求される。
任意の基数アルゴリズムのための高速実施は、並列リードおよびライトを可能にするメモリ構造の使用により達成することができる。特別の基数−rアルゴリズムの場合、リード動作のためであろうとまたはライト動作のためであろうと、1サイクル内のr−値のアクセスを可能にさせるメモリ構造は、アルゴリズムのスループットを改良する。概念的には、並列アクセスは、各行にワードを有するRAMとみなすことができる。しかしながら、このメモリ構造から最大利益を得るために、r−ポイントFFTを計算するのに必要なr−サンプルは、アルゴリズムのあらゆる段階で同じ行にある必要がある。これは、サンプルメモリのr行をリードし、r、r−ポイントFFTsを計算し、サンプルメモリへの転置の後で結果を書き込むことにより達成することができる。転置動作は、r2レジスターのマトリクスメモリ内で実行することができる。基数rが増加するにつれ、FFTエンジンのサイズおよびマトリクスメモリのサイズが増加する。速度に対する領域のトレードオフは、任意の特定の実施に対して実行することができる。
図2は、FFTモジュール200の一実施形態の機能ブロック図である。FFTモジュール200は、フォワード変換と逆変換との間の対称により、小さな変化のみを有したIFFTモジュールとして構成してもよい。FFTモジュール200は、単一のICダイ上に実施してもよく、ASICの一部として実施してもよい。あるいは、FFTモジュール200は、互いに通信している複数のエレメントとして実施してもよい。さらに、FFTモジュール200は特定のFFT構造に限定されない。例えば、FFTモジュール200は、時間におけるデシメーション(decimation)または周波数におけるデシメーションを実行するように構成することができる。
FFTモジュール200は変換されるサンプルを記憶するように構成されるメモリ210を含む。さらに、FFTモジュール200は変換の適所計算を実行するように構成されるので、メモリ210は、FFTの各ステージの結果およびFFTモジュール200の出力を記憶するために使用される。
メモリ210は、FFTのサイズおよびFFTの基数に一部基づいて分類することができる。基数rのNポイントFFTの場合であって、N=rnの場合、メモリ210は、行あたりrサンプルを用いて、rn-1行にNのサンプルを記憶するように分類することができる。メモリ210は、行あたりのサンプルの数により乗算されるサンプルあたりのビットの数に等しい幅を有するように構成することができる。メモリ210は実成分と虚成分としてサンプルを記憶するように典型的に構成される。従って、基数2FFTの場合、メモリ210は行あたり2つのサンプルを記憶するように構成され、第1のサンプルの実部、第1のサンプルの虚部、第2のサンプルの実部、および第2のサンプルの虚部としてサンプルを記憶してもよい。サンプルの各コンポーネントが10ビットとして構成されるなら、メモリ210は行あたり40ビットを使用する。メモリ210はモジュールの動作をサポートするために十分な速度のランダムアクセスメモリ(RAM)であり得る。
メモリ210は、r−ポイントFFTを実行するように構成されるFFTエンジン220に接続される。FFTモジュール200は、図1に示される構造に類似したFFTを実行するように構成することができる。この場合、回転因子による重み付けは、FFTバタフライ(butterfly)と呼ばれる部分FFTの後で実行される。そのような構成は、FFTエンジン220が最少数の乗算器を用いて構成されることを可能にし、従ってFFTエンジン220のサイズと複雑性を最小限にする。FFTエンジン220は、メモリ210から1行を検索し、その行内のサンプルにFFTを実行するように構成することができる。従って、FFTエンジン220は単一サイクルでr−ポイントFFTに対してサンプルのすべてを検索することができる。FFTエンジン220は、例えば、パイプライン化されたFFTエンジンであり得、クロックの異なるフェーズで行内の値を操作してもよい。
FFTエンジン220の出力はレジスターバンク230につながれる。レジスターバンク230はFFTの基数に基づいて多数の値を記憶するように構成される。一実施形態において、レジスターバンク230はr2の値を記憶するように構成することができる。サンプルの場合と同様に、レジスターバンクに記憶された値は、典型的に実成分と虚成分を有する複素値である。
レジスターバンクは一次記憶装置として使用されるが、高速アクセス用に構成され、アドレスバスを介してアクセスする必要がない記憶のための専用のロケーションを提供する。例えば、レジスターバンク230内のレジスターの各ビットはフリップフロップで実施することができる。結果として、レジスターは比較可能なサイズのメモリロケーションに比べて、さらにより多くのダイ領域を使用する。レジスター空間にアクセスするためのサイクルコストが事実上無いので、特定のFFTモジュール200実施は、レジスターバンク230のサイズおよびメモリ210を操作することによりダイ領域に対して速度をトレードオフすることができる。
2値の転置は、例えば行により値を書きこみ、列により値を読み出し、逆もまた同様であることにより直接実行できるように、レジスターバンク230はr2値を記憶するために有利に分類することができる。値転置は、FFTのすべてのステージに対してメモリ210内のFFT値の行配列を維持するために使用される。
第2のメモリ240は、FFTエンジン220の出力に重み付けをするために使用される回転因子を記憶するように構成される。いくつかの実施形態において、FFTエンジン220は部分FFT出力(FFTバタフライ)の計算中に直接回転因子を用いるように構成することができる。回転因子は任意のFFTに対してあらかじめ決めることができる。それゆえ、第2のメモリ240は、リードオンリーメモリ(ROM)、不揮発性メモリ、不揮発性RAM、またはフラッシュ(登録商標)プログラマブルメモリとして実施することができる。しかしながら、また、第2のメモリは、RAMまたはその他のタイプのメモリとして構成してもよい。第2のメモリ240は、NポイントのFFTに対してN×(n-1)の複素回転因子を記憶するように分類することができる。但し、N=rnである。1、−1、j、または−jのような回転因子は、第2のメモリ240から省略してもよい。さらに、同じ値の複製もまた第2のメモリ240から省略してもよい。それゆえ、第2のメモリ240内の回転因子の数は、N×(n−1)未満であってよい。FFTが周波数におけるデシメーションアルゴリズムまたは時間におけるデシメーションアルゴリズムを実施するかどうかに応じて、効率的な実施は、FFTのステージのすべてがFFTの第1ステージまたは最終ステージにおいて使用される回転因子のサブセットであるという事実を利用することができる。
複素乗算器250a−250bは、レジスターバンクおよび第2のメモリ240に接続される。複素乗算器250a−250bは、FFTエンジン220の出力に重み付けをするように構成される。FFTエンジン220の出力は、第2のメモリ240からの適切な回転因子とともにレジスターバンク230に記憶される。図2に示される実施形態は2つの複素乗算器250aおよび250bを含む。しかしながら、FFTモジュール200内に含まれる複素乗算器、例えば250aの数は、ダイ領域に対する速度のトレードオフに基づいて選択することができる。より多くの複素乗算器は、FFTの実行を促進させるようにダイ上で実施することができる。しかしながら、増加した速度は、ダイ領域を犠牲にして成り立つ。ダイ領域が決定的に重要な意味を持つ場合、複素乗算器の数は減少してもよい。典型的には、設計は、rポイントのFFTエンジン220が実施されるときr−1の複素乗算器より多い乗算器を含まないであろう。なぜならば、r−1の複素乗算器は、重要な回転因子のすべてを、並列にFFTエンジンの出力に印加するのに十分だからである。一例として、図1に示されるような8ポイント基数2のFFTを実行するように構成されたFFTモジュール200は、2つの複素乗算器を実施することができるが、1つのみの複素乗算器を実施してもよい。
各複素乗算器、例えば250aは、各乗算動作中に、レジスターバンク230からの単一の値および第2のメモリ240に記憶された対応する回転因子に対して動作する。実行される複素乗算よりも少ない複素乗算があるなら、複素乗算器は、レジスターバンク230からの複数のFFT値に対して演算を実行するであろう。
複素乗算器、例えば250aの出力は、複素乗算器への入力に提供される位置と同じレジスターバンク230の位置に書かれる。それゆえ、複素乗算の後で、レジスターバンクの内容は、複素乗算器がFFTエンジン220内で実施されたかまたは図2に示すようにレジスターバンクに関連するかどうかに関わらず、同じであるFFTステージ出力を表す。
レジスターバンク230に接続される転置モジュール232は、レジスターバンク230の内容に対して転置を実行する。転置モジュール232は、レジスター値を配列し直すことによりレジスターの内容を転置することができる。あるいは、内容がレジスターブロック230から読まれるので転置モジュール232は、レジスターブロック230の内容を転置することができる。レジスターバンク230の内容は、FFTエンジン220への入力に供給した行において、メモリ210に書き戻される前に転置される。レジスターバンク230値を転置することは、FFTのすべてのステージにわたってFFT入力のための行構造を維持する。
命令メモリ264と結合するプロセッサー262はモジュール間のデータフローを実行するように構成することができ、図2のブロックの1つ以上のうちのいくつかまたはすべてを実行するように構成することができる。例えば、命令メモリ264は、FFTモジュール200内のデータを操作するようにプロセッサー262に命令するソフトウェアとして1つ以上のプロセッサー使用可能な命令を記憶することができる。
プロセッサー262および命令メモリ264は、FFTモジュール200の一部として実施することができるか、またはFFTモジュール200外部にあってもよい。あるいは、プロセッサー262はFFTモジュール200の外部にあってもよく、命令メモリ264はFFTモジュール200内部に存在することができ、例えば、サンプルのために使用されるメモリ210、または回転因子が記憶される第2のメモリ240と共通にすることができる。
図2に示される実施形態は、アルゴリズムの基数が変化するとき速度と領域の間のトレードオフを特徴とする。
Figure 2007513431
ポイントFFTを実施する場合、必要とされるサイクル数は以下のように推定することができる。
Figure 2007513431
但し、
Figure 2007513431
は、計算される、rの基数−rのFFTsの数である。rNFFTは、1回リードし、FFTを実行し、回転乗算を実行し、rエレメントのベクトルに対して書き込みを行うのに費やされるrX時間である。
NFFTは基数と無関係に一定であると仮定される。サイクルカウントは、1/r(O(1/r))のオーダーで減少する。転置に必要とされるレジスターの数がr2として増加すると、実施に必要な領域はO(r2)だけ増加する。レジスターの数およびレジスターを実施するのに必要な領域は、大きなNのための領域を決定づける。
所望の速度を提供する最小基数は、関心のある異なるケースに対してFFTを実施するように選択することができる。モジュールの速度が十分であるという条件で、基数を最小限にすることは、モジュールを実施するために使用されるダイ領域を最小限にする。
図3A−3DはFFTプロセス300の実施形態のフローチャートである。プロセス300は、例えば、図2のFFTモジュール200により実行することができる。あるいは、プロセス300は、1つ以上のプロセッサー使用可能な命令群として実施することができ、メモリと結合してプロセッサーにより実行することができる。他の実施形態において、プロセス300の一部をハードウェアで実行し、他の部分をソフトウェアで実行することができる。
プロセス300はブロック302で始まり、例えばプロセッサーを使用するFFTモジュールは、返還されるデータを、少なくともFFT基数に等しい多数のサンプルを記憶するのに十分な幅を有するメモリに書く。例えば、図1に示すように、FFTモジュールが8ポイント、基数2FFTを実行するように構成されるなら、メモリは2列の4行として構成され、各列は、2つの複素サンプルを記憶するように構成することができる。プロセッサーは、例えば、サンプルを第1列から初めて列方向にメモリに書き込み、第1列が満たされたら第2列に続けることができる。
サンプルデータがメモリに書かれると、FFTモジュールはブロック304に進み、プロセッサーはステージカウンターをイニシャライズする。上述しかつ図1に示すように、N=rnポイントFFTはnステージを含む。FFTの開始において、プロセッサーは、ステージカウンターを1にイニシャライズすることができる。ステージカウンターをイニシャライズした後に、FFTモジュールはブロック310に進み、プロセッサーは部分FFTとブロックカウンターをイニシャライズする。部分FFTおよびブロックカウンターは例えば、0にイニシャライズすることができる。
図1の例で示されるように、FFTの各ステージにおいて実行される部分FFTsの数は一定のままであるが、各FFT計算に含まれるサンプルのインデックスを追跡するカウンターは、ステージに応じて変化する。
部分FFTおよびブロックカウンターをイニシャライズした後で、FFTモジュールはブロック312に進み、プロセッサーは行アドレスポインターをイニシャライズする。行アドレスポインターは、FFTエンジンにより演算されるメモリの行を決定する。例えば、プロセッサーは、次のようなものとして行アドレスポインターの値を決定することができる。
Figure 2007513431
FFTモジュールはブロック314に進み、行アドレスポインターの値に基づいてサンプルメモリから行を読む。例えば、プロセッサーは、サンプルメモリから行を読み、それをFFTエンジン内のロケーションに書き込むことができる。プロセッサーは、アドレスポインターにより決定される行を読むことができる。
Figure 2007513431
但し、nはステージの合計数を表し、kはステージカウンターを表す。
行がFFTエンジンに読み込まれると、FFTモジュールはブロック320に進み、検索されたサンプルに対してrポイントFFTsを計算する。この実施形態において、FFTエンジンにより実行されるr−ポイントFFTsの数は、メモリからリードした行の数に等しく、基数rに等しい。FFTエンジンの出力はr×rレジスターバンクに書かれる。
FFTモジュールはブロック322に進み回転因子メモリに記憶された回転因子をFFT出力値に印加し、回転因子で値を重み付けする。回転因子は1つ以上の乗算器を用いて印加することができ、乗算器は複雑な乗算器として構成することができる。回転因子で重み付けした後に、ステップ324において、乗算器は、r×rのレジスターバンクに結果を書き戻す。
次に、FFTモジュールはステップ330に進み、レジスターバンク内の値の順番を転置する。一実施形態において、プロセッサーは、レジスターバンクに記憶された値の順番を転置することができる。他の実施形態において、値がレジスターバンクから読まれると、転置を生じることができる。例えば、乗算器の出力は、行の順番でレジスターバンクに書き込むことができ、列の順番でレジスターバンクから読み出すことができる。その結果、相対的に小さな処理で転置を生じることができる。
図3Aおよび3Bに示されるコネクタA331は、2つの図面ページに示されるフローチャートの一部を接続するために使用され、プロセス300の実質的な部分を形成しない。FFTモジュールは、コネクタA331を介してステップ332に進み、レジスターバンクからの転置された結果をサンプルメモリに書き込む。レジスターバンクからの転置された結果はブロック314において決定されたアドレスポインターにより同定される行に書きこまれる。列から行への変換を介して転置が実行されるなら、FFTモジュールは、プロセッサーを用いてレジスターバンクの列を読み出すことができ、行内の結果をアドレスポインターにより同定されるアドレスに書き込むことができる。
FFTモジュールはブロック334に進み、部分FFTおよびブロックカウンターを更新する。上述したように、FFTの各ステージ、基数r部分FFTsの1つ以上のブロックとして実行される。ステップ334において、FFTモジュールは部分FFTおよびブロックカウンターを更新する。
プロセッサーは、例えば、部分FFTカウンターfk=(fk+1)mod(rn-k-1)を更新することができ、部分FFTカウンターがゼロならばブロックカウンターをインクリメントする。
FFTモジュールは、判断ブロック340に進み部分FFTsおよびブロックのすべてが計算されたかどうかを決定する。ブロックカウンターがステージ内のブロックの数未満、すなわちck<rn-1なら、部分FFTsのすべてが決定されない。すべての部分FFTsおよびブロックが計算されなかったなら、FFTモジュールはブロック342に進み、部分FFTとブロックカウンターを更新し、さらなる部分FFTsを処理する。次に、FFTモジュールはコネクタC343を介してブロック310のループバックし、現在のまたは次のFFTブロックのための部分FFTsを処理し続ける。コネクタC343はプロセス300の実質的な部分ではないがページ間にまたがってフローチャートを接続するために使用される。
FFTモジュールが判断ブロック340において、現在のステージの全てのブロックが計算されたと決定するなら、FFTモジュールは判断ブロック350に進み、n−1ステージが処理されたかどうか決定する。そうでなければ、FFTモジュールはブロック352に進み、ステージカウンターを更新し、コネクタB353を介してブロック310に戻る。コネクタB353はプロセス300の実質的な部分でないが、ページ間にわたってフローチャートを接続するために使用される。
判断ブロック350において、FFTモジュールが、n−1ステージが処理されたと決定するなら、FFTモジュールはコネクタD351を介してFFTの最終ステージを処理するために進む。FFTモジュールは異なる実施形態においてFFTの最終ステージを実施してもよい。図3CはFFTモジュールが最終FFTステージを実施してもよい、一実施形態を図解する。図3Dは、FFTの最終ステージを実施するための代替実施形態を図解する。従って、FFTモジュールは図3B上のコネクタD351から図3Cまたは3D上のコネクタD351に進むことができるが、両方ではない。図3Cおよび3Dは、同じ最終ステージの代替実施形態を図解するからである。
一実施形態において、FFTモジュールは、図3Cに示す最終FFTステージプロセスを実施することができる。図3Cに図解された最終ステージプロセスにおいて、FFTモジュールは、連続して行をフェッチするが、部分FFTsに続く任意の転置を実行しない。この結果は、イニシャルFFTステージにおける場合のように分離された各行内にサンプルを有するFFT結果であるが、基数の逆の順番である行を有する。この順序付けは、FFTに続いてIFFTステージがあるなら利点がある。FFTモジュールは、FFT結果をアクセスするとき基数の逆の順番を考慮することができる。順番の結果が所望なら、FFTモジュールは、行再順番づけエンジンを実施し、行を再順番づけすることができる。
図3Cに示される最終ステージプロセスを実行するために、FFTモジュールは、図3BのコネクタD351から図3CのコネクタD351に進む。FFTモジュールはブロック362に進み、行アドレスポインターをイニシャライズする。行アドレスポインターはProw=cn・rにイニシャライズすることができる。但し、cnは最初にゼロに設定され、rはFFT基数である。次に、FFTモジュールは、以前のFFTステージが処理されたとほぼ同じように最終ステージを処理するために進む。ブロック364において、FFTモジュールは、ai=Prow+i,i=0...(r−1)として計算することができるアドレス行ポインターにより識別されるメモリから行を読む。
FFTモジュールはブロック366に進み検索された行内の値のために部分FFTを計算する。FFTエンジンは、検索された行に対して、rの異なるr−ポイント部分FFTを計算する。
FFTモジュールはブロック368に進み、部分出力値をレジスターバンクに書く。FFTモジュールはブロック370に進み、レジスターブロック値を、データをFFTエンジンに供給したサンプルメモリ行に書く。FFTモジュールはブロック370においてカウンターcnをインクリメントする。
FFTモジュールは判断ブロック372に進み、最終ブロック内の部分FFTsのすべてが処理されたかどうか決定する。そうでなければ、FFTモジュールはブロック362に戻り、サンプルメモリの行を処理し続ける。最終ステージにおける全てのFFTsが処理されたなら、FFTモジュールは判断ブロック372からオプショナル行再順序付けブロック374に進み。ブロック374において、FFTモジュールは行の再順序付けを実行する。次に、FFTモジュールはブロック399に進み、N−ポイントFFTが終了される。
代替の最終FFTステージとして、FFTモジュールは、図3Dに示されるプロセスを実行してもよい。図3Dのフローチャートに図解される最終FFTステージにおいて、FFTモジュールは、FFTの第1のステージに使用される同じ順番に従って行内のサンプルをフェッチする。この結果は、連続した順番でサンプルを有する行であるが、部分基数逆順における行を有する。さらに、FFTステージの数が3より大きいときにのみ、部分基数逆順が生じる。部分基数逆行順にもかかわらず、この最終ステージプロセスは、各行内のサンプルは連続的であるので利点があるかもしれない。
図3Dの最終ステージプロセスを実行するために、FFTモジュールは、図3BのコネクタD351から図3DのコネクタD351に進む。FFTモジュールはブロック382に進み、FFTのイニシャルステージに使用される同じアルゴリズムを用いて行アドレスポインターを設定する。
FFTモジュールはブロック384に進み、ポインターにより識別された行を読み、ブロック386に進み、行上の部分FFTを実行する。次に、FFTモジュールはブロック388に進み、部分FFTの結果をレジスターバンクに書き込む。次に、FFTモジュールは、ブロック390に進み、レジスターバンク内の値の順番を転置する。
次に、FFTモジュールは、ブロック392に進み、転置された値をサンプルメモリに書き戻す。次に、FFTモジュールは判断ブロック396に進み、最終ステージブロック内のすべての部分FFTsが計算されたかどうかを決定する。そうでなければ、FFTモジュールはブロック382に進み、次の部分FFTのためのポインターを更新する。
判断ブロック396において、最終ステージ内の部分FFTsの全てが計算されたとFFTモジュールが決定するなら、FFTモジュールはブロック398に進み、行の再順序付けを実行する。図3Cに示される以前の最終ステージ実施形態と同様に、行の再順序付けステップはオプションである。行の再順序付けが実行されないなら、またはオプションの行の再順序付けを実行した後で、FFTモジュールはブロック399に進み、FFTが終了される。
図4は、図3A−3Bのプロセスに従って実行される8ポイント基数2FFT実施形態のためのメモリ内容およびレジスターブロック内容の機能ブロック図である。8ポイントFFTは、4つの行と2つの列のサンプルメモリを使用する。レジスターブロックは、r×rマトリクスとして構成される。この場合は2×2マトリクスである。
サンプルメモリ410の最初の内容は、2つの列412および414に配列されて示される。サンプルメモリは列の順番で書くことができる。満たされるまで値を第1の列412に書き込み、次に第2の列414に値を書きこむ。サンプルメモリ410の各行は、イニシャル2−ポイントFFTsを実行するために正しいサンプル値を含む。
行a0およびa2は最初にサンプルメモリから検索され、FFTsが、行内に記憶された値に対して実行される。この結果は、適切な回転因子で重み付けされ、結果は、レジスターバンク422に書き込まれる。次に、レジスターバンク値422は、サンプルメモリに書き戻す前に転置される。同様に、行a1とa3はメモリから検索され、FFTエンジン内で処理され、適切な回転因子で重み付けされ、レジスターバンク424に書き込まれる。424内のレジスター値は、すでに転置されサンプルメモリに再書き込みされた以前のレジスター値422をオーバーライトする。新しいレジスターブロック値424は転置されメモリに再書き込みされる。
サンプルメモリ430は、第1のステージおよび第1の転置の完了の後に内容を示す。データは依然として2列432および434に組織されるが、一緒に処理されるサンプルの行の関係を維持するために転置に基づいて値が調節される。
行a0およびa1は最初にサンプルメモリから検索され、FFtsが行内に記憶された値に対して実行される。この結果は、適切な回転因子で重み付けされ、その結果は、レジスターバンク442に書き込まれる。次に、レジスターバンク値442は、サンプルメモリに書き戻される前に転置される。同様に、行a2およびa3はメモリから検索され、FFTエンジン内で処理され、適切な回転因子で重み付けされ、レジスターバンク444内に書き込まれる。値は転置されサンプルメモリに書かれる。
サンプルメモリ450は、第2のステージおよび第2の転置の完了の後に内容を示す。第3のサンプルメモリ450配列から行a0およびa1は最初にサンプルメモリから検索され、行内に記憶された値に対してFFTsが実行される。この結果は、適切な回転因子で重み付けされ、その結果は、レジスターバンク462に書き込まれる。次に、サンプルメモリに書き戻される前にレジスターバンク値462が転置される。同様に、行a2およびa3はメモリから検索され、FFTエンジン内で処理され、適切な回転因子で重み付けされ、レジスターバンク464に書き込まれる。値は転置されサンプルメモリに再書き込みされる。サンプルメモリ470に書き込まれた転置された結果は、8−ポイントFFTの出力を表す。
図5Aおよび5Bは、ここに記載するようにFFTモジュールを組み込むことができるOFDMシステムコンポーネントの機能ブロック図である。OFDM送信機500およびOFDM受信機540が議論される。OFDM送信機500あるいは受信機540の各々は、OFDMシステムと通信するように構成されたデバイスまたは装置内で実施することができる。そのようなデバイスは、無線電話に限定されないが、携帯電話、パーソナルデジタルアシスタンツ、および同等物またはその他の通信装置のような装置を含む。
図5Aは、図2のFFTモジュールおよび図3Aおよび3Bのプロセスを実施してもよいOFDM送信機500の機能ブロック図である。図5AのOFDM送信機のブロックのいくつかまたはすべては単一のICまたはASICで実施してもよい。
OFDM送信機500は、データサンプルを記憶するように構成されるあるタイプの記憶装置を典型的に含むデータソース502を含む。データサンプルはOFDM送信機500の外部で発生されてもよいし、メモリ装置に接続されたアナログ−デジタル変換器(ADC)(図示せず)を用いて、OFDM送信機500内部で発生されてもよい。
単一データストリームは、シリアルデータストリームとして特徴づけることができる。シリアル−並列変換器510はデータソース502に接続され、OFDM送信機500内の各直交キャリアに対して並列データストリームを形成する。シリアル対並列変換器510の出力は変調器に接続される。並列データストリームの各々は、OFDMキャリアの対応するキャリアを変調することができる。
次に、複数の変調されたOFDMキャリアはIFFTモジュール520に接続される。IFFTモジュール520は、図2のFFTモジュールから構成してもよく、図3Aおよび3Bのプロセスを使用してもよい。IFFTモジュール520は、直交周波数を時間領域OFDMシンボルに変換する。IFFTモジュール520の出力は並列−シリアル変換器522に接続され、並列出力を単一シリアルシンボルに変換する。並列−シリアル変換器522の出力は、送信機530に接続することができる。送信機530は、無線送信機であってもよい。
図5Bは、図5AのOFDM送信機500に相補的であるOFDM受信機540の機能ブロック図である。OFDM送信機500と同様に、OFDM受信機540は、単一のICまたはASICで実施してもよい。OFDM送信機500、OFDM受信機540は単一のICまたはASICで実施してもよい。
OFDM受信機540は、送信機によってブロードキャストされたOFDMシンボルを受信する無線受信器として構成することができる受信機542を含む。受信機542は、受信した信号を増幅し、フィルターし、ダウンコンバートし、ベースバンド信号をリカバーするように構成されていてもよい。
ベースバンド信号は、処理のためにシリアルベースバンドデータストリームを並列データストリームに変換するように動作するシリアル−並列変換器544に接続される。シリアル−並列変換器544の出力は、FFTモジュール550に接続される。FFTモジュール550は、図3Aおよび3Bのプロセスを実行する図2のFFTモジュールであってよい。
FFTモジュール550は、時間領域シンボルを複数の直行周波数コンポーネントに変換する。FFTモジュール550の出力は、データをリカバーするために直交周波数を復調するように動作する復調器560に接続される。
並列−シリアル変換器562はFFTモジュール550の出力に接続され、並列データをシリアルデータストリームに変換する。シリアルデータストリームはさらなる処理のためにデータプロセッサーに接続される。例えば、音声データは、増幅とスピーカーへの配信のためにアナログフォーマットに変換することができる。ビデオデータはさらに処理され表示装置に方向づけられてもよい。
FFTアーキテクチャーを実施するFFTモジュールは、従来のFFT実施に比べて低減された数の命令で適所変換を実行することができる。FFTモジュールは、単一行に複数の値を配列するサンプルメモリを含む。FFT演算は単一行のサンプルに対して実行され、レジスターブロックに書かれる。1つ以上の複雑な乗算器を用いて回転因子を部分FFT結果に適用することができる。
レジスターバンク内の重み付けされた部分FFTは転置され、サンプルメモリに再書き込みされる。転置はサンプルメモリの同じ行内の単一部分FFTのためのFFT入力の関係を維持する。所望のFFTが完了するまで、このプロセスは、FFTの複数のステージのために反復される。
ここに開示された実施形態に関連して説明された方法またはアルゴリズムのステップは、ハードウェア内、プロセッサーによって実行されるソフトウェアモジュール内、あるいは2つの組み合わせにおいて直接的に具現化されてよい。ソフトウェアモジュールはRAMメモリ、フラッシュ(登録商標)メモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスター、ハードディスク、取り外し可能ディスク、CD−ROM、または技術的に既知である任意の他の形式の記憶媒体に常駐してよい。例示的な記憶媒体は、プロセッサーが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサーに結合される。代替策では、記憶媒体はプロセッサーに一体化してよい。さらに、実施形態に示される順番で種々の方法を実行してもよく、またはステップの変更された順番を用いて実行してもよい。さらに、1つ以上のプロセスまたは方法が省略されてもよく、または1つ以上のプロセスまたは方法を、この方法およびプロセスに追加してもよい。さらなるステップ、ブロックまたはアクションは、この方法とプロセスの始めの、終わりの、または介在する既存のエレメントに追加してもよい。
開示された実施形態の上述の記載は、当業者がこの開示を製作または使用することを可能にするために提供される。これらの実施形態に対する種々の変更は、当業者に容易に明白であり、ここに定義される包括的原理は、この開示の精神および範囲から逸脱することなく他の実施形態に適用してもよい。従って、この開示は、ここに示される実施形態に制限されることを意図したものではなく、ここに開示される原理および新規な特徴に一致する最も広い範囲が許容されるべきである。
図1は8ポイント基数2FFTのフローグラフである。 図2は、FFTモジュールの一実施形態の機能ブロック図である。 図3AはFFTプロセスの実施形態のフローチャートである。 図3BはFFTプロセスの実施形態のフローチャートである。 図3CはFFTプロセスの実施形態のフローチャートである。 図3DはFFTプロセスの実施形態のフローチャートである。 図4は8ポイント基数2FFTの一実施形態のステージのためのメモリ内容の機能ブロック図である。 図5Aはここに開示されるFFTモジュールを用いたOFDMシステムコンポーネントの実施形態の機能ブロック図である。 図5Bはここに開示されるFFTモジュールを用いたOFDMシステムコンポーネントの実施形態の機能ブロック図である。

Claims (31)

  1. n−ポイント、基数r、高速フーリエ変換(FFT)を決定するための方法において、
    行あたりrのサンプルを有するメモリに、変換されるサンプルを書き込むことと、
    前記メモリからr行を読むことと、
    r基数r部分FFtsを決定し、r2部分FFT値を発生することと、
    回転因子をr2部分FFT値に印加してr2の重み付けされた部分FFT値を発生することと、
    前記r2の重み付けされた部分FFT値をレジスターブロックに書くことと、
    前記レジスターブロック内の前記r2の重み付けされた部分FFTを転置し、転置された値を発生することと、
    前記転置された値を前記メモリに書くことと、
    前記メモリの内容からFFT値を決定することとを備えた方法。
  2. 前記メモリにサンプルを書くことは、列方向に転置されたサンプルをrn-1行とr列を有するメモリに書くことを備えた、請求項1の方法。
  3. 前記メモリにサンプルを書くことは、変換される複素サンプルを前記メモリに書くことを備えた、請求項1の方法。
  4. 前記メモリからr行を読むことは、
    rの行インデックスを決定することと、
    前記rの行インデックスに対応する前記メモリから行を読むこととを備えた、請求項1の方法。
  5. rの行インデックスを計算することは、式ai=i×rn-k-1に対応する行インデックスを備える、但し、kは前記FFTのステージを表し、i=0乃至(r−1)である、請求項4の方法。
  6. 回転因子を前記r2部分FFT値に印加することは、
    少なくとも1つの複素回転因子を検索することと、
    前記少なくとも1つの回転因子と前記r2部分FFT値の対応する値との複素乗算を計算することとを備えた、請求項1の方法。
  7. 前記r2の重み付けされた部分FFT値を前記レジスターブロックに書くことは、r2の重み付けされた部分FFT値を、r行およびr列として構成されたレジスターブロックに書くことを備えた、請求項1の方法。
  8. 前記r2の重み付けされた部分FFT値を転置することは、
    前記レジスターバンクの行および列に対応する重み付けされた部分FFT値を検索することと、
    前記行および列のインデックスを転置することと、
    前記転置されたインデックスに対応する前記行および列に前記重み付けされたFFTを書くこととを備えた、請求項7の方法。
  9. n−ポイント、基数r、高速フーリエ変換(FFT)を決定するための方法において、
    行あたりrのサンプルを有するメモリに、変換されるサンプルを書くことと、
    ステージ値をイニシャライズすることと、
    ブロック値をイニシャライズすることと、
    FFTステージを処理することであって、前記処理は、
    a)前記ステージ値に基づいてブロックの数を決定することと、
    b)前記メモリからr行を検索することと、
    c)r基数r部分FFTsを決定し、r2部分FFT値を発生することと、
    d)回転因子を前記レジスターブロック内の前記r2部分FFT値に印加し、r2の重み付けされたFFT値を発生することと、
    e)前記レジスターブロック内の、前記r2の重み付けされた部分FFTを転置し、転置された値を発生することと、
    f)前記転置された値を前記メモリに書くことと、
    g)前記ブロック値およびステージ値に基づいてステップb)乃至f)を反復することと、
    h)前記ステージ値をインクリメントすることを含むことと、
    前記FFTステージをn回反復することと、
    前記メモリの内容からFFT値を決定することとを備えた方法。
  10. n−ポイント、基数r、高速フーリエ変換(FFT)を決定する方法において、
    行あたりrのサンプルを有するメモリに、変換されるサンプルを書くことと、
    a)ステージカウンターをイニシャライズすることと、
    b)ブロックカウンターおよび部分FFTカウンターをイニシャライズすることと、
    c)前記ステージ、ブロック、および部分FFTカウンター値に基づいて前記メモリからr行を検索することと、
    d)r基数r部分FFTを決定し、r2部分FFT値を発生することと、
    e)回転因子を前記r2部分FFT値に印加しr2の重み付けされた部分FFT値を発生することと、
    g) 前記レジスターブロック内で前記r2の重み付けされた部分FFTを転置し、転置された値を発生することと、
    i)前記転置された値を前記メモリに書くことと、
    j) 前記部分カウンターとブロックカウンターを更新することと、
    k)前記ブロックカウンターの値と前記部分FFTのカウンターの値に基づいてステップc)乃至j)を反復することと、
    l)前記ステージカウンタの値を更新することと、
    m)前記ステージカウンターの値に基づいてステップb)乃至k)を反復することと、
    前記メモリの内容からFFT値を決定することとを備えた方法。
  11. n−ポイント、基数r、高速フーリエ変換(FFT)装置において、
    メモリ行あたりrサンプルを有するrnサンプルを記憶するように構成されたメモリと、
    前記メモリのr行からのサンプルに対してrのr−ポイントFFT部分FFTを実行するように構成されたFFTエンジンと、
    r列のr行として構成され、前記FFTエンジンから出力値を受信するように構成されたレジスターバンクと、
    前記レジスターバンク内の前記値を転置し、転置された値を、前記FFTエンジンにより動作されるメモリのr行に書くように構成された転置モジュールとを備えた装置。
  12. 少なくとも1つのFFT回転因子を記憶するように構成された回転因子メモリと、
    前記レジスターバンク内のレジスターからの値を、前記回転因子メモリからのFFT回転因子と乗算するように構成され、出力値を前記レジスターに書くように構成された少なくとも1つの乗算器とをさらに備えた、請求項11の装置。
  13. 前記少なくとも1つの乗算器は少なくとも1つの複雑な乗算器を備えた、請求項12の装置。
  14. 前記少なくとも1つの乗算器は、r−1複雑な乗算器を備えた、請求項12の装置。
  15. 前記回転因子メモリは、ROM、RAM、NV−RAM、およびフラッシュメモリを備えたグループから選択された少なくとも1つのメモリを備える、請求項12の装置。
  16. 前記rnサンプルはrn複素サンプルを備える、請求項11の装置。
  17. 前記メモリはRAMを備える、請求項11の装置。
  18. 前記FFTエンジンは、パイプラインFFTエンジンを備える、請求項11の装置。
  19. 前記転置モジュールは、列方向に値を読み、値を行方向にメモリに書くことにより前記レジスターバンク内の値を転置する、請求項11の装置。
  20. 前記レジスターバンクの行値および列値に相当するレジスター値を読み、前記行値および列値を転置し、前記レジスター値を前記転置された行値および列値に相当する前記レジスターに書くことにより前記レジスター内の値を書く、請求項11の装置。
  21. 1つ以上のプロセッサーにより実行されるとき、下記を備えた方法を実行する1つ以上のプロセッサー使用可能な命令群を記憶するように構成された1つ以上の記憶装置において、前記方法は、
    行あたりrのサンプルを有するメモリに、変換されるサンプルを書くことと、
    前記メモリからrの行を読むことと、
    r基数r部分FFTsを決定し、r2部分FFT値を発生することと、
    回転因子を前記r2部分FFT値に印加し、r2の重み付けされた部分FFT値を発生することと、
    2の重み付けされた部分FFT値をレジスターブロックに書くことと、
    前記レジスターブロック内の前記r2の重み付けされた部分FFT値を転置し、転置された値を発生することと、
    前記転置された値を前記メモリに書くことと、
    前記メモリの内容からFFT値を決定することとを備えた、記憶装置。
  22. n−ポイント、基数r、高速フーリエ変換(FFT)を決定する装置において、
    行あたりrのサンプルを有するメモリに、変換されるサンプルを書き込む手段と、
    前記メモリからr行を読み出す手段と、
    r基数r部分FFTsを決定し、r2部分FFT値を発生する手段と、
    回転因子を前記r2部分FFT値に適用し、r2の重み付けされた部分FFT値を発生する手段と、
    前記r2の重み付けされた部分FFT値をレジスターブロックに書きこむ手段と、
    前記レジスターブロック内の前記r2の重み付けされた部分FFTを転置し、転置された値を発生する手段と、
    前記転置された値を前記メモリに書きこむ手段と、
    前記メモリの内容からFFT値を決定する手段とを備えた装置。
  23. サンプルを前記メモリに書き込む手段は、列方向に変換されるサンプルを、rn-1行およびr列を有するメモリに書き込むことを備えた、請求項22の装置。
  24. サンプルを前記メモリに書き込む手段は、変換される複素サンプルを前記メモリに書き込むことを備えた、請求項22の装置。
  25. 前記メモリからr行を読む手段は、
    r行インデックスを決定する手段と、
    前記r行インデックスに対応する前記メモリから行を読む手段とを備えた、請求項22の装置。
  26. r行インデックスを決定する手段は、式ai=i×rn-k-1、但し、kはFFTのステージを表し、i=0乃至(r−1)である式に対応する行インデックスを決定することを備えた、請求項24の装置。
  27. 回転因子を前記r2部分FFT値に印加する手段は、
    少なくとも1つの複雑な回転因子を受信する手段と、
    前記少なくとも1つの複雑な回転因子と、前記r2部分FFT値の対応する値との複雑な乗算を計算する手段とを備えた、請求項22の装置。
  28. 前記r2の重み付けされた部分FFT値をレジスターブロックに書きこむ手段は、r2の重み付けされた部分FFT値をr行およびr列として構成されたレジスターブロックに書き込むことを備えた、請求項22の装置。
  29. 前記r2の重み付けされた部分FFT値を転置する手段は、
    前記レジスターバンクの行および列に対応する重み付けされた部分FFT値を検索する手段と、
    前記行および列インデックスを転置する手段と、
    前記転置されたインデックスに対応する行および列に前記重み付けされた部分FFTを書き込む手段とを備えた、請求項28の装置。
  30. n−ポイント、基数r、高速フーリエ変換(FFT)を決定する装置において、
    行あたりrのサンプルを有するメモリに、変換されるサンプルを書き込む手段と、
    ステージ値をイニシャライズする手段と、
    ブロック値をイニシャライズする手段と、
    FFTステージを処理する手段であって、
    a)前記ステージ値に基づいてブロックの数を決定する手段と、
    b)前記メモリからr行を検索する手段と、
    c)r基数r部分FFTsを決定し、r2の部分FFT値を発生する手段と、
    d)回転因子を前記r2部分FFT値に印加し、r2の重み付けされた部分FFT値を発生する手段と、
    e)前記レジスターブロック内の前記r2の重み付けされた部分FFTを転置し、転置された値を発生する手段と、
    f)前記転置された値を前記メモリに書きこむ手段と、
    g)前記ブロック値およびステージ値に基づいてステップb)乃至f)を反復する手段
    h)前記ステージ値をインクリメントする手段とを備えた手段と、
    前記FFTステージの処理をn回反復する手段と、
    前記メモリの内容からFFT値を決定する手段とを備えた装置。
  31. n−ポイント、基数r、高速フーリエ変換(FFT)を決定する装置において、
    行あたりrのサンプルを有するメモリに、変換されるサンプルを書き込む手段と、
    a)ステージカウンターをイニシャライズする手段と、
    b)ブロックカウンターおよび部分FFTカウンターをイニシャライズする手段と、
    c)前記ステージカウンター値、ブロックカウンター値、および部分FFTカウンター値に基づいて前記メモリからr行を検索する手段と、
    d)r基数r部分FFTsを決定し、r2部分FFT値を発生する手段と、
    e)回転因子を前記r2部分FFTに印加し、r2の重み付けされた部分FFT値を発生する手段と、
    f)前記r2の重み付けされた部分FFT値をレジスターブロックに書き込む手段と、
    g)前記レジスターブロック内の前記r2の重み付けされた部分FFTを転置し、転置された値を発生する手段と、
    i)前記転置された値を前記メモリに書きこむ手段と、
    j)前記部分FFTカウンターと前記ブロックカウンターを更新する手段と、
    k)前記クロックカウンターおよび前記部分FFTカウンターの値に基づいてステップc)乃至j)を反復する手段と、
    l)前記ステージカウンターの値を更新する手段と、
    m)前記ステージカウンターの値に基づいてステップb)乃至k)を反復する手段と、
    前記メモリの内容からFFT値を決定する手段とを備えた装置。
JP2006542780A 2003-12-05 2004-12-03 Fftアーキテクチャおよび方法 Pending JP2007513431A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US52719603P 2003-12-05 2003-12-05
PCT/US2004/040498 WO2005057423A2 (en) 2003-12-05 2004-12-03 Fft architecture and method

Publications (1)

Publication Number Publication Date
JP2007513431A true JP2007513431A (ja) 2007-05-24

Family

ID=34676710

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006542780A Pending JP2007513431A (ja) 2003-12-05 2004-12-03 Fftアーキテクチャおよび方法

Country Status (17)

Country Link
US (1) US7702712B2 (ja)
EP (1) EP1690196B1 (ja)
JP (1) JP2007513431A (ja)
KR (1) KR20060096511A (ja)
CN (1) CN1914607A (ja)
AR (1) AR046869A1 (ja)
AT (1) ATE412220T1 (ja)
AU (1) AU2004297978A1 (ja)
BR (1) BRPI0417222A (ja)
CA (1) CA2547488A1 (ja)
DE (1) DE602004017351D1 (ja)
ES (1) ES2315735T3 (ja)
IL (1) IL176050A0 (ja)
MX (1) MXPA06006391A (ja)
RU (1) RU2006123934A (ja)
TW (1) TW200534121A (ja)
WO (1) WO2005057423A2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430575B2 (en) * 2003-12-19 2008-09-30 Fujitsu Limited One-dimensional fourier transform program, method and apparatus
US7720162B2 (en) * 2005-03-10 2010-05-18 Qualcomm Incorporated Partial FFT processing and demodulation for a system with multiple subcarriers
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
WO2007066964A1 (en) * 2005-12-08 2007-06-14 Electronics And Telecommunications Research Institute Memory address generating method and twiddle factor generator using the same
KR100762281B1 (ko) * 2005-12-08 2007-10-01 한국전자통신연구원 고속 푸리에 변환 시스템의 메모리 주소 생성 방법 및 그를이용한 트위들 팩터 생성 장치
US7702713B2 (en) * 2006-03-24 2010-04-20 Debashis Goswami High speed FFT hardware architecture for an OFDM processor
US20070239815A1 (en) * 2006-04-04 2007-10-11 Qualcomm Incorporated Pipeline fft architecture and method
US20070266070A1 (en) * 2006-05-12 2007-11-15 Chung Hua University Split-radix FFT/IFFT processor
US8503545B2 (en) * 2006-08-31 2013-08-06 Advanced Micro Devices, Inc. I/Q imbalance compensation
KR100836624B1 (ko) * 2006-12-08 2008-06-10 한국전자통신연구원 가변 고속 푸리에 변환 장치 및 그 방법
US8738680B2 (en) 2008-03-28 2014-05-27 Qualcomm Incorporated Reuse engine with task list for fast fourier transform and method of using the same
US8959133B2 (en) * 2008-04-18 2015-02-17 Nxp, B.V. System and method for configurable mixed radix FFT architecture for multimode device
KR20110081971A (ko) * 2008-09-10 2011-07-15 코-오퍼레이티브 리서치 센터 포 어드밴스드 오토모티브 테크놀로지 리미티드 이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치
CN101478785B (zh) * 2009-01-21 2010-08-04 华为技术有限公司 资源池管理系统及信号处理方法
CN102238348B (zh) * 2010-04-20 2014-02-05 上海华虹集成电路有限责任公司 一种可变数据个数的fft/ifft处理器的基4模块
TWI402695B (zh) * 2010-07-12 2013-07-21 Novatek Microelectronics Corp 分裂基數-2/8快速傅立葉轉換裝置及方法
CN102339272A (zh) * 2010-07-16 2012-02-01 联咏科技股份有限公司 分裂基数-2/8快速傅立叶转换装置及方法
US8819097B2 (en) * 2011-09-09 2014-08-26 Texas Instruments Incorporated Constant geometry split radix FFT
US8825729B1 (en) * 2011-09-19 2014-09-02 Altera Corporation Power and bandwidth efficient FFT for DDR memory
US9275013B2 (en) * 2012-03-16 2016-03-01 Qualcomm Incorporated System and method for analysis and reconstruction of variable pulse-width signals having low sampling rates
KR101335367B1 (ko) * 2012-04-26 2013-12-02 숭실대학교산학협력단 메모리 제어 장치 및 방법
US9275014B2 (en) 2013-03-13 2016-03-01 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods
US9098449B2 (en) * 2013-03-15 2015-08-04 Analog Devices, Inc. FFT accelerator
US9311274B2 (en) * 2013-10-17 2016-04-12 Texas Instruments Incorporated Approach for significant improvement of FFT performance in microcontrollers
WO2018170400A1 (en) * 2017-03-16 2018-09-20 Jaber Technology Holdings Us Inc. Apparatus and methods of providing an efficient radix-r fast fourier transform
US10783216B2 (en) 2018-09-24 2020-09-22 Semiconductor Components Industries, Llc Methods and apparatus for in-place fast Fourier transform
CN109558638B (zh) * 2018-10-23 2023-03-24 清华大学 Fft处理器
US11221397B2 (en) * 2019-04-05 2022-01-11 Texas Instruments Incorporated Two-dimensional FFT computation
KR20200143030A (ko) 2019-06-14 2020-12-23 한국전자통신연구원 입력 신호의 특정 주파수 성분들을 분석하기 위한 고속 푸리에 변환 장치
CN115859003A (zh) * 2021-09-27 2023-03-28 华为技术有限公司 执行fft的方法、装置及设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59189474A (ja) 1983-04-13 1984-10-27 Yokogawa Medical Syst Ltd 高速フ−リエ変換演算装置
JP3749022B2 (ja) * 1997-09-12 2006-02-22 シャープ株式会社 高速フーリエ変換を用いて短い待ち時間でアレイ処理を行う並列システム
US6088714A (en) * 1998-07-27 2000-07-11 Agilent Technologies Mechanism for calculating one-dimensional fast fourier transforms
US6839728B2 (en) * 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US6609140B1 (en) * 1999-11-30 2003-08-19 Mercury Computer Systems, Inc. Methods and apparatus for fast fourier transforms
KR100481852B1 (ko) * 2002-07-22 2005-04-11 삼성전자주식회사 고속 푸리에 변환 장치

Also Published As

Publication number Publication date
ATE412220T1 (de) 2008-11-15
WO2005057423A2 (en) 2005-06-23
ES2315735T3 (es) 2009-04-01
US20050182806A1 (en) 2005-08-18
AR046869A1 (es) 2005-12-28
RU2006123934A (ru) 2008-01-10
US7702712B2 (en) 2010-04-20
CN1914607A (zh) 2007-02-14
KR20060096511A (ko) 2006-09-11
AU2004297978A1 (en) 2005-06-23
DE602004017351D1 (de) 2008-12-04
EP1690196B1 (en) 2008-10-22
WO2005057423A3 (en) 2006-06-01
CA2547488A1 (en) 2005-06-23
MXPA06006391A (es) 2006-08-23
EP1690196A2 (en) 2006-08-16
TW200534121A (en) 2005-10-16
IL176050A0 (en) 2006-10-05
BRPI0417222A (pt) 2007-02-21

Similar Documents

Publication Publication Date Title
JP2007513431A (ja) Fftアーキテクチャおよび方法
US7464127B2 (en) Fast fourier transform apparatus
JP2009535678A (ja) パイプラインfftのアーキテクチャおよび方法
Lee et al. Balanced binary-tree decomposition for area-efficient pipelined FFT processing
JP2005531252A (ja) 高速フーリエ変換を用いた混合−基数方式の変調装置
US20050177608A1 (en) Fast Fourier transform processor and method using half-sized memory
US8917588B2 (en) Fast Fourier transform and inverse fast Fourier transform (FFT/IFFT) operating core
US20050278405A1 (en) Fourier transform processor
US20030041080A1 (en) Address generator for fast fourier transform processor
US20060200513A1 (en) Fast Fourier transform processor and method capable of reducing size of memories
EP2144172A1 (en) Computation module to compute a multi radix butterfly to be used in DTF computation
Lo et al. Design of an efficient FFT processor for DAB system
US10339200B2 (en) System and method for optimizing mixed radix fast fourier transform and inverse fast fourier transform
JP4160564B2 (ja) 処理速度の向上した高速フーリエ変換装置およびその処理方法
US20050289207A1 (en) Fast fourier transform processor, dynamic scaling method and fast Fourier transform with radix-8 algorithm
JP5486226B2 (ja) ルリタニアマッピングを用いるpfaアルゴリズムに従って種々のサイズのdftを計算する装置及び方法
CN113378108B (zh) 音频处理装置的快速傅立叶变换电路
EP2144173A1 (en) Hardware architecture to compute different sizes of DFT
US20080228845A1 (en) Apparatus for calculating an n-point discrete fourier transform by utilizing cooley-tukey algorithm
US8484273B1 (en) Processing system and method for transform
Takala et al. Scalable FFT processors and pipelined butterfly units
KR100602272B1 (ko) 고속으로 데이터를 처리하는 고속 퓨리에 변환 장치 및 방법
TW200811672A (en) Optimized multi-mode DFT implementation
US8601045B2 (en) Apparatus and method for split-radix-2/8 fast fourier transform
Ku et al. A design methodology of buffer-memory architectures for FFT computation

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20071120

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080220

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080227

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080708