在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5860|回复: 15

[求助] 如何捕获一个宽度很窄的脉冲信号

[复制链接]
发表于 2015-7-8 11:23:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
输入:一个时钟和一个宽度很窄的脉冲信号(脉冲的宽度不固定,有可能小于半个时钟周期,而且该脉冲由于被衰减导致其上升沿和下降沿也不陡峭,不是直上直下的那种方波)。输出:一个宽度为一个时钟周期的脉冲。
这里面涉及到高频脉冲的捕获,就是把输入脉冲整形,有点难度啊,可以用原理图或VHDL或别的语言描述设计
非常感谢大家,
发表于 2015-7-8 16:04:05 | 显示全部楼层
pulse_a = pulse ;
reg pulse_change ;
always @ (posedge pulse_a or negedge rst)
  if(!rst)
    pulse_change = 1'b0 ;
  else
    pulse_change = ~pulse_change ;
reg [2:0] pulse_sync ;
  always @(posedge clk or negedge rst)
    if(!rst)
     pulse_sync [2 :0] =3'b0 ;
    else
     pulse_sync[2:0] = {pulse_sync[1:0],pulse_change} ;
reg output_clk ;
   always @(posedge clk or negedge rst )
      if(!rst)
        output_clk <= 1'b0 ;
      else if (pulse_sync[2] != pulse_sync[1] )
         output_clk <= 1'b1 ;
      else
         output_clk <= 1'b0 ;
发表于 2015-7-8 16:05:25 | 显示全部楼层
在pulse 到pulse_a之间需要插入一个buffer。另外这个程序参考下把,不知道对不对。
发表于 2015-7-8 16:17:42 | 显示全部楼层
回复 2# chenyueboy

   这位朋友,为什么你编代码没注释?看得辛苦
发表于 2015-7-8 18:09:08 | 显示全部楼层
回复 1# yyz1988

        always @ ( posedge p_clk or negedge p_reset_n )
        if ( ~ p_reset_n )
                p_buf <= 0;
        else
                if ( p_en )
                        p_buf <= ~ c_buf;
                       
        always @ ( posedge c_clk or negedge c_reset_n )
        if ( ~ c_reset_n )
                c_buf <= 0;
        else
                if ( c_en )
                        c_buf <= p_buf;
       
        assign flag = p_buf ^ c_buf;
发表于 2015-7-8 18:54:03 | 显示全部楼层
chenyueboy是用寄存器将输入脉冲转换成电平变化输出,如果2次相邻脉冲间隔足够大,输出的电平变化是可以达到时钟的采集要求,然后去检测输出电平的上长升沿(pulse_sync[2] != pulse_sync[1]),实际我觉得应该是检测pulse_sync的变化沿(每个电平变化对应一个脉冲沿)。
但如果2次相邻脉冲不是足够大,输出电平还是达不到时间采集(寄存)的要求,这种方法 我觉得可能不行。

我觉得,信号能够输入到FPGA,本身就是要求达到器件的setup\hold时间,如果可以达到,那FPGA内部处理实际上是可以使用异步FIFO来达到检测脉冲个数,然后只要使用时钟去读异步FIFO,就达到了将脉冲转换成时间周期输出的要求。这样,只要脉冲信号能够输出到FPGA,那不管有多窄,都可以不漏的检测出来(当然是在异步FIFO不满的情况下)。
发表于 2015-7-8 20:39:58 | 显示全部楼层
不知道脉冲多宽,可以用倍频后的时钟去采集吗?
发表于 2015-7-8 22:13:27 | 显示全部楼层
如果你只需要脉冲的个数,我觉得6楼说得有道理,可以将该脉冲作为fifo的写时钟,写使能一直有效。后面只需要写入的个数就行了。
 楼主| 发表于 2015-7-9 09:41:07 | 显示全部楼层
本帖最后由 yyz1988 于 2015-7-9 09:43 编辑

回复 5# ddxx

5楼朋友的程序什么意思?哪个是输入信号?什么检测原理,另外脉冲就一个,目的只是想把这个宽度很窄的脉冲整形成宽度为一个时钟周期的脉冲,不是要检测脉冲个数
发表于 2015-7-9 10:26:04 | 显示全部楼层
路过学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-27 19:31 , Processed in 0.036155 second(s), 10 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表