《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 一種高性能低復(fù)雜度Polar Code編解碼算法研究
一種高性能低復(fù)雜度Polar Code編解碼算法研究
2016年電子技術(shù)應(yīng)用第7期
何天光,杜 江
成都信息工程大學(xué) 通信工程學(xué)院,四川 成都610225
摘要: 極化碼(Polar Codes,PC)是一種全新的高性能信道編碼技術(shù),是5G移動(dòng)通信系統(tǒng)的一個(gè)研究熱點(diǎn),得到了廣泛的關(guān)注。傳統(tǒng)的連續(xù)刪除(Successive Cancelation,SC)譯碼算法在碼長(zhǎng)有限的情況下的性能較差,為了提高極化碼的性能,從計(jì)算方式和存儲(chǔ)結(jié)構(gòu)兩個(gè)方面研究了SC譯碼算法的原理和結(jié)構(gòu),提出一種SC譯碼算法的改進(jìn)型算法CRC-SCL譯碼算法。為了降低該算法的復(fù)雜度,引入了“Lazy Copy”算法。仿真結(jié)果表明,CRC-SCL算法與SC算法相比,性能得到了顯著的提高。
關(guān)鍵詞: 極化碼 SC譯碼 SCL譯碼 LazyCopy
中圖分類號(hào): TN911.3
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.07.003
中文引用格式: 何天光,杜江. 一種高性能低復(fù)雜度Polar Code編解碼算法研究[J].電子技術(shù)應(yīng)用,2016,42(7):13-16,25.
英文引用格式: He Tianguang,Du Jiang. An efficient and low-complexity encoding and decoding algorithm of Polar Code[J].Application of Electronic Technique,2016,42(7):13-16,25.
An efficient and low-complexity encoding and decoding algorithm of Polar Code
He Tianguang,Du Jiang
School of Communication Engineering,Chengdu University of Information Technology,Chengdu 610225,China
Abstract: Polar Codes, a new high-performance coding technology, is a research focus in the 5G mobile communication system, and has been widely concerned. The performance of traditional Successive Cancelation(SC) decoding at short to moderate block lengths is disappointing, in order to improve the performance of polar codes, this paper studies the principle and structure of SC decoding algorithm from two aspects of calculation and storage structure, a modified algorithm of SC decoding called CRC - SCL decoding algorithm. For the aims of decreasing the complexity of the algorithm, this paper introduces the "Lazy Copy" algorithm. The simulation results show that compared with the SC algorithm, the SCL algorithm has significantly improve performance.
Key words : Polar Codes;SC;SCL;Lazy Copy

0 引言

    在無(wú)線通信系統(tǒng)中,信道編碼的目的是使信息在有噪聲干擾的信道中能夠可靠地傳輸。根據(jù)香農(nóng)信息論[1]可知,任何通信信道的容量都有一個(gè)確定值C,如果通信系統(tǒng)中的傳輸速率R在滿足條件R<C時(shí),則存在一種信道編碼,在不犧牲傳輸速率的情況下使信息碼元的誤碼率趨于任意小。為此,許多信道編碼領(lǐng)域的研究學(xué)者為達(dá)到這一目標(biāo)做出了許多貢獻(xiàn)。2009年,Arikan等人提出了極化碼(Polar Codes)[2-5],是首次被嚴(yán)格證明能夠達(dá)到香農(nóng)極限容量的一種信道編碼,而且編譯碼復(fù)雜度在隨著碼長(zhǎng)增加時(shí)只保持對(duì)數(shù)增加。對(duì)于譯碼,連續(xù)抵消(Successive Cancelation,SC)譯碼[2,6]算法是Arikan針對(duì)極化碼編碼結(jié)構(gòu)提出的譯碼方案。但是,SC譯碼算法在碼長(zhǎng)有限時(shí)的性能與Turbo碼和LDPC碼相比不能體現(xiàn)其優(yōu)越性。因此許多學(xué)者在SC譯碼算法的基礎(chǔ)上進(jìn)行改進(jìn),并提出了許多高性能的譯碼方案。這些算法的性能經(jīng)證明已經(jīng)優(yōu)于Turbo碼和LDPC碼[7-9],比如序列列表SC譯碼(List SC,SCL)[8-9]、堆棧SC譯碼(Stack SC,SSC)[10]、循環(huán)冗余校驗(yàn)碼輔助SCL譯碼(CRC-SCL)[11]等算法。隨著全球5G通信系統(tǒng)研究的展開,Polar Code也得到了學(xué)術(shù)界和國(guó)內(nèi)外5G標(biāo)準(zhǔn)化研發(fā)機(jī)構(gòu)的強(qiáng)烈關(guān)注。

