专利名称:一种时钟同步的方法和装置的制作方法
技术领域:
本发明涉及数码硬件技术领域,特别涉及一种时钟同步的方法和装置。
背景技术:
数码设备的各项操作,例如信令以及数据传递,通常是按照一定的时钟频率进行的。数码设备本身生成一个时钟信号,称为源时钟信号,该设备进行某项操作,例如信令传递,所需的时钟频率可能与源时钟频率不同,因此需要根据源时钟信号生成一个本地时钟信号。
如图1所示,用于生成与源时钟信号同步的本地时钟信号的时钟生成装置包括时钟控制模块110和时钟分频器120。时钟控制模块110接收源时钟信号,根据所接收的源时钟信号,以及预先设置的本地时钟的理论频率值,计算当前源时钟信号与本地时钟信号理论值之商,从而得到分频因子。时钟控制模块110将所述分频因子发送至时钟分频器120。时钟分频器120根据所收到的分频因子,用分频因子对源时钟信号进行分频,得到本地时钟信号。
在两个或两个以上的数码设备相互连接,进行数据或信令的交互时,常常会涉及到进行数据或信令交互的双方数码设备之间的时钟同步的问题。由于两个设备各自具有源时钟信号,为了保证交互的正确性,进行该项交互所需的本地时钟信号需要与这两个设备的源时钟信号分别保持同步。如图2所示,设备1和设备2之间进行信令交互。由于这两个设备的源时钟信号,即源时钟1和源时钟2之间没有相关性,如果依照源时钟1生成本地时钟,则本地时钟信号会与源时钟2可能无法保持时间同步,导致设备1和设备2之间的信令交互出错;根据源时钟2生成本地时钟同样会造成上述问题。
目前还没有可靠的方案可以得到同时与源时钟1和源时钟2保持同步的本地时钟信号。
发明内容
有鉴于此,本发明实施例提出一种时钟同步的方法和装置,可以生成与两个源时钟都保持时间同步的本地时钟信号。所述方法包括如下步骤计算源时钟1的理论周期T1和源时钟2的理论周期T2的公倍数T_c,并计算源时钟1和源时钟2的相对误差k;根据源时钟1的理论频率与所要生成的本地时钟的理论频率的比值,确定两个分频因子a1和a2;利用两个分频因子a1和a2将源时钟1分频分别得到周期为T1×a1和T2×a2的时钟,根据分频因子及相对误差k计算在T_c时间内包含的周期为T1×a1的时钟个数m和周期为T1×a2的时钟个数n;将m个周期为T1×a1的时钟和n个周期为T1×a2的时钟混合在一起,作为T_c时间的本地时钟。
所述计算源时钟1和源时钟2的相对误差k包括同时对源时钟1和源时钟2的实际周期进行计数,当对源时钟2实际周期的计数达到T_c/T2时,记录此时对源时钟1实际周期的计数为k1;计算源时钟1和时钟2的相对误差为k=k1-T_c/T1。
所述T_c为T1和T2的最小公倍数。
所述计算分频因子a1和a2包括计算源时钟1的理论频率值与本地时钟的理论频率值之商,将与所得结果进行四舍五入取整,如果是四舍得到了a1,则a2=a1+1;如果是五入得到了a1,则a2=a1-1。
所述计算时钟个数m和n包括根据已经求得的源时钟1和源时钟2的相对误差k以及分频因子a1和a2,列出方程组a1×m+a2×n=T_c/T1+k,m+n=T_c/T_local;
求解所述方程组得到待定系数m和n。
所述将m个周期为T1×a1的时钟和n个周期为T1×a2的时钟混合在一起,作为T_c时间的本地时钟包括计算所述系数m和n的商,得到变量q=m/n,令变量n’=n;将变量n’减1,判断n’是否为1,若是,则生成q个周期为T1×a1的时钟信号,生成1个周期为T1×a2的时钟信号,并转至所述将变量n’减1的步骤;否则,转至所述生成本地时钟信号的步骤。
所述时钟同步装置,包括用于接收源时钟信号的时钟控制模块和用于输出本地时钟信号的时钟分频器,所述时钟控制模块包括相对误差计算单元,用于接收源时钟1和源时钟2的信号,并计算源时钟1和源时钟2的相对误差,将所得相对误差输出至分频因子计算单元以及时钟分频器;分频因子计算单元,用于接收源时钟1和源时钟2的信号,根据来自相对误差计算单元的相对误差以及源时钟1和源时钟2的信号计算分频因子a1和a2;并将所述分频因子a1和a2发送至时钟分频器;所述时钟分频器包括变量计算单元,用于接收相对误差以及分频因子,计算用于生成本地时钟信号所需的中间变量q,向分频单元输出分频因子以及变量q;分频单元,用于根据所收到的源时钟1的信号、分频因子以及变量q,生成本地时钟信号并输出。
所述变量计算单元进一步计算递减变量m’和/或n’;所述变量计算单元进一步包括更新判断单元,用于根据所述变量计算单元所得的递减变量判断是否应当重新计算相对误差,若是则通知时钟控制模块更新相对误差。
从以上技术方案可以看出,本发明方案中计算两个源时钟信号的相对误差,再根据相对误差生成本地时钟信号,这样就可以使所生成的本地时钟信号与两个源时钟信号都建立时间同步的关系。
图1为现有技术中的时钟生成装置结构示意图;图2为根据两个源时钟信号生成本地时钟信号的时钟同步装置示意图;图3为本发明实施例计算两个源时钟相对误差的流程图;图4为本发明实施例生成本地时钟信号的流程图;图5为本发明实施例的时钟同步装置示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细阐述。
本发明实施例的方案是根据源时钟1分频得到本地时钟,并使分频得到的本地时钟与源时钟2同步。用fs1、fs2、fs_local分别表示源时钟1、源时钟2和本地时钟的频率,而它们的周期分别表示为T1、T2和T_local,以上各量的理论值均为已知。
本发明实施例的方案主要包括如下基本步骤根据源时钟1的理论频率与所要生成的本地时钟的理论频率的比值,确定两个分频因子a1和a2;计算源时钟1的理论周期T1和源时钟2的理论周期T2的公倍数T_c,并计算源时钟1和源时钟2的相对误差k;利用两个分频因子a1和a2将源时钟1分频分别得到周期为T1×a1和T2×a2的时钟,根据分频因子及相对误差k计算在T_c时间内包含的周期为T1×a1的时钟个数m和周期为T1×a2的时钟个数n;将m个周期为T1×a1的时钟和n个周期为T1×a2的时钟混合在一起,作为T_c时间的本地时钟。
由于相对误差是实时变化的,需要每隔一定时间重新计算相对误差,因此需要循环执行上述步骤。
根据源时钟信号1与本地时钟信号的理论值,可以计算分频因子a1和a2。
分频因子a1和a2等于与源时钟1与本地时钟的理论频率值之商fs1/fs_local最接近的整数。也就是说,对fs1/fs_local进行四舍五入取整计算,如果是四舍得到了a1,则a2=a1+1,如果是五入得到了a1,则a2=a1-1。因此,将源时钟1的频率分别除以两个分频因子,得到了实际生成的本地时钟的两个可能的频率值,而这两个本地时钟信号的周期则分别为T1×a1和T2×a2。请注意,本发明实施例中实际生成的本地时钟信号是由两种不同周期的时钟信号混合而成。
所述计算相对误差的流程如图3所示,包括如下步骤步骤301计算源时钟1的周期T1和源时钟2的周期T2的公倍数T_c。较佳的,可以是最小公倍数。对于本发明方案来说,T_c是T1和T2的任意公倍数均可实现发明目的。
步骤302同时对源时钟1和源时钟2的周期进行计数。
步骤303判断对源时钟2的周期计数的数目是否达到T_c/T2,若是则记录当前对源时钟1的周期计数值k1并执行步骤304,否则返回步骤302;步骤304根据当前对源时钟1的周期计数值k1计算源时钟1和源时钟2的相对误差为k=k1-T_c/T1。其中,T_c/T1为对源时钟1的周期计数的理论值。如果源时钟1和源时钟2的实际信号的周期与理论值保持一致,则相对误差k应为0。
假设在T_c时间内实际生成的本地时钟信号中,周期为T1×a1的时钟个数为m,周期为T1×a2的时钟个数为n;同时满足m+n恰好为T_c时间内周期为理论值T_local的时钟的个数,考虑到相对误差k,则得到如下方程组a1×m+a2×n=T_c/T1+k (1)m+n=T_c/T_local (2)根据上述方程组,可以得到待定系数m和n。
举个具体例子,假设fs1=480MHz,fs2=8KHz,我们希望得到一个本地频率为12.288M的时钟。计算fs1/fs_local=480/12.288=39.0625,对该值进行四舍五入运算,得到a1=39,则a2=a1+1=40。
根据以上方法可以得到T_c=1/8ms,并列出方程组39×m+40×n=60000+km+n=1536假设源时钟1和源时钟2的相对误差为1,可以算出m=1439,n=97。
图4示出了将周期为T1×a1的时钟信号和周期为T1×a2的时钟信号混合起来,生成本地时钟信号的过程,包括如下步骤步骤401根据前面所述的方法,计算源时钟1与源时钟2之间的相对误差k,以及系数m和n;步骤402设置两个变量m’,n’,令其初值分别等于m,n;即m’=m,n’=n。
步骤403计算m/n的商,将计算结果存储在变量q中;变量q表示当前变量m’与n’之间的倍数关系;步骤404将变量m’中的值减q,结果仍存在m’中,即m’=m’-q;将变量n’中的值减1,结果仍存在n’中,即n’=n’-1;步骤405判断变量n’是否为1,或者判断m’是否为q,若是,则返回步骤401,否则执行步骤406;步骤406生成q个周期为T1×a1时钟信号;然后生成1个周期为T1×a2时钟信号;这些信号共同组成了本地时钟信号。然后转至步骤403。
循环执行上述步骤,则每隔T_c时间重新计算源时钟1和源时钟2的相对误差k,再根据新计算的相对误差不断生成与源时钟1和源时钟2均保持同步的本地时钟信号T_local。
本发明实施例中用于实现上述方法的时钟同步装置如图5所示,同样包括时钟控制模块110和时钟分频器120。其中,时钟控制模块110包括相对误差计算单元501,用于接收源时钟1和源时钟2的信号,根据来自时钟分频器120的通知计算源时钟1和源时钟2的相对误差,将所得相对误差输出至时钟分频器120;分频因子计算单元502,用于存储预先设置的源时钟1的理论频率值以及所要生成的本地时钟的理论频率值,根据所述理论频率值计算分频因子a1和a2;并将所述分频因子a1和a2发送至时钟分频器120;所述时钟分频器120包括变量计算单元503,用于接收相对误差以及分频因子,根据方程1以及方程2计算周期为T1×a1的时钟个数m以及周期为T1×a2的时钟个数n,并将所述时钟个数m和n发送至时钟混合单元504;时钟混合单元504,用于接收来自变量计算单元所得的m和n,根据m和n得到生成周期为T1×a1以及周期为T1×a2时钟信号的先后顺序,并用所得先后顺序控制分频单元生成相应的时钟信号。所谓先后顺序,指得就是如图4所示流程中,计算中间变量q,生成q个周期为T1×a1的时钟信号,接下来再生成1个周期为T1×a2的时钟信号;接下来再计算变量q,再生成q个周期为T1×a1的时钟信号,接下来再生成1个周期为T1×a2的时钟信号等等。注意其中每次循环q的值会发生变化。这样做的可以使这两种周期的时钟信号可以比较均匀的混合在一起。
时钟混合单元504还可以包括一个更新判断单元,每当分频单元505生成m个周期为T1×a1的时钟信号和n个周期为T1×a2的时钟信号,则通知时钟控制模块110更新相对误差。
分频单元505,用于接收分频因子a1和a2以及源时钟1信号,根据时钟混合单元504的控制信号生成周期为T1×a1的时钟信号或周期为T1×a2的时钟信号,并输出所生成的时钟信号。
作为一种较为简单的情况,即使上述装置中没有时钟混合单元504也可以实现本发明目的。在这种情况下,变量计算单元将m和n直接输出至分频单元505,则分频单元505依次生成m个周期为T1×a1的时钟信号以及周期为T1×a2的时钟信号,完成上述操作后则通知时钟控制模块110更新相对误差。
由于源时钟1与源时钟2并没有实质区别,因此根据上述实施例方案,本领域技术人员可以容易地实现将源时钟2分频得到本地时钟信号,并且该时钟信号与源时钟1保持同步。通过应用本发明实施例方案,可以生成与两个源时钟信号均保持同步的本地时钟信号。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种时钟同步方法,其特征在于,包括如下步骤根据源时钟1的理论频率与所要生成的本地时钟的理论频率的比值,确定两个分频因子a1和a2;计算源时钟1的理论周期T1和源时钟2的理论周期T2的公倍数T_c,并计算源时钟1和源时钟2的相对误差k;利用两个分频因子a1和a2将源时钟1分频分别得到周期为T1×a1和T2×a2的时钟,根据分频因子及相对误差k计算在T_c时间内包含的周期为T1×a1的时钟个数m和周期为T1×a2的时钟个数n;将m个周期为T1×a1的时钟和n个周期为T1×a2的时钟混合在一起,作为T_c时间的本地时钟。
2.根据权利要求1所述的方法,其特征在于,所述计算源时钟1和源时钟2的相对误差k包括同时对源时钟1和源时钟2的实际周期进行计数,当对源时钟2实际周期的计数达到T_c/T2时,记录此时对源时钟1实际周期的计数为k1;计算源时钟1和时钟2的相对误差为k=k1-T_c/T1。
3.根据权利要求2所述的方法,其特征在于,所述T_c为T1和T2的最小公倍数。
4.根据权利要求1所述的方法,其特征在于,所述计算分频因子a1和a2包括计算源时钟1的理论频率值与本地时钟的理论频率值之商,将与所得结果进行四舍五入取整,如果是四舍得到了a1,则a2=a1+1;如果是五入得到了a1,则a2=a1-1。
5.根据权利要求1任一项所述的方法,其特征在于,所述计算时钟个数m和n包括根据已经求得的源时钟1和源时钟2的相对误差k以及分频因子a1和a2,列出方程组a1×m+a2×n=T_c/T1+k,m+n=T_c/T_local;求解所述方程组得到待定系数m和n。
6.根据权利要求1所述的方法,其特征在于,所述将m个周期为T1×a1的时钟和n个周期为T1×a2的时钟混合在一起,作为T_c时间的本地时钟包括设置变量m’=m,n’=n,并计算变量q=m’/n’;将变量n’减1,变量m’减q,判断n’是否为1,若否,则生成q个周期为T1×a1的时钟信号,生成1个周期为T1×a2的时钟信号,并转至所述将变量n’减1的步骤;若是,转至所述计算源时钟1和源时钟2的相对误差的步骤。
7.一种时钟同步装置,包括用于接收源时钟信号的时钟控制模块和用于输出本地时钟信号的时钟分频器,其特征在于,所述时钟控制模块包括相对误差计算单元,用于接收源时钟1和源时钟2的信号,并计算源时钟1和源时钟2的相对误差,将所得相对误差输出至时钟分频器;分频因子计算单元,存储预先设置的源时钟1的理论频率和所要生成的本地时钟的理论频率,根据所述理论频率计算分频因子a1和a2;并将所述分频因子a1和a2发送至时钟分频器;所述时钟分频器包括变量计算单元,用于接收相对误差以及分频因子,计算周期为T1×a1的时钟个数m以及周期为T1×a2的时钟个数n,并将所述时钟个数m和n发送至分频单元;分频单元,用于根据所收到分频因子,对所收到的源时钟1的信号进行分频,得到周期为T1×a1以及周期为T1×a2的时钟信号,将所生成的m个周期为T1×a1的时钟信号以及n个周期为T1×a2的时钟信号作为本地时钟信号输出。
8.根据权利要求7所述的时钟同步装置,其特征在于,所述时钟分频器进一步包括时钟混合单元,用于接收来自变量计算单元所得的m和n,根据m和n得到生成周期为T1×a1以及周期为T1×a2时钟信号的先后顺序,并用所得先后顺序控制分频单元生成相应的时钟信号。
9.根据权利要求7或8所述的时钟同步装置,其特征在于,所述时钟混合单元进一步包括更新判断单元,用于判断是否应当重新计算相对误差,若是则通知时钟控制模块更新相对误差。
全文摘要
本发明公开了一种时钟同步方法,包括如下步骤计算源时钟1的理论周期T1和源时钟2的理论周期T2的公倍数T_c,并计算源时钟1和源时钟2的相对误差k;根据源时钟1的理论频率与所要生成的本地时钟的理论频率的比值,确定两个分频因子a1和a2;利用两个分频因子a1和a2将源时钟1分频分别得到周期为T1×a1和T2×a2的时钟,根据分频因子及相对误差k计算在T_c时间内包含的周期为T1×a1的时钟个数m和周期为T1×a2的时钟个数n;将m个周期为T1×a1的时钟和n个周期为T1×a2的时钟混合在一起,作为T_c时间的本地时钟。本发明还公开了一种时钟同步装置。本发明方案可以使生成的本地时钟同时与源时钟1和源时钟2保持同步。
文档编号H03L7/16GK101034950SQ20071009857
公开日2007年9月12日 申请日期2007年4月20日 优先权日2007年4月20日
发明者高晓宇 申请人:北京中星微电子有限公司