Home 知识园地 Experience

谈谈SOC复位那点事儿

2018-01-30
37400
源自:芯司机公众号

引言
复位的基本目的就是使SOC系统进入一个能稳定操作的确定状态,复位策略的选择关系到系统的可靠性,考虑不当将会造成系统工作异常。本文就将谈谈SOC复位系统。

SOC系统中的复位可分为冷复位热复位

冷复位主要是和电源电压相关的复位,比如上电复位、欠压复位;

热复位主要是无需掉电的复位,比如看门狗复位、软复位和按键复位。


系统设计时往往会规划一些寄存器作为复位源,软复位就是通过MCU对复位源寄存器写1/0值来控制某个模块或整个系统的复位,这种复位方式常用来错误处理。

说到错误处理需要说明的是,不是说MCU通过复位寄存器给出复位信号后,相应的子模块便马上复位,子模块收到复位信号后,有的直接复位,有的需要延时复位。延时的原因可能是本模块立即复位会造成其他模块出错,或者有些机密数据需要清除,也可能是该模块中有需要保护的数据,在复位前需要将其存储到flash或备份ram中,再复位等等。看门狗复位是看门狗电路在程序跑飞后给出复位信号引发的复位。

看门狗是一个相对独立的定时器,必备两根信号线
一根由MCU发出的喂狗信号,即让定时器清零重新计数的信号;
另一根是由看门狗发出的复位信号,如果系统由于干扰或者其他意外故障而没有对看门狗计时器清零,那么看门狗计时器就会溢出而产生复位信号。



上电复位指的是芯片上电后,电压监测电路(POR)检测到电源电压VDD上升到CMOS逻辑可以运动的电压时,产生一个复位脉冲,从而引起整个芯片系统的全局复位;

欠压复位是指已经完成上电的芯片中,低电压检测器在电压尚未跌落到不能维持工作之前,预先提供警告信号或复位信号。需要说明的是,软复位的复位信号一旦给出,子模块不一定马上复位,同样的硬复位也是有一个过程的。

以上电复位为例,在POR复位信号给出后,意味着电源电压已经上升到CMOS电路可以运动的高度,此时提供时钟的晶振或者OSC开始提供时钟,但是这时的时钟其实并不稳定,所以还需要等待一定时长,等待时钟和电压足够稳定再对系统复位。

也就是说,其实POR信号是对计时模块先复位,计时一定时长后,比如STM32F1芯片就先计时4096个机器周期,再对PLL或者某些对时钟依赖不强的IP复位,比如FLASH等,等到PLL稳定后再对一些功能IP和MCU复位,MCU复位后还要完成初始化配置,可见上电复位代价确实很高。



无论系统采用何种复位,说到底对于寄存器而言也就两种复位方式,同步复位和异步复位

同步复位的优点:
1)保证电路是100%同步的;
2)同步复位发生在有效的时钟沿,时钟可以作为过滤毛刺的手段。

同步复位的缺点:
1)同步复位很可能需要一个脉冲展宽器,以保证时钟沿处复位信号满足建立保持时间需求,这在进行多时钟设计时必须考虑;
2)低功耗设计常常使用时钟门控,如果复位信号有效时,时钟是关断的,那么依赖于时钟的同步复位就会出问题。
3)如果系统中有三态总线,如果系统上电但是时钟却未能马上正常工作,这时就有可能出现总线冲突,严重时可能会烧坏接口,这时要么图1所示使用异步复位,或者直接用同步复位信号直接撤销三态使能。



异步复位的优点:
1)采用异步复位可以保证数据路径没有复位信号,干净的数据路径对于时序紧张到已经无法承担由于同步复位带来的额外单元门和走线延迟的设计很有意义。
2)异步复位不依赖于时钟,有没有时钟都能复位。

异步复位的缺点:
1)板级或系统复位产生的噪声或毛刺可能引发伪复位。
2)图2是带有异步置位和异步复位信号的D触发器,异步复位信号或者异步置位信号,跟数据端口D信号,没有什么区别,如果违反建立保持时间,就会有时序冲突,引发输出亚稳态。异步复位的复位信号产生和撤销都是异步的,异步复位信号产生没问题,但若在触发器时钟有效沿附近释放,那么触发器的输出就有可能进入亚稳态,导致复位失败。




解决这一问题方法就是常说的异步复位同步释放。

如图3所示,两级同步触发器可以有效移除由于异步复位信号上升沿与时钟上升沿过于接近所导致的亚稳态问题,且第二个触发器DFF2不会出现亚稳态问题,因为移除复位时,DFF2的输入和输出都是低电平,输出也就不会在不同逻辑值之间振荡,只不过如果DFF1出现亚稳态,且稳定后输出值为低,这时复位信号会多延长一个周期而已。

异步复位对毛刺敏感,还需要对毛刺过滤,将复位信号延迟再与自身相或是一个简单的解决办法。其中延迟的实现可以使用工艺库中的宏单元或者使用较慢缓冲器或多次例化反相器等解决方法。



但图4仍存在一个问题,复位仅仅由一个端口驱动众多触发器,扇出太大,因此实际芯片设计中往往使用复位网络;另外,在多时钟域复位中,外部异步复位信号的同步释放应该在各自的时钟域进行。解决方案可采用类似图4方式进行扩展的复位网络,且DFF5和DFF6在clk_a时钟域,其复位信号的同步释放应该也在clk_a时钟域进行。

0条 [查看全部]  相关评论

知识园地