1 Polar Code編碼

1.1 編碼原理

    極化碼(Polar Codes)是一種結(jié)構(gòu)性與迭代性極強(qiáng)的信道編碼,而且能夠被嚴(yán)格證明它的漸進(jìn)性能夠達(dá)到香農(nóng)極限容量。擁有如此高性能的信道編碼是因?yàn)樗木幋a核心思想:基于信道極化現(xiàn)象,使其信道性能(可靠性)極好的信道傳輸有用信息,反之傳輸雙方約定的固定信息。5g2-t1.gif

1.2 信道極化

    對(duì)于任意N=2n(n≥0)個(gè)獨(dú)立的二進(jìn)制對(duì)稱輸入離散無(wú)記憶信道(B-DMC)進(jìn)行遞推方式組合[5],然后使其分裂后各個(gè)子信道的信道容量趨于兩極化,隨著碼長(zhǎng)N的增大,這些子信道的信道容量趨于兩極化的程度愈加明顯。因此這樣的操作可稱之為信道極化[2]

    例如當(dāng)n=1時(shí),兩個(gè)獨(dú)立的B-DMC信道W通過(guò)如圖1所描述的方式組合成一個(gè)信道W2,這個(gè)過(guò)程可解釋為:信道的輸入信息為u1,u2∈{0,1},通過(guò)編碼后為x1,x2∈{0,1}分別送入兩個(gè)子信道,輸出信號(hào)為y1,y2。

    由此,可以通過(guò)信道轉(zhuǎn)移概率W(y|x)來(lái)表示B-DMC信道的信道容量:

    5g2-gs1-4.gif

    通過(guò)式(2)、(3)和(4)可知,兩個(gè)子信道的信道容量一個(gè)較好一個(gè)較差,若N越大,極化效果會(huì)更加明顯。通過(guò)信道的極化結(jié)果,可以挑選出性能好的信道傳輸信息,可稱之為信息位;性能差的信道傳輸固定信息,可叫作固定位。

5g2-t2.gif

5g2-t2-x3.gif5g2-t2-x2.gif

2 Polar Code譯碼

2.1 SC譯碼算法

5g2-gs5.gif

    為了計(jì)算公式更加簡(jiǎn)化和硬件可實(shí)現(xiàn)性,采用對(duì)數(shù)域的似然比(LLR)表示。由似然比進(jìn)行譯碼判決:

     5g2-gs6.gif

2.1.1 LLR(Log-Likelihood Ratio,LLR)計(jì)算方式

    由于SC譯碼算法是Arikan針對(duì)極化碼編碼特性而設(shè)計(jì)出來(lái)的,那么它的譯碼結(jié)構(gòu)和它的編碼結(jié)構(gòu)一樣具有極其強(qiáng)的規(guī)則性。算法結(jié)構(gòu)圖如圖3所示。

5g2-t3.gif

    圖中yi表示信道接收端接收的信號(hào);5g2-t3-s1.gif表示接收的信號(hào)yi通過(guò)譯碼器譯碼后的輸出值;λ表示層(Layer),圖中每一列定義為一層:最左邊λ=3(λmax=log2 N+1)定義為決策層,最右邊λ=1為信道層,其他層統(tǒng)稱為中間層;5g2-t3-x2.gif表示相位(Phase),就是譯碼器在每一層計(jì)算節(jié)點(diǎn)的LLR值的順序,比如在本例中決策層的節(jié)點(diǎn)LLR值計(jì)算順序應(yīng)為圖中節(jié)點(diǎn)的(1,3,2,4)。

    譯碼首先從決策層的節(jié)點(diǎn)1開始激活,來(lái)計(jì)算第一個(gè)碼子的LLR值,以此判決出它的譯碼結(jié)果,但是計(jì)算此處的LLR值需要右邊下一層節(jié)點(diǎn)5、7的LLR值。若這兩個(gè)節(jié)點(diǎn)的值已知,那么通過(guò)計(jì)算即可得到節(jié)點(diǎn)1的LLR值,否者還需要再下一層(本例中的信道層)的9、10、11、12節(jié)點(diǎn)的LLR值來(lái)決定5、7節(jié)點(diǎn)的LLR值,最終算出節(jié)點(diǎn)1的LLR值。信道層的LLR值的計(jì)算公式:5g2-t3-x1.gif在計(jì)算出節(jié)點(diǎn)1的LLR值之后,5、7節(jié)點(diǎn)的LLR值已知,根據(jù)蝶形圖結(jié)構(gòu),可以直接算出第二個(gè)譯碼碼子5g2-3.2-x2.gif對(duì)應(yīng)的節(jié)點(diǎn)3的LLR值。以此操作,直到計(jì)算出所有節(jié)點(diǎn)的LLR值為止。

    在譯碼過(guò)程中,當(dāng)計(jì)算出某一個(gè)決策層節(jié)點(diǎn)的LLR值之后,首先需要判斷當(dāng)前節(jié)點(diǎn)對(duì)應(yīng)的碼元是否為信息位,如果是則根據(jù)式(6)可判決出當(dāng)前碼子的譯碼結(jié)果,否者該碼子直接判決為0。

    以上的描述是SC譯碼算法的LLR值計(jì)算方式和判決流程,下面將要討論每一層(λ>1)各個(gè)節(jié)點(diǎn)的LLR值的計(jì)算公式。通過(guò)對(duì)譯碼結(jié)構(gòu)分析可知在每一層中第5g2-t3-x2.gif個(gè)節(jié)點(diǎn)的LLR值計(jì)算時(shí)的計(jì)算公式為:5g2-t3-x2.gif奇數(shù)時(shí)利用F函數(shù)進(jìn)行計(jì)算,?漬為偶數(shù)時(shí)使用G函數(shù)。

 5g2-gs7-9.gif5g2-gs7-9.gif

5g2-2.1.2-s1.gif

2.1.2 LLR存儲(chǔ)結(jié)構(gòu)

    在進(jìn)行決策層節(jié)點(diǎn)的LLR值計(jì)算時(shí)會(huì)產(chǎn)生對(duì)應(yīng)中間層節(jié)點(diǎn)的LLR值和部分和數(shù)據(jù),這些數(shù)據(jù)都是判決一個(gè)碼子的重要依據(jù)。通過(guò)上一小節(jié)描述的譯碼計(jì)算方式中可知信道層和中間層的LLR值和部分和都需要存儲(chǔ)。在LLR存儲(chǔ)時(shí),根據(jù)LLR計(jì)算特性,以層λ為單元進(jìn)行存儲(chǔ),第λ層需存儲(chǔ)的數(shù)據(jù)個(gè)數(shù)為n=2m-λ,m=log2 N+1。因此存儲(chǔ)結(jié)構(gòu)如圖4。

5g2-t4.gif

    根據(jù)部分和的計(jì)算規(guī)則可知,它的存儲(chǔ)結(jié)構(gòu)與LLR值的存儲(chǔ)結(jié)構(gòu)類似。根據(jù)SC譯碼算法的結(jié)構(gòu)和硬判決特點(diǎn),可知SC譯碼算法的空間復(fù)雜度和時(shí)間復(fù)雜度分別為O(N)和O(NlogN)。

    通過(guò)以上對(duì)SC譯碼算法的研究不難發(fā)現(xiàn),算法的一個(gè)潛在缺點(diǎn)是:判決當(dāng)前碼子5g2-t3-s1.gif的值時(shí)需要5g2-t4-x1.gif的參與,那么當(dāng)前碼子的判決結(jié)果會(huì)影響后續(xù)碼子的判決值。

