MATLAB實現卷積碼編譯碼-_第1頁
MATLAB實現卷積碼編譯碼-_第2頁
MATLAB實現卷積碼編譯碼-_第3頁
MATLAB實現卷積碼編譯碼-_第4頁
MATLAB實現卷積碼編譯碼-_第5頁
已閱讀5頁,還剩45頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、麗瘋仁孝本科生畢業論文(設計)題目:MATLAB現卷積碼編譯碼專業代碼:作者姓名:學號:單位:指導教師:年月曰目錄前言11,糾錯碼基本理論21.1 糾錯碼基本理論21.1.1 糾錯碼概念21.1.2 基本原理和性能參數21.2 幾種常用的糾錯碼62 .卷積碼的基本理論82.1 卷積碼介紹82.1.1 卷積碼的差錯控制原理82.2 卷積碼編碼原理102.2.1 卷積碼解析表示法102.2.2 卷積碼圖形表示法112.3 卷積碼譯碼原理152.3.1 卷積碼三種譯碼方式152.3.2 Viterbi譯碼原理163 .卷積碼編譯碼及MATLAB真183.1 MxtlabM述183.1.1 MAtla

2、b的特點193.1.2 MAtlab工具箱和內容193.2 卷積碼編碼及仿真203.2.1 編碼程序203.3 信道傳輸過程仿真213.4 維特比譯碼程序及仿真223.4.1 維特比譯碼算法解析233.4.2 Vterbi譯碼程序253.4.3 VITERBI譯碼MATLA魴真283.4.4 信噪比對卷積碼譯碼性能的影響283.4.5 碼率對卷積碼譯碼性能的影響303.4.6 約束長度對卷積碼誤碼性能的影響313.4.7 回溯長度對卷積碼誤碼性能的影響323.4.8 判決方式對卷積碼誤碼性能的影響324 .結論及展望344.1 結論344.2 展望355 .結束語36參考文獻37致謝38附錄3

3、9摘要在數字通信系統中,通常采用差錯控制編碼來提高系統的可靠性。自P.Elias首次提出卷積碼編碼以來,這一編碼技術至今仍顯示出強大的生命力。目前,卷積碼已廣泛應用在無線通信標準中,如GSMCDMA2000口IS-95等無線通信標準中。本文簡單介紹了糾錯碼的基本原理,論述了卷積碼編譯碼原理和算法,并通過matlab仿真對卷積碼性能進行研究,重點比較分析了不同碼率、不同約束長度、不同回溯長度以及不同譯碼判決方式對Viterbi譯碼性能的影響,并得出相關結論。關鍵詞:卷積碼,Viterbi,Matlab,誤碼率,數字通信系統AbstractIndigitalcommunicationsystems

4、,errorcontrolcodingisusuallyusedtoimprovesystemreliability.SinceP.Eliasputforwardtheconvolutionalcodingthefirsttime,thecodingisstillshowingstrongvitality.,hasbecomewidelyusedinsatellitecommunications,wirelesscommunicationsandmanyothercommunicationsystemsasakindofchannelcodingmethod.suchasGSM,CDMA200

5、0andhasbeenawirelesscommunicationstandardsofIS-95.Thisarticleintroducesthebasicprinciplesoferror-correctingcodes,mainlyreasearchtheprincipleoftheconvolutionalcodeencodinganddecodingandthealgorithms.Throughthematlabsimulation,westudytheperformanceofconvolutionalcode,especillytheperformanceoftheviterb

6、idecodingwithdifferentbitrates,differentConstraintlength,differenttracebackdeptheanddifferentdecisiontypes,compareandmakeconclusions.Keywords:convolutionalcodes,Viterbi,Matlab,biterrorrate,thedigitalcommunicationsystemMATLA歐現卷積碼編譯碼前言信道編碼是數字通信系統的重要組成部分,隨著通信技術的不斷發展,信道編碼技術也在不斷地發展。在通信系統中,信道傳輸特性不理想以及噪聲的存

7、在,會導致接收端出現接收信號的錯誤,因此用于信道糾錯的信道編碼是數字通信系統中極為重要的一個環節。二十世紀40年代香農定理的出現為人們指出了糾錯碼的研究方向。根據香農的有噪信道編碼定理,可以推導出一個碼率為R的編碼通信系統達到無誤碼傳輸狀態所必須的最小信噪比的理論極限。這個理論極限通常稱為香農限,它說明對一個碼率為R的編碼通信系統,只有當SNR®過這個極限值時才能獲得無誤碼傳輸。只要SNR高于這個極限值,香農的編碼定理保證了能夠獲得無誤碼傳輸的(可能相當復雜)編碼通信系統的存在性。另外,香農證明了在采用無限長的隨機編碼時,數據可以以接近信道容量的速率幾乎無誤碼的傳輸,從而為信道編碼的

8、研究奠定了基礎。本文主要介紹了信道編碼的基本理論,著重研究了卷積碼的編碼方法和viterbi譯碼,介紹了MATLAB勺使用方法,并編寫卷積碼的編碼和解碼程序,通過MATLA防真軟件對卷積碼編解碼進行仿真。重點對viterbi譯碼進行了研究,該算法就是利用卷積碼編碼器的格圖來計算路徑度量,選擇從起始時刻到終止時刻的惟一幸存路徑作為最大似然路徑,沿著最大似然路徑回溯到開始時刻,所走過的路徑對應的編碼輸出就是最大似然譯碼輸出序列。它是一種最大似然譯碼方法,當編碼約束長度不大、或者誤碼率要求不是很高的情況下,Viterbi譯碼器設備比較簡單,計算速度快,因而Viterbi譯碼器被廣泛應用于各種領域。1

