找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

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

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

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

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

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


回復(fù)

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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