0 引言
本文引用地址:http://www.eepw.com.cn/article/201809/388482.htm信道編解碼技術可以檢測並且糾正信號在傳輸過程中引入的錯誤,能夠保證數據進行可靠的傳輸[1].
LDPC碼的校驗矩陣具有稀疏的特性,因此存在高效的解碼算法,其糾錯能力非常強。1981年,Tanner提出了基於圖模型描述碼字的概念,將LDPC碼的校驗矩陣對應到Tanner圖的雙向二部圖上。採用Tanner圖構造的LDPC碼,通過並行解碼可大大降低解碼複雜度。Mack-ay 和Neal利用隨機構造的Tanner 圖研究了LDPC 碼的性能,發現採用和積算法(SPA)的LDPC 碼具有優異的解碼性能,在長碼時甚至超過了Turbo 碼[2].本文採用Mackay 基於二分圖提出的改進方案構造LDPC 碼的校驗矩陣。基於置信傳播(BP)算法,給出了一種簡化的BP算法--對數域迭代APP LLR 算法,複雜度大大降低。目前,LDPC碼是最有希望在廣泛的信道範圍取得香農容量的誤差糾正技術[3],在保證LDPC 碼糾錯性能的前提下,降低編解碼器實現的複雜度是研究的重點,引發了信道編碼界的研究熱潮。
1 LDPC 碼編碼
LDPC碼是一種性能非常接近香農極限的「好」碼,它是惟一用校驗矩陣來表示的線性分組碼。LDPC碼的編碼主要分兩步進行,首先構造奇偶校驗矩陣,然後是基於奇偶校驗矩陣的編碼算法。
1.1 校驗矩陣的構造
根據式子n*j = m*k 可知,規則的LDPC碼(n,j,k),當參數n, j, k 確定後,可以得到校驗方程的數目m,則校驗矩陣H 的大小就可以定為m × n.構造LDPC 碼校驗矩陣的一般步驟為:先生成一個m 行n 列的全0矩陣,然後隨機地將每列中的j 個0換成1,每行中的k 個0換成1.但在隨機置l的過程中,必須避免出現長度為4的環[4].
如果最小環長為4,在迭代中非常容易造成錯誤信息的擴散傳播,從而導致解碼性能的下降[5].
Mackay 為了消除校驗矩陣中長度為4 的環,基於Tanner圖提出了改進的構造方案。採取的準則是:在構造時必須保證任意兩列間的交疊重量不超過1.本文採用的是Mackay的1A構造方法,按照此方法構造的一個LDPC碼(3,6)碼如圖1所示。
Mackay的1A構造方法是最基本的一種構造方法,它要求保證固定列重為γ ,而行重儘可能均勻的保持為ρ .
利用Mackay構造方法得到的LDPC碼距離特性很好,且沒有短環。
1.2 基於奇偶校驗矩陣的編碼算法
LDPC碼的直接編碼方法就是利用高斯消去法,產生一個下三角矩陣,然後進一步初等變換得到右邊單位陣形式H = [P|I] ,由G = [I|P] 得到生成矩陣,再利用信息碼元向量u 和生成矩陣G 相乘可得到完整碼字C,即C = M*G 直接編碼[5].
2 LDPC 碼解碼[4,6-7]
BP 算法是在Gallager提出的概率解碼算法基礎上發展而來的。BP算法每次迭代包括2步:變量節點的處理和校驗節點的處理。概率域就是在節點間傳遞的是概率信息,採用很多乘法運算,運算量大;而對數域的和積算法實現是將概率值通過對數似然比變化為軟信息值(LLR),再進行傳遞,這樣就將大量乘法運算變為加法運算,大大簡化了解碼複雜度,利於硬體實現。下面重點介紹對數域迭代APP LLR解碼算法。
2.1 迭代APP LLR解碼算法的變量定義
對於(N,K) LDPC碼,定義變量U 取值為0和1時的對數似然比(LLR)為:
設發端發送的碼字為u = [u1,u2 ,…,uN ] ,接收碼字為y = [y1,y2 ,…,yN ] ,由此可以得出在迭代中傳遞的校驗節點和信息節點的軟信息為:
2.2 迭代APP LLR解碼算法
迭代APP LLR解碼算法的迭代過程如下:
(1)初始化:設每個變量節點n 的軟信息為:
對於矩陣中H(m,n) = 1,相應的變量節點的軟信息初始化為信道輸出的軟信息,即λmn (un ) = L(un ),Λmn (un ) = 0.
(2)校驗節點更新:根據每個變量節點n,向與該變量節點相連的所有校驗節點傳遞更新的軟信息,計算校驗節點信息:
(3)判決:當λn (un ) 0,則u-n = 0 ,否則u-n = 1,此時判決出的碼為:u- ={u-1,u-2 ,…,u-N}.最後根據校驗矩陣來判斷所譯出的碼字是否正確。如果u-H T = 0,那麼解碼正確,此時,停止迭代;否則繼續迭代進行解碼,直到迭代次數達到所設定的最大次數。如果此時仍未正確解碼,則解碼失敗。
由以上所述可見,在變量節點更新時只有加法運算,但是還可以再進一步降低算法的實現複雜度。採用迭代APP LLR 算法,將LLR BP 算法中的λn (un ) 代替λmn′(u ) n′ 參與校驗信息的迭代。即λn (un ) 不僅用於硬判決,還用於校驗信息的更新。這樣所傳遞的變量消息之間便引進了相關性,傳遞的變量消息就不再是外部消息,僅僅需要計算和存儲一個變量消息的數值,可以大大地降低算法的複雜度。
3 LDPC 碼在高斯信道下不同解碼算法的仿真結果和分析
基於Matlab按照上述的編解碼方法,在高斯信道下分別對LDPC 碼概率域的SPA 和對數域的迭代APPLLR 解碼算法進行了誤碼性能仿真。然後由所得到的性能仿真圖形進行分析比較。
3.1 概率域的SPA的仿真結果和分析高斯信道下,用BPSK 調製,採用概率域的迭代解碼算法,迭代次數為20,該程序的優點是解碼效率高,其關鍵地方利用了LOG 函數,提高了解碼效率。相同碼率均為1 2,碼長分別為36,256,512,用概率域的迭代解碼算法時的編解碼系統的誤碼率隨信噪比變化的曲線如圖2所示。
由圖2 可見,解碼前的誤碼率最高,採用概率域的迭代解碼算法後,誤碼率大幅度降低,解碼性能較好。碼長為512的LDPC碼糾錯性能最好,碼長為36的LDPC碼糾錯性能最差。由此可得:在相同碼率下,隨著碼長的增加,LDPC碼的糾錯性能逐漸改善。
3.2 迭代APP LLR解碼算法的仿真結果和分析
高斯信道下,用BPSK 調製,採用對數域的迭代解碼算法,迭代次數為10,可以設置誤碼碼字的最大數量來計算每個信噪比點,程序簡明了,容易理解,而且解碼效率非常高。相同碼率為1/2,碼長分別為36、256、512,用對數域的迭代APP LLR解碼算法時的編解碼系統的誤碼率隨信噪比變化的曲線如圖3所示。