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