卷積碼編碼器及viterbi譯碼器的設(shè)計-畢業(yè)論文_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  畢業(yè)論文(設(shè)計)</b></p><p>  題目:卷積碼編碼器及Viterbi譯碼器的設(shè)計</p><p>  學(xué)生姓名: 琳 </p><p>  學(xué) 號: </p><p>  所在系別:

2、 電氣信息工程學(xué)院 </p><p>  專業(yè)名稱: 通信工程 </p><p>  屆 次: </p><p>  指導(dǎo)教師: </p><p><b>  目 錄<

3、/b></p><p><b>  前言2</b></p><p><b>  1 卷積碼3</b></p><p>  1.1卷積碼基本概念3</p><p>  1.2 卷積碼的編碼4</p><p>  1.3 卷積碼的譯碼4</p>&l

4、t;p>  1.4 卷積碼的 Viterbi 譯碼5</p><p>  2.卷積碼編碼器及Viterbi譯碼器的設(shè)計系統(tǒng)方案制定8</p><p>  2.1 方案提出8</p><p>  2.2 方案論證8</p><p><b>  2.3方案選擇9</b></p><p>

5、;  2.4硬件實現(xiàn)10</p><p>  3.卷積碼編碼器及Viterbi譯碼器的設(shè)計系統(tǒng)的仿真和調(diào)試10</p><p>  3.1仿真軟件介紹10</p><p>  3.2 系統(tǒng)仿真實現(xiàn)10</p><p>  3.3 卷積碼實現(xiàn)12</p><p>  3.4 數(shù)據(jù)分析14</p>

6、<p>  4 SIMULINK下仿真設(shè)計15</p><p>  4.1卷積碼的仿真15</p><p>  4.2 SIMULINK模塊仿真參數(shù)設(shè)置及意義16</p><p><b>  5總結(jié)20</b></p><p>  5.1 設(shè)計小結(jié)20</p><p>  5

7、.2收獲體會20</p><p><b>  5.3 展望21</b></p><p><b>  6參考文獻:21</b></p><p>  卷積碼編碼器及Viterbi譯碼器的設(shè)計</p><p>  學(xué)生:陳琳(指導(dǎo)老師:王千春)</p><p>  (淮南師范

8、學(xué)院電氣信息工程學(xué)院)</p><p>  摘要:本畢業(yè)設(shè)計主要解決對一個卷積碼序列進行維特比(Viterbi)譯碼輸出,并通過Matlab軟件進行設(shè)計與仿真,并進行誤碼率分析。在畢業(yè)設(shè)計中,系統(tǒng)開發(fā)平臺為Windows Vista Ultimate,程序設(shè)計與仿真均采用Matlab R2007a(7.4),最后仿真詳單與理論分析一致。</p><p>  關(guān)鍵詞:畢業(yè)論文;卷積碼譯碼器;

9、Matlab;設(shè)計與仿真</p><p>  Design of the Viterbi Convolutional Code Encoder and Decoder</p><p>  Student: Chen Lin(Instructor:WANG qian chun)</p><p> ?。‥lectrical and information enginee

10、ring college of communication engineering)</p><p>  Abstract :This course design mainly resolves to a convolutional code sequence for Viterbi Viterbi decoding output, and through the Matlab software to carry

11、 on the design and simulation, and analysis of bit error rate. In curriculum design, system development platform for Windows Vista Ultimate, program design and simulation using Matlab R2007a (7.4), and finally the simula

12、tion list is consistent with theoretical analysis.</p><p>  Key words :graduation thesis; Convolutional code decoder; Matlab; Design and simulation</p><p><b>  前 言</b></p>&l

13、t;p>  本畢業(yè)設(shè)計主要解決對一個卷積碼序列進行維特比(Viterbi)譯碼輸出,并通過Matlab軟件進行設(shè)計與仿真。卷積碼的譯碼有兩種方法——軟判決和硬判決,此畢業(yè)設(shè)計采用硬判決的維特比譯碼。</p><p>  隨著現(xiàn)代通信的發(fā)展,高速信息傳輸和高可靠性傳輸成為信息傳輸?shù)膬蓚€主要方面,而可靠性尤其重要。卷積碼以其高速性和可靠性在實際應(yīng)用中越來越廣泛。1967年Viterbi譯碼算法的提出,使卷積碼成

14、為信道編碼中最重要的編碼方式之一[1]。</p><p>  在對卷積碼的研究中,其中編碼器較簡單,模式也很統(tǒng)一。主要是研究提高卷積碼的譯碼速度和可靠度。譯碼算法中最重要的卷積碼的Viterbi算法問世以來,軟件仿真和實現(xiàn)都得到了迅速發(fā)展。目前,利用計算機仿真Viterbi算法,模擬在各種不同情況下(使用不同碼率、不同約束度等)卷積編碼時的譯碼性能,尋找Viterbi算法的最佳適用信道和不同要求(如誤碼率)下最優(yōu)

15、編碼。在卷積碼中,因為Viterbi算法效率高,速度快,結(jié)構(gòu)相對簡單等特點,被廣泛應(yīng)用于各種數(shù)據(jù)傳輸系統(tǒng)。特別是深空通信、衛(wèi)星通信系統(tǒng)中。在現(xiàn)代信息處理系統(tǒng)中,需要處理的信息量越來越大,實時性要求越來越高。為減少對主處理器各種資源的占用,要求通信模塊方面的大部分工作能獨立完成。因此采用Viterbi譯碼算法具有非?,F(xiàn)實的意義[2]。</p><p>  由于卷積碼的優(yōu)良特性,被廣泛的應(yīng)用于深邃通信,衛(wèi)星通信和2G

