最近一直在做FPGA的测频,有点心得,和大家分享一下。。
其实在网上找的蛮多测频的资料都归结于两种方法 1.测频法 2.测周期法。其实两种方法各有各的优缺点。测频法就是在给定一个门限时间t,看这个门限时间里待测信号的周期个数n,然后频率F = n/t,这种测频法可以测到很高的频率,当时我们测到了20MHZ误差不大,大约几百,但是这种测量方法在低频的时候不是很准确,而且有效位数无法到小数点,如果你给的是2s的门限,测得的精度就是0.5hz。所以有其局限性。然后是测周期法,测周期法是在待测信号的一个周期内计数标准脉冲的个数(FPGA的时钟晶振,在没有倍频的情况下)。这个有自己的优点,可以测得小数点后几位,当时我们用的是100Mhz的晶振,可以测到小数点后三位,而且和函数信号发生器输出的没有差别。但是这个高频上不去 当时我们测100KHZ的波形就不是很准确了的,我当时算过的,如果用100M的晶振,要测100k,此时要测1000个周期,如果测100020hz,这时候要测999.9个周期,这时候FPGA就没有什么分辨能力了,所以这个高频测不是很准。
综上,FPGA测频时候,用测频法,高频上的去,但是无法测到小数点后,如果不是要很高的精度的话,这种方法其实可以采用的。用测周期法,低频下的来,还可以侧刀精确的小数点后几位,但是高频不是很精确。
我们做的项目需要有很高的精准度,频率在几十K到几百K,我们经过自己的考虑后还是选择了测周期法,而且这种方法在经过改进之后可以在几百K的时候还保持者1hz的精度。在这里介绍一下。1 提高时钟频率,大家可以计算一下,当