張 旭,劉順蘭,李正杰
(杭州電子科技大學(xué)電子信息學(xué)院,浙江 杭州 310018)
極化碼[1]是首個被證明可以達到信道容量的糾錯碼,具有較低的編譯碼復(fù)雜度,被第三代合作伙伴計劃(3rd Generation Partnership Project,3GPP)確定為5G eMBB場景下控制信道編碼方案,成功入選5G標(biāo)準。極化碼的碼長越趨近于無窮,其極化效果越好。但是,在中短碼長情況下,極化效果較差。為了提高極化碼的糾錯效果,Ariken[1]提出一種串行抵消譯碼(Successive Cancellation,SC)算法,但在有限碼長情況下,性能并不理想;于是,Tal等[2]提出一種串行抵消列表譯碼(Successive Cancellation List Decoding,SCL)算法,通過增加列表數(shù)量來擴大譯碼的路徑,提升了譯碼性能。SCL譯碼算法是目前最常用的譯碼方法。為了進一步降低極化碼的誤碼率,提高極化碼的譯碼性能,Niu等[3]提出一種循環(huán)冗余校驗(Cyclic Redundancy Check,CRC)級聯(lián)Polar的SCL譯碼(CRC Aided SCL,CA-SCL)算法,在SCL的譯碼列表中挑選出正確的譯碼結(jié)果,保證譯碼的準確性;Elkelesh等[4]設(shè)計了一種置信傳播列表譯碼器,其譯碼性能與常用的SCL譯碼器相似。文獻[5]將比特翻轉(zhuǎn)原理應(yīng)用到極化碼的SC譯碼算法中,提出一種串行抵消翻轉(zhuǎn)(Successive Cancellation Filp,SCF)譯碼算法,在SC譯碼錯誤時,通過比特翻轉(zhuǎn)進行矯正,但只能糾正1位錯誤。于是,動態(tài)SCF算法[6]、分段SCF算法[7-8]被相繼提出。同樣,SCL算法也可應(yīng)用比特翻轉(zhuǎn),文獻[9]提出一種串行抵消列表比特翻轉(zhuǎn)(Successive Cancellation List bit-Flip,SCLF)譯碼算法,性能得到較大提升,但也只能糾正1位錯誤。為了更好地提升誤塊率性能,崔建明等[10]結(jié)合比特翻轉(zhuǎn)與分段原理,提出一種分段CRC輔助極化碼SCL比特翻轉(zhuǎn)譯碼算法;袁建國等[11]為了兼顧譯碼算法的性能與復(fù)雜度,提出一種快速串行抵消列表翻轉(zhuǎn)(Fast Successive Cancellation List Flip,FSCLF)譯碼算法,通過引入信息比特結(jié)點和單奇偶校驗(Single-Parity-Check,SPC)結(jié)點來降低譯碼復(fù)雜度,提高了譯碼性能。受SCF譯碼算法的啟發(fā),本文結(jié)合SCF譯碼與SCL譯碼,提出一種基于串行消除列表的多比特翻轉(zhuǎn)譯碼算法。
極化碼是一種運用信道極化理論的信道編碼方式,與其他信道編碼技術(shù)最大的不同在于極化碼可以進行信道極化,并利用信道極化產(chǎn)生的極化現(xiàn)象進行信息傳輸。當(dāng)極化碼的碼長不斷增大并趨于無窮時,其各個子信道逐漸呈現(xiàn)兩極分化現(xiàn)象,一部分信道容量趨近于1,另一部分趨近于0。在傳輸信息時,可以選擇可靠度較高即信道容量趨近于1的信道進行信息傳輸,剩下的信道作為凍結(jié)位。極化碼可表示為(N,K,A,uAc),N表示極化碼的碼長,K表示信息位的長度,A表示信息位比特的集合,其補集Ac表示固定子信道的索引集合,其上標(biāo)c為補集符號,uAc表示凍結(jié)比特序列[12],根據(jù)極化碼的編碼原理,編碼后的碼字為:
(1)
(2)
式中,GN(A)為由A中元素對應(yīng)的行構(gòu)成的GN的子矩陣,GN(Ac)為由Ac中元素對應(yīng)的行構(gòu)成的GN的子矩陣,⊕表示模2加。
(3)
再根據(jù)LLR值對信息位進行硬判決,得到:
(4)
式(3)可表示為:
(5)
(6)
備忘錄為雙方建立了一個合作框架,未來雙方將在該框架下研究利用各自的獨特能力、專門知識和客戶關(guān)系開展一系列商業(yè)合作的可行性。
(7)
(8)
式中,us∈{0,1}。SC算法根據(jù)式(7)和式(8)計算得到每個節(jié)點的LLR后,再根據(jù)式(4)對每個信息比特進行判決,得到譯碼結(jié)果。但是,這種方法是串行譯碼,容易出現(xiàn)錯誤傳播。
在SC算法基礎(chǔ)上,SCL譯碼算法同時保留L條SC譯碼路徑,進行并行譯碼,每條路徑都是根據(jù)路徑度量(Path Metric, PM)[13]篩選得到的,其表達式為:
(9)
圖1 SCF譯碼算法流程圖
雖然SCF譯碼算法的性能優(yōu)于SC譯碼算法,但每次只能對其中1位不可靠信息位進行翻轉(zhuǎn),不能進行多位翻轉(zhuǎn),譯碼性能提升有限。所以,在SCF譯碼算法的基礎(chǔ)上,本文提出一種基于串行消除列表的多比特翻轉(zhuǎn)譯碼算法,在編碼時,將極化碼作為內(nèi)碼進行編碼,CRC碼作為外碼進行校驗,極化碼編碼采用高斯構(gòu)造方法。本文算法的譯碼流程如圖2所示。
圖2 基于多比特翻轉(zhuǎn)的串行消除列表譯碼算法流程
(3)對每個碼字的V值進行升序排列,并取前T個最小V值所對應(yīng)的信息位索引作為翻轉(zhuǎn)集合,其中T表示選取翻轉(zhuǎn)集合元素的個數(shù),ω={ω1,ω2,…,ωT}表示翻轉(zhuǎn)集合,ωi表示翻轉(zhuǎn)集合中第i位元素。
(4)對所有信息位進行SCL譯碼,并判斷L條譯碼路徑中是否有路徑通過CRC校驗,如果有則結(jié)束譯碼,否則選取翻轉(zhuǎn)集合中下一位元素,重新進行SCL譯碼,直到有路徑通過校驗;如果T次嘗試均不成功,則執(zhí)行下一步。
(5)從ω={ω1,ω2,…,ωT}中依次選取V值較小的2位進行翻轉(zhuǎn),再進行SCL譯碼,譯碼結(jié)果若未通過CRC校驗,則重新選取翻轉(zhuǎn)位進行SCL譯碼。若通過校驗,則輸出譯碼結(jié)果。當(dāng)所有嘗試均未通過CRC校驗,則譯碼失敗。
在MATLAB平臺上,加性高斯白噪聲(Additive White Gaussian Noise,AWGN)信道下,采用BPSK調(diào)制方式進行仿真實驗。極化碼的碼率為0.5,蒙特卡羅仿真次數(shù)為10 000次。
碼長N為512,SCL的列表寬度L為4,選取不同翻轉(zhuǎn)集合個數(shù)T,采用本文提出的基于串行消除列表的多比特翻轉(zhuǎn)譯碼算法進行仿真,得到誤塊率(Block Error Rate,BLER)如圖3所示。
圖3 不同T值下,本文算法的誤塊率
從圖3可以看出,在相同信噪比情況下,T值越大,誤塊率越小。當(dāng)T為碼長512的1/8,即T=64時,誤塊率的提升幾乎達到極限,說明T對譯碼性能的提升有一定的影響。
碼長N為512,碼率為0.5,T為64,選取不同列表寬度L,采用本文算法進行仿真,得到誤塊率如圖4所示。
圖4 不同L值下,本文算法的誤塊率
從圖4可以看出,隨著L的增大,誤塊率隨之變小。
列表寬度L為4,翻轉(zhuǎn)集合元素的個數(shù)T為8,選取不同碼長N,采用本文算法進行仿真,得到誤塊率如圖5所示。
圖5 不同N值下,本文算法的誤塊率
從圖5可以看出,隨著碼長N的增大,誤塊率隨之變小,性能越來越優(yōu),當(dāng)誤塊率為10-3時,相比于碼長為256,本文算法在碼長為512時獲得了大約0.1 dB的增益。
列表寬度L為4,翻轉(zhuǎn)集合元素的個數(shù)T為碼長的1/8,選取不同碼長N,采用本文算法進行仿真,得到誤塊率如圖6所示。
圖6 不同N值且T為碼長的1/8下,本文算法的誤塊率
從圖6可以看出,隨著N的增加,誤塊率隨之變小,當(dāng)誤塊率為10-3時,相比于碼長為256,碼長為512時獲得了大約0.2 dB的增益。
碼長N為512,列表寬度L為4,翻轉(zhuǎn)集合元素的個數(shù)T為64時,分別采用本文算法、SC譯碼算法、SCL譯碼算法、文獻[5]中SCF譯碼算法、文獻[9]中SCLF譯碼算法、文獻[3]中CA-SCL譯碼算法進行仿真,得到6種算法的誤塊率如圖7所示。
圖7 不同算法的誤塊率對比
從圖7可以看出,當(dāng)誤塊率為10-3時,本文算法的誤塊率最小,相較于SCF譯碼算法、SCL譯碼算法、CA-SCL譯碼算法、SCLF譯碼算法、SC譯碼算法分別獲得了0.70 dB,0.90 dB,0.65 dB,0.60 dB,1.50 dB的增益。
為了進一步提高極化碼在中短碼長下的譯碼性能,本文在SCF譯碼算法的基礎(chǔ)上,提出一種基于串行消除列表的多比特翻轉(zhuǎn)譯碼算法。當(dāng)SC譯碼發(fā)生錯誤時,根據(jù)SC譯碼得到的對數(shù)似然比絕對值選出翻轉(zhuǎn)集合,并對其進行多比特翻轉(zhuǎn)。但是,本文只是在AWGN信道下進行了仿真實驗,后續(xù)將在其他通信環(huán)境下展開進一步研究。