專利名稱:具有檢錯糾錯功能的lt碼編譯碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字信息傳輸技術(shù)領(lǐng)域,尤其涉及一種具有檢錯糾錯功能的LT碼編譯碼方法。
背景技術(shù):
噴泉碼是一種基于稀疏矩陣的糾刪碼,通過對數(shù)據(jù)進行隨機編碼,可以產(chǎn)生半無限長的編碼序列。假設(shè)文件等分成K個數(shù)據(jù)包,當接收端接收到任意N(N比K稍大)個數(shù)據(jù)包,就能恢復源文件。采用設(shè)計完善的度函數(shù),可以使噴泉碼具有線性編譯碼復雜度,在基于包通信的系統(tǒng)中有接近理想的糾刪性能。噴泉碼的主要碼字有隨機線性碼、LT碼和 Raptor碼等。目前,一種Raptor碼已經(jīng)被3GPP標準采用,應(yīng)用于3G網(wǎng)絡(luò)的多媒體廣播多播服務(wù)(MBMS)中。
由Luby M發(fā)明的LT (Luby Transform)碼是第一種實用的噴泉碼,具有簡單的編譯碼方法、較小的譯碼開銷以及編譯碼復雜度,為噴泉碼的發(fā)展奠定了基礎(chǔ)。
現(xiàn)有技術(shù)中,LT碼的編碼過程可以生成任意長度的編碼數(shù)據(jù)流,每個編碼包都按下列算法產(chǎn)生
1.將原始數(shù)據(jù)等分為K個數(shù)據(jù)包,在1 k范圍內(nèi)按某一分布Ω (稱為編碼度分布)隨機選取一個整數(shù)d,其中k為該碼的碼長,d稱為編碼包的度;
2.在數(shù)據(jù)包中均勻地隨機選取d個不同的包;
3.對這d個包求異或,得到一個編碼包。
4.重復步驟2、步驟3,直至編碼完成。
而現(xiàn)有技術(shù)中,LT碼的譯碼采用一種迭代算法,在譯碼的每一步,譯碼器都在編碼包集合中找出度為1的編碼包,將該值賦給與之相連的源包,并刪除連接,此源包即可被譯出。譯碼器將譯出的源包與跟它相連的所有編碼包進行異或,并刪除它們之間的連接關(guān)系。 重復上述過程,直到不存在度為1的編碼包為止。如果所有源包都被成功譯出則譯碼成功, 否則譯碼失敗。該過程稱為噴泉碼的BP(置信傳播或置信度傳播)譯碼過程。圖1給出了一個譯碼實例,其中“〇”代表源包,“ ”代表編碼包。源包和編碼包的長度均為1比特。 實際應(yīng)用中包長可以根據(jù)需要設(shè)成任意的比特長度。
在通信中采用噴泉碼作為應(yīng)用層編碼,可以解決信道環(huán)境惡劣時,采用ARQ(自動重傳請求)方式出現(xiàn)“反饋風暴”而顯著降低信道傳輸效率的問題。但作為一種糾刪碼,噴泉碼嚴重依賴底層信道編碼的糾錯性能和檢錯能力。傳遞到應(yīng)用層的數(shù)據(jù)在某些情況下會存在不可避免的錯誤,主要包括以下兩種情況
一是在空天通信等應(yīng)用環(huán)境下,由于存在輻射影響帶來的單粒子翻轉(zhuǎn)等問題,即使采用如LDPC(低密度奇偶校驗碼)碼等高性能信道糾錯編碼和校驗,也不能完全保證信道譯碼后的正確數(shù)據(jù)可靠地傳遞到應(yīng)用層;
二是對于一般信道環(huán)境下采用的信道編碼,由于校驗本身的缺陷可能存在不可檢錯誤,導致錯誤數(shù)據(jù)傳遞到應(yīng)用層。
根據(jù)噴泉碼的迭代譯碼原理,如果接收到來自底層的錯誤編碼包,將會引起嚴重的誤碼擴散,從而導致不可預(yù)知的源包錯誤。噴泉碼的誤碼擴散可以從其生成矩陣的特性看出,如圖2所示為碼長k為20時的生成矩陣(a)和其逆矩陣(b)。該生成矩陣為稀疏矩陣,隨著碼長的增長,生成矩陣相應(yīng)就越稀疏,通常碼長的典型值為200 500之間,稀疏性非常明顯。而解碼矩陣由生成矩陣的求逆獲得,為稠密矩陣,矩陣中的元素1占了矩陣元素中的大多數(shù)。而且,由于典型值碼長下的生成矩陣越稀疏,對應(yīng)的解碼矩陣就越稠密,一旦稠密矩陣中某一行對應(yīng)的編碼包出現(xiàn)了錯誤,那么將會造成大部分解碼包失效,在矩陣中就體現(xiàn)為某一列矩陣元素中為1的對應(yīng)的解碼包都會出錯,從而導致解碼失效,嚴重時還會使設(shè)備無法正常工作。發(fā)明內(nèi)容
(一)要解決的技術(shù)問題
本發(fā)明所要解決的技術(shù)問題是如何降低LT碼譯碼過程中誤碼擴散的影響。
(二)技術(shù)方案
為解決上述技術(shù)問題,本發(fā)明提供了一種具有檢錯糾錯功能的LT碼編譯碼方法, 包括以下步驟
Si、將原始數(shù)據(jù)等分為K個源包,并對每個源包添加校驗值;
S2、選取特定的度函數(shù)對所述K個源包進行LT編碼;
S3、設(shè)由編碼包組成的編碼包序列為T、由源包組成的源包序列為S、源包出錯指示序列為ES、源包成功譯碼時源包的源頭指示序列為ST、從編碼包譯碼時編碼包的源頭指示序列組合為TS、出錯編碼包序列為TE ;然后根據(jù)接收到的編碼包為序列T賦值,并將序列 ES中的元素均賦值為0,且將序列ST、序列組合TS以及序列TE均置為空;
S4、根據(jù)序列T和LT碼的生成矩陣G進行BP譯碼,譯碼過程中,對所述生成矩陣 G進行降度處理,同時對序列T中的元素進行迭代更新,為序列ST和序列組合TS中的元素賦值,并在譯碼完成后根據(jù)步驟Sl的校驗值對源包進行校驗,根據(jù)結(jié)果為序列ES中的元素賦值;
S5、根據(jù)序列ES、序列ST和序列組合TS查找出錯誤的編碼包,并將錯誤的編碼包丟棄;
S6、根據(jù)序列ES和序列組合TS恢復被錯誤的源包異或的編碼包;
S7、根據(jù)已譯出的正確的源包、正確且度不為0的編碼包和新接收的編碼包進行 BP譯碼,得到最終的譯碼結(jié)果。
優(yōu)選地,步驟Sl中,對每個源包添加校驗值具體為將CRC校驗值放在每個源包的末尾。
優(yōu)選地,步驟S3中,序列ES中的元素取值為0、1或2,值0表示對應(yīng)的源包未譯出,值1表示對應(yīng)的源包已譯出但出錯,值2表示對應(yīng)的源包已譯出且正確;序列ST中的元素STi表示最終譯出源包的編碼包的編號;序列組合TS中的元素TSi表示譯碼時參與異或的第i個編碼包的源包編號序列;序列TE中的元素表示出錯的編碼包編號。
優(yōu)選地,步驟S4與步驟S5之間包括步驟根據(jù)源包中的校驗碼對源包進行校驗, 以查找出錯誤的源包。
優(yōu)選地,步驟S4的譯碼過程中,對于度為1的編碼包,將其賦值為唯一與其相連的源包,此源包即為新譯出的源包,將該編碼包的度置為0,并將該編碼包的編號賦值給所述新譯出的源包的源頭;對于度大于1且與新譯出的源包相連的編碼包,將其與新譯出的源包進行異或,同時將其度減1,并將新譯出的源包的編號記錄進該編碼包的源頭序列;循環(huán)進行此BP譯碼過程,直至所有源包均被譯出。
優(yōu)選地,步驟S5中,若序列ES中所有元素的取值均為2,表示已正確譯碼;若序列 ES中有取值為1的元素,則在序列ST中查找對應(yīng)的編碼包的源頭序列,若所述源頭序列中源包所對應(yīng)的序列ES中的元素都為2,則所述對應(yīng)的編碼包為出錯的編碼包。
優(yōu)選地,步驟S6中,對于任一個編碼包,記編號為i,查找其源頭序列TSi中包含源包所對應(yīng)序列ES中的元素,若元素中有值為1,則將此編碼包和對應(yīng)的源包進行異或,并增加相應(yīng)的度連接。
優(yōu)選地,步驟S7中,利用已譯出的正確的源包對新接收的編碼包進行異或,同時進行降度處理,利用新接收的編碼包和經(jīng)步驟S6后度不為0的編碼包進行BP譯碼。
優(yōu)選地,所述編碼包比源包長校驗碼所占的比特長度。
優(yōu)選地,所述特定的度函數(shù)為魯棒孤立波分布。
(三)有益效果
本發(fā)明通過在編碼時引入一定的校驗冗余,在譯碼時通過采用兩次BP譯碼和校驗機制,丟掉出錯的編碼包,正確譯出所有源包,實現(xiàn)了 LT碼對單個錯誤編碼包的檢錯糾錯功能,從而降低了誤碼擴散的影響。在采用合適的度函數(shù)和校驗機制的情況下,可以以 99%以上的概率成功譯碼。本發(fā)明的方法復雜度低、收斂快,僅通過增加少量的噴泉碼編碼包的接收數(shù)量,無需反饋即可對單個編碼包錯誤的情況進行糾錯譯碼。
圖1是現(xiàn)有技術(shù)中LT碼的譯碼過程示意圖2是現(xiàn)有技術(shù)中噴泉碼的碼長k為20時的生成矩陣與逆矩陣;
圖3是依據(jù)本發(fā)明實施例的LT碼編譯碼方法的流程圖4是BP譯碼過程圖示;
圖5是查找錯誤編碼包過程圖示;
圖6是恢復被出錯源包異或的編碼包以及增量BP譯碼圖示。
具體實施方式
下面對于本發(fā)明所提出的一種具有檢錯糾錯功能的LT碼編譯碼方法,結(jié)合附圖和實施例詳細說明。
如圖3所示,本發(fā)明實施例提供了一種具有檢錯糾錯功能的LT碼編譯碼方法,包括以下步驟
Si、將原始數(shù)據(jù)等分為K個源包,并對每個源包添加校驗值;
S2、選取特定的度函數(shù)對所述K個源包進行LT編碼;
S3、設(shè)由編碼包組成的編碼包序列為T、由源包組成的源包序列為S、源包出錯指示序列為ES、源包成功譯碼時源包的源頭指示序列為ST、從編碼包譯碼時編碼包的源頭指示序列組合為TS、出錯編碼包序列為TE ;然后根據(jù)接收到的編碼包為序列T賦值,并將序列 ES中的元素均賦值為0,且將序列ST、序列組合TS以及序列TE均置為空;
S4、根據(jù)序列T和LT碼的生成矩陣G進行BP譯碼,譯碼過程中,對所述生成矩陣 G進行降度處理,同時對序列T中的元素進行迭代更新,為序列ST和序列組合TS中的元素賦值,并在譯碼完成后根據(jù)步驟Sl的校驗值對源包進行校驗,根據(jù)結(jié)果為序列ES中的元素賦值;
S5、根據(jù)序列ES、序列ST和序列組合TS查找出錯誤的編碼包,并將錯誤的編碼包丟棄;
S6、根據(jù)序列ES和序列組合TS恢復被錯誤的源包異或的編碼包;
S7、根據(jù)已譯出的正確的源包、正確且度不為0的編碼包和新接收的編碼包進行 BP譯碼,得到最終的譯碼結(jié)果。
步驟Sl的編碼準備流程和步驟S2的編碼過程詳細描述如下(步驟A 步驟D)
步驟A 將原始數(shù)據(jù)等分為K個源包。將每個源包的CRC校驗碼拼接在各源包末尾對每個源包進行CRC校驗,在1 k范圍內(nèi)按魯棒孤立波分布(是現(xiàn)有技術(shù),即在下面描述的度函數(shù)μ (d))隨機選取一個整數(shù)d,其中k為LT碼的碼長,d為編碼包的度。
對于LT碼,設(shè)符號長度為250字節(jié),K = 500。首先定義函數(shù)
權(quán)利要求
1.一種具有檢錯糾錯功能的LT碼編譯碼方法,其特征在于,包括以下步驟51、將原始數(shù)據(jù)等分為K個源包,并對每個源包添加校驗值;52、選取特定的度函數(shù)對所述K個源包進行LT編碼;53、設(shè)由編碼包組成的編碼包序列為T、由源包組成的源包序列為S、源包出錯指示序列為ES、源包成功譯碼時源包的源頭指示序列為ST、從編碼包譯碼時編碼包的源頭指示序列組合為TS、出錯編碼包序列為TE ;然后根據(jù)接收到的編碼包為序列T賦值,并將序列ES 中的元素均賦值為0,且將序列ST、序列組合TS以及序列TE均置為空;54、根據(jù)序列T和LT碼的生成矩陣G進行BP譯碼,譯碼過程中,對所述生成矩陣G進行降度處理,同時對序列T中的元素進行迭代更新,為序列ST和序列組合TS中的元素賦值,并在譯碼完成后根據(jù)步驟Sl的校驗值對源包進行校驗,根據(jù)結(jié)果為序列ES中的元素賦值;55、根據(jù)序列ES、序列ST和序列組合TS查找出錯誤的編碼包,并將錯誤的編碼包丟棄;56、根據(jù)序列ES和序列組合TS恢復被錯誤的源包異或的編碼包;57、根據(jù)已譯出的正確的源包、正確且度不為0的編碼包和新接收的編碼包進行BP譯碼,得到最終的譯碼結(jié)果。
2.如權(quán)利要求1所述的方法,其特征在于,步驟Sl中,對每個源包添加校驗值具體為 將CRC校驗值放在每個源包的末尾。
3.如權(quán)利要求1所述的方法,其特征在于,步驟S3中,序列ES中的元素取值為0、1或 2,值0表示對應(yīng)的源包未譯出,值1表示對應(yīng)的源包已譯出但出錯,值2表示對應(yīng)的源包已譯出且正確;序列ST中的元素STi表示最終譯出源包的編碼包的編號;序列組合TS中的元素TSi表示譯碼時參與異或的第i個編碼包的源包編號序列;序列TE中的元素表示出錯的編碼包編號。
4.如權(quán)利要求1所述的方法,其特征在于,步驟S4與步驟S5之間包括步驟根據(jù)源包中的校驗碼對源包進行校驗,以查找出錯誤的源包。
5.如權(quán)利要求1所述的方法,其特征在于,步驟S4的譯碼過程中,對于度為1的編碼包,將其賦值為唯一與其相連的源包,此源包即為新譯出的源包,將該編碼包的度置為0,并將該編碼包的編號賦值給所述新譯出的源包的源頭;對于度大于1且與新譯出的源包相連的編碼包,將其與新譯出的源包進行異或,同時將其度減1,并將新譯出的源包的編號記錄進該編碼包的源頭序列;循環(huán)進行此BP譯碼過程,直至所有源包均被譯出。
6.如權(quán)利要求1所述的方法,其特征在于,步驟S5中,若序列ES中所有元素的取值均為2,表示已正確譯碼;若序列ES中有取值為1的元素,則在序列ST中查找對應(yīng)的編碼包的源頭序列,若所述源頭序列中源包所對應(yīng)的序列ES中的元素都為2,則所述對應(yīng)的編碼包為出錯的編碼包。
7.如權(quán)利要求1所述的方法,其特征在于,步驟S6中,對于任一個編碼包,記編號為i, 查找其源頭序列TSi中包含源包所對應(yīng)序列ES中的元素,若元素中有值為1,則將此編碼包和對應(yīng)的源包進行異或,并增加相應(yīng)的度連接。
8.如權(quán)利要求1所述的方法,其特征在于,步驟S7中,利用已譯出的正確的源包對新接收的編碼包進行異或,同時進行降度處理,利用新接收的編碼包和經(jīng)步驟S6后度不為0的編碼包進行BP譯碼。
9.如權(quán)利要求1所述的方法,其特征在于,所述編碼包比源包長校驗碼所占的比特長度。
10.如權(quán)利要求1 9中任一項所述的方法,其特征在于,所述特定的度函數(shù)為魯棒孤立波分布。
全文摘要
本發(fā)明涉及數(shù)字信息傳輸技術(shù)領(lǐng)域,公開了一種具有檢錯糾錯功能的LT碼編譯碼方法,包括步驟S1、將原始數(shù)據(jù)等分為K個源包,對每個源包進行校驗;S2、選取特定的度函數(shù)對所述K個源包進行LT編碼;S3、設(shè)編碼包序列為T、由源包組成的源包序列為S、源包出錯指示序列為ES、源包成功譯碼時源包的源頭指示序列為ST、從編碼包譯碼時編碼包的源頭指示序列組合為TS、出錯編碼包序列為TE;S4、根據(jù)序列T和LT碼的生成矩陣G進行BP譯碼;S5、根據(jù)ES、ST和TS查找出錯誤的編碼包;S6、根據(jù)ES和TS恢復被錯誤的源包異或的編碼包;S7、根據(jù)已譯出的正確的源包、正確且度不為0的編碼包和新接收的編碼包進行BP譯碼。本發(fā)明能降低LT碼譯碼過程中誤碼擴散的影響。
文檔編號H04L1/18GK102523072SQ20111043086
公開日2012年6月27日 申請日期2011年12月20日 優(yōu)先權(quán)日2011年12月20日
發(fā)明者胡海洋, 葛寧, 裴玉奎, 邢艷玲 申請人:清華大學