一种芯片时钟系统及其运行方法与流程

文档序号:33396498发布日期:2023-03-08 13:45阅读:103来源:国知局
一种芯片时钟系统及其运行方法与流程

1.本发明属于芯片技术领域,具体涉及一种芯片时钟系统及其运行方法。


背景技术:

2.时钟是芯片的心脏,时钟的稳定可靠是芯片能够稳定运行的基础,尤其目前的数字芯片都是基于寄存器级电路设计(rtl),几乎所有的数字模块的功能信号都是根据时钟一个节拍一个节拍地从寄存器中传输,电路最终功能是否可以实现以及性能是否达到设计需求,很大程度依赖于时钟系统。
3.目前的mcu芯片或者大规模的soc设计中,集成了越来越多的片上外设,比如qspi/sdio等存储类接口,uart/i2c等串口传输接口,以及can/can fd /i2s等控制或语音等个性化的通讯接口,各类的接口通讯速率不尽相同;因此芯片上需要不同的时钟源为芯片提供完整而合理的时钟网络。
4.常用mcu/soc的芯片有以下几种时钟源:(1)lsi时钟(即低速内部时钟),采用rc振荡器,频率为20khz~60khz左右,供独立看门狗和自动唤醒单元使用。(2)lse时钟(即低速外部时钟),采用石英晶体,内接频率为32.768khz的振荡器,主要是作为rtc的时钟源。(3)hse时钟(即高速外部时钟),采用石英/陶瓷谐振器,内接频率范围为4mhz~16mhz的振荡器,可以直接作为系统时钟或者pll输入。(4)hsi时钟(即高速内部时钟),采用rc振荡器,频率为8m/16m/32mhz,可以直接作为系统时钟或者用作pll输入。(5)pll时钟(即锁相环倍频时钟),一般有主pll和专用pll两个;主pll由hse或者hsi提供时钟信号,并具有两个不同的输出时钟,一个用于生成高速的系统时钟,一个用于生成usb otg fs的时钟、随机数发生器的时钟和sdio时钟;专用pll(即plli2s)用于生成精确时钟,从而在i2s接口实现高品质音频性能。
5.在实际芯片回片测试或者在使用过程中发现很多功能失效都是因为时钟丢失或异常进而给电路带来很大损失。
6.如图1所示,现有的芯片时钟系统,包括lse时钟1、hse时钟2、lsi时钟3、hsi时钟4、第一选择器5、第二选择器6、第三选择器7、第四选择器8、pll时钟9和时钟模块寄存器。lsi时钟3的输出端直接输出低速时钟信号lsi_clk;lse时钟1的输出端接第一选择器5的第一输入端,第一选择器5的第二输入端接lsi时钟3的输出端,第一选择器5的选择端输入低速时钟切换使能信号lsecsson,第一选择器5的输出端输出低速时钟信号lse_clk;hsi时钟4的输出端直接输出高速时钟信号hsi_clk;hse时钟2的输出端接第二选择器6的第一输入端,第二选择器6的第二输入端接hsi时钟4的输出端,第二选择器6的选择端输入高速时钟切换使能信号hsecsson,第二选择器6的输出端接第三选择器7的第一输入端和第四选择器8的第一输入端,并输出高速时钟信号hse_clk,第三选择器7的第二输入端接hsi时钟4的输出端,第三选择器7的选择端输入倍频选择信号pll_src,第三选择器7的输出端接pll时钟9的输入端,pll时钟9的输出端接第四选择器8的第二输入端,第四选择器8的第三输入端接hsi时钟4的输出端,第四选择器8的输出端输出系统时钟信号sys_clk。
7.上述芯片时钟系统设计了时钟安全系统(css),包括lse时钟上的css和hse上的css,即lsecss和hsecss的采用,可以应对lse时钟故障和hse时钟故障处理,在lse时钟故障和/或hse时钟故障时,会分别使低速时钟切换使能信号lsecsson为高电平和/或使高速时钟切换使能信号hsecsson为高电平,切换使用lsi时钟和/或hsi时钟。但是这种芯片时钟系统的时钟安全系统的覆盖范围比较有限;若hsi时钟或lsi时钟存在工艺偏差导致的频率校准失败或者由于电压温度等导致频率无法微调至目标值的情况下,这种时钟安全系统将会因为无法解决此类问题,而导致器件功能失效。尤其在mpw阶段(即多项目圆晶阶段)工艺的误差对器件性能的影响尤为明显,对芯片的测试验证造成的影响更加严重。


