返回信息流RT~~~
这是一条镜像帖。来源:北邮人论坛 / circuit / #23944同步于 2013/12/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖
请问如何在信号上升沿来的时候产生一个脉宽为一个周期的脉冲?
whwjez
2013/12/7镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
如下,检测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,只保留一个时钟周期
3Q~~~不过这样可能会有亚稳态吧???
【 在 a640 的大作中提到: 】
: 如下,检测start信号上升沿,存储在start_buf当中。
: wire start_buf;
: reg start_reg;
: ...................
或者把最后的assign也放到clk里面去,改成if,不过这么写也基本没出过问题,因为对于上升沿信号的使用也是在时序中用的。
【 在 whwjez 的大作中提到: 】
: 3Q~~~不过这样可能会有亚稳态吧???
如果被检测信号不在同一个时钟域的话,需要再多打几级寄存器,防止亚稳态
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;
: ...................
嗯,这样确实好多了。
【 在 Jerryyx 的大作中提到: 】
: 如果被检测信号不在同一个时钟域的话,需要再多打几级寄存器,防止亚稳态
: wire start_buf;
: reg [2:0] start_reg;
: ...................