·上一文章:基于CAN总线的淋浴喷头喷射流动场测试系统
·下一文章:利用传统TRIAC调光器对LED进行调光
考虑到FPGA并行计算的特点,利用流水线结构同时计算多个Xm+p,Xm+p-1值,将串行迭代变为并行迭代,其运算步骤归纳如下:
本文提出的算法分为粗测频(步骤1)和精测频(步骤2,3),频率估计值为粗测结果与精测结果之和。
1.2 算法分析
本文算法与文献提到的算法主要区别在于步骤3。算法将正弦波信号所在频段[m-1,m+1]细化为5个子频段,如图1所示,并根据δ1值的大小判断信号谱线位置,使信号的频率位于某子频段的中心区域再进行频率估计。
该算法也可认为是对Rife算法的一种修正,通过适当增加运算量提高了估计精度。当p=O及p=1时,该算法退化为Rife算法。
与MRife算法相比:MRife算法是通过对原始信号进行平移,然后对平移后的信号做FFT,重新用Rife算法计算δ。从式(3)可以发现“信号平移+FFT”与Xm+p时域运算是一致的,所不同的是,由于计算单个Xm+p只需N次复数乘法和N次复数加法,运算量比“信号平移+FFT”小,因此本文算法可同时计算多个Xm+p,Xm+p-1,以提高估计精度。
2 算法硬件实现
本文算法充分利用了FPGA并行计算的优点,在FPGA实现时采用流水线模式,经过固有时间后,每个时钟周期可以输出一个指定操作的结果,提高了算法的运算速度。
从前面的分析可知,整个测频算法主要包括粗测频和精测频2个部分:首先对信号作FFT运算并进行谱峰搜索得到峰值位置;再通过插值FFT运算得到频率偏差δ1,δ2;粗测频部分可以直接调用相关FPGA的FFT库函数完成。从式(3)可知精测频部分需要大量计算三角函数,本文采用查表法来实现。整个算法流程如图2所示。