实用新型内容
本实用新型的目的就是要克服上述技术的不足,而提供一种具有GPS(卫星定位系统)授时校频功能、从而能够实现时钟频率同步的TDMoverIP设备,用这种设备构成的IP网络可以实现全网TDM接口的时钟同步。
本实用新型实现上述目的所采用的技术方案。
本实用新型所述的这种具有GPS授时校频功能的TDMoverIP设备,主要包括:
一个微处理器芯片CPU,分别与检测本地TDM时钟频率的电路、锁存器电连接;
一个GPS卫星授时校频模块,用于产生1PPS信号输出给计数器和锁存器,即由该模块根据卫星信号综合输出的“秒脉冲”;
一个GPS接收天线,用来接收卫星信号,与GPS卫星授时校频模块电连接;
一个检测本地TDM时钟频率的电路,用来以GPS卫星授时校频模块输出的“秒脉冲”为重复基准对本地TDM时钟脉冲计数;
一个锁存器,用来锁存计数器中的内容,以供CPU读取;
一个计数器,用于对本地TDM时钟TDM_Clock的脉冲进行计数,当1PPS脉冲的上升沿到来时,其内容被“打入”锁存器,然后其内容被清零;
本实用新型所述的设备可以通过软件或硬件的设置被指定为主设备或从设备;
其中结合电路部分的主程序流程为:被指定为主设备的设备读出本地TDM时钟频率,向网内的其它节点通报关于本地TDM时钟频率的数据;被指定为从设备的设备将本地TDM时钟频率跟接收到的主设备节点的TDM时钟频率数据进行比较,并根据比较结果微调本地的TDM时钟频率。
这样,只要从设备接收来自主设备的TDM时钟频率数据,并以此作为基准,相应微调本地的TDM时钟频率,就可以使本地的TDM时钟频率校准到同一个TDM时钟频率上。
本实用新型有益的效果:本实用新型在普通TDMoverIP设备的基础上增加了一个GPS模块,使网内所有的TDMoverIP设备可以使用来自卫星定位系统的相同的秒长为基准来衡量其本地的TDM时钟频率,并加以微调,使网中所有的TDMoverIP设备都校准到同一个TDM时钟频率上,实现全网的TDM时钟频率同步。
具体实施方式
下面结合附图及实施例对本实用新型作进一步详细的说明。实施例1:图1说明需要增添到原有TDMoverIP设备中的电路原理图,需要增添的芯片和组件有:
1、一个GPS卫星授时校频模块,可以购买现成的组件。这种组件有个1PPS信号输出给计数器和锁存器,这就是根据卫星信号综合得出的“秒脉冲”。
2、一个GPS接收天线,可与GPS模块配套购买,用来接收卫星信号,与GPS卫星授时校频模块电连接;
3、一个压控振荡器,用来提供本地的TDM时钟TDM_Clock,其频率一般是2MHz,也可以是8KHz。压控振荡器的频率是受电压控制的,而这电压则又可以通过CPU加以控制。有些压控振荡器本身就带数字接口,可以直接受CPU控制;有些则不带,而需要在CPU与压控振荡器之间加接一个D/A芯片。
4、一个锁存器,用来锁存下述计数器中的内容(数值),以供CPU读取。注意,锁存器和计数器之间的连线数量取决于计数器的长度,图中所画只是示意而已。
5、一个计数器。计数器对本地TDM时钟TDM_Clock的脉冲进行计数。当1PPS脉冲的上升沿到来时,其内容(计数值)被“打入”锁存器,然后其内容被清零(重置为0)。为节约资源,计数器的长度不必与实际的TDM时钟脉冲相符,而可以小一些。例如,假若TDM时钟频率为2MHz,那么本来应该使用22位的计数器,但是实际上可以是16位、甚至8位。但是注意此时读出的数值为实际频率的补码,使用前应先还原。
6、本地TDM时钟TDM_Clock与压控振荡器之间有个选择开关(机械的或电子的),使得TDM时钟TDM_Clock以及计数器的输入既可以来自压控振荡器,也可以来自外部时钟Ext_Clk。
7、外部时钟Ext_Clk是从指定的外部TDM链路上提取的。
8、图中的CPU可以是专门为此而配备的微处理器芯片,也可以是与设备中其它模块合用的微处理器芯片。CPU分别与检测本地TDM时钟频率的电路、锁存器电连接,图中加粗的线条代表CPU的地址/数据/控制总线。
此外,这样的TDMoverIP设备还具有发送(包括广播)和接收IP包的功能。特别地,其软件还需实现下述功能:
·将本设备设置成“主设备”或“从设备”的功能。
·把从锁存器读取的数值打包在IP包(报文)中,并向网内各节点广播的功能。
·从接收到的IP报文中读出数值,并从本地锁存器中读出数值,加以比较,并根据比较结果调节压控振荡器控制电压的功能。
在组网的时候,可以指定网中的某一台TDMoverIP设备为时钟源、称为主设备,其余为从设备。主设备的TDM时钟TDM_Clock可以从其指定的外部TDM链路(一般来自级别更高的设备)上提取,也可以采用本地压控振荡器的输出,但是CPU对压控振荡器不加控制。在投入正常运行以后:
1.主设备CPU从锁存器读出其内容,这内容代表着刚过去的一秒钟内本地TDM时钟的频率。这是因为来自卫星定位系统的1PPS脉冲每一秒钟都会把计数值打入锁存器并使计数器清零。
2.主设备把这个计数值通过IP包向网内所有的节点广播。
3.接收到主设备广播通知的频率以后,各台从设备的CPU读出其锁存器的数值,并加以比较,然后:
·将二者的差值(主设备TDM时钟频率-本地TDM时钟频率)累加在一个变量中。
·如果这个变量的值为正,就相应调高本地的振荡频率。
·如果这个变量的值为负,就相应调低本地的振荡频率。
这样,网内的TDMoverIP设备就能保持时钟频率的一致,达到比较精确的同步。
实施例2:除压控振荡器外,也可以采用数字锁相环。数字锁相环又称“全数字锁相环(ADPLL)”。传统的典型数字锁相环由以下几个部分构成:
·一个相位检测器(鉴相器)PD,
·一个增/减计数器(Increment/Decrement Counter),
·一个N分频器。
锁相环领域的经典著作、Roland Best的“Phase Locked Loops”一书中对此有比较详细的介绍。
针对卫星校频,本实用新型采用对传统数字锁相环加以变通使用。附图2为相应的电路原理图,说明了变通使用方法的硬件部分。图中使用了增/减计数器和N分频器,但是没有相位检测器。下面加以说明:
图3中的增/减计数器基本上是一个2分频计数器,其输入Fin来自系统内某个已经存在的、频率较高的数字时钟信号,例如CPU芯片的外部时钟,其频率一般在数十兆,假定为60MHz。如果不加任何干涉,那么此时增/减计数器的输出Fout为30MHz。也就是说,输入端每输入2个时钟脉冲,其输出端就输出1个时钟脉冲,另一个被“吃”掉了。但是增/减计数器的特殊之处在于,只要在其“增加(UP)”输入端打入一个脉冲,它就少吃掉一个时钟脉冲,所以其输出端(在相同的时间内)就增加了一个脉冲。而若在其“降低(DN)”输入端打入一个脉冲,它就多吃掉一个时钟脉冲,所以其输出端(在相同的时间内)就减少了一个脉冲。这样,经过后面的分频器加以N分频,所得时钟信号的频率就会略有增加或降低。仍以Fin=60MHz为例,如果一直没有打入UP和DN脉冲,那么Fout=30MHz,选择N=15,最后的结果就是2MHz。现在每秒打入30个UP脉冲,就会使Fout每秒钟内多出30个脉冲,即每一百万个时钟脉冲中增加了一个,即1ppm。经过15分频所得时钟信号的频率也自然就增加了1ppm。
在传统的数字锁相环中,UP和DN脉冲是由相位检测器产生的。相位检测器将本地时钟信号的频率和相位跟一个参考时钟信号进行比较,确定应该增加或降低本地的时钟频率。而在本实用新型中,则由CPU根据本地的时钟频率与主设备的时钟频率之差计算出应该在本地增加或减少几个时钟脉冲。
注意增/减计数器本身并非本实用新型的内容,本实用新型所作的改进在于:
1)对传统数字锁相环的一部分加以变通使用,控制信号UP和DN不由相位监测器产生,而由CPU在软件控制下产生。
2)网内有关节点的“刚过去的一秒钟”都是以卫星信号为统一的依据,依次对本节点TDM时钟在这一秒钟内的时钟脉冲进行计数。
3)主节点每一秒钟都广播其“刚过去的一秒钟”内的时钟脉冲脉冲数量。
4)各个从节点的CPU将主节点和本节点在“刚过去的一秒钟”内的时钟脉冲脉冲数量进行比较,并将差值累加到本地变量“累计误差”中。
5)CPU根据“累计误差”的数值产生UP或DN信号,并将需要产生的UP或DN信号尽可能均匀地分布在下一秒钟的时间内。
最后,对于N分频器的输出,也可以再以此为参考信号通过“频率合成器”芯片(例如Motorola的MC14157等)综合出其它频率的时钟信号。
在本实用新型的具体实施中,GPS模块可以购买现成的组件,例如Motorola的VP ONCORE组件。压控振荡器需要购买现成的芯片或组件。而其余电路则既可以使用一般的分立小规模芯片,也可以在CPLD、FPGA芯片中实现,其中的增/减计数器可以采用图3所示的原理图,图4则为原理图中几个关键点上的波形。不过,实现增/减计数器的手段当然不止这么一种,而完全可以有所不同。例如,在芯片74LS297的说明书中就有不同的增/减计数器(连同相位检测器)的原理图。此类实现细节的不同并不影响本实用新型的实质。
除电路上的改变以外,软件上也要增加几个相应的函数来实现TDM时钟频率的调节/校准。下面是这些函数的伪代码描述:
主设备:
every_second() //主设备每一秒钟的操作
{
读出锁存器中的数值,此为刚过去的一秒钟内主设备时钟的脉冲个数;
将这个数值发送给网内需要跟随主设备时钟的从设备;
也可以在发送数值时附上从卫星得到的绝对时间(秒,或换算成年/月/日/时/分/秒);
}
从设备:分采用压控振荡器或全数字锁相环两种实现方法:
1)采用压控振荡器:
msg_from_main() //接收到来自主设备的时钟信息
{
读出锁存器中的数值,此为刚过去的一秒钟内本地时钟的脉冲个数;
与来自主设备的信息进行比较,将二者之差纪录在变量D中,此为两地时钟频率之差;
if(D不等于0) //或D的绝对值小于预定的阈值
{
if(D>0)根据D的数值按比例调高压控振荡器的频率。
if(D<0)根据D的数值按比例调低压控振荡器的频率。
}
}
2)采用全数字锁相环:
msg from_main() //接收到来自主设备的时钟信息
{
读出锁存器中的数值,此为刚过去的一秒钟内本地时钟的脉冲个数;
与来自主设备的信息进行比较,将二者之差(主设备脉冲数-本地脉冲数)累加到变量D上;
计算变量P的数值P=1000/(D*N);
/*P说明平均几个毫秒应该增加或减少一个时钟脉冲,N为分频比*/
}
every_millisecond(N) //从设备每一毫秒的操作,N表示这是一秒钟之内的第几个毫秒
{
检查所记录的本地时钟与主设备时钟频率之差D;
if(D不等于0) //D代表着两地之间的累计时钟脉冲(个数)误差
{
if(N是P的整数倍) //P表示平均几个毫秒需要增加或减少一个脉冲
{
if(D>0)向增/减计数器发出一个UP脉冲,并使D减1; //增加一个脉冲;
if(D<0)向增/减计数器发出一个DN脉冲,并使D加1; //减少一个脉冲;
}
}
}
当然,具体的实现也可以有一些变化,实现细节上的不同并不影响本实用新型的实质。
目前市场上的卫星授时校频模块均采用美国的GPS全球定位系统,但是本实用新型并不局限于采用GPS,条件具备时也可采用包括中国的“北斗”在内的其它卫星定位系统。