計組 資料校驗碼梳理

2021-10-23 09:06:09 字數 3802 閱讀 3578

三、迴圈冗餘校驗碼(cyclic redundancy check)

它是一種檢錯碼。能發現**中一位出錯的情況,因為其利用的是編碼中1的個數的奇偶性作為依據,所以不能發現偶數字錯誤。

假設校驗位個數為 r,則它能表示 2r

個資訊,用其中乙個資訊表示「沒有出錯」,其餘 2r-1 個資訊指出錯誤發生在哪一位,然後錯誤也可能發生在校驗位,因此只有 k = 2r -1-r 個資訊能用於糾正被傳送資料的位數,也就是說要滿足關係式:

2 r⩾

k+r+

1\geqslant k + r + 1

2r⩾k+r

+1資訊 n 位,假設校驗位 k 位,總共會有2k 種情形,除了一種正確的情況,其餘2k - 1 要能滿足編碼後的資料位數。即 2k -1 ⩾

\geqslant

⩾ n + k

假設資訊位為 1010

資訊位有4位, 可以得出校驗位k=3,設資訊位d

4d_4

d4​d

3d_3

d3​d

2d_2

d2​d

1d_1

d1​,校驗位

p

3p_3

p3​p

2p_2

p2​p

1p_1

p1​,那麼對應的海明碼為h

7h_7

h7​h

6h_6

h6​h

5h_5

h5​h

4h_4

h4​h

3h_3

h3​h

2h_2

h2​h

1h_1

h1​規定:校驗碼 p

ip_i

pi​ 放在海明碼 2i-1 的位置上,資訊位按順序放在其餘位置

如圖:

h

7h_7

h7​h

6h_6

h6​h

5h_5

h5​h

4h_4

h4​h

3h_3

h3​h

2h_2

h2​h

1h_1

h1​d

4d_4

d4​d

3d_3

d3​d

2d_2

d2​p

3p_3

p3​d

1d_1

d1​p

2p_2

p2​p

1p_1

p1​101

0d1 (在第3位): 0 1 1(3)

d2 (在第5位): 1 0 1 (5)

d3 (在第6位): 1 1 0(6)

d4 (在第7位): 1 1 1(7)

從右至左豎著看:

p1 = d1 ⊕

\oplus

⊕ d2 ⊕

\oplus

⊕ d4 = 0 ⊕

\oplus

⊕ 1 ⊕

\oplus

⊕ 1 = 0

p2 = d1 ⊕

\oplus

⊕ d3 ⊕

\oplus

⊕ d4 = 0 ⊕

\oplus

⊕ 0 ⊕

\oplus

⊕ 1 = 1

p3 = d2 ⊕

\oplus

⊕ d3 ⊕

\oplus

⊕ d4 = 1 ⊕

\oplus

⊕ 0 ⊕

\oplus

⊕ 1 = 1

於是:h

7h_7

h7​h

6h_6

h6​h

5h_5

h5​h

4h_4

h4​h

3h_3

h3​h

2h_2

h2​h

1h_1

h1​d

4d_4

d4​d

3d_3

d3​d

2d_2

d2​p

3p_3

p3​d

1d_1

d1​p

2p_2

p2​p

1p_1

p1​101

1010

檢驗方程:

當接收到:1010010,可計算得出:

s1=0

s2=0

s3=0

當接收到:1010000

s1=0

s2=1

s3=0

說明第010位出錯,即第2位出錯

資料的傳送方、接收方約定乙個除數

k個資訊為+r個校驗位作為「被除數」,新增校驗位後需保證除法的餘數為0

收到資料後,進行除法檢查餘數是否為0,若餘數非0則說明出錯,則進行重傳或者糾錯

設生成多項式是g(x)=x3+x2+1,資訊碼為101001,求對應的crc碼

1、 確定k、r以及生成多項式對應的二進位製碼

k=資訊碼的長度=6

r=生成多項式的最高次冪=3

校驗碼的位數n=k+r=9

生成多項式g(x)= 1 * x3 + 1 * x2+ 0 * x1+ 1 * x0,對應二進位製碼 1101

2、移位

為了確定最低位r位的校驗位,將資訊碼左移r位,低位先補0

101001000

3、相除

對移位後的資訊碼,用生成多項式進行模2除法,產生餘數

得到的crc碼:101001 001

4、檢錯和糾錯

傳送:101001001 記為c9c

8c7c

6c5c

4c3c

2c1c_c_c_c_c_c_c_c_c_

c9​c8​

c7​c

6​c5

​c4​

c3​c

2​c1

​接收:101001001 用 1101 進行模2除,餘數為000,代表沒有出錯

接收:101001011 用1101 進行模2除,餘數為010,代表

出錯位有可能是第2位或者第9位,說明crc碼不具備糾錯能力。

若生成多項式選擇得當,且 2r⩾

k+r+

12^r\geqslant k+r+1

2r⩾k+r

+1,則crc碼可糾正1位錯。

理論上,crc碼可以:

校驗碼 奇偶校驗碼

1.奇偶校驗碼 通過在編碼中增加一位校驗位來使編碼中1的個數為奇數或者偶數,校驗位可以在原編碼的前面或者後面加。通過加入校驗位後的1個數是奇數還是偶數,可分為兩種 奇校驗 1的個數為奇數 偶校驗 1的個數為偶數 下圖為奇校驗和偶校驗的設定方法。例如 m的ascii碼77,二進位制表示為0100110...

校驗碼 迴圈冗餘校驗碼

迴圈冗餘校驗碼,又稱crc碼。它利用生成多項式來為k個資料位產生r個校驗位來進行編碼。其編碼長度為k r。迴圈冗餘校驗碼由兩部分組成,左邊為資訊碼 資料 右邊為校驗碼,如下圖 若資訊碼佔k位,則校驗碼就佔n k位,其中,n為crc碼的字長,所以又稱為 n,k 碼。校驗碼位數越多,校驗能力越強。crc...

常用校驗碼(奇偶校驗碼 海明校驗碼 CRC校驗碼)

一 奇偶校驗碼 二 海明校驗碼 三 crc校驗碼 計算機系統執行時,各個部之間要進行資料交換.交換的過程中,會有發生誤碼的可能 即0變成1或1變成0 由於計算機的儲存是通過二進位制 來實現的的,誤碼會導致儲存的內容發生改變。為確保資料在傳送過程正確無誤,常使用檢驗碼.我們常使用的檢驗碼有三種.分別是...