1
、迴圈校驗碼(
crc碼):
是資料通訊領域中最常用的一種差錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。
2、生成
crc碼的基本原理:
任意乙個由二進位制位串組成的**都可以和乙個係數僅為
『0』和
『1』取值的多項式一一對應。例如:**
1010111
對應的多項式為x6
+x4+x2
+x+1
,而多項式為x5
+x3+x2
+x+1
對應的**
101111。標準
crc生成多項式如下表:
名稱生成多項式
簡記式*
標準引用
crc-4
x4+x+1
3itu g.704
crc-8
x8+x5+x4+1
0x31
crc-8
x8+x2+x1+1
0x07
crc-8
x8+x6+x4+x3+x2+x1
0x5e
crc-12
x12+x11+x3+x+1
80fcrc-16
x16+x15+x2+1
8005
ibm sdlc
crc16-ccitt
x16+x12+x5+1
1021
iso hdlc, itu x.25,
,v.34/v.41/v.42, ppp-fcs
crc-32
x32+x26+x23+...+x2+x+1
04c11db7
zip, rar, ieee 802 lan/fddi, ieee 1394, ppp-fcs
crc-32c
x32+x28+x27+...+x8+x6+1
1edc6f41
sctp3、
crc-16
校驗碼的使用:
現選擇最常用的
crc-16
校驗,說明它的使用方法。
根據modbus
協議,常規
485通訊的資訊傳送形式如下:
位址功能碼
資料資訊
校驗碼1byte 1byte nbyte 2byte
crc校驗是前面幾段資料內容的校驗值,為乙個
16位資料,傳送時,低
8位在前,高
8為最後。
例如:資訊字段**為
: 1011001
,校驗欄位為:
1010
。傳送方
:發出的傳輸欄位為
: 1 0 1 1 0 0 1 1 0 10
資訊字段
校驗字段
接收方:使用相同的計算方法計算出資訊欄位的校驗碼,對比接收到的實際校驗碼,如果相等及資訊正確,不相等則資訊錯誤;或者將接受到的所有資訊除多項式,如果能夠除盡,則資訊正確。4、
crc-16
校驗碼計算方法:
(
1)、預置1個
16位的暫存器為十六進製制
ffff
(即全為
1),稱此暫存器為
crc暫存器;(2
)、把第乙個
8位二進位制資料(既通訊資訊幀的第乙個位元組)與
16位的
crc暫存器的低
8位相異或,把結果放於
crc暫存器,高八位資料不變;(3
)、把crc
暫存器的內容右移一位(朝低位)用
0填補最高位,並檢查右移後的移出位;(4
)、如果移出位為
0:重複第
3步(再次右移一位);如果移出位為1,
crc暫存器與多
項式a001
(1010 0000 0000 0001
)進行異或;
(
5)、重複步驟3和
4,直到右移
8次,這樣整個
8位資料全部進行了處理;(6
)、重複步驟
2到步驟
5,進行通訊資訊幀下乙個位元組的處理;(7
)、將該通訊資訊幀所有位元組按上述步驟計算完成後,得到的16位
crc暫存器的高、低
位元組進行交換;(8
)、最後得到的
crc暫存器內容即為:
crc碼。
以上計算步驟中的多項式
a001
是8005
按位顛倒後的結果。
16進製制計算方法
16進製制和10進製是不同的,進製是人們規定的的,不是一種自然現象,我們只用0 9表示所有數字,那麼大於九的怎麼表示呢?我們就規定大於9的就進製,高一位的總是比低一位的大,這樣我們可以重複使用0 9這10個數字符號表示所有的數字了,這個就是10進製,然而出於某些原因,我們的網路封包不是10進製,而是...
IOPS計算方法
通常當資料庫管理員提出需要更多儲存空間的時候,他們還會指定必須要達到多少iops。現在有這樣乙個需求,20tb儲存空間同時滿足4500 iops raid 5,我應該如何計算?raid 5或者raid 1 0的時候分別需要多少塊硬碟?首先需要知道i o中讀操作 read 與寫操作 write 所佔的...
RMS計算方法
先提乙個問題 使用訊號發生器輸出同乙個脈衝方波訊號,在示波器上採用直流耦合方式和交流耦合方式,在示波器上得出的rms值是不一樣的,存在很大的差異,為何?原因是直流耦合在取樣時以地作為平面採用波形,並帶有一定的直流成分,而交流則已波形的中心水平線作為平面取波形的絕對值採集計算,數值是不一樣的,兩者之間...