JP5444287B2 - Arithmetic unit - Google Patents
Arithmetic unit Download PDFInfo
- Publication number
- JP5444287B2 JP5444287B2 JP2011127120A JP2011127120A JP5444287B2 JP 5444287 B2 JP5444287 B2 JP 5444287B2 JP 2011127120 A JP2011127120 A JP 2011127120A JP 2011127120 A JP2011127120 A JP 2011127120A JP 5444287 B2 JP5444287 B2 JP 5444287B2
- Authority
- JP
- Japan
- Prior art keywords
- fft
- register
- processing
- data
- stage
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
Description
本発明は、例えば、高速フーリエ変換(Fast Fourier Transformation、以下「FFT」という。)や、このFFTの1つである逆FFT(InverseFFT、以下「IFFT」」という。)の処理をハード(回路)で実行する演算装置において、FFT(又はIFFT)の演算を行う演算手段と、この演算時に使用するデータを格納する複数のメモリバンクとの間に位置し、FFT(又はIFFT)処理を実現するために要求されるメモリ量を削減するために、データをどのメモリバンクに書き込むかを制御するメモリ制御手段と、を備えた演算装置に関するものである。 In the present invention, for example, fast Fourier transformation (hereinafter referred to as “FFT”) and inverse FFT (Inverse FFT, hereinafter referred to as “IFFT”), which is one of the FFTs, are implemented as hardware (circuit). In order to realize FFT (or IFFT) processing, it is located between the computing means for performing FFT (or IFFT) computation and a plurality of memory banks storing data used at the time of computation. In order to reduce the amount of memory required, a memory control means for controlling which memory bank to write data to is provided .
近年、通信処理において直交波周波数分割多重(Orthogonal Frequency Division Multiplexing、以下「OFDM」という。)が多用され、具体的には 地上波デジタル放送、IEEE802.11a、g等の無線ローカル・エリア・ネットワーク(LAN)、電力線モデム等の伝送方式に採用されている。 In recent years, Orthogonal Frequency Division Multiplexing (hereinafter referred to as “OFDM”) is frequently used in communication processing. Specifically, wireless local area networks (such as terrestrial digital broadcasting, IEEE802.11a, g) ( LAN), power line modems and other transmission systems.
OFDMの処理の大部分はFFT(又はIFFT)処理であり、OFDMを実現するためには高速動作するFFT(又はIFFT)回路を小さく実現する必要がある。高速処理を実現するためにFFT(又はIFFT)処理は、ハードウェアで実現されるのが一般的である。このFFTについての概略が、例えば、非特許文献1に記載されている。
Most of the OFDM processing is FFT (or IFFT) processing, and in order to realize OFDM, it is necessary to realize a small FFT (or IFFT) circuit that operates at high speed. In order to realize high-speed processing, FFT (or IFFT) processing is generally realized by hardware. An outline of the FFT is described in
この非特許文献1に記載されているように、N点の離散Fourier変換(以下「DFT」という。)を計算するためにはN2 回の計算が必要であるが、FFTを用いるとNlogNに比例する計算で済む。このFFTの基本原理は、簡単な添字の変換で大きなサイズのDFTを計算が楽な小さなDFTに分解するという考えに基づいている。
例えば、N点のDFTの(1)式を計算する場合を考える。
As described in
For example, consider the case of calculating the N-point DFT equation (1).
この場合、A0〜AN−1までの各項の計算にN回の乗算が入るため、全体でN2 回の乗算が必要となるが、仮にNが2で割り切れるならば、添字kを偶数と奇数に分けることで、N点のDFTを2つのN/2点のDFTにおける(2)式と(3)式に分解出来る。 In this case, since N multiplications are included in the calculation of each term from A0 to A N−1 , N 2 multiplications as a whole are necessary. If N is divisible by 2, the subscript k is an even number. By dividing the number into odd numbers, the N-point DFT can be decomposed into two (2) and (3) equations in two N / 2-point DFTs.
N/2点のDFTの(2)式及び(3)式は、それぞれN2/4回の乗算で計算出来るので、この分解で計算量が約半分に減る。更に、この分解を2回、3回と繰り返せば計算量は約1/4、1/8と減少する。これがCooley-TukeyFFT(即ち、基数2、周波数間引きCooley-TukeyFFT)の基本的な考え方である。 N / 2-point DFT (2) and Formula (3), since each can be calculated as N 2/4 multiplications, computational this decomposition is reduced to about half. Further, if this decomposition is repeated twice and three times, the calculation amount is reduced to about 1/4 and 1/8. This is the basic concept of Cooley-Tukey FFT (ie, radix-2, frequency thinning Cooley-Tukey FFT).
図5は、非特許文献1の図1に記載された基数2周波数間引きFFTのデータフローを示す図である。 FIG. 5 is a diagram illustrating a data flow of the radix-2 frequency decimation FFT described in FIG.
(2)式、(3)式の分解をlog2N回行い、1点のDFTになるまで行ったときの計算量を考える。この分解自体には各々の段でWj Nを乗ずるN/2回の複素数乗算とN回の複素数加算が必要で、複素数乗算回数は(N/2)log2Nに減少する。そのため、浮動小数点演算の量はNlog2Nのオーダとなる。これは、Cooley-TukeyFFTの典型的な演算量であり、様々なFFTの演算量の削減アルゴリズムは、基本的にこのオーダの比例定数と、Nlog2Nより低い次数の項を小さくするものである。 Consider the amount of calculation when the decomposition of Equations (2) and (3) is performed log 2 N times until a DFT of one point is obtained. This decomposition itself requires N / 2 complex multiplications multiplied by W j N at each stage and N complex additions, and the number of complex multiplications is reduced to (N / 2) log 2 N. Therefore, the amount of floating point arithmetic is on the order of Nlog 2 N. This is a typical computational amount of Cooley-Tukey FFT, and various FFT operational amount reduction algorithms basically reduce the proportionality constant of this order and the order terms lower than Nlog 2 N. .
次に、FFTの添字による一般的な分解方法について説明する。
例えば、NがN=N1N2と因数分解出来ると仮定する。(1)式の添字jを次の2つの添字j1(=0,1,2,・・・,N1−1)とj2(=0,1,2,・・・,N2−1)に置き換える。添字j1,j2をある自然数として、j1,j2からjに変換する写像を(4)式のように定義する。
Next, a general decomposition method using FFT subscripts will be described.
For example, assume that N can be factored as N = N 1 N 2 . The subscript j in the expression (1) is replaced with the following two subscripts j 1 (= 0, 1, 2,..., N 1 −1) and j 2 (= 0, 1, 2,..., N 2 − Replace with 1). Assuming that the subscripts j 1 and j 2 are certain natural numbers, a mapping for converting j 1 and j 2 to j is defined as in equation (4).
先ず第1に、(4)式の写像は、1対1とならなければならないが、このための必要十分条件は、p,qをある自然数とするとき、次の(a)、(b)の2つである。
(a) N1とN2が互いに素の場合
J1=pN2,J2=qN1の少なくとも一方が満たされ、且つgcd(J1,N1)=gcd(J2,N2)=1
(b) N1とN2が互いに素ではない場合
First, the mapping of equation (4) must be 1: 1, but the necessary and sufficient condition for this is that when p and q are natural numbers, the following (a) and (b) These are two.
(A) When N 1 and N 2 are relatively prime J1 = pN 2 , J2 = qN 1 is satisfied, and gcd (J 1 , N 1 ) = gcd (J 2 , N 2 ) = 1
(B) N 1 and N 2 are not disjoint
(1)式に対してこれらの変換を適用すると、(6)式のようになる。 Applying these transformations to equation (1) yields equation (6).
この(6)式中の2番目と3番目のWの項が邪魔になるので、(6)式のままでは演算ブロックの順序を入れ換えることができず、小さなDFTに分解することはできない。仮に、(7)式のような条件J1K2,J2K1の少なくとも一方が成り立つのならば、(6)式はN1とN2の2つの小さなDFTに分解されることが分かる。 Since the second and third W terms in the equation (6) are in the way, the order of the operation blocks cannot be changed with the equation (6), and it cannot be decomposed into small DFTs. If at least one of the conditions J 1 K 2 and J 2 K 1 as shown in Equation (7) is satisfied, Equation (6) is decomposed into two small DFTs of N 1 and N 2. .
(7)式の条件を満たす例として、次の(i)、(ii)の2種類の分解が考えられる。
(i) N1とN2が互いに素の場合
J1=N2、且つJ2=N1、且つK1=N2、且つK2=N1
(ii) N1とN2が任意の場合
J1=N2、且つJ2=1、且つK1=1、且つK2=N1
又は
J1=1、且つJ2=N1、且つK1=N2、且つK2=1
As an example satisfying the condition of equation (7), the following two types of decomposition (i) and (ii) are conceivable.
(I) N 1 and N 2 are relatively prime J 1 = N 2 , J 2 = N 1 , K 1 = N 2 and K 2 = N 1
(Ii) N 1 and N 2 are arbitrary J 1 = N 2 , J 2 = 1, K 1 = 1, and K 2 = N 1
Or J 1 = 1 and J 2 = N 1 and K 1 = N 2 and K 2 = 1
このような第1の場合は、N1とN2が互いに素の場合のみに用いられる分解であり、(6)式のWの項を2つ消去してN1とN2の2次元DFTに分解する。この分解は、N1,N2を互いに素になるように選ぶ必要があるが、分解に必要な演算量は零である。しかし、分解しきれずに残ったDFTは概ね素数の長さであり、ある程度の計算量は必要になる。この分解によるFFTは素因数FFT[5,2,7]やWinograd DFTアルゴリズム[5,9]に用いられる。 In such a first case, the decomposition is used only when N 1 and N 2 are relatively prime, and the two W terms in Eq. (6) are deleted to obtain a two-dimensional DFT of N 1 and N 2. Disassembled into In this decomposition, it is necessary to select N 1 and N 2 to be relatively prime, but the amount of computation required for the decomposition is zero. However, the DFT that remains without being decomposed is almost a prime number, and a certain amount of calculation is required. FFT by this decomposition is used for prime factor FFT [5, 2, 7] and Winograd DFT algorithm [5, 9] .
一方、第2の分解は、N1とN2は任意でよい代わりに、(6)式のWの項は1つしか消去されず、N1とN2のDFTへの分解にWを乗算する演算(回転因子の乗算)が必要になる。しかし、N1又はN2をDFTが容易に計算出来る数に固定出来るため、分解以外に必要な計算量は少なくなる。この分解によるFFTはCooley-TukeyFFT[3]であり、N1を固定して分解を再帰的に繰り返すのが基本アルゴリズムである。このときN1を基数といい、(6)式の2項目のW を消し去るのが周波数間引き、3項目のWを消し去るのが時間間引きアルゴリズムと呼ばれる。このCooley-TukeyFFTには多くの種類があり、通常の基数2のFFT、任意基数FFT、混合基数FFT、演算量が少ないとされるSplit-Radix FFT[4,6,8]等が挙げられる。
以上が非特許文献1に記載されたFFTの概略の説明である。
On the other hand, in the second decomposition, N 1 and N 2 may be arbitrary, but only one W term in the equation (6) is deleted, and the decomposition of N 1 and N 2 into DFT is multiplied by W An operation to perform (multiplication of a twiddle factor) is required. However, since N 1 or N 2 can be fixed to a number that can be easily calculated by the DFT, the amount of calculation required other than decomposition is reduced. The FFT by this decomposition is Cooley-Tukey FFT [3], and the basic algorithm is to repeat the decomposition recursively with N 1 fixed. At this time, N 1 is called a radix, and deleting the two items of W in the equation (6) is called frequency thinning, and deleting the three items of W is called a time thinning algorithm. There are many types of the Cooley-Tukey FFT, such as a normal radix-2 FFT, an arbitrary radix FFT, a mixed radix FFT, and a split-radix FFT [4, 6, 8], which has a small amount of calculation.
The above is an outline of the FFT described in
FFT(又はIFFT)処理は基数に依って、例えばRadix2(基数=2)、Radix4(基数=4)、Radix8(基数=8)等が使用されるが、Radix4は同一量のデータを処理するために必要な演算量がRadix2の約75%であるため、良く採用されている。 For FFT (or IFFT) processing, for example, Radix2 (radix = 2), Radix4 (radix = 4), Radix8 (radix = 8), etc. are used depending on the radix, but Radix4 processes the same amount of data. Since the amount of computation required for this is about 75% of Radix 2, it is often used.
FFT(又はIFFT)処理を並列に行う場合、処理の基数に依って同時に必要なデータ数はRadix2の時2複素データ、Radix4の時4複素データである。又、同時にデータを供給するためにはメモリを複数のバンクに分割し、同時に使用されるデータは別のメモリバンクに格納しておく必要がある。 When performing FFT (or IFFT) processing in parallel, the number of data required simultaneously depending on the radix of processing is 2 complex data for Radix 2 and 4 complex data for Radix 4. In order to supply data at the same time, it is necessary to divide the memory into a plurality of banks and store the data used at the same time in another memory bank.
図6は、従来のRadix4FFT演算装置を示す概略の構成図である。
このRadix4FFT演算装置は、Radix4FFT処理をハードで実行する装置であり、Radix4FFT演算回路1と、この演算回路1に対して複素データを与えるランダム・アクセス・メモリ(以下「RAM」という。)等のメモリ10とを備えている。メモリ10は、4個のメモリバンク11−1〜11−4に分割され、これらの各メモリバンク11−1〜11−4に対してアクセス用のアドレスを与えるための各アドレス発生回路(adr-gen)12−1〜12−4がそれぞれ接続されている。4個のメモリバンク11−1〜11−4は、FFT演算回路1に対して4個の複素データを同時に供給可能となっており、又、複素データの格納も同時に4個可能な構成になっている。
FIG. 6 is a schematic configuration diagram showing a conventional Radix4 FFT arithmetic apparatus.
This Radix4FFT operation device is a device that executes Radix4FFT processing in hardware, and a memory such as a
図7は、従来のRadix2、Radix4のFFT(又はIFFT)処理の演算フローを示す図である。この図7では、データ数が42(=a0−a15)の場合の例が示されている。
なお、図7中の実線は加算パス、破線は減算パスを示している。
FIG. 7 is a diagram showing a calculation flow of conventional Radix 2 and Radix 4 FFT (or IFFT) processing. FIG. 7 shows an example in which the number of data is 4 2 (= a0−a15).
In FIG. 7, a solid line indicates an addition path, and a broken line indicates a subtraction path.
ここでFFT処理(又はIFFT処理、このIFFT処理はFFT処理と同様に行われるので、以下説明を簡略化するためにFFT処理について説明する。)に同時に使用されるデータに注目し、Radix2の場合のFFT処理(1)と、Radix4の場合のFFT処理(2)について説明する。 Here, paying attention to data used at the same time for the FFT processing (or IFFT processing, this IFFT processing is performed in the same way as the FFT processing, the FFT processing will be described below for the sake of simplification), the case of Radix2 FFT processing (1) and FFT processing (2) in the case of Radix4 will be described.
(1) Radix2の場合のFFT処理
図7のフローで示される1回のFFT処理(Radix2FFT基本演算処理)を左から1段目処理T1、2段目処理T2、3段目処理T3、4段目処理T4とする。図示しないクロックに同期して1段目処理T1から4段目処理T4へ実行されて行く。
(1) FFT processing in the case of Radix 2 One FFT processing (Radix 2 FFT basic arithmetic processing) shown in the flow of FIG. 7 is performed from the left as the first stage processing T1, the second stage processing T2, the third stage processing T3, the fourth stage. The eye process is T4. The process is executed from the first stage process T1 to the fourth stage process T4 in synchronization with a clock (not shown).
1段目処理T1では、データ(a0,a8),(a1,a9),(a2,a10),(a3,a11),(a4,a12),(a5,a13),(a6,a14),(a7,a15)が同時に使用されている。つまり、1段目処理T1のためにはデータa0,a1,a2,a3,a4,a5,a6,a7が同一メモリバンク(例えば、11−1)に格納され、データa8,a9,a10,a11,a12,a13,a14,a15が別のメモリバンク(例えば、11−2)に格納されている必要がある。 In the first stage processing T1, data (a0, a8), (a1, a9), (a2, a10), (a3, a11), (a4, a12), (a5, a13), (a6, a14), (A7, a15) are used simultaneously. That is, for the first stage processing T1, data a0, a1, a2, a3, a4, a5, a6, a7 are stored in the same memory bank (for example, 11-1), and data a8, a9, a10, a11 are stored. , A12, a13, a14, a15 need to be stored in another memory bank (for example, 11-2).
2段目処理T2では、データ(a0,a4),(a1,a5),(a2,a6),(a3,a7),(a8,a12),(a9,a13),(a10,a14),(a11,a15)が同時に使用されている。つまり、2段目処理T2のためにはデータa0,a1,a2,a3,a8,a9,a10,a11が同一メモリバンク(例えば、11−3)に格納され、データa4,a5,a6,a7,a12,a13,a14,a15が別のメモリバンク(例えば、11−4)に格納されている必要がある。 In the second stage process T2, data (a0, a4), (a1, a5), (a2, a6), (a3, a7), (a8, a12), (a9, a13), (a10, a14), (A11, a15) are used simultaneously. That is, for the second stage processing T2, data a0, a1, a2, a3, a8, a9, a10, a11 are stored in the same memory bank (for example, 11-3), and data a4, a5, a6, a7. , A12, a13, a14, a15 need to be stored in another memory bank (for example, 11-4).
ここで、1段目処理T1の結果としてデータa0,a8は同時に得られるが、2段目処理T2で使用されることを考慮した場合、データa0,a8は同一のメモリバンクに格納される必要がある。そのため、複数のクロックを用いて、データの格納先の変更処理が必要になり、高速処理を阻害していた。 Here, the data a0 and a8 are obtained simultaneously as a result of the first stage processing T1, but considering that the data a0 and a8 are used in the second stage processing T2, the data a0 and a8 must be stored in the same memory bank. There is. For this reason, it is necessary to change the data storage destination using a plurality of clocks, which hinders high-speed processing.
(2) Radix4の場合のFFT処理
FFTフローグラフで示される1回のFFT処理(Radix4FFT基本演算処理)を左から1段目処理T10、2段目処理T20とする。
(2) FFT process in the case of Radix4 One FFT process (Radix4 FFT basic calculation process) shown in the FFT flow graph is defined as a first-stage process T10 and a second-stage process T20 from the left.
1段目処理T10では、データ(a0,a4,a8,a12),(a1,a5,a9,a13),(a2,a6,a10,a14),(a3,a7,a11,a18)が同時に使用されている。つまり、1段目処理T10のためにはデータa0,a1,a2,a3がメモリバンク11−1に格納され、データa4,a5,a6,a7 がメモリバンク11−2に格納され、データa8,a9,a10,a11がメモリバンク11−3に格納され、データa12,a13,a14,a15がメモリバンク11−4に格納されている必要がある。 In the first stage processing T10, data (a0, a4, a8, a12), (a1, a5, a9, a13), (a2, a6, a10, a14), (a3, a7, a11, a18) are used simultaneously. Has been. That is, for the first stage processing T10, data a0, a1, a2, a3 are stored in the memory bank 11-1, data a4, a5, a6, a7 are stored in the memory bank 11-2, and data a8, It is necessary that a9, a10, a11 are stored in the memory bank 11-3, and the data a12, a13, a14, a15 are stored in the memory bank 11-4.
2段目処理T20では、データ(a0,a1,a2,a3),(a4,a5,a6,a7),(a8,a9,a10,a11),(a12,a13,a14,a15)が同時に使用されている。つまり、2段目処理T20のためにはデータa0,a4,a8,a12がメモリバンク11−1に格納され、データa1,a5,a9,a13がメモリバンク11−2に格納され、データa2,a6,a10,a14がメモリバンク11−3に格納され、データa3,a7,a11,a15がメモリバンク11−4に格納されている必要がある。 In the second stage processing T20, data (a0, a1, a2, a3), (a4, a5, a6, a7), (a8, a9, a10, a11), (a12, a13, a14, a15) are used simultaneously. Has been. That is, for the second stage processing T20, data a0, a4, a8, a12 are stored in the memory bank 11-1, data a1, a5, a9, a13 are stored in the memory bank 11-2, and data a2, It is necessary that a6, a10, a14 are stored in the memory bank 11-3, and data a3, a7, a11, a15 are stored in the memory bank 11-4.
ところが、1段目処理T10の結果として、データa0,a4,a8,a12は同時に得られる。2段目処理T20の処理で使用されることを考慮した場合、データa0,a4,a8,a12は同一のメモリバンクに格納される必要がある。そのため、複数のクロックを用いて、データの格納先の変更処理が必要になり、高速処理を阻害していた。 However, as a result of the first stage processing T10, data a0, a4, a8, a12 are obtained simultaneously. In consideration of being used in the process of the second stage process T20, the data a0, a4, a8, and a12 need to be stored in the same memory bank. For this reason, it is necessary to change the data storage destination using a plurality of clocks, which hinders high-speed processing.
このような問題を図8を参照しつつ詳細に説明する。
図8は、従来のRadix4のFFT処理(データ数45=1024、データa0〜a1023)の一例を示す図である。
Such a problem will be described in detail with reference to FIG.
FIG. 8 is a diagram illustrating an example of conventional Radix4 FFT processing (number of
Radix4の1024ポイント(point)のFFTを4個のメモリバンク11−1〜11−4で実現する時、データa0〜a1023をどのメモリバンク11−1〜11−4に入れるかを考える。
When the 1024-point FFT of
(1) FFT1段目処理T10の入力
メモリバンク11−1: 0,1,2,3,4,5,…,255
メモリバンク11−2: 256,257,258,259,…,511
メモリバンク11−3: 512,513,514,515,…,767
メモリバンク11−4: 768,769,770,771, …,1023
(2) FFT2段目処理T20の入力
メモリバンク11−1: 0,1,…,63, 256,257,…,319, 512,513,…,575, 768,769,…,831
メモリバンク11−2: 64,65,…,127, 320,321,…,383, 576,577,…,639, 832,833,…,895
メモリバンク11−3: 128,129,…,191, 384,385,…,447, 640,641,…,703, 896,897,…,959
メモリバンク11−3: 192,193,…,255, 448,449,…,511, 704,705,…,767, 960,961,…,1023
(3) FFT3段目処理T30の入力
メモリバンク11−1:0,1,…,15, 64,65,…,79, 128,129,…,143, … 960,961,…,975
メモリバンク11−2:16,17,…,31, 80,81,…,95, 144,145,…,159, … 976,977,…,991
メモリバンク11−3:32,33,…,47, 96,97,…,111, 160,161,…,175, … 992,993,…,1007
メモリバンク11−3:48,49,…,63, 112,113,…,127, 176,177,…,191, … 1008,1009,…,1023
(4) FFT4段目処理T40の入力
メモリバンク11−1:0,1,2,3, 16,17,18,19, 32,33,34,35, … 1008,1009,1010,1011
メモリバンク11−2:4,5,6,7, 20,21,22,23, 36,37,38,39, … 1012,1013,1014,1015
メモリバンク11−3:8,9,10,11, 24,25,26,27, 40,41,42,43, … 1016,1017,1018,1019
メモリバンク11−3:12,13,14,15, 28,29,30,31, 44,45,46,47, … 1020,1021,1022,1023
(5) FFT5段目処理T50の入力
メモリバンク11−1: 0, 4, 8, 12, … 1008,1012,1016,1020
メモリバンク11−2: 1, 5, 9, 13, … 1009,1013,1017,1021
メモリバンク11−3: 2, 6, 10, 14, … 1010,1014,1018,1022
メモリバンク11−3: 3, 7, 11, 15, … 1011,1015,1019,1023
(1) Input of FFT first stage processing T10 Memory bank 11-1: 0 , 1, 2, 3, 4, 5, ..., 255
Memory bank 11-2: 256, 257,258,259, ..., 511
Memory bank 11-3: 512 , 513, 514 , 515, ..., 767
Memory bank 11-4: 768 , 769, 770, 771,…, 1023
(2) Input of FFT second stage processing T20 Memory bank 11-1: 0 , 1, ..., 63, 256 , 257, ..., 319, 512 , 513, ..., 575, 768 , 769, ..., 831
Memory bank 11-2: 64 , 65, ..., 127, 320 , 321, ..., 383, 576 , 577, ..., 639, 832 , 833, ..., 895
Memory bank 11-3: 128, 129, ..., 191, 384, 385, ..., 447, 640, 641, ..., 703, 896, 897, ..., 959
Memory bank 11-3: 192 , 193,…, 255, 448 , 449,…, 511, 704 , 705,…, 767, 960 , 961,…, 1023
(3) Input of FFT third stage processing T30 Memory bank 11-1: 0 , 1, ..., 15, 64 , 65, ..., 79, 128 , 129, ..., 143, ... 960 , 961, ..., 975
Memory bank 11-2: 16 , 17, ..., 31, 80 , 81, ..., 95, 144 , 145, ..., 159, ... 976 , 977, ..., 991
Memory bank 11-3: 32 , 33, ..., 47, 96 , 97, ..., 111, 160 , 161, ..., 175, ... 992,993 , ..., 1007
Memory bank 11-3: 48 , 49, ..., 63, 112 , 113, ..., 127, 176 , 177, ..., 191, ... 1008 , 1009, ..., 1023
(4) Input of FFT fourth stage processing T40 Memory bank 11-1: 0 , 1, 2, 3, 16 , 17, 18, 19, 32 , 33, 34, 35, ... 1008 , 1009 , 1010, 1011
Memory bank 11-2: 4 , 5, 6, 7, 20 , 21, 22, 23, 36 , 37, 38, 39, … 1012 , 1013, 1014, 1015
Memory bank 11-3: 8 , 9, 10, 11, 24 , 25, 26, 27, 40 , 41, 42, 43, … 1016 , 1017, 1018, 1019
Memory bank 11-3: 12 , 13, 14, 15, 28 , 29, 30, 31, 44 , 45, 46, 47, … 1020 , 1021, 1022, 1023
(5) Input of FFT fifth stage processing T50 Memory bank 11-1: 0 , 4, 8, 12, ... 1008 , 1012, 1016, 1020
Memory bank 11-2: 1 , 5, 9, 13, … 1009 , 1013, 1017, 1021
Memory bank 11-3: 2 , 6, 10, 14, … 1010 , 1014, 1018, 1022
Memory bank 11-3: 3 , 7, 11, 15, … 1011 , 1015 , 1019, 1023
これから分かるように、単純にデータa0〜a1023順にFFTを行うと、次段のFFT処理時にデータを提供できない。つまり、FFTの1段目処理T10ではメモリバンク11−1であるデータa0〜a255は、FFTの2段目処理T20では64個づつの4メモリバンク11−1〜11−4となる。 As can be seen from this, if FFT is simply performed in the order of data a0 to a1023, data cannot be provided during the FFT processing of the next stage. That is, the data a0 to a255, which are the memory bank 11-1 in the first stage processing T10 of FFT, become 64 memory banks 11-1 to 11-4 in 64 pieces in the second stage processing T20 of FFT.
本発明の演算装置は、指定されたアドレスに複数のデータを上書きの形で同時に書き込み又は同時に読み出せる複数個のメモリバンクと、前記複数個のメモリバンクから同時に読み出された複数の被演算データが供給されると、前記複数の被演算データを用いRadix4のFFT処理としての演算処理を行って複数の演算結果を同時に出力し、前記演算処理を所定回数繰り返す演算回路と、前記演算回路から同時に出力された前記複数の演算結果を複数段に亘って保持可能な複数個の保持回路を有し、前記演算回路の次回の演算処理時に必要な複数のデータを同時に前記演算回路に供給可能となるように、前記複数個の保持回路に前記複数段に亘って保持された演算結果の中から前記複数のデータを選択して前記複数個のメモリバンクの各々に分配出力するメモリ制御回路と、を備えている。 The arithmetic device according to the present invention includes a plurality of memory banks that can simultaneously write or read a plurality of data at a specified address in the form of overwriting, and a plurality of operation data simultaneously read from the plurality of memory banks. Is supplied, performs arithmetic processing as a Radix4 FFT process using the plurality of operand data, outputs a plurality of arithmetic results simultaneously, repeats the arithmetic processing a predetermined number of times, and simultaneously from the arithmetic circuit A plurality of holding circuits capable of holding the plurality of output calculation results in a plurality of stages are provided, and a plurality of data necessary for the next calculation processing of the calculation circuit can be simultaneously supplied to the calculation circuit. As described above, each of the plurality of memory banks is selected by selecting the plurality of data from the operation results held in the plurality of stages in the plurality of holding circuits. And a, a memory control circuit that distributes output.
本発明の演算装置によれば、メモリ制御回路により、演算回路から出力される演算結果のデータ順を入れ替えて複数個のメモリバンクに読み込むようにしているので、次の(1)、(2)のような効果がある。 According to the arithmetic device of the present invention, the data order of the arithmetic results output from the arithmetic circuit is switched by the memory control circuit and read into a plurality of memory banks . Therefore, the following (1), (2) There is an effect like this.
(1) 演算回路の1回の演算結果データを次回の演算処理に最適なメモリバンクに格納することが可能となる。これより演算処理を中断することなく、効率よく実現出来る。 (1) One operation result data of the arithmetic circuit can be stored in a memory bank optimum for the next arithmetic processing. Thus, it can be efficiently realized without interrupting the arithmetic processing.
(2) 或る回の演算処理で使用されたデータと同じメモリバンクアドレスに次回の演算処理で使用されるデータを書き込むことが可能となるため、従来は2面それぞれ必要だった複数個のメモリバンクをそれぞれ1面にすることが出来、ハード規模を小さくすることが可能となる。 (2) Since it is possible to write data used in the next calculation process to the same memory bank address as the data used in a certain calculation process, a plurality of memories conventionally required for each of the two planes Each bank can be one side, and the hardware scale can be reduced.
本発明を実施するための形態は、以下の好ましい実施例の説明を添付図面と照らし合わせて読むと、明らかになるであろう。Modes for carrying out the present invention will become apparent from the following description of the preferred embodiments when read in light of the accompanying drawings.
(実施例1の構成)
図1(a)、(b)は、本発明の実施例1のRadix4FFT演算装置を示す概略の構成図であり、同図(a)が全体図、及び同図(b)がその中のFFTメモリ制御回路の構成図である。
(Configuration of Example 1)
1A and 1B are schematic configuration diagrams showing a Radix4 FFT arithmetic unit according to a first embodiment of the present invention, where FIG. 1A is an overall view, and FIG. 1B is an FFT therein. It is a block diagram of a memory control circuit.
図1(a)に示すRadix4FFT演算装置は、Radix4FFT処理をハードで実行する装置であり、従来の図6と同様に、演算手段(例えば、Radix4FFT演算回路)20と、この演算回路20に対して複素データを与えるRAM等のメモリ30とを備えている。メモリ30は、複数個(例えば、4個)のメモリバンク31−1〜31−4に分割され、これらの各メモリバンク31−1〜31−4に対してアクセス用のアドレスを指定するための各アドレス発生回路(adr-gen)32−1〜32−4がそれぞれ接続されている。4個のメモリバンク31−1〜31−4は、FFT演算回路20に対して4個の複素データを同時に供給可能となっており、又、複素データの格納も同時に4個可能な構成になっている。
The Radix4FFT operation device shown in FIG. 1A is a device that executes the Radix4FFT processing in hardware. Similar to the conventional FIG. 6, the operation means (for example, Radix4FFT operation circuit) 20 and the
本実施例1のRadix4FFT処理装置では、Radix4FFT演算回路20とメモリ30との間に、データ順を入れ替えるためのメモリ制御手段(例えば、FFTメモリ制御回路)40が新たに設けられている点が、従来の装置と異なっている。FFTメモリ制御回路40は、FFT演算回路20から4個の演算結果が入力され、同時に次段のFFT処理を考慮して(即ち、同時に必要なデータが同時に提供可能なようにバンク分けして)、データ順を入れ替えた演算結果をメモリ30へ出力する回路である。
In the Radix4FFT processing apparatus according to the first embodiment, a memory control means (for example, an FFT memory control circuit) 40 for switching the data order is newly provided between the Radix4FFT
例えば、1段目のFFT処理を0,64,128,192,1,65,129,193,・・・の順番で行う。すると出力は、
1段目0: 0,256,512,768 ← 2段目ではメモリバンク31−1
1段目64: 64,320,576,832← 2段目ではメモリバンク31−2
1段目128: 128,384,640,896← 2段目ではメモリバンク31−3
1段目192: 192,448,704,960← 2段目ではメモリバンク31−4
となる。これにFFTメモリ制御回路40を使用することで、2段目のFFT処理時に同時出力可能なようにメモリバンク31−1〜31−4に書き込むことが出来る。
For example, the first stage FFT processing is performed in the order of 0, 64, 128, 192, 1, 65, 129, 193,. Then the output is
1st stage 0: 0,256,512,768 ← In the 2nd stage, memory bank 31-1
First stage 64: 64,320,576,832 ← In the second stage, memory bank 31-2
First stage 128: 128,384,640,896 ← In the second stage, memory bank 31-3
First stage 192: 192,448,704,960 ← Memory bank 31-4 in the second stage
It becomes. By using the FFT
図1(b)に示すFFTメモリ制御回路40は、FFT演算回路20から出力されたデータ等を保持するための複数個の初段データ保持回路及び複数個且つ複数段の後段データ保持回路(例えば、4×4個のレジスタ(Reg))41−00〜41−03,・・・,41−30〜41−33と、各段のレジスタ間に設けられた複数個の段間セレクタ(例えば、6個の2入力1出力のセレクタ)42−00〜41−33と、メモリバンク31−1〜31−4へデータを出力するために出力段に設けられた複数個の出力段セレクタ(例えば、4個の4入力1出力のセレクタ)43−1〜43−4とを有している。
The FFT
各セレクタ42−00〜41−33,43−1〜43−4の入出力は、図示しない制御信号等により切り替えられるようになっている。レジスタ間のセレクタ42−00〜41−33の内、1段目セレクタ42−00は、1段目レジスタ41−00,41−01の出力のいずれか一方を選択して2段目レジスタ41−10へ与え、2段目セレクタ42−10は、2段目レジスタ41−10の出力又は1段目レジスタ41−02の出力のいずれか一方を選択して3段目レジスタ41−20へ与え、2段目セレクタ42−11は、2段目レジスタ41−11,41−12の出力のいずれか一方を選択して3段目レジスタ41−21へ与え、3段目セレクタ42−20は、3段目レジスタ41−20の出力又は1段目レジスタ41−03の出力のいずれか一方を選択して4段目レジスタ41−30へ与え、3段目セレクタ42−21は、3段目レジスタ41−21の出力又は2段目レジスタ41−13の出力のいずれか一方を選択して4段目レジスタ41−31へ与え、3段目セレクタ42−22は、3段目レジスタ41−22,41−23の出力のいずれか一方を選択して4段目レジスタ41−32へ与えるように接続されている。
Input / output of each selector 42-00 to 41-33, 43-1 to 43-4 is switched by a control signal (not shown) or the like. Of the selectors 42-00 to 41-33 between the registers, the first stage selector 42-00 selects one of the outputs of the first stage registers 41-00 and 41-01 to select the
出力段のセレクタ43−1〜43−4の内、セレクタ43−1は、4段目レジスタ41−30〜41−33の出力のいずれか1つを選択してメモリバンク31−1へ与え、セレクタ43−2は、4段目レジスタ41−32又は3段目レジスタ41−20〜41−22の出力のいずれか1つを選択してメモリバンク31−2へ与え、セレクタ43−3は、4段目レジスタ41−30、3段目レジスタ41−21又は2段目レジスタ41−10,41−11の出力のいずれか1つを選択してメモリバンク31−3へ与え、セレクタ43−4は、4段目レジスタ41−30、3段目レジスタ41−20、2段目レジスタ41−10又は1段目レジスタ41−00の出力のいずれか1つを選択してメモリバンク31−4へ与えるように接続されている。 Among the output stage selectors 43-1 to 43-4, the selector 43-1 selects any one of the outputs of the fourth stage registers 41-30 to 41-33 and applies it to the memory bank 31-1. The selector 43-2 selects any one of the outputs of the fourth-stage register 41-32 or the third-stage registers 41-20 to 41-22 and applies it to the memory bank 31-2. One of the outputs of the fourth-stage register 41-30, the third-stage register 41-21, or the second-stage registers 41-10 and 41-11 is selected and given to the memory bank 31-3, and the selector 43-4 Selects one of the outputs of the fourth-stage register 41-30, the third-stage register 41-20, the second-stage register 41-10, or the first-stage register 41-00, and sends it to the memory bank 31-4. Connected to give
(実施例1のメモリ制御方法)
図2は、図1(b)のレジスタ41−00〜41−33の時刻(以下「Time」という。)0〜Time3におけるデータ格納状態を示す図である。
(Memory control method of embodiment 1)
FIG. 2 is a diagram illustrating a data storage state at time (hereinafter referred to as “Time”) 0 to
図2において、例えば、Time0では、1024ポイント(以下「point」という。)のRadix4FFTの1段目の4回目の処理結果がFFTメモリ制御回路40に入った時を示している。この時、レジスタ41−00にpoint192の1段目FFT処理結果が入り、レジスタ41−10にpoint128の1段目FFT処理結果が入っていることを示している。又、括弧[ ]書きの数字がメモリ30への出力データ、括弧( )書きの数字がFFT演算回路20からの入力データを示している。図2の他のTime1〜Time3を示す図も同様である。
In FIG. 2, for example, at
FFTメモリ制御回路40では、図示しないクロックに同期して、以下の(1)〜(5)のようなTime0〜Time3の処理を繰り返す。
The FFT
(1) Time0の処理
Time0では同時に以下の処理を行う。
レジスタ41−30(point0の処理結果)をセレクタ43−1からメモリバンク31−1に出力し、レジスタ41−03(point960の処理結果)をセレクタ42−20を介してレジスタ41−30に入力する。
レジスタ41−20(point64の処理結果)をセレクタ43−2からメモリバンク31−2に出力し、レジスタ41−02(point704の処理結果)をセレクタ42−10を介してレジスタ41−20に入力する。
レジスタ41−10(point128の処理結果)をセレクタ43−3からメモリバンク31−3に出力し、レジスタ41−01(point448の処理結果)をセレクタ42−00を介してレジスタ42−10に入力する。
レジスタ41−00(point192の処理結果)をセレクタ43−4からメモリバンク31−4に出力し、FFT演算回路20からpoint1の処理結果をレジスタ41−00に入力する。
レジスタ41−01にFFT演算回路20からpoint257の処理結果を入力する。
レジスタ41−02にFFT演算回路20からpoint523の処理結果を入力する。
レジスタ41−03にFFT演算回路20からpoint769の処理結果を入力する。
(1)
At
The register 41-30 (the processing result of point0) is output from the selector 43-1 to the memory bank 31-1, and the register 41-03 (the processing result of point960) is input to the register 41-30 via the selector 42-20. .
The register 41-20 (processing result of point 64) is output from the selector 43-2 to the memory bank 31-2, and the register 41-02 (processing result of point 704) is input to the register 41-20 via the selector 42-10. .
The register 41-10 (processing result at point 128) is output from the selector 43-3 to the memory bank 31-3, and the register 41-01 (processing result at point 448) is input to the register 42-10 via the selector 42-00. .
The register 41-00 (processing result of point 192) is output from the selector 43-4 to the memory bank 31-4, and the processing result of
The processing result of
The processing result of
The processing result of
(2) Time1の処理
Time1では同時に以下の処理を行う。
レジスタ41−31(point256の処理結果)をセレクタ43−1からメモリバンク31−1に出力し、レジスタ41−13(point896の処理結果)をセレクタ42−21を介してレジスタ41−31に入力する。
レジスタ41−21(point320の処理結果)をセレクタ43−2からメモリバンク31−2に出力し、レジスタ41−12(point640の処理結果)をセレクタ42−11を介してレジスタ41−21に入力する。
レジスタ41−11(point384の処理結果)をセレクタ43−3からメモリバンク31−3に出力し、レジスタ41−01(point257の処理結果)をレジスタ41−11に入力する。
レジスタ41−10(point448の処理結果)をセレクタ43−4からメモリバンク31−4に出力し、レジスタ41−00(point1の処理結果)をセレクタ42−00を介してレジスタ41−10に入力する。
レジスタ41−12にレジスタ41−02(point523の処理結果)を入力する。
レジスタ41−13にレジスタ41−03(point769の処理結果)を入力する。
レジスタ41−00にFFT演算回路20からpoint65の処理結果を入力する。
レジスタ41−01にFFT演算回路20からpoint321の処理結果を入力する。
レジスタ41−02にFFT演算回路20からpoint577の処理結果を入力する。
レジスタ41−03にFFT演算回路20からpoint833の処理結果を入力する。
(2) Time1 processing
At
The register 41-31 (processing result of point 256) is output from the selector 43-1 to the memory bank 31-1, and the register 41-13 (processing result of point 896) is input to the register 41-31 via the selector 42-21. .
The register 41-21 (processing result of point 320) is output from the selector 43-2 to the memory bank 31-2, and the register 41-12 (processing result of point 640) is input to the register 41-21 via the selector 42-11. .
The register 41-11 (processing result of point 384) is output from the selector 43-3 to the memory bank 31-3, and the register 41-01 (processing result of point 257) is input to the register 41-11.
The register 41-10 (processing result of point 448) is output from the selector 43-4 to the memory bank 31-4, and the register 41-00 (processing result of point1) is input to the register 41-10 via the selector 42-00. .
The register 41-02 (the processing result of point 523) is input to the register 41-12.
Register 41-03 (result of processing of point 769) is input to register 41-13.
The processing result of
The processing result of
The processing result of
The processing result of
(3) Time2の処理
Time2では同時に以下の処理を行う。
レジスタ41−32(point512の処理結果)をセレクタ43−1からメモリバンク31−1に出力し、レジスタ41−23(point832の処理結果)をセレクタ42−22を介してレジスタ41−32に入力する。
レジスタ41−22(point576の処理結果)をセレクタ43−2からメモリバンク31−2に出力し、レジスタ41−12(point523の処理結果)をレジスタ41−22に入力する。
レジスタ41−21(point640の処理結果)をセレクタ43−3からメモリバンク31−3に出力し、レジスタ41−11(point257の処理結果)をセレクタ42−11を介してレジスタ41−21に入力する。
レジスタ41−20(point704の処理結果)をセレクタ43−4を介してメモリバンク31−4に出力し、レジスタ41−10(point1の処理結果)をセレクタ42−10を介してレジスタ41−20に入力する。
レジスタ41−23にレジスタ41−13の値を入力する。
レジスタ41−10にセレクタ42−00を介してレジスタ41−00の値を入力する。
レジスタ41−11にレジスタ41−01の値を入力する。
レジスタ41−12にレジスタ41−02の値を入力する。
レジスタ41−13にレジスタ41−03の値を入力する。
レジスタ41−01にFFT演算回路20からpoint129の処理結果を入力する。
レジスタ41−01にFFT演算回路20からpoint385の処理結果を入力する。
レジスタ41−02にFFT演算回路20からpoint641の処理結果を入力する。
レジスタ41−03にFFT演算回路20からpoint897の処理結果を入力する。
(3) Time2 processing
At
The register 41-32 (processing result of point 512) is output from the selector 43-1 to the memory bank 31-1, and the register 41-23 (processing result of point 832) is input to the register 41-32 via the selector 42-22. .
The register 41-22 (processing result of point 576) is output from the selector 43-2 to the memory bank 31-2, and the register 41-12 (processing result of point 523) is input to the register 41-22.
The register 41-21 (processing result of point 640) is output from the selector 43-3 to the memory bank 31-3, and the register 41-11 (processing result of point 257) is input to the register 41-21 via the selector 42-11. .
The register 41-20 (processing result of point 704) is output to the memory bank 31-4 via the selector 43-4, and the register 41-10 (processing result of point 1) is output to the register 41-20 via the selector 42-10. input.
The value of the register 41-13 is input to the register 41-23.
The value of the register 41-00 is input to the register 41-10 via the selector 42-00.
The value of the register 41-01 is input to the register 41-11.
The value of the register 41-02 is input to the register 41-12.
The value of the register 41-03 is input to the register 41-13.
The processing result of
The processing result at
The processing result of
The processing result of
(4) Time3の処理
Time3では同時に以下の処理を行う。
レジスタ41−33(point768の処理結果)をセレクタ43−1からメモリバンク31−1に出力し、レジスタ41−23(point769の処理結果)をレジスタ41−33に入力する。
レジスタ41−32(point832の処理結果)をセレクタ43−2からメモリバンク31−2に出力し、レジスタ41−22(point523の処理結果)をセレクタ42−22を介してレジスタ41−32に入力する。
レジスタ41−31(point896の処理結果)をセレクタ43−3からメモリバンク31−3に出力し、レジスタ41−21(point257の処理結果)をセレクタ42−21を介してレジスタ41−31に入力する。
レジスタ41−30(point960の処理結果)をセレクタ43−4からメモリバンク31−4に出力し、レジスタ41−20(point1の処理結果)をセレクタ42−20を介してレジスタ41−30に入力する。
レジスタ41−20にセレクタ42−10を介してレジスタ41−10の値を入力する。
レジスタ41−21にセレクタ42−11を介してレジスタ41−11の値を入力する。
レジスタ41−22にレジスタ41−12の値を入力する。
レジスタ41−23にレジスタ41−13の値を入力する。
レジスタ41−10にセレクタ42−00を介してレジスタ41−00の値を入力する。
レジスタ41−11にレジスタ41−01の値を入力する。
レジスタ41−12にレジスタ41−02の値を入力する。
レジスタ41−13にレジスタ41−03の値を入力する。
レジスタ41−00にFFT演算回路20からpoint193の処理結果を入力する。
レジスタ41−01にFFT演算回路20からpoint449の処理結果を入力する。
レジスタ41−02にFFT演算回路20からpoint705の処理結果を入力する。
レジスタ41−03にFFT演算回路20からpoint961の処理結果を入力する。
(4) Time3 processing
At
The register 41-33 (processing result of point 768) is output from the selector 43-1 to the memory bank 31-1, and the register 41-23 (processing result of point 769) is input to the register 41-33.
The register 41-32 (processing result of point 832) is output from the selector 43-2 to the memory bank 31-2, and the register 41-22 (processing result of point 523) is input to the register 41-32 via the selector 42-22. .
The register 41-31 (processing result of point 896) is output from the selector 43-3 to the memory bank 31-3, and the register 41-21 (processing result of point 257) is input to the register 41-31 via the selector 42-21. .
The register 41-30 (the processing result of point 960) is output from the selector 43-4 to the memory bank 31-4, and the register 41-20 (the processing result of point 1) is input to the register 41-30 via the selector 42-20. .
The value of the register 41-10 is input to the register 41-20 via the selector 42-10.
The value of the register 41-11 is input to the register 41-21 via the selector 42-11.
The value of the register 41-12 is input to the register 41-22.
The value of the register 41-13 is input to the register 41-23.
The value of the register 41-00 is input to the register 41-10 via the selector 42-00.
The value of the register 41-01 is input to the register 41-11.
The value of the register 41-02 is input to the register 41-12.
The value of the register 41-03 is input to the register 41-13.
The processing result of
The processing result of
The processing result of
The processing result of
(5) Time3の処理終了後
Time3での処理終了後のFFTメモリ制御回路40の状態はTime0と同じ状態である。即ち、Time0の動作を繰り返す。
(5) After processing of Time3
The state of the FFT
(メモリ制御方法の数式表現)
図1の演算装置を用いたメモリ制御方法を数式で表現すると、以下のようになる。
図1の演算装置を有効に使用するためには、メモリアクセスが重要になる。例えば、Radix4の場合では、メモリ30が4分割されたメモリバンク31−1〜31−4の内容を次のように読み込んでいく必要がある。
0番目のアドレス(メモリバンク31−1〜31−4共に)のデータ
64番目のアドレス(メモリバンク31−1〜31−4)のデータ
128番目のアドレス(メモリバンク31−1〜31−4)のデータ
(Mathematical expression of memory control method)
The memory control method using the arithmetic unit shown in FIG.
In order to use the arithmetic unit of FIG. 1 effectively, memory access is important. For example, in the case of
Data of 0th address (both memory banks 31-1 to 31-4) Data of 64th address (memory banks 31-1 to 31-4) 128th address (memory banks 31-1 to 31-4) data from
即ち、メモリアドレッシングも必要な構成要素となる。アドレッシングとしては、ポイント数であるデータ数がRn(但し、RはRadix数、nは処理の回数)で表現される場合、Radix4ならばRn=4である。処理の回数nは、例えば1024データのRadix4FFTならば、45=1024から、n=5となる。
That is, memory addressing is also a necessary component. As addressing, when the number of data, which is the number of points, is represented by R n (where R is the number of Radix and n is the number of times of processing), if
FFTの処理の段数kとしては、n回行われるので、次のようになる。
1回目はR(n−2)毎のデータを読み込み →Radix4の時は 43=64
2回目はR(n−3)毎のデータを読み込み →Radix4の時は 42=16
3回目はR(n−4)毎のデータを読み込み →Radix4の時は 41=4
4回目はR(n−5)毎のデータを読み込み →Radix4の時は 40=1
5回目はR(n−5)毎のデータを読み込み →Radix4の時は 40=1
The number k of FFT processing steps is n times, and is as follows.
Read data for each R (n-2) at the first time → 43 = 64 for Radix4
The second time reads data for each R (n-3) → When Radix4, 42 = 16
The third time, read the data every R (n-4) → When Radix4, 41 = 4
4th time, read data every R (n-5)- > 40 = 1 for Radix4
5th time, read data for each R (n-5) → When Radix4, 40 = 1
但し、最後の処理段数(k=5)のみ特別扱いとなる。こうすることによって図1の演算装置は有効に使用できる。因みにR=2,8(Radix2,Radix8)の時も同様である。
以上のことを数式で表現すると、次のようになる。
However, only the last processing stage number (k = 5) is treated specially. By doing so, the arithmetic unit of FIG. 1 can be used effectively. The same applies to R = 2, 8 (Radix2, Radix8).
The above can be expressed by mathematical formulas as follows.
図1の演算装置を用いたメモリの制御方法では、メモリ(30)をR(Radix数)に分割したメモリバンク(31−1〜31−4)のk段目のFFT処理(又はIFFT処理)において、R(n−k−1)間隔のデータを読み込むこと(但し、FFT最後の段の処理は間隔は1)を特徴としている。 In the memory control method using the arithmetic unit of FIG. 1, the k-th FFT processing (or IFFT processing) of the memory banks (31-1 to 31-4) in which the memory (30) is divided into R (Radix number). in, R (n-k-1) write No that read data interval (However, the processing of the FFT last stage is 1 interval) is characterized in.
(実施例1の効果)
本実施例1によれば、FFT演算回路20とメモリ30との間にFFTメモリ制御回路40を設け、このFFTメモリ制御回路40を、次段のFFT処理で同時に必要なデータを別々のメモリバンク31−1〜31−4に格納可能とし、且つ使用したメモリ番地に上書きの形でのFFT処理を実現可能としたので、次の(a)〜(c)のような効果がある。
(Effect of Example 1)
According to the first embodiment, the FFT
(a) FFTの1段の演算結果データを次段の演算処理に最適なブロック分けされる形でメモリ30に格納することが可能となる。これよりFFT処理を中断することなく効率よく実現出来る。 (A) It is possible to store the FFT one-stage calculation result data in the memory 30 in the form of blocks that are optimal for the calculation process of the next stage. Thus, the FFT process can be efficiently realized without interruption.
(b) ある段のFFT処理で使用されたデータ、同じアドレスに次段のFFT処理で使用されるデータを書き込むことが可能となるため、従来の図6では2面必要だったメモリ10,10を1面(30)にすることが出来、ハード規模を小さくすることが可能となる。
(B) Since the data used in the FFT processing of a certain stage and the data used in the FFT processing of the next stage can be written to the same address, the
(c) 本実施例1によるFFTメモリ制御回路40では、データの並べ替えを行うとき必要なレジスタ41−00〜41−33を最小限に出来るため、ハードコストを最小にすることが出来る。しかも、レジスタ間に設けられるセレクタ42−00〜42−22が2入力1出力型のセレクタのみであり、小さい回路で実現することが可能である。
(C) In the FFT
(実施例2の構成)
図3は、本発明の実施例2を示すRadix2&Radix4兼用型のRadix2&Radix4FFT演算回路及びFFTメモリ制御回路の構成図であり、実施例1を示す図1中の要素と共通の要素には共通の符号が付されている。
(Configuration of Example 2)
FIG. 3 is a block diagram of the
本実施例2は、Radix2&Radix4兼用型のFFT演算装置において、演算手段(例えば、Radix2&Radix4FFT演算回路)20Aとメモリ30との間に、メモリ制御手段(例えば、FFTメモリ制御回路)40Aが設けられている。Radix2&Radix4FFT演算回路20Aは、第1のFFT処理(例えば、Radix2FFT演算)機能と第2のFFT処理(例えば、Radix4FFT演算)機能とを有し、これらが切り替えられるようになっている。FFTメモリ制御回路40Aは、図1のFFTメモリ制御回路40に対して、レジスタ間において2入力1出力のセレクタ(Reg)42−02,42−12,42−13が追加され、図1の出力段の4入力1出力のセレクタ43−2,43−1に代えて、5入力1出力のセレクタ43−2A,43−1Aが設けられている点が異なっている。
In the second embodiment, in a Radix2 & Radix4 combined FFT operation device, a memory control means (for example, an FFT memory control circuit) 40A is provided between the calculation means (for example, Radix2 & Radix4 FFT operation circuit) 20A and the memory 30. . The Radix2 & Radix4
追加されたレジスタ間のセレクタ42−02,42−12,42−13は、これらの入出力が図示しない制御信号により切り替えられるものであり、この内、セレクタ42−02は、1段目レジスタ41−02,41−03の出力のいずれか一方を選択して2段目レジスタ41−12へ与え、セレクタ42−12は、1段目レジスタ41−02又は2段目レジスタ41−12の出力のいずれか一方を選択して出力段レジスタ43−2Aへ与え、セレクタ42−13は、2段目レジスタ41−12,41−13の出力のいずれか一方を選択して出力段レジスタ43−1Aへ与えるように接続されている。
The added selectors 42-02, 42-12, and 42-13 between the registers have their inputs and outputs switched by a control signal (not shown). Among them, the selector 42-02 is a first-
本実施例2のRadix2&Radix4兼用型のFFT処理装置は、Radix4とRadix2FFTの両方に対応し、これはFFTのpoint数を任意に定めた場合に有効である。この理由は、以下の通りである。 The Radix2 & Radix4 combined FFT processing apparatus of the second embodiment is compatible with both Radix4 and Radix2 FFT, which is effective when the number of FFT points is arbitrarily determined. The reason for this is as follows.
Radix4FFTはRadix2FFTに比べて同じpoint数のFFTを実行する場合、演算回数を約25%少なく出来るが、FFTのpoint数が4のべきで表現される必要がある。このため、4のべきで表現出来ないpoint数のFFTを実行する場合、Radix4FFTとRadix2FFTと混在して使用する。本回路はそれに対応している。
Radix4FFT can reduce the number of computations by about 25% when executing FFT of the same number of points compared to Radix2FFT, but the number of FFT points needs to be expressed as 4. For this reason, when performing FFT of the number of points that cannot be expressed with power of 4,
(実施例2のメモリ制御方法)
FFTメモリ制御回路40Aは、Radix4FFTの処理の時は、図1のFFTメモリ制御回路40と同様の処理を行う。例えば、1024point Radix2FFT処理の時は、レジスタ41−20,41−21,41−22,41−23,41−30,41−31,41−32,41−33を使用しない。
(Memory control method of embodiment 2)
The FFT
図4は、図3のレジスタ41−00〜41−33のTime0〜Time1におけるデータ格納状態を示す図である。この図の意味は図2と同様である。
FIG. 4 is a diagram illustrating a data storage state in
例えば、1024point Radix2FFT処理の場合、FFTメモリ制御回路40Aは、図示しないクロックに同期して、以下の(1)〜(3)のようなTime0〜Time1の処理を繰り返す。
For example, in the case of 1024 point Radix2 FFT processing, the FFT
(1) Time0の処理
Time0では同時に以下の処理を行う。
レジスタ41−00(point64の処理結果)をセレクタ43−4からメモリバンク31−4に出力し、FFT演算回路20Aからpoint128の処理結果をレジスタ41−00に入力する。
レジスタ41−10(point0の処理結果)をセレクタ43−3からメモリバンク31−3に出力し、レジスタ41−01(point320の処理結果)をセレクタ42−00を介してレジスタ41−10に入力する。
レジスタ41−02(point576の処理結果)をセレクタ42−12,43−2Aからメモリバンク31−2に出力し、FFT演算回路20Aからpoint640の処理結果をレジスタ41−02に入力する。
レジスタ41−12(point512の処理結果)をセレクタ42−13,43−1Aからメモリバンク31−1に出力し、レジスタ41−03(point320の処理結果)をセレクタ42−02を介してレジスタ41−12に入力する。
レジスタ41−01にFFT演算回路20Aからpoint384の処理結果を入力する。
レジスタ41−03にFFT演算回路20Aからpoint896の処理結果を入力する。
(1)
At
The register 41-00 (processing result at point 64) is output from the selector 43-4 to the memory bank 31-4, and the processing result at
The register 41-10 (processing result of point0) is output from the selector 43-3 to the memory bank 31-3, and the register 41-01 (processing result of point320) is input to the register 41-10 via the selector 42-00. .
The register 41-02 (processing result of point 576) is output from the selectors 42-12 and 43-2A to the memory bank 31-2, and the processing result of
The register 41-12 (the processing result of point 512) is output from the selectors 42-13 and 43-1A to the memory bank 31-1, and the register 41-03 (the processing result of point 320) is output through the selector 42-02 to the register 41- 12 is input.
The processing result of
The processing result of
(2) Time1の処理
Time1では同時に以下の処理を行う。
レジスタ41−10(point320の処理結果)をセレクタ43−4からメモリバンク31−4に出力し、レジスタ41−00(point128の処理結果)をセレクタ42−00を介してレジスタ41−10に入力する。
レジスタ41−11(point256の処理結果)をセレクタ43−3からメモリバンク31−3に出力し、レジスタ41−01(point384の処理結果)をレジスタ41−11に入力する。
レジスタ41−12(point832の処理結果)をセレクタ42−12,43−2Aからメモリバンク31−2に出力し、レジスタ41−02(point640の処理結果)をセレクタ42−02を介してレジスタ41−12に入力する。
レジスタ41−13(point768の処理結果)をセレクタ42−13,43−1Aからメモリバンク31−1に出力し、レジスタ41−03(point896の処理結果)をレジスタ41−13に入力する。
レジスタ41−00にFFT演算回路20Aからpoint192の処理結果を入力する。
レジスタ41−01にFFT演算回路20Aからpoint448の処理結果を入力する。
レジスタ41−02にFFT演算回路20Aからpoint704の処理結果を入力する。
レジスタ41−03にFFT演算回路20Aからpoint960の処理結果を入力する。
(2) Time1 processing
At
The register 41-10 (processing result of point 320) is output from the selector 43-4 to the memory bank 31-4, and the register 41-00 (processing result of point 128) is input to the register 41-10 via the selector 42-00. .
The register 41-11 (the processing result of point 256) is output from the selector 43-3 to the memory bank 31-3, and the register 41-01 (the processing result of point 384) is input to the register 41-11.
The register 41-12 (the processing result of point 832) is output from the selectors 42-12 and 43-2A to the memory bank 31-2, and the register 41-02 (the processing result of point 640) is output through the selector 42-02 to the register 41- 12 is input.
The register 41-13 (the processing result of point 768) is output from the selectors 42-13 and 43-1A to the memory bank 31-1, and the register 41-03 (the processing result of point 896) is input to the register 41-13.
The processing result of
The processing result of
The processing result of
The processing result of
(3) Time1終了後
Time1での処理終了後のFFTメモリ制御回路40Aの状態は、Time0と同じ状態である。即ち、Time0の動作を繰り返すこととなる。
(3) After Time1
The state of the FFT
(実施例2の効果)
本実施例2のFFTメモリ制御回路40Aによれば、次段のFFT処理で同時に必要なデータを別々のメモリバンク31−1〜31−4に格納可能とし、使用したメモリ番地に上書きの形でのFFT処理を実現可能とし、且つRadix2FFTとRadix4FFTの両者に対応可能な構成にしたので、実施例1とほぼ同様の効果がある上に、FFTのpoint数を任意に定めた場合に有効である。
(Effect of Example 2)
According to the FFT
本発明は上記実施例1、2に限定されず、種々の変形が可能である。この変形例である実施例3としては、例えば、次の(A)〜(C)のようなものがある。 The present invention is not limited to the first and second embodiments, and various modifications can be made. As a third embodiment which is this modification, for example, there are the following (A) to (C).
(A) 実施例1、2では、メモリ30を4分割したメモリバンク31−1〜31−4を使用する例について説明したが、これに代えて、メモリ30中の4つの指定場所を使用しても良い。例えば、メモリ30において、m(但し、mは任意の正整数)行目且つn(但し、nは任意の正整数)列目の指定場所(メモリバンク31−1に対応)、m行目且つ(n+1)列目の指定場所(メモリバンク31−2に対応)、(m+1)行目且つn列目の指定場所(メモリバンク31−3に対応)、及び、(m+1)行目且つ(n+1)列目の指定場所(メモリバンク31−4に対応)を使用して、データの読み出しと書き込みを行うようにしても、実施例1、2とほぼ同様の作用効果を奏することが出来る。 (A) In the first and second embodiments, the example in which the memory banks 31-1 to 31-4 in which the memory 30 is divided into four parts is used, but instead of this, four designated locations in the memory 30 are used. May be. For example, in the memory 30, the designated location (corresponding to the memory bank 31-1) in the m (where m is an arbitrary positive integer) row and the n (where n is an arbitrary positive integer) column, the m th row and (N + 1) th column designated location (corresponding to memory bank 31-2), (m + 1) th row and nth column designated location (corresponding to memory bank 31-3), (m + 1) th row and (n + 1) ) Even when data is read and written using a designated position in the column (corresponding to the memory bank 31-4), substantially the same effects as in the first and second embodiments can be obtained.
(B) 実施例1、2では、FFT処理について説明したが、IFFT処理に適用しても、ほぼ同様の作用効果が得られる。 (B) Although the FFT processing has been described in the first and second embodiments, substantially the same effect can be obtained even when applied to the IFFT processing.
(C) 図1のFFT演算回路20,20Aは、Radix2FFT、Radix4FFT以外の構成に変更したり、メモリバンク31−1〜31−4の個数(或いはメモリ30の指定場所の数)を4個以外の数に変更したり、図1、図3のFFTメモリ制御回路40,40Aの構成要素を図示以外の段数や個数等に変更しても良い。
(C) The
20,20A FFT演算回路
30 メモリ
31−1〜31−4 メモリバンク
40,40A FFTメモリ制御回路
41−00〜41−33 レジスタ
42−00〜42−22,43−1〜43−4,43−1A,43−2A セレクタ
20, 20A FFT operation circuit 30 Memory 31-1 to 31-4
Claims (2)
前記複数個のメモリバンクから同時に読み出された複数の被演算データが供給されると、前記複数の被演算データを用いRadix4のFFT処理としての演算処理を行って複数の演算結果を同時に出力し、前記演算処理を所定回数繰り返す演算回路と、
前記演算回路から同時に出力された前記複数の演算結果を複数段に亘って保持可能な複数個の保持回路を有し、前記演算回路の次回の演算処理時に必要な複数のデータを同時に前記演算回路に供給可能となるように、前記複数個の保持回路に前記複数段に亘って保持された演算結果の中から前記複数のデータを選択して前記複数のメモリバンクの各々に分配出力するメモリ制御回路と、
を備えたことを特徴とする演算装置。 A plurality of memory banks capable of simultaneously writing or reading a plurality of data in the form of overwriting at a specified address; and
When a plurality of operation data simultaneously read from the plurality of memory banks is supplied, an operation process as a Radix4 FFT process is performed using the plurality of operation data, and a plurality of operation results are output simultaneously. An arithmetic circuit that repeats the arithmetic processing a predetermined number of times;
A plurality of holding circuits capable of holding the plurality of calculation results simultaneously output from the arithmetic circuit over a plurality of stages, and simultaneously processing a plurality of data necessary for the next arithmetic processing of the arithmetic circuit; Memory control for selecting the plurality of data from among the operation results held in the plurality of stages in the plurality of holding circuits and distributing the selected data to each of the plurality of memory banks. Circuit,
An arithmetic device comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011127120A JP5444287B2 (en) | 2011-06-07 | 2011-06-07 | Arithmetic unit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011127120A JP5444287B2 (en) | 2011-06-07 | 2011-06-07 | Arithmetic unit |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005179387A Division JP4796339B2 (en) | 2005-06-20 | 2005-06-20 | Memory read and write methods |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011198384A JP2011198384A (en) | 2011-10-06 |
JP5444287B2 true JP5444287B2 (en) | 2014-03-19 |
Family
ID=44876396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011127120A Active JP5444287B2 (en) | 2011-06-07 | 2011-06-07 | Arithmetic unit |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5444287B2 (en) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3951066B2 (en) * | 1996-05-16 | 2007-08-01 | ソニー株式会社 | FFT operation device and FFT operation method |
WO2003021973A2 (en) * | 2001-09-01 | 2003-03-13 | Bermai, Inc. | Ram-based fast fourier transform unit for wireless communications |
CN100563226C (en) * | 2002-06-27 | 2009-11-25 | 三星电子株式会社 | Utilize the modulating equipment of mixed-radix fast fourier transform |
-
2011
- 2011-06-07 JP JP2011127120A patent/JP5444287B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2011198384A (en) | 2011-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4796339B2 (en) | Memory read and write methods | |
US6609140B1 (en) | Methods and apparatus for fast fourier transforms | |
US20080071848A1 (en) | In-Place Radix-2 Butterfly Processor and Method | |
Bowman et al. | Efficient dealiased convolutions without padding | |
US20050256917A1 (en) | Address generators integrated with parallel FFT for mapping arrays in bit reversed order | |
CN102200964B (en) | Parallel-processing-based fast Fourier transform (FFT) device and method thereof | |
US6993547B2 (en) | Address generator for fast fourier transform processor | |
Wang et al. | Novel memory reference reduction methods for FFT implementations on DSP processors | |
JP2010016830A (en) | Computation module to compute multi-radix butterfly to be used in dtf computation | |
US7653676B2 (en) | Efficient mapping of FFT to a reconfigurable parallel and pipeline data flow machine | |
Chinnapalanichamy et al. | Serial and interleaved architectures for computing real FFT | |
JP5444287B2 (en) | Arithmetic unit | |
US6728742B1 (en) | Data storage patterns for fast fourier transforms | |
EP1447752A2 (en) | Method and system for multi-processor FFT/IFFT with minimum inter-processor data communication | |
EP1426872A2 (en) | Linear scalable FFT/IFFT computation in a multi-processor system | |
Amerbaev et al. | Efficient calculation of cyclic convolution by means of fast Fourier transform in a finite field | |
EP1538533A2 (en) | Improved FFT/IFFT processor | |
KR100602272B1 (en) | Apparatus and method of FFT for the high data rate | |
JP2008052504A (en) | Discrete fourier transform device and discrete fourier inverse transform device | |
Hussain et al. | Exploiting control management to accelerate radix-4 fft on a reconfigurable platform | |
Uzun et al. | Towards a general framework for an FPGA-based FFT coprocessor | |
US9311274B2 (en) | Approach for significant improvement of FFT performance in microcontrollers | |
da Luz et al. | Reducing power consumption in fft architectures by using heuristic-based algorithms for the ordering of the twiddle factors | |
Du Pont et al. | Hardware Acceleration of the Prime-Factor and Rader NTT for BGV Fully Homomorphic Encryption | |
JP3950466B2 (en) | Fourier transform device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130212 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130415 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130618 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20130814 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130909 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20130917 |
|
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: 20131126 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20131220 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5444287 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |