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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

13、據(jù)單元首先到達(dá)的是數(shù)據(jù),然后是CRC校驗(yàn)碼。接收方將整個(gè)數(shù)據(jù)串當(dāng)作一個(gè)整體去除以用來產(chǎn)生循環(huán)冗余校驗(yàn)余數(shù)的同一個(gè)除數(shù)。如果數(shù)據(jù)串無差錯(cuò)地到達(dá)接收方,循環(huán)冗余校驗(yàn)器將產(chǎn)生余數(shù)0。因此數(shù)據(jù)單元將通過檢驗(yàn)。如果在傳輸中數(shù)據(jù)單元被改變,除法將產(chǎn)生非零余數(shù),因此數(shù)據(jù)單元將通不過檢驗(yàn)。3應(yīng)用舉例發(fā)送端:例如:已知:信息碼:1 1 0 1 0 0 1 1 0 1信息多項(xiàng)式:,生成碼:1 1 0 0 1 0生成多項(xiàng)式:。解: 1)* 的積是對(duì)應(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)(按模二算法) 由計(jì)算結(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多項(xiàng)式:生成碼:1011 生成多項(xiàng)式:(r=3) 求:碼字的正確性。若正確,則指出冗余碼和信息碼。解:1) 用CRC 碼(碼字)除以生成碼,余數(shù)為0 ,所以CRC 碼(碼字)正確。2) 因r=3,所以冗余碼是:011,信息碼是:1010。 第2章 MATLAB軟件基本介紹2.1 MATLAB的介紹在當(dāng)今30多個(gè)數(shù)學(xué)類科技應(yīng)用軟件中,就軟件數(shù)學(xué)處理的原始內(nèi)核而言,

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

16、包都是直接以FORTRAN和C語言等編程語言開發(fā)的。這種軟件的缺點(diǎn)是使用面窄、接口簡(jiǎn)陋、程序結(jié)構(gòu)不開放以及沒有標(biāo)準(zhǔn)的基庫,很難適應(yīng)各學(xué)科的最新發(fā)展,因而很難推廣。MATLAB的出現(xiàn),為各國(guó)科學(xué)家開發(fā)學(xué)科軟件提供了新的基礎(chǔ)。在MATLAB問世不久的20世紀(jì)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ù)運(yùn)算等;特殊函數(shù):矩陣求逆、矩陣特征值、貝塞爾函數(shù)和快速付里葉變換等;(3)MATLAB 語言:(MATLAB Language)一種高級(jí)編程語言,包括控制流的描述、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、輸入輸出及面對(duì)對(duì)象編程;(4)句柄圖形:(Handle Graphics) 可以對(duì)各種圖形對(duì)象進(jìn)行更為細(xì)膩的修飾和控制,建立完整的圖形界面的應(yīng)用程序;(5)應(yīng)用程序接口:(Applied Function Interface) MATLAB的應(yīng)用程序接口允許用戶使用C或FORTRAN語言編寫程序與MATLAB連接。2.3 MATLAB的語言特點(diǎn)語言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

32、 電子工業(yè)出版社,2002【5】王福昌,熊兆飛,黃本雄等編著. 通信原理. 清華大學(xué)出版社,2006【6】王興亮著. 數(shù)字通信原理與技術(shù)(第二版). 西安電子科技大學(xué)出版社,2000【7】 沈越泓,高媛媛,魏以民等編著.通信原理. 機(jī)械工業(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); % 得到原始信號(hào)長(zhǎng)度crc_ccitt = 1 1 1 0 1; % 常用的CRC生成多項(xiàng)式add_bit = zeros(1,4); % 添加冗余比特位crc_coded_sequence = uncode_sequence zeros(1,4); % 初始化輸出檢錯(cuò)碼序列uncode_sequence = uncode_sequence add_bit;remainder_bits = uncode_sequence; % 初始化余

34、數(shù)數(shù)組for k = 1:sequence_length % 開始循環(huán)計(jì)算長(zhǎng)除得到最終余數(shù) add_zeros = zeros(1,sequence_length-k); % 加入冗余位參與模2運(yùn)算 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ù)進(jìn)行異或操作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); % 得到冗余編碼的長(zhǎng)度original_sequence = crc_coded_sequence; % 初始化輸出序列 c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論