CRC算法原理及Verilog實(shí)現(xiàn).doc

CRC算法原理及Verilog實(shí)現(xiàn).doc

ID:60778302

大?。?9.50 KB

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

時(shí)間:2020-12-18

CRC算法原理及Verilog實(shí)現(xiàn).doc_第1頁(yè)
CRC算法原理及Verilog實(shí)現(xiàn).doc_第2頁(yè)
CRC算法原理及Verilog實(shí)現(xiàn).doc_第3頁(yè)
CRC算法原理及Verilog實(shí)現(xiàn).doc_第4頁(yè)
CRC算法原理及Verilog實(shí)現(xiàn).doc_第5頁(yè)
資源描述:

《CRC算法原理及Verilog實(shí)現(xiàn).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、CRC算法原理及其Verilog實(shí)現(xiàn)1CRC簡(jiǎn)介CRC校驗(yàn)是一種在數(shù)據(jù)通信系統(tǒng)和其它串行傳輸系統(tǒng)中廣泛使用的錯(cuò)誤檢測(cè)手段。通用的CRC標(biāo)準(zhǔn)有CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在網(wǎng)絡(luò)通信系統(tǒng)中應(yīng)用最廣泛的是CRC-32標(biāo)準(zhǔn)。本文將以CRC-32為例,說明CRC編碼的實(shí)現(xiàn)方式以及如何用Verilog語(yǔ)言對(duì)CRC編碼進(jìn)行描述。2模2運(yùn)算在說明CRC編碼方式之前,首先介紹一下模2運(yùn)算法則,在CRC運(yùn)算過程中會(huì)使用到模2除法運(yùn)算。模2運(yùn)算是一種二進(jìn)制運(yùn)算法則,與四則運(yùn)算相同,模2運(yùn)算也包括

2、模2加、模2減、模2乘、模2除四種運(yùn)算。模2運(yùn)算用“+”表示加法運(yùn)算,用“-”、“×”或“.”、“/”分別表示減法、乘法和除法運(yùn)算。與普通四則運(yùn)算法則不同的是,模2加法是不帶進(jìn)位的二進(jìn)制加法運(yùn)算,模2減法是不帶借位的二進(jìn)制減法運(yùn)算。同時(shí),模2乘法在累加中間結(jié)果時(shí)采用的是模2加法運(yùn)算;模2除法求商過程中余數(shù)減除數(shù)采用的是模2減法運(yùn)算。因此,兩個(gè)二進(jìn)制數(shù)進(jìn)行模2加減法運(yùn)算時(shí),相當(dāng)于兩個(gè)二進(jìn)制數(shù)進(jìn)行按位異或運(yùn)算,每一位的結(jié)果只與兩個(gè)數(shù)的當(dāng)前位有關(guān)。模2除法在確定商時(shí),與普通二進(jìn)制除法也略有區(qū)別。普通二進(jìn)制除法中,

3、當(dāng)余數(shù)小于除數(shù)時(shí),當(dāng)前位的商為0,當(dāng)余數(shù)大于等于除數(shù)時(shí),當(dāng)前位的商為1。模2除法在確定當(dāng)前位的商時(shí),只關(guān)心余數(shù)的首位,首位為1則商為1,首位為0則商為0。1.模2加法的定義:0+0=0,0+1=1,1+0=1,1+1=0。舉例如下:1010+0110=1100。2.模2減法的定義:0-0=0,0-1=1,1-0=1,1-1=0。舉例如下:1010-0110=1100。3.模2乘法的定義:0×0=0,0×1=0,1×0=0,1×1=1。舉例如下:1011×101=列豎式計(jì)算:1011×101——————101

