异步复位
在前面的文章中有过对于寄存器行为的描述,而复位方面,在电路设计时建议使用带异步复位/置位的寄存器。原因是只要复位信号有效,则无论时钟是否到来,都会对寄存器进行复位,使电路处于一个稳定的状态。而复位信号释放后,需要等时钟到来,才会更新数据。
当异步复位有效时,无论有没有时钟,寄存器都会处于复位状态,也会稳定输出,因此没有过于担心的问题。但如果复位信号释放,而此时d端数据与q端数据不一致,那么当寄存器时钟有效时,就会更新q端数据。由此也会出现一个时序的要求,也就是recovery/remove timing的时序要求。
为了确保复位信号的使用没有问题,一般采用以下电路来实现异步复位信号释放时与时钟的同步处理,以便让eda工具自动识别时序路径,进行时序分析及时序优化。
这样操作,我们称为异步复位同步释放。可以最大限度保证时序的稳定性。
以上rcu框图中的电路,,用verilog hdl描述如下所示:
同步复位
有些早期的电路,在设计时使用了同步复位,而没有使用异步复位来进行模块级复位管理。原因是早期的eda工具对复位信号的处理还不是很好,需要像时钟一样做复位树来进行时序平衡(当时还没有recovery/remove的时序概念),这是为了确保复位的稳定性所作出的牺牲。
如上图所示,同步复位rst实际上就是dff的一个输入,所以在时序上直接可以被看做数据路径来处理,这对于早起的eda工具来说,是比较友好。
但是我们需要看到一个问题,那就是所有的寄存器在上电时,输出都是不可知的结果。因此需要等待时钟有效后,才能确保电路的稳定复位完成,接着再释放复位信号。在当今复杂的soc系统中,pll或者片内晶体振荡器何时稳定输出,且输出波形正常,是需要一定的管理电路。用不稳定来管理不稳定,是不可行的。
因此对于同步复位的早期遗留电路来说,在外围做好复位管理,确保上电后,其输出不会影响整个系统,也是可以的。
没有复位
有时候,过于在意面积的电路中,会使用没有复位的寄存器来实现电路。如下图所示。
这种情况比较极端,确实寄存器的面积是比较大的,如果减少复位电路,势必有较大的面积收益(20%左右)。但这就需要在设计的时候考虑好每个寄存器复位值是多少。然后通过输入,以及一定次数的时钟传递,将电路稳定复位。
比如说上面这幅图,第四级寄存器,上电后是个未知输出,需要4个时钟周期,才能稳定到初态。
这样的电路如果比较大,则上电后复位的时间会比较久,少则几十个时钟周期,多则上百上千个时钟周期。而且如果有部分寄存器需要特定初始值,还需要专门送进去(可以参考同步复位的操作)。
混用复位
以上三种电路复位的方式,可以混用,在节省面积、稳定复位以及早期遗留电路集成上,会有一些帮助。但还是建议能用异步复位就用异步复位吧。
华擎正式发布非公版RX5700 使用两个10厘米的长寿命大风扇及四条8毫米纯铜热管
编程语言排行榜剖析Python用户增速最快
能耗监测系统在高密科技孵化器的研究与应用
3000W大功率手持激光焊接机价格以及应用介绍
超级电容的储能原理是什么?
浅析复位信号的设计和时序
西门子Profibus通信实战札记
5G供给端优化和需求端应用拓展
海谱纳米光学:乘政策之“东风”,全力打造中国 “芯”
"火卫一土壤"坠落探明 伪劣芯片来源仍是谜
涡轮增压多云安全和应用程序交付与VirtIO卸载
魅族MX6再次降价,面对同价的红米note4,一番厮杀过后谁将鹿死谁手?
如何高效为微型工业传感器供电
好声音绝非偶然!aigo智能播放器M2 Pro到底如何?
区块链技术不是用来帮企业解决问题的
微软语音技术不断突破,助力加速各行业发展
特斯拉“致命车祸”,工程师:未修复自动驾驶缺陷!
至纯科技晶圆再生基地项目落户合肥 将填补省内产业空白
从ADAS到无人驾驶,都准备好了
遇险阻创始人早逝,敢坚持三剑客逆袭