2.2 SCL(SC List)譯碼算法

    根據(jù)SC譯碼算法的缺點(diǎn),將介紹一種改進(jìn)的算法SCL譯碼。SCL譯碼算法中L表示路徑搜索寬度,是算法的一個(gè)重要參數(shù)。SCL算法的思想是:在路徑搜索寬度不大于L的情況下,盡可能保留所有可能的譯碼路徑。例L=4如圖5。

5g2-t5.gif

    由圖5所示在譯碼進(jìn)行過(guò)程中,每一次判決譯碼時(shí)進(jìn)行軟判決,一條路徑會(huì)擴(kuò)展出兩條支路0和1。由于在這兩條支路所對(duì)應(yīng)的數(shù)據(jù)是父節(jié)點(diǎn)對(duì)應(yīng)的LLR值和部分和的數(shù)據(jù)內(nèi)存,所以在這兩條支路繼續(xù)往下延伸時(shí)需要把父節(jié)點(diǎn)的數(shù)據(jù)復(fù)制到兩條支路之一,以保持兩條支路擁有獨(dú)立的數(shù)據(jù)內(nèi)存,這樣才能使兩條支路獨(dú)立地繼續(xù)向下延伸。當(dāng)譯碼器在譯碼過(guò)程擴(kuò)展出的路徑超過(guò)L時(shí),就需要對(duì)這些路徑進(jìn)行刪減以保證所保留的譯碼路徑不超過(guò)L條。圖5中L=4,可知譯碼結(jié)束時(shí),會(huì)產(chǎn)生4條路徑,每條路徑對(duì)應(yīng)如圖4所示的數(shù)據(jù)結(jié)構(gòu)。因此在SCL算法中還需要一個(gè)參數(shù)來(lái)度量當(dāng)路徑超過(guò)L時(shí)哪一條路徑需要?jiǎng)h除和決定哪一條路徑作為最終譯碼輸出結(jié)果,這個(gè)參數(shù)叫作路徑度量值(Path Metrics,PM)。PM值是根據(jù)決策層的LLR值計(jì)算得出的,計(jì)算公式如下:

 5g2-gs10-12.gif

    縱觀整個(gè)SCL譯碼算法,可知它的核心算法是SC譯碼,在SCL算法中每一條譯碼路徑都相當(dāng)于一個(gè)SC譯碼而且都是獨(dú)立運(yùn)行的,所以路徑擴(kuò)展時(shí)需要進(jìn)行中間層LLR值和部分和值數(shù)據(jù)的復(fù)制,以保證每條路徑能夠順利的進(jìn)行計(jì)算譯出對(duì)應(yīng)的碼子結(jié)果,然后根據(jù)路徑度量值選出最優(yōu)的一條路徑作為最終的譯碼輸出。特別地,L=1相當(dāng)于SC譯碼算法。

3 譯碼算法優(yōu)化

3.1 SCL-CRC算法

    為了更好地提升極化碼譯碼性能,在進(jìn)行編碼前加入循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check,CRC)。在加入CRC后,在SCL譯碼最后的路徑選擇輸出碼子時(shí)可以優(yōu)先檢查CRC的正確性,再考慮PM值的大小。雖然加入CRC校驗(yàn)碼(一般為24位)之后,編碼的冗余度略增加,編碼率由k/N略下降為(k-24)/N,但隨著碼長(zhǎng)增加越不明顯。在顯著提升譯碼性能的前提下,顯然這點(diǎn)代價(jià)是可以付出的。

