微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教,在时钟的上升沿,怎样判断一个脉冲的上升沿?

请教,在时钟的上升沿,怎样判断一个脉冲的上升沿?

时间:10-02 整理:3721RD 点击:
请教,在时钟的上升沿,怎样判断一个脉冲的上升沿?

有通用的边沿判断电路,就是用时钟上升沿驱动一个寄存器,把该脉冲作为输入,把该寄存器的输入和输出作为条件,如果输入为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触发器了吗,?”

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top