

图1 误差产生原因
Fig l differentia reason
我们假设闸门信号f1=0.5HZ(T=2S, 此时闸门信号为高电平的时间为1S),则用此方法测得的待测信号频率为f2=2/1=2HZ,但是我们从图中可以看到待测信号的频率实际上应该大于2HZ(f3=(2+0.X)/1)。直接测频法测得的结果误差率大概是0.09%到9.1%。一般而言,直接测频法测高频信号时误差率较小。
为了改进直接测频法误差率较大的缺陷,人们又提出了等精度测频法。等精度测频法其实是在直接测频法的基础上发展起来的。它的闸门时间不是固定的,而是被测信号周期的整数倍,这样闸门时间就能够与被测信号周期同步,从而消除直接测频法所产生的+1到-1个信号误差。等精度测频法原理请参见图2。
由图2可以看到闸门信号周期与待测信号周期保持同步,也就是说闸门信号周期长度恰好是待测信号周期长度的整数倍。 假设闸门时间为1S,则待测信号的频率为f=2/1=2HZ。由图中可以看到待测信号的频率的确等于2HZ。
图2 等精度测频法原理
Fig 2 equal observations
3.2 等精度数字频率计设计思想
要设计一个8位十进制等精度数字频率计,实现00000001 - 99999999HZ计数功能,需要由四种器件来组成,即:测频控制信号发生器(TESTCTL)、有时钟使能的十进制计数器(CNT10)、32位锁存器(REG32B)、7段显示译码器(LED7)。因为是8位十进制数字频率计, 所以计数器CNT10需用8个,7段显示译码器LED7也需用8个。为了能够在实际电路上正确显示出频率计的计数值,还必需在频率计与实际电路之间加上数码显示电路。数字频率计原理图如下所示。
图3 数字频率计原理图
Fig 3 Digital frequency meter theory
图4 8位十进制等精度数字频率计流程图
Fig 4 the 8bit algorism and equal of Digital frequency meter flow chart
当预置闸门信号为上升沿时计数器并不马上开始计数, 而是等到待测信号Fsin的上升沿到来时计数器才开始计数,当预置闸门信号出现下降沿时计数器也并不停止计数,而是等到待测信号的上升沿到来时才停止计数。这样实际闸门信号TSTEN的计数周期总是与待测信号的周期保持同步(即周期是整数倍)。Load信号正好是TSTEN信号的翻转,用于锁存器把计数器里的计数值锁存进 32 位的锁存器。在TSTEN信号计数结束后半个周期内并且待测信号出现上升沿时,这时CLR_CNT产生一个上升沿作为清零信号。当系统正常工作时,脉冲发生器提供1Hz的预置闸门信号, 该信号与待测信号经过测频控制信号发生器进行信号变换,产生计数信号,锁存信号,清零信号。被测信号送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在七段数码显示管上可以显示的十进制结果。在数码显示管上可以看到计数结果。8位十进制数字频率计的设计流程图如图4所示。
4 等精度数字频率计详细设计
4.1 测频控制信号发生器(TESTCTL)设计
测频控制信号发生器用于产生同步计数信号,锁存信号,计数器清零信号。由于待测信号和预置闸门信号往往不是同步产生,因而频率计计数器的计数结果与待测信号的实际频率有一定的出入, 为了使待测信号与实际计数信号保持同步。我们分析得到以下结论:当预置闸门信号为上升沿时计数器并不马上开始计数,而是等到待测信号Fsin的上升沿到来时计数器才开始计数,当预置闸门信号出现下降沿时计数器也并不马上停止计数,而是等到待测信号的上升沿到来时才停止计数。这样实际闸门信号TSTEN的计数周期总是与待测信号的周期保持同步(即周期是整数倍)。锁存信号用于锁存计数器的计数值,该信号应该与实际闸门信号恰好相反。清零信号用于清除计数器的计数值,以便为下一次的计数做准备。测频控制信号发生器的详细设计流程图如图5所示。
图5 信号控制器流程图
Fig 5 signal of controller flow chart
测频控制信号发生器的VHDL源程序经过编译,并且经过仿真后得到的仿真波形图如下所示。
图6 仿真波形
Fig 6 signal of controller simulation
由仿真波形图可看到测频控制信号发生器的实际闸门信TESEN恰好与待测信号Fsin保持同步(即计数时间周期是待测信号周期的整数倍)。当TESEN 为高电平1时允许计数器(CNT10)计数。 输出端Load产生一个与TSTEN相反的信号用于锁存计数,当为高电平 1 时把计数器的前一个计数周期结果锁存到32位锁存器(REG32B)。当Load信号产生且待测信号的下降沿到来时产生一个CLR_CNT信号,此信号用于对计数器清零。由以上分析可知设计与预期结果一致,测频控制信号发生器设计正确。
4.2 有时钟使能的十进制计数器(CNT10)设计
十进制计数器用于计量实际闸门时间内通过的待测信号的脉冲个数,为了实现8位十进制计数功能,一共需要8个十进制计数器,并且每个计数器都应该有进位信号,当计数值大于9时,该计数器应该进位清零。进位数值应该作为高一位计数器的输入值,以此实现8个计数器的级联,从而实现频率计的8位计数功能。由以上分析可知频率计的计数范围应该是00000001-99999999HZ。
当计数器的ENA输入端为1时,计数器开始对输入的待测信号Fsin的脉冲个数开始计数。并将计数结果锁存到32位锁存器里,如果第一个计数器的计数值超过了9,则该计数器清零,把进位的计数值输入到第2个计数器里。后面的以此类推,直到第8个计数器的计数值超过9,此时频率计的计数结果为0。当CLR输入端的信号输入出现上升沿时,计数器的计数结果应该全部清零。有时钟使能的十进制计数器的详细设计流程图如下所示。
图7 十进制计数器详细流程图
Fig 7 particular of algorism controller flow chart
有时钟使能的十进制计数器的VHDL源程序经过编译,并且经过仿真后得到的仿真波形图如下所示。
图8 计数器仿真波形
Fig 8 wave of simulation controller转贴于 酷文网-论文下载中心 http://www.coolwen.net