频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。通过两种不同的设计思路,设计两个不同的频率计,通过观察实验结果,得出频率计精度,作出对比。在此次设计中,均以1秒为闸门时间,在该时间内计算待测信号的脉冲个数,并显示频率值。
4.2 基于FPGA的数字频率计的设计与实现
4.2.1 顶层模块设计
目前,FPGA的设计方法主要有两种,自下而上的设计方法与自上而下的设计方法。另外。还可根据实际情况,利用这两种方法的组合进行综合设计,即综合设计方法。自下而上的设计方法是一种传统的电子系统设计方法,它们的设计流程分别如下所示:
系统分解 |
单元设计 |
功能块划分 |
子系统设计 |
系统合成 |
图4-1 自下而上的设计方式
行文设计 |
结构设计 |
逻辑设计 |
电路设计 |
版图设计 |
图4-2 自上而下的设计方式
所以,在本系统,我们也将对其进行自顶向下的设计方法,其顶层代码如下所示:
4.2.2计数器模块
该十进制计数模块由八个一位十进制计数器组成,计数器的特殊之处是,有一个时钟使能输入端ENA,用于锁定计数值。当高电平是计数允许,低电平时计数禁止。
该测频的八位十进制频率计的计数模块,先通过VHDL语言编写一位十进制计数器,再将其原件例化后搭建一个八位十进制计数模块。
4.2.3数字锁存模块
锁存模块由锁存器构成,主要功能是数据的稳定显示,不会由于周期行的清零信号而不断闪烁。在信号LOAD的上升沿后即被所存到寄存器的内部,并由锁存器的输出端输出,然后由实验板的7段译码器译成能在数码管上显示的相对应的数值。
最后我们开始系统的仿真,由于在仿真过程中,1S钟时间将会仿真很长时间,所以我们考虑缩短仿真时间,我们首先假设系统时钟频率1hz对于设置参数为如下所示(左图),而输入的被测试信号的频率为(右图):
图4-5 参数设置一
这里表示输入的时钟是系统时钟的10倍,即10hz,那么其仿真结果为:
图4-6 系统仿真结果
检测到信号的频率为10hz。
下面再做两次仿真:
图4-7 参数设置二
这里表示输入的时钟是系统时钟的100倍,即100hz,那么其仿真结果为:
图4-7 系统仿真结果
图4-8 参数设置三
这里表示输入的时钟是系统时钟的1000倍,即1khz,那么其仿真结果为:
图4-9 系统仿真结果
由于MAXPLUSII软件内部其最大设置为32000,因此在该系统中,我们无法仿真10Mhz的效果,但是其实际上由于显示的是8位,即10M。那么在实际的应用中,我们可以测量到10Mhz的信号。