本發(fā)明涉及l(fā)dpc碼譯碼技術(shù)領(lǐng)域,特別涉及一種基于ldpc碼的局部動(dòng)態(tài)譯碼方法。
背景技術(shù):
ldpc碼自1996年再次被發(fā)現(xiàn)以來(lái),其譯碼算法(floodingbp算法)以其實(shí)現(xiàn)簡(jiǎn)單,譯碼復(fù)雜度線性增加等特點(diǎn),成為了編譯碼領(lǐng)域焦點(diǎn)。而svnf-rbp算法為代表的動(dòng)態(tài)bp譯碼算法雖然增加了殘差計(jì)算和搜索復(fù)雜度,同時(shí)也極大地提升了bp算法的譯碼性能。
svnf-rbp譯碼算法是一個(gè)異步動(dòng)態(tài)消息迭代算法,每一次根據(jù)一個(gè)最大的校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息殘差,定位下一個(gè)要更新的校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息。消息更新就是根據(jù)每次找到的最大殘差為序,沿著與ldpc碼相對(duì)應(yīng)的tanner圖中的邊來(lái)回傳遞,其消息傳遞主要包括了針對(duì)每一個(gè)變量節(jié)點(diǎn)的橫向計(jì)算和縱向計(jì)算兩個(gè)步驟,其中橫向計(jì)算就是校驗(yàn)節(jié)點(diǎn)ci到變量節(jié)點(diǎn)vj的消息傳遞:
縱向計(jì)算就是變量節(jié)點(diǎn)vi到校驗(yàn)節(jié)點(diǎn)cj的消息傳遞:
在bp譯碼算法中,最終是要依靠每個(gè)變量節(jié)點(diǎn)的最大似然比來(lái)做0、1判定。每一個(gè)變量節(jié)點(diǎn)都將接收來(lái)自信道的先驗(yàn)概率(apriori)
似然比消息殘差計(jì)算公式:r(mk)=||fk(m)-mk||∞,mk∈m;其中m表示計(jì)算fk(m)所需的相關(guān)消息,mk和fk(m)分別代表校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)更新前和更新后的似然比。
svnf-rbp算法迭代過(guò)程在滿足以下條件之一時(shí)停止:
(1)所有的校驗(yàn)方程都滿足。
(2)迭代次數(shù)達(dá)到設(shè)定的最大值。
svnf-rbp算法的具體過(guò)程為:
1)初始化所有mc,v=0;
2)初始化所有
3)計(jì)算所有r(mc,v);
4)對(duì)每一個(gè)vj,找出
5)計(jì)算
6)計(jì)算
7)如果所有校驗(yàn)方程滿足或是達(dá)到設(shè)定的最大迭代次數(shù),則結(jié)束譯碼,否則返回步驟4)
對(duì)于bp迭代算法,異步策略一般都是通過(guò)加速譯碼收斂來(lái)提升譯碼性能。svnf-rbp算法能大幅提升bp譯碼性能,但是增加了大量的計(jì)算、搜索復(fù)雜度。因此,在提升譯碼性能的同時(shí)降低復(fù)雜度顯得尤為重要。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的至少一種缺點(diǎn)與不足,提供一種基于ldpc碼的局部動(dòng)態(tài)譯碼方法,該局部動(dòng)態(tài)譯碼方法降低了殘差搜索和存儲(chǔ)復(fù)雜度,同時(shí)提升了譯碼性能。
本發(fā)明的目的通過(guò)下述技術(shù)方案實(shí)現(xiàn):
一種基于ldpc碼的動(dòng)態(tài)bp譯碼方法,提出殘差具有時(shí)效性,采用最新產(chǎn)生的局部最大殘差確定消息的更新順序:
選定要更新的校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息
具體的局部動(dòng)態(tài)譯碼算法(lrbp):
1)初始化所有
2)初始化所有
3)計(jì)算所有r(mc,v);
4)找出
5)計(jì)算
6)計(jì)算
7)如果所有校驗(yàn)方程滿足或是達(dá)到設(shè)定的最大迭代次數(shù),則結(jié)束譯碼,否則返回步驟4)
其中:mc,v泛指所有校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)的消息;
似然比消息殘差計(jì)算公式:r(mk)=||fk(m)-mk||∞,mk∈m;其中m表示計(jì)算fk(m)所需的相關(guān)消息,mk和fk(m)分別代表校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)更新前和更新后的似然比。
本方法提出殘差的產(chǎn)生具有時(shí)效性,通過(guò)尋找局部最大殘差來(lái)建立一個(gè)校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息的更新序列。
因此,本發(fā)明相對(duì)于現(xiàn)有技術(shù)具有如下的優(yōu)點(diǎn)及效果:
只從最新產(chǎn)生的殘差中找出最大的殘差,可在計(jì)算的同時(shí)進(jìn)行搜索,因此殘差不需要存儲(chǔ),減少了存儲(chǔ)復(fù)雜度;最新產(chǎn)生的殘差也就是局部殘差,減少了搜索最大殘差的復(fù)雜度。
相對(duì)于svnf-rbp算法,本發(fā)明不但能提升了較少迭代次數(shù)的譯碼性能,還有效提升了高信噪比的譯碼性能。
附圖說(shuō)明
圖1是算法lrbp的動(dòng)態(tài)策略示意圖。
圖2是算法flooding,lbp,nwrbp,svnf-rbp和lrbp在碼長(zhǎng)1944,碼率
圖3是算法svnf-rbp和lrbp在碼長(zhǎng)1944,碼率
具體實(shí)施方式
下面結(jié)合實(shí)施例及附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限于此。
本發(fā)明是一種基于ldpc碼的局部動(dòng)態(tài)譯碼方法,是針對(duì)ldpc碼的動(dòng)態(tài)bp譯碼方法(lrbp),該方法提出殘差的產(chǎn)生具有時(shí)效性,通過(guò)尋找局部最大殘差來(lái)建立一個(gè)校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息的更新序列。
設(shè)n(vi)代表與變量節(jié)點(diǎn)vi相連的所有校驗(yàn)節(jié)點(diǎn),n(vi)\cj則表示與變量節(jié)點(diǎn)vi相連的不包括校驗(yàn)節(jié)點(diǎn)cj的所有其他校驗(yàn)節(jié)點(diǎn);n(ci)代表與校驗(yàn)節(jié)點(diǎn)(校驗(yàn)方程)ci相連的所有變量節(jié)點(diǎn),n(ci)\vj則表示與校驗(yàn)節(jié)點(diǎn)ci相連的不包括變量節(jié)點(diǎn)vj的所有其他變量節(jié)點(diǎn)。互相連接的變量節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)消息函數(shù)可定義為
假設(shè)校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息
首先,更新消息
其次,更新消息
最后,計(jì)算殘差
具體而言,本發(fā)明的算法迭代過(guò)程如下:
1)初始化所有mc,v=0;
2)初始化所有
3)計(jì)算所有r(mc,v);
4)找出
5)計(jì)算
6)計(jì)算
7)如果所有校驗(yàn)方程滿足或是達(dá)到設(shè)定的最大迭代次數(shù),則結(jié)束譯碼,否則返回步驟4)
在動(dòng)態(tài)bp譯碼算法的一次迭代過(guò)程中,要么校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)的消息計(jì)算量與bp算法相同,要么變量節(jié)點(diǎn)到校驗(yàn)節(jié)點(diǎn)的消息計(jì)算量與bp算法相同,所有的仿真都將嚴(yán)格遵守這個(gè)規(guī)則。下表給出對(duì)此算法一次迭代過(guò)程的消息計(jì)算量,其中,
表1一次迭代中的校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息計(jì)算量
表2一次迭代中的變量節(jié)點(diǎn)到校驗(yàn)節(jié)點(diǎn)消息計(jì)算量
表1、2中,floodingbp算法作為同步消息更新算法,lbp算法作為異步非動(dòng)態(tài)消息更新算法,僅作參考。
動(dòng)態(tài)算法nwrbp算法與svnf-rbp算法都是采用校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息最大殘差,最大殘差計(jì)算公式:r(mk)=||fk(m)-mk||∞,其中r(mk)表示最大消息殘差,m表示計(jì)算fk(m)所需的相關(guān)消息,mk和fk(m)分別代表校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)更新前和更新后的似然比,來(lái)找出下一個(gè)要更新的校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息,然后展開(kāi)一個(gè)實(shí)質(zhì)的消息更新過(guò)程,兩個(gè)算法都需要對(duì)殘差進(jìn)行存儲(chǔ),所不同的是nwrbp算法是在全部非零校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息殘差中選取下一個(gè)要優(yōu)先更新的消息,而svnf-rbp算法則是在每個(gè)變量節(jié)點(diǎn)覆蓋范圍中的非零校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息殘差中選取下一個(gè)要優(yōu)先更新的消息。
下面給出相關(guān)算法主要特征:
nwrbp算法:
1)、初始化所有mc,v=0;
2)、初始化所有
3)、計(jì)算所有r(mc,v);
4)、在所有非零殘差中挑選最大殘差
5)、對(duì)每一個(gè)vk∈n(ci),計(jì)算
6)、對(duì)每一個(gè)ca∈n(vk),計(jì)算
7)、對(duì)每一個(gè)vb∈n(ca)\vk,計(jì)算
8)、如果所有校驗(yàn)方程滿足或是達(dá)到設(shè)定的最大迭代次數(shù),那么結(jié)束譯碼,否則返回步驟4。
svnf-rbp算法:
1)、初始化所有mc,v=0;
2)、初始化所有
3)、計(jì)算所有r(mc,v);
4)、對(duì)每一個(gè)vi,對(duì)所有vb∈n(ca)\vi(ca∈n(vi)),在所有非零殘差
5)、計(jì)算
6)、對(duì)每一個(gè)ca∈n(vmax)\cmax,計(jì)算
7)、對(duì)每一個(gè)vb∈n(ca)\vmax,計(jì)算
8)、如果所有校驗(yàn)方程滿足或是達(dá)到設(shè)定的最大迭代次數(shù),那么結(jié)束譯碼,否則返回步驟4。
從上述算法描述可看出,該lrbp算法與nwrbp和svnf-rbp算法都采用校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)似然比值絕對(duì)殘差定位方法,不同的是lrbp算法區(qū)別殘差產(chǎn)生的時(shí)間,只使用最新產(chǎn)生的殘差;而nwrbp和svnf-rbp算法對(duì)不同時(shí)間產(chǎn)生的殘差給予的是無(wú)差別對(duì)待,對(duì)所有殘差一視同仁??紤]到svnf-rbp是目前動(dòng)態(tài)算法中最具代表性的,因此lrbp算法將主要與svnf-rbp算法進(jìn)行對(duì)比。
如圖1所示,黑色圓圈表示已經(jīng)被更新的變量節(jié)點(diǎn),黑色方框表示已經(jīng)被更新的校驗(yàn)節(jié)點(diǎn)。動(dòng)態(tài)異步消息更新策略步驟如下,首先如圖1(a)所示,選出校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息
圖2列出了包括floodingbp、lbp在內(nèi)的nwrbp,svnf-rbp和lrbp在碼長(zhǎng)1944,碼率
圖3給出了碼長(zhǎng)1944,碼率
本發(fā)明公開(kāi)一種基于ldpc碼的動(dòng)態(tài)譯碼方法——lrbp(localresidualbp),該方法不但能減少殘差的搜索和存儲(chǔ)復(fù)雜度,同時(shí)還能提升較小迭代次數(shù)內(nèi)的譯碼性能(svnf-rbp算法在較小迭代次數(shù)內(nèi)幾乎沒(méi)有性能提升),高信噪比時(shí)譯碼性能也明顯優(yōu)于svnf-rbp算法。
lrbp算法首先提出殘差具有時(shí)效性,也就是不同時(shí)間產(chǎn)生的殘差,其作用也不盡相同。lrbp算法只關(guān)注最新產(chǎn)生的殘差,在最新產(chǎn)生的殘差中找出最大殘差來(lái)建立校驗(yàn)節(jié)點(diǎn)到變量節(jié)點(diǎn)消息的更新序列。由于最新產(chǎn)生的殘差是由最新的消息更新產(chǎn)生,因此總是能用最新的消息去更新下一個(gè)消息,這一行為起到加速收斂的效果,提升了譯碼性能。同時(shí),最新殘差中搜索最大殘差,可在計(jì)算的同時(shí)進(jìn)行,因此不需要存儲(chǔ)殘差,搜索的范圍減小,有效降低了動(dòng)態(tài)譯碼算法的存儲(chǔ)搜索復(fù)雜度。
上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。