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