边沿检测&门控时钟

边沿检测

输入一个跳变信号,如按键输入、时钟输入,输出指示高电平、低电平或者跳变(双边沿),综合出的电路如下:
边沿检测&门控时钟
基本思想是利用同步时钟控制两个级联的D触发器,待检测信号输入到第一个D触发器的输入端,因为D触发器之间有一个时钟的时间延迟,因此取两个D触发器之间的信号(命名为dly1)和后一个D触发器的输出(命名为dly2),如果时钟是上升的,那么第一个D触发器输出(即dly1)为高电平,第二个为低电平,则(dly1)&(~dly2)为高,指示了上升沿,下降沿类似,双沿我们自然可以想到,任一个边沿信号为高,则输出指示为高,用一个异或门即可解决。实践中,两个D触发器还可能存在误触发,可以增加D触发器的个数,来降低错误。

门控时钟

我们知道,时序电路里总会有一个sys_clk,这个clk一般是从外部晶体振荡器引进来的,但是我们也知道世界上没有觉得理想的器件和路径,引入的时钟可能因为晶体各种噪声干扰或者突然“抽风”了一下,导致时钟抖动,这对时序电路来说是致命的。那么,怎么解决这种情况呢???

一种想法是输入时钟sys_clk的同时,给一个时钟使能信号clk_en,两者经过一个&门,这样输出可能会好点
边沿检测&门控时钟
but真的吗?看下图时序
边沿检测&门控时钟
该有的还是会有,我们可以看到时钟在clk高半周尾部使能的时候,可能产生极短的脉冲(毛刺),不言而喻,这个电路没有达到理想效果。我们改怎么做呢???如题,“门控时钟”就是解决这个的,电路如下
边沿检测&门控时钟
电路时序如下
边沿检测&门控时钟
即相当于clk_en等下一个时钟才作用,没有产生毛刺。

转载 http://www.cnblogs.com/rongfangliu/p/5789322.html