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