JP2023131901A - 高速フーリエ変換装置、デジタルフィルタ装置、高速フーリエ変換方法、及びプログラム - Google Patents
高速フーリエ変換装置、デジタルフィルタ装置、高速フーリエ変換方法、及びプログラム Download PDFInfo
- Publication number
- JP2023131901A JP2023131901A JP2022036908A JP2022036908A JP2023131901A JP 2023131901 A JP2023131901 A JP 2023131901A JP 2022036908 A JP2022036908 A JP 2022036908A JP 2022036908 A JP2022036908 A JP 2022036908A JP 2023131901 A JP2023131901 A JP 2023131901A
- Authority
- JP
- Japan
- Prior art keywords
- order
- data
- fast fourier
- output data
- processing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 233
- 238000004364 calculation method Methods 0.000 claims description 95
- 230000008707 rearrangement Effects 0.000 claims description 67
- 230000009466 transformation Effects 0.000 claims description 4
- 230000007704 transition Effects 0.000 claims 3
- 230000003247 decreasing effect Effects 0.000 claims 2
- 230000001174 ascending effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 18
- 238000013500 data storage Methods 0.000 description 12
- 238000005457 optimization Methods 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000015654 memory Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 229910044991 metal oxide Inorganic materials 0.000 description 2
- 150000004706 metal oxides Chemical class 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/24—Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Discrete Mathematics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
Abstract
【課題】高速フーリエ変換を用いたデジタル信号処理を実現する回路の消費電力が小さい高速フーリエ変換装置、デジタルフィルタ装置、高速フーリエ変換方法、及びプログラムを提供する。【解決手段】FFT装置10は、連続するN個の入力データごとに、Mサイクルで高速又は逆高速フーリエ変換を行う際、F個の高速又は逆高速フーリエ変換において、第1の順序のF×N個の第1の入力データを並べ替えて、第2の順序で第1の出力データを出力し、第1の出力データに対して、バタフライ演算処理を行い、第1の順序で第2の出力データを出力し、第2の出力データを並べ替えて、第3の順序で第3の出力データを出力し、第3の出力データに対して、ひねり乗算処理を行い、第3の順序で第4の出力データを出力し、第3の順序は、F個の高速又は逆高速フーリエ変換のそれぞれにおけるC番目のサイクルの処理を、連続するサイクルにおいて処理する順序である。【選択図】図1
Description
本開示は、デジタル信号処理を行うデジタルフィルタ装置に関し、特に高速フーリエ変換装置、高速フーリエ変換方法、及びプログラムに関する。
デジタル信号処理において重要な処理の1つとして、高速フーリエ変換(Fast Fourier Transform:以降、「FFT」という。)処理がある。例えば、無線通信や有線通信における信号伝送中の波形歪みを補償する技術として、周波数領域等化(Frequency domain equalization(FDE))技術が知られている。周波数領域等化では、まず高速フーリエ変換により時間領域上の信号データが周波数領域上のデータに変換され、次に等化のためのフィルタ処理が行われる。そして、フィルタ処理後のデータは、逆高速フーリエ変換(Inverse FFT:以降、「IFFT」という。)により時間領域上の信号データに再変換されることによって、元の時間領域上の信号の波形歪みが補償される。以降、FFTとIFFTを区別しないときは、「FFT/IFFT」と表記する。
一般に、FFT/IFFT処理では、「バタフライ演算」が用いられる。バタフライ演算を用いたFFT装置については、例えば特許文献1に記載がある。特許文献1には、後述の「ひねり乗算」、すなわち、ひねり係数を用いた乗算についても記載されている。
効率的なFFT/IFFT処理方式としては、例えば非特許文献1に記載されたCooley-Tukeyによるバタフライ演算が有名である。しかし、ポイント数の大きいCooley-TukeyによるFFT/IFFTは回路が複雑になる。そのため、例えば非特許文献2に記載されたPrime Factor法を用いて2つの小さなFFT/IFFTに分解して、FFT/IFFT処理が行われる。
図14は、例えばPrime Factor法を利用して2段階の基数8のバタフライ処理に分解された、64ポイントFFTのデータフロー500を示す。データフロー500は、データ並べ替え処理501、バタフライ演算処理502、503のそれぞれ延べ8回の基数8のバタフライ演算処理、ひねり乗算処理504を含む。
図14のデータフローでは、入力された時間領域のデータx(n)(n=0,1,・・・,63)が、FFT処理により、周波数領域の信号X(k)(k=0,1,・・・,63)にフーリエ変換される。図14では、一部のデータフローの図示は省略されている。なお、図14のデータフローは、IFFT処理を行う場合についても、基本構成は同じである。
図14のデータフローのすべてを回路で実現するためには、膨大な規模の回路を要する。そのため、必要な処理性能に応じて、データフローの一部分の処理を実現する回路を繰り返し使用することで、FFT処理の全体を実現する方法が一般的である。
例えば、図14のデータフローにおいて、8個のデータに対して並列に(以降、単に「8データ並列で」という。)FFT処理を行うFFT装置を物理的な回路として作成した場合、合計8回の繰り返し処理により64ポイントFFT処理を実現することができる。
8回の繰り返し処理は、8個のデータに対して行われる部分データフロー505a~505hの、それぞれにあたる処理が順に行われるものであり、具体的には、次のように行われる。すなわち、1回目には、部分データフロー505aにあたる処理が、2回目には、部分データフロー505bにあたる処理が、3回目には、部分データフロー505c(図示せず)にあたる処理が行われる。以降同様に、8回目の部分データフロー505hにあたる処理までが順に行われる。以上の処理により、64ポイントFFT処理が実現される。
バタフライ演算では、逐次的な順序に並べられたデータが、所定の規則に従った順序で読み出され、処理される。そのため、バタフライ演算では、データの並べ替えが必要であり、その回路実現には主にRAM(Random Access Memory)回路が用いられる。バタフライ演算においてRAM回路を用いたデータの並べ替えを行うFFT装置については、例えば特許文献2に記載がある。また、メモリ使用量を削減したFFT演算装置については、バタフライ演算の並列処理による高速化技術が、例えば特許文献3に記載されている。また、FFT装置の後段の処理の高速化や低消費電力化を目的とした、FFT処理の処理結果の出力タイミングや出力順序の最適化技術が、特許文献4に記載されている。
J.W.Cooley,J.W.Tukey,"An Algorithm for the Machine Calculation of Complex Fourier Series",Mathematics of Computation,US,American Mathematical Society,Apr. 1965,Vol.19,No.90,pp.297-301
D.P.Kolba,"A Prime Factor FFT Algorithm Using High-Speed Convolution",IEEE Trans. on Acoustics,US,IEEE Signal Processing Society,Aug. 1977, Vol.29,No.4,pp.281-294
図14に示すFFT処理のデータフローにおいて、8個のデータに対して行われる部分データフロー505a~505hの8回の繰り返し処理を実行する順序は任意であり、この順序により、FFT処理によりフーリエ変換された周波数領域の信号X(k)(k=0,1,・・・,N-1)の出力順序や、FFT処理を実現する内部演算の順序が決定される。一方、信号X(k)に対して実施されるフィルタ処理等の演算や、FFT処理を実現する内部演算に係る消費電力の一部は、信号X(k)の出力順序や、FFT処理を実現する内部演算の順序により決定される。すなわち、FFT処理において、FFT処理に係る消費電力を低減することが可能な、部分データフローの繰り返し処理の特定の実行順序が存在し、消費電力の低減のためには実行順序を最適なものとすることが有効である。
しかしながら、非特許文献1、2、3に記載されたFFT回路は、部分データフローの繰り返し処理の順序に関して、消費電力の低減のための最適化が考慮されておらず、消費電力が大きいという問題がある。
特許文献4には、処理対象のデータの入力や処理結果の出力を任意の順序で行うことが可能なFFT装置が記載されており、FFT処理の後段の処理の高速化のために、出力X(k)とX(N-k)とを、高々1サイクル以内の時間差で出力することができる。しかし、特許文献4は、消費電力の低減のための最適な構成については明らかにされておらず、消費電力が大きいという問題がある。
本開示の目的は、高速フーリエ変換を用いたデジタル信号処理を実現する回路の消費電力が小さい高速フーリエ変換装置、デジタルフィルタ装置、高速フーリエ変換方法、及びプログラムを提供することである。
本開示に係る高速フーリエ変換装置は、入力された時間領域の入力データに対して、連続するN個(Nは2以上の正整数)の入力データごとに、Mサイクル(Mは2以上の正整数)で高速フーリエ変換又は逆高速フーリエ変換を行う高速フーリエ変換装置であって、
前記高速フーリエ変換装置は、連続して処理を行うF個(Fは2以上の正整数)の高速フーリエ変換又は逆高速フーリエ変換において、
第1の順序で入力するF×N個の第1の入力データを並べ替えて、第2の順序で第1の出力データを出力する第1のデータ並べ替え処理手段と、
前記第1の出力データに対して、バタフライ演算処理を行い、前記第1の順序で第2の出力データを出力するバタフライ演算処理手段と、
前記第2の出力データを並べ替えて、第3の順序で第3の出力データを出力する第2のデータ並べ替え処理手段と、
前記第3の出力データに対して、ひねり係数を乗算してひねり乗算処理を行い、前記第3の順序で第4の出力データを出力するひねり乗算処理手段と、を含み、
前記第3の順序は、連続して処理を行うF個の高速フーリエ変換又は逆高速フーリエ変換のそれぞれにおけるC番目のサイクル(Cは0≦C≦M-1の整数)の処理を、連続するサイクルにおいて処理する順序である。
前記高速フーリエ変換装置は、連続して処理を行うF個(Fは2以上の正整数)の高速フーリエ変換又は逆高速フーリエ変換において、
第1の順序で入力するF×N個の第1の入力データを並べ替えて、第2の順序で第1の出力データを出力する第1のデータ並べ替え処理手段と、
前記第1の出力データに対して、バタフライ演算処理を行い、前記第1の順序で第2の出力データを出力するバタフライ演算処理手段と、
前記第2の出力データを並べ替えて、第3の順序で第3の出力データを出力する第2のデータ並べ替え処理手段と、
前記第3の出力データに対して、ひねり係数を乗算してひねり乗算処理を行い、前記第3の順序で第4の出力データを出力するひねり乗算処理手段と、を含み、
前記第3の順序は、連続して処理を行うF個の高速フーリエ変換又は逆高速フーリエ変換のそれぞれにおけるC番目のサイクル(Cは0≦C≦M-1の整数)の処理を、連続するサイクルにおいて処理する順序である。
本開示に係る高速フーリエ変換方法は、入力された時間領域の入力データに対して、連続するN個(Nは2以上の正整数)の入力データごとに、Mサイクル(Mは2以上の正整数)で高速フーリエ変換又は逆高速フーリエ変換を行う高速フーリエ変換装置が、
連続して処理を行うF個(Fは2以上の正整数)の高速フーリエ変換又は逆高速フーリエ変換において、
第1の順序で入力するF×N個の第1の入力データを並べ替えて、第2の順序で第1の出力データを出力し、
前記第1の出力データに対して、バタフライ演算処理を行い、前記第1の順序で第2の出力データを出力し、
前記第2の出力データを並べ替えて、第3の順序で第3の出力データを出力し、
前記第3の出力データに対して、ひねり係数を乗算してひねり乗算処理を行い、前記第3の順序で第4の出力データを出力する方法であり、
前記第3の順序は、連続して処理を行うF個の高速フーリエ変換又は逆高速フーリエ変換のそれぞれにおけるC番目のサイクル(Cは0≦C≦M-1の整数)の処理を、連続するサイクルにおいて処理する順序である。
連続して処理を行うF個(Fは2以上の正整数)の高速フーリエ変換又は逆高速フーリエ変換において、
第1の順序で入力するF×N個の第1の入力データを並べ替えて、第2の順序で第1の出力データを出力し、
前記第1の出力データに対して、バタフライ演算処理を行い、前記第1の順序で第2の出力データを出力し、
前記第2の出力データを並べ替えて、第3の順序で第3の出力データを出力し、
前記第3の出力データに対して、ひねり係数を乗算してひねり乗算処理を行い、前記第3の順序で第4の出力データを出力する方法であり、
前記第3の順序は、連続して処理を行うF個の高速フーリエ変換又は逆高速フーリエ変換のそれぞれにおけるC番目のサイクル(Cは0≦C≦M-1の整数)の処理を、連続するサイクルにおいて処理する順序である。
本開示に係るプログラムは、入力された時間領域の入力データに対して、連続するN個(Nは2以上の正整数)の入力データごとに、Mサイクル(Mは2以上の正整数)で高速フーリエ変換又は逆高速フーリエ変換を行う高速フーリエ変換装置に、
連続して処理を行うF個(Fは2以上の正整数)の高速フーリエ変換又は逆高速フーリエ変換において、
第1の順序で入力するF×N個の第1の入力データを並べ替えて、第2の順序で第1の出力データを出力する処理と、
前記第1の出力データに対して、バタフライ演算処理を行い、前記第1の順序で第2の出力データを出力する処理と、
前記第2の出力データを並べ替えて、第3の順序で第3の出力データを出力し、
前記第3の出力データに対して、ひねり係数を乗算してひねり乗算処理を行い、前記第3の順序で第4の出力データを出力する処理と、
を実行させ、
前記第3の順序は、連続して処理を行うF個の高速フーリエ変換又は逆高速フーリエ変換のそれぞれにおけるC番目のサイクル(Cは0≦C≦M-1の整数)の処理を、連続するサイクルにおいて処理する順序である。
連続して処理を行うF個(Fは2以上の正整数)の高速フーリエ変換又は逆高速フーリエ変換において、
第1の順序で入力するF×N個の第1の入力データを並べ替えて、第2の順序で第1の出力データを出力する処理と、
前記第1の出力データに対して、バタフライ演算処理を行い、前記第1の順序で第2の出力データを出力する処理と、
前記第2の出力データを並べ替えて、第3の順序で第3の出力データを出力し、
前記第3の出力データに対して、ひねり係数を乗算してひねり乗算処理を行い、前記第3の順序で第4の出力データを出力する処理と、
を実行させ、
前記第3の順序は、連続して処理を行うF個の高速フーリエ変換又は逆高速フーリエ変換のそれぞれにおけるC番目のサイクル(Cは0≦C≦M-1の整数)の処理を、連続するサイクルにおいて処理する順序である。
高速フーリエ変換を用いたデジタル信号処理を実現する回路の消費電力が小さい高速フーリエ変換装置、デジタルフィルタ装置、高速フーリエ変換方法、及びプログラムを提供することができる。
以下、図面を参照して本開示の実施の形態について説明する。
(第1の実施形態)
図1は、第1の実施形態に係る高速フーリエ変換装置(以降、FFT装置という。)の一例を示すブロック図である。本実施形態に係るFFT装置10は、デジタルフィルタ装置における高速フーリエ変換処理又は逆高速フーリエ変換処理に用いられる。具体的には、FFT装置10は、入力された時間領域の入力データに対して、連続するN個(Nは2以上の正整数)の入力データごとに、Mサイクル(Mは2以上の正整数)で高速フーリエ変換又は逆高速フーリエ変換を行う。図1に示すように、FFT装置10は、第1のデータ並べ替え処理手段としての第1のデータ並べ替え処理部11、バタフライ演算処理手段としての第1のバタフライ演算処理部21、第2のデータ並べ替え処理手段としての第2のデータ並べ替え処理部12、ひねり乗算処理手段としてのひねり演算処理部31を備える。そして、FFT装置10は、F個(Fは2以上の正整数)の高速フーリエ変換処理又は逆高速フーリエ変換処理を連続して行う。
(第1の実施形態)
図1は、第1の実施形態に係る高速フーリエ変換装置(以降、FFT装置という。)の一例を示すブロック図である。本実施形態に係るFFT装置10は、デジタルフィルタ装置における高速フーリエ変換処理又は逆高速フーリエ変換処理に用いられる。具体的には、FFT装置10は、入力された時間領域の入力データに対して、連続するN個(Nは2以上の正整数)の入力データごとに、Mサイクル(Mは2以上の正整数)で高速フーリエ変換又は逆高速フーリエ変換を行う。図1に示すように、FFT装置10は、第1のデータ並べ替え処理手段としての第1のデータ並べ替え処理部11、バタフライ演算処理手段としての第1のバタフライ演算処理部21、第2のデータ並べ替え処理手段としての第2のデータ並べ替え処理部12、ひねり乗算処理手段としてのひねり演算処理部31を備える。そして、FFT装置10は、F個(Fは2以上の正整数)の高速フーリエ変換処理又は逆高速フーリエ変換処理を連続して行う。
第1のデータ並べ替え処理部11は、第1の順序で入力するF×N個の第1の入力データを並べ替えて、第2の順序で第1の出力データを出力する。
第1のバタフライ演算処理部21は、前記第1の出力データに対して、バタフライ演算処理を行い、前記第1の順序で第2の出力データを出力する。
第2のデータ並べ替え処理部12は、前記第2の出力データを並べ替えて、第3の順序で第3の出力データを出力する。
ひねり演算処理部31は、前記第3の出力データに対して、ひねり係数を乗算してひねり乗算処理を行い、前記第3の順序で第4の出力データを出力する。
そして、第1の実施形態では、第3の順序は、連続して処理を行うF個の高速フーリエ変換又は逆高速フーリエ変換のそれぞれにおけるC番目のサイクル(Cは0≦C≦M-1の整数)の処理を、連続するサイクルにおいて処理する順序である。
以上に説明した第1の実施形態に係るFFT装置10によれば、ひねり演算処理部31に入力されるデータの処理順序(第3の順序)を、C番目のサイクルの処理が連続するサイクルにおいて処理されるようにする順序とすることができる。換言すれば、連続して処理を行う複数のFFT処理について、処理順序を交互配置(インターリーブ)することで、ひねり演算処理やフィルタ演算処理に係る電力を小さくすることができる。その結果、デジタルフィルタ処理全体の消費電力を低減することができる。
また、本実施形態では、FFT処理を例として説明したが、IFFTにおいても同様である。すなわち、本実施形態の制御方法をIFFT処理装置に適用して、IFFT処理内やIFFT処理後段の処理順序を最適化すれば、IFFT処理内やIFFT処理後段の消費電力を低減することができる。
(第2の実施形態)
図2は、本発明の第2の実施形態に係るデジタルフィルタ装置(「デジタルフィルタ回路」とも称する。)400の構成を示すブロック図である。デジタルフィルタ回路400は、FFT装置(「FFT回路」とも称する。)10、フィルタ処理手段としてのフィルタ処理部420、を備える。
図2は、本発明の第2の実施形態に係るデジタルフィルタ装置(「デジタルフィルタ回路」とも称する。)400の構成を示すブロック図である。デジタルフィルタ回路400は、FFT装置(「FFT回路」とも称する。)10、フィルタ処理手段としてのフィルタ処理部420、を備える。
デジタルフィルタ回路400は、時間領域における複素数信号
x(n)=r(n)+js(n) ・・・(1)
を入力する。
x(n)=r(n)+js(n) ・・・(1)
を入力する。
FFT回路10は、入力された複素数信号x(n)を、FFTにより周波数領域の複素数信号431
X(k)=A(k)+jB(k) ・・・(2)
に変換する。
X(k)=A(k)+jB(k) ・・・(2)
に変換する。
ここで、nは時間領域上の信号サンプル番号を示す0≦n≦N-1の整数、NはFFTの変換サンプル数を示す0<Nの整数、kは周波数領域上の周波数番号を示す0≦k≦N-1の整数である。
次に、フィルタ処理部420は、FFT回路10が複素数信号431に出力するX(k)(式(2))に対して、フィルタ係数C(k)を用いて、複素数乗算による複素数フィルタ処理を行う。具体的には、フィルタ処理部420は、0≦k≦N-1の周波数番号kのそれぞれについて、複素数信号
X‘(k)=X(k)×C(k) ・・・(3)
を計算して、複素数信号434として出力する。
デジタルフィルタ回路400は、連続して入力される時間領域における複素数信号に対して、N個の複素数信号ごとに上記の処理を繰り返して行う。
X‘(k)=X(k)×C(k) ・・・(3)
を計算して、複素数信号434として出力する。
デジタルフィルタ回路400は、連続して入力される時間領域における複素数信号に対して、N個の複素数信号ごとに上記の処理を繰り返して行う。
次に、本発明の第2の実施形態に係るFFT回路10の詳細を説明する。
FFT装置10は、図14に示されたデータフロー500に従って、2段階の基数8のバタフライ処理に分解された64ポイントFFTを、パイプライン回路方式によって処理する。FFT装置10は、時間領域のデータx(n)(n=0,1,・・・,N-1)を入力し、x(n)をFFT処理によりフーリエ変換して周波数領域の信号X(k)(k=0,1,・・・,N-1)を生成し、出力する。ここで、NはFFTブロックサイズを表す正整数である。
FFT装置10は、図14に示されたデータフロー500に従って、2段階の基数8のバタフライ処理に分解された64ポイントFFTを、パイプライン回路方式によって処理する。FFT装置10は、時間領域のデータx(n)(n=0,1,・・・,N-1)を入力し、x(n)をFFT処理によりフーリエ変換して周波数領域の信号X(k)(k=0,1,・・・,N-1)を生成し、出力する。ここで、NはFFTブロックサイズを表す正整数である。
FFT装置10は、第1のデータ並べ替え処理手段としての第1のデータ並べ替え処理部11、バタフライ演算処理手段としての第1のバタフライ演算処理部21、第2のデータ並べ替え処理手段及び記憶手段としての第2のデータ並べ替え処理部12、ひねり乗算処理手段としてのひねり乗算処理部31、第2のバタフライ演算処理部22、読み出しアドレス生成手段としての読み出しアドレス生成部41を備える。FFT装置10は、第1のデータ並べ替え処理、第1のバタフライ演算処理、第2のデータ並べ替え処理、ひねり乗算処理、第2のバタフライ演算処理、をパイプライン処理する。
第1のデータ並べ替え処理部11、第2のデータ並べ替え処理部12は、データ並べ替えのためのバッファ回路である。第1のデータ並べ替え処理部11は、第1のバタフライ演算処理部21の前で、FFT処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。同様に、第2のデータ並べ替え処理部12は、第1のバタフライ演算処理部21の後で、読み出しアドレス51を入力して、FFT処理のアルゴリズム上のデータの依存関係に基づいた、データシーケンスの並べ替えを行う。さらに、第2のデータ並べ替え処理部12は、上記の並べ替えに加えて、連続して処理を行う複数のFFT処理を交互に実行するための並べ替え処理を行う。
FFT装置10は、8データ並列で64ポイントFFT処理を行うものとする。この場合、FFT回路10は、時間領域のデータx(n)を入力し、FFT処理によりフーリエ変換した周波数領域の信号X(k)を生成して出力する。このとき、入力データx(n)として、1つのFFT処理に対して8データずつ、8サイクルの期間に、図3に示す順序で、1つのFFT処理に対して合計で64個のデータが入力される。図3は連続して処理を行う第1から第4の4つのFFT処理(F1~F4)について、入力データx(n)の順序を示しており、図3の表の内容として示された、0から63までの数字は、x(n)の添え字nを意味する。具体的には、第1のFFT処理(F1)に関して、0サイクル目に、データ組P0を構成するx(0),x(1),・・・,x(7)の8データが入力される。そして、1サイクル目に、データ組P1を構成するx(8),x(9),・・・,x(15)の8データが入力される。以降同様に、2サイクル目から7サイクル目にも、データ組P2~P7を構成するデータが入力される。同様に、8サイクル目から15サイクル目に第2のFFT処理(F2)に関するデータが、16サイクル目から23サイクル目に第3のFFT処理(F3)に関するデータが、24サイクル目から31サイクル目に第4のFFT処理(F4)に関するデータが、入力される。
次に、第1のデータ並べ替え処理部11は、入力データx(n)の入力順序である図3に示す「逐次順序」を、第1のバタフライ演算処理部21に入力する順序である図4に示す「ビットリバース順序」に並べ替える。
図4は連続して処理を行う第1から第4の4つのFFT処理(F1~F4)について、ビットリバース順序を示しており、図14に示したデータフロー図における、1段目の基数8のバタフライ処理502への入力データ組に対応する。具体的には、第1のデータ並べ替え処理部11は、第1のFFT処理(F1)に関して、0サイクル目に、データ組Q0を構成するx(0),x(8),・・・,x(56)の8データを出力する。そして、1サイクル目に、データ組Q1を構成するx(1),x(9),・・・,x(57)の8データを出力する。以降、2サイクル目から7サイクル目も同様にして、データ組Q3~Q7を構成するデータを出力する。同様に、8サイクル目から15サイクル目に第2のFFT処理(F2)に関するデータを、16サイクル目から23サイクル目に第3のFFT処理(F3)に関するデータを、24サイクル目から31サイクル目に第4のFFT処理(F4)に関するデータを、出力する。
ここで、「逐次順序」と「ビットリバース順序」について、具体的に説明する。「逐次順序」とは、図3に示された、8つのデータ組P0~P7に係る順序をいう。データ組Ps(s=0,1,..,7)は、それぞれ、ps(0)~ps(7)まで、順に並んだ8個のデータからなり、ps(i)は、
ps(i)=8s+i
である。つまり、逐次順序とは、i・s個のデータを、先頭のデータからi個ずつデータ順に並べてデータ組をs個作成して並べたものである。
ps(i)=8s+i
である。つまり、逐次順序とは、i・s個のデータを、先頭のデータからi個ずつデータ順に並べてデータ組をs個作成して並べたものである。
「ビットリバース順序」とは、図4に示された、8つのデータ組Q0~Q7に係る順序をいう。データ組Qs(s=0,1,..,7)は、それぞれ、qs(0)~qs(7)までの8個のデータからなり、qs(i)は、
qs(i)=s+8i
である。つまり、ビットリバース順序とは、i・s個のデータを、先頭のデータからi個ずつ8個おきに並べてデータ組をs個作成して並べたものである。
である。つまり、ビットリバース順序とは、i・s個のデータを、先頭のデータからi個ずつ8個おきに並べてデータ組をs個作成して並べたものである。
以上のように、ビットリバース順序の各データ組Qs(s=0,1,..,7)を構成するデータのiデータ目は、逐次順序におけるデータ組Piを構成するsデータ目のデータである。すなわち、
Qs(i)=Pi(s)
である。このように、Qs(i)とPi(s)とは、各データ組を構成するデータについて、データ組の順序とデータ組内のデータ位置に対する順序が入れ替えられた関係にある。従って、ビットリバース順序で入力されたデータを、ビットリバース順序に従って並べ替えると、逐次順序になる。
Qs(i)=Pi(s)
である。このように、Qs(i)とPi(s)とは、各データ組を構成するデータについて、データ組の順序とデータ組内のデータ位置に対する順序が入れ替えられた関係にある。従って、ビットリバース順序で入力されたデータを、ビットリバース順序に従って並べ替えると、逐次順序になる。
図3における各行ps(i)、及び図4における各行qs(i)は、それぞれ、次段のiデータ目に入力されるデータを示す。各データ組に含まれる8個の数字は、FFTのポイントのうちの1個を特定する識別情報であり、具体的にはx(n)の添え字nの値である。
なお、逐次順序及びビットリバース順序は、図3、4に例示されたものに限定されない。すなわち、逐次順序の各データ組は、上記のように、FFTのポイント数、サイクル数、並列に処理するデータ数に応じて、データを順に並べて作成すればよい。そして、ビットリバース順序の各データ組は、上記のように、逐次順序で入力されるデータの、サイクルの進行に対する順序とデータ位置に対する順序を入れ替えて作成すればよい。
第1のバタフライ演算処理部21は、図14のデータフロー500において2段階で行われる基数8のバタフライ演算処理の、1回目のバタフライ演算処理502(第1のバタフライ演算処理)を処理するバタフライ回路である。第1のバタフライ演算処理部21は、基数8バタフライ演算処理部21aから構成され、基数8バタフライ演算処理を行う。図5は連続して処理を行う第1から第4の4つのFFT処理(F1~F4)について、第1のバタフライ演算処理部21の処理順序を示しており、具体的には、第1のバタフライ演算処理部21は、0サイクル目から7サイクル目において、第1のFFT処理(F1)に関して、バタフライ演算処理502を構成する#0~#7の8回の基数8バタフライ演算処理を、図5に示す順序で処理を行う。
すなわち、サイクル0では、基数8バタフライ演算処理部21aは、第1のデータ並べ替え処理部11が出力する、基数8バタフライ演算処理#0に対応するビットリバース順序のデータ組Q0を入力して、基数8のバタフライ演算処理#0を行う。サイクル1では、基数8バタフライ演算処理部21aは、第1のデータ並べ替え処理部11が出力する、基数8バタフライ演算処理#1に対応するビットリバース順序のデータ組Q1を入力して、基数8のバタフライ演算処理#1を行う。サイクル2では、基数8バタフライ演算処理部21aは、第1のデータ並べ替え処理部11が出力する、基数8バタフライ演算処理#2に対応するビットリバース順序のデータ組Q2を入力して、基数8のバタフライ演算処理#2を行う。サイクル3では、基数8バタフライ演算処理部21aは、第1のデータ並べ替え処理部11が出力する、基数8バタフライ演算処理#3に対応するビットリバース順序のデータ組Q3を入力して、基数8のバタフライ演算処理#3を行う。以降のサイクルでも同様にして、サイクル4からサイクル7では、基数8バタフライ演算処理部21aは、第1のデータ並べ替え処理部11が出力する、基数8バタフライ演算処理#4~#7にそれぞれ対応するビットリバース順序のデータ組Q4~Q7を入力して、基数8のバタフライ演算処理#4~#7を行う。
同様に、第1のバタフライ演算処理部21は、8サイクル目から15サイクル目に第2のFFT処理(F2)に関する処理を、16サイクル目から23サイクル目に第3のFFT処理(F3)に関する処理を、24サイクル目から31サイクル目に第4のFFT処理(F4)に関する処理を行う。
同様に、第1のバタフライ演算処理部21は、8サイクル目から15サイクル目に第2のFFT処理(F2)に関する処理を、16サイクル目から23サイクル目に第3のFFT処理(F3)に関する処理を、24サイクル目から31サイクル目に第4のFFT処理(F4)に関する処理を行う。
第1のバタフライ演算処理部21は、バタフライ演算処理の結果を、データy(n)(n=0,1,・・・,63)として、図3の逐次順序で出力する。
第2のデータ並べ替え処理部12は、第1のバタフライ演算処理部21が逐次順序で出力するデータy(n)を、図6に示す順序(以降、「FFTフレーム相互配置ビットリバース順序」という。)に並べ替える。「FFTフレーム相互配置ビットリバース順序」は、連続して処理する複数のFFT処理に関して、ビットリバース順序で作成された1つのFFT処理あたりs個のデータ組Qsが、サイクルの進行に合わせて出力されるときの順序に係わり、出力順序指定52によって指定することができる。本実施形態では、FFTフレーム相互配置ビットリバース順序は、第1から第4のFFT処理のQ0を連続し、次に、第1から第4のFFT処理のQ1を連続し、次に、第1から第4のFFT処理のQ2を連続し、次に、第1から第4のFFT処理のQ3を連続し、次に、第1から第4のFFT処理のQ4を連続し、次に、第1から第4のFFT処理のQ5を連続し、次に、第1から第4のFFT処理のQ6を連続し、次に、第1から第4のFFT処理のQ7を連続した順序に指定する。
第2のデータ並べ替え処理部12は、読み出しアドレス生成部41が出力する読み出しアドレス51を入力して、出力順序を決定する。読み出しアドレス生成部41は、CPU(Central Processing Unit)などの上位回路(図示せず)から与えられる出力順序設定52を参照して、データ並べ替え処理部12に出力する読み出しアドレス51を生成する。
第2のデータ並べ替え処理部12は、読み出しアドレス生成部41が出力する読み出しアドレス51を入力して、出力順序を決定する。読み出しアドレス生成部41は、CPU(Central Processing Unit)などの上位回路(図示せず)から与えられる出力順序設定52を参照して、データ並べ替え処理部12に出力する読み出しアドレス51を生成する。
具体的には、第2のデータ並べ替え処理部12は、0サイクル目に第1のFFT処理のQ0、1サイクル目に第2のFFT処理のQ0、2サイクル目に第3のFFT処理のQ0、3サイクル目に第4のFFT処理のQ0、を出力する。同様に、4サイクル目に第1のFFT処理のQ1、5サイクル目に第2のFFT処理のQ1、6サイクル目に第3のFFT処理のQ1、4サイクル目に第4のFFT処理のQ1、を出力する。以下同様に、
8から11サイクル目に第1から第4のFFT処理のQ2、
12から15サイクル目に第1から第4のFFT処理のQ3、
16から19サイクル目に第1から第4のFFT処理のQ4、
20から23サイクル目に第1から第4のFFT処理のQ5、
24から27サイクル目に第1から第4のFFT処理のQ6、
28から31サイクル目に第1から第4のFFT処理のQ7、を出力する。
8から11サイクル目に第1から第4のFFT処理のQ2、
12から15サイクル目に第1から第4のFFT処理のQ3、
16から19サイクル目に第1から第4のFFT処理のQ4、
20から23サイクル目に第1から第4のFFT処理のQ5、
24から27サイクル目に第1から第4のFFT処理のQ6、
28から31サイクル目に第1から第4のFFT処理のQ7、を出力する。
すなわち、「FFTフレーム相互配置ビットリバース順序」は、連続して処理を行うF個のFFT処理(Fは2以上の正整数)のそれぞれのC番目のサイクル(Cは0≦C≦7の整数)の処理を、連続するサイクルにおいて処理するように、複数のFFT処理の処理順序を交互配置(インターリーブ)する順序といえる。
ひねり乗算処理部31は、第1のバタフライ演算処理後に、FFT演算における複素平面上の複素回転を処理する回路であり、図14のデータフロー500における、ひねり乗算処理504に対応する。なお、ひねり乗算処理では、データの並へ替えは行われない。
ひねり乗算処理部31は、ひねり係数テーブル31a、及びひねり乗算部31b、から構成される。ひねり係数テーブル31aは、第2のデータ並べ替え処理部12が、「FFTフレーム相互配置ビットリバース順序」で出力するそれぞれのFFT処理におけるデータy(n)(n=0,1,・・・,63)に対応して、ひねり係数W(n)(n=0,1,・・・,63)を出力する。W(n)はデータy(n)に対応するひねり係数である。従って、ひねり乗算処理部31がひねり係数W(n)を出力する順序は、第2のデータ並べ替え処理部12が並べ替えたデータを出力する順序である「FFTフレーム相互配置ビットリバース順序」で一意に決定される。具体的には、第2のデータ並べ替え処理部12が図6に示す「FFTフレーム相互配置ビットリバース順序」で出力する場合、ひねり係数テーブル31aは、図7に示す順序でひねり係数を出力する。図6、及び図7から明らかのように、第2のデータ並べ替え処理部12が出力するy(n)に対して、ひねり乗算処理部31が出力するひねり係数W(n)(n=0,1,・・・,63)が対応する。
ひねり乗算部31bは、第2のデータ並べ替え処理部12が出力するy(n)とひねり乗算処理部31が出力するひねり係数W(n)とを乗算することでひねり乗算処理を行い、第2のバタフライ演算処理部22に出力する。
ひねり乗算処理部31は、ひねり係数テーブル31a、及びひねり乗算部31b、から構成される。ひねり係数テーブル31aは、第2のデータ並べ替え処理部12が、「FFTフレーム相互配置ビットリバース順序」で出力するそれぞれのFFT処理におけるデータy(n)(n=0,1,・・・,63)に対応して、ひねり係数W(n)(n=0,1,・・・,63)を出力する。W(n)はデータy(n)に対応するひねり係数である。従って、ひねり乗算処理部31がひねり係数W(n)を出力する順序は、第2のデータ並べ替え処理部12が並べ替えたデータを出力する順序である「FFTフレーム相互配置ビットリバース順序」で一意に決定される。具体的には、第2のデータ並べ替え処理部12が図6に示す「FFTフレーム相互配置ビットリバース順序」で出力する場合、ひねり係数テーブル31aは、図7に示す順序でひねり係数を出力する。図6、及び図7から明らかのように、第2のデータ並べ替え処理部12が出力するy(n)に対して、ひねり乗算処理部31が出力するひねり係数W(n)(n=0,1,・・・,63)が対応する。
ひねり乗算部31bは、第2のデータ並べ替え処理部12が出力するy(n)とひねり乗算処理部31が出力するひねり係数W(n)とを乗算することでひねり乗算処理を行い、第2のバタフライ演算処理部22に出力する。
第2のバタフライ演算処理部22は、図14のデータフロー500において2段階で行われる基数8のバタフライ演算処理の、2回目のバタフライ演算処理503(第2のバタフライ演算処理)を処理するバタフライ回路である。第2のバタフライ演算処理部22は、基数8バタフライ演算処理部22aから構成され、基数8バタフライ演算処理を行う。
図8は連続して処理を行う第1から第4の4つのFFT処理(F1~F4)について、第1のバタフライ演算処理部21の処理順序を示しており、具体的には、第1のバタフライ演算処理部22は、第1から第4のFFT処理(F1~F3)に関して、0サイクル目から3サイクル目において、バタフライ演算処理503を構成する#0の基数8バタフライ演算処理を行う。同様に、第1のバタフライ演算処理部22は、第1から第4のFFT処理(F1~F3)に関して、
4サイクル目から7サイクル目において、バタフライ演算処理503を構成する#1の、
8サイクル目から11サイクル目において、バタフライ演算処理503を構成する#2の、
12サイクル目から15サイクル目において、バタフライ演算処理503を構成する#3の、
16サイクル目から19サイクル目において、バタフライ演算処理503を構成する#4の、
20サイクル目から23サイクル目において、バタフライ演算処理503を構成する#5の、
24サイクル目から27サイクル目において、バタフライ演算処理503を構成する#6の、
28サイクル目から31サイクル目において、バタフライ演算処理503を構成する#7の、
基数8バタフライ演算処理を行う。
4サイクル目から7サイクル目において、バタフライ演算処理503を構成する#1の、
8サイクル目から11サイクル目において、バタフライ演算処理503を構成する#2の、
12サイクル目から15サイクル目において、バタフライ演算処理503を構成する#3の、
16サイクル目から19サイクル目において、バタフライ演算処理503を構成する#4の、
20サイクル目から23サイクル目において、バタフライ演算処理503を構成する#5の、
24サイクル目から27サイクル目において、バタフライ演算処理503を構成する#6の、
28サイクル目から31サイクル目において、バタフライ演算処理503を構成する#7の、
基数8バタフライ演算処理を行う。
すなわち、サイクル0では、基数8バタフライ演算処理部22aは、第1のFFT処理(F1)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#0に対応するビットリバース順序のデータ組Q0を入力して、基数8のバタフライ演算処理#0を行う。サイクル1では、基数8バタフライ演算処理部22aは、第2のFFT処理(F2)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#0に対応するビットリバース順序のデータ組Q0を入力して、基数8のバタフライ演算処理#0を行う。サイクル2では、基数8バタフライ演算処理部22aは、第3のFFT処理(F3)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#0に対応するビットリバース順序のデータ組Q0を入力して、基数8のバタフライ演算処理#0を行う。サイクル3では、基数8バタフライ演算処理部22aは、第4のFFT処理(F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#0に対応するビットリバース順序のデータ組Q0を入力して、基数8のバタフライ演算処理#0を行う。
以降のサイクルでも同様にして、
サイクル4からサイクル7では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#1に対応するビットリバース順序のデータ組Q1を入力して、基数8のバタフライ演算処理#1を、
サイクル8からサイクル11では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#2に対応するビットリバース順序のデータ組Q2を入力して、基数8のバタフライ演算処理#2を、
サイクル12からサイクル15では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#3に対応するビットリバース順序のデータ組Q3を入力して、基数8のバタフライ演算処理#3を、
サイクル16からサイクル19では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#4に対応するビットリバース順序のデータ組Q4を入力して、基数8のバタフライ演算処理#4を、
サイクル20からサイクル23では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#5に対応するビットリバース順序のデータ組Q5を入力して、基数8のバタフライ演算処理#5を、
サイクル24からサイクル27では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#6に対応するビットリバース順序のデータ組Q6を入力して、基数8のバタフライ演算処理#6を、
サイクル28からサイクル31では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#7に対応するビットリバース順序のデータ組Q7を入力して、基数8のバタフライ演算処理#7を、行う。
サイクル4からサイクル7では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#1に対応するビットリバース順序のデータ組Q1を入力して、基数8のバタフライ演算処理#1を、
サイクル8からサイクル11では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#2に対応するビットリバース順序のデータ組Q2を入力して、基数8のバタフライ演算処理#2を、
サイクル12からサイクル15では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#3に対応するビットリバース順序のデータ組Q3を入力して、基数8のバタフライ演算処理#3を、
サイクル16からサイクル19では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#4に対応するビットリバース順序のデータ組Q4を入力して、基数8のバタフライ演算処理#4を、
サイクル20からサイクル23では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#5に対応するビットリバース順序のデータ組Q5を入力して、基数8のバタフライ演算処理#5を、
サイクル24からサイクル27では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#6に対応するビットリバース順序のデータ組Q6を入力して、基数8のバタフライ演算処理#6を、
サイクル28からサイクル31では、基数8バタフライ演算処理部22aは、第1から第4の4つのFFT処理(F1~F4)に関して、第2のデータ並べ替え処理部12が出力する、基数8バタフライ演算処理#7に対応するビットリバース順序のデータ組Q7を入力して、基数8のバタフライ演算処理#7を、行う。
第2のバタフライ演算処理部22は、第1から第4の4つのFFT処理(F1~F4)に関して、バタフライ演算処理の結果X(k)(n=0,1,・・・,63)を、同じくFFTフレーム相互配置ビットリバース順序で出力する。
第1のデータ並べ替え処理部11、及び第2のデータ並べ替え処理部12は、入力されたデータを一旦記憶し、記憶したデータの選択及び出力を制御することによって、図4のビットリバース順序、図6のFFTフレーム相互配置ビットリバース順序のそれぞれに従ったデータの並べ替え処理が実現される。以下に、データ並べ替え処理部の具体例を示す。
第1のデータ並べ替え処理部11は、例えば図9に示すデータ並べ替え処理部100で実現することができる。
データ並べ替え処理部100は、入力情報103として入力される8個のデータからなるデータ組A~Hを、FIFOバッファ(First In First Out Buffer:先入れ先出しバッファ)における先入れ順序で入力して、データ記憶位置101a~101hに書き込み、記憶する。具体的には、データ記憶位置101a~101hのそれぞれに、データ組A~Hが記憶される。
次に、データ並べ替え処理部100は、FIFOバッファにおける先出し順序で、記憶しているデータを2データ組ずつ出力する。具体的には、データ並べ替え処理部100は、データ読み出し位置102a~102hのそれぞれから8個のデータを読み出して1つのデータ組とし、8つのデータ組a~hを出力情報104として出力する。このように、データ組a~hは、サイクル順に並べられたデータ組A~Hに含まれるデータを、データ位置の順に並べ替えて1つの組としたものである。
一方、図10は、第2のデータ並べ替え処理部12の実現例を示すデータ並べ替え処理部200の構成図である。データ並べ替え処理部200は、4つの部分データ並べ替え処理部206a、206b、206c、206d、から構成され、それぞれ第1から第4のFFT処理(F1~F4)に対応する。
まず、第1のFFT処理(F1)に関して、部分データ並べ替え処理部206aにおいて、入力データ203として入力される8個のデータからなるデータ組A~Hを、FIFOバッファにおける先入れ順序で入力して、データ記憶位置201a~201hに書き込み、記憶する。すなわち、サイクル順に対応するデータ記憶位置201a~201hのそれぞれに、データ組A~Hが順に記憶される。このとき、記憶されたデータをデータ位置の順、すなわち、データ記憶位置201a~201hの順に見ると、データ記憶位置201a~201hのそれぞれには、データ組a~hが記憶されている。
同様に、第2のFFT処理(F2)に関して、部分データ並べ替え処理部206bにおいて、入力データ203として入力される8個のデータからなるデータ組A~Hを、FIFOバッファにおける先入れ順序で入力して、データ記憶位置201a~201hに書き込み、記憶する。第3のFFT処理(F3)に関して、部分データ並べ替え処理部206cにおいて、入力データ203として入力される8個のデータからなるデータ組A~Hを、FIFOバッファにおける先入れ順序で入力して、データ記憶位置201a~201hに書き込み、記憶する。第4のFFT処理(F4)に関して、部分データ並べ替え処理部206dにおいて、入力データ203として入力される8個のデータからなるデータ組A~Hを、FIFOバッファにおける先入れ順序で入力して、データ記憶位置201a~201hに書き込み、記憶する。
次に、データ並べ替え処理部200は、記憶しているデータを、読み出し回路205により1データ組ずつ読み出して、出力データ204として出力する。このとき、読み出し回路205は、読み出しアドレス51を参照して、部分データ並べ替え処理部206a~206dの中からいずれか1つを選択し、さらに選択した部分データ並べ替え処理部のデータ記憶位置201a~201hの中からいずれか1つを選択して、データ記憶位置201a~201hに記憶されている8個のデータのいずれか1つを1回の読み出し動作で読み出す。このように、読み出しアドレス51に任意に指定可能な所望の組み合わせ、及び順番で読み出しアドレスを与えることにより、任意の組み合わせ、及び順番でデータを読み出すことができる。例えば、読み出しアドレス51に、部分データ並べ替え処理部206aのアドレス0、部分データ並べ替え処理部206bのアドレス0、部分データ並べ替え処理部206cのアドレス0、部分データ並べ替え処理部206dのアドレス0、
部分データ並べ替え処理部206aのアドレス1、部分データ並べ替え処理部206bのアドレス1、部分データ並べ替え処理部206cのアドレス1、部分データ並べ替え処理部206dのアドレス1、
部分データ並べ替え処理部206aのアドレス2、部分データ並べ替え処理部206bのアドレス2、部分データ並べ替え処理部206cのアドレス2、部分データ並べ替え処理部206dのアドレス2、
部分データ並べ替え処理部206aのアドレス3、部分データ並べ替え処理部206bのアドレス3、部分データ並べ替え処理部206cのアドレス3、部分データ並べ替え処理部206dのアドレス3、
部分データ並べ替え処理部206aのアドレス4、部分データ並べ替え処理部206bのアドレス4、部分データ並べ替え処理部206cのアドレス4、部分データ並べ替え処理部206dのアドレス4、
部分データ並べ替え処理部206aのアドレス5、部分データ並べ替え処理部206bのアドレス5、部分データ並べ替え処理部206cのアドレス5、部分データ並べ替え処理部206dのアドレス5、
部分データ並べ替え処理部206aのアドレス6、部分データ並べ替え処理部206bのアドレス6、部分データ並べ替え処理部206cのアドレス6、部分データ並べ替え処理部206dのアドレス6、
部分データ並べ替え処理部206aのアドレス7、部分データ並べ替え処理部206bのアドレス7、部分データ並べ替え処理部206cのアドレス7、部分データ並べ替え処理部206dのアドレス7、
の順番で読み出しアドレスを与えた場合、データ並べ替え処理部200は、第1のFFT処理(F1)のデータ組a、第2のFFT処理(F2)のデータ組a、第3のFFT処理(F3)のデータ組a、第4のFFT処理(F4)のデータ組a、の順序で、記憶しているデータを出力し、それ以降も同様に、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組b、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組c、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組d、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組e、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組f、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組g、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組h、
の順番で、記憶しているデータを出力する。すなわち、図6に示したFFTフレーム相互配置ビットリバース順序でデータが出力される。ここで、データ組a~hは、サイクル順に並べられたデータ組A~Hに含まれるデータを、データ位置の順に並べ替えて1つの組としたものである。
部分データ並べ替え処理部206aのアドレス1、部分データ並べ替え処理部206bのアドレス1、部分データ並べ替え処理部206cのアドレス1、部分データ並べ替え処理部206dのアドレス1、
部分データ並べ替え処理部206aのアドレス2、部分データ並べ替え処理部206bのアドレス2、部分データ並べ替え処理部206cのアドレス2、部分データ並べ替え処理部206dのアドレス2、
部分データ並べ替え処理部206aのアドレス3、部分データ並べ替え処理部206bのアドレス3、部分データ並べ替え処理部206cのアドレス3、部分データ並べ替え処理部206dのアドレス3、
部分データ並べ替え処理部206aのアドレス4、部分データ並べ替え処理部206bのアドレス4、部分データ並べ替え処理部206cのアドレス4、部分データ並べ替え処理部206dのアドレス4、
部分データ並べ替え処理部206aのアドレス5、部分データ並べ替え処理部206bのアドレス5、部分データ並べ替え処理部206cのアドレス5、部分データ並べ替え処理部206dのアドレス5、
部分データ並べ替え処理部206aのアドレス6、部分データ並べ替え処理部206bのアドレス6、部分データ並べ替え処理部206cのアドレス6、部分データ並べ替え処理部206dのアドレス6、
部分データ並べ替え処理部206aのアドレス7、部分データ並べ替え処理部206bのアドレス7、部分データ並べ替え処理部206cのアドレス7、部分データ並べ替え処理部206dのアドレス7、
の順番で読み出しアドレスを与えた場合、データ並べ替え処理部200は、第1のFFT処理(F1)のデータ組a、第2のFFT処理(F2)のデータ組a、第3のFFT処理(F3)のデータ組a、第4のFFT処理(F4)のデータ組a、の順序で、記憶しているデータを出力し、それ以降も同様に、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組b、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組c、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組d、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組e、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組f、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組g、
第1から第4のFFT処理(F1~F4)にそれぞれ対応する4つのデータ組h、
の順番で、記憶しているデータを出力する。すなわち、図6に示したFFTフレーム相互配置ビットリバース順序でデータが出力される。ここで、データ組a~hは、サイクル順に並べられたデータ組A~Hに含まれるデータを、データ位置の順に並べ替えて1つの組としたものである。
以上説明したように、FFT装置10において、第1のデータ並べ替え処理部11、及び第2のデータ並べ替え処理部12によって、図3の逐次順序、図4のビットリバース順序、図6のFFTフレーム相互配置ビットリバース順序のそれぞれに従った2回の並べ替え処理が行われる。
次に、本発明の第2の実施形態に係るフィルタ処理部420の詳細を説明する。
フィルタ処理部420は、FFT回路10の処理後に、複素数乗算による複素数フィルタ処理を行う回路である。フィルタ処理部420は、フィルタ係数テーブル421、及びフィルタ乗算部422、から構成される。フィルタ係数テーブル421は、FFT回路10が複素数信号431に「FFTフレーム相互配置ビットリバース順序」で出力するデータX(k)(k=0,1,・・・,63)に対応して、フィルタ係数C(k)(k=0,1,・・・,63)を出力する。C(k)はデータX(k)に対応するフィルタ係数である。従って、フィルタ係数テーブル421がフィルタ係数C(k)を出力する順序は、FFT回路10がX(k)を出力する順序である「FFTフレーム相互配置ビットリバース順序」で一意に決定される。
具体的には、FFT回路10が図6に示す「FFTフレーム相互配置ビットリバース順序」で出力する場合、フィルタ係数テーブル421は、図11に示す順序でフィルタ係数を出力する。図6、及び図11から明らかのように、FFT回路10が出力するデータX(k)に対して、フィルタ係数C(k)(k=0,1,・・・,63)が対応する。
フィルタ乗算部422は、FFT回路10が出力するデータX(k)とフィルタ係数テーブル421が出力するフィルタ係数C(k)とを乗算することでフィルタ乗算処理を行い、複素数信号434に出力する。
ここで、本実施形態が第2のデータ並べ替え処理部12の出力以降で採用するデータ順序である「FFTフレーム相互配置ビットリバース順序」と、第2のデータ並べ替え処理部12の入力以前で採用する「ビットリバース順序」との違いについて説明する。
ここで、本実施形態が第2のデータ並べ替え処理部12の出力以降で採用するデータ順序である「FFTフレーム相互配置ビットリバース順序」と、第2のデータ並べ替え処理部12の入力以前で採用する「ビットリバース順序」との違いについて説明する。
本実施形態において、ひねり乗算処理部31がひねり係数W(n)を出力する順序は、第2のデータ並べ替え処理部12の出力順序であるFFTフレーム相互配置ビットリバース順序で決定され、具体的には図7で示す順序で出力する。
図7において明らかのように、ひねり係数W(n)におけるws(0)からws(7)のそれぞれの値は、サイクル0からサイクル3まで同一であり、サイクル4からサイクル7まで同一であり、それ以降のサイクルも第1から第4のFFT処理(F1~F3)に対応する4サイクル毎に同一である。
ここで、ひねり乗算処理部31の消費電力について着目すると、このws(0)からws(7)までの8個のデータの値の変化の大きさが、消費電力に大きく影響する。具体的には、ひねり係数W(n)を2進数で表現した2進数値において、ws(0)からws(7)までの8個のデータのビット単位の動作率(トグル率)が、消費電力に大きく影響する。なぜなら、CMOS(Complementary Metal Oxide Semiconductor)回路により実現したデジタル信号処理回路の動的な消費電力(ダイナミック電力)Pは、下記に示す式(4)で表現することができ、
P=(1/2)*a*C*V2*f・・・(4)
ここで、
a:回路動作率、
C:負荷容量、
V:電圧、
f:動作周波数
ws(0)からws(7)までの8個のデータのビット単位の動作率が、回路動作率aに大きく影響するからである。すなわち、ws(0)からws(7)までの8個のデータのビット単位の動作率が小さくなる出力順序を選択することが、ひねり乗算処理部31の消費電力の低減に有効である。
a:回路動作率、
C:負荷容量、
V:電圧、
f:動作周波数
ws(0)からws(7)までの8個のデータのビット単位の動作率が、回路動作率aに大きく影響するからである。すなわち、ws(0)からws(7)までの8個のデータのビット単位の動作率が小さくなる出力順序を選択することが、ひねり乗算処理部31の消費電力の低減に有効である。
本実施形態の「FFTフレーム相互配置ビットリバース順序」は、第1から第4のFFT処理(F1~F3)に対応する4サイクル内では、ひねり係数W(n)の値が変化しないため、例えば「ビットリバース順序」と比較すると、ひねり係数W(n)に係る動作率を小さくすることができる。その結果、ひねり乗算処理部31に係る消費電力を小さくすることができる順序といえる。
同様に、本実施形態のフィルタ処理部420がフィルタ係数C(k)を出力する順序は、第2のデータ並べ替え処理部12の出力順序であるFFTフレーム相互配置ビットリバース順序で決定され、具体的には図11で示す順序で出力する。
図11において明らかのように、フィルタ係数C(k)におけるcs(0)からcs(7)のそれぞれの値は、サイクル0からサイクル3まで同一であり、サイクル4からサイクル7まで同一であり、それ以降のサイクルも第1から第4のFFT処理(F1~F3)に対応する4サイクル毎に同一である。
本実施形態の「FFTフレーム相互配置ビットリバース順序」は、第1から第4のFFT処理(F1~F3)に対応する4サイクル内では、フィルタ係数C(k)の値が変化しないため、例えば「ビットリバース順序」と比較すると、フィルタ係数C(k)に係る動作率を小さくすることができる。その結果、フィルタ処理部420に係る消費電力を小さくすることができる順序といえる。
以上のように、本実施形態では、FFT装置10は、出力順序設定52を用いて順序を指定することによって、任意の順序でデータを出力することができる。例えば、連続して処理を行う複数のFFT処理について、処理順序を交互配置(インターリーブ)することで、ひねり演算処理やフィルタ演算処理に係る電力を小さくすることができる。その結果、デジタルフィルタ処理全体の消費電力を低減することができる。
なお、本実施形態では、64ポイントFFT処理(N=64)を8データ並列(P=8)で8サイクル(M=N/P=8)かけて処理する場合について説明したが、FFT処理のポイント数は64に限らない。任意の2以上の整数Nについて、本実施形態を同様に適用してもよい。また、データ並列数は8に限らず、N以下の任意の整数Pについて、Pデータ並列で処理してもよい。この場合、1つのNポイントFFT処理はC=N/Pサイクルで処理される。
また、本実施形態では、連続して処理を行う4つのFFT処理の処理順序を交互配置(インターリーブ)する場合を例として説明したが、交互配置するFFT処理数は4に限らない。任意の2以上の整数Fについて、連続して処理を行うF個のFFT処理の処理順序を交互配置してもよい。このとき、ひねり係数W(n)やフィルタ係数C(k)に係る動作率を1/Fに低減することが可能であり、それに応じてひねり演算処理やフィルタ演算処理に係る電力を小さくすることができる。
また、本実施形態では、FFT処理を例として説明したが、IFFTにおいても同様である。すなわち、本実施形態の制御方法をIFFT処理装置に適用して、IFFT処理内やIFFT処理後段の処理順序を最適化すれば、IFFT処理内やIFFT処理後段の消費電力を低減することができる。
(第3の実施形態)
本発明の第3の実施形態に係るデジタルフィルタ回路は、第2の実施形態に係るデジタルフィルタ回路400と同一の回路構成において、出力順序指定52に第2の実施形態とは異なる順序を指定した実施形態である。
本発明の第3の実施形態に係るデジタルフィルタ回路は、第2の実施形態に係るデジタルフィルタ回路400と同一の回路構成において、出力順序指定52に第2の実施形態とは異なる順序を指定した実施形態である。
第3の実施形態に係る第2のデータ並べ替え処理部12は、第1のバタフライ演算処理部21が逐次順序で出力するデータy(n)を、図12に示す順序(以降、「FFTフレーム相互配置電力最適化ビットリバース順序」という。)に並べ替える。「FFTフレーム相互配置電力最適化ビットリバース順序」は、連続して処理する複数のFFT処理に関して、ビットリバース順序で作成された1つのFFT処理あたりs個のデータ組Qsが、サイクルの進行に合わせて出力されるときの順序に係わり、出力順序指定52によって指定することができる。本実施形態では、FFTフレーム相互配置電力最適化ビットリバース順序は、第1から第4のFFT処理のQ3を連続し、次に、第1から第4のFFT処理のQ5を連続し、次に、第1から第4のFFT処理のQ1を連続し、次に、第1から第4のFFT処理のQ7を連続し、次に、第1から第4のFFT処理のQ0を連続し、次に、第1から第4のFFT処理のQ2を連続し、次に、第1から第4のFFT処理のQ6を連続し、次に、第1から第4のFFT処理のQ4を連続した順序に指定する。
第2のデータ並べ替え処理部12は、読み出しアドレス生成部41が出力する読み出しアドレス51を入力して、出力順序を決定する。 読み出しアドレス生成部41は、CPU(Central Processing Unit)などの上位回路(図示せず)から与えられる出力順序設定52を参照して、データ並べ替え処理部12に出力する読み出しアドレス51を生成する。
具体的には、第2のデータ並べ替え処理部12は、0サイクル目に第1のFFT処理のQ3、1サイクル目に第2のFFT処理のQ3、2サイクル目に第3のFFT処理のQ3、3サイクル目に第4のFFT処理のQ3、を出力する。同様に、4サイクル目に第1のFFT処理のQ5、5サイクル目に第2のFFT処理のQ5、6サイクル目に第3のFFT処理のQ5、4サイクル目に第4のFFT処理のQ5、を出力する。以下同様に、
8から11サイクル目に第1から第4のFFT処理のQ1を順に、
12から15サイクル目に第1から第4のFFT処理のQ7を順に、
16から19サイクル目に第1から第4のFFT処理のQ0を順に、
20から23サイクル目に第1から第4のFFT処理のQ2を順に、
24から27サイクル目に第1から第4のFFT処理のQ6を順に、
28から31サイクル目に第1から第4のFFT処理のQ4を順に、出力する。
すなわち、「FFTフレーム相互配置電力最適化ビットリバース順序」は、第2の実施形態に係る「FFTフレーム相互配置化ビットリバース順序」と同様に、連続して処理を行うF個のFFT処理(Fは2以上の正整数)のそれぞれのC番目のサイクル(Cは0≦C≦7の整数)の処理を、連続するサイクルにおいて処理するように、複数のFFT処理の処理順序を交互配置(インターリーブ)する順序といえる。
8から11サイクル目に第1から第4のFFT処理のQ1を順に、
12から15サイクル目に第1から第4のFFT処理のQ7を順に、
16から19サイクル目に第1から第4のFFT処理のQ0を順に、
20から23サイクル目に第1から第4のFFT処理のQ2を順に、
24から27サイクル目に第1から第4のFFT処理のQ6を順に、
28から31サイクル目に第1から第4のFFT処理のQ4を順に、出力する。
すなわち、「FFTフレーム相互配置電力最適化ビットリバース順序」は、第2の実施形態に係る「FFTフレーム相互配置化ビットリバース順序」と同様に、連続して処理を行うF個のFFT処理(Fは2以上の正整数)のそれぞれのC番目のサイクル(Cは0≦C≦7の整数)の処理を、連続するサイクルにおいて処理するように、複数のFFT処理の処理順序を交互配置(インターリーブ)する順序といえる。
第3の実施形態に係るひねり乗算処理部31は、第1のバタフライ演算処理後に、FFT演算における複素平面上の複素回転を処理する回路であり、図14のデータフロー500における、ひねり乗算処理504に対応する。なお、ひねり乗算処理では、データの並へ替えは行われない。
ひねり乗算処理部31は、ひねり係数テーブル31a、及びひねり乗算部31b、から構成される。ひねり係数テーブル31aは、第2のデータ並べ替え処理部12が、「FFTフレーム相互配置電力最適化ビットリバース順序」で出力するそれぞれのFFT処理におけるデータy(n)(n=0,1,・・・,63)に対応して、ひねり係数W(n)(n=0,1,・・・,63)を出力する。W(n)はデータy(n)に対応するひねり係数である。従って、ひねり乗算処理部31がひねり係数W(n)を出力する順序は、第2のデータ並べ替え処理部12が並べ替えたデータを出力する順序である「FFTフレーム相互配置電力最適化ビットリバース順序」で一意に決定される。具体的には、第2のデータ並べ替え処理部12が図12に示す「FFTフレーム相互配置電力最適化ビットリバース順序」で出力する場合、ひねり係数テーブル31aは、図13に示す順序でひねり係数を出力する。図12及び、図13から明らかのように、第2のデータ並べ替え処理部12が出力するy(n)に対して、ひねり乗算処理部31が出力するひねり係数W(n)(n=0,1,・・・,63)が対応する。
ここで、第2の実施形態が第2のデータ並べ替え処理部12の出力以降で採用するデータ順序である「FFTフレーム相互配置ビットリバース順序」と、本実施形態が第2のデータ並べ替え処理部12の出力以降で採用するデータ順序である「FFTフレーム相互配置電力最適化ビットリバース順序」との違いについて説明する。
第2の実施形態と同様に本実施形態においても、FFT装置10の出力順序は、第2のデータ並べ替え処理部12の出力順序で決定される。それに応じて、本実施形態のひねり乗算処理部31がひねり係数W(n)を出力する順序は、第2のデータ並べ替え処理部12の出力順序で決定される。
図6に示す「FFTフレーム相互配置ビットリバース順序」及び、図12に示す「FFTフレーム相互配置電力最適化ビットリバース順序」において、データ組Qsはサイクル0からサイクル3まで同一であり、サイクル4からサイクル7まで同一であり、それ以降のサイクルも第1から第4のFFT処理(F1~F3)に対応する4サイクル毎に同一である。一方、データ組Qsはサイクル3からサイクル4、サイクル7からサイクル8、サイクル11からサイクル12、サイクル15からサイクル16、サイクル19からサイクル20、サイクル23からサイクル24、サイクル27からサイクル28、において変化するが、「FFTフレーム相互配置ビットリバース順序」と「FFTフレーム相互配置電力最適化ビットリバース順序」ではその変化する順序が異なる。
具体的には、「FFTフレーム相互配置ビットリバース順序」では、Q0、Q1、Q2、Q3、Q4、Q5、Q6、Q7の順序で変化するのに対して、「FFTフレーム相互配置電力最適化ビットリバース順序」では、Q3、Q5、Q1、Q7、Q0、Q2、Q6、Q4の順序で変化する。従って、ひねり係数W(n)も図13に示すように、「FFTフレーム相互配置電力最適化ビットリバース順序」で変化することになる。
ひねり係数W(n)の値はFFT処理に固有の値であり、FFT装置10が入力するデータの値には依存しない。図13においてデータ組W0~W7は、それぞれws(0)からws(7)までの8個のデータからなり、ws(0)からws(7)の値は、サイクル0~サイクル7まで、FFTフレーム相互配置ビットリバース順序である、W3、W5、W1、W7、W0、W2、W6、W4、の順序に応じて変化する。
ここで、ひねり乗算処理部31の消費電力について着目すると、このws(0)からws(7)までの8個のデータの値の変化の大きさが、消費電力に大きく影響する。具体的には、ひねり係数W(n)を2進数で表現した2進数値において、ws(0)からws(7)までの8個のデータのビット単位の動作率(トグル率)が、消費電力に大きく影響する。なぜなら、CMOS(Complementary Metal Oxide Semiconductor)回路により実現したデジタル信号処理回路の動的な消費電力(ダイナミック電力)Pは、下記に示す式(4)で表現することができ、
P=(1/2)*a*C*V2*f・・・(4)
ここで、
a:回路動作率、
C:負荷容量、
V:電圧、
f:動作周波数
ws(0)からws(7)までの8個のデータのビット単位の動作率が、回路動作率aに大きく影響するからである。すなわち、ws(0)からws(7)までの8個のデータのビット単位の動作率が小さくなる出力順序を選択することが、ひねり乗算処理部31の消費電力の低減に有効である。
a:回路動作率、
C:負荷容量、
V:電圧、
f:動作周波数
ws(0)からws(7)までの8個のデータのビット単位の動作率が、回路動作率aに大きく影響するからである。すなわち、ws(0)からws(7)までの8個のデータのビット単位の動作率が小さくなる出力順序を選択することが、ひねり乗算処理部31の消費電力の低減に有効である。
ws(0)からws(7)までの8個のデータのビット単位の動作率が小さくなる出力順序を選択する具体的な方法として、ハミング距離を指標とする方法がある。ハミング距離は2つのデータ間の距離であり、2進数データの場合、2つの2進数データで異なっているビット数に等しい。すなわち、あるひねり係数データが変化した場合の動作率は、変化前の係数データ値と変化後の係数データ値とのハミング距離に等しい。従って、ひねり係数W(n)に関する動作率は、FFT処理中のひねり係数W(n)に関するハミング距離の総和により算出することができる。
例えば、図13に示したFFTフレーム相互配置ビットリバース順序によるひねり係数W(n)に関する動作率は、ひねり係数W(i)とW(j)とのハミング距離をHamming(i,j)、データws(i)に関するハミング距離をH(i)と表記すると、
データws(0)は、サイクル0ではW(3),サイクル1ではW(5),サイクル2ではW(1),サイクル3ではW(7),サイクル4ではW(0),サイクル5ではW(2),サイクル6ではW(6),サイクル7ではW(4)であるので、
H(0)=Hamming(3,5)+Hamming(5,1)+Hamming(1,7)+Hamming(7,0)+Hamming(0,2)+Hamming(2,6)+Hamming(6,4)
により算出することができる。
同様に、H(1)~H(7)について、
H(1)=Hamming(11,13)+Hamming(13,9)+Hamming(9,15)+Hamming(15,8)+Hamming(8,10)+Hamming(10,14)+Hamming(14,12)
H(2)=Hamming(19,21)+Hamming(21,17)+Hamming(17,23)+Hamming(23,16)+Hamming(16,18)+Hamming(18,22)+Hamming(22,20)
H(3)=Hamming(27,29)+Hamming(29,25)+Hamming(25,31)+Hamming(31,24)+Hamming(24,26)+Hamming(26,30)+Hamming(30,28)
H(4)=Hamming(35,37)+Hamming(37,33)+Hamming(33,39)+Hamming(39,32)+Hamming(32,34)+Hamming(34,38)+Hamming(38,36)
H(5)=Hamming(43,45)+Hamming(45,41)+Hamming(41,47)+Hamming(47,40)+Hamming(40,42)+Hamming(42,46)+Hamming(46,44)
H(6)=Hamming(51,53)+Hamming(53,49)+Hamming(49,55)+Hamming(55,48)+Hamming(48,50)+Hamming(50,54)+Hamming(54,52)
H(7)=Hamming(59,61)+Hamming(61,57)+Hamming(57,63)+Hamming(63,56)+Hamming(56,58)+Hamming(58,62)+Hamming(62,60)
により算出することができる。
従って、ひねり係数W(n)に関する動作率Aは、ひねり係数W(n)に関するハミング距離の総和Pから
A=P=H(0)+H(1)+H(2)+H(3)+H(4)+H(5)+H(6)+H(7)
で求められる。
データws(0)は、サイクル0ではW(3),サイクル1ではW(5),サイクル2ではW(1),サイクル3ではW(7),サイクル4ではW(0),サイクル5ではW(2),サイクル6ではW(6),サイクル7ではW(4)であるので、
H(0)=Hamming(3,5)+Hamming(5,1)+Hamming(1,7)+Hamming(7,0)+Hamming(0,2)+Hamming(2,6)+Hamming(6,4)
により算出することができる。
同様に、H(1)~H(7)について、
H(1)=Hamming(11,13)+Hamming(13,9)+Hamming(9,15)+Hamming(15,8)+Hamming(8,10)+Hamming(10,14)+Hamming(14,12)
H(2)=Hamming(19,21)+Hamming(21,17)+Hamming(17,23)+Hamming(23,16)+Hamming(16,18)+Hamming(18,22)+Hamming(22,20)
H(3)=Hamming(27,29)+Hamming(29,25)+Hamming(25,31)+Hamming(31,24)+Hamming(24,26)+Hamming(26,30)+Hamming(30,28)
H(4)=Hamming(35,37)+Hamming(37,33)+Hamming(33,39)+Hamming(39,32)+Hamming(32,34)+Hamming(34,38)+Hamming(38,36)
H(5)=Hamming(43,45)+Hamming(45,41)+Hamming(41,47)+Hamming(47,40)+Hamming(40,42)+Hamming(42,46)+Hamming(46,44)
H(6)=Hamming(51,53)+Hamming(53,49)+Hamming(49,55)+Hamming(55,48)+Hamming(48,50)+Hamming(50,54)+Hamming(54,52)
H(7)=Hamming(59,61)+Hamming(61,57)+Hamming(57,63)+Hamming(63,56)+Hamming(56,58)+Hamming(58,62)+Hamming(62,60)
により算出することができる。
従って、ひねり係数W(n)に関する動作率Aは、ひねり係数W(n)に関するハミング距離の総和Pから
A=P=H(0)+H(1)+H(2)+H(3)+H(4)+H(5)+H(6)+H(7)
で求められる。
本実施形態の「FFTフレーム相互配置電力最適化ビットリバース順序」は、「FFTフレーム相互配置ビットリバース順序」の複数の候補の中から、このひねり係数W(n)に関する動作率Aが最も小さい順序を選択したものである。すなわち、本実施形態の「FFTフレーム相互配置電力最適化ビットリバース順序」は、「FFTフレーム相互配置ビットリバース順序」の複数の候補の中で、ひねり係数W(n)を出力するひねり係数テーブル31aに係る消費電力が最も小さい順序といえる。
一方、ひねり乗算処理部31を構成するひねり乗算部31bは、ひねり係数W(n)の動作率に加えて、第2のデータ並べ替え処理部12が出力するy(n)の動作率が影響するが、FFT装置10は任意のデータを入力するため、y(n)の動作率は、y(n)が出力される順序に係わらず、長期的には一定であると考えられる。同様に、FFT装置10を構成するデータ並べ替え処理部やバタフライ演算処理部についても、FFT装置10は任意のデータを入力するため、それら処理部の動作率は、処理の順序に係わらず、長期的には一定であると考えられる。従って、本実施形態の「FFTフレーム相互配置電力最適化ビットリバース順序」は、「FFTフレーム相互配置ビットリバース順序」の複数の候補の中で、FFT装置10の消費電力が最も小さい順序といえる。
以上のように、本実施形態でも、FFT装置10は、出力順序設定52を用いて順序を指定することによって、任意の順序でデータを出力することができる。例えば、連続して処理を行う複数のFFT処理について、処理順序を交互配置(インターリーブ)することで、ひねり演算処理やフィルタ演算処理に係る電力を小さくすることができる。その結果、デジタルフィルタ処理全体の消費電力を低減することができる。
なお、本実施形態では、64ポイントFFT処理(N=64)を8データ並列(P=8)で8サイクル(M=N/P=8)かけて処理する場合について説明したが、FFT処理のポイント数は64に限らない。任意の2以上の整数Nについて、本実施形態を同様に適用してもよい。また、データ並列数は8に限らず、N以下の任意の整数Pについて、Pデータ並列で処理してもよい。この場合、1つのNポイントFFT処理はC=N/Pサイクルで処理される。
また、本実施形態では、連続して処理を行う4つのFFT処理の処理順序を交互配置(インターリーブ)する場合を例として説明したが、交互配置するFFT処理数は4に限らない。任意の2以上の整数Fについて、連続して処理を行うF個のFFT処理の処理順序を交互配置してもよい。このとき、ひねり係数W(n)やフィルタ係数C(k)に係る動作率を1/Fに低減することが可能であり、それに応じてひねり演算処理やフィルタ演算処理に係る電力を小さくすることができる。
さらに本実施形態は、ひねり乗算処理に係る電力が最小となる順序で処理を行う。その結果、FFT処理全体の消費電力を低減することができる。
また、本実施形態では、FFT処理を例として説明したが、IFFTにおいても同様である。すなわち、本実施形態の制御方法をIFFT処理装置に適用して、IFFT処理内やIFFT処理後段の処理順序を最適化すれば、IFFT処理内やIFFT処理後段の消費電力を低減することができる。
上述の実施の形態では、本開示をハードウェアの構成として説明したが、本開示は、これに限定されるものではない。本開示は、フローチャートに記載の処理手順及びその他の実施の形態に記載の処理手順を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより実現することも可能である。
上記の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体は、例えば、磁気記録媒体、光磁気記録媒体、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリを含む。半導体メモリは、例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory)等である。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
なお、本開示は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
10 FFT装置(高速フーリエ変換装置)
11 第1のデータ並べ替え処理部(第1のデータ並べ替え処理手段)
12 第2のデータ並べ替え処理部(第2のデータ並べ替え処理手段、記憶手段)
21 第1のバタフライ演算処理部(バタフライ演算処理手段)
22 第2のバタフライ演算処理部
21a、22a 基数8バタフライ演算処理部
31 ひねり乗算処理部(ひねり乗算処理手段)
41 読み出しアドレス生成部(読み出しアドレス生成手段)
51 読み出しアドレス
52 出力順序設定
100、200 データ並べ替え処理部
101a~101h データ記憶位置
102a~102h データ読み出し位置
201a~201h データ記憶位置
202a~202h データ読み出し位置
400 デジタルフィルタ装置
420 フィルタ処理部(フィルタ処理手段)
421 フィルタ係数テーブル
422 フィルタ乗算部
431、434 複素数信号
500 データフロー
501 データ並べ替え処理
502、503 バタフライ演算処理
504 ひねり乗算処理
505a~505h 部分データフロー
11 第1のデータ並べ替え処理部(第1のデータ並べ替え処理手段)
12 第2のデータ並べ替え処理部(第2のデータ並べ替え処理手段、記憶手段)
21 第1のバタフライ演算処理部(バタフライ演算処理手段)
22 第2のバタフライ演算処理部
21a、22a 基数8バタフライ演算処理部
31 ひねり乗算処理部(ひねり乗算処理手段)
41 読み出しアドレス生成部(読み出しアドレス生成手段)
51 読み出しアドレス
52 出力順序設定
100、200 データ並べ替え処理部
101a~101h データ記憶位置
102a~102h データ読み出し位置
201a~201h データ記憶位置
202a~202h データ読み出し位置
400 デジタルフィルタ装置
420 フィルタ処理部(フィルタ処理手段)
421 フィルタ係数テーブル
422 フィルタ乗算部
431、434 複素数信号
500 データフロー
501 データ並べ替え処理
502、503 バタフライ演算処理
504 ひねり乗算処理
505a~505h 部分データフロー
Claims (10)
- 入力された時間領域の入力データに対して、連続するN個(Nは2以上の正整数)の入力データごとに、Mサイクル(Mは2以上の正整数)で高速フーリエ変換又は逆高速フーリエ変換を行う高速フーリエ変換装置であって、
前記高速フーリエ変換装置は、連続して処理を行うF個(Fは2以上の正整数)の高速フーリエ変換又は逆高速フーリエ変換において、
第1の順序で入力するF×N個の第1の入力データを並べ替えて、第2の順序で第1の出力データを出力する第1のデータ並べ替え処理手段と、
前記第1の出力データに対して、バタフライ演算処理を行い、前記第1の順序で第2の出力データを出力するバタフライ演算処理手段と、
前記第2の出力データを並べ替えて、第3の順序で第3の出力データを出力する第2のデータ並べ替え処理手段と、
前記第3の出力データに対して、ひねり係数を乗算してひねり乗算処理を行い、前記第3の順序で第4の出力データを出力するひねり乗算処理手段と、を含み、
前記第3の順序は、連続して処理を行うF個の高速フーリエ変換又は逆高速フーリエ変換のそれぞれにおけるC番目のサイクル(Cは0≦C≦M-1の整数)の処理を、連続するサイクルにおいて処理する順序である、ことを特徴とする高速フーリエ変換装置。 - 前記ひねり乗算処理手段は、前記第3の出力データに対して、前記第3の順序でひねり係数を出力してひねり乗算処理を行い、前記第3の順序は、前記ひねり係数の連続するサイクル間のビット遷移率が小さい順序である、ことを特徴とする請求項1に記載の高速フーリエ変換装置。
- 前記第2のデータ並べ替え処理手段は、
M×N個の前記第2の出力データを記憶する記憶手段と、
出力順序設定に基づいて、前記記憶手段からF×N個の前記第3の出力データの読み出しアドレスを生成する読み出しアドレス生成手段と、を備え、
複数の前記第2の出力データを前記第2の順序で記憶し、前記第3順序で読み出す、ことを特徴とする請求項1又は請求項2に記載の高速フーリエ変換装置。 - 請求項1から請求項3の何れか一項に記載の高速フーリエ変換装置と、
前記高速フーリエ変換装置が前記第3の順序で出力する出力データに対して、
前記第3の順序でフィルタ係数を出力してフィルタ乗算処理を行うフィルタ処理手段と、
を備えるデジタルフィルタ装置。 - 入力された時間領域の入力データに対して、連続するN個(Nは2以上の正整数)の入力データごとに、Mサイクル(Mは2以上の正整数)で高速フーリエ変換又は逆高速フーリエ変換を行う高速フーリエ変換装置が、
連続して処理を行うF個(Fは2以上の正整数)の高速フーリエ変換又は逆高速フーリエ変換において、
第1の順序で入力するF×N個の第1の入力データを並べ替えて、第2の順序で第1の出力データを出力し、
前記第1の出力データに対して、バタフライ演算処理を行い、前記第1の順序で第2の出力データを出力し、
前記第2の出力データを並べ替えて、第3の順序で第3の出力データを出力し、
前記第3の出力データに対して、ひねり係数を乗算してひねり乗算処理を行い、前記第3の順序で第4の出力データを出力し、
前記第3の順序は、連続して処理を行うF個の高速フーリエ変換又は逆高速フーリエ変換のそれぞれにおけるC番目のサイクル(Cは0≦C≦M-1の整数)の処理を、連続するサイクルにおいて処理する順序である、ことを特徴とする高速フーリエ変換方法。 - 前記ひねり乗算処理において、前記高速フーリエ変換装置は、前記第3の出力データに対して、前記第3の順序でひねり係数を出力してひねり乗算処理を行い、前記第3の順序は、前記ひねり係数の連続するサイクル間のビット遷移率が小さい順序である、ことを特徴とする請求項5に記載の高速フーリエ変換方法。
- 前記第2のデータ並べ替え処理において、前記高速フーリエ変換装置は、
M×N個の前記第2の出力データを記憶し、
出力順序設定に基づいて、M×N個の前記第2の出力データからF×N個の前記第3の出力データの読み出しアドレスを生成し、
複数の前記第2の出力データを前記第2の順序で記憶し、前記第3順序で読み出す、ことを特徴とする請求項5又は請求項6に記載の高速フーリエ変換方法。 - 入力された時間領域の入力データに対して、連続するN個(Nは2以上の正整数)の入力データごとに、Mサイクル(Mは2以上の正整数)で高速フーリエ変換又は逆高速フーリエ変換を行う高速フーリエ変換装置に、
連続して処理を行うF個(Fは2以上の正整数)の高速フーリエ変換又は逆高速フーリエ変換において、
第1の順序で入力するF×N個の第1の入力データを並べ替えて、第2の順序で第1の出力データを出力する処理と、
前記第1の出力データに対して、バタフライ演算処理を行い、前記第1の順序で第2の出力データを出力する処理と、
前記第2の出力データを並べ替えて、第3の順序で第3の出力データを出力し、
前記第3の出力データに対して、ひねり係数を乗算してひねり乗算処理を行い、前記第3の順序で第4の出力データを出力する処理と、
を実行させ、
前記第3の順序は、連続して処理を行うF個の高速フーリエ変換又は逆高速フーリエ変換のそれぞれにおけるC番目のサイクル(Cは0≦C≦M-1の整数)の処理を、連続するサイクルにおいて処理する順序である、ことを特徴とするプログラム。 - 前記ひねり乗算処理において、前記高速フーリエ変換装置に、前記第3の出力データに対して、前記第3の順序でひねり係数を出力してひねり乗算処理を実行させ、前記第3の順序は、前記ひねり係数の連続するサイクル間のビット遷移率が小さい順序である、ことを特徴とする請求項8に記載のプログラム。
- 前記第2のデータ並べ替え処理において、前記高速フーリエ変換装置に、
M×N個の前記第2の出力データを記憶する処理と、
出力順序設定に基づいて、M×N個の前記第2の出力データからF×N個の前記第3の出力データの読み出しアドレスを生成する処理と、
複数の前記第2の出力データを前記第2の順序で記憶し、前記第3順序で読み出す処理と、を実行させることを特徴とする請求項8又は請求項9に記載のプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022036908A JP2023131901A (ja) | 2022-03-10 | 2022-03-10 | 高速フーリエ変換装置、デジタルフィルタ装置、高速フーリエ変換方法、及びプログラム |
US18/118,459 US20230289397A1 (en) | 2022-03-10 | 2023-03-07 | Fast fourier transform device, digital filtering device, fast fourier transform method, and non-transitory computer-readable medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022036908A JP2023131901A (ja) | 2022-03-10 | 2022-03-10 | 高速フーリエ変換装置、デジタルフィルタ装置、高速フーリエ変換方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023131901A true JP2023131901A (ja) | 2023-09-22 |
Family
ID=87931893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022036908A Pending JP2023131901A (ja) | 2022-03-10 | 2022-03-10 | 高速フーリエ変換装置、デジタルフィルタ装置、高速フーリエ変換方法、及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230289397A1 (ja) |
JP (1) | JP2023131901A (ja) |
-
2022
- 2022-03-10 JP JP2022036908A patent/JP2023131901A/ja active Pending
-
2023
- 2023-03-07 US US18/118,459 patent/US20230289397A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230289397A1 (en) | 2023-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6288089B2 (ja) | デジタルフィルタ装置、デジタルフィルタ処理方法及びデジタルフィルタプログラムが記憶された記憶媒体 | |
JP6358096B2 (ja) | 高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラム | |
JP6256348B2 (ja) | 高速フーリエ変換回路、高速フーリエ変換処理方法及び高速フーリエ変換処理プログラム | |
KR101222597B1 (ko) | 메모리의 판독 및 기록방법, 메모리 제어방법과, 그것을이용한 연산장치 | |
JPWO2002069182A1 (ja) | フーリェ変換装置 | |
JP6489021B2 (ja) | デジタルフィルタ装置、デジタルフィルタ処理方法及びデジタルフィルタプログラム | |
JP5601327B2 (ja) | データ並べ替え回路、可変遅延回路、高速フーリエ変換回路、およびデータ並べ替え方法 | |
US11604852B2 (en) | Signal processing apparatus, method, program, and recording medium | |
KR102376492B1 (ko) | 실수값을 입력으로 하는 고속푸리에 변환장치 및 방법 | |
JP2015503785A (ja) | Fft/dftの逆順ソーティングシステム、方法およびその演算システム | |
JP2023131901A (ja) | 高速フーリエ変換装置、デジタルフィルタ装置、高速フーリエ変換方法、及びプログラム | |
JP6451647B2 (ja) | 高速フーリエ変換装置、高速フーリエ変換方法、及び高速フーリエ変換プログラム | |
US12019700B2 (en) | Signal processing apparatus, method, program, and recording medium | |
JP6436087B2 (ja) | デジタルフィルタ装置、デジタルフィルタ処理方法およびプログラム | |
JP2022152001A (ja) | 高速フーリエ変換装置及びデジタルフィルタ装置 | |
WO2021193947A1 (ja) | デジタルフィルタ装置 | |
JP6943283B2 (ja) | 高速フーリエ変換装置、データ並べ替え処理装置、高速フーリエ変換処理方法およびプログラム | |
JP6992745B2 (ja) | デジタルフィルタ装置、デジタルフィルタ処理方法およびデジタルフィルタ処理プログラム | |
CN116595297A (zh) | 一种支持输出剪枝的可重构混合基fft设计方法 |