本發(fā)明屬于通信技術(shù)領(lǐng)域,涉及通信數(shù)據(jù)傳輸中所用的ldpc碼信道編碼方案的一種新的高效譯碼算法,具體是一種基于網(wǎng)格復(fù)雜度的ldpc碼兩階段譯碼方法。
技術(shù)背景
近年來,對高效可靠的數(shù)字傳輸和存儲系統(tǒng)的需求日益增長。這種需求隨著在商業(yè)、政府和軍事領(lǐng)域面向數(shù)字信息的交換、處理和存儲的大規(guī)模高速數(shù)據(jù)網(wǎng)的出現(xiàn)而變得更加迫切。如何保證這些數(shù)據(jù)準(zhǔn)確快速的交換、處理是我們需要解決的問題。這其中的一種重要的方法就是在數(shù)據(jù)進(jìn)入新到傳輸時先對所要傳輸?shù)臄?shù)據(jù)進(jìn)行適當(dāng)?shù)木幋a,通過對索要傳輸?shù)脑黾訑?shù)據(jù)增加冗余信息,使得我們可以對數(shù)據(jù)傳輸中所產(chǎn)生的錯誤進(jìn)行檢測和糾正,這種技術(shù)被稱為信道編碼技術(shù),隨著越來越多的人研究信道編碼技術(shù),現(xiàn)在已經(jīng)出現(xiàn)了許多高效的信道編碼方案。
ldpc碼就是眾多性能優(yōu)異的信道編碼方案中的一種。隨著3gpp最終選定ldpc碼為5g中長碼編碼方案,ldpc碼的高效性越來越受到研究者的重視,對于一套信道編碼方案而言,能否找到一種有效的譯碼算法,即低時間復(fù)雜度和低譯碼錯誤概率,是該信道編碼最終應(yīng)用于實(shí)際的重要因素。
對于ldpc碼而言,目前主流的譯碼算法有比特翻轉(zhuǎn)譯碼算法、和積譯碼算法、最小和譯碼算法,其中和積譯碼算法是一類在碼因子圖上的譯碼算法,當(dāng)因子圖中不存在環(huán)的時候,它的譯碼錯誤概率是所有已知譯碼算法中最小的,但是當(dāng)因子圖中存在4元或者6元環(huán)時,會嚴(yán)重影響和積譯碼算法的譯碼錯誤概率,而到目前為止,還沒有找到一種行之有效的方法來解決這個問題。
因此當(dāng)ldpc碼的因子圖中存在4元或6元短環(huán)時,設(shè)計(jì)一種不受短環(huán)影響的高效譯碼算法具有極其重要的實(shí)際意義。
目前沒有發(fā)現(xiàn)同本發(fā)明類似技術(shù)的說明或報(bào)道,也尚未收集到國內(nèi)外類似的資料。
技術(shù)實(shí)現(xiàn)要素:
為了降低在4元環(huán)和6元環(huán)存在時,ldpc碼的譯碼錯誤概率,本發(fā)明提出了一種基于網(wǎng)格復(fù)雜度的ldpc碼兩階段譯碼方法,該譯碼方法,適用于ldpc碼的可靠高效的譯碼體系。該譯碼方法解決了傳統(tǒng)和積譯碼算法的ldpc碼因子圖存在4元6元短環(huán)時,譯碼性能變壞的問題。同時針對不同的線性碼,對該譯碼方法兩階段各自使用的譯碼算法進(jìn)行針對性的變換后可以被應(yīng)到相應(yīng)線性碼的譯碼中,即該譯碼方法具有極強(qiáng)的普遍適用性。
本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的。
本發(fā)明所提出的基于網(wǎng)格復(fù)雜度的ldpc碼兩階段譯碼方法,包括如下步驟:
-第一階段譯碼,所述第一階段譯碼在超ldpc碼中采用第一階段譯碼算法,得到超碼碼字,當(dāng)超碼碼字滿足校驗(yàn)結(jié)果時,則作為最終的譯碼輸出碼字;當(dāng)超碼碼字不滿足校驗(yàn)結(jié)果時,進(jìn)行第二階段譯碼;
-第二階段譯碼,在原ldpc碼中采用第二階段譯碼算法,得到最終的譯碼輸出碼字。
優(yōu)選地,所述第一階段譯碼算法采用和積譯碼算法,包括如下步驟:
將編碼完成后的原ldpc碼的校驗(yàn)矩陣中出現(xiàn)4元和6元短環(huán)的行全部刪除,利用刪除后的校驗(yàn)矩陣構(gòu)造得到原ldpc碼的超ldpc碼,并用該超ldpc碼的校驗(yàn)矩陣構(gòu)造超因子圖,對接收到的數(shù)據(jù)向量在超因子圖上運(yùn)用和積譯碼算法,在和積譯碼算法結(jié)束時,得到超碼碼字。
優(yōu)選地,在進(jìn)行和積譯碼算法時,每次迭代過程更新校驗(yàn)節(jié)點(diǎn)的狀態(tài)信息和變量節(jié)點(diǎn)的狀態(tài)信息,直到得到正確的超碼碼字或達(dá)到最大迭代次數(shù)時停止和積譯碼算法。
優(yōu)選地,校驗(yàn)結(jié)果為:
設(shè)校驗(yàn)式s=c′ht,其中,c′為超碼碼字,h為原ldpc碼的校驗(yàn)矩陣,t為矩陣轉(zhuǎn)置;當(dāng)s=0,則超碼碼字為最終的譯碼輸出碼字;當(dāng)s≠0時,則執(zhí)行第二階段譯碼。
優(yōu)選地,所述第二階段譯碼算法采用優(yōu)先級算法,,包括如下步驟:
利用原ldpc碼的校驗(yàn)矩陣構(gòu)造一個碼網(wǎng)格,并利用第一階段譯碼中得到的超碼碼字,對接收到的數(shù)據(jù)向量在碼網(wǎng)格上使用優(yōu)先級算法。
優(yōu)選地,運(yùn)用優(yōu)先級算法時,先構(gòu)造一個代價(jià)函數(shù),該代價(jià)函數(shù)包括兩部分,一部分為優(yōu)先級算法找到的從初始結(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)最小路徑,另一部分為從當(dāng)前節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)最小路徑的預(yù)測;對于每一個訪問節(jié)點(diǎn),計(jì)算該訪問節(jié)點(diǎn)的代價(jià)函數(shù),并從該訪問節(jié)點(diǎn)的代價(jià)函數(shù)中選擇具有最小代價(jià)函數(shù)值的節(jié)點(diǎn),直到搜尋到目標(biāo)節(jié)點(diǎn)時結(jié)束優(yōu)先級算法;在完成第二階段譯碼算法之后,將得到最終的譯碼輸出碼字。
優(yōu)選地,第二階段譯碼中得到的最終的譯碼輸出碼字為最大似然碼字。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果:
1、本發(fā)明提供的基于網(wǎng)格復(fù)雜度的ldpc碼兩階段譯碼方法,是一種適用于ldpc碼的可靠高效的譯碼體系,采用兩階段混合設(shè)計(jì),以此保證譯碼算法的最優(yōu)性;
2、本發(fā)明可以靈活的變換兩個階段中各自使用的譯碼算法,并將兩階段譯碼算法運(yùn)用于其他線性碼的譯碼中;
3、本發(fā)明降低了在4元環(huán)和6元環(huán)存在時,ldpc碼的譯碼錯誤概率;
4、本發(fā)明具有極強(qiáng)的普遍適用性。
附圖說明
圖1為原ldpc碼校驗(yàn)矩陣與超ldpc碼校驗(yàn)矩陣,其中,(a)為原ldpc碼,該原ldpc碼為(3,3)規(guī)則ldpc碼,(b)為超ldpc碼,該超ldpc碼為非規(guī)則ldpc碼;
圖2為超ldpc碼的超因子圖;
圖3為第一階段和積譯碼算法校驗(yàn)節(jié)點(diǎn)與變量節(jié)點(diǎn)消息更新(傳遞)說明圖;
圖4為第二階段優(yōu)先級譯碼算法流程圖。
具體實(shí)施方式
下面對本發(fā)明的實(shí)施例作詳細(xì)說明:本實(shí)施例在以本發(fā)明技術(shù)方案為前提下進(jìn)行實(shí)施,給出了詳細(xì)的實(shí)施方式和具體的操作過程。應(yīng)當(dāng)指出的是,對本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。
本實(shí)施例提供的基于網(wǎng)格復(fù)雜度的ldpc碼兩階段譯碼方法,包括如下步驟:
-第一階段譯碼,所述第一階段譯碼在超ldpc碼中采用第一階段譯碼算法,得到超碼碼字,當(dāng)超碼碼字滿足校驗(yàn)結(jié)果時,則作為最終的譯碼輸出碼字;當(dāng)超碼碼字不滿足校驗(yàn)結(jié)果時,進(jìn)行第二階段譯碼;
-第二階段譯碼,在原ldpc碼中采用第二階段譯碼算法,得到最終的譯碼輸出碼字。
進(jìn)一步地,第一階段譯碼,采用和積譯碼算法。對于編碼完成后的原ldpc碼c和接收到的數(shù)據(jù)向量r,首先將原ldpc碼c的校驗(yàn)矩陣中出現(xiàn)4元和6元短環(huán)的行全部刪除,利用刪除后的校驗(yàn)矩陣構(gòu)造可以得到原ldpc碼的一個超ldpc碼,并用該超ldpc碼的校驗(yàn)矩陣構(gòu)造超因子圖,對接收到的數(shù)據(jù)向量r在超因子圖上運(yùn)用和積譯碼算法;在進(jìn)行和積譯碼算法時,每次迭代過程更新校驗(yàn)節(jié)點(diǎn)的狀態(tài)信息和變量節(jié)點(diǎn)的狀態(tài)信息,直到得到正確的超碼字或達(dá)到最大迭代次數(shù)時停止和積譯碼算法,在該階段結(jié)束時,可以得到一個超碼字c′屬于超碼,判斷這個超碼碼字是否滿足校驗(yàn)結(jié)果;當(dāng)不滿足校驗(yàn)結(jié)果時,利用這個超碼碼字進(jìn)行第二階段譯碼。
進(jìn)一步地,第二階段譯碼,采用優(yōu)先級算法。將原ldpc譯碼看成圖上最短路徑搜尋問題,用原ldpc碼的校驗(yàn)矩陣構(gòu)造一個碼網(wǎng)格,在碼網(wǎng)格上使用優(yōu)先級算法,運(yùn)用優(yōu)先級算法時先構(gòu)造一個代價(jià)函數(shù),該代價(jià)函數(shù)包括兩部分,一部分為優(yōu)先級算法找到的從初始結(jié)點(diǎn)到當(dāng)前節(jié)點(diǎn)最小路徑,另一部分為從當(dāng)前節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)最小路徑的預(yù)測;對于每一個訪問節(jié)點(diǎn),計(jì)算它們的代價(jià)函數(shù),并從中選擇具有最小代價(jià)函數(shù)值的節(jié)點(diǎn),直到算法搜尋到目標(biāo)節(jié)點(diǎn)時結(jié)束譯碼算法;在完成第二階段譯碼算法之后,得到一個最終的譯碼輸出碼字c。
由于本實(shí)施例提供的基于網(wǎng)格復(fù)雜度的ldpc碼兩階段譯碼方法分為兩個階段譯碼,第一階段在超ldpc碼的因子圖上優(yōu)選使用和積譯碼算法,第二階段是在原ldpc碼的碼網(wǎng)格圖上優(yōu)選使用優(yōu)先級譯碼算法,對于第一階段譯碼算法復(fù)雜度,可以利用已知的結(jié)論得到,對于第二階段譯碼算法的時間復(fù)雜度,因?yàn)閷τ诰W(wǎng)格圖上的譯碼算法,其譯碼算法的時間復(fù)雜度與網(wǎng)格的結(jié)構(gòu)復(fù)雜度有直接的關(guān)系,而對于同一個ldpc碼而言,經(jīng)過不同的列置換所得到的碼網(wǎng)格圖的結(jié)構(gòu)有很大的差異,此處利用子碼與超碼網(wǎng)格復(fù)雜度之間的關(guān)系來得到第二階段譯碼算法的時間復(fù)雜度。
下面結(jié)合流程圖對本發(fā)明的實(shí)施步驟做簡要說明:
如圖1所示:
第一階段譯碼:
步驟s1:刪除原ldpc碼因子圖中出現(xiàn)4元環(huán)(或6元環(huán))的相應(yīng)校驗(yàn)矩陣h的行,用剩余的校驗(yàn)矩陣h′構(gòu)造超因子圖t。
步驟s2:在超因子圖t上使用和積譯碼算法:
用n(j)表示與校驗(yàn)式cj相連的所有比特分量集合,m(i)表示所有與變量比特vi相連的校驗(yàn)方程集合。m(i)/j表示集合m(i)中除去校驗(yàn)方程j后,剩余校驗(yàn)方程組成的集合,n(i)/j表示集合n(i)中除去變量比特vi后,剩余變量比特組成的集合。令
同時定義對數(shù)域中的消息更新方程為:
s2.1.對校驗(yàn)節(jié)點(diǎn)計(jì)算更新方程:
對于每一個校驗(yàn)節(jié)點(diǎn)j以及與它相連的變量節(jié)點(diǎn)i∈n(j),
s2.2.對變量節(jié)點(diǎn)計(jì)算更新方程:
對于每一個變量節(jié)點(diǎn)i以及與它相連的校驗(yàn)節(jié)點(diǎn)j∈m(i),
λi→j(qij)=λ(xi)+{∑j′∈m(i)\jλj′→i(rji)}
s2.3.嘗試譯碼,
計(jì)算變量節(jié)點(diǎn)判別式
λ(xi)=l(xi)+{∑j′∈m(i)λj→i(rji)}
將對應(yīng)的數(shù)據(jù)比特xi進(jìn)行譯碼,
步驟s3:譯碼輸出第一階段碼字c′。
步驟s4:計(jì)算校驗(yàn)式s=c′ht,若s=0則輸出碼字c′為最終譯碼結(jié)果。若s≠0則執(zhí)行步驟s1。
第二階段譯碼:
如圖2所示:
步驟s1:利用原ldpc碼的校驗(yàn)矩陣構(gòu)造碼字網(wǎng)格圖g。
步驟s2:在原ldpc碼網(wǎng)格g上使用優(yōu)先級算法:
將接收到的向量r=(r1,r2,...,rn),將其變?yōu)棣眨?φ1,φ2,...,φn),其中,
同時將φ=(φ1,φ2,...,φn)中各個元素按照絕對值從大到小排列得到置換后的向量為φ′=(φ1′,φ2′,...,φn′)。為了使用優(yōu)先級算法,需要建立代價(jià)函數(shù)f,對于算法進(jìn)行中的任意一個訪問節(jié)點(diǎn)m,其代價(jià)函數(shù)有兩部分組成,即f(m)=g(m)+h(m),其中g(shù)(m)表示從初始節(jié)點(diǎn)到節(jié)點(diǎn)m的最小代價(jià),h(m)從節(jié)點(diǎn)m到目標(biāo)節(jié)點(diǎn)的最小代價(jià)。
對于在網(wǎng)格圖第1層的任意訪問節(jié)點(diǎn)m,定義g(m)為:
其中
對于h(m)利用ldpc碼的性質(zhì)來構(gòu)造:
令m表示在第1層的節(jié)點(diǎn),且
其中,dh(v,c′)表示向量v與第一階段譯碼輸出碼字c′之間的漢明距離,集合
則構(gòu)造h(m)為,
s2.1.建立一個open表格,將網(wǎng)格g的起始節(jié)點(diǎn)s-1加入到open中。
s2.2.創(chuàng)建一個closed表格,且初始化為空。
s2.3.將open中具有最小代價(jià)函數(shù)值f,且沒有在closed中出現(xiàn)過的節(jié)點(diǎn)m加入到closed中,并將該節(jié)點(diǎn)從open中刪除。
s2.4.將節(jié)點(diǎn)m的所有之前未出現(xiàn)在open中的子節(jié)點(diǎn)加入到open中,并計(jì)算這些子節(jié)點(diǎn)的代價(jià)函數(shù)f的值。
s2.5.如果節(jié)點(diǎn)m是目標(biāo)節(jié)點(diǎn),則譯碼成功。
步驟s3:輸出第二階段譯碼碼字并將其作為譯碼算法的最終譯碼結(jié)果c。
在本實(shí)施例中,
第一階段譯碼:在超ldpc碼中優(yōu)先使用和積譯碼算法。
第二階段譯碼,在原ldpc碼上優(yōu)先使用優(yōu)先級算法。
采用兩階段混合設(shè)計(jì),以此保證譯碼算法的最優(yōu)性。
可以靈活的變換兩個階段中各自使用的譯碼算法,并將該算法運(yùn)用于其他線性碼的譯碼中。
在第一階段譯碼中,刪除原ldpc碼校驗(yàn)矩陣中使得因子圖出現(xiàn)4元或6元短環(huán)的行,用刪除后的校驗(yàn)矩陣構(gòu)造超因子圖,并在超因子圖上使用和積譯碼算法。
在第二階段譯碼中,對原ldpc碼的網(wǎng)格圖上使用優(yōu)先級算法。
第二階段譯碼中得到的最終的譯碼輸出碼字是最大似然碼字。
對于ldpc碼進(jìn)行譯碼時,可以將第一階段的和積譯碼算法變換為其他適合于ldpc碼的高效譯碼算法,例如線性規(guī)劃譯碼算法(linearprogrammingdecodingalgorithm)、最小和譯碼算法(min-sumalgorithm)。同時可以將第二階段的優(yōu)先級譯碼算法變換為其他復(fù)雜度低易于實(shí)現(xiàn)的譯碼算法,例如列表譯碼算法(listdecodingalgorithm)。
可以利用變換前或變換后的兩階段譯碼算法對其他已有的線性信道編碼方案進(jìn)行譯碼。
本實(shí)施例提供的基于網(wǎng)格復(fù)雜度的ldpc碼兩階段譯碼方法,是針對5g長碼編碼方案的ldpc碼的一種高效的譯碼算法,有效的降低了ldpc碼的譯碼錯誤概率。首先刪除原ldpc碼校驗(yàn)矩陣中產(chǎn)生4元和6元短環(huán)的行,得到一套超ldpc碼,對接收到的信息比特在超ldpc碼的因子圖中使用和積譯碼算法進(jìn)行譯碼。之后對于不滿足校驗(yàn)方程的碼字進(jìn)行第二階段譯碼,利用ldpc碼的校驗(yàn)矩陣構(gòu)造碼網(wǎng)格圖,并在該碼網(wǎng)格圖上使用優(yōu)先級算法。本實(shí)施例有效的降低了在ldpc碼存在短環(huán)情況下的譯碼錯誤概率,由于對于兩階段中各自使用的譯碼算法進(jìn)行更改可以使用到其他線性碼的譯碼中,所以本實(shí)施例對線性碼具有普適性。
以上對本發(fā)明的具體實(shí)施例進(jìn)行了描述。需要理解的是,本發(fā)明并不局限于上述特定實(shí)施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變形或修改,這并不影響本發(fā)明的實(shí)質(zhì)內(nèi)容。