armwork 发表于 2010-11-16 15:04:09

过零比较测信号频率,不稳定,谢谢!

把信号过零比较整成方波,然后在信号上升沿时刻捕捉.代码如下:


        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是结果. 大部分情况下,结果对的,但有时候结果很小,或者近似于一半理想值. 我用示波器量了信号,波形很好.

   谢谢!

lqluocn 发表于 2010-11-16 15:59:37

看我的一个例子:

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作计数时,就再也没有出现错误。

wajlh 发表于 2010-11-16 17:23:08

用滞回比较器,但是滞回比较器不能准确的检测过零点。如果必须是检测过零点的话,就只能用用滤波的办法了。

armwork 发表于 2010-11-16 23:45:26

非常感谢 !

zhaoghsea 发表于 2010-11-17 08:19:27

mark一下喽

armwork 发表于 2010-11-17 15:30:29

还是不对,奇怪.

wwwdege 发表于 2010-11-17 15:51:57

mark一下

wajlh 发表于 2010-11-17 21:11:59

回复【5楼】armwork
还是不对,奇怪.
-----------------------------------------------------------------------

用示波器看一下比较器输出端波形就知道了,加一个小电容应该能解决问题,以前做工频测量时遇过这个问题

armwork 发表于 2010-11-17 22:01:09

谢谢, 我量了波形,没毛刺. 时钟是100M,示波器也许没有观察到. 明天看下电路.

armwork 发表于 2010-11-19 11:31:47

谢谢,虽然还没解决,但大概知道原因了,振荡,谢谢大家的帮助.

my~god:我的过零比较正好和你相反,我想让他立即翻转,可他就是不是,要几十毫伏内,输出都是呈线性变化.我一点外部滞回电压都没加,最简单的那种过零比较电路.这是网上的,我也遇到这样的现象,不知道是否也影响结果呢?

armwork 发表于 2010-12-23 13:00:58

谢谢大家,特别感谢wajlh,估计还是振荡,准备换个比较器试下.
页: [1]
查看完整版本: 过零比较测信号频率,不稳定,谢谢!