JP2009535678A - パイプラインfftのアーキテクチャおよび方法 - Google Patents
パイプラインfftのアーキテクチャおよび方法 Download PDFInfo
- Publication number
- JP2009535678A JP2009535678A JP2009504464A JP2009504464A JP2009535678A JP 2009535678 A JP2009535678 A JP 2009535678A JP 2009504464 A JP2009504464 A JP 2009504464A JP 2009504464 A JP2009504464 A JP 2009504464A JP 2009535678 A JP2009535678 A JP 2009535678A
- Authority
- JP
- Japan
- Prior art keywords
- ffte
- input
- fft
- fourier transform
- fast fourier
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L27/00—Modulated-carrier systems
- H04L27/26—Systems using multi-frequency codes
- H04L27/2601—Multicarrier modulation systems
- H04L27/2626—Arrangements specific to the transmitter only
- H04L27/2627—Modulators
- H04L27/2628—Inverse Fourier transform modulators, e.g. inverse fast Fourier transform [IFFT] or inverse discrete Fourier transform [IDFT] modulators
- H04L27/263—Inverse Fourier transform modulators, e.g. inverse fast Fourier transform [IFFT] or inverse discrete Fourier transform [IDFT] modulators modification of IFFT/IDFT modulator for performance improvement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L27/00—Modulated-carrier systems
- H04L27/26—Systems using multi-frequency codes
- H04L27/2601—Multicarrier modulation systems
- H04L27/2647—Arrangements specific to the receiver only
- H04L27/2649—Demodulators
- H04L27/265—Fourier transform demodulators, e.g. fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators
- H04L27/2651—Modification of fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators for performance improvement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L25/00—Baseband systems
- H04L25/02—Details ; arrangements for supplying electrical power along data transmission lines
- H04L25/0202—Channel estimation
- H04L25/0224—Channel estimation using sounding signals
- H04L25/0228—Channel estimation using sounding signals with direct estimation from sounding signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L27/00—Modulated-carrier systems
- H04L27/26—Systems using multi-frequency codes
- H04L27/2601—Multicarrier modulation systems
- H04L27/2647—Arrangements specific to the receiver only
- H04L27/2649—Demodulators
- H04L27/265—Fourier transform demodulators, e.g. fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators
- H04L27/26522—Fourier transform demodulators, e.g. fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators using partial FFTs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L27/00—Modulated-carrier systems
- H04L27/26—Systems using multi-frequency codes
- H04L27/2601—Multicarrier modulation systems
- H04L27/2647—Arrangements specific to the receiver only
- H04L27/2655—Synchronisation arrangements
- H04L27/2656—Frame synchronisation, e.g. packet synchronisation, time division duplex [TDD] switching point detection or subframe synchronisation
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Discrete Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- Complex Calculations (AREA)
- Radar Systems Or Details Thereof (AREA)
Abstract
高速フーリエ変換(FFT)を実行するための技法が、説明される。一部の態様においては、高速フーリエ変換を計算することは、メモリ(610)と、1つまたは複数のレジスタ(650)および無遅延パイプライン(630)を有する高速フーリエ変換エンジン(FFTe)と、を有する装置を用いて達成され、FFTeは、メインメモリ(610)からのマルチポイント入力を受け取り、1つまたは複数のレジスタ(650)のうちの少なくとも1つに受け取られた入力を記憶し、そして無遅延パイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように、構成されている。
Description
本特許出願は、ここでの譲受人に譲渡され、ここにおける参照によりここに明示的に組み込まれる、2006年4月4日に出願され「キーパーFFTブロック(KEEPER FFT BLOCK)」と題された仮出願第60/789,453号の優先権を主張する。
(技術分野)
本開示された実施形態は、一般に信号処理に関し、より詳細には、高速フーリエ変換(Fast Fourier Transform)(FFT)の効率的な計算のための装置および方法に関する。
本開示された実施形態は、一般に信号処理に関し、より詳細には、高速フーリエ変換(Fast Fourier Transform)(FFT)の効率的な計算のための装置および方法に関する。
(背景)
フーリエ変換(Fourier Transform)は、時間ドメイン信号(time domain signal)をその周波数ドメインの対応するもの(frequency domain counterpart)に対してマッピングする(map)ために使用されることができる。逆に、逆フーリエ変換(Inverse Fourier Transform)は、周波数ドメイン信号をその時間ドメインの対応するものに対してマッピングするために使用されることができる。フーリエ変換は、時間ドメイン信号のスペクトル解析(spectral analysis)のためにとりわけ有用である。さらに、直交周波数分割多重化(orthogonal Frequency Division Multiplexing)(OFDM)をインプリメントする(implementing)システムなどの通信システムは、線形に間隔の空けられたトーンから複数の時間ドメインシンボル(multiple time domain symbols)を生成するために、そしてそれらのシンボルから周波数を回復する(recover)ために、フーリエ変換の特性を使用することができる。
フーリエ変換(Fourier Transform)は、時間ドメイン信号(time domain signal)をその周波数ドメインの対応するもの(frequency domain counterpart)に対してマッピングする(map)ために使用されることができる。逆に、逆フーリエ変換(Inverse Fourier Transform)は、周波数ドメイン信号をその時間ドメインの対応するものに対してマッピングするために使用されることができる。フーリエ変換は、時間ドメイン信号のスペクトル解析(spectral analysis)のためにとりわけ有用である。さらに、直交周波数分割多重化(orthogonal Frequency Division Multiplexing)(OFDM)をインプリメントする(implementing)システムなどの通信システムは、線形に間隔の空けられたトーンから複数の時間ドメインシンボル(multiple time domain symbols)を生成するために、そしてそれらのシンボルから周波数を回復する(recover)ために、フーリエ変換の特性を使用することができる。
サンプリングされたデータシステムは、プロセッサが、あらかじめ決定された数のサンプルに対して変換を実行することができるようにするために離散フーリエ変換(Discrete Fourier Transform)(DFT)をインプリメント(implement)することができる。しかしながら、DFTは、計算集約的であり、実行するために途方もない量の処理能力を必要とする。NポイントのDFTを実行するために必要とされる計算の回数は、およそN2の程度であり、O(N2)と示される。多数のシステムにおいては、DFTを実行することに専用にされる処理能力の量は、他のシステムオペレーションのために使用可能な処理の量を低減させてしまう可能性がある。さらに、リアルタイムシステムとして動作するように構成されるシステムは、計算のために割り付けられる時間内に望ましいサイズのDFTを実行するために十分な処理能力を有さない可能性がある。
高速フーリエ変換(FFT)は、DFTインプリメンテーション(DFT implementation)と比較してかなり少ないオペレーションの形でフーリエ変換が実行されることを可能にするフーリエ変換の離散的インプリメンテーションである。特定のインプリメンテーションに応じて、基数rのFFTを実行するために必要とされる計算の回数は、一般的におよそN×logr(N)の程度であり、O(Nlogr(N))として示される。
電気通信における1つの典型的なFFTは、基数8のFFTである。FFT計算は、多くの場合にバタフライコア(butterfly core)の使用を必要とするので、様々なポイントのFFTが、基数8のFFTに基づいた計算を使用して導き出されることができる。その後、基数8のFFT計算がより効率的に計算されることができる場合には、その利点は、基数8のFFTバタフライコアを使用する他のFFTに対して引き継がれる。
過去においては、FFTをインプリメントするシステムは、FFTを実行するために汎用プロセッサ、またはスタンドアロンのデジタル信号プロセッサ(Digital Signal Processor)(DSP)を使用している可能性がある。しかしながら、システムは、ますます、デバイスについて必要とされる機能の大部分をインプリメントするように特に設計された特定用途向け集積回路(Application Specific Integrated Circuit)(ASIC)を組み込むようになっている。ASIC内にシステム機能をインプリメントすることは、チップカウントと、複数の(multiple)集積回路にインターフェースするために必要とされるグルーロジック(glue logic)とを最小限にする。低減させられたチップカウントは、一般的に機能のうちのどれも犠牲にすることなしにデバイスについてのより小さな物理フットプリント(physical footprint)を可能にする。
ASICダイ内部の面積の量は、限られており、ASIC内にインプリメントされる機能ブロックは、全体的なASIC設計の機能を改善するために、サイズと、速度と、電力が最適化される必要がある。FFTに専用にされるリソースの量は、FFTに専用にされる使用可能なリソースのパーセンテージを制限するために最小にされることができる。変換が、システム要件をサポートするために十分な速度で実行されることができることを保証するために、さらに十分なリソースが、FFTに専用にされる必要がある。さらに、FFTモジュールによって消費される電力の量は、電源要件と、関連する熱放散を最小にするために最小にされる必要がある。さらに、FFT計算速度は、一般的な電気通信アプリケーションが、計算がリアルタイムで完了されることを必要とするので、最適化される必要がある。
したがって、当技術分野においては、ASICなどの集積回路内へのインプリメンテーションのためのFFTアーキテクチャを最適化する技法についての必要性が存在する。
[概要]
高速フーリエ変換(FFT)および逆高速フーリエ変換(Inverse Fast Fourier Transform)(IFFT)の効率的な計算のための技法が、ここにおいて説明される。
高速フーリエ変換(FFT)および逆高速フーリエ変換(Inverse Fast Fourier Transform)(IFFT)の効率的な計算のための技法が、ここにおいて説明される。
一部の態様においては、I/FFTの計算は、メモリと、1つまたは複数のレジスタおよび無遅延パイプラインを有する高速フーリエ変換エンジン(Fast Fourier Transform engine)(FFTe)と、を有する装置(apparatus)を用いて達成され、このFFTeは、メインメモリからのマルチポイント入力(multi-point input)を受け取り、1つまたは複数のレジスタのうちの少なくとも1つに受け取られた入力を記憶し、そして無遅延パイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように、構成される。入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方の計算は、ギャップレスパイプライン(gapless pipeline)を使用することができる。FFTeは、基数8のバタフライコア(radix-8 butterfly core)を有することができる。FFTeは、基数4のバタフライコアを有することができる。FFTeは、少なくとも64個のレジスタを有することができる。FFTeは、複素乗算器(complex multiplier)をさらに含むことができ、ここで少なくとも64個のレジスタのうちの56個のレジスタは、それらの複素乗算器から入力を受け取る。少なくとも64個のレジスタのうちの32個のレジスタは、メインメモリからの入力をうけ取ることができる。FFTeは、zポイントのマルチポイント入力を受け取るように構成されることができ、ここでzは、512の倍数である。FFTeは、さらに、計算された変換を出力するように構成されることができる。FFTeは、第1の入力を読み取った後に出力をxサイクル書き込むこと(writing the output x cycles)を開始するように構成されることができ、ここでxは、8とパイプライン遅延を加えたもの(8 plus a pipeline delay)である。FFTeは、第1の入力を読み取った後に出力をyサイクル書き込むことを完了するように構成されることができ、ここでyは、16とパイプライン遅延を加えたものである。FFTeは、第1の組の入力を読み取るように構成される第1の組の加算器を含むことができ、それらの第1の入力は、第1の組の加算器による読取りに先立ってビット反転される(bit-reversed)。
他の態様においては、I/FFTの計算は、メインメモリからマルチポイント入力を受け取り、1つまたは複数のレジスタのうちの少なくとも1つに受け取られた入力を記憶し、無遅延パイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成された高速フーリエ変換エンジン(FFTe)を用いて達成される。FFTeは、さらに、ギャップレスパイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されることもできる。FFTeは、さらに、基数8のバタフライコアを使用して高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されることもできる。FFTeは、さらに、基数4のバタフライコアを使用して高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されることもできる。FFTeは、さらに少なくとも64個のレジスタに受け取られた入力を記憶するように構成されることもできる。FFTeは、さらに複素乗算器からの受け取られた入力を記憶するように構成されることもでき、ここで少なくとも64個のレジスタのうちの56個のレジスタは、複素乗算器から入力を受け取る。FFTeは、さらに少なくとも64個のレジスタのうちの32個のレジスタにメインメモリからの受け取られた入力を記憶するように構成されることもできる。FFTeは、さらにzポイントのマルチポイント入力を受け取るように構成されることもでき、ここでzは、512の倍数である。FFTeは、さらに、計算された変換を出力するように構成されることもできる。FFTeは、さらに、第1の入力を読み取った後に出力をxサイクル書き込むことを開始するように構成されることもでき、ここでxは、8とパイプライン遅延を加えたものである。FFTeは、さらに、第1の入力を読み取った後に出力をyサイクル書き込むことを完了するように構成されることもでき、ここでyは、16とパイプライン遅延を加えたものである。FFTeは、第1の組の入力を読み取るように構成された第1の組の加算器を含むことができ、それらの第1の入力は、第1の組の加算器による読取りに先立ってビット反転される。
さらに他の態様においては、I/FFTの計算は、メモリを提供することと、1つまたは複数のレジスタと無遅延パイプラインとを有する高速フーリエ変換エンジン(FFTe)を提供することと、メインメモリからのマルチポイント入力を受け取るようにFFTeを構成することと、1つまたは複数のレジスタのうちの少なくとも1つに受け取られた入力を記憶することと、無遅延パイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算することと、を含む方法を用いて達成される。FFTeは、さらにギャップレスパイプラインを提供することを含むこともできる。FFTeは、基数8のバタフライコアを提供することを含むことができる。FFTeは、基数4のバタフライコアを提供することを含むことができる。FFTeは、少なくとも64個のレジスタを提供することを含むことができる。FFTeは、さらに複素乗算器を提供することも含むことができ、ここで少なくとも64個のレジスタのうちの56個のレジスタは、複素乗算器からの入力を受け取る。FFTeは、メインメモリから入力を受け取る、少なくとも64個のレジスタのうちの32個のレジスタを提供することを含むことができる。FFTeは、zポイントのマルチポイント入力を受け取るようにFFTeを構成することを備えるマルチポイント入力を受け取るように構成されることができ、ここでzは、512の倍数である。FFTeは、計算された変換を出力することをさらに含むように構成されることができる。FFTeは、第1の入力を読み取った後に出力をxサイクル書き込むことを開始することを含むことができ、ここでxは、8とパイプライン遅延を加えたものである。FFTeは、第1の入力を読み取った後に出力をyサイクル書き込むことを完了すること、を含むことができ、ここでyは、16とパイプライン遅延を加えたものである。FFTeは、さらに、第1の組の入力を読み取るように構成される第1の組の加算器を含むことができ、第1の入力は、第1の組の加算器による読取りに先立ってビット反転される。
一部の態様においては、I/FFTの計算は、第1のデータを記憶するための手段と、第1のデータを記憶するための手段よりも高速に第2のデータを記憶するための1つまたは複数の手段と、第1のデータを記憶するための手段からのマルチポイント入力を受け取るための手段と、第2のデータを記憶するための1つまたは複数の手段のうちの少なくとも1つにその受け取られた入力を記憶するための手段と、無遅延パイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するための手段と、を有する処理システムを用いて達成される。本処理システムは、ギャップレスパイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するための手段を、さらに含むこともできる。本処理システムは、基数8のバタフライコアを使用してデータを処理するための手段を、さらに含むこともできる。本処理システムは、基数4のバタフライコアを使用してデータを処理するための手段を、さらに含むこともできる。本処理システムは、第2のデータを記憶するための少なくとも64個の手段にその受け取られた入力を記憶するための手段を、さらに含むこともできる。本処理システムは、複素乗数(complex multiplier)を計算するための手段を、さらに含むこともでき、ここで第2のデータを記憶するための少なくとも64個の手段のうちの56個は、複素乗数を計算するための手段から、入力を受け取る。本処理システムは、第1のデータを記憶するための手段から入力を受け取るための手段を、さらに含むこともでき、ここでこれらの手段のうちの32個は、第2のデータを記憶するための1つまたは複数の手段のうちの少なくとも1つに、その受け取られた入力を記憶するためのものである。本処理システムは、第1のデータを記憶するための手段から512ポイントの入力を受け取るための手段を、さらに含むこともできる。本処理システムは、計算された変換を出力するための手段を、さらに含むこともできる。本処理システムは、無遅延パイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するための手段を、さらに含むこともでき、FFTeは、第1の入力を読み取った後に出力をxサイクル書き込むことを開始するように構成され、ここでxは、8とパイプライン遅延を加えたものである。本処理システムは、無遅延パイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するための手段を、さらに含むこともでき、FFTeは、第1の入力を読み取った後に出力をyサイクル書き込むことを完了するように構成され、ここでyは、16とパイプライン遅延を加えたものである。本処理システムは、無遅延パイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するための手段を、さらに含むこともでき、FFTeは、第1の組の入力を読み取るように構成された第1の組の加算器を含むように構成され、それらの第1の入力は、第1の組の加算器による読取りに先立って、ビット反転される。
さらに他の態様においては、I/FFTの計算は、I/FFTプロセッサがI/FFTを計算する方法を実行するための1組の命令(a set of instructions)を含むコンピュータ可読媒体(computer readable media)を用いて達成され、該命令は、メインメモリからのマルチポイント入力を受け取るルーチンと、1つまたは複数のレジスタのうちの少なくとも1つに、受け取られた入力を記憶するルーチンと、無遅延パイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するルーチンと、を含む。FFTeは、さらに、ギャップレスパイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されることもできる。FFTeは、さらに、基数8のバタフライコアを使用して高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されることもできる。FFTeは、さらに、基数4のバタフライコアを使用して高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されることもできる。FFTeは、さらに少なくとも64個のレジスタに、受け取られた入力を記憶するように構成されることもできる。FFTeは、さらに複素乗算器からの受け取られた入力を記憶するように構成されることもでき、ここで少なくとも64個のレジスタのうちの56個のレジスタは、複素乗算器から入力を受け取る。FFTeは、さらに、少なくとも64個のレジスタのうちの32個のレジスタにメインメモリからの受け取られた入力を記憶するように構成されることもできる。FFTeは、さらに、zポイントのマルチポイント入力を受け取るように構成されることもでき、ここでzは、512の倍数である。FFTeは、さらに、計算された変換を出力するように構成されることもできる。FFTeは、さらに、第1の入力を読み取った後に出力をxサイクル書き込むことを開始するように構成されることもでき、ここでxは、8とパイプライン遅延を加えたものである。FFTeは、さらに、第1の入力を読み取った後に出力をyサイクル書き込むことを完了するように構成されることもでき、ここでyは、16とパイプライン遅延を加えたものである。FFTeは、第1の組の入力を読み取るように構成された第1の組の加算器を、含むことができ、それらの第1の入力は、第1の組の加算器による読取りに先立ってビット反転される。
本発明の様々な態様および実施形態は、以下にさらに詳細に説明される。
[詳細な説明]
「例示の(exemplary)」という言葉は、ここにおいて、「例、インスタンス、または例証としての役割を果たしている」を意味するように使用される。ここにおいて「例示の」として説明されるどの実施形態あるいは設計も、他の実施形態または設計よりも好ましい、あるいは有利であるとして必ずしも解釈されるべきではない。
「例示の(exemplary)」という言葉は、ここにおいて、「例、インスタンス、または例証としての役割を果たしている」を意味するように使用される。ここにおいて「例示の」として説明されるどの実施形態あるいは設計も、他の実施形態または設計よりも好ましい、あるいは有利であるとして必ずしも解釈されるべきではない。
ここにおいて説明されるFFT技法は、通信システム、信号のフィルタおよび増幅、信号処理、光学処理、地震波反射、画像処理など、様々なアプリケーションのために使用されることができる。ここにおいて説明されるFFT技法はまた、セルラシステム、ブロードキャストシステム、ワイヤレスローカルエリアネットワーク(wireless local area network)(WLAN)システムなどのワイヤレス通信システムのために使用されることもできる。セルラシステムは、符号分割多元接続(Code Division Multiple Access)(CDMA)システム、時分割多元接続(Time Division Multiple Access)(TDMA)システム、周波数分割多元接続(Frequency Division Multiple Access)(FDMA)システム、直交周波数分割多元接続(Orthogonal Frequency Division Multiple Access)(OFDMA)システム、単一キャリアFDMA(Single-Carrier FDMA)(SC−FDMA)システムなどとすることができる。ブロードキャストシステムは、MediaFLOシステム、ハンドヘルド用デジタルビデオブロードキャスティング(Digital Video Broadcasting for Handhelds)(DVB−H)システム、地上波テレビジョンブロードキャスティング用統合サービスデジタルブロードキャスティング(Integrated Services Digital Broadcasting for Terrestrial Television Broadcasting)(ISDB−T)システムなどとすることができる。WLANシステムは、IEEE802.11システム、Wi−Fiシステム、WiMaxシステムなどとすることができる。これらの様々なシステムは、当技術分野において知られている。
ここにおいて説明されるFFT技法は、単一サブキャリアを有するシステム、ならびに複数の(multiple)サブキャリアを有するシステムのために使用されることができる。複数のサブキャリアは、OFDM技法、SC−FDMA技法、または何らかの他の変調技法を用いて取得されることができる。OFDMおよびSC−FDMAは、周波数帯域(例えば、システム帯域)を複数の直交サブキャリアへと区分し、これらの直交サブキャリアは、トーン(tone)、ビン(bin)などとも呼ばれる。各サブキャリアは、データで変調されることができる。一般に、変調シンボルは、OFDMを有する周波数ドメインにおいて、そしてSC−FDMAを有する時間ドメインにおいてサブキャリア上で送信される。OFDMは、MediaFLOシステム、DVB−Hシステム、ISDB−Tブロードキャストシステム、IEEE802.11a/g WLANシステム、一部のセルラシステムなど、様々なシステムにおいて使用される。AGC技法のある種の態様および実施形態は、OFDM、例えば、MediaFLOシステムを使用するブロードキャストシステムについて以下で説明される。
ここにおいて説明されるブロック図は、計算ロジックをインプリメントするための知られている任意の方法を使用してインプリメントされることができる。計算ロジックをインプリメントするための方法の例は、フィールドプログラマブルゲートアレイ(field-programmable gate array)(FPGA)、特定用途向け集積回路(ASIC)、複素プログラマブルロジックデバイス(complex programmable logic devices)(CPLD)、集積光回路(integrated optical circuit)(IOC)、マイクロプロセッサなどを含む。
FFTまたは逆FFT(IFFT)のための適切なハードウェアアーキテクチャと、FFTモジュールを組み込んだデバイスと、FFTまたはIFFTを実行する方法が、開示される。FFTアーキテクチャは、基数8のFFTモジュールの使用を介して8nポイント(nは、自然数)のFFTのインプリメンテーションを可能にするために一般化されることができる。例えば、FFTアーキテクチャは、512ポイントのFFT(83)のインプリメンテーションを可能にするために一般化されることができる。FFTアーキテクチャは、小さなチップ面積を維持しながら、基数8のFFTを実行するために使用されるサイクルの回数が最小化されることを可能にする。とりわけ、FFTアーキテクチャは、所定の位置にあるFFT(in place FFT)中に実行されるメモリアクセスの回数を最適化するようにメモリおよびレジスタスペースを構成する。
やはりこの開示の範囲内にあるこのFFTアーキテクチャの一般化は、他のステージの順序および組合せを組み込むことができる。例えば、FFTアーキテクチャの一部の実施形態は、第3ステージのI/FFT処理をバイパスすることにより、基数4のFFTを提供する(deliver)ことができる。これにより、FFTeは、2048ポイントのFFT(8×8×8×4)を実行することができるようになる。さらに他の実施形態においては、FFTIアーキテクチャは、第2ステージおよび第3ステージのI/FFT処理をバイパスすることにより、基数2の結果を提供することもできる。基数8よりも少ない結果が使用され、後続のFFTオペレーションが実行されることになる場合には、ひねり係数(twiddle coefficient)は、異なる組合せを組み込むことになる。例えば、2048ポイントのFFTを生成する1つの組合せは、基数8によって追随され、別の基数8によって追随され、そして基数4によって追随される基数8である。オペレーションが、異なる順序で、例えば、基数8、次いで基数8、次いで基数4、次いで基数8で行われた場合、2048ポイントのFFTは、その場合にも起こることになるが、ひねり係数は、第3ステージおよび第4ステージのオペレーションにおける基数4のオペレーションと、基数8のオペレーションでは異なることになる。
図1は、ワイヤレス通信システム100の一部の実施形態についての、そしてFFTパイプラインの一部の実施形態を示す簡略化された機能ブロック図である。本システムは、ユーザ端末110と通信することができる1つまたは複数の固定された要素を含んでいる。ユーザ端末110は、例えば、1つまたは複数の通信規格に応じて動作するように構成されるワイヤレス電話とすることができる。例えば、ユーザ端末110は、第1の通信ネットワークからワイヤレス電話信号を受信するように構成されることができ、そして第2の通信ネットワークからデータおよび情報を受信するように構成されることができる。
ユーザ端末110は、ポータブルユニット、モバイルユニット、または静止ユニットとすることができる。ユーザ端末110は、モバイルユニット、モバイル端末、移動局、ユーザ装置、ポータブル、電話などと称されることもできる。単一のユーザ端末だけが、図1において示されているが、典型的なワイヤレス通信システム100は、複数の(multiple)ユーザ端末110と通信する能力を有することが理解される。
ユーザ端末110は、一般的に、ここでセクタ化されたセルラタワー(cellular tower)として示される1つまたは複数の基地局120aまたは120bと通信する。ユーザ端末110は、一般的に、ユーザ端末110内のレシーバにおいて最強の信号強度を提供する基地局、例えば120bと通信することになる。
基地局120aおよび120bのおのおのは、適切な基地局120aおよび120bに対して、そしてそれらの基地局から通信信号を経路指定する基地局コントローラ(Base Station Controller)(BSC)130へと結合されることができる。BSC130は、ユーザ端末110と、公衆交換電話網(Public Switched Telephone Network)(PSTN)150との間のインターフェースとして動作するように構成されることができるモバイルスイッチングセンタ(Mobile Switching Center)(MSC)140に結合される。MSC140は、ユーザ端末110と、ネットワーク160との間のインターフェースとして動作するように構成されることもできる。ネットワーク160は、例えば、ローカルエリアネットワーク(Local Area Network)(LAN)またはワイドエリアネットワーク(Wide Area Network)(WAN)とすることができる。一部の実施形態においては、ネットワーク160は、インターネットを含んでいる。したがって、MSC140は、PSTN150およびネットワーク160に結合される。MSC140は、1つまたは複数のメディアソース170に結合されることもできる。メディアソース170は、例えば、ユーザ端末110によってアクセスされることができる、システムプロバイダによって提供されるメディア(media)のライブラリとすることができる。例えば、システムプロバイダは、オンデマンドでユーザ端末110によってアクセスされることができるビデオまたは他の形態のメディアを提供することができる。MSC140は、システム間ハンドオフ(inter-system handoff)を他の通信システム(図示されず)と調整するように構成されることもできる。
ワイヤレス通信システム100は、ユーザ端末110に対して信号を送信するように構成されるブロードキャストトランスミッタ180を含むこともできる。一部の実施形態においては、ブロードキャストトランスミッタ180は、基地局120aおよび120bに関連づけられることができる。他の実施形態においては、ブロードキャストトランスミッタ180は、基地局120aおよび120bを含むワイヤレス電話システムとは異なり、そしてそれから独立したものとすることができる。ブロードキャストトランスミッタ180は、それだけには限定されないが、オーディオトランスミッタ、ビデオトランスミッタ、ラジオトランスミッタ、テレビジョントランスミッタなど、あるいはトランスミッタの何らかの組合せとすることができる。1つのブロードキャストトランスミッタ180だけが、ワイヤレス通信システム100の中に示されるが、ワイヤレス通信システム100は、複数のブロードキャストトランスミッタ180をサポートするように構成されることができる。
複数のブロードキャストトランスミッタ180は、オーバーラップするカバレージエリア(coverage area)において信号を送信することができる。ユーザ端末110は、複数のブロードキャストトランスミッタ180から信号を同時に受信することができる。複数のブロードキャストトランスミッタ180は、同一のブロードキャスト信号、異なるブロードキャスト信号、または類似したブロードキャスト信号をブロードキャストするように構成されることができる。例えば、第1のブロードキャストトランスミッタのカバレージエリアとオーバーラップするカバレージエリアを有する第2のブロードキャストトランスミッタはまた、第1のブロードキャストトランスミッタによってブロードキャストされる情報のサブセットをブロードキャストすることができる。
ブロードキャストトランスミッタ180は、ブロードキャストメディアソース182からデータを受信するように構成されることができ、そしてデータを符号化し、その符号化されたデータに基づいて信号を変調し、そしてその変調されたデータを、それがユーザ端末110によって受信されることができるサービスエリア(service area)に対してブロードキャストするように構成されることができる。
一部の実施形態においては、1つまたは複数の基地局120aおよび120bとブロードキャストトランスミッタ180は、直交周波数分割多重化(Orthogonal Frequency Division Multiplex)(OFDM)信号を送信する。OFDM信号は、あらかじめ決定された動作帯域における1つまたは複数のキャリアへと変調される複数のOFDMシンボルを含むことができる。
OFDM通信システムは、データおよびパイロットの送信のためにOFDMを利用する。OFDMは、オーバーオールシステム帯域幅を複数の(K個の)直交周波数サブバンドへと区分するマルチキャリア変調技法である。これらのサブバンドは、トーン、キャリア、サブキャリア、ビン、および周波数チャネルとも呼ばれる。OFDMでは、各サブバンドは、データで変調されることができるそれぞれのサブキャリアに関連づけられる。
ブロードキャストトランスミッタ180など、OFDMシステムにおけるトランスミッタは、ワイヤレスデバイスに対して同時に複数のデータストリームを送信することができる。これらのデータストリームは、本質的に連続しており、またはバースティであるものとすることができ、固定されたデータレート、または可変なデータレートを有することができ、そして同じ、または異なった符号化スキームと変調スキームとを使用することができる。トランスミッタはまた、ワイヤレスデバイスが、時間同期化、周波数トラッキング、チャネル推定などいくつかのファンクションを実行することを支援するパイロットを送信することもできる。パイロットは、トランスミッタとレシーバの両方によって先験的に知られている送信である。
ブロードキャストトランスミッタ180は、インタレースサブバンド構造に応じてOFDMシンボルを送信することができる。OFDMインタレース構造は、全部でK個のサブバンドを含み、ここでK>1である。U個のサブバンドが、データとパイロットの送信のために使用されることができ、使用可能サブバンドと呼ばれ、ここでU≦Kである。残りのG個のサブバンドは、使用されておらず、保護サブバンド(guard subband)と呼ばれ、ここでG=K−Uである。一例として、システムは、全部でK=4096個のサブバンドと、U=4000個の使用可能サブバンドと、G=96個の保護サブバンドを有するOFDM構造を利用することができる。簡単にするために、以下の説明は、全部でK個のすべてのサブバンドが使用可能であり、0からK−1のインデックスが割り当てられ、その結果、U=Kであり、G=0であることを仮定している。
全部でK個のサブバンドは、M個のインタレース、またはオーバーラップしていないサブバンドセットに構成されることができる。M個のインタレースは、全部でK個のサブバンドのおのおのが、1つのインタレースに属する点において、オーバーラップしておらず、あるいは交わっていない。各インタレースは、P個のサブバンドを含み、ここでP=K/Mである。各インタレースにおけるP個のサブバンドは、インタレースにおける連続したサブバンドが、M個のサブバンドによって間隔が空けられるように、全部でK個のサブバンドにまたがって一様に分散されることができる。例えば、インタレース0は、サブバンド0、M、2Mなどを含むことができ、インタレース1は、サブバンド1、M+1、2M+1などを含むことができ、インタレースM−1は、サブバンドM−1、2M−1、3M−1などを含むことができる。K=4096を有する上記される例示のOFDM構造では、M=8個のインタレースが形成されることができ、各インタレースは、8個のサブバンドによって均一に間隔の空けられたP=512個のサブバンドを含むことができる。それ故に、各インタレースにおけるP個のサブバンドは、他のM−1個のインタレースのおのおのにおいてP個のサブバンドを用いてインタレースされる。
一般に、ブロードキャストトランスミッタ180は、任意の数の全部のサブバンド、使用可能サブバンド、および保護サブバンドを用いて任意のOFDM構造をインプリメントすることができる。任意の数のインタレースが、形成されることもできる。各インタレースは、任意の数のサブバンドと、全部でK個のサブバンドのうちの任意の1つを含むことができる。インタレースは、同じ数のサブバンド、または異なる数のサブバンドを含むことができる。簡単にするために、以下の説明の多くは、M=8個のインタレースを有するインタレースサブバンド構造と、P=512個の一様に分散されたサブバンドを含む各インタレースについてである。このサブバンド構造は、いくつかの利点を提供する。第1に、各インタレースは、全体のシステム帯域幅にまたがってそれから取得されたサブバンドを含むので、周波数ダイバーシティ(frequency diversity)が達成される。第2に、ワイヤレスデバイスは、全面的KポイントFFTの代わりに、部分的Pポイント高速フーリエ変換(FFT)を実行することにより、与えられたインタレース上で送信されるデータまたはパイロットを回復することができ、これは、ワイヤレスデバイスにおける処理を簡略化することができる。
ブロードキャストトランスミッタ180は、ワイヤレスデバイスが、チャネル推定、周波数トラッキング、時間トラッキングなど、様々なファンクションを実行することを可能にする、1つまたは複数のインタレース上の周波数分割多重化(frequency division multiplexed)(FDM)されたパイロットを送信することができる。そのパイロットは、基地局とワイヤレスデバイスの両方によって先験的に知られている変調シンボルから構成されており、これらの変調シンボルは、パイロットシンボルとも呼ばれる。ユーザ端末110は、受信パイロットシンボルと知られている送信パイロットシンボルとに基づいてワイヤレスチャネルの周波数応答を推定することができる。ユーザ端末110は、パイロット送信のために使用される各サブバンドにおいてワイヤレスチャネルの周波数スペクトルをサンプリングすることが可能である。
システム100は、インタレースに対するデータストリームのマッピングを容易にするためにOFDMシステムにおいてM個のスロットを定義することができる。各スロットは、送信ユニット、あるいはデータまたはパイロットを送信するための手段として見なされることができる。データのために使用されるスロットは、データスロットと呼ばれ、パイロットのために使用されるスロットは、パイロットスロットと呼ばれる。M個のスロットには、インデックス0からM−1が割り当てられることができる。スロット0は、パイロットのために使用されることができ、スロット1からM−1は、データのために使用されることができる。データストリームは、スロット1からM−1上で送信されることができる。固定されたインデックスを有するスロットの使用は、データストリームに対するスロットの割付けを簡略化することができる。各スロットは、1つの時間間隔において1つのインタレースに対してマッピングされることができる。M個のスロットは、周波数ダイバーシティおよび良好なチャネルの推定、ならびに検出性能を達成することができる任意のスロットからインタレースへのマッピングスキーム(slot-to-interlace mapping scheme)に基づいて異なる時間間隔におけるM個のインタレースのうちの異なるものへとマッピングされることができる。一般に、時間間隔は、1つまたは複数のシンボル期間に及ぶことができる。以下の説明は、1つの時間間隔が、1つのシンボル期間に及ぶことを仮定している。
図2は、例えば、図1のユーザ端末においてインプリメントされることができるOFDMレシーバ200の簡略化された機能ブロック図である。レシーバ200は、受信されたOFDMシンボルの処理を実行するために、ここにおいて説明されるようなFFT処理ブロックをインプリメントするように構成されることができる。
レシーバ200は、RFチャネル上の送信されたRF OFDMシンボルを受信し、それらを処理し、そしてベースバンドOFDMシンボルまたは実質的なベースバンド信号にそれらを変換するように構成される受信RFプロセッサ210を含んでいる。ベースバンド信号からの周波数オフセットが、信号帯域幅の一部分(fraction)である場合、あるいは信号が、さらなる周波数変換なしに信号の直接処理を可能にする十分に低い中間周波数にある場合には、信号は、実質的にベースバンド信号と称されることができる。受信RFプロセッサ210からのOFDMシンボルは、フレームシンクロナイザ(frame synchronizer)220に結合される。
フレームシンクロナイザ220は、レシーバ200をシンボルタイミングと同期化するように構成されることができる。一部の実施形態においては、フレームシンクロナイザは、スーパーフレームタイミングに対して、そしてスーパーフレーム内のシンボルタイミングに対してレシーバを同期化するように構成されることができる。
フレームシンクロナイザ220は、スロットが反復するようにマッピングをインタレースするために必要とされるいくつかのシンボルに基づいてインタレースを決定するように構成されることができる。一部の実施形態においては、マッピングをインタレースするスロットが、あらゆる14シンボルの後に反復することができる。フレームシンクロナイザ220は、シンボルカウントからモジュロ14のシンボルインデックスを決定することができる。レシーバ200は、パイロットインタレース、ならびに割り当てられたデータスロットに対応する1つまたは複数のインタレースを決定するためにモジュロ14のシンボルインデックスを使用することができる。
フレームシンクロナイザ220は、いくつかのファクタに基づいて、そしていくつかの技法のうちのどれかを使用して、レシーバタイミングを同期化することができる。例えば、フレームシンクロナイザ220は、OFDMシンボルを復調することができ、それらの復調されたシンボルからスーパーフレームタイミングを決定することができる。他の実施形態においては、フレームシンクロナイザ220は、例えば、オーバーヘッドチャネルにおける1つまたは複数のシンボルの内部で受信される情報に基づいて、スーパーフレームタイミングを決定することができる。他の実施形態においては、フレームシンクロナイザ220は、OFDMシンボルとは異なって受信されるオーバーヘッドチャネルを復調することなどにより、異なるチャネル上で情報を受信することにより、レシーバ200を同期化することができる。もちろん、フレームシンクロナイザ220は、同期化を達成する任意の方法を使用することができ、そして同期化を達成する方法は、必ずしもモジュロシンボルカウントを決定する方法を限定するものとは限らない。
フレームシンクロナイザ220の出力は、OFDMシンボルを復調し、そしてシリアルデータパスから複数のパラレルデータパスのうちの任意の1つに対してシンボルのサンプルまたはチップをマッピングするように構成されることができるサンプルマップ(sample map)230に結合される。例えば、サンプルマップ220は、OFDMシステムにおけるいくつかのサブバンドまたはサブキャリアに対応する複数のパラレルデータパスのうちの1つに対してOFDMチップのおのおのをマッピングするように構成されることができる。
サンプルマップ230の出力は、OFDMシンボルを対応する周波数ドメインサブバンドに変換するように構成されるFFTモジュール240に結合される。FFTモジュール240は、モジュロ14のシンボルカウントに基づいてパイロットスロットに対応するインタレースを決定するように構成されることができる。FFTモジュール240は、あらかじめ決定されたパイロットサブバンドなど、1つまたは複数のサブバンドをチャネル推定器250に結合するように構成されることができる。パイロットサブバンドは、例えば、OFDMシンボルの帯域幅にまたがる1つまたは複数の等しく間隔の空けられた組のOFDMサブバンドとすることができる。
チャネル推定器250は、受信されたOFDMシンボルに対して影響を及ぼす様々なチャネルを推定するパイロットサブバンドを使用するように構成される。一部の実施形態においては、チャネル推定器250は、データサブバンドのおのおのに対応するチャネル推定値を決定するように構成されることができる。
FFTモジュール240からのサブバンドと、チャネル推定値は、サブキャリアシンボルデインターリーバ(subcarrier symbol deinterleaver)260に結合される。シンボルデインターリーバ260は、1つまたは複数の割り当てられたデータスロットの知識と、それらの割り当てられたデータスロットに対応するインターリーブされたサブバンドとに基づいて、インタレースを決定するように構成されることができる。
シンボルデインターリーバ260は、例えば、割り当てられたデータインタレースに対応するサブキャリアのおのおのを復調し、そしてその復調されたデータからシリアルデータストリームを生成するように構成されることができる。他の実施形態においては、シンボルデインターリーバ260は、割り当てられたデータインタレースに対応するサブキャリアのおのおのを復調し、そしてパラレルデータストリームを生成するように構成されることができる。さらに他の実施形態においては、シンボルデインターリーバ260は、割り当てられたスロットに対応するデータインタレースのパラレルデータストリームを生成するように構成されることができる。
シンボルデインターリーバ260の出力は、受信データをさらに処理するように構成されるベースバンドプロセッサ270に結合される。例えば、ベースバンドプロセッサ270は、オーディオおよびビデオを有するマルチメディアデータストリームへと受信データを処理するように構成されることができる。ベースバンドプロセッサ270は、1つまたは複数の出力デバイス(図示されず)に処理された信号を送ることができる。
図3は、OFDMシステムにおいて動作するレシーバについてのFFTプロセッサ300の一部の実施形態の簡略化された機能ブロック図である。FFTプロセッサ300は、例えば、図1のワイヤレス通信システムにおいて、あるいは図2のレシーバにおいて使用されることができる。一部の実施形態においては、FFTプロセッサ300は、図2のレシーバ実施形態のフレームシンクロナイザと、FFTモジュールと、チャネル推定器のファンクションの一部分またはすべてを実行するように構成されることができる。
FFTプロセッサ300は、OFDMレシーバ設計の処理部分についての単一チップソリューション(single chip solution)を提供するために、単一IC基板上の集積回路(Integrated Circuit)(IC)の形でインプリメントされることができる。代わりに、FFTプロセッサ300は、複数のICまたは基板上に、インプリメントされ、そして1つまたは複数のチップまたはモジュールとしてパッケージされることもできる。例えば、FFTプロセッサ300は、第1のIC上に実行される処理部分を有することができ、それらの処理部分は、第1のICとは異なる1つまたは複数のストレージデバイス上にあるメモリとインターフェースすることができる。
FFTプロセッサ300は、FFT計算ブロック360と、チャネル推定器380とを相互接続するメモリアーキテクチャ320に結合される復調ブロック310を含んでいる。シンボルがマッピングされるシンボルマッピングブロック350は、FFTプロセッサ300の一部分としてオプションとして含められることができ、あるいはFFTプロセッサ300と同じ基板またはIC上にインプリメントされることもあり、またはインプリメントされないこともある別個のブロック内にインプリメントされることができる。シンボルマッピングブロック350においては、シンボルデインターリービング(symbol deinterleaving)もまた起こる。シンボルマッピングブロックの例示の一例は、対数尤度比(log likelihood ratio)である。
復調モジュールと、FFTモジュールと、チャネル推定モジュールと、シンボルマッピングモジュールは、サンプル値に対してオペレーションを実行する。メモリアーキテクチャ320は、これらのモジュールのうちのどれかが、与えられた時刻に任意のブロックにアクセスすることを可能にする。スイッチングロジックは、メモリバンクを一時的に分割することにより簡略化される。
メモリの1つのバンクは、復調ブロック310によって繰り返し使用される。FFT計算ブロック320は、アクティブに処理されているバンクにアクセスする。チャネル推定ブロック380は、現在処理されているバンクのパイロット情報にアクセスする。シンボルマッピングブロック350は、もっとも古いサンプルを含むバンクにアクセスする。
復調ブロック310は、係数ROM314に結合された復調器312を含んでいる。復調ブロック310は、パイロットとデータのインタレースを回復するために時間同期化されたOFDMシンボルを処理する。上記される例において、OFDMシンボルは、8個の別個のインタレースに分割された4096個のサブバンドを含み、ここで各インタレースは、全体の4096個のサブバンドにまたがって一様に間隔の空けられたサブバンドを有する。
復調器312は、4096個の着信サンプルを8個のインタレースへと構成する。復調器は、インタレース0から7を表すnを用いて、w(n)=e−j2πn/512だけ、各着信サンプルを回転させる。第1の512個の値は、回転させられ、各インタレースに記憶される。追随する各組の512個のサンプルについて、復調器312は、それらの値を回転させ、次いで加える。各インタレースにおける各メモリロケーションは、累算された8個の回転させられたサンプルを有することになる。インタレース0における値は、回転させられず、ただ累算される。復調器312は、累算および回転に起因した増大に対応するように入力サンプルを表すために使用されるよりも大きな数のビットの形で回転値と累算値とを表すことができる。
係数ROM314は、複素回転係数(complex rotation coefficient)を記憶するために使用される。インタレース0が、どのような回転も必要としないので、7つの係数が、各着信サンプルについて必要とされる。係数ROM314は、立ち上がりエッジでトリガされる(rising-edge triggered)ことができ、これは、復調ブロック310がサンプルを受け取るときからの1サイクルの遅延をもたらす可能性がある。
復調ブロック310は、係数ROM314から取り出される各係数値を登録するように構成されることができる。係数値を登録する動作は、それらの係数値自体が使用されることができる前に別のサイクル遅延を追加する。
各着信サンプルについて、おのおのが異なるアドレスを有する7つの異なる係数が、使用される。7個のカウンタが異なる係数を調べるために使用される。各カウンタは、あらゆる新しいサンプルについてそのインタレース番号だけインクリメントされ、例えば、インタレース1は、1だけインクリメントするが、インタレース7は、7だけインクリメントする。単一行において必要とされる7つの係数のすべてを保持するROMイメージを作成すること、あるいは7個の異なるROMを使用することは、一般的に実用的ではない。それ故に、復調パイプラインは、新しいサンプルが到着するときに係数値をフェッチすることにより、開始する。
係数メモリのサイズを小さくするために、0とπ/4の間のCOS値とSIN値が記憶される。メモリに送られない係数アドレスの3ビットの最上位ビット(most-significant bit)(MSB)は、適切な四分円(quadrant)にそれらの値を向けるために使用されることができる。したがって、係数ROM314から読み取られる値は、直ちには登録されない。
メモリアーキテクチャ320は、複数の(multiple)メモリバンク324a〜324cに結合された入力マルチプレクサ322を含んでいる。メモリバンク324a〜324cは、メモリバンク324a〜324cのおのおのから様々なモジュールへと値を経路指定することができるマルチプレクサを含むメモリ制御ブロック326に結合される。
メモリアーキテクチャ320は、パイロット観察値処理のためのメモリおよび制御も含んでいる。メモリアーキテクチャ320は、複数のパイロット観察値メモリ332a〜332cのうちの任意の1つにパイロット観察値を結合する入力パイロット選択マルチプレクサ330を含んでいる。複数のパイロット観察値メモリ332a〜332cは、任意のメモリの内容が処理のために選択されることを可能にする出力パイロット選択マルチプレクサ334に結合される。メモリアーキテクチャ320は、パイロット観察値から決定される処理されたチャネル推定値を記憶する複数のメモリ部分342a〜342bを含むことができる。
OFDMシンボルを生成するために使用される直交周波数は、FFTなどのフーリエ変換を使用して都合よく処理されることができる。FFT計算ブロック360は、1つまたは複数のあらかじめ決定された次元(dimension)の効率的なFFTオペレーションおよび逆FFT(IFFT)オペレーションを実行するように構成されるいくつかの要素を含むことができる。一般的に、それらの次元は、2の累乗であるが、FFTオペレーションまたはIFFTオペレーションは、2の累乗である次元だけには限定されない。
FFT計算ブロック360は、メモリアーキテクチャ320または転置レジスタ364から取り出される複素データ上で動作することができるバタフライコア370を含んでいる。FFT計算ブロック360は、メモリアーキテクチャ320と、転置レジスタ354との間で選択するように構成されるバタフライ入力マルチプレクサ362を含んでいる。バタフライコア370は、バタフライオペレーションを実行するために複素乗算器366とひねりメモリ368と一緒に動作する。
チャネル推定器380は、パイロットサンプルのスクランブルを解くためにPNシーケンサ384と一緒に動作するパイロットデスクランブラ(pilot descrambler)382を含むことができる。位相ランプモジュール(phase ramp module)386は、パイロットインタレースから様々なデータインタレースのうちのどれかへとパイロット観察値を回転させるように動作する。位相ランプ係数メモリ388は、可能性のあるインタレースの間でサンプルを回転させる必要がある位相ランプ情報を記憶するために使用される。
時間フィルタ392は、複数のシンボル上で複数のパイロット観察値に時間フィルタをかけるように構成されることができる。時間フィルタ392からのフィルタがかけられた出力は、メモリアーキテクチャ320に記憶され、さらに基礎となるサブバンドデータの復号化を実行するシンボルマッピングブロック350において使用するためのメモリアーキテクチャ320に戻されることに先立ってスレッショルダ(thresholder)394によって処理されることができる。
チャネル推定器380は、中間値と最終出力値とを含めて、様々なチャネル推定器の出力値をメモリアーキテクチャ320に対してインターフェースするチャネル推定値出力マルチプレクサ390を含むことができる。
図4は、OFDMレシーバにおける他の信号処理ブロックに関連したFFTプロセッサ400の一部の実施形態の簡略化された機能ブロック図である。TDMパイロット取得モジュール(TDM pilot acquisition module)402は、FFTプロセッサ400のための初期シンボル同期化とタイミングとを生成する。入ってくる同相(in-phase)(I)サンプルと直交(Q)サンプルは、望ましい振幅と周波数エラーの範囲内に信号を保持する利得および周波数の制御ループをインプリメントするように動作するAGCモジュール404に結合される。一部の実施形態においては、フレームシンクロナイザが、TDMパイロット取得モジュールという用語の代わりに使用されることができる。AFCファンクションは、フレームシンクロナイザブロックにおいて実行されるが、AGCファンクションは、フレームシンクロナイザ(図2からの受信RF処理)の前に実行されることができる。
制御プロセッサ408は、FFTプロセッサ400のハイレベル制御(high level control)を実行する。制御プロセッサ408は、例えば、ARM(商標)によって設計されるプロセッサなど、汎用プロセッサまたは縮小命令セットコンピュータ(Reduced Instruction Set Computer)(RISC)プロセッサとすることができる。制御プロセッサ408は、例えば、シンボル同期化を制御すること、FFTプロセッサ400の状態をアクティブ状態またはスリープ状態に制御すること、あるいは別の方法でFFTプロセッサ400のオペレーションを制御することにより、FFTプロセッサ408のオペレーションを制御することができる。
FFTプロセッサ400内の制御ロジック410は、FFTプロセッサ400の様々な内部モジュールにインターフェースするために使用されることができる。制御ロジック410は、FFTプロセッサ400の外部の他のモジュールとインターフェースするためのロジックを含むこともできる。
IサンプルとQサンプルは、FFTプロセッサ400に、そしてより詳細にはFFTプロセッサ400の復調ブロック310に結合される。復調ブロック310は、あらかじめ決定された数のインタレースへとサンプルを分離するように動作する。復調ブロック310は、基礎となるデータの復号化のための処理、およびシンボルマッピングブロック350への送付のためのサンプルを記憶するメモリアーキテクチャ320とインターフェースする。
メモリアーキテクチャ320は、メモリアーキテクチャ320内の様々なメモリバンクのアクセスを制御するためのメモリコントローラ412を含むことができる。例えば、メモリコントローラ412は、様々なメモリバンク内のロケーションに対する行書込み(row write)を可能にするように構成されることができる。
メモリアーキテクチャ320は、FFTデータを記憶するための複数のFFT RAM420a〜420cを含むことができる。さらに、複数の時間フィルタメモリ430a〜430cは、チャネル推定値を生成するために使用されるパイロット観察値などの時間フィルタデータを記憶するために使用されることができる。
別個のチャネル推定値メモリ440a〜440bは、チャネル推定器380からの中間のチャネル推定結果を記憶するために使用されることができる。チャネル推定器380は、チャネル推定値を決定するときにチャネル推定値メモリ440a〜440bを使用することができる。
FFTプロセッサ400は、FFTオペレーションの少なくとも一部分を実行するために使用されるFFT計算ブロックを含んでいる。図4の実施形態においては、FFT計算ブロックは、8ポイントFFTエンジン460である。8ポイントFFTエンジン460は、上記されるOFDMシンボル構造の例示の例を処理するために有利なものにすることができる。以前に説明されるように、各OFDMシンボルは、おのおの512個のサブバンドの8個のインタレースに分割された4096個のサブバンドを含んでいる。各インタレースにおけるサブバンドの数、512は、8の3乗(cube)である(83=512)。したがって、512ポイントFFTは、基数8のFFTを使用して3つのステージで実行されることができる。実際に、4096は、8の4乗であるので、4096ポイントFFTは、全部で4ステージにするために、ちょうど1つの追加FFTステージを用いて実行されることができる。
8ポイントFFTエンジン460は、基数8のFFTを実行するように適合されたバタフライコア370と転置レジスタ364とを含むことができる。正規化ブロック462は、バタフライコア370によって生成される積を正規化するために使用される。正規化ブロック462は、FFTの各ステージに続いてバタフライコアから出力される値を表すために必要とされるメモリロケーションのビットの増大を制限するように動作することができる。
図5は、FFTモジュール500の一部の実施形態の機能ブロック図である。FFTモジュール500は、順変換と逆変換との間の対称性に起因して、小さな変更を有するI/FFTモジュールとして構成されることができる。FFTモジュール500は、ASICの一部分として、FPGAとして、あるいはロジックインプリメンテーションに対する任意のアプローチとして、単一ICダイ上でインプリメントされることができる。代わりに、FFTモジュール500は、互いに通信している複数の要素としてインプリメントされることもできる。さらに、FFTモジュール500は、特定のFFT構造だけに限定されるものではない。例えば、FFTモジュール500は、時間におけるデシメーション、または周波数FFTにおけるデシメーション(以下の式1においてさらに詳述される)を実行するように構成されることができる。図5は、基数rのFFTの一般的なシナリオについて説明しており、図6は、基数8のFFTの特定のシナリオについて説明している。
図5に戻って参照すると、FFTモジュール500は、変換されるべきサンプルを記憶するように構成されるメモリ510を含んでいる。さらに、FFTモジュール500は、変換の所定の位置にある計算を実行するように構成されるので、メモリ510は、FFTの各ステージの結果と、FFTモジュール500の出力とを記憶するために使用される。
メモリ510は、FFTのサイズと、FFTの基数とに部分的に基づいてサイズ変更されることができる。N=rnである場合の基数rのNポイントのFFTでは、メモリ510は、行当たりにr個のサンプルを用いて、rn−1行にN個のサンプルを記憶するようにサイズ変更されることができる。メモリ510は、行当たりのサンプルの数によって乗ぜられるサンプル当たりのビットの数に等しい幅を有するように構成されることができる。メモリ510は、一般的に実数成分と虚数成分としてサンプルを記憶するように構成される。したがって、基数2のFFTでは、メモリ510は、行当たり2つのサンプルを記憶するように構成され、第1のサンプルの実数部と、第1のサンプルの虚数部と、第2のサンプルの実数部と、第2のサンプルの虚数部としてそれらのサンプルを記憶することができる。サンプルの各コンポーネントが10ビットとして構成される場合、メモリ510は、行当たりに40ビットを使用する。メモリ510は、モジュールのオペレーションをサポートするために十分な速度のランダムアクセスメモリ(Random Access Memory)(RAM)とすることができる。
メモリ510は、rポイントFFTを実行するように構成されるFFTエンジン520に結合される。FFTモジュール500は、FFTを実行するように構成されることができ、ここではひねりファクタ(twiddle factor)による重み付けが、FFTバタフライとも称される部分的FFTの後に実行される。そのようなコンフィギュレーションは、FFTエンジン520が、最小数の乗算器を使用して構成されることを可能にし、それゆえにFFTエンジン520のサイズと複雑さを最小にしている。FFTエンジン520は、メモリ510から1行を取り出し、その行におけるサンプルに対してFFTを実行するように構成されることができる。したがって、FFTエンジン520は、単一サイクルでrポイントFFTについてのサンプルのすべてを取り出すことができる。FFTエンジン520は、例えばパイプライン化FFTエンジンとすることができ、そしてクロックの異なる位相上の行の中の値を操作することができる可能性がある。
FFTエンジン520の出力は、レジスタバンク530に結合される。レジスタバンク530は、FFTの基数に基づいていくつかの値を記憶するように構成される。一部の実施形態においては、レジスタバンク530は、r2個の値を記憶するように構成されることができる。サンプルを有する場合のように、レジスタバンクに記憶される値は、一般的に、実数成分と虚数成分とを有する複素値である。
レジスタバンク530は、一時的ストレージとして使用されるが、高速アクセスのために構成され、アドレスバスを介してアクセスされる必要がないストレージについての専用ロケーションを提供する。例えば、レジスタバンク530におけるレジスタの各ビットは、フリップフロップを用いてインプリメントされることができる。結果として、レジスタは、匹敵するサイズのメモリロケーションに比べてずっと多くのダイ面積を使用する。レジスタスペースにアクセスすることには事実上サイクルコストが存在しないので、特定のFFTモジュール500のインプリメンテーションは、レジスタバンク530とメモリ510のサイズを操作することにより、ダイ面積のために速度をトレードオフすることができる。
レジスタバンク530は、値の転置が、例えば、行ごとに(by rows)値を書き込むことと、列ごとに(by columns)値を読み取ることとにより、あるいは逆の場合も同様に直接に実行されることができるように、r2個の値を記憶するように有利にサイズ変更されることができる。値の転置は、FFTのすべてのステージについてメモリ510におけるFFT値の行アラインメント(row alignment)を保持するために使用される。
第2のメモリ540は、FFTエンジン520の出力を重み付けするために使用されるひねりファクタを記憶するように構成される。一部の実施形態においては、FFTエンジン520は、部分的FFT出力(FFTバタフライ)の計算中に直接にひねりファクタを使用するように構成されることができる。ひねりファクタは、任意のFFTについてあらかじめ決定されることができる。それ故に、第2のメモリ540は、読取り専用メモリ(Read Only Memory)(ROM)、不揮発性メモリ、不揮発性RAM、またはフラッシュプログラマブルメモリとしてインプリメントされることができるが、第2のメモリ540は、RAM、または何らかの他のタイプのメモリとして構成されることもできる。第2のメモリ540は、N=rnである場合に、NポイントFFTについてのN×(n−1)個の複素ひねりファクタを記憶するようにサイズ変更されることができる。1、−1、j、−jなどのひねりファクタの一部は、第2のメモリ540から省略されることができる。さらに、同じ値の複製も、第2のメモリ540から省略されることができる。それ故に、第2のメモリ540におけるひねりファクタの数は、(n−1)のN倍よりも小さい可能性がある。効率的なインプリメンテーションは、FFTが周波数におけるデシメーションをインプリメントするか、時間アルゴリズムにおけるデシメーションをインプリメントするかに応じて、FFTのすべてのステージについてのひねりファクタが、第1のステージ、またはFFTの最終ステージにおいて使用されるひねりファクタのサブセットであることを利用することができる。
複素乗算器550a〜550bは、レジスタバンクと第2のメモリ540とに結合される。複素乗算器550a〜550bは、第2のメモリ540からの適切なひねりファクタを用いて、レジスタバンク530に記憶された、FFTエンジン520の出力を重み付けするように構成される。図5に示される実施形態は、2つの複素乗算器550aおよび550bを含んでいる。しかしながら、FFTモジュール200に含まれる複素乗算器、例えば250aの数は、ダイ面積に対する速度のトレードオフに基づいて選択されることができる。より多くの数の複素乗算器が、FFTの実行を高速化するためにダイ上にインプリメントされることができる。しかしながら、増大させられた速度は、ダイ面積を犠牲にする。ダイ面積がクリティカルである場合には、複素乗算器の数は、減少させられる可能性がある。一般的に、r−1個の複素乗算器は、FFTエンジン520の出力に対して並列にすべての重要なひねりファクタを適用するのに十分であるので、rポイントFFTエンジン520がインプリメントされるときに、設計はr−1個よりも多くの複素乗算器を含むことはなくなる。一例として、8ポイントの基数2のFFTを実行するように構成されるFFTモジュール500は、2個の複素乗算器をインプリメントすることができるが、1個の複素乗算器をインプリメントすることもできる。
各複素乗算器、例えば550aは、各乗算オペレーション中に、レジスタバンク530からの単一の値と、第2のメモリ540に記憶される対応するひねりファクタに対して動作する。実行されるべき複素乗算よりも少ない複素乗算器しか存在しない場合、複素乗算器は、レジスタバンク530からの複数のFFT値に対するオペレーションを実行することになる。
複素乗算器、例えば550aの出力は、レジスタバンク530に対して、一般的には複素乗算器に入力を供給した同じポジションに対して書き込まれる。それ故に、複素乗算の後に、レジスタバンクの内容は、複素乗算器が、FFTエンジン520内にインプリメントされたか、あるいは図5に示されるようにレジスタバンク530に関連づけられたかどうかにかかわらず同じであるFFTステージ出力を表す。
レジスタバンク530に結合される転置モジュール532は、レジスタバンク530の内容に対して転置を実行する。転置モジュール532は、レジスタ値を並べ換えることによりレジスタ内容を転置することができる。代わりに、転置モジュール532は、内容が、レジスタブロック530から読み取られるときにレジスタブロック530の内容を転置することができる。レジスタバンク530の内容は、FFTエンジン520に対して入力を供給した行においてメモリ510にライトバックされる前に転置される。レジスタバンク530の値を転置することは、FFTのすべてのステージにまたがってFFT入力についての行構造を保持する。
プロセッサ562は、命令メモリ564と一緒に、モジュール間でデータフローを実行するように構成されることができ、図5の1つまたは複数のブロックのうちの一部またはすべてを実行するように構成されることができる。例えば、命令メモリ564は、FFTモジュール500においてデータを操作するようにプロセッサ562に指示するソフトウェアとして、1つまたは複数のプロセッサ使用可能命令を記憶することができる。
プロセッサ562と命令メモリ564は、FFTモジュール500の一部分としてインプリメントされることができ、あるいはFFTモジュール500の外部にあるようにすることもできる。代わりに、プロセッサ562は、FFTモジュール500の外部にあるようにすることもできるが、命令メモリ564は、FFTモジュール500の外部にあるようにすることもでき、例えば、サンプルのために使用されるメモリ510、またはひねりファクタが記憶される第2のメモリ540と共通にすることもできる。
図5に示される実施形態は、アルゴリズム変更の基数としての速度と面積の間のトレードオフを特徴とする。N=rνポイントFFTをインプリメントするために、必要とされるサイクルの数は、次式のように推定されることができる。
であり、
基数rのFFT(radix-r FFTs)が計算されることになる。
基数rのFFT(radix-r FFTs)が計算されることになる。
rNFFT=r×Time(1回の読取り、FFT、ひねり乗算(twiddle multily)を実行し、r個の要素のベクトルについて書き込むために必要とされる時間)である。
NFFTは、基数と独立な定数であるものと仮定される。サイクルカウントは、およそ1/r(O(1/r))の程度で減少する。インプリメンテーションのために必要とされる面積は、転置のために必要とされるレジスタの数が、r2として増大するにつれ、O(r2)で増大する。レジスタの数と、レジスタをインプリメントするために必要とされる面積は、大きなNでは面積を支配する。
望ましい速度を提供する最小の基数は、対象となる異なる場合についてFFTをインプリメントするように選択されることができる。基数を最小にすることは、モジュールの速度が十分であるという条件で、モジュールをインプリメントするために使用されるダイ面積を最小にする。
一部の実施形態においては、512ポイントFFTは、周波数アプローチにおけるデシメーションを使用してインプリメントされる(式1を参照)。このアプローチは、512ポイントFFTを達成するために、3つの基数8のFFTをカスケードにする。
周波数におけるデシメーション(decimation)と、時間におけるデシメーションとの間の違いは、ひねりメモリ係数(twiddle memory coefficience)である。我々は、基数8のFFTユニットを使用して512ポイントFFTオペレーションをインプリメントしているので、3ステージの処理が存在する。
図6は、基数8のFFTモジュール600の一部の実施形態の機能ブロック図である。図5における汎用FFTモジュール500と同様に、基数8のFFTモジュール600は、順変換と逆変換との間の対称性に起因して、少ない変更を有するIFFTモジュールとして構成されることができる。FFTモジュール600は、ASICの一部分として、FPGAとして、あるいはロジックインプリメンテーションに対する任意のアプローチとして、単一のICダイ上にインプリメントされることができる。代わりに、FFTモジュール600は、互いに通信している複数の要素としてインプリメントされることもできる。さらに、基数8のFFTモジュール600は、特定のFFT構造だけに限定されることはない。
基数8のFFTアーキテクチャ600は、行当たりに8個のサンプルを記憶するのに十分となるメモリ行幅を有するように構成されるサンプルメモリ610を含んでいる。したがって、サンプルメモリは、行当たりに8個のサンプルの64個の行を有するように構成される。FFT読取りブロック620は、メモリから行を取り出すように構成され、各行におけるサンプル上で8ポイントFFTを実行する。
基数8のFFTモジュール600は、変換されるべきサンプルを記憶するように構成される別個のプロセッサメモリ(図示されず)を含むことができる。さらに、基数8のFFTモジュール600は、サンプル変換をインプリメントするための別個のプロセッサ(図示されず)を含むことができる。FFTモジュール600は、変換の所定の位置にある計算を実行するように構成されるので、メモリは、FFTの各ステージの結果と、FFTモジュール600の出力とを記憶するために使用される。
読取りブロック620は、8ポイントFFT計算を実行するように構成される8ポイントパイプラインFFTブロック630に結合される。一部の実施形態においては、8ポイントパイプラインFFTブロック630は、1つの基数8を計算するバタフライコアである。さらに、8ポイントパイプラインFFTブロック630は、FFTまたはIFFTの計算のためにプログラマブルとすることができる。メモリ610から読み取られる値は、直ちに登録される。
8ポイントパイプラインFFTブロック630からの出力値は、列ごとに8×8の転置メモリ650に書き込まれる。転置メモリ650は、さらに4つの複素乗算器660a、660b、660c、660d(一括して660)と、ひねりROM640とに結合される。複素乗算器660は、転置メモリ650からひねり係数を読取り、ひねりROM640からの命令に基づいて計算を実行し、そして転置メモリ650へと出力をライトバックする。出力は、転置メモリが一定のメモリフットプリントを保持することを可能にする入力として同じロケーションに対して書き込まれる(すなわち、入力データを置き換える)。複素乗算器660によって実行されるような読取りおよび書込みの順序とロケーションについての命令は、ひねりROM640に記憶される。ひねりROM640は、行当たりに4個のひねりファクタの122個の行を含んでいる。転置メモリ650からの出力はまた、行ごとにサンプルメモリ610に書き込まれる。
8×8の転置メモリは、任意の書込み可能データストア(writable data store)の形でインプリメントされることができる。メモリモジュールの例は、RAM、レジスタ、フラッシュ、磁気ディスク、光ディスクなどの集積回路を含んでいる。一部の好ましい実施形態においては、RAMは、他のデータストアと比較されたコスト/パフォーマンスのトレードオフに基づいて使用される。
FFTブロックは、単一の512ポイントFFTを実行するために、基数8のバタフライコアを介した3つのパス(pass)を使用する。第1の2つのパスからの結果は、ひねり値によって乗ぜられ、そして正規化されたそれらの値の一部を有する。8つの値がメモリの単一の行に記憶されるので、それらが読み取られるときのそれらの値の順序は、値がライトバックされるときとは異なっている。2kのI/FFTが実行される場合、メモリ値は、バタフライコアに送信される前に転置される。
基数8のFFTは、8×8のレジスタを必要とする。すべての64個のレジスタは、バタフライコアからの入力を受け取る。これらのレジスタのうちで、56個のレジスタは、複素乗算器からの入力を受け取り、32個のレジスタは、メインメモリからの入力を受け取る。メインメモリからの入力は、レジスタの行に書き込まれる。バタフライコアからの入力は、レジスタの列に書き込まれる。複素乗算器からの入力は、グループで実行される。
すべての64個のレジスタは、正規化の計算および登録を介してメインメモリに対して出力を送る。正規化の順序は、I/FFTのおのおののタイプとステージについて異なる。特に、56個のレジスタは、ひねり乗算を必要とする。32個のレジスタは、それらの値がバタフライコアへと送られている。値がバタフライコアに送られるときに、それらは、列ごとに送られる。値が複素乗算器に送られるときには、それらは、グループで行われる。
図7は、コアが、512ポイントFFTについて基数8のモードで動作させられるときに使用されるバタフライコア700の一部の実施形態の機能ブロック図である。FFTバタフライ計算とひねり乗算の信号フローが、示されている。512ポイントFFTは、64行(8個の8ポイントFFTのおのおのについて1つ)と8列(8サンプル/行)のサンプルメモリ610を使用する。レジスタブロックは、8×8の行列(転置メモリ650)として構成される。FFT処理中に生じる2つの「ひねり」乗算が存在する。図7のひねり乗算は、I/FFTバタフライを介した単一のパスに関連する乗算を意味する。
サンプルメモリ610の初期の内容は、おのおの8列の8行の形で配列される。行は、サンプルメモリから取り出され、FFTは、行に記憶された値に対して実行される。結果は、適切なひねりファクタを用いて重み付けされ、結果は、レジスタバンクに書き込まれる。次いで、レジスタバンク値は、サンプルメモリにライトバックされる前に転置される。以前のレジスタ値は、上書きされ、計算が実行される順序を重要にしている。しかしながら、同じレジスタを使用することに対するこのアプローチと、注意深い順序付けは、FFTのより高速な計算と、小さなメモリの要件を可能にする。これについては、さらに図8aおよび8bにおいて説明される。
図7に戻って参照すると、コア700において基数8のFFTを実行する際には、まず入力が読み取られ、第1の組の加算器に先立ってビット反転され、そしてレジスタに記憶される。基数8のオペレーションでは、ビット反転は、フルの3ビットの反転であり、すなわち、0→0、1→4、2→2、3→6、4→1、5→5、6→3、7→7である。
一例を用いて例示すると、A領域における第4の和と第8の和が、FFTでは、w2によって乗ぜられる。IFFTでは、この値は、w6になる。
w2の場合には、入力の実数部についての2の補数の否定(2's complement negation)を実行すること、およびそのあと加算することの代わりに、実数部の値は、変更されないままにおかれ、後続の加算器は、符号変更を明らかにするために(to account for)減算器に変更される。
w6の場合には、入力の虚数部についての2の補数の否定を実行すること、およびそのあと加算することの代わりに、虚数部の値は、変更されないままにおかれ、後続の加算器は、符号変更を明らかにするために減算器に変更される。
w7の場合には、複素乗算器が、必要とされる。
図7と、FFTコアとIFFTコアの両方についての二重性インプリメンテーションをさらに示すために、2組の加算器が、第4の加算と第8の加算について使用される。一方の組は、w2(FFT)を計算するが、他方は、w6(IFFT)を計算する。信号は、FFTが望ましいか、IFFTが望ましいかに応じて、どちらの加算を使用すべきかを制御する。それ故に、両方が計算されるが、一方が使用される。
FFT/IFFT信号が、それらの入力値を加算器と減算器へと向けるために、そしてその和と差をそれらの最終宛先へと向けるために使用される。Pを抽出することは、このインプリメンテーションが2つの乗算器と2つの加算器(1つの加算器および1つの減算器)とを必要とすることを示す。
以前のように、FFT/IFFT信号は、それらの入力値を加算器と減算器に向ける他に、その和および差をそれらの最終宛先へと向けるためにも使用される。2つの乗算器と2つの加算器(1つの加算器および1つの減算器)とが、必要とされる。
ちょっとした乗算、領域Bにおけるw2およびw6は、領域Aにおけるこれらの乗算と同様に取り扱われる。
本実施形態とハードウェア制約条件に応じて、タイミング制約条件がそれをそのように必要とする場合、これらの計算は、複数のクロックサイクルにおいて行われることができる。1組のレジスタは、Out4値を取り込むために追加されることができる。第6と第8についてのOut4値は、登録されることに先立って定数PおよびRによって乗ぜられる(式の組2および4)。レジスタのこの配置は、以下のように最悪ケースの経路についてそれらの計算をバランスさせる。
第1のサイクル:乗算器→加算器→加算器→乗算器→乗算器
第2のサイクル:加算器→乗算器→加算器→加算器
信号が、Out4値またはOut8値のどちらかを送り出すために使用される。その信号は、基数4のオペレーションが必要とされたか、基数8のオペレーションが必要とされたかを決定する。FFTアーキテクチャが異なるステージの組合せにおいてインプリメントされることができることを段落00032から思い起こして欲しい。8×8×8×4のシーケンスの例においては、Out4は、2048ポイントI/FFTオペレーション(すなわち、8×8×8×4のシーケンスの第4ステージ)のために使用される。
第2のサイクル:加算器→乗算器→加算器→加算器
信号が、Out4値またはOut8値のどちらかを送り出すために使用される。その信号は、基数4のオペレーションが必要とされたか、基数8のオペレーションが必要とされたかを決定する。FFTアーキテクチャが異なるステージの組合せにおいてインプリメントされることができることを段落00032から思い起こして欲しい。8×8×8×4のシーケンスの例においては、Out4は、2048ポイントI/FFTオペレーション(すなわち、8×8×8×4のシーケンスの第4ステージ)のために使用される。
図8は、512ポイントの基数8のFFTについての転置メモリ乗算順序800の図である。各DFTは、より大きなDFT(larger DFT)(lDFT)への、より小さなDFT(smaller DFT)(sDFT)の組合せであることを思い起こして欲しい。これが、バタフライ計算の本質である。最初は問題ではないが、後続のsDFTは、以前のsDFTからの出力に依存する。これは、遅延を生成するが、プロセッサまたはFFTeは、計算を終了するために依存した入力データを待つ。これらのsDFTが計算される順序を構成することにより、FFTパイプラインは、遅延を最小にし、最小の時間に全体のFFTを生成するためにインプリメントされることができる。
図8は、sDFTの最適な順序付け800についてのグループ分けを示している。各セルについての計算が、示され、グループ分けされる。表2は、X(k)の入力が導き出されるメモリにおける特定の行および列を詳述している。
各X(n)は、8ポイントFFTを示す。
図9は、基数8のFFT計算時系列900の図である。基数8のFFTを実行するために必要とされるクロックサイクルと、オペレーションが実行される順序は、時間ドメイン上に示される。FFTeにおける基数8のFFT計算は、4組のオペレーション、すなわちサンプルを読み取ることと、8ポイントFFTを計算することと、ひねり乗算と、出力を書き込むこととを必要とする。
図8と図9は、密接に関連しており、一緒にして最も簡単に理解されるので、それらは、ここにおいて一緒に説明されることになる。図9において、FFT時系列は、右に向かって増大している時間を示す。時間の離散的間隔は、時間上でCLK910のグラフを用いて注釈が付けられる。方形波の完全な各サイクルは、基準時間単位を示す。この例においては、基準時間単位は、8つの複素サンプルの読取りアクセスと書込みアクセスを完了するのに十分な時間間隔と一致するように較正される。読取りグラフ920は、サンプルの読取りを示す。各読取りボックスは、特定の読取りタスク、一般には8つの複素サンプルの1回の読取りを完了するために必要とされる時間を表す。FFT−8ptグラフ930は、8ポイントFFTの計算を示し、この計算は、バタフライ計算を含んでいる。各FFT−8ptボックスは、ボックスによって表される8ポイントFFTの特定のグループ分けを処理することを完了するために必要とされる時間を表す。8ポイントFFTは、残っている追加の任意のひねり計算に基づいて、グループ分けされる。一部の場合においては、8ポイントFFTを完了することは、ひねり乗算が依然として必要とされるので不十分である。ひねり乗算グラフ(Twiddle Mult graph)940は、8ポイントFFTグループ上におけるひねり乗算の計算を示す。各ひねり乗算ボックスは、ボックスによって表される特定のひねり乗算を処理することを完了するために必要とされる時間を表す。最後に、書込みグラフ950は、データストアへの最終出力の書込みを示す。各書込みボックスは、特定の書込みタスク、一般には8つの複素サンプルの1回の書込みを完了するために必要とされる時間を表す。
サイクル0において、メモリの8つの行が読み取られる。これらの行における8つの値のおのおのが処理されるにつれて、それらは、転置レジスタの列に対して書き込まれる。図8においてX(0)からX(7)で示されるメモリ値は、第1の行から読み取られる第1の8つの値である。サイクル4において、図8においてX(0)、X(8)、X(16)、..X(56)で示される、転置レジスタの第1の列が書き込まれる。第1の4つのひねり係数のフェッチは、グループ811における4つの値、特にX(8)、X(16)、X(24)、およびX(32)に対応する。
これらの第1の4つの値は、ひねり乗算されるが、バタフライは、メモリ読取りの第2の行についての結果を出力している。これらの8つの値は、転置レジスタの第2の列に書き込まれる。第2の組のひねり係数のフェッチは、グループ812、特にX(9)、X(17)、X(25)、およびX(33)についてである。
グループ811から824におけるひねり乗算は、バタフライ結果が、使用可能になるとすぐに行われることができる。その後に、グループ811から824において、転置レジスタの行は、結果が使用可能になるとすぐにメモリの行にライトバックする用意が整っている。例えば、書き込まれるメモリの第1の行は、X(0)からX(7)の値のためになる。
8行のメモリが読み取られ、書き込まれた後に、次の組の8行が、同様に処理される。これは、8回行われ、行われる全部で512個のサンプルについて、メモリの64行(おのおのが8つのサンプルを保持する)を完了している。
一部の実施形態においては、それらの値は、行から列へと転置されない。異なるFFTステージでは、書き込まれるメモリの行は、転置レジスタ値の行から、または列からとすることができる。正規化レジスタは、転置レジスタからデータの行または列を受け取り、必要に応じてその正規化オペレーションを実行し、メモリの1行に対してそれらの値を書き込むことができる。
図10は、I/FFTエンジン1000の別の例示のインプリメンテーションのブロック図設計を示している。図1〜6に示されるコンポーネントは、ここで図10において示されるようにモジュールによってインプリメントされることができる。これらのモジュールの間の情報フローは、図1〜6に類似している。モジュラーインプリメンテーション1000として、処理システム1000は、第1のデータを記憶するためのモジュール1010と、第1のデータを記憶するためのモジュールよりも高速である、第2のデータを記憶するための1つまたは複数のモジュール1050と、第1のデータを記憶するための手段からマルチポイント入力を受け取るためのモジュール1020と、第2のデータを記憶するための1つまたは複数のモジュールのうちの少なくとも1つに受け取られた入力を記憶するためのモジュール1050と、無遅延パイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するためのモジュール1090とを備える。これらのモジュールのおのおのは、単一モジュール内に、あるいは複数のサブモジュールを使用して、インプリメントされることができる。これらのモジュールは、より大きなモジュールを形成するためにさらに組み合わされることができる。
一部の実施形態においては、入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するための計算モジュール1090は、ギャップレスパイプラインを使用する。計算モジュール1090は、さらに基数8のバタフライコアを使用してデータを処理することができる。ストレージモジュール1050は、第2のデータを記憶するための少なくとも64個のモジュールに受け取られた入力を記憶することができる。計算モジュール1090は、複素定数を計算することができ、ここで第2のデータを記憶するための少なくとも64個のモジュール1050のうちの56個は、複素乗数を計算するためのモジュール1060から入力を受け取る。受け取りモジュール1020は、第1のデータを記憶するためのモジュール1010から入力を受け取ることができ、ここでモジュール1050のうちの32個は、第2のデータを記憶するための1つまたは複数のモジュール1050のうちの少なくとも1つに受け取られた入力を記憶するためのものである。受け取りモジュール1020は、第1のデータを記憶するためのモジュール1010から512ポイントの入力を受け取ることができる。出力モジュール1070は、計算された変換を出力することができる。計算モジュール1090は、無遅延パイプラインを使用して入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算することができ、FFTeは、第1の入力を読み取った後に、出力を12サイクル(8+パイプライン遅延)書き込むことを開始するように構成される。パイプライン遅延が4サイクルよりも短い他の実施形態においては、FFTeは、第1の入力を読み取った後に、出力を(8+パイプライン遅延)サイクル書き込むことを開始するように構成される。
図9において見られることができるように、このFFTパイプラインのこのインプリメンテーションは、ギャップレスである。各プロセス920、930、940および950が、別個のスレッドまたはエンジンと考えられる場合、与えられた基数8のFFTおよび与えられたFFTe設計では、スレッドが第1のサブタスクを処理することを開始するときと、全体タスクが完了されるときの間の時間は、最小である。したがって、スレッド/エンジンの不必要なアイドリングは、存在しない。ユーザは、どんな理由であれ(すなわち、プロセッサの熱を減少させ、プロセッサの負荷を減少させるなど)プロセッサ/スレッドにギャップを意図的に導入することができるが、これらの意図的に導入されたギャップが取り除かれる場合には、スレッドは、上記されるスレッドに帰されることになる。
ギャップレスパイプライン化FFTのこの特性を示すために、読取りプロセス920の例において、第1の部分読取り(sub-read)(X(0)の読取り)は、サイクル0において開始し、最後の部分読取り(X(7)の読取り)は、サイクル7の終わりにおいて終了する。全部で8個の読取り(X(1)〜X(7))が存在するので、各部分読取りが異なるサイクル中に開始する場合には、メモリのすべての8つの行を読み取るために必要とされる最小時間は、8サイクルであり、説明される読取りプロセス920によって使用される正確な時間である。
別の例を用いて示すために、FFT−8ptプロセス930について考察する。第1のサブFFT処理(X(0))は、サイクル1において開始し、最後のサブFFT処理(X(7))は、サイクル11の終わりにおいて終了する。8行のメモリが存在するので、各サブFFT処理がメモリのすべての8つの行をFFT処理するために必要とされる最小時間は、10サイクル(8行のメモリ、各サブFFT処理は、3サイクルを必要とする)であり、説明されるFFT−8ptプロセス930によって使用される正確な時間である。
次に、ひねり乗算プロセス940を考察する。基数8のFFTは、14個のひねり乗算を必要とする。第1の部分ひねり乗算(sub-twiddle multiplication)(グループ1 811)は、サイクル3において開始し、最後の部分ひねり乗算(グループ14 824)は、サイクル18の終わりにおいて終了する。14個のひねり乗算グループが存在するので、各部分ひねり乗算が、異なるサイクル中に開始する場合、すべての14個のグループをひねり乗算するために必要とされる最小時間は、16サイクル(14グループ、各部分ひねり乗算は、3サイクルを必要とする)であり、説明されるひねり乗算プロセス940によって使用される正確な時間である。
最後に、書込みプロセス950を考察する。基数8のFFTは、8つの書込みを必要とする。第1の部分書込み(sub-write)(出力0)は、サイクル12(8+パイプライン遅延)において開始し、最後の部分書込み(出力7)は、サイクル20(16+パイプライン遅延)の終わりにおいて終了する。8つの書込みが存在するので、各部分書込みが、異なるサイクル中に開始する場合、すべての8個のグループを書き込むために必要とされる最小時間は、8サイクル(8つの出力、各部分書込みは、2サイクルを必要とする)であり、説明される書込みプロセス950によって使用される正確な時間である。
マルチコアまたはマルチプロセッサのシステムの場合には、一部のサブタスクは、同じ「現実世界の」時間サイクル中に実行することができる。しかしながら、マルチスレッド化されたシステムは、単一スレッドへと線形化されることができるので、この解析およびアプローチは、これらのマルチコアドメインに広がる。4サイクルのスパン上でのデュアルコアシステム(dual core system)において8行のメモリを読み取ることは、依然としてギャップレスである。デュアルコアのプロセスが、単一コアに線形化されるときには、読取りは、以前と同様に8サイクルを必要とすることになる。
さらに、このFFTパイプラインのこのインプリメンテーションは、無遅延である。各プロセス920、930、940および950が、別個のスレッドまたはエンジンと考えられる場合、与えられた基数8のFFTおよび与えられたFFTe設計では、第1の読取りを開始するFFTプロセスと、第1の書込みを開始するFFTプロセスとの間の全体の時間は、最小である。ユーザは、どんな理由であれ(すなわち、プロセッサの熱を減少させ、プロセッサの負荷を減少させるなど)基数8のFFT処理にギャップを意図的に導入することができるが、これらの意図的に導入されたギャップが取り除かれる場合には、基数8のFFT処理は、以上で開示される基数8のFFT処理に帰されることになる。
無遅延のパイプライン化FFTのこの特性を示すために、基数8のFFTを実行する例においては、第1の書込みは、最後の8ポイントFFTが完了するまで実行することができない。順々に、最後の8ポイントFFTは、メモリの最後の行が読み取られるまで実行することができない。8つの行が存在するので、第1の読取りと第1の書込みとの間で必要とされる最小サイクルは、12サイクル(8つの読取り、3つのFFT−8pt、1つの書込み;8+パイプライン遅延)であり、これは、以上で開示されるようなシナリオである。
上記されたクロックサイクルは、プロセッサおよびシステムのクロックに独立である。様々なプロセッサは、コマンドを異なるようにインプリメントするので、1つのプロセッサは、読取りを実行するために2つのプロセッサクロックを必要とする可能性があるのに対して、別のプロセッサは、3つのプロセッサクロックを必要とする可能性がある。いくつかのオペレーションが、ルーチンをサイクルで記述したが、FFTサブルーチンの順序に強調が置かれ、このFFTサブルーチンの順序は、システムに独立している。
ここにおいて説明されるFFT処理技法は、様々な手段によってインプリメントされることができる。例えば、これらの技法は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せの形でインプリメントされることができる。ハードウェアインプリメンテーションでは、FFTを実行するために使用される処理ユニットは、ここにおいて説明される機能を実行するように設計された1つまたは複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理デバイス(digital signal processing device)(DSPD)、プログラマブルロジックデバイス(programmable logic device)(PLD)、フィールドプログラマブルゲートアレイ(field programmable gate array)(FPGA)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、電子デバイス、他の電子ユニット、あるいはそれらの組合せの内部にインプリメントされることができる。
ファームウェアおよび/またはソフトウェアのインプリメンテーションでは、本技法は、ここにおいて説明される機能を実行するモジュール(例えば、プロシージャ、ファンクションなど)を用いてインプリメントされることができる。ファームウェアおよび/またはソフトウェアのコードは、メモリに記憶され、プロセッサによって実行されることができる。メモリは、プロセッサ内に、あるいはプロセッサの外部にインプリメントされることができる。
開示される実施形態の以上の説明は、任意の当業者が本発明を作り、または使用することを可能にするために提供される。これらの実施形態に対する様々な修正は、当業者にとっては容易に明らかであろう、また、ここにおいて定義される包括的な原理は、本発明の精神あるいは範囲を逸脱することなく、他の実施形態に適用されることができる。したがって、本発明は、ここにおいて示される実施形態だけに限定されるようには意図されず、ここにおいて開示される原理および新規な特徴と整合する最も広い範囲が与えられるべきである。
Claims (60)
- メモリと、
1つまたは複数のレジスタおよび無遅延パイプラインを有し、前記メインメモリからのマルチポイント入力を受け取り、前記1つまたは複数のレジスタのうちの少なくとも1つに前記受け取られた入力を記憶し、そして前記無遅延パイプラインを使用して前記入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成された高速フーリエ変換エンジン(FFTe)と、
を備える装置。 - 前記パイプラインは、ギャップレスである、請求項1に記載の装置。
- 前記FFTeは、基数8のバタフライコアである、請求項1に記載の装置。
- 前記FFTeは、基数4のバタフライコアである、請求項1に記載の装置。
- 前記FFTeは、少なくとも64個のレジスタを有する、請求項1に記載の装置。
- 複素乗算器をさらに備え、前記少なくとも64個のレジスタのうちの56個のレジスタは、前記複素乗算器からの入力を受け取る、請求項5に記載の装置。
- 前記少なくとも64個のレジスタのうちの32個のレジスタは、前記メインメモリからの入力を受け取る、請求項5に記載の装置。
- 前記FFTeは、zポイントのマルチポイント入力を受け取るように構成され、zは、512の倍数である、請求項1に記載の装置。
- 前記FFTeは、さらに、前記計算された変換を出力するように構成されている、請求項1に記載の装置。
- 前記FFTeは、前記第1の入力を読み取った後に前記出力をxサイクル書き込むことを開始するように構成され、xは、8とパイプライン遅延を加えたものである、請求項9に記載の装置。
- 前記FFTeは、前記第1の入力を読み取った後に前記出力をyサイクル書き込むことを完了するように構成され、yは、16とパイプライン遅延を加えたものである、請求項9に記載の装置。
- 前記FFTeは、第1の組の入力を読み取るように構成された第1の組の加算器を含み、前記第1の入力は、前記第1の組の加算器による前記読取りに先立ってビット反転される、請求項1に記載の装置。
- メインメモリからのマルチポイント入力を受け取るように、
1つまたは複数のレジスタのうちの少なくとも1つに前記受け取られた入力を記憶するように、そして
無遅延パイプラインを使用して前記入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように、
構成された高速フーリエ変換エンジン(FFTe)。 - 前記FFTeは、さらに、ギャップレスパイプラインを使用して前記入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されている、請求項13に記載のFFTe。
- 前記FFTeは、さらに、基数8のバタフライコアを使用して高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されている、請求項13に記載のFFTe。
- 前記FFTeは、さらに、基数4のバタフライコアを使用して高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されている、請求項13に記載のFFTe。
- 前記FFTeは、さらに、少なくとも64個のレジスタに前記受け取られた入力を記憶するように構成されている、請求項13に記載のFFTe。
- 前記FFTeは、さらに、複素乗算器からの前記受け取られた入力を記憶するように構成され、前記少なくとも64個のレジスタのうちの56個のレジスタは、前記複素乗算器からの入力を受け取る、請求項17に記載のFFTe。
- 前記FFTeは、前記少なくとも64個のレジスタのうちの32個のレジスタにメインメモリからの前記受け取られた入力を記憶するように構成されている、請求項17に記載のFFTe。
- 前記FFTeは、さらに、zポイントのマルチポイント入力を受け取るように構成され、zは、512の倍数である、請求項13に記載のFFTe。
- 前記FFTeは、さらに、前記計算された変換を出力するように構成されている、請求項13に記載のFFTe。
- 前記FFTeは、さらに、前記第1の入力を読み取った後に、前記出力をxサイクル書き込むことを開始するように構成され、xは、8とパイプライン遅延を加えたものである、請求項21に記載のFFTe。
- 前記FFTeは、さらに、前記第1の入力を読み取った後に、前記出力をyサイクル書き込むことを完了するように構成され、yは、16とパイプライン遅延を加えたものである、請求項21に記載のFFTe。
- 前記FFTeは、第1の組の入力を読み取るように構成される第1の組の加算器を含み、前記第1の入力は、前記第1の組の加算器による前記読取りに先立ってビット反転される、請求項13に記載のFFTe。
- メモリを提供することと、
1つまたは複数のレジスタおよび無遅延パイプラインを有する高速フーリエ変換エンジン(FFTe)を提供することと、
前記FFTeを前記メインメモリからのマルチポイント入力を受け取るように構成することと、
前記1つまたは複数のレジスタのうちの少なくとも1つに前記受け取られた入力を記憶することと、
前記無遅延パイプラインを使用して前記入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算することと、
を備える方法。 - 前記FFTeを提供することは、ギャップレスパイプラインを提供することをさらに備える、請求項25に記載の方法。
- 前記FFTeを提供することは、基数8のバタフライコアを提供することを備える、請求項25に記載の方法。
- 前記FFTeを提供することは、基数4のバタフライコアを提供することを備える、請求項25に記載の方法。
- 前記FFTeを提供することは、少なくとも64個のレジスタを提供することを備える、請求項25に記載の方法。
- 前記FFTeを提供することは、複素乗算器を提供することをさらに備え、前記少なくとも64個のレジスタのうちの56個のレジスタは、前記複素乗算器からの入力を受け取る、請求項29に記載の方法。
- 前記FFTeを提供することは、前記メインメモリからの入力を受け取るように、前記少なくとも64個のレジスタのうちの32個のレジスタを提供することを備える、請求項29に記載の方法。
- マルチポイント入力を受け取るように前記FFTeを構成することは、zポイントのマルチポイント入力を受け取るように前記FFTeを構成することを備え、zは、512の倍数である、請求項25に記載の方法。
- 前記FFTeを構成することは、前記計算された変換を出力することをさらに備える、請求項25に記載の方法。
- 前記FFTeを構成することは、前記第1の入力を読み取った後に前記出力をxサイクル書き込むことを開始することを備え、xは、8とパイプライン遅延を加えたものである、請求項33に記載の方法。
- 前記FFTeを構成することは、前記第1の入力を読み取った後に前記出力をyサイクル書き込むことを完了することを備え、yは、16とパイプライン遅延を加えたものである、請求項33に記載の方法。
- 前記FFTeを構成することは、第1の組の入力を読み取るように構成される第1の組の加算器を含むことをさらに備え、前記第1の入力は、前記第1の組の加算器による前記読取りに先立ってビット反転される、請求項25に記載の方法。
- 第1のデータを記憶するための手段と、
前記第1のデータを記憶するための前記手段よりも高速に、第2のデータを記憶するための1つまたは複数の手段と、
前記第1のデータを記憶するための前記手段から、マルチポイント入力を受け取るための手段と、
第2のデータを記憶するための前記1つまたは複数の手段のうちの少なくとも1つに、前記受け取られた入力を記憶するための手段と、
無遅延パイプラインを使用して、前記入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するための手段と、
を備える処理システム。 - ギャップレスパイプラインを使用して、前記入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するための手段、
をさらに備える請求項37に記載の処理システム。 - 基数8のバタフライコアを使用して、前記データを処理するための手段、
をさらに備える請求項37に記載の処理システム。 - 基数4のバタフライコアを使用して、前記データを処理するための手段、
をさらに備える、請求項37に記載の処理システム。 - 第2のデータを記憶するための前記手段のうちの少なくとも64個に、前記受け取られた入力を記憶するための手段、
をさらに備える請求項37に記載の処理システム。 - 複素乗数を計算するための手段をさらに備え、第2のデータを記憶するための前記手段のうちの前記少なくとも64個のうちの56個は、複素乗数を計算するための前記手段からの入力を受け取る、請求項41に記載の処理システム。
- 第1のデータを記憶するための前記手段からの入力を受け取るための手段をさらに備え、前記手段のうちの32個は、第2のデータを記憶するための前記1つまたは複数の手段のうちの少なくとも1つに前記受け取られた入力を記憶するためのものである、請求項41に記載の処理システム。
- 前記第1のデータを記憶するための前記手段から512ポイントの入力を受け取るための手段、
をさらに備える請求項37に記載の処理システム。 - 前記計算された変換を出力するための手段、
をさらに備える請求項37に記載の処理システム。 - 無遅延パイプラインを使用して前記入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するための手段、をさらに備え、前記FFTeは、前記第1の入力を読み取った後に前記出力をxサイクル書き込むことを開始するように構成され、xは、8とパイプライン遅延を加えたものである、請求項45に記載の処理システム。
- 無遅延パイプラインを使用して前記入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するための手段、をさらに備え、前記FFTeは、前記第1の入力を読み取った後に前記出力をyサイクル書き込むことを完了するように構成され、yは、16とパイプライン遅延を加えたものである、請求項45に記載の処理システム。
- 無遅延パイプラインを使用して前記入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するための手段、をさらに備え、前記FFTeは、第1の組の入力を読み取るように構成される第1の組の加算器を含むように構成され、前記第1の入力は、前記第1の組の加算器による前記読取りに先立ってビット反転される、請求項37に記載の処理システム。
- I/FFTプロセッサがI/FFTを計算する方法を実行するための1組の命令、を含むコンピュータ可読媒体であって、前記命令は、
メインメモリからのマルチポイント入力を受け取るルーチンと、
1つまたは複数のレジスタのうちの少なくとも1つに前記受け取られた入力を記憶するルーチンと、
無遅延パイプラインを使用して前記入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するルーチンと、
を備える、
コンピュータ可読媒体。 - 前記FFTeは、さらに、ギャップレスパイプラインを使用して前記入力に対する高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されている、請求項49に記載のコンピュータ可読媒体。
- 前記FFTeは、さらに、基数8のバタフライコアを使用して高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されている、請求項49に記載のコンピュータ可読媒体。
- 前記FFTeは、さらに、基数4のバタフライコアを使用して高速フーリエ変換(FFT)と逆高速フーリエ変換(IFFT)のいずれかまたは両方を計算するように構成されている、請求項49に記載のコンピュータ可読媒体。
- 前記FFTeは、さらに、少なくとも64個のレジスタに前記受け取られた入力を記憶するように構成されている、請求項49に記載のコンピュータ可読媒体。
- 前記FFTeは、さらに、複素乗算器からの前記受け取られた入力を記憶するように構成され、前記少なくとも64個のレジスタのうちの56個のレジスタは、前記複素乗算器からの入力を受け取る、請求項53に記載のコンピュータ可読媒体。
- 前記FFTeは、さらに、前記少なくとも64個のレジスタのうちの32個のレジスタに、メインメモリからの前記受け取られた入力を記憶するように構成されている、請求項53に記載のコンピュータ可読媒体。
- 前記FFTeは、さらに、zポイントのマルチポイント入力を受け取るように構成され、zは、512の倍数である、請求項49に記載のコンピュータ可読媒体。
- 前記FFTeは、さらに、前記計算された変換を出力するように構成されている、請求項49に記載のコンピュータ可読媒体。
- 前記FFTeは、さらに、前記第1の入力を読み取った後に前記出力をxサイクル書き込むことを開始するように構成され、xは、8とパイプライン遅延を加えたものである、請求項57に記載のコンピュータ可読媒体。
- 前記FFTeは、さらに、前記第1の入力を読み取った後に前記出力をyサイクル書き込むことを完了するように構成され、yは、16とパイプライン遅延を加えたものである、請求項57に記載のコンピュータ可読媒体。
- 前記FFTeは、第1の組の入力を読み取るように構成された第1の組の加算器を含み、前記第1の入力は、前記第1の組の加算器による前記読取りに先立ってビット反転される、請求項49に記載のコンピュータ可読媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US78945306P | 2006-04-04 | 2006-04-04 | |
PCT/US2007/066002 WO2007115329A2 (en) | 2006-04-04 | 2007-04-04 | Pipeline fft architecture and method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009535678A true JP2009535678A (ja) | 2009-10-01 |
Family
ID=38512046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009504464A Pending JP2009535678A (ja) | 2006-04-04 | 2007-04-04 | パイプラインfftのアーキテクチャおよび方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20070239815A1 (ja) |
EP (1) | EP2002355A2 (ja) |
JP (1) | JP2009535678A (ja) |
KR (1) | KR20090018042A (ja) |
CN (1) | CN101553808A (ja) |
AR (1) | AR060367A1 (ja) |
TW (1) | TW200805087A (ja) |
WO (1) | WO2007115329A2 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8229014B2 (en) * | 2005-03-11 | 2012-07-24 | Qualcomm Incorporated | Fast fourier transform processing in an OFDM system |
US8266196B2 (en) * | 2005-03-11 | 2012-09-11 | Qualcomm Incorporated | Fast Fourier transform twiddle multiplication |
US7861060B1 (en) | 2005-12-15 | 2010-12-28 | Nvidia Corporation | Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior |
US7640284B1 (en) | 2006-06-15 | 2009-12-29 | Nvidia Corporation | Bit reversal methods for a parallel processor |
US7836116B1 (en) * | 2006-06-15 | 2010-11-16 | Nvidia Corporation | Fast fourier transforms and related transforms using cooperative thread arrays |
KR20090059315A (ko) * | 2007-12-06 | 2009-06-11 | 삼성전자주식회사 | 통신시스템에서 역 고속 퓨리에 변환 방법 및 장치 |
US20090245092A1 (en) * | 2008-03-28 | 2009-10-01 | Qualcomm Incorporated | Apparatus, processes, and articles of manufacture for fast fourier transformation and beacon searching |
US8218426B2 (en) * | 2008-03-28 | 2012-07-10 | Qualcomm Incorporated | Multiple stage fourier transform apparatus, processes, and articles of manufacture |
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 |
CN101630308B (zh) * | 2008-07-16 | 2013-04-17 | 财团法人交大思源基金会 | 以内存为基础的任意点数快速傅立叶转换器的设计与寻址方法 |
US20100030831A1 (en) * | 2008-08-04 | 2010-02-04 | L-3 Communications Integrated Systems, L.P. | Multi-fpga tree-based fft processor |
US20100082722A1 (en) * | 2008-09-26 | 2010-04-01 | Sinnokrot Mohanned O | Methods and Apparatuses for Detection and Estimation with Fast Fourier Transform (FFT) in Orthogonal Frequency Division Multiplexing (OFDM) Communication Systems |
DE102010002111A1 (de) * | 2009-09-29 | 2011-03-31 | Native Instruments Gmbh | Verfahren und Anordnung zur Verteilung der Rechenlast in Datenverarbeitungseinrichtungen bei einer Durchführung von blockbasierten Rechenvorschriften sowie ein entsprechendes Computerprogramm und ein entsprechendes computerlesbares Speichermedium |
CN102339271A (zh) * | 2010-07-15 | 2012-02-01 | 中国科学院微电子研究所 | 一种基8的快速傅立叶变换实现系统及方法 |
JP5763911B2 (ja) | 2010-12-07 | 2015-08-12 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | ルートi(√i)演算の保持を特徴とする基数8固定小数点FFT論理回路 |
CN102611667B (zh) * | 2011-01-25 | 2016-06-15 | 深圳市中兴微电子技术有限公司 | 随机接入检测fft/ifft处理方法及装置 |
US8787762B2 (en) * | 2011-02-22 | 2014-07-22 | Nec Laboratories America, Inc. | Optical-layer traffic grooming at an OFDM subcarrier level with photodetection conversion of an input optical OFDM to an electrical signal |
CN102810086A (zh) * | 2011-05-30 | 2012-12-05 | 中国科学院微电子研究所 | 快速傅立叶变换蝶型运算处理装置及数据处理方法 |
WO2013095547A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Apparatus and method of execution unit for calculating multiple rounds of a skein hashing algorithm |
US10097259B2 (en) | 2014-12-31 | 2018-10-09 | Hughes Network Systems, Llc | Satellite receiver doppler compensation using resampled satellite signals |
US11544214B2 (en) | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
US9940303B2 (en) * | 2015-07-10 | 2018-04-10 | Tempo Semiconductor, Inc. | Method and apparatus for decimation in frequency FFT butterfly |
US20180373676A1 (en) * | 2017-03-16 | 2018-12-27 | Jaber Technology Holdings Us Inc. | Apparatus and Methods of Providing an Efficient Radix-R Fast Fourier Transform |
CN109117454B (zh) * | 2017-06-23 | 2022-06-14 | 扬智科技股份有限公司 | 3780点快速傅立叶转换处理器及其运作方法 |
WO2021091335A1 (ko) | 2019-11-08 | 2021-05-14 | 한국전기연구원 | 고속 퓨리에 변환 방법 및 장치 |
CN113111300B (zh) * | 2020-01-13 | 2022-06-03 | 上海大学 | 具有优化资源消耗的定点fft实现系统 |
CN112328958B (zh) * | 2020-11-10 | 2024-06-21 | 河海大学 | 一种基于基-64的二维fft架构的优化数据重排方法 |
CN114238166B (zh) * | 2021-11-23 | 2024-06-11 | 西安空间无线电技术研究所 | 一种基于流水存储结构的子带映射实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11110370A (ja) * | 1997-01-22 | 1999-04-23 | Matsushita Electric Ind Co Ltd | 高速フーリエ変換装置および方法、可変ビットリバース回路、逆高速フーリエ変換装置および方法、並びにofdm受信および送信装置 |
JP2001202241A (ja) * | 1999-11-15 | 2001-07-27 | Texas Instr Inc <Ti> | 実行パケットが2以上の取出しパケットをスパンするマイクロプロセッサを備えるディジタル処理システム及び同システムの操作方法 |
JP2003178047A (ja) * | 2001-08-21 | 2003-06-27 | Koninkl Philips Electronics Nv | 離散変換を計算する装置 |
WO2005057423A2 (en) * | 2003-12-05 | 2005-06-23 | Qualcomm Incorporated | Fft architecture and method |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7333422B2 (en) * | 2003-09-12 | 2008-02-19 | Zarbana Digital Fund Llc | Optimized FFT/IFFT module |
US7164723B2 (en) * | 2002-06-27 | 2007-01-16 | Samsung Electronics Co., Ltd. | Modulation apparatus using mixed-radix fast fourier transform |
KR100481852B1 (ko) * | 2002-07-22 | 2005-04-11 | 삼성전자주식회사 | 고속 푸리에 변환 장치 |
GB2391966B (en) * | 2002-08-15 | 2005-08-31 | Zarlink Semiconductor Ltd | A method and system for performing a fast-fourier transform |
US7496618B2 (en) * | 2004-11-01 | 2009-02-24 | Metanoia Technologies, Inc. | System and method for a fast fourier transform architecture in a multicarrier transceiver |
US8229014B2 (en) * | 2005-03-11 | 2012-07-24 | Qualcomm Incorporated | Fast fourier transform processing in an OFDM system |
US8266196B2 (en) * | 2005-03-11 | 2012-09-11 | Qualcomm Incorporated | Fast Fourier transform twiddle multiplication |
TWI298448B (en) * | 2005-05-05 | 2008-07-01 | Ind Tech Res Inst | Memory-based fast fourier transformer (fft) |
-
2007
- 2007-04-03 US US11/696,111 patent/US20070239815A1/en not_active Abandoned
- 2007-04-04 AR ARP070101459A patent/AR060367A1/es unknown
- 2007-04-04 WO PCT/US2007/066002 patent/WO2007115329A2/en active Application Filing
- 2007-04-04 TW TW096112213A patent/TW200805087A/zh unknown
- 2007-04-04 CN CNA2007800206939A patent/CN101553808A/zh active Pending
- 2007-04-04 EP EP07760137A patent/EP2002355A2/en not_active Withdrawn
- 2007-04-04 KR KR1020087027019A patent/KR20090018042A/ko not_active Application Discontinuation
- 2007-04-04 JP JP2009504464A patent/JP2009535678A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11110370A (ja) * | 1997-01-22 | 1999-04-23 | Matsushita Electric Ind Co Ltd | 高速フーリエ変換装置および方法、可変ビットリバース回路、逆高速フーリエ変換装置および方法、並びにofdm受信および送信装置 |
JP2001202241A (ja) * | 1999-11-15 | 2001-07-27 | Texas Instr Inc <Ti> | 実行パケットが2以上の取出しパケットをスパンするマイクロプロセッサを備えるディジタル処理システム及び同システムの操作方法 |
JP2003178047A (ja) * | 2001-08-21 | 2003-06-27 | Koninkl Philips Electronics Nv | 離散変換を計算する装置 |
WO2005057423A2 (en) * | 2003-12-05 | 2005-06-23 | Qualcomm Incorporated | Fft architecture and method |
Also Published As
Publication number | Publication date |
---|---|
TW200805087A (en) | 2008-01-16 |
KR20090018042A (ko) | 2009-02-19 |
US20070239815A1 (en) | 2007-10-11 |
EP2002355A2 (en) | 2008-12-17 |
WO2007115329A2 (en) | 2007-10-11 |
WO2007115329A3 (en) | 2009-06-11 |
CN101553808A (zh) | 2009-10-07 |
AR060367A1 (es) | 2008-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009535678A (ja) | パイプラインfftのアーキテクチャおよび方法 | |
KR100923892B1 (ko) | 고속 푸리어 변환 트위들 승산 | |
KR100958231B1 (ko) | 직교 주파수 분할 다중 시스템에서의 고속 푸리에 변환처리 | |
He et al. | Designing pipeline FFT processor for OFDM (de) modulation | |
US7702712B2 (en) | FFT architecture and method | |
CN101258488A (zh) | 在ofdm系统中的快速傅里叶变换处理 | |
Lo et al. | Design of an efficient FFT processor for DAB system | |
Lin et al. | Low-cost FFT processor for DVB-T2 applications | |
US8484273B1 (en) | Processing system and method for transform | |
Lee et al. | Modified sdf architecture for mixed dif/dit fft | |
US7675847B2 (en) | Hardware implementation of a programmable FFT based on a half length FFT core | |
Kirubanandasarathy et al. | VLSI Design of Mixed radix FFT Processor for MIMO OFDM in wireless communications | |
Heo et al. | Application-specific DSP architecture for fast Fourier transform | |
Aboelaze | An FPGA based low power multiplier for FFT in OFDM systems using precomputations | |
Camarda et al. | Towards a reconfigurable FFT: application to digital communication systems | |
Jung et al. | Low-complexity multi-mode memory-based FFT processor for DVB-T2 applications | |
Kirubanandasarathy et al. | Design of MOD-R2MDC FFT for MIMO OFDM in wireless telecommunication system | |
Jung et al. | Low-cost variable-length FFT processor for DVB-T/H applications | |
Oli et al. | FPGA Implementation of Baseband OFDM Transmitter and Receiver Using Modified IFFT/FFT to Reduce Latency | |
Camarda et al. | A Reconfigurable Fast Fourier Transform Implementation for Multi-standards Applications | |
Lavanya et al. | A Modified Low Power FFT/IFFT Processor for OFDM Applications. | |
Patel Piyusha et al. | Design Control Unit & ROM Unit of Low Power FFT Processor for OFDM System | |
Revanna | Design and Implementation of Scalable FFT Processor for Wireless Applications | |
Wang et al. | ROM reduction for OFDM system using time-stealing strategy | |
Deshmukh et al. | Efficient Implementation of 64-Point FFT/IFFT for OFDM on FPGA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110222 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110719 |