一般来说,逻辑电路的任何寄存器、存储器或其他逻辑单元都应加上复位电路,保证电路能进入初始状态或从错误中恢复,可靠地工作。通常情况下,复位信号为低电平有效,并加上上拉电阻,以增加复位电路的抗干扰性能。具体来说,复位电路的目的主要有两个:
1)仿真时,使电路进入初始状态或其他预知状态;
2)对于综合实现的具体电路,使电路进入初始状态或其他预知状态。
在电路实现时有两种复位方式:同步复位、异步复位。
同步复位:复位信号发生变化时并不立刻生效,必须待有效时钟沿采样到复位信号有效时,复位信号才生效,对寄存器复位。
异步复位:只要复位信号的有效,不管时钟沿是否有效,复位信号立刻对目标(寄存器或存储器)复位。
1、 同步复位
在使用RTL进行建模时,同步复位一般按如下格式进行:
优点:
1) 有利于仿真器的仿真;
2)使设计系统成为100%的同步,便于时序分析,且综合后的fmax较大;
3)在时钟沿复位信号才有效,有利于过滤高于时钟频率的复位毛刺。
缺点:
1) 复位信号必须大于时钟周期才能生效,且要考虑综合逻辑延时、时钟延时、clock skew等因素;
2) 大多数逻辑库只支持异步复位dff,若使用同步复位,则综合器会在复位输入端插入组合逻辑(具体如下图所示),会耗费较多的逻辑资源。
大多数逻辑库只支持异步复位dff,若使用同步复位,则综合器会在复位输入端插入组合逻辑,具体如下所示。
2、 异步复位
在使用RTL进行建模时,异步复位一般按如下格式进行:
优点:
1) 大多数逻辑库都有dff异步复位端口,使用异步复位节省资源;
2)设计相对简单;
3) 异步复位识别方便,而且可以使用FPGA全局复位端口。
缺点:
1) 在复位信号释放(release)的时候容易出现问题,具体地说如果复位信号恰好在有效时钟沿附近撤销,容易使寄存器输出出现亚稳态。
2) 复位信号容易受毛刺的影响。
异步复位一般综合成如下电路。
一般推荐使用异步复位,同步释放。
异步复位:即复位信号是异步的
同步释放:即复位信号释放后,输出不立即变化,而是要等到时钟沿时才变化,这样释放和时钟进行了同步。
推荐的代码如下所示:
另外在电路设计中,也经常会把异步复位信号先用时钟进行同步,然后再使用。这里使用时钟将外部输入的异步复位信号寄存一个节拍后,再送到触发器。异步复位端口的设计方法的另一个好处在于,做STA(静态时序分析)分析时,时序工具会自动检查同步后的异步复位信号和时钟的到达(Recovery)/撤销(Removal)时间关系,如果因布线造成的skew导致该到达/撤销时间不能满足,STA工具会上报该路径,帮助设计者进一步分析问题,如图所示:
其RTL实现代码为:
文章评论(0条评论)
登录后参与讨论