利用FPGA實現(xiàn)的FFT變換設(shè)計
隨著集成電路的飛速發(fā)展,在圖像處理,通信和多媒體等很多領(lǐng)域中,數(shù)字信號處理技術(shù)已經(jīng)被廣泛應(yīng)用??焖俑盗⑷~變換(FFT)算法的提出,使得數(shù)字信號處理的運(yùn)算時間上面縮短了好幾個數(shù)量級。因此對FFT算法及其實現(xiàn)方法的研究具有很強(qiáng)的理論和現(xiàn)實意義。
本文引用地址:http://butianyuan.cn/article/266000.htm1 FFT算法及其實現(xiàn)方法
現(xiàn)場可編程門陣列FPGA是一種可編程使用的信號處理器件,其運(yùn)算速度高,內(nèi)置高速乘法器可實現(xiàn)復(fù)雜累加乘法運(yùn)算;同時其存儲量大,無需外接存儲器就可實現(xiàn)大量數(shù)據(jù)運(yùn)算;而且算法實現(xiàn)簡單,通過VHDL編程語言可輕松實現(xiàn)功能開發(fā),縮短了開發(fā)周期。FPGA已經(jīng)在通訊、視頻、圖像處理等領(lǐng)域被廣泛使用。
本次設(shè)計采用FPGA實現(xiàn)8點32位的FFT變換,現(xiàn)場可編程門陣列FPGA是一種可編程使用的信號處理器件,用戶可以通過改變配置信息對其功能進(jìn)行定義,以滿足設(shè)計需求。與DSP相比,F(xiàn)PGA實現(xiàn)FFT具有速度高,存儲容量大,硬件實現(xiàn)簡單,I/O帶寬高等特點。
FFT處理器被分成一下幾個主要的功能模塊:數(shù)據(jù)地址產(chǎn)生單元、蝶形運(yùn)算單元、數(shù)據(jù)選擇單元、控制單元、存儲單元等。通過VHDL語言在CycloneII系列芯片上編程實現(xiàn)。運(yùn)算方案采用順序處理的方法。傅立葉變換實現(xiàn)時首先進(jìn)行基2、基4分解,一般來說,如果算法使用基2實現(xiàn),雖然使用的資源較多,但速度優(yōu)勢明顯。設(shè)計中采用基-2DIT-FFT算法來實現(xiàn)整個系統(tǒng)的設(shè)計,如圖1所示。
圖1
在FFT模塊的設(shè)計中,旋轉(zhuǎn)因子與輸入數(shù)據(jù)進(jìn)行的是一個小數(shù)乘法的蝶形運(yùn)算,需要將旋轉(zhuǎn)因子表示成小數(shù)的二進(jìn)制形式。為了保證運(yùn)算結(jié)果的正確性,還需要將輸入和輸出數(shù)據(jù)進(jìn)行小數(shù)點的調(diào)整。在此次設(shè)計中采用定點小數(shù)的方法,所謂定點小數(shù),就是小數(shù)點的位置是固定的。設(shè)計中統(tǒng)一將小數(shù)點放在了Q6的位置,在仿真的結(jié)果圖中顯示的輸出數(shù)據(jù)均是小數(shù)點經(jīng)過移位后的結(jié)果即結(jié)果均擴(kuò)大了64倍。
復(fù)數(shù)乘法器采用FPGA內(nèi)部IP核的例化與調(diào)用來設(shè)計實現(xiàn)了蝶形處理,這樣就可以提高蝶形運(yùn)算單元的的運(yùn)算速度,降低了運(yùn)算復(fù)雜度??刂茊卧脑O(shè)計通過一個有限狀態(tài)機(jī)來實現(xiàn)控制器。通過有限狀態(tài)機(jī)狀態(tài)的輸出分別控制ROM因子表、隨機(jī)存儲器RAM和蝶形處理器。使它們可以協(xié)調(diào)一致地工作,從而實現(xiàn)FFT運(yùn)算的正確輸出。
將系統(tǒng)設(shè)計的各個模塊連接起來,利用順序處理的FFT設(shè)計結(jié)構(gòu),將輸入數(shù)據(jù)的8個點放到RAM中進(jìn)行處理。經(jīng)過元件例化和調(diào)用操作完一級蝶形之后對其結(jié)果進(jìn)行存儲;之后完成二級蝶形操作及存儲;最后進(jìn)行三級蝶形的操作。
若輸入8點數(shù)據(jù)為[5,8,3,2.0,6,1,2].其仿真結(jié)果經(jīng)轉(zhuǎn)換后的值為(即結(jié)果擴(kuò)大了64倍):[1728,410-j218,64-j640,230+j38,-576,230-j38,64+j640,410+j218 ],與MATLAB仿真的結(jié)果一致。
如圖2所示,圖中的x0,x1,x2……x7是輸入信號,分別給它們輸入的值為[5,8,3,2,0,6,1,2];y0_i,y0_r……y7_i,y7_r是仿真中得到的輸出信號。經(jīng)過運(yùn)算,輸出結(jié)果與理論計算結(jié)果一致。
圖2
2總結(jié)
通過仿真驗證此次利用FPGA實現(xiàn)的FFT設(shè)計采用內(nèi)置雙端口RAM、ROM單元,實現(xiàn)了存取數(shù)據(jù)、旋轉(zhuǎn)因子計算、蝶形計算,系統(tǒng)結(jié)構(gòu)簡單,運(yùn)算可靠性高,速度得到了進(jìn)一步提升。
評論