deglitch 技术_数字芯片设计 之 复位信号控制的那些事
这两天学习了复位相关的知识,结合实际工作经验,在这里总结一下 同步复位 与 异步复位 的那些事儿吧!(synchronous reset/ asynchronous reset)同步复位特性: 需要时钟,保证复位成功(只要复位信号长于1cycle), 可能会增加delay on data path异步复位特性:不需要时钟,不proper design可能会有glitch复位的实际应用场景:在芯片启
这两天学习了复位相关的知识,结合实际工作经验,在这里总结一下 同步复位 与 异步复位 的那些事儿吧!(synchronous reset/ asynchronous reset)同步复位特性: 需要时钟,保证复位成功(只要复位信号长于1cycle), 可能会增加delay on data path
异步复位特性:不需要时钟,不proper design可能会有glitch
复位的实际应用场景:
在芯片启动的时候,需要reset保证所有的寄存器处于初始状态
实际的芯片复位方式:
async reset, sync de-reset 异步复位,同步解除复位。
异步复位可以保证芯片在给时钟之前就被reset干净。只有同步解除复位才能保证复位的操作是完整有效的。如果没有异步解除,一定会有glitch,无法保证复位后所有寄存器的值是已知的。
-> Question: 如何异步复位,同步解除复位?
用 double sync (special cell needed) 来sync 这个async reset
因为reset信号是给整个芯片的,fanout巨大,所以和clock tree是类似的,需要小心处理。
几件需要处理的事:
-> 多时钟域的电路如何复位?
double sync to different clock domain + correct reset sequence. 正确的复位顺序的意思是要梳理好block之间的dependency
-> timing closure好难,怎么办?use pipelined reset ,就多搞些reset减少单一reset signal的fanout
在reset/de-reset的时候把clock关掉,等一段时间reset/de-reset完全到了整个电路后再打开clock
-> 因为async,被别人一碰就直接reset然而人家没想reset你咋整?i.e. possible Single Event Transient (SET) or A noisy reset button, generating multiple toggles
搞个glitch filter:就多个连续cycle有reset才reset: 纯组合逻辑的话就搞个and(reset,reset_delay_10ns) 组合逻辑可以搞的更长点
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)