之前讲到的测周测频存在+1误差,因为在闸门开始的时间内,计数不一定就开始了。例如测频方法,在低频时相对误差就大了。虽然有高频测频低频测周的说法,但难以确定一个界限。因此要找一个一劳永逸的频率算法。
等精度频率测量可以满足需要。它最大的特点在于,闸门时间永远是被测信号周期的整数倍。也就是说,当闸门使能时,实际闸门并未开始,而是要等到被测信号的上升沿到来之时,两个计数器才同时开始计数。闸门关闭也是要等到信号上升沿到来才真正的关闭。下面这个时序图(摘自百度文库)很好的说明这点。
其中“等到上升沿开始计数”很容易实现,就是
always @(posedge datain)begin if(ena == 1)......end
always @(posedge clkref)begin if(ena == 1)......end
这种计数便能消除+1误差。所谓等精度,就是说相对误差和频率本身没有关系,无所谓高低频的顾虑。误差取决于标准信号,可以用锁相环产生。要进一步减少误差,应该提高标准信号的频率,使计数值增大。
最终的公式:fo/No = f1/N1。
原文地址:http://blog.csdn.net/hunterlew/article/details/39099605