專利名稱:一種單向廣播文件傳輸中的前向糾錯方法
技術領域:
本發(fā)明涉及一種單向廣播文件傳輸中的前向糾錯方法。
當需要傳輸一個大文件時,一般情況下不可能將這個大文件作為一個數(shù)據(jù)包向外傳輸,通常做法是將這個大文件拆成幾個小的數(shù)據(jù)塊、對該數(shù)據(jù)塊編碼、通過某單向廣播傳輸信道對外傳輸。在接收過程中,若一個數(shù)據(jù)塊發(fā)生誤碼,則需要對該數(shù)據(jù)塊糾錯、拼接、還原到原始文件。若某時刻突發(fā)一個強烈的干擾,導致其中一個數(shù)據(jù)塊被破壞的內(nèi)容較多而無法糾正,那么這個文件就無法正確還原,只好等待下一輪的該文件的數(shù)據(jù)塊糾錯、拼接、還原全過程。在信號差的情況下,可能需要2~3次循環(huán)才能接收到正確的文件。
在單向廣播傳輸信道中,常用的對拆分后的數(shù)據(jù)塊糾錯的方法有1、漢明(8,4)編碼一個字節(jié),4比特有效數(shù)據(jù),4比特冗余保護數(shù)據(jù)。該方法可以在一個比特發(fā)生錯誤的情況下正確糾錯,運算速度快。其缺點是有2個以上比特發(fā)生錯誤,就會造成誤判。每次只能保護4個比特的數(shù)據(jù)位,在發(fā)生突發(fā)干擾的情況下,不能產(chǎn)生前向糾錯的效果。
2、格雷(23,12)編碼23比特,一般對齊為3個字節(jié)。12比特有效數(shù)據(jù)位,11比特為冗余保護數(shù)據(jù)。該方法最多能夠同時糾錯2個比特,能夠正確指示3個比特以上的錯誤。該方法運算速度較快,但比漢明(8,4)編碼慢。其缺點是每次只能保護12比特,在發(fā)生突發(fā)干擾的情況下,不能產(chǎn)生前向糾錯的效果。
3、BCH編碼、RS編碼、Turbo編碼該類編碼,編碼效率高,糾錯能力強,但是運算量隨碼長的增加而急劇增加。該類編碼適合于小數(shù)據(jù)塊的保護,而且一般只糾正其中的數(shù)個或數(shù)十個字節(jié)。其運算量巨大,在發(fā)生突發(fā)干擾的時間相對長的情況下,不能產(chǎn)生前向糾錯的效果。
4、多次重復播出,覆蓋接收方法有的單向廣播傳輸信道在對外傳輸中,采用連續(xù)傳輸兩遍的方法來修補被丟棄數(shù)據(jù)塊,即循環(huán)播傳輸出方式,基本上可歸納為兩種一種是大循環(huán)傳輸,如ABCABC;另一種是連續(xù)循環(huán)傳輸兩遍,如AABBCC。這種循環(huán)傳輸?shù)姆椒?,可能實現(xiàn)丟棄數(shù)據(jù)塊的修補。但其信道利用率低,而且多遍修補也不一定能夠成功修補。
總的來說,現(xiàn)有的糾錯方法,是在一個數(shù)據(jù)塊內(nèi)的糾錯,只能對較小數(shù)據(jù)量的數(shù)據(jù)塊提供了保護。為了能夠修補被丟棄了的數(shù)據(jù)塊,采用重復傳輸?shù)姆椒?,雖然重復傳輸?shù)姆椒ㄓ锌赡苄扪a丟棄的數(shù)據(jù)塊,但需要較長的時間,而且需要占用帶寬,這降低帶寬的利用率。
發(fā)明內(nèi)容
本發(fā)明為解決背景技術中存在的上述技術問題,而提供一種可對字節(jié)數(shù)很大的數(shù)據(jù)進行糾錯、運算量小、冗余數(shù)據(jù)量小和信道利用率高的單向廣播文件傳輸中的前向糾錯方法。
本發(fā)明的技術解決方案是一種單向廣播文件傳輸中的前向糾錯方法,其特殊之處在于該方法依次包括以下步驟100)把待發(fā)送的數(shù)據(jù)拆分成多個數(shù)據(jù)塊,計算每個數(shù)據(jù)塊的校驗和;200)將該多個數(shù)據(jù)塊進行數(shù)據(jù)塊的異或運算,計算保護數(shù)據(jù)塊;300)發(fā)送數(shù)據(jù)塊內(nèi)容,包括保護數(shù)據(jù)塊內(nèi)容;400)接收數(shù)據(jù)塊,校驗接收到的數(shù)據(jù)塊是否正確,并作標識。
500)若有數(shù)據(jù)錯誤,統(tǒng)計錯誤數(shù)據(jù)塊個數(shù),若只有一個數(shù)據(jù)塊發(fā)生錯誤,且接收到保護數(shù)據(jù)塊,進行數(shù)據(jù)塊的糾錯還原。
600)若無數(shù)據(jù)錯誤,按照編碼規(guī)則,直接拼接還原數(shù)據(jù)。
上述步驟100)中當原始數(shù)據(jù)字節(jié)數(shù)很多時,用多個保護數(shù)據(jù)塊來分段保護,此時每個分段數(shù)據(jù)就相當于一個獨立的待播出的數(shù)據(jù),將該分段數(shù)據(jù)拆分成多個數(shù)據(jù)塊,再計算每個數(shù)據(jù)塊的校驗和。
上述步驟200)中保護數(shù)據(jù)塊按公式P0=S1S2S3S4…Sn-2Sn-1Sn進行異或運算;同時對保護數(shù)據(jù)塊本身進行編碼。
上述步驟300)中發(fā)送數(shù)據(jù)塊時,先發(fā)送保護數(shù)據(jù)塊,再發(fā)送原始數(shù)據(jù)塊內(nèi)容。
上述步驟100)中在對數(shù)據(jù)塊進行編碼時,添加一個字段,用于標記播出輪次或編碼時間。
在突發(fā)強干擾的環(huán)境中,容易導致某一個數(shù)據(jù)塊整體丟棄而其他數(shù)據(jù)塊正確接收的情況,若不能將該丟失的數(shù)據(jù)塊“找”回來,就意味此次傳輸無效。應用本發(fā)明就可將被丟棄的某一個數(shù)據(jù)塊“找”回來,從而實現(xiàn)一次循環(huán)就能完整、正確地接收整個文件。因此本發(fā)明具有以下優(yōu)點1、本發(fā)明是一個數(shù)據(jù)塊級的數(shù)據(jù)保護編碼,可以對字節(jié)數(shù)很大的數(shù)據(jù)提供保護。
2、本發(fā)明運算量小。本發(fā)明采用異或操作,不會因數(shù)據(jù)保護長度增加而急劇增加,編、解碼運算量小。
3、本發(fā)明冗余數(shù)據(jù)量小,信道利用率高。本發(fā)明在n個有效數(shù)據(jù)塊后,才使用一個保護數(shù)據(jù)塊,編碼效率高,解決有些編碼效率低的缺點。
4、本發(fā)明在丟失數(shù)據(jù)塊的情況下,讓一個播出循環(huán)就能夠成功接收成為可能,不用像“多次重復播出,覆蓋接收方法”那樣,可以縮短接收時間,同時提供信道利用率。
5、本發(fā)明還可提高單向廣播文件傳輸、接收性能,降低對信道的要求,同時還可以降低文件傳輸?shù)难h(huán)次數(shù),節(jié)約帶寬,提高帶寬的利用率。
300)發(fā)送數(shù)據(jù)塊內(nèi)容,包括保護數(shù)據(jù)塊內(nèi)容;400)接收數(shù)據(jù)塊,校驗接收到的數(shù)據(jù)塊是否正確,并作標識。
500)若有數(shù)據(jù)錯誤,統(tǒng)計錯誤數(shù)據(jù)塊個數(shù),若只有一個數(shù)據(jù)塊發(fā)生錯誤,且接收到保護數(shù)據(jù)塊,進行數(shù)據(jù)塊的糾錯還原。
600)若無數(shù)據(jù)錯誤,按照編碼規(guī)則,直接拼接還原數(shù)據(jù)。
參見圖2,本發(fā)明方法詳細流程說明如下100)把待播出的數(shù)據(jù),按Y字節(jié)拆分成n個數(shù)據(jù)塊,其中n=(X+Y-1)/Y,對數(shù)據(jù)塊進行編碼,標識每個數(shù)據(jù)塊(在文件中)的偏移,計算該數(shù)據(jù)塊的校驗和。以Y=1024字節(jié)為佳,以便于計算。數(shù)據(jù)塊的校驗和可以采用多種算法,只要能夠判斷數(shù)據(jù)塊是否發(fā)生錯誤即可,此處推薦使用32位CRC校驗,即循環(huán)冗余碼校驗。在對數(shù)據(jù)塊編碼時,可添加一個字段,用于標記播出輪次或編碼時間,便于接收端判斷一個文件是否播出完成。對于最后一個數(shù)據(jù)塊,即第n數(shù)據(jù)塊,其有效字節(jié)數(shù)據(jù)為r=X除以Y的余數(shù),若r等于0,標識該數(shù)據(jù)塊正好為Y字節(jié),r應該等于Y;若r不等于Y,則剩余的Y-r字節(jié)填成數(shù)字0。
200)保護數(shù)據(jù)塊按P0=S1S2S3S4…Sn-2Sn-1Sn進行異或運算;保護數(shù)據(jù)塊本身也要進行編碼,一方面讓接收端能夠判斷該保護塊的數(shù)據(jù)內(nèi)容是否正確,另一方面讓接收端能夠區(qū)分保護數(shù)據(jù)塊與其他數(shù)據(jù)塊。此處符號“”表示數(shù)據(jù)塊的異或操作,數(shù)據(jù)塊的異或操作,是指兩個數(shù)據(jù)塊對應字節(jié)進行異或操作,如,將第m個數(shù)據(jù)塊的第1字節(jié)A1與第m+1字節(jié)的第1字節(jié)B1進行異或運算,得到結果C1,同理A2與B2運算得到C2。
300)發(fā)送n個數(shù)據(jù)塊和保護數(shù)據(jù)塊的內(nèi)容。以先發(fā)送保護數(shù)據(jù)塊內(nèi)容為佳,這樣便于程序設計,在接收時不會因為保護數(shù)據(jù)塊是否已經(jīng)接收而進行等待。先傳輸保護塊P0,然后傳輸原始數(shù)據(jù)塊S1,S2,…Sn-1,Sn。
400)接收數(shù)據(jù)塊,計算各數(shù)據(jù)塊的校驗和,并與播出端計算的校驗和進行比較,確定數(shù)據(jù)塊是否正確接收。播出端計算的校驗和隨數(shù)據(jù)一起發(fā)送到客戶端。若一個數(shù)據(jù)塊不正確,則將對應的數(shù)據(jù)緩沖區(qū)用數(shù)字0代替。若一個數(shù)據(jù)塊丟失,則等效于發(fā)生錯誤。然后根據(jù)播出端對數(shù)據(jù)塊編碼時,添加的字段,來檢測當前文件是否已經(jīng)播出完成。
500)統(tǒng)計錯誤數(shù)據(jù)塊個數(shù)(保護數(shù)據(jù)塊不被統(tǒng)計),若只有一個數(shù)據(jù)塊發(fā)生錯誤,且接收到保護數(shù)據(jù)塊,則進行糾錯。假設第m個數(shù)據(jù)塊發(fā)生錯誤,還原第m個數(shù)據(jù)的公式為Sm=P0S1…Sm-1Sm+1…Sn-2Sn-1Sn。其中符號標識數(shù)據(jù)塊的異或操作。若沒有數(shù)據(jù)塊發(fā)生錯誤,則不用進行糾錯。
600)若無數(shù)據(jù)錯誤,按照編碼規(guī)則,直接拼接還原數(shù)據(jù)。
當原始數(shù)據(jù)字節(jié)數(shù)很多時,可以用多個保護數(shù)據(jù)塊來分段保護。此時每個分段數(shù)據(jù)就相當于一個獨立的待播出的數(shù)據(jù)。再依次按上述步驟將該分段數(shù)據(jù)進行糾錯處理。
現(xiàn)舉一具體實例對本發(fā)明方法做進步說明數(shù)據(jù)塊校驗和采用32位CRC方式,假設在接收端發(fā)現(xiàn)第3個數(shù)據(jù)塊發(fā)生錯誤,即m=3。待播出的數(shù)據(jù)總長度X=100000字節(jié),拆分單位Y=1000字節(jié),那么總數(shù)據(jù)塊個數(shù)n=(100000+1000-1)/1000=100。
對每個數(shù)據(jù)塊進行編碼,標識數(shù)據(jù)塊在文件中的偏移,播出輪次,并計算該數(shù)據(jù)塊的32位CRC校驗和。(符號“”表示異或操作)。
計算保護數(shù)據(jù)塊P0=S1S2S3S4…S98S99S100。
發(fā)送保護數(shù)據(jù)塊P0,依次發(fā)送S1,S2,,,,S100接收數(shù)據(jù)塊,并判斷文件是否完成發(fā)送。
統(tǒng)計錯誤數(shù)據(jù)塊個數(shù),發(fā)現(xiàn)一個數(shù)據(jù)S3塊發(fā)生錯誤,則進行還原。
還原方法,先將S3對應的緩沖區(qū)清成0,然后計算S3=P0S1S2S4…S98S99S100。
通用的計算方法是假設第m數(shù)據(jù)塊發(fā)生錯誤,則當m=1S1=P0S2S3…S98S99S100當m=100S100=P0S1S2…S98S99其他Sm=P0S1S2…Sm-1Sm+1…S98S99S100至此,成功還原錯誤的數(shù)據(jù)包Sm的糾正。
其中,SmSm+1表示Sm與Sm+1兩個數(shù)據(jù)包內(nèi)對應字節(jié)的異或操作。
權利要求
1.一種單向廣播文件傳輸中的前向糾錯方法,其特征在于該方法依次包括以下步驟100)把待發(fā)送的數(shù)據(jù)拆分成多個數(shù)據(jù)塊,計算每個數(shù)據(jù)塊的校驗和;200)將該多個數(shù)據(jù)塊進行數(shù)據(jù)塊的異或運算,計算保護數(shù)據(jù)塊;300)發(fā)送數(shù)據(jù)塊內(nèi)容,包括保護數(shù)據(jù)塊內(nèi)容;400)接收數(shù)據(jù)塊,校驗接收到的數(shù)據(jù)塊是否正確,并作標識;500)若有數(shù)據(jù)錯誤,統(tǒng)計錯誤數(shù)據(jù)塊個數(shù),若只有一個數(shù)據(jù)塊發(fā)生錯誤,且接收到保護數(shù)據(jù)塊,進行數(shù)據(jù)塊的糾錯還原;600)若無數(shù)據(jù)錯誤,按照編碼規(guī)則,直接拼接還原數(shù)據(jù)。
2.根據(jù)權利要求1所述的單向廣播文件傳輸中的前向糾錯方法,其特征在于所述步驟100)中當原始數(shù)據(jù)字節(jié)數(shù)很多時,用多個保護數(shù)據(jù)塊來分段保護,此時每個分段數(shù)據(jù)就相當于一個獨立的待播出的數(shù)據(jù),將該分段數(shù)據(jù)拆分成多個數(shù)據(jù)塊,再計算每個數(shù)據(jù)塊的校驗和。
3.根據(jù)權利要求1或2所述的單向廣播文件傳輸中的前向糾錯方法,其特征在于所述步驟200)中保護數(shù)據(jù)塊按公式P0=S1S2S3S4…Sn-2Sn-1Sn進行異或運算;同時對保護數(shù)據(jù)塊本身進行編碼。
4.根據(jù)權利要求3所述的單向廣播文件傳輸中的前向糾錯方法,其特征在于所述步驟300)中發(fā)送數(shù)據(jù)塊時,先發(fā)送保護數(shù)據(jù)塊,再發(fā)送原始數(shù)據(jù)塊內(nèi)容。
5.根據(jù)權利要求1所述的單向廣播文件傳輸中的前向糾錯方法,其特征在于所述步驟100)中在對數(shù)據(jù)塊進行編碼時,添加一個字段,用于標記播出輪次或編碼時間。
全文摘要
本發(fā)明涉及一種單向廣播文件傳輸中的前向糾錯方法。該方法依次包括以下步驟100)把待發(fā)送的數(shù)據(jù)拆分成多個數(shù)據(jù)塊,計算每個數(shù)據(jù)塊的校驗和;200)將該多個數(shù)據(jù)塊進行數(shù)據(jù)塊的異或運算,計算保護數(shù)據(jù)塊;300)發(fā)送數(shù)據(jù)塊內(nèi)容,包括保護數(shù)據(jù)塊內(nèi)容;400)接收數(shù)據(jù)塊,校驗接收到的數(shù)據(jù)塊是否正確,并作標識;500)若有數(shù)據(jù)錯誤,統(tǒng)計錯誤數(shù)據(jù)塊個數(shù),若只有一個數(shù)據(jù)塊發(fā)生錯誤,且接收到保護數(shù)據(jù)塊,進行數(shù)據(jù)塊的糾錯還原;600)若無數(shù)據(jù)錯誤,按照編碼規(guī)則,直接拼接還原數(shù)據(jù)。本發(fā)明可對字節(jié)數(shù)很大的數(shù)據(jù)進行糾錯、運算量小、冗余數(shù)據(jù)量小且信道利用率高。
文檔編號H04L12/16GK1458764SQ0313421
公開日2003年11月26日 申請日期2003年5月30日 優(yōu)先權日2003年5月30日
發(fā)明者陳永健 申請人:西安通視數(shù)據(jù)有限責任公司