【正文】
用FPGA實現(xiàn)FFT算法引言 DFT(Discrete Fourier Transformation)是數(shù)字信號分析與處理如圖形、語音及圖像等領(lǐng)域的重要變換工具,直接計算DFT的計算量與變換區(qū)間長度N的平方成正比。當N較大時,因計算量太大,直接用DFT算法進行譜分析和信號的實時處理是不切實際的??焖俑盗⑷~變換(Fast Fourier Transformation,簡稱FFT)使DFT運算效率提高1~2個數(shù)量級。其原因是當N較大時,對DFT進行了基4和基2分解運算。FFT算法除了必需的數(shù)據(jù)存儲器ram和旋轉(zhuǎn)因子rom外,仍需較復(fù)雜的運算和控制電路單元,即使現(xiàn)在,實現(xiàn)長點數(shù)的FFT仍然是很困難。本文提出的FFT實現(xiàn)算法是基于FPGA之上的,算法完成對一個序列的FFT計算,完全由脈沖觸發(fā),外部只輸入一脈沖頭和輸入數(shù)據(jù),便可以得到該脈沖頭作為起始標志的N點FFT輸出結(jié)果。由于使用了雙ram,該算法是流型(Pipelined)的,可以連續(xù)計算N點復(fù)數(shù)輸入FFT,即輸入可以是分段N點連續(xù)復(fù)數(shù)數(shù)據(jù)流。采用DIF(Decimation In Frequency)FFT和DIT(Decimation In Time)FFT對于算法本身來說是無關(guān)緊要的,因為兩種情況下只是存儲器的讀寫地址有所變動而已,不影響算法的結(jié)構(gòu)和流程,也不會對算法復(fù)雜度有何影響。算法實現(xiàn)的可以是基2/4混合基FFT,也可以是純基4FFT和純基2FFT運算。傅立葉變換和逆變換對于變換長度為N的序列x(n)其傅立葉變換可以表示如下: N nk X(k)=DFT[x(n)] = Σ x(n)W n=0 式(1)其中,W=exp(2π/N)。 當點數(shù)N較大時,必須對式(1)進行基4/基2分解,以短點數(shù)實現(xiàn)長