减少电源损耗的方法与装置 技术领域
本发明涉及一种用于在一个设备中停用和重新开始时钟的方法和装置。本发明特别涉及要求在不活动期间取消时钟的产生以减少电源损耗的设备,例如电池供电的设备。
背景技术
在电池供电的产品、例如移动电话或便携式个人计算机中,节省电源以便延长电池使用寿命是很重要的。减少电源的一种方法是在不活动期间关掉处理器时钟。然而,在那些需要和一个外部设备同步操作的产品中,例如必须和一个网络同步的移动电话中,必须有至少一个时钟连续不断地运行以提供这个同步。在含有几个处理器的产品中,相对于该产品中一个或几个从处理器而言,通常指定一个处理器作为主处理器,当需要时主处理器将控制打开和关掉这些从处理器地时钟信号。然而,为了重启一个时钟,主处理器必须察觉到任何一个要求一个从处理器同步操作的事件,例如按下移动电话上的一个键,从而提供时钟信号以重新启动时钟。
在JP专利7-244650描述的一种时钟控制电路中,向一个数字无线电终端的数字信号处理器提供一个外部时钟源。该电路从该外部时钟信号中产生一个内部时钟,但是可以在不活动期间取消外部时钟的提供以节省电源。这使用一个由该时钟控制电路发出的时钟控制信号进行管理。当这个信号为高时,就将外部时钟信号提供给处理器。当由软件设置为一个低功率方式或睡眠方式时,就使由该时钟控制电路发出的时钟请求信号为低。然后就取消提供外部时钟并停止内部时钟。当该时钟控制电路收到一个中断请求,指示需要一个时钟信号时,就将时钟请求信号设置为高,于是激活内部时钟并再次提供外部时钟。
这种电路的一个问题是:在抑止外部时钟的同时到达一个异步中断可以导致内部时钟进行切换,并可能导致处理器电路进入一个禁止状态。此外,重新启动的内部时钟状态是不确定的,这是因为它取决于对一个异步请求的响应而进行的外部时钟重发。所描述电路的一个更进一步的缺点是该时钟控制设备只能够处理一个中断,这严重地限制了它的应用。
发明内容
因此本发明的一个目的是提供一种用于时钟控制、并克服了现有技术中相关问题的方法和装置。
本发明的一个具体目的是提供一种用于时钟控制、能使一个内部时钟信号可靠利索地停止、以及还能够响应一个异步事件而可靠利索地重新启动内部时钟信号的方法和装置。
这些和更多的目的可以在一种用于控制时钟的装置中实现,该装置包含:转换装置,用于通过该装置将一个连接设备的外部时钟转换成一个内部时钟;时钟请求产生装置,适于向一个外部时钟控制器传送请求信号。这些信号起到请求取消和重新启动该外部时钟的作用。控制装置用于:根据至少一个控制信号的预定状态,通过转换装置和时钟请求产生装置,控制内部时钟的产生。时钟请求产生装置还与一个适于接收几个输入信号的时钟开始模块相连,这些信号可以发出一个要求设备时钟操作的事件。更可取地,控制装置使用两个信号来控制时钟的取消和重新启动,一个起源于该设备,另一个在该时钟控制装置中。一旦输入了一个低功率方式,则首先停用内部时钟,然后发送一个取消外部时钟的请求。这提供了使外部时钟停用的条件,除非有一个输入信号改变了状态,这实际上会导致取消该请求。因此外部时钟保持运转,从而允许内部时钟利索地重新启动。
利用这个装置,内部时钟的控制可以从任何停止或重新启动外部时钟的请求中分离出来,并独立于它们。因此在外部时钟的控制之下、甚至是在异步请求时钟操作的情况下,能够利索、可靠地停止和重新启动内部时钟。此外,一个由任一输入信号状态变化引起的时钟请求信号能够由该电路进行控制,从而使它能够适当地阻止取消外部时钟或是启动外部时钟的重启。可以从几个输入信号中的任意一个产生单个请求信号,而利用一个或仅仅两个信号控制外部时钟意味着需要在设备和用于控制时钟产生的外部时钟控制器之间提供至多只有两个连接,而不考虑输入信号的数目。
附图说明
通过以下参考附图给出的最佳实施例的描述,本发明的更多目的和优点将更为明显。
图1原理性地说明了一个主设备和一个从属设备的电路概述,其中从属设备内配置有一个时钟控制模块;
图2原理性地说明了时钟控制模块的详细电路;
图3显示了一个用于该时钟控制模块中的一个状态机的真值表;
图4显示了时钟控制模块的第一时序图;以及
图5显示了时钟控制模块的第二时序图。
具体实施方式
图1显示了两个处理器,处理器A 10和处理器B 20。处理器A10经由一个终端21从处理器B接收一个时钟信号EXT_CLK,并用这个信号产生一个内部时钟MAIN_CLK。对本实施例来说,假定处理器A 10和处理器B 20包含在一个移动电话相互分离的装置中。信号EXT_CLK是由处理器B 20内的一个内部时钟所产生的。处理器B的内部时钟将连续地产生以保持和网络同步。
在不活动期间,能够停用处理器A 10的内部时钟MAIN_CLK以节省电源。因此在这期间,处理器A 10不需要从处理器B 20中接收外部时钟信号EXT_CLK。为此处理器B20包含一个适当的开关,在图中由一个打开的开关符号23表示,用于中断该时钟信号ETX_CLK的传输。
许多时钟启动信号,在图中用单个线路12表示,到达处理器A10x。这些输入信号可以包含任何指示在处理器A中需要同步动作的信号。例如,在一个移动电话中它们可以是一个按键正被按下或是一个翻盖正被打开的结果。处理器A 10还通过两个终端22、11与处理器B 20相连接。利用经过这两个连接进行的信号交换通知处理器B 20:能够禁止一个时钟信号,而且还可以是应重新启动该时钟信号。这些信号将在下面进行更详细的描述。
在处理器A 10中,内部的MAIN_CLK和外部的EXT_CLK时钟信号的禁止和重新启动是由一个时钟控制块100来控制的。为清楚起见,图中省略了处理器A的剩余部分。控制块100接收时钟启动信号12和外部时钟ETX_CLK 21,并产生内部时钟MAIN_CLK,它要发送到处理器A 10的核心用于同步操作。控制块100还经由两个终端21、22连接到处理器B 20。具体地,控制块100向处理器B 20发送一个时钟请求信号ECLK_REQ,并从处理器B 20接收一个时钟确认信号ECLK_ACK。
图2更详细地显示了时钟控制块100的结构。时钟启动信号12,在图2中用信号Start 1到Start N表示,由控制块100内部的一个时钟请求模块200接收。每一启动信号Start 1到Start N分别与一个锁存器201、202、203的输入端相连。这些锁存器可以由透明锁存器、D-型触发器、或是任何适当的、能够将输入端状态储存一段不确定时间的电路。启动信号12还分别与带有反相输出的异或门(XOR)211、212、213的一个输入端相连。每个异或门的另一个输入端分别与相应的锁存器201、202、203的Q输出端相连。锁存器201、202、203的允许输入端与一个脉冲发生器205的输出端并行连接。脉冲发生器205由处理器A 10所产生的一个控制信号CTRL1控制。当处理器A已经确定没有要求一个时钟信号的活动正在执行时,控制信号CTRL1通常是由软件产生的,并启动用于禁止时钟的程序。它可以是一个写入到处理器A10的一个寄存器、例如一个时钟控制寄存器(未显示)中的值,或是在一个独立和专用连接上产生的值。当由发生器205产生一个脉冲时,时钟启动信号12的当前状态将被触发器锁存。因此,所有反相输出异或门211、212、213的输出端将一直为高,直到任一时钟启动信号改变状态为止。
异或门211、212、213的输出端分别与相应的或门231、232、233的一个输入端相连。每个或门的第二个反相输入端分别与一个屏蔽寄存器240的一个指定单元相连。每个或门231、232、233的输出端都与单个与门220的输入端相连。在图2中,屏蔽寄存器240位于时钟控制块100的外面但是在处理器A 10的内部。然而,应当明白:这个寄存器也可以并入到时钟控制块100中。在屏蔽寄存器240中的每个单元用一个‘1’或是一个‘0’进行编程,这取决于是否允许相关的时钟启动输入端产生一个时钟请求信号。当该信号被屏蔽时,即当相关的寄存器单元内存在一个‘0’时,一个输入信号的状态变化会导致异或门211、212、213的一个输出端为高,就不会影响相应的或门231、232、233的输出,因此不会改变与门220的输出。然而,任一未屏蔽信号的状态变化将会使与门的输出变为低。
时钟请求模块200的输出端即与门220的输出端进一步与一个与门103的一个输入端相连。这个与门103的输出端与一个或门102的一个输入端相连。这个或门的输出端与处理器A的一个终端11相连,该终端适于与处理器B相连。或门102的另一个输入端与一个状态机104的第一输出端‘x’相连。与门103的第二输入端与状态机104的第二输出端‘y’相连。状态机104的第一个输出端x还与一个或门101的反相输入端相连。或门101的另一个输入端从处理器A的另一终端21接收外部时钟信号ETX_CLK。当或门101被状态机输出端x激活时,就为处理器A产生一个内部时钟信号MAIN_CLK。外部时钟信号ETX_CLK还连接到状态机104的时钟输入端。最终该状态机接收两个输入信号:由处理器A产生的第一控制信号CTRL2,和通过处理器A 10的第三终端22从处理器B 20接收的第二控制信号或是确认信号ECLK_ACK。就控制信号CTRL1而言,第一控制信号CTRL2可以是一个写入到处理器A的一个时钟控制寄存器(未显示)中的值。
图3中给出了状态机104的真值表,显示了由输入和输出x、y的相应电平所定义的状态。在这个表中,输入端‘c’表示信号CTRL2,输入端‘a’表示信号ECLK_ACK。参考这个真值表以及图4、图5中的时序图,下面将描述时钟控制块、处理器A和处理器B的停止和重新启动时钟的操作。
开始时,状态机104的两个输入端CTRL2和ECLK_ACK均为低。因此状态机104默认处于状态0。在这个状态下,输出端x和y为高,从而允许通过或门101产生内部时钟MAIN_CLK,并且通过保持每一个与门和或门102、103的一个输入端为高,禁止一个时钟请求信号的产生,即使ECLK_REQ为低。
当处理器A10确定它可以转到一个低功率方式并停止内部时钟MAIN_CLK时,它就写入一个1到它的时钟控制寄存器的CTRL1位(图4中的事件1)。作为响应,脉冲发生器205在锁存器201、202、203的允许输入端产生一个正脉冲,然后将时钟启动信号的当前状态保存在这些锁存器中。然后处理器A 10等待一段预定时间、或保护时间(事件2)以保证没有中断是未解决的。将这个延迟写入到处理器A的软件中。如果处理器A在这个软件保护时间内接收了一个中断,则通过软件中止低功率方式。
在这个延迟之后,处理器A通过向它的时钟控制寄存器的CTR12位写入一个1使CTRL2为高(事件3)。在外部时钟ETX_CLK的下一个上升沿,CTRL2的这个变化会使状态机104进入状态1。第一输出端x将变低,从而以一个高电平禁止内部时钟MAIN_CLK。同样地第二输出端y变低,从而使与门103的输出端变低而不管时钟起动信号12的状态。因此或门102的输出ECLK_REQ也将强制变低。ECLK_REQ的低状态作为一个请求被处理器B 20所识别。在本实施例中,这个信号的低状态会在处理器B 20中产生一个中断。然而,应当明白:除了将这个信号作为一个中断处理以外,作为替代,还可以组织处理器B 20定期地监视这个连接的状态。确认这个中断以后,处理器B 20将ECLK_ACK设置为高(事件4)。这在外部时钟EXT_CLK的下一个上升沿使状态机104进入状态2,并使第二输出端y变高。倘若时钟启动输入的状态没有发生改变,这将会使时钟请求信号ECLK_REQ变高。
将y输出设置为高也能有效地启动与门103。因此,在一个未屏蔽的时钟启动信号中的任何状态变化,将会使与门220的输出变低,也将使ECLK_REQ再次为低,从而在处理器B中产生第二个中断。在这发生之前,ECLK_REQ保持高电平,处理器B能够切断连向处理器A10的外部时钟EXT_CLK(事件5)。应当注意到:在切断到处理器A10的外部时钟EXT_CLK之前,处理器B 20检查在发送确认信号(ECLK_ACK)之后信号ECLK_REQ是否设置为高。在第一个中断之后ECLK_REQ和ECLK_ACK这些信号给定的逻辑状态为高,是一个用于禁止外部时钟EXT_CLK传输的先决条件。因此,将ECLK_REQ首先设置为低、然后设置为高的组合步骤实质上构成了一个二级请求以禁止连向处理器A 10的外部时钟EXT_CLK。如果仅仅完成了这些步骤中的某一个,则该请求就没有影响,而且也不会切断外部时钟。这将结合图5在下面进行更为详细的说明。
在图4中的事件6,由START_X表示,一个时钟启动信号12进行切换。作为响应,使ECLK_REQ再次为低,并且在处理器B 20中产生第二个中断。这个第二输入起一个外部时钟启动请求的作用。响应于这个第二中断,处理器B 20首先接通外部时钟EIX_CLK,然后将ECLK_ACK设置为低(事件7)。在随后的外部时钟ETX_CLK的上升沿上,状态机进入状态3。第一个输出端将变为高,从而使两个输出都再次为高。内部时钟MAIN_CLK将再次被激活,处理器A 10能够开始处理由一个时钟启动输入12用信号通知的、要求同步操作的任务。然后处理器A 10也使CTRL2变低(事件8),使状态机返回它的缺省状态0,并终止程序。应当注意到:在事件5中不需要切断外部时钟。上面描述的信号状态仅仅提供了取消提供外部时钟的条件,然而,如果外部时钟被连续地提供给处理器A 10的话,用于重新开始内部时钟的程序还将会是相同的。
图5显示了当状态机处于状态1时,即在处理器B通过将ECLK_ACK设置为高完成对中断进行的操作之前,一个或多个时钟启动信号12进行切换的过程。由于通过切换单个或多个输入使时钟请求模块200的输出强制为低,当状态机进入状态2时,这会导致ECLK_REQ保持为低。处理器B检测ECLK_REQ是否保持为低,并将ECLK_ACK重新设定为一个低电平,从而使状态机104进入状态3,并使内部时钟重新启动。因此,中止了这个过程,从而阻止外部时钟被停止。在本实施例中,假定在信号ECLK_ACK被处理器B 20设置为高,和如图4事件4所示在正常操作中ECLK_REQ变为高,之间的延迟最多为一个时钟周期。由于在操作两个指令之间的时间一般将大大超过这个延迟,因此不必在处理器B 20的软件中加入一个延迟。因此处理器能够在一个指令中设置ECLK_ACK为低,然后在下一个指令中检查ECLK_REQ的级别。然而,应当理解在处理器B 20中该时钟控制的一个硬件实现,例如使用一个状态机,可能需要在对信号ECLK_REQ的低电平作出反应之前加入某些延迟。
如果当状态机104处于状态0,但是在由处理器A10启动低功率模式之后,即在图4事件1和3之间时,切换一个或多个时钟启动信号12,将同样地终止该过程。如果处理器A10检测到一个时钟启动信号中的改变或者通过一个中断被警告这个改变,就不会设置CTLR2为高而且该处理将不会继续进行。然而,即使处理器A10没有检测到这个状态改变,例如因为该时钟启动信号12切换紧挨着CTRL2设置为高之前,该切换的输入将迫使ELCK_REQ保持低值,而且时序将和图5中所示的相同。
如上所述,在处理器B中外部时钟的控制不需要由软件来实现。特别地,能够利用一种集成某种形式状态机的硬件实现,该状态机能够区别不同的状态,这些状态由首先设置时钟请求信号ECLK_REQ为低,随后设置ECLK_REQ为高、然后再次重置ECLK_REQ为低来激活。这样一种实现允许外部时钟供应的控制独立于处理器B20,例如,并入一个和该外部时钟源、以及几个适于接收该时钟的从属设备进行通讯的单独模块中。
在一个进一步的实施例中,通过在每一端上提供一个双向的终端,经由单一线路,能够执行在处理器A10和处理器B20之间的信号交换。这实际上构成了单个信号。虽然这样一个实施例的实现,将要求修改该状态机以允许使用单个信号激活不同次序的状态,由此导致的电路将具有明确的优点,因为它将释放用于两个处理器的一个进一步连接。
以上描述的电路允许所有的时钟启动信号,其表明必须执行某种形式的同步活动,仅仅由打算处理这些信号的处理器所接收。因此,在一个从处理器和主处理器之间,或者是和其他提供该时钟信号的电路之间的仅有通信能够经由单个或者至多两个连接执行。此外,在停止该外部时钟之前的任何时候,如果切换一个时钟启动信号12,其表明需要处理器A的同步操作,将用最小延迟终止该过程。
在处理器A中内部时钟MAIN_CLK的停止和产生,和外部时钟信号ETX_CLK是同步的,以便产生一个整齐和可靠的信号。此外将在一个预定状态中停止该内部时钟。虽然上述例子中,在一个高电平状态锁定内部时钟,可以理解:如果对应用有利的话,可以进行适当的修改,从而导致它在一个低电平状态停止。
可以理解:参考最佳实施例描述的逻辑电路各种组合,可以被具有同样效果的不同逻辑电路组合所替代。