本文主要是關(guān)于卷積編碼的相關(guān)介紹,并著重闡述了卷積編碼的原理。
卷積編碼
在信道編碼研究的初期,人們探索、研究出各種各樣的編碼構(gòu)造方法,其中包括卷積碼。早在1955年,P.Elias首先提出了卷積碼。但是它又經(jīng)歷了十幾年的研究以后,才開始具備應(yīng)用價值。在這十幾年期間,J.M.Wozencraft提出了適合大編碼約束度的卷積碼的序列譯碼,J.L.Massey提出了實現(xiàn)簡單的門限譯碼,A.J.Viterbi提出了適合小編碼約束度的卷積碼Viterbi算法。20年后,即1974年,L.R.Bahl等人又提出一種支持軟輸入軟輸出(SISO,Soft-Input Soft-Output)的最大后驗概率(MAP,Maximum A Posteriori)譯碼——BCJR算法。其中,Viterbi算法有力地推動了卷積碼的廣泛應(yīng)用,BCJR算法為后續(xù)Turbo碼的發(fā)現(xiàn)奠定了基礎(chǔ)。
編碼技術(shù)
在卷積碼的編碼過程中,對輸入信息比特進行分組編碼,每個碼組的編碼輸出比特不僅與該分組的信息比特有關(guān),還與前面時刻的其他分組的信息比特有關(guān)。同樣,在卷積碼的譯碼過程中,不僅從當(dāng)前時刻收到的分組中獲取譯碼信息,還要從前后關(guān)聯(lián)的分組中提取相關(guān)信息。正是由于在卷積碼的編碼過程中充分利用了各組的相關(guān)性,使得卷積碼具有相當(dāng)好的性能增益。
1.編碼器卷積碼編碼器實質(zhì)上是一個有限狀態(tài)的線性移位寄存器。這個移位寄存器由若干個寄存器單元組成,這些寄存器單元分成組,每組個寄存器單元,相應(yīng)地可以存儲個信息比特。寄存器單元按一定的規(guī)則連接到代數(shù)運算單元,這樣運算單元通過接收這些寄存器單元的輸入信息,進行代數(shù)運算,將運算結(jié)果作為編碼比特輸出。
編碼器的每組輸入包含k0個信息比特,第一組寄存器單元存儲當(dāng)前時刻的k0個信息比特,而其他組寄存器單元存儲前面時刻的(K?1)k0個信息比特。編碼器有n0個編碼輸出,每個編碼輸出Yi由當(dāng)前時刻的輸入信息分組以及其他(K?1)個寄存器單元內(nèi)的信息分組根據(jù)相應(yīng)的連接關(guān)系進行模2運算來確定。
因此,一般定義K為編碼約束度,說明編碼過程中相互關(guān)聯(lián)的分組個數(shù),定義 m=k-1 為編碼存儲級數(shù),碼率 R=k0/n0,這類碼通常稱為(n0,k0,K)卷積碼。在許多實際應(yīng)用場合,往往采用編碼約束度比較小、碼率為的卷積碼。它們的存儲級數(shù)都是8,加法器完成二進制加法(模2加)。圖中省略了存儲當(dāng)前時刻輸入的寄存器單元。
2,1,9)卷積碼編碼器有一個輸入端口、兩個輸出端口,這兩個輸出端口分別對應(yīng)兩個生成多項式(使用八進制表示):561和753。該碼率是1/2。在圖3-29(b)中,(3,1,9)卷積碼編碼器有一個輸入端口、3個輸出端口,這3個輸出端口分別對應(yīng)3個生成多項式(使用八進制表示):557、663和711。該碼率是1/3。TD-LTE系統(tǒng)中采用了(3,1,7)卷積碼,存儲級數(shù)是6,使用了6個寄存器。
這個卷積碼的主要優(yōu)點包括最優(yōu)距離譜、咬尾編碼、譯碼復(fù)雜度小。具體描述見后續(xù)章節(jié)內(nèi)容。另外,卷積碼也可以按照其他方式進行分類,比如系統(tǒng)碼或者非系統(tǒng)碼,遞歸碼或者非遞歸碼,最大自由距離碼或者最優(yōu)距離譜碼。常用的卷積碼一般是非遞歸的非系統(tǒng)碼,而Turbo碼常常使用遞歸的系統(tǒng)卷積碼。2.咬尾編碼通常卷積碼編碼器開始工作時都要進行初始化,常常將編碼器的所有寄存器單元都進行清零處理。而在編碼結(jié)束時,還要使用尾比特進行歸零的結(jié)尾操作(Tailed Termination)。
相對于編碼比特而言,尾比特增加了編碼開銷。TD-LTE系統(tǒng)的卷積碼編碼器采用了咬尾編碼方法,如圖3-30所示,編碼器開始工作時要進行特殊的初始化,將輸入信息比特的最后m個比特依次輸入編碼器的寄存器中,當(dāng)編碼結(jié)束時,編碼器的結(jié)束狀態(tài)與初始狀態(tài)相同。由于這個編碼方法沒有出現(xiàn)尾比特,因此稱為咬尾編碼。咬尾編碼減少了尾比特的編碼開銷。對于咬尾編碼方法,在譯碼過程中,由于編碼器的初始狀態(tài)和結(jié)尾狀態(tài)是未知的,因此就需要增加一定的譯碼復(fù)雜度,才能確保好的譯碼性能。3.性能界卷積碼的性能一般使用誤比特率(BER,Bit Error Rate)來統(tǒng)計,其理論上界(Upper Bound)一般使用聯(lián)合界(Union Bound)來確定,即(3-13)其中,卷積碼的轉(zhuǎn)移函數(shù)(Transfer Function),代表非零輸入信息比特的轉(zhuǎn)移分支,Y的指數(shù)表示輸入信息比特的漢明重量,Z代表輸出編碼比特的轉(zhuǎn)移分支,Z的指數(shù)表示輸出編碼比特的漢明重量。為了進一步分析上述性能界,一般假設(shè)最大似然譯碼(ML,Maximum-Likelihood)、BPSK調(diào)制和加性高斯白噪聲(AWGN,Additive White Gaussian Noise)信道,則有
(3-14)其中,Bd是所有重量為d的碼字的非零信息比特的重量,為卷積碼的自由距離。當(dāng)信噪比很高時,則式(3-14)近似為(3-15)BPSK調(diào)制性能為(3-16)考慮到誤碼性能主要是指數(shù)項占據(jù)主導(dǎo)作用,與未編碼系統(tǒng)相比,卷積碼的編碼增益為(3-17)式(3-17)說明卷積碼的漸近性能主要是由自由距離()決定的。因此,相對而言,卷積碼的自由距離越大,其性能越好。以上述二進制卷積碼(2,1,9)和(3,1,9)為例,自由距離分別為12和18,編碼增益都為7.78dB。實際上,性能最佳的卷積碼往往具有最優(yōu)的距離譜(ODS,Optimum Distance Spectrum)或者重量分布,而且,具有最優(yōu)距離譜的卷積碼也具有最大的自由距離(MFD,Maximum Free Distance)。TD-LTE系統(tǒng)采用了最優(yōu)距離譜的卷積碼。
卷積編碼原理
卷積碼在一個二進制分組碼(n,k)當(dāng)中,包含k個信息位,碼組長度為n,每個碼組的(n-k)個校驗位僅與本碼組的k個信息位有關(guān),而與其它碼組無關(guān)。為了達到一定的糾錯能力和編碼效率(=k/n),分組碼的碼組長度n通常都比較大。編譯碼時必須把整個信息碼組存儲起來,由此產(chǎn)生的延時隨著n的增加而線性增加。
為了減少這個延遲,人們提出了各種解決方案,其中卷積碼就是一種較好的信道編碼方式。這種編碼方式同樣是把k個信息比特編成n個比特,但k和n通常很小,特別適宜于以串行形式傳輸信息,減小了編碼延時。
與分組碼不同,卷積碼中編碼后的n個碼元不僅與當(dāng)前段的k個信息有關(guān),而且也與前面(N-1)段的信息有關(guān),編碼過程中相互關(guān)聯(lián)的碼元為nN個。因此,這N時間內(nèi)的碼元數(shù)目nN通常被稱為這種碼的約束長度。卷積碼的糾錯能力隨著N的增加而增大,在編碼器復(fù)雜程度相同的情況下,卷段積碼的性能優(yōu)于分組碼。另一點不同的是:分組碼有嚴(yán)格的代數(shù)結(jié)構(gòu),但卷積碼至今尚未找到如此嚴(yán)密的數(shù)學(xué)手段,把糾錯性能與碼的結(jié)構(gòu)十分有規(guī)律地聯(lián)系起來,目前大都采用計算機來搜索好碼。
下面通過一個例子來簡要說明卷積碼的編碼工作原理。正如前面已經(jīng)指出的那樣,卷積碼編碼器在一段時間內(nèi)輸出的n位碼,不僅與本段時間內(nèi)的k位信息位有關(guān),而且還與前面m段規(guī)定時間內(nèi)的信息位有關(guān),這里的m=N-1通常用(n,k,m)表示卷積碼(注意:有些文獻中也用(n,k,N)來表示卷積碼)。圖1就是一個卷積碼的編碼器,該卷積碼的n = 2,k = 1,m = 2,因此,它的約束長度nN = n×(m+1) = 2×3 = 6。
圖1 (2,1,2)卷集碼編碼器
在圖1中,與 為移位寄存器,它們的起始狀態(tài)均為零。、與、、之間的關(guān)系如下:
(1)
假如輸入的信息為D = [11010],為了使信息D全部通過移位寄存器,還必須在信息位后面加3個零。表1列出了對信息D進行卷積編碼時的狀態(tài)。
表1 信息D進行卷積編碼時的狀態(tài)
輸入信息D 1 1 0 1 0 0 0 0
b3b2 00 0 1 1 1 1 0 0 1 1 0 0 0 0 0
輸出C1C2 1 1 0 1 0 1 0 0 1 0 1 1 0 0 0 0
描述卷積碼的方法有兩類,也就是圖解表示和解析表示。解析表示較為抽象難懂,而用圖解表示法來描述卷積碼簡單明了。常用的圖解描述法包括樹狀圖、網(wǎng)格圖和狀態(tài)圖等?;谄蜻@里就不詳細介紹了。
卷積碼的譯碼方法可分為代數(shù)譯碼和概率譯碼兩大類。代數(shù)譯碼方法完全基于它的代數(shù)結(jié)構(gòu),也就是利用生成矩陣和監(jiān)督矩陣來譯碼,在代數(shù)譯碼中最主要的方法就是大數(shù)邏輯譯碼。概率譯碼比較常用的有兩種,一種叫序列譯碼,另一種叫維特比譯碼法。雖然代數(shù)譯碼所要求的設(shè)備簡單,運算量小,但其譯碼性能(誤碼)要比概率譯碼方法差許多。因此,目前在數(shù)字通信的前向糾錯中廣泛使用的是概率譯碼方法。
維特比譯碼法簡介
viterbi譯碼算法是一種卷積碼的解碼算法。缺點是隨著約束長度的增加算法的復(fù)雜度增加很快。約束長度N為7時要比較的路徑就有64條,為8時路徑變?yōu)?28條。 (2<<(N-1))。所以viterbi譯碼一般應(yīng)用在約束長度小于10的場合中。
編碼(舉例約束長度為7):編碼器7個延遲器的狀態(tài)(0,1)組成了整個編碼器的64個狀態(tài)。每個狀態(tài)在編碼器輸入0或1時,會跳轉(zhuǎn)到另一個之中。比如110100輸入1時,變成101001(其實就是移位寄存器)。并且輸出也是隨之而改變的。
解碼的過程就是逆過程。算法規(guī)定t時刻收到的數(shù)據(jù)都要進行64次比較,就是64個狀態(tài)每條路有兩條分支(因為輸入0或1),同時,跳傳到不同的兩個狀態(tài)中去,將兩條相應(yīng)的輸出和實際接收到的輸出比較,量度值大的拋棄(也就是比較結(jié)果相差大的),留下來的就叫做幸存路徑,將幸存路徑加上上一時刻幸存路徑的量度然后保存,這樣64條幸存路徑就增加了一步。在譯碼結(jié)束的時候,從64條幸存路徑中選出一條量度最小的,反推出這條幸存路徑(叫做回溯),得出相應(yīng)的譯碼輸出。
這樣的算法在TI的C54x的dsp上使用100M的速率運行,都無法達到數(shù)傳速度的要求,主要的時間消耗在每條路徑的兩次比較上,兩次比較的時候一共需要從內(nèi)存中取3個數(shù)(上一時刻幸存路徑的量度,兩個狀態(tài)跳轉(zhuǎn)相應(yīng)的輸出值),比較結(jié)束以后,還需要對內(nèi)存寫入2個數(shù)(幸存路徑新的總量度,下一個跳轉(zhuǎn)的狀態(tài)),這樣,每個時鐘節(jié)拍需要比較的次數(shù)就是64*2次,每次存取數(shù)就要5次。一個數(shù)據(jù)包是256byte,知道解碼一包所大概需要的時間。加上其他的開銷,最后實驗出來的結(jié)果是大概0.06m,但是用64k速率傳輸?shù)臅r候只要0.03m即可傳完。
結(jié)語
關(guān)于卷積編碼的介紹就到這了,希望通過本文能讓你對卷積編碼有更深的認識。
評論
查看更多