请教,在时钟的上升沿,怎样判断一个脉冲的上升沿?
有通用的边沿判断电路,就是用时钟上升沿驱动一个寄存器,把该脉冲作为输入,把该寄存器的输入和输出作为条件,如果输入为0输出为1,则表示出现上升沿。不过这样的上升沿会延迟一个时钟周期的。
always @(posedge clk)
begin
pluse_buf1<= pluse;
plues_buf2<=pluse_buf1;
end
assign pluse_raise = pluse_buf1 & (~pluse_buf2);
请教楼上, pluse_raise = pluse_buf1 & (~pluse_buf2);采用两级d触发器是增加稳定性吗?
消除亚稳态,没错的。就是采用二级触发器。
3楼写的好。
clkreg<clk_in;
clkfall<=clkreg && (~clk_in);
可以判断下降沿吧。
如果本来就是同步的话,就不需要这样写了。
always @(posedge clk)
begin
pluse_buf1<= pluse;
end
assign pluse_raise = pluse & (~pluse_buf1);
如果想消除亚稳态的话,那应该是如下写法:
always @(posedge clk)
begin
pluse_buf1<= pluse;
plues_buf2<=pluse_buf1;
plues_buf3<=pluse_buf2;
end
assign pluse_raise = pluse_buf2 & (~pluse_buf3);
打两拍后才用,才是标准的消除亚稳态的电路。
高! 7# kk2009
7楼正解,不过还是要考虑快慢时钟的问题,打两拍不是万能的
还是7楼的标准
学习了
多谢指导,9楼,请问快慢时钟的问题能否详细说明?是否要判断的信号周期小于处理时钟的周期,会出现问题?
7楼是正解,另一个,小编不喜欢思考问题!
这个在rtl上,常常称之为leading one,也就是说找到在这个脉冲内的第一个clock period
#13 leading one 什么意思啊?没有听过 13# duanwuyu
你好,葫芦小编
学习了!谢谢。
方法倒是ok,但前提是脉冲不能太窄,否则抓不到。
学习了,谢谢各位!
检测相邻两个周期的信号值
恩 顶7楼
学习了,不考虑DELAY?
学习了。
正解! 7# kk2009
高手高手。
always @(posedge clk)
begin
pluse_buf1<= pluse;
plues_buf2<=pluse_buf1;
end
assign pluse_raise = pluse_buf1 & (~pluse_buf2);
很经典的上升沿检测电路
的确打两拍不是万能的,但从概率上讲已经很大程度上消除亚稳态了。常见的几家大片商的参考设计都是这样做的,差不多也已经是“标准”做法了
学习了
7楼的不是三个时钟了吗
?、
刚才错了 “不是三个D触发器了吗,?”
