本发明涉及通信领域,特别涉及通信领域中的睡眠唤醒定时偏差的补偿方法及电子设备。
背景技术:
在当前的通信系统中,为了降低芯片的功耗,芯片在不工作时通常处于睡眠状态。当芯片从睡眠状态切换到工作状态后,终端需要和基站做时间上的同步。为此定时器在工作时提供了两种工作模式,正常计数模式和慢定时器模式。在正常计数模式下,定时器用本模式的采样时钟(由快时钟分频产生)计数,对于GSM模式,计数频率为1.08MHz,对于TD模式,计数频率为1/8个码片,即10.24MHz,对于TD-LTE和LTE FDD模式,计数频率为30.72MHz。在慢定时器模式下,慢定时器用慢速时钟计数(时钟一般使用32.768KHz),不论哪种模式。在芯片正常工作时,定时器工作在正常计数模式,在某个模式进入低功耗状态时,会设置该模式定时器工作在慢定时器模式的时间,接着将定时器切换到慢定时器模式,当所有定时器都工作在慢定时器模式时,且其他需要快时钟的模块都不在工作时,此时芯片可以进入睡眠,而当到达设定的唤醒时间时,会发出睡眠唤醒操作,芯片就会被唤醒,然后定时器可自动切换到正常计数模式。因为硬件可以自动补偿慢时钟偏差,以TD定时器为例,从正常计数模式切换到慢定时器模式时,定时器一直计数,直到一个慢时钟的上升沿到来时,将定时器的当前计数值传递给慢定时器,同时定时器停止计数,此时定时器工作在慢定时器模式,慢定时器的计数时钟是32.768KHz,其在每一个时钟周期并不是将计数值加1, 而是加312.5(即对于一个标准的32.768KHz时钟周期等于312.5个10.24MHz时钟周期,这个值由32K校准模块得到,这样就可以由硬件自动补偿慢时钟的误差)。当设置定时器从慢定时器模式切换到正常计数模式后,在一个慢时钟的上升沿到来时,慢定时器停止计数,同时将计数值的整数部分传递给定时器,定时器继续计数,此时定时器工作在正常计数模式。所以定时器这两种模式可以做到无缝的切换,这样就保证了在芯片经过睡眠后,定时器仍能保持和基站的时间同步信息。系统睡眠时,只有慢时钟运行,但慢时钟晶振的精度和稳定性有限,为保证睡眠后同步时间不丢失,需要用高速稳定时钟对该慢速时钟进行校准。通过计算指定个数的慢定时器时钟周期内正常计数器的时钟周期个数(该值包含小数),从而得到快慢定时器的校准值。基带芯片会根据每个模式定时器的状态(是否进入睡眠状态),各个CPU是否进入睡眠模式,以及其他的模块(如DMA:Direct Memory Access,HWA:Hardware Accelerator等)是否进入空闲状态,来判断基带芯片和其他模块(如电源模块,射频模块,音频模块等),是否进入低功耗(记为深度睡眠状态)。深睡状态下,整个系统关闭的输入快时钟,以及与快时钟相关功能模块下电,以达到深度省电的目的。
如上所述,在基带芯片深睡的条件中,有各个模式定时器是否进入睡眠状态,也就是判断定时器是否使用RTC(Real-Time Clock,一般采用32K时钟)时钟来计数。一种模式在一定时间段内没有任务时,需要软件将定时器切换到睡眠模式,直到预期有任务的时刻点,定时器在计数期满后自动切换到工作状态。定时器在睡眠模式下,使用RTC时钟计数,虽然慢时钟是经过了快时钟校准的,但是这里存在两个问题,会影响到睡眠状态下定时器的定时精度。一是由于快计数器校准慢计数器会有一定的校准精度,一般的校准电路的实现是使用定点计算,一定存在一定的计算的精度损失。另外,定时器在校准过程中和睡眠过程中RTC的时钟会有变化,这个变化尤其对温度变化敏感。若要保证高的RTC精度,就必须在两个方面有较高的要求,一是提高 RTC校准电路计算精度,这样会增加硬件实现的复杂度;另外,提高校准的频率,尤其是在温度变化较快的时候,增大RTC校准的频度,这种的做法会对温度检测,软件控制策略,以及基带芯片的功耗都有比较大的影响。
针对第二方面重点分析,此种方式存在以下缺点:由于温度对RTC时钟的影响最大,故若要达到较好的RTC校准效果,通常板卡中增加温度检测电路,实时检测板卡(尤其是RTC周围)温度变化,当温度变化率达到一定的门限的时候,就启动RTC校准。这里势必增加了温度检测电路,以及检测温度带来的功耗。另外,由于RTC校准的策略相对复杂,与终端的工作状态,协议栈软件的流程,以及终端的物理特性相关,尤其在多模多待(待机)的系统中,此校准就会更加复杂。仅仅靠软件启动校准电路来消除RTC的不稳定性,在实际应用过程中是非常困难的。再次,RTC校准模块在工作的时候需要快时钟,当系统达到睡眠条件的时候,系统本可以进入深睡模式,但是由于校准电路在工作,导致整个系统无法进入深睡。由于RTC校准模块通常工作的时间在百ms(毫秒)级别,所以对系统的功耗的优化是有很大的影响。当系统中有一个接入模式在工作状态,其对应的定时器是工作在正常计数状态,那么其他模式的定时器即使切换到睡眠状态,整个系统仍然不能进入深睡状态。此时快时钟是存在的,且与网络是同步的,其精度是有保证的。但此时非工作模式的定时器已经切换到睡眠模式,那么其时间精度就由校准后的RTC时钟精度来决定了,那么必然存在上述描述中分析的计时精度的损失。
技术实现要素:
本发明的目的在于提供一种睡眠唤醒定时偏差的补偿方法及电子设备,避免了第一定时器在睡眠唤醒后由于睡眠切换慢时钟而导致定时偏差的问题,有效地解决了系统辅模式定时器睡眠唤醒定时的偏差问题,保证了经过 睡眠的定时器的定时和网络时间保持同步。
为解决上述技术问题,本发明提供了一种睡眠唤醒定时偏差的补偿方法,包含以下步骤:获取需进入睡眠状态的第一定时器的睡眠时长;根据第一定时器进入睡眠状态的时间点T1和睡眠时长,计算第一定时器的唤醒时刻;获取未进入睡眠状态的第二定时器在唤醒第一定时器时记录的时间点T2;根据T2与计算的唤醒时刻的误差,调整第一定时器的定时偏差。
本发明还提供了一种电子设备,包含:睡眠时长获取模块,用于获取需进入睡眠状态的第一定时器的睡眠时长;计算模块,用于根据第一定时器进入睡眠状态的时间点T1和睡眠时长,计算第一定时器的唤醒时刻;时间点获取模块,用于获取未进入睡眠状态的第二定时器在唤醒第一定时器时记录的时间点T2;调整模块,用于根据T2与计算的唤醒时刻的误差,调整第一定时器的定时偏差。
本发明实施方式相对于现有技术而言,基于一个没有经过睡眠状态的第二定时器,来实现对一个经过睡眠状态的第一定时器在唤醒时刻的睡眠定时误差的定时补偿,从而避免了第一定时器在睡眠唤醒后由于睡眠切换慢时钟导致的定时偏差的问题,有效地解决了系统辅模式定时器睡眠唤醒定时偏差问题。
另外,第一定时器和第二定时器分别为不同无线通信模式下的模式定时器。在移动通信系统中,有多种无线通信模式并存,各模式有一套特有的计时装置。如果某一无线通信模式下的全部定时器需在一定时间内配置进入睡眠状态,则此时需要另一无线通信模式下的没有进入睡眠状态的定时器对该无线通信模式的定时器在睡眠唤醒时刻的定时进行校准;从而避免了该无线通信模式下进入睡眠状态的定时器在睡眠唤醒后由于睡眠切换慢时钟而导致定时偏差的问题。
另外,在调整第一定时器的定时偏差的步骤中,包含以下子步骤:根据 计算的唤醒时刻的误差,调整第一定时器定时的帧头位置。通过调整第一定时器的帧头位置,来补偿第一定时器在睡眠唤醒时刻产生的定时偏差,从而使第二定时器对第一定时器在睡眠唤醒时刻的定时进行校准。可有效减少RTC周期校准的频度,改为通过调整补偿值判断是否进入RTC校准,可以减少不必要的RTC校准,从而降低系统整体功耗。
另外,在获取第一定时器时记录的时间点T2的步骤之前,还包含:检测是否存在未进入睡眠状态的第二定时器,如果存在,则进入获取第二定时器在唤醒第一定时器时记录的时间点T2的步骤;如果不存在,则执行以下步骤:根据接收的同步信号获取本地时间和网络时间的相对关系;根据获取的相对关系确定一个帧头位置并周期性产生帧同步时刻;将产生的帧同步时刻作为网络时间。如果不存在未进入睡眠状态的第二定时器,将无法获取第一定时器在睡眠唤醒时刻产生的定时偏差。此时需要获取本地时间和网络时间的相对关系,并以此来调整帧头位置,进而补偿第一定时器在睡眠唤醒时刻产生的定时偏差。
附图说明
图1是根据现有技术中的通信系统中在睡眠唤醒时刻调整慢时钟误差的模块示意图;
图2是根据本发明第一实施方式的睡眠唤醒定时偏差的补偿方法的流程图;
图3是根据本发明第一实施方式中第二定时器未进入睡眠状态的示意图;
图4根据本发明第一实施方式中第二定时器处于睡眠状态的示意图;
图5根据本发明第一实施方式的调整第一定时器的帧头位置的结构示意图。
图6是根据本发明第二实施方式的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
本发明的第一实施方式涉及一种睡眠唤醒定时偏差的补偿方法。在本实施方式中,基于一种模式B的定时器,其工作在快时钟技术状态,用此定时器的定时信息来同步另外一个模式A的定时器,此定时器使用慢时钟来计数;通过软件补偿模式A的定时器唤醒后的时刻,来消除慢时钟给模式A带来的时间误差。本实施方式中,以模式A的定时器(即第一定时器)和模式B的定时器(即第二定时器)分别为不同无线通信模式下的模式定时器为例,进行说明,具体流程如图2所示。
在步骤201中,获取需进入睡眠状态的第一定时器的睡眠时长。
具体地说,首先根据第一定时器所属的无线通信模式,获取帧周期。比如说,第一定时器所属的无线通信模式为TD-SCDMA模式,由于TD-SCDMA模式下的帧周期为5ms,则可知第一定时器所属的无线通信模式的帧周期为5ms。然后,根据获取的帧周期,以及配置的睡眠帧数,计算睡眠时长。针对上述案例,假设配置的睡眠帧数为N帧,则第一定时器的睡眠时长为N*5ms。
接着,在步骤202中,根据第一定时器进入睡眠状态的时间点T1和睡眠时长,计算第一定时器的唤醒时刻。
具体地说,第一定时器接收进入睡眠状态的指令即进入睡眠状态,当第一定时器在进入睡眠状态时,电子设备可以启动一个计时器,记录当前的时间点T1,并将其保存在电子设备相关的组件内;或者根据电子设备内置的时间记录单元,获取当前的时间点T1,并将其保存在时间记录单元相应的表格内。也可以采用其他的获取方式获取第一定时器进入睡眠状态的时间点T1。
比如,如图3所示,在第一定时器所属的TD-SCDMA模式下,在帧头为FH1时配置进入睡眠N帧,而在帧头为FH2唤醒。由于在步骤101中已获取到睡眠时长为N*5ms,因此结合FH1时刻点为T1,可以计算得到唤醒时帧头FH2的时刻点为T1+(N*5)ms。
接着,进入步骤203,判断是否存在未进入睡眠状态的第二定时器。如果存在,则进入步骤204;如果不存在,则进入步骤206。
具体地说,如果终端设备支持的通信模式为TD-SCDMA和TD-LTE,而TD-LTE模式始终处于快时钟计数状态时(如图3所示),即可判定存在未进入睡眠状态的第二定时器(即TD-LTE的模式定时器),则进入步骤204;如果TD-LTE模式也进入慢时钟计数状态(如图4所示),并且不存在其他通信模式的模式定时器,即可判定不存在未进入睡眠状态的第二定时器,则进入步骤206。
在步骤204中,获取第二定时器在唤醒第一定时器时记录的时间点T2。由于第二定时器始终未进入睡眠状态,即第二定时器始终处于工作状态,因此在睡眠唤醒时刻FH2,可通过与第二定时器(即TD-LTE的模式定时器)进行定时同步,获得当前帧头的时刻点(T2)。
接着,进入步骤205,根据T2与计算的唤醒时刻的误差,调整第一定时器定时的帧头位置。
具体地说,将计算得到唤醒帧头FH2的时刻点T1+(N*5)ms。与获得的当前帧头时刻点T2相减即可获得睡眠过程中引入的慢时钟误差 Δ=(T1+N×5)-T2,然后在睡眠唤醒后通过调整帧定时的帧头位置,以补偿睡眠引入的误差,从而保持和网络的定时同步一致。具体地,根据获得的慢时钟的时间误差,修改比较器中的值,将当前的时间往前或者往后调整,从而保证之后计算的时间没有误差。
如果在步骤203中,判定不存在未进入睡眠状态的第二定时器,则进入步骤206。
如图4所示,第一定时器(即TD-SCDMA模式下的模式定时器)在帧头FH1处配置进入睡眠N帧,在TD-SCDMA切换进入低功耗的同时第二定时器(即TD-LTE模式下的模式定时器)也处于睡眠状态,在TD-SCDMA定时器在帧头为FH2时唤醒,利用在帧头为FH1时获取的已知时刻点T1,可以计算得到唤醒帧帧头FH2的时刻点为T1+(N*5)ms,而在睡眠唤醒时刻FH2时可以通过和TD-LTE定时器定时同步获得当前帧头的时刻点为T2,将两个时刻点相减获得的Δ=(T1+N×5)-T2的结果应该为0,此时无法获得TD-SCDMA模式慢时钟引入的误差。因此,当不存在未进入睡眠状态的第二定时器,则进入步骤206。
在步骤206中,根据接收的同步信号获取本地时间和网络时间的相对关系。
具体地说,第一定时器是循环计数,如TD-SCDMA模式下的定时器是以1/8chip为单位,循环周期为51200,计数值从0计数到51199,一个帧周期为5ms,UE(用户设备)通过接收同步信号来获取本地时间和网络时间的相对关系。
接着,进入步骤207,根据获取的相对关系确定帧头的位置,并通过定时调整将旧帧头调整到新帧头位置。
由于搜网时已经存在一个初始帧头位置,等接收信号确认到真正的网络帧头位置后,可根据相对关系将当前的帧头位置调整到新帧头位置,即可以 此实现产生帧同步时刻的目的。
其中,相对关系为本地时间和网络时间的相对关系。
接着,进入步骤208,将产生的帧同步时刻作为网络时间。
具体地说,如图5所示,N、N+1等为帧头所在位置,0标示所示位置为循环计数器的0时刻点,帧同步时刻是通过比较器产生,当比较器中的值等于当前定时器的循环计数值则触发中断,作为收发数据的参考位置以帧头位置为基准。比较器的值是软件和网络同步后设置的,对于LTE而言,开始是30719,然后在搜网之后即确定了网络时间和本地硬件定时器的偏差,然后驱动会修改比较器的值,来达到硬件定时器中断和网络帧头一致的效果。
所以睡眠唤醒之后计算得到了定时偏差,可以通过调整比较器中的比较值来改变网络帧头的位置,如图5中点划线与虚线之间的箭头所示,帧头便从点划线调整为虚线位置,来保证之后接收和发送的数据使用的是调整之后的时间点。
值得一提的是,在本实施方式中,是在多模终端内以未进入睡眠的模式定时器(第二定时器)来校准进入睡眠的模式定时器(第一定时器)的定时调整为例进行说明的,但在实际应用中,对定时器经过睡眠唤醒时刻产生的时间点误差进行补偿方式不限于模式定时器对模式定时器的补偿,亦可采用能够和模式定时器进行同步计算误差的,可以进行快慢定时器切换的其他硬件定时器,通过调整睡眠唤醒后帧头的位置,以达到定时同步的目的。具体地说,只要能够确定两个定时器的相对时间关系就可以实现补偿,比如模式定时器在一段时间内运行了X个cycle(周期),而另外一个非模式定时器运行了Y个cycle,如果两个都是精确的则统一到一个时间轴上的时间应该是一样的,但实际上可能由于两个定时器的时钟源有差异导致的折算到一个时间轴上会有一个误差,针对这样的场景,可通过本实施方式将精度差的定时器通过补偿来变得更精确。
本发明的实施方式不仅能够满足多模系统协议栈软件定时的需要,同时还能满足通信设备中多个运算处理器之间相互定时同步。例如目前的智能手机通常包括应用处理器和通信处理器,每个处理器中又包含有两个或者多个运算处理器。由于此定时器实现比较通用,所以可以作为多核之间的定时基准。而且本实施方式不仅适用于无线通信系统,对其他单模、多模通信系统亦适用。
本申请的实施方式可以将进入睡眠状态的定时器和没有进入睡眠的定时器进行同步,保证深睡情况下各个模式引入的睡眠误差相同,即可解决睡眠唤醒后的多模式预占gap分配时间冲突问题。可以有效提高多模系统非业务模式的定时同步的精度。
本发明的第二实施方式涉及一种电子设备。如图6所示,包含:睡眠时长获取模块,用于获取需进入睡眠状态的第一定时器的睡眠时长;计算模块,用于根据第一定时器进入睡眠状态的时间点T1和睡眠时长,计算第一定时器的唤醒时刻;时间点获取模块,用于获取未进入睡眠状态的第二定时器在唤醒第一定时器时记录的时间点T2;调整模块,用于根据T2与计算的唤醒时刻的误差,调整第一定时器的定时偏差。
进一步地,电子设备为支持至少两种无线通信模式的终端设备;第一定时器和第二定时器分别为不同无线通信模式下的模式定时器。
进一步地,睡眠时长获取模块包含以下子模块:帧周期获取子模块,用于获取第一定时器所属的无线通信模式的帧周期;时长计算子模块,用于根据获取的帧周期,以及配置的睡眠帧数,计算睡眠时长。
进一步地,调整模块根据计算的唤醒时刻的误差,调整第一定时器定时的帧头位置。
由于在移动通信系统中有多种无线通信模式并存,而且各模式有一套特有的计时装置。如果某一无线通信模式下的全部定时器需在一定时间内配置 进入睡眠状态,则此时需要利用一个没有经过睡眠状态的第二定时器,来实现对一个经过睡眠状态的第一定时器在唤醒时刻的睡眠定时误差的定时补偿,从而避免了第一定时器在睡眠唤醒后由于睡眠切换慢时钟而导致的定时偏差的问题,有效地解决了系统辅模式定时器睡眠唤醒定时偏差问题。
不难发现,本实施方式为与第一实施方式相对应的设备实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。