首页> 中国专利> 对多个时钟源的时钟频率进行监测的方法

对多个时钟源的时钟频率进行监测的方法

摘要

本发明公开了一种对多个时钟源的时钟频率进行监测的方法,用enable记录时钟的检测使能,当enable[i]的值为1时,对clk[i]进行检测;当enable[i]的值从0跳变到1时,记录第一仿真时间;当enable[i]的值从1跳变到0时,记录第二仿真时间;在enable[i]的值为1期间,以clk[i]的上升沿跳变或下降沿跳变触发计数,计数值为clk_cnt[i];在每次enable[i]的值从1跳变到0时,计算出enable[i]的值为1期间的时钟平均周期T_aver[i];然后将clk_cnt[i]清0,将时钟平均周期T_aver[i]与clk[i]的理论周期值T[i]进行比较,若偏差超过冗余度,即产生第一报错信号。本发明能够实时监测多个时钟源的多种分频的时钟频率。

著录项

  • 公开/公告号CN103777072A

    专利类型发明专利

  • 公开/公告日2014-05-07

    原文格式PDF

  • 申请/专利权人 上海华虹集成电路有限责任公司;

    申请/专利号CN201210410208.1

  • 发明设计人 王静;

    申请日2012-10-24

  • 分类号G01R23/02(20060101);

  • 代理机构31211 上海浦一知识产权代理有限公司;

  • 代理人戴广志

  • 地址 201203 上海市浦东新区碧波路572弄39号

  • 入库时间 2024-02-19 23:45:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-07-04

    授权

    授权

  • 2015-04-29

    实质审查的生效 IPC(主分类):G01R23/02 申请日:20121024

    实质审查的生效

  • 2014-05-07

    公开

    公开

说明书

技术领域

本发明涉及芯片的功能验证领域,特别是涉及一种对多个时钟源的时 钟频率进行监测的方法。

背景技术

时钟在系统中有非常重要的地位。时钟信号用于给处理器提供执行标 准,比如时钟信号每一次高电平或低电平的时候,CPU进行一次运算。当出 现时钟信号丢失或频率不稳定情况,可能造成处理器错误或误操作。时钟 信号还可以作为同步信号,对其他模块的行为进行驱动。时钟系统的工作 稳定与否,它所产生的同步信号的好坏在很大程度上决定了其他模块的运 行稳定程度。以计时器模块为例,该模块就是以时钟信号的上升沿或下降 沿来作为触发条件进行计时,如果时钟频率不正确,占空比不对或者不稳 定,就导致计时不正确,提前或者推迟产生中断。如果时钟信号没有产生, 该模块甚至无法工作。随着芯片的应用环境越来越多样化,芯片的设计越 来越复杂,时钟系统的设计也越来越复杂。保证多个时钟系统的时钟信号 频率正确性和稳定性对于保证整个芯片的功能及性能尤其重要。

传统的时钟频率监测方法多数只能检测某个固定频率的时钟信号,对 于多个时钟源的系统无法实现实时频率监测。

发明内容

本发明要解决的技术问题是提供一种对多个时钟源的时钟频率进行监 测的方法,不仅能够实时监测多个时钟源的多种分频的时钟频率,并且能 够对时钟频率切换过程中的不稳定性进行监测报警。

为解决上述技术问题,本发明的对多个时钟源的时钟频率进行监测的 方法,包括如下步骤:

步骤1,将寄存器记为enable,其中enable[i]表示第i个寄存器; 将时钟信号记为clk,其中clk[i]为第i个时钟信号;用enable记录时 钟的检测使能;

当enable[i]的值为1时,对clk[i]进行检测;当enable[i]的值从0 跳变到1时,用硬件描述语言的系统函数$realtime记录第一仿真时间 t_en1;当enable[i]的值从1跳变到0时,用硬件描述语言的系统函数 $realtime记录第二仿真时间t_en2;在enable[i]的值为1期间,以clk[i] 的上升沿跳变或下降沿跳变触发计数器进行计数,计数值为clk_cnt[i]; 在每次enable[i]的值从1跳变到0时,计算出enable[i]的值为1期间的 时钟平均周期T_aver[i],即

T_aver[i]=(t_en2-t_en1)/clk_cnt[i];

然后将clk_cnt[i]清0,将时钟平均周期T_aver[i]与clk[i]的理论 周期值T[i]进行比较,若偏差超过冗余度,即产生第一报错信号;

步骤2,在enable[i]的值为1期间,在clk[i]的每次上升沿记录下对 应的时间,记为t1,在clk[i]的每次下降沿记录下对应的时间,记为t2; 在每次clk[i]的上升沿跳变或下降沿跳变时,计算出相邻两次上升沿或下 降沿的时间之差,即为该被测时钟周期T_inst[i],并与clk[i]的理论周 期值T[i]进行比较,若偏差超过冗余度,即产生第二报错信号;

