資源描述:
《CRC循環(huán)冗余校驗原理及FPGA實現(xiàn).doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、CRC循環(huán)冗余校驗原理及FPGA實現(xiàn)姚樹渝
2、創(chuàng)建時間:2013年06月19日14:07
3、瀏覽:220
4、評論:0標(biāo)簽:管理13.1?基本CRC循環(huán)冗余校驗原理介紹循環(huán)冗余碼校驗英文名稱為CyclicalRedundancyCheck,簡稱CRC。 它是利用除法及余數(shù)的原理來作錯誤偵測(ErrorDetecting)的。實際應(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)準(zhǔn)
5、: ?、貱RC-12碼; ?、贑RC-16碼; ?、跜RC-CCITT碼; ④CRC-132碼?! RC-12碼通常用來傳送6-bit字符串?! RC-16及CRC-CCITT碼則用是來傳送8-bit字符,其中CRC-16為美國采用,而CRC-CCITT為歐洲國家所采用。 CRC-132碼大都被采用在一種稱為Point-to-Point的同步傳輸中?!?.CRC特點CRC是種常用的檢測錯誤的循環(huán)碼,它能夠榆測出如下錯誤:(1)突發(fā)長度小于r的突發(fā)錯誤。(2)大部分突發(fā)長度等于r十l的錯誤,其中不可檢測的這類錯誤只占2-(r-
6、1)。(3)大部分突發(fā)K度大于r+1的錯堤,其中不可檢測的這類錯誤只占2-r。(4)所有奇數(shù)個錯誤。???CRC檢錯能力極強(qiáng),開銷小,易于用編碼器及檢測電路實現(xiàn)。從其檢錯能力來看,它所不能發(fā)現(xiàn)的錯誤的幾率僅為0.0047%以下。從性能上和開銷上考慮,均遠(yuǎn)遠(yuǎn)優(yōu)于奇偶校驗及算術(shù)和校驗等方式。因而,在數(shù)據(jù)存儲和數(shù)據(jù)通訊領(lǐng)域,CRC無處不在:著名的通訊協(xié)議X.25的FCS(幀檢錯序列)采用的是CRC-CCITT,WinRAR、NERO、ARJ、LHA等壓縮工具軟件采用的是CRC132,磁盤驅(qū)動器的讀寫采用了CRC16,通用的圖像存儲格式GI
7、F、TIFF等也都用CRC作為檢錯手段。2.CRC生成原理??CRC循環(huán)碼即在m位信息碼后再拼接r位的校驗碼,整個編碼長度為n位,因此這種編碼又叫(n,k)碼。對于一個給定的(n,k)碼,可以證明存在一個最高次冪為n-k=r的多項式g(x)。根據(jù)g(x)可以生成后位信息的校驗碼,而g(x)叫做這個CRc碼的生成多項式。校驗碼的具體生成過程為:???假設(shè)發(fā)送信息用數(shù)據(jù)多項式m(x)表示,將m(x)左移n一k位,則可表示成,n(z)×2n-k。這樣m(x)的右邊就會空出n一k位,即校驗碼的位置。通過m(x)×2n-k,除以生成多項式g(
8、x)得到的商Q(x和余數(shù)r(x),其中余數(shù)r(x)就是校驗碼。即:????在發(fā)送端發(fā)送數(shù)據(jù)時余數(shù)加到信息碼之后一同發(fā)出,將一組信息碼和余數(shù)組成的數(shù)據(jù)塊稱為一個碼元,設(shè)為T(x),則有????在接收端任一組多項式T(x)都應(yīng)被生成多項式g(x)整除,如果傳輸中未發(fā)生錯誤,則接收碼元與發(fā)送碼元相同,故接收的碼元必定能被g(x)整除;若碼元在傳輸中發(fā)生錯誤,則接收的碼元可能除不盡而有余數(shù),因此我們就以余數(shù)是否為零來判斷接收碼元中有無錯誤??赡苡绣e誤的碼元正好也被g(x)整除,這是CRC校驗無力消除的,但通過選擇多項式g(x)和增加冗余位數(shù)
9、,使余數(shù)r(x)多項式的位數(shù)增多,來降低發(fā)生這種錯誤的概率。3.生成多項式的選擇???生成多項式g(x)是構(gòu)成CRC校驗碼的關(guān)鍵。它的選取并不是任何一個多項式都可以作為生成多項式的,從檢錯與糾錯的要求出發(fā),生成多項式應(yīng)能滿足下列要求:(1)任何一位發(fā)生錯誤都應(yīng)使余數(shù)不為0;(2)不同位發(fā)生錯誤應(yīng)當(dāng)使余數(shù)不同;(13)應(yīng)滿足余數(shù)循環(huán)規(guī)律。??CRC有多種國際標(biāo)準(zhǔn),各種標(biāo)準(zhǔn)如下:?CRC校驗可以100%地檢測出所有奇數(shù)個隨機(jī)錯誤和長度小于等于愚(是為g(z)的階數(shù))的突發(fā)錯誤。所以CRc的生成多項式的階數(shù)越高,誤判的概率就越小。13.2
10、CRC循環(huán)冗余碼FPGA設(shè)計思想1.編碼電路的設(shè)計思想???編碼電路的功能是己知信息數(shù)據(jù)位和生成多項式,要得到對應(yīng)的CRC碼字。CRC碼是系統(tǒng)碼,對一個合法的CRC碼字前面部分是原始信息位,后面部分為校驗位部分。因此,若能求解出校驗位,把它與原始數(shù)據(jù)組合即可得到CRC碼?,F(xiàn)已知m(x),G(x),要求R(x),用X*m(x)除以G(x),它的余式即為X'R(x)。用二進(jìn)制數(shù)表示,即將原始信息位后添r個0后的數(shù)據(jù)除以生成多項式對應(yīng)的二進(jìn)制數(shù),所得余數(shù)即是校驗位。2.解碼電路的設(shè)計思想???一個合法的CRC碼的多項式,它應(yīng)該能被G(x)
11、整除。據(jù)此,現(xiàn)對一個位長為n的數(shù)據(jù)段(可能不是一合法CRC碼),其多項式除以G(x),若其余數(shù)為零,說明該碼字是合法的,取出其前面部分即為發(fā)端發(fā)送的有效數(shù)據(jù),即完成解碼;若余數(shù)不為0,則該碼字出錯,接收方可以告知發(fā)方重發(fā),或進(jìn)行糾錯后