基于FPGA實(shí)現的FFT插值正弦波頻率估計
考慮到FPGA并行計算的特點(diǎn),利用流水線(xiàn)結構同時(shí)計算多個(gè)Xm+p,Xm+p-1值,將串行迭代變?yōu)椴⑿械?,其運算步驟歸納如下:
本文提出的算法分為粗測頻(步驟1)和精測頻(步驟2,3),頻率估計值為粗測結果與精測結果之和。
1.2 算法分析
本文算法與文獻提到的算法主要區別在于步驟3。算法將正弦波信號所在頻段[m-1,m+1]細化為5個(gè)子頻段,如圖1所示,并根據δ1值的大小判斷信號譜線(xiàn)位置,使信號的頻率位于某子頻段的中心區域再進(jìn)行頻率估計。
該算法也可認為是對Rife算法的一種修正,通過(guò)適當增加運算量提高了估計精度。當p=O及p=1時(shí),該算法退化為Rife算法。
與MRife算法相比:MRife算法是通過(guò)對原始信號進(jìn)行平移,然后對平移后的信號做FFT,重新用Rife算法計算δ。從式(3)可以發(fā)現“信號平移+FFT”與Xm+p時(shí)域運算是一致的,所不同的是,由于計算單個(gè)Xm+p只需N次復數乘法和N次復數加法,運算量比“信號平移+FFT”小,因此本文算法可同時(shí)計算多個(gè)Xm+p,Xm+p-1,以提高估計精度。
2 算法硬件實(shí)現
本文算法充分利用了FPGA并行計算的優(yōu)點(diǎn),在FPGA實(shí)現時(shí)采用流水線(xiàn)模式,經(jīng)過(guò)固有時(shí)間后,每個(gè)時(shí)鐘周期可以輸出一個(gè)指定操作的結果,提高了算法的運算速度。
從前面的分析可知,整個(gè)測頻算法主要包括粗測頻和精測頻2個(gè)部分:首先對信號作FFT運算并進(jìn)行譜峰搜索得到峰值位置;再通過(guò)插值FFT運算得到頻率偏差δ1,δ2;粗測頻部分可以直接調用相關(guān)FPGA的FFT庫函數完成。從式(3)可知精測頻部分需要大量計算三角函數,本文采用查表法來(lái)實(shí)現。整個(gè)算法流程如圖2所示。
評論