電子信息工程畢設(shè)設(shè)計(jì)基于matlab的信道編碼仿真_第1頁(yè)
電子信息工程畢設(shè)設(shè)計(jì)基于matlab的信道編碼仿真_第2頁(yè)
電子信息工程畢設(shè)設(shè)計(jì)基于matlab的信道編碼仿真_第3頁(yè)
電子信息工程畢設(shè)設(shè)計(jì)基于matlab的信道編碼仿真_第4頁(yè)
電子信息工程畢設(shè)設(shè)計(jì)基于matlab的信道編碼仿真_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于matlab的信道編碼仿真海 南 大 學(xué)畢 業(yè) 論 文(設(shè)計(jì))題 目:基于matlab的信道編碼仿真學(xué) 號(hào): 姓 名: 年 級(jí): 學(xué) 院:信息科學(xué)技術(shù)學(xué)院 系 別:電子信息工程 專 業(yè):電子信息工程 指導(dǎo)教師: 完成日期: 42摘 要 通信技術(shù)的飛速發(fā)展,信道編碼已經(jīng)成功地應(yīng)用于各種通信系統(tǒng)中。以及各種傳輸方式對(duì)可靠性要求的不斷提高,信道編碼技術(shù)作為抗干擾技術(shù)的一種重要的手段,在數(shù)字通信技術(shù)領(lǐng)域和數(shù)字傳輸系統(tǒng)中顯示出越來(lái)越重要的作用。 信道編碼的目的是為了改善通信系統(tǒng)的傳輸質(zhì)量。由于實(shí)際信道存在噪聲和干擾,使發(fā)送的碼字與信道傳輸后所接收的碼字之間存在差異,稱這種差異為差錯(cuò)。一般情況下,信道

2、噪聲、干擾越大,碼字產(chǎn)生差錯(cuò)的概率也就越大。 本文利用matlab對(duì)二進(jìn)制對(duì)稱信道(BSC),高斯白噪聲信道(AWGN)兩種信道的仿真,(7,4)Hamming碼對(duì)信道的仿真,通過(guò)誤碼率的曲線圖來(lái)了解信道的編碼。并利用matlab的simulink模塊仿真,運(yùn)用simulink里的卷積碼viterbi譯碼器來(lái)對(duì)二進(jìn)制對(duì)稱信道和高斯白噪聲信道的仿真,觀察誤碼率的曲線圖來(lái)了解2個(gè)信道的不同。關(guān)鍵字:matlab,信道,編碼,譯碼,Simulink。Abstract With the rapid development of communication technology, channel cod

3、ing has been successfully applied to various communications systems. And a variety of transmission of the continuous improvement of reliability requirements, anti-jamming channel coding technology as an important means of technology in the field of digital communications technology and digital trans

4、mission systems in a more and more important role. The purpose of channel coding is to improve the transmission quality of communications systems. As the actual existence of the channel noise and interference, the transmitted codewords and channel transmission received after the difference between c

5、ode words, said this difference is wrong. Under normal circumstances, channel noise, the greater the interference, the code word generated the greater the probability of error. In this paper, matlab binary symmetric channel (BSC), Gaussian white noise channel (AWGN) two channel simulation, (7,4) Ham

6、ming code simulation of the channel, through the bit error rate curve to understand the channel coding. Using matlab to simulink block simulation, using simulink in the viterbi decoder to convolutional codes on the binary symmetric channel and Gaussian white noise channel simulation, observation err

7、or rate graphs to understand the two different channelsKeywords: matlab, channel, coding, decoding, Simulink.目錄1引言11.1選題的目的和意義11.2本選題的理論依據(jù)、研究?jī)?nèi)容12.信道編碼以及其運(yùn)行環(huán)境MATLAB的介紹22.1 信道編碼的概念及分類22.2 信道編碼定理及信道編碼中所包含的各種碼類的簡(jiǎn)介22.2.1卷積碼22.2.2線性分組碼32.2.3循環(huán)碼32.3 MATLAB語(yǔ)言的簡(jiǎn)介42.4 Simulink53.信道53.1二進(jìn)制對(duì)稱信道(BSC)53.2二進(jìn)制刪除信道(

8、BEC)63.3高斯白噪聲信道(AWGN)64. Hamming碼74.1漢明碼74.2校驗(yàn)方法74.3漢明碼編碼94.3.1漢明碼對(duì)高斯白噪聲信道94.3.2漢明碼對(duì)二進(jìn)制對(duì)稱信道的仿真115.卷積碼155.1卷積碼定義與原理155.2維特比譯碼原理155.3卷積碼譯碼器對(duì)高斯白噪聲信道的設(shè)計(jì)與仿真185.3.1卷積碼譯碼器的設(shè)計(jì)與仿真195.3.2簡(jiǎn)化維特比譯碼器的仿真225.3.3卷積碼譯碼器的誤碼率分析245.4卷積編碼器在二進(jìn)制對(duì)稱信道(BSC)中的性能256.卷積碼譯碼器對(duì)二進(jìn)制對(duì)稱信道和高斯白噪聲信道仿真比較307.總結(jié)31致謝32參考文獻(xiàn)33附錄1:34附錄2:37附錄3:40

9、附錄4:411引言1.1選題的目的和意義數(shù)字信號(hào)在傳輸中往往由于各種原因,使得在傳送的數(shù)據(jù)流中產(chǎn)生誤碼,從而使接收端產(chǎn)生圖象跳躍、不連續(xù)、出現(xiàn)馬賽克等現(xiàn)象。所以通過(guò)信道編碼這一環(huán)節(jié),對(duì)數(shù)碼流進(jìn)行相應(yīng)的處理,使系統(tǒng)具有一定的糾錯(cuò)能力和抗干擾能力,可極大地避免碼流傳送中誤碼的發(fā)生。誤碼的處理技術(shù)有糾錯(cuò)、交織、線性內(nèi)插等。提高數(shù)據(jù)傳輸效率,降低誤碼率是信道編碼的任務(wù)。信道編碼的本質(zhì)是增加通信的可靠性。但信道編碼會(huì)使有用的信息數(shù)據(jù)傳輸減少,信道編碼的過(guò)程是在源數(shù)據(jù)碼流中加插一些碼元,從而達(dá)到在接收端進(jìn)行判錯(cuò)和糾錯(cuò)的目的。1.2本選題的理論依據(jù)、研究?jī)?nèi)容在數(shù)字通信系統(tǒng)中由于信道內(nèi)存在加性噪聲及信道傳輸特