在每次clk[i]的下降沿跳变时,记录下此次下降沿跳变与上升沿跳变 的时间差,即为时钟的高电平时间T_pulse;将每个周期的高电平时间除以 时钟周期,即T_pulse/T_inst,计算出时钟的占空比;将时钟的占空比与 其理论值进行比较,若偏差超过冗余度,即产生第三报错信号;

步骤3,设时钟变频后不稳定期的理论时间为T_uns;选取一个合适的 采样时间,记为t_sample,从变频使能(enable=0)开始,在每个t_sample 时间内,以被测时钟的上升沿或下降沿为触发条件进行计数,当连续两次 相邻采样时间内的计数值的误差在一定范围内,即可认为时钟频率已经稳 定,enable置为1;从变频使能到时钟频率稳定的这段时间即为等待时间 T_delay;若T_delay超过变频后不稳定期的理论时间T_uns的冗余范围或 者时钟频率一直不能稳定,即产生第四报错信号;

i为大于等于零的整数。

所述对多个时钟源的时钟频率进行监测的方法,采用的第二种技术方 案是:将寄存器记为enable,其中enable[i]表示第i个寄存器;将时钟 信号记为clk,其中clk[i]为第i个时钟信号;用enable记录时钟的检 测使能;

当enable[i]的值为1时,对clk[i]进行检测;当enable[i]的值从0 跳变到1时,用硬件描述语言的系统函数$realtime记录第一仿真时间 t_en1;当enable[i]的值从1跳变到0时,用硬件描述语言的系统函数 $realtime记录第二仿真时间t_en2;在enable[i]的值为1期间,以clk[i] 的上升沿跳变或下降沿跳变触发计数器进行计数,计数值为clk_cnt[i]; 在每次enable[i]的值从1跳变到0时,计算出enable[i]的值为1期间的 时钟平均周期T_aver[i],即

T_aver[i]=(t_en2-t_en1)/clk_cnt[i];

然后将clk_cnt[i]清0,将时钟平均周期T_aver[i]与clk[i]的理论 周期值T[i]进行比较,若偏差超过冗余度,即产生第一报错信号;

i为大于等于零的整数。

所述对多个时钟源的时钟频率进行监测的方法,采用的第三种技术方 案是:将寄存器记为enable,其中enable[i]表示第i个寄存器;将时钟 信号记为clk,其中clk[i]为第i个时钟信号;用enable记录时钟的检 测使能;

在enable[i]的值为1期间,在clk[i]的每次上升沿记录下对应的时 间,记为t1,在clk[i]的每次下降沿记录下对应的时间,记为t2;在每次 clk[i]的上升沿跳变或下降沿跳变时,计算出相邻两次上升沿或下降沿的 时间之差,即为该被测时钟周期T_inst[i],并与clk[i]的理论周期值T[i] 进行比较,若偏差超过冗余度,即产生第二报错信号;

在每次clk[i]的下降沿跳变时,记录下此次下降沿跳变与上升沿跳变 的时间差,即为时钟的高电平时间T_pulse;将每个时钟周期的高电平时间 除以时钟周期,即T_pulse/T_inst,计算出时钟的占空比;将时钟的占空 比与其理论值进行比较,若偏差超过冗余度,即产生第三报错信号;

i为大于等于零的整数。

所述对多个时钟源的时钟频率进行监测的方法,采用的第四种技术方 案是:将寄存器记为enable,其中enable[i]表示第i个寄存器;将时钟 信号记为clk,其中clk[i]为第i个时钟信号;i为大于等于零的整数; 用enable记录时钟的检测使能;

设时钟变频后不稳定期的理论时间为T_uns;选取一个采样时间,记为 t_sample;从变频使能即enable=0开始,在每个t_sample时间内,以被 测时钟的上升沿或下降沿为触发条件进行计数,当连续两次相邻采样时间 内的计数值的误差在设定的范围内,即可认为时钟频率已经稳定,将enable 置为1;从变频使能到时钟频率稳定的这段时间即为等待时间T_delay;若 T_delay超过T_uns的冗余度或者时钟频率一直不能稳定,即产生第四报错 信号。

本发明基于时钟信号的周期性,利用硬件描述语言的系统函数 $realtime对仿真时间进行记录;可以实现对多个时钟源中的不同时钟信号 的频率进行实时监测,即能够实时监测多个时钟源中的多种分频的时钟信 号的频率;可以对频率受不同因素影响的多个时钟信号同时进行实时监测, 并实时打印出错误的信息,以保证时钟模块的功能及性能的正确性。

