楊雪梅,畢春艷
(四川大學(xué)錦江學(xué)院 電氣與電子信息工程學(xué)院,四川 眉山 620860)
卷積碼是1955年由Elias等人提出的。在設(shè)備復(fù)雜度相同的條件下,它的性能優(yōu)于分組碼,糾錯能力隨約束長度的增加而增強[1-2]。目前,卷積碼最實用的(n,k,L)卷積碼是k=1的(n,1,L)卷積碼[3],已廣泛應(yīng)用于實際通信系統(tǒng)中,如2G、3G和商業(yè)衛(wèi)星通信系統(tǒng)等。例如,為了實現(xiàn)前向差錯控制,GSM移動通信系統(tǒng)在下行和上行鏈路中都采用了(2,1,5)卷積碼,IS-95 CDMA系統(tǒng)在下行鏈路中采用(2,1,9)卷積碼,而上行鏈路中采用(3,1,9)卷積碼。
常用的卷積碼譯碼方法還有Viterbi譯碼[4]。但是,隨著約束長度的增大,它的算法和硬件實現(xiàn)復(fù)雜度也會增加。此外,還有序列譯碼[5]和門限譯碼[6],但性能都較Viterbi譯碼差。文獻[7]提出了一種邏輯代數(shù)譯碼算法,但需要將錯誤類型分類討論。本文為(n,k,L)卷積碼設(shè)計了一種基于邏輯運算的譯碼方法,原理簡單,適合于所有(n,1,L)卷積碼的譯碼。
一個(n,k,L)卷積編碼器由 L·k-1級移位寄存器和n個模2和加法器(異或門)構(gòu)成的輸出發(fā)生器組成[3]。每輸入k比特,編碼輸出一個n比特碼字,如圖1所示。
一個典型的(2,1,3)卷積碼的原理圖如圖2所示,連接矢量為G1=(111)2和G2=(101)2。
(2,1,3)卷積碼的兩個異或門的編碼輸出邏輯表示式為:
圖1 (n,k,L)卷積碼編碼器
圖2 (2,1,3)卷積碼編碼器
可見,輸入1位數(shù)字信號,可以得到2位卷積碼輸出數(shù)據(jù)。
(3,1,9)卷積碼連接矢量和異或門的編碼輸出邏輯表示式為:可見,輸入1位數(shù)字信號,可以得到3位卷積碼輸出數(shù)據(jù)。
卷積碼譯碼過程中,不僅要從現(xiàn)在時刻收到的碼組中提取譯碼信息,而且要從以前或以后的多個時刻(與約束長度有關(guān))收到的碼組中提取有關(guān)信息并糾錯。
目前,卷積碼譯碼方法有很多,可以分為兩大類:一類是是門限譯碼[5],另一類是基于最大似然原理的譯碼,包括Viterbi譯碼[4]和序列譯碼[6]。
邏輯運算的算法原理主要是根據(jù)異或運算的因果互換關(guān)系進行編碼逆運算從而實現(xiàn)譯碼,屬于最大似然譯碼。
以(2,1,3)卷積碼為例,它的譯碼器結(jié)構(gòu)如圖3所示。
圖3 (2,1,3)卷積碼的譯碼器
利用異或運算的可逆性,由編碼方程式可得計算重建信息碼元mk的譯碼方程:
可見,異或逆運算后有2個mk。若2個mk相同,則譯碼正確;若不同,表明接收到的子碼ck有錯,或前面某一次譯碼中mk-n可能出現(xiàn)誤碼。此時,需檢查可能情況進行糾錯和判決,排除錯誤,最終確定輸出譯碼值。其中,糾錯和判決的思想采用擇優(yōu)保留的原則。因此,譯碼器中異或門的輸出最終會進入最大似然譯碼算法進行判決,實現(xiàn)最終的譯碼。
同理,(n,k,L)卷積碼有n個碼采用邏輯運算譯碼后會得到n個mk。若n個mk相同,則譯碼正確;若不同,根據(jù)最大似然思想進行判決,實現(xiàn)譯碼。在隨機錯誤干擾下,發(fā)送的編碼信號不容易成片出現(xiàn)。n越多,越有利于使用最大似然算法進行譯碼,譯碼糾錯越容易,出現(xiàn)誤碼的幾率相對減小。
例如,在(3,1,9)卷積碼中,在進行邏輯運算譯碼后得到3個mk,根據(jù)最大似然思想,有:
(1)若有3個mk相同,則判決該mk為譯碼值;
(2)若3個mk不相同,此時可能出現(xiàn)錯誤。為了避免誤碼,需假設(shè)不相等位置的mk情況繼續(xù)譯碼,選擇誤碼最優(yōu)的結(jié)果;
若在接收子碼ck中有連續(xù)2個以上錯誤,則譯碼可能出現(xiàn)誤碼,但后續(xù)譯碼也可進一步發(fā)現(xiàn)誤碼,此時需要通過相關(guān)算法進行糾正。
通過卷積碼編碼方程,利用matlab仿真平臺得到其發(fā)送子碼。若發(fā)送信號序列為110100111,如表1所示。
表1 編碼舉例
在matlab仿真平臺上,對幾種常用的卷積碼如(2,1,5)、(3,1,9)等基于邏輯運算譯碼進行仿真,并通過高斯白噪聲信道隨機加錯,檢查其誤碼特性。譯碼流程圖如圖4所示。
圖4 (n,1,L)卷積碼邏輯運算譯碼流程
隨機產(chǎn)生一串二進制數(shù)字序列,測試長度為1 000,在不同信噪比SNR下,(2,1,5)和(3,1,9)卷積碼的誤碼率如表2所示。
由表2可知,(2,1,5)和(3,1,9)卷積碼均能在邏輯運算譯碼方法下實現(xiàn)譯碼。約束長度不同,檢錯糾錯能力也有所不同。但是,算法或程序尚存在不成熟之處,需進一步研究改進性能。
表2 SNR與誤碼率對照表
利用邏輯異或運算的可逆性,將接收子碼與移位寄存器中數(shù)據(jù)根據(jù)編碼規(guī)則進行異或逆運算,得到n個發(fā)送數(shù)據(jù),并根據(jù)最大似然思想完成對(n,k,L)卷積碼的邏輯運算譯碼功能,并通過matlab仿真驗證了其功能。該算法簡單,容易實現(xiàn),對(n,k,L)卷積碼n>2時均適用。