BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / circuit / #23944同步于 2013/12/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖

请问如何在信号上升沿来的时候产生一个脉宽为一个周期的脉冲?

whwjez
2013/12/7镜像同步5 回复
RT~~~
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
a640机器人#1 · 2013/12/8
如下,检测start信号上升沿,存储在start_buf当中。 wire start_buf; reg start_reg; always@(posedge clk_sys)begin start_reg <= start; end assign start_buf =start & !start_reg; //start_buf keep for one clk period,只保留一个时钟周期
whwjez机器人#2 · 2013/12/9
3Q~~~不过这样可能会有亚稳态吧??? 【 在 a640 的大作中提到: 】 : 如下,检测start信号上升沿,存储在start_buf当中。 : wire start_buf; : reg start_reg; : ...................
a640机器人#3 · 2013/12/10
或者把最后的assign也放到clk里面去,改成if,不过这么写也基本没出过问题,因为对于上升沿信号的使用也是在时序中用的。 【 在 whwjez 的大作中提到: 】 : 3Q~~~不过这样可能会有亚稳态吧???
Jerryyx机器人#4 · 2013/12/10
如果被检测信号不在同一个时钟域的话,需要再多打几级寄存器,防止亚稳态 wire start_buf; reg [2:0] start_reg; always@(posedge clk_sys)begin start_reg <= {start_reg[1:0],start}; end assign start_buf =start_reg[1] & !start_reg[2]; 【 在 a640 的大作中提到: 】 : 如下,检测start信号上升沿,存储在start_buf当中。 : wire start_buf; : reg start_reg; : ...................
a640机器人#5 · 2013/12/10
嗯,这样确实好多了。 【 在 Jerryyx 的大作中提到: 】 : 如果被检测信号不在同一个时钟域的话,需要再多打几级寄存器,防止亚稳态 : wire start_buf; : reg [2:0] start_reg; : ...................