本发明可以对需要检测的时钟信号数量进行调整,以适应不同的多时 钟源系统,使用灵活。

本发明不仅可以监测时钟信号的某一个周期是否正确,还利用被测时 钟信号作为触发条件进行计数,可以对一段时间内时钟信号的周期平均值 进行判断。

本发明可以根据被测时钟信号精度的不同要求,加入冗余值,对理论 值进行放宽。

本发明可以验证时钟信号的频率是否正确,可以对时钟信号的高电平 时间和低电平时间进行记录,实时监测被测时钟信号的占空比的改变,实 时监测时钟信号频率切换过程中的不稳定性并报警。

附图说明

下面结合附图与具体实施方式对本发明作进一步详细的说明:

图1是所述对多个时钟源的时钟频率进行监测的方法流程图;

图2是对两个时钟源的时钟周期进行监测的波形图;

图3是时钟频率切换后的不稳定性检测示意图。

具体实施方式

所述对多个时钟源的时钟频率进行监测的方法控制流程如图1所示。

将寄存器记为enable,其中enable[i]表示第i个寄存器;将时钟信 号记为clk,其中clk[i]第i个时钟信号;i为大于等于零的整数;用enable 记录时钟的检测使能。由于引入了一个纪录时钟的检测使能的寄存器 enable,可以实现同时对多个时钟信号的频率进行监测,enable的位数可 以根据实际的系统所需要检测的时钟信号的个数进行调整。

当enable[i]的值为1时,对clk[i]进行检测;当enable[i]的值从0 跳变到1时,用硬件描述语言的系统函数$realtime记录第一仿真时间 t_en1;当enable[i]的值从1跳变到0时,用硬件描述语言的系统函数 $realtime记录第二仿真时间t_en2。在enable[i]的值为1期间,以clk[i] 的上升沿跳变或下降沿跳变触发计数器进行计数,计数值为clk_cnt[i]。 在每次enable[i]的值从1跳变到0时,计算出enable[i]的值为1期间的 时钟平均周期T_aver[i],即

T_aver[i]=(t_en2-t_en1)/clk_cnt[i]。

然后将clk_cnt[i]清0,将时钟平均周期T_aver[i]与clk[i]的理论 周期值T[i]进行比较,若偏差超过冗余度,即产生第一报错信号err1。

在enable[i]的值为1期间,在clk[i]的每次上升沿记录下对应的时 间,记为t1。在clk[i]的每次下降沿记录下对应的时间,记为t2。在每次 clk[i]的上升沿跳变或下降沿跳变时,计算出相邻两次上升沿或下降沿的 时间之差,即为该被测时钟周期T_inst[i],并与clk[i]的理论周期值T[i] 进行比较,若偏差超过冗余度,即产生第二报错信号err2。

在每次clk[i]的下降沿跳变时,记录下此次下降沿跳变与上升沿跳变 的时间差,即为时钟的高电平时间T_pulse。对低电平的时间的检测同理, 即记录下下一个周期的时钟的上升沿跳变与本次周期的下降沿跳变时间 差,即为时钟的低电平时间。将每个周期的高电平时间除以时钟周期,即 T_pulse/T_inst,计算出时钟的占空比;将时钟的占空比与其理论值进行 比较,若偏差超过冗余度,即产生第三报错信号err3。

将多个时钟的检测使能分别记录到enable的对应的bit(位);当任何 一个影响频率改变的因素跳变时,将enable的相应位先置为0,经过一段 等待时间T_delay,待时钟频率稳定后,再将enable置为1,并将时钟周 期和占空比的理论值记录到数组中,作为比对的标准。

由于组合逻辑的时沿等因素的影响,时钟变频后会有段时间为不稳定 期,设时钟变频后不稳定期的理论时间为T_uns。选取一个合适的采样时间, 记为t_sample,从变频使能(enable=0)开始,在每个t_sample时间内, 以被测时钟的上升沿或下降沿为触发条件进行计数,当连续两次相邻采样 时间内的计数值的误差在一定范围内,即可认为时钟频率已经稳定,enable 置为1。从变频使能到时钟频率稳定的这段时间即为等待时间T_delay;若 T_delay超过变频后不稳定期的理论时间T_uns的冗余范围或者时钟频率一 直不能稳定,即产生第四报错信号err4。

当频率切换后,第n-1次采样的计数值与第n次采样的计数值超过误 差范围,而第n+1次和第n次计数值在误差范围内,第n+2次和第n+1次 计数值在误差范围内,则时钟变频后不稳定期的理论时间T_uns应为 (n-1)*t_sample,其中,*表示乘号,n为正整数。

以上每种报错信号产生时,都打印输出报错信号,记录错误类型,错 误的时钟信号,理论和实际测得的周期或占空比。

