[計算機組成原理] 海明校驗碼


[計算機組成原理] 海明校驗碼

海明校驗碼是一種可以糾正一位差錯的編碼,采用分組奇偶校驗

編碼

1.計算校驗位的位數

假設信息位為k位,增加r位校驗位,構成n=k+r位海明碼。因為海明碼要糾正一位錯誤,n位每一位錯加上n位全對共n+1種狀態,用二進制編碼,r位校驗位可以表示2r個狀態,則r滿足:2r≥k+r+1

以下為幾種k和r的對應關系:

k r最小值
1~4 3
5~11 4
12~26 5

2.確定有效信息和校驗位的位置

設數據位為Di,校驗位為Pj,構成的海明碼的位置為Hk,海明碼要求第i組的校驗位必須位於2i-1的位置,比如1、2、4、8......

舉個例子,k=8,r=4

H12 H11 H10 H9 H8 H7 H6 H5 H4 H3 H2 H1
D8 D7 D6 D5 P4 D4 D3 D2 P3 D1 P2 P1

3.分組

若Di=Hj,則Di參加那些位號之和(拆成2的冪)等於j的校驗位的分組校驗

舉幾個例子:

D1 在海明碼中的位置為H3,3=1+2,D1參加第一組和第二組的校驗

D2在海明碼中的位置為H5,5=1+4,D2參加第一組和第四組的校驗

D3在海明碼中的位置為H6,6=2+4,D3參加第二組和第四組的校驗

寫成二進制,規律更明顯:

數據位 海明碼位置 海明碼位置下標二進制
D8 H12 1100
D7 H11 1011
D6 H10 1010
D5 H9 1001
D4 H7 0111
D3 H6 0110
D2 H5 0101
D1 H3 0011

P1校驗第一組,包含的數據的海明碼位置的二進制的第一位是1:D7D5D4D2D1

P2 校驗第二組,包含的數據的海明碼位置的二進制的第二位是1:D7D6D4D3D1

P3校驗第三組,包含的數據的海明碼位置的二進制的第三位是1:D8D4D3D2

P4:校驗第四組,包含的數據的海明碼位置的二進制的四位是1:D8D7D6D5

4.計算校驗位,得出海明碼

假設是偶校驗,加上校驗位使該組的1的個數為偶數,可以用異或計算

P1= D7⊕D5⊕D4⊕D2⊕D1

P2 =D7⊕D6⊕D4⊕D3⊕D1

P3=D8⊕D4⊕D3⊕D2

P4=D8⊕D7⊕D6⊕D5

算出校驗位后,按2中的位置填入相應數字,得到海明碼

譯碼

在接收端收到海明碼后,按上述分組檢驗每組的正確性,每組異或為0則該組沒出錯,否則該組出錯

S4=P1⊕ D7⊕D5⊕D4⊕D2⊕D1

S3=P2 ⊕D7⊕D6⊕D4⊕D3⊕D1

S2=P3⊕D8⊕D4⊕D3⊕D2

S1=P4⊕D8⊕D7⊕D6⊕D5

若S4S3S2S1=0000,則沒有出錯,將信息位提取出來使用

若S4S3S2S1不是全零,如S4S3S2S1=1010,則1010對應的十進制10,海明碼H10(數據D6)出錯,將H10取反即可

若十進制對應的位置是校驗位出錯,不需要糾正,因為我們只需要確保數據不出錯就可以

思考:為什么這樣分組

四位數據,r=3,海明碼H7H6...H1中,H1H2H4是校驗位,3=1+2,5=1+4,6=2+4,7=1+2+4

第一組:1 3 5 7

第二組:2 3 6 7

第三組:4 5 6 7

校驗時每組異或,計算S3S2S1,全0則沒出錯,001則第一組出錯,出錯的位是第一組獨有的那一位--第一位,剛好是001的十進制,101則1、3組錯,出錯的是1、3組共有,其他組沒有的那一位--5,剛好是101的10進制


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM