过零比较测信号频率,不稳定,谢谢!
把信号过零比较整成方波,然后在信号上升沿时刻捕捉.代码如下:always @(posedge clk )
begin
freqImg0<=freq;
freqImg1<=freqImg0;
end
always@(posedge clk)
begin
if ((freqImg1==0) && (freqImg0==0) &&(freq==1))
freqResult<=freqCnt;
else if ( (freqImg1==0) && (freqImg0==1) &&(freq==1))
freqCnt<=2;
else
freqCnt<=freqCnt+1;
end
freq是输入信号, freqResult是结果. 大部分情况下,结果对的,但有时候结果很小,或者近似于一半理想值. 我用示波器量了信号,波形很好.
谢谢! 看我的一个例子:
always @(posedge pllclk)
begin
pulse_0_r <= pulse_0;
end
assign pos_pulse_0 = pulse_0 & (~pulse_0_r); //在pulse的上升沿出现一个时钟周期宽度的脉冲
always @(posedge pllclk)
begin
pos_pulse_0r <= pos_pulse_0; //此处锁存,否则脉冲可能会出现毛刺
end
要使用锁存后的脉冲信号。
我以前用pos_pulse_0作计数时,会出现错误。但用pos_pulse_0r作计数时,就再也没有出现错误。 用滞回比较器,但是滞回比较器不能准确的检测过零点。如果必须是检测过零点的话,就只能用用滤波的办法了。 非常感谢 ! mark一下喽 还是不对,奇怪. mark一下 回复【5楼】armwork
还是不对,奇怪.
-----------------------------------------------------------------------
用示波器看一下比较器输出端波形就知道了,加一个小电容应该能解决问题,以前做工频测量时遇过这个问题 谢谢, 我量了波形,没毛刺. 时钟是100M,示波器也许没有观察到. 明天看下电路. 谢谢,虽然还没解决,但大概知道原因了,振荡,谢谢大家的帮助.
my~god:我的过零比较正好和你相反,我想让他立即翻转,可他就是不是,要几十毫伏内,输出都是呈线性变化.我一点外部滞回电压都没加,最简单的那种过零比较电路.这是网上的,我也遇到这样的现象,不知道是否也影响结果呢? 谢谢大家,特别感谢wajlh,估计还是振荡,准备换个比较器试下.
页:
[1]