JP6256348B2 - 高速フーリエ変換回路、高速フーリエ変換処理方法及び高速フーリエ変換処理プログラム - Google Patents

高速フーリエ変換回路、高速フーリエ変換処理方法及び高速フーリエ変換処理プログラム Download PDF

Info

Publication number
JP6256348B2
JP6256348B2 JP2014548457A JP2014548457A JP6256348B2 JP 6256348 B2 JP6256348 B2 JP 6256348B2 JP 2014548457 A JP2014548457 A JP 2014548457A JP 2014548457 A JP2014548457 A JP 2014548457A JP 6256348 B2 JP6256348 B2 JP 6256348B2
Authority
JP
Japan
Prior art keywords
circuit
butterfly
data
processing
rearrangement
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.)
Active
Application number
JP2014548457A
Other languages
English (en)
Other versions
JPWO2014080617A1 (ja
Inventor
充文 柴山
充文 柴山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2014080617A1 publication Critical patent/JPWO2014080617A1/ja
Application granted granted Critical
Publication of JP6256348B2 publication Critical patent/JP6256348B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

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

Description

本発明は、デジタル信号処理における演算処理回路に関し、特に高速フーリエ変換回路に関する。
無線通信や有線通信における信号伝送中の波形歪みを補償する技術として、周波数領域等化(FDE)技術が知られている(FDE:Frequency domain equalization)。周波数領域等化(FDE)においては、デジタル信号処理において重要な処理の1つである高速フーリエ変換(FFT)処理が用いられている(FFT:Fast Fourier Transform)。
周波数領域等化(FDE)は、高速フーリエ変換(FFT)により時間領域上の信号データを周波数領域上のデータに変換した後に、等化のためのフィルタ処理を実施した上で、逆高速フーリエ変換(IFFT)により時間領域上の信号データに再変換する(IFFT:Inverse Fast Fourier Transform)。その結果、周波数領域等化(FDE)によって信号の波形歪みを補償することができる。
効率的なFFT/IFFT処理方式としては、Cooley−Tukeyによるバタフライ演算が知られている(非特許文献1)。しかしながら、ポイント数が大きなCooley−TukeyによるFFT/IFFTは回路が複雑になるため、Prime Factor法により2つの小さなFFT/IFFTに分解して処理を行うことが一般的である(非特許文献2)。しかしながら、非特許文献2のような処理の全てを回路で実現した場合、その回路規模が膨大になる。そのため、必要な処理性能に応じて必要な処理の一部分のみを回路で実現し、その回路を繰り返し使用することによってFFT処理を実現する。
また、FFT処理を実現する回路方式としては、パイプライン回路方式によるものが知られている。パイプライン回路方式は、FFT処理を構成する複数の内部処理をそれぞれパイプライン状に処理していくため、高いスループット性能(時間当たりの処理性能)を実現できるという特徴がある。
特許文献1には、入力されたデータに対してFFT処理を実行するフーリエ変換機構211を備えたフーリエ変換処理装置210について開示されている。図13に示した特許文献1のフーリエ変換機構211は、第一のバタフライ演算回路220と、複素乗算機221と、遅延要素222,224と、第五のコミュテータ223と、第二のバタフライ演算回路225と、を含む。
特許文献1のフーリエ変換処理装置210は、入力されたデータの配列を並び替える第一及び第二のコミュテータ215,216と、第一及び第二のコミュテータ215,216それぞれによって並び替えられたデータを格納する第一及び第二のメモリ213,214と、をさらに備えている。また、フーリエ変換処理装置210は、第一及び第二のメモリ213,214にそれぞれ格納されたデータを並び替える第二及び第四のコミュテータ217,218をさらに備えている。
特許文献1のフーリエ変換処理装置210によれば、第一のバタフライ演算回路220に入力するデータの配列を第一及び第二のコミュテータ215,216によって並び換える。そのため、特許文献1以前においては第一のバタフライ演算回路220の前に設けるコミュテータの前後に必要であった遅延要素を、特許文献1のフーリエ変換処理装置210においては設ける必要がなくなる。その結果、特許文献1のフーリエ変換処理装置210によれば、フーリエ変換処理装置を小型化でき、消費電力を抑制することができる。
また、FFT処理に対して、その演算精度や処理スループットなどの要求性能が様々に変化する場合がある。例えば、データ通信における伝送路状況に応じて変調方式を変更する場合などである。
フィルタ処理などのデジタル信号処理に要求される処理スループットは、シンボルレートに比例する。また、フィルタ処理などのデジタル信号処理に要求される演算精度は、シンボル間距離が小さくなるほど、より高い精度の演算が必要となる。
一般に、デジタル信号処理回路の演算精度は、主にデータの表現形式及びデータのビット幅で決定される。しかしながら、どのような表現形式においても、演算精度を高くするためにはデータのビット幅を大きくする必要がある。そのため、回路規模や消費電力を小さくするには、要求される演算精度に応じて、データのビット幅を必要十分な値に最適化する必要がある。
特開2012−89053号公報
J.W.Cooley、J.W.Tukey、"An Algorithm for the Machine Calculation of Complex Fourier Series、" Mathematics of Computation、Vol.19、No.90(1965)、pp.297−301 D.P.Kolba、"A Prime Factor FFT Algorithm Using High−Speed Convolution、"IEEE Trans. on Acoustics、 Speech and Signal Processing、Vol29、No.4(1981)
変調方式によって異なる性能要求に応じて、処理スループットや演算精度に関してそれぞれ個別に最適化した別のFFT回路で処理すれば、それぞれの変調方式に対して消費電力を最小化することが可能である。
しかしながら、特許文献1のフーリエ変換処理装置のような回路構成においては、それぞれの変調方式における性能要求に対して最適化した複数のFFT回路が必要になることから、回路規模が膨大になるという問題がある。
一方、異なる変調方式に対する全ての性能要求を満足する回路を1つのFFT回路で実現させた場合、個別に最適化した別のFFT回路を備えるよりも回路規模を小さくすることができるものの、消費電力が大きくなるという問題がある。
本発明の目的は、処理スループットや演算精度といった性能要求の異なる変調方式が混在したデジタル信号処理におけるFFT処理において、回路規模と消費電力とを小さくすることが可能な高速フーリエ変換処理回路、高速フーリエ変換処理方法及びプログラムを提供することである。
本発明の高速フーリエ変換回路は、互いに異なる演算ビット幅に対応したバタフライ演算を行なう第1及び第2のバタフライ回路を備えた高速フーリエ変換回路であって、第1及び第2のバタフライ回路の両方で演算を実行する第1の動作モードと、第1または第2のバタフライ回路のいずれか一方で演算を実行する第2の動作モードと、を含む複数の動作モードのいずれかに対応して第1及び第2のバタフライ回路を選択制御する制御手段を備える。
本発明の高速フーリエ変換回路は、時間領域のデータをフーリエ変換して周波数領域の信号に変換する高速フーリエ変換回路であって、入力された時間領域のデータを高速フーリエ変換処理のアルゴリズム上のデータ依存に基づいて並べ替える第1の並べ替え回路と、第1の並べ替え回路から入力されたデータに対して第1のバタフライ演算を行う第1のバタフライ演算回路と、入力されたデータを高速フーリエ変換処理のアルゴリズム上のデータ依存に基づいて並べ替える第2の並べ替え回路と、第2の並べ替え回路から入力されたデータに対して複素平面上の複素回転を処理するひねり乗算回路と、入力された信号に対して第1バタフライ演算とは異なる演算ビット幅に対応する第2のバタフライ演算を行う第2のバタフライ回路と、第2のバタフライ回路から入力されたデータを高速フーリエ変換処理のアルゴリズム上のデータ依存に基づいて並べ替えて周波数領域の信号を出力する第3の並べ替え回路と、第1または第2のバタフライ回路から入力したデータのうち一方を選択して第2の並べ替え回路に出力する第1の選択回路と、ひねり乗算回路または第1の並べ替え回路から入力したデータのうち一方を選択して第2のバタフライ回路に出力する第2の選択回路と、を備え、第1及び第2の選択回路は、上位装置の動作設定信号に基づいて、出力する信号を選択し、第1及び第2のバタフライ回路の両方で演算を実行する第1の動作モードと、第1または第2のバタフライ回路のいずれか一方で演算を実行する第2の動作モードと、を含む複数の動作モードのいずれかに対応して第1及び第2のバタフライ回路を選択制御する。
本発明の高速フーリエ変換処理方法は、互いに異なる演算ビット幅で動作してバタフライ演算を行なう第1及び第2のバタフライ回路を備えた高速フーリエ変換回路において、第1及び第2のバタフライ回路の両方で演算を実行する第1の動作モードと、第1または第2のバタフライ回路のいずれか一方で演算を実行する第2の動作モードと、を含む複数の動作モードのいずれかに対応して第1及び第2のバタフライ回路を選択制御する。
本発明のプログラムは、互いに異なる演算ビット幅で動作してバタフライ演算を行なう第1及び第2のバタフライ回路を備えた高速フーリエ変換回路において、第1及び第2のバタフライ回路の両方で演算を実行する第1の動作モードと、第1または第2のバタフライ回路のいずれか一方で演算を実行する第2の動作モードと、を含む複数の動作モードのいずれかに対応して第1及び第2のバタフライ回路を選択制御する処理をコンピュータに実行させる。
本発明の高速フーリエ変換処理回路によれば、処理スループットや演算精度といった性能要求の異なる変調方式が混在したデジタル信号処理における高速フーリエ変換処理において、回路規模と消費電力とを小さくすることが可能となる。
本発明の実施形態に係るFFT回路の構成を示すブロック図である。 本発明の実施形態に係るFFT回路の動作を示すブロック図である。 本発明の実施形態に係るFFT回路の動作を示すタイミング図である。 本発明の実施形態に係るFFT回路の動作を示すブロック図である。 本発明の実施形態に係るFFT回路の動作を示すタイミング図である。 本発明の実施形態に係るFFT回路の動作を示す説明図である。 FFT回路の構成例を示すブロック図である。 バタフライ処理に関するデータフロー図である。 逐次順序を示すテーブルである。 ビットリバース順序を示すテーブルである。 FFT回路の動作例を示すタイミング図である。 データ通信における変調方式の例を示す説明図である。 特許文献1に係るフーリエ変換処理装置の構成を示すブロック図である。
以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
(パイプライン処理)
本発明の実施形態を説明する前に、図7〜11を用いてFFT処理を用いたパイプライン処理について説明する。
(構成)
まず、図7を参照して、パイプライン回路方式によるFFT回路の構成例を説明する。図7において、FFT回路100は、時間領域のデータx(n)を入力し、FFT処理によりフーリエ変換した周波数領域の信号X(k)を生成して出力する回路である(n=0、1、・・・、N−1;k=0、1、・・・、N−1)。なお、NはFFTブロックサイズをあらわす正整数である。
図8は、64ポイントFFT/IFFTをPrime Factor法を利用して2段階の基数8のバタフライ処理112に分解したデータフロー図である。図8においては、時間領域のデータx(n)を入力し、FFT処理によりフーリエ変換した周波数領域の信号X(k)を出力する(k=0、1、・・・、63)。ただし、一部のデータフローの図示は省略している。
このデータフロー図の全てを回路で実現した場合、その回路規模が膨大になる。そのため、必要な処理性能に応じて、一部分を回路で実現し、その回路を繰り返し使用することで、FFT処理を実現する方法を用いることができる。
例えば、図8において、8データ並列でFFT処理を行うFFT回路100を物理的な回路として実装した場合、合計8回の繰り返し処理により64ポイントFFT/IFFT処理を実現することができる。具体的には、1回目に、部分データフロー110aに当たる処理を行い、2回目に、部分データフロー110bに当たる処理を行う。同様に、3〜7回目の処理を実行し、8回目に、部分データフロー110hに当たる処理を行う。このようにして、64ポイントFFT/IFFT処理を実現することができる。
具体的には、図8の例において、FFT回路100は、8データ並列で64ポイントFFT処理を行うとすると、時間領域のデータx(n)を入力し、FFT処理によりフーリエ変換した周波数領域の信号X(k)を生成して出力する(k=0、1、・・・、63)。このとき、入力データx(n)は、8データずつ8サイクルの期間に、図9の逐次順序テーブル80に示す順序で64データが入力されるとする。なお、図9の逐次順序テーブル80中の数値は、x(n)の括弧内の数値nを示す。具体的には、1サイクル目に、データ組Aを構成するx(0)、x(1)、・・・、x(7)の8データが入力される。2サイクル目に、データ組Bを構成するx(8)、x(9)、・・・、x(15)の8データが入力される。以降、3サイクル目から8サイクル目まで同様にして、データ組C〜Hを構成するデータが入力される。
同様に、出力データX(k)は、8データずつ8サイクルの期間に、図9の逐次順序テーブル80に示す順序で64データを出力する。なお、図9の逐次順序テーブル80中の数値は、X(k)の括弧内の数値kを示す。具体的には、1サイクル目に、データ組Aを構成するX(0)、X(1)、・・・、X(7)の8データを出力する。2サイクル目に、データ組Bを構成するX(8)、X(9)、・・・、X(15)の8データを出力する。以降、3サイクル目から8サイクル目まで同様にして、データ組C〜Hを構成するデータを出力する。
図7のFFT回路100は、第1データ並べ替え処理回路101、第1バタフライ演算処理回路102、第2データ並べ替え処理回路103、ひねり乗算処理回路104、第2バタフライ演算処理回路105、第3データ並べ替え処理回路106を備えている。FFT回路100は、前述の各構成要素において、第1のデータ並べ替え処理と、第1のバタフライ演算処理と、第2のデータ並べ替え処理と、ひねり乗算処理と、第2のバタフライ演算処理と、第3のデータ並べ替え処理とをパイプライン状に処理する。
第1データ並べ替え処理回路101、第2データ並べ替え処理回路103及び第3データ並べ替え処理回路106は、データ並べ替えのためのバッファ回路である。第1データ並べ替え処理回路101、第2データ並べ替え処理回路103及び第3データ並べ替え処理回路106は、バタフライ演算処理回路の前後で、FFT処理のアルゴリズム上のデータ依存に基づいたデータシーケンスの並べ替えを行う。
第1バタフライ演算処理回路102及び第2バタフライ演算処理回路105は、FFT処理を構成するバタフライ演算処理を行う。具体的には、第1データ並べ替え処理回路101は、図9の逐次順序テーブル80に示す入力データx(n)の入力順序を、図10のビットリバース順序テーブル90に示す順序に並べ替える。なお、これ以降、図9の逐次順序テーブル80に示す入力データx(n)の入力順序を逐次順序と表記し、図10のビットリバース順序テーブル90に示す順序をビットリバース順序と表記する。
図10のビットリバース順序テーブル90に示すビットリバース順序は、図8に示したデータフロー図における1段目(左側)の基数8のバタフライ処理112への入力データ組に対応する。具体的には、まず、1サイクル目に、データ組Aを構成するx(0)、x(8)、・・・、x(56)の8データを入力する。次に、2サイクル目に、データ組Bを構成するx(1)、x(9)、・・・、x(57)の8データを入力する。以降、3サイクル目から8サイクル目まで同様にして、データ組C〜Hを構成するデータを入力する。
第1のバタフライ演算処理回路102は、図8のデータフロー図における1段目(左側)の基数8のバタフライ演算処理112を実行するバタフライ回路である。第1のバタフライ演算処理回路102は、バタフライ演算処理結果を、データy(n)として、図9の逐次順序で出力する(n=0、1、・・・、63)。
第2のデータ並べ替え処理回路103は、第1のバタフライ演算処理回路102が逐次順序(図9)で出力するデータy[n]を、第2のバタフライ演算処理回路105に入力するビットリバース順序(図10)に並べ替えを行う。第2のデータ並べ替え処理回路103は、図8においては、データ並べ替え処理111に対応する。
ひねり乗算処理回路104は、第1のバタフライ演算処理後にFFT演算における複素平面上の複素回転を処理する。ひねり乗算処理回路104は、図8においては、ひねり乗算処理113に対応する。
第2のバタフライ演算処理回路105は、図8のデータフロー図における2段目(右側)の基数8のバタフライ処理112を処理するバタフライ回路である。第2のバタフライ演算処理回路105は、図10のビットリバース順序で入力されるひねり乗算処理後のデータy’(n)に対してバタフライ演算処理を行い、その結果X(k)を、図10のビットリバース順序で出力する(n=0、1、・・・、63)。
第3のデータ並べ替え処理回路106は、第2のバタフライ演算処理回路105が図10のビットリバース順序で出力するデータX(k)を、FFT回路100がFFT処理結果として出力する順序である図9の逐次順序に並べ替えを行う。
(動作)
次に、図11を参照して、FFT回路100の動作例を説明する。図11は、FFT回路100の動作を示すタイミング図である。図11では、FFT処理の処理単位であるFFTブロックの例として、FFTブロックF1、FFTブロックF2及びFFTブロックF3に対して時間T1〜T6において実行する処理を図示している。このF1〜F3のFFTブロックは、入力する時間領域の信号x(n)をFFTブロックの大きさごとに分割したデータブロックに相当する。
(内部処理)
図11には、FFT処理を(1)〜(9)の内部処理に分割して図示している。
(1)並べ替え1(write)の処理は、第1データ並べ替え処理回路101に対するデータの書き込み処理である。
(2)並べ替え1(read)の処理は、第1データ並べ替え処理回路101によって並べ替えられたデータの読み出し処理である。
(3)バタフライ演算1の処理は、第1バタフライ演算処理回路102による第1のバタフライ演算処理である。
(4)並べ替え2(write)の処理は、第2データ並べ替え処理回路103に対するデータの書き込み処理である。
(5)並べ替え2(read)の処理は、第2データ並べ替え処理回路103によって並べ替えられたデータの読み出し処理である。
(6)ひねり乗算の処理は、ひねり乗算処理回路104によるひねり乗算処理である。
(7)バタフライ演算2の処理は、第2バタフライ演算処理回路105による第2のバタフライ演算処理である。
(8)並べ替え3(write)の処理は、第3データ並べ替え処理回路106に対するデータの書き込み処理である。
(9)並べ替え3(read)の処理は、第3データ並べ替え処理回路106によって並べ替えられたデータの読み出し処理である。
以上が、図7に示したFFT回路100におけるパイプライン処理の内部処理である。
以下において、各処理期間において実行される処理について詳細に説明する。以下の説明においては、図11のタイミング図を参照する。
(T1)
時間T1の処理期間において実行される処理について説明する。
FFT回路100(図7)は、FFTブロックF1を構成する入力データx(n)を第1データ並べ替え処理回路101に入力する。第1データ並べ替え処理回路101は、このFFTブロックF1に対する並べ替え1(write)の処理を行う(F1(M1W))。
(T2)
時間T2の処理期間において実行される処理について説明する。
FFT回路100は、FFTブロックF2を構成する入力データx(n)を第1データ並べ替え処理回路101に入力する。第1データ並べ替え処理回路101は、このFFTブロックF2に対して並べ替え1(write)の処理を行う(F2(M1W))。
さらに、第1データ並べ替え処理回路101は、T1で処理されたFFTブロックF1に対して並べ替え1(read)の処理を行う(F1(M1R))。このとき、第1データ並べ替え処理回路101は、並べ替え1(write)の処理におけるデータの書き込み順序とは異なる順序で、並べ替え1(read)の処理におけるデータの読み出しを行う。すなわち、第1データ並べ替え処理回路101は、FFT処理のアルゴリズム上のデータ依存に基づいたデータシーケンスの並べ替えを行うことになる。
さらに、第1バタフライ演算処理回路102は、並べ替え1(read)による並べ替え処理後のFFTブロックF1に対して、バタフライ演算1の処理を行う(F1(B1))。
続けて、第2データ並べ替え処理回路103は、バタフライ演算1の処理後のFFTブロックF1に対して並べ替え2(write)の処理を行う(F1(M2W))。
(T3)
以降同様にして、時間T3の処理期間において実行される処理について説明する。
FFT回路100は、第1データ並べ替え処理回路101にFFTブロックF3を構成する入力データx(n)を入力する。第1データ並べ替え処理回路101は、このFFTブロックF3に対して並べ替え1(write)の処理を行う(F3(M1W))。
さらに、第1データ並べ替え処理回路101は、FFTブロックF2に対して並べ替え1(read)の処理を行う(F2(M1R))。第1バタフライ演算処理回路102は、並べ替え1(read)の処理後のFFTブロックF2に対してバタフライ演算1の処理を行う(F2(B1))。第2データ並べ替え処理回路103は、バタフライ演算1の処理後のFFTブロックF2に対して並べ替え2(write)の処理を続けて行う(F2(M2W))。
さらに、第2データ並べ替え処理回路103は、FFTブロックF1に対して並べ替え2(read)の処理を行う(F1(M2R))。ひねり演算処理回路104は、並べ替え2(read)の処理後のFFTブロックF1に対してひねり乗算の処理を続けて行う(F1(TW))。第2バタフライ演算処理回路105は、ひねり乗算の処理後のFFTブロックF1に対してバタフライ演算2の処理を行う(F1(B2))。第3データ並べ替え処理回路106は、バタフライ演算2の処理後のデータに対して並べ替え3(write)の処理を続けて行う(F1(M3W))。
(T4)
時間T4の処理期間において実行される処理について説明する。
第1データ並べ替え処理回路101は、FFTブロックF3に対して並べ替え1(read)の処理(F3(M1R))を行う。第1バタフライ演算処理回路102は、並べ替え1(read)の処理後のFFTブロックF3に対してバタフライ演算1の処理を行う(F3(B1))。第2データ並べ替え処理回路103は、FFTブロックF3に対して並べ替え2(write)の処理を続けて行う(F3(M2W))。
さらに、第2データ並べ替え処理回路103は、FFTブロックF2に対して並べ替え2(read)の処理を行う(F2(M2R))。ひねり演算処理回路104は、並べ替え2(read)の処理後のFFTブロックF2に対してひねり乗算の処理を行う(F2(TW))。続けて、第2バタフライ演算処理回路105は、ひねり乗算の処理後のFFTブロックF2に対してバタフライ演算2の処理を行う(F2(B2))。さらに、第3データ並べ替え処理回路106は、バタフライ演算2の処理後のFFTブロックF2に対して並べ替え3(write)の処理(F2(M3W))を続けて行う。
さらに、第3データ並べ替え処理回路106は、FFTブロックF1に対して並べ替え3(read)の処理を行う(F1(M3R))。FFTブロックF1に対するFFT処理が完了すると、FFT回路100は、そのデータを周波数領域のデータX(k)(F1)として出力する。
(T5)
時間T5の処理期間において実行される処理について説明する。
第2データ並べ替え処理回路103は、FFTブロックF3に対して並べ替え2(read)の処理を行う(F3(M2R))。ひねり乗算処理回路104は、並べ替え2(read)の処理後のFFTブロックF3に対してひねり乗算の処理を行う(F3(TW))。第2バタフライ演算処理回路105は、ひねり乗算の処理後のFFTブロックF3に対してバタフライ演算2の処理を行う(F3(B2))。第3データ並べ替え処理回路106は、バタフライ演算2の処理後のFFTブロックF3に対して並べ替え3(write)の処理(図11のF3(M3W))を行う。
さらに、第3データ並べ替え処理回路106は、FFTブロックF2に対して並べ替え3(read)の処理を行う(F2(M3R))。ここで、FFTブロックF2に対するFFT処理が完了すると、FFT回路100は、そのデータを周波数領域のデータX(k)(F2)として出力する。
(T6)
時間T6の処理期間において実行される処理について説明する。
第3データ並べ替え処理回路106は、FFTブロックF3に対して並べ替え3(read)の処理を行う(F3(M3R))。ここで、FFTブロックF3に対するFFT処理が完了すると、FFT回路100は、そのデータを周波数領域のデータX(k)(F3)として出力する。
以上、FFTブロックF1〜F3に対する処理についてのみ説明したが、FFTブロックF3より後のFFTブロックについても同様である。
以上のような処理によって、FFT回路100は、複数のFFTブロックをパイプライン状に処理することで、入力データを連続的に処理し、高い処理スループット性能を達成する。
(変調方式)
ここで、変調方式の例として、QPSK、16QAM、256QAMについて図12を用いて説明する(QPSK:Quadrature Phase Shift Keying、16QAM:16 Quadrature Amplitude Modulation、256QAM:256 Quadrature Amplitude Modulation)。
QPSK方式は、1シンボルに4値を割り当てるため、1シンボル当たり2ビットの情報を伝送することができる。16QAM方式は、1シンボルに16値を割り当てるため、1シンボル当たり4ビットの情報を伝送することができる。256QAM方式は、1シンボルに256値を割り当てるため、1シンボル当り8ビットの情報を伝送することができる。
すなわち、QPSK方式に対して16QAM方式は、1シンボル当たり2倍の情報を伝送することができるため、1/2のシンボルレートで同じ伝送速度を実現することができる。同様に、16QAM方式に対して256QAM方式は、1シンボル当たり2倍の情報を伝送することができるため、1/2のシンボルレートで同じ伝送速度を実現することができる。
フィルタ処理などのデジタル信号処理に要求される処理スループットは、シンボルレートに比例する。そのため、同じ伝送速度を実現する場合において、FFT処理に要求される処理スループットは、QPSK方式を1とすると、16QAM方式は1/2、256QAM方式は1/4となる。
一方、QPSK方式よりも16QAM方式の方が、1シンボルに対して多値を割り当てるため、QPSK方式におけるシンボル間の距離(D1)よりも、16QAM方式におけるシンボル間距離(D2)は小さくなる(D1>D2)。同様に、16QAM方式におけるシンボル間距離(D2)よりも256QAM方式におけるシンボル間距離(D3)は、より多値を割り当てる分だけ小さくなる(D2>D3)。
フィルタ処理などのデジタル信号処理に要求される演算精度は、シンボル間距離が小さくなるほど、より高い精度の演算が必要となる。そのため、FFT処理に要求される演算精度も、QPSK方式よりも16QAM方式がより高い演算精度が要求され、256QAM方式はさらに高い演算精度が要求される。
デジタル信号処理回路の演算精度は、主に、データの表現形式及びデータのビット幅で決定される。
デジタル信号処理におけるデータの表現形式としては、浮動小数点形式や固定小数点方式、ブロック浮動小数点方式が、主に用いられている。
浮動小数点形式は、扱う信号データの値の範囲が広い場合でも高い精度で演算できるという利点があるが、複雑な回路が必要になるため、回路規模や消費電力が大きいという問題がある。
固定小数点形式は、回路が単純で、回路規模や消費電力が小さいという利点があるが、扱う信号データの値の範囲が広い場合に演算精度が低下するという問題がある。
一方、浮動小数点形式と固定小数点形式の双方の利点を兼ね備えた演算方法として、ブロック浮動小数点形式がある。ブロック浮動小数点形式による演算では、複数の信号データを1つのブロックとしてまとめ、各ブロック単位で共通の指数をもつように、ブロック全体で正規化する。
いずれの表現形式においても、演算精度を高くするにはデータのビット幅を大きくする必要がある。そのため、回路規模や消費電力を小さくするには、要求される演算精度に応じて、データのビット幅を必要十分な値に最適化する必要がある。
ここで、複数の変調方式に対して、FFT回路の構成方法を最適化することによって、回路規模や消費電力を低減することを考える。例えば、QPSK方式及び16QAM方式に対応する場合、QPSK方式に対しては、16QAM方式よりも高い処理スループットと低い演算精度が要求される。一方、16QAM方式に対しては、QPSK方式よりも低い処理スループット・高い演算精度が要求される。すなわち、データビットの幅を大きくすると演算精度は高くなるものの、処理スループットが低くなる。
以上が変調方式についての説明である。
以下において、本発明の実施形態に係るFFT回路について図面を参照しながら説明する。
(実施形態)
(構成)
図1は、本発明の第1の実施形態に係るFFT回路10の構成例を示すブロック図である。
図1のFFT回路10は、パイプライン回路方式によるFFT回路であり、時間領域のデータx(n)を入力し、FFT処理によりフーリエ変換した周波数領域の信号X(k)を生成して出力する。ここで、NはFFTブロックサイズをあらわす正整数である(n=0、1、・・・、N−1、k=0、1、・・・、N−1)。
FFT回路10は、第1データ並べ替え処理回路11と、第1バタフライ演算処理回路12と、第2データ並べ替え処理回路13と、ひねり乗算処理回路14と、第2バタフライ演算処理回路15と、第3データ並べ替え処理回路16とを備えている。さらに、FFT回路10は、第1データ選択回路21と、第2データ選択回路22とを備えている。なお、図7と同じ名称の構成要素は、それらの構成要素と同様の処理を行う。
第1データ並べ替え処理回路11、第2データ並べ替え処理回路13及び第3データ並べ替え処理回路16は、データ並べ替えのためのバッファ回路である。第1データ並べ替え処理回路11、第2データ並べ替え処理回路13及び第3データ並べ替え処理回路16は、バタフライ演算処理回路の前後で、FFT処理のアルゴリズム上のデータ依存に基づいたデータシーケンスの並べ替えを行う。
第1バタフライ演算処理回路12及び第2バタフライ演算処理回路15は、FFT処理を構成するバタフライ演算処理を行う。
ひねり乗算処理回路14は、第1のバタフライ演算処理後にFFT演算における複素平面上の複素回転を処理する。
第1データ選択回路21及び第2データ選択回路22は、CPU(Central Processing Unit)などの上位回路(図示せず)から与えられる動作設定信号31を参照して、データの選択処理を行う。なお、第1及び第2データ選択回路21,22は、後述する動作モード1及び2を含む複数の動作モードのいずれかに対応して第1及び第2バタフライ演算処理回路12,15を選択制御する制御手段に含まれる。
具体的には、第1データ選択回路21は、動作設定信号31を参照して、入力する第1データ信号32または第4データ信号35のいずれか1つを選択して、第2データ並べ替え処理回路13に出力する。
また、第2データ選択回路22は、動作設定信号31を参照して、入力する第2データ信号33または第3データ信号34のいずれか1つを選択して、第2バタフライ演算処理回路15に出力する。
動作設定信号31は、FFT回路10の動作モードを設定する信号である。動作設定信号31は、具体的には、低演算精度・高処理スループットで動作するモードである動作モード1、または、高演算精度・低処理スループットで動作するモードである動作モード2、のいずれか1つの動作モードを設定する信号である。
CPUなどの上位回路(図示せず)は、例えば、変調方式に応じて動作設定信号31の値を設定する。
具体的には、QPSK方式などのように低い演算精度・高い処理スループットのFFT処理が必要な場合、上位回路は動作モード1を指示する値を動作設定信号31に設定する。
また、16QAM方式などのように高い演算精度・低い処理スループットのFFT処理が必要な場合、上位回路は動作モード2を指示する値を動作設定信号31に設定する。
第1バタフライ演算処理回路12の演算ビット幅は、動作モード1において要求される低い演算精度を実現するのに必要十分なビット幅であるSビット幅の回路で実現されている。第1バタフライ演算処理回路12では、Sビット幅に対応した第1のバタフライ演算が実行される。なお、Sビット幅におけるSは、1以上の整数である。
一方、第2バタフライ演算処理回路15の演算ビット幅は、動作モード2において要求される高い演算精度を実現するのに必要十分なビット幅であるLビット幅の回路で実現されている。第2バタフライ演算処理回路15では、Lビット幅に対応した第2のバタフライ演算が実行される。なお、Lビット幅におけるLは、1以上の整数である。また、SとLは異なる整数であり、Lの方がSよりも大きいものとする。
第2バタフライ演算処理回路15のビット幅Lよりも第1バタフライ演算処理回路12のビット幅Sの方が小さい。そのため、第2バタフライ演算処理回路15よりも第1バタフライ演算処理回路12の方が、回路規模や消費電力を小さくすることができる。
図7に示したようなFFT回路100は常に同一のビット幅の回路で動作する。図7のようなFFT回路100をビット幅Lのみの回路構成とした場合、常に高い演算精度で計算を実行するため、QPSK方式などの低い演算精度で十分な場合には余分な消費電力が生じる。また、例えば、図7のようなFFT回路100をビット幅Sのみの回路構成とした場合、16QAM方式などに要求される高い演算精度を実現することができない。
それに対し、本発明の実施形態のFFT回路10では、高い演算精度が要求されない場合、ビット幅の小さなビット幅Sとビット幅Lの回路の両方を使用することによって消費電力を低下させることができる。また、高い演算精度が要求される場合は、一つのビット幅Lの回路を効率的に使用することによって高い演算精度を実現できる。
(動作)
以下、図1に示すFFT回路10の動作について、図2〜5を参照して説明する。
(動作モード1)
図2は、動作モード1における図1に示すFFT回路10の動作状態を示すブロック図である。
図2において、動作設定信号31は、動作モード1を指示する値に設定されており、FFT回路10は動作モード1で動作する。図2では、FFT回路10を構成する各回路・データ信号のうち、動作モード1において、実際に使用する回路・データ信号は実線で示し、使用しない回路・データ信号は点線で示している。
動作モード1において、第1データ選択回路21は、入力する第1データ信号32を常に選択して、第2データ並べ替え処理回路13に出力する。したがって、もう一方の入力である第4データ信号35は使用されない。
また、動作モード1において、第2データ選択回路22は、入力する第2データ信号33を常に選択して、第2バタフライ演算処理回路15に出力する。したがって、もう一方の入力である第3データ信号34は使用されない。
次に、図3を参照して、動作モード1におけるFFT回路10の動作例を説明する。
図3は、動作モード1におけるFFT回路10の動作を示すタイミング図である。図11と同様に、図3では、FFT処理の処理単位であるFFTブロックの例として、FFTブロックF1、FFTブロックF2及びFFTブロックF3に対する、時間T1〜T6における処理を図示している。このF1〜F3のFFTブロックは、入力する時間領域の信号x(n)をFFTブロックの大きさごとに分割したデータブロックに相当する。
図3では、FFT処理を1〜9の内部処理に分割して図示している。以下において、動作モード1における内部処理1〜9を説明する。
(1)並べ替え1(write)の処理は、第1データ並べ替え処理回路11に対するデータの書き込み処理である。
(2)並べ替え1(read)の処理は、第1データ並べ替え処理回路11によって並べ替えられたデータの読み出し処理である。
(3)バタフライ演算1の処理は、第1バタフライ演算処理回路12による第1のバタフライ演算処理である。
(4)並べ替え2(write)の処理は、第2データ並べ替え処理回路13に対するデータの書き込み処理である。
(5)並べ替え2(read)の処理は、第2データ並べ替え処理回路13によって並べ替えられたデータの読み出し処理である。
(6)ひねり乗算の処理は、ひねり乗算処理回路14によるひねり乗算処理である。
(7)バタフライ演算2の処理は、第2バタフライ演算処理回路15による第2のバタフライ演算処理である。
(8)並べ替え3(write)の処理は、第3データ並べ替え処理回路16に対するデータの書き込み処理である。
(9)並べ替え3(read)の処理は、第3データ並べ替え処理回路16によって並べ替えられたデータの読み出し処理である。
以上が動作モード1における内部処理1〜9の説明である。
以下において、図3の各処理期間において実行する処理について説明する。
(T1)
時間T1の処理期間において実行される処理について説明する。
FFT回路10は、FFTブロックF1を構成する入力データx(n)を第1データ並べ替え処理回路11に入力する。第1データ並べ替え処理回路11は、このFFTブロックF1に対して並べ替え1(write)の処理を行う(F1(M1W))。
(T2)
時間T2の処理期間において実行される処理について説明する。
FFT回路10は、FFTブロックF2を構成する入力データx(n)を第1データ並べ替え処理回路11に入力する。第1データ並べ替え処理回路11は、この入力データに対して並べ替え1(write)の処理を行う(F2(M1W))。
さらに、第1データ並べ替え処理回路11は、FFTブロックF1に対して並べ替え1(read)の処理を行う(F1(M1R))。このとき、並べ替え1(write)の処理におけるデータの書き込み順序とは異なる順序で、並べ替え1(read)の処理におけるデータの読み出しを行うことで、FFT処理のアルゴリズム上のデータ依存に基づいたデータシーケンスの並べ替えを行う。第1バタフライ演算処理回路12は、並べ替え1(read)による並べ替え処理後のFFTブロックF1に対してバタフライ演算1の処理を行う(F1(B1))。第2データ並べ替え処理回路13は、バタフライ演算1の処理後のFFTブロックF1に対して並べ替え2(write)の処理(F1(M2W))を続けて行う。
(T3)
時間T3の処理期間において実行される処理について説明する。
FFT回路10は、FFTブロックF3を構成する入力データx(n)を第1データ並べ替え処理回路11に入力する。第1データ並べ替え処理回路11は、このFFTブロックF3に対して並べ替え1(write)の処理を行う(F3(M1W))。
さらに、第1データ並べ替え処理回路11は、処理期間T2において処理されたFFTブロックF2に対して並べ替え1(read)の処理を行う(F2(M1R))。第1バタフライ演算処理回路12は、並べ替え1(read)の処理後のFFTブロックF2に対してバタフライ演算1の処理を行う(F2(B1))。第2データ並べ替え処理回路13は、バタフライ演算1の処理後のFFTブロックF2に対して並べ替え2(write)の処理を行う(F2(M2W))。
さらに、第2データ並べ替え処理回路13は、処理期間T2において処理されたFFTブロックF1に対して並べ替え2(read)の処理を行う(F1(M2R)。ひねり乗算処理回路14は、並べ替え2(read)の処理後のFFTブロックF1に対してひねり乗算の処理を行う(F1(TW))。第2バタフライ演算処理回路15は、ひねり乗算の処理後のFFTブロックF1に対してバタフライ演算2の処理を行う(F1(B2))。第3データ並べ替え処理回路16は、バタフライ演算2の処理後のFFTブロックF1に対して並べ替え3(write)の処理(F1(M3W))を行う。
(T4)
時間T4の処理期間において実行される処理について説明する。
第1データ並べ替え処理回路11は、処理期間T3において処理されたFFTブロックF3に対して並べ替え1(read)の処理(F3(M1R))を行う。第1バタフライ演算処理回路12は、並べ替え1(read)の処理後のFFTブロックF3に対してバタフライ演算1の処理を行う(F3(B1))。第2データ並べ替え処理回路13は、バタフライ演算1の処理後のFFTブロックF3に対して並べ替え2(write)の処理を行う(F3(M2W))。
さらに、第2データ並べ替え処理回路13は、処理期間T3において処理されたFFTブロックF2に対して並べ替え2(read)の処理を行う(F2(M2R))。ひねり乗算処理回路14は、並べ替え2(read)の処理後のFFTブロックF2に対してひねり乗算の処理を行う(F2(TW))。第2バタフライ演算処理回路15は、ひねり乗算の処理後のFFTブロックF2に対してバタフライ演算2の処理を行う(F2(B2))。第3データ並べ替え処理回路16は、バタフライ演算2の処理後のFFTブロックF2に対して並べ替え3(write)の処理(F2(M3W))を行う。
さらに、第3データ並べ替え処理回路16は、処理期間T3において処理されたFFTブロックF1に対して並べ替え3(read)の処理(F1(M3R))を行う。ここで、FFTブロックF1に対するFFT処理が完了すると、FFT回路10は、そのデータを周波数領域のデータX(k)(F1)として出力する。
(T5)
時間T5の処理期間において実行される処理について説明する。
FFT回路10は、処理期間T4において処理されたFFTブロックF3に対して並べ替え2(read)の処理を行う(F3(M2R))。ひねり乗算処理回路14は、並べ替え2(read)の処理後のFFTブロックF3に対してひねり乗算の処理を行う(F3(TW))。第2バタフライ演算処理回路15は、ひねり乗算の処理後のFFTブロックF3に対してバタフライ演算2の処理を行う(F3(B2))。第3データ並べ替え処理回路16は、バタフライ演算2の処理後のFFTブロックF2に対して並べ替え3(write)の処理(F3(M3W))を続けて行う。
さらに、第3データ並べ替え処理回路16は、処理期間T4において処理されたFFTブロックF2に対して並べ替え3(read)の処理(F2(M3R))を行う。ここで、FFTブロックF2に対するFFT処理が完了すると、FFT回路10は、そのデータを周波数領域のデータX(k)(F2)として出力する。
(T6)
時間T6の処理期間において実行される処理について説明する。
第3データ並べ替え処理回路16は、処理期間T3において処理されたFFTブロックF3に対して並べ替え3(read)の処理を行う(F3(M3R))。ここで、FFTブロックF3に対するFFT処理が完了すると、FFT処理回路10は、そのデータを周波数領域のデータX(k)(F3)として出力する。
以上、FFTブロックF1〜F3に対する処理について説明した。なお、FFTブロックF3より後のFFTブロックについても同様である。
また、動作モードは必ずしも2つに限定されず、3つ以上のバタフライ演算処理回路を備えた構成とし、それぞれのバタフライ演算処理回路に対応した演算ビット幅のバタフライ演算を行うようにしてもよい。その場合、複数のバタフライ演算に対応させた動作モードを選択することが好ましい。
以上説明したように、FFT回路10は、動作モード1においては、第1バタフライ演算処理回路12及び第2バタフライ演算処理回路15の両方を使用して、バタフライ演算をパイプライン状に処理する。その結果、動作モード1において要求される高いスループット性能を実現することができる。
また、第1バタフライ演算処理回路12は、動作モード1において要求される演算精度に必要十分な演算ビット幅(Sビット)の回路で実現されている。さらに、第2バタフライ演算処理回路15は、より広い演算ビット幅(Lビット)の回路で実現されている。その結果、動作モード1において要求される演算精度を実現することができる。
(動作モード2)
次に、動作モード2におけるFFT回路10の動作を説明する。図4は、動作モード2におけるFFT回路10の動作状態を示すブロック図である。図4において、動作設定信号31は、動作モード2を指示する値に設定されており、FFT回路10は動作モード2で動作する。図4では、FFT回路10を構成する各回路・データ信号のうち、動作モード2において、実際に使用する回路・データ信号は実線で示し、使用しない回路・データ信号は点線で示している。
動作モード2において、第1データ選択回路21は、入力された第4データ信号35を常に選択して、第2データ並べ替え処理回路13に出力する。したがって、もう一方の入力信号である第1データ信号32は使用されない。
第2データ選択回路22は、入力された第2データ信号33及び第3データ信号34のいずれかを、第2バタフライ演算処理回路15の処理内容に応じて適宜選択して、第2バタフライ演算処理回路15に出力する。
次に、図5を参照して、動作モード2におけるFFT回路10の動作例を説明する。図5は、動作モード2におけるFFT回路10の動作を示すタイミング図である。図5では、FFT処理の処理単位であるFFTブロックの例として、FFTブロックF1、FFTブロックF2及びFFTブロックF3に対する時間T1’〜T5’における処理を図示している。このF1〜F3のFFTブロックは、入力する時間領域の信号x(n)をFFTブロックの大きさごとに分割したデータブロックに相当する。
ここで、動作モード2では、データx(n)の入力速度である入力スループットは、動作モード1における入力スループットの1/2であるとする。
例えば、動作モード1が対応するQPSK方式のシンボルレートに対して、動作モード2が対応する16QAM方式のシンボルレートは1/2でよい。そのため、入力スループットも1/2になることになる。したがって、動作モード2におけるFFT回路10の処理スループットは、動作モード1におけるFFT回路10の処理スループットの1/2になる。そのため、図5に示す動作モード2における時間T1’〜T5’のそれぞれの長さは、図3に示す動作モード1における時間T1〜T5それぞれの長さの2倍となっている。
(動作モード2の内部処理)
図5において、FFT処理を1〜9の内部処理に分割して図示している。以下において、動作モード2における内部処理1〜9を説明する。
(1)並べ替え1(write)の処理は、第1データ並べ替え処理回路11に対するデータの書き込み処理である。
(2)並べ替え1(read)の処理は、第1データ並べ替え処理回路11によって並べ替えられたデータの読み出し処理である。
(3)バタフライ演算1の処理は、第2バタフライ演算処理回路15による第1のバタフライ演算処理である。
(4)並べ替え2(write)の処理は、第2データ並べ替え処理回路13に対するデータの書き込み処理である。
(5)並べ替え2(read)の処理は、第2データ並べ替え処理回路13によって並べ替えられたデータの読み出し処理である。
(6)ひねり乗算の処理は、ひねり乗算処理回路14によるひねり乗算処理である。
(7)バタフライ演算2の処理は、第2バタフライ演算処理回路15による第2のバタフライ演算処理である。
(8)並べ替え3(write)の処理は、第3データ並べ替え処理回路16に対するデータの書き込み処理である。
(9)並べ替え3(read)の処理は、第3データ並べ替え処理回路16によって並べ替えられたデータの読み出し処理である。
以上が動作モード2における内部処理の説明である。
すなわち、動作モード2の処理においては、第1バタフライ演算処理回路12は使用されない。その一方で、第2バタフライ演算処理回路15のみを2回使用して、バタフライ演算1及びバタフライ演算2の両方を処理する。
以下において、図5の各処理期間において動作モード2で実行する処理について説明する。
(T1’)
時間T1’の処理期間において実行される処理について説明する。
FFT回路10は、第1データ並べ替え処理回路11にFFTブロックF1を構成する入力データx(n)を入力する。第1データ並べ替え処理回路11は、このFFTブロックF1に対して並べ替え1(write)の処理を行う(F1(M1W))。
(T2’)
時間T2’の処理期間において実行される処理について説明する。
FFT回路10は、FFTブロックF2を構成する入力データx(n)を第1データ並べ替え処理回路11に入力する。第1データ並べ替え処理回路11は、このFFTブロックF2に対して並べ替え1(write)の処理を行う(F2(M1W))。
さらに、第1データ並べ替え処理回路11は、時間T1’の処理期間において処理されたFFTブロックF1に対して並べ替え1(read)の処理を行う(F1(M1R))。並べ替え1(read)の処理は、動作モード1と同じ速度で処理されるため、時間T2’の1/2の処理時間、すなわち、動作モード1における時間T2と同じ処理時間に相当する「時間T2’の処理期間の前半」で完了する。
データ並べ替え処理回路11が出力した処理後のデータは、第3データ信号34を通じて選択回路22に入力される。選択回路22は、入力された第3データ信号34を選択して、第2バタフライ演算処理回路15に出力する。
第2バタフライ演算処理回路15は、入力されたデータに対してバタフライ演算1の処理(F1(B2))を行う。続けて、第2データ並べ替え処理回路13は、バタフライ演算1の処理後のFFTブロックF1に対して並べ替え2(write)の処理を行う(F1(M2W))。
これらの処理(F1(M1R)、F1(B2)、F1(M2W))は、動作モード1と同じ速度で処理されるため、時間T2’の1/2の処理時間、すなわち、動作モード1における時間T2と同じ処理時間である「時間T2’の処理期間の前半」で完了する。
次に、時間T2’の処理期間の後半において、第2データ並べ替え処理回路13は、時間T2’の処理期間の前半において処理されたFFTブロックF1に対して並べ替え2(read)の処理を行う(F1(M2R))。ひねり乗算処理回路14は、並べ替え2(read)の処理後のFFTブロックF1に対してひねり乗算の処理を行う(F1(TW))。
選択回路22は、入力された第2データ信号33を選択して、第2バタフライ演算処理回路15に出力する。
第2バタフライ演算処理回路15は、入力されたFFTブロックF1に対してバタフライ演算2の処理を行う(F1(B2))。続けて、第3データ並べ替え処理回路16は、バタフライ演算2の処理後のFFTブロックF2に対して並べ替え3(write)の処理を行う(F1(M3W))。
これらの処理(F1(M2R)・F1(TW)・F1(B2)・F1(M3W))も、動作モード1と同じの速度で処理されるため、時間T2’の1/2の処理時間、すなわち、動作モード1における時間T2と同じ処理時間に相当する「時間T2’の処理期間の後半」で全て完了する。
(T3’)
時間T3’の処理期間において実行される処理について説明する。
FFT回路10は、第1データ並べ替え処理回路11にFFTブロックF3を構成する入力データx(n)を入力する。第1データ並べ替え処理回路11は、このFFTブロックF3に対して並べ替え1(write)の処理を行う(F3(M1W))。
さらに、第3データ並べ替え処理回路16は、時間T2’の処理期間において処理されたFFTブロックF1に対して並べ替え3(read)の処理(F1(M3R))を行う。ここで、FFTブロックF1に対するFFT処理が完了すると、第3データ並べ替え処理回路16は、そのデータを周波数領域のデータX(k)(F1)として出力する。
また、時間T3’の処理期間の前半において、第1データ並べ替え処理回路11は、時間T2’の処理期間において処理されたFFTブロックF2に対して並べ替え1(read)の処理を行う(F2(M1R))。
第1データ並べ替え処理回路11が出力した処理後のデータは、第3データ信号34を通じて選択回路22に入力される。選択回路22は、入力された第3データ信号34を選択して、第2バタフライ演算処理回路15に出力する。
第2バタフライ演算処理回路15は、入力されたデータに対してバタフライ演算1の処理(F2(B2))を行う。続けて、第2データ並べ替え処理回路13は、バタフライ演算1の処理後のFFTブロックF2に対して並べ替え2(write)の処理を行う(F2(M2W))。
以上のように、時間T3’の処理期間の前半において、FFTブロックF2に対してF2(M1R)・F2(B2)・F2(M2W)の処理が実行される。
次に、時間T3’の処理期間の後半において、第2データ並べ替え処理回路13は、時間T3’の処理期間の前半において処理されたFFTブロックF2に対して並べ替え2(read)の処理を行う(F2(M2R))。ひねり乗算処理回路14は、並べ替え2(read)の処理後のFFTブロックF2に対してひねり乗算の処理を行う(F2(TW))。
ひねり乗算処理回路14が出力したひねり乗算の処理後のFFTブロックF2は、第2データ信号33を通じて選択回路22に入力される。選択回路22は、入力された第2データ信号33を選択して、第2バタフライ演算処理回路15に出力する。
第2バタフライ演算処理回路15は、入力されたデータに対してバタフライ演算2の処理を行う(F2(B2))。続けて、第3データ並べ替え処理回路16は、バタフライ演算2の処理後のFFTブロックF2に対して並べ替え3(write)の処理(F2(M3W))を行う。
以上のように、時間T3’の処理期間の後半において、FFTブロックF2に対してF2(M2R)・F2(TW)・F2(B2)・F2(M3W)の処理が実行される。
(T4’)
時間T4’の処理期間において実行される処理について説明する。
第3データ並べ替え処理回路16は、時間T3’の処理期間において処理されたFFTブロックF2に対して並べ替え3(read)の処理を行う(F2(M3R))。ここで、FFTブロックF2に対するFFT処理が完了すると、第3データ並べ替え処理回路16は、そのデータを周波数領域のデータX(k)(F2)として出力する。
また、時間T4’の処理期間の前半において、第1データ並べ替え処理回路11は、時間T3’の処理時間において処理されたFFTブロックF3に対して並べ替え1(read)の処理を行う(F3(M1R))。
第1データ並べ替え処理回路11が出力した処理後のデータは、第3データ信号34を通じて選択回路22に入力される。選択回路22は、入力された第3データ信号34を選択して、第2バタフライ演算処理回路15に出力する。
第2バタフライ演算処理回路15は、入力されたデータに対してバタフライ演算1の処理を行う(F3(B2))。続けて、第2データ並べ替え処理回路13は、バタフライ演算1の処理後のFFTブロックF3に対して並べ替え2(write)の処理を行う(F3(M2W))。
以上のように、時間T4’の処理期間の前半において、FFTブロックF3に対してF3(M1R)・F3(B2)・F3(M2W)の処理が実行される。
次に、時間T4’の処理期間の後半において、第2データ並べ替え処理回路13は、時間T4’の処理期間の前半において処理されたFFTブロックF3に対して並べ替え2(read)の処理を行う(F3(M2R))。ひねり乗算処理回路14は、並べ替え2(read)の処理後のFFTブロックF3に対してひねり乗算の処理(F3(TW))を行う。
ひねり乗算処理回路14が出力したひねり乗算の処理後のFFTブロックF3は、第2データ信号33を通じて選択回路22に入力される。選択回路22は、入力された第2データ信号33を選択して、第2バタフライ演算処理回路15に出力する。
第2バタフライ演算処理回路15は、入力されたデータに対してバタフライ演算2の処理を行う(F3(B2))。続けて、第3データ並べ替え処理回路16は、バタフライ演算2の処理後のFFTブロックF3に対して並べ替え3(write)の処理を行う(F3(M3W))。
以上のように、時間T4’の処理期間の後半においては、FFTブロックF3に対してF3(M2R)・F3(TW)・F3(B2)・F3(M3W)の処理が実行される。
(T5’)
時間T5’の処理期間において実行される処理について説明する。
第3データ並べ替え処理回路16は、FFTブロックF3に対して並べ替え3(read)の処理(F3(M3R))を実行する。ここで、FFTブロックF3に対するFFT処理が完了すると、FFT回路10は、そのデータを周波数領域のデータX(k)(F3)として出力する。
以上、FFTブロックF1〜F3に対する処理についてのみ説明したが、FFTブロックF3より後のFFTブロックについても同様である。
以上説明したように、FFT回路10は、バタフライ演算処理において第2バタフライ演算処理回路15のみを使用し、バタフライ演算1及び2の処理を行うことができる。
動作モード2において要求される処理スループットは、動作モード1において要求される処理スループットの1/2である。動作モード2においては、演算ビット幅の大きい第2バタフライ演算処理回路15のみを使用し、演算ビット幅の小さい第1バタフライ演算処理回路12を使用しないので、要求される高い演算精度でFFT処理を行うことができる。
なお、本実施形態では、第1バタフライ演算処理回路12の演算ビット幅は小さく、第2バタフライ演算処理回路15の演算ビット幅は大きいものとし、動作モード2では、演算ビット幅が大きい第2バタフライ演算処理回路15のみを使用するとした。それとは反対に、第1バタフライ演算処理回路12の演算ビット幅を大きく、第2バタフライ演算処理回路15の演算ビット幅を小さいものとし、動作モード2では、演算ビット幅が大きい第1バタフライ演算処理回路12のみを使用するとしてもよい。
本実施形態によれば、FFT回路10は、要求される処理スループット及び演算精度に応じて、動作モードを切り替えることができる。図6に示すように、QPSK方式のような低演算精度・高処理スループットが要求される場合には動作モード1で対応し、16QAM方式のような高演算精度・低処理スループットが要求される場合には動作モード2で対応する、というように動作モードを変更する。
一方、図7のFFT回路100においては、動作モードが固定である。したがって、高い演算精度を要求される場合に備えて、FFT回路100を構成する2つのバタフライ演算処理回路の両方とも、高い演算精度を実現するのに必要な大きな演算ビット幅に合わせる必要がある。
それに対して、本実施形態に係るFFT回路10は、動作モードに応じて回路構成を変更し、2つのバタフライ演算処理回路のうち、処理に使用するバタフライ演算処理回路を選択制御する。したがって、少なくとも一方のバタフライ演算処理回路の演算ビット幅を、低い演算精度の要求に合わせて小さくすることができる。その結果、回路規模や消費電力を削減することができる。
なお、本発明の実施形態に係るFFT処理方法及びそのFFT処理方法に関するプログラムについても本発明の範囲に含まれる。また、本発明の実施形態に係るFFT回路を含む半導体装置、コンピュータ、通信装置などといった装置、さらにはこれらの装置を含むシステムについても、本発明に係るFFT処理回路・処理方法・プログラムが含まれているならば本発明の範囲に含まれる。本発明の実施形態に係るFFT処理は、より具体的には、有線及び無線における伝送路の通信波形歪みに対するデジタル信号処理による歪み補償処理などに好適である。
以上、実施形態及び実施例を参照して本願発明を説明してきたが、本願発明は上記実施形態及び実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2012年11月26日に出願された日本出願特願2012−257728を基礎とする優先権を主張し、その開示の全てをここに取り込む。
10 FFT回路
11 第1データ並べ替え処理回路
12 第1バタフライ演算処理回路
13 第2データ並べ替え処理回路
14 ひねり乗算処理回路
15 第2バタフライ演算処理回路
16 第3データ並べ替え処理回路
21 第1データ選択回路
22 第2データ選択回路
31 動作設定信号
32 第1データ信号
33 第2データ信号
34 第3データ信号
35 第4データ信号
80 逐次順序テーブル
90 ビットリバース順序テーブル
100 FFT回路
101 第1データ並べ替え処理回路
102 第1バタフライ演算処理回路
103 第2データ並べ替え処理回路
104 ひねり乗算処理回路
105 第2バタフライ演算処理回路
106 第3データ並べ替え処理回路
110a−110h 部分データフロー
111 データ並べ替え処理
112 基数8のバタフライ処理
113 ひねり乗算処理

Claims (10)

  1. 互いに異なる演算ビット幅に対応したバタフライ演算を行う第1及び第2のバタフライ回路を備えた高速フーリエ変換回路であって、
    前記第1及び第2のバタフライ回路の両方で演算を実行する第1の動作モードと、前記第1または第2のバタフライ回路のいずれか一方で演算を実行する第2の動作モードと、を含む複数の動作モードのいずれかに対応して前記第1及び第2のバタフライ回路を選択制御する制御手段を備え
    前記制御手段は、
    前記第1のバタフライ回路による演算処理後のデータもしくは前記第2のバタフライ回路による演算処理後のデータのいずれか一方を選択して出力する第1の選択回路と、
    前記第1のバタフライ回路による演算処理前のデータもしくは前記第1の選択回路による選択処理後のデータのいずれか一方を選択して出力する第2の選択回路と、を含むことを特徴とする高速フーリエ変換回路。
  2. 異なる変調方式が混在した信号処理において、
    前記第1のバタフライ回路は、第1の演算ビット幅に対応する第1のバタフライ演算を実行し、
    前記第2のバタフライ回路は、前記第1のバタフライ演算とともに、前記第1の演算ビット幅よりも大きな第2の演算ビット幅に対応する第2のバタフライ演算を実行することを特徴とする請求項1に記載の高速フーリエ変換回路。
  3. 前記第1の動作モードにおいて、
    前記第1のバタフライ回路は、前記第1のバタフライ演算を実行し、
    前記第2のバタフライ回路は、前記第2のバタフライ演算を実行し、
    前記第2の動作モードにおいて、
    前記第2のバタフライ回路は、前記第1または第2のバタフライ演算のうち少なくとも一方を実行することを特徴とする請求項2に記載の高速フーリエ変換回路。
  4. 前記第1及び第2の選択回路は、
    上位回路によって変調方式に応じて設定される動作設定信号の値に基づいてデータを選択することを特徴とする請求項1乃至3のいずれか一項に記載の高速フーリエ変換回路。
  5. 前記第1の動作モードにおいて、
    前記第1の選択回路は、前記第1のバタフライ回路による演算処理後のデータを選択して出力し、
    前記第2の選択回路は、前記第1のバタフライ回路による演算処理を経たデータを選択して出力し、
    前記第2の動作モードにおいて、
    前記第1の選択回路は、前記第2のバタフライ回路による演算処理後のデータを選択して出力し、
    前記第2の選択回路は、前記第2のバタフライ回路が前記第1のバタフライ演算を行う場合には前記第1のバタフライ回路による演算処理前のデータを選択して出力し、前記第2のバタフライ回路が前記第2のバタフライ演算を行う場合には前記第1の選択回路によるデータ選択を経たデータを選択して出力することを特徴とする請求項2または3に記載の高速フーリエ変換回路。
  6. 前記第1のバタフライ回路と前記第2のバタフライ回路との間に、高速フーリエ変換処理における複素平面上の複素回転を処理するひねり乗算回路を有することを特徴とする請求項2乃至5のいずれか一項に記載の高速フーリエ変換回路。
  7. 高速フーリエ変換処理においてデータシーケンスの並べ替えを行う並べ替え回路を有することを特徴とする請求項6に記載の高速フーリエ変換回路。
  8. 時間領域のデータをフーリエ変換して周波数領域の信号に変換する高速フーリエ変換回路であって、
    入力された前記時間領域のデータを高速フーリエ変換処理のアルゴリズム上のデータ依存に基づいて並べ替える第1の並べ替え回路と、
    前記第1の並べ替え回路から入力されたデータに対して第1のバタフライ演算を行う第1のバタフライ回路と、
    入力されたデータを高速フーリエ変換処理のアルゴリズム上のデータ依存に基づいて並べ替える第2の並べ替え回路と、
    前記第2の並べ替え回路から入力されたデータに対して複素平面上の複素回転を処理するひねり乗算回路と、
    入力された信号に対して前記第1バタフライ演算とは異なる演算ビット幅に対応する第2のバタフライ演算を行う第2のバタフライ回路と、
    前記第2のバタフライ回路から入力されたデータを高速フーリエ変換処理のアルゴリズム上のデータ依存に基づいて並べ替えて周波数領域の信号を出力する第3の並べ替え回路と、
    前記第1または第2のバタフライ回路から入力したデータのうち一方を選択して前記第2の並べ替え回路に出力する第1の選択回路と、
    前記ひねり乗算回路または前記第1の並べ替え回路から入力したデータのうち一方を選択して前記第2のバタフライ回路に出力する第2の選択回路と、を備え、
    前記第1及び第2の選択回路は、上位回路から与えられる動作設定信号に基づいて、出力する信号を選択し、
    前記第1及び第2のバタフライ回路の両方で演算を実行する第1の動作モードと、
    前記第1または第2のバタフライ回路のいずれか一方で演算を実行する第2の動作モードと、を含む複数の動作モードのいずれかに対応して前記第1及び第2のバタフライ回路を選択制御することを特徴とする高速フーリエ変換回路。
  9. 互いに異なる演算ビット幅で動作してバタフライ演算を行う第1及び第2のバタフライ回路を備えた高速フーリエ変換回路において、
    前記第1のバタフライ回路による演算処理後のデータもしくは前記第2のバタフライ回路による演算処理後のデータのいずれか一方を選択し、
    選択後のデータもしくは前記第1のバタフライ回路による演算処理前のデータのいずれか一方を選択し、
    前記第1及び第2のバタフライ回路の両方で演算を実行する第1の動作モードと、前記第1または第2のバタフライ回路のいずれか一方で演算を実行する第2の動作モードと、を含む複数の動作モードのいずれかに対応して前記第1及び第2のバタフライ回路を選択制御することを特徴とする高速フーリエ変換処理方法。
  10. 互いに異なる演算ビット幅で動作してバタフライ演算を行う第1及び第2のバタフライ回路を備えた高速フーリエ変換回路において、
    前記第1のバタフライ回路による演算処理後のデータもしくは前記第2のバタフライ回路による演算処理後のデータのいずれか一方を選択する処理と、
    選択後のデータもしくは前記第1のバタフライ回路による演算処理前のデータのいずれか一方を選択する処理と、
    前記第1及び第2のバタフライ回路の両方で演算を実行する第1の動作モードと、前記第1または第2のバタフライ回路のいずれか一方で演算を実行する第2の動作モードと、を含む複数の動作モードのいずれかに対応して前記第1及び第2のバタフライ回路を選択制御する処理と、前記高速フーリエ変換回路と接続されたコンピュータに実行させる高速フーリエ変換処理プログラム。
JP2014548457A 2012-11-26 2013-11-19 高速フーリエ変換回路、高速フーリエ変換処理方法及び高速フーリエ変換処理プログラム Active JP6256348B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012257728 2012-11-26
JP2012257728 2012-11-26
PCT/JP2013/006787 WO2014080617A1 (ja) 2012-11-26 2013-11-19 高速フーリエ変換回路、高速フーリエ変換処理方法及びプログラム記録媒体

Publications (2)

Publication Number Publication Date
JPWO2014080617A1 JPWO2014080617A1 (ja) 2017-01-05
JP6256348B2 true JP6256348B2 (ja) 2018-01-10

Family

ID=50775812

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014548457A Active JP6256348B2 (ja) 2012-11-26 2013-11-19 高速フーリエ変換回路、高速フーリエ変換処理方法及び高速フーリエ変換処理プログラム

Country Status (3)

Country Link
US (1) US9727531B2 (ja)
JP (1) JP6256348B2 (ja)
WO (1) WO2014080617A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014080617A1 (ja) * 2012-11-26 2014-05-30 日本電気株式会社 高速フーリエ変換回路、高速フーリエ変換処理方法及びプログラム記録媒体
US20160357706A1 (en) * 2013-12-13 2016-12-08 Nec Corporation Fast fourier transform device, fast fourier transform method, and storage medium having fast fourier transform program stored thereon
WO2017183563A1 (ja) * 2016-04-19 2017-10-26 日本電気株式会社 デジタルフィルタ装置、デジタルフィルタ処理方法およびプログラム記録媒体
CN107480099A (zh) * 2017-08-21 2017-12-15 叶军 基于可编程逻辑控制的快速傅里叶变换装置
US11604852B2 (en) 2017-12-27 2023-03-14 Nec Corporation Signal processing apparatus, method, program, and recording medium
CN110600019B (zh) * 2019-09-12 2022-02-15 东南大学 基于实时场景下语音信噪比预分级的卷积神经网络计算电路

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2677969B2 (ja) * 1993-12-27 1997-11-17 松下電器産業株式会社 直交変換装置
US7870176B2 (en) * 2004-07-08 2011-01-11 Asocs Ltd. Method of and apparatus for implementing fast orthogonal transforms of variable size
US8001171B1 (en) * 2006-05-31 2011-08-16 Xilinx, Inc. Pipeline FFT architecture for a programmable device
JP5821104B2 (ja) 2010-10-22 2015-11-24 株式会社レイトロン フーリエ変換処理装置
WO2013097219A1 (zh) * 2011-12-31 2013-07-04 中国科学院自动化研究所 一种用于并行fft计算的数据存取方法及装置
WO2014080617A1 (ja) * 2012-11-26 2014-05-30 日本電気株式会社 高速フーリエ変換回路、高速フーリエ変換処理方法及びプログラム記録媒体

Also Published As

Publication number Publication date
JPWO2014080617A1 (ja) 2017-01-05
US9727531B2 (en) 2017-08-08
WO2014080617A1 (ja) 2014-05-30
US20150301986A1 (en) 2015-10-22

Similar Documents

Publication Publication Date Title
JP6256348B2 (ja) 高速フーリエ変換回路、高速フーリエ変換処理方法及び高速フーリエ変換処理プログラム
Chen et al. An indexed-scaling pipelined FFT processor for OFDM-based WPAN applications
JP6288089B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法及びデジタルフィルタプログラムが記憶された記憶媒体
Chen et al. Continuous-flow parallel bit-reversal circuit for MDF and MDC FFT architectures
KR100989797B1 (ko) Fft/ifft 연산코어
JP6358096B2 (ja) 高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラム
JP6489021B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法及びデジタルフィルタプログラム
US11604852B2 (en) Signal processing apparatus, method, program, and recording medium
JP6451647B2 (ja) 高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラム
WO2019225576A1 (ja) 信号処理装置、方法、プログラム
JP6943283B2 (ja) 高速フーリエ変換装置、データ並べ替え処理装置、高速フーリエ変換処理方法およびプログラム
JP6436087B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法およびプログラム
US20230289397A1 (en) Fast fourier transform device, digital filtering device, fast fourier transform method, and non-transitory computer-readable medium
JP6992745B2 (ja) デジタルフィルタ装置、デジタルフィルタ処理方法およびデジタルフィルタ処理プログラム
KR101297085B1 (ko) 가변 고속 푸리에 변환 장치 및 그 방법
JP2022152001A (ja) 高速フーリエ変換装置及びデジタルフィルタ装置
JP5131346B2 (ja) 無線通信装置
Karachalios et al. A new FFT architecture for 4× 4 MIMO-OFDMA systems with variable symbol lengths

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170704

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170823

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171120

R150 Certificate of patent or registration of utility model

Ref document number: 6256348

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150