电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

【我要崛起】第二章 何为脉冲边沿检测法(更新)

首先要说一下脉冲边沿检测法的应用:

捕获信号的突变(按键捕获,SDRAM响应标志捕获等)

这里要先说一下按键消抖时所用到的脉冲边沿检测法,如图所示:

上两图是三个按键时做的一个脉冲边沿检测,一个是代码,一个是RTL视图。注意:按键是低电平有效,所以复位时,等于3’b111。

为了防止触发信号(sw_n)的波动,消除抖动,加上几级触发器,使信号更稳定,这里我加了两级的触发器。

当一个按键触发按下时,如从111111...到111000...再到松开按键111000...111...正如第一幅图所示,有按键被按下了,不管你按下多长时间,我就会检测到按键有被按下的状态,这时该如何用代码来表示呢?就是用这个脉冲边沿检测法,来采集到信号被触发的那一刻,即从1变0的过程。有了这个标志,接下来要做的就是剔除消抖,一般按键的抖动时间大约为20ms,就用计数器计数到20ms的时候,key_an为1‘b1,计数清零。

还有一点你们常常会听到打慢一拍同步,究竟是一个啥意思?就是用触发器锁存一下,打慢一拍就是用一个触发器,打慢两拍就是用两级触发器,如此类推...

以下是我做项目时用到的脉冲边沿检测法,如图所示:

简单的说一下,这里我是想捕获SDRAM的写响应完成标志,做了两级的触发器锁存,相信大家看了按键消抖这部分时,已经对脉冲边沿检测有了一个很高的认识,这是对以后编写自己模块时用到的一个算是思想吧,不错,挺管用。

注意:最后一幅图是两级的触发器,经过优化,RTL视图显示为一个,其实是两个的。由此,你可以想象一下,为什么他要优化,省略了一个触发器,其实你用三个或更多的触发器作为锁存,他都会帮你优化成为一个而已,这个就是我上面所说的,你可以用几级触发器,为了信号的稳定,建议用多个。

更新点:(2014.03.07    11:21)

为了让大家更能够理解和明白脉冲边沿检测法,我对上面捕获SDRAM的写响应完成标志sdram_rd_ack做了详细的说明。其实并不是所有标志信号都要用脉冲边沿检测法,这里所说的标志信号是有可能产生连续的信号时,例如我这个sdram_rd_ack在另外一个模块是这样定义的,如图所示:

为什么说他是连续的信号呢?也就是用数学的方式解答为他在一定范围内连续,如本来是高电平111111......,然后遇到逻辑判断产生低电平111111000111111......这时,我只是想捕获他出现低电平时那个变化的信号,就可以用这个脉冲边沿检测法来捕获,这里原理跟按键消抖同出一辙,只是换了环境,换了方式表达而已。再或者极端的话,就出现如1111110111111......我的意图也是想捕获这个跳变的信号也可以用到这种方法。但是我要强调的一点是,他已经能成为这个你想捕获到的那个信号时,就不要再用脉冲边沿检测法了,这是多余的,如图所示:

这个标志信号也是另外一个模块送过来的,他本身就是你要捕获的那个信号,通俗的话就是说,他已经就是一个点了,是某一个时间点出现的一种情况,不是一段连续信号,这个你懂我的意思吗?

博主
1069217225@qq.com
只要你想,你可以做所有事情
To be a top of FPGA designer
点击跳转