一種ptp系統(tǒng)時間同步方法以及裝置制造方法
【專利摘要】本發(fā)明提供一種PTP系統(tǒng)時間同步方法以及裝置,該方法包括:根據(jù)與上游設(shè)備交互的時間同步消息的時戳獲取與上游設(shè)備表征時間的偏差值;根據(jù)所述與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息,以使PTP系統(tǒng)中上游設(shè)備與下游設(shè)備間的表征時間同步。
【專利說明】一種PTP系統(tǒng)時間同步方法以及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種PTP(Precis1n Time Protocol,精確時間協(xié)議)系統(tǒng)同步方法以及裝置。
【背景技術(shù)】
[0002]PTP用于實現(xiàn)設(shè)備之間的高精度時間同步,也可用于設(shè)備之間的頻率同步。在PTP系統(tǒng)中,由上游設(shè)備向下游設(shè)備發(fā)布同步時間,發(fā)布同步時間的上游設(shè)備可以稱為主時鐘,而接收同步時間的下游設(shè)備則稱為從時鐘。
[0003]在實現(xiàn)PTP系統(tǒng)的時間同步時,由從時鐘記錄主、從時鐘之間交互的時間同步消息的時戳,通過將該時戳上報至中央處理器CPU,由CPU計算時間同步消息往返的時間差,以及根據(jù)該往返的時間差計算主、從時鐘之間的往返總延時。如果網(wǎng)絡(luò)是對稱的,則往返總延時的一半就是單向延時,并根據(jù)這個單向延時計算出主、從時鐘之間的時鐘偏差值。CPU可以通過控制從時鐘按照該時鐘偏差值來調(diào)整本地時間,從而實現(xiàn)從時鐘與主時鐘之間的同步。
[0004]然而,通常CPU從計算主、從時鐘之間的時鐘偏差值到控制從時鐘按照該時鐘偏差值來調(diào)整本地時間的過程較長,如果從時鐘在一個時間周期中可調(diào)整本地時間的時間范圍外接收到主時鐘發(fā)送的時間同步消息,那么,CPU則會在下個時間周期控制從時鐘調(diào)整本地時間,從而導(dǎo)致后續(xù)的主、從時鐘之間時間出現(xiàn)較大偏差,且偏差不固定的問題。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供了一種PTP系統(tǒng)時間同步方法以及裝置來解決現(xiàn)有技術(shù)中的問題。
[0006]本發(fā)明提供一種PTP系統(tǒng)時間同步方法,其中該方法包括:
[0007]根據(jù)與上游設(shè)備交互的時間同步消息的時戳獲取與上游設(shè)備表征時間的偏差值;
[0008]根據(jù)所述與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息。
[0009]本發(fā)明還提供一種PTP系統(tǒng)時間同步裝置,所述裝置包括:
[0010]獲取單元,用于根據(jù)與上游設(shè)備交互的時間同步消息的時戳獲取與上游設(shè)備表征時間的偏差值;
[0011]更新單元,用于根據(jù)所述與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息。
[0012]本發(fā)明提供的PTP系統(tǒng)時間同步方法以及裝置,使用獲取到的與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息,以使PTP系統(tǒng)中上游設(shè)備與下游設(shè)備間的表征時間同步。
【專利附圖】
【附圖說明】
[0013]圖1是現(xiàn)有技術(shù)中上游設(shè)備與下游設(shè)備的IPPS頻率及相位示意圖;
[0014]圖2是本發(fā)明實施例所應(yīng)用的PTP系統(tǒng)組網(wǎng)環(huán)境示意圖;
[0015]圖3是本發(fā)明實施例中請求應(yīng)答機(jī)制實現(xiàn)過程示意圖;
[0016]圖4是本發(fā)明實施例中PTP系統(tǒng)時間同步方法流程示意圖;
[0017]圖5為本發(fā)明實施例中上游設(shè)備與下游設(shè)備的IPPS頻率及相位示意圖;
[0018]圖6是本發(fā)明實施例中PTP系統(tǒng)時間同步裝置所在本地設(shè)備硬件架構(gòu)示意圖;
[0019]圖7為本發(fā)明實施例中PTP系統(tǒng)時間同步裝置的邏輯結(jié)構(gòu)示意圖。
【具體實施方式】
[0020]應(yīng)用了 PTP協(xié)議的網(wǎng)絡(luò)可以稱為PTP域或者PTP系統(tǒng),PTP系統(tǒng)內(nèi)有且只有一個同步時鐘,也稱為最優(yōu)時鐘(Grandmaster Clock,GM)。通過各設(shè)備間PTP協(xié)議報文的交互,最優(yōu)時鐘的時間最終將被向下同步傳遞,因此也可稱最優(yōu)時鐘為時鐘源。
[0021]在實現(xiàn)PTP系統(tǒng)中的時間同步時,下游設(shè)備(從時鐘)接收上游設(shè)備(主時鐘,也可以是時鐘源)發(fā)布的同步(Sync)報文,并通過該Sync報文以及與上游設(shè)備交互的回應(yīng)報文(Delay_Req報文以及Delay_Resp報文)獲取多個時間戳,根據(jù)該多個時間戳計算出表征時間的偏差值(Offset)。
[0022]現(xiàn)有技術(shù)中,在計算出該Offset后,從時鐘根據(jù)該Offset調(diào)節(jié)自身的本地時間,以保持與主時鐘(或者時鐘源)的時間同步。假設(shè),I秒為一個時間周期,在計算出Offset后,將(l+/-0ffset)保存在PHY(物理層)芯片對應(yīng)的清零閾值寄存器,并且在接收到內(nèi)部PHY芯片發(fā)送的IPPS (IPulse Per Second,秒脈沖)時,開啟內(nèi)部的計數(shù)器進(jìn)行計數(shù),在計數(shù)時間等于或者大于(l+/-0ffset)的時間時,通過發(fā)送IPPS控制內(nèi)部的計數(shù)器清零,并重新開始計數(shù)。請參考圖1所示的上游設(shè)備與下游設(shè)備的IPPS頻率及相位示意圖,通過上述反復(fù)的處理,本地設(shè)備輸出的IPPS可以與上游設(shè)備的IPPS的頻率和相位保持基本一致,從而本地設(shè)備的時間最終與上游設(shè)備的時間保持完全一致(誤差在納秒范圍)。
[0023]然而,在獲取時間同步消息的報文時戳,再進(jìn)行Offset計算,以及使用Offset對本地時間進(jìn)行調(diào)整所使用的時間通常都在毫秒級,若在時間周期I秒的末尾時間(剩余時間不足以進(jìn)行計算Offset并調(diào)整本地時間)接收到上游設(shè)備的Sync報文,那么CPU則會在下個時間周期控制本地設(shè)備調(diào)整本地時間,從而導(dǎo)致后續(xù)的上、下游之間時間出現(xiàn)較大偏差的冋題。
[0024]圖2所示為一 PTP系統(tǒng)組網(wǎng)環(huán)境示意圖,在PTP系統(tǒng)中包括上游設(shè)備(Rl)、本地設(shè)備(R2)以及下游設(shè)備(R3),其中Rl為R2的主時鐘(Master clock),R2為R3的主時鐘,R2為Rl的從時鐘(Slave clock),R3為R2的從時鐘。
[0025]本申請一 PTP系統(tǒng)時間同步方法例子的處理流程如圖3所示,該方法具體可以應(yīng)用在PTP系統(tǒng)中的PTP設(shè)備上,本例以應(yīng)用于一本地設(shè)備為例說明,包括以下步驟:
[0026]步驟301,根據(jù)與上游設(shè)備交互的時間同步消息的時戳獲取與上游設(shè)備表征時間的偏差值;
[0027]PTP系統(tǒng)的各設(shè)備中,發(fā)布同步時間的端口稱為主(Master)端口,而接收同步時間的端口則稱為從(Slave)端口。在初始的狀態(tài),本地設(shè)備內(nèi)部還未分配具體的主端口以及從端口,在本地設(shè)備接收到上游設(shè)備發(fā)送的Sync報文時,可以通過BMC (Best MasterClock,最佳主時鐘)算法選取本地設(shè)備中的主端口以及從端口,也可以根據(jù)需要,或者隨機(jī)選取出主端口以及從端口,后續(xù)可以使用選取的主端口以及從端口發(fā)送或接收時間同步消息。在選取出從端口后,可以將與該選取的從端口對應(yīng)的清零閾值寄存器設(shè)置一個固定數(shù)值,例如I秒,使清零閾值寄存器不再隨計算出的時鐘偏差值發(fā)生變化。本例子中,還設(shè)置了與所述清零閾值寄存器對應(yīng)的計數(shù)器,在計數(shù)器的計數(shù)時長到達(dá)預(yù)設(shè)的固定數(shù)值(例如I秒)時,將所述計數(shù)器的計數(shù)清零并重新計數(shù)。在該計數(shù)器計數(shù)的過程中,若接收到時間同步消息,將接收到時間同步消息時的計數(shù)器當(dāng)前的計數(shù)時間作為接收該時間同步消息的報文時戳的納秒值,將系統(tǒng)內(nèi)部保存的TOD時間作為報文時戳的秒值。
[0028]在實現(xiàn)PTP系統(tǒng)中的時間同步時,可通過請求應(yīng)答機(jī)制中交互的時間同步消息獲取報文時戳。
[0029]PTP系統(tǒng)中上游設(shè)備向下游設(shè)備發(fā)送時間同步消息可以有兩種發(fā)送模式,一種是單步模式,一種是雙步模式。單步模式下,該同步消息可以包括接收上游設(shè)備Rl發(fā)布的Sync (同步)報文、本地設(shè)備R2根據(jù)該Sync報文向上游設(shè)備Rl回復(fù)的Delay_Req (延時請求)報文,以及接收上游設(shè)備根據(jù)該Delay_Req報文回應(yīng)的Delay_Resp (延時回應(yīng))報文。并可以根據(jù)所述Sync報文獲取上游設(shè)備Rl發(fā)送所述Sync報文的第一時戳tl,以及本地設(shè)備R2接收到所述Sync報文時,將與清零閾值寄存器對應(yīng)的計數(shù)器當(dāng)前的計數(shù)時間作為的第二時戳t2的納秒值,同時將系統(tǒng)內(nèi)部保存的TOD時間作為第二時戳t2的秒值;本地設(shè)備R2向上游設(shè)備Rl發(fā)送Delay_Req報文時,獲取發(fā)送Delay_Req的第三時戳t3 (獲取方法與第二時戳t2相同),以及根據(jù)Delay_Resp報文獲取上游設(shè)備Rl接收Delay_Req報文的第四時戳t4。
[0030]圖4為上游設(shè)備以雙步模式向下游設(shè)備發(fā)送時間同步消息實現(xiàn)過程示意圖,與單模式方式不同在于,上游設(shè)備向下游設(shè)備發(fā)送的Sync報文中不攜帶第一時戳tl,第一時戳tl由向下游設(shè)備發(fā)送的Follow_Up (跟隨)報文攜帶。因此,本地設(shè)備從Follow_Up報文中獲取第一時戳tl。
[0031]另外,在接收到上游設(shè)備通過單步模式的主端口發(fā)送的Sync報文,并獲取到第一時戳tl后,進(jìn)一步檢查該Sync報文中的Correct1n Field(時間修正域)字段是否為默認(rèn)值,該字段的內(nèi)容是對駐留時間的一個納秒級別的修正值,若該字段內(nèi)為默認(rèn)值,說明該第一時戳tl即是實際的第一時戳tl ;若否,該獲取的第一時戳tl則是初始第一時戳tl,即,未使用與上游設(shè)備的表征時間的偏差值補(bǔ)償?shù)牡谝粫r戳,那么,將初始第一時戳tl結(jié)合Correct1n Field字段的數(shù)值進(jìn)行修正,所得到的結(jié)果才是實際的第一時戳tl。
[0032]具體地,在獲取發(fā)送Sync報文時的第一時戳tl后,檢查Sync報文的Correct1nField所攜帶的Offset是正數(shù)還是負(fù)數(shù),若是正數(shù),則將所述第一時戳的納秒值與所述Offset的納秒值相加,并判斷相加后的數(shù)值是否需要進(jìn)位,即相加后的數(shù)值是否超過I秒,若是,則將所述數(shù)值進(jìn)位后得到的余數(shù)作為更新后的第一時戳的納秒值,將進(jìn)位后的秒值作為更新后的第一時戳的秒值;若相加后的數(shù)值不需要進(jìn)位,即相加后的數(shù)值不超過I秒,則將所述相加后的數(shù)值作為所述更新后的第一時戳的納秒值,第一時戳的其他值仍不變。
[0033]若所述Offset為負(fù)數(shù),在所述第一時戳的納秒值大于或等于所述Offset的納秒值時,則使用所述第一時戳的納秒值減去所述Offset的納秒值的絕對值作為所述更新后的第一時戳的納秒值,第一時戳的其他值仍不變;在所述第一時戳的納秒值小于所述Offset的納秒值的絕對值時,將所述第一時戳的納秒值加上I秒后,再減去所述Offset的納秒值的絕對值,即得到更新后的第一時戳的納秒值,第一時戳的秒值減去I秒后得到數(shù)值,即為更新后的第一時戳的秒值。在獲取更新后的第一時戳后,將該更新后的第一時戳添加至所述FolloW_Up報文中,以使添加了所述更新后的第一時戳的納秒值以及秒值的Follow_Up報文作為所述同步信息發(fā)送至下游設(shè)備。
[0034]例如,Correct1n Field字段默認(rèn)值為0,在獲取的第一時戳tl為1407827087s (秒)999479955ns (納秒)時,1407827087s 999479955ns 是實際的第一時戳tl ;若 Correct1n Field 字段被修改為 6876ns,1407827087s999479955ns 則是初始第一時戳 tl,將 1407827087s 999479955ns 加上 6876ns 得到的 1407827087s 999486831ns 才是實際的第一時戳tl。
[0035]在獲取到該報文時戳tl、t2、t3以及t4后,首先可根據(jù)該報文時戳計算出本地設(shè)備與上游設(shè)備間報文交互的雙向延時時間,即[(t2-tl) + (t4-t3)]。由于在網(wǎng)絡(luò)對稱時,報文交互的往返路徑通常是一致的,所以[(t2-tl) + (t4-t3)]/2即為上游設(shè)備與本地設(shè)備間交互報文的單向延時時間。之后,將(t2-tl)減去所述單向延時時間,即為本地設(shè)備與上游設(shè)備間的Offset,具體為:
[0036]Offset = (t2 - tl) - [ (t2 - tl) + (t4 - t3) ] /2
[0037]舉例來說,假設(shè)所獲取的報文時戳tl、t2、t3以及t4分別是:
[0038]Tl = 1407827087s 999479955ns
[0039]T2 = 1407827087s 999486299ns
[0040]T3 = 1407827088s 005866307ns
[0041]T4 = 1407827088s 005873710ns
[0042]根據(jù)獲取的報文時戳tl、t2、t3以及t4使用所述計算方式計算出所述Offset為-1058ns。
[0043]另外,如果網(wǎng)絡(luò)中本地設(shè)備與上游設(shè)備間的拓?fù)湮醋兓涿總€同步周期所計算出的單向延時時間可以是一致的,因此本發(fā)明實施例也可以在每個同步周期內(nèi)根據(jù)獲取的tl、t2、t3以及t4計算出單向延時時間后,將該單向延時時間保存在本地設(shè)備,在下一個同步周期內(nèi)獲取到報文時戳tl以及t2后,即可使用(t2-tl)減去上一周期計算的單向延時時間計算出Offset。在計算出本地設(shè)備與上游設(shè)備的Offset后,可以將該Offset保存至內(nèi)存中,以便后續(xù)查用。
[0044]步驟302,根據(jù)所述與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息。
[0045]本發(fā)明中向下游設(shè)備發(fā)送同步信息的主端口可以為多個,由于設(shè)備的各個主端口的端口屬性可能不同,從而使得進(jìn)行時鐘同步的操作方法也不盡相同。比如,本地設(shè)備的主端口可以為以太接口也可以是TOD(Time of Day,日時間)接口,以下分別以以太接口以及TOD接口為例,對根據(jù)所述表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息進(jìn)行進(jìn)一步地說明。
[0046]1、向下游設(shè)備發(fā)送同步信息的主端口為以太接口
[0047]若要向下游設(shè)備發(fā)送同步信息的主端口為以太接口,此時的同步信息就是時間同步消息。
[0048]首先檢查將所述同步信息發(fā)送至下游設(shè)備的端口的發(fā)送模式是單步模式還是雙步模式。
[0049]I)單步模式
[0050]若檢查到將所述同步信息發(fā)送至下游設(shè)備的端口的發(fā)送模式是單步模式,將Sync報文發(fā)送至下游設(shè)備時,將所述Offset添加至所述Sync報文。
[0051]具體地,將發(fā)送Sync報文時,與清零閾值寄存器對應(yīng)的計數(shù)器當(dāng)前的計數(shù)時間作為的初始第一時戳tl的納秒值,同時將系統(tǒng)內(nèi)部保存的TOD時間作為第一時戳t2的秒值,同時,判斷根據(jù)步驟301計算出的Offset是否小于I秒,在Offset大于或等于I秒時,說明所計算的Offset有秒上的偏差,這種情況下,通常是因為偏差未收斂所導(dǎo)致的偏差不穩(wěn)定,貝Ij不更新所述Sync報文的Correct1n Field字段。在Offset小于I秒時(即秒值以上的偏差為零),使用小于I秒的Offset更新所述Sync報文的Correct1n Field字段,發(fā)送至下游設(shè)備。其中,Correct1n Field字段包括符號位,該符號位用于表征所述Offset是正數(shù)或是負(fù)數(shù),如步驟301中所計算出的Offset為-1058ns,那么該Correct1n Field字段的符號位則置下游設(shè)備在接收到該Sync報文后,將Sync報文原始的第一時戳tl結(jié)合Correct1n Field字段中的Offset進(jìn)行修正得到實際的第一時戳tl。
[0052]在向下游設(shè)備發(fā)送Sync報文后,可以接收到下游設(shè)備發(fā)送的Delay_Req報文,該Delay_Req報文用于下游設(shè)備向本地設(shè)備請求本地設(shè)備接收到該Delay_Req報文的時戳。
[0053]在接收到該Delay_Req報文后,將接收Delay_Req報文時,與清零閾值寄存器對應(yīng)的計數(shù)器當(dāng)前的計數(shù)時間作為第六時戳t6的納秒值,將當(dāng)前系統(tǒng)內(nèi)部保存的TOD時間作為第六時戳t6的秒值,并檢查步驟301計算出的Offset是正數(shù)還是負(fù)數(shù),若是正數(shù),則將所述第六時戳的納秒值與所述Offset的納秒值相加,并判斷相加后的數(shù)值是否需要進(jìn)位,即相加后的數(shù)值是否超過I秒,若是,則將所述數(shù)值進(jìn)位后得到的余數(shù)作為更新后的第六時戳(相當(dāng)于向下游設(shè)備發(fā)送Delay_Req報文時的第四時戳t4)的納秒值,將進(jìn)位后的秒值作為更新后的第六時戳的秒值(即將第六時戳的秒值加I后作為更新后的第六時戳的秒值);若相加后的數(shù)值不需要進(jìn)位,即相加后的數(shù)值不超過I秒,則將所述相加后的數(shù)值作為所述更新后的第六時戳的納秒值,第六時戳的其他值仍不變。
[0054]若所述Offset為負(fù)數(shù),在所述第六時戳的納秒值大于或等于所述Offset的納秒值時,則使用所述第六時戳的納秒值減去所述Offset的納秒值的絕對值作為所述更新后的第六時戳的納秒值,第六時戳的其他值仍不變;在所述第六時戳的納秒值小于所述Offset的納秒值的絕對值時,將所述第六時戳的納秒值加上I秒后,再減去所述Offset的納秒值的絕對值,即得到更新后的第六時戳的納秒值,第六時戳的秒值減去I秒后得到數(shù)值,即為更新后的第六時戳的秒值。在獲取更新后的第六時戳后,將該更新后的第六時戳添加至所述Delay_Req報文中,以使添加了所述更新后的第六時戳的納秒值以及秒值的Delay_Req報文作為所述同步信息發(fā)送至下游設(shè)備。
[0055]2)雙步模式
[0056]若檢查到將所述同步信息發(fā)送至下游設(shè)備的端口的發(fā)送模式是雙步模式,向下游設(shè)備發(fā)送的Sync報文中則不會攜帶發(fā)送Sync報文時的第五時戳t5 (以下游設(shè)備的角度來看,該第五時戳t5是發(fā)送Sync報文的第一時戳tl),那么可以將發(fā)送Sync報文時的第五時戳t5根據(jù)計算出的offset更新后,將更新后的第五時戳t5添加至FolloW_Up報文中發(fā)送至下游設(shè)備。
[0057]具體地,在獲取發(fā)送Sync報文時的第五時戳t5后,檢查步驟301計算出的Offset是正數(shù)還是負(fù)數(shù),若是正數(shù),則將所述第五時戳的納秒值與所述Offset的納秒值相加,并判斷相加后的數(shù)值是否需要進(jìn)位,即相加后的數(shù)值是否超過I秒,若是,則將所述數(shù)值進(jìn)位后得到的余數(shù)作為更新后的第五時戳(向下游設(shè)備發(fā)送Sync報文時的第一時戳tl)的納秒值,將進(jìn)位后的秒值作為更新后的第五時戳的秒值(即將第五時戳的秒值加I后作為更新后的第五時戳的秒值);若相加后的數(shù)值不需要進(jìn)位,即相加后的數(shù)值不超過I秒,則將所述相加后的數(shù)值作為所述更新后的第五時戳的納秒值,第五時戳的其他值仍不變。
[0058]若所述Offset為負(fù)數(shù),在所述第五時戳的納秒值大于或等于所述Offset的納秒值時,則使用所述第五時戳的納秒值減去所述Offset的納秒值的絕對值作為所述更新后的第五時戳的納秒值,第五時戳的其他值仍不變;在所述第五時戳的納秒值小于所述Offset的納秒值的絕對值時,將所述第五時戳的納秒值加上I秒后,再減去所述Offset的納秒值的絕對值,即得到更新后的第五時戳的納秒值,第五時戳的秒值減去I秒后得到數(shù)值,即為更新后的第五時戳的秒值。在獲取更新后的第五時戳后,將該更新后的第五時戳添加至所述FolloW_Up報文中,以使添加了所述更新后的第五時戳的納秒值以及秒值的Follow_Up報文作為所述同步信息發(fā)送至下游設(shè)備。
[0059]在向下游設(shè)備發(fā)送具有第五時戳t5的FolloW_Up報文后,可以接收到下游設(shè)備發(fā)送的Delay_Req報文,該Delay_Req報文同樣用于下游設(shè)備向本地設(shè)備(下游設(shè)備的上游設(shè)備)請求本地設(shè)備接收到該Delay_Req報文的時戳。
[0060]在接收到該Delay_Req報文后,將接收Delay_Req報文時,與清零閾值寄存器對應(yīng)的計數(shù)器當(dāng)前的計數(shù)時間作為第六時戳t6的納秒值,將當(dāng)前系統(tǒng)內(nèi)部保存的TOD時間作為第六時戳t6的秒值,并檢查步驟301計算出的Offset是正數(shù)還是負(fù)數(shù),若是正數(shù),則將所述第六時戳的納秒值與所述Offset的納秒值相加,并判斷相加后的數(shù)值是否需要進(jìn)位,即相加后的數(shù)值是否超過I秒,若是,則將所述數(shù)值進(jìn)位后得到的余數(shù)作為更新后的第六時戳(相當(dāng)于向下游設(shè)備發(fā)送Delay_Req報文時的第四時戳t4)的納秒值,將進(jìn)位后的秒值作為更新后的第六時戳的秒值(即將第六時戳的秒值加I后作為更新后的第六時戳的秒值);若相加后的數(shù)值不需要進(jìn)位,即相加后的數(shù)值不超過I秒,則將所述相加后的數(shù)值作為所述更新后的第六時戳的納秒值,第六時戳的其他值仍不變。
[0061]若所述Offset為負(fù)數(shù),在所述第六時戳的納秒值大于或等于所述Offset的納秒值時,則使用所述第六時戳的納秒值減去所述Offset的納秒值的絕對值作為所述更新后的第六時戳的納秒值,第六時戳的其他值仍不變;在所述第六時戳的納秒值小于所述Offset的納秒值的絕對值時,將所述第六時戳的納秒值加上I秒后,再減去所述Offset的納秒值的絕對值,即得到更新后的第六時戳的納秒值,第六時戳的秒值減去I秒所述后得到數(shù)值,即為更新后的第六時戳的秒值。在獲取更新后的第六時戳后,將該更新后的第六時戳添加至所述Delay_Req報文中,以使添加了所述更新后的第六時戳的納秒值以及秒值的Delay_Req報文作為所述同步信息發(fā)送至下游設(shè)備。
[0062]這樣一來,無論向下游設(shè)備發(fā)送同步信息的端口是單步模式還是雙步模式,均可保證本地設(shè)備輸出的時間與上、下游設(shè)備的時間一致。
[0063]2、將要向下游設(shè)備發(fā)送同步信息的主端口為TOD接口
[0064]若要向下游設(shè)備發(fā)送同步信息的主端口為TOD接口,所述同步信息包括秒脈沖信號和TOD信息。
[0065]具體地,可以通過預(yù)先設(shè)置計數(shù)器,并在計數(shù)器計數(shù)時長到達(dá)Offset的納秒值時,向下游設(shè)備發(fā)送IPPS(秒脈沖信號)來保證下游設(shè)備與本地設(shè)備間的時間同步。為保證本地設(shè)備的計時時間更為精準(zhǔn),可在本地設(shè)備的時鐘模塊恢復(fù)的同步時鐘提供給本地設(shè)備的FPGA (Field — Programmable Gate Array,可編程邏輯器件)后,由FPGA將時鐘模塊恢復(fù)的同步時鐘倍頻到250Mhz或者500Mhz,最后使用處理后的同步時鐘作為計數(shù)器。
[0066]若判斷PHY芯片對應(yīng)的寄存器中保存的Offset為正數(shù),在接收到內(nèi)部PHY芯片發(fā)送的IPPS時,開啟計數(shù)器,在所述計數(shù)器的計數(shù)時間到達(dá)所述Offset的納秒值時,向下游設(shè)備發(fā)送1PPS,并且將在接收到IPPS的時間的秒值組裝為TOD信息,在向下游設(shè)備發(fā)送IPPS后到達(dá)預(yù)設(shè)時間后,將組裝后的TOD信息通過TOD接口輸出至下游設(shè)備;
[0067]若判斷PHY芯片對應(yīng)的寄存器中保存的Offset為負(fù)數(shù),在接收到PHY芯片的IPPS時,開啟計數(shù)器,在所述計數(shù)器的計數(shù)時間到達(dá)I秒減去所述Offset后得到的時間時,向下游設(shè)備發(fā)送1PPS。將在接收到PHY芯片發(fā)送IPPS的時間的秒值加上I秒作為當(dāng)前時間的秒值組裝為TOD信息,在向下游設(shè)備發(fā)送IPPS后到達(dá)預(yù)設(shè)時間時,將組裝后的TOD信息通過TOD接口輸出至下游設(shè)備。由此,在本發(fā)明實施例中,可將所述IPPS以及組裝的TOD信息作為更新后的同步信息發(fā)送至下游設(shè)備。下游設(shè)備在接收到該同步信息后,即可根據(jù)上游設(shè)備的TOD接口發(fā)送的IPPS以及TOD信息中組裝的秒時間確定上游設(shè)備發(fā)送IPPS的秒時間,由于該秒時間是根據(jù)Offset更新后的秒時間,因此可以保證本地設(shè)備輸出的秒時間與上游設(shè)備的秒時間一致。
[0068]請參考圖5,本發(fā)明提供的PTP系統(tǒng)時間同步方法,在計算出本地設(shè)備與上游設(shè)備的Offset后,使本地設(shè)備與上游設(shè)備的時間保持一個恒定的偏差(如下游設(shè)備的時間總是比上游設(shè)備晚1058ns),在本地設(shè)備向下游設(shè)備進(jìn)行時鐘同步時,將這個恒定的差值補(bǔ)償?shù)?,從而保證本地設(shè)備輸出的時間與上游設(shè)備一致。
[0069]圖6為該P(yáng)TP系統(tǒng)時間同步裝置的結(jié)構(gòu)示意圖,該P(yáng)TP系統(tǒng)時間同步裝置可以包括:獲取單元601以及更新單元602。其中:
[0070]獲取單元601,用于根據(jù)與上游設(shè)備交互的時間同步消息的時戳獲取與上游設(shè)備表征時間的偏差值;
[0071]更新單元602,用于根據(jù)所述與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息。
[0072]進(jìn)一步地,圖6中的更新單元602具體可以用于,若向下游設(shè)備發(fā)送同步信息的端口的發(fā)送模式是單步模式,則判斷所述與上游設(shè)備表征時間的偏差值是否小于預(yù)設(shè)數(shù)值,若是,將所述與上游設(shè)備表征時間的偏差值添加至所述Sync報文中,發(fā)送至下游設(shè)備。
[0073]進(jìn)一步地,圖6中的更新單元602具體可以用于,若向下游設(shè)備發(fā)送同步信息的端口的發(fā)送模式是雙步模式,在發(fā)送Sync報文之后,獲取發(fā)送所述Sync報文的第五時戳;若判斷所述與上游設(shè)備表征時間的偏差值為正數(shù),將所述第五時戳的納秒值與所述與上游設(shè)備表征時間的偏差值的納秒值相加,并判斷相加后的數(shù)值是否需要向所述第五時戳的秒值進(jìn)位,若是,則將所述進(jìn)位后得到的余數(shù)作為更新后的第五時戳的納秒值,將進(jìn)位后的第五時戳的秒值作為更新后的第五時戳的秒值,否則,將所述相加后的數(shù)值作為所述更新后的第五時戳的納秒值,將所述第五時戳的秒值作為更新后的第五時戳的秒值;若判斷所述與上游設(shè)備表征時間的偏差值為負(fù)數(shù),在所述第五時戳的納秒值大于或等于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,使用所述第五時戳的納秒值減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值作為所述更新后的第五時戳的納秒值,將所述第五時戳的秒值作為更新后的第五時戳的秒值;在所述第五時戳的納秒值小于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,將所述第五時戳的納秒值加上I秒再減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值得到更新后的第五時戳的納秒值,并將所述第五時戳的秒值減去I秒得到所述更新后的第五時戳的秒值;將所述更新后的第五時戳的納秒值以及秒值添加至所述FolloW_Up報文中,發(fā)送至下游設(shè)備。
[0074]進(jìn)一步地,圖6中的更新單元602具體可以用于,在接收到秒脈沖信號時,開啟計數(shù)器;若所述與上游設(shè)備表征時間的偏差值為正數(shù),在所述計數(shù)器的計數(shù)時間到達(dá)所述與上游設(shè)備表征時間的偏差值的納秒值時,向下游設(shè)備發(fā)送秒脈沖信號,并且將接收到秒脈沖信號的時間的秒值組裝為TOD信息,在到達(dá)預(yù)設(shè)時間后,將組裝后的TOD信息通過TOD接口輸出至下游設(shè)備;若所述表征時間的偏差值為負(fù)數(shù),在所述計數(shù)器的計數(shù)時間到達(dá)由I秒減去所述與上游設(shè)備表征時間的偏差值的絕對值時,向下游設(shè)備發(fā)送秒脈沖信號,并且將接收到秒脈沖信號的時間的秒值加上I秒作為當(dāng)前時間的秒值組裝為TOD信息,在到達(dá)預(yù)設(shè)時間后,將組裝后的TOD信息通過TOD接口輸出至下游設(shè)備。
[0075]進(jìn)一步地,所述與上游設(shè)備交互的時間同步消息包括由上游設(shè)備發(fā)送的Sync報文,請參考圖6,所述裝置還可以包括時戳獲取單元603,接收上游設(shè)備發(fā)送的Sync報文;若所述上游設(shè)備發(fā)送所述Sync報文的端口為單步模式,獲取所述Sync報文中攜帶的初始第一時戳;檢查所述Sync報文中的指定字段是否為默認(rèn)值,若是,將所述初始第一時戳作為第一時戳tl ;若否,將初始第一時戳tl結(jié)合指定字段的數(shù)值進(jìn)行修正,并得到第一時戳tl。
[0076]進(jìn)一步地,圖6所示的時戳獲取單元603還可以用于,在接收上游設(shè)備發(fā)送的Sync報文后,若所述上游設(shè)備發(fā)送所述Sync報文的端口為雙步模式,在接收到上游設(shè)備發(fā)送的Follow_Up報文時,獲取所述Follow_Up報文中攜帶的第一時戳tl。
[0077]進(jìn)一步地,所述同步信息還可以包括Delay_Resp報文,所述更新單元602具體可以用于:
[0078]在向下游設(shè)備發(fā)送Sync報文或FolloW_Up報文后,若接收到下游設(shè)備發(fā)送的延時請求Delay_Req報文,將接收Delay_Req報文時,與清零閾值寄存器對應(yīng)的計數(shù)器當(dāng)前的計數(shù)時間作為第六時戳t6的納秒值,將當(dāng)前系統(tǒng)內(nèi)部保存的TOD時間作為第六時戳t6的秒值;若檢查所述與上游設(shè)備表征時間的偏差值是正數(shù),將所述第六時戳的納秒值與所述Offset的納秒值相加,并判斷相加后的數(shù)值是否需要進(jìn)位,若是,將進(jìn)位后得到的余數(shù)作為更新后的第六時戳的納秒值,將進(jìn)位后的秒值作為更新后的第六時戳的秒值;否則,將所述相加后的數(shù)值作為所述更新后的第六時戳的納秒值,將所述第六時戳的秒值作為更新后的第六時戳的秒值;若判斷所述與上游設(shè)備表征時間的偏差值為負(fù)數(shù),在所述第六時戳的納秒值大于或等于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,使用所述第六時戳的納秒值減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值作為所述更新后的第六時戳的納秒值,將所述第六時戳的秒值作為更新后的第六時戳的秒值;在所述第六時戳的納秒值小于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,將所述第六時戳的納秒值加上I秒再減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值得到更新后的第六時戳的納秒值,并將所述第六時戳的秒值減去I秒得到所述更新后的第六時戳的秒值;將所述更新后的第六時戳的納秒值以及秒值添加至所述Delay_ReSp報文中,發(fā)送至下游設(shè)備。
[0079]進(jìn)一步地,所述與上游設(shè)備交互的時間同步消息還可以包括向上游設(shè)備發(fā)送的Delay_Req報文以及由上游設(shè)備發(fā)送的Delay_ReSp報文,請參考圖6,所述裝置還可以包括設(shè)置單元604,用于將接收所述Sync報文的端口對應(yīng)的清零閾值寄存器的數(shù)值設(shè)置為固定數(shù)值,以使與所述清零閾值寄存器對應(yīng)的計數(shù)器的計數(shù)時長到達(dá)所述固定數(shù)值時,將所述計數(shù)器的計數(shù)清零并重新計數(shù);所述時戳獲取單元603還可以用于,接收到所述Sync報文時,將所述計數(shù)器當(dāng)前的計數(shù)時間作為第二時戳t2的納秒值,將內(nèi)部保存的TOD時間作為第二時戳t2的秒值;向上游設(shè)備發(fā)送Delay_Req報文,將發(fā)送Delay_Req報文時所述計數(shù)器的計數(shù)時間作為第三時戳t3的納秒值,將內(nèi)部保存的TOD時間作為第三時戳t3的秒值;接收上游設(shè)備發(fā)送的Delay_ReSp報文,獲取上游設(shè)備接收到所述Delay_Req報文的第四時戳t4 ;所述獲取單元601所述獲取單元具體用于通過如下公式計算與上游設(shè)備的表征時間的偏差值:與上游設(shè)備的表征時間的偏差值=(t2-tl) - [(t2-tl) + (t4-t3)]/2。
[0080]上述裝置可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn),以軟硬件結(jié)合的方式為例,請參考圖7,為本發(fā)明PTP系統(tǒng)時間同步裝置所在本地設(shè)備的硬件架構(gòu)示意圖,其基本硬件環(huán)境包括CPU、存儲器以及FPGA等其它硬件,其中存儲器中包括機(jī)器可讀指令,CPU讀取并執(zhí)行機(jī)器可讀指令結(jié)合FPGA執(zhí)行圖6中各單元的功能。
[0081]從以上各種方法和裝置的實施方式中可以看出,本發(fā)明根據(jù)獲取的報文時戳計算出與上游設(shè)備的表征時間的偏差值后,使本地設(shè)備與上游設(shè)備的時間保持一個恒定的偏差,在本地設(shè)備向下游設(shè)備進(jìn)行時間同步時,將這個恒定的差值補(bǔ)償?shù)?,從而保證PTP系統(tǒng)中上游設(shè)備與下游設(shè)備間的表征時間同步。
[0082]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
【權(quán)利要求】
1.一種精確時間協(xié)議PTP系統(tǒng)時間同步方法,其特征在于,所述方法包括: 根據(jù)與上游設(shè)備交互的時間同步消息的時戳獲取與上游設(shè)備表征時間的偏差值; 根據(jù)所述與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息。
2.如權(quán)利要求1所述的方法,其特征在于,所述同步信息包括同步Sync報文,所述根據(jù)與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息具體包括: 若向下游設(shè)備發(fā)送同步信息的端口的發(fā)送模式是單步模式,則判斷所述與上游設(shè)備表征時間的偏差值是否小于I秒,若是,將所述與上游設(shè)備表征時間的偏差值添加至所述Sync報文中,發(fā)送至下游設(shè)備。
3.如權(quán)利要求1所述的方法,其特征在于,所述同步信息包括Sync報文和跟隨Follow_Up報文,所述根據(jù)與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息具體包括: 若向下游設(shè)備發(fā)送同步信息的端口的發(fā)送模式是雙步模式, 在發(fā)送Sync報文之后,獲取發(fā)送所述Sync報文的第五時戳; 若判斷所述與上游設(shè)備表征時間的偏差值為正數(shù),將所述第五時戳的納秒值與所述與上游設(shè)備表征時間的偏差值的納秒值相加,并判斷相加后的數(shù)值是否需要向所述第五時戳的秒值進(jìn)位,若是,則將所述進(jìn)位后得到的余數(shù)作為更新后的第五時戳的納秒值,將進(jìn)位后的第五時戳的秒值作為更新后的第五時戳的秒值,否則,將所述相加后的數(shù)值作為所述更新后的第五時戳的納秒值,將所述第五時戳的秒值作為更新后的第五時戳的秒值; 若判斷所述與上游設(shè)備表征時間的偏差值為負(fù)數(shù),在所述第五時戳的納秒值大于或等于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,使用所述第五時戳的納秒值減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值作為所述更新后的第五時戳的納秒值,將所述第五時戳的秒值作為更新后的第五時戳的秒值;在所述第五時戳的納秒值小于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,將所述第五時戳的納秒值加上I秒再減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值得到更新后的第五時戳的納秒值,并將所述第五時戳的秒值減去I秒得到所述更新后的第五時戳的秒值; 將所述更新后的第五時戳的納秒值以及秒值添加至所述FolloW_Up報文中,發(fā)送至下游設(shè)備。
4.如權(quán)利要求3所述的方法,其特征在于,所述同步信息還包括延時回應(yīng)Delay_Resp報文,所述根據(jù)與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息具體包括: 在向下游設(shè)備發(fā)送Sync報文或FolloW_Up報文后,若接收到下游設(shè)備發(fā)送的延時請求Delay_Req報文,將接收Delay_Req報文時,與清零閾值寄存器對應(yīng)的計數(shù)器當(dāng)前的計數(shù)時間作為第六時戳t6的納秒值,將當(dāng)前系統(tǒng)內(nèi)部保存的TOD時間作為第六時戳t6的秒值; 若檢查所述與上游設(shè)備表征時間的偏差值是正數(shù),將所述第六時戳的納秒值與所述Offset的納秒值相加,并判斷相加后的數(shù)值是否需要進(jìn)位,若是,將進(jìn)位后得到的余數(shù)作為更新后的第六時戳的納秒值,將進(jìn)位后的秒值作為更新后的第六時戳的秒值;否則,將所述相加后的數(shù)值作為所述更新后的第六時戳的納秒值,將所述第六時戳的秒值作為更新后的第六時戳的秒值; 若判斷所述與上游設(shè)備表征時間的偏差值為負(fù)數(shù),在所述第六時戳的納秒值大于或等于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,使用所述第六時戳的納秒值減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值作為所述更新后的第六時戳的納秒值,將所述第六時戳的秒值作為更新后的第六時戳的秒值;在所述第六時戳的納秒值小于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,將所述第六時戳的納秒值加上I秒再減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值得到更新后的第六時戳的納秒值,并將所述第六時戳的秒值減去I秒得到所述更新后的第六時戳的秒值; 將所述更新后的第六時戳的納秒值以及秒值添加至所述Delay_ReSp報文中,發(fā)送至下游設(shè)備。
5.如權(quán)利要求1所述的方法,其特征在于,所述同步信息包括秒脈沖信號和TOD信息,所述根據(jù)與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息具體包括: 在接收到秒脈沖信號時,開啟計數(shù)器; 若所述與上游設(shè)備表征時間的偏差值為正數(shù),在所述計數(shù)器的計數(shù)時間到達(dá)所述與上游設(shè)備表征時間的偏差值的納秒值時,向下游設(shè)備發(fā)送秒脈沖信號,并且將接收到秒脈沖信號的時間的秒值組裝為TOD信息,在到達(dá)預(yù)設(shè)時間后,將組裝后的TOD信息通過TOD接口輸出至下游設(shè)備; 若所述表征時間的偏差值為負(fù)數(shù),在所述計數(shù)器的計數(shù)時間到達(dá)由I秒減去所述與上游設(shè)備表征時間的偏差值的絕對值時,向下游設(shè)備發(fā)送秒脈沖信號,并且將接收到秒脈沖信號的時間的秒值加上I秒作為當(dāng)前時間的秒值組裝為TOD信息,在到達(dá)預(yù)設(shè)時間后,將組裝后的TOD信息通過TOD接口輸出至下游設(shè)備。
6.如權(quán)利要求1所述的方法,其特征在于,所述與上游設(shè)備交互的時間同步消息包括由上游設(shè)備發(fā)送的Sync報文,所述方法還包括: 接收上游設(shè)備發(fā)送的Sync報文; 若所述上游設(shè)備發(fā)送所述Sync報文的端口為單步模式,獲取所述Sync報文中攜帶的初始第一時戳; 檢查所述Sync報文中的指定字段是否為默認(rèn)值,若是,將所述初始第一時戳作為第一時戳tl ;若否,將初始第一時戳tl結(jié)合指定字段的數(shù)值進(jìn)行修正,并得到第一時戳tl。
7.如權(quán)利要求6所述的方法,其特征在于,在接收上游設(shè)備發(fā)送的Sync報文后,若所述上游設(shè)備發(fā)送所述Sync報文的端口為雙步模式,在接收到上游設(shè)備發(fā)送的FolloW_Up報文時,獲取所述FolloW_Up報文中攜帶的第一時戳tl。
8.如權(quán)利要求6或7所述的方法,其特征在于,所述與上游設(shè)備交互的時間同步消息包括向上游設(shè)備發(fā)送的Delay_Req報文以及由上游設(shè)備發(fā)送的Delay_ReSp報文,所述方法還包括: 將接收所述Sync報文的端口對應(yīng)的清零閾值寄存器的數(shù)值設(shè)置為固定數(shù)值,用于在與所述清零閾值寄存器對應(yīng)的計數(shù)器的計數(shù)時長到達(dá)所述固定數(shù)值時,將所述計數(shù)器的計數(shù)清零并重新計數(shù); 接收到所述Sync報文時,將所述計數(shù)器當(dāng)前的計數(shù)時間作為第二時戳t2的納秒值,將內(nèi)部保存的當(dāng)前的日時間TOD時間作為所述第二時戳t2的秒值; 向上游設(shè)備發(fā)送Delay_Req報文,將發(fā)送Delay_Req報文時所述計數(shù)器的計數(shù)時間作為第三時戳t3的納秒值,將內(nèi)部保存的TOD時間作為第三時戳t3的秒值; 接收上游設(shè)備發(fā)送的Delay_ReSp報文,獲取上游設(shè)備接收到所述Delay_Req報文的第四時戳t4 ; 所述根據(jù)與上游設(shè)備交互的時間同步消息的時戳獲取與上游設(shè)備的表征時間的偏差值具體包括通過如下公式計算與上游設(shè)備的表征時間的偏差值: 與上游設(shè)備的表征時間的偏差值=(t2-tl) - [(t2-tl) + (t4-t3)]/2。
9.一種PTP系統(tǒng)時間同步裝置,其特征在于,所述裝置包括: 獲取單元,用于根據(jù)與上游設(shè)備交互的時間同步消息的時戳獲取與上游設(shè)備表征時間的偏差值; 更新單元,用于根據(jù)所述與上游設(shè)備表征時間的偏差值更新向下游設(shè)備發(fā)送的同步信息。
10.如權(quán)利要求9所述的裝置,其特征在于,所述同步信息包括同步Sync報文,所述更新單元具體用于: 若向下游設(shè)備發(fā)送同步信息的端口的發(fā)送模式是單步模式,則判斷所述與上游設(shè)備表征時間的偏差值是否小于I秒,若是,將所述與上游設(shè)備表征時間的偏差值添加至所述Sync報文中,發(fā)送至下游設(shè)備。
11.如權(quán)利要求9所述的裝置,其特征在于,所述同步信息包括Sync報文和跟隨Follow_Up報文,所述更新單元具體用于: 若向下游設(shè)備發(fā)送同步信息的端口的發(fā)送模式是雙步模式, 在發(fā)送Sync報文之后,獲取發(fā)送所述Sync報文的第五時戳; 若判斷所述與上游設(shè)備表征時間的偏差值為正數(shù),將所述第五時戳的納秒值與所述與上游設(shè)備表征時間的偏差值的納秒值相加,并判斷相加后的數(shù)值是否需要向所述第五時戳的秒值進(jìn)位,若是,則將所述進(jìn)位后得到的余數(shù)作為更新后的第五時戳的納秒值,將進(jìn)位后的第五時戳的秒值作為更新后的第五時戳的秒值,否則,將所述相加后的數(shù)值作為所述更新后的第五時戳的納秒值,將所述第五時戳的秒值作為更新后的第五時戳的秒值; 若判斷所述與上游設(shè)備表征時間的偏差值為負(fù)數(shù),在所述第五時戳的納秒值大于或等于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,使用所述第五時戳的納秒值減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值作為所述更新后的第五時戳的納秒值,將所述第五時戳的秒值作為更新后的第五時戳的秒值;在所述第五時戳的納秒值小于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,將所述第五時戳的納秒值加上I秒再減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值得到更新后的第五時戳的納秒值,并將所述第五時戳的秒值減去I秒得到所述更新后的第五時戳的秒值; 將所述更新后的第五時戳的納秒值以及秒值添加至所述FolloW_Up報文中,發(fā)送至下游設(shè)備。
12.如權(quán)利要求11所述的裝置,其特征在于,所述同步信息還包括Delay_ReSp報文,所述更新單元具體用于: 在向下游設(shè)備發(fā)送Sync報文或FolloW_Up報文后,若接收到下游設(shè)備發(fā)送的延時請求Delay_Req報文,將接收Delay_Req報文時,與清零閾值寄存器對應(yīng)的計數(shù)器當(dāng)前的計數(shù)時間作為第六時戳t6的納秒值,將當(dāng)前系統(tǒng)內(nèi)部保存的TOD時間作為第六時戳t6的秒值; 若檢查所述與上游設(shè)備表征時間的偏差值是正數(shù),將所述第六時戳的納秒值與所述Offset的納秒值相加,并判斷相加后的數(shù)值是否需要進(jìn)位,若是,將進(jìn)位后得到的余數(shù)作為更新后的第六時戳的納秒值,將進(jìn)位后的秒值作為更新后的第六時戳的秒值;否則,將所述相加后的數(shù)值作為所述更新后的第六時戳的納秒值,將所述第六時戳的秒值作為更新后的第六時戳的秒值; 若判斷所述與上游設(shè)備表征時間的偏差值為負(fù)數(shù),在所述第六時戳的納秒值大于或等于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,使用所述第六時戳的納秒值減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值作為所述更新后的第六時戳的納秒值,將所述第六時戳的秒值作為更新后的第六時戳的秒值;在所述第六時戳的納秒值小于所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值時,將所述第六時戳的納秒值加上I秒再減去所述與上游設(shè)備表征時間的偏差值的納秒值的絕對值得到更新后的第六時戳的納秒值,并將所述第六時戳的秒值減去I秒得到所述更新后的第六時戳的秒值; 將所述更新后的第六時戳的納秒值以及秒值添加至所述Delay_ReSp報文中,發(fā)送至下游設(shè)備。
13.如權(quán)利要求9所述的裝置,其特征在于,所述同步信息包括秒脈沖信號和TOD信息,所述更新單元具體用于: 在接收到秒脈沖信號時,開啟計數(shù)器; 若所述與上游設(shè)備表征時間的偏差值為正數(shù),在所述計數(shù)器的計數(shù)時間到達(dá)所述與上游設(shè)備表征時間的偏差值的納秒值時,向下游設(shè)備發(fā)送秒脈沖信號,并且將接收到秒脈沖信號的時間的秒值組裝為TOD信息,在到達(dá)預(yù)設(shè)時間后,將組裝后的TOD信息通過TOD接口輸出至下游設(shè)備; 若所述表征時間的偏差值為負(fù)數(shù),在所述計數(shù)器的計數(shù)時間到達(dá)由I秒減去所述與上游設(shè)備表征時間的偏差值的絕對值時,向下游設(shè)備發(fā)送秒脈沖信號,并且將接收到秒脈沖信號的時間的秒值加上I秒作為當(dāng)前時間的秒值組裝為TOD信息,在到達(dá)預(yù)設(shè)時間后,將組裝后的TOD信息通過TOD接口輸出至下游設(shè)備。
14.如權(quán)利要求9所述的裝置,其特征在于,所述與上游設(shè)備交互的時間同步消息包括由上游設(shè)備發(fā)送的Sync報文,所述裝置還包括: 時戳獲取單元,接收上游設(shè)備發(fā)送的Sync報文;若所述上游設(shè)備發(fā)送所述Sync報文的端口為單步模式,獲取所述Sync報文中攜帶的初始第一時戳;檢查所述Sync報文中的指定字段是否為默認(rèn)值,若是,將所述初始第一時戳作為第一時戳tl ;若否,將初始第一時戳tl結(jié)合指定字段的數(shù)值進(jìn)行修正,并得到第一時戳tl。
15.如權(quán)利要求14所述的裝置,其特征在于,所述時戳獲取單元還用于: 在接收上游設(shè)備發(fā)送的Sync報文后,若所述上游設(shè)備發(fā)送所述Sync報文的端口為雙步模式,在接收到上游設(shè)備發(fā)送的Follow_Up報文時,獲取所述Follow_Up報文中攜帶的第一時戳tl。
16.如權(quán)利要求14或15所述的裝置,其特征在于,所述與上游設(shè)備交互的時間同步消息包括向上游設(shè)備發(fā)送的Delay_Req報文以及由上游設(shè)備發(fā)送的Delay_ReSp報文,所述裝置還包括: 設(shè)置單元,用于將接收所述Sync報文的端口對應(yīng)的清零閾值寄存器的數(shù)值設(shè)置為固定數(shù)值,以使與所述清零閾值寄存器對應(yīng)的計數(shù)器的計數(shù)時長到達(dá)所述固定數(shù)值時,將所述計數(shù)器的計數(shù)清零并重新計數(shù); 所述時戳獲取單元還用于: 接收到所述Sync報文時,將所述計數(shù)器當(dāng)前的計數(shù)時間作為第二時戳t2的納秒值,將內(nèi)部保存的TOD時間作為第二時戳t2的秒值;向上游設(shè)備發(fā)送Delay_Req報文,將發(fā)送Delay_Req報文時所述計數(shù)器的計數(shù)時間作為第三時戳t3的納秒值,將內(nèi)部保存的TOD時間作為第三時戳t3的秒值;接收上游設(shè)備發(fā)送的Delay_ReSp報文,獲取上游設(shè)備接收到所述Delay_Req報文的第四時戳t4 ; 所述獲取單元具體用于通過如下公式計算與上游設(shè)備的表征時間的偏差值: 與上游設(shè)備的表征時間的偏差值=(t2-tl) - [(t2-tl) + (t4_t3)]/2。
【文檔編號】H04L7/00GK104486058SQ201410794956
【公開日】2015年4月1日 申請日期:2014年12月18日 優(yōu)先權(quán)日:2014年12月18日
【發(fā)明者】劉靖 申請人:杭州華三通信技術(shù)有限公司