微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 动态时钟配置下的SoC低功耗管理

动态时钟配置下的SoC低功耗管理

时间:05-04 来源:单片机与嵌入式系统应用 点击:

引言

随着集成电路技术的飞速发展和对消费类电子产品--特别是便携式(移动)面向客户的电子产品的需求,推动了SoC(System on Chip)的飞速发展,也给人们提出了许多新的课题[1]。对于电池驱动的SoC芯片,已不能再只考虑它优化空间的两个方面--速度(performance)和面积(cost),而必须要注意它已经表现出来的且变得越来越重要的第三个方面--功耗[1],这样才能延长电池的寿命和电子产品的运行时间。

  SoC中CMOS电路功耗有:一是静态功耗,主要是由静电流、漏电流等因素造成的;二是动态功耗,主要是由电路中信号变换时造成的瞬态开路电流(crowbar current)和负载电流(load current)等因素造成的[2],它是SoC芯片中功耗的主要来源[3]。因此,解决好SoC中的动态功耗是降低整个SoC芯片功耗的关键。本文后面所提到的功耗就是指SoC芯片中的动态功耗。

  如何降低SoC中的功耗,从不同的层面分析会得出不同的解决方案。从芯片的系统级(architecture)角度考虑,有低功耗总线设计、低功耗存储系统设计、低功耗时钟网络设计、开发系统的休息模式、时钟门控等技术;从芯片的行为级(RTL)角度考虑,有信号门控、预前计算、操作数分离、状态机优化、并行和流水结构等技术;从芯片的门级(gate)角度考虑,有缓冲插入、提取因子、单元缩放、管脚交换、相位配置等技术[4]。从越高的抽象层次去考虑功耗问题,芯片功耗优化的幅度就越显著。

  本文所提出的基于动态配置时钟的SoC低功耗管理是从芯片的系统级角度考虑的。在最后的实验中,它非常明显地降低了整个芯片的功耗。

1 动态配置时钟的SoC低功耗管理原理

  基于微处理器应用的SoC设计,其复杂程度变化很大:在一些应用中可能需要用到所有的硬件资源,但是在其它的一些应用中可能只需要用到其中一部分硬件资源;在一些应用中可能需要很高的工作频率,而在其它的一些应用中却可以大大降低工作频率。动态管理SoC系统时钟的思想就是:不仅动态地管理SoC内部模块的时钟源供给,还可以动态地配置SoC系统的时钟频率。

  动态地管理SoC内部模块的时钟源供给就是,根据不同的应用,管理SoC内部的硬件资源。简而言之,就是进行内部模块的开和关的操作。关闭单个模块,可以通过对每个模块设置一个使能位,然后对这个使能位编程做到关闭或打开那个模块。但这样做不是最佳的,原因有二:其一,每个模块的接口部分必须是始终打开的,否则,CPU核无法随时对它的内部寄存器进行编程;其二,通过模块使能位只是关闭了它的功能操作,而并没有把它模块内的时钟树关闭掉,也就是说它里面的时钟树依然处于激活状态,而时钟树所造成的功耗占单个模块功耗的很大一部分。其实大多数模块都是同步系统,系统的所有操作都是在时钟信号的节拍下进行的[5],关闭时钟源能同时达到关闭模块和降低功耗的目的。

  动态地配置SoC系统的时钟频率则是以不牺牲系统的性能为前提,动态地管理系统的工作频率来降低SoC的功耗。时钟频率是影响动态功耗的重要因素:[3]。它的工作频率越高,功耗也就越大。但在很多时候,所有的模块并不是工作在同一时钟频率,或者同一个模块在不同的时段可以工作在不同的时钟频率。这些就是动态地配置SoC系统的时钟频率的前提。

  图1是整个SoC中的时钟网络(时钟树)。图中的功耗管理模块(power management module)完成这种功能。

图1 SoC时钟网络

2 芯片的低功耗工作管理模式

  为了更好地实现动态配置时钟的SoC低功耗管理策略,芯片在其工作中开发出了其低功耗管理机制中的四种工作模式:Slow、Normal、Idle和Sleep。下面结合图2所示的工作模式流程图来说明它的工作机制。


图2 工作模式流程

  表1为四种工作模式的状态。

表1

(1) Slow模式

  当系统复位以后或当系统关掉PLL不需要高速时钟运行时,系统进入到Slow模式。在Slow模式下,系统中的CPU核和所有模块的时钟源都来自晶振。如果这时系统认为有必要关掉某些模块,那么,就可以通过配置功耗管理模块内部的寄存器,把相应模块的时钟源使能位关掉。

(2) Normal模式

如果在某些应用中需要高速时钟,那么就应该切换到Normal模式。在Normal模式下,系统中的CPU核和所有模块的时钟源都来自PLL。当然,在这种模式下也可以根据系统的应用关掉某些模块。如果系统需要调整时钟的频率,可以通过动态配置PLL来实现。但是在动态配置PLL过程中,要注意这样一个问题:因为PLL有一个时钟锁定的时间,在这段时间内,它输出的时钟波形是不规则的,此时不能使用它作为芯片的时钟源。为了保证系统的正常运行,可以暂时把系统的时钟源切换到晶振状态,待PLL的时钟输出稳定以后再把系统的时钟

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top