蘭海洋,林曉煥
(西安工程大學(xué) 電子信息學(xué)院,陜西 西安 710048)
19世紀(jì)20年代,法國(guó)工程師傅里葉(Fourier)指出:任意一個(gè)周期函數(shù)都可以分解為無(wú)窮多個(gè)不同頻率正弦信號(hào)的和,這即是傅里葉級(jí)數(shù)[1],求解傅里葉系數(shù)的過(guò)程就是傅里葉變換。傅里葉變換的應(yīng)用非常廣泛,主要的領(lǐng)域有:物理學(xué)、電子類(lèi)學(xué)科、數(shù)論、組合數(shù)學(xué)、信號(hào)處理、概率論、統(tǒng)計(jì)學(xué)、密碼學(xué)、聲學(xué)、光學(xué)、海洋學(xué)、結(jié)構(gòu)動(dòng)力學(xué)等[2]??焖俑道锶~變換(FFT)是離散傅里葉變換(DFT)的一種快速算法。一般采用 ROM 的方法來(lái)實(shí)現(xiàn)FFT,其速度不能滿(mǎn)足實(shí)時(shí)性的要求[3],這里采用移位存儲(chǔ)器的方法來(lái)存儲(chǔ)旋轉(zhuǎn)因子,大大地提高了FFT的運(yùn)算速度。
設(shè)長(zhǎng)度為N的有限序列x(n)的DFT為:
設(shè)序列x(n)的長(zhǎng)度N(N=2M,M為任意整數(shù))按N的奇偶性把x(n)分解為兩個(gè)N/2點(diǎn)的子序列:
則x(n)的N點(diǎn)DFT為:
由于
所以
式中,G(k)和H(k)分別為 g(m)和 h(m)的 N/2點(diǎn) DFT,表達(dá)式如下:
由于G(k)和H(k)均以N/2為周期,考慮到對(duì)稱(chēng)性,有,X(k)就可表達(dá)式為:
這樣就將N點(diǎn)的DFT分解為兩個(gè)N/2點(diǎn)的DFT以及上面兩式的運(yùn)算,使DFT運(yùn)算量減少,將每個(gè)N/2點(diǎn)的DFT分解為兩個(gè)N/4點(diǎn)的DFT,由于N是2 的正整數(shù)次冪,還可以繼續(xù)分下去,直到分解為2點(diǎn)的DFT為止,這種運(yùn)算可用圖1的流圖表示,稱(chēng)為蝶形運(yùn)算符。當(dāng)N=8時(shí)[5],整個(gè)信號(hào)的流圖如圖2所示。
圖1 蝶形運(yùn)算符
圖2 8點(diǎn)FFT蝶形運(yùn)算示意
FFT設(shè)計(jì)主要由以下部分組成:蝶形運(yùn)算單元,地址產(chǎn)生單元,功能切換單元,存儲(chǔ)單元,浮點(diǎn)單元和時(shí)序控制元。各模塊功能如下:
蝶形運(yùn)算單元采用DIT方式完成FFT的蝶形運(yùn)算,雙口RAM1和 RAM2作為存儲(chǔ)器,從RAM1中讀出數(shù)據(jù)存入RAM2中,或從RAM2中讀出數(shù)據(jù)存入RAM1中。ROM作為預(yù)置旋轉(zhuǎn)因子的存儲(chǔ)單元,功能切換單元用來(lái)完成RAM1與RAM2間數(shù)據(jù)讀寫(xiě)功能的切換;地址產(chǎn)生單元用于產(chǎn)生 RAM 的讀、寫(xiě)地址和 ROM 的讀地址;浮點(diǎn)單元用于記錄蝶算單元輸出數(shù)據(jù)的位信息并完成蝶算單元輸入數(shù)據(jù)的截位;時(shí)序控制單元:產(chǎn)生各模塊的使能信號(hào)、控制信號(hào),使整個(gè)流程正常有序的工作。
由以上分析可知,蝶形運(yùn)算單元是FFT算法最核心的的部分。因此要實(shí)現(xiàn)FFT算法電路,首先是設(shè)計(jì)蝶形運(yùn)算單元,然后利用蝶形模塊及其他幾個(gè)模塊的配合實(shí)現(xiàn)FFT。
由圖1可知,蝶形模塊的輸出為A+BC和A-BC。這里涉及加法、減法、和乘法的相互運(yùn)算,即蝶形運(yùn)算單元的電路主要由加法器、減法器和乘法器構(gòu)成[5]。
1)N為加法器。多為加法器的構(gòu)成有兩種方式:串行進(jìn)位和并行進(jìn)位。串行進(jìn)位方式是將全加器級(jí)聯(lián)構(gòu)成多為加法器。并行進(jìn)位加法設(shè)有并行進(jìn)位產(chǎn)生邏輯,運(yùn)算速度快;并行進(jìn)位加法器通常比串行級(jí)聯(lián)加法器占用的資源多。隨著位數(shù)的增加相同位數(shù)的并行加法器與串行加法器的資源占用快速增大。蝶形運(yùn)算模塊中采用并行進(jìn)位的實(shí)現(xiàn)方式[6]。
2)N位乘法器。N位乘法器的運(yùn)算方法和手工算法一樣,是由N位加法器構(gòu)成的以時(shí)序邏輯方式設(shè)計(jì)的N×N位乘法器方案,其原理是:若被乘數(shù)某位為 1,則乘數(shù)左移幾位,若為 0則不進(jìn)行運(yùn)算,然后逐次相加,直至被乘數(shù)的最高位[7-8]。
3)N位減法器。其設(shè)計(jì)方法和原理和加法器相同。
以輸入信號(hào)為8為二進(jìn)制數(shù)來(lái)實(shí)現(xiàn)FFT設(shè)計(jì),具體說(shuō)明如何利用Verilog HDL語(yǔ)言完成蝶形運(yùn)算單元的設(shè)計(jì)與實(shí)現(xiàn)。圖3為蝶形運(yùn)算單元的核心電路圖,蝶形運(yùn)算的實(shí)現(xiàn)由乘法器、加法器和減法器和控制輸出使能模塊相互運(yùn)算完成的。
圖3 蝶形運(yùn)算單元的核心電路
其中X1_r,X1_im,X2_r,X2_im分別為X1,X2的實(shí)部與虛部,c,d分別代表復(fù)數(shù)的實(shí)部與虛部;y1_r,y2_r,y1_im,y2_im分別代表輸出y1,y2的實(shí)部與虛部,他們分辨對(duì)應(yīng)于A+BC和A-BC的實(shí)部與虛部。圖4為蝶形運(yùn)算單元模塊。
圖4 蝶形運(yùn)算單元模塊
在XILinxA公司的FPGA上進(jìn)行驗(yàn)證,目標(biāo)芯片采用Virtex系列的XCV300,編寫(xiě)軟件為ISE 10.1。
Virtex是Xilinx FPGA中的高端產(chǎn)品,內(nèi)部有豐富的資源,包括RAM,乘法器,IOB,可編程互聯(lián)線,數(shù)字時(shí)鐘管理器 DCM 和可編程邏輯陣列CLB,這一系列產(chǎn)品不斷的升級(jí)和更新,性能也越來(lái)越卓越。 FFT的仿真圖如圖5所示。由波形圖5中可以看出,當(dāng)Start為低電平時(shí),F(xiàn)FT開(kāi)始運(yùn)算,給輸入端順序送入8個(gè)數(shù)據(jù),計(jì)算結(jié)束后,數(shù)據(jù)從輸出端順序輸出。大大提高了運(yùn)算速度。
圖5 FFT運(yùn)算仿真波形
文中采用Verilog語(yǔ)言實(shí)現(xiàn)FFT算法,利用ISE進(jìn)行仿真,在分析快速傅里葉變換(FFT)算法的基礎(chǔ)上[9-10],采用移位存儲(chǔ)器存儲(chǔ)算子的方法,提高了運(yùn)算速度,滿(mǎn)足了實(shí)時(shí)性的要求。采用FPGA實(shí)現(xiàn)高速數(shù)字信號(hào)處理的算法具有可行性和優(yōu)越性,由于FPGA的并行性特點(diǎn)使得算法的實(shí)現(xiàn)速度具有很大的提升,因此越來(lái)越得到電子工程師們的青睞,但由于文中采用256點(diǎn)基2FFT算法,使數(shù)據(jù)和性能方面存在缺陷,可以采用1024點(diǎn)FFT提高性能和數(shù)據(jù)精度。
[1] 王遠(yuǎn)模,趙宏鐘.用FPGA實(shí)現(xiàn)浮點(diǎn)FFT處理器的研究[J].國(guó)防科技大學(xué)學(xué)報(bào),2004,26(06):61-64.
[2] 李加元,成立.系統(tǒng)芯片設(shè)計(jì)的可復(fù)用護(hù)技術(shù)[J].半導(dǎo)體技術(shù),2006,32(0l):15-19.
[3] 劉歡,謝志遠(yuǎn).分裂基 FFT算法討論與改進(jìn)[J].通信技術(shù),2008,41(03):124-128.
[4] 劉韜,樓興華.FPGA數(shù)字電子系統(tǒng)與開(kāi)發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2005.
[5] 韓穎,王旭,吳嗣亮.FPGA實(shí)現(xiàn)高速FFT處理器的設(shè)計(jì)[J].電訊技術(shù),2003(02):74-78.
[6] 劉韜,樓興華.FPGA數(shù)字電子系統(tǒng)與開(kāi)發(fā)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2005.
[7] 袁俊全,孫敏琪,曹瑞.Verilog HDL數(shù)字系統(tǒng)設(shè)計(jì)及其應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2002.
[8] 李懷金,王大鳴.數(shù)字匹配濾波捕獲方法研究與 FPGA實(shí)現(xiàn)[J].通信技術(shù),2007,40(05):41-43.
[9] 姚興波,楊永俠.FFT算法在 OFDM中的應(yīng)用研究與設(shè)計(jì)[J]. 信息安全與通信保密,2011(03):58-60.
[10] 李勇,李雀.OFDM系統(tǒng)中多導(dǎo)頻的FFT信道估計(jì)算法[J].信息安全與通信保密,2008(03):30-33.