FPGA频率测量算法

好久不更新这个blog了。。

今天接到一个小的任务就是用FPGA测频率,大致需求如下,输入信号为一个方波信号(或者PWM),输入频率范围2MHz-3MHz,频率测量更新时间1ms左右,频率测量误差+-50Hz,用尽量少的资源来实现。

这里首先考虑用脉冲计数的方式来进行频率测量,或者频率估计,找了一些资料找到了误差最小的频率测量方式。大致思路如下,首先脉冲计数的频率测量方式核心思想就是用一个高频率的时钟来检测输入信号的上升沿,进而对输入信号脉冲计数,只要在确定时间内得到一定的脉冲数就可以计算得到频率。为了令频率误差最小,要么就是让固定的时间误差小,要么就是让所计的脉冲数误差最小,由于输入信号频率一定小于测量时钟主频,那么保证输入信号脉冲数的准确性可以得到最小误差。

因此算法如下,检测输入信号上升沿,然后时钟计数器一直计数,而输入信号计数器在每次输入信号上升沿计数。在时间大概1ms左右检测最后一个输入信号上升沿停止计数,最后时钟计数器计数值N0,输入信号计数器计数值Nx。这时候输入信号测量的频率值为:

fx=f0*Nx/N0

误差计算如下:

dfx=-f0*Nx/N0^2*dN0
   =-f0^2/N0^2/f0*Nx/fx*fx*dN0
   =-f0/fx/T*dN0

dN
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值