Edgedetect 边沿检测(Verilog)

        边沿检测的底层逻辑就是把上一时刻的值与当前时刻的值进行比较。若上一时刻的值为0,当前时刻的值为1,则为上升沿;同理,上一时刻的值为1,当前时刻的值为0,则为下降沿。

       最常用的实现边沿检测的方法就是连接两级D触发器,如图所示:

这种方法适用于大多数情况的边沿检测,代码如下:

    reg data;
    reg [1:0] edge_reg; 
 always@(posedge Clk or negedge Rst_n)  
  if(!Rst_n) 
    edge_reg <= 2'd0;
  else begin
    edge_reg <= {edge_reg[0],data}; 
  end

    wire pedge_flag;
  assign pedge_flag= (edge_reg== 2'b01);

    wire nedge_flag;
  assign nedge_flag= (edge_reg== 2'b10);

当然,为了减轻亚稳态对边沿检测时的干扰,还可以用三级D触发器互相连接来进行边沿检测,如图所示:

这种方法稳定性会更强一些,代码如下:

     reg data;
     reg [2:0] edge_reg;
   always@(posedge Clk)  
    edge_reg<= {edge_reg[1:0],data}; 

     wire pedge_flag;
     wire nedge_flag; 
   assign   pedge_flag= (pedge_flag[2:1] == 2'b01);
   assign   nedge_flag= (nedge_flag[2:1] == 2'b10);  

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值