16、及3G移動通信中,卷積碼有三種譯碼方法:門限譯碼,概率譯碼和Viterbi算法,其中Viterbi算法是一種基于網(wǎng)格圖的最大似然譯碼算法,是卷積碼的最佳譯碼方式,具有效率高、速度快等優(yōu)點。Viterbi譯碼充分發(fā)揮了卷積碼的特點,使譯碼錯誤概率達到最小,在碼的約束度教小時,它有譯碼算法效率高,速度快,譯碼也簡單的特點[3]。</p><p>  這次畢業(yè)設(shè)計研究卷積碼的編碼方法和解碼方式。編寫卷積碼的編碼和解碼程

17、序。掌握卷積碼編碼及Viterbi譯碼的基本原理。分析卷積碼編碼及Viterbi譯碼的關(guān)鍵技術(shù)。對卷積碼編碼器及Viterbi譯碼器進行設(shè)計。用卷積碼編碼器及Viterbi譯碼器進行仿真,并進行性能分析。理解卷積碼的編碼和解碼原理和過程,會通過編碼和解碼程序?qū)σ恍┚矸e碼進行仿真。對卷積碼編碼器及Viterbi譯碼器進行仿真驗證,并分析性能。盡可能對系統(tǒng)進行優(yōu)化。能運用MATLAB軟件進行仿真[4]。</p><p&g

18、t;<b>  1 卷積碼</b></p><p>  1.1 卷積碼基本概念 </p><p>  卷積碼是一種性能優(yōu)越的信道編碼。(n ,k ,N) 表示把 k 個信息比特編成 n 個比特,N 為編碼約束長度,說明編碼過程中互相約束的碼段個數(shù)。卷積碼編碼后的 n 個碼元不僅與當前組的 k 個信息比特有關(guān),而且與前 N - 1 個輸入組的信息比特有關(guān)。編碼過程中相互

19、關(guān)聯(lián)的碼元有 N ×n 個。R = k/ n 是卷積碼 的碼率,碼率和約束長度是衡量卷積碼的兩個重要參數(shù)。 卷積碼的編碼描述方式有很多種:沖激響應(yīng)描述法、生成矩陣描述法、多項式乘積描述法、狀態(tài)圖描述,樹圖描述,網(wǎng)格圖描述等。卷積碼的糾錯能力隨著 N 的增加而增大,而差錯率隨著 N 的增加而指數(shù)下降。在編碼器復(fù)雜性相同的情況下,卷積碼的性能優(yōu)于分組碼。分組碼的譯碼算法可以由其代數(shù)特性得到。卷積碼雖然可以采用適用于分組碼的門限譯碼

20、(即大數(shù)邏輯譯碼),但性能不如維特比譯碼和序列譯碼[5]。</p><p>  1.2 卷積碼的編碼</p><p>  圖1 一種卷積碼編碼器方框圖</p><p>  圖 1卷積碼的編碼器一般都比較簡單。下圖1是一般情況下的卷積碼編碼器框圖。它包括:一個由 N 段組成的輸入移位寄存器,每段有 k 級,共 Nk 位寄存器; 一組 n 個模 2 和相加器;一個由 n

21、 級組成的輸出移位寄存器。對應(yīng)于每段 k 個比特的輸入序列,輸出 n 個比特。由圖可知,n 個輸出比特不但與當前 k 個比特的輸入比特有關(guān),而且與以前的(N-1)k 個輸入信息有關(guān)。整個編碼過程可以看成是輸入信息序列與由移位寄存器和模 2 加法器的連接方式所決定的另一個序列的卷積,卷積碼由此得名。</p><p>  1.3 卷積碼的譯碼 </p><p>  卷積碼的譯碼方式有三種:(1

22、)1963 年由梅西((Massey)提出的門限譯碼,這 是一種基于碼代數(shù)結(jié)構(gòu)的代數(shù)譯碼,類似于分組碼中的大數(shù)邏輯譯碼;(2) 1963 年由費諾(Fano)改進的序列譯碼, 這是基于碼的樹狀圖結(jié)構(gòu)上的一種準最佳的概 率譯碼;(3) 1967 年由維特比提出的 Viterbi 算法。這是基于碼的網(wǎng)(trellis) 圖基礎(chǔ)上的一種最大似然譯碼算法,是一種最佳的概率譯碼方法。其中,代數(shù)譯 碼,利用編碼本身的代數(shù)結(jié)構(gòu)進行譯碼,不考慮信道本身

23、的統(tǒng)計特性。該方法的硬件實現(xiàn)簡單,但性能較差,其中具有典型意義的是門限譯碼。另一類是概率譯碼,這種譯碼通常建立在最大似然準則的基礎(chǔ)上。由于計算是用到了信道的統(tǒng)計特性.因而提高了譯碼性能,但這種性能的提高是以增加硬件的復(fù)雜度為代價的。常用的概率譯碼方法有維特比譯碼和序列譯碼。維特比譯碼具有最佳性能,但硬件實現(xiàn)復(fù)雜;門限譯碼性能最差,但硬件簡單;序列譯碼在性能和硬件方面介于維特比譯碼和門限譯碼之間[6]。</p><p&

24、gt;  1.4 卷積碼的 Viterbi 譯碼 </p><p>  卷積碼概率譯碼的基本思路是:以接收碼流為基礎(chǔ),逐個計算它與其他所有可能出現(xiàn)的、連續(xù)的網(wǎng)格圖路徑的距離,選出其中可能性最大的一條作為譯碼估值輸出。概率最大在大多數(shù)場合可解釋為距離最小,這種最小距離譯碼體現(xiàn)的正是最大似然的準則。 卷積碼的最大似然譯碼與分組碼的最大似然譯碼在原理上是一樣的,但實現(xiàn)方法上略有不同。主要區(qū)別在于:分組碼是孤立地求解單個

25、碼組的相似度,而卷積碼是求碼字序列之間的相似度?;诰W(wǎng)格圖搜索的譯碼是實現(xiàn)最大似然判決的重要方法和途徑。用格圖描述時,由于路徑的匯聚消除了樹狀圖中的多余度,譯碼過程中只需考慮整個路徑集合中那些使似然函數(shù)最大的路徑。如果在某一點上發(fā)現(xiàn)某條路徑已不可能獲得最大對數(shù)似然函數(shù),就放棄這條路徑,然后在剩下的“幸存”路徑中重新選擇路徑。這樣一直進行到最后第L級(L為發(fā)送序列的長度)。由于這種方法較早地丟棄了那些不可能的路徑[7]。</p>

26、;<p>  1.4.1 維特比譯碼原理</p><p>  采用概率譯碼的基本思想是:把已接收序列與所有可能的發(fā)送序列做比較,選擇其中碼距最小的一個序列作為發(fā)送序列。如果發(fā)送L組信息比特,那么對于(n,k)卷積碼來說,可能發(fā)送的序列有2kL個,計算機或譯碼器需存儲這些序列并進行比較,以找到碼距最小的那個序列。當傳信率和信息組數(shù)L較大時,使得譯碼器難以實現(xiàn)。維特比算法則對上述概率譯碼做了簡化,以至成

27、為了一種實用化的概率算法。它并不是在網(wǎng)格圖上一次比較所有可能的2kL條路徑(序列),而是接收一段,計算和比較一段,選擇一段最大似然可能的碼段,從而達到整個碼序列是一個最大似然值得序列[8]。</p><p>  下面以圖2(a)的(2,1,3)卷積碼編碼器所編出的碼為例,來說明維特比解碼的方法和運作過程。為了能說明解碼過程,這里給出該碼的狀態(tài)圖,如圖2(b)所</p><p>  圖2(a

28、) (2,1,3)卷積碼編碼器 圖2(b) (2,1,3)卷積碼狀圖</p><p>  示。維特比譯碼需要利用圖來說明移碼過程。根據(jù)卷積碼畫網(wǎng)格的方法,我們可以畫出該碼的網(wǎng)格圖,如圖3所示。該圖設(shè)輸入信息數(shù)目L=5,所以畫L+N=8個時間單位,圖中分別標以0至7。這里設(shè)編碼器從a狀態(tài)開始運作。該網(wǎng)格圖的每一條路徑都對應(yīng)著不同的輸入信息序列。由于所有可能輸入信息序列共有2kL個,因而網(wǎng)

29、格圖中所有可能的路徑也為2kL條。這里節(jié)點a=00,b=01,c=10,d=11。</p><p>  圖3 (2,1,3)卷積碼網(wǎng)格圖</p><p>  設(shè)輸入編碼器的信息序列為(11011000),則由編碼器對應(yīng)輸出的序列為Y=(1101010001011100),編碼器的狀態(tài)轉(zhuǎn)移路線為abdcbdca。若收到的序列R=(0101011001011100),對照網(wǎng)格圖來說明維特比譯

30、碼的方法[9]。</p><p>  由于該卷積碼的約束長度為6位,因此先選擇接收序列的前6位序列R1=(010101)同到達第3時刻的可能的8個碼序列(即8條路徑)進行比較,并計算出碼距。該例中到達第3時刻a點的路徑序列是(000000)和(111011),他們與R1的距離分別為3和4;到達第3時刻b點的路徑序列是(000011)和(111000),他們與R1的距離分別為3和4;到達第3時刻c點的路徑序列是(0

31、01110)和(110101),他們與R1的距離分別為4和1;到達第3時刻d點的路徑序列是(001101)和(110110),他們與R1的距離分別為2和3。上述每個節(jié)點都保留碼距較小的路徑作為幸存路徑,所以幸存路徑碼序列是(000000)、(000011)、(1101001)和(001101),如圖4所示。用于上面類似的方法可以得到第4、5、6、7時刻的幸存路徑[10]。</p><p>  圖4 維特比譯碼第

32、3時刻幸存路徑</p><p>  需要指出的是,對于某個節(jié)點,如果比較兩條路徑與接收序列的累計碼距值相等時,則可以任意選者一條路徑作為幸存路徑,吃時不會影響最終的譯碼結(jié)果。在碼的終了時刻a狀態(tài),得到一條幸存路徑。如果5所示。由此可看到譯碼器輸出是R’=(1101010001011100),即可變換成序列(11011000),恢復(fù)了發(fā)端原始信息。比較R’和R序列,可以看到在譯碼過程中已糾正了在碼序列第1和第7位上

33、的差錯。當然如果差錯出現(xiàn)太頻繁,以致超出卷積碼的糾錯能力,還是會發(fā)生糾誤的[11]。</p><p>  圖5 第8時刻幸存路徑</p><p>  2.卷積碼編碼器及Viterbi譯碼器的設(shè)計系統(tǒng)方案制定</p><p><b>  2.1 方案提出 </b></p><p>  卷積碼的譯碼方式有三種:(1)196

34、3 年由梅西((Massey)提出的門限譯碼,這是一種基于碼代數(shù)結(jié)構(gòu)的代數(shù)譯碼,類似于分組碼中的大數(shù)邏輯譯碼;(2) 1963 年由費諾(Fano)改進的序列譯碼,這是基于碼的樹狀圖結(jié)構(gòu)上的一種準最佳的概率譯碼;(3) 1967 年由維特</p><p>  比提出的 Viterbi 算法。這是基于碼的網(wǎng)(trellis)圖基礎(chǔ)上的一種最大似然譯碼算法,是一種最佳的概率譯碼方法[12]。上。由于計算是用到了信道的

35、統(tǒng)計特性.因而提高了譯碼性能,但這種性能的提高是以增加硬件的復(fù)雜度為代價的。常用的概率譯碼方法有維特比譯碼和序列譯碼。維特比譯碼具有最佳性能,但硬件實現(xiàn)復(fù)雜;門限譯碼性能最差, 但硬件簡單;序列譯碼在性能和硬件方面介于維特比譯碼和門限譯碼之間[13]。 </p><p><b>  2.2 方案論證</b></p><p>  圖6是卷積碼解碼原理圖,由此圖可見,當信

36、息位出現(xiàn)一個錯碼時,僅當它位于信息位移存器的第6、3、2和1級時,才使校正子等于“1”。因此,這時校正子序列為100111;反之,當監(jiān)督位出現(xiàn)一個錯碼時,校正子序列將為100000。由此可見,當校正子序列出現(xiàn)第一個“1”時,表示已經(jīng)檢出一個錯碼。此卷積碼除了能夠糾正兩位在約束長度中的隨機錯誤外,還能夠糾正部分多于兩位的錯誤。為了克服突發(fā)錯誤,可以采用更長的約束長度和在約束長度中能糾正更多錯誤的碼[14]。</p><

37、p>  圖6 (2,1,6)卷積碼解碼器原理方框圖</p><p><b>  2.3 方案選擇</b></p><p>  由于維特比解碼算法比較簡單,計算快,故得到廣泛應(yīng)用,特別是衛(wèi)星通信和蜂窩網(wǎng)通信系統(tǒng)中應(yīng)用。所以這里選擇維特比解碼。</p><p><b>  2.4 硬件實現(xiàn)</b></p>

38、<p>  圖7譯碼器硬件實現(xiàn)方框圖</p><p>  3 卷積碼編碼器及Viterbi譯碼器的設(shè)計系統(tǒng)的仿真和調(diào)試 </p><p>  3.1 仿真軟件介紹</p><p>  Matlab是英文MATrix LABoratory(矩陣實驗室)的縮寫。Matlab自1984年由MathWorks公司推向市場以來,歷經(jīng)20多年的發(fā)展和競爭,現(xiàn)在風(fēng)靡世界

39、??煽康臄?shù)值計算和符號計算功能,強大的繪圖功能、簡單易學(xué)的語言體系以及為數(shù)眾多的應(yīng)用工具箱是Matlab區(qū)別于其他科技應(yīng)用軟件的顯著標志[6]。</p><p>  3.2 系統(tǒng)仿真實現(xiàn)</p><p>  3.2.1 編碼程序</p><p>  %header,后面的寄存器需補零 </p><p>  for i=1:size(G,2)

40、/k-1 input_matrix=[coder_input(i*k:-1:1),zeros(1,size(G,2)-i*k)]; </p><p>  %取輸入序列的前i*k個,其后補0 </p><p>  gg_out=G*input_matrix';</p><p>  %生成矩陣和寄存器單元中的內(nèi)容相乘得到輸出 </p><p&

41、gt;  for l=1:n channel_input (n*(i-1)+l)=rem(gg_out(l),2);</p><p>  %進行模二運算得到編碼器輸出</p><p><b>  end </b></p><p><b>  end </b></p><p><b

42、>  %body </b></p><p>  for i=size(G,2)/k:depth_of_input </p><p>  input_matrix=[coder_input(k*i:-1:k*i-G_2+1)]; </p><p>  %取輸入序列的G-2個,即與寄存器個數(shù)相等 </p><p>  gg_o

43、ut=G*input_matrix'; </p><p>  for l=1:n channel_input(n*(i-1)+l)=rem(gg_out(l),2); </p><p><b>  %模二運算</b></p><p><b>  end </b></p><p><b&

44、gt;  end </b></p><p>  %tailer,前面的寄存器需補零 </p><p>  for i=(G_2/k-1):-1:1 input_matrix=[zeros(1,G_2-i*k),coder_input(depth_of_input*k:-1:(depth_of_input-i) *k+1)];;</p><p>  %前G

45、_2-i*k個補0 </p><p>  gg_out=G*input_matrix'; </p><p>  for l=1:n channel_input(n*(G_2/k-i-1)+l+depth_of_input*n)=rem(gg_out(l),2); </p><p><b>  %模二運算 </b></p>

46、<p><b>  end </b></p><p>  3.2.2 解碼程序</p><p>  for j=0:step:number_of_states-1; </p><p>  for l=0:2^k-1 branch_metric=0;</p><p>  binary_output=deci2b

47、in(output(j+1,l+1),n); </p><p>  %將理想輸出轉(zhuǎn)化為二進制 </p><p>  for ll=1:n </p><p>  %計算漢明距 branch_metric=branch_metric+metric(channel_output_matrix(ll,i),binary_output(ll));</p>&l

48、t;p><b>  end </b></p><p>  %在AWGN信道下,最大似然估計轉(zhuǎn)化為求最小漢明距 </p><p>  %如果下一狀態(tài)度量距離大于當前距離加漢明距,或是下一狀態(tài)未被遍歷過則設(shè)為當前狀態(tài)下一狀態(tài)的幸存狀態(tài),當前距離加漢明距設(shè)為下一狀態(tài)的距離 if((state_metric(nextstate(j+1,l+1)+1,2)>sta

49、te_metric(j+1,1)+branch_metric)|flag(next state(j+1,l+1)+1)==0) state_metric(nextstate(j+1,l+1)+1,2)=state_metric(j+1,1)+branch_metric; %更改漢明距 </p><p>  survivor_state(nextstate(j+1,l+1)+1,i+1)=j; </p>

50、<p><b>  %更改幸存路徑 </b></p><p>  flag(nextstate(j+1,l+1)+1)=1; </p><p><b>  end </b></p><p><b>  end </b></p><p><b>  e

51、nd </b></p><p>  %開始回溯最佳路徑,從最佳路徑中找出解碼 </p><p>  %state_sequence(1x結(jié)點深度)矩陣, 1~dep分別記載各個階段的路徑(即前一狀態(tài)數(shù))。1~dep分別記載各個階段的路徑(即前一狀態(tài)數(shù))。 </p><p>  %從最佳路徑中產(chǎn)生解碼 </p><p>  %由后到

52、前得到各級的狀態(tài) </p><p>  state_sequence=zeros(1,depth_of_trellis+1); state_sequence(1,depth_of_trellis)=survivor_state(1,depth_of_trellis+1); </p><p>  %開始回溯最佳路徑 </p><p>  for i=1:depth_o

53、f_trellis state_sequence(1,depth_of_trellis-i+1)=survivor_state((state_sequence(1,depth_of_tre llis+2-i)+1),depth_of_trellis-i+2); </p><p><b>  end </b></p><p>  3.3 卷積碼實現(xiàn)</p>

54、;<p>  (3,1)卷積碼的仿真:隨機輸入一組序列,本仿真實驗中輸入的序列是:1 0 1 1 0 1 0 0。通過卷積編碼程序?qū)λ斎氲男蛄羞M行編碼,得到卷積碼輸出,再對這個卷積碼進行噪聲干擾,在實際通信系統(tǒng)中即相當于在空中傳輸過程中出現(xiàn)傳輸錯誤,出現(xiàn)誤碼, 譯碼器接收到錯誤的碼字進行解碼,理論上按照 Viterbi 譯碼算法可以回溯到原始的正確碼字,即正確的輸入序列?,F(xiàn)在對于編碼程序在 MATLAB 系統(tǒng)中對該實驗進

55、行仿真,驗證譯碼是否正確,以得出是否有差錯控制的功能,即卷積碼可以實現(xiàn)差錯控制[7]。 </p><p>  設(shè)置編碼器輸入端: </p><p><b>  隨機輸入序列: </b></p><p>  coder_input=[1 0 1 1 0 1 0 0] </p><p>  輸入(2,1)卷積碼的生成矩陣:

56、 G = [1 0 1 1 0 1 1 1 1;1 1 0 1 1 0 0 1 1;1 1 1 0 0 1 0 0 1]? ? ?設(shè)置輸入端個數(shù): k=1則通過仿真得到編碼器輸出的卷積碼序列:channel_output=[ 1 1 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1

57、 1 0 0 0 0 0 0]</p><p>  當通信過程中遇到噪聲干擾,出現(xiàn)錯碼時。例如本例中將第一位、第五位、第十位和最后一位更改。得到噪聲之后的序列,之后再將噪聲之后序列送入譯碼程序進行譯碼輸出。經(jīng)過維特比譯碼之后輸出的輸出序列理論上是原始的輸入序列,若與輸入序列相同,則驗證成功。 </p><p>  設(shè)置譯碼器輸入端: </p><p>  編碼器輸出

58、的卷積碼序列: </p><p>  channel_output=[ 1 1 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0] </p><p>  加了噪聲之后的序列(被送到譯碼器中進行譯碼的序列): </p><p>  ch

59、annel_output=[ 0 1 1 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 1] </p><p>  經(jīng)過譯碼器譯碼之后的輸出序列: </p><p>  decoder_output =[ 1 0 1 1 0 1 0 0] </p>

60、<p>  該序列與原始的輸入序列 coder_input=[1 0 1 1 0 1 0 0]相同,即還原到了原始的輸入序列,達到了糾錯的目的。驗證成功[8]。</p><p><b>  3.4 數(shù)據(jù)分析 </b></p><p>  解碼的結(jié)果見圖8和圖9。</p><p>  Here is an example of how

61、 the function step works:</p><p>  Consider a randomly generated stable Transfer Function Model:</p><p>  of the form G(s)=num(s)/den(s):</p><p><b>  num =</b></p>

62、<p>  0 0 -0.0376 0.0896 -0.0533</p><p><b>  den =</b></p><p>  1.0000 2.9737 2.8217 0.9142 0.0908</p><p><b>  圖8 解碼結(jié)果</b>&

63、lt;/p><p><b>  圖9解碼仿真結(jié)果圖</b></p><p>  4 SIMULINK下仿真設(shè)計</p><p>  4.1 卷積碼的仿真</p><p>  圖10卷積碼的編譯譯碼框圖</p><p>  如上圖10的信號流程可以表示為先由Bernoulli Binary Genera

64、ter(貝努利二進制序列產(chǎn)生器)產(chǎn)生一個0,1等概序列,經(jīng)過Convolutional Ecoder(卷積編碼器)對輸入的二進制序列進行卷積編碼,并用BPSK解調(diào)制后送人Viterbi Dcoder(viterbi譯碼器)進行硬判決譯碼。最后經(jīng)過Error Rate Caculation(誤碼統(tǒng)計)后由Display(顯示輸出)。然后通過Selector(數(shù)據(jù)選通器)將結(jié)果輸出到To workspace(工作區(qū)間)。</p>

65、<p>  4.2 SIMULINK模塊仿真參數(shù)設(shè)置及意義</p><p>  在建立如果10所示的仿真模塊后,對各個模塊分別一一進行設(shè)置后并運行仿真</p><p>  圖11貝努利二進制序列產(chǎn)生器模塊的設(shè)置框圖</p><p>  如上圖11是貝努利二進制序列產(chǎn)生器模塊的設(shè)置框圖,其中參數(shù)有三項:第一項probability of a zero取值

66、為0.5,表示0和1出現(xiàn)的概率相等。Initial seed表示隨機種子數(shù),不同的隨機種子數(shù)將產(chǎn)生不同的二進制序列,特定的隨機種子數(shù)可以產(chǎn)生特定的二進制序列,Sample time=0.0001表示抽樣時間。也就是說輸出序列中每個二進制符號的持續(xù)時間是0.0001秒。Samples per frame表示每幀的抽樣數(shù)用來確定每幀的抽樣點的數(shù)目。Output date type是用來確定每幀的輸出格式。</p><p&

67、gt;  圖12卷積編碼器模塊的設(shè)置框圖</p><p>  如上圖12所示是卷積碼編碼器模塊的設(shè)置框圖。其中,Trellis structure(Trellis結(jié)構(gòu))中通過poly2trellis()函數(shù)把卷積碼的約束長度,生成多項式以及反饋多項式轉(zhuǎn)換成Trellis結(jié)構(gòu)中的形式。</p><p>  圖13 BPSK調(diào)制器模塊的設(shè)置框圖</p><p>  如上

68、圖13是BPSK調(diào)制器模塊的設(shè)置框圖。Phase offset(rad)(相位偏移),這里設(shè)置為0。</p><p>  圖14誤比特統(tǒng)計模塊的設(shè)置框圖</p><p>  如上圖所示是誤比特統(tǒng)計模塊的設(shè)置框圖。Receive delay表示接收延遲,意思是在通信接收端口需要對接收到的信號進行解調(diào),解碼或解交織而帶來一定的延遲使得到達誤碼統(tǒng)計模塊接收端的信號滯后于發(fā)送端的信號[21]。為了

69、補償這種延遲,這里設(shè)置為0。Computation delay表示計算延遲,在仿真過程中,有時間需要忽略最初的若干個輸入數(shù)據(jù)就通過計算延遲來實現(xiàn)。這里設(shè)置為0。Computation mode表示計算模式,幀的計算模式(Entire frame),誤碼統(tǒng)計模塊對發(fā)送端和接收端所有輸入數(shù)據(jù)進行統(tǒng)計。Output data是輸出數(shù)據(jù),這里設(shè)置為port的意思是表示把統(tǒng)計數(shù)據(jù)從端口中輸出。Workspace表示把統(tǒng)計數(shù)據(jù)輸出到工作區(qū)[22]。

70、</p><p>  圖15數(shù)據(jù)選通器模塊的設(shè)置框圖</p><p>  如圖15所示是數(shù)據(jù)選通器模塊的設(shè)置框圖。Input port width表示輸入端口的個數(shù)為3。</p><p>  圖16卷積碼譯碼器模塊的設(shè)置框圖</p><p>  如上圖16所示是卷積碼譯碼器模塊的設(shè)置框圖。Decision type是指判決類型,有3種:(1)

71、Unquantized(非量化);(2)Hard Decision(硬判決);(3)Soft Decision(軟判決)。Traceback depth表示反饋深度。它的值會影響譯碼精度和解碼延遲。Operation mode是指操作模式。在Truncated模式下,解碼器在每幀數(shù)據(jù)結(jié)束的時候總會恢復(fù)到全0狀態(tài),它與卷積編碼器的on each frame復(fù)位方式相對應(yīng)[23]。</p><p><b>

72、  5 總結(jié)</b></p><p><b>  5.1 設(shè)計小結(jié)</b></p><p>  卷積碼是一種糾錯編碼,糾錯編碼己有五十幾年歷史,早在 1948 年,香農(nóng) (Shannon)在他的開創(chuàng)性論文“通信的數(shù)學(xué)理論”中,首次闡明了在有擾信道中實現(xiàn)可靠通信的方法,提出了著名的有擾信道編碼定理,奠定了糾錯碼的基石[24]。 以后,糾錯碼受到了越來越多的通

73、信和數(shù)學(xué)工作者,特別是數(shù)學(xué)家的重視,使糾錯碼無論在理論上還是在實際中都得到了飛速發(fā)展。 通過編寫卷積碼的編碼和解碼程序,并且用MATLAB 仿 真軟件對 TD-SCDMA 系統(tǒng)的卷積碼編解碼進行仿真,進行糾錯驗證可以看出卷積碼編譯碼對差錯控制有很大的應(yīng)用。 通過對譯碼算法的仿真,可以看出,維特比譯碼器設(shè)備比較簡單,計算速度快,因而 Viterbi 譯碼器被廣泛應(yīng)用于各種領(lǐng)域。尤其在衛(wèi)星和深空通信中得到廣泛應(yīng)用,在解決碼間串擾和數(shù)據(jù)壓縮中

74、也可應(yīng)用[25]。</p><p><b>  5.2 收獲體會</b></p><p>  了解了卷積碼的原理及其編碼和譯碼原理,同時掌握了如何用用MATLAB對其進行仿真。卷積碼具有糾錯功能,適合于各種領(lǐng)域。此畢業(yè)設(shè)計對整個通信系統(tǒng)包含的編碼、傳輸和譯碼都進行了設(shè)計與仿真,從這些過程中我們看到了通信系統(tǒng)的基本工作原理。通過整個卷積碼系統(tǒng)的設(shè)計與仿真,使我們加深了

75、對卷積碼的理解,掌握維特比譯碼的基本思路,知道如何進行誤碼率分析從而選者合適的信道傳輸信號,更重要的是學(xué)會了使用Matlab作為學(xué)習(xí)工具來對我們的通信系統(tǒng)進行設(shè)計和仿真等操作,這對我們以后的學(xué)習(xí)和工作有著重要意義[26]。</p><p><b>  5.3 展望</b></p><p>  現(xiàn)代通信中,隨著信號序列的傳輸速率的不斷提高,要求卷積碼譯碼的速度也要不斷提

76、高,Viterbi 譯碼由于充分利用信號序列統(tǒng)計概率的特性而具有最佳性能。信道編碼的應(yīng)用領(lǐng)域主要包括深空通信、衛(wèi)星通信、數(shù)據(jù)傳輸、移動通信、文件傳輸和數(shù)字音頻/視頻傳輸?shù)?。卷積編碼作為信道編碼方式中最重要一種,被廣泛使用于衛(wèi)星通信、無人機測控、深空通信、移動通信、水聲通信等數(shù)字通信系統(tǒng),甚至被采納到某些無線通信的標準之中,如 GSM、IS.95 和 CDMA2000 的標準。在衛(wèi)星通信中,碼率為 1/2 和 1/3 的卷積碼己經(jīng)成為商業(yè)

77、衛(wèi)星通信系統(tǒng)中的標準編碼方法。在無人機測控中,與傳統(tǒng)的信道改善控制指令傳輸誤碼的方式比較,利用卷積碼對無人機遙控信道進行編碼,在一定信道條件下,其控制指令傳輸誤碼有明顯下降。在碼速率不增加的條件下,無人機系統(tǒng)控制指令傳輸可靠性得到明顯改善[27]。</p><p><b>  參考文獻:</b></p><p>  [1]. 曹沛先.卷積碼的編碼及其 Viterbi

78、譯碼的計算機模擬[J]. 無線電工 程,1994,24(8): 24-28. </p><p>  [2]. 張普珩.Viterbi 譯碼算法的研究與實現(xiàn)[D].湖南:國防科學(xué)技術(shù)大學(xué)研究生院, 2008.</p><p>  [3]. 孟夏, 申敏, 王飛.TD-SCDMA 中(2,1,9)卷積編碼及其 VITERBI 譯碼算法的 S IMULINK S-FUNCTION 實現(xiàn)[J].通

79、信技術(shù),2008,41(8):26-30. </p><p>  [4]. 張傳達 , 李小文 . 卷積碼編碼及其 Viterbi 譯碼的實現(xiàn)[J]. 無線電工 程,2006,36(7):45-47.</p><p>  [5].《通信原理》(第六版)樊昌信,曹麗娜編著國防工業(yè)出版社;</p><p>  [6].《MATLAB程序設(shè)計與應(yīng)用》(第二版)劉衛(wèi)國主編高

80、等教育出版社</p><p>  [7].徐莉, 羅新民, 徐燕紅.卷積碼的 MATLAB 仿真及其性能研究[J].現(xiàn)代電子技術(shù),2006,64(11):64-66. </p><p>  [8].肖學(xué)云,信道編碼的研究及其在 TD-SCDMA 中的應(yīng)用與實現(xiàn)[D].北京:北 京郵電大學(xué),2006. </p><p>  [9]. 宋鏡業(yè),信道編碼識別技術(shù)研究[D]

81、.西安:西安電子科技大學(xué),2009. Series.IRE[10]. 龐沁華, 吳偉陵.通信原理[M].北京:北京郵電出版社,2008.</p><p>  [11].李建東,郭梯云,鄔國揚著 《移動通信》第四版 出版社:西安電子科技大學(xué)出版社 2006,7</p><p>  [12] 樊昌信,曹麗娜著 《通信原理》第六版 出版社:國防工業(yè)出版社2011,1[13] 劉衛(wèi)國主編 《

82、MATLAB程序設(shè)計與應(yīng)用》第二版 出版社:高等教育出版社2011,1[14] 張輝,曹麗娜編著 《現(xiàn)代通信原理與技術(shù)》 出版社:西安電子科技大學(xué)出版社 2002[15] 曹志剛,錢亞生著 《現(xiàn)代通信原理》 出版社:清華大學(xué)出版社 1992[16] 王興亮,達新宇著 《數(shù)字通信原理與技術(shù)》第二版 出版社:西安電子科技大學(xué)出版社 2004[17] 桑林,郝建軍,劉丹譜著 《數(shù)字通信》 出版社:北京郵電大學(xué)出版社[18] 曹興