3.2 “Lazy Copy”算法

    在SCL譯碼算法中,為了使每條譯碼路徑能夠獨(dú)立地進(jìn)行SC譯碼,在路徑擴(kuò)展時(shí)需要進(jìn)行數(shù)據(jù)的復(fù)制。但是,通過(guò)對(duì)SC譯碼算法的計(jì)算方式的分析,得知這些數(shù)據(jù)不一定需要進(jìn)行全部復(fù)制。比如由圖3所示,在判決出5g2-3.2-x1.gif的值完成之后應(yīng)該判斷5g2-3.2-x2.gif值時(shí),只需要讓在計(jì)算5g2-3.2-x1.gif對(duì)應(yīng)的節(jié)點(diǎn)的LLR值時(shí)所得到節(jié)點(diǎn)5、 7的LLR參與計(jì)算,即可得出5g2-3.2-x2.gif對(duì)應(yīng)節(jié)點(diǎn)的LLR值。實(shí)際上,SCL譯碼算法在碼長(zhǎng)和L的值較大時(shí),采取多條路徑對(duì)應(yīng)數(shù)據(jù)進(jìn)行全部復(fù)制在硬件難以實(shí)現(xiàn),因此可以在復(fù)制數(shù)據(jù)時(shí)根據(jù)計(jì)算需要,只復(fù)制數(shù)據(jù)的地址以減輕復(fù)制的數(shù)據(jù)量。在新的路徑中需要數(shù)據(jù)參與計(jì)算時(shí)可直接通過(guò)先前復(fù)制的地址直接去尋址得到數(shù)據(jù),在部分和的數(shù)據(jù)的復(fù)制上也可以采取同樣的方式,這種方法可稱之為“Lazy Copy”。這種算法大大減小了SCL譯碼算法在硬件實(shí)現(xiàn)中的功耗和存儲(chǔ)需求,提高了譯碼算法的可實(shí)現(xiàn)性。

4 仿真分析

    Polar Code算法仿真平臺(tái)是基于AWGN信道下,采用碼長(zhǎng)N=1 024,碼率R=0.5,24位CRC碼,分別仿真了L=1,2,4,8,16,32的SCL譯碼算法性能。仿真結(jié)果如圖6。

5g2-t6.gif

    仿真結(jié)果表明,隨著L的值的增加,誤碼率越低。由L=1和L=2的性能曲線可以看出,SCL譯碼算法的性能明顯優(yōu)于SC(L=1)算法的性能。

5 結(jié)語(yǔ)

    極化碼是信道編碼領(lǐng)域中唯一被嚴(yán)格證明能夠達(dá)到香農(nóng)極限容量的編碼技術(shù),目前在國(guó)際上也是研究的熱點(diǎn),優(yōu)秀的性能也使它有望成為5G移動(dòng)通信系統(tǒng)中新型編碼體制的有力競(jìng)爭(zhēng)方案之一。本文通過(guò)對(duì)極化碼編碼和解碼的詳細(xì)剖析,可知無(wú)論是編碼還是解碼在算法上都有很大的研究空間。比如,雖然SCL譯碼與SC譯碼相比性能上有了很大的改善,但是算法的復(fù)雜度也由此增大。如何設(shè)計(jì)出更低復(fù)雜度更高效的譯碼算法也是學(xué)者們研究的方向之一。

參考文獻(xiàn)

[1] SHANNON C E.A mathematical theory of communication[J].Bell Syst Tech,1948,27(03):379-423,623-656.

[2] ARIKAN E.Channel polarization: a method for constructing capacity achieving codes for symmetric binary input memoryless channels[J].IEEE Trans Inf.Theory,2009,55(7):3051-3073.

[3] TELATAR E.Polar Coding:a brief tour[C].USA:IEEE,2010:1-2.

[4] RYUHEI M,TOSHIYUKI T.Performance and construction of polar codes on symmetric binary-input memoryless channels[C].USA:IEEE,2009:1946-1500.

[5] ARIKAN E.Channel combining and splitting for cut of rate improvement[J].IEEE Trans.Inf.Theory,2006,52(02):628-639.

[6] 王東學(xué),宋雷,張士偉.極化碼SC譯碼算法的設(shè)計(jì)[J].電光系統(tǒng),2014(3):10-13.

[7] HUANG Z L,DIAO C J,CHEN M.Latency reduced method for modified successive cancellation decoding of polar codes[J].Electronics Letters,2012,48(23):1506-1506.

[8] 李純,童新海.極化碼序列連續(xù)刪除譯碼算法的改進(jìn)設(shè)計(jì)[J].通信技術(shù),2015(1):19-22.

[9] TAL I,VARDY A.List decoding of polar code[C].USA:IEEE ISIT 2011,2011:1-5.

[10] NIU K,CHEN K.Stack decoding of polar codes[J].Electronics Letters,2012,48(12):695-697.

[11] NIU K,CHEN K.CRC-Aided decoding of polar codes[J].IEEE Communications Letters,2012,16(10):1668-1671.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。