找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4143|回復(fù): 4
收起左側(cè)

幫助理解CRC校驗(yàn)原理及應(yīng)用的經(jīng)典文章(共31頁P(yáng)DF)

[復(fù)制鏈接]
ID:276847 發(fā)表于 2018-1-17 09:42 | 顯示全部樓層 |閱讀模式
幫助理解CRC原理及應(yīng)用的經(jīng)典文章。

一、  CRC 原理
計(jì)算CRC的過程,就是用一個(gè)特殊的“除法”,來得到余數(shù),這個(gè)余數(shù)就是CRC。
它不是真正的算術(shù)上的除法!過程和算術(shù)除法過程一樣,只是加減運(yùn)算變成了XOR(異或)運(yùn)算!

算術(shù)上的除法:
120÷9=13 余 3,120是被除數(shù),9是除數(shù),13是商,3是余數(shù)。念作120除以9,或者9除120,或者9去除120! (除法的過程就不寫了)
這個(gè)除法計(jì)算機(jī)當(dāng)然會(huì)做,但是做起來很麻煩,因?yàn)闇p法有借位,很耗時(shí)間和指令!
所以,計(jì)算CRC也是除法,但是用XOR來代替減法,這就簡(jiǎn)單多了!

CRC 的除法:
120÷9=14 余 6,商、余數(shù)和算術(shù)除法不一定相同! !因?yàn)槌ㄓ玫氖荴OR,而不是真正的減法。 以二進(jìn)制模擬這個(gè)計(jì)算過程:
0.png
接收端收到1111110,用它除以1001,計(jì)算得余數(shù)為000,就說明收到的數(shù)據(jù)正確。 所以原始數(shù)據(jù)后面要先擴(kuò)展出3位0,以容納CRC值!
會(huì)發(fā)現(xiàn),在上面的除法過程中,這3位0,能保證所有的4個(gè)數(shù)據(jù)位在除法時(shí)都能夠被處理到!不然做一次除法就到結(jié)果了,那是不對(duì)的。這個(gè)概念后面要用到。
所以,實(shí)際上,數(shù)據(jù)是1111,CRC是110。
對(duì)于除數(shù)1001,我們叫它生成多項(xiàng)式,即生成項(xiàng),或POLY,即g(x)。
數(shù)據(jù)1111根據(jù)POLY1001,計(jì)算得到CRC110。
如果POLY不是1001,而是1011,那得到的CRC也是不同的!
所以生成項(xiàng)不同,得到的CRC也不同。要預(yù)先定義好POLY,發(fā)送端和接收端要用一樣的POLY!
0.png
0.png 0.png

完整的pdf格式文檔51黑下載地址(共31頁):
CRC32、CRC16、CRC原理和算法.pdf (173.04 KB, 下載次數(shù): 94)


回復(fù)

使用道具 舉報(bào)

ID:366409 發(fā)表于 2018-7-6 16:50 | 顯示全部樓層
很好的文章謝謝
回復(fù)

使用道具 舉報(bào)

ID:95821 發(fā)表于 2018-7-6 21:37 | 顯示全部樓層
學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

ID:95821 發(fā)表于 2018-7-6 22:13 | 顯示全部樓層
文檔內(nèi)的字型比較奇怪,數(shù)字都是粗體
回復(fù)

使用道具 舉報(bào)

ID:621513 發(fā)表于 2019-11-11 14:00 | 顯示全部樓層
很好的文章謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表