4、100001011——————其中橫線之間的累加過程,采用的是2進(jìn)制加法,不進(jìn)位。4.模2除法:0/1=0,1/1=1。舉例如下:1011/101=10,余數(shù)為100。列豎式計(jì)算:10————101)1011101————001101————0011CRC實(shí)現(xiàn)原理CRC校驗(yàn)的基本思想是:利用線性編碼理論,在發(fā)送端根據(jù)要發(fā)送的k位二進(jìn)制碼序列,以一定的規(guī)則產(chǎn)生一個(gè)校驗(yàn)用的r位監(jiān)督碼(即CRC碼),并附在信息碼后面,構(gòu)成一個(gè)新的共k+r位的二進(jìn)制碼序列,最后發(fā)送出去。在接受端,則根據(jù)信息碼和CRC碼之間所遵行的

5、規(guī)則進(jìn)行校驗(yàn),以確定傳輸過程中是否出錯(cuò),并糾錯(cuò)。一般而言,監(jiān)督碼的位寬r越大,糾錯(cuò)能力就越高,例如,CRC32的糾錯(cuò)能力比CRC16要強(qiáng)。CRC校驗(yàn)獲得監(jiān)督碼的方式是,將k位信息碼轉(zhuǎn)換成多項(xiàng)式,然后除以一個(gè)生成多項(xiàng)式,獲得余數(shù)即為監(jiān)督碼。在求解一個(gè)k位二進(jìn)制信息碼的CRC之前,首先需要將二進(jìn)制信息碼轉(zhuǎn)換成多項(xiàng)式。一個(gè)二進(jìn)制數(shù)序列的各個(gè)位是它對(duì)應(yīng)多項(xiàng)式的系數(shù),例如,二進(jìn)制序列對(duì)應(yīng)的多項(xiàng)式為:M(x)=1×X9+1×X8+0×X7+1×X6+0×X5+1×X4+1×X3+1×X2+0×X1+1×X0M(x)=X

6、9+X8+X6+X4+X3+X2+1通過這種轉(zhuǎn)換方式獲得的多項(xiàng)式稱為信息多項(xiàng)式。在進(jìn)行CRC計(jì)算時(shí),除了信息多項(xiàng)式之外,還需要有一個(gè)生成多項(xiàng)式G(x)。生成多項(xiàng)式G(x)要求次數(shù)大于0,并且要求0次冪的系數(shù)為1。根據(jù)以上約束,以及對(duì)糾錯(cuò)能力的要求,人們提出了一些通用的CRC生成多項(xiàng)式,例如:CRC16和CRC32等。CRC16的生成多項(xiàng)式為G(x)=X15+X10+X2+1CRC32的生成多項(xiàng)式為:G(x)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+

7、11.1CRC的值等于信息多項(xiàng)式M(x)乘以2n,再除以生成多項(xiàng)式G(x)所得的余數(shù),除法采用模2除法。其中,n表示的是生成多項(xiàng)式G(x)的最高次冪,CRC16中n為16,CRC32中n為32。1CRC-32串行計(jì)算公式推導(dǎo)根據(jù)二進(jìn)制信息碼轉(zhuǎn)換成多項(xiàng)式的方法,對(duì)于任意一個(gè)長(zhǎng)度為(m+1)的二進(jìn)制信息碼,可以轉(zhuǎn)換成一個(gè)最高次冪為m的多項(xiàng)式:M(x)=Mm×Xm+Mm-1×Xm-1+…+M1×X1+M0×X0將以上公式中的X置換成2,表示是一個(gè)二進(jìn)制的多項(xiàng)式,那么該多項(xiàng)式的系數(shù)只能是1和0。M(x)=Mm×2m

8、+Mm-1×2m-1+…+M1×21+M0×20為求此二進(jìn)制序列的CRC值,首先將M(x)乘以232,然后再除以生成多項(xiàng)式G(x),所得余數(shù)即為CRC32的值。G(x)亦為一個(gè)二進(jìn)制多項(xiàng)式。設(shè)除法運(yùn)算獲得的商為Q(x),余數(shù)為R(x),那么:M(x)×232/G(x)=Mm×2m×232/G(x)+Mm-1×2m-1×232/G(x)+…+M1×21×232/G(x)+M0×20×232/G(x)--------

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(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)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。