基于FPGA的FFT算法硬件實(shí)現(xiàn)
FFT(快速傅里葉變換)是一種非常重要的算法,在信號(hào)處理、圖像處理、生物信息學(xué)、計(jì)算物理、應(yīng)用數(shù)學(xué)等方面都有著廣泛的應(yīng)用。在高速數(shù)字信號(hào)處理中,FFT的處理速度往往是整個(gè)系統(tǒng)設(shè)計(jì)性能的關(guān)鍵所在。FPGA(現(xiàn)場可編程門陣列)是一種具有大規(guī)??删幊涕T陣列的器件,不僅具有ASIC(專用集成電路)快速的特點(diǎn),更具有很好的系統(tǒng)實(shí)現(xiàn)的靈活性?;?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/FPGA">FPGA的設(shè)計(jì)可以滿足實(shí)時(shí)數(shù)字信號(hào)處理的要求,在市
場競爭中具有很大的優(yōu)勢(shì)。因此,FPGA為高速FFT算法的實(shí)現(xiàn)提供了一個(gè)很好的平臺(tái)。
1 FFT算法的硬件實(shí)現(xiàn)
1.1 系統(tǒng)框圖
本設(shè)計(jì)利用流水線技術(shù)來提高系統(tǒng)的性能,系統(tǒng)框圖,如圖1所示。其中,地址產(chǎn)生單元生成RAM讀寫地址,寫使能信號(hào)以及相關(guān)模塊的啟動(dòng)、控制信號(hào),是系統(tǒng)的控制核心;4點(diǎn)蝶形運(yùn)算單元的最后一級(jí)輸出不是順序的;旋轉(zhuǎn)因子產(chǎn)生單元生成復(fù)乘運(yùn)算中的旋轉(zhuǎn)因子的角度數(shù)據(jù);旋轉(zhuǎn)因子ROM中預(yù)置了每一級(jí)運(yùn)算中所需的旋轉(zhuǎn)因子。
在FPGA設(shè)計(jì)中,為提高系統(tǒng)的運(yùn)行速度,而將指令分為幾個(gè)子操作,每個(gè)子操作由不同的單元完成,這樣,每一級(jí)的電路結(jié)構(gòu)得到簡化,從而減少輸入到輸出間的電路延時(shí),在較小的時(shí)鐘周期內(nèi)就能夠完成這一級(jí)的電路功能。在下一個(gè)時(shí)鐘周期到來時(shí),將前一級(jí)的結(jié)果鎖存為該級(jí)電路的輸入,這樣逐級(jí)鎖存,由最后一級(jí)完成最終結(jié)果的輸出。也就是說,流水線技術(shù)是將待處理的任務(wù)分解為相互有關(guān)而又相互
獨(dú)立、可以順序執(zhí)行的子任務(wù)來逐步實(shí)現(xiàn)。本設(shè)計(jì)中,4點(diǎn)蝶形運(yùn)算單元、旋轉(zhuǎn)因子復(fù)乘模塊以及最后的精度截取模塊采用流水線技術(shù)來處理。
1.2 基4蝶形運(yùn)算算法原理
式(1)為基4蝶形運(yùn)算單元的一般表達(dá)式,其中,,N為FFT運(yùn)算的點(diǎn)數(shù),本設(shè)計(jì)中為1 024,p為旋轉(zhuǎn)因子W的相位角,其規(guī)律將在1.4節(jié)討論。X(0)、X(1)、X(2)、X(3)為原始數(shù)據(jù),順序輸入RAM后蝶形倒序輸出,與旋轉(zhuǎn)因子復(fù)乘再進(jìn)行4點(diǎn)蝶形運(yùn)算,而X1(0)、X1(1)、X1(2)、X1(3)即為第1級(jí)蝶形運(yùn)算的結(jié)果。此時(shí)RAM存儲(chǔ)的原始數(shù)據(jù)已經(jīng)清空,將第1級(jí)蝶形運(yùn)算結(jié)果再存回RAM中,按照一定的地址輸出后,與第2級(jí)的旋轉(zhuǎn)因子復(fù)乘、4點(diǎn)蝶形運(yùn)算,得到第2級(jí)蝶形運(yùn)算結(jié)果,依此類推。由于蝶形運(yùn)算為同址操作,所以第2級(jí)的RAM寫地址即為第一級(jí)的RAM讀地址,每一級(jí)的RAM讀地址規(guī)律將在1.3節(jié)中討論。
1024點(diǎn)的基4-FFT共需要5級(jí)蝶形運(yùn)算,每級(jí)需要計(jì)算256個(gè)蝶形,其傳統(tǒng)實(shí)現(xiàn)框圖如圖2所示。
考慮到第一級(jí)蝶形運(yùn)算不需要旋轉(zhuǎn)因子,所以第一級(jí)的旋轉(zhuǎn)因子復(fù)乘模塊可以省略,但本設(shè)計(jì)的硬件結(jié)構(gòu)需要循環(huán)利用,一般情況下,可以對(duì)第一級(jí)數(shù)據(jù)進(jìn)行×1運(yùn)算,再進(jìn)行4點(diǎn)蝶形運(yùn)算。不過,考慮到我們并不關(guān)心每一級(jí)蝶形運(yùn)算后的結(jié)果,本文提出了一種蝶形運(yùn)算的新結(jié)構(gòu):即先進(jìn)行前一級(jí)的4點(diǎn)蝶形運(yùn)算,再進(jìn)行本級(jí)的與旋轉(zhuǎn)因子復(fù)乘運(yùn)算,如圖3所示。
評(píng)論