(同步、异步)信号的边沿检测电路设计——脉冲检测器


   边沿检测,就是 检测输入信号的上升沿和下降沿。在设计数字系统时,边沿检测是一种很重要的设计思想。
  通常情况下,always块的敏感信号列表中可以直接用posedge和negedge来提取上升沿和下降沿, 但是要在always程序块的内部检测上升沿或者下降沿使用posedge和negedge显然是不可以的,因为这样的语句不可综合
   要实现边沿检测,最直接的想法是用两级寄存器,第二级寄存器锁存住某个时钟上升沿到来时的输入电平,第一级寄存器锁存住下一个时钟沿到来时的输入电平,如果这两个寄存器锁存住的电平信号不同,就说明检测到了边沿,具体是上升沿还是下降沿可以通过组合逻辑来实现。

一、同步信号的边沿检测

  电路设计如下图所示:
  该电路很简单地实现了边沿检测的功能,但是该方法存在一个潜在的风险:当待测信号pulse是一个异步信号时,输出可能是亚稳态,如果pulse信号的变化刚好发生在clk时钟的变化边沿时(建立时间和保持时间存在违例),那么第一级寄存器的输出 pulse_r1 就会进入亚稳态,而pulse_r1的亚稳态会立即传递给pos_edge和neg_edge信号,从而使得整个电路的输出进入亚稳态,进而影响下一级电路的正常工作,甚至导致整个系统崩溃,因此下述边沿检测电路只适合同步输入信号的边沿检测,若要对异步信号进行边沿检测,还需要适当的改进,对一步输入信号进行同步处理(增加触发器)。在这里插入图片描述

  • 上升沿特征: 先进来的是低电平,后进来的是高电平;
  • 下降沿特征: 先进来的是高电平,后进来的是低电平;

上图的verilog代码如下:

//仅适用于同步信号的边沿检测电路,两级寄存器实现检测功能

module edge_capture(input     clk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SD.ZHAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值