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