10、性不理想等容易造成碼間串?dāng)_同時(shí)多用戶干擾、多徑傳播和功率限制等也導(dǎo)致錯(cuò)誤譯碼。為了確保系統(tǒng)的誤比特率指標(biāo)通常采用信道編碼。信道編碼是為了保證信息傳輸?shù)目煽啃?、提高傳輸質(zhì)量而設(shè)計(jì)的一種編碼。它是在信息碼中增加一定數(shù)量的多余碼元,使碼字具有一定的抗干擾能力。提高信息傳輸?shù)挠行院涂煽啃允冀K是通信技術(shù)所追求的目標(biāo),而信道編碼能夠顯著的提升信息傳輸?shù)目煽啃?。?jiǎn)述信道編碼理論,詳細(xì)說(shuō)明分組碼的編譯原理、實(shí)現(xiàn)方法及檢錯(cuò)糾錯(cuò)能力,用MATLAB仿真信道編碼條不同信道下的影響。學(xué)習(xí)卷積碼的基本原理和編碼方法。學(xué)習(xí)基本分組碼的原理和編碼方法。理解二進(jìn)制對(duì)稱信道(BSC),二進(jìn)制擦除信道(BEC),高斯白噪聲信道

11、(AWGN)。理解碼率(code rate)和誤碼率(bit error rate)的意義。利用(7,4)Hamming碼對(duì)不同信道進(jìn)行仿真。自己設(shè)計(jì)一個(gè)卷積碼,并利用Viterbi譯碼二進(jìn)制對(duì)稱信道(BSC),高斯白噪聲信道(AWGN)2個(gè)信道進(jìn)行仿真,比較結(jié)果。2.信道編碼以及其運(yùn)行環(huán)境MATLAB的介紹2.1 信道編碼的概念及分類進(jìn)行信道編碼是為了提高信號(hào)傳輸?shù)目煽啃?,改善通信系統(tǒng)的傳輸質(zhì)量,研究信道編碼的目標(biāo)是尋找具體構(gòu)造編碼的理論與方法。從原理上,構(gòu)造信道碼的基本思路是根據(jù)一定的規(guī)律在待發(fā)送的信息碼元中人為的加入一定的多余碼元,以引入最小的多余度為代價(jià)來(lái)?yè)Q取最好的抗干擾性能。信道編碼

12、是通過(guò)信道編碼器和譯碼器實(shí)現(xiàn)的用于提高信道可靠性的理論和方法,是信息論的內(nèi)容之一。信道編碼大致分為兩類:信道編碼定理,從理論上解決理想編碼器、譯碼器的存在性問(wèn)題,也就是解決信道能傳送的最大信息率的可能性和超過(guò)這個(gè)最大值時(shí)的傳輸問(wèn)題。構(gòu)造性的編碼方法以及這些方法能達(dá)到的性能界限。編碼定理的證明,從離散信道發(fā)展到連續(xù)信道,從無(wú)記憶信道到有記憶信道,從單用戶信道到多用戶信道,從證明差錯(cuò)概率可接近于零到以指數(shù)規(guī)律逼近于零,正在不斷完善。編碼方法,在離散信道中一般用代數(shù)碼形式,其類型有較大發(fā)展,各種界限也不斷有人提出,但尚未達(dá)到編碼定理所啟示的限度。在連續(xù)信道中常采用正交函數(shù)系來(lái)代表消息,這在極限情況下

13、可達(dá)到編碼定理的限度,不是所有信道的編碼定理都已被證明。2.2 信道編碼定理及信道編碼中所包含的各種碼類的簡(jiǎn)介1948年,信息論的奠基人CEShannon在他的開創(chuàng)性論文“通信的數(shù)學(xué)理論”中,提出了著名的有噪信道編碼定理。他指出:對(duì)任何信道,只要信息傳輸速率R不大于信道容量C, 就一定存在這樣的編碼方法:在采用最大似然譯碼時(shí),其誤碼率可以任意小。該定理在理論上給出了對(duì)給定信道通過(guò)編碼所能達(dá)到的編碼增益的上限,并指出了為達(dá)到理論極限應(yīng)采用的譯碼方法。在信道編碼定理中,香農(nóng)提出了實(shí)現(xiàn)最佳編碼的三個(gè)基本條件 :(1)采用隨機(jī)編譯碼方式 ;(2)編碼長(zhǎng)度 ,即分組的碼組長(zhǎng)度無(wú)限;(3)譯碼采用最佳的最

14、大似然譯碼算法。2.2.1卷積碼卷積碼(convolution code)屬于非分組碼,它是一種小分組(n ,k)多碼段相關(guān)、糾錯(cuò)能力較強(qiáng)的FEC碼。卷積碼不同于(n, k)分組碼,它將(n, k)變成很短的分組(n, k),如(2 ,1)、(3, 1)(3, 2)卷積碼等。每一個(gè)監(jiān)督元不僅是由本碼段(n, k)的k位信碼所決定,而且與其前N-1個(gè)碼段的信碼有關(guān),因此稱為卷積碼。它適于串行傳送,延時(shí)較小。本碼段(n,k)以及其前(N-1)段構(gòu)成的N個(gè)分組碼段稱為約束長(zhǎng)度:其碼元數(shù)為Nn比特,而N稱為約束度。因此,各碼段(n, k)不像(n, k)分組碼是一個(gè)獨(dú)立糾錯(cuò)碼單元,其差錯(cuò)控制能力由N個(gè)

