кодировать | декодировать | сжимать

> hamming | (7,4) | ecc <

// Код Хэмминга – код коррекции ошибок для надёжной передачи данных

[КОРРЕКЦИЯ]

Коррекция ошибок

Автоматически обнаруживает и исправляет одиночные битовые ошибки в данных.

[ОБНАРУЖЕНИЕ]

Обнаружение двойных ошибок

Может обнаруживать (но не исправлять) ошибки на два бита в каждом блоке.

[ЭФФЕКТИВНОСТЬ]

Минимальные накладные расходы

Всего 3 бита чётности на каждые 4 бита данных (эффективность 75%).

>> техническая информация

Как работает код Хэмминга:

Код Hamming(7,4) добавляет 3 бита чётности к каждым 4 битам данных, формируя 7-битовые блоки. Биты чётности располагаются на позициях, являющихся степенями двойки (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 году. Он добавляет к данным биты чётности, которые позволяют автоматически обнаруживать и исправлять одиночные битовые ошибки.

Что означает (7,4)?

Hamming(7,4) означает 7 бит всего: 4 бита данных и 3 бита чётности. Он может исправить любую одиночную битовую ошибку в 7-битовом блоке. Существуют и другие варианты, например (15,11) и (31,26).

Как работает коррекция ошибок?

При приёме данных биты чётности пересчитываются. Если они не совпадают, синдром (разница) напрямую указывает, какой бит неверен. Ошибка исправляется инверсией этого бита.

Код Хэмминга против других ECC-кодов?

Код Хэмминга прост и эффективен для одиночных битовых ошибок. Более сложные коды, такие как 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

>> Другие вопросы

В: Что означает (7,4) в коде Хэмминга?

О: К 4 битам данных добавляются 3 бита чётности, получается слово из 7 бит. Биты чётности стоят на позициях-степенях двойки: 1, 2 и 4. Минимальное расстояние 3: одна ошибка исправляется, две обнаруживаются, но не исправляются.

В: Как синдром указывает позицию ошибки?

О: Каждый бит чётности проверяет позиции, в номере которых установлен соответствующий бит. Три результата в двоичной записи дают позицию ошибочного бита (0 — ошибок нет). В примере 101 указывает на позицию 5.

В: Что такое расширенный код Хэмминга (SECDED)?

О: Дополнительный общий бит чётности превращает (7,4) в (8,4): исправляет 1 ошибку и обнаруживает 2. ECC-память использует тот же принцип, обычно как (72,64): 8 контрольных бит на 64 бита данных.

Другие языки