CRC循環(huán)冗余校驗碼課設(shè)_第1頁
CRC循環(huán)冗余校驗碼課設(shè)_第2頁
CRC循環(huán)冗余校驗碼課設(shè)_第3頁
CRC循環(huán)冗余校驗碼課設(shè)_第4頁
CRC循環(huán)冗余校驗碼課設(shè)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、*實踐教學(xué)* 蘭州理工大學(xué)計算機與通信學(xué)院2014年秋季學(xué)期計算機通信課程設(shè)計 題 目:循環(huán)冗余校驗碼(CRC)的編譯碼仿真實現(xiàn) 專業(yè)班級: 通信工程(1)班 姓 名: 學(xué) 號: 指導(dǎo)教師: 成 績: 摘 要CRC即循環(huán)冗余校驗碼(Cyclic Redundancy Check)是數(shù)據(jù)通信領(lǐng)域中最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。循環(huán)冗余檢查(CRC)是一種數(shù)據(jù)傳輸檢錯功能,對數(shù)據(jù)進行多項式計算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。本次課程設(shè)計研究了糾錯碼及循環(huán)冗余校驗碼的原理, 以及利用MATLAB對其進行了

2、編碼和譯碼仿真,實現(xiàn)了CRC循環(huán)冗余校驗碼的編碼及校驗,在接收端收到通過校驗的碼,從而確定傳輸過程是否出錯,得到的結(jié)論和理論上是一致的。關(guān)鍵詞:循環(huán)冗余校驗碼;檢錯碼; matlab軟件目錄前言1第1章 循環(huán)冗余校驗碼(CRC)的基本原理21.1 循環(huán)冗余校驗碼的基本介紹21.2 循環(huán)冗余校驗碼的幾個基本概念21.3 循環(huán)冗余校驗碼的基本原理3第2章 MATLAB軟件基本介紹52.1 MATLAB的介紹52.2 MATLAB的組成部分52.3 MATLAB的語言特點52.4 MATLAB的優(yōu)勢6第3章 循環(huán)冗余校驗碼(CRC)的詳細設(shè)計73.1 CRC循環(huán)冗余校驗碼的編碼模塊73.2 CRC循

