EDN China > 设计实例 > 可编程器件 > FPGA > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) 基于FPGA实现的FFT插值正弦波频率估计

现代电子技术 中国工程物理研究院 江舸 陶荣辉 李钒 李合生?? 2010年03月29日 ?? 收藏0

  对被噪声污染的正弦波信号进行频率估计是信号参数估计中的经典问题,目前国内外已提出不少方法。文献给出了在高斯白噪声中对正弦波信号频率进行最大似然估计算法,该算法能够达到卡拉美-罗限(CRB),但计算量大,实现困难。FFT频率估计方法具有速度快、便于实时处理的特性而得到了广泛应用。但FFT频率估计方法得到的是离散频率值,当信号频率与FFT离散频率不重合时,由于FFT的“栅栏”效应,信号的实际频率应位于两条谱线之间。显然仅仅利用FFT幅度最大值估计信号频率难以满足精度要求,因此各种插值算法应运而生。文献给出了Rife算法,在对输入信号进行一次FFT运算后,利用最大谱线及其相邻的一根次大谱线进行插值来确定真实频率位置。当信号的真实频率处于两相邻量化频率之间的中心区域时,Rife算法精度很高,但是在FFT量化频率附近的误差却较大。文献提出了一种修正Rife算法,通过对信号进行频移,使新信号的频率位于两个相邻量化频率点的中心区域,然后再利用Rife算法进行频率估计。文献提出了基于傅里叶系数插值迭代的频率估计方法,该方法能够有效提高精度,但需要多次串行迭代,不利于发挥FPGA并行处理的优势。本文分析了以上3种算法的特点,并以之为基础结合FPGA的并行处理优势,提出了一种利用信号FFT插值系数的幅度和相位信息来构造频率修正项的新算法。

  1 基于FFT插值的正弦波频率估计法

  1.1 算法原理

  单一频率正弦信号表示为:

公式

  式中:A,f0,θ分别为正弦信号的幅度、频率和初相;fs为采样频率。目前基于FFT的正弦信号频率估计分为2个过程来实现:粗测频和精测频。粗测频通过直接观察FFT幅谱最大值点m来完成,受观测时长T的限制,误差范围为±l/(2T)。假设为信号频率的真实值,δ为信号频率与其FFT幅度最大处对应频率的相对偏差,m,与δ的关系如式(2)所示:

公式

  考虑到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所示。

算法流程


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

FPGA? FFT插值? Rife? 频率估计?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