边沿检测和双边采样电路

  • 边沿检测
  • 双边采样电路

边沿检测

边沿检测,又称沿提取,就是检测信号的上升沿和下降沿。

实现边沿检测,最直接的方法是用两级寄存器。其中第二级寄存器锁存住某个时钟沿到来时的输入电平,第一级寄存器锁存住下一个时钟沿到来时的输入电平。如果这两级寄存器锁存住的电平不相同,就说明检测到了边沿,具体是上升沿或下降沿可通过组合逻辑电路实现。


如上图所示,这样就实现了边沿检测,两个输出支路分别对应上升沿检测和下降沿检测。

乍一看,这个电路似乎很简单地实现了边沿检测的功能,但是仔细分析就可以发现这种方法存在一个潜在的风险:当待测信号pulse是一个异步信号时,输出可能是亚稳态,如果pulse信号的变化刚好发生在clk时钟的建立时间和保持时间之内,那么第一级寄存器的输出 pulse_r1 就会进入亚稳态,而pulse_r1的亚稳态会立即传递给pos_edge和neg_edge信号,从而使得整个电路的输出进入亚稳态,进而影响下一级电路的正常工作,甚至导致整个系统崩溃!

因此,在进行异步信号边沿提取时,不能直接使用上面的这种电路,而应该先将异步信号同步化,一般采用多加一级寄存器的方法来减小亚稳态的发生概率,如下图所示:

经过这样的同步处理后, 可以大大减小电路进入亚稳态的概率,如果第一级寄存器进入了亚稳态,一般也会在一个clk周期内稳定下来(可能稳定为0也可能稳定为1),如下图所示:

图中pulse信号的改变刚好发生在 clk 的建立时间和保持时间之内,因而第一级寄存器的输出pulse_r1可能会进入亚稳态,图中Tco为第一级寄存器pulse_r1的状态建立时间(即clock to output),一般情况下,亚稳态的决断时间(即从进入亚稳态到稳定下来的时间)不会超过一个时钟周期,因此在下一个clk上升沿到来之前,pulse_r1已经稳定下来(可能稳定到0也可能稳定到1),这样第二级寄存器就会采集到一个稳定的状态,从而把亚稳态限制在第二级寄存器之前,保证了整个电路输出的稳定性。

综上所述,在异步信号边沿检测电路中,至少需要采用三级寄存器来实现,在对系统稳定性要求较高的数字系统中,可以采用更多级的寄存器来减小亚稳态发生概率,提高系统稳定性。

双边采样电路

下面直接给出电路实现。

module top_module (input clk,input d,output q);reg q1,q2;always @(posedge clk) q1 <= d;always @(negedge clk)q2 <= d;assign q = clk ? q1:q2;endmodule

边沿检测和双边采样电路相关推荐

  1. HDLBits答案(10)_D触发器、同步与异步复位、脉冲边沿检测

    D触发器.同步与异步复位.脉冲边沿检测 HDLBits链接 D触发器 定义: D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,触发器具有两个稳定状态,即"0"和&qu ...

  2. HDLBITS笔记26:边沿检测(正边沿、任意边沿,边沿捕获寄存器、双边沿触发触发器)

    在做接下来的题目前,首先需要理解什么是边沿检测. **边沿检测:**边沿指的是上升沿或者下降沿,检测指的是检测输入信号的变化,或者FPGA内部电路逻辑信号的跳变.在做边沿检测时,应该注意到复位信号,如 ...

  3. FPGA设计心得(2)边沿检测的问题进一步说明(仿真中一定能得到上升沿的设计)

    文章目录 背景 新检测方法 旧检测方法 改进旧检测方法 设计介绍 设计代码 仿真情况 仿真图 最后想提出的问题 同行邀请 工程分享 背景 关于边沿检测,写过的博文也很多,不下于4篇了,当然都是学习过程 ...

  4. 边沿检测与信号同步?

    关于边沿检测,之前写过的博文不下于3篇了,个人感觉是十分重要的. 今天重新来谈边沿检测,是对边沿检测的一个认识的提升,同时提出自己的疑问?最后提出自己的观点,以及给出其一个简单应用,通过实践,可以看出 ...

  5. 【Verilog HDL 训练】第 06 天(边沿检测)

    1. 复习verilog语法 [选做题] - reg和wire的区别 寄存器数据类型 Verilog中规定,凡是在程序块中被赋值的变量,都必须是寄存器类型的.(程序块:例如always块) 这里未免还 ...

  6. 【 FPGA 】跨时钟域处理以及边沿检测

    本文转载自:跨时钟域处理 题目:多时钟域设计中,如何处理跨时钟域 单bit:两级触发器同步(适用于慢到快) 多bit:采用异步FIFO,异步双口RAM 加握手信号 格雷码转换 题目:编写Verilog ...

  7. 用移位寄存器实现边沿检测(功能仿真及ISE综合)

    目录 边沿检测 这是如何实现的呢? 下面给出Verilog HDL代码: 给出测试代码: 在Modelsim进行功能仿真: ISE中进行综合得到RTL Schematic: 边沿检测 顾名思义,就是检 ...

  8. 边沿检测—以脉冲形式给出信号

    边沿检测-以脉冲形式给出信号 题目描述: 有一个缓慢变化的1bit信号a,编写一个程序检测a信号的上升沿给出指示信号rise,当a信号出现下降沿时给出指示信号down. 注:rise,down应为单脉 ...

  9. 从多级延迟触发器到边沿检测

    本文记录一下关于延迟触发器链与它的常用用法(即边沿检测.多级延迟的触发器应该是比较常用的,当我们需要对信号信号进行延时,这个时候我们就用到了延迟触发器链.下面就来记录一下吧. 一.多级延迟触发器(或延 ...

最新文章

  1. NPOI读写Excel
  2. 基于pt100温度计仿真_基于8pt网格的设计系统
  3. struts过滤器和拦截器的区别
  4. C#读取xml文件静态类
  5. 任正非:将来华为岗位分三类 职员类岗位不涉及末位淘汰
  6. Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your My
  7. 又一个国内知名论坛,突然被全面叫停!
  8. 读书笔记18:命令模式
  9. C++:stack.pop() error: cannot initialize a variable of type ‘char‘ with an rvalue of type ‘void‘
  10. setoolkit制作简单钓鱼网站
  11. java info()方法_Java Provider getInfo()用法及代码示例
  12. oracle ora_p0,ORA-12801: error signaled in parallel query server P005
  13. 程序员有哪些必备技能?
  14. 【软件定义汽车】【中间件】iceoryx冰羚
  15. 网络协议实验四 ARP 协议分析实验
  16. 计算机通信理论——问题问答
  17. 重邮2018年硕士研究生入学考试(《数据结构》802)自己做的部分答案
  18. 离开Facebook后,Caffe创始人贾扬清加入阿里巴巴
  19. 编程中「缺省」是什么意思?
  20. 图形在计算机中用什么格式表示什么,使用什么软件打开dat文件,图形文字说明如何在计算机中查看DAT类型文件...

热门文章

  1. Cadence Allegro修改大小十字光标方法图文教程及视频演示
  2. 前端上传封面_web前端简历封面
  3. Python读取Oracle数据乱码问题解决
  4. 理想智慧社区建设的总体框架
  5. 两个月刷400道leetcode之后的经验与心得总结、真题整理分享
  6. web前端学习----4
  7. 超声波c语言程序,51单片机超声波模块的C语言程序.doc
  8. axios发送post请求返回400状态码
  9. 整体大于部分_怦然心动“整体大于部分之和”
  10. 微博短链接的生成算法(Java版本)