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