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