对于每一个被检测时钟,上述所述的冗余度均独立设置。

在一个多个时钟源系统中,影响频率改变的因素包括时钟源的切换, 时钟信号的开关,分频系数的改变,功耗模式的改变等等。

采样时间t_sample的选取以理论时间T_uns作为参考,根据不同时钟 信号的精度的不同要求,适当选取。

结合图2所示,在本实施例中以应用于非接触式的智能卡为例,列举 了对两个时钟源的时钟周期进行监测的流程。影响时钟频率的因素有电源 供应模式,分频系数。时钟源有两种,一种是内部振荡器(OSC)的时钟信 号clk_osc,另一种是非接触接口接收到的信号解调出的时钟信号clk_cl。

下表是各种因素条件下,时钟信号频率的理论值。clk[0]的时钟源是 clk_osc,频率受分频系数clk_sel的影响,clk_osc为30M;clk[1]的时 钟源是clk_cl,频率同clk_cl,只有当功耗选择模式信号power_avail为 1时,clk_cl有时钟信号。

clk_sel clk[0]时钟频率 0 fosc1 fosc/2 2 fosc/4

当分频系数clk_sel改变时,enable[0]置为0,计数器clk_cnt清0。经 过一段等待时间T_delay后,enable[0]置为1;用硬件描述语言的系统函数 $realtime记录此时的仿真时间为t_en1,以clk[0]的上升沿触发计数器 clk_cnt计数,记录此时的时钟信号的理论周期为1/(fosc/2)。当下次分 频系数clk_sel改变时,将enable[0]置为0,此时,仿真时间为t_en2,计 数器clk_cnt的计数值为n,计算得到时钟信号的平均周期值 T_aver=(t_en2-t_en1)/n,并将其与理论周期值[1/(fosc/2)±2]比较, 冗余值为2ns,如不在范围内,产生第一报错信号err1,用硬件描述语言的 系统函数$display打印出报错信息。

在enable[0]为1期间,在clk[0]的每次上升沿记录下对应的时间t1, 下降沿记录下对应的时间t2;在每次clk[0]的上升沿时,计算clk[0]的周 期T_inst[0]=t2-t1,并与理论周期值[1/(fosc/2)±2]比较,若不在范 围内,即产生第二报错信号err2。计算时钟信号的高电平时间 T_pulse[0]=t3-t1,在每次clk[0]的上升沿时,计算出时钟的占空比 T_pulse[0]/T_inst[0],并将其与理论值(50%±2%)进行比较,偏差超过冗 余度,即产生第三报错信号err3,并打印具体报错信息。

当功耗选择模式信号power_avail变化时,enable[1]随之变化。同样 按以上方法进行clk[1]的时钟频率检测。clk[0]和clk[1]的检测独立进行, 互相不影响。

结合图3所示,时钟信号的频率稳定性检测过程如下:

当分频系数clk_sel改变时,enable先置为1;从这一时刻开始以采样 时间t_sample对时钟信号clk进行计数。在第一个采样时间t_sample内,计 数值为1;在第二个采样时间t_sample内,计数值为2,与第一个采样时间 t_sample的计数差为1;在第三个采样时间t_sample内,计数值为3,与第 二个采样时间t_sample的计数差为1,时钟频率不稳定;在第四个采样时间 t_sample内,计数值为2;在第五个采样时间t_sample内,计数值为2,与 第四个采样时间t_sample的计数差为0;但是在第六个采样时间t_sample 内,计数值为3,与第五个采样时间t_sample的计数差为1,时钟信号clk的 频率在第四个采样时间t_sample后还是没有稳定下来。直到第五个采样时 间t_sample后,第六次与第五次计数差为0,第八次与第七次计数差也为0, 有连续两次计数差都在误差范围内(由于计数值太少,冗余为0),则第五次 采样之后,时钟信号的频率即稳定了下来。等待时间T_delay时间为 5*t_sample(“*”表示乘号),enable置为1。如果等待时间T_delay超过变 频后不稳定期的理论时间T_uns的冗余范围,则产生第四报错信号err4。如 果计数误差一直不能稳定,则时钟信号的频率一直不稳定,也同样产生第 四报错信号err4。打印出具体的测量时间,报错的时间点等信息。

由以上例子可知,本发明的方法可以对不同源的系统中,频率受不同 因素影响的时钟信号同时进行监测,并实时打印出错误的信息。对时钟切 换过程中的不稳定性也能定性分析。对于在复杂应用场景下的系统的时钟 模块的功能性能起到很好的监测作用,并且打印的信息比较具体,便于定 位问题所在。以上所述仅为本发明的具体实施方式,本发明保护范围并不 局限于此。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号