同步复位 优点:能确保电路是100%的; 同步复位可以综合处更小的触发器; 可以保证复位只发生在有效时钟边沿,过滤掉复位信号毛刺; 内部逻辑产生的复位信号,采用同步复位可以有效过滤掉毛刺。 缺点: 当复位信号宽度小于时钟周期时,可能需要一个脉冲展宽器,使得复位信号在时钟边沿能被正确采样; 当复位信号有外部逻辑组合产生,那么复位信号可能容易受外部信号控制; 在采用门控时钟的设计中,复位信号有效是时钟可能处于关闭状态,复位无效;
异步复位 优点:很多EDA工具带有异步复位的库文件,能保证数据路径上是干净的,减小延迟; 复位信号独立于时钟,只要复位信号发起,电路立即复位; 综合工具能很好的识别出复位信号; 缺点:对毛刺敏感; 若复位刚好在时钟边沿撤销,很容易使寄存器的输出产生亚稳态。
从资源方面考虑:
fpga底层寄存器如果是异步复位那么就使用异步复位的电路更节省资源,如果FPGA底层的寄存器是同步复位的,那么就使用同步复位的电路更节省资源。
从性能上说:
1.从复位信号的施加来说:
同步复位:优点是可以保证复位只发生在有效时钟边沿,过滤掉复位信号毛刺。
但同时也是一个缺点(当复位信号宽度小于时钟周期时,可能需要一个脉冲展宽器,使得复位信号在时钟边沿能被正确采样;)
异步复位:优点是减小复位延迟; 复位信号独立于时钟,只要复位信号发起,电路立即复位;
缺点:对毛刺敏感;
2.从复位信号的释放来说:
同步复位:释放时比较不容易产生亚稳态
异步复位: 若复位刚好在时钟边沿撤销,很容易使寄存器的输出产生亚稳态。
解决办法:异步复位,同步释放。