專利名稱:存儲器的讀出及寫入方法、存儲器控制方法及運算裝置的制作方法
技術領域:
本發(fā)明涉及在以硬件(電路)來執(zhí)行例如快速傅立葉變換(FastFourier Transformation,以下稱為“FFT”。)或作為該FFT之一的逆FFT(Inverse FFT,以下稱為“IFFT”。)的處理的運算裝置中,使用運算單元和存儲器控制單元的存儲器控制方法以及使用其的運算裝置,其中,該運算單元進行FFT(或IFFT)的運算,該存儲器控制單元為了削減位于存儲該運算時使用的數據的多個存儲體之間、用于實現(xiàn)FFT(或IFFT)處理所要求的存儲器量,而控制將數據寫入到哪個存儲體。
背景技術:
近年來,在通信處理中多采用正交頻分復用(OrthogonalFrequency Division Multiplexing,以下稱為“OFDM”。),具體地說,在地面波數字廣播、IEEE802.1la、g等的無線局域網(LAN)、電力線調制解調器等的傳送方式中采用。
OFDM的處理的大部分是FFT(或IFFT)處理,為實現(xiàn)OFDM,需要將快速工作的FFT(或IFFT)電路作小。為實現(xiàn)快速處理,F(xiàn)FT(或IFFT)處理一般以硬件實現(xiàn)。關于該FFT的概要在例如以下文獻中記載。
非專利文獻1大浦拓哉著“高速Fourier の概略メモ”p.1-3,[online],京都大學數理分析研究所,[平成17年6月3日檢索]互聯(lián)網<URLhttp//www.kurims.kyoto-u.ac.jp/-ooura/fftman/fft_note_s.pdf>
如該非專利文獻1中所記載,為計算N點離散傅立葉變換(以下稱為“DFT”。),需要計算N2次,但是,使用FFT時以與NlogN成比例的計算就可以。該FFT的基本原理是基于以簡單的腳標的變換將大尺寸的DFT分解為計算容易的小的DFT的考慮。
例如,考慮計算N點的DFT的(1)式的情況。
(式1)
Ak=Σj=0N-1ajWNjk,WN=e-2πi/N---(1)]]>此時,為在A0~AN-1的各項的計算中加入N次乘法,整體需要N2次的乘法,但是,如果N能用2除盡,則腳標k分為偶數和奇數,從而N點的DFT可分解為2個N/2點的DFT的(2)式和(3)式。
(式2)A2k=Σj=0N/2-1(aj+aN/2+j)WN/2jk---(2)]]>(式3)A2k+1=Σj=0N/2-1(aj-aN/2+j)WNiWN/2jk---(3)]]>由于N/2點的DFT的(2)式以及(3)式分別可用N2/4次乘法計算,所以以該分解可使計算量約減半。進而,如果反復將該分解進行2次、3次,則計算量減少為約1/4、1/8。這是庫利-圖基FFT(即,基數2、頻率取樣庫利-圖基FFT)的基本考慮方法。
圖5是表示在非專利文獻1的圖1中記載的基數2頻率取樣FFT的數據流的圖。
進行l(wèi)og2N次(2)式、(3)式的分解,考慮進行到變?yōu)?點的DFT時的計算量。該分解本身需要在各個段乘以WjN的N/2次的復數乘法和N次的復數加法,復數乘法的次數減少到(N/2)log2N。因此,浮點運算的量變?yōu)镹log2N的階數。這是庫利-圖基FFT的典型的運算量,各種FFT的運算量的削減算法基本是作成比該階數的比例常數和Nlog2N低的次數的項。
下面,對FFT的腳標的一般的分解方法進行說明。
例如,假設N可因數分解為N=N1N2。將(1)式的腳標j置換為以下的2個腳標j1(=0,1,2,...,N1-1)和j2(=0,1,2,...,N2-1)。將腳標j1、j2作為某自然數,如(4)式所示,可定義從j1、j2變換為j的映射。
(式4)
j≡(J1j1+J2j2)mod N (4)首先第1(4)式的映射必須是一對一,但是,設p、q是某自然數時,為此的必要充分條件是以下(a)、(b)2個。
(a)N1和N2為互質的情況滿足J1=pN2、J2=qN1的至少一個,并且,gcd(J1,N1)=gcd(J2,N2)=1(b)N1和N2不為互質的情況(式5)J1=pN2、且 且っgcd(p1N1)=gcd(J2,N2)=1或 且っJ2=qN1、且っgcd(J1,N1)=gcd(q,N2)=1進而,如(5)式所示,對腳標k定義相同的映射。
k≡(K1k1+K2k2)mod N (5)對式(1)應用這些變換時,為(6)式所示。
(式6)AK1k1+K2k2=Σj2=0N2-1Σj1=0N1-1aJ1j1+J2j2WNJ1K1j1k1WNJ1K2j1k2WNJ2K1j2k1WNJ2K2j2k2---(6)]]>因為該(6)式中的第2和第3的W的項阻礙,所以,不能直接在(6)式中更換運算塊的順序,不能分解為小的DFT。如果如(7)式的條件J1K2、J2K1的至少一個成立,可知(6)式可分解為N1和N22個小的DFT。
(式7)J1K2≡0mod N又はJ2K1≡0 mod N (7)作為滿足(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
上述的第1情況是只在N1和N2互質的情況下使用的分解,消去2個(6)式中的W的項,分解為N1和N2的2維DFT。該分解需要選擇以使N1、N2互質,但是,分解中所需要的計算量是零。然而,未分解的殘留下的DFT大致是質數的長度,所以需要某種程度的計算量。該分解的FFT使用于質因數FFT[5,2,7]或Winograd DFT算法[5,9]中。
另一方面,對于第2分解來說,代替N1和N2可以是任意的,(6)式的W的項只消去1個,在對N1和N2的DFT的分解中需要乘以W的運算(旋轉因子的乘法)。但是,因為將N1或N2可固定為能夠容易地算出DFT的數,所以,分解以外所需要的計算量變少。該分解的FFT是庫利-圖基FFT[3],固定N1循環(huán)反復進行分解是基本算法。此時,N1叫做基數,消去(6)式的第2項的W稱為頻率取樣,消去第3項的W稱為時間取樣算法。該庫利-圖基FFT中有多個種類,可舉出通常的基數2的FFT、任意基數FFT、混合基數FFT、運算量少的Split-RadixFFT[4,6,8]等。
以上是非專利文獻1中記載的FFT的概要說明。
按照基數FFT(或IFFT)使用例如Radix2(基數=2)、Radix4(基數=4)、Radix8(基數=8)等,但是,為處理相同量的數據Radix4所需要的運算量約為Radix2的75%,所以常常被采用。
并列處理FFT(或IFFT)的情況下,按照處理的基數同時需要的數據數是Radix2時為2復數、Radix4時為4復數。此外,為同時供給數據將存儲器分割為多個區(qū),同時使用的數據需要預先儲存在各個存儲體中。
圖6是表示現(xiàn)有的Radix4FFT運算裝置的概要結構圖。
該Radix4FFT運算裝置是用硬件執(zhí)行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個復數的結構。
圖7是表示現(xiàn)有的Radix2、Radix4的FFT(或IFFT)處理的運算流程的圖。在該圖7中,示出了數據數為42(=a0-a15)的情況的例子。另外,圖7中的實線表示加法路徑、虛線表示減法路徑。
在此,著眼于FFT處理(或IFFT處理,該IFFT處理和FFT處理相同,所以,為簡化以下說明,對FFT處理進行說明。)中同時使用的數據,對Radix2情況下的FFT處理(1)和Radix4情況下的FFT處理(2)進行說明。
(1)Radix2情況下的FFT處理將圖7的流程圖所示的1次FFT處理(Radix2FFT基本運算處理)從左側定為第1級處理T1、第2級處理T2、第3級處理T3、第4級處理T4。與未圖示的時鐘同步執(zhí)行從第1級處理T1到第4級處理T4。
在第1級處理T1中,同時使用數據(a0,a8)、(a1,a9)、(a2,a10)、(a3,a11)、(a4,a12)、(a5,a13)、(a6,a14)、(a7,a15)。即,為了第1級處理T1,需要數據a0、a1、a2、a 3、a4、a5、a6、a7存儲在同一存儲體(例如11-1)中,數據a8、a9、a10、a11、a12、a13、a14、a 15存儲在其他存儲體中(例如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)中。
在此,可同時得到作為第1級處理T1的結果的數據a0、a8,但是,考慮在第2級處理T2所使用的數據的情況下,需要將數據a0、a8存儲在同一存儲體中。因此,使用多個時鐘,需要數據存儲目的地的變更處理,妨礙快速處理。
(2)Radix4情況下的FFT處理從左側將在FFT流向圖中示出的1次FFT處理(Radix4FFT基本運算處理)定為第1級處理T10、第2級處理T20。
在第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中。
在第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中。
但是,作為第1級處理T10的結果,可同時得到數據a0、a4、a8、a12??紤]第2級處理T20的處理中所使用的數據情況,數據a0、a4、a8、a12需要存儲在同一存儲體中。因此,使用多個時鐘需要數據的存儲目的地的變更處理,妨礙快速處理。
一邊參照圖8一邊對上述問題進行詳細說明。
圖8是表示現(xiàn)有的Radix4的FFT處理(數據45=1024,數據a0~a1023)的一例的圖。
以4個存儲體11-1~11-4實現(xiàn)Radix4的1024點(point)的FFT時,考慮將數據a0~a1023放入哪個存儲體11-1~11-4中。
(1)FFT第1級處理T10的輸入存儲體11-10,1,2,3,4,5,...,255存儲體11-2256,257,258,259,...,511存儲體11-3512,513,514,515,...,767存儲體11-4768,769,770,771,...,1023(2)FFT第2級處理T20的輸入存儲體11-10,1,...,63,256,257,...,319,512,513,...,575,768,769,...,831存儲體11-264,65,...,127,320,321,...,383,576,577,...,639,832,833,...,895存儲體11-3128,129,...,191,384,385,...,447,640,641,...,703,896,897,...,959存儲體11-4192,193,...,255,448,449,...,511,704,705,...,767,960,961,...,1023(3)FFT第3級處理T30的輸入存儲體11-10,1,...,15,64,65,...,79,128,129,...,143,...960,961,...,975
存儲體11-216,17,...,31,80,81,...,95,144,145,...,159,...976,977,...,991存儲體11-332,33,...,47,96,97,...,111,160,161,...,175,...992,993,...,1007存儲體11-448,49,...,63,112,113,...,127,176,177,...,191,...1008,1009,...,1023(4)FFT第4級處理T40的輸入存儲體11-10,1,2,3,16,17,18,19,32,33,34,35,...1008,1009,1010,1011存儲體11-24,5,6,7,20,21,22,23,36,37,38,39,...1012,1013,1014,1015存儲體11-38,9,10,11,24,25,26,27,40,41,42,43,...1016,1017,1018,1019存儲體11-412,13,14,15,28,29,30,31,44,45,46,47,...1020,1021,1022,1023(5)FFT第5級處理T50的輸入存儲體11-10,4,8,12,...1008,1012,1016,1020存儲體11-21,5,9,13,...1009,1013,1017,1021存儲體11-32,6,10,14,...1010,1014,1018,1022存儲體11-43,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。
發(fā)明內容
為解決上述現(xiàn)有的課題,在本發(fā)明的存儲器的讀出以及寫入方法中,分別將第1數據存儲在第m(其中m是任意正整數)行且第n(其中n是任意正整數)列指定的地方、第2數據存儲在第m行且第(n+1)列指定的地方、第3數據存儲在第(m+1)行且第n列指定的地方、第4數據存儲在第(m+1)行且第(n+1)列指定的地方。而且,讀出上述第1以及第3數據,在讀出上述第3數據后,將上述第2數據移動到上述第(m+1)行且上述第n列指定的地方,在移動上述第2數據后,在上述第m行且上述第n列寫入第5數據,在移動上述第2數據后,在上述第m行且上述第(n+1)列寫入第6數據。
在本發(fā)明的存儲器控制方法中,使用了下述單元多個存儲體,在指定的地址以重寫(overwrite)的形式同時寫入或同時讀出多個數據;運算單元,當供給從上述多個存儲體同時讀出的多個被運算數據時,使用上述多個被運算數據進行預定的運算處理,同時輸出多個運算結果,重復預定次數的上述運算處理;以及存儲器控制單元,進行對上述多個存儲體的寫入數據的控制。而且,通過上述存儲器控制單元,輸入從上述運算單元同時輸出的上述多個運算結果,變換數據順序寫入上述多個存儲體,使得能夠同時供給上述運算單元下次運算處理所需要的多個數據。
在本發(fā)明的其它存儲器控制方法中,使用存儲體和運算電路,其中,該存儲體是在作為FFT或IFFT的數據數目為Rn個(其中R是Radix數目,n是處理次數)的FFT處理或IFFT處理中、以重寫的形式同時寫入或同時讀出數據的各Rn-1尺寸的R個存儲體;該運算電路中,當供給從上述R個存儲體同時讀出的R個被運算數據時,使用上述R個被運算數據進行上述FFT處理或上述IFFT處理并同時輸出R個處理結果,反復進行Rn-1×n次上述FFT處理或上述IFFT處理。而且,在進行對上述R個存儲體的寫入數據的控制時,在上述各存儲體的第k級(其中k是處理的級數)的上述FFT處理或上述IFFT處理中,從上述R個存儲體讀入R(n-k-1)間隔(其中上述FFT處理或上述IFFT處理的最后級的處理間隔為1)的數據。
此外,本發(fā)明的運算裝置具備多個存儲體,在指定的地址以重寫的形式同時寫入或同時讀出多個數據;運算電路,當供給從上述多個存儲體同時讀出的多個被運算數據時,使用上述多個被運算數據進行預定的運算處理并同時輸出多個運算結果,反復進行預定次數的上述運算處理;以及存儲器控制電路,輸入從上述運算電路同時輸出的上述多個運算結果,變換數據順序并以重寫的形式寫入上述多個存儲體,使得能夠同時供給上述運算電路下次運算處理所需要的多個數據。
按照本發(fā)明的存儲器的讀出以及寫入方法、存儲器控制方法、以及使用其的運算裝置,通過存儲器控制單元(或存儲器控制電路)更換從運算單元(或運算電路)輸出的運算結果的數據順序并讀入存儲器的指定地方(或多個存儲體),所以,具有如下的(1)、(2)的效果。
(1)可將運算單元(或運算電路)的1次的運算結果數據存儲到下次運算處理中最佳的存儲器的指定地方(或已被分塊的形狀的存儲體)。由此可不中斷而有效地實現(xiàn)運算處理,。
(2)因為可在與某次運算處理中使用的數據相同的存儲器指定地方(或存儲體地址)寫入下次運算處理中使用的數據,所以,現(xiàn)有分別需要2面的多個存儲體可分別作成1面,可減小硬件規(guī)模。
圖1是表示本發(fā)明實施例1的Radix4FFT運算裝置的概要結構圖。
圖2是表示圖1(b)的寄存器中的數據存儲狀態(tài)的圖。
圖3是表示本發(fā)明實施例2的Radix2&Radix4兼用型的Radix2&Radix4FFT運算電路以及FFT存儲器控制電路的結構圖。
圖4是表示圖3的寄存器中的數據存儲狀態(tài)的圖。
圖5是表示非專利文獻1中記載的基數2頻率取樣FFT的數據流的圖。
圖6是表示現(xiàn)有的Radix4FFT運算裝置的概要結構圖。
圖7是表示現(xiàn)有的Radix2、Radix4的FFT處理的運算流程的圖。
圖8是表示現(xiàn)有的Radix4的FFT處理的一例的圖。
具體實施例方式
在用于實施本發(fā)明的優(yōu)選方式的運算裝置中,具備多個存儲體,在被指定的地址以重寫的形式同時寫入或同時讀出多個數據;運算電路,當供給從上述多個存儲體同時讀出的多個被運算數據時,使用上述多個被運算數據并進行預定的運算處理并同時輸出多個運算結果,進行重復預定次數上述運算處理的FFT(或IFFT)處理;以及存儲器控制電路,輸入從上述運算電路同時輸出的上述多個運算結果,變換數據順序寫入上述多個存儲體,使得能夠同時供給上述運算單元下次運算處理所需要的多個數據。
實施例1(實施例1的結構)圖1(a)、(b)是本發(fā)明實施例1的Radix4FFT運算裝置的概要結構圖,該圖(a)是整體圖,該圖(b)是其中的FFT存儲器控制電路的結構圖。
圖1(a)所示的Radix4FFT運算裝置是用硬件執(zhí)行Radix4FFT處理的裝置,和現(xiàn)有的圖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個復數。
在本實施例1的Radix4FFT處理裝置中,在Radix4FFT運算電路20和存儲器30之間重新設置用于變換數據順序的存儲器控制單元(例如,F(xiàn)FT存儲器控制電路)40,這一點與現(xiàn)有的裝置不同。FFT存儲器控制電路40是如下的電路從FFT運算電路20輸入4個運算結果,同時考慮下一級的FFT處理(即,進行存儲體分配使得可同時提供同時所需要的數據),向存儲器30輸出變換了數據順序的運算結果。
例如,按0、64、128、192、1、65、129、193、...的順序進行第1級的FFT處理。于是輸出為第1級00、256、512、768←在第2級中存儲體31-1第1級6464、320、576、832←在第2級中存儲體31-2第1級128128、384、640、896←在第2級中存儲體31-3第1級192192、448、704、960←在第2級中存儲體31-4其中使用FFT存儲器控制電路40,從而可寫入存儲體31-1~31-4,使得在第2級的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。
各選擇器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。
輸出級的選擇器43-1~43-4內以如下方式連接選擇器43-1選擇第4級寄存器41-30~41-33的輸出的任意一個并提供給存儲體31-1,選擇器43-2選擇第4級寄存器41-32或第3級寄存器41-20~41-22的輸出的任意一個并提供給存儲體31-2,選擇器43-3選擇第4級寄存器41-30、第3級寄存器41-21或第2級寄存器41-10、41-11的輸出的任意一個并提供給存儲體31-3,選擇器43-4選擇第4級寄存器41-30、第3級寄存器41-20、第2級寄存器41-10或第1級寄存器41-00的輸出的任意一個并提供給存儲體31-4。
(實施例1的存儲器控制方法)圖2是表示圖1(b)的寄存器41-00~41-33時刻(以下稱為“Time”)0~Time3的數據存儲狀態(tài)的圖。
在圖2中,例如在Time0中,表示1024點(以下稱為“point”)的Radix4FFT的第1級的第4次處理結果放入FFT存儲控制電路40中的時間。此時,表示在寄存器41-00中放入point192的第1級FFT處理結果、在寄存器41-10中放入point129的第1級FFT處理結果。此外,括號[]中的數字表示對存儲器30的輸出數據,括號( )中的數字表示來自FFT運算電路20的輸入數據。表示圖2的其它的Time1~Time3的圖也相同。
在FFT存儲器控制電路40中,與未圖示的時鐘同步,反復進行以下的如(1)~(5)的Time0~Time3的處理。
(1)Time0的處理在Time0中同時進行以下的處理。
從選擇器43-1向存儲體31-1輸出寄存器41-30(point0的處理結果),經由選擇器42-20對寄存器41-30輸入寄存器41-03(point960的處理結果)。
從選擇器43-2向存儲體31-2輸出寄存器41-20(point64的處理結果),經由選擇器42-10對寄存器41-20輸入寄存器41-02(point704的處理結果)。
從選擇器43-3向存儲體31-3輸出寄存器41-10(point128的處理結果),經由選擇器42-00對寄存器42-10輸入寄存器41-01(point448的處理結果)。
從選擇器43-4向存儲體31-4輸出寄存器41-00(point192的處理結果),從FFT運算電路20對寄存器41-00輸入point1的處理結果。
從FFT運算電路20對寄存器41-01輸入point257的處理結果。
從FFT運算電路20對寄存器41-02輸入point523的處理結果。
從FFT運算電路20對寄存器41-03輸入point769的處理結果。
(2)Time1的處理在Time1中同時進行以下的處理。
從選擇器43-1向存儲體31-1輸出寄存器41-31(point256的處理結果),經由選擇器42-21對寄存器41-31輸入寄存器41-13(point896的處理結果)。
從選擇器43-2向存儲體31-2輸出寄存器41-21(point320的處理結果),經由選擇器42-11對寄存器41-21輸入寄存器41-12(point640的處理結果)。
從選擇器43-3向存儲體31-3輸出寄存器41-11(point384的處理結果),對寄存器41-11輸入寄存器41-01(point257的處理結果)。
從選擇器43-4向存儲體31-4輸出寄存器41-10(point448的處理結果),經由選擇器42-00對寄存器41-10輸入寄存器41-00(point1的處理結果)。
對寄存器41-12輸入寄存器41-02(point523的處理結果)。
對寄存器41-13輸入寄存器41-03(point769的處理結果)。
從FFT運算電路20對寄存器41-00輸入point65的處理結果。
從FFT運算電路20對寄存器41-01輸入point321的處理結果。
從FFT運算電路20對寄存器41-02輸入point577的處理結果。
從FFT運算電路20對寄存器41-03輸入point833的處理結果。
(3)Time2的處理在Time2中同時進行以下的處理。
從選擇器43-1向存儲體31-1輸出寄存器41-32(point512的處理結果),經由選擇器42-22對寄存器41-32輸入寄存器41-23(point832的處理結果)。
從選擇器43-2向存儲體31-2輸出寄存器41-22(point576的處理結果),對寄存器41-22輸入寄存器41-12(point523的處理結果)。
從選擇器43-3向存儲體31-3輸出寄存器41-11(point640的處理結果),經由選擇器42-11對寄存器41-21輸入寄存器41-11(point257的處理結果)。
經由選擇器43-4向存儲體31-4輸出寄存器41-20(point704的處理結果),經由選擇器42-10對寄存器41-10輸入寄存器41-10(point1的處理結果)。
對寄存器41-23輸入寄存器41-13的值。
經由選擇器42-00對寄存器41-10輸入寄存器41-00的值。
對寄存器41-11輸入寄存器41-01的值。
對寄存器41-12輸入寄存器41-02的值。
對寄存器41-13輸入寄存器41-03的值。
從FFT運算電路20對寄存器41-01輸入point129的處理結果。
從FFT運算電路20對寄存器41-01輸入point385的處理結果。
從FFT運算電路20對寄存器41-02輸入point641的處理結果。
從FFT運算電路20對寄存器41-03輸入point897的處理結果。
(4)Time3的處理在Time3中同時進行以下的處理。
從選擇器43-1向存儲體31-1輸出寄存器41-33(point768的處理結果),對寄存器41-33輸入寄存器41-23(point769的處理結果)。
從選擇器43-2向存儲體31-2輸出寄存器41-32(point832的處理結果),經由選擇器42-22對寄存器41-32輸入寄存器41-22(point523的處理結果)。
從選擇器43-3向存儲體31-3輸出寄存器41-31(point896的處理結果),經由選擇器42-21對寄存器41-31輸入寄存器41-21(point257的處理結果)。
從選擇器43-4向存儲體31-4輸出寄存器41-30(point960的處理結果),經由選擇器42-20對寄存器41-30輸入寄存器41-20(point1的處理結果)。
經由選擇器42-10對寄存器41-20輸入寄存器41-10的值。
經由選擇器42-11對寄存器41-21輸入寄存器41-11的值。
對寄存器41-22輸入寄存器41-12的值。
對寄存器41-23輸入寄存器41-13的值。
經由選擇器42-00對寄存器41-10輸入寄存器41-00的值。
對寄存器41-11輸入寄存器41-01的值。
對寄存器41-12輸入寄存器41-02的值。
對寄存器41-13輸入寄存器41-03的值。
從FFT運算電路20對寄存器41-00輸入point193的處理結果。
從FFT運算電路20對寄存器41-01輸入point449的處理結果。
從FFT運算電路20對寄存器41-02輸入point705的處理結果。
從FFT運算電路20對寄存器41-03輸入point961的處理結果。
(5)Time3的處理結束后Time3中的處理結束后的FFT存儲器控制電路40的狀態(tài)是與Time0相同的狀態(tài)。即,重復Time0的工作。
(存儲器控制方法的計算公式表達)以計算公式表達使用圖1的運算裝置的存儲器控制方法時,如下所述。
為有效使用圖1的運算裝置,存儲器存取是重要的。例如,在Radix4的情況下,需要按如下來讀入存儲器30被4分割的存儲體31-1~31-4的內容。
第0地址(存儲體31-1~31-4一起)的數據第64地址(存儲體31-1~31-4)的數據第128地址(存儲體31-1~31-4)的數據即,存儲器尋址也成為必要的結構要素。作為尋址,在點數即數據數目用Rn(其中,R是Radix數目,n是處理的次數)表達的情況下,如果是Radix4,則Rn=4。對于處理的次數n來說,例如,如果是1024數據的Radix4FFT,則因為45=1024,所以n=5。
作為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其中,只有最后的處理級數(k=5)是特別處理。由此,圖1的運算裝置可有效使用。附帶說明,R=2、8(Radix2、Radix8)時也相同。用計算公式表達以上內容時,如下所述。
在使用圖1的運算裝置的存儲器的控制方法中,將存儲器(30)分割為R(Radix數)后的存儲體(31-1~31-4)的第k級的FFT處理(或IFFT處理)中,其特征在于,讀R(n-k-1)間隔的數據(其中FFT最后級的處理間隔為1)。
(實施例1的效果)按照本實施例1,在FFT運算電路20和存儲器30之間設置FFT存儲器控制電路40,該FFT存儲器控制電路40可將下一級FFT處理中同時需要的數據存儲到各個存儲體31-1~31-4,并且,可在所使用的存儲器地址實現(xiàn)重寫形式的FFT處理,所以,具有以下(a)~(c)的效果。
(a)FFT的1級的運算結果數據能夠以分為在下級運算處理中為最佳塊的形式存儲在存儲器30中。由此,可不中斷而有效地實現(xiàn)FFT處理。
(b)因為可寫入在某級的FFT處理中所使用的數據和在相同地址在下級的FFT處理中所使用的數據,所以,可將現(xiàn)有的圖6中所需要的2面的存儲器10、10作成1面(30),可減小硬件規(guī)模。
(c)在本實施例1的FFT存儲器控制電路40中,由于能夠將進行數據的變換排列時所需的寄存器41-00~41-33限制在最小,所以能夠將硬件成本做到最小。而且,設在寄存器間的選擇器42-00~42-22只是2輸入1輸出型的選擇器,可用較小的電路來實現(xiàn)。
實施例2(實施例2的結構)圖3是表示本發(fā)明實施例2的Radix2&Radix4兼用型的Radix2&Radix4FFT運算電路以及FFT存儲器控制電路的結構圖,與表示實施例1的圖1中的要素相同的要素付以相同的符號。
本實施例2是Radix2&Radix4兼用型的FFT運算裝置,在運算單元(例如Radix2&Radix4FFT運算電路)20A和存儲器30之間設置存儲器控制單元(例如FFT存儲器控制電路)40A。Radix2&Radix4FFT運算電路20A具有第1FFT處理(例如Radix2運算)的功能和第2FFT處理(例如Radix4運算)功能,可進行這些的切換。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。
所增加的寄存器間的選擇器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。
本實施例2的Radix2&Radix4FFT兼用型的FFT處理裝置與Radix4和Radix2FFT二者對應,這在任意確定FFT的point數的情況下有效。其理由如下。
與Radix2FFT相比,執(zhí)行相同的point數的FFT的情況下,Radix4FFT可約減少25%運算次數,但是,F(xiàn)FT的point數需要用4的冪表達。因此,在執(zhí)行不能用4的冪表達的point數的情況下,Radix4FFT和Radix2FFT混和使用。本電路與其相對應。
(實施例2的存儲器控制方法)對于FFT存儲器控制電路40A來說,在Radix4FFT的處理時,進行和圖1的FFT存儲器控制電路40相同的處理。例如,1024pointRadix2FFT處理時,不使用寄存器41-20、41-21、41-22、41-23、41-30、41-31、41-32、41-33。
圖4是表示圖3的寄存器41-00~41-33的Time0~Time1的數據存儲狀態(tài)的圖。該圖的含義與圖2相同。
例如,1024point Radix2FFT處理的情況下,F(xiàn)FT存儲器控制電路40A與未圖示的時鐘同步,反復進行以下的(1)~(3)的Time0~Time1的處理。
(1)Time0的處理在Time0中同時進行以下的處理。
從選擇器43-4向存儲體31-4輸出寄存器41-00(point64的處理結果),從FFT運算電路20A對寄存器41-00輸入point128的處理結果。
從選擇器43-3向存儲體31-3輸出寄存器41-10(point0的處理結果),經由選擇器42-00對寄存器41-00輸入寄存器41-01(point320的處理結果)。
從選擇器42-12、43-2A向存儲體31-2輸出寄存器41-02(point576的處理結果),從FFT運算電路20A對寄存器41-02輸入point640的處理結果。
從選擇器42-13、43-1A向存儲體31-1輸出寄存器41-12(point512的處理結果),經由選擇器42-02對寄存器41-12輸入寄存器41-03(point320的處理結果)。
從FFT運算電路20A對寄存器41-01輸入point384的處理結果。
從FFT運算電路20A對寄存器41-03輸入point896的處理結果。
(2)Time1的處理在Time1中同時進行以下的處理。
從選擇器43-4向存儲體31-4輸出寄存器41-10(point320的處理結果),經由選擇器42-00對寄存器41-10輸入寄存器41-00(point128的處理結果)。
從選擇器43-3向存儲體31-3輸出寄存器41-11(point256的處理結果),對寄存器41-11輸入寄存器41-01(point384的處理結果)。
從選擇器42-12、43-2A向存儲體31-2輸出寄存器41-12(point832的處理結果),經由選擇器42-02對寄存器41-12輸入寄存器41-02(point640的處理結果)。
從選擇器42-13、43-1A向存儲體31-1輸出寄存器41-13(point768的處理結果),對寄存器41-13輸入寄存器41-03(point896的處理結果)。
從FFT運算電路20A向寄存器41-00輸入point192的處理結果。
從FFT運算電路20A向寄存器41-01輸入point448的處理結果。
從FFT運算電路20A向寄存器41-02輸入point704的處理結果。
從FFT運算電路20A向寄存器41-03輸入point960的處理結果。
(3)Time1結束后在Time1中的處理結束后的FFT存儲器控制電路40A的狀態(tài)是和Time0相同的狀態(tài)。即,反復進行Time0的工作。
(實施例2的效果)按照本實施例2的FFT存儲器控制電路40A,可將下一級FFT處理中同時需要的數據存儲在各個存儲體31-1~31-4中,可在所使用的存儲器地址實現(xiàn)重寫形式的FFT處理,并且,因為作成與Radix2FFT和Radix4FFT二者對應的結構,所以,除具有與實施例1幾乎相同的效果外,在任意確定FFT的point數的情況下是有效的。
實施例3本發(fā)明不限于上述實施例1、2,可以是各種變形。作為該變形例的實施例3,例如有以下(A)~(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幾乎相同的作用效果。
(B)在實施例1、2中,對FFT處理進行了說明,但是,即使在IFFT處理中使用,也可得到幾乎相同的作用效果。
(C)圖1的FFT運算電路20、20A可變更為Radix2FFT、Radix4FFT以外的結構,或將存儲體31-1~31-4的個數(或存儲器30的指定地方的數目)可變更為4個以外的數目,也可將圖1、圖3的FFT存儲器控制電路40、40A的構成要素變更為圖示以外的級數或個數等。
權利要求
1.一種存儲器的讀出以及寫入方法,分別將第1數據存儲在第m(其中m是任意正整數)行且第n(其中n是任意正整數)列指定的地方、第2數據存儲在第m行且第(n+1)列指定的地方、第3數據存儲在第(m+1)行且第n列指定的地方、第4數據存儲在第(m+1)行且第(n+1)列指定的地方,其特征在于讀出上述第1以及第3數據,在讀出上述第3數據后,將上述第2數據移動到上述第(m+1)行且上述第n列指定的地方,在移動上述第2數據后,在上述第m行且上述第n列寫入第5數據,在移動上述第2數據后,在上述第m行且上述第(n+1)列寫入第6數據。
2.一種存儲器控制方法,使用了下述單元多個存儲體,在指定的地址以重寫的形式同時寫入或同時讀出多個數據;運算單元,當供給從上述多個存儲體同時讀出的多個被運算數據時,使用上述多個被運算數據進行預定的運算處理,同時輸出多個運算結果,重復預定次數的上述運算處理;以及存儲器控制單元,進行對上述多個存儲體的寫入數據的控制,該方法其特征在于通過上述存儲器控制單元,輸入從上述運算單元同時輸出的上述多個運算結果,變換數據順序寫入上述多個存儲體,使得能夠同時供給上述運算單元下次運算處理所需要的多個數據。
3.一種存儲器控制方法,使用存儲體和運算電路進行對R個存儲體的寫入數據的控制,其中,該存儲體是在作為快速傅立葉變換或逆快速傅立葉變換的數據數目為Rn個(其中R是Radix數目,n是處理次數)的快速傅立葉變換處理或逆快速傅立葉變換處理中、以重寫的形式同時寫入或同時讀出數據的各Rn-1尺寸的R個存儲體;該運算電路中,當供給從上述R個存儲體同時讀出的R個被運算數據時,使用上述R個被運算數據進行上述快速傅立葉變換處理或上述逆快速傅立葉變換處理并同時輸出R個處理結果,反復進行Rn-1×n次上述快速傅立葉變換處理或上述逆快速傅立葉變換處理,該方法其特征在于在上述各存儲體的第k級(其中k是處理的級數)的上述快速傅立葉變換處理或上述逆快速傅立葉變換處理中,從上述R個存儲體讀入R(n-k-1)間隔(其中上述快速傅立葉變換處理或上述逆快速傅立葉變換處理的最后級的處理間隔為1)的數據。
4.一種運算裝置,其特征在于,具備多個存儲體,在指定的地址以重寫的形式同時寫入或同時讀出多個數據;運算電路,當供給從上述多個存儲體同時讀出的多個被運算數據時,使用上述多個被運算數據進行預定的運算處理并同時輸出多個運算結果,反復進行預定次數的上述運算處理;以及存儲器控制電路,輸入從上述運算電路同時輸出的上述多個運算結果,變換數據順序并以重寫的形式寫入上述多個存儲體,使得能夠同時供給上述運算電路下次運算處理所需要的多個數據。
5.如權利要求4記載的運算裝置,其特征在于上述運算電路是進行快速傅立葉變換處理或逆快速傅立葉變換處理的電路。
6.如權利要求4記載的運算裝置,其特征在于上述運算電路是第1快速傅立葉變換處理或逆快速傅立葉變換處理、和第2快速傅立葉變換處理或逆快速傅立葉變換處理能切換的電路。
7.如權利要求4~6的任一項中記載的運算裝置,其特征在于;上述存儲器控制電路具有多個初級數據保持電路,分別保持從上述運算電路同時輸出的上述多個運算結果;多個且多級的后級數據保持電路,分別保持從上述多個初級數據保持電路分別輸出的多個保持結果;多個級間選擇器,分別設置在上述初級數據保持電路與上述后級數據保持電路之間、以及上述各后級數據保持電路間,選擇從前級側的上述多個初級數據保持電路輸出的上述多個保持結果并提供給上述后級數據保持電路或其它電路,選擇從前級側的上述多個后級數據保持電路輸出的上述多個保持結果并提供給后級側的上述后級數據保持電路或其它電路;以及多個輸出級選擇器,分別選擇從上述初級數據保持電路輸出的上述保持結果、從上述后級數據保持電路輸出的上述保持結果、或從上述級間選擇器輸出的選擇結果,并同時提供給上述各存儲體。
全文摘要
一種以硬件實現(xiàn)FFT(或IFFT)處理的運算裝置,謀求用于存儲數據的存儲器量的削減和運算處理的快速化。FFT運算裝置具備在指定的地址中以重寫的形式同時寫入或同時讀出多個數據的多個存儲體(31-1~31-4)、FFT運算電路(20)、FFT存儲器控制電路(40)。電路(20)中,當供給從存儲體(31-1~31-4)同時讀出的多個被運算數據時,使用該多個被運算數據進行預定的FFT運算處理并同時輸出多個運算結果,反復進行預定次數的FFT運算處理。電路(40)輸入從FFT運算電路(20)同時輸出的多個運算結果,變換數據順序并以重寫的形式寫入存儲體(31-1~31-4)使得同時供給電路(20)下次運算處理所需要的多個數據。
文檔編號G06F17/14GK1885287SQ20061000683
公開日2006年12月27日 申請日期2006年2月5日 優(yōu)先權日2005年6月20日
發(fā)明者上原輝昭 申請人:沖電氣工業(yè)株式會社