15、碼段來(lái)決定。所以通常將卷積碼寫為(n, k,N),其中N=m+1,m是編碼電路的移位寄存器數(shù)目。卷積碼分為兩種:(1)基本卷積碼:基本卷積碼編碼效率為,1/2, 編碼效率較低,優(yōu)點(diǎn)是糾錯(cuò)能力強(qiáng)。(2)收縮卷積碼:如果傳輸信道質(zhì)量較好,為提高編碼效率,可以采樣收縮截短卷積碼。有編碼效率為:1/2、2/3、3/4、5/6、7/8這幾種編碼效率的收縮卷積碼編碼效率高,一定帶寬內(nèi)可傳輸?shù)挠行П忍芈试龃?,但糾錯(cuò)能力越減弱。2.2.2線性分組碼簡(jiǎn)單來(lái)說(shuō),所謂“分組碼”就是指碼字的生成只與當(dāng)前的源數(shù)據(jù)有關(guān),而與前后的數(shù)據(jù)無(wú)關(guān)(相應(yīng)地,與前后數(shù)據(jù)相關(guān)的碼稱為卷積碼)。分組碼將連續(xù)的數(shù)據(jù)比特流分割為長(zhǎng)度固定的組

16、;各組進(jìn)一步以m比特為單位分割為符號(hào)(Symbol),通常取3比特或者8比特?cái)?shù)據(jù)組成一個(gè)符號(hào)。k個(gè)符號(hào)一起組成源字(Source word),經(jīng)過(guò)編碼后變?yōu)殚L(zhǎng)度為n的碼字(Code word),稱為m比特符號(hào)的(n , k)分組碼。所謂“線性”,是指編碼過(guò)程均為線性變換,即可以通過(guò)矩陣變換來(lái)表示。目前研究的糾錯(cuò)碼大都屬于線性碼。在線性空間中,所有可能的m比特源字都可以進(jìn)行編碼變換,而無(wú)需關(guān)心這m比特?cái)?shù)據(jù)所代表的含義。所謂“系統(tǒng)”,是指碼字中包含了源字和變換所得的校驗(yàn)字。2.2.3循環(huán)碼循環(huán)碼的特點(diǎn)是符合(n, k)線形分組碼特點(diǎn)-在碼內(nèi)(碼子集合)的任意兩個(gè)碼字之和為該碼中的一個(gè)碼字,這一特征

17、表明(n, k)循環(huán)碼屬于(n, k)線形分組碼的一個(gè)子類。(n, k)碼中任何一個(gè)碼字連續(xù)位移i位后的碼字,仍屬于該循環(huán)碼的一個(gè)碼字。循環(huán)碼中的生成多項(xiàng)式的必要條件為某(n, k)碼是否位循環(huán)的必要條件是:冪為碼長(zhǎng)n的多項(xiàng)式x+1,可分解出至少有1個(gè)因式的最高冪次為n-k=r,即該因式最高次項(xiàng)為x,最低項(xiàng)為常數(shù)1。其生成多項(xiàng)式的充分條件是由必要條件得到的g(x),其多項(xiàng)式的非零權(quán)系數(shù)個(gè)數(shù)還應(yīng)等于相應(yīng)(n, k)分碼組的d。之所以補(bǔ)充這一“充分”條件,是因?yàn)榉媳匾獥l件的g(x)并不一定能得到與其相應(yīng)分組碼相同(n, k)的差錯(cuò)控制能力。循環(huán)編碼碼步驟:源碼為m(x)=mx+mx+m,應(yīng)首先提

18、升n-k位,變?yōu)閤m(x)。然后以生成多項(xiàng)式g(x)去除,得 =q(x)+ 式(2-1) 可得循環(huán)碼:C(x)=xm(x)+b(x)。2.3 MATLAB語(yǔ)言的簡(jiǎn)介MATLAB是矩陣實(shí)驗(yàn)室(MatrixLaboratory)之意,除具備卓越的數(shù)值計(jì)算能力外,它還提供了專業(yè)水平的符號(hào)計(jì)算,文字處理,可視化建模仿真和實(shí)時(shí)控制等功能。MATLAB 將高性能的數(shù)值計(jì)算和可視化集成在一起,并提供了大量的內(nèi)置函數(shù),從而被廣泛地應(yīng)用于科學(xué)計(jì)算、控制系統(tǒng)、信息處理等領(lǐng)域的分析、仿真和設(shè)計(jì)工作,而且利用MATLAB產(chǎn)品的開放式結(jié)構(gòu),可以非常容易地對(duì) MATLAB的功能進(jìn)行擴(kuò)充,從而在不斷深化對(duì)問(wèn)題認(rèn)識(shí)的同時(shí),不

19、斷完善MATLAB 產(chǎn)品以提高產(chǎn)品自身的競(jìng)爭(zhēng)能力。MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué),工程中常用的形式十分相似,故用MATLAB來(lái)解算問(wèn)題要比用C、FORTRAN等語(yǔ)言完相同的事情簡(jiǎn)捷得多。 開放性使MATLAB廣受用戶歡迎。除內(nèi)部函數(shù)外,所有MATLAB主包文件和各種工具包都是可讀可修改的文件,用戶通過(guò)對(duì)源程序的修改或加入自己編寫程序構(gòu)造新的專用工具包。Matlab軟件最好的教材是它的幫助文件。只要硬盤容量夠大,極力推薦安裝完整的幫助文檔,即使你對(duì)閱讀英文不是很有信心,但我相信其足夠的實(shí)例還是能讓你對(duì)要查詢的命令函數(shù)有一定的了解的。有兩種方法取得幫助信息:一是直接在命令窗

20、口輸入>>help 函數(shù)名;如help imread,會(huì)得到相應(yīng)函數(shù)的有關(guān)幫助信息。二是在幫助窗口中查找相應(yīng)信息。不同版本的幫助菜單界面有所不同,這只能依賴于自己去熟悉了。但總體上都和windows的界面具有相似的處理過(guò)程。2.4 SimulinkSimulink是The MathWorks公司開發(fā)的用于動(dòng)態(tài)系統(tǒng)和嵌入式系統(tǒng)的多領(lǐng)域仿真和基于模型的設(shè)計(jì)工具,常集成于MathWorks公司的另一產(chǎn)品mtlab中與之配合使用。Simulink提供了一個(gè)交互式的圖形化環(huán)境及可定制模塊庫(kù)(Library),可對(duì)各種時(shí)變系統(tǒng),例如通訊、控制、信號(hào)處理、視頻處理和圖像處理系統(tǒng)等進(jìn)行設(shè)計(jì)、仿真、

