边沿检测(转)

脉冲边沿检测

  在很多时候都要对输入脉冲进行边沿检测,如PS/2时序,ps2_data数据在ps2_clk时钟下降沿接收。

  边沿检测Verilog程序代码:

程序

程序

  布线布局后仿真波形如下图:

布线布局后仿真波形

 

 

  可以注意到其中的移位寄存器用了非阻塞赋值(<=)

                                                                         ps2_clk_r0<=ps2_clk;

ps2_clk_r1<=ps2_clk_r0;

ps2_clk_r2<=ps2_clk_r1;

  如果用阻塞赋值的话,综合的时候会把其中两个寄存器去点,用阻塞赋值(=)

                                                                          ps2_clk_r0=ps2_clk;

ps2_clk_r1=ps2_clk_r0;

ps2_clk_r2=ps2_clk_r1;

  会出来这样的警告:

  WARNING:Xst:646 - Signal <ps2_clk_r0> is assigned but never used.

      Register <ps2_clk_r2> equivalent to <ps2_clk_r1> has been removed

      Found 1-bit register for signal <ps2_clk_r1>.

  WARNING:Xst:2677 - Node <ps2_clk_r1> of sequenTIal type is unconnected in block <DetecEdge>.

RTL

 

 

  从RTL可以看到,只剩ps2_clk_r1一个D触发器。

 

非阻塞赋值综合后的RTL

 

 

  上图是非阻塞赋值综合后的RTL,可以看出,有三个D触发器做移位寄存器。通过移位,对边沿进行检测。

 

  代码还有一种写法:

程序

  布线布局后仿真波形和之前程序的仿真波形一样

布线布局后仿真波形和之前程序的仿真波形一样

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值