之前讲到的测周测频存在+1误差,因为在闸门开始的时间内,计数不一定就开始了。例如测频方法,在低频时相对误差就大了。虽然有高频测频低频测周的说法,但难以确定一个界限。因此要找一个一劳永逸的频率算法。
等精度频率测量可以满足需要。它最大的特点在于,闸门时间永远是被测信号周期的整数倍。也就是说,当闸门使能时,实际闸门并未开始,而是要等到被测信号的上升沿到来之时,两个计数器才同时开始计数。闸门关闭也是要等到信号上升沿到来才真正的关闭。下面这个时序图(摘自百度文库)很好的说明这点。
要看懂这个时序图,计数使能的实现:
always @(posedge datain)
begin
ena <= gate;
<