一、crc校驗概念
即迴圈冗餘校驗碼(cyclic redundancy check),是資料通訊領域中最常用的一種查錯校驗碼,迴圈冗餘檢查(crc)是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資料傳輸的正確性和完整性。其特徵是資訊字段和校驗欄位的長度可以任意選定。
二、迴圈冗餘校驗碼(crc)的基本原理
在k位資訊碼後再拼接r位的校驗碼,整個編碼長度為n位,因此,這種編碼也叫(n,k)碼。對於乙個給定的(n,k)碼,可以證明存在乙個最高次冪為n-k=r的多項式g(x)。根據g(x)可以生成k位資訊的校驗碼,而g(x)叫做這個crc碼的生成多項式。
三、生成步驟
1、將生成多項式g(x)轉換成對應的二進位制數。
2、將資訊碼左移r(r為g(x)的階)位,相當於給對應的資訊多項式m(x)*x^r。
3、用生成多項式(二進位制數)對資訊碼做除,即:(m(x)*x^r)/g(x)得到r位的餘數。
4、將餘數拼到資訊碼左移後空出的位置,得到完整的crc碼。
注意事項:
a、生成多項式的最高位和最低位必須為1。
b、當被傳送資訊(crc碼)任何一位發生錯誤時,被生成多項式做除後應該使餘數不為0。
c、不同位發生錯誤時,應該使餘數不同。
d、對餘數繼續做除,應使餘數迴圈。
e、crc校驗碼位數 = 生成多項式位數 - 1。
示例1:
示例2:
四、crc和fcs的區別
1、crc是一種差錯檢驗方法;
2、fcs是幀校驗序列,即冗餘碼;
3、兩者不是同乙個概念,fcs是冗餘碼,它可以通過crc得到,也可以通過其他差錯檢測方法得到。
迴圈冗餘校驗CRC
網上搜到的內容不全面,維基百科講的比較好,原理很清楚傳送門 其實對於程式設計師來講,不用太在意它的數學原理,另外生成碼的選擇不是隨意的,這可能影響到校驗的效能。注意其中的加法不進製,減法不借位,類似是異或邏輯。關於怎樣產生crc,有這樣乙個演算法 下面為crc的計算過程 1 設定crc暫存器,並給其...
CRC迴圈冗餘校驗
crc校驗原理 crc校驗原理看起來比較複雜,好難懂,因為大多數書上基本上是以二進位制的多項式形式來說明的。其實很簡單的問題,其根本思想就是先在要傳送的幀後面附加乙個數 這個就是用來校驗的校驗碼,但要注意,這裡的數也是二進位制序列的,下同 生成乙個新幀傳送給接收端。當然,這個附加的數不是隨意的,它要...
CRC迴圈冗餘校驗
一 背景知識 1 位元差錯 現實的通訊鏈路都不會是理想的,因為位元在傳輸過程中可能產生差錯 1可能變成0,0可能變成1,這就叫做位元差錯。2 誤位元速率 在一段時間內,傳輸錯誤的位元佔所傳輸的位元總數的比率成為誤位元速率。誤位元速率和訊雜比有很大的關係,如果設法提高訊雜比,就可以使誤位元速率減小。3...