一種低復(fù)雜度的列分層ldpc譯碼器實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種低復(fù)雜度的列分層LDPC譯碼器實(shí)現(xiàn)方法,屬于通信信道譯碼領(lǐng) 域。
【背景技術(shù)】
[0002] LDPC碼的譯碼算法通常采用洪水信息傳遞策略,在每次迭代中所有的變量節(jié)點(diǎn)和 校驗(yàn)節(jié)點(diǎn)的消息更新都是并行進(jìn)行的,采用洪水信息傳遞策略情況下,對(duì)于MXN維的LDPC 碼,節(jié)點(diǎn)的信息更新需要M路校驗(yàn)節(jié)點(diǎn)處理單元和N路變量節(jié)點(diǎn)處理單元并行工作,節(jié)點(diǎn)處 理單元處理的各節(jié)點(diǎn)信息采用上一輪迭代產(chǎn)生的結(jié)果。以d。表示矩陣中校驗(yàn)節(jié)點(diǎn)的度數(shù), dv表示變量節(jié)點(diǎn)的度數(shù),該方法需要并行d¥路進(jìn)行校驗(yàn)節(jié)點(diǎn)的更新,每路要求計(jì)算d。個(gè)數(shù) 的最小值及次小值,其運(yùn)算資源占用量十分龐大。另外,在存儲(chǔ)訪問(wèn)上該方法要求一個(gè)時(shí)鐘 周期內(nèi)同時(shí)取出d。?dv個(gè)變量節(jié)點(diǎn)的信息,對(duì)存儲(chǔ)資源的帶寬要求也非常高。
[0003] 分層譯碼LayeredBP(LBP)是一種串行譯碼算法,在迭代譯碼中,節(jié)點(diǎn)信息的更新 采用串行的工作方式,通過(guò)利用本次迭代中已經(jīng)更新的節(jié)點(diǎn)信息,將能夠加快譯碼的收斂 速度。研究表明沒有經(jīng)過(guò)順序優(yōu)化的分層譯碼可以節(jié)省一半的迭代次數(shù)。譯碼器按校驗(yàn)矩 陣的列的順序進(jìn)行信息更新的,即信息更新是以變量節(jié)點(diǎn)為單位的算法,稱為列分層譯碼 算法。列分層譯碼算法,如常見的ShuffledBP算法,為了降低實(shí)現(xiàn)的復(fù)雜度,在外信息更 新過(guò)程中通常采用最小和算法,以最小值和次小值近似計(jì)算校驗(yàn)節(jié)點(diǎn)的外信息,但列分層 算法由于在外信息更新過(guò)程中以列順序進(jìn)行信息更新,為了保證譯碼過(guò)程中外信息更新過(guò) 程中最小值和次小值的準(zhǔn)確性,需要對(duì)所有變量的外信息進(jìn)行保存。針對(duì)該缺陷,一種名為 Col-Layer-3min的簡(jiǎn)化譯碼算法被提出,該算法將每個(gè)校驗(yàn)節(jié)點(diǎn)更新所需的d。個(gè)外信息存 儲(chǔ)單元縮減到兩個(gè)外信息三元組,能夠在譯碼損失很低的情況下有效降低譯碼實(shí)現(xiàn)過(guò)程中 外信息存儲(chǔ)所需的硬件資源,但該算法在三元組更新過(guò)程中引入了額外的三元組比較更新 計(jì)算,在一定程度上增加了譯碼過(guò)程中的數(shù)學(xué)計(jì)算量。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的技術(shù)解決問(wèn)題是:克服現(xiàn)有技術(shù)的不足,提供了一種低復(fù)雜度的列分層 LDPC譯碼器實(shí)現(xiàn)方法,在現(xiàn)有技術(shù)Col-Layer-3min算法的基礎(chǔ)上進(jìn)一步降低了譯碼過(guò)程 中每個(gè)校驗(yàn)節(jié)點(diǎn)更新所需的外信息存儲(chǔ)資源,將存儲(chǔ)所需的外信息三元組減少為外信息二 元組,與Col-Layer-3min算法的三元組更新計(jì)算相比,提出方法的二元組更新計(jì)算復(fù)雜度 明顯降低,且譯碼性能損失極少。
[0005] 本發(fā)明的技術(shù)解決方案是:
[0006] -種低復(fù)雜度的列分層LDPC譯碼器實(shí)現(xiàn)方法,其特征在于步驟如下:
[0007] (1)利用信道接收的似然比LLR信息f,初始化各校驗(yàn)節(jié)點(diǎn)的外信息,其中j為接 收比特對(duì)應(yīng)的校驗(yàn)矩陣列標(biāo),0 <j〈N:對(duì)于第i行的外信息,0 <i〈M,計(jì)算該第i行中所有 非0元素對(duì)應(yīng)的fj的最小值Hii和次小值s;,記為Oiii,Si),并記錄其列標(biāo)Qmi,is;);將第i 行各校驗(yàn)節(jié)點(diǎn)的符號(hào)信息Sgni]初始化為該列似然比LLR信息^,的符號(hào)位,并將所有sgnu累加后得到該第i行的外信息符號(hào)總和Sgruall1,將譯碼的迭代次數(shù)k初始化為1 ;其中,N 為L(zhǎng)DPC校驗(yàn)矩陣的列數(shù),M為L(zhǎng)DPC校驗(yàn)矩陣的行數(shù),且N>M。
[0008] (2)迭代譯碼,計(jì)算步驟如下:
[0009] a)將LDPC校驗(yàn)矩陣的第一行設(shè)定為初始更新行,即標(biāo)記當(dāng)前行為i,且令i= 0 ;
[0010] b)將與當(dāng)前行對(duì)應(yīng)的校驗(yàn)節(jié)點(diǎn)i相連接的所有山個(gè)變量節(jié)點(diǎn)的集合記為Vi;d¥為 LDPC碼的行重;
[0011] c)從Vi中取出一個(gè)變量節(jié)點(diǎn),令該節(jié)點(diǎn)下標(biāo)為j,將與變量節(jié)點(diǎn)j相連的所有校 驗(yàn)節(jié)點(diǎn)組成集合Cj,讀出集合Cj中所有行的外信息二元組(mx,sx)、(imx,isx)、對(duì)應(yīng)的符號(hào) 信息sgnXJ和sgn_all.j,XGCj;
[0012] d)利用外信息二元組(mx,sx)還原第k-1次迭代的變量節(jié)點(diǎn)外信息prx/ \xGCj, 其計(jì)算如下:
[0013]
[0014] e)計(jì)算第k-1次迭代的校驗(yàn)節(jié)點(diǎn)外信息lrx]k \XG&a為歸一化因子,公式如 下:
[0015] lrxjk1=prxjk1 ?a? (sgn_alljxorsgnxj);
[0016]f)讀出似然比LLR信息&,更新計(jì)算后驗(yàn)概率信息Ptallj并對(duì)第j個(gè)碼字做判 決處理,計(jì)算關(guān)系如下:
[0018] 如果prjlip〇,判決結(jié)果為碼字cj= 〇,否則碼字cj= 1 ;
[0019] g)更新計(jì)算第k次迭代的變量節(jié)點(diǎn)信息pr;/,計(jì)算如下:
[0020] Pi^jk=pr_allrlrif1
[0021] h)更新外信息二元組Oiii,Si)、Qmi,is;)、對(duì)應(yīng)的符號(hào)信息Sgnij和sgn_all;,并寫 入存儲(chǔ)器;
[0022] 具體為:
[0023] 1)當(dāng)Pri/^= 0 時(shí),sgnu取值為 0 ;當(dāng)pr;/〈0 時(shí),Sgnu取值為 1 ;
[0024] 2)當(dāng)pr_all.j彡 0 時(shí),sgn_all;取值為 0 ;當(dāng)pr_all』〈0 時(shí),sgn_alli取值為 1 ;
[0025] 3)當(dāng)j=imjt,將IprI與s;:?行比較,若IprJI<Si,將Ini值更ff為IprI, 否則,將Hii值更新為原s;值,im;更新為原is;值,s;值更新為(IprJI+Si) /2,isj:t更新 為j;
[0026] 當(dāng)j=is^,將IprjI與叫進(jìn)行比較,若IprI<Ini,則將叫值更新為 IprukI,inii更新為j,s;值更新為原m;值,is;值更新為原im;值,否則,將s;值更新為 (Ipri/l+nO/%isj:t更新為j;
[0027] 當(dāng)7' $忉",.A.丨時(shí),將IPri/I與Oiii,Si)進(jìn)行比較,若IPri/I彡nv則將叫值更新為 Pri/1,in!;更新為j,將s;值更新為原m;值,is;值更新為原im;值,若m;〈IPri/I彡Si, 則將sj:t更新為|pri/l,isji;更新為j,若|pri/pSi,則IIii,和Si維持原值不變;
[0028] i)將變量節(jié)點(diǎn)」從V1中移除,若V1為非空集合,跳轉(zhuǎn)至步驟c)進(jìn)行第i行的下 一個(gè)變量節(jié)點(diǎn)的更新計(jì)算;若V1為空集,則將當(dāng)前行的下標(biāo)i加1,若此時(shí)i辛M,跳轉(zhuǎn)至步 驟d)進(jìn)行下一行的變量節(jié)點(diǎn)更新,否則進(jìn)入(3)進(jìn)行判決處理;
[0029] (3)判決:檢查本次的迭代次數(shù)k是否已達(dá)到預(yù)設(shè)的最大迭代次數(shù)it_,若k= itmax,迭代停止,跳轉(zhuǎn)至步驟⑷;若Kitmax,將c= [c。,C1,…,Cj,…,cNJ代入LDPC校驗(yàn)矩 陣H進(jìn)行校驗(yàn)計(jì)算,若CHt= 0,則表示譯碼結(jié)果滿足校驗(yàn)方程,迭代停止,跳轉(zhuǎn)至步驟(4), 若cHT辛0,將迭代次數(shù)k加1,返回步驟⑵進(jìn)行下一次的迭代運(yùn)算;
[0030] ⑷將所有判決碼字C= [c。,C1,…,Cj,…,cNJ作為譯碼結(jié)果輸出,完成LDPC譯 碼。
[0031] 本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:
[0032] (1)本發(fā)明在Col-Layer_3min算法的基礎(chǔ)上進(jìn)一步減少譯碼過(guò)程中外信息存儲(chǔ) 的資源需求量,并且可以大幅降低Col-Layer-3min算法在壓縮存儲(chǔ)上所需的比較及替換 次數(shù)。
[0033] (2)本發(fā)明提出方法通過(guò)對(duì)最小值損失的補(bǔ)償計(jì)算,能夠在降低存儲(chǔ)和計(jì)算資源 的同時(shí)保持優(yōu)異的譯碼性能。
【附圖說(shuō)明】
[0034] 圖1為本發(fā)明流程圖;
[0035] 圖2是j=imjt|pr^1的取值與二元組的取值關(guān)系;
[0036] 圖3是j=isjt|pr^1的取值與二元組的取值關(guān)系;
[0037] 圖4是./?彳/叫,/.V,.丨時(shí)IprjI的取值與二元組的取值關(guān)系。
[0038] 圖5為本發(fā)明和現(xiàn)有譯碼算法的性能比較。
【具體實(shí)施方式】
[0039] 本發(fā)明提出的一種低復(fù)雜度列分層LDPC譯碼器實(shí)現(xiàn)方法屬于串行的LDPC譯碼方 法,其特點(diǎn)是譯碼器的譯碼計(jì)算單元復(fù)用程度高,迭代收斂速度快,適合應(yīng)用于各種速率要 求不高的數(shù)字通信信道傳輸糾錯(cuò)中。
[0040] 如圖1所示,本發(fā)明提供的一種低復(fù)雜度的列分層LDPC譯碼器實(shí)現(xiàn)方法,步驟如 下:
[0041] (1)利用信道接收的似然比LLR信息f,初始化各校驗(yàn)節(jié)點(diǎn)的外信息,其中j為接 收比特對(duì)應(yīng)的校驗(yàn)矩陣列標(biāo),0 <j〈N:對(duì)于第i行的外信息,0 <i〈M,計(jì)算該第i行中所有 非0元素對(duì)應(yīng)的fj的最小值Hii和次小值s;,記為Oiii,Si),并記錄其列標(biāo)Qmi,is;);將第i 行各校驗(yàn)節(jié)點(diǎn)的符號(hào)信息Sgni]初始化為該列似然比LLR信息^,的符號(hào)位,并將所有sgnu 累加后得到該第i行的外信息符號(hào)總和Sgruall1,將譯碼的迭代次數(shù)k初始化為1 ;其中,N 為L(zhǎng)DPC校驗(yàn)矩陣的列數(shù),M為L(zhǎng)DPC校驗(yàn)矩陣的行數(shù),且N>M。
[0042] (2)迭代譯碼,計(jì)算步驟如下:
[0043] a)將LDPC校驗(yàn)矩陣的第一行設(shè)定為初始更新行,即標(biāo)記當(dāng)前行為i,且令i= 0 ;
[0044] b)將與當(dāng)前行對(duì)應(yīng)的校驗(yàn)節(jié)點(diǎn)i相連接的所有山個(gè)變量節(jié)點(diǎn)的集合記為Vi;d¥為 LDPC碼的行重;
[0045] c)從Vi中取出一個(gè)變量節(jié)點(diǎn),令該節(jié)點(diǎn)下標(biāo)為j,將與變量節(jié)點(diǎn)j相連的所有校 驗(yàn)節(jié)點(diǎn)組成集合Cj,讀出集合Cj中所有行的外信息二元組(mx,sx)、(imx,isx)、對(duì)應(yīng)的符號(hào) 信息sgnXJ和sgn_all.j,XGCj;
[0046] d)利用外信息二元組(mx,sx)還原第k-1次迭代的變量節(jié)點(diǎn)外信息prx/ \xGCj, 其計(jì)算如下:
[0048] e)計(jì)算第k-1次迭代的校驗(yàn)節(jié)點(diǎn)外信息Irx/ \XGCj,公式如下:
[0049] lrxjk1=prxjk1 ?a? (sgn_alljxorSgnxj);
[0050] a為歸一化最小和算法中的歸一化因子,用于補(bǔ)償最小和算法中近似計(jì)算導(dǎo)致的 損失部分,其取值為常數(shù),常見取值范圍在〇. 7到0. 9之間,其具體取值與采用的LDPC碼矩 陣有關(guān)。
[0051] f)讀出似然比LLR信息&,更新計(jì)算后驗(yàn)概率信息Ptallj并對(duì)第j個(gè)碼字做判 決處理,計(jì)算關(guān)系如下:
[0053] 如果prjlip〇,判決結(jié)果為碼字cj= 〇,否則碼字cj= 1 ;
[0054] g)更新計(jì)算第k次迭代的變量節(jié)點(diǎn)信息pr;/,計(jì)算如下:
[0055] Pi^jk=pr_allrlrif1
[0056]h)更新外信息二元組Oiii,Si)、Qmi,is;)、對(duì)應(yīng)的符號(hào)信息Sgnij和sgn_all;,并寫 入存儲(chǔ)器;
[0057] 具體為:
[0058] 1)當(dāng)pr;/》0時(shí),sgnu取值為0 ;當(dāng)pr;/〈0時(shí),Sgnu取值為1 ;
[0059] 2)當(dāng)pr_all.j彡 0 時(shí),sgn_all;取值為 0 ;當(dāng)pr_all.j〈0 時(shí),sgn_alli取值為 1 ;
[0060] 3)當(dāng)j=imjt,將IprI與s;:?行比較,若IprJI<Si,將Ini值更ff為IprI, 否則,將Hii值更新為原s;值,im;更新為原is;值,s;值更新為(Ip