fpga等精度频率测量原理

之前讲到的测周测频存在+1误差,因为在闸门开始的时间内,计数不一定就开始了。例如测频方法,在低频时相对误差就大了。虽然有高频测频低频测周的说法,但难以确定一个界限。因此要找一个一劳永逸的频率算法。

等精度频率测量可以满足需要。它最大的特点在于,闸门时间永远是被测信号周期的整数倍。也就是说,当闸门使能时,实际闸门并未开始,而是要等到被测信号的上升沿到来之时,两个计数器才同时开始计数。闸门关闭也是要等到信号上升沿到来才真正的关闭。下面这个时序图(摘自百度文库)很好的说明这点。


要看懂这个时序图,计数使能的实现:

always @(posedge datain)

begin

ena <= gate;

end

相当于D触发器一样,闸门受同步了,延迟了。接着

always @(posedge datain)

begin

if(ena == 1)......end


always @(posedge clkref)

begin 

if(ena == 1)......end

这种计数便能消除+1误差。所谓等精度,就是说相对误差和频率本身没有关系,无所谓高低频的顾虑。误差取决于标准信号,可以用锁相环产生。要进一步减少误差,应该提高标准信号的频率,使计数值增大。

最终的公式:fo/No = f1/N1。


---------------------------------------------------------------

补充,2014-12-16:

今天又看了一遍等精度测量的原理,觉得之前很多都理解的不到位,上面的代码也修改了一番。

我认为等精度测量的突出特点:多了标准信号;使能延迟;除法运算。

有段话说的好:等精度测频能够在整个频域内保持恒定的精度。当然,这不是说等精度测频没有误差,而是由于误差恒定,不催被测信号频率变化而变化,所以方便了频率补偿,有助于提高精度。这个恒定的误差只限于标准信号频率上。