孩子都能学会的FPGA:第二十五课——用FPGA实现频率计

这篇具有很好参考价值的文章主要介绍了孩子都能学会的FPGA:第二十五课——用FPGA实现频率计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(原创声明:该文是作者的原创,面向对象是FPGA入门者,后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门作者不光让大家知其然,还要让大家知其所以然!每个工程作者都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真(前提是安装了modelsim),降低了初学者的门槛。如需整个工程请留言(WX:Blue23Light),不收任何费用,但是仅供参考,不建议大家获得资料后从事一些商业活动!

频率计可以采集外部周期信号的频率,当然实现方法有很多种,这儿我们用FPGA采样计数来实现。

如果用FPGA采样计数实现频率计,那FPGA的采样频率一定要远大于输入信号的频率。这个从直观上是很明确的,你不可能用低频率采样高频信号,就如拿砖头取打天上的飞机,根本打不到的。用相近频率采集输入信号也不可以,因为非常容易错过采集信号的跳变沿,漏过很多采样的信号;只要采样频率远远大于采集信号的频率,才能不会漏过采集信号的跳变细节,得到近似的频率值。

为什么我们不敢保证一定能得到外部输入信号的准确频率值,因为输入信号和FPGA的系统时钟是异步信号,FPGA采集的点有可以巧合错过一个跳变沿,所以我们设计的频率计会有1-2个时钟周期的误差.这个误差可以通过长时间的采集求平均值来减小。

如下所示是FPGA实现频率计的波形示意图,sys_clk是系统时钟,freq_clk是要采集的时钟,flag是设定时间段进行freq_clk时钟数的统计。建议将flag设置成2幂次方秒,这样直接将计数值右移即可,避免了除法的运算。

孩子都能学会的FPGA:第二十五课——用FPGA实现频率计,轻松入门FPGA,fpga开发,fpga

用系统时钟sys_clk采集输入时钟freq_clk,所以要先把freq_clk同步到sys_clk时钟域,再进行时钟数的统计。所以FPGA的设计也是非常简单的。这里sys_clk时钟频率设置为1MHz,主要是为了减少计数值,方便快速仿真。

设置了一个参数CNT=4000000,就是4秒的时间进行频率计数,然后停4秒,再进行4秒的频率计数,以此反复,用meter_flag进行标识。

孩子都能学会的FPGA:第二十五课——用FPGA实现频率计,轻松入门FPGA,fpga开发,fpga

freq_flag用来标识采样点,完成输入周期信号freq_clksys_clk的同步

孩子都能学会的FPGA:第二十五课——用FPGA实现频率计,轻松入门FPGA,fpga开发,fpga

meter_flag拉高的时候,对freq_clk进行计数,通过采集freq_clk的上升沿,最终得计数值通过右移2位实现除4的操作。

孩子都能学会的FPGA:第二十五课——用FPGA实现频率计,轻松入门FPGA,fpga开发,fpga

在仿真文件中设置freq_clk是128Hz,仿真结果是128,结果正确。

孩子都能学会的FPGA:第二十五课——用FPGA实现频率计,轻松入门FPGA,fpga开发,fpga

设置freq_clk是100KHz,仿真结果是100_000,结果正确。

孩子都能学会的FPGA:第二十五课——用FPGA实现频率计,轻松入门FPGA,fpga开发,fpga

设置freq_clk128KHz,仿真结果是128.008,有8个时钟的偏差,原因一是128KHz频率和1MHz比已经相差不大了,而且128KHz不是1MHz的整数倍,所以测量可能就会有偏差的。

孩子都能学会的FPGA:第二十五课——用FPGA实现频率计,轻松入门FPGA,fpga开发,fpga

还有一个重要的原因就是仿真产生的时钟周期freq_clk不是刚刚好的128KHz,可能会有偏差。我们测量一下freq_clk的频率,确实是128008Hz。

孩子都能学会的FPGA:第二十五课——用FPGA实现频率计,轻松入门FPGA,fpga开发,fpga

这节课只是简单的介绍频率计的FPGA实现,如果要提高频率计的精度,有多种方法可以改进,比如用两个计数器,一个上升沿计数,一个下降沿计数,相加求平均;再比如将N个连续的频率值相加求平均等等,有兴趣的读者可以自己设计来试一下。文章来源地址https://www.toymoban.com/news/detail-783481.html

到了这里,关于孩子都能学会的FPGA:第二十五课——用FPGA实现频率计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 孩子都能学会的FPGA:第十七课——用FPGA实现定点数的乘法

    (原创声明:该文是 作者的原创 ,面向对象是 FPGA入门者 ,后续会有进阶的高级教程。宗旨是 让每个想做FPGA的人轻松入门 , 作者不光让大家知其然,还要让大家知其所以然 !每个工程作者都搭建了全自动化的仿真环境,只需要双击 top_tb.bat 文件就可以完成整个的仿真(前

    2024年02月04日
    浏览(42)
  • 孩子都能学会的FPGA:第三十一课——用FPGA实现SPI主机发送数据

    (原创声明:该文是 作者的原创 ,面向对象是 FPGA入门者 ,后续会有进阶的高级教程。宗旨是 让每个想做FPGA的人轻松入门 , 作者不光让大家知其然,还要让大家知其所以然 !每个工程作者都搭建了全自动化的仿真环境,只需要双击 top_tb.bat 文件就可以完成整个的仿真(前

    2024年02月04日
    浏览(34)
  • 孩子都能学会的FPGA:第十六课——用FPGA实现IIR滤波器滤波

    (原创声明:该文是 作者的原创 ,面向对象是 FPGA入门者 ,后续会有进阶的高级教程。宗旨是 让每个想做FPGA的人轻松入门 , 作者不光让大家知其然,还要让大家知其所以然 !每个工程作者都搭建了全自动化的仿真环境,只需要双击 top_tb.bat 文件就可以完成整个的仿真(前

    2024年01月21日
    浏览(51)
  • 路由器(第二十五课)

    1、路由 1) 什么是路由:路由就是数据包从一个网络到另外一外网络的过程 2)支持路由功能的设备:路由器、三层交换机、防火墙 3 路由器转发数据包的依据: -每一台路由器都维护着一张路由表 -路由器是依靠这张路由表来转发数据的 -这张路由表就类似于我们生活中的地

    2024年02月15日
    浏览(52)
  • 孩子都能学会的FPGA:第八课——状态机

    (原创声明:该文是 作者的原创 ,面向对象是 FPGA入门者 ,后续会有进阶的高级教程。宗旨是 让每个想做FPGA的人轻松入门 , 作者不光让大家知其然,还要让大家知其所以然 !每个工程作者都搭建了全自动化的仿真环境,只需要双击 top_tb.bat 文件就可以完成整个的仿真(前

    2024年01月21日
    浏览(43)
  • 孩子都能学会的FPGA:第十二课——利用内存产生正弦波

    (原创声明:该文是 作者的原创 ,面向对象是 FPGA入门者 ,后续会有进阶的高级教程。宗旨是 让每个想做FPGA的人轻松入门 , 作者不光让大家知其然,还要让大家知其所以然 !每个工程作者都搭建了全自动化的仿真环境,只需要双击 top_tb.bat 文件就可以完成整个的仿真(前

    2024年02月03日
    浏览(37)
  • 孩子都能学会的FPGA:第九课——多字节数据的发送和接收

    (原创声明:该文是 作者的原创 ,面向对象是 FPGA入门者 ,后续会有进阶的高级教程。宗旨是 让每个想做FPGA的人轻松入门 , 作者不光让大家知其然,还要让大家知其所以然 !每个工程作者都搭建了全自动化的仿真环境,只需要双击 top_tb.bat 文件就可以完成整个的仿真(前

    2024年02月04日
    浏览(52)
  • 孩子都能学会的FPGA:第十课——UART通信增加CRC校验

    (原创声明:该文是 作者的原创 ,面向对象是 FPGA入门者 ,后续会有进阶的高级教程。宗旨是 让每个想做FPGA的人轻松入门 , 作者不光让大家知其然,还要让大家知其所以然 !每个工程作者都搭建了全自动化的仿真环境,只需要双击 top_tb.bat 文件就可以完成整个的仿真(前

    2024年02月05日
    浏览(44)
  • 孩子都能学会的FPGA:第十一课——基于握手机制的跨时钟域同步

    (原创声明:该文是 作者的原创 ,面向对象是 FPGA入门者 ,后续会有进阶的高级教程。宗旨是 让每个想做FPGA的人轻松入门 , 作者不光让大家知其然,还要让大家知其所以然 !每个工程作者都搭建了全自动化的仿真环境,只需要双击 top_tb.bat 文件就可以完成整个的仿真(前

    2024年02月04日
    浏览(45)
  • 【第二十五课】动态规划:完全背包问题(acwing-3 / 公式推导 / 思路理解 / 优化 / c++代码)

    目录 思路 朴素代码 优化 公式推导上  二维代码  一维代码 公式理解上   在开始看完全背包问题之前,可能需要先了解01背包及其解决办法。 指路👇 【第二十五课】动态规划:01背包问题(acwing-2 / 思路 / 含一维数组优化 / c++代码) 这个问题和01背包的区别就是 每件物品可以

    2024年03月19日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包