您的位置:首页 > 其它

边沿检测和异步复位

2012-06-20 14:42 323 查看
最近要应付考试,还要准备六级,学FPGA的时间自然就少了。考完六级就好了,不过貌似这次可能又过不了了。这几天做了下边沿检测和异步复位同步释放的实验。突然觉得那么不好理解的东西现在觉得还蛮有意思的。

边沿检测。以前做按键消抖的时候,使用边沿检测总觉得相当费解,原因是没有想到去看RTL图,总是在纠结代码。现在看着图,感觉蛮好理解了。利用寄存器打一拍,然后再和最初的输入做比较。就是当前值和前一时刻的值进行比较,前一时刻即为寄存器输出的值。如果当前时刻值为高,前一时刻置为低,说明发生了上升沿跳变;当前时刻值为低,前一时刻为高,则发生了下降沿跳变。



再看看代码,就更清楚了



注释掉的部分是用寄存器打了两拍的代码,其实没有本质区别。

异步复位同步释放。复位操作是异步的,不需要等待时钟信号。而释放复位信号的时候,即rst_n2的输出,就需要等待时钟信号了。也算是异步信号同步化吧。



RTL图可以很清晰的解释异步复位同步释放的概念,还有上面代码表达的意思。



如果加入了锁相环之后呢,当然就比上面的麻烦一点了。比如下面这个,复位信号同步之后接入pll的aerset,经过pll的locked和之前同步的复位信号进行与操作,然后再进行同步,就得到了最后的系统复位信号了。



至于代码也不过是反复的用异步复位,同步释放而已。

这次终于把边沿检测异和步复位同步释放给弄明白了。很多时候我觉得做完一个实验之后并不能马上明白其中的道理,就需要想一段时间,然后在某个时刻再去做一做,想一想,就会恍然大悟,原来这么简单,只是需要再重复一次,再多想一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: