汪曉雅,席 兵,高錦盟 ,鄧炳光
(1.重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶 400065;2.重慶郵電大學(xué) 光電工程學(xué)院,重慶 400065)
與其他信道編碼技術(shù)相比,極化碼最大的特點(diǎn)是信道極化。信道極化后,在容量接近于1的信道上傳輸信息。通常使用巴氏系數(shù)算法、高斯近似算法(Gaussian Approximation,GA)、信道退化算法、極化重量(Polarization Weight,PW)算法和蒙特卡羅算法來構(gòu)造極化碼[10]。在編碼過程中,通過計(jì)算相關(guān)參數(shù)得到各極化信道的可靠性,然后用前K個(gè)可靠性高的信道來傳輸信息比特,其余N-K個(gè)傳輸凍結(jié)比特[11]。極化碼的編碼過程描述如下:
(1)
(2)
GN=BNF?n,n=lbN,
(3)
圖1 極化碼N=2Fig.1 Polar code with N=2
(4)
(5)
SCL譯碼器[3]內(nèi)部并行地放置了L個(gè)SC譯碼器,在SC譯碼的串行過程中,SC譯碼器對每個(gè)信息位保留0與1,因此, 每條譯碼路徑分裂為2條路徑, 并更新路徑度量(Path Metric,PM)來選擇最佳L個(gè)候選,第i步的第l條路徑對應(yīng)的PM定義為:
(6)
PM反映了每條路徑的可靠性,在算法最后,輸出PM最小的路徑。對于CA-SCL算法,選擇CRC校驗(yàn)成功的結(jié)果,如果均未成功,則輸出PM最小的路徑。本文在仿真過程中均使用CRC-Polar級聯(lián)碼,編譯碼過程如圖2所示。
圖2 CA-SCL的編譯碼過程Fig.2 Encoding and decoding process of CA-SCL
R0碼是只有凍結(jié)比特,沒有信息比特的極化碼[18];Rep碼只有最后一位信源比特是信息比特,其余都是凍結(jié)比特[18];SPC碼只有第1位信源比特是凍結(jié)比特,其余都是信息比特[18];R1碼[19]所有信源比特都是信息比特。長度N=32,K=16,使用GA在Eb/N0=2.5 dB時(shí)構(gòu)造的極化碼結(jié)構(gòu)如圖3所示,圖中黑色代表信息比特,白色代表凍結(jié)比特,灰色是混合節(jié)點(diǎn)。
圖3 N=32,K=16的極化碼結(jié)構(gòu)Fig.3 Polar code structure with N=32,K=16
對于大多數(shù)接收到的信號,具有很小L的SCL譯碼器就可以譯碼成功,只有極少數(shù)信號需要很大的L才能譯碼成功[5]。為了降低FSCL譯碼算法的復(fù)雜度,提出的AD-FSCL譯碼算法動(dòng)態(tài)地改變L的值至Lmax,譯碼成功時(shí),如果L 本文提出的AD-FSCL譯碼算法首先設(shè)置列表初始值Linit=1,然后從Linit開始進(jìn)行快速譯碼。若譯碼結(jié)果通過CRC校驗(yàn),則譯碼成功;否則,將列表數(shù)量迭代增加L→2L,重新對接收信號進(jìn)行快速譯碼;重復(fù)上述操作直到有譯碼結(jié)果通過CRC校驗(yàn)或列表數(shù)量超過最大列表數(shù)Lmax。AD-FSCL算法流程如圖4所示。 圖4 AD-FSCL算法流程Fig.4 Flow chart of AD-FSCL 算法的具體步驟如下: ① 使用GA算法構(gòu)造極化碼; ② 識別4種特殊節(jié)點(diǎn)的結(jié)構(gòu); ③ 極化碼編碼并計(jì)算接收信號的LLR; ④ 設(shè)置列表數(shù)量的初始值為L=Linit; ⑤ 對4種不同的特殊節(jié)點(diǎn)進(jìn)行對應(yīng)的FSCL譯碼; ⑥ 若譯碼結(jié)果通過CRC校驗(yàn),則譯碼成功,結(jié)束算法; ⑦ 若譯碼結(jié)果未通過CRC校驗(yàn),則迭代地增加列表數(shù)量L=2L; ⑧ 若L≤Lmax,返回重新進(jìn)行FSCL譯碼; ⑨ 否則L>Lmax,譯碼失敗,結(jié)束算法。 其中,R0節(jié)點(diǎn)、Rep節(jié)點(diǎn)、R1節(jié)點(diǎn)以及SPC節(jié)點(diǎn)快速譯碼的具體過程,在下文中介紹。 在SCL譯碼器(列表數(shù)量為L)中任取一個(gè)激活的SC譯碼器SCl(1≤l≤L),當(dāng)SCl譯碼器的譯碼過程運(yùn)行到一個(gè)R0節(jié)點(diǎn)時(shí),由于R0節(jié)點(diǎn)中都是凍結(jié)比特,不存在任何路徑克隆[18],計(jì)算R0節(jié)點(diǎn)對應(yīng)的LLR序列,再把PMl(SCl在R0譯碼前的路徑度量值)加上懲罰值,長度為Nυ的R0節(jié)點(diǎn)返回長度為Nυ的全0比特值。對于每一個(gè)激活的SC譯碼器都執(zhí)行上述操作,R0節(jié)點(diǎn)的FSCL譯碼就完成了。R0節(jié)點(diǎn)的FSCL譯碼過程如圖5所示。 圖5 R0節(jié)點(diǎn)的FSCL譯碼Fig.5 FSCL decoding of R0 nodes 圖中,α表示LLR,αl表示左側(cè)后代節(jié)點(diǎn)的LLR,αr表示右側(cè)后代節(jié)點(diǎn)的LLR,β表示部分和序列,βl表示左側(cè)后代節(jié)點(diǎn)的部分和序列,βr表示右側(cè)后代節(jié)點(diǎn)的部分和序列。f運(yùn)算近似表示為: f(α1,α2)≈sign(α1)sign(α2)min{|α1|,|α2|}。 (7) 因?yàn)镽ep節(jié)點(diǎn)存在路徑克隆,所以譯碼比R0的譯碼稍微復(fù)雜一點(diǎn)。Rep節(jié)點(diǎn)的FSCL譯碼過程[18]如圖6所示。 圖6 Rep節(jié)點(diǎn)的FSCL譯碼Fig.6 FSCL decoding of Rep nodes (8) 矩陣的第1行第s(1≤s≤S)列表示SCis保存的全0序列PM值,第2行第s(1≤s≤S)列表示SCis保存的全1序列PM值,激活的譯碼器是哪些,每次譯碼時(shí)都不同。找到其中最小的min{L,2S}個(gè)值,保存其對應(yīng)的序列,此時(shí),每個(gè)譯碼器的狀態(tài)都不一定相同[17]。 R1節(jié)點(diǎn)的快速SCL譯碼過程[19]如圖7所示。對于一個(gè)激活的SC譯碼器SCl(1≤l≤L),路徑度量為PMl,算出R1節(jié)點(diǎn)的LLR序列α1,α2,…,αNυ,直接對其進(jìn)行硬比特判決得到β1,β2,…,βNυ。β1,β2,…,βNυ是α1,α2,…,αNυ的最大似然譯碼結(jié)果,β1,β2,…,βNυ對應(yīng)的路徑度量不改變。通過翻轉(zhuǎn)β1,β2,…,βNυ中的一些比特得到α1,α2,…,αNυ的一些次最大似然譯碼結(jié)果,對翻轉(zhuǎn)的比特βi對應(yīng)的PM加上懲罰值|αi|。對|α1|,|α2|,…,|αNυ|進(jìn)行升序排序得到|αi1|,|αi2|,…,|αiNυ|,那么除了PMl,最小的可能PM值就是PMl+|αi1|,對應(yīng)的比特序列是β1,…,βi1⊕1,…,βNυ,找到前L個(gè)最小的PM以及對應(yīng)的序列。對于已經(jīng)激活的S個(gè)譯碼器,操作過程如圖7所示,虛線框中是沒有被選中的結(jié)果。 圖7 R1節(jié)點(diǎn)的FSCL譯碼Fig.7 FSCL decoding of R1 nodes 對于已經(jīng)激活的S個(gè)譯碼器,如圖8所示,i1,i2指示第一次分裂,每個(gè)激活的譯碼器根據(jù)上述2種情況進(jìn)行分裂,只保存前L個(gè)最小PM的分支,虛線框中是沒有被選中的分支。若某個(gè)譯碼器的分支沒被選中,則接收其他譯碼器復(fù)制的數(shù)據(jù)。 圖8 SPC節(jié)點(diǎn)的FSCL譯碼Fig.8 FSCL decoding of SPC nodes 在仿真過程中,本文的仿真實(shí)驗(yàn)參數(shù)設(shè)置為:信道環(huán)境采用AWGN環(huán)境,調(diào)整方式為BPSK,碼率為0.5,構(gòu)造算法為GA,CRC長度為16。 首先對AD-FSCL譯碼算法的復(fù)雜度進(jìn)行實(shí)驗(yàn),用譯碼成功時(shí)的列表平均值Lavg表示復(fù)雜度。在N=1 024和N=2 048時(shí),分別使Lmax=8,Lmax=16,Lmax=32,Lmax=64,將L的初始值設(shè)置為Linit=1,仿真實(shí)現(xiàn)AD-FSCL譯碼過程。每次譯碼成功時(shí),記錄L的值,并計(jì)算L的平均值Lavg,如圖9和圖10所示。 圖9 譯碼成功L的平均值(N=1 024)Fig.9 Average value of L for successful decoding (N=1 024) 圖10 譯碼成功L的平均值(N=2 048)Fig.10 Average value of L for successful decoding (N=2 048) 仿真實(shí)驗(yàn)表明,Eb/N0越小,Lavg值越大;Eb/N0越大,Lavg值越小,譯碼成功的列表平均值Lavg隨著Eb/N0的增加而降低,在Eb/N0=2 dB時(shí),Lavg趨近于1,并且,譯碼成功的Lavg均遠(yuǎn)小于Lmax,列表值降低,路徑排序的復(fù)雜度就會降低,因此,算法譯碼復(fù)雜度降低。 在L=16,L=32,L=64時(shí),分別對SCL譯碼算法、FSCL譯碼算法、AD-FSCL譯碼算法的BLER性能進(jìn)行比較,如圖11和圖12所示。其中,圖11是在碼長為1 024時(shí)的仿真實(shí)驗(yàn),圖12是在碼長為2 048時(shí)的仿真實(shí)驗(yàn)。仿真結(jié)果表明,在L相同時(shí),3種譯碼算法的曲線幾乎重合;3種譯碼算法的BLER均隨著Eb/N0的增加而降低;3種譯碼算法的BLER也隨著L的增加而變好,并且,3種譯碼算法在Eb/N0相同的條件下,BLER幾乎一致。顯然AD-FSCL譯碼算法在沒有BLER性能損失的前提下,可以降低譯碼的復(fù)雜度。 圖11 算法的BLER性能比較(N=1 024)Fig.11 BLER performance comparison of algorithms (N=1 024) 圖12 算法的BLER性能比較(N=2 048)Fig.12 BLER performance comparison of algorithms(N=2 048) Polar碼優(yōu)越的性能使其成為5G系統(tǒng)控制信道的編碼方案,其編譯碼算法也隨之成為研究熱點(diǎn),為此本文探索了Polar碼的譯碼算法。本文提出的AD-FSCL譯碼算法,與FSCL和SCL算法相比,可以在保持BLER性能不變的情況下降低譯碼復(fù)雜度,具有顯著的性能增益。未來將對本文提出的創(chuàng)新算法進(jìn)行硬件實(shí)現(xiàn),從而商用。之后將側(cè)重于Polar碼在通信其他領(lǐng)域的研究。2.1 R0節(jié)點(diǎn)的FSCL譯碼
2.2 Rep節(jié)點(diǎn)的FSCL譯碼
2.3 R1節(jié)點(diǎn)的FSCL譯碼
2.4 SPC節(jié)點(diǎn)的FSCL譯碼
3 仿真分析
4 結(jié)束語