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