复位是将片上各寄存器恢复初始状态,释放是指寄存器离开初始状态,开始工作。
常用复位方式有:异步复位,同步复位,以及异步复位同步释放。
异步复位:
实现代码:
综合电路:
基本概念:对于异步复位键有恢复时间(recovery time)和去除时间(removal time),其相当于采样沿的建立时间和保持时间,如果复位键下拉位于采样边沿附近,不满足其时序约束,则会产生亚稳态,当复位键释放的时候也是同样道理。
同步复位:与异步复位同理,易不满足建立时间和保持时间。
异步复位同步释放:任何时刻可以下拉复位,一般下拉复位会持续一段稳定时间,所以第一个周期下拉可能会产生亚稳态,而后续稳定时间会使复位成功,但复位释放时刻不允许产生亚稳态,否则会对数据功能造成错误,因此当源时钟释放复位信号,只有在目的时钟采样沿会对其采集,则不会产生亚稳态,这个过程也称之为同步释放。
代码如下:
对应RTL电路如下:
说明,asyn2作为主模块的复位信号。