專利名稱:一種3072點fft運算的實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及ー種FFT運算的實現(xiàn)方法。
背景技術(shù):
在寬帶衛(wèi)星通信系統(tǒng)中,為了有效提高系統(tǒng)容量,上行傳輸體制大多數(shù)會采用FDMA或MF-TDMA的體制。在這種情況下,由于上行包含多個載波,星上處理時必須首先完成多路頻分信號的分離,然后進ー步完成各路信號的解調(diào)、譯碼等。多路信號分離時采用數(shù)字方式實現(xiàn)分路,在靈活性以及處理器的功耗和體積上都具有很大的優(yōu)勢。構(gòu)成多路信號的信道間隔相等且均勻有序排列,數(shù)字分路可以采用多相陣列FFT濾波器組分路法。由于采樣率設為30. 72MHz,分路間隔為IOKHz,因此需要利用3072點的DFT (離散 傅立葉變換)完成數(shù)字分路。若按照DFT變換的公式直接計算DFT的運算量與變換區(qū)間長度N的平方成正比,當N較大時,運算量相當巨大,N點DFT的乘法和加法次數(shù)均與N2成正比,這對于要求實時信號處理來說,必將對計算速度提出難以實現(xiàn)的要求。而快速傅立葉變換(FFT)通過各種算法可以使DFT的計算效率提高幾個數(shù)量級,能夠很好的應用于各種信號的實時處理技術(shù)。由于FPGA中有FFT的IPCore資源,直接引用能夠簡化編程,但是FFT的IPCore只能支持2N階的FFT運算,因此3072點FFT運算必須采用混合基FFT實現(xiàn)。通常利用cooley-tukey算法完成3072點FFT的運算。cooley-tukey算法的原理如下0卩1'變換ズ[た]=£>燈[4 )]=[ズ(_^,た=O,I,·.·,iV —I
=0cooley-tukey算法將變換長度N分解為任意兩個因子的乘積,N = N1XN2,將時域輸入信號索引η表不成
O < . < N,- I,ハn = An, + Βη modTV \( I )
^ -
聯(lián)2]=|:《ザI產(chǎn),< {=: :; (5)- exp(-プ2;τた / N)根據(jù)公式(5)得到該算法的具體實現(xiàn)步驟<1>輸入序列根據(jù)公式(3)的映射關(guān)系,對其進行索引變換; <2>計算N2個變換長度為N1點的DFT ;<3>在第一級變換的輸出上乘以相應的旋轉(zhuǎn)因子W ΚΑ ;<4>計算N1個變換長度為N2點的DFT ;〈5>第二級的輸出結(jié)果根據(jù)公式(4)的映射關(guān)系,對其進行索引變換。
針對3072點FFT,根據(jù)算法原理,首先利用因式分解(N = NI ΧΝ2),其中N = 3072,NI = 1024,Ν2 = 3,然后3072點輸入數(shù)據(jù)(χ(0), χ(1),……,χ(3071))被分為三組,進行第一級的3組1024點FFT變換,輸出結(jié)果乘以調(diào)整因子進行系數(shù)調(diào)整,最后進行第二級1024組3點FFT變換輸出最終結(jié)果(Χ(0),X (1),……,Χ(3071))。其過程如圖I所示。在具體實現(xiàn)時,按照算法結(jié)構(gòu)可以采用并行結(jié)構(gòu)實現(xiàn)。在并行實現(xiàn)結(jié)構(gòu)中,3072點輸入數(shù)據(jù)首先進行串并轉(zhuǎn)換,然后對并行的3組數(shù)據(jù)分別進行3個1024點的FFT,運算結(jié)果經(jīng)過系數(shù)調(diào)整后再依次進行1024次3點DFT運算,即得到了并行輸出的3072點FFT運算結(jié)果,后面通過并串轉(zhuǎn)換以及塊交織(3X1024)調(diào)整,完成3072點數(shù)據(jù)的依次輸出。其實現(xiàn)過程如圖2所示。表I 1024 點 FFT IPCore 資源
FPGA 型號「4vsx55ffll48-12
FFT 點數(shù)1024
輸入數(shù)據(jù)_位寬一14bit
Slices13%
Slice Flip 9%Flops4 input LUTs9%FIF016/RAMB16s1%DSP48s2%表I給出了 1024點FFT的IPcore的資源占用情況,由于占用資源較多,如果采用并行結(jié)構(gòu)實現(xiàn),需要利用三個1024點的FFT IPcore,使得整個結(jié)構(gòu)的資源占用率較高,因此需要簡化結(jié)構(gòu),減少資源的占用率
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種結(jié)構(gòu)簡單,資源占用少的3072點FFT運算的實現(xiàn)方法。本發(fā)明包括如下技術(shù)方案ー種3072點FFT運算的實現(xiàn)方法,包括如下步驟(I)對串行輸入的3072點數(shù)據(jù)x(0),X(I),……,x(3071)進行第一次塊交織,第一次塊交織輸出的數(shù)據(jù)對應于原始數(shù)據(jù)的第0,3,……,3069點、第1,4,……,3070點、第2,5,……,3071 點;(2)第一次塊交織處理后的數(shù)據(jù)利用FPGA中的FFT運算IPcore依次進行1024點FFT運算,獲得三組1024點FFT運算結(jié)果;(3)對三組1024點FFT運算結(jié)果分別乘以對應的調(diào)整因子得到運算結(jié)果X' (O),
V(I),……,V (3071);其中前1024個數(shù)據(jù)的調(diào)整因子的^3]x° = %°。72 = I,后2048個
數(shù)據(jù)的調(diào)整因子分別為EK172,……,K072XilKL……,<7f2;(4)對步驟(3)得到的運算結(jié)果進行第二次塊交織,第二次塊交織輸出的數(shù)據(jù)順序是 X' (0),x, (1024),X' (2048),......,V (1023),X' (2047),X' (3071);(5)對第二次塊交織輸出的數(shù)據(jù)進行串并變換,第二次塊交織輸出的數(shù)據(jù)經(jīng)過串并變換后變成3路并行數(shù)據(jù),第一路數(shù)據(jù)為X' (O),V (I),……(1023),第二路數(shù)據(jù)為 X' (1024),Xi (1025),……,V (2047),第三路數(shù)據(jù)為 X' (2048), Xi (2049),……,
V(3071);(6)對串并變換后的數(shù)據(jù)進行3點DFT運算,依次完成1024次3點DFT運算,并行輸出三路數(shù)據(jù),其中第一路數(shù)據(jù)依次對應3072點FFT運算結(jié)果的第0,1,……,1023點數(shù)據(jù),第二路數(shù)據(jù)依次對應3072點FFT運算結(jié)果的第1024,1025,……,2047點數(shù)據(jù),第三路數(shù)據(jù)依次對應3072點FFT運算結(jié)果的第2048,2049,……,3071點數(shù)據(jù),(7)對3點DFT運算后的數(shù)據(jù)進行井串變換,此時數(shù)據(jù)順序變?yōu)閄(O),X(1024),X(2048),X(I),......,X(1023),X(2047),X(3071);(8)對并串變換后的數(shù)據(jù)進行第三次塊交織實現(xiàn)3072點FFT運算結(jié)果的順序輸出,輸出順序為X(O) ,X(I), ......,,X(1024),X(1025),......,X(2047),X(2048),......,X(3071)。本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點為了實現(xiàn)星上多路信號的解調(diào),需要利用FFT運算完成分路算法,本發(fā)明通過采用串行結(jié)構(gòu)的cooley-tukey算法,有效的實現(xiàn)了資源復用,減少了 FPGA中IPcore的使用量,大大減少了資源開銷。
圖I為基于cooley-tukey算法的3072點FFT運算的原理示意圖;圖2為現(xiàn)有的3072點FFT運算的實現(xiàn)方法示意圖;圖3為本發(fā)明的3072點FFT運算的實現(xiàn)方法示意圖;圖4為塊交織(3X 1024)過程示意圖;圖5為3點DFT實現(xiàn)結(jié)構(gòu)圖。
具體實施例方式下面就結(jié)合附圖對本發(fā)明做進ー步介紹。本發(fā)明利用FPGA中FFT的IPCore在實現(xiàn)3072點FFT的同時需要盡可能的降低星上的資源利用率??紤]到FFT的IPcore在Pipelined模式下支持連續(xù)輸入,因此可以將第一級3組1024點FFT的輸入數(shù)據(jù)調(diào)整順序,依次進行1024點FFT運算,這樣利用ー個IPcore就可以完成3組FFT運算。圖3給出了這種串行的實現(xiàn)結(jié)構(gòu)。在串行實現(xiàn)結(jié)構(gòu)中,3072點輸入數(shù)據(jù)利用塊交織完成數(shù)據(jù)索引順序的調(diào)整,經(jīng)過調(diào)整后的數(shù)據(jù)依次進行1024點FFT運算,然后經(jīng)過系數(shù)調(diào)整以及解交織,恢復數(shù)據(jù)順序。最后同樣經(jīng)過3點的DFT運算以及塊交織完成最終3072點FFT運算結(jié)果的順序輸出。串行的實現(xiàn)結(jié)構(gòu)減少了 IPcore的使用數(shù)量,大大降低了資源利用率。最終形成如圖3所示的串行處理過程,具體包括如下步驟(I)首先當3072點數(shù)據(jù)(x(0),x(l),……,x(3071))串行輸入時,對數(shù)據(jù)進行塊交 織(3X1024),以實現(xiàn)數(shù)據(jù)索引順序的變化,交織輸出數(shù)據(jù)對應于原始數(shù)據(jù)的第0,3,……,3069點、第1,4,……,3070點、第2,5,……,3071點,等價于將并行結(jié)構(gòu)中分成的3組數(shù)據(jù)依次輸出。圖4給出了塊交織的實現(xiàn)原理,在進行塊交織時,都按照“列進行出”的原則進行交織,主要通過控制FPGA內(nèi)部存儲資源RAM的讀寫地址來實現(xiàn),數(shù)據(jù)寫入時寫地址從0,1,2……3071順序變化,當寫滿3072個數(shù)據(jù)吋,開始讀數(shù),讀數(shù)據(jù)時讀地址按照0,3,6……3069,1,4, 7……3070,2,5,8……3071的規(guī)律變化,此時輸出數(shù)據(jù)就完成了“3X 1024”的塊交織,圖中給出了相應的讀寫地址變化規(guī)律。(2)交織輸出數(shù)據(jù)依次送入1024點FFT IPcore,進行1024點FFT運算。(3) IPcore輸出數(shù)據(jù)依次經(jīng)過系數(shù)調(diào)整模塊對三組FFT運算結(jié)果乘以對應的旋轉(zhuǎn)因子,此時需要設置ー個計數(shù)器,其中前1024個數(shù)據(jù)不需要調(diào)整(調(diào)整因子KT3h0 = Ku = I),后面2048個數(shù)據(jù)則需要利用ROM中預存的2048個調(diào)整因子H……,巧ぼ,……,ぢぷ3x2)依次進行復數(shù)乘法完成系數(shù)調(diào)整,各個調(diào)整因子的計算公式如下旳=exp(づ2;rた/7V),其中N = 3072,k = 0,I.……,3072。調(diào)整后順序輸出第一級FFT運算的3072點運算結(jié)果X' (0),X' (I),……,V (3071)。接著數(shù)據(jù)需要進行相應的塊交織(1024X3),輸出X' (0),X' (1024),ぐ(2048),……,V (1023),
V(2047),X' (3071)。在進行塊交織時,同樣按照“列進行出”的原則進行交織。(4)經(jīng)過串并變換,數(shù)據(jù)變成3路并行數(shù)據(jù),第一路數(shù)據(jù)為X' (0),X' (I),......,
V(1023),第二路數(shù)據(jù)為X' (1024), (1025),……,V (204了),第三路數(shù)據(jù)為
V(2048), X; (2049),……(3071),3路數(shù)據(jù)并行送入3點DFT運算模塊中,依次完成1024次3點DFT運算。第一次3點DFT運算的輸入為X' (0),X' (1024),X' (2048),輸出為 X(O),X (1024),X (2048);第二次 3 點 DFT 運算的輸入為 X' (1),X/ (1025),(2049),輸出為X(I),X(1025),X(2049);依次類推,第1024次3點DFT運算的輸入為X' (1023),
V(2047),X' (3071),輸出為 X(1023),X(2047),X(3071)。3點DFT運算可以根據(jù)DFT計算公式進行化簡,采用流水線結(jié)構(gòu)實現(xiàn)。例如對于輸入3點數(shù)據(jù)x(n) (n = 0,1, 2),X(k) (k = 0,1, 2)表示3點DFT計算結(jié)果,具體計算公式如下2X[k] = DFT[x(n)] = [ x{n)W^,た=0,1’ 2
M=O將上式展開,得到X(O) = X (0) +X (I) +X (2);X(I) = X(0)+X(l)e_J2り3+X (2) eJ2り3= X (0) - (x (I) +X (2)) /2+0. 866 j (x (2) -x (I)) X ⑵=X(0)+Wl)eJ2"3+X(2)e-J2"3= X (0) - (x (I) +X (2)) /2-0. 866 j (x (2) -x (I))進ー步化簡分別得到實部和虛部計算公式XEe (0) = xEe(0)+xEe(l)+xEe(2);XEe ⑴=xEe (0) - (xEe(l) +xEe ⑵)/2-0. 866 (xIm ⑵ _xIm (I));XEe ⑵=xEe (0) - (xEe(l) +xEe ⑵)/2+0. 866 (xIm ⑵ _xIm (I));Xlm (0) = Xlni(O)+Xlni ⑴+Xlni (2); Xlm(I) = xIm (0) - (xIm(l) +xIm ⑵)/2+0. 866 (xEe ⑵-xKe (I));Xlm (2) = xIm (0) - (xIm(l) +xIm (2)) /2-0. 866 (xEe (2) -xEe (I));其中數(shù)據(jù)除以2的運算可以使用移位來實現(xiàn),而數(shù)據(jù)乘以0. 866的運算可以看作數(shù)據(jù)與固定因子的乘法,將0. 866轉(zhuǎn)換成ニ進制數(shù),然后使用兩個固定因子的實數(shù)乘法器分別進行實部和虛部的運算,大大降低了資源占用率。圖5給出了這種3點DFT的流水線實現(xiàn)結(jié)構(gòu)。(5)經(jīng)過3點DFT運算后,即完成了 3072點FFT的運算,此時并行輸出三路數(shù)據(jù),其中第一路數(shù)據(jù)依次對應3072點FFT運算結(jié)果的第0,1,……,1023點數(shù)據(jù),第二路數(shù)據(jù)依次對應3072點FFT運算結(jié)果的第1024,1025,……,2047點數(shù)據(jù),第三路數(shù)據(jù)依次對應3072點FFT運算結(jié)果的第2048,2049,……,3071點數(shù)據(jù),需要進ー步調(diào)整輸出順序,于是再經(jīng)過并串變換,此時數(shù)據(jù)順序變?yōu)閄(O),X(1024), X(2048),X(I),……,X(1023),X(2047), X(3071),最后經(jīng)過塊交織(3X1024)實現(xiàn)3072點FFT 運算結(jié)果的順序輸出(X(O),X(I),......,,X(1024),X(1025),......,X(2047),X(2048),......,X(3071))。上述各個步驟都是利用FPGA實現(xiàn)。表2給出了輸入數(shù)據(jù)是14bit的復數(shù)時并行和串行兩種實現(xiàn)結(jié)構(gòu)的3072點FFT資源占用情況對比。可以看出,串行結(jié)構(gòu)只増加了少量的RAM資源,卻大大減少了其它的資
源占用量。表2資源占用情況對比實現(xiàn)結(jié)構(gòu)并行結(jié)構(gòu)串行結(jié)構(gòu)
FPGA 型號4vsx55ffll48-124vsx55ff1148-12
FFT 點數(shù)30723072
輸7^欠據(jù)位 ^ — 14bi「14bTT
Slices43%16%--;----
Slice Flip30%11%
Flops 4 input LUTs29%11%
FIFOl6/RAMB16s11%14%
DSP48s8%3%本發(fā)明未詳細說明部分屬本領(lǐng)域技術(shù)人員公知常識。
權(quán)利要求
1. ー種3072點FFT運算的實現(xiàn)方法,包括如下步驟(1)對串行輸入的3072點數(shù)據(jù)X(O),X(I),……,χ(3071)進行第一次塊交織,第一次塊交織輸出的數(shù)據(jù)對應于原始數(shù)據(jù)的第0,3,……,3069點、第1,4,……,3070點、第2,.5,……,3071點;(2)第一次塊交織處理后的數(shù)據(jù)利用FPGA中的FFT運算IPcore依次進行1024點FFT運算,獲得三組1024點FFT運算結(jié)果;(3)對三組1024點FFT運算結(jié)果分別乘以對應的調(diào)整因子得到運算結(jié)果X'(O),V(I),……,V (3071);其中前1024個數(shù)據(jù)的調(diào)整因子的
全文摘要
本發(fā)明公開了一種3072點FFT運算的實現(xiàn)方法,3072點輸入數(shù)據(jù)利用塊交織完成數(shù)據(jù)索引順序的調(diào)整,經(jīng)過調(diào)整后的數(shù)據(jù)依次進行1024點FFT運算,然后經(jīng)過系數(shù)調(diào)整以及解交織,恢復數(shù)據(jù)順序。最后同樣經(jīng)過3點的DFT運算以及塊交織完成最終3072點FFT運算結(jié)果的順序輸出。本發(fā)明采用串行的實現(xiàn)結(jié)構(gòu),減少了FPGA中IPcore的使用數(shù)量,大大降低了資源利用率。
文檔編號G06F17/14GK102831099SQ20121026446
公開日2012年12月19日 申請日期2012年7月27日 優(yōu)先權(quán)日2012年7月27日
發(fā)明者許鵬飛, 樊寧波, 胡向暉 申請人:西安空間無線電技術(shù)研究所