边沿检测和双边采样电路
边沿检测和双边采样电路
- 边沿检测
- 双边采样电路
边沿检测
边沿检测,又称沿提取,就是检测信号的上升沿和下降沿。
实现边沿检测,最直接的方法是用两级寄存器。其中第二级寄存器锁存住某个时钟沿到来时的输入电平,第一级寄存器锁存住下一个时钟沿到来时的输入电平。如果这两级寄存器锁存住的电平不相同,就说明检测到了边沿,具体是上升沿或下降沿可通过组合逻辑电路实现。
如上图所示,这样就实现了边沿检测,两个输出支路分别对应上升沿检测和下降沿检测。
乍一看,这个电路似乎很简单地实现了边沿检测的功能,但是仔细分析就可以发现这种方法存在一个潜在的风险:当待测信号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
边沿检测和双边采样电路相关推荐
- HDLBits答案(10)_D触发器、同步与异步复位、脉冲边沿检测
D触发器.同步与异步复位.脉冲边沿检测 HDLBits链接 D触发器 定义: D触发器是一个具有记忆功能的,具有两个稳定状态的信息存储器件,触发器具有两个稳定状态,即"0"和&qu ...
- HDLBITS笔记26:边沿检测(正边沿、任意边沿,边沿捕获寄存器、双边沿触发触发器)
在做接下来的题目前,首先需要理解什么是边沿检测. **边沿检测:**边沿指的是上升沿或者下降沿,检测指的是检测输入信号的变化,或者FPGA内部电路逻辑信号的跳变.在做边沿检测时,应该注意到复位信号,如 ...
- FPGA设计心得(2)边沿检测的问题进一步说明(仿真中一定能得到上升沿的设计)
文章目录 背景 新检测方法 旧检测方法 改进旧检测方法 设计介绍 设计代码 仿真情况 仿真图 最后想提出的问题 同行邀请 工程分享 背景 关于边沿检测,写过的博文也很多,不下于4篇了,当然都是学习过程 ...
- 边沿检测与信号同步?
关于边沿检测,之前写过的博文不下于3篇了,个人感觉是十分重要的. 今天重新来谈边沿检测,是对边沿检测的一个认识的提升,同时提出自己的疑问?最后提出自己的观点,以及给出其一个简单应用,通过实践,可以看出 ...
- 【Verilog HDL 训练】第 06 天(边沿检测)
1. 复习verilog语法 [选做题] - reg和wire的区别 寄存器数据类型 Verilog中规定,凡是在程序块中被赋值的变量,都必须是寄存器类型的.(程序块:例如always块) 这里未免还 ...
- 【 FPGA 】跨时钟域处理以及边沿检测
本文转载自:跨时钟域处理 题目:多时钟域设计中,如何处理跨时钟域 单bit:两级触发器同步(适用于慢到快) 多bit:采用异步FIFO,异步双口RAM 加握手信号 格雷码转换 题目:编写Verilog ...
- 用移位寄存器实现边沿检测(功能仿真及ISE综合)
目录 边沿检测 这是如何实现的呢? 下面给出Verilog HDL代码: 给出测试代码: 在Modelsim进行功能仿真: ISE中进行综合得到RTL Schematic: 边沿检测 顾名思义,就是检 ...
- 边沿检测—以脉冲形式给出信号
边沿检测-以脉冲形式给出信号 题目描述: 有一个缓慢变化的1bit信号a,编写一个程序检测a信号的上升沿给出指示信号rise,当a信号出现下降沿时给出指示信号down. 注:rise,down应为单脉 ...
- 从多级延迟触发器到边沿检测
本文记录一下关于延迟触发器链与它的常用用法(即边沿检测.多级延迟的触发器应该是比较常用的,当我们需要对信号信号进行延时,这个时候我们就用到了延迟触发器链.下面就来记录一下吧. 一.多级延迟触发器(或延 ...
最新文章
- NPOI读写Excel
- 基于pt100温度计仿真_基于8pt网格的设计系统
- struts过滤器和拦截器的区别
- C#读取xml文件静态类
- 任正非:将来华为岗位分三类 职员类岗位不涉及末位淘汰
- Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your My
- 又一个国内知名论坛,突然被全面叫停!
- 读书笔记18:命令模式
- C++:stack.pop() error: cannot initialize a variable of type ‘char‘ with an rvalue of type ‘void‘
- setoolkit制作简单钓鱼网站
- java info()方法_Java Provider getInfo()用法及代码示例
- oracle ora_p0,ORA-12801: error signaled in parallel query server P005
- 程序员有哪些必备技能?
- 【软件定义汽车】【中间件】iceoryx冰羚
- 网络协议实验四 ARP 协议分析实验
- 计算机通信理论——问题问答
- 重邮2018年硕士研究生入学考试(《数据结构》802)自己做的部分答案
- 离开Facebook后,Caffe创始人贾扬清加入阿里巴巴
- 编程中「缺省」是什么意思?
- 图形在计算机中用什么格式表示什么,使用什么软件打开dat文件,图形文字说明如何在计算机中查看DAT类型文件...