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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
12
返回列表 发新帖
楼主: yyz1988

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

[复制链接]
发表于 2015-7-9 10:35:45 | 显示全部楼层
回复 6# liang5293392


   用fifo是个不错的方法,不会引入很高的时钟。
 楼主| 发表于 2015-7-9 11:58:04 | 显示全部楼层
亲们可能误解本题意思了,不是要计算脉冲个数,而是属于脉冲整形,就一个脉冲,并且脉冲宽度比较窄而且具体多窄是不确定的,该脉冲发出后是一个周期宽度完整的脉冲,但是经过一段较长的导线后输入到FPGA就衰减了,导致脉冲宽度变窄,边沿也不陡峭了,所以想把这个脉冲进行整形, 整形成一个宽度为一个时钟周期的脉冲,不计数啊亲们,注意这个脉冲宽度可能比半个时钟周期还要短,但是会达到器件的setup\hold时间。
发表于 2015-7-9 14:10:35 | 显示全部楼层
本帖最后由 ddxx 于 2015-7-9 14:12 编辑

回复 5# ddxx

将要检测的信号接p_clk,有上升沿时flag会被置位,表示检测到脉冲;c_clk脉冲将flag清零,以便检测下一个脉冲。你可以把flag用c_clk打一拍,这样就输出宽度为1cycle的脉冲了。
发表于 2015-7-9 16:05:17 | 显示全部楼层
回复 12# yyz1988


   用高时钟去采,采到了,你给多宽的脉冲都行
发表于 2015-7-9 16:35:26 | 显示全部楼层
本帖最后由 houjiajun8 于 2015-7-9 16:39 编辑

回复 1# yyz1988

process(sys_clk,sys_rst,flag)
begin
if(sys_rst= '1') then
   qout <= '0';
elsif(sys_clk'event and sys_clk = '1') then
   flag1 <= flag;
   flag2 <= flag1;
   qout <= flag2 xor flag1;
end if;
end process;



process(sig_in,sys_rst)
begin
if(sys_rst = '1') then
   flag <= '0';
elsif(sig_in'event and sig_in = '1') then、
   flag <= ~ flag;
end if;
end process;

就是当外部信号(sig_in)进来时,flag信号取反,然后在系统时钟作用下找出flag变化,发出一个sys_clk脉宽的信号。实时性会比较好。
 楼主| 发表于 2015-7-10 08:48:52 | 显示全部楼层
回复 15# houjiajun8

     15楼的朋友的程序应该是符合要求的,这个其实是一个很实用的电路,多谢各位朋友的相助,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-27 16:03 , Processed in 0.018672 second(s), 7 queries , Gzip On, MemCached On.

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