fpga测频原理和verilog代码

本文介绍了FPGA中利用Verilog实现频率测量的方法,主要聚焦于测频算法。通过在低频时钟的两个上升沿之间计数输入信号周期,捕获时钟信号沿来实现。当检测到时钟上升沿时开始计数,下一个上升沿时输出计数并清零。仿真结果显示,计数值可能存在±1的误差,但在某些应用中如ASK、FSK解码已足够使用。若需精确频率值,可能需要进行除法运算。此外,还提及了传统测频和等精度测频的差异。
摘要由CSDN通过智能技术生成

总的来说,fpga测量频率有两种算法,就是常说的测频和测周。专门翻了一下《电子测量》课本找定义,测频是在一段闸门时间内对输入信号周期进行计数,而测周则相反,是在输入信号的时段内,对标准信号周期进行计数。可以理解为,测频是用慢时钟测高频,测周是用用快时钟测低频周期。这种理解也符合“高频测频,低频测周”的说法。

 

就以测频算法为例写程序。难点是对闸门开始和结束标志的捕获。那我们可以用低频信号时钟的两个上升沿之间的那段时间作为闸门,对上升沿时间内输入信号周期进行计数。所以这就转为对时钟信号沿的捕获。一般捕捉沿是靠拼接运算符。verilog用{ },VHDL用&。

 

于是以posedge datain作为敏感信号(因为它快),当检测到clk的上升沿到来时,开始对datain上升沿计数。再下一个上升沿到来时,输出计数,并清零。

 

实现代码:

仿真结果:

从输出的结果看,得到的计数值会有两个&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值