本發(fā)明涉及通信技術領域,尤其涉及一種自適應時鐘恢復方法及裝置。
背景技術:
對于tdm(timedivisionmultiplexing,時分復用)業(yè)務,可以配置多種業(yè)務時鐘模式,包括系統(tǒng)時鐘、差分時鐘和自適應時鐘,并且對時鐘同步要求較高。自適應時鐘模式不需要參考時鐘,可以根據(jù)通信網(wǎng)絡中收到報文的時戳數(shù)據(jù)自適應地恢復時鐘,達到組網(wǎng)時鐘的同步。
目前ptn(packettransportnetwork,分組傳送網(wǎng))設備中是將tdm業(yè)務數(shù)據(jù)采用以太網(wǎng)業(yè)務的封裝形式封裝后進行傳送,其使用特定芯片或者基于nios系統(tǒng)(嵌入式處理器)架構來實現(xiàn)自適應時鐘恢復功能,一般實現(xiàn)該功能的模塊都會被加載到特定的芯片或者fpga(fieldprogrammablegatearray,現(xiàn)場可編程門陣列)中,在fpga上集成軟核功能,通過軟件的配置以及硬件的處理來恢復自適應時鐘,具體為,軟件配合硬件的處理要求使用中斷的方式定時將基準時間累加值和時戳數(shù)據(jù)等信息傳輸給硬件,然后再由硬件將時戳值恢復成時鐘信號。
但這樣的處理方式需要耗費很多硬件資源,對硬件的要求也相對較高,同時,采用中斷的方式會使得整個單板軟件的設計受到制約,從而無法適應市場需求。此外,在進行自適應時鐘恢復的過程中,因為網(wǎng)絡故障、網(wǎng)絡丟包、硬件不穩(wěn)定性等問題,使得數(shù)據(jù)在傳輸或者存儲的過程中會出現(xiàn)錯誤,而現(xiàn)有的自適應時鐘恢復方式由于不能對報文中的異常時戳數(shù)據(jù)進行修正,從而影響時鐘恢復的準確性和穩(wěn)定性,降低時鐘恢復時的運算效率。
技術實現(xiàn)要素:
本發(fā)明要解決的主要技術問題是,提供一種自適應時鐘恢復方法及裝置,以解決現(xiàn)有技術中在進行自適應時鐘恢復時無法對報文中的異常時戳數(shù)據(jù)進行 修正,從而影響時鐘恢復的準確性和穩(wěn)定性,降低時鐘恢復時的運算效率的技術問題。
為解決上述技術問題,本發(fā)明提供一種自適應時鐘恢復方法,包括:
檢測任一緩沖區(qū)中是否存滿時戳數(shù)據(jù),所述時戳數(shù)據(jù)包括序列號和時間戳;
若存滿時戳數(shù)據(jù),獲取所述緩沖區(qū)中的各時戳數(shù)據(jù);
對獲取的時戳數(shù)據(jù)進行修正使得各時戳數(shù)據(jù)的序列號按照預設間隔排列、時間戳按照時間先后順序排列;
根據(jù)修正結果進行自適應時鐘恢復。
在本發(fā)明一種實施例中,所述對獲取的時戳數(shù)據(jù)進行修正包括:
判斷所述緩沖區(qū)中各時戳數(shù)據(jù)的序列號是否按照預設間隔排列;
若未按照預設間隔排列,對未按照預設間隔排列的時戳數(shù)據(jù)進行修正。
在本發(fā)明一種實施例中,對未按照預設間隔排列的時戳數(shù)據(jù)按照如下方式進行修正:
后一時戳數(shù)據(jù)的序列號=前一時戳數(shù)據(jù)的序列號+序列號差值;
后一時戳數(shù)據(jù)的時間戳=前一時戳數(shù)據(jù)的時間戳+報文時延;
根據(jù)上述修正方式,對后續(xù)時戳數(shù)據(jù)依次進行修正。
在本發(fā)明一種實施例中,所述根據(jù)修正結果進行自適應時鐘恢復具體為:
根據(jù)修正結果獲取時間戳最集中的時戳數(shù)據(jù);
將獲取的時戳數(shù)據(jù)進行自適應時鐘恢復。
在本發(fā)明一種實施例中,所述根據(jù)修正結果進行自適應時鐘恢復具體為:
將根據(jù)修正結果計算出分頻因子;
根據(jù)所述分頻因子進行自適應時鐘恢復。
在本發(fā)明一種實施例中,在所述檢測任一緩沖區(qū)中是否存滿時戳數(shù)據(jù)之前還包括:
當檢測到任一端口配置自適應時鐘模式的時分復用業(yè)務時,啟用自適應時鐘恢復功能。
本發(fā)明還一提供了一種自適應時鐘恢復裝置,包括:
緩沖區(qū)檢測模塊,用于檢測任一緩沖區(qū)中是否存滿時戳數(shù)據(jù),所述時戳數(shù)據(jù)包括序列號和時間戳;
獲取模塊,用于若存滿時戳數(shù)據(jù),獲取所述緩沖區(qū)中的各時戳數(shù)據(jù);
修正模塊,用于對獲取的時戳數(shù)據(jù)進行修正使得各時戳數(shù)據(jù)的序列號按照預設間隔排列、時間戳按照時間先后順序排列;
恢復模塊,用于根據(jù)修正結果進行自適應時鐘恢復。
在本發(fā)明一種實施例中,所述修正模塊包括:
判斷子模塊,用于判斷所述緩沖區(qū)中各時戳數(shù)據(jù)的序列號是否按照預設間隔排列;
修正子模塊,用于若未按照預設間隔排列,對未按照預設間隔排列的時戳數(shù)據(jù)進行修正。
在本發(fā)明一種實施例中,對未按照預設間隔排列的時戳數(shù)據(jù)按照以下方式進行修正:
后一時戳數(shù)據(jù)的序列號=前一時戳數(shù)據(jù)的序列號+序列號差值;
后一時戳數(shù)據(jù)的時間戳=前一時戳數(shù)據(jù)的時間戳+報文時延;
根據(jù)上述修正方式,對后續(xù)時戳數(shù)據(jù)依次進行修正。
在本發(fā)明一種實施例中,所述恢復模塊包括:
獲取子模塊,用于根據(jù)修正結果獲取時間戳最集中的一組時戳數(shù)據(jù);
恢復子模塊,用于將獲取的時戳數(shù)據(jù)進行自適應時鐘恢復。
在本發(fā)明一種實施例中,所述恢復模塊包括:
運算子模塊,用于根據(jù)修正結果計算出分頻因子;
恢復子模塊,用于根據(jù)所述分頻因子進行自適應時鐘恢復。
在本發(fā)明一種實施例中,還包括:
業(yè)務檢測模塊,用于在檢測任一緩沖區(qū)中是否存滿時戳數(shù)據(jù)之前,當檢測到任一端口配置自適應時鐘模式的時分復用業(yè)務時,啟用自適應時鐘恢復功能。
本發(fā)明的有益效果是:
本發(fā)明提供了一種自適應時鐘恢復方法,包括:檢測任一緩沖區(qū)中是否存滿時戳數(shù)據(jù),該時戳數(shù)據(jù)包括序列號和時間戳;若存滿時戳數(shù)據(jù),則獲取緩沖區(qū)中的各時戳數(shù)據(jù),并對獲取的時戳數(shù)據(jù)進行修正使得各時戳數(shù)據(jù)的序列號按照預設間隔排列、時間戳按照時間先后順序排列;根據(jù)修正結果進行自適應時鐘恢復。通過本發(fā)明的實施,在進行自適應時鐘恢復的過程中,通過對異常時戳數(shù)據(jù)進行修正,將未按照設定規(guī)則排序的時戳數(shù)據(jù)修正成理想時戳數(shù)據(jù),在提高時鐘恢復效率的同時也提高了時鐘恢復的穩(wěn)定性。
本發(fā)明還提供了一種自適應時鐘恢復裝置,將原本由硬件實現(xiàn)的自適應時鐘恢復功能通過該裝置來完實現(xiàn),從而降低對硬件的需求,不占用額外的硬件資源以降低設備成本,進而提高設計的靈活度。
附圖說明
圖1為本發(fā)明實施例一提供的一種自適應時鐘恢復方法流程圖;
圖2為本發(fā)明實施例一提供的ptn網(wǎng)絡中自適應時鐘對tdm業(yè)務恢復過程示意圖;
圖3為本發(fā)明實施例一提供的一種啟用自適應時鐘恢復功能的流程圖;
圖4為本發(fā)明實施例二提供的一種自適應時鐘恢復裝置示意圖。
具體實施方式
下面通過具體實施方式結合附圖對本發(fā)明作進一步詳細說明。
實施例一:
首先,對本實施例中提到的是時戳數(shù)據(jù)進行說明,該時戳數(shù)據(jù)是64bit的數(shù)據(jù),前16bit是時戳數(shù)據(jù)的序列號,后48bit是時戳數(shù)據(jù)的時間戳;此外,該時戳數(shù)據(jù)包含于傳輸?shù)膱笪闹小?/p>
然后本實施例提供了一種自適應時鐘恢復方法,請參見圖1,其具體恢復步驟如下:
s101,檢測任一緩沖區(qū)中是否存滿時戳數(shù)據(jù),該時戳數(shù)據(jù)包括序列號和時 間戳;
s102,若存滿時戳數(shù)據(jù),獲取緩沖區(qū)中的各時戳數(shù)據(jù);
s103,對獲取的時戳數(shù)據(jù)進行修正使得各時戳數(shù)據(jù)的序列號按照預設間隔排列、時間戳按照時間先后順序排列;
s104,根據(jù)修正結果進行自適應時鐘恢復。
基于上述自適應時鐘恢復步驟,在進行自適應時鐘恢復的過程中,通過對異常時戳數(shù)據(jù)進行修正,將未按照設定規(guī)則排序的時戳數(shù)據(jù)修正成理想時戳數(shù)據(jù),在提高時鐘恢復效率的同時也提高了時鐘恢復的穩(wěn)定性。其中,異常時戳數(shù)據(jù)是指,在對報文中的時戳數(shù)據(jù)進行傳輸時由于網(wǎng)絡故障等原因?qū)е虏糠謹?shù)據(jù)丟包,或者在向硬件存儲時戳數(shù)據(jù)時因為硬件的不穩(wěn)定性導致部分數(shù)據(jù)出現(xiàn)錯誤,使得部分時戳數(shù)據(jù)中的序列號和時間戳不能按照正常規(guī)則存儲。
具體的,對于自適應時鐘的恢復,請參見圖2,其原理如下:
ptn接入設備將e1業(yè)務流分割成若干個數(shù)據(jù)段,然后將若干個數(shù)據(jù)段按標準格式封裝到ptn網(wǎng)絡的多個承載報文中,tdm業(yè)務以報文形式通過ptn網(wǎng)絡依次傳送至另一ptn接入設備,該報文中攜帶時戳數(shù)據(jù),時戳數(shù)據(jù)中包括序列號和接收報文時的時間點;然后另一ptn接入設備對接收的各報文進行拆分,得到若干個數(shù)據(jù)段,并通過若干數(shù)據(jù)段恢復出e1業(yè)務流。
進一步地,s101步驟中的緩沖區(qū)為邏輯fpga中的片區(qū),該邏輯fpga為硬件,總共分配4個片區(qū)來存儲時戳數(shù)據(jù),每個片區(qū)可存儲255個時戳數(shù)據(jù),且只有在一個片區(qū)全部存滿的情況下,才允許軟件讀取整片數(shù)據(jù),即當檢測到其中一個片區(qū)滿標志位被置位,則軟件會取出該片區(qū)所有的時戳數(shù)據(jù)。此外,本實施例中的邏輯fpga僅用于對時戳數(shù)據(jù)進行存儲,對于數(shù)據(jù)的處理是通過軟件實現(xiàn)的;本實施例中的時戳數(shù)據(jù)由序列號和時間戳組成,且各時戳數(shù)據(jù)的序列號理想情況下是等間距的(規(guī)律性的依次遞增或依次遞減),時間戳是此刻收到報文的時間點。需要明白的是,上述4個片區(qū)、255個其僅用于對本實施例做出說明,不能認定具體取值僅限于上述說明。
在s102步驟中,獲取到緩沖區(qū)中的所有時戳數(shù)據(jù)后,需要對各時戳數(shù)據(jù)的序列號按照遞增或遞減的形式進行排序,其目的在于,通過將時戳數(shù)據(jù)的序列號按照設定規(guī)則排序,識別出緩沖區(qū)中的所有時戳數(shù)據(jù)的序列號之間是否等間 距、時間戳是否按照從小到大的順序排列,從而判斷在報文傳輸?shù)倪^程中是否出現(xiàn)丟包或者因為硬件的不穩(wěn)定導致數(shù)據(jù)存儲錯誤的情況。所述等間距即為各時戳數(shù)據(jù)的序列號之間呈等差數(shù)列,時間戳與序列號一一對應,因此,若序列號按照從大到小的順序排列,則序列號大的時間戳相對較?。蝗粜蛄刑柊凑諒男〉酱蟮捻樞蚺帕?,則序列號小的時間戳相應較小。
對獲取的所有時戳數(shù)據(jù)排序后,檢測所有時戳數(shù)據(jù)的序列號是否均滿足等差數(shù)列規(guī)律,若滿足等差數(shù)列規(guī)律,說明該緩沖區(qū)中所有的時戳數(shù)據(jù)在傳輸時都是連續(xù)的,在進行報文傳輸?shù)倪^程中,未出現(xiàn)丟包或硬件不穩(wěn)定的情況;相反,若存在序列號不滿足等差數(shù)列規(guī)律的時戳數(shù)據(jù),則表明在進行報文傳輸?shù)倪^程,有些報文丟包或?qū)笪闹械臅r戳數(shù)據(jù)進行存儲時因為硬件原因?qū)е潞罄m(xù)報文中的時戳數(shù)據(jù)的序列號不能滿足等差數(shù)列規(guī)律。應該明白的是,在進行報文傳輸?shù)倪^程中,由于前后報文中的序列號均等間距,且序列號與時戳值一一對應,不會因為丟包或者硬件的不穩(wěn)定性影響后續(xù)時戳數(shù)據(jù)中的序列號和時間戳。因此,若獲取的時戳數(shù)據(jù)不能滿足等差數(shù)列規(guī)律,就可說明時戳數(shù)據(jù)出現(xiàn)異常,如丟包或者硬件不穩(wěn)定性,從而影響整個時戳數(shù)據(jù)的連續(xù)性。
進一步地,在s103步驟中,預設間隔是指各序列號之間不完全等間隔,例如:在某一時間段中,時戳數(shù)據(jù)的序列號之間間隔為a;在該時間段之后,可將預設間隔調(diào)整為b,使得后續(xù)的時戳數(shù)據(jù)的序列號間隔變成b。優(yōu)選地,該預設間隔為等差數(shù)列中的比值,即前后時戳數(shù)據(jù)的序列號差值,時戳數(shù)據(jù)滿足等差數(shù)列規(guī)律,下文將以等差數(shù)列規(guī)律為例對時戳數(shù)據(jù)進行修正的過程進行說明。
當發(fā)現(xiàn)獲取的所有時戳數(shù)據(jù)中出現(xiàn)不滿足等差數(shù)列規(guī)律的時戳數(shù)據(jù)時,對這些時戳數(shù)據(jù)進行修正,將修正后的時戳數(shù)據(jù)作為下一時戳數(shù)據(jù),丟棄之前存儲的時戳數(shù)據(jù),即將未滿足等差數(shù)列規(guī)律的時戳數(shù)據(jù)丟棄,具體按照如下公式進行修正:
后一時戳數(shù)據(jù)的序列號=前一時戳數(shù)據(jù)的序列號+序列號差值;
后一時戳數(shù)據(jù)的時間戳=前一時戳數(shù)據(jù)的時間戳+報文的時延。
上述公式針對當前不滿足等差數(shù)列規(guī)律的時戳數(shù)據(jù)進行修正,對于該時戳數(shù)據(jù)之后的時戳數(shù)據(jù),若同樣不滿足等差數(shù)列規(guī)律,也按照上述公式進行修正,對于后一時戳數(shù)據(jù),其前一時戳數(shù)據(jù)的序列號即為當前時戳數(shù)據(jù)的序列號,時間戳即為當前時戳數(shù)據(jù)的時間戳。應該明白的是,對于不滿足等差數(shù)列規(guī)律的 時戳數(shù)據(jù),本實施采用的修正方式是將其以理想的方式進行修正,并非修正成實際意義上丟掉的時戳數(shù)據(jù)。該修正方式可以將前后相差較大的時戳數(shù)據(jù)按照理想狀態(tài)減小差距,但修正后的數(shù)據(jù)與丟掉的時戳數(shù)據(jù)依然存在誤差,其目的僅是將不滿足的時戳數(shù)據(jù)盡可能的修正成滿足要求的時戳數(shù)據(jù),從而最小可能的降低時鐘恢復的誤差。
具體的,上述公式完整過程如下:
timesequence_2=timesequence_1+disstgvalue
其中,timesequence_1為前一時戳數(shù)據(jù)的序列號;timesequence_2為后一時戳數(shù)據(jù)的序列號;timestamp_1為前一時戳數(shù)據(jù)的時間戳;timestamp_2為后一時戳數(shù)據(jù)的時間戳;disstgvalue為后一時戳數(shù)據(jù)的序列號與前一時戳數(shù)據(jù)的序列號之間的差值;framespeed為e1幀速率,其采用同步tdm技術將30個語音信道和2個控制信道復合在一條2.048mbits/s的高速信道上,一幀的長度為125us;conjnum為級聯(lián)數(shù),其取值范圍為1-40。
進一步地,對不滿足等差數(shù)列規(guī)律的時戳數(shù)據(jù)進行修正后,使得獲取的所有時戳數(shù)據(jù)的序列號都滿足等差數(shù)列規(guī)律,即各時戳數(shù)據(jù)的序列號之間間距相等,其時間戳也依次由小到大遞增。然后,在s104步驟中,修正結果是指將不滿足等差數(shù)列規(guī)律的時戳數(shù)據(jù)修正后,滿足序列號之間間距相等、時間戳依次遞增的所有獲取的時戳數(shù)據(jù),從這些時戳數(shù)據(jù)中獲取時間戳最集中的一組時戳數(shù)據(jù),并將該組時戳數(shù)據(jù)按照預設算法進行計算,得到分頻因子,然后根據(jù)分頻因子對自適應時鐘進行恢復。從這些時戳數(shù)據(jù)中獲取時間戳最集中的一組時戳數(shù)據(jù),其目的在于,這一組或一片時戳數(shù)據(jù)可以正常反應出這段時間內(nèi)時間的變化情況,在進行時鐘恢復時時間誤差也相對較小,從而更精準的對自適應時鐘進行恢復。需要注意的是,所述預設算法包括但不限于自適應時鐘恢復算法。
進一步地,在s101步驟之前,還包括創(chuàng)建自適應時鐘模式的tdm業(yè)務,在創(chuàng)建的過程中,配置報文的級聯(lián)數(shù)、業(yè)務通道編號以及自適應時鐘恢復的相關信息。然后對各個端口進行檢測,判斷該端口是否傳輸自適應時鐘模式的tdm業(yè)務,若是自適應時鐘模式的tdm業(yè)務,則啟用自適應時鐘恢復功能,請參見圖3,具體啟用過程如下:
s301,遍歷各端口并判斷是否傳輸tdm業(yè)務,若是,執(zhí)行s302,若否,執(zhí)行s301;
s302,檢測該tdm業(yè)務模式是否為自適應時鐘模式,若是,執(zhí)行s303,若否,執(zhí)行s302;
s303,啟用自適應時鐘恢復功能。
在啟用自用適應時鐘恢復后,才會執(zhí)行圖1中的流程。具體的,在tdm業(yè)務中包括報文的級聯(lián)數(shù)和業(yè)務通道編號,其中,根據(jù)業(yè)務通道編號和級聯(lián)數(shù)才能獲取對應時戳數(shù)據(jù),從而實現(xiàn)圖1中整個處理流程。根據(jù)級聯(lián)數(shù)為邏輯fpga配置丟包策略值(即序列號差值)。其中,丟包策略值的具體計算公式如下:
其中,disstgvalue為丟包策略值(即序列號差值);framespeed為e1幀速率,8000幀/s;timestampnum為一個片區(qū)存儲的時間戳個數(shù),共255個;conjnum為級聯(lián)數(shù),其取值范圍為1-40。
邏輯fpga根據(jù)上述計算公式得出的丟包策略值,將tdm業(yè)務中報文的時戳數(shù)據(jù)進行存儲,從而使得時戳數(shù)據(jù)滿足等差數(shù)列規(guī)律。
實施例二:
本實施例提供了一種自適應時鐘恢復裝置,請參見圖4,該裝置包括:
緩沖區(qū)檢測模塊401,用于檢測任一緩沖區(qū)中是否存滿時戳數(shù)據(jù),該時戳數(shù)據(jù)包括序列號和時間戳;
獲取模塊402,用于若存滿時戳數(shù)據(jù),獲取緩沖區(qū)中的各時戳數(shù)據(jù);
修正模塊403,用于對獲取的時戳數(shù)據(jù)進行修正使得各時戳數(shù)據(jù)的序列號按照預設間隔排列、時間戳按照時間先后順序排列;
恢復模塊404,用于根據(jù)修正結果進行自適應時鐘恢復。
其中,預設間隔是指各序列號之間不完全等間隔,例如:在某一時間段中,時戳數(shù)據(jù)的序列號之間間隔為a;在該時間段之后,可將預設間隔調(diào)整為b,使得后續(xù)的時戳數(shù)據(jù)的序列號間隔變成b。優(yōu)選地,該預設間隔為等差數(shù)列中的比值,即前后時戳數(shù)據(jù)的序列號差值,時戳數(shù)據(jù)滿足等差數(shù)列規(guī)律,下文將以等 差數(shù)列規(guī)律為例對時戳數(shù)據(jù)進行修正的過程進行說明。
通過本實施例的自適應時鐘恢復裝置,該自適應時鐘恢復裝置應用于ptn設備中,可以在軟件層面進行自適應時鐘恢復,使其在未啟用自適應時鐘恢復功能的情況下,不運行本裝置;當啟用后,使其通過軟件實現(xiàn)完整的自適應時鐘恢復功能,從而不占用額外的硬件資源,降低設備成本,進而提高設計的靈活度。
該裝置還包括業(yè)務檢測模塊405,該業(yè)務檢測模塊405用于在檢測任一緩沖區(qū)中是否存滿時戳數(shù)據(jù)之前,當檢測到任一端口配置自適應時鐘模式的時分復用業(yè)務時,啟用自適應時鐘恢復功能。
具體的,在通過自適應時鐘恢復裝置實現(xiàn)時鐘恢復的功能時,首先將裝置初始化,如初始化裝至內(nèi)部的喂狗操作,初始化ip時鐘相關的組件,初始化狀態(tài)機等。其中,喂狗操作是指清空看門狗計數(shù)器,具體為,在程序正常運行時,需要在看門狗計數(shù)器達到最大值之前將其清空,使其重新開始計數(shù)。然后,啟用裝置中的100ms定時周期的定時器,定時查詢端口是否傳輸tdm業(yè)務,且業(yè)務時鐘是否為自適應時鐘類型;同時定時對邏輯fpga的緩沖區(qū)進行檢測,確認緩沖區(qū)中的時戳數(shù)據(jù)是否存滿。與此同時,啟用裝置中的另一定時器,該定時器定時周期為20ms,用于實現(xiàn)計時的功能,執(zhí)行網(wǎng)絡選包、丟包檢測、時戳數(shù)據(jù)收齊后的對比計算等操作,時鐘每個階段的狀態(tài)切換等都是按照該計數(shù)單位為基礎來進行的。本實施例中定時器定時周期包括但不限于上述數(shù)值,可根據(jù)實際需要進行合理設置,這里不做限定。
初始化完成后開始定時,然后單板軟件接收tdm業(yè)務創(chuàng)建指令,并指派給sdk(softwaredevelopment,軟件開發(fā)工具包)進行tdm業(yè)務創(chuàng)建。sdk在創(chuàng)建自適應時鐘模式的tdm業(yè)務過程中,會配置針對自適應時鐘恢復裝置的信息,并配置報文的級聯(lián)數(shù)和業(yè)務通道編號,并將配置的級聯(lián)數(shù)和業(yè)務通道編號傳輸給自適應時鐘恢復裝置,然后裝置根據(jù)級聯(lián)數(shù)為邏輯fpga配置丟包策略值,邏輯fpga根據(jù)丟包策略值對時戳數(shù)據(jù)進行存儲。該丟包策略值請參見實施例一,這里不再贅述。當裝置檢測到各端口中傳輸了自適應時鐘模式的tdm業(yè)務,就會開啟自適應時鐘裝置對時戳數(shù)據(jù)進行處理并進行時鐘恢復。
具體的,對于自適應時鐘的恢復,請參見圖2,其原理如下:
ptn接入設備將e1業(yè)務流(即需要承載的tdm業(yè)務)分割成若干個數(shù)據(jù) 段,然后將若干個數(shù)據(jù)段按標準格式封裝到ptn網(wǎng)絡的多個承載報文中,tdm業(yè)務以報文形式通過ptn網(wǎng)絡依次傳送至另一ptn接入設備,該報文中攜帶時戳數(shù)據(jù),時戳數(shù)據(jù)中包括序列號和接收報文時的時間點;然后另一ptn接入設備對接收的各報文進行拆分,得到若干個數(shù)據(jù)段,并通過若干數(shù)據(jù)段恢復出e1業(yè)務流。
進一步地,上述緩沖區(qū)為邏輯fpga中的片區(qū),該邏輯fpga為硬件,總共分配4個片區(qū)來存儲時戳數(shù)據(jù),每個片區(qū)可存儲255個時戳數(shù)據(jù),且只有在一個片區(qū)全部存滿的情況下,才允許軟件讀取整片數(shù)據(jù),即當檢測到其中一個片區(qū)滿標志位被置位,則軟件會取出該片區(qū)所有的時戳數(shù)據(jù)。此外,本實施例中的邏輯fpga僅用于對時戳數(shù)據(jù)進行存儲,對于數(shù)據(jù)的處理是通過軟件實現(xiàn)的;本實施例中的時戳數(shù)據(jù)由序列號和時間戳組成,且各時戳數(shù)據(jù)的序列號理想情況下是等間距的(規(guī)律性的依次遞增或依次遞減),時間戳是此刻收到報文的時間點。需要明白的是,上述4個片區(qū)、255個其僅用于對本實施例做出說明,不能認定具體取值僅限于上述說明。
獲取模塊402獲取到緩沖區(qū)中的所有時戳數(shù)據(jù)后,需要對各時戳數(shù)據(jù)的序列號按照遞增或遞減的形式進行排序,其目的在于,通過將時戳數(shù)據(jù)的序列號按照設定規(guī)則排序,識別出緩沖區(qū)中的所有時戳數(shù)據(jù)的序列號之間是否等間距、時間戳是否按照從小到大的順序排列,從而判斷在報文傳輸?shù)倪^程中是否出現(xiàn)丟包的情況。所述等間距即為各時戳數(shù)據(jù)的序列號之間呈等差數(shù)列,時間戳與序列號一一對應,因此,若序列號按照從大到小的順序排列,則序列號大的時間戳相對較小;若序列號按照從小到大的順序排列,則序列號小的時間戳相應較小。
對獲取的所有時戳數(shù)據(jù)排序后,檢測所有時戳數(shù)據(jù)的序列號是否均滿足等差數(shù)列規(guī)律,若滿足等差數(shù)列規(guī)律,說明該緩沖區(qū)中所有的時戳數(shù)據(jù)在傳輸時都是連續(xù)的,在進行報文傳輸?shù)倪^程中未出現(xiàn)丟包的情況,或者在數(shù)據(jù)存儲的過程中未出現(xiàn)錯誤;相反,若存在序列號不滿足等差數(shù)列規(guī)律的時戳數(shù)據(jù),則表明時戳數(shù)據(jù)出現(xiàn)異常,導致后續(xù)報文中的時戳數(shù)據(jù)的序列號不能滿足等差數(shù)列規(guī)律。應該明白的是,在進行報文傳輸?shù)倪^程中,由于前后報文中的序列號均等間距,且序列號與時戳值一一對應,不會因為丟包或硬件的不穩(wěn)定性而影響后續(xù)時戳數(shù)據(jù)中的序列號和時間戳。
進一步地,修正模塊403包括:
判斷子模塊4031,用于判斷所述緩沖區(qū)中各時戳數(shù)據(jù)的序列號是否按照預設間隔排列;
修正子模塊4032,用于若未按照預設間隔排列,對未按照預設間隔排列的時戳數(shù)據(jù)進行修正。
當判斷子模塊4031發(fā)現(xiàn)獲取的所有時戳數(shù)據(jù)中出現(xiàn)未按照預設間隔排列的時戳數(shù)據(jù)時,對這些時戳數(shù)據(jù)進行修正,將修正后的時戳數(shù)據(jù)作為下一時戳數(shù)據(jù),丟棄之前存儲的時戳數(shù)據(jù),即將未按照預設間隔排列的時戳數(shù)據(jù)丟棄,具體按照如下公式進行修正:
后一時戳數(shù)據(jù)的序列號=前一時戳數(shù)據(jù)的序列號+序列號差值;
后一時戳數(shù)據(jù)的時間戳=前一時戳數(shù)據(jù)的時間戳+報文的時延。
上述公式針對當前未按照預設間隔排列的時戳數(shù)據(jù)進行修正,對于該時戳數(shù)據(jù)之后的時戳數(shù)據(jù),若同樣未按照預設間隔排列,也以上述公式進行修正,對于后一時戳數(shù)據(jù),其前一時戳數(shù)據(jù)的序列號即為當前時戳數(shù)據(jù)的序列號,時間戳即為當前時戳數(shù)據(jù)的時間戳。應該明白的是,對于未按照預設間隔排列的時戳數(shù)據(jù),本實施采用的修正方式是將其以理想的方式進行修正,并非修正成實際意義上丟掉的時戳數(shù)據(jù)。該修正方式可以將前后相差較大的時戳數(shù)據(jù)按照理想狀態(tài)減小差距,但修正后的數(shù)據(jù)與丟掉的時戳數(shù)據(jù)依然存在誤差,其目的僅是將不滿足的時戳數(shù)據(jù)盡可能的修正成滿足要求的時戳數(shù)據(jù),從而最小可能的降低時鐘恢復的誤差。
具體的,上述公式完整過程如下:
timesequence_2=timesequence_1+disstgvalue
其中,timesequence_1為前一時戳數(shù)據(jù)的序列號;timesequence_2為后一時戳數(shù)據(jù)的序列號;timestamp_1為前一時戳數(shù)據(jù)的時間戳;timestamp_2為后一時戳數(shù)據(jù)的時間戳;disstgvalue為后一時戳數(shù)據(jù)的序列號與前一時戳數(shù)據(jù)的序列號之間的差值;framespeed為e1幀速率,其采用同步tdm技術將30個語音信道和2個控制信道符合在一條2.048mbits/s的高速信道上,一幀的長度為 125us;conjnum為級聯(lián)數(shù),其取值范圍為1-40。
進一步地,對未按照預設間隔排列的時戳數(shù)據(jù)進行修正后,使得獲取的所有時戳數(shù)據(jù)的序列號都按照預設間隔排列,其時間戳也按照時間先后順序排列。
然后,恢復模塊404包括:
獲取子模塊4041,用于根據(jù)修正結果獲取時間戳最集中的一組時戳數(shù)據(jù);
恢復子模塊4042,用于將獲取的時戳數(shù)據(jù)進行自適應時鐘恢復。
或者,恢復模塊包括:
運算子模塊,用于根據(jù)修正結果計算出分頻因子,具體為,將所述一組時戳數(shù)據(jù)按照預設算法進行計算,得到分頻因子;
恢復子模塊,用于根據(jù)所述分頻因子進行自適應時鐘恢復。
獲取子模塊4041中的修正結果是指將不滿足等差數(shù)列規(guī)律的時戳數(shù)據(jù)修正后,滿足序列號之間間距相等、時間戳依次遞增的所有獲取的時戳數(shù)據(jù),從這些時戳數(shù)據(jù)中獲取時間戳最集中的一組時戳數(shù)據(jù),并將該組時戳數(shù)據(jù)按照預設算法進行計算,得到分頻因子,然后根據(jù)分頻因子對自適應時鐘進行恢復。從這些時戳數(shù)據(jù)中獲取時間戳最集中的一組時戳數(shù)據(jù),其目的在于,這一組或一片時戳數(shù)據(jù)可以正常反應出這段時間內(nèi)時間的變化情況,在進行時鐘恢復時時間誤差也相對較小,從而更精準的對自適應時鐘進行恢復。需要注意的是,所述預設算法包括但不限于自適應時鐘恢復算法。
顯然,本領域的技術人員應該明白,上述本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲介質(zhì)(rom/ram、磁碟、光盤)中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。所以,本發(fā)明不限制于任何特定的硬件和軟件結合。
以上內(nèi)容是結合具體的實施方式對本發(fā)明所作的進一步詳細說明,不能認定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術領域的普通技術 人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干簡單推演或替換,都應當視為屬于本發(fā)明的保護范圍。