奇偶編碼校驗_第1頁
奇偶編碼校驗_第2頁
奇偶編碼校驗_第3頁
奇偶編碼校驗_第4頁
奇偶編碼校驗_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

西南科技大學(xué)奇偶校驗編碼仿真設(shè)計

報告課程名稱: 通信原理課程設(shè)計 設(shè)計名稱: 奇偶校驗編碼仿真 姓 名: 任XX 學(xué) 號: 20105523 班 級: 通信1002班 指導(dǎo)教師: 秦明偉 起止日期: 2013.6?27~2013?7?5西南科技大學(xué)信息工程學(xué)院制課程設(shè)計任務(wù)書學(xué)生班級: 通信1002班學(xué)生姓名:任XX學(xué)號:20105523設(shè)計名稱: 奇偶校驗編碼仿真 起止日期: 2013.6.27~2013.7.5指導(dǎo)教師: 秦明偉設(shè)計要求:(1) 基于MATLAB編寫M文件,實現(xiàn)奇偶校驗編碼仿真,數(shù)據(jù)幀長8bit,校驗位1bit(2) 仿真中要體現(xiàn)出有錯誤bit時的校驗情況,且要求錯誤時自動報錯;課程設(shè)計學(xué)生日志時間設(shè)計內(nèi)容2013.6.27查閱資料,了解CRC校驗和奇偶校驗,決定設(shè)計奇偶校驗。2013.6.28查閱資料,深入理解奇偶校驗的原理與方法。2013.6.29查閱資料,深入理解奇偶校驗的原理與方法。2013.6.30查閱資料,了解matlab工具的編程方法。2013.7.1查閱下載matlab指令大全。2013.7.2熟悉matlab軟件,開始編寫程序仿真。2013.7.3初步完成程序,進步優(yōu)化修改,定稿。2013.7.4著手完成課程設(shè)計報告。2013.7.5修改完善課程設(shè)計報告。奇偶校驗編碼仿真一、 摘要(150-250字)本文介紹了奇偶校驗的編碼規(guī)則及應(yīng)用前景,使用matlab仿真工具對奇偶校驗中的單向奇偶校驗與雙向奇偶校驗進行編程仿真,詳細的闡述了奇偶校驗的原理和編碼過程。分析了實驗結(jié)果,以及對于奇偶校驗有了更新的認識,奇偶校驗是幾種校驗方法中實現(xiàn)最為簡單,得到了廣泛的應(yīng)用。二、 設(shè)計目的和意義通過本次課程設(shè)計,對于matlab仿真工具更加熟悉,同時也深入了解了奇偶校驗編碼的原理與方法。三、 設(shè)計原理奇偶校驗是一種檢測代碼傳輸正確性的方法。根據(jù)被傳輸?shù)囊唤M二進制代碼的數(shù)位中“1”的個數(shù)是奇數(shù)或偶數(shù)來進行校驗。采用奇數(shù)的稱為奇校驗,反之,稱為偶校驗。采用何種校驗是事先規(guī)定好的。通常專門設(shè)置一個奇偶校驗位,用它使這組代碼中“1”的個數(shù)為奇數(shù)或偶數(shù)。若用奇校驗,則當接收端收到這組代碼時,校驗“1”的個數(shù)是否為奇數(shù),從而確定傳輸代碼的正確性。單向校驗概述:單向奇偶校驗(RowParity)由于一次只采用單個校驗位,因此又稱為單個位奇偶校驗(SingleBitParity)。發(fā)送器在數(shù)據(jù)禎每個字符的信號位后添一個奇偶校驗位,接收器對該奇偶校驗位進行檢查。典型的例子是面向ASCII碼的數(shù)據(jù)信號禎的傳輸,由于ASCII碼是七位碼,因此用第八個位碼作為奇偶校驗位。單向奇偶校驗又分為奇校驗(OddParity)和偶校驗(EvenParity),發(fā)送器通過校驗位對所傳輸信號值的校驗方法如下:奇校驗保證所傳輸每個字符的8個位中1的總數(shù)為奇數(shù);偶校驗則保證每個字符的8個位中1的總數(shù)為偶數(shù)。顯然,如果被傳輸字符的7個信號位中同時有奇數(shù)個(例如1、3、5、7)位出現(xiàn)錯誤,均可以被檢測出來;但如果同時有偶數(shù)個(例如2、4、6)位出現(xiàn)錯誤,單向奇偶校驗是檢查不出來的。一般在同步傳輸方式中常采用奇校驗,而在異步傳輸方式中常采用偶校驗。校驗方法:奇校驗:就是讓原有數(shù)據(jù)序列中(包括你要加上的一位)1的個數(shù)為奇數(shù)1000110(0)必須添0,這樣原來有3個1已經(jīng)是奇數(shù)了所以添上0之后1的個數(shù)還是奇數(shù)個。偶校驗:就是讓原有數(shù)據(jù)序列中(包括你要加上的一位)1的個數(shù)為偶數(shù)1000110(1)就必須加1了這樣原來有3個1要想1的個數(shù)為偶數(shù)就只能添1了。雙向校驗為了提高奇偶校驗的檢錯能力,可采用雙向奇偶校驗(RowandColumnParity),也可稱為雙向冗余校驗(VerticalandLongitudinalRedundancyChecks)o雙向奇偶校驗,又稱“方塊校驗”或“垂直水平”校驗。例:1010101X1010111X1110100X0101110X1101001X0011010XXXXXXXX“X”表示奇偶校驗所采用的奇校驗或偶校驗的校驗碼。如此,對于每個數(shù)的關(guān)注就由以前的1X7次增加到了7X7次。因此,比單項校驗的校驗?zāi)芰Ω鼜姟:唵蔚男r灁?shù)據(jù)的正確性,在計算機里都是010101二進制表示,每個字節(jié)有八位二進制,最后一位為校驗碼,奇校驗測算前七位里1的個數(shù)合的奇偶性,偶校驗測算前七位里0的個數(shù)的奇偶性。當數(shù)據(jù)里其中一位變了,得到的奇偶性就變了,接收數(shù)據(jù)方就會要求發(fā)送方重新傳數(shù)據(jù)。奇偶校驗只可以簡單判斷數(shù)據(jù)的正確性,從原理上可看出當一位出錯,可以準確判斷,如同時兩個1變成兩個0就校驗不出來了,只是兩位或更多位及校驗碼在傳輸過程中出錯的概率比較低,奇偶校驗可以用在要求比較低的應(yīng)用下。本文對兩種校驗進行編碼校驗仿真。四、詳細設(shè)計步驟8bit信息碼的產(chǎn)生:使用matlab指令大全中的“randint(m,n)”指令生成(m,n)矩陣的隨機二進制數(shù)字,“0”和“1”出現(xiàn)的概率均等。其中取n=8生成8bit的信息碼。奇偶校驗碼的產(chǎn)生:對產(chǎn)生的每行信息碼求和除二取余,使用指令庫中的“sum()”求和,使用“rem()”求余數(shù);補校驗位:奇校驗時,若求得余數(shù)為1,則校驗位補0;若求得的余數(shù)為0,則校驗位補1。偶校驗時,若求得的余數(shù)為1,則校驗位補1;若求得的余數(shù)為0,則校驗位補0。加入校驗位,構(gòu)成新的信息碼進行傳輸。產(chǎn)生誤碼:由取非指令“?”對信息碼中的某些位進行取反,造成誤碼,以便校驗檢測。對信息碼進行校驗在接收端對信碼繼續(xù)每行求和除二取余,若使用奇校驗,則每行余數(shù)為1時顯示校驗正確,否則校驗錯誤;若使用偶校驗,則每行余數(shù)為0時顯示校驗正確,否則校驗錯誤。五、設(shè)計結(jié)果及分析設(shè)計程序A.單向校驗clearall;%清除工作空間的所有變量m=input('請輸入行:’);%input('');用于向計算機輸入一個參數(shù)n=input('請輸入列:’);A=randint(m,n)%randint(m,n)產(chǎn)生的是一個m*n維的矩陣,矩陣的元素或者是0或者是1,是隨機的并顯示AB=A;%A暫存在B,while(1)A=B;%避免循環(huán)中A中信碼改變sum=zeros(1,m);%zeros(1,m)創(chuàng)建一個1行m列的零矩陣l=input('請選擇奇偶校驗(0:偶校驗1:奇校驗9:結(jié)束校驗):’);%;不回顯ifl==0||l==1fori=1:mforj=1:n%求第1行各位相加對2取余,即相異或的結(jié)果sum(i)=sum(i)+A(i,j);%向量元素求和x=sum(i);%每行結(jié)果放入x中endifl==0;%偶校驗ifrem(x,2)==1;%求余數(shù)指令A(yù)(i,n+1)=1;%校驗位定義為1elseA(i,n+1)=0;%否則定義為0endendifl==1%奇校驗ifrem(x,2)==1%求余數(shù)指令A(yù)(i,n+1)=0;elseA(i,n+1)=1;endendendelseifl==9fprintf('退出校驗~\n');%設(shè)置顯示格式break;%跳出循環(huán)elsefprintf('非法輸入?。n');continue;%結(jié)束本次循環(huán)endendfprintf('補校驗位:’)A%顯示加入校驗位后的矩陣%檢查傳輸數(shù)據(jù)是否正確ifl==0%偶校驗是否正確fprintf('改動結(jié)果,產(chǎn)生誤碼(改動1行1列和2行3列)’);A(1,1)=~A(1,1);A(2,3)二~A(2,3);A%顯示改動過的數(shù)據(jù)sum=zeros(1,m);%zeros(1,m)創(chuàng)建一個1行m列的零矩陣fori=1:mforj=1:(n+1)%求第i行各位相異或的結(jié)m果sum(i)=sum(i)+A(i,j);x=sum(i);endifrem(x,2)==0%正確fprintf('檢查正確~\n');else%錯誤fprintf('檢查錯誤!!\n');endendendifl==1%奇校驗是否正確fprintf('改動結(jié)果,產(chǎn)生誤碼(改動1行3列和3行1列)\n');A(1,3)=~A(1,3);A(3,1)二?A(3,1);Asum=zeros(1,m);%zeros(1,m)創(chuàng)建一個1行m列的零矩陣fori=1:mforj=1:(n+1)%求第i行各位相異或的結(jié)果sum(i)=sum(i)+A(i,j);x=sum(i);endifrem(x,2)==1%正確fprintf('檢查正確~\n');else%錯誤fprintf('檢查錯誤?。n');endendendendB.雙向校驗clcclearallm=input('請輸入行:’);%input('');用于向計算機輸入一個參數(shù)n=input('請輸入列:’);A=randint(m,n)B=A;while(1)A=B;sum1=zeros(1,m);%zeros(1,m)創(chuàng)建一個1行m列的零矩陣存放每行和l=input('請選擇奇偶校驗(0:偶校驗1:奇校驗9:結(jié)束校驗):’);%;不回顯ifl==0||l==1fori=1:mforj=1:nsum1(i)=sum1(i)+A(i,j);%向量元素求和x=sum1(i);%每行結(jié)果放入x中endifl==0;%偶校驗ifrem(x,2)==1;%求余數(shù)指令A(yù)(i,n+1)=1;%校驗位定義為1elseA(i,n+1)=0;%否則定義為0endendifl==1%奇校驗ifrem(x,2)==1%求余數(shù)指令A(yù)(i,n+1)=0;elseA(i,n+1)=1;endendend%列求和sum2=zeros(n,1);%定義一個n行1列的零矩陣fori=1:nforj=1:msum2(i)=sum2(i)+A(j,i);%求每列信碼之和x=sum2(i);endifl==0;%偶校驗ifrem(x,2)==1;%求余數(shù)指令A(yù)(m+1,i)=1;%校驗位定義為1elseA(m+1,i)=0;%否則定義為0endendifl==1%奇校驗ifrem(x,2)==1%求余數(shù)指令A(yù)(m+1,i)=0;elseA(m+1,i)=1;endendendA%顯示加入校驗位之后的信碼C=A;elseifl==9fprintf('退出校驗~\n');%設(shè)置顯示格式break;%跳出循環(huán)elsefprintf('非法輸入??!\n');continue;%結(jié)束本次循環(huán)endend%奇偶校驗%行校驗ifl==0%偶校驗是否正確fprintf('改動結(jié)果,產(chǎn)生誤碼(改動1行1列和2行3列)’);A(1,1)=~A(1,1);A(2,3)二~A(2,3);A%顯示改動過的數(shù)據(jù)fprintf('行校驗結(jié)果:\n')sum1=zeros(1,m);%zeros(1,m)創(chuàng)建一個1行m列的零矩陣fori=1:mforj=1:(n+1)%求第i行各位相異或的結(jié)m果sum1(i)=sum1(i)+A(i,j);x=sum1(i);endifrem(x,2)==0%正確fprintf('檢查正確~\n');else%錯誤fprintf('檢查錯誤!!\n');endendendifl==1%奇校驗是否正確fprintf('改動結(jié)果,產(chǎn)生誤碼(改動1行3列和3行1列)\n');A(1,3)=~A(1,3);A(3,1)二?A(3,1);Afprintf('行校驗結(jié)果:\n')sum1=zeros(1,m);%zeros(1,m)創(chuàng)建一個1行m列的零矩陣fori=1:mforj=1:(n+1)%求第i行各位相異或的結(jié)果sum1(i)=sum1(i)+A(i,j);x=sum1(i);endifrem(x,2)==1%正確fprintf('檢查正確~\n');else%錯誤fprintf('檢查錯誤??!\n');endendend%列校驗ifl==0%偶校驗是否正確fprintf('\n列校驗結(jié)果:\n')sum2=zeros(n,1);%zeros(1,m)創(chuàng)建一個1行m列的零矩陣fori=1:nforj=1:(m+1)%求第i列各位相異或的結(jié)m果sum2(i)=sum2(i)+A(j,i);x=sum2(i);endifrem(x,2)==0%正確fprintf('檢查正確~\n');else%錯誤fprintf('檢查錯誤?。n');endendendifl==1%奇校驗是否正確fprintf('\n列校驗結(jié)果:\n')sum2=zeros(n,1);%zeros(1,m)創(chuàng)建一個1行m列的零矩陣fori=1:nforj=1:(m+1)%求第i列各位相異或的結(jié)m果sum2(i)=sum2(i)+A(j,i);x=sum2(i);endifrem(x,2)==1%正確fprintf('檢查正確~\n');else%錯誤fprintf('檢查錯誤??!\n');endendendend程序運行結(jié)果(單向校驗)1)CommandWindow窗口顯示結(jié)果請輸入行:4請輸入列:8A=01001010100011001111110101110111請選擇奇偶校驗(0:偶校驗1:奇校驗9:結(jié)束校驗):4非法輸入!!請選擇奇偶校驗(0:偶校驗1:奇校驗9:結(jié)束校驗):5非法輸入!!請選擇奇偶校驗(0:偶校驗1:奇校驗9:結(jié)束校驗):1補校驗位:A=010010100100011000111111010011101111改動結(jié)果,產(chǎn)生誤碼(改動1行3列和3行1列)A=0110101001000110000 1 1 1 1 1 0 1 00 1 1 1 0 1 1 1 1檢查錯誤??!檢查正確?檢查錯誤!!檢查正確?請選擇奇偶校驗(0:偶校驗1:奇校驗9:結(jié)束校驗):0補校驗位:A=010010101100011001111111011011101110改動結(jié)果,產(chǎn)生誤碼(改動1行1列和2行3列)110010101101011001111111011011101110檢查錯誤??!檢查錯誤??!檢查正確?檢查正確?請選擇奇偶校驗(0:偶校驗1:奇校驗9:結(jié)束校驗):9退出校驗?2)運行結(jié)果分析首先由randint(m,n)產(chǎn)生一個隨機m行n列二進制信碼AA=0 1 0 0 1 0 1 01 0 0 0 1 1 0 01 1 1 1 1 1 0 10 1 1 1 0 1 1 1提示鍵入信息“(0:偶校驗1:奇校驗9:結(jié)束校驗)”鍵入其他字符,提示“非法輸入!”跳轉(zhuǎn)到循環(huán)開始。鍵入1進行奇校驗,輸出一個補奇校驗位的信碼矩陣AA=010010100100011000111111010011101111由此看出補校驗位之后每行之和均為奇數(shù)。然后進入誤碼形成信碼矩陣A改動結(jié)果,產(chǎn)生誤碼(改動1行3列和3行1列)011010100100011000011111010011101111進行奇校驗,每行之和不為奇數(shù)的信碼出錯。由于改變了第一行和第三行的信碼,所以結(jié)果第一行和第三行校驗錯誤。鍵入0進行偶校驗輸出一個補奇校驗位的信碼矩陣AA=010010101100011001111111011011101110由此看出補校驗位之后每行之和均為偶數(shù)。然后進入誤碼形成信碼矩陣A改動結(jié)果,產(chǎn)生誤碼(改動1行1列和2行3列)110010101101011001111111011011101110進行偶校驗,每行之和不為偶數(shù)的信碼出錯。由于改變了第一行和第二行的信碼,所以結(jié)果第一行和第二行校驗錯誤。鍵入9,退出校驗。雙向校驗與單向校驗原理仿真相差無幾,只是多了一項垂直校驗,在此不再贅述。六、 總結(jié)奇偶校驗法并不是一種安全的檢錯方法,其識別錯誤的能力較低。假如發(fā)生錯誤的位數(shù)為奇數(shù),那么錯誤可以被識別,而當發(fā)生錯誤的位數(shù)為偶數(shù)時,錯誤就無法被識別了,這是因為錯誤互相抵消了。數(shù)位的錯誤,以及大多數(shù)涉及偶數(shù)個位的錯誤都有可能檢測不出來。然而,在數(shù)據(jù)傳輸中一位出錯的機會最多,并且由于奇偶校驗方便簡單,故在數(shù)據(jù)傳輸中常常使用奇偶校驗法。奇偶校驗分為單項校驗和雙向校驗,相比之下雙向校驗的校驗?zāi)芰Ω鼜姡匀粚崿F(xiàn)起來就比單項校驗更加復(fù)雜。在實際傳輸中,如果對于傳輸要求較高的應(yīng)用中,奇偶校驗就不再適用,因為奇偶校驗即使發(fā)現(xiàn)錯誤也不能糾正錯誤,在發(fā)現(xiàn)錯誤后,只能要求重發(fā)。有些檢錯方法具有糾錯能力,比如說循環(huán)冗余(CRC)檢錯等。七、 體會由于題目出了點小差錯,先是花了些時間去了解CRC

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論