21、執(zhí)行和測(cè)試。與MATLAB類似,Simulink的功能可以通過(guò)購(gòu)買或自定義的工具箱不斷擴(kuò)展。 另外,Simulink與MATLAB緊密集成,可以直接訪問(wèn)MATLAB大量的工具來(lái)進(jìn)行算法研發(fā)、仿真的分析和可視化、批處理腳本的創(chuàng)建、建模環(huán)境的定制以及信號(hào)參數(shù)和測(cè)試數(shù)據(jù)的定義。它的主要特點(diǎn)有1:1. 豐富的可擴(kuò)充的預(yù)定義模塊庫(kù) 2. 交互式的圖形編輯器來(lái)組合和管理直觀的模塊圖 3. 以設(shè)計(jì)功能的層次性來(lái)分割模型,實(shí)現(xiàn)對(duì)復(fù)雜設(shè)計(jì)的管理 4. 通過(guò)Model Explorer 導(dǎo)航、創(chuàng)建、配置、搜索模型中的任意信號(hào)、參數(shù)、屬性,生成模型代碼 5. 提供API用于與其他仿真程序的連接或與手寫代碼集成 6.

22、 使用Embedded MATLAB模塊在Simulink和嵌入式系統(tǒng)執(zhí)行中調(diào)用MATLAB算法 7. 使用定步長(zhǎng)或變步長(zhǎng)運(yùn)行仿真,根據(jù)仿真模式(Normal,Accelerator,Rapid Accelerator)來(lái)決定以解釋性的方式運(yùn)行或以編譯C代碼的形式來(lái)運(yùn)行模型 8. 圖形化的調(diào)試器和剖析器來(lái)檢查仿真結(jié)果,診斷設(shè)計(jì)的性能和異常行為 9. 可訪問(wèn)MATLAB從而對(duì)結(jié)果進(jìn)行分析與可視化,定制建模環(huán)境,定義信號(hào)參數(shù)和測(cè)試數(shù)據(jù) 10. 模型分析和診斷工具來(lái)保證模型的一致性,確定模型中的錯(cuò)誤 。3.信道3.1二進(jìn)制對(duì)稱信道(BSC)二進(jìn)制對(duì)稱信道是離散無(wú)記憶信道在J=K=2時(shí)的特例。它的輸入

23、和輸出都只有0和1兩種符號(hào),并且發(fā)送0而接受到1,以及發(fā)送1而收到0(即誤碼)的概率相同,所以稱信道是對(duì)稱的。此時(shí)條件差錯(cuò)概率由p表示。二進(jìn)制對(duì)稱信道的轉(zhuǎn)移概率如圖3.1 圖3.1 二進(jìn)制對(duì)稱信道3.2二進(jìn)制刪除信道(BEC) 圖3.2二進(jìn)制刪除信道信道的特點(diǎn)是,信源傳輸0或1時(shí),接收端以1-a的概率正確接收,以概率a被刪除。3.3高斯白噪聲信道(AWGN)在信號(hào)傳輸?shù)倪^(guò)程中,它會(huì)不可避免地受到各種干擾,這些干擾統(tǒng)稱為“噪聲”。加性高斯白噪聲AWGN是最常見的一種噪聲。加性高斯白噪聲是最簡(jiǎn)單的一種噪聲,它表現(xiàn)為信號(hào)圍繞平均值的一種隨機(jī)波動(dòng)過(guò)程。加性高斯白噪聲的均值為o,方差表現(xiàn)為噪聲功率的大小

24、。一放情況下,噪聲功率越大,信號(hào)的波動(dòng)幅度就越大,接收端接收到的信號(hào)的誤比特率就越高。在研究通信系統(tǒng)的誤碼率與信道質(zhì)量的關(guān)系時(shí),一放先研究它在加性高斯白噪聲信道下的性能,然后再把它推廣到具有快衰落的復(fù)雜情況。4. Hamming碼4.1漢明碼當(dāng)計(jì)算機(jī)存儲(chǔ)或移動(dòng)數(shù)據(jù)時(shí),可能會(huì)產(chǎn)生數(shù)據(jù)位錯(cuò)誤,這時(shí)可以利用漢明碼來(lái)檢測(cè)并糾錯(cuò),簡(jiǎn)單的說(shuō),漢明碼是一個(gè)錯(cuò)誤校驗(yàn)碼碼集,由Bell實(shí)驗(yàn)室的R.W.Hamming發(fā)明,因此定名為漢明碼。與其他的錯(cuò)誤校驗(yàn)碼類似,漢明碼也利用了奇偶校驗(yàn)位的概念,通過(guò)在數(shù)據(jù)位后面增加一些比特,可以驗(yàn)證數(shù)據(jù)的有效性。利用一個(gè)以上的校驗(yàn)位,漢明碼不僅可以驗(yàn)證數(shù)據(jù)是否有效,還能在數(shù)據(jù)出錯(cuò)

25、的情況下指明錯(cuò)誤位置。在接受端通過(guò)糾錯(cuò)譯碼自動(dòng)糾正傳輸中的差錯(cuò)來(lái)實(shí)現(xiàn)碼糾錯(cuò)功能,稱為前向糾錯(cuò)FEC。在數(shù)據(jù)鏈路中存在大量噪音時(shí),F(xiàn)EC可以增加數(shù)據(jù)吞吐量。通過(guò)在傳輸碼列中加入冗余位(也稱糾錯(cuò)位)可以實(shí)現(xiàn)前向糾錯(cuò)。但這種方法比簡(jiǎn)單重傳協(xié)議的成本要高。漢明碼利用奇偶?jí)K機(jī)制降低了前向糾錯(cuò)的成本。4.2校驗(yàn)方法 進(jìn)行奇偶校驗(yàn)的方法是先計(jì)算數(shù)據(jù)中1的個(gè)數(shù),通過(guò)增加一個(gè)0或1(稱為校驗(yàn)位),使1的個(gè)數(shù)變?yōu)槠鏀?shù)(奇校驗(yàn))或偶數(shù)(偶校驗(yàn))。例如,數(shù)據(jù)1001總共是4個(gè)比特位,包括2個(gè)1,1的數(shù)目是偶數(shù),因此,如果是偶校驗(yàn),那么增加的校驗(yàn)位就是一個(gè)0,反之,增加一個(gè)1作為校驗(yàn)位。通過(guò)“異或”運(yùn)算來(lái)實(shí)現(xiàn)偶校驗(yàn),“

