FFT實(shí)時(shí)譜分析系統(tǒng)的FPGA設(shè)計(jì)和實(shí)現(xiàn)
在一個(gè)基-4蝶形運(yùn)算單元中,包含WP、W2P和W3P三個(gè)旋轉(zhuǎn)因子,每組基-4蝶形運(yùn)算的第一個(gè)輸出數(shù)據(jù)所乘的旋轉(zhuǎn)因子總為1。在同一個(gè)蝶形組內(nèi),p值是不變的,因而只需確定一個(gè)p值,三個(gè)旋轉(zhuǎn)因子便可確定下來(lái)。每當(dāng)一個(gè)基-4蝶形組計(jì)算完畢而轉(zhuǎn)入下一個(gè)蝶形組時(shí),p值改變一次,其變化的順序恰好是(L-1)位四進(jìn)制數(shù)順序加1的倒序輸出。由此可以根據(jù)蝶形運(yùn)算的級(jí)數(shù)和四點(diǎn)FFT的節(jié)點(diǎn)位置計(jì)算出對(duì)應(yīng)的旋轉(zhuǎn)因子的角度。
由于=cos()-jsin(),在程序中將小數(shù)cos()和-sin()轉(zhuǎn)換成定點(diǎn)數(shù),變換為二進(jìn)制數(shù)進(jìn)行計(jì)算。
本設(shè)計(jì)的復(fù)乘運(yùn)算采用CORDIC算法實(shí)現(xiàn),需要輸入角度值作為進(jìn)行復(fù)乘運(yùn)算的相應(yīng)旋轉(zhuǎn)因子的角度,因此旋轉(zhuǎn)因子產(chǎn)生模塊輸出的數(shù)據(jù)即對(duì)應(yīng)旋轉(zhuǎn)因子的角度值,模塊中包括10位計(jì)數(shù)器和一個(gè)計(jì)算輸出進(jìn)程。程序的運(yùn)算流程如圖5所示。 本文引用地址:http://www.ex-cimer.com/article/88001.htm
本設(shè)計(jì)采用直接計(jì)算旋轉(zhuǎn)因子的方法,不需要產(chǎn)生旋轉(zhuǎn)因子的讀取地址和額外的ROM資源,簡(jiǎn)化了設(shè)計(jì),但需要一直進(jìn)行角度值的計(jì)算,增加了系統(tǒng)的運(yùn)算時(shí)間。
3 FFT實(shí)時(shí)頻譜分析系統(tǒng)的實(shí)現(xiàn)
本設(shè)計(jì)采用Synplicity公司的邏輯綜合軟件Synplify7.1 pro進(jìn)行設(shè)計(jì)綜合,用Xilinx的ISE6.1布局布線。實(shí)現(xiàn)后的系統(tǒng)的時(shí)序分析結(jié)果表示,系統(tǒng)有9.139ns的延遲,系統(tǒng)時(shí)鐘周期可達(dá)10.817ns,系統(tǒng)頻率達(dá)到92.4MHz。當(dāng)系統(tǒng)頻率為90MHz時(shí),1024點(diǎn)FFT運(yùn)算需要的時(shí)間大約為68.3μs,完全可以滿足實(shí)時(shí)處理的要求。本文采用Xilinx公司的Virtex-Ⅱxc2v500 fg456-5 FPGA器件實(shí)現(xiàn)系統(tǒng),設(shè)計(jì)使用資源狀況如表1所示。
本FFT實(shí)時(shí)譜分析系統(tǒng)采用定點(diǎn)運(yùn)算方案,輸入為12位復(fù)數(shù)數(shù)據(jù),輸出為14位復(fù)數(shù)數(shù)據(jù)。采用方波信號(hào)進(jìn)行測(cè)試,其參數(shù)為:脈沖幅度H=100,脈沖寬度M=10。本FFT實(shí)時(shí)譜分析系統(tǒng)輸出的幅值如圖6所示,輸出的幅值的相對(duì)誤差如圖7所示。相對(duì)誤差較大的一些點(diǎn)均出現(xiàn)在標(biāo)準(zhǔn)FFT輸出的幅值很小的點(diǎn)上,這是由于有限字長(zhǎng)效應(yīng)引起相對(duì)誤差造成的。同時(shí)由于采用的算術(shù)運(yùn)算方案是定點(diǎn)運(yùn)算,加劇了小信號(hào)的信噪比的惡化。但在實(shí)際應(yīng)用中這些輸出幅值很小的點(diǎn)會(huì)被判別為頻譜上的噪聲點(diǎn),對(duì)實(shí)際的頻譜分析影響不大,故對(duì)系統(tǒng)的誤差影響并不大。而在標(biāo)準(zhǔn)FFT輸出的幅值較大的點(diǎn)上,相對(duì)誤差則很小。
本設(shè)計(jì)全部由VHDL語(yǔ)言實(shí)現(xiàn),采用自頂向下的設(shè)計(jì)方法,完成了一個(gè)1024點(diǎn)FFT實(shí)時(shí)譜分析系統(tǒng)。該FFT采用了基-4原位算法,既保證了運(yùn)算速度,又節(jié)省了硬件資源。該FFT通過(guò)CORDIC算法實(shí)現(xiàn)復(fù)乘,較傳統(tǒng)的復(fù)乘運(yùn)算節(jié)省了大量的ROM資源,同時(shí)采用了流水線結(jié)構(gòu),加快了運(yùn)算速度。
參考文獻(xiàn)
1 劉淩,胡永生. 數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn). 北京:清華大學(xué)出版社,2002
2 李廣軍,孟憲元. 可編程ASIC 設(shè)計(jì)及應(yīng)用[M].成都:電子科技大學(xué)出版社,2000
3 劉朝暉, 韓月秋.用FPGA 實(shí)現(xiàn)FFT 的研究[J].北京:北京理工大學(xué)學(xué)報(bào),1999;19(2):234~238
4 Volder J E.The CORDIC Trigonometric Computing Technique IRE.Trans.on Electronic Computer,1959(9)
評(píng)論