乡下乖乖女 发表于 2010-6-25 23:06:17

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

本帖最后由 fpgaw 于 2010-7-12 11:25 编辑

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

绿豆宝贝 发表于 2010-6-26 00:56:29

有通用的边沿判断电路,就是用时钟上升沿驱动一个寄存器,把该脉冲作为输入,把该寄存器的输入和输出作为条件,如果输入为0输出为1,则表示出现上升沿。不过这样的上升沿会延迟一个时钟周期的。

蓝色海域 发表于 2010-6-26 01:41:58

always @(posedge clk)<br>
begin <br>
&nbsp; &nbsp;&nbsp; &nbsp;pluse_buf1&lt;= pluse;<br>
&nbsp; &nbsp;&nbsp; &nbsp;plues_buf2&lt;=pluse_buf1;<br>
end<br>
assign&nbsp; &nbsp;pluse_raise = pluse_buf1&nbsp;&nbsp;&amp; (~pluse_buf2);

我不是少爷 发表于 2010-6-26 01:44:17

请教楼上, pluse_raise = pluse_buf1&nbsp;&nbsp;&amp; (~pluse_buf2);采用两级d触发器是增加稳定性吗??

出外的囝仔 发表于 2010-6-26 03:26:15

消除亚稳态,没错的。就是采用二级触发器。

七郎仔 发表于 2010-6-26 03:47:09

本帖最后由 wushihai 于 2010-6-20 12:14 编辑 <br>
<br>
3楼写的好。<br>
<br>
clkreg&lt;clk_in;<br>
<br>
clkfall&lt;=clkreg &amp;&amp; (~clk_in);<br>
<br>
可以判断下降沿吧。

一个人的舞台 发表于 2010-6-26 04:54:29

如果本来就是同步的话,就不需要这样写了。<br>
always @(posedge clk)<br>
begin<br>
&nbsp; &nbsp;&nbsp; &nbsp;pluse_buf1&lt;= pluse;<br>
end<br>
assign&nbsp; &nbsp;pluse_raise = pluse &amp; (~pluse_buf1);<br>
如果想消除亚稳态的话,那应该是如下写法:<br>
always @(posedge clk)<br>
begin<br>
&nbsp; &nbsp;&nbsp; &nbsp;pluse_buf1&lt;= pluse;<br>
&nbsp; &nbsp;&nbsp; &nbsp;plues_buf2&lt;=pluse_buf1;<br>
plues_buf3&lt;=pluse_buf2;<br>
end<br>
assign&nbsp; &nbsp;pluse_raise = pluse_buf2&nbsp;&nbsp;&amp; (~pluse_buf3);<br>
<br>
打两拍后才用,才是标准的消除亚稳态的电路。

绿豆宝贝 发表于 2010-6-26 05:25:13

http://bbs.eetop.cn/images/smilies/default/smile.gif
高!
        7#
kk2009

别生气咯 发表于 2010-6-26 06:44:41

7楼正解,不过还是要考虑快慢时钟的问题,打两拍不是万能的

麦子 发表于 2010-6-26 07:43:41

还是7楼的标准
页: [1] 2
查看完整版本: 在时钟的上升沿,怎样判断一个脉冲的上升沿???