小序:
前几天看全国大学生电子设计竞赛历年试题,无意间发现了一道题目《简易数字频率计》,跟之前我用verilog写的一个频率计差不多,于是想尝试做一下,题目具体要求如下图中所示,我所用的开发板为 xilinx spartan 3ES, 最后结果还算理想,在要求的范围内的频率测量精度比较高,但是由于板子的限制没能实现脉冲宽度测量等功能,但是其原理比较简单,下文中将会给出设计过程,结果展示图片以及整个工程代码的下载链接。
数字频率计总体设计采用分块的思想,自底向上设计方向,三个子模块包括频率测量模块(fre_meter),二进制到十进制转换的模块(bin_dec)和数码管显示模块(led),最后用一个顶层模块(top)把三个子模块例化到一起。总体设计思路就是先通过测频模块测得的频率值然后通过进制转换模块将频率值转换为十进制数,最后再输入给显示模块显示出该频率值。
下图为模块示意图(实际工程中并没有采用原理图的输入方法,有种感觉ISE中原理图输入方法总会产生各种错误,这里仅作示意)。
下面分模块说明:
fre_meter: 测频模块,设计思路完全根据之前我写的一篇博文《verilog编写数字频率计》,只是稍作修改,这里不再重复
输入 clk