数字信号处理(DSP)应用系统中的低功耗设计
随着电池供电系统应用的日趋广泛,许多系统特别是便携式产品都面临低功耗设计的问题,以DSP为核心的应用系统当然也不例外。本文就TMS320系列定点DSP器件为例,介绍一些行之有效的降低功耗的设计方法。
一、合理选择DSP器件
应根据系统要求来选择合适的DSP器件。在典型的DSP应用系统中,通常其核心是由一片或多片DSP构成数据处理模块,由于系统运算量大且速度要求高,因此DSP内部的部件开关状态转换十分频繁,这使得DSP器件的功耗在应用系统的功耗中占有相当的比例,所以设计人员在进行电路低功耗设计时要熟悉DSP及其相关产品的情况。DSP器件的功耗与该系统的电源电压有关,同一系列的产品,其供电电压也可能不同,如TMS320C2XX系列中供电电压就有5V和3.3V两种,在系统功耗是系统设计首要目标的情况下,应尽可能地选择低电压供电的DSP器件。选择3.3V低电压供电的DSP除了能减小DSP本身的功耗以降低系统的总功耗外,还可以使外部逻辑电路功耗降低,这对实现系统低功耗有着重要的作用。DSP生产厂家也比较注重系统功耗的问题,德州仪器公司(TI)为实现低功耗应用系统而设计了一批新型的DSP器件,以其中的TMS320C55X为例, C55X可以在0.9V和0.05mW/MIPS环境下运行,传输速率可达800MIPS,其功耗相当于TI上一代芯片C54X功耗的15%左右,非常适合应用于电池供电系统。此外,TI公司还充分考虑 DSP电源供电设计的问题,为支持DSP设计的TPS767D3XX将两个1-A线性稳压器和两个上电复位开关封装在一起,它不仅降低组件数量和电路板大小,使系统的成本降低,对于系统降低功耗也有重要的作用。
TPS767D3XX在全部1-A输出范围内提供极快的瞬态响应、低压差和几乎恒定的低静态电流(典型值为85μA),压差在1A时的典型值为350mV。可以说,选择何种器件基本上就决定了系统功耗的大小。
二、让DSP以适当的速度运行
TMS320系列的DSP一般采用CMOS工艺,CMOS电路的静态功耗极小,而其动态功耗的大小与该电路改变逻辑状态的频率和速度密切相关。TMS320系列应用系统的功耗与工作频率即系统时钟(CLKOUT1)成正比。在不需要DSP的全部运算能力时,可以适当地降低TMS320的系统时钟频率令DSP适速运行以降低系统功耗。当时钟频率增加时,电流也相应地增加,执行同样程序代码的时间会相应缩短。例如,以1.2mA/MHz运行一段500个时钟周期代码,当CLKOUT1为10MHz时,DSP执行该段代码用时50μs,所需电流为12mA;当CLKOUT1增加到20MHz时,所需电流增加到24mA,执行时间缩短为25μs。TMS320系列执行一段用户程序所耗能量与器件执行快慢无关,因为该能量仅仅取决于DSP器件内部逻辑状态转换的数目。如此看来,似乎DSP的功耗并未降低,那为什么不让DSP全速运行呢?原来,DSP以全速运行完代码后使用IDLE指令,进入降功耗模式后,仍然是要消耗能量的。尽管DSP全速运行和适速运行该段代码所耗电能是相同的,但是在前一种情况下,DSP在空闲状态还要消耗能量,而后一种情况,将节省这部分的能量。因此,在实际应用系统中并不需要DSP的最高MIPS运算能力时,适当降低系统的时钟频率能有效地降低系统功耗。
三、在软件设计中降低功耗
CPU内部执行不同的指令时所消耗的电流是不同的,在软件编程时如果能充分考虑到这一因素,在允许的情况下尽可能多使用低功耗指令,可以降低系统功耗。TMS320C55X有几种降功耗模式,这些降功耗模式中最常用的是IDLE和IDLE2指令。IDLE指令将CPU内部操作挂起,但是仍保留内部各部件逻辑的时钟,允许串口等片内外设继续工作。在使用20MHz的系统时钟时,使用IDLE指令所需电流的典型值为10mA。在相同的系统时钟下,执行IDLE2指令只需要3mA的电流;若关闭内部部件的输入时钟时执行IDLE2指令,这时电流值不超过5μA,CPU所消耗的电能将大大降低。
对诸如NOP(空操作)这类简单的指令而言,使用RTP(重复指令)将节省约12mA的电流;但是对MACD(相乘、累加及数据块移动指令)这类比较复杂而且所需电流较大的指令来说,使用重复指令反而会增加大约14mA的电流,达到90mA,这个数值是在所有数据并行处理的时候得到的,这里的并行处理是指MACD的操作数存放在不同的数据块中,对它们进行操作的时候,两块数据将被同时选中。因此为了降低系统功耗,在软件设计时应尽可能地将所要操作的数据存储在同一个数据块中,比如TMS320C209可将MACD的操作数一同存储在其片内4K的SARAM中。
四、存储器类型对功耗的影响
在DSP器件按某一算法对数据进行处理时,DSP片内的CPU将消耗大部分的能量。但是,数据处理所在的存储环境也就是存储器的类型对系统功耗有着较大的影响。以TMS320C2XX为例,片内的存储器有单访问RAM(SARAM),双访问RAM(DARAM)和ROM三种,TMS320C206还有闪速存储器。DSP应用系统可用片内的SARAM、DARAM、ROM或片外扩展的ROM来存储用户指令代码,由于DARAM仅有256字节的容量,因此在一般情况下它被设置为数据RAM。在相同的条件下执行一段测试代码,程序在片内的ROM运行要比在SARAM中运行节省10%的能量。这是因为SARAM不能存储用户代码,断电后程序丢失,它只能将程序从ROM中加载后运行。在将代码用BLPD(从程序存储器到数据存储器的块移动)、TBLR(表读)和RPT(重复下一条指令)等指令从程序区传送到数据区的过程中要消耗部分能量,而在片内的ROM中运行代码则可节省这部分能量。执行存放在片内存储器的用户代码所耗能量要比执行存放在片外的存储器低,其原因是程序在片内ROM中运行可省去驱动外部程序存储器接口电路所需要的电流。
五、正确处理外围电路
外围电路包括输入和输出两部分。从输出部分来看,外部电路的驱动要消耗一部分能量,除在DSP系统中使用的逻辑电路采用CMOS器件外,应尽可能地选用低功耗的外围器件,例如系统的显示部分应选用LCD(液晶显示器)等。当外部接口中逻辑电路所用的门电路较多时,应使用单片的PAL或ASIC来完成。从输入部分来看,DSP芯片中未使用的输入引脚应接地或接电源电压,若将这些引脚悬空,在引脚上很容易积累电荷,产生较大的感应电动势,使输入引脚电位处于0与1间的过渡区域。这时反相器上、下两个场效应管都会导通,使系统功耗大大增加。
结束语
除前面所提影响DSP应用系统功耗的几个因素以外,还有很多其他因素,比如DSP应用系统所处环境的温度等。具体到任何一个实际的应用系统,在达到设计指标的前提下应细致地对硬件、软件进行多方面的优化,从而有效地降低系统功耗。
|