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