基于FPGA的FFT算法優(yōu)化及其在磁共振譜儀中的應(yīng)用
如果用一般的定點計算,信噪比下降,噪聲會將產(chǎn)生的鏡像峰湮滅,因此必須采取一定的措施減小由定點化產(chǎn)生的誤差??紤]到在64點FFT并行模塊里點數(shù)是固定的,進行蝶形運算時旋轉(zhuǎn)因子是常數(shù),因此可以根據(jù)系數(shù)的特點對定點化時的階碼做動態(tài)調(diào)整,在保證無溢出的條件下最大程度的減小噪聲。
如圖5所示,對比在Matlab中的仿真結(jié)果,在沒有采取動態(tài)調(diào)整措施前進行定點化的噪聲量級達到±1(見圖5(a)),進行動態(tài)調(diào)整后下降到10-3(見圖5(b)),可見采用動態(tài)調(diào)整進行定點化可以有效地降低由于有限字長效應(yīng)引起的噪聲。
圖6為進行動態(tài)調(diào)整后在FPGA硬件運行的仿真結(jié)果,與軟件自帶的FFT IP相比誤差很小,在輸入正弦波的時候可以明顯地觀察到尖峰,這樣的結(jié)果足以滿足NMR譜儀的信號檢測要求。
2.2 64點FFT并行模塊資源優(yōu)化
由于64點FFT模塊并行實現(xiàn),所占用的FPGA邏輯資源太多,在一般的FPGA中難以實現(xiàn),因此有必要對其進行優(yōu)化減少所占用的資源。該設(shè)計中N是確定的,旋轉(zhuǎn)因子都是常數(shù),蝶形運算中的復(fù)數(shù)乘法為常系數(shù)乘法,根據(jù)這個特點,可對使用資源進行優(yōu)化。
如式(9)所示,64點FFT可分解為384個蝶形運算單元。
n=Nlog N (9)
式中:N為FFT點數(shù);n為所需的蝶形運算單元的個數(shù)。
式(5)和(6)各包含1個復(fù)數(shù)加法運算和1個復(fù)數(shù)乘法運算,需要2個加法器和4個乘法器實現(xiàn)。但經(jīng)過如式(10)所示的運算后的復(fù)數(shù)乘法可用三乘法器實現(xiàn),因此綜合后的資源先比四乘法器架構(gòu)優(yōu)化了25%,
(A1+B1i)(A2+B2i)=(A1A2-B1B2)(A1B2-A2B1)i=A1(A2+B2)=B2(A1+B1)+[A1(A2+B2)-A2(A1+B1)] (10)
評論