首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >上升沿检测sysverilog

上升沿检测sysverilog
EN

Stack Overflow用户
提问于 2014-02-14 12:21:52
回答 1查看 18.7K关注 0票数 3
代码语言:javascript
复制
module syncrisedgedetect(input logic sig_a, rst,clk,output logic sig_a_risedge);

  logic sig_a_d1;

  always @(posedge clk or negedge rst)
  begin
    if(!rst)
      sig_a_d1<=1'b0;
    else
      sig_a_d1<=sig_a;
  end

  assign sig_a_risedge=sig_a & !sig_a_d1;

endmodule

嗨,我在一本关于sig_a上升边缘检测的书中发现了这段代码。有人能解释一下它的工作原理吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-14 12:52:15

这是一个基本的同步边沿检测电路。

在时钟clk的每个上升沿对输入sig_a进行采样。对采样值进行寄存;也就是说,sig_a_d1sig_a延迟一个时钟周期的值。

当输入上有上升沿时,输出将转到1。对sig_a_risedge的赋值负责此操作。它说“如果当前值是1,而上一个时钟周期的值是0,则sig_a上有一个上升沿”。

请注意,只有当输入信号的频率低于时钟的频率时,这才能正常工作。如果输入在采样时钟的单个时钟周期内全部变为0 -> 1 -> 0,则可能会丢失边沿。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21770813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档