技术实现要素:

8.本发明的目的是提供一种芯片时钟系统及其运行方法,以提供更加稳定的时钟信号。
9.本发明所述的芯片时钟系统,包括lse时钟、hse时钟、lsi时钟、hsi时钟、第一选择器、第二选择器、第三选择器、第四选择器、pll时钟和时钟模块寄存器;lse时钟的输出端接第一选择器的第一输入端,第一选择器的选择端输入低速时钟切换使能信号lsecsson,第一选择器的输出端输出低速时钟信号lse_clk;hse时钟的输出端接第二选择器的第一输入端,第二选择器的选择端输入高速时钟切换使能信号hsecsson,第二选择器的输出端接第三选择器的第一输入端和第四选择器的第一输入端,并输出高速时钟信号hse_clk,第三选择器的选择端输入倍频选择信号,第三选择器的输出端接pll时钟的输入端,pll时钟的输出端接第四选择器的第二输入端,第四选择器的输出端输出系统时钟信号sys_clk。
10.该芯片时钟系统还包括备用高速时钟、备用时钟寄存器、第五选择器、第六选择器、hsi时钟检测分频器、pll时钟检测分频器以及与备用高速时钟的输出端连接的计数器、hsi备用时钟分频器、lsi备用时钟分频器;计数器的输出端输出备用时钟准备就绪信号lclk_rdy;lsi时钟的输出端接第五选择器的第一输入端,并输出lsi时钟检测信号lsi_wdg_clk,第五选择器的第二输入端接lsi备用时钟分频器的输出端,第五选择器的选择端输入lsi备用时钟使能信号lsi_bk_on,第五选择器的输出端接第一选择器的第二输入端,并输出低速时钟信号lsi_clk;第六选择器的第一输入端接hsi时钟的输出端,第六选择器的第二输入端接hsi备用时钟分频器的输出端,第六选择器的选择端输入hsi备用时钟使能信号hsi_bk_on,第六选择器的输出端接第二选择器的第二输入端、第三选择器的第二输入端和第四选择器的第三输入端,并输出高速时钟信号hsi_clk,hsi时钟检测分频器的输入端接hsi时钟的输出端,hsi时钟检测分频器的输出端输出hsi时钟检测信号hsi_wdg_clk;pll时钟检测分频器的输入端接pll时钟的输出端,pll时钟检测分频器的输出端输出pll时钟检测信号pll_wdg_clk;第四选择器的第四输入端接备用高速时钟的输出端,第四选择器的选择端输入pll备用时钟使能信号pll_bk_on。
11.优选的,所述hsi时钟检测分频器包括hsi时钟检测第一级分频器和hsi时钟检测第二级分频器,hsi时钟检测第一级分频器的输入端接hsi时钟的输出端,hsi时钟检测第一级分频器的输出端接hsi时钟检测第二级分频器的输入端,hsi时钟检测第二级分频器的输出端输出hsi时钟检测信号hsi_wdg_clk。
12.优选的,所述pll时钟检测分频器包括pll时钟检测第一级分频器和pll时钟检测
第二级分频器,pll时钟检测第一级分频器的输入端接pll时钟的输出端,pll时钟检测第一级分频器的输出端接pll时钟检测第二级分频器的输入端,pll时钟检测第二级分频器的输出端输出pll时钟检测信号pll_wdg_clk。
13.优选的,所述lsi备用时钟分频器包括lsi备用时钟第一级分频器和lsi备用时钟第二级分频器,lsi备用时钟第一级分频器的输入端接备用高速时钟的输出端,lsi备用时钟第一级分频器的输出端接lsi备用时钟第二级分频器的输入端,lsi备用时钟第二级分频器的输出端接第五选择器的第二输入端。
14.优选的,所述备用高速时钟包括无源晶振、备用时钟内部振荡器和两个io pad模块,无源晶振的两端分别通过两个io pad模块接备用时钟内部振荡器的两个输入端,备用时钟内部振荡器的输出端接计数器的输入端、hsi备用时钟分频器的输入端、lsi备用时钟分频器的输入端和第四选择器的第四输入端。
15.优选的,所述备用高速时钟包括有源晶振和一个io pad模块,有源晶振的输出端通过io pad模块接计数器的输入端、hsi备用时钟分频器的输入端、lsi备用时钟分频器的输入端和第四选择器的第四输入端。
16.本发明所述的芯片时钟系统的运行方法,用于上述芯片时钟系统,该运行方法为:系统上电且默认启动备用高速时钟,将备用高速时钟输出的时钟信号作为系统时钟;待备用高速时钟准备就绪后(待内核读得lclkrdyf为1时,即lclk_rdy等于1时,系统即可在lclk时钟下运行),内核配置时钟模块寄存器及备用时钟寄存器,初始化检测各个时钟是否出现故障(即是否可正常启动及运行)。
17.如果某些时钟出现故障(即不可正常启动或者运行),则使用备用时钟策略。
18.如果所有时钟均未出现故障(即均可正常启动及运行),则停止使用备用高速时钟,切换使用lse时钟、hse时钟、lsi时钟、hsi时钟和pll时钟;在时钟系统运行过程中实时检测各个时钟是否出现故障,如果某些时钟出现故障,则使用备用时钟策略。
19.其中,如果某些时钟出现故障,则使用备用时钟策略的具体方式为:若lse时钟出现故障,lsi时钟正常,则内核配置时钟模块寄存器,使低速时钟切换使能信号lsecsson为高电平,停止使用lse时钟,切换使用lsi时钟。
20.若lse时钟、lsi时钟都出现故障,则内核配置时钟模块寄存器和备用时钟寄存器,使低速时钟切换使能信号lsecsson为高电平,使lsi备用时钟使能信号lsi_bk_on为高电平,停止使用lse时钟和lsi时钟,切换使用(由备用高速时钟分频而得的)lsi备用时钟。
21.若hse时钟出现故障,hsi时钟正常,则内核配置时钟模块寄存器,使高速时钟切换使能信号hsecsson为高电平,停止使用hse时钟,切换使用hsi时钟。
22.若hse时钟、hsi时钟都出现故障,则内核配置时钟模块寄存器和备用时钟寄存器,使高速时钟切换使能信号hsecsson为高电平,使hsi备用时钟使能信号hsi_bk_on为高电平,停止使用hse时钟和hsi时钟,切换使用(由备用高速时钟分频而得的)hsi备用时钟。
23.若lsi时钟和/或hsi时钟和/或pll时钟出现故障,则内核配置备用时钟寄存器,使lsi备用时钟使能信号lsi_bk_on为高电平和/或hsi备用时钟使能信号hsi_bk_on为高电平和/或pll备用时钟使能信号pll_bk_on为高电平,停止使用lsi时钟和/或hsi时钟和/或pll时钟,切换使用(由备用高速时钟分频而得的)lsi备用时钟和/或hsi备用时钟和/或(由备用高速时钟提供的)pll备用时钟。
24.优选的,在时钟系统运行过程中实时检测lsi时钟是否出现故障的方式为:内核配置备用时钟寄存器,产生用于软件喂狗的lsi时钟检测信号lsi_wdg_clk,并周期性读取时钟模块寄存器的值,然后判断是否能正常喂狗且递减计数器的计数范围在正常范围内,如果是,则表示lsi时钟正常,否则表示lsi时钟出现故障。
25.优选的,在时钟系统运行过程中实时检测hsi时钟是否出现故障的方式为:内核配置备用时钟寄存器,产生用于软件喂狗的hsi时钟检测信号hsi_wdg_clk,并周期性读取时钟模块寄存器的值,然后判断是否能正常喂狗且递减计数器的计数范围在正常范围内,如果是,则表示hsi时钟正常,否则表示hsi时钟出现故障。
26.优选的,在时钟系统运行过程中实时检测pll时钟是否出现故障的方式为:内核配置备用时钟寄存器,产生用于软件喂狗的pll时钟检测信号pll_wdg_clk,并周期性读取时钟模块寄存器的值,然后判断是否能正常喂狗且递减计数器的计数范围在正常范围内,如果是,则表示pll时钟正常,否则表示pll时钟出现故障。
27.本发明提供了一种更全面的时钟安全系统,可实时识别hse时钟、lse时钟、hsi时钟、lsi时钟和pll时钟是否出现故障,并在某个时钟存在故障时采用备用高速时钟通过分频方式产生相应的备用时钟进行无缝切换来代替该故障时钟;其只需要一个备用高速时钟(即lclk)就可以产生pll备用时钟(即pll_bk),并且备用高速时钟(即lclk)通过分频就可以产生hsi备用时钟(即hsi_bk)和lsi备用时钟(即lsi_bk),与原有的hsecss功能和lsecss功能共同为芯片提供了更加稳定的时钟信号,确保完成芯片功能测试和验证,降低由于工艺误差或制程限制造成的技术瓶颈,达到降低成本和缩短开发周期的目的。无论在mpw测试验证阶段,hsi时钟、lsi时钟等的rc、osc振荡器和pll时钟存在工艺风险、制程工艺限制的情况下,还是在实际使用的紧急状况阶段,利用本发明中的芯片时钟系统都可以提供稳定的时钟信号。本发明实现了更全面更安全更灵活的时钟方案,并且实现多路时钟源均配有安全备用时钟,使得方案更加通用,尤其对芯片前期的设计和测试验证能带来更全面的保障。
附图说明
28.图1为现有的芯片时钟系统架构图。
29.图2为实施例1中的芯片时钟系统架构图。
30.图3为实施例1中的备用时钟寄存器的示意图。
31.图4为实施例1中的芯片时钟系统的运行流程图。
32.图5为实施例1中时钟系统运行过程中实时检测lsi时钟是否出现故障的流程图。
33.图6为实施例1中时钟系统运行过程中实时检测hsi时钟是否出现故障的流程图。
34.图7为实施例1中时钟系统运行过程中实时检测pll时钟是否出现故障的流程图。
35.图8为实施例2中的芯片时钟系统架构图。
具体实施方式
36.实施例1:如图2、图3所示,本实施例中的芯片时钟系统,包括lse时钟1、hse时钟2、lsi时钟3、hsi时钟4、第一选择器5、第二选择器6、第三选择器7、第四选择器8、pll时钟9、时钟模块寄存器、备用高速时钟10、备用时钟寄存器、第五选择器11、第六选择器12、hsi时钟
检测分频器、pll时钟检测分频器、计数器13、hsi备用时钟分频器14和lsi备用时钟分频器。hsi时钟检测分频器包括hsi时钟检测第一级分频器15和hsi时钟检测第二级分频器16。pll时钟检测分频器包括pll时钟检测第一级分频器17和pll时钟检测第二级分频器18。lsi备用时钟分频器包括lsi备用时钟第一级分频器19和lsi备用时钟第二级分频器20。备用高速时钟10包括无源晶振21(频率为48mkz,可以覆盖lse时钟、lsi时钟和pll时钟备份需求)、备用时钟内部振荡器22和两个io pad模块,无源晶振21的两端分别通过两个io pad模块接备用时钟内部振荡器22的两个输入端,备用时钟内部振荡器22的输出端接计数器13的输入端、hsi备用时钟分频器14的输入端和lsi备用时钟第一级分频器19的输入端。计数器13的输出端输出备用时钟准备就绪信号lclk_rdy,由于无源晶振21起振需要一定的时间,因此备用高速时钟信号经过计数器13计数延迟,达到稳定后产生备用时钟准备就绪信号lclk_rdy。lclk_rdy信号之后的lclk可为系统提供稳定时钟。lsi备用时钟第一级分频器19的输出端接lsi备用时钟第二级分频器20的输入端。
37.lsi时钟3的输出端接第五选择器11的第一输入端,并输出lsi时钟检测信号lsi_wdg_clk,第五选择器11的第二输入端接lsi备用时钟第二级分频器20的输出端,第五选择器11的选择端输入lsi备用时钟使能信号lsi_bk_on,第五选择器11的输出端输出低速时钟信号lsi_clk。
38.hsi时钟4的输出端接第六选择器12的第一输入端,第六选择器12的第二输入端接hsi备用时钟分频器14的输出端,第六选择器12的选择端输入hsi备用时钟使能信号hsi_bk_on,第六选择器12的输出端输出高速时钟信号hsi_clk。
39.lse时钟1的输出端接第一选择器5的第一输入端,第一选择器5的第二输入端接第五选择器11的输出端,第一选择器5的选择端输入低速时钟切换使能信号lsecsson,第一选择器5的输出端输出低速时钟信号lse_clk。
40.hse时钟2的输出端接第二选择器6的第一输入端,第二选择器6的第二输入端接第六选择器12的输出端,第二选择器6的选择端输入高速时钟切换使能信号hsecsson,第二选择器6的输出端接第三选择器7的第一输入端和第四选择器8的第一输入端,并输出高速时钟信号hse_clk。第三选择器7的第二输入端接第六选择器12的输出端,第三选择器7的选择端输入倍频选择信号pll_src,第三选择器7的输出端接pll时钟9的输入端,pll时钟9的输出端接第四选择器8的第二输入端,第四选择器8的第三输入端接第六选择器12的输出端,第四选择器8的第四输入端接备用时钟内部振荡器22的输出端,第四选择器8的选择端输入pll备用时钟使能信号pll_bk_on,第四选择器8的输出端输出系统时钟信号sys_clk。
41.hsi时钟检测第一级分频器15的输入端接hsi时钟4的输出端,hsi时钟检测第一级分频器15的输出端接hsi时钟检测第二级分频器16的输入端,hsi时钟检测第二级分频器16的输出端输出hsi时钟检测信号hsi_wdg_clk。
42.pll时钟检测第一级分频器17的输入端接pll时钟9的输出端,pll时钟检测第一级分频器17的输出端接pll时钟检测第二级分频器18的输入端,pll时钟检测第二级分频器18的输出端输出pll时钟检测信号pll_wdg_clk。
43.如图3所示,内核可以通过总线读写备用时钟寄存器,备用时钟寄存器中包含了是否启用备用高速时钟(即lclk)作为hsi备用时钟/lsi备用时钟/pll备用时钟以及相应的分频系数。备用时钟寄存器可配置的参数以及参数位宽如下:
bit0lclkrdyflclk(即备用高速时钟)就绪后硬件置1,软件通过lclkrdyc位清除。
44.0:lclk未就绪;1:lclk就绪。
45.bit1lclkrdyielclk就绪中断使能。
46.0:lclk准备就绪后不产生中断;1:lclk准备就绪后产生中断。
47.bit2lclkrdyclclk准备就绪标志清除位。
48.0:不清除lclkrdyf标志位;1:清除lclkrdyf标志位。
49.bit3reserved。
50.bit4hsi_bk_on使能hsi备用时钟,该备用时钟由lclk产生。
51.0:未启用lclk产生hsi备用时钟;1:启用lclk产生hsi备用时钟。
52.bit7:5hsi_div_by_lclk[2:0]hsi备用时钟分频系数。
[0053]
000:时钟信号lclk的频率作为时钟信号hsi_bk_clk的频率;001:时钟信号lclk的频率的1/2作为时钟信号hsi_bk_clk的频率;010:时钟信号lclk的频率的1/4作为时钟信号hsi_bk_clk的频率;011:时钟信号lclk的频率的1/6作为时钟信号hsi_bk_clk的频率;100:时钟信号lclk的频率的1/8作为时钟信号hsi_bk_clk的频率;101:时钟信号lclk的频率的1/10作为时钟信号hsi_bk_clk的频率;110:时钟信号lclk的频率的1/12作为时钟信号hsi_bk_clk的频率。
[0054]
bit8lsi_bk_on使能lsi备用时钟,该备用时钟由lclk产生。
[0055]
0:未启用lclk产生lsi备用时钟;1:启用lclk产生lsi备用时钟。
[0056]
bit11:9lsi_div1_by_lclk[2:0]lsi备用时钟分频系数(为第一级分频系数)。
[0057]
000:时钟信号lclk的频率的1/2作为时钟信号lsi_div1_by_lclk的频率;001:时钟信号lclk的频率的1/4作为时钟信号lsi_div1_by_lclk的频率;010:时钟信号lclk的频率的1/8作为时钟信号lsi_div1_by_lclk的频率;011:时钟信号lclk的频率的1/16作为时钟信号lsi_div1_by_lclk的频率;100:时钟信号lclk的频率的1/32作为时钟信号lsi_div1_by_lclk的频率;101:时钟信号lclk的频率的1/64作为时钟信号lsi_div1_by_lclk的频率;110:时钟信号lclk的频率的1/128作为时钟信号lsi_div1_by_lclk的频率;111:时钟信号lclk的频率的1/256作为时钟信号lsi_div1_by_lclk的频率。
[0058]
bit15:12lsi_div2_by_lclk[3:0]lsi备用时钟分频系数(为第二级分频系数)。
[0059]
0000:时钟信号lsi_div1_by_lclk的频率作为时钟信号lsi_bk_clk的频率;0001:时钟信号lsi_div1_by_lclk的频率的1/2作为时钟信号lsi_bk_clk的频率;0010:时钟信号lsi_div1_by_lclk的频率的1/4作为时钟信号lsi_bk_clk的频率;0011:时钟信号lsi_div1_by_lclk的频率的1/6作为时钟信号lsi_bk_clk的频率;
0100:时钟信号lsi_div1_by_lclk的频率的1/8作为时钟信号lsi_bk_clk的频率;0101:时钟信号lsi_div1_by_lclk的频率的1/10作为时钟信号lsi_bk_clk的频率;0110:时钟信号lsi_div1_by_lclk的频率的1/12作为时钟信号lsi_bk_clk的频率;0111:时钟信号lsi_div1_by_lclk的频率的1/14作为时钟信号lsi_bk_clk的频率;1000:时钟信号lsi_div1_by_lclk的频率的1/16作为时钟信号lsi_bk_clk的频率;1001:时钟信号lsi_div1_by_lclk的频率的1/18作为时钟信号lsi_bk_clk的频率;1010:时钟信号lsi_div1_by_lclk的频率的1/20作为时钟信号lsi_bk_clk的频率;1011:时钟信号lsi_div1_by_lclk的频率的1/22作为时钟信号lsi_bk_clk的频率;1100:时钟信号lsi_div1_by_lclk的频率的1/24作为时钟信号lsi_bk_clk的频率;1101:时钟信号lsi_div1_by_lclk的频率的1/26作为时钟信号lsi_bk_clk的频率;1110:时钟信号lsi_div1_by_lclk的频率的1/28作为时钟信号lsi_bk_clk的频率;1111:时钟信号lsi_div1_by_lclk的频率的1/30作为时钟信号lsi_bk_clk的频率。
[0060]
bit16pll_bk_on使能pll备用时钟,该备用时钟由lclk产生。
[0061]
0:未启用lclk产生pll备用时钟;1:启用lclk产生pll备用时钟。
[0062]
bit19:17pll_div1_wdg[2:0]pll时钟检测分频系数(为第一级分频系数)。
[0063]
000:时钟信号pll_clk的频率的1/2作为时钟信号pll_div1_wdg的频率;001:时钟信号pll_clk的频率的1/4作为时钟信号pll_div1_wdg的频率;010:时钟信号pll_clk的频率的1/8作为时钟信号pll_div1_wdg的频率;011:时钟信号pll_clk的频率的1/16作为时钟信号pll_div1_wdg的频率;100:时钟信号pll_clk的频率的1/32作为时钟信号pll_div1_wdg的频率;101:时钟信号pll_clk的频率的1/64作为时钟信号pll_div1_wdg的频率;110:时钟信号pll_clk的频率的1/128作为时钟信号pll_div1_wdg的频率;111:时钟信号pll_clk的频率的1/256作为时钟信号pll_div1_wdg的频率。
[0064]
bit23:20pll_div2_wdg[3:0]pll时钟检测分频系数(为第二级分频系数);0000:时钟信号pll_div1_wdg的频率作为pll时钟检测信号pll_wdg_clk的频率;0001:时钟信号pll_div1_wdg的频率的1/2作为pll时钟检测信号pll_wdg_clk的频率;0010:时钟信号pll_div1_wdg的频率的1/4作为pll时钟检测信号pll_wdg_clk的频
率;0011:时钟信号pll_div1_wdg的频率的1/6作为pll时钟检测信号pll_wdg_clk的频率;0100:时钟信号pll_div1_wdg的频率的1/8作为pll时钟检测信号pll_wdg_clk的频率;0101:时钟信号pll_div1_wdg的频率的1/10作为pll时钟检测信号pll_wdg_clk的频率;0110:时钟信号pll_div1_wdg的频率的1/12作为pll时钟检测信号pll_wdg_clk的频率;0111:时钟信号pll_div1_wdg的频率的1/14作为pll时钟检测信号pll_wdg_clk的频率;1000:时钟信号pll_div1_wdg的频率的1/16作为pll时钟检测信号pll_wdg_clk的频率;1001:时钟信号pll_div1_wdg的频率的1/18作为pll时钟检测信号pll_wdg_clk的频率;1010:时钟信号pll_div1_wdg的频率的1/20作为pll时钟检测信号pll_wdg_clk的频率;1011:时钟信号pll_div1_wdg的频率的1/22作为pll时钟检测信号pll_wdg_clk的频率;1100:时钟信号pll_div1_wdg的频率的1/24作为pll时钟检测信号pll_wdg_clk的频率;1101:时钟信号pll_div1_wdg的频率的1/26作为pll时钟检测信号pll_wdg_clk的频率;1110:时钟信号pll_div1_wdg的频率的1/28作为pll时钟检测信号pll_wdg_clk的频率;1111:时钟信号pll_div1_wdg的频率的1/30作为pll时钟检测信号pll_wdg_clk的频率。
[0065]
bit24reserved。
[0066]
bit27:25hsi_div1_wdg[2:0]hsi时钟检测分频系数(为第一级分频系数)。
[0067]
000:hsi时钟信号的频率的1/2作为时钟信号hsi_div1_wdg的频率;001:hsi时钟信号的频率的1/4作为时钟信号hsi_div1_wdg的频率;010:hsi时钟信号的频率的1/8作为时钟信号hsi_div1_wdg的频率;011:hsi时钟信号的频率的1/16作为时钟信号hsi_div1_wdg的频率;100:hsi时钟信号的频率的1/32作为时钟信号hsi_div1_wdg的频率;101:hsi时钟信号的频率的1/64作为时钟信号hsi_div1_wdg的频率;110:hsi时钟信号的频率的1/128作为时钟信号hsi_div1_wdg的频率;111:hsi时钟信号的频率的1/256作为时钟信号hsi_div1_wdg的频率。
[0068]
bit31:28hsi_div2_wdg[3:0]hsi时钟检测分频系数(为第二级分频系数)。
[0069]
0000:时钟信号hsi_div1_wdg的频率作为hsi时钟检测信号hsi_wdg_clk的频率;0001:时钟信号hsi_div1_wdg的频率的1/2作为hsi时钟检测信号hsi_wdg_clk的频率;0010:时钟信号hsi_div1_wdg的频率的1/4作为hsi时钟检测信号hsi_wdg_clk的频率;
0011:时钟信号hsi_div1_wdg的频率的1/6作为hsi时钟检测信号hsi_wdg_clk的频率;0100:时钟信号hsi_div1_wdg的频率的1/8作为hsi时钟检测信号hsi_wdg_clk的频率;0101:时钟信号hsi_div1_wdg的频率的1/10作为hsi时钟检测信号hsi_wdg_clk的频率;0110:时钟信号hsi_div1_wdg的频率的1/12作为hsi时钟检测信号hsi_wdg_clk的频率;0111:时钟信号hsi_div1_wdg的频率的1/14作为hsi时钟检测信号hsi_wdg_clk的频率;1000:时钟信号hsi_div1_wdg的频率的1/16作为hsi时钟检测信号hsi_wdg_clk的频率;1001:时钟信号hsi_div1_wdg的频率的1/18作为hsi时钟检测信号hsi_wdg_clk的频率;1010:时钟信号hsi_div1_wdg的频率的1/20作为hsi时钟检测信号hsi_wdg_clk的频率;1011:时钟信号hsi_div1_wdg的频率的1/22作为hsi时钟检测信号hsi_wdg_clk的频率;1100:时钟信号hsi_div1_wdg的频率的1/24作为hsi时钟检测信号hsi_wdg_clk的频率;1101:时钟信号hsi_div1_wdg的频率的1/26作为hsi时钟检测信号hsi_wdg_clk的频率;1110:时钟信号hsi_div1_wdg的频率的1/28作为hsi时钟检测信号hsi_wdg_clk的频率;1111:时钟信号hsi_div1_wdg的频率的1/30作为hsi时钟检测信号hsi_wdg_clk的频率。
[0070]
如图4至图7所示的芯片时钟系统的运行方法,用于上述芯片时钟系统,该芯片时钟系统中的备用高速时钟是正常(未出现故障)。在备用高速时钟正常的前提下,芯片时钟系统的运行方法包括如下步骤:步骤一、系统上电且默认启动备用高速时钟,将备用高速时钟输出的时钟信号作为系统时钟,然后执行步骤二。
[0071]
步骤二、判断备用时钟准备就绪信号lclk_rdy是否等于1,如果是,则执行步骤三,否则继续执行步骤二。
[0072]
步骤三、内核配置时钟模块寄存器及备用时钟寄存器,初始化检测各个时钟,然后执行步骤四。
[0073]
步骤四、判断是否某些时钟出现故障(即不可正常启动或者运行,比如时钟不能正常ready、时钟频率误差不满足spec等),如果是,则执行步骤八,否则(即所有时钟均未出现故障时)执行步骤五。
[0074]
步骤五、停止使用备用高速时钟,切换使用lse时钟1、hse时钟2、lsi时钟3、hsi时
钟4和pll时钟9,然后执行步骤六。
[0075]
步骤六、实时检测各个时钟,然后执行步骤七。
[0076]
实时检测各个时钟的原理同软件看门狗类似。
[0077]
如图5所示,实时检测lsi时钟3是否出现故障的方式包括:第一步、内核配置备用时钟寄存器,产生用于软件喂狗的lsi时钟检测信号lsi_wdg_clk,并周期性读取时钟模块寄存器的值,然后执行第二步。
[0078]
第二步、判断是否能正常喂狗且递减计数器的计数范围在正常范围内,如果是,则执行第三步,否则执行第四步。
[0079]
第三步、判定lsi时钟3正常,然后结束。
[0080]
第四步、判定lsi时钟3出现故障,然后结束。
[0081]
如图6所示,实时检测hsi时钟4是否出现故障的方式包括:第一步、内核配置备用时钟寄存器,产生用于软件喂狗的hsi时钟检测信号hsi_wdg_clk,并周期性读取时钟模块寄存器的值,然后执行第二步。
[0082]
第二步、判断是否能正常喂狗且递减计数器的计数范围在正常范围内,如果是,则表示执行第三步,否则执行第四步。
[0083]
第三步、判定hsi时钟4正常,然后结束。
[0084]
第四步、判定hsi时钟4出现故障,然后结束。
[0085]
如图7所示,实时检测pll时钟9是否出现故障的方式包括:第一步、内核配置备用时钟寄存器,产生用于软件喂狗的pll时钟检测信号pll_wdg_clk,并周期性读取时钟模块寄存器的值,然后执行第二步。
[0086]
第二步、判断是否能正常喂狗且递减计数器的计数范围在正常范围内,如果是,则执行第三步,否则执行第四步。
[0087]
第三步、判定pll时钟9正常,然后结束。
[0088]
第四步、判定pll时钟9出现故障,然后结束。
[0089]
另外,hse时钟的故障判断方式与现有技术相同,lse时钟的故障判断方式与现有技术相同。
[0090]
步骤七、判断是否某些时钟出现故障(比如时钟频率误差不满足spec等),如果是,则执行步骤八,否则(即所有时钟均未出现故障时)返回执行步骤六。
[0091]
步骤八、使用备用时钟策略,然后结束。其中,使用备用时钟策略的具体方式为:若lse时钟1出现故障,lsi时钟3正常,则内核配置时钟模块寄存器,使低速时钟切换使能信号lsecsson为高电平(即置1),停止使用lse时钟1,切换使用lsi时钟3。
[0092]
若lse时钟1、lsi时钟3都出现故障,则内核配置时钟模块寄存器和备用时钟寄存器,使低速时钟切换使能信号lsecsson为高电平,使lsi备用时钟使能信号lsi_bk_on为高电平(即置1),停止使用lse时钟1和lsi时钟3,切换使用(由备用高速时钟分频而得的)lsi备用时钟(对应于时钟信号lsi_bk_clk)。
[0093]
若hse时钟2出现故障,hsi时钟4正常,则内核配置时钟模块寄存器,使高速时钟切换使能信号hsecsson为高电平(即置1),停止使用hse时钟2,切换使用hsi时钟4。
[0094]
若hse时钟2、hsi时钟4都出现故障,则内核配置时钟模块寄存器和备用时钟寄存器,使高速时钟切换使能信号hsecsson为高电平,使hsi备用时钟使能信号hsi_bk_on为高
电平(即置1),停止使用hse时钟2和hsi时钟4,切换使用(由备用高速时钟分频而得的)hsi备用时钟(对应于时钟信号hsi_bk_clk)。
[0095]
若lsi时钟3出现故障,则内核配置备用时钟寄存器,使lsi备用时钟使能信号lsi_bk_on为高电平,停止使用lsi时钟3,切换使用(由备用高速时钟分频而得的)lsi备用时钟(对应于时钟信号lsi_bk_clk)。
[0096]
若hsi时钟4出现故障,则内核配置备用时钟寄存器,使hsi备用时钟使能信号hsi_bk_on为高电平,停止使用hsi时钟4,切换使用(由备用高速时钟分频而得的)hsi备用时钟(对应于时钟信号hsi_bk_clk)。
[0097]
若pll时钟9出现故障,则内核配置备用时钟寄存器,使pll备用时钟使能信号pll_bk_on为高电平(即置1),停止使用pll时钟9,切换使用(由备用高速时钟提供的)pll备用时钟(对应于时钟信号pll_bk_clk)。
[0098]
实施例2:本实施例中的芯片时钟系统的大部分结构和运行方法与实施例1相同,不同之处仅在于:备用高速时钟10包括有源晶振和一个io pad模块,有源晶振的输出端通过io pad模块接计数器13的输入端、hsi备用时钟分频器14的输入端、lsi备用时钟第一级分频器19的输入端和第四选择器8的第四输入端。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1