83、雯,劉乃安,陳健等著 《高頻電路原理與分析》 出版社:西安電子科技大學(xué)出版社 2001[19] 張圣勤著 《MATLAB7.0實用教材》 出版社:機械工業(yè)出版社 2006[20] 鄧華著 《MATLAB通信仿真及應(yīng)用實例詳解》 出版社:人民郵電出版社 2003</p><p>  [21] C.E.Shannon.A Mathematic Theory of Communications.Bell syst,

84、Tech.J.1948,Vol 27.</p><p>  [22] D.J.Costello,J.Hagenauer&H.Imai.Applications of Error-Control Coding,IEEE Trans.On Information Theory,1998,Vol 44.</p><p>  [23] M.J.Golay.Complementary Ser

85、ies.IRE Trans.Info.Theory.Vol.IT-7,pp82-87,1981. </p><p>  [24]V.D.Goppa.ANewClassofLinearError-correctingCodes.Probl,Inform,Trans,1990.vol.6.pp207-212. </p><p><b>  附錄</b></p>

86、<p><b>  1 編碼程序</b></p><p>  %header,后面的寄存器需補零 </p><p>  for i=1:size(G,2)/k-1 input_matrix=[coder_input(i*k:-1:1),zeros(1,size(G,2)-i*k)]; </p><p>  %取輸入序列的前i*k個

87、,其后補0 </p><p>  gg_out=G*input_matrix';</p><p>  %生成矩陣和寄存器單元中的內(nèi)容相乘得到輸出 </p><p>  for l=1:n channel_input (n*(i-1)+l)=rem(gg_out(l),2);</p><p>  %進行模二運算得到編碼器輸出</p

88、><p><b>  end </b></p><p><b>  end </b></p><p><b>  %body </b></p><p>  for i=size(G,2)/k:depth_of_input </p><p> 

89、 input_matrix=[coder_input(k*i:-1:k*i-G_2+1)]; </p><p>  %取輸入序列的G-2個,即與寄存器個數(shù)相等 </p><p>  gg_out=G*input_matrix'; </p><p>  for l=1:n channel_input(n*(i-1)+l)=rem(gg_out(l),2); &

90、lt;/p><p><b>  %模二運算</b></p><p><b>  end </b></p><p><b>  end </b></p><p>  %tailer,前面的寄存器需補零 </p><p>  for i=(G_2/k-1):-1

91、:1 input_matrix=[zeros(1,G_2-i*k),coder_input(depth_of_input*k:-1:(depth_of_input-i) *k+1)];;</p><p>  %前G_2-i*k個補0 </p><p>  gg_out=G*input_matrix'; </p><p>  for l=1:n channel

92、_input(n*(G_2/k-i-1)+l+depth_of_input*n)=rem(gg_out(l),2); </p><p><b>  %模二運算 </b></p><p><b>  end</b></p><p>  2解碼程序for j=0:step:number_of_states-1; </p

93、><p>  for l=0:2^k-1 branch_metric=0;</p><p>  binary_output=deci2bin(output(j+1,l+1),n); </p><p>  %將理想輸出轉(zhuǎn)化為二進制 </p><p>  for ll=1:n </p><p>  %計算漢明距 branch

94、_metric=branch_metric+metric(channel_output_matrix(ll,i),binary_output(ll));</p><p><b>  end </b></p><p>  %在AWGN信道下,最大似然估計轉(zhuǎn)化為求最小漢明距 </p><p>  %如果下一狀態(tài)度量距離大于當前距離加漢明距,或是下

95、一狀態(tài)未被遍歷過則設(shè)為當前狀態(tài)下一狀態(tài)的幸存狀態(tài),當前距離加漢明距設(shè)為下一狀態(tài)的距離 if((state_metric(nextstate(j+1,l+1)+1,2)>state_metric(j+1,1)+branch_metric)|flag(next state(j+1,l+1)+1)==0) state_metric(nextstate(j+1,l+1)+1,2)=state_metric(j+1,1)+branch_me

96、tric; %更改漢明距 </p><p>  survivor_state(nextstate(j+1,l+1)+1,i+1)=j; </p><p><b>  %更改幸存路徑 </b></p><p>  flag(nextstate(j+1,l+1)+1)=1; </p><p><b>  end

97、</b></p><p><b>  end </b></p><p><b>  end </b></p><p>  %開始回溯最佳路徑,從最佳路徑中找出解碼 </p><p>  %state_sequence(1x結(jié)點深度)矩陣, 1~dep分別記載各個階段的路徑(即前一狀態(tài)數(shù)

98、)。1~dep分別記載各個階段的路徑(即前一狀態(tài)數(shù))。 </p><p>  %從最佳路徑中產(chǎn)生解碼 </p><p>  %由后到前得到各級的狀態(tài) </p><p>  state_sequence=zeros(1,depth_of_trellis+1); state_sequence(1,depth_of_trellis)=survivor_state(1,de

99、pth_of_trellis+1); </p><p>  %開始回溯最佳路徑 </p><p>  for i=1:depth_of_trellis state_sequence(1,depth_of_trellis-i+1)=survivor_state((state_sequence(1,depth_of_tre llis+2-i)+1),depth_of_trellis-i+2);

100、 </p><p><b>  end</b></p><p><b>  致謝</b></p><p>  本文的研究工作是在老師的精心指導(dǎo)和悉心關(guān)懷下完成的,在我的設(shè)計題目的選擇、實物的調(diào)試 和論文的研究工作中無不傾注著指導(dǎo)老師辛勤的汗水和心血。同時也要感謝幫助過我們的同學(xué),給我們提供了寶貴的建議。指導(dǎo)老師的嚴謹治學(xué)態(tài)

溫馨提示

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

評論

0/150

提交評論