动态时钟配置下的SoC低功耗管理
源切换到PLL状态。
(3) Idle模式
如果CPU核在当前状态下已经处理完所有任务,在很长一段时间内都将处于空闲状态,那么系统应该进入到Idle模式。在Idle模式下,只会关闭CPU核的时钟源,而所有的模块都保持原状。但在这种模式下,不可动态配置PLL,以得到不同的时钟频率;也不可以动态地管理各模块的时钟源,因为这个时钟Core已经休眠了,它没办法对功耗管理模块内部的寄存器进行配置。无论前一个状态是Slow模式还是Normal模式,系统都可以进入到Idle模式下;而当系统退出Idle模式时,它应该退回到前一个工作模式。当系统重新需要CPU核进行事务处理时,可以通过一个唤醒信号让系统退回到Slow模式或Normal模式。
(4) Sleep模式
如果整个系统都已经处理完所有的事务,并且在很长的一段时间内都将处于空闲状态,那么系统应该进入到Sleep模式。在Sleep模式下,关闭CPU核和所有模块的时钟源。虽然可以从Slow模式或Normal模式切换到Sleep模式,但是当它退出Sleep模式时,系统只能回到Slow模式。因为为了进一步降低整个芯片的功耗,在Sleep模式时会同时关闭PLL,所以在它退出时只能回到Slow模式,然后根据当前的应用决定有没有再切换到Normal模式的必要。当系统需要再次进行事务处理时,可以通过一个唤醒信号唤醒整个SoC芯片系统。
3 功耗管理模块的实现
功耗管理模块主要由一个状态机、一些多路选择器和一些门控时钟电路组成。状态机的责职就是完成各种模式之间的切换和送出PLL的控制信号。多路选择器主要完成各种时钟源之间的选择,而门控时钟电路则完成CPU核和各模块时钟源的打开和关闭功能。图3是功耗管理模块中时钟源路线。
从图3中可以清楚地看出,在功耗管理模块中例示了两个PLL:一个是主PLL(MPLL),它提供整个SoC中除USB模块以外的所有模块的时钟源;另一个是次PLL(UPLL),它只对USB提供时钟源。MUX完成晶振时钟和PLL时钟的选择,被选中的时钟(FCLK)同时送到CPU核、HCLK和PCLK,然后根据各个模块的需要门控地送出时钟源。这是基于AMBA总线结构的SoC。根据AMBA总线的协议,CPU核、AHB上的模块和APB上的模块的时钟频率可以配置成倍比关系[6]。经过HCLK分频的时钟源只提供给AHB上的模块,而经过PCLK分频的时钟源只提供给APB上的模块。AHB_con 、APB_con、Core_con和USB_con一起管理SoC内部模块的时钟源供给。
图3 时钟源路线
4 动态时钟管理中的问题及消除方法
动态地配置整个系统的时钟频率,虽然可以很方便地控制好整个SoC芯片的功耗,但同时也带来了一些负面影响。功耗管理单元中的多路选择器和门控时钟电路是最有可能产生毛刺的,而毛刺对同步数字系统是致命的。它会导致同步的失败、数据的丢失、寄存器进入亚稳态,更为严重的是,使整个同步系统的功能失败。毛刺的产生是因为那些输入信号的时序匹配出现了问题,没有按照既定的顺序出现,或者说那些信号装转换的时机不合适。因此在RTL设计时要保证做到时序的匹配,以降低毛刺产生的可能性。
在功耗管理模块中有三种情况需要用到多路选择器:
a. 由Slow模式切换到Normal模式;
b. 在Normal模式下重新配置PLL;
c. 由Normal模式切换到Slow模式。
图4是功耗管理模块中的一个二选一MUX。它的控制信号是OscillatorOrMPLL,两个选择源是clk_MPLL和clk_Osci,输出是out_ClockSource。当OscillatorOrMPLL为"1"时,MUX选中clk_Osci;当OscillatorOrMPLL为"0"时,MUX选中clk_MPLL。在MUX选择其中任何一个时钟信号之前,clk_MPLL或clk_Osci必须已经稳定下来了。强调一下,这里的稳定不是指已经输送出完整的时钟信号,而是输送出高电平或低电平。这样当选择开关达到它们那一方时,接受到的是没有毛刺的且对整个SoC不会产生操作的时钟信号。虽然在这时因为这种操作把SoC的频率降了下来,但这是暂时的(大约2~3个晶振时钟周期),因此对整个SoC性能的影响是微乎其微的。接下来被选中的信号(clk_MPLL或clk_Osci)才开始输送出没有毛刺的时钟信号,从而最终送出的时钟信号是去除了毛刺的。
图4 MUX结构
图5是系统从Slow模式切换到Normal模式时的时序图。通过配置功耗管理模块的内部寄存器打开PLL,即in_PLLStartOrStop信号,由它触发Slow2Normal_r信号,表明当前将要从Slow模式过渡到Normal模式。然后,由这个信号触发Lock Time 计数器开始计数(计数值由PLL的IP提供商所给的公式中确定),接着先把晶振时钟的使能信号关掉,再把多路选择器打到MPLL那一方。最后,把PLL时钟的使能信号打开,这时得到的就是经过倍频的PLL时钟。
图5 Slow到Normal的切换时序
从时序图可以清晰看出,在时钟源切换的过程中,最终送出
- SpringSoft将全新自动化科技整合到CERTITUDE功能验证品管系统中(02-01)
- ARM为高性能片上系统设计扩展AMBA标准(11-21)
- 基于SPARC V8 的嵌入式星载计算机(04-09)
- AMBA片上总线在基于IP复用的SoC设计中的应用(06-13)
- 基于MSP430系列单片机的CAN总线接口转换卡设计(01-17)
- 各种通讯总线介绍(01-18)