炼狱传奇-异步复位同步释放之战

梦翼师兄   2015-11-24 09:40 楼主
经过前面的学习,相信大家已经充分体会到了verilog语言设计的精妙,今天开始“异步复位同步释放”的征战之旅。
异步复位同步释放是提高系统稳定性最有效的方式,下面介绍两种其他的复位方式,我们以此来比较说明异步复位同步释放的优点。
同步复位,代码如下图
无标题1.png
                              
    异步复位,代码如下图
无标题2.png

    请思考,在同步复位和异步复位按键放开的过程中,在时钟的上升沿,恰好rst_n由低变高,那么时钟采集的数据是一个0到1的跳变,数据是多少呢?
    上述情况,就是发生了亚稳态。亚稳态是在数据的建立时间和保持时间不满足的事情下发生的。亚稳态发生采集的数据有的寄存器认为是0,有的寄存器认为是1,所以无法确保所有的寄存器在同一个时钟沿跳出复位状态。
       下面介绍异步复位同步释放电路
无标题3.png

reset_n接到两个异步复位寄存器的清零端(CLRN端接低电平的时候寄存器输出端会清零),当reset_n为0 时,寄存器reg3和寄存器reg4输出为0;由于寄存器reg1和寄存器reg2的CLRN端接到了寄存器reg4的输出端,所以寄存器输出端out_a和out_b会被清零,从而实现复位清零的功能。在reset_n由低变高时,第一个时钟周期将VCC输入到左边第一个寄存器,第二个寄存器保持为0,在第二个时钟周期后两个寄存器都变为1,输出端寄存器的清零端为1,跳出复位。
将上图电路描述为代码如下
无标题4.png
无标题5.png
无标题6.png



同理下面介绍如何使用锁相环进行异步复位同步释放,复位电路原理图如下
无标题7.png

要理解此电路,我们必须首先掌握一下几点:
1. locked信号为锁相环的输出信号,锁相环时钟输出端CO在上电以后会有一段不稳定的时间,此时locked信号为低电平,当时钟输出端C0输出保持稳定以后,locked信号也会同步拉高,表示输出有效。
2. areset为输入锁相环的高电平复位信号,当areset为高电平时,锁相环复位,没有时钟输出。
3. 寄存器ENA端为寄存器输出使能,高电平有效,只有当ENA保持为高电平的时候,寄存器才会有数据输出。
有以上电路原理图可以看出,当reset_n信号变为低电平以后,寄存器reg1、reg2、reg3、reg4都会清零,由于reset_n到areset端口之间经过了一个非门,电平取反,对于锁相环来说,复位端为高电平,可以实现复位。
当reset_n信号由低电平变为高电平以后,锁相环复位和所有寄存器清零同步结束,但由于锁相环的输出端locked信号需要稳定一定时间才能输出高电平而且寄存器reg3和reg4的输出使能端有locked信号控制,所以必须要等到锁相环输出稳定以后,VCC才会开始在寄存器reg3和reg4之间传递,使其他寄存器电路正式结束复位状态。
    上述电路代码,描述如下
无标题8.png
无标题9.png
无标题10.png




回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复