周宇翔,周 華
(1.南京信息工程大學 長望學院,江蘇 南京 210044;2.南京信息工程大學 通信工程系,江蘇 南京 210044)
信源向信宿發(fā)送數(shù)據(jù)主要受信道帶寬等因素約束,在有限的帶寬中通常用吞吐量、誤碼率(Symbol Error Rate,SER)和信噪比(Signal-to-Noise Ratio,SNR)等數(shù)值衡量各類信道編碼的性能。在信道編碼中引入冗余位往往可以降低誤碼率。在分組碼中,信息被分成大小恒定的碼塊在信道中傳輸,這些在無記憶信道中被發(fā)送到接受節(jié)點的碼塊將一定程度上降低誤碼率。奇偶校驗矩陣的意義在于獲取高質量的碼塊,從而提高信道的傳輸質量[1]。分組碼有線性、循環(huán)、BCH等形式。卷積碼是一種性能更好的碼字,通常應用于數(shù)字無記憶信道傳輸。在這種碼字中,數(shù)據(jù)串行傳輸,而冗余的碼字被用于卷積編碼[2]。
當信道帶寬受限時,網(wǎng)格編碼調制(Trellis Coded Modulation,TCM)方案就發(fā)揮了相應作用。該方案采用移相鍵控(Phase Shift Keying,PSK)和幅度調制,使得在有限的帶寬內編碼調制的誤碼率得到有效改善[3]。低密度奇偶校驗碼(Low Density Parity Check Code,LDPC)使用奇偶校驗矩陣降低誤碼率,包括結構化LDPC碼和隨機LDPC碼兩種類型[4]。為了實現(xiàn)快速編譯碼操作,引入了噴泉碼,其中的LT碼和Raptor碼被驗證了具有較為優(yōu)異的性能[5-7]。
在線性分組碼中,信息以比特流的形式傳遞,這些比特流按某種規(guī)律分組后作為信道的輸入。在該編碼過程中,存在冗余項作為糾錯碼被一起發(fā)送至接收端,用于糾正實際傳輸信息的碼字中的錯誤。在接收端,這些碼字再次被轉化為比特流,從中檢索出原有的信息。碼字傳輸原理如圖1所示。
圖1 碼字傳輸原理
在分組碼中,信息序列被劃分成固定長度的消息分組,每一個消息分組含有k個信息比特,一共有2k個不同的消息。在(n,k)分組碼中,這k個消息比特按照一定的編碼規(guī)則被編碼成長為n(n>k)的二進制序列c=(c1,c1,…,cn-1),由編碼器產生的n-k個添加到每個輸入消息中的比特稱為冗余比特。在接收節(jié)點處對碼字進行譯碼后,接收端得到原始信息。
常用的線性分組碼有漢明碼、循環(huán)碼、二進制BCH碼以及RS碼。令v和w是GF(2)上的兩個n維向量,v和w之間的漢明距離記為d(v,w),即v和w相應位置元素不相同的元素個數(shù)。對于線性碼,dH((v,w)=d(0,w-(v)=d(0,c)=w(c)。其中w(c)為c的漢明重量,表示c中非零元素的個數(shù)[8]。
在漢明碼中,兩個碼字之間的距離小于或等于漢明距離,其糾錯上限為:
式中,Dm表示該分(n,k)組碼中兩個不同碼字之間的最小漢明距離。
循環(huán)碼任一碼字的循環(huán)移位(左移或右移)構成該碼的另一個碼字,其編碼電路和伴隨式運算電路可以用簡單的反饋移位寄存器來實現(xiàn)。因為線性循環(huán)碼具有相當多固有的代數(shù)結構,可以找到各種簡單有效的譯碼方法,所以得到了廣泛應用[9]。
BCH碼和RS碼是兩類能夠先確定糾錯能力或最小碼距,然后設計碼長和生成多項式的循環(huán)碼。BCH碼在二元域中尋找最小多項式,而RS碼是BCH碼的一個子類,其碼字向量的每一個分量稱為一個符號,并且每個符號均可表示為m比特。一個可以糾正任意小于等于t個符號差錯的RS碼的基本參數(shù)為:
式中,n為碼長;r為校驗位長。多項式誤差定位器找到發(fā)生差錯的位置并計算差錯的大小,然后從傳輸?shù)拇a字中糾正該誤差,恢復得到原有的信息。
卷積碼的編碼器是有記憶的,在一定的時間內編碼器的輸出不僅取決于該時刻的輸入,也與一定數(shù)量以前的輸入相關。以碼率為R=k/n的卷積編碼器為例,信息序列u被劃分為長度為k的數(shù)據(jù)幀,在任意時刻一個k比特長的數(shù)據(jù)幀被作為信息序列送入卷積編碼器,相應的輸出是n比特的編碼序列。每n比特的編碼輸出塊不僅依賴于當前時刻的k比特輸入序列,也依賴于m個以前輸入的k比特序列。
圖2給出了一個存儲級數(shù)m=2、碼率R=1/2的卷積碼編碼器,該編碼器有1路輸入、兩路輸出。其中,刪余卷積碼定期刪除編碼位,使得碼率提高,性能也更加優(yōu)異。
圖2 卷積碼編碼器
Turbo碼又稱為并行級聯(lián)卷積碼(Parallel Concatenated Convohtional Code,PCCC),它巧妙地將卷積碼和隨機交織器結合在一起,實現(xiàn)了Shannon隨機編碼的思想,同時采用軟輸出迭代譯碼來逼近最大似然譯碼。Turbo碼的一個重要特點在于它的分量碼采用遞歸系統(tǒng)卷積碼(Recursive Systematic Convolutional,RSC)。不同于一般的卷積碼器,Turbo碼編碼器中不僅有前向結構,而且還有后向反饋結構,如圖3所示。
圖3 Turbo碼編碼器
RSC編碼器一般有2~5級移位寄存器,用生成多項式表示為:
式中,1表示系統(tǒng)比特;g1和g2分別表示編碼器的前饋多項式和反饋多項式。
LDPC碼是一類具有逼近信道容量限性能的(n,k)線性分組碼,其校驗矩陣H=[hij]是m×n的稀疏矩陣,包含有更多的零元素和較少的非零元素。根據(jù)H矩陣中非零元素的分布情況,該碼可以分為規(guī)則LDPC碼和不規(guī)則LDPC碼。若矩陣H具有恒定的列重和行重(即每行或每列上的非零元素個數(shù)相同),則稱為規(guī)則LDPC碼。矩陣H可以用Tanner圖表示,其中一個頂點集合表示符號變量,稱為變量節(jié)點;另一個頂點集合表示局部約束,稱為約束節(jié)點或校驗節(jié)點[10]。H矩陣的列數(shù)等于Tanner圖中的變量節(jié)點數(shù),行數(shù)等于校驗節(jié)點數(shù)。(10,5)線性分組碼的Tanner圖如圖4所示。
圖4 (10,5)線性分組碼的Tanner圖
圖4中共有5個校驗節(jié)點和10個變量節(jié)點,這意味著它對應的H矩陣是5行、10列。兩種節(jié)點間的連線表示行與列之間的連接,對應于H矩陣里的非零元素,代表變量節(jié)點將信息發(fā)送到了相應的校驗節(jié)點。圖4對應的矩陣為:
圖4中變量節(jié)點c1分別連接著校驗節(jié)點s1、s2、s4,對應式(4)中矩陣H第1列的非零元素位于第1、2、4行。同理,變量節(jié)點c10分別連接著校驗節(jié)點s3、s4,對應式(4)中矩陣H第10列的非零元素位于第3、4行。
圖4 上電時序
一個二元(n,k)線性分組碼C是GF(2)上所有n維向量組成的向量空間的一個k維子空間,C中存在k個線性獨立的碼字g0,g1,…,gk-1,C中每個碼字ci是這k個線性獨立碼字的線性組合,即:
將這k個線性獨立的碼字寫作矩陣的形式:
令待編碼的消息u=(u0,u1,…,uk-1),則該消息對應的碼字可表示為:
基于接受序列、編碼規(guī)則以及信道的噪聲特征,接收機判斷哪一個消息是實際發(fā)送的,這個判決操作稱為譯碼。LDPC碼中常用的譯碼方法有兩種,即二進制擦除譯碼和位翻轉譯碼[11]。二進制擦除譯碼通過在變量節(jié)點和校驗節(jié)點之間多次傳遞消息來完成校驗,直到恢復出正確的信息,這種校驗方法又被稱為迭代。位翻轉譯碼也是一個迭代的過程,每迭代一次后便計算信道輸出中“1”的個數(shù),若不滿足原有的奇偶性則翻轉消息中的比特,直到獲取正確的碼字[12]。
隨著通信技術的不斷發(fā)展,與有線通信相比,無線通信具有便捷、限制小等優(yōu)點。但與此同時,無線通信也面臨著穩(wěn)定性差、易受干擾等問題。信道編碼技術有效解決了傳輸信道的相關問題,對傳輸過程中的誤差進行了一定程度的控制,值得推廣應用。