吳少峰 楊春蘭 黎德文
(中國船舶集團(tuán)有限公司第七二二研究所 武漢 430205)
LDPC 碼是Gallager 于1962 年首先提出的[1],Mackay 等人發(fā)現(xiàn)LDPC 碼在較低復(fù)雜度的情況下具有逼近容量限的性能,相較于Turbo 碼,LDPC 碼誤碼性能更好、錯誤平層更低、構(gòu)造靈活、譯碼吞吐更高[2],在無線通信系統(tǒng)中受到了廣泛的關(guān)注,如WiMAX、數(shù)字視頻廣播(DVB)、IEEE802.11[3]和ATSC[4]。特別是在增強移動寬帶(eMBB)場景中,3GPP選擇了它們作為第五代移動通信(5G)中數(shù)據(jù)傳輸?shù)募m錯碼[5]。
如今主流的LDPC 編碼算法主要包括兩種,分別是根據(jù)生成矩陣G和根據(jù)具有特殊結(jié)構(gòu)的校驗矩陣H 進(jìn)行編碼。本文主要介紹其中的準(zhǔn)循環(huán)碼編碼方法。準(zhǔn)循環(huán)碼(QC-LDPC)具有存儲復(fù)雜度和編碼復(fù)雜度低的特點,因此3GPP決定在5G中使用兩種QC-LDPC 基矩陣,分別命名為BG1 和BG2,它們都支持速率兼容和數(shù)據(jù)擴(kuò)展傳輸。5G 中使用基圖的具體結(jié)構(gòu)如圖一所示。在本文中,我們以基圖BG1為基礎(chǔ)進(jìn)行研究,因為BG1針對更大的塊長度和更高的速率,基圖BG1 有46 行,68 列,22 個信息位列。
LDPC碼譯碼方面,LDPC譯碼算法其根本的思想是變量節(jié)點和校驗節(jié)點進(jìn)行不斷的迭代更新,每一次迭代更新過程就是變量節(jié)點和校驗節(jié)點之間信息交換的過程。當(dāng)前誤碼性能最好的譯碼算法是基于后驗概率的BP 譯碼算法,但其計算復(fù)雜度高,實際情況難以應(yīng)用。1998 年,F(xiàn)ossorier 等[6]提出最小和(MS)算法,通過比較出的最小值來更新校驗節(jié)點消息,有效降低了計算復(fù)雜度,同時也來帶了一定損失。為了進(jìn)一步提高譯碼性能,許多學(xué)者又提出了一些改進(jìn)算法:偏移最小和譯碼算法(OMS)[7~9]和歸一化最小和譯碼算法(NMS)[10~11],兩種譯碼算法都是從LDPC 碼譯碼的迭代過程進(jìn)行性能上的改進(jìn)。
在介紹OMS 算法前我們首先對需要用到的變量進(jìn)行一些注釋。
H(m),H(n):相鄰的變量、校驗節(jié)點
βm,n,αm,n:校驗節(jié)點m 和變量節(jié)點n 節(jié)點之間的信息更新;
β1,β2,β3:BP、MS、OMS 算法中校驗節(jié)點m到變量節(jié)點n 的信息更新;
dc:校驗節(jié)點的度;
首先是校驗節(jié)點的迭代過程,在BP算法中:
可以看到BP算法中含有大量的雙曲正切函數(shù)的運算,運算復(fù)雜度非常高,譯碼過程相對復(fù)雜。因此,MS算法用近似值代替雙曲正切函數(shù)的運算,過程如下:
如果譯碼器解出了碼字或者達(dá)到了最大迭代次數(shù)后停止工作。在MS 譯碼算法中,校驗節(jié)點的近似處理會導(dǎo)致對校驗節(jié)點消息的過高估計,從而降低譯碼器的性能。為了克服這個問題,OMS算法和NMS算法應(yīng)運而生。。
OMS 算法具體操作為在更新每個校驗節(jié)點時通過減去一個偏移因子β來改進(jìn)性能:
其中
NMS 算法具體操作為在更新每個校驗節(jié)點時乘以一個小于1的歸一化常數(shù)α來提高性能:
從式(3~4)可知,目前不論是NMS 算法還是OMS算法,思路都是通過加入因子參與計算獲得更加精確的近似值,但不難發(fā)現(xiàn)在這兩種算法的迭代過程中加入因子的值是一個不隨迭代過程變化的固定值,這理論上會造成一定的近似偏差從而導(dǎo)致算法譯碼性能的損失。
本文在OMS 算法的基礎(chǔ)上提出一種改進(jìn)的OMS 算法,提升算法的譯碼性能,其本質(zhì)就是要找到與BP 算法中雙曲正切函數(shù)更為接近的近似值,本文提出的改進(jìn)之處主要體現(xiàn)在兩個方面,其一是加入?yún)?shù)γ作為乘性因子,目的是對每次迭代求偏移因子的范圍進(jìn)行更加精確的控制,γ的取值參照文獻(xiàn)[12]設(shè)置為固定值;其二是通過密度進(jìn)化理論求出每次迭代過程中的偏移因子值β,保存在儲存單元中,后續(xù)直接提取使用[13]。下面給出改進(jìn)的OMS算法的校驗節(jié)點更新公式:
由式(2~3,5)可知,β1和β2有著相同的符號,即sgn(β1)=sgn(β2)且β1的數(shù)值小于β2,接下來我們先計算初次迭代時所需要的β值。
首先,根據(jù)β1和β2分別求出它們的均值E(|β1|)和E(|β2|),初次迭代時的β值即為兩者之差。
其中,P(·)為γn對應(yīng)的概率密度函數(shù)。
我們繼續(xù)計算第一次以后的迭代需要用到的β值,令式(5)中,可以得出X 的概率分布函數(shù)如公式(9):
因此得出每個量化節(jié)點的概率密度函數(shù):
故得出β3的均值:
最后得出后續(xù)每次迭代中β值:
本節(jié)包括對不同譯碼算法的譯碼性能仿真比較和不同算法的復(fù)雜度分析。在本節(jié)中,我們使用5G 標(biāo)準(zhǔn)下的基圖BG1 的LDPC 碼,碼率設(shè)置為0.5,碼長N=8448,其中信息位長度K=4224,移位因子Z為192,最大迭代次數(shù)設(shè)置為20次。
首先,我們探究偏移因子隨著迭代次數(shù)變化對改進(jìn)OMS 算法譯碼性能的影響。上述仿真條件下,偏移因子β與迭代次數(shù)的關(guān)系如圖1所示。
圖1 偏移因子β 與迭代次數(shù)的關(guān)系
從圖1 我們可以看到,偏移因子值的大小隨著迭代次數(shù)的增加逐漸減小,在迭代次數(shù)到達(dá)第9 次時,偏移因子變?yōu)?。如式(8)和式(13),初次偏移因子值是MS 算法和BP 算法信息迭代過程中的均值之差,后續(xù)偏移因子值是OMS 算法和BP 算法信息迭代過程中的均值之差,隨著迭代過程的進(jìn)行,兩者的差值逐漸變小,證明了迭代過程的正確性;另一方面,如圖1 可見,信噪比降低時,偏移因子有著更為明顯的下降趨勢。
其次,通過仿真得出我們需要的每次迭代過程中的最優(yōu)偏移因子值后,我們將BP 算法、MS 算法、OMS 算法、NMS 算法以及改進(jìn)后的OMS 算法的譯碼性能進(jìn)行仿真,其中OMS 算法和NMS 算法的參數(shù)參照文獻(xiàn)[14]和文獻(xiàn)[15]設(shè)置,歸一化因子α=0.7,OMS算法中β=0.4,改進(jìn)后OMS算法中固定參數(shù)γ=0.89,結(jié)果如圖2。
圖2 不同算法誤碼率性能比較
仿真結(jié)果表明,在誤碼率為10-5的情況下,本文提出的改進(jìn)OMS 算法經(jīng)過20 次譯碼迭代,譯碼性能相較于原OMS 算法提升了約0.13dB,較NMS算法提升了約0.15dB,其性能也更接近與BP算法。
最后,我們對不同譯碼算法的平均迭代次數(shù)進(jìn)行仿真,結(jié)果如圖3。平均迭代次數(shù)是譯碼算法收斂能力的反映。從圖3 我們可以看到,MS 因其迭代過程中近似性不好,平均迭代次數(shù)更多,其算法復(fù)雜度更高。改進(jìn)后的OMS 算法在相同條件下較原OMS 算法收斂速度更快,平均迭代次數(shù)更少,在相同迭代次數(shù)時也有更好的性能表現(xiàn)。
圖3 不同譯碼算法的平均迭代次數(shù)對比
表1 和表2 分別表示了不同算法在FPGA 實現(xiàn)時譯碼過程中一次信息更新所需的硬件情況和不同運算的硬件需求情況,其中N 表示在(N,K)的LDPC 碼所對應(yīng)的校驗矩陣中非零元素的個數(shù),在FPGA硬件中異或操作和加法的完成方式是完全相同的。
表1 譯碼過程中信息一次更新所需運算情況
表2 不同運算的硬件需求情況
因此綜上仿真結(jié)果與數(shù)據(jù)分析,改進(jìn)后的OMS算法相較于原OMS 算法,在消耗邏輯元器件提升14.2%和存儲位相同的情況下,在誤碼率為10-5量級有約0.13dB 的誤碼率性能提升;相較于NMS 算法,所消耗邏輯元器件增加了12.9%,消耗存儲位增加了6.2%,但譯碼性能在誤碼率為10-5量級時有0.15dB 的提升,在FPGA 實現(xiàn)時,此程度的復(fù)雜度提升是可以處理的,不會增加硬件成本。
為了提高LDPC 碼在5G 移動通信中的糾錯性能,本文提出了一種改進(jìn)的偏移最小和譯碼算法。在原OMS 算法的校驗節(jié)點更新環(huán)節(jié)中,首先加入一個乘性因子γ,其次通過密度進(jìn)化理論計算出每次迭代的偏移因子,再運用于迭代過程中。仿真結(jié)果表明,本文提出的改進(jìn)OMS 譯碼算法在相同的復(fù)雜度情況下對比現(xiàn)有的OMS 譯碼算法有約0.13dB 的增益,與NMS 算法相比在復(fù)雜度提升不到15%的條件下獲得約0.15dB的增益。