专利名称:一种预防SoC振荡器不稳态的方法及装置的制作方法
技术领域:
本发明涉及SoC设计领域,尤其涉及一种预防SoC振荡器不稳态的方法。本发明还涉及实现该方法的装置。
背景技术:
SoC(System on a Chip,系统级芯片)片内振荡器是一种常用的提供系统时钟的模拟模块,相对于外部晶振加片内PLL提供系统时钟的硬件方案,片内振荡器具有面积小的优点,因而广泛应用于对时钟频率和精度要求不高的SoC系统中。为了提高振荡器输出时钟的精度,抵消生产制造过程中难以避免的工艺参数漂移,目前很多振荡器的设计引入了动态调节输出时钟频率的功能,即在振荡器开启时,通过调节振荡器的配置参数,在一定的频率范围内动态调整输出时钟的频率。但是,这也同时引入了新的问题,即如果在频率切换过程中,振荡器的输出时钟有毛刺或者占空比不理想,则基于振荡器输出时钟工作的MCU执行程序很有可能发生异常,甚至程序无法继续执行,进而使整个芯片无法正常工作。为了解决这一问题,可以采用在芯片内增加时钟控制逻辑的方法,使MCU在时钟频率发生切换的时间段内暂时停止执行程序,直至切换后的时钟稳定输出时再继续执行程序,但其缺点是会增加硬件开销,且增加的时钟控制逻辑不具有普适性,不同的SoC系统往往需要设计不同的时钟控制逻辑。
发明内容
本发明要解决的技术问题是提供一种预防SoC振荡器不稳态的方法,它具有良好的移植性,且不会增加硬件开销。为解决上述技术问题,本发明的预防SoC振荡器不稳态的方法,应用在用户程序中需要切换振荡器频率的位置处,定义该位置前、后的两个程序段分别为应用程序段一和应用程序段二,则该方法包括以下步骤1)在应用程序段一执行完毕,振荡器频率调整前,查询看门狗开启记录,若看门狗未被开启过,则转到步骤2);若看门狗已被开启过,则转到应用程序段二 ;2)开启看门狗,并设置看门狗开启记录;3)振荡器频率调整后,进行循环喂狗操作,若操作进行正常,则在操作完成后转到步骤4);若操作发生中断,则自动复位系统,重新从应用程序段一开始执行;4)关闭看门狗,并转到应用程序段二。本发明要解决的另一技术问题是提供实现上述方法的装置。 为解决上述技术问题,本发明的预防SoC振荡器不稳态的装置,包括一 MCU,该MCU 上集成有看门狗和寄存器,看门狗用于监测MCU的程序运行状态;寄存器用于存储看门狗的开启记录,且该寄存器不会因MCU被复位而被复位。 本发明的预防SoC振荡器不稳态的方法及装置,利用看门狗监测MCU的程序运行状态,当振荡器在调整输出时钟频率过程中出现不稳态时,看门狗自动复位MCU,以避免由振荡器不稳态而导致的SoC工作异常的情况发生,与现有的解决方案相比,本发明由于不需要改变SoC系统的时钟控制逻辑电路设计,因此不会增加硬件电路开销,同时由于本发明的方法所对应的程序段相对独立于用户的既有程序,因此具有良好的移植性,能够适用于不同的SoC系统。
图1是本发明的程序段与用户应用程序段协同工作的流程示意图;图2是本发明的方法流程图。
具体实施例方式为对本发明的技术内容、特点与功效有更具体的了解,现结合图示的实施方式,详述如下本发明的预防SoC振荡器不稳态的装置,适用于使用输出频率可动态调节的振荡器来提供系统时钟的SoC系统,该装置包括一 MCU (Micro Control Unit,微控制单元),该 MCU上集成有看门狗(watchdog)定时器和一寄存器,看门狗用于监测MCU程序运行状态,寄存器用于存储看门狗的开启记录,且该寄存器不会因MCU被复位而被复位。使用上述装置预防SoC振荡器不稳态的方法,是在用户的应用程序中需要切换振荡器频率的位置处嵌入一个程序段。如图1所示,应用程序段一 210是该位置前的应用程序段,应用程序段二 230是该位置后的应用程序段,本发明的程序段220嵌入到应用程序段一 210和应用程序段二 230之间。具体流程请参阅图2所示,上电复位后,MCU开始执行应用程序段一 210。当应用程序段一 210执行完毕,到达需要切换振荡器频率处时,MCU执行本发明的程序段220,即(1)在振荡器切换输出时钟的频率前,MCU首先查询寄存器的状态,如果寄存器的状态记录显示看门狗未曾被开启过,则按照MCU的操作流程,开启看门狗,并将寄存器设置为看门狗开启状态,然后继续执行后续步骤;如果寄存器的状态记录显示看门狗已被开启过,则退出本发明的程序段220,转而执行应用程序段二 230 ;(2)在振荡器切换输出时钟频率后,按照振荡器频率切换后达到输出稳定所需要的时间要求,确定重新装载看门狗定时器的时间间隔以及装载的次数,进行循环喂狗的操作。在振荡器频率切换过程中,如果输出时钟的频率稳定,则循环喂狗操作会正常进行,操作结束后,按照MCU的操作流程,关闭看门狗,然后MCU在调整后的振荡器频率下马上开始执行应用程序段二 230 ;如果输出时钟的频率不稳定,则循环喂狗操作会由于程序执行时发生诸如跳转错误等异常情况而被中断,此时,看门狗定时器向MCU发送一个复位信号, MCU系统被自动复位,并在调整后的振荡器频率下,重新从应用程序段一 210开始执行。如果发生了看门狗复位MCU系统的情况,则复位后的MCU在执行到本发明程序段 220中的步骤(1)时,会在寄存器中查询到看门狗已被开启过的记录,于是MCU将退出本发明程序段220,不再执行后续的步骤O),而是转到应用程序段二 230。这样,在执行完毕本发明的程序段220后,振荡器频率已经完成了切换,应用程序段二就在调整后的振荡器频率下被执行,如此,不仅达到了动态调整振荡器工作频率的目的,而且避免了因振荡器输出时钟在调整过程中产生毛刺或者占空比不理想等不稳态而影响SoC系统正常工作的问题。而且,由于本发明的程序段与用户开发的其他应用程序没有关联,因此,可以很方便地嵌入到用户既有程序中,从而使该方法具有了良好的移植性,能够应用于大多数使用频率可调振荡器的SoC系统。 以上仅列举了本发明的一个实施例,该实施例仅用于解释本发明,并非用于限制本发明。凡与上述实施例等效的变换与置换,均应属于本发明的保护范围。
权利要求
1.一种预防SoC振荡器不稳态的方法,应用在用户程序中需要切换振荡器频率的位置处,定义该位置前、后的两个程序段分别为应用程序段一和应用程序段二,其特征在于,包括以下步骤1)在应用程序段一执行完毕,振荡器频率调整前,查询看门狗开启记录,若看门狗未被开启过,则转到步骤2);若看门狗已被开启过,则转到应用程序段二 ;2)开启看门狗,并设置看门狗开启记录;3)振荡器频率调整后,进行循环喂狗操作,若操作进行正常,则在操作完成后转到步骤 4);若操作发生中断,则自动复位系统,重新从应用程序段一开始执行;4)关闭看门狗,并转到应用程序段二。
2.如权利要求1所述的预防SoC振荡器不稳态的方法,其特征在于所述看门狗开启记录用一寄存器的状态表示。
3.如权利要求1所述的预防SoC振荡器不稳态的方法,其特征在于所述步骤3)中, 喂狗的次数和时间间隔按照振荡器频率调整后达到稳定输出所需要的时间要求确定。
4.一种实现权利要求1所述方法的装置,其特征在于包括一微控制单元,该微控制单元上集成有看门狗和寄存器,看门狗用于监测微控制单元的程序运行状态;寄存器用于存储看门狗的开启记录,且该寄存器不会因微控制单元被复位而被复位。
全文摘要
本发明公开了一种预防SoC振荡器不稳态的方法,应用在用户程序中需要切换振荡器频率的位置处,定义该位置前、后两程序段分别为应用程序段一和二,则步骤为1)振荡器频率调整前,查询看门狗开启记录,若未开启过,则开启看门狗并设置开启记录;若已开启过,则转到应用程序段二;2)振荡器频率调整后,进行循环喂狗操作,若正常,则关闭看门狗,转到应用程序段二;若异常,则复位,重新从应用程序段一开始执行。本发明还公开了实现该方法的装置。该方法及装置利用看门狗监测MCU程序运行状态,当振荡器在频率调整过程中出现不稳态时,看门狗自动复位MCU,从而在不增加硬件开销情况下,避免了由振荡器不稳态引发的芯片工作异常情况。
文档编号G06F11/00GK102486742SQ20101057128
公开日2012年6月6日 申请日期2010年12月2日 优先权日2010年12月2日
发明者顾福敏 申请人:上海华虹集成电路有限责任公司