基于FPGA的級聯(lián)結(jié)構(gòu)FFT處理器的優(yōu)化設(shè)計
2 蝶形運算核的實現(xiàn)
2.1 基-16蝶形運算核
如果直接將基-16蝶形運算公式轉(zhuǎn)換到硬件中實現(xiàn)基-16運算核,其結(jié)構(gòu)將十分復(fù)雜的。因此,采用易實現(xiàn)的頻域抽選基-4算法來實現(xiàn)頻域抽選基-16蝶形運算核。由基-4蝶行運算單元實現(xiàn)的基-16蝶行運算單元如圖2所示。
采用并行流水結(jié)構(gòu)實現(xiàn)的基-16運算核,一個數(shù)據(jù)時鐘可處理16個數(shù)據(jù)。而每次蝶形運算在一個數(shù)據(jù)時鐘內(nèi)只需要計算出一個結(jié)果,這將造成資源浪費。因此,采用級聯(lián)結(jié)構(gòu)實現(xiàn)的基-16蝶形運算核,用兩個基-4蝶形運算核分別復(fù)用4次來實現(xiàn)每一級中的四個蝶行運算,中間用一個串行出入/輸出的寄存器進行連接,其結(jié)構(gòu)框圖如圖3所示。
2.2 基-4蝶形運算核
基-4蝶形運算核的結(jié)構(gòu)如圖4所示,其中加減模塊為兩級流水結(jié)構(gòu),一次可以計算4個數(shù)據(jù)。蝶形運算的四個串行輸入數(shù)據(jù)經(jīng)串/并轉(zhuǎn)換器轉(zhuǎn)換為四路并行數(shù)據(jù),進入加減運算單元。計算出的4個并行結(jié)果進入并/串轉(zhuǎn)換器后,串行輸入復(fù)數(shù)乘法器和旋轉(zhuǎn)因子相乘然后輸出結(jié)果。因為圖1中最后一級的數(shù)據(jù)只需要進行加減運算不需要再乘以旋轉(zhuǎn)因子,所以圖1中的基-4蝶形運算核是沒有復(fù)數(shù)乘法器的,數(shù)據(jù)從并/串轉(zhuǎn)換器中直接輸出給緩沖存儲器。
2.3 復(fù)數(shù)乘法器
雖然現(xiàn)在的高端產(chǎn)中已經(jīng)集成了可以完成乘法的DSP資源,但也是有限的。因此高效復(fù)數(shù)乘法器的設(shè)計對該設(shè)計來講仍然非常的重要。復(fù)數(shù)乘法的標(biāo)準(zhǔn)式如下:
R+jI=(A+jB)×(C+jD)=(AC-BD)+j(AD+BC)
式中:A,B分別為輸人數(shù)據(jù)的實部和虛部,C和D分別為旋轉(zhuǎn)因子的實部和虛部。按照這種標(biāo)準(zhǔn)表達式,執(zhí)行一次復(fù)數(shù)乘法需要進行4次實數(shù)乘法,2次實數(shù)加法和2次實數(shù)減法。將上述公式重新整理為:R=(C-D)?B+C(A-B),I=(C-D)A-C(A-B)優(yōu)化后的復(fù)數(shù)乘法器需要進行3次實數(shù)乘法,2次實數(shù)加法和3次實數(shù)減法,相比傳統(tǒng)結(jié)構(gòu)多了一個減法器,少了一個乘法器。在FPGA中,加減法模塊所占用的相對裸片面積要小于相同位數(shù)的乘法器模塊。這樣的優(yōu)化還是很有價值的,在FFT吞吐量不變的情況下,可減少25%的乘法器使用量,在乘法器數(shù)量一定的情況下可高FFT吞吐量。
評論