crc冗余校驗(yàn)實(shí)驗(yàn)報(bào)告

ID:14570592

大?。?3.00 KB

頁(yè)數(shù):4頁(yè)

時(shí)間:2018-07-29

crc冗余校驗(yàn)實(shí)驗(yàn)報(bào)告_第1頁(yè)
crc冗余校驗(yàn)實(shí)驗(yàn)報(bào)告_第2頁(yè)
crc冗余校驗(yàn)實(shí)驗(yàn)報(bào)告_第3頁(yè)
crc冗余校驗(yàn)實(shí)驗(yàn)報(bào)告_第4頁(yè)
資源描述:

《crc冗余校驗(yàn)實(shí)驗(yàn)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、貴州大學(xué)實(shí)驗(yàn)報(bào)告學(xué)院:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院專(zhuān)業(yè):軟件工程班級(jí):***姓名***學(xué)號(hào)***實(shí)驗(yàn)組***實(shí)驗(yàn)時(shí)間***指導(dǎo)教師***成績(jī)實(shí)驗(yàn)項(xiàng)目名稱(chēng)CRC冗余檢驗(yàn)實(shí)驗(yàn)?zāi)康?.掌握循環(huán)冗余CRC檢驗(yàn)的原理及算法;2.能編程實(shí)現(xiàn)CRC校驗(yàn)碼的生成算法。實(shí)驗(yàn)要求熟悉CRC冗余檢驗(yàn)實(shí)驗(yàn)原理現(xiàn)實(shí)的通信鏈路不會(huì)是理想的,因此比特在傳輸過(guò)程中可能產(chǎn)生差錯(cuò),傳輸錯(cuò)誤的比特占所傳輸比特的總數(shù)的比率稱(chēng)為誤碼率。為了保證數(shù)據(jù)傳輸?shù)目煽啃?,在?jì)算機(jī)網(wǎng)絡(luò)傳輸數(shù)據(jù)時(shí),采用各種差錯(cuò)檢測(cè)措施,在數(shù)據(jù)鏈路層廣泛使用循環(huán)冗余(CRC)技術(shù)。循環(huán)冗余校驗(yàn)碼(CRC

2、)的基本原理是:在K位信息碼后再拼接R位的校驗(yàn)碼,整個(gè)編碼長(zhǎng)度為N位。對(duì)于一個(gè)給定的(N,K)碼,可以證明存在一個(gè)最高次冪為N-K=R的多項(xiàng)式G(x)。根據(jù)G(x)可以生成K位信息的校驗(yàn)碼,而G(x)叫做這個(gè)CRC碼的生成多項(xiàng)式。校驗(yàn)碼的具體生成過(guò)程為:假設(shè)發(fā)送信息用信息多項(xiàng)式C(X)表示,將C(x)左移R位,則可表示成C(x)*2的R次方,這樣C(x)的右邊就會(huì)空出R位,這就是校驗(yàn)碼的位置。通過(guò)C(x)*2的R次方除以生成多項(xiàng)式G(x)得到的余數(shù)就是校驗(yàn)碼。CRC碼的生成步驟:1、將x的最高冪次為R的生成多項(xiàng)式G(x)轉(zhuǎn)

3、換成對(duì)應(yīng)的R+1位二進(jìn)制數(shù)。2、將信息碼左移R位,相當(dāng)于對(duì)應(yīng)的信息多項(xiàng)式C(x)*2R。3、用生成多項(xiàng)式(二進(jìn)制數(shù))對(duì)信息碼做模2除,得到R位的余數(shù)。4、將余數(shù)拼到信息碼左移后空出的位置,得到完整的CRC碼。模2除(按位除):模2除做法與算術(shù)除法類(lèi)似,但每一位除(減)的結(jié)果不影響其它位,即不向上一位借位。所以實(shí)際上就是異或。然后再移位做下一位的模2減。步驟如下:a、用除數(shù)對(duì)被除數(shù)最高幾位做模2減,沒(méi)有借位。b、除數(shù)右移一位,若余數(shù)最高位為1,商為1,并對(duì)余數(shù)做模2減。若余數(shù)最高位為0,商為0,除數(shù)繼續(xù)右移一位。c、一直做到

4、余數(shù)的位數(shù)小于除數(shù)時(shí),該余數(shù)就是最終余數(shù)。實(shí)驗(yàn)環(huán)境MicrosoftVisualC++6.0實(shí)驗(yàn)步驟1.編寫(xiě)程序?qū)崿F(xiàn)CRC校驗(yàn)碼的生成。采用C++語(yǔ)言,實(shí)現(xiàn)CRC校驗(yàn)碼的生成:#include"stdio.h"/*………………異或函數(shù)………………*/voidcrc(intA[],intG[],intx,intn){inti,j,k;printf("tt");for(k=0;k<=x-1;k++)printf("%d",A[k]);/*輸出補(bǔ)0后的數(shù)*/for(i=0;i<=x-n+1;i++){if(A[i]==1

5、)/*當(dāng)首位為1時(shí)進(jìn)行異或*/{for(j=0;j<=n-1;j++){if(A[i+j]==G[j])A[i+j]=0;/*異或運(yùn)算,相同為0,不同為1*/elseA[i+j]=1;}printf("tt");/*輸出每次異或后的結(jié)果*/for(k=0;k<=x-1;k++)printf("%d",A[k]);/*輸出最后余數(shù)*/}}}voidmain(){intm,n;intA[20],M[20],G[20],i,j;printf("請(qǐng)輸入M[x]的長(zhǎng)度m=");scanf("%d",&m);printf("請(qǐng)

6、輸入G[x]的長(zhǎng)度n=");scanf("%d",&n);printf("請(qǐng)輸入M[x]=");for(i=0;i<=m-1;i++)scanf("%d",&M[i]);printf("請(qǐng)輸入G[n]=");for(j=0;j<=n-1;j++)scanf("%d",&G[j]);for(i=0;i<=m-1;i++)A[i]=M[i];for(i=m;i<=m+n-2;i++)A[i]=0;/*對(duì)被除數(shù)進(jìn)行補(bǔ)0*/crc(A,G,m+n-1,n);/*調(diào)用異或函數(shù)*/for(i=0;i<=m-1;i++)A[i]

7、=A[i]+M[i];printf("結(jié)果為:");for(i=0;i<=m+n-2;i++)printf("%d",A[i]);printf("");}實(shí)驗(yàn)內(nèi)容每人獨(dú)立完成,參考下面例1的源代碼實(shí)現(xiàn)CRC校驗(yàn)碼生成算法(也可以選擇擅長(zhǎng)的編程語(yǔ)言編寫(xiě)程序)。輸入實(shí)驗(yàn)數(shù)據(jù),驗(yàn)證編寫(xiě)程序的正確性。實(shí)驗(yàn)數(shù)據(jù)實(shí)驗(yàn)總結(jié)通過(guò)對(duì)CRC冗余檢驗(yàn)的C++語(yǔ)言實(shí)現(xiàn),對(duì)CRC冗余檢驗(yàn)流程更加清晰、明了指導(dǎo)教師意見(jiàn)簽名:年月日

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。
关闭