于婷婷,聶 偉
(北京化工大學信息科學與技術學院,北京 100029)
Arikan教授在2008年提出了極化碼[1]的概念,這是一種基于信道極化現(xiàn)象的編碼方式,極化碼在理論上可達到香農(nóng)極限[2],并且具有固定的編譯碼結構。極化碼已經(jīng)被確定為5G eMBB場景下控制信道編碼方案。根據(jù)信道極化現(xiàn)象可知,只有信道數(shù)目趨于無限時,才能實現(xiàn)完全的信道極化,在有限碼長下,信道極化現(xiàn)象并不完全,存在一部分信道介于無噪聲和純噪聲之間,當利用這些信道傳輸信息時,就會受到噪聲的影響從而造成誤碼[3]。因此在有限碼長下,譯碼的準確性嚴重影響著通信質量。本文是在SCL譯碼的基礎上進行改進,在極化碼編碼前,對信息比特分組,并在每組信息比特的后面增加監(jiān)督位。在SCL譯碼后,對譯碼比特進行分組校驗,并對錯誤的比特進行糾正,得到最后的譯碼結果。
極化碼編碼的第一種形式為顯式表達。對于碼長N=2n的極化碼,消息序列為u1N,其中K個位置上傳輸來自信源的消息比特,剩下的N-K的位置傳輸不攜帶任何信息量的固定比特。碼率為R=K/N。碼字序列可以通過一個N*N大小的生成矩陣GN得到。生成矩陣其中表示n次克羅內(nèi)克積運算,矩陣BN是一個排序矩陣,完成比特反序重排操作,定義為其中RN是一個置換矩陣,作用類似FFT中的蝶形運算,效果如下:
極化碼編碼還可以通過遞歸形式得到,如圖1所示。
圖1 極化碼編碼的遞歸結構
Arikan教授提出的SC譯碼算法[4],依次對每個比特進行譯碼判決,但是需要假設之前的譯碼結果都是正確的,并且正是在這種譯碼算法下,極化碼被證明是可達香農(nóng)極限的[5]。
在SC譯碼中,當前的比特估計值高度依賴之前的譯碼估計結果,如果前面某一位的結果出錯,就會導致較為嚴重的錯誤傳遞,因此,一種基于SC譯碼原理的改進算法被提出,即SCL譯碼算法[6]。SCL譯碼算法是在SC的基礎上,增加了每層搜索路徑的寬度,當搜索路徑L=1時,SCL算法退化為SC算法。
為了進一步降低譯碼錯誤,在極化碼編碼之前加上CRC監(jiān)督位,在完成SCL譯碼之后,對剩下的L個序列進行CRC校驗,能通過校驗的為最后譯碼序列。如果L個序列均不能通過CRC校驗,則選擇路徑度量值最小的那個序列作為最后的譯碼序列。CRC-SCL譯碼算法[7]的譯碼準確性大大優(yōu)于SC譯碼和SCL譯碼。
本文提出的分組校驗譯碼算法在性能上與CRC校驗能實現(xiàn)同樣的效果,并且在編譯碼結構上更加簡單易于實現(xiàn)。該算法的基本思想是首先確定分段的數(shù)量,然后根據(jù)信息位和監(jiān)督位的制約關系,確定監(jiān)督位位數(shù),在每個子段信息比特后增加監(jiān)督位,然后將子段序列拼接起來再進行極化碼的編碼。在譯碼端,先進行SCL譯碼,然后譯碼序列分段進入分組碼譯碼器,最后將子段譯碼序列拼接在一起即為最后的譯碼序列。
本文以碼長1024為例進行分析和研究,其他碼長同樣可以按照這種方法進行分組校驗。極化碼碼率設為0.5,即1024個比特中含有512個有用比特,512個固定比特,有用比特中包含監(jiān)督比特。本文采用(64,57)線性分組碼作為校驗碼,即512個有用比特由8組子比特序列構成,每組64個比特,包含7個監(jiān)督比特和57個信息比特。在512個有用比特中,信息比特占比為89%。
在選擇線性分組碼時,要考慮如下的制約關系。
假設極化碼碼長為N(N=2m),碼率為K/N,有用比特為K個,分j組,每組K/j個比特,則K/j=n+k。而n和k必須滿足2k≥n+k+1,n是信息比特的位數(shù),k是監(jiān)督位的位數(shù)。
456個信息比特進行分組編碼,分8組,每組57個比特,進入(64,57)線性編碼器,共增加56個監(jiān)督比特。通過信道可靠性估計,將512個有用比特和512個固定比特進行混合,混合后的1024個發(fā)送比特進入極化碼編碼器,完成極化碼的編碼過程。
圖2 碼長1024分組校驗的編碼結構圖
接收端收到了混入噪聲的1024個比特,首先通過SCL譯碼器,然后進行比特拆分,對拆分后的512個有用比特進行分組譯碼,分8組,每組64個比特,進入(64,57)譯碼器,該譯碼器可以糾正一個錯誤,在分8組的情況下,就可以糾正8個比特的錯誤,當所有512個比特譯碼完成后,會得到456個信息比特,這個序列即為發(fā)送端發(fā)送的信息,此時完成極化碼的譯碼過程。
圖3 碼長1024分組校驗的譯碼結構圖
本文在MATLAB平臺上進行仿真,分別對5種譯碼算法進行仿真分析,仿真參數(shù)如下表所示。由于在碼長256時,分成8組和16組,編碼效率為69%和50%,犧牲如此大的編碼效率是不合理的,因此這兩種分組不進行仿真,直接舍棄。
表1 圖4仿真參數(shù)
圖4 碼長256時幾種譯碼算法誤碼率圖
由上圖的仿真結果可看出,在碼長256情況下,基于SCL的分段校驗算法在譯碼性能上均比CRC效果好。在碼長短時,信道極化程度低,使用分段校驗的方法,降低誤碼率更明顯。在誤碼率為0.3時,分2段譯碼算法相比SC譯碼獲得了了2dB增益,相比SCL譯碼獲得了1.3dB增益,相比CRC輔助譯碼獲得了1dB增益。
下面將驗證在碼長1024情況下幾種譯碼算法的優(yōu)劣性。
表2 圖5仿真參數(shù)
圖5 碼長1024幾種譯碼算法誤碼率圖
由上圖的仿真結果可看出,在1024條件下,在誤碼率為0.3時,分2段譯碼算法相比SC譯碼獲得了1.3dB增益,相比SCL譯碼獲得了0.7dB增益,相比CRC輔助譯碼獲得了0.4dB增益。由于碼長增加,信道極化現(xiàn)象更明顯,該算法與CRC輔助算法性能變得接近。隨著分段數(shù)量的增加,誤碼率逐漸降低,在大信噪比下,優(yōu)異性更加明顯,但是分組數(shù)量增加會導致編碼效率降低,大量的監(jiān)督比特占用了可靠信道,降低了信息比特數(shù)量,因此,需要對譯碼準確性和編碼效率進行綜合考慮,根據(jù)不同的場景和要求,選擇不同的分組數(shù)量。
本文提出的基于SCL譯碼的分段校驗算法,通過仿真分析,在降低誤碼率性能上明顯優(yōu)于CRC-SCL譯碼算法,平均增益為xxdB,并且隨著分組碼監(jiān)督位的增加,糾錯能力增強,但是會降低分組編碼的編碼效率,這兩者如何平衡是接下來需要研究的問題。將這種改進的譯碼算法通過硬件實現(xiàn)也是接下來的工作重點。