李正杰,劉順蘭,張旭
(杭州電子科技大學電子信息學院,浙江 杭州 310018)
極化碼是由Arikan E教授于2009年基于信道極化現(xiàn)象而提出的一類線性分組碼,當碼長趨于無窮時,信息傳輸速率(或稱碼率)接近于信道容量[1]。極化碼作為首個理論上能達到香農極限的信道編碼方法,已被采納為5G增強型移動寬帶(enhance2 mobile broa2ban2,eMBB)場景中控制信道標準的編碼方案[2]。Polar碼在碼長N趨向無窮大時被證明可達信道容量。然而,實際中由于開銷的限制,碼長總是有限的,極化碼在中短碼長時性能欠佳。因此,提升Polar碼在有限碼長條件下的性能對于Polar碼能否實際應用非常關鍵。進一步研究表明,在有限長Polar碼下再級聯(lián)一個外碼能夠進一步提高其譯碼性能,設計性能更好的廣義級聯(lián)碼作為改善譯碼性能的一種方案被越來越多的學者所研究。循環(huán)冗余校驗碼級聯(lián)極化碼(CA-Polar)[3]、奇偶校驗碼級聯(lián)極化碼(PC-Polar)[4]以及Hash校驗碼級聯(lián)極化碼(Hash-Polar)[5]是當前主流的極化碼級聯(lián)外碼方案。
CA-Polar在譯碼過程中引入串行抵消列表(successive cancellation list,SCL)譯碼算法[6-7]和循環(huán)冗余校驗(cyclic re2un2ancy check,CRC),CRC有助于在SCL譯碼的列表中挑選出正確的譯碼結果,較大地提升了Polar碼的糾錯性能。之后參考文獻[4]提出奇偶校驗碼級聯(lián)極化碼(PC-Polar),PC校驗比特有類似于凍結比特的判定方法,在譯碼的過程中起到了譯碼路徑修剪的作用。除了CRC序列和PC序列級聯(lián)的Polar碼,文獻[5]提出了基于Hash序列級聯(lián)的極化碼,稱為Hash-Polar碼,Hash編碼器是一個非線性的編碼器,前一個編碼器的狀態(tài)會影響到后一個編碼器的狀態(tài),與CRC輔助校驗譯碼一致,在SCL譯碼結束時Hash譯碼器對L條路徑進行校驗,且Hash的檢驗比特數(shù)量更靈活。3GPP在RAN1#90會議上對這幾種方案進行評估,主要考慮的是加性高斯白噪聲(a22itive white Gaussian noise,AWGN)信道輸入下的誤塊率(block error rate,BLER)性能,結論是CA-Polar、Hash-Polar誤塊率性能相仿,而PC-Polar在某些碼長、碼率下(信息比特很小時)的誤塊率性能略好。
在Hash校驗碼級聯(lián)極化碼[5]的基礎上,本文提出分段CRC碼級聯(lián)Hash極化碼的設計方法。SCL譯碼算法本身逐比特按順序譯碼的特點,使譯碼過程存在錯誤傳播的現(xiàn)象,降低了譯碼的正確率,因此,本文建議采用改進的分段CRC輔助的SCL譯碼算法,分段CRC碼在譯碼過程中對前面已知部分譯碼結果進行校驗,校驗不通過,則路徑刪除,減少了錯誤傳播的現(xiàn)象。另外,分段CRC碼還能輔助路徑度量篩選可靠度更高的路徑,譯碼結果與生成CRC碼結果不一致則路徑度量值增加,相比只能在譯碼的最后階段篩選路徑作為譯碼結果的Hash輔助譯碼算法的可靠性更高。
極化碼是一種基于信道極化理論的信道編碼方式,利用信道極化產生的極化現(xiàn)象進行信息傳輸,在信道容量趨近于1的比特信道發(fā)送信息比特,在趨近于0的可靠度較低的信道上傳輸凍結比特,這種編碼方式稱為極化編碼。令碼長N= 2n,n> 0。每個碼字的編碼生成如下:
其中,BN為反序置換矩陣,F(xiàn)?n為克羅內克積,矩陣,令A為索引集合I的任意一個子集,信息比特序列記為uA,令為凍結比特序。定義比特信道索引集合設列,一般全部置為0,可將式(1)改為:
其中,GN(A)表示由A中元素對應的行構成的GN的子矩陣,GN(Ac)同理。
通過式(3),信源序列u1N編碼得到碼字c1N,從Polar碼信道編碼的過程可知,極化碼碼長為2的整數(shù)次冪,缺乏碼率兼容的靈活性,不能滿足實際需求。目前有鑿孔[8]和縮短[9]兩種方式可以獲得碼率兼容的Polar碼,但都以犧牲少量誤碼率為代價,因此需要研究更好的碼率兼容解決方案。
根據(jù)上述分析,該譯碼復雜度主要取決于LLR值的計算。SC譯碼算法的思想解決了極化碼的譯碼問題,也是后續(xù)各種改進譯碼算法的基礎,目前應用廣泛的SCL譯碼算法是將SC譯碼算法和List算法結合的改進譯碼算法。Polar碼的譯碼算法還有置信傳播(belief propagation,BP)算法[10]、堆消去(successive cancellation stack,SCS)譯碼算法[11],但都沒有SCL譯碼算法理想,針對降低SCL譯碼算法的復雜度,還出現(xiàn)了快速SCL譯碼算法[12]。SCL譯碼算法雖好,但其本身存在的錯誤傳播現(xiàn)象使得譯碼正確概率不夠理想,高效的譯碼算法是信道編碼能否實用的決定因素,因此,迫切需要研究性能更好的譯碼方案。
文獻[5]提出CRC輔助的Hash校驗碼級聯(lián)極化碼(Hash-CRC-Polar)方案,Hash-CRC-Polar編碼框圖如圖1所示,極化碼作為內碼進行編碼,CRC和Hash碼作為外碼進行雙校驗,雙檢驗能有效提高系統(tǒng)的檢錯能力。信息比特經過CRC編碼器,得到帶有C位的循環(huán)冗余校驗比特的信息序列其次經過Hash編碼,得到外碼碼字Hash-CRC-Polar外碼碼字結構如圖2所示。極化碼的信息位上放置外碼碼字凍結位放置凍結比特,極化碼編碼后得到碼字。 Hash-CRC-Polar碼的具體編碼過程:CRC編碼后的序列分為I> 2段依次輸入Hash編碼器得到Hash狀態(tài)序列。
圖1 Hash-CRC-Polar編碼框圖
圖2 Hash-CRC-Polar外碼碼字結構
? Hash函數(shù)h的兩個輸入為:第i段的整數(shù)表示ki和從第(i-1)段獲得的Hash狀態(tài)Si-1,然后計算第i段的Hash狀態(tài):Si=h(Si-1,ki)。
? 所有的段計算完成之后,將SI轉換為H比特的序列,這里的H稱為Hash狀態(tài)序列。將該序列附加在序列后作為Hash編碼器的輸出碼字。Hash函數(shù)可采用改進的“one-at-a-time”Hash函數(shù)[13]。與CRC編碼相比,Hash編碼器的檢驗比特數(shù)量可以很靈活。
在接收端,采用SCL譯碼,Hash狀態(tài)比特當作信息比特譯碼,在SCL譯碼結束時,Hash譯碼器和CRC譯碼器都將對L條候選路徑進行校驗,雙檢驗能提高譯碼結束后路徑選擇的正確性,但當L值較小,即候選路徑較少時,誤碼性能提升不明顯,增大列表大小L,譯碼的復雜度也會提高。
基于參考文獻[5],本文提出了基于分段CRC(segmente2 CRC,SCRC)校驗碼級聯(lián)Hash極化碼(Hash-Polar)的雙校驗改進方案,簡稱Hash-SCRC-Polar。將信息比特分段,CRC對信息比特進行分段校驗,CRC參與到了譯碼時的校驗,解決了Hash和CRC在譯碼結束時重復校驗的問題;而且分段級聯(lián)碼中的CRC校驗碼不光能輔助路徑度量篩選可靠度更高的路徑,對CRC校驗不通過的路徑也能及時刪除,相對于原有的CRC輔助的Hash-SCL譯碼算法降低了復雜度。最后Hash校驗碼對SCL譯碼結束后的L條路徑進行校驗,選擇最佳譯碼路徑。
基于分段CRC校驗碼級聯(lián)Hash極化碼(Hash-SCRC-Polar)的編碼結構如圖3所示,其中,編碼主要由3部分組成:分段CRC編碼、Hash編碼、Polar碼編碼,外碼碼字結構如圖4所示。譯碼主要采用本文提出的分段CRC輔助的Hash-SCL譯碼算法。下文主要從編碼和譯碼兩個方面詳細闡述本文提出的新型編譯碼方法。
針對分段CRC校驗碼級聯(lián)Hash極化碼,這里給出兩種編碼方案,如圖3所示。不同的是,圖3(a)對分段CRC編碼后的信息序列進行Hash編碼,圖3(b)對分段CRC編碼前的信息比特進行Hash編碼。相比于圖3(a)對分段CRC編碼后的信息序列再Hash編碼,圖3(b)只對原始信息比特進行Hash編碼,進行Hash編碼的信息比特少了分段CRC校驗位,待編碼的信息比特數(shù)減少,Hash編碼時所占內存資源會稍低,開銷減少。因此,本文選擇圖3(b)的設計方案。譯碼都是采用分段CRC輔助的Hash-Polar譯碼器,譯碼性能一致。
圖3 Hash-SCRC-Polar編譯碼框圖
圖3(b)中,分段CRC和Hash碼作為外碼,極化碼作為內碼進行編碼。信息比特d2,… ,dK)分成S段后分別經過CRC編碼器重組復用,每段得到C位循環(huán)冗余檢驗比特,最后得到帶有S×C位的循環(huán)冗余校驗比特的信息序列其中,qi1,… ,qiC為第i段信息序列的CRC碼,i= 1,2,… ,S。其次,信息比特經過Hash編碼得到Hash狀態(tài)序列,與分段CRC編碼后序列重組復用,得到外碼碼字極化碼的信息位上放置外碼碼字,Hash-SCRC-Polar外碼碼字結構如圖4所示。凍結位放置凍結比特,最后極化碼編碼后得到碼字c1N。
圖4 Hash-SCRC-Polar外碼碼字結構
Polar碼在不同譯碼算法下的誤碼性能具有差異,但Polar碼本身的誤碼性能在很大程度上受到碼構造的影響,即信息位和凍結位的選取。最開始的構造方法有巴氏參數(shù)(Bhattacharyya parameter)構造,是Arikan E針對BEC信道下的Polar碼構造提出的[1]。由于巴氏參數(shù)構造方法只適用于二進制刪除信道(binary erasure channel,BEC)。后面陸陸續(xù)續(xù)出現(xiàn)了計算AWGN比特信道的可靠度的方法。其中包括蒙特卡羅(Monte Carlo,MC)構造[1]、密度進化(2ensity evolution,DE)[14]、高斯近似構造(Gaussian approximation,GA)[15]、極化譜(polarization spectrum)[16]等,根據(jù)這些方法構造的Polar序列都依賴于構造時AWGN信道的信噪比,信噪比不同,得到的Polar序列也會不同,這使得碼構造不可避免地與信道存在一定的相關性,即所謂的信道敏感性。所以能夠有一種序列構造方法與具體的信道無關,在實際應用中會更具有價值,于是華為公司提出了一種基于極化重量(polarization weight,PW)的構造方法[17],它是基于Polar碼生成矩陣的固定行重進行構造的方法,該方法的序列構造方式與具體的信道無關,而且性能與基于高斯近似的碼構造方法在AWGN信道幾乎一致。另外,極化譜(polarization spectrun,PS)在文獻[16]中被提出,是近期極化碼構造方面的新進展。
本文采取極化重量(PW)的構造方法估計信道的可靠性。對于第i個子信道,其序號i的二進制表示為 (bn-1bn-2…b0),n=lbN,該極化信道的極化重量被定義為[18]:
式(7)即該信道的可靠度度量值,其中極化重量越大,表示信道的質量越好,最終可以選擇極化重量最大的K個信道作為傳輸信息位的比特信道。由式(7)可知,子信道可靠度的計算復雜度是線性的,且與GA等需要遞歸運算的方法相比,PW公式的復雜度極低,用PW的方法進行信道排序計算信道質量時,與底層信道類型無關,可以事先算出給定碼長N的所有比特信道。
對任意長度N,依次計算,并按照從小到大的順序排列,對應的就是可靠度由低到高的信道。例如,當碼長為64 bit時,n= lb64 = 6,當i= 63時 ,根據(jù)上述所得到的信道可靠性排序后,從中挑選K+SC+H個可靠性較高的信道傳輸非固定比特,其余信道傳輸凍結比特。將外碼碼字與凍結比特混合,外碼碼字映射到可靠度較高的信道,其余信道為凍結位,得到長度為N的序列。對Polar碼編碼器的輸入序列進行極化碼編碼,得到級聯(lián)碼字c1N,編碼完成。
文獻[5]中Hash輔助的CA-SCL譯碼算法只有在譯碼結束后進行校驗,基于分段CRC校驗碼輔助的Hash極化碼譯碼算法彌補了這一不足。在譯碼過程中引入了分段CRC校驗比特,CRC校驗比特可通過對前面已知的信息比特譯碼結果進行CRC得到,相當于一類動態(tài)的凍結比特,能在譯碼過程中輔助路徑度量值進行路徑的修飾,優(yōu)化路徑選擇,提高誤碼性能,彌補了原有譯碼算法僅僅依靠譯碼結束后路徑度量值進行譯碼路徑的修飾;另外,當CRC譯碼結果和CRC校驗結果不一致時,檢驗不通過,記錄該條路徑的CRC累計不通過次數(shù),若該條候選路徑的累計不通過次數(shù)達到預設定的上限,則該條候選路徑被刪除,相對于原有的譯碼算法降低了復雜度。譯碼結束時,Hash校驗碼對SCL譯碼結束后的L條路徑進行校驗,選出最佳譯碼路徑?;诜侄蜟RC校驗碼級聯(lián)Hash極化碼(Hash-SCRC-Polar)譯碼算法流程如圖5所示。
圖5 基于分段CRC碼級聯(lián)Hash極化碼(Hash-Polar)譯碼算法流程
在編碼端,Hash-SCRC-Polar級聯(lián)方案相比于Hash-CRC-Polar[5]級聯(lián)方案,SCRC校驗比特數(shù)量和CRC校驗比特數(shù)量相同,SCRC比CRC多了S-1次循環(huán)冗余校驗比特的確定,由于CRC檢驗比特的確定不涉及復雜的運算,所以編碼的計算量增加不多,編碼復雜度沒有明顯的增長,相對于性能的提升是可以接受的。
在譯碼端,本文的譯碼算法是在SCL譯碼算法的基礎上改進的,分段CRC校驗碼會在譯碼時參與校驗,而Hash-CRC-Polar級聯(lián)方案的CRC校驗碼是在SCL譯碼后完成校驗,其譯碼復雜度則為SCL譯碼器的計算復雜度。SCL譯碼算法的計算量由式(5)和式(6)總計執(zhí)行的次數(shù)T(5),(6)決定,T(5),(6)有個簡單的上界[7]:
因此,SCL譯碼器的計算復雜度為O(LNlbN),即Hash-CRC-Polar級聯(lián)方案的譯碼復雜度為O(LNlbN)。式(8)之所以成立是因為右邊的值是L個SC譯碼器總是在同時且從頭到尾地工作所產生的復雜度,實際上不是L個SC譯碼器都在運作,例如,譯碼第一個比特1u時實際上只有一個SC譯碼器在工作。
本文改進的譯碼算法在譯碼過程中能對于CRC校驗不通過的路徑及時進行刪除,提前終止錯誤的譯碼路徑,對應的SC譯碼器被清空,暫時處于未被激活狀態(tài),因此,改進的譯碼算法計算量為:
根據(jù)式(9),得到本文改進的譯碼算法復雜度仍為O(LNlbN),但計算量有所降低。
本文在AWGN信道下對比了3種不同方案的糾錯性能。不同方案的仿真參數(shù)見表1。
表1 不同方案的仿真參數(shù)
其中,Hash-CRC-Polar表示參考文獻[5]提出的級聯(lián)極化碼方案,Hash-Polar是在文獻[5]中Hash-CRC-Polar的基礎上刪除了CRC編譯碼部分的方案,Hash-SCRC-Polar表示本文提出的基于分段CRC校驗碼級聯(lián)Hash極化碼方案,設置S= 4段CRC,每段3位CRC檢驗比特,該方案不僅能提高系統(tǒng)的檢錯能力,也能有效降低誤碼率。在譯碼過程中,保留路徑L=16,保證類比方案的有效碼率相同,即真實的信息比特與碼長的比值相同,最后根據(jù)譯碼判決結果統(tǒng)計不同方案的誤塊率(BLER)。
碼長為128 bit、256 bit、512 bit,碼率不同時通過二進制相移鍵控(binary prase shift keying,BPSK)調制后在AWGN信道下的性能比較如圖6~圖8所示。
圖6 碼長為128 bit、碼率不同時在高斯白噪聲 信道下的性能比較
圖8 碼長為512 bit、碼率不同時在高斯白噪聲 信道下的性能比較
由圖6~圖8分別可以看出,在碼長固定和碼率不同情況下,本文提出的Hash-SCRC- Polar的級聯(lián)方案比Hash-Polar、Hash-CRC-Polar性能更優(yōu)異;Hash-Polar、Hash-CRC-Polar誤塊率性能相近,與Hash-Polar相比,Hash-CRC-Polar的雙校驗雖然能夠有效提高檢錯能力,但不能顯著提高系統(tǒng)的誤碼性能。碼長越短,碼率越低,本文提出的Hash-SCRC- Polar性能提升效果越明顯。
由圖6看出,在碼長為128 bit、碼率為1/2、誤塊率為 10-3時,本文提出的Hash-SCRC-Polar的設計方案比Hash-CRC-Polar獲得了0.252B的增益。
由圖7看出,在碼長為256 bit、碼率為1/2、誤塊率為 10-3時,本文提出的Hash-SCRC-Polar級聯(lián)方法較Hash-CRC-Polar能夠產生0.22B的增益。
圖7 碼長為256 bit、碼率不同時在高斯白噪聲 信道下的性能比較
由圖8看出,在碼長為512 bit、碼率為1/2、誤塊率為 10-3時,本文提出的Hash-SCRC-Polar比Hash-CRC-Polar有接近0.12B的增益,在編譯碼復雜度不明顯增加的情況下,本文的方案降低了誤塊率。
綜合圖6~圖8可以看出,在碼率為1/2,碼長為128 bit、256 bit、512 bit等不同的情況下,即在碼率固定、碼長不同時,本文提出的Hash-SCRC-Polar設計方案均體現(xiàn)出較優(yōu)異的性能。
為了進一步提高Hash-Polar碼在有限碼長下的性能,本文提出了一種基于分段CRC校驗碼級聯(lián)Hash極化碼設計方案,分段CRC校驗碼和Hash碼作為外碼,Polar碼作為內碼。在Polar碼構造方面,使用了不依賴于信道信噪比且復雜度低的PW構造方法;在譯碼方面,基于SCL譯碼算法,分段CRC檢驗碼能輔助路徑度量值在譯碼過程中進行路徑的修剪,對于CRC校驗多次不通過的路徑也能及時進行刪除,Hash校驗碼用于L條候選路徑中挑選最優(yōu)的譯碼序列并輸出。仿真結果顯示,本文提出的基于分段CRC校驗碼級聯(lián)Hash極化碼比CRC輔助的Hash-Polar級聯(lián)極化碼更優(yōu)異,誤碼性能得到了較為明顯的提升,為解決有限碼長性能不佳的問題提供了新思路。未來,筆者還可以繼續(xù)研究設計性能更好的廣義級聯(lián)碼,研究Polar碼新的極化核以及相應的譯碼算法,也可以嘗試將人工智能和Polar編譯碼相結合,進一步提高Polar碼的譯碼性能。