エンコード | デコード | 圧縮

> hamming | (7,4) | ecc <

// ハミングコード – 信頼性の高いデータ伝送のための誤り訂正コード

[訂正]

誤り訂正

データ内の 1 ビット誤りを自動的に検出して訂正します。

[検出]

二重誤りの検出

各ブロック内の 2 ビット誤りを検出できます(訂正はできません)。

[効率的]

オーバーヘッドが小さい

4 ビットのデータに対してパリティビットはわずか 3 ビット(効率 75%)。

>> 技術情報

ハミングコードの仕組み:

Hamming(7,4) コードは、4 ビットのデータごとに 3 ビットのパリティビットを追加し、7 ビット長のブロックを生成します。パリティビットは 2 のべき乗の位置(1, 2, 4)に配置されます。誤りが発生すると、シンドローム(パリティチェックの結果)が誤りビットの位置を直接示します。

Hamming(7,4) の構造:

データ: 1011 (4 ビット) 位置: P1 P2 D1 P3 D2 D3 D4 Hamming: 1 0 1 1 0 1 1 P1 = D1 ⊕ D2 ⊕ D4 = 1 ⊕ 0 ⊕ 1 = 0 P2 = D1 ⊕ D3 ⊕ D4 = 1 ⊕ 1 ⊕ 1 = 1 P3 = D2 ⊕ D3 ⊕ D4 = 0 ⊕ 1 ⊕ 1 = 0

ハミングコードを使う理由:

  • >メモリエラー訂正
  • >衛星通信
  • >データストレージシステム
  • >ネットワーク伝送
  • >RAID アレイ

>> よくある質問

ハミングコードとは?

ハミングコードは、リチャード・ハミングが 1950 年に考案した誤り訂正コードです。データにパリティビットを追加し、1 ビット誤りを自動的に検出・訂正できるようにします。

(7,4) はどういう意味ですか?

Hamming(7,4) とは、合計 7 ビットのうち 4 ビットがデータ、3 ビットがパリティビットであることを意味します。7 ビットブロック内の任意の 1 ビット誤りを訂正できます。他のバリエーションとして (15,11) や (31,26) などがあります。

誤り訂正はどのように動作しますか?

受信側ではパリティビットが再計算されます。一致しない場合、シンドローム(差分)がどのビットが誤っているかを直接示します。そのビットを反転することで誤りを修正します。

ハミングコードと他の ECC の違いは?

ハミングコードは、1 ビット誤りに対してシンプルで効率的です。Reed–Solomon のようなより複雑なコードは複数の誤りを訂正できますが、オーバーヘッドが大きくなります。ハミングコードは低ノイズの通信路に最適です।

// クイックリファレンス

Posbitcovered by
1p1p1
2p2p2
3d1p1 p2
4p3p3
5d2p1 p3
6d3p2 p3
7d4p1 p2 p3

// 計算例

Data 1011 -> positions 3,5,6,7 = 1,0,1,1
p1 = d3^d5^d7 = 1^0^1 = 0     p2 = d3^d6^d7 = 1^1^1 = 1     p3 = d5^d6^d7 = 0^1^1 = 0
Codeword (pos 1..7)  0110011
Received 0110111 (bit 5 flipped)
Syndrome s3 s2 s1 = 1 0 1 = 5   ->  flip bit 5  ->  0110011 corrected

>> その他の質問

Q: ハミング符号の(7,4)とは何ですか?

A: 4ビットのデータに3ビットのパリティを加えた7ビットの符号語です。パリティビットは2のべき乗の位置(1、2、4)に置かれます。最小距離は3で、1ビット誤りを訂正でき、2ビット誤りは検出のみ可能です。

Q: シンドロームはどのように誤り位置を示しますか?

A: 各パリティビットは、位置番号の対応するビットが立っている位置を検査します。3つの結果を2進数として読むと誤りビットの位置になります(0は誤りなし)。例では101が位置5を示します。

Q: 拡張ハミング符号(SECDED)とは?

A: 全体パリティビットを加えて(7,4)を(8,4)にすると、1ビット訂正・2ビット検出ができます。ECCメモリも同じ原理で、通常は64データビットに8検査ビットの(72,64)です。

他の言語