【摘要】 LDPC碼和RS碼是兩種應用廣泛的信道編碼,在數字電視廣播、計算機網絡、數字移動通信以及深空通信等應用中具有優異的性能表現。本文介紹了這兩種編碼在二進制AWGN信道下的實現方式,包括編解碼、調制解調、信道傳輸等等;通過仿真分析并比較了這兩種編碼在AWGN信道下的性能特點。
【關鍵詞】 信道編碼 BPSK調制 軟判決 信噪比 誤碼率
一、引言
RS碼是一種基于多項式運算的循環線性分組碼,采用了近世代數理論。它將一條長度為K的消息(即一個可獨立編碼的擁有K個符號的數據分組)映射為一個長度為N(N>K)的碼字(一個擁有N個符號的分組)。其中的符號是q階有限域GF(q)上的元素,一個符號對應于二進制數據的若干個比特。一個RS(N,K,d)碼的碼距為d=N-K+1,可以糾正(N-K)/2個符號差錯(error),或者糾正N-K個符號刪除(erasure)(在刪除信道下)。在一個碼字內糾錯位置是任意的且以符號為單位,RS碼不但能糾正隨機差錯而且特別適合糾正突發差錯。
二、信道傳輸與編解碼
2.1 數據傳輸模型,如圖1所示
信道編碼(RS碼或LDPC碼)的碼字集合定義為C[∪] F,即該信道編碼的所有碼字構成F的一個子集。信源產生一條長度為K的消息m∈F,用向量形式表示為m=[m0,m1,…,mi,…,mK-1](mi∈GF(q))。編碼器執行編碼映射g(m):m∈F[→] c∈C。生成的碼字c是一個N重向量,c=[c0,c1,…,ci,…,cK-1](ci∈GF(q))。碼率定義為R=K/N,表示一個N符號的碼字可以傳遞K符號的消息。對于二進制編碼,q=2,碼字中的每個符號是一個二進制比特;對于q(q=2l,l=2,3,…)進制編碼,每個符號和l個二進制比特相對應[1],碼字c∈F,可以轉換為一個二進制衍生碼c'∈F,即c'=[c'0,c'1,…,c'i,…,c'K-1](c'i∈GF(2))。BPSK調制器將一個碼字c'∈F逐比特映射到字符集A={-1+i0,+1+i0}上,得到發送向量x=[x0,x1,…,xi,…,xNl-1](xi=(-1)),x∈CNl。AWGN信道的噪聲表示為η=[η0,η1,…,ηi,…,ηNl-1],η∈CNl。信道輸出為y=[y0,y1,…,…,yNl-1](yi=xi+ηi),y∈CNl。信道的傳輸特性為
在實數域上,
(σ2為噪聲方差,σ2=N0/2,其中常數N0是單邊噪聲功率譜密度)。經過信道傳輸后的信號在BPSK解調后,在硬判決下輸出二進制比特序列(當yi>0時輸出比特0;當yi<0時輸出比特1),或在軟判決下輸出信道對數似然比(即LLR,Log-Likelihood Ratio)Lch(yi),
解碼器對輸出數據進行信道解碼,恢復出發送端有效消息。
2.2 RS碼與多項式運算
一條消息m可以用關于x的多項式表示為m(x)=m0+m1x+…+mx+…+mx(mi∈GF(q)),多項式的系數為消息向量的元素。有限域GF(q)={a0,a1,…,aq-1}共有q個域元素。按照早期觀點,RS碼字的每個符號可以看成多項式m(x)在GF(q)的每個域元素上的值,即c=[m(a0),m(a1),…,m(aq-1)],碼長N=q。收到的碼字為r={r0,r1,…,rq-1},把消息元素當作未知數,可以得到方程
當碼字符號的傳輸差錯數小于或等于(N-K)/2時,通過選取方程組(4)中滿秩的K個方程進行求解可以得到消息向量的估計值,不同的K個方程可能解出不同的估計值,其中出現次數較多的估計值作為譯碼輸出。
現代觀點主要是從生成多項式角度分析。設計碼長為N=q-1,消息長度為K,碼距為dmin=N-K+1。碼字多項式為c(x)=m(x)g(x),其中
α是域GF(k)的本原元(即α的各次冪通過本原多項式化簡可以得到GF(k)上的所有元素),gi是生成多項式的系數。用矩陣形式表示為c=mG,
G是一個K×N矩陣,稱為生成矩陣,它的第一行的前N-K+1個元素為生成多項式的各次項按降冪排列后的系數,從第二行開始每一行的各元素在前一行的基礎上依次向后移動一個元素位置,其余未標注的元素為0。
2.3 LDPC碼及軟判決譯碼
LDPC碼的基本定義是對于一個(N-K)×N的稀疏矩陣(即矩陣中非零元素的個數遠小于零元素的個數)H=[h0,h1,…,hN-K+1],碼字c滿足HcT=0,即
H稱為校驗矩陣,方程組(7)中的每一個方程稱為一個校驗方程。LDPC碼的性能直接取決于H的構造。在Tanner圖上,碼字中的編碼符號用變量節點表示,校驗方程用校驗節點表示,參與某個方程校驗的變量節點用邊與對應的校驗節點相連。如圖1所示:
利用H的稀疏特性,可以實現快速編碼。將碼字表示為c=[v,m],其中m表示消息位,v表示校驗位。在編碼過程中,m是已知的,只需求出v就可以得到整個碼字。具體如下:
把校驗矩陣進行劃分為H=[A,B],其中A是(N-K)×(N-K)矩陣,B是矩陣(N-K)×K。校驗關系為[A,B][v,m]T=0,即AvT+BmT=0。若A非奇異矩陣,則存在一個下三角矩陣L和一個上三角矩陣U,使A=LU。計算z=BmT,解方程Ls=z得到s,再解方程UvT=s得到v,即完成編碼。采用這種系統碼編碼方式(即消息符號是碼字符號的一部分)時,接收端解碼的同時就能得到發送消息。
LDPC碼可以使用解調信號的對數似然比進行解碼,稱為和積算法。解碼器的輸入信號Lch(yi)由公式(3)表示,當它為正數時表示比特0,當它為負數時表示比特1,它的絕對值越大所代表的比特值的可信度越高。和積算法的關鍵是對碼字各比特的對數似然比通過迭代運算進行更新,使得各比特的對數似然比在多次更新后趨向正確值,最后依次將各比特信息判決輸出。步驟如下:
(1)收到碼字的每一位(對應一個變量節點)的初始信息為Li=Lch(yi),如果滿足校驗關系,譯碼結束;如果不滿足校驗關系,將Li發送到與之相連的校驗節點。
(2)對于每一個校驗節點hj,計算與相連的各個變量節點ci的信息Lj(ci),
其中l是該校驗節點下的變量節點的個數。然后,將值發送給相應的Lj(ci)。
(3)變量節點ci向與之相連的每個校驗節點hj發送用作下一次計算Lj(ci)值的輸入信息Li,Li等于來自與ci相連的除hj外的其它校驗節點的Lj'(ci)之和加上Lch(ci)。
(4)每一個變量節點ci用收到的來自所有與之相連的校驗節點的Lj(ci)之和加上Lch(ci)作為判決信息。依次對每個變量節點的判決信息進行判決輸出,譯碼完成。
其中,步驟2——步驟3可以重復執行,使比特差錯逐漸減少,直到達到最大迭代次數或節點信息滿足校驗關系。
三、仿真結果
RS碼的碼長選取為N=127和N=512,本原多項式分別為P(x)=x7+x+1和P(x)=x9+x4+1。對這兩種碼長的RS碼分別在4種不同碼率下進行仿真,這4種碼率是R1=0.9843、R2=0.9686、R3=0.9038以及R4=0.6703。發送消息長度為107bit。采用硬解碼方式,解碼器輸入為BPSK解調輸出經硬判決后的比特序列。LDPC碼采用DVB-S2標準規定的校驗矩陣,碼長為N=64800,碼率分別為R1=8/9,R2=4/5,以及R3=1/2。發送消息長度為107bit。采用軟解碼方式,解碼器輸入為BPSK解調輸出的對數似然比(LLR值),和積算法的迭代次數分別為iter=10和iter=20。
仿真圖的橫坐標為Eb/N0(dB)(Eb是平均1bit信息的能量,N0是單邊噪聲功率譜密度),縱坐標為消息誤比特率pe,每個樣本點為一次完整的107bit消息傳輸,樣本點橫坐標間距為0.4dB。從圖3和圖4可以看出,RS碼的pe隨著Eb/N0的增加逐漸降低。在Eb/N0小于0.5dB時呈現緩慢下降,pe甚至高于未編碼時的情況。但超過5dB后,pe快速下降,直到趨近于0(曲線末端之后未畫出的樣本點在仿真中pe=0)。對于同一碼長而不同碼率的RS碼,碼率越大pe在后段部分下降越快。從圖5和圖6可以看出,LDPC碼具有類似的特點,但pe的快速下降更為提前。在兩種迭代次數下,3種不同碼率的LDPC碼都在4dB之前pe全部減小到0。當迭代次數iter=20時,碼率LDPC碼在略大于1.6dB時就到達0。
四、總結
本文從信源產生的二進制數據開始,介紹了消息在AWGN信道下的傳輸方式并分析了兩種信道編碼——LDPC碼和RS碼的誤碼率特性。