本發(fā)明涉及信息傳輸與處理,特別是指一種改進polar特殊節(jié)點處理的高速polar譯碼方法。
背景技術(shù):
1、極化碼作為目前唯一被理論證明可以達到香農(nóng)極限的線性糾錯信道編碼,并且具有可實用的線性復(fù)雜度編譯碼能力的信道編碼技術(shù),是5g?nr協(xié)議中控制信道的信道編碼方案。由于下行控制信道中,用戶設(shè)備需要在多個成員中進行盲檢搜索,即進行多次polar譯碼,因此在實施中polar譯碼器的譯碼時延是重要技術(shù)指標(biāo)。
2、文獻[1]提出了polar的串行干擾消除(sc)算法,sc算法由于其串行譯碼屬性,譯碼延時大;且在實用的中短碼長場景下譯誤碼率性能差。文獻[2]提出列表串行干擾消除scl算法,該算法在譯碼過程中保留l條路徑,提高了誤碼率性能;為了提高譯碼效率,文獻[3]提出了一種高效的并行scl譯碼算法,該算法支持并行譯碼,當(dāng)并行度為m時,可一次譯碼2m個比特,但是該算法中排序的復(fù)雜程度與并行度呈指數(shù)次增加,因此并行度不宜過高,因此對降低譯碼延時有一定限制。
3、[1]arikan?e.channel?polarization:a?method?for?constructing?capacity-achieving?codes?for?symmetric?binary-input?memoryless?channels[j].ieee,2008.
4、[2]tal?i,vardy?a.list?decoding?of?polar?codes[j].ieee,2012.
5、[3]yuan?b,parhi?kk.low-latency?successive-cancellation?list?decodersfor?polar?codes?with?multibit?decision[j].ieee?transactions?on?very?largescale?integration(vlsi)systems,2014,23(10).
技術(shù)實現(xiàn)思路
1、有鑒于此,本發(fā)明提出一種改進polar特殊節(jié)點處理的高速polar譯碼方法。該方法根據(jù)polar譯碼節(jié)點的特征對節(jié)點進行分類,對不同節(jié)點進行特殊的處理,從而降低了譯碼時延,提高了譯碼效率。
2、為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
3、一種改進polar特殊節(jié)點處理的高速polar譯碼方法,包括以下步驟;
4、步驟1,將nr協(xié)議定義的polar序列記為中取出元素值小于n的元素并保持原相對位置,得到子序列qn,n為接收信號實際碼長,將子序列qn中的前n-k個元素值記為凍結(jié)比特位置,將子序列qn中的后k個元素值記為信息比特位置,k為信息比特長度;
5、步驟2,構(gòu)建長度為n的編碼比特屬性序列:在編碼比特屬性序列的n個元素中,凍結(jié)比特位置對應(yīng)的序列元素為0,信息比特位置對應(yīng)的序列元素為1;將編碼比特屬性序列開始段的元素0的連續(xù)個數(shù)記為f;
6、步驟3,令stage=log2(n),將接收信號的初始信道信息度量值記為y;將譯碼位置記為bit_count,初始化表示向下取整;將當(dāng)前路徑數(shù)記為l,初始化l=1,將所有路徑的pm初始值記為0;
7、步驟4,計算下一級的llr值:
8、當(dāng)對二叉樹的左子樹進行計算時,執(zhí)行f運算更新llr:
9、
10、當(dāng)對二叉樹的右子樹進行計算時,執(zhí)行g(shù)運算更新llr:
11、
12、其中,ll為stage-1階段的llr取值,l1為當(dāng)前stage階段的llr取值,stage=log2(n)對應(yīng)的llr取值即為y,上角標(biāo)i表示該二叉樹的第i個葉節(jié)點,0≤i≤2stage-1-1,下角標(biāo)l表示路徑索引,0≤l≤l-1;
13、sign()表示取符號運算,即:
14、
15、beta表示譯碼比特的部分和;
16、步驟5,令stage=stage-1,若stage≤5,則執(zhí)行步驟6,否則繼續(xù)執(zhí)行步驟4;
17、步驟6,從編碼比特屬性序列中取出第bit_count+1到第bit_count+2stage個元素的子序列,記該子序列為u_bit,這個子序列構(gòu)成一個子二叉樹的根節(jié)點,判斷該節(jié)點類型;
18、步驟7,根據(jù)節(jié)點類型進行pm更新、路徑選擇與節(jié)點譯碼,完成改進polar特殊節(jié)點處理的高速polar譯碼。
19、進一步地,步驟6的具體方式為:
20、若u_bit中的元素取值均為0,則將該節(jié)點類型記為rate0節(jié)點;
21、若u_bit中的元素取值均為1,則將該節(jié)點類型記為rate1節(jié)點;
22、若u_bit中的第一個元素取值為0,其余元素取值均為1,則將該節(jié)點類型記為spc節(jié)點;
23、若u_bit中的最后一個元素取值為1,其余元素取值均為0,則將該節(jié)點類型記為rep節(jié)點;
24、若u_bit不符合以上所有特征,則將該節(jié)點記為other節(jié)點。
25、進一步地,步驟7的具體方式為:
26、步驟701,若節(jié)點類型為rate0節(jié)點則執(zhí)行步驟702,若節(jié)點類型為rate1節(jié)點則執(zhí)行步驟703,若節(jié)點類型為spc節(jié)點則執(zhí)行步驟704,若節(jié)點類型為rep節(jié)點則執(zhí)行步驟705,若節(jié)點類型為other節(jié)點則返回步驟4;
27、步驟702,當(dāng)節(jié)點類型為rate0節(jié)點時,直接進行pm更新:
28、
29、其中,pmt-1表示上次更新得到的pm值,pmt指的是本次更新得到的新的pm取值,h()表示硬判決計算即:
30、
31、且當(dāng)前子序列u_bit中bit_count+1到bit_count+2stage對應(yīng)位置的譯碼結(jié)果均為0;
32、若bit_count=n,則結(jié)束循環(huán),完成polar譯碼,否則令bit_count=
33、bit_count+2stage,根據(jù)當(dāng)前譯碼位置bit_count所在子二叉樹的級數(shù)確定stage的取值,并返回步驟4;
34、步驟703,當(dāng)節(jié)點類型為rate1節(jié)點時,執(zhí)行以下過程:
35、步驟703-1,設(shè)置循環(huán)變量k,令k=1;
36、步驟703-2,對l條路徑的ll絕對值分別按照從小到大的順序進行排序,針對第l條路徑的|ll|排序后的第k個值,將其對應(yīng)的葉節(jié)點索引值記為m(l,k),rate1節(jié)點進行路徑分裂,路徑數(shù)從l條分裂為2l條,每條路徑分裂出的兩條新路徑的llr值與源路徑的llr值一致;從而得到pm更新為:
37、
38、若2l大于8,則對路徑進行排序與選擇,保留pm值最小的8條路徑,更新l=min{2l,8};
39、步驟703-3,判斷k=2是否成立,若成立則執(zhí)行步驟703-4,否則令k=k+1,并執(zhí)行步驟703-2;
40、步驟703-4,在當(dāng)前子序列u_bit中,針對路徑第m(l,k)位取值為0,針對路徑第m(l,k)位取值為1,其中k∈{1,2};對m(l,k)之外的比特進行硬判決得到對應(yīng)的取值結(jié)果;最終獲得全部bit_count+1到bit_count+2stage位置的取值之后,對取值進行碼長為2stage的polar編碼獲得最終的譯碼結(jié)果;
41、步驟703-5,若bit_count=n,則結(jié)束循環(huán),完成polar譯碼,否則令bit_count=bit_count+2stage,根據(jù)當(dāng)前譯碼位置bit_count所在子二叉樹的級數(shù)確定stage的取值,并執(zhí)行步驟4;
42、步驟704,當(dāng)節(jié)點類型為spc節(jié)點時,執(zhí)行以下過程:
43、步驟704-1,計算該節(jié)點硬判決的校驗和:
44、
45、對l條路徑的ll絕對值分別按照從小到大的順序進行排序,針對第l條路徑的|ll|排序后的第1個值,將其對應(yīng)的葉節(jié)點索引值記為m(l,1),則有:
46、
47、將pm更新為:
48、
49、步驟704-2,設(shè)置循環(huán)變量k,令k=2;
50、步驟704-3,針對第l條路徑的|ll|排序后的第k個值,將其對應(yīng)的葉節(jié)點索引值記為m(l,k),spc節(jié)點進行路徑分裂,路徑數(shù)從l條分裂為2l條;從而得到pm更新為:
51、
52、若2l大于8,則對路徑進行排序與選擇,保留pm值最小的8條路徑,更新l=min{2l,8};
53、步驟704-4,判斷k=4是否成立,若成立則執(zhí)行步驟704-5,否則令k=k+1,并執(zhí)行步驟704-3;
54、步驟704-5,在子序列u_bit中,若則第m(l,1)位取值為若則第m(l,1)位取值為
55、針對路徑第m(l,k)位取值為0,針對路徑第m(l,k)位取值為1,其中k∈{2,3,4};
56、對m(l,1)、m(l,2)、m(l,3)與m(l,4)之外的比特進行硬判決得到對應(yīng)的取值結(jié)果;
57、對第一個比特進行更新,第一個比特等于其它所有比特的模2和;
58、獲得全部bit_count+1到bit_count+2stage位置的取值之后,對取值進行碼長為2stage的polar編碼獲得最終的譯碼結(jié)果;
59、步驟704-6,若bit_count=n,則結(jié)束循環(huán),完成polar譯碼,否則令bit_count=bit_count+2stage,根據(jù)當(dāng)前譯碼位置bit_count所在子二叉樹的級數(shù)確定stage的取值,并執(zhí)行步驟4;
60、步驟705,當(dāng)節(jié)點類型為rep節(jié)點時,rep節(jié)點進行路徑分裂,路徑數(shù)從l條分裂為2l條,從而得到pm更新為:
61、
62、若2l大于8,則對路徑進行排序與選擇,保留pm值最小的8條路徑,更新l=min{2l,8};
63、在當(dāng)前子序列u_bit中,針對路徑第bit_count+2stage位譯碼結(jié)果為0,針對路徑第bit_count+2stage位譯碼結(jié)果為1;當(dāng)前子序列u_bit的其余位置譯碼結(jié)果均為0;
64、若bit_count=n,則結(jié)束循環(huán),完成polar譯碼,否則令bit_count=
65、bit_count+2stage,根據(jù)當(dāng)前譯碼位置bit_count所在子二叉樹的級數(shù)確定stage的取值,并執(zhí)行步驟4。
66、由于采用了上述技術(shù)方案,本發(fā)明與現(xiàn)有技術(shù)相比的有益效果在于:
67、1、相比于傳統(tǒng)scl算法需要從根節(jié)點開始執(zhí)行fg運算直到葉節(jié)點,本發(fā)明中fg運算只需要執(zhí)行至特殊節(jié)點的stage,提高了譯碼效率。
68、2、傳統(tǒng)scl算法需要對每一個信息比特執(zhí)行一次pm排序,本發(fā)明中對于rate1節(jié)點和spc節(jié)點,只需要對可信度較低的位置進行路徑擴張,減少了排序次數(shù)。
69、3、相比于兩并行譯碼算法,由于特殊節(jié)點的長度均大于或等于2,本發(fā)明的譯碼并行度有所提高。