26、同或”運(yùn)算來(lái)實(shí)現(xiàn)奇校驗(yàn)。單個(gè)比特位的錯(cuò)誤可以通過(guò)計(jì)算1的數(shù)目是否正確來(lái)檢測(cè)出來(lái),如果1的數(shù)目錯(cuò)誤,說(shuō)明有一個(gè)比特位出錯(cuò),這表示數(shù)據(jù)在傳輸過(guò)程中受到噪音影響而出錯(cuò)。利用更多的校驗(yàn)位,漢明碼可以檢測(cè)兩位碼錯(cuò),每一位的檢錯(cuò)都通過(guò)數(shù)據(jù)中不同的位組合來(lái)計(jì)算出來(lái)。校驗(yàn)位的數(shù)目與傳輸數(shù)據(jù)的總位數(shù)有關(guān),可以通過(guò)漢明規(guī)則進(jìn)行計(jì)算: d+p+1<=2的p次方 d表示傳輸數(shù)據(jù)位數(shù)目,p表示校驗(yàn)位數(shù)目。兩部分合稱漢明碼字,通過(guò)將數(shù)據(jù)位與一個(gè)生成矩陣相乘,可以生成漢明碼字。 2008-07-05 19:10 針對(duì)4位數(shù)據(jù)的漢明碼編碼示意圖 漢明碼是一個(gè)在原有數(shù)據(jù)中插入若干校驗(yàn)碼來(lái)進(jìn)行錯(cuò)誤檢查和糾正的編碼技術(shù)。以典

27、型的4位數(shù)據(jù)編碼為例,漢明碼將加入3個(gè)校驗(yàn)碼,從而使實(shí)際傳輸?shù)臄?shù)據(jù)位達(dá)到7個(gè)(位),它們的位置如果把上圖中的位置橫過(guò)來(lái)就是: 數(shù)據(jù)位 1234567 代碼 P1 P2 D8 P3 D4D2 D1 說(shuō)明 第1個(gè)漢明碼 第2個(gè)漢明碼 第1個(gè)數(shù)據(jù)碼 第3個(gè)漢明碼 第2個(gè)數(shù)據(jù)碼 第3個(gè)數(shù)據(jù)碼 第4個(gè)數(shù)據(jù)碼 注:Dx中的x是2的整數(shù)冪(下面的冪都是指整數(shù)冪)結(jié)果,多少冪取決于碼位,D1是0次冪,D8是3次冪,想想二進(jìn)制編碼就知道了。另外,漢明碼加插的位置也是有規(guī)律的。以四位數(shù)據(jù)為例,第一個(gè)漢明碼是第一位,第二個(gè)是第二位,第三個(gè)是第四位,1、2、4都是2的整數(shù)冪結(jié)果,而這個(gè)冪次數(shù)是從0開始的整數(shù)。這樣我們

28、可以推斷出來(lái),漢明碼的插入位置為1(20 (注:20表示2的0次冪))、2(21)、4(22)、8(23)、16(24)、32(25)4.3漢明碼編碼4.3.1漢明碼對(duì)高斯白噪聲信道隨機(jī)信號(hào)源:function out,rc=inform(k) rc=rand(k,1); for n=1:k if rc(n)>=0.5 out(n)=1; else out(n)=0; end end產(chǎn)生高斯噪聲:function out=noise(snr,k,r)snr=10(snr/10);rate=k/(k+r);q=1/(sqrt(2*snr*rate);out=randn(1,k+r)*q;漢

29、明碼編碼:function code=hamming(ic,k,P)IG=eye(k);G=IG,P'code=rem(ic*G,2);漢明碼譯碼:function out=dehamming(in,k,r,P)m=k+r;IH=eye(r);H=P,IH;S=rem(in*H',2);n=0;while n<m n=n+1; h=H(:,n); if S=h' break; endendin(n)=1-in(n);for i=1:k out(i)=in(i);end 調(diào)制:function out=modd(in,k,r)m=k+r;for n=1:m if i

30、n(n)<1 out(n)=-1; else out(n)=1; endend解調(diào):function out=demod(in,k,r)m=k+r;for n=1:m if in(n)<0 out(n)=0; else out(n)=1; endend總程序k=4; %信息位r=3; %監(jiān)督位P=1 1 1 0; %校驗(yàn)矩陣 0 1 1 1; 1 1 0 1;SNR=1; %信噪比N=1000; %測(cè)試的數(shù)據(jù)包數(shù)目w=0; %譯碼錯(cuò)誤碼元數(shù)目統(tǒng)計(jì)的變量n=1; while n<N %測(cè)試數(shù)據(jù)包 ic,rc=inform(k); %產(chǎn)生隨機(jī)信號(hào)源 hc=hamming(ic,k

31、,P); %漢明碼編碼 mc=modd(hc,k,r); %調(diào)制 nc=mc+noise(SNR,k,r); %通過(guò)帶噪聲信道 dmc=demod(nc,k,r); %解調(diào) dhc=dehamming(dmc,k,r,P); %漢明碼譯碼 for m=1:k %統(tǒng)計(jì)譯碼錯(cuò)誤碼元數(shù) if dhc(m)=ic(m) w=w+1; end end n=n+1;endBER=w/(N*k) %計(jì)算誤碼率semilogy(SNR,BER);仿真結(jié)果分析:圖4.3.1漢明碼對(duì)AWGN信道仿真的誤碼率曲線圖對(duì)圖4的觀察,我們可以看到,在高斯白噪聲信道里當(dāng)信噪比越來(lái)越大時(shí),誤碼率越來(lái)越低,到一定程度,信道的誤