9、,糾錯碼基本理論1.1 糾錯碼基本理論1.1.1 糾錯碼概念糾錯碼(errorcorrectingcode),在傳輸過程中發生錯誤后能在收端自行發現或糾正的碼。僅用來發現錯誤的碼一般常稱為檢錯碼。為使一種碼具有檢錯或糾錯能力,須對原碼字增加多余的碼元,以擴大碼字之間的差別,即把原碼字按某種規則變成有一定剩余度(見信源編碼)的碼字,并使每個碼字的碼之間有一定的關系。關系的建立稱為編碼。碼字到達收端后,可以根據編碼規則是否滿足以判定有無錯誤。當不能滿足時,按一定規則確定錯誤所在位置并予以糾正。糾錯并恢復原碼字的過程稱為譯碼。檢錯碼與其他手段結合使用,可以糾錯。1.1.2 基本原理和性能參數糾錯碼編

10、碼的基本思想是在被傳輸的信息碼元中附加一些監督碼元,并且使它們之間確定某一種關系,根據傳輸過程中這種關系是否被破壞來發現或糾正錯誤??梢娺@種差錯控制能力是用增加信息量的冗余度來換取的。設編碼后的碼組長度、碼組中所含信息碼元以及監督碼元的個數分別為n、k和r,三者間滿足n=k+r,定義編碼效率為R=k/n=1-r/n??梢姶a組長度一定時,所加入的監督碼元個數越多,編碼效率越低。香農的信道編碼定理指出:對于一個給定的有擾信道,若信道容量為C,只要發送端以低于C的速率R®送信息,其中附編碼器的輸入二進制碼元速率,則一定存在一種編碼方法,使編碼錯誤概率P隨著碼長n的增加,按指數下降到任意小的

11、值??梢员硎緸殄e誤!未找到引用源。(1-1)其中E(R)稱為誤差指數,它與用口C的關系如圖1-1所示。由定理有如下結論:(1) .在碼長及發送信息速率一定的情況下,為減小P可以增大信道容量。由圖2-1可知,E(R)隨信道容量的增加而增大。由式(1-1)可知,錯誤概率隨E(2的增大而指數下降。(2) .在信道容量及發送信息速率一定的條件下,增加碼長,可以使錯誤概率指數下降。對于實際應用來說,此時的設備復雜性和譯碼延時也隨之增加。香農的信道編碼定理為信道編碼奠定了理論基礎,雖然定理本身并沒有給出具體的差錯控制編碼方法和糾錯碼的結構,但它從理論上為信道編碼的發展指出了努力方向。我們用3位二進制碼組來

12、說明檢錯糾錯的基本原理。3位二進制碼元共有8種可能的組合:000、001、010、011、100、101、110、111。如果這8種碼組都可傳遞消息,若在傳輸過程中發生一個誤碼,則一種碼組會錯誤地變成另一種碼組。由于每一種碼組都可能出現,沒有多余的信息量,因此接收端不可能發現錯誤,認為發送的就是另一種碼組。如果選其中000、011、101、110來傳送消息,這相當于只傳遞00、01、10、11四種信息,而第3位是附加的。這位附加的監督碼元與前面兩位碼元一起,保證碼組中“1”碼的個數為偶數。這4種碼組稱為許用碼組。另外4種碼組不滿足這種校驗關系,稱為禁用碼組,它們在編碼后的發送碼元中不會出現。接

13、收時一旦發現有禁用碼組,就表明傳輸過程中發生了錯誤。用這種簡單的校驗關系可以發現1個或3個錯誤,但不能糾正錯誤。因為當接收到的碼組為禁用碼組時,比如為010,無法判斷發送的是哪個碼組。雖然原發送碼組為101的可能性很小(因為3個誤碼的概率一般很?。?,但不能絕對排除,即使傳輸過程中只發生一個誤碼,也有三種可能的發送碼組即000、011和110。假如我們進一步將許用碼組限制為二種即000和111,顯然這樣可以發現所有2位以下的誤碼,若用來糾錯,可以用最大似然準則糾正1位錯誤??梢杂靡粋€三維立方體來表示上述3位二進制碼組的例子,如圖1-2所示。圖中立方體各頂點分別表示8位碼組,3位碼元依次表示x、v

14、、z軸的坐標。圖1-2碼距的幾何解釋這里定義碼組中非零碼元的數目為碼組的重量,簡稱碼重。比如100碼組的碼重為1,101碼組的碼重為2。定義兩個碼組中對應碼位上具有不同二進制碼元的位數為兩碼組的距離,稱為漢明(Hamming)距,簡稱碼距。在前面3位二進制碼組的例子中,當8種碼組均為許用碼組時,兩碼組間的最小距離為1,稱這種編碼的最小碼距為1,一般記為dmin=l;當選4種碼組為許用碼組時,最小碼距dmin=2;當用2種碼組作為許用碼組時,dmin=3。從圖1-2所示的立方體可以看出,碼距就是從一個頂點沿立方體各邊移到另一個頂點所經過的最少邊數。圖中粗線表示000與111之間的一條最短路徑。很

15、容易得出前例中各種情況下的碼距。根據以上分析可知,編碼的最小碼距直接關系到這種碼的檢錯和糾錯能力,所以最小碼距是差錯控制編碼的一個重要參數。對于分組碼一般有以下結論:(1)在一個碼組內檢測e個誤碼,要求最小碼距dmin-e1(1-2)(2)在一個碼組內糾正t個誤碼,要求最小碼距dmin之2t+1錯誤!未找到引用源。(1-3)(3)在一個碼組內糾正t個誤碼,同時檢測e(e錯誤!未找到引用源。t)個誤碼,要求最小碼距dmin-1e1(1-4)這些結論可以用圖1-3所示的幾何圖形簡單的給予證明。圖1-3碼距與檢錯和糾錯能力的關系圖1-3(a)中C表示某碼組,當誤碼不超過e個時,該碼組的位置移動將不超

16、出以它為圓心以e為半徑的圓。只要其它任何許用碼組都不落入此圓內,則C發生e個誤碼時就不可能與其它許用碼組混淆。這意味著其它許用碼組必須位于以圓心,以e+1為半徑的圓上或圓外。因此該碼的最小碼距dmin為e+1o圖1-3(b)中G、G分別表示任意兩個許用碼組,當各自誤碼不超過t個時,發生誤碼后兩碼組的位置移動將各自不超出以C、G為圓心,t為半徑的圓。只要這兩個圓不相交,當誤碼小于t個時,根據它們落在哪個圓內可以正確地判斷為C或G,就是說可以糾正錯誤。以C1、G為圓心的兩圓不相交的最近圓心距離為2t+l,即為糾正t個誤碼的最小碼距。式(1-1)所述情形中糾正t個誤碼同時檢測e個誤碼,是指當誤碼不超

17、過t個時,能自動糾正誤碼,而當誤碼超過t個時,則不可能糾正錯誤但仍可檢測e個誤碼。圖1-3(c)中G、G分別為兩個許用碼組,在最壞情況下G發生e個誤碼而G發生t個誤碼,為了保證此時兩碼組仍不發生混淆,則要求以G為圓心e為半徑的圓必須與以G為圓心t為半徑的圓不發生交疊,即要求最小碼距dmin>=t+e+1??梢奷min體現了碼組的糾、檢錯能力。碼組間最小距離越大,說明碼字問最小差別越大,抗干擾能力就越強。由于編碼系統具有糾錯能力,因此在達到同樣誤碼率要求時,編碼系統會使所要求的輸入信噪比低于非編碼系統,為此引入了編碼增益的概念。其定義為,在給定誤碼率下,非編碼系統與編碼系統之間所需信噪比E

18、b/N0之差(用dB表示)。采用不同的編碼會得到不同的編碼增益,但編碼增益的提高要以增加系統帶寬或復雜度來換取。(2.1.3)糾錯碼實現糾錯碼實現中最復雜的部分是譯碼。它是糾錯碼能否應用的關鍵。根據式(1),采用的碼長n越大,則誤碼率越小。但n越大,編譯碼設備也越復雜,且延遲也越大。人們希望找到的譯碼方法是:誤碼率隨碼長n的增加按指數規律下降;譯碼的復雜程度隨碼長n的增加接近線性地增加;譯碼的計算量則與碼長n基本無關。可惜,已經找到的碼能滿足這樣要求的很少。不過由于大規模集成電路的發展,既使應用比較復雜的但性能良好的碼,成本也并不太高。因此,糾錯碼的應用越來越廣泛。糾錯碼傳輸的都是數字信號。這

19、既可用硬件實現,也可用軟件實現。前者主要用各種數字電路,主要是采用大規模集成電路。軟件實現特別適合計算機通信網等場合。因為這時可以直接利用網中的計算機進行編碼和譯碼,不需要另加專用設備。硬件實現的速度較高,比軟件可快幾個數量級。在傳信率一定的情況下,如果采用糾錯碼提高可靠性,要求信道的傳輸率增加,帶寬加大。因此,糾錯碼主要用于功率受限制而帶寬較大的信道,如衛星、散射等系統中。糾錯碼還用在一些可靠性要求較高,但設備或器件的可靠性較差,而余量較大的場合,如磁帶、磁盤和半導體存儲器等。在分組碼的研究中,譜分析的方法受到人們的重視。糾同步錯誤碼、算術碼、不對稱碼、不等錯誤糾正碼等,也得到較多的研究.1

20、.2幾種常用的糾錯碼(1) RS編碼RS碼即里德-所羅門碼,它是能夠糾正多個錯誤的糾錯碼,RS碼為(204,188,t=8),其中t是可抗長度字節數,對應的188符號,監督段為16字節(開銷字節段)。實際中實施(255,239,t=8)的RS編碼,即在204字節(包括同步字節)前添加51個全“0”字節,產生RS碼后丟棄前面51個空字節,形成截短的(204,188)RS碼。RS的編碼效率是:188/204。(2)卷積碼卷積碼非常適用于糾正隨機錯誤,但是,解碼算法本身的特性卻是:如果在解碼過程中發生錯誤,解碼器可能會導致突發性錯誤。為此在卷積碼的上部采用RS碼塊,RS碼適用于檢測和校正那些由解碼器

21、產生的突發性錯誤。所以卷積碼和RS碼結合在一起可以起到相互補償的作用。卷積碼分為兩種:基本卷積碼:基本卷積碼編碼效率為,4=1/2,編碼效率較低,優點是糾錯能力強。收縮卷積碼:如果傳輸信道質量較好,為提高編碼效率,可以采樣收縮截短卷積碼。有編碼效率為:4=1/2、2/3、3/4、5/6、7/8這幾種編碼效率的收縮卷積碼。編碼效率高,一定帶寬內可傳輸的有效比特率增大,但糾錯能力越減弱。(3)Turbo碼1993年誕生的Turbo碼,單片Turbo碼的編碼/解碼器,運行速率達40Mb/s。該芯片集成了一個32X32交織器,其性能和傳統的RS外碼和卷積內碼的級聯一樣好。所以Turbo碼是一種先進的信

22、道編碼技術,由于其不需要進行兩次編碼,所以其編碼效率比傳統的RS+®積碼要好。(4)交織在實際應用中,比特差錯經常成申發生,這是由于持續時間較長的衰落谷點會影響到幾個連續的比特,而信道編碼僅在檢測和校正單個差錯和不太長的差錯用時才最有效(如RS只能糾正8個字節的錯誤)。為了糾正這些成申發生的比特差錯及一些突發錯誤,可以運用交織技術來分散這些誤差,使長串的比特差錯變成短用差錯,從而可以用前向碼對其糾錯,例如:在DVB-C系統中,RS(204,188)的糾錯能力是8個字節,交織深度為12,那么糾可抗長度為8X12=96個字節的突發錯誤。實現交織和解交織一般使用卷積方式。交織技術對已編碼的

23、信號按一定規則重新排列,解交織后突發性錯誤在時間上被分散,使其類似于獨立發生的隨機錯誤,從而前向糾錯編碼可以有效的進行糾錯,前向糾錯碼加交積的作用可以理解為擴展了前向糾錯的可抗長度字節。糾錯能力強的編碼一般要求的交織深度相對較低。糾錯能力弱的則要求更深的交織深度。一般來說,對數據進行傳輸時,在發端先對數據進行FEC編碼,然后再進行交積處理。在收端次序和發端相反,先做去交積處理完成誤差分散,再FEC解碼實現數據糾錯。交積不會增加信道的數據碼元。(5)偽隨機序列擾碼進行基帶信號傳輸的缺點是其頻譜會因數據出現連“1”和連“0”而包含大的低頻成分,不適應信道的傳輸特性,也不利于從中提取出時鐘信息。解決

24、辦法之一是采用擾碼技術,使信號受到隨機化處理,變為偽隨機序列,又稱為“數據隨機化”和“能量擴散”處理。擾碼不但能改善位定時的恢復質量,還可以使信號頻譜平滑,使幀同步和自適應同步和自適應時域均衡等系統的性能得到改善。擾碼雖然“擾亂”了原有數據的本來規律,但因為是人為的“擾亂”,在接收端很容易去加擾,恢復成原數據流。實現加擾和解碼,需要產生偽隨機二進制序列(PRBS再與輸入數據逐個比特作運算。PRB他稱為m序列,這種m序列與TS的數據碼流進行模2加運算后,數據流中的“1”和“0”的連續游程都很短,且出現的概率基本相同。利用偽隨機序列進行擾碼也是實現數字信號高保密性傳輸的重要手段之一。一般將信源產生

25、的二進制數字信息和一個周期很長的偽隨即序列模2相加,就可將原信息變成不可理解的另一序列。這種信號在信道中傳輸自然具有高度保密性。在接收端將接收信號再加上(模2和)同樣的偽隨機序列,就恢復為原來發送的信息。2 .卷積碼的基本理論2.1 卷積碼介紹卷積碼最早于1955年由Elias提出,稍后,1957年Wozencraft提出了一種有效地譯碼方法即序列譯碼。1963年Massey提出了一種性能稍差但是比較實用的門限譯碼方法,使得卷積碼開始走向實用化。而后1967年Viterbi提出了最大似然譯碼算法,它對存儲級數較小的卷積碼很容易實現,被稱作Viterbi譯碼算法,廣泛的應用于現代通信中。2.1.

26、1 卷積碼的差錯控制原理卷積碼是一種性能優越的信道編碼,它的編碼器和解碼器都比較易于實現,同時還具有較強的糾錯能力,這使得它的使用越來越廣泛。我們在一些資料上可以找到關于分組碼的一些介紹,分組碼的實現是將編碼信息分組單獨進行編碼,因此無論是在編碼還是譯碼的過程中不同碼組之間的碼元無關。卷積碼和分組碼的根本區別在于,它不是把信息序列分組后再進行單獨編碼,而是由連續輸入的信息序列得到連續輸出的已編碼序列。即進行分組編碼時,其本組中的n-k個校驗元僅與本組的k個信息元有關,而與其它各組信息無關;但在卷積碼中,其編碼器將k個信息碼元編為n個碼元時,這n個碼元不僅與當前段的k個信息有關,而且與前面的(N

27、-1)段信息有關(N為編碼的約束長度)。同樣,在卷積碼譯碼過程中,不僅從此時刻收到的碼組中提取譯碼信息,而且還要利用以前或以后各時刻收到的碼組中提取有關信息。而且卷積碼的糾錯能力隨約束長度的增加而增強,差錯率則隨著約束長度增加而呈指數下降。卷積碼(n,k,N)主要用來糾隨機錯誤,它的碼元與前后碼元有一定的約束關系,編碼復雜度可用編碼約束長度N*n來表示。一般地,最小距離d表明了卷積碼在連續N段以內的距離特性,該碼可以在N個連續碼流內糾正(d-1)/2個錯誤。卷積碼的糾錯能力不僅與約束長度有關,還與采用的譯碼方式有關??傊捎趎,k較小,且利用了各組之間的相關性,在同樣的碼率和設備的復雜性條件

28、下,無論理論上還是實踐上都證明:卷積碼的性能至少不比分組碼差。以二元碼為例,輸入信息序列為u=(u0,u1,),其多項式表示為u(x)=u0+u1x+,+ulxl+,。編碼器的連接可用多項式表示為g(1,1)(x)=1+x+x2和g(1,2)(x)=1+x2,稱為碼的子生成多項式。它們的系數矢量g(1,1)=(111)和g(1,2)=(101)稱作碼的子生成元。以子生成多項式為陣元構成的多項式矩陣G(x)=g(1,1)(x),g(1,2)(x),稱為碼的生成多項式矩陣。由生成元構成的半無限矩陣稱為碼的生成矩陣。其中(11,10,11)是由g(1,1)和g(1,2)交叉連接構成。編碼器輸出序列為

29、c=uG稱為碼序列,其多項式表示為c(x),它可看作是兩個子碼序列c(1)(x)和c(2)(x)經過合路開關S合成的,其中c(1)(x)=u(x)g(1,1)(x)和c(2)(x)=u(x)g(1,2)(x),它們分別是信息序列和相應子生成元的卷積,卷積碼由此得名。在一般情況下,輸入信息序列經過一個時分開關被分成k0個子序列,分別以u(x)表示,其中i=1,2,k0,即u(x)=u(x),u(x)。編碼器的結構由k0Xn0階生成多項式矩陣給定。輸出碼序列由n0個子序列組成,即c(x)=c(x),c(x),-c(x),且c(x)=u(x)-G(x)o若m是所有子生成多項式g(x)中最高次式的次數

30、,稱這種碼為(n0,k0,N)卷積碼。卷積碼中編碼后的n個碼元不僅與當前段的k個信息有關,而且也與前面(N-1)段的信息有關,編碼過程中相互關聯的碼元為nN個。因此,這N時間內的碼元數目nN通常被稱為這種碼的約束長度。卷積碼的糾錯能力隨著N的增加而增大,在編碼器復雜程度相同的情況下,卷段積碼的性能優于分組碼。卷積碼也是分組的,但它的監督元不僅與本組的信息元有關,而且還與前若干組的信息元有關。卷積碼根據需要,有不同的結構及相應的糾錯能力,但都有類似的編碼規律。值得指出的是一種(2,1,N)卷積碼,其碼率為1/2,它的監督位只有1位,編碼效率較高,也比較簡單。如使用較長的約束長度,則既可以糾正突發

31、差錯,也可以糾正隨機差錯。2.2 卷積碼編碼原理卷積碼一般表示為(n,k,N)的形式,即將k個信息比特編碼為n個比特的碼組,N為編碼約束長度,說明編碼過程中相互約束的碼段個數。卷積碼編碼后的n個碼元不僅與當前組的k個信息比特有關,還與前N-1個輸入組的信息比特有關。編碼過程中相互關聯的碼元有N*n個。R=k/n是編碼效率。編碼效率和約束長度是衡量卷積碼的兩個重要參數。典型的卷積碼一般選n,k較小,但N值可取較大(>10),以獲得簡單而高性能的卷積碼。卷積碼的編碼描述方式有很多種:沖激響應描述法、生成矩陣描述法、多項式乘積描述法、狀態圖描述,樹圖描述,網格圖描述等。2.2.1 卷積碼解析表

32、示法卷積碼的解析表示發大致可以分為離散卷積法,生成矩陣法,碼多項式法。下面以離散卷積為例進行說明。卷積碼的編碼器一般比較簡單,為一個具有k個輸入端,n個輸出端,m級移位寄存器的有限狀態有記憶系統。下圖所示為(2,1,7)卷積碼的編碼器。BEond口呻ul圖2-1(2,1,7)卷積碼編碼器若輸入序列為u=(u0u1u2u3,),則對應兩個碼字序列C1=(ca0ca1ca2ca3,)和C2=(cb0cb1cb2cb3,)相應的編碼方程可寫為P1=u?C1,P2=u?C2,P=(P1,P2)?!埃俊狈柋硎揪矸e運算,P1,P2表示編碼器的兩個沖激響應,即編碼器的輸出可以由輸入序列和編碼器的兩個沖擊響

33、應卷積而得到,故稱為卷積碼。這里的沖激響應指:當輸入為10000,序歹I時,所觀察到的兩個輸出序列值。由于上圖N值為7,故沖激響應至多可持續到第7位,可寫為P1=1111001,P2=1011011然后將兩個輸出端的碼字序列合并為一個碼字序列為C=(ca0cb0ca1cb1ca2cb2,)。若輸入信息序列為1101;貝UP1=1001010101,P2=1111101111,C=11010111011001110111。如圖3-2所示為(2,1,3)卷積碼的編碼器,也是本次課程設計所研究的卷積碼編碼器,由于其生成沖激響應分別為111和101,故被稱為(7,5)碼。圖2-2(2,1,3)卷積碼編

34、碼器2.2.2 卷積碼圖形表示法除了用解析法描述卷積碼的編碼外,還可以使用比較形象的圖形法來表示卷積碼。比較常用的有狀態圖法,樹圖法和網格圖法狀態圖法:由于卷積碼編碼器在下一時刻的輸出取決于編碼器的當前狀態和下一時刻的輸入,而編碼器當前狀態取決于編碼器當前各移位寄存器的存儲內容。稱編碼器當前各移位寄存器存儲內容(0或1)為編碼器在該時刻的狀態(此狀態代表記憶以前的輸入信息)。隨著信息序列的不斷輸入,編碼器不斷從一個狀態轉移到另外一個狀態,并且輸出相應的編碼序列。編碼器的總可能狀態數為2mk個。對(7,5)碼的編碼器來說,n=2,k=1,N=3,m=2共有四個可能狀態,其狀態圖如圖2-3所示:0

35、/00圖2-3卷積碼狀態圖圖中四個方塊表示狀態,狀態間的連線與箭頭表示轉移方向,連線上的數字表示是狀態發生轉移的到來比特,斜杠后的數字由一個狀態到另一個狀態轉移時的輸出碼字。如當前狀態為11,輸入信息為0,則轉移到01狀態并輸出01碼字,若輸入信息為1,則依然為11狀態,并輸出10碼字。樹圖法描述卷積碼的編碼過程除了用它的生成矩陣錯誤!未找到引用源。外,還可以用半無限碼樹圖。卷積碼的樹圖表示是一種形象的表示卷積碼編碼過程的方法。卷積碼的各種距離度量與樹圖有密切關系。以(2,1,3)卷積碼為例,它的生成多項式矩陣和生成矩陣分別為:(2-1)G(D)=I+D+D2,1+D2*昔誤!未找到引用源11

36、1011-g0gig2-ii1011gog1g2G111011=gog1g2(2-2)若輸入編碼器的信息序列M(D)=(m0,m1,m2.)=(11011,.),則由編碼器輸出碼序列C為C=IM,=(11,01,01,00,01,01,)=(C0,Cl,C2,C3,)(2-3)可以把這個編碼過程用如圖3-4所示的半無限碼樹圖來說明。設編碼器的初始狀態為0,碼樹中每個節點的下一級白上面的分支表示輸入為0,下面的分支表示輸入為l。每個分支上面的數字表示對應次分支的輸出。因此輸入不同的信息序列,編碼器就走不同的路徑,輸出不同的碼序列。按照上面的例子,則編碼過程對應碼樹中粗線表示的一條路徑。對該碼序列

37、來說,樹圖上的這條路徑就是它的正確路徑。對于一般的二進制(n,k,N)編碼器來說,每次輸入的是k個信息元,有2k個可能的信息組,這對應于從碼樹每一個節點上分出的分支樹有2k條,相應于2k錯誤!未找到引用源。個不同信息組的輸入,并且每條都有n個碼元,作為與此相應的輸出子碼。由以上討論可知,卷積碼編碼過程的實質,是在輸入信息序列的控制下,編碼器沿碼樹通過某一特定路徑的過程。顯然,譯碼過程就是根據接收序列和信道干擾的統計特性,譯碼器在原碼樹上力圖恢復原來編碼器所走的路徑,即尋找正確路徑的過程。其過程如圖2-4所示。S000So1100S011S100S0S2->S210a11AS2104S2S

38、31"S30011S011101S21101S3圖2-4(2,1,3)卷積碼的樹圖10網格圖法:網格圖可以描述卷積碼的狀態隨時間推移而轉移的情況。該圖縱坐標表示所有狀態,橫坐標表示時間。網格圖在卷積碼的概率譯碼,特別是Viterbi譯碼中非常重要,它綜合了狀態圖法直觀簡單和樹圖法時序關系清晰的特點。如圖2-5所示狀態00100111t1t2一2一1.1.1102020譯碼器網格圖圖2-500t5t611t3t4,112121011圖中實線表示輸入0時所走分支,虛線表示輸入1時所走分支,編碼時只需從起始狀態開始依次選擇路線并讀出輸出即可。假設從a狀態開始,輸入為1011,則可由圖中讀出

39、輸出為11101001。2.3 卷積碼譯碼原理2.3.1 卷積碼三種譯碼方式(1)代數譯碼代數譯碼是將卷積碼的一個編碼約束長度的碼段看作是n0(m+1),k0(m+1)線性分組碼,每次根據(m+1)分支長接收數字,對相應的最早的那個分支上的信息數字進行估計,然后向前推進一個分支。如果假設輸入的信息序列為=(10111),相應的編碼輸出序列為c=(11100001100111)。在未超出編碼約束長度的情況下,可以通過譯碼時將接受序列與所有可能的輸出編碼序列進行比較,通過比較可以得到最小距離,進而可以得到可能的最大概率。按同樣方法判決,將每一位進行比較,進行糾錯。若此時接收序列R=(1010000

40、1110111),先根據R的前三個分支(101000)和碼樹中前三個分支長的所有可能的8條路徑(000000,)、(000011,)、(001110,)、(001101,)、(111011,)、(111000,)、(110101,)和(110110,)進行比較,可知(111001)與接收序列(101000)的距離最小,于是判定第0分支的信息數字為0。然后以R的第13分支數字(100001)按同樣方法判決,依此類才t下去,最后得到信息序列的估值為=(10111),遂實現了糾錯。這種譯碼法,譯碼時采用的接收數字長度或譯碼約束長度為(m+1)n0,所以只能糾正不多于(dmin-1)/2個錯誤(n長上

41、的)。實用中多采用反饋擇多邏輯譯碼法實現。(2)維特比譯碼維特比譯碼是根據接收序列在碼的格圖上找出一條與接收序列距離(或其他量度)為最小的一種算法。它和運籌學中求最短路徑的算法相類似。若接收序列為R=(10100101100111),譯碼器從某個狀態,例如從狀態Q出發,每次向右延伸一個分支(對于l<L,從每個節點出發都有2種可能的延伸,其中L是信息序列段數,對lL,只有一種可能),并與接收數字相應分支進行比較,計算它們之間的距離,然后將計算所得距離加到被延伸路徑的累積距離值中。對到達每個狀態的各條路徑(有2條)的距離累積值進行比較,保留距離值最小的一條路徑,稱為幸存路徑(當有兩條以上取最

42、小值時,可任取其中之一),譯碼過程如圖。圖中標出到達各級節點的幸存路徑的距離累積值。對給定R的估值序列為=(10111)。這種算法所保留的路徑與接收序列之間的似然概率為最大,所以又稱為最大似然譯碼。這種譯碼的譯碼約束長度常為編碼約束長度的數倍,因而可以糾正不多于(df/2)個錯誤。維特比譯碼器的復雜性隨m呈指數增大。實用中m不大于10。它在衛星和深空通信中有廣泛的應用。在解決碼問審擾和數據壓縮中也可應用。(3)序貫譯碼序貫譯碼是根據接收序列和編碼規則,在整個碼樹中搜索(既可以前進,也可以后退)出一條與接收序列距離(或其他量度)最小的一種算法。由于它的譯碼器的復雜性隨m值增大而線性增長,在實用中

43、可以選用較大的m值(如2040)以保證更高的可靠性。許多深空和海事通信系統都采用序貫譯碼。2.3.2 Viterbi譯碼原理卷積碼概率譯碼的基本思路是:以接收碼流為基礎,逐個計算它與其他所有可能出現的、連續的網格圖路徑的距離,選出其中可能性最大的一條作為譯碼估值輸出。概率最大在大多數場合可解釋為距離最小,這種最小距離譯碼體現的正是最大似然的準則。卷積碼的最大似然譯碼與分組碼的最大似然譯碼在原理上是一樣的,但實現方法上略有不同。主要區別在于:分組碼是孤立地求解單個碼組的相似度,而卷積碼是求碼字序列之間的相似度?;诰W格圖搜索的譯碼是實現最大似然判決的重要方法和途徑。用格圖描述時,由于路徑的匯聚消

44、除了樹狀圖中的多余度,譯碼過程中只需考慮整個路徑集合中那些使似然函數最大的路徑。如果在某一點上發現某條路徑已不可能獲得最大對數似然函數,就放棄這條路徑,然后在剩下的“幸存”路徑中重新選擇路徑。這樣一直進行到最后第L級(L為發送序列的長度)。由于這種方法較早地丟棄了那些不可能的路徑,從而減輕了譯碼的工作量,Viterbi譯碼正是基于這種想法。對于(n,k,N)卷積碼,其網格圖中共2kL種狀態。由網格圖的前N-1條連續支路構成的路徑互不相交,即最初2k_1條路徑各不相同,當接收到第N條支路時,每條路徑都有2條支路延伸到第N級上,而第N級上的每兩條支路又都匯聚在一個節點上。在Viterbi譯碼算法中

45、,把匯聚在每個節點上的兩條路徑的對數似然函數累加值進行比較,然后把具有較大對數似然函數累加值的路徑保存下來,而丟棄另一條路徑,經挑選后第N級只留下2N條幸存路徑。選出的路徑同它們的對數似然函數的累加值將一起被存儲起來。由于每個節點引出兩條支路,因此以后各級中路徑的延伸都增大一倍,但比較它們的似然函數累加值后,丟棄一半,結果留存下來的路徑總數保持常數。由此可見,上述譯碼過程中的基本操作是,“加-比-選”,即每級求出對數似然函數的累加值,然后兩兩比較后作出選擇。有時會出現兩條路徑的對數似然函數累加值相等的情形,在這種情況下可以任意選擇其中一條作為“幸存”路徑。卷積碼的編碼器從全零狀態出發,最后又回

46、到全零狀態時所輸出的碼序列,稱為結尾卷積碼。因此,當序列發送完畢后,要在網格圖的終結處加上(N-1)個己知的信息作為結束信息。在結束信息到來時,由于每一狀態中只有與已知發送信息相符的那條支路被延伸,因而在每級比較后,幸存路徑減少一半。因此,在接收到(N-1)個己知信息后,在整個網格圖中就只有唯一的一條幸存路徑保留下來,這就是譯碼所得的路徑。也就是說,在己知接收到的序列的情況下,這條譯碼路徑和發送序列是最相似的。2.3.3 維特比譯碼算法性能對于(n,k,N)卷積碼,其編碼存儲度(移位寄存器單元的數量)為N,幸存路徑有2N條。每條幸存路徑(或信息序列)存儲器單元數是n*D,其中,n是卷積碼碼組寬

47、度,D是需要存儲的碼組的個數。D的取值一般考慮取m的整倍數,稱D為幸存路徑長度。編碼存儲度和幸存路徑長度的取值問題關系到芯片規格、傳輸時延等問題。若D很大,則譯碼器的存儲量太大而難以實用。一般情況下,當譯碼進行到第5級(每級包括m個時刻)以后,每個狀態幸存路徑的前幾個分支已基本重合在一起,這就是說每個路徑存儲器不必存儲D個很大的碼序列。譯碼時,當譯碼器接收并處理完第D個碼組后,譯碼器中的幸存路徑存儲器已全部存滿,當譯碼器開始處理第D+1個碼組時,他就對幸存路徑存儲器中的最頂端的碼組做出判決并輸出。(1)適當增加幸存路徑的長度可以提高譯碼器的糾錯能力。(2)幸存路徑的長度在增加到一定值時,譯碼器

48、糾錯能力趨于穩定。當N值增加到6以上,誤比特率降低幅度大為減小,曲線有合二為一的趨勢。因此,可以認為幸存路徑長度D取編碼存儲度的6倍以上就可以取得比較好的譯碼性能。(3)選擇合適的延時。路徑量度(似然度)的累加選取和碼字延時判決輸出提高了譯碼的準確性,D越大越有利于判決的正確性,但是這又和通信的實時性背道而馳,一般D為卷積碼約束長度N的510倍即可,本文算法D取50。(4)留存路徑的更新的描述。每個狀態的留存路徑選擇實際上是從當前時刻往前推的,例如,在時刻t,又假設到達狀態s2的路徑有兩個,分別為s4和s5,對應的輸出碼字分別是00和11,我們分別計算出兩條路經的分支量度BM并累加它們對應的前

49、狀態路徑量度PM_l,發現累加后s5-s2的PM值比s4-s2的大,所以彳留s5所對應的留存路徑,并更新狀態s2所對應的留存路徑存儲器。對每一狀態都做如此比較,保存大的分支量度BM然后再累加前一X態路徑量度PM_l,最后完成所有狀態的選擇,比較當前所有狀態的路經量度PM選擇最大路徑,如果延時超過D就判決輸出碼字。顯然此處判決的碼字要延時D時刻才能移位輸出。3 .卷積碼編譯碼及MATLA昉真在本次課題研究中,我們對整個通信過程進行了仿真,其過程如圖3-1:序列/-U.信道42'KEL.BPSK廣生調制圖3-1卷積碼編譯碼流程圖3.1 Matlab概述計算機對科學技術的幾乎一切領域產成了極

50、其深遠的影響。熟練掌握并利用計算機進行科學計算研究及工程應用已是廣大科研設計人員所必備的基本技能之一。從事科學研究和工程應用時候所遇到的最大的困擾大抵是我們在計算涉及矩陣運算或畫圖時,采用Fortran、C及C+將計算機語言進行程序設計是一項十分麻煩的工作,不僅需要對所利用的有關算法有深刻的了解,還需要掌握所用語言的語法及編程技巧。Matlab軟件由美國MathWorks公司于1984年推出,歷經十幾年的發展和競爭,現已成為通用科技計算和圖視交互系統的程序語言,是(IEEE)國際公認的最優秀的科技應用軟件之一。它的指令表達與數學、工程中常用的習慣形式十分相似,從而使許多用C或Fortran實現

51、起來十分復雜和費時的問題用Matlab就可以輕松地解決。Matlab的典型應用包括:數學計算、算法研究、數據分析和計算結果可視化、建模與仿真等。3.1.1 Matlab的特點Matlab作為一種數值計算和與圖形處理工具軟件,具特點是語法結構簡明、數值計算高效、圖形處理完備、易學易用,它在矩陣代數數值計算、數字信號處理、震動理論、神經網絡控制、動態仿真等領域都有廣泛的應用。與C、C+卡Fortran等高級語言相比,Matlab不但在數學語言的表達與解釋方面表現出人機交互的高度一致,而且具有優秀高技術計算環境所不可缺少的如下特征:(1)高質量、高可靠的數值計算能力;(2)基于向量、數組和矩陣的高維

52、設計語言;(3)高級圖形和可視化數據處理的能力;(4)廣泛解決各學科各專業領域內復雜問題的能力;(5)擁有一個強大的非線性系統仿真工具箱Simulink;(6)支持科學和工程計算標準的開放式、可交互結構;(7)跨平臺兼容。3.1.2Matlab工具箱和內容目前Matlab已經成為國際上最流行的軟件之一,它除了傳統的交互式編程外,還提供了豐富可靠的矩陣運算。圖形繪制、數據處理、圖象處理、方便的Windows編程等便利工具。出現了各種以Matlab為基礎的使用工具箱,廣泛的應用于自動控制、圖像信號處理、生物醫學工程、語言處理、雷達工程、信號分析、震動理論、時序分析與建模、化學統計學、優化設計等領域

53、,并表現出一般高級語言難以比擬的優勢。較為常見的工具箱主要包括:控制系統工具箱(Controlsystemstoolbox)、系統識別工具箱(Systemsidentificationtoolbox)、多變量頻率設計工具箱(Multivariablefrequencydesigntoolbox)、魯棒控制工具箱(Robustcontroltoolbox)、分析與綜合工具箱(analysisandsynthesistoolbox)、神經網絡工具箱(Neuralnetworktoolbox)、最優化工具箱(Optimizationtoolbox)、信號處理工具箱(Signalprocessingt

54、oolbox)、模糊推理數據工具箱(Fuzzyinferencesystemtoolbox)、小波分析工具箱(Wavelettoolbox)、通信工具箱(Communicationstoolbox)。3.2 卷積碼編碼及仿真在程序設計中,我們沒有采用MATLABI帶的編碼函數而是采用了自己的編碼函數codec對(2,1,3)卷積碼編碼,其參數m為輸入信息序列,g1,g2為兩個輸出端口的沖激響應序列。3.2.1 編碼程序functioncod=codec(m,g1,g2)%g1,g2為兩輸出端口的沖激響應序列。m1=conv(m,g1);%端口一輸出m2=conv(m,g2);%端口二輸出l=l

55、ength(m1);fori=1:l;cod(2*i-1)=rem(m1(i),2);%將端口一編碼輸出賦給cod奇數位置cod(2*i)=rem(m2(i),2);%將端口二編碼輸出賦給cod偶數位置end試運行編碼:clearallg1=111;g2=101;msg=1101;cod=codec(msg,g1,g2)輸出為:cod=110101001011仿真結果如下圖3-2。020040060080010001200圖3-2(2,1,3)卷積碼編碼3.3 信道傳輸過程仿真為了方便起見,我們采用了二相相移鍵控(BPSK,也就是用二進制基帶信號(0、1)對載波進行二相調制。BPSK1最簡單的

56、PSKU式,相移大小為180°,又可稱為2-PSK。當基帶信號為1時對應相位為冗,而當基帶信號為0時,對應的相位為-冗。根據這個理論,我們對BPSK勺調制過程作了模擬仿真,用一個簡短的程序對BPSK勺全過程進行了觀察。程序代碼如下:functionbpsk_output=bpsk_1(g);g=110101001011;%卷積碼編碼輸出信號cp=;bit=;forn=1:length(g);ifg(n)=0;die=-ones(1,100);%使得信號在坐標為0到100皆為-1,生成圖線se=zeros(1,100);elseg(n)=1;die=ones(1,100);se=one

57、s(1,100);endcp=cpdie;bit=bitse;endsnr_db=35;%可以調整變化的信噪比同時考慮信道中可能存在的噪聲noise=randn(1,length(bpsk);%隨機噪聲sigma=sqrt(5)*10A(-(snr_db)/20);recv=bpsk+3*sigma*noise;%產生的噪聲疊加在bpsk上仿真結果如圖3-3所示。在matlab運行時,我們對信道高斯白噪聲進行模擬,通過調節信噪比,我們可以清晰地觀察到噪聲對BPS明制的影響,信噪比越大,傳輸的信號所受干擾越小,傳輸越準確。圖3-3模擬信道傳輸3.4維特比譯碼程序及仿真信號通過bpsk調制后在信道中傳輸,到達接收端時,先要進行解調,判決代碼為forj=1:length(recv);ifrecv(j)&g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論