简易频率计的设计
- 理论学习
频率测量的方法
- 频率测量法:在时间 t 内对被测时钟信号的时钟周期 N 进行计数,然后求出单位时间内的时钟周期数,即为被测时钟信号的时钟频率。
- 周期测量法:先测量出被测时钟信号的时钟周期 T,然后根据频率 f = 1/T 求出被测时钟信号的频率。
但是上述两种方法都会产生±1 个被测时钟周期的误差,在实际应用中有一定的局限性;而且根据两种方式的测量原理,很容易发现频率测量法适合于测量高频时钟信号,而周期测量法适合于低频时钟信号的测量。
等精度测量法
测量的实际门控时间不是一个固定值,它与被测时钟信号相关,是被测时钟信号周期的整数倍。在实际门控信号下,同时对标准时钟和被测时钟信号的时钟周期进行计数,再通过公式计算得到被测信号的时钟频率。
减小误差:;增大“软件闸门”的有效范围或者提高“标准时钟信号”的时钟频率 fs,提高测量精度。
在设计时,标准时钟信号频率为 100MHz,实际闸门时间大于或等于 1s,以减小误差,提高测量精度。
- 频率计算模块
- 怎么产生软件闸门、实际闸门和标准时钟信号计数闸门?
这里闸门高电平持续时间1s,前后个0.25s低电平时间。那么这里需要通过计数实现时间控制。实际闸门需要使用被测时钟对软件闸门进行同步生成。同理,标准时钟信号计数闸门使用标准时钟对实际闸门进行同步生成。 - 分别对两时钟计数,并寄存。此时就需要两个计数器,在实际闸门下对待测时钟周期计数X,在标准时钟计数闸门下对标准时钟周期计数Y,另外后面需要计算,所以寄存X、Y使用两个中间信号。什么时候对这两个中间寄存信号赋值?
这就需要检测实际闸门和标准时钟信号计数闸门的下降沿,然后生成一个寄存X、Y的标志脉冲信号,然后就可以寄存X、Y:
- 什么时候计算结果?
这里利用刚刚的软件闸门后0.25s结束开始计算,声明计算标志信号 calc_flag,在计数器 cnt_gate_s 计数到最大值,将 calc_flag 拉高一个时钟周期的高电平作为计算标志。 - 计算完后怎么赋给输出变量?
通过刚刚生成的计算标志信号延一拍然后得到一个输出标志脉冲信号,然后就可以赋给输出变量了。
- 顶层模块
和频率计算模块类似