新聞中心

        EEPW首頁 > 消費電子 > 設計應用 > LDPC 碼譯碼算法及性能分析應用設計

        LDPC 碼譯碼算法及性能分析應用設計

        作者: 時間:2018-09-05 來源:網絡 收藏

        0 引言

        本文引用地址:http://www.104case.com/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所示。


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 苏尼特左旗| 岳西县| 杂多县| 板桥市| 高雄县| 潜山县| 曲沃县| 乌拉特前旗| 阳原县| 闽清县| 嘉鱼县| 封丘县| 两当县| 乌拉特前旗| 通城县| 滕州市| 闻喜县| 泊头市| 汉川市| 鄂尔多斯市| 甘孜| 江北区| 平阴县| 白河县| 伊金霍洛旗| 兴仁县| 大宁县| 朝阳市| 龙泉市| 潼南县| 高陵县| 贡嘎县| 丘北县| 射洪县| 屏山县| 砚山县| 安丘市| 临海市| 黄浦区| 北辰区| 海晏县|