3、環(huán)冗余校驗碼的譯碼模塊73.3 CRC循環(huán)冗余校驗碼的性能分析83.4 CRC循環(huán)冗余校驗碼的生成器和校驗器83.5 CRC循環(huán)冗余校驗碼的程序流程圖93.6 運行結(jié)果及其分析10總結(jié)12參考文獻13附錄14致謝160前言 數(shù)據(jù)通信中的編碼可以分為兩大類,分別是信源編碼和信道編碼。在實際應(yīng)用中,為了提高數(shù)據(jù)通信的可靠性而采取的編碼稱為信道編碼,也稱做抗干擾編碼。一般來講,數(shù)據(jù)通信要求傳輸過程中的誤碼率應(yīng)該足夠低,這樣才能真正符合實際應(yīng)用的具體要求,為了降低數(shù)據(jù)通信線路傳輸?shù)恼`碼率,通常有改善數(shù)據(jù)通信線路傳輸質(zhì)量和差錯檢測控制兩種方法。 實現(xiàn)差錯檢測控制的方法很多,CRC校驗碼是數(shù)據(jù)通信領(lǐng)域中最

4、常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。CRC校驗碼,在早期的通信中運用廣泛,因為早期的通信技術(shù)不夠可靠(不可靠性的來源是通信技術(shù)決定的,比如電磁波通信時受雷電等因素的影響),不可靠的通信就會帶來“確認信息”的困惑,所以對通信的可靠性檢查就需要“校驗”,校驗是從數(shù)據(jù)本身進行檢查,它依靠某種數(shù)學(xué)上約定的形式進行檢查,校驗的結(jié)果是可靠或不可靠,如果可靠就對數(shù)據(jù)進行處理,如果不可靠,就丟棄重發(fā)或者進行修復(fù)。循環(huán)冗余碼校驗英文名稱為Cyclical Redundancy Check,簡稱CRC。CRC校驗碼碼的作用是:發(fā)送方發(fā)送的數(shù)據(jù)發(fā)送給了接收方,但是由于在傳輸過程中信號

5、干擾,可能出現(xiàn)錯誤的碼,造成的結(jié)果就是接收方不清楚收到的數(shù)據(jù)是否就是發(fā)送方要發(fā)的數(shù)據(jù),所以就有了CRC校驗碼。保證了發(fā)送跟接受的數(shù)據(jù)是否一樣,要糾錯的話,還需對軟件進行設(shè)計,畢竟傳輸?shù)氖?進制,如果知道了哪一位出錯了,可以把那一位取反,需要對軟件進行優(yōu)化。CRC也是數(shù)據(jù)通信領(lǐng)域中最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。它是利用除法及余數(shù)的原理來作錯誤偵測的。實際應(yīng)用時,發(fā)送裝置計算出CRC值并隨數(shù)據(jù)一同發(fā)送給接收裝置,接收裝置對收到的數(shù)據(jù)重新計算CRC并與收到的CRC相比較,若兩個CRC值不同,則說明數(shù)據(jù)通訊出現(xiàn)錯誤。 本次課程設(shè)計主要設(shè)計(16,12)校驗碼的編

6、碼與解碼,本次課程設(shè)計是介紹如何通過matlab軟件,采用原理圖輸入法,分別完成相應(yīng)的編碼和解碼;最后,檢查編碼解碼過程是否發(fā)生錯誤,通過課程設(shè)計驗證CRC校驗碼的編碼譯碼過程。第1章 循環(huán)冗余校驗碼(CRC)的基本原理1.1 循環(huán)冗余校驗碼的基本介紹 CRC碼是由兩部分組成的,前部分是信息碼,就是需要校驗的信息,后部分是校驗碼,如果CRC碼共長n個bit,信息碼長k個bit,就稱為(n,k)碼。CRC 校驗的基本思想是利用線性編碼理論,在發(fā)送端根據(jù)要傳送的k 位二進制碼序列,以一定的規(guī)則產(chǎn)生一個校驗用的監(jiān)督碼(CRC 碼)r 位,并附在信息后邊,構(gòu)成一個新的二進制碼序列數(shù)共 (k+r) 位,

7、最后發(fā)送出去。在接收端,則根據(jù)信息碼和CRC 碼之間所遵循的規(guī)則進行檢驗,以確定傳送中是否出錯。 16 位的CRC 碼產(chǎn)生的規(guī)則是先將要發(fā)送的二進制序列數(shù)左移16 位后,再除以一個多項式,最后所得到的余數(shù)既是CRC 碼。求CRC 碼所采用模2 加減運算法則,既是不帶進位和借位的按位加減,這種加減運算實際上就是邏輯上的異或運算,加法和減法等價,乘法和除法運算與普通代數(shù)式的乘除法運算是一樣,符合同樣的規(guī)律。接收方將接收到的二進制序列數(shù)(包括信息碼和CRC 碼)除以多項式,如果余數(shù)為0,則說明傳輸中無錯誤發(fā)生,否則說明傳輸有誤。1.2 循環(huán)冗余校驗碼的幾個基本概念 1.2.1 多項式與二進制數(shù)碼 多

8、項式和二進制數(shù)有直接對應(yīng)關(guān)系:x的最高冪次對應(yīng)二進制數(shù)的最高位,以下各位對應(yīng)多項式的各冪次,有此冪次項對應(yīng)1,無此冪次項對應(yīng)0??梢钥闯觯簒的最高冪次為R,轉(zhuǎn)換成對應(yīng)的二進制數(shù)有R+1位。多項式包括生成多項式G(x)和信息多項式f(x)。如生成多項式為,可轉(zhuǎn)換為二進制數(shù)碼11011。而發(fā)送信息位 1111,可轉(zhuǎn)換為數(shù)據(jù)多項式為。1.2.2 生成多項式 生成多項式是接受方和發(fā)送方的一個約定,也就是一個二進制數(shù),在整個傳輸過程中,這個數(shù)始終保持不變。在發(fā)送方,利用生成多項式對信息多項式做模2除生成校驗碼。在接受方利用生成多項式對收到的編碼多項式做模2除檢測和確定錯誤位置。應(yīng)滿足以下條件: a、生成

9、多項式的最高位和最低位必須為1; b、當(dāng)被傳送信息(CRC碼)任何一位發(fā)生錯誤時,被生成多項式做模2除后應(yīng)該使余數(shù)不為0; c、不同位發(fā)生錯誤時,應(yīng)該使余數(shù)不同; d、對余數(shù)繼續(xù)做模2除,應(yīng)使余數(shù)循環(huán)。1.2.3 模2除(按位除) 第一步,要在數(shù)據(jù)位(被除數(shù))后邊補 0 ,0 的個數(shù)比除數(shù)(生成多項式)少一位;第二步,做除法,從被除數(shù)的頭五位減去五位的除數(shù)。除數(shù)的每一位都與被除數(shù)的對應(yīng)位在不涉及上一位的情況下獨立進行減法(實際進行的是模 2 加)。在本此課程設(shè)計中,除數(shù)11101 與被除數(shù)的前五位10111進行的是模 2 加,得到1010 (余數(shù) 1 前面的 0 被省略)。在被除數(shù)中下一個沒有

10、使用過的比特接著被抄錄下來,使得余數(shù)的位數(shù)和除數(shù)的位數(shù)相同。如果位數(shù)不夠,在商位補0(這與一般除法相同),因此,下一步就是 11110 11001 ,結(jié)果是 111 ,依次類推。在二進制除法中,除數(shù)總是以 1 開頭的,然后從上一次的被除數(shù) / 余數(shù)中與除數(shù)位數(shù)相同的部分中減去除數(shù),并且只能從最左位是 1 的被除數(shù) / 余數(shù)中減去除數(shù)。每當(dāng)被除數(shù) / 余數(shù)的最左位是 0 時,就在該步驟中把 0 丟棄,再把被除數(shù)中的下一個未使用比特抄錄下來填充余數(shù),同時對應(yīng)的商數(shù)位補一個零,并按上述方法進行二進制除法運算,一直重復(fù)這個過程直到被除數(shù)中所有比特都被使用過。1.3 循環(huán)冗余校驗碼的基本原理1.3.1循

11、環(huán)冗余校驗碼的編碼規(guī)則CRC碼是由兩部分組成,前部分是信息碼,就是需要校驗的信息,后部分是校驗碼,如果CRC碼共長n個bit,信息碼長k個bit,就稱為(n,k)碼。 它的編碼規(guī)則是: 1移位將原信息碼序列(kbit)左移r位(k+r=n) 2相除運用一個生成多項式G(x)(也可看成二進制數(shù))用模2除上面的式子,得到的余數(shù)就是校驗碼。 非常簡單,要說明的是:模2除就是在除的過程中用模2加,模2加實際上就是我們熟悉的異或運算,就是加法不考慮進位,公式是: 0+0=1+1=0,1+0=0+1=1 即異則真,非異則假。由此得到定理:a+b+b=a 也就是模2減和模2加真值表完全相同。 有了加減法就可

12、以用來定義模2除法,于是就可以用生成多項式G(x)生成CRC校驗碼。1.3.2 CRC碼生成和校驗1.CRC碼生成第一步:在數(shù)據(jù)單元(k位)的末尾加上r個0。r是一個比預(yù)定除數(shù)的比特位數(shù)(r十1)少1的數(shù)。第二步:采用二進制除法將新的加長的數(shù)據(jù)單元(k+r位)除以除數(shù)。由此除法產(chǎn)生的余數(shù)就是循環(huán)冗余碼校驗碼第三步:用從第二步得到的r個比特的CRC碼替換數(shù)據(jù)單元末尾附加的r個0。如果余數(shù)位數(shù)小于r,最左的缺省位數(shù)為0。如果除法過程根本未產(chǎn)生余數(shù)(也就是說,原始的數(shù)據(jù)單元本身就可以被除數(shù)整除)那么以r個0作為CRC碼替換余數(shù)所在的位置。產(chǎn)生的比特模式正好能被除數(shù)整除。2.CRC碼校驗到達接收方的數(shù)

13、據(jù)單元首先到達的是數(shù)據(jù),然后是CRC校驗碼。接收方將整個數(shù)據(jù)串當(dāng)作一個整體去除以用來產(chǎn)生循環(huán)冗余校驗余數(shù)的同一個除數(shù)。如果數(shù)據(jù)串無差錯地到達接收方,循環(huán)冗余校驗器將產(chǎn)生余數(shù)0。因此數(shù)據(jù)單元將通過檢驗。如果在傳輸中數(shù)據(jù)單元被改變,除法將產(chǎn)生非零余數(shù),因此數(shù)據(jù)單元將通不過檢驗。3應(yīng)用舉例發(fā)送端:例如:已知:信息碼:1 1 0 1 0 0 1 1 0 1信息多項式:,生成碼:1 1 0 0 1 0生成多項式:。解: 1)* 的積是對應(yīng)的碼字是1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 02) 積G(X)(按模二算法) 由計算結(jié)果知冗余碼是1 1

14、 0 0 1 1 0 0 0 0 1 1 1 0 1 0,CRC碼(碼字)就是1 1 0 1 0 0 1 1 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0 1 0接收端:例如:已知:接受碼字:1 0 1 0 0 1 1多項式:生成碼:1011 生成多項式:(r=3) 求:碼字的正確性。若正確,則指出冗余碼和信息碼。解:1) 用CRC 碼(碼字)除以生成碼,余數(shù)為0 ,所以CRC 碼(碼字)正確。2) 因r=3,所以冗余碼是:011,信息碼是:1010。 第2章 MATLAB軟件基本介紹2.1 MATLAB的介紹在當(dāng)今30多個數(shù)學(xué)類科技應(yīng)用軟件中,就軟件數(shù)學(xué)處理的原始內(nèi)核而言,

15、可分為兩大類。一類是數(shù)值計算型軟件,如 MATLAB、Xmath、Gauss等,這類軟件長于數(shù)值計算,對處理大批數(shù)據(jù)效率高;另一類是數(shù)學(xué)分析型軟件,如Mathematica、Maple等,這類軟件以符號計算見長,能給出解析解和任意精度解,其缺點是處理大量數(shù)據(jù)時效率較低。MathWorks公司順應(yīng)多功能需求之潮流,在其卓越數(shù)值計算和圖示能力的基礎(chǔ)上,又率先在專業(yè)水平上開拓了其符號計算、文字處理、可視化建模和實時控制能力,開發(fā)了適合多學(xué)科、多部門要求的新一代科技應(yīng)用軟件MATLAB。經(jīng)過多年的國際競爭,MATLAB 已經(jīng)占據(jù)了數(shù)值型軟件市場的主導(dǎo)地位。在MATLAB進入市場前,國際上的許多應(yīng)用軟件

16、包都是直接以FORTRAN和C語言等編程語言開發(fā)的。這種軟件的缺點是使用面窄、接口簡陋、程序結(jié)構(gòu)不開放以及沒有標(biāo)準的基庫,很難適應(yīng)各學(xué)科的最新發(fā)展,因而很難推廣。MATLAB的出現(xiàn),為各國科學(xué)家開發(fā)學(xué)科軟件提供了新的基礎(chǔ)。在MATLAB問世不久的20世紀80年代中期,原先控制領(lǐng)域里的一些軟件包紛紛被淘汰或在MATLAB上重建。2.2 MATLAB的組成部分(1)開發(fā)環(huán)境(development Environment):一組圖形化用戶接口工具和組件的集成:MATLAB桌面、命令窗口、命令歷史窗口、編輯調(diào)試窗口及幫助信息、工作空間、文件和搜索路徑等瀏覽器;(2)MATLAB數(shù)學(xué)函數(shù)庫:(Math

17、 Function Library)基本函數(shù):求和、正弦、余弦和復(fù)數(shù)運算等;特殊函數(shù):矩陣求逆、矩陣特征值、貝塞爾函數(shù)和快速付里葉變換等;(3)MATLAB 語言:(MATLAB Language)一種高級編程語言,包括控制流的描述、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、輸入輸出及面對對象編程;(4)句柄圖形:(Handle Graphics) 可以對各種圖形對象進行更為細膩的修飾和控制,建立完整的圖形界面的應(yīng)用程序;(5)應(yīng)用程序接口:(Applied Function Interface) MATLAB的應(yīng)用程序接口允許用戶使用C或FORTRAN語言編寫程序與MATLAB連接。2.3 MATLAB的語言特點語言

18、簡潔緊湊,使用方便靈活,庫函數(shù)極其豐富。MATLAB程序書寫形式自由,利用其豐富的庫函數(shù)避開繁雜的子程序編程任務(wù),壓縮了一切不必要的編程工作。由于庫函數(shù)都由本領(lǐng)域的專家編寫,用戶不必擔(dān)心函數(shù)的可靠性。可以說, MATLAB甚至具有一定的智能水平,比如上面的解方程,MATLAB會根據(jù)矩陣的特性選擇方程的求解方法,所以用戶根本不用懷疑MATLAB的準確性。運算符豐富。由于MATLAB是用C語言編寫的,MATLAB提供了和C語言幾乎一樣多的運算符,靈活使用MATLAB的運算符將使程序變得極為簡短,具體運算符見附表。MATLAB既具有結(jié)構(gòu)化的控制語句(如for循環(huán)、while循環(huán)、break語句和if

19、語句),又有面向?qū)ο缶幊痰奶匦?。語法限制不嚴格,程序設(shè)計自由度大。例如,在MATLAB里,用戶無需對矩陣預(yù)定義就可使用。程序的可移植性很好,基本上不做修改就可以在各種型號的計算機和操作系統(tǒng)上運行。MATLAB的圖形功能強大。在FORTRAN和C語言里,繪圖都很不容易,但在MATLAB里,數(shù)據(jù)的可視化非常簡單。MATLAB還具有較強的編輯圖形界面的能力。MATLAB的缺點是,它和其他高級程序相比,程序的執(zhí)行速度較慢。由于MATLAB的程序不用編譯等預(yù)處理,也不生成可執(zhí)行文件,程序為解釋執(zhí)行,所以速度較慢。功能強勁的工具箱是MATLAB的另一重大特色。MATLAB包含兩個部分:核心部分和各種可選的

20、工具箱。核心部分中有數(shù)百個核心內(nèi)部函數(shù)。其工具箱又可分為兩類:功能性工具箱和學(xué)科性工具箱。功能性工具箱主要用來擴充其符號計算功能、圖示建模仿真功能、文字處理功能以及與硬件實時交互功能。功能性工具箱能用于多種學(xué)科。而學(xué)科性工具箱是專業(yè)性比較強的,如control、toolbox、signal processing toolbox、communication toolbox等。這些工具箱都是由該領(lǐng)域內(nèi)的學(xué)術(shù)水平很高的專家編寫的,所以用戶無需編寫自己學(xué)科范圍內(nèi)的基礎(chǔ)程序,而直接進行高、精、尖的研究。2.4 MATLAB的優(yōu)勢(1)友好的工作平臺和編程環(huán)境(2)簡單易用的程序語言(3)強大的科學(xué)計算機

21、數(shù)據(jù)處理能力(4)出色的圖形處理功能(5)應(yīng)用廣泛的模塊集合工具箱(6)實用的程序接口和發(fā)布平臺(7)應(yīng)用軟件開發(fā)(包括用戶界面) 第3章 循環(huán)冗余校驗碼(CRC)的詳細設(shè)計3.1 CRC循環(huán)冗余校驗碼的編碼模塊循環(huán)冗余校驗碼CRC它是利用除法及余數(shù)的原理來作錯誤偵測(Error Detecting)的。實際應(yīng)用時,發(fā)送裝置計算出CRC值并隨數(shù)據(jù)一同發(fā)送給接收裝置,接收裝置對收到的數(shù)據(jù)重新計算CRC并與收到的CRC相比較,若兩個CRC值不同,則說明數(shù)據(jù)通訊出現(xiàn)錯誤。根據(jù)應(yīng)用環(huán)境與習(xí)慣的不同,CRC又可分為以下幾種標(biāo)準:CRC-12碼;CRC-16碼;CRC-CCITT碼;CRC-132碼。CR

22、C-12碼通常用來傳送6-bit字符串。CRC-16及CRC-CCITT碼則用是來傳送8-bit字符,其中CRC-16為美國采用,而CRC-CCITT為歐洲國家所采用。CRC-132碼大都被采用在一種稱為Point-to-Point的同步傳輸中本設(shè)計中CRC校驗碼的n=16,k=12,則K位要發(fā)送的信息位可對應(yīng)于一個(k-1)次多項式f(X),r位冗余位則對應(yīng)于一個(r-1)次多項式R(X),由r位冗余位組成的n=k+r位碼字則對應(yīng)于一個(n-1)次多項式T(X)=G(x)*f(X)+R(X)。其編碼過程為:(1)移位將原信息碼(kbit)左移r位(k+r=n)(2)相除運用一個生成多項式G(

23、x)(也可看成二進制數(shù))用模2除上面的式子,得到的余數(shù)就是校驗碼。3.2 CRC循環(huán)冗余校驗碼的譯碼模塊譯碼是該編碼能否得到實際應(yīng)用的關(guān)鍵所在。譯碼器往往比編碼較難實現(xiàn),對于糾錯能力強的糾錯碼更復(fù)雜。根據(jù)不同的糾錯或檢錯目的,循環(huán)碼譯碼器可分為用于糾錯目的和用于檢錯目的的循環(huán)碼譯碼器。 用于糾錯目的的循環(huán)碼的譯碼算法比較復(fù)雜,而用于檢錯目的循環(huán)碼,一般使用ARQ通信方式。檢測過程也是將接受到的碼組進行除法運算,如果除盡,則說明傳輸無誤;如果未除盡,則表明傳輸出現(xiàn)差錯,要求發(fā)送端重發(fā)。用于這種目的的循環(huán)碼經(jīng)常被稱為循環(huán)冗余校驗碼,即CRC校驗碼。CRC校驗碼由于編碼電路、檢錯電路簡單且易于實現(xiàn),

24、因此得到廣泛的應(yīng)用。在通過MODEM傳輸文件的協(xié)議如ZMODEM、XMODEM協(xié)議中均用到了CRC校驗技術(shù)。在磁盤、光盤介質(zhì)存儲技術(shù)中也使用該方法。 在譯碼過程中到達接收方的數(shù)據(jù)單元首先到達的是數(shù)據(jù),然后是CRC校驗碼。接收方將整個數(shù)據(jù)串當(dāng)作一個整體去除以用來產(chǎn)生循環(huán)冗余校驗余數(shù)的同一個除數(shù)。如果數(shù)據(jù)串無差錯地到達接收方,循環(huán)冗余校驗器將產(chǎn)生余數(shù)0。因此數(shù)據(jù)單元將通過檢驗。如果在傳輸中數(shù)據(jù)單元被改變,除法將產(chǎn)生非零余數(shù),因此數(shù)據(jù)單元將通不過檢驗。3.3 CRC循環(huán)冗余校驗碼的性能分析一般情況下,r位生成多項式產(chǎn)生的CRC碼可檢測出所有的單個錯誤和隨機兩位錯誤、奇數(shù)個錯和長度小于等于k位的突發(fā)錯

25、誤。例如,對于r=16的情況,就能檢測出所有突發(fā)長度小于等于16的突發(fā)錯以及99997%的突發(fā)長度為17的突發(fā)錯和99998%的突發(fā)長度大于17的突發(fā)錯。所以CRC碼的檢錯能力還是很強的。這里,突發(fā)錯誤是指幾乎是連續(xù)發(fā)生的一串錯,突發(fā)長度就是指從出錯的第一位到出錯的最后一位的長度(但是,中間并不一定每一位都錯)。 3.4 CRC循環(huán)冗余校驗碼的生成器和校驗器CRC循環(huán)冗余校驗碼的生成器和校驗器如圖1所示: r bit r+1 bit 余數(shù) r bit CRC校驗碼 數(shù)據(jù) 00.0 G(X)數(shù)據(jù)數(shù)據(jù) 0接收,非0拒絕 數(shù)據(jù) 余數(shù) G(X) 發(fā)送方 接收方 圖1 CRC循環(huán)冗余校驗碼的生成器和校驗

26、器3.5 CRC循環(huán)冗余校驗碼的程序流程圖CRC循環(huán)冗余校驗碼的程序流程圖如圖2所示:余數(shù)是否為零 輸出接收端的碼 結(jié)束輸出erro=1開始初始化,隨機產(chǎn)生信息碼并輸出 添加冗余比特位 循環(huán)計算長除 是否除完 合成編碼序列輸出 用合成碼長除生成多項式 是否除完 NY NY NY 圖2 CRC循環(huán)冗余校驗碼的程序流程圖3.6 運行結(jié)果及其分析3.6.1 MATLAB的運行結(jié)果正確譯碼時MATLAB的運行結(jié)果如圖3所示:圖3 MATLAB的運行結(jié)果譯碼發(fā)生錯誤時MATLAB的運行結(jié)果如圖4所示:圖4 MATLAB的運行結(jié)果3.6.2 結(jié)果分析CRC校驗的基本思想是利用線性編碼理論,在發(fā)送端根據(jù)要傳

27、送一個n比特的幀或報文,發(fā)送器生成一個r比特的序列,稱為幀檢驗序列(FCS)。這樣形成的幀將由(n+r)比特組成。這個幀剛好能被某個預(yù)先規(guī)定的數(shù)整除。接收器用相同的數(shù)去除外來的幀,結(jié)果無余數(shù),則認為無差錯。 循環(huán)冗余校驗與奇偶校驗不同,后者是一個字符校驗一次,而前者是一個數(shù)據(jù)塊校驗一次。在同步通信中,幾乎都使用這種校驗方法。 二進制多項式的加減運算為模2加減運算,即兩個碼多項式相加時,對應(yīng)系數(shù)進行模2加減。所謂模2加減就是各位做不帶進位、借位的按位加減。這種加減運算實際上是邏輯上的異或運算,即加法和減法等價。信息多項式和余數(shù)多項式可以合并成一個新的多項式(稱為循環(huán)碼的碼多項式),則該多項式是生

28、成多項式的整數(shù)倍,即能被生成多項式整除。根據(jù)這一原理,在發(fā)送端用信息碼多項式除以生成多項式所得的余數(shù)多項式就是所要加的監(jiān)督位。將循環(huán)碼的碼多項式除以生成多項式,若能除盡,說明傳輸正確,否則說明出錯。CRC校驗的關(guān)鍵是如何求出余數(shù),此余數(shù)即為校驗碼(CRC校驗碼)。以前用數(shù)字電路來實現(xiàn),而現(xiàn)在可以用計算機來完成。為了傳輸?shù)恼_性,在接收端要有一個CRC檢驗器。它的功能和發(fā)生器一樣,當(dāng)收到CRC冗余校驗碼后,做同樣的模2除法(注意,這里采用的生成多項式一定要與發(fā)送端相同)。如果余數(shù)是0,則說明傳輸正確;否則,傳輸錯誤,應(yīng)重傳。本次課設(shè)通過對(16,12)循環(huán)碼的編譯碼的設(shè)計與仿真得出仿真過程得到的

29、結(jié)論與理論是一致的??偨Y(jié)CRC是現(xiàn)代通信領(lǐng)域的重要技術(shù)之一。掌握CRC的算法與實現(xiàn)方法,在通信系統(tǒng)的設(shè)計、通信協(xié)議的分析以及軟件保護等諸多方面,能發(fā)揮很大的作用。在此次課設(shè)中,我學(xué)習(xí)了matlab仿真軟件的運用,我們通過動手實踐操作,進一步學(xué)習(xí)和掌握了有關(guān)CRC原理的知識,加深了對糾錯技術(shù)的認識。在設(shè)計時我們根據(jù)課題要求,復(fù)習(xí)了相關(guān)知識,還查閱了相當(dāng)多的資料,這也在一定程度上拓寬了我們的視野,豐富了我們的知識。做設(shè)計的過程中,我有許多不懂得地方,在老師的指導(dǎo)下我一步步的解決問題完成論文,在完成過程中老師指導(dǎo)我去怎么選擇資料,如何去利用網(wǎng)絡(luò)資源,在這個學(xué)習(xí)的過程中,我了解到MATLAB的實用價值

30、,更深的理解循環(huán)冗余校驗碼的原理。這次課程設(shè)計,使我堅定了我在以后的學(xué)習(xí)中要認真學(xué)好基礎(chǔ)知識,不能只做表面工作。讀書不僅是要讀書還要讀活書,把學(xué)到的知識靈活地運用到實踐中去,達到學(xué)有所用的地步。通過這段時間的親身經(jīng)歷,我感覺自己學(xué)到了:收集、整理資料、共同協(xié)作、分析及處理問題等許多方面的知識。這次課程設(shè)計還讓我們知道了,我們平時所學(xué)的知識如果不加以實踐的話等于紙上談兵。課程設(shè)計主要是我們理論知識的延伸,它的目的主要是要在設(shè)計中發(fā)現(xiàn)問題,鍛煉我們的創(chuàng)新能力,并且自己要能找到解決問題的方案,形成一種獨立的意識。我們還能從設(shè)計中檢驗我們所學(xué)的理論知識到底有多少,鞏固我們已經(jīng)學(xué)會的,不斷學(xué)習(xí)我們所遺漏

31、的新知識,把這門課學(xué)的扎實。當(dāng)然在做課程設(shè)計的過程中總會出現(xiàn)各種問題,在這種情況下我們都會努力尋求最佳路徑解決問題,無形間提高了我們的動手,動腦能力,并且同學(xué)之間還能相互探討問題,研究解決方案,增進大家的團隊意識??偟膩碚f,這次創(chuàng)新課程設(shè)計讓我們收獲頗多,不僅讓我們更深一步理解書本的知識,提高我們分析問題和解決問題的能力,而且讓我們體會到團隊的重要性。 參考文獻【1】孫麗華著. 信息論與糾錯編碼M. 電子工業(yè)出版社,2005【2】潘新民著. 計算機通信技術(shù)M. 電子工業(yè)出版社,2003【3】張應(yīng)中,張德明等編著. 數(shù)據(jù)通信工程. 人民郵電出版社,1996【4】杜煜,姚鴻等編. 計算機網(wǎng)絡(luò)基礎(chǔ).

32、 電子工業(yè)出版社,2002【5】王福昌,熊兆飛,黃本雄等編著. 通信原理. 清華大學(xué)出版社,2006【6】王興亮著. 數(shù)字通信原理與技術(shù)(第二版). 西安電子科技大學(xué)出版社,2000【7】 沈越泓,高媛媛,魏以民等編著.通信原理. 機械工業(yè)出版社,2004 【8】黎洪松,張衛(wèi)剛等編著. 數(shù)字通信原理. 西安電子科技大學(xué)出版社,2005【9】Peter M.Grant.Digital Communications(Second Edition).China Machine Press【10】H.S.Black.Modulation Theory.1993,Chap.4附錄clear;clc;cl

33、ose all;uncode_sequence=randint(1,12)sequence_length = length(uncode_sequence); % 得到原始信號長度crc_ccitt = 1 1 1 0 1; % 常用的CRC生成多項式add_bit = zeros(1,4); % 添加冗余比特位crc_coded_sequence = uncode_sequence zeros(1,4); % 初始化輸出檢錯碼序列uncode_sequence = uncode_sequence add_bit;remainder_bits = uncode_sequence; % 初始化余

34、數(shù)數(shù)組for k = 1:sequence_length % 開始循環(huán)計算長除得到最終余數(shù) add_zeros = zeros(1,sequence_length-k); % 加入冗余位參與模2運算 register_bits = crc_ccitt add_zeros; % 構(gòu)造除數(shù)數(shù)組 if remainder_bits(1) = 0 % 被除數(shù)第一位為0則將除數(shù)所有位置0 register_bits = zeros(1,length(register_bits); endremainder_bits = bitxor(register_bits,remainder_bits); % 將除

35、數(shù)與被除數(shù)進行異或操作register_bits = crc_ccitt; % 將寄存器恢復(fù)為除數(shù)數(shù)組remainder_bits(1) = ; % 去除模2后得到的被除數(shù)的第1位 endadd_len = length(crc_coded_sequence) - length(remainder_bits); % 生成余數(shù)序列的冗余位以疊加到編碼序列remainder_bits = zeros(1,add_len),remainder_bits; % 余數(shù)序列添加冗余crc_coded_sequence = crc_coded_sequence + remainder_bits % 合成編碼序列sequence_length = length(crc_coded_sequence); % 得到冗余編碼的長度original_sequence = crc_coded_sequence; % 初始化輸出序列 c

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論