32、碼率會(huì)為0。仿真結(jié)果和理論結(jié)果基本一致。4.3.2漢明碼對(duì)二進(jìn)制對(duì)稱信道的仿真% (7,4)漢明碼仿真 %定義變量(7,4)漢明碼模擬k = 4; % n = 7; % p_vector = 0.1:0.01:1; % 向量P的值,誤碼率N = length(p_vector); % p_vector的長(zhǎng)度RUNS = 5000; % 運(yùn)行數(shù)% 碼字表xtable = 0 0 0 0 0 0 0; . 1 1 0 1 0 0 0; . 0 1 1 0 1 0 0; . 1 0 1 1 1 0 0; . 1 1 1 0 0 1 0; . 0 0 1 1 0 1 0; . 1 0 0 0 1 1

33、0; . 0 1 0 1 1 1 0; . 1 0 1 0 0 0 1; . 0 1 1 1 0 0 1; . 1 1 0 0 1 0 1; . 0 0 0 1 1 0 1; . 0 1 0 0 0 1 1; . 1 0 0 1 0 1 1; . 0 0 1 0 1 1 1; . 1 1 1 1 1 1 1;for (p_i=1:N) error = 0; % 錯(cuò)誤的數(shù) p=p_vector(p_i); for (r=1:RUNS) %生成4位的信息塊 z = unifrnd(0, 1, 1, 4); %0和1的4位串 w = round(z); %圓的Z值%找到行的索引,二進(jìn)制轉(zhuǎn)換: m =

34、 w(1) + w(2)*2 + w(3)*4 + w(4)*8; x = xtable(m + 1, :); z = unifrnd(0, 1, 1, 7); % 0和1的7位隨機(jī)字符串 zi = find(z <= p); %錯(cuò)誤的位置% 誤比特率 e = zeros(1,7); % 創(chuàng)建一個(gè)0的7位串 e(zi) = ones(size(zi); % 創(chuàng)建一個(gè)字符串的大小Zi y = xor(x,e); % 異或X和E% for(q=1:16) dH(q) = sum(xor(y, xtable(q,:); % 比較接收到的碼字矢量 if(dH(q)<=1) wh = xta

35、ble(q, 4:7); end end% 計(jì)算誤碼率 dHw = sum(xor(w,wh); error = error + dHw; end BER(p_i) = error/(RUNS*4); % 誤碼率計(jì)算 P(p_i)=p; % 存到pendPs=logspace(-4,0,200);Pb_high = 1 - (1-Ps).7 + 7.*(1-Ps).6.*Ps); Pb_low = (1 - (1-Ps).7 + 7.*(1-Ps).6.*Ps)/k; figure(1)plot(P, BER, 'bx', Ps, Pb_high, 'k-',

36、Ps, Pb_low, 'k-')legend('Simulated','Analytical')xlabel('Probability of Error for BSC (p)')ylabel('BER')title('Figure 1 - Bit Error Rate for Hamming code over BSC')仿真出圖4.3.2圖4.3.2 漢明碼對(duì)BSC信道編碼后誤碼率的曲線圖 如上圖4.3.2中,可以看到藍(lán)色的曲線是模擬后的誤碼率曲線,黑色的曲線是分析的誤碼率曲線。上面黑色曲線是

37、概率誤差p最大值的誤碼率,下面黑色的曲線是概率誤差p最小值的誤碼率。從圖中可以看出概率誤差最大,BSC信道的誤碼率就越高。5.卷積碼5.1卷積碼定義與原理卷積碼是一種向前糾錯(cuò)控制編碼。它將連續(xù)的信息比特序列映射為連續(xù)的編碼器輸出符號(hào)。這種映射是高度結(jié)構(gòu)化的,使得卷積碼的譯碼方法與分組碼譯碼所采用的方法完全不同??梢则?yàn)證的是在同樣復(fù)雜度情況下,卷積碼的編碼增益要大于分組碼的編碼增益。對(duì)于某個(gè)特定的應(yīng)用,采用分組編碼還是采用卷積編碼哪一種更好則取決于這一應(yīng)用的具體情況和進(jìn)行比較時(shí)可用的技術(shù)。卷積編碼的最佳譯碼準(zhǔn)則為:在給定已知編碼結(jié)構(gòu)、信道特性和接收序列的情況下,譯碼器將把與已經(jīng)發(fā)送的序列最相似的

38、序列作為傳送的碼字序列的估值。對(duì)于二進(jìn)制對(duì)稱信道,最相似傳送序列就是在漢明距離上與接收序列最近的序列。卷積碼的譯碼方法有兩大類:一類是大數(shù)邏輯譯碼,又稱門限譯碼(硬判決,編者注);另一種是概率譯碼(軟判決,編者注),概率譯碼又分為維特比譯碼和序列譯碼兩種。門限譯碼方法是以分組碼理論為基礎(chǔ)的,其譯碼設(shè)備簡(jiǎn)單,速度快,但其誤碼性能要比概率譯碼法差。5.2維特比譯碼原理采用概率譯碼的基本思想是:把已接收序列與所有可能的發(fā)送序列做比較,選擇其中碼距最小的一個(gè)序列作為發(fā)送序列。如果發(fā)送L組信息比特,那么對(duì)于(n,k)卷積碼來(lái)說(shuō),可能發(fā)送的序列有2kL個(gè),計(jì)算機(jī)或譯碼器需存儲(chǔ)這些序列并進(jìn)行比較,以找到碼距

39、最小的那個(gè)序列。當(dāng)傳信率和信息組數(shù)L較大時(shí),使得譯碼器難以實(shí)現(xiàn)。維特比算法則對(duì)上述概率譯碼做了簡(jiǎn)化,以至成為了一種實(shí)用化的概率算法。它并不是在網(wǎng)格圖上一次比較所有可能的2kL條路徑(序列),而是接收一段,計(jì)算和比較一段,選擇一段最大似然可能的碼段,從而達(dá)到整個(gè)碼序列是一個(gè)最大似然值得序列。下面以圖5.1的(2,1,3)卷積碼編碼器所編出的碼為例,來(lái)說(shuō)明維特比解碼的方法和運(yùn)作過(guò)程。為了能說(shuō)明解碼過(guò)程,這里給出該碼的狀態(tài)圖,如圖5.2所示。mjmj-1mj-2輸出序列m1,m2,mj,y1jy2j輸入序列00adcb110011010110圖5.1 (2,1,3)卷積碼編碼器 圖5.2 (2,1,

40、3)卷積碼狀態(tài)圖維特比譯碼需要利用圖來(lái)說(shuō)明移碼過(guò)程。根據(jù)卷積碼畫網(wǎng)格的方法,我們可以畫出該碼的網(wǎng)格圖,如圖5.3所示。該圖設(shè)輸入信息數(shù)目L=5,所以畫L+N=8個(gè)時(shí)間單位,圖中分別標(biāo)以0至7。這里設(shè)編碼器從a狀態(tài)開始運(yùn)作。該網(wǎng)格圖的每一條路徑都對(duì)應(yīng)著不同的輸入信息序列。由于所有可能輸入信息序列共有2kL個(gè),因而網(wǎng)格圖中所有可能的路徑也為2kL條。這里節(jié)點(diǎn)a=00,b=01,c=10,d=11。abcd節(jié)點(diǎn)號(hào)0123456700000000000000111111111111111100000101010101010101010101111110101010圖5.3 (2,1,3)卷積碼網(wǎng)格圖設(shè)

41、輸入編碼器的信息序列為(11011000),則由編碼器對(duì)應(yīng)輸出的序列為Y=(1101010001011100),編碼器的狀態(tài)轉(zhuǎn)移路線為abdcbdca。若收到的序列R=(0101011001011100),對(duì)照網(wǎng)格圖來(lái)說(shuō)明維特比譯碼的方法。由于該卷積碼的約束長(zhǎng)度為6位,因此先選擇接收序列的前6位序列R1=(010101)同到達(dá)第3時(shí)刻的可能的8個(gè)碼序列(即8條路徑)進(jìn)行比較,并計(jì)算出碼距。該例中到達(dá)第3時(shí)刻a點(diǎn)的路徑序列是(000000)和(111011),他們與R1的距離分別為3和4;到達(dá)第3時(shí)刻b點(diǎn)的路徑序列是(000011)和(111000),他們與R1的距離分別為3和4;到達(dá)第3時(shí)刻c

42、點(diǎn)的路徑序列是(001110)和(110101),他們與R1的距離分別為4和1;到達(dá)第3時(shí)刻d點(diǎn)的路徑序列是(001101)和(110110),他們與R1的距離分別為2和3。上述每個(gè)節(jié)點(diǎn)都保留碼距較小的路徑作為幸存路徑,所以幸存路徑碼序列是(000000)、(000011)、(1101001)和(001101),如圖5.4所示。用于上面類似的方法可以得到第4、5、6、7時(shí)刻的幸存路徑。abcd節(jié)點(diǎn)號(hào)0123000000111111010101圖5.4 維特比譯碼第3時(shí)刻幸存路徑需要指出的是,對(duì)于某個(gè)節(jié)點(diǎn),如果比較兩條路徑與接收序列的累計(jì)碼距值相等時(shí),則可以任意選者一條路徑作為幸存路徑,吃時(shí)不會(huì)

43、影響最終的譯碼結(jié)果。在碼的終了時(shí)刻a狀態(tài),得到一條幸存路徑。如果2.5所示。由此可看到譯碼器abcd節(jié)點(diǎn)號(hào)0123110101456780001011100圖5.5 第8時(shí)刻幸存路徑輸出是R=(1101010001011100),即可變換成序列(11011000),恢復(fù)了發(fā)端原始信息。比較R和R序列,可以看到在譯碼過(guò)程中已糾正了在碼序列第1和第7位上的差錯(cuò)。當(dāng)然如果差錯(cuò)出現(xiàn)太頻繁,以致超出卷積碼的糾錯(cuò)能力,還是會(huì)發(fā)生糾誤的。5.3卷積碼譯碼器對(duì)高斯白噪聲信道的設(shè)計(jì)與仿真整個(gè)設(shè)計(jì)的結(jié)構(gòu)框圖如下圖5.3信源模塊信道信宿模塊信號(hào)編譯碼器約定參數(shù)信號(hào)信號(hào) 5.3結(jié)構(gòu)框圖本設(shè)計(jì)由3個(gè)子系統(tǒng)組成:信源模塊

44、對(duì)隨機(jī)二進(jìn)制信號(hào)進(jìn)行卷積碼和二進(jìn)制相位調(diào)制,輸出基帶調(diào)制信號(hào);信道模塊是一個(gè)高斯白噪聲信道;信宿模塊對(duì)調(diào)制信號(hào)進(jìn)行軟判決譯碼,得到原始信息序列,并且計(jì)算調(diào)制信號(hào)的誤碼率。5.3.1卷積碼譯碼器的設(shè)計(jì)與仿真信源模塊由貝努利二進(jìn)制序列產(chǎn)生器、卷積碼編碼器以及二進(jìn)制相位調(diào)制3個(gè)模塊組成,如下圖5.3.1所示5.3.1信源模塊系統(tǒng)框圖各個(gè)模塊的參數(shù)設(shè)置分別如表5.1表5.3所示。 表5.1 Bernoulli Binary Generator(貝努利二進(jìn)制序列產(chǎn)生器)的參數(shù)設(shè)置參數(shù)名稱參數(shù)值模塊類型Bernoulli Binary GeneratorProbability of zero0.5Init

45、ial seed25741Sample time0.0001Frame-based outputCheckedSamples per frame10000表5.2 Convolutional Encoder(卷積碼編碼器)的參數(shù)設(shè)置參數(shù)名稱參數(shù)值模塊類型Convolutional EncoderTrellisPoly2trellis(7,171 133)ResetOn each frame表5.3 BPSK Modulator Baseband的參數(shù)設(shè)置參數(shù)名稱參數(shù)值模塊類型BPSK Modulator BasebandPhase offset(rad)0Samples per symbol1

46、本設(shè)計(jì)使用相對(duì)較簡(jiǎn)單的一個(gè)加性高斯白噪聲信道作為噪聲信道,它在二進(jìn)制相位調(diào)制信號(hào)中疊加高斯白噪聲。加性高斯白噪聲模塊的參數(shù)設(shè)置如表5.4。 表5.4 AWGN Channel(加性高斯白噪聲模塊)的參數(shù)設(shè)置參數(shù)名稱參數(shù)值模塊類型AWGN ChannelInitial seed1237ModeSignal to noise ratio(SNR)SNR(dB)SNRInput signal power(watts)1信道模塊如下圖5.3.2所示。 圖5.3.2 信道模塊示意圖信宿模塊在接收到二進(jìn)制相位調(diào)制信號(hào)后,首先由BPSK Demodulator Baseband (二進(jìn)制相位解調(diào)模塊)對(duì)信號(hào)

47、進(jìn)行量化,得到硬判決量化信號(hào),然后通過(guò)Viterbi Decoder(維特比譯碼器)對(duì)軟判決信號(hào)實(shí)施譯碼。譯碼輸出信號(hào)和信源模塊產(chǎn)生的原始信號(hào)輸入到Error Rate Calculator(誤比特率統(tǒng)計(jì)模塊)中,統(tǒng)計(jì)得到的數(shù)據(jù)一方面通過(guò)Display(顯示模塊)顯示出來(lái),另一方面通過(guò)一個(gè)Selector(選擇器)把其中的第一個(gè)元素(即編碼信號(hào)的誤比特率)保存到工作區(qū)變量BitErrorRate中。信宿模塊如下圖5.3.3所示。圖5.3.3 信宿模塊Sink各關(guān)鍵模塊參數(shù)設(shè)置如表5.5、表5.6所示。表5.5 BPSK Demodulator Baseband(二進(jìn)制相位解調(diào)模塊)的參數(shù)設(shè)置參

48、數(shù)名稱參數(shù)值模塊類型BPSK Demodulator BasebandPhase offset(rad)0Decision typeHard decisionOutput data typeInherit via internal rule表5.6 Viterbi Decoder(維特比譯碼器)的參數(shù)設(shè)置參數(shù)名稱參數(shù)值模塊類型Viterbi DecoderTrellis structurepoly2trellis(7, 171 133)Decision typeHard decisionTreceback depth1000Operation modeTruncated將此完整設(shè)計(jì)保存,命名為

49、convh.mdl,如下圖5.3.4圖5.3.4 完整設(shè)計(jì)5.3.2簡(jiǎn)化維特比譯碼器的仿真為了驗(yàn)證譯碼模塊的正確性,便讓其進(jìn)行最簡(jiǎn)模式運(yùn)行,為此,臨時(shí)設(shè)計(jì)一個(gè)簡(jiǎn)化信號(hào)系統(tǒng),關(guān)閉信道噪聲,不進(jìn)行二進(jìn)制相位的調(diào)制與解調(diào),去掉誤比特率統(tǒng)計(jì)模塊。為了能看到輸入二進(jìn)制碼和譯碼輸出二進(jìn)制碼,增加了兩個(gè)To Workspace(結(jié)果輸入到工作區(qū)模塊),整個(gè)系統(tǒng)模塊框圖如圖5.3.5所示。圖5.3.5 簡(jiǎn)化譯碼模塊框圖同時(shí),為了便于觀察,將Bernoulli Binary Generator(貝努利二進(jìn)制序列產(chǎn)生器)的參數(shù)設(shè)置為如表5.7所示,以產(chǎn)生簡(jiǎn)單的15位二進(jìn)制隨機(jī)碼,也將Viterbi Decoder

50、的Trceback depth值改為5。將To Workspace1模塊和To Workspace模塊的變量名分別設(shè)置為pdata和data。表5.7 簡(jiǎn)化譯碼模塊的Bernoulli Binary Generator的參數(shù)設(shè)置參數(shù)名稱參數(shù)值模塊類型Bernoulli Binary GeneratorProbability of zero0.5Initial seed5Sample time10Frame-based outputCheckedSamples per frame5運(yùn)行仿真(),在matlab的命令窗口中輸入pdata和data分別得到相應(yīng)的二進(jìn)制序列。對(duì)所得序列分別截圖,可得如

51、下所示結(jié)果??梢?,譯碼器能夠正確進(jìn)行譯碼,所設(shè)計(jì)簡(jiǎn)化譯碼器正確,因而,從理論上可推導(dǎo),原設(shè)計(jì)正確。>> datadata = 1 1 0 1 1>> pdatapdata = 1 1 0 1 15.3.3卷積碼譯碼器的誤碼率分析編制M文件convolutionh.m,使convh.mdl在不同的信噪比條件下重復(fù)執(zhí)行前面建立的項(xiàng)目convh.mdl。然后繪制信道的信噪比與編碼信號(hào)誤比特率之間的關(guān)系曲線圖。M文件代碼如下:%x表示信噪比x=-10:5;%y表示信號(hào)的誤比特率y=x;%準(zhǔn)備一個(gè)空白圖形hold off;%重復(fù)運(yùn)行convh.mdl,檢驗(yàn)不同條件下硬判決譯碼的性

52、能 for i=1:length(x) %信道的信噪比依次取x中的元素 SNR=x(i); %運(yùn)行仿真程序,得到的誤比特率保存在工作區(qū)變量BitErrorRate中 sim('convh'); %計(jì)算BitErrorRate的均值作為本次仿真的誤比特率 y(i)=mean(BitErrorRate); end%繪制x和y的關(guān)系曲線圖,縱坐標(biāo)采用對(duì)數(shù)坐標(biāo)semilogy(x,y);%保持已經(jīng)繪制的圖形hold on執(zhí)行此M文件,得到如下圖5.3.4所示的關(guān)系曲線圖,由此圖可見,隨著信道信噪比的提升,維特比譯碼所得結(jié)果的誤比特率越低,信道的可信度越高,信噪比在大于-2時(shí)信道的誤碼率開始明

溫馨提示

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

評(píng)論

0/150

提交評(píng)論