天天看點

漢明碼檢測及2 bit error實作方式

作者:行走的BUG永動機

#頭條創作挑戰賽#

編碼

漢明碼檢測及2 bit error實作方式

p1 ~ p4是漢明校驗碼,d1 ~ d8為要傳輸的資料

根據圖表 p1對應(0001)b,p2對應(0010)b,p3對應(0100)b,p4對應(1000)b

将d1 ~ d8根據p1 ~ p4,分成4組

p1組有:(位置号)1 3 5 7 9 11(bit0 都是1)

p2組有:2 3 6 7 10 11(bit1 都是1)

p3組有: 4 5 6 7 12

p4組有:8 9 10 11 12

「以偶校驗為例」,p1 p2 p3 p4要保證每組中1的個數為偶數個

假設資料為0000_1111

漢明碼檢測及2 bit error實作方式

根據分組,可以得出:p1 = 0, p2 = 0, p3 = 1, p4 = 0

則編碼後的資料為:0001_0000_1111

校驗

例1

如果收到的資料為「0001_0000_1111」

漢明碼檢測及2 bit error實作方式

按照與編碼相同的分組方式對c1 ~ c4分組,并将接收到的資料根據分組進行奇偶校驗

對c1組的1 3 5 7 9 11位置奇偶校驗,結果為0

對c2組的2 3 6 7 10 11位置奇偶校驗,結果為0

對c3組的4 5 6 7 12位置奇偶校驗,結果為0

對c4組的8 9 10 11 12位置奇偶校驗,結果為0

四個校驗位結果都為0,說明資料傳輸沒有發生錯誤

例2

如果收到的資料為「0001_0000_1101」(将第11位翻轉)

漢明碼檢測及2 bit error實作方式

c1組奇偶校驗結果為1

c2組奇偶校驗結果為1

c3組奇偶校驗結果為0

c4組奇偶校驗結果為1

{c4, c3, c2, c1} = 1011,對應第11位,在傳輸的過程中,第11位發生錯誤

例3

如果收到的資料為「0001_0000_1001」(将第10、11位翻轉)

漢明碼檢測及2 bit error實作方式

c1組奇偶校驗結果為1

c2組奇偶校驗結果為0

c3組奇偶校驗結果為0

c4組奇偶校驗結果為0

{c4, c3, c2, c1} = 0001,漢明碼顯示的位置與實際位置不符合,無法定位到具體位置

那如果想檢測到2 bit error應該如何處理

2 bit error檢測

為編碼後的資料額外增加一個奇偶校驗位

還是上面的例子為例,增加一奇偶校驗位

漢明碼檢測及2 bit error實作方式

加上奇偶校驗位後的編碼為0_0010_0001_1111

例4

如果收到的資料是「0_0010_0001_0011」(将第10、11位翻轉)

漢明碼檢測及2 bit error實作方式

c1組奇偶校驗結果為1

c2組奇偶校驗結果為0

c3組奇偶校驗結果為0

c4組奇偶校驗結果為0

整體校驗結果為0

整體校驗通過,但漢明校驗為通過,有2 bit error

例5

如果收到的資料是「0_0010_0001_0011」(将第11位翻轉)

漢明碼檢測及2 bit error實作方式

1組奇偶校驗結果為1

c2組奇偶校驗結果為1

c3組奇偶校驗結果為0

c4組奇偶校驗結果為1

整體校驗結果為1

整體未通過,漢明檢驗也未通過,有 1 bit error

例6

如果收到的資料是「0_0010_0001_1111」

漢明碼檢測及2 bit error實作方式

c1組奇偶校驗結果為0

c2組奇偶校驗結果為0

c3組奇偶校驗結果為0

c4組奇偶校驗結果為0

整體校驗結果為0

整體通過,漢明檢驗也通過, 沒有error

總結

  1. 整體奇偶校驗未通過,漢明校驗未通過,有1 bit error并可糾正
  2. 整體奇偶校驗通過,漢明校驗未通過,有2 bit error且不可糾正
  3. 整體奇偶校驗通過,漢明校驗通過,沒有error