【摘要】 文章將二元LDPC碼對數域的分層譯碼算法成功運用在多元LDPC碼的譯碼過程當中。仿真結果表明,在理想加性高斯白噪聲信道環境下,QPSK調制時,多元LDPC碼分層譯碼算法的性能明顯優于傳統的對數域譯碼算法,因此它可以有效提升消息傳遞算法的收斂速度,減少譯碼延時。
【關鍵詞】 多元LDPC碼 分層譯碼算法 QPSK調制
低密度校驗碼(LDPC codes)是Gallager于1962年提出的一種逼近香農限的線性分組碼。文獻[1]首次提出了定義在有限域上的多元LDPC碼,他們證實在中短碼長時多元LDPC碼比二元LDPC碼有更好的性能。同時相對于二元LDPC碼,多元LDPC碼更能有效地與高階調制相結合,節省帶寬。然而多元LDPC碼的譯碼算法大多有一個共同的缺陷:譯碼迭代次數多,收斂速度慢。文獻[2]提出了一種在二元LDPC碼中使用的對數域分層譯碼算法,并證明該算法能有效提升二元LDPC碼的收斂速度。
一、多元LDPC碼及其分層譯碼算法
多元LDPC碼是由M行N列稀疏校驗矩陣H定義的一種線性分組碼,該矩陣大部分都由伽羅華域中的零元素組成,只有很少一部分元素來自其中的非零元素。要得到多元LDPC碼的校驗矩陣,應該首先設計對應的二元矩陣,然后將矩陣中的非零元素用伽羅華域中的非零元素替代。無論是二元校驗矩陣還是多元校驗矩陣都可用碼字的Tanner圖表示[3],在表示過程中,校驗矩陣的列對應Tanner圖的變量節點,行對應Tanner圖的校驗節點。只要校驗矩陣的第i行第j列對應的元素非零,則Tanner圖的校驗節點ci與變量節點vj就有一條邊相連。需要注意的的是:如果校驗矩陣是多元的,那么連接校驗節點和變量節點的邊上要標明第i行第j列的具體元素值。
多元LDPC碼的譯碼算法大多采用并行處理的消息傳遞譯碼算法。相比這種傳統的更新機制,文獻[2]證實確實存在一種其它的更新規則能夠顯著提升消息傳遞譯碼算法的收斂速度。為了更好地描述分層譯碼算法的步驟,必須先定義幾個概念:對于M行N列的多元LDPC碼校驗矩陣,定義N(i)代表與第i個校驗節點ci相連的變量節點(1≤i≤M),定義p(vj=k|y)代表由信道接收值y判斷變量節點vj(1≤j≤N)取k(k∈GF(q)={0,1,…q-1})時的概率。因此在初始化時每個變量節點具有q個描述其處于不同狀態的概率組成的向量。為了避免計算的不穩定性,筆者采用了對數似然比向量,因此描述變量節點vj的對數似然比向量為(1)
在初始化剛開始時LQj是唯一可以判斷變量節點vj所處狀態的信息。隨著迭代過程的進行,變量節點vj的信息LQj得到更新。定義R為第l次迭代時校驗節點ci傳遞給變量節點vj的信息,Q為第l次迭代時變量節點vj傳遞給校驗節點ci的信息。基于以上定義,多元LDPC碼迭代過程的核心操作如下:
上式當中的ψ操作與多元LDPC碼傳統的對數域譯碼算法相同。每次迭代完成之后,根據vj=argmax(LQj),(1≤j≤N)進行譯碼判決,如果找到碼字迭代過程就終止,否則要達到最大迭代次數maxiter跳出迭代過程。對于每個變量節點信息LQj,不斷地被與之相連的校驗節點更新。因此在與變量節點vj相連的下一個校驗節點處理過程當中能夠更及時地用到更新的變量信息。因此對數域分層譯碼算法可以有效提升譯碼的收斂速度。
二、仿真分析
為了驗證多元LDPC碼的對數域分層譯碼算法性能,文章選用了碼長為200,碼率為0.5, GF(4)上的多元LDPC碼,并進行QPSK調制,在理想加性高斯白噪聲信道環境下進行仿真,結果如圖1所示。
由圖1可以觀察到隨著信噪比的增加,對數域分層譯碼算法成功譯碼所需的迭代次數明顯少于傳統的對數域譯碼算法,并且當信噪比一定時,隨著最大迭代次數的增加,對數域分層譯碼算法的優勢將更加明顯,這主要是由于當最大迭代次數增加時,分層譯碼算法相比傳統的譯碼算法在譯碼過程中,將更優先得到最新的更新信息,從而提升譯碼的收斂速度。由圖 2可以觀察到在信噪比一定時,隨著譯碼最大迭代次數的增加,碼字的誤比特性能將會越來越好,而且在相同的譯碼最大迭代次數時,分層譯碼算法的性能優于傳統的譯碼算法。可見分層譯碼算法確實可以提升譯碼性能,減小譯碼延時。
三、結論
文章在分析二元LDPC碼分層譯碼算法的基礎上,將該算法成功運用到多元LDPC碼的譯碼過程當中。仿真結果表明分層譯碼算法可以有效提升譯碼的收斂速度,減小譯碼延時。因此多元LDPC碼分層譯碼算法是時延小、性能要求高譯碼系統的極佳備選方案之一。