10.4 Синдромне декодування лінійних блокових кодів
Нехай u=(u1, u2, …, un) - передане кодове слово; е=(е1, е2, …, еn) - вектор помилок; y=(y1, y2, … yn) - прийнята послідовність. Тоді y=u+е.
Кодовий синдром
S=y=(u+e)=u+e=0+e=e,
оскільки для будь-якого кодового слова u=0.
Таким чином, кодовий синдром залежить лише від вектора помилок і не залежить від переданого слова.
Визначивши координати вектора помилок, можна відновити кодове слово так: u*=y+е.
Приклад 4 Знайдемо значення синдрому для всіх можливих однократних помилок в послідовності з семи символів для наведеного прикладу лінійного блокового (4, 7)- коду.
1) e0=(0000000),
е0=(0000000)=(000) - помилки немає;
2) е1=(1000000),
е1=(1000000)=(110) - помилка у 1-му біті;
3) e2=(0100000),
е2=(0100000) =(011) - помилка у 2-му біті;
4) е3=(0010000),
е3=(0010000)=(111) - помилка у 3-му біті;
5) е4=(0001000),
е4=(0001000)=(101) - помилка у 4-му біті;
6) е5=(0000100),
е5=(0000100)=(100) - помилка у 5-му біті;
7) е6=(0000010),
е6=(0000010)=(010) - помилка у 6-му біті;
8) е7=(0000001),
е7=(0000001) =(001) - помилка у 7-му біті.
Існує однозначна відповідність між координатами поодиноких помилок і їх синдромами, тобто, знаючи синдром, можна визначити позицію коду, в якій виникла помилка.
Приклад 5 З перевірної матриці лінійного блокового (4, 7)- коду знайдемо систему перевірних рівнянь:
Звідси
де (m1, m2, m3, m4) – інформаційні символи; r1, r2, r3 - перевірні символи; (u1, u2, …, u7)=(m1, m2, m3, m4, r1, r2, r3) - кодове слово.
Виникнення помилки у кодовій комбінації призведе до невиконання тих рівнянь у системі перевірних рівнянь коду, в які входить значення помилкового розряду.
Наприклад, якщо помилка у четвертому розряді кодової комбінації u=(u1, u2, u3, u4, u5, u6, u7)=(m1, m2, m3, m4, r1, r2, r3), то не виконаються перше і третє рівняння, в які входить помилковий символ u4=m4. Вектором синдрому буде послідовність S=(101), що збігається з четвертим стовпцем перевірної матриці коду H.
У такий спосіб номер помилкового розряду кодової комбінації є номером стовпця перевірної матриці H, що збігається з вектором синдрому, це дозволяє визначити місце виникнення помилки і таким чином її виправити.
Зазначимо, що кодовий синдром виправляє тільки однократні помилки в коді.
Приклад 6 Припустимо, що в прийнятій послідовності виникла не одна, а дві помилки, наприклад, у другому і шостому бітах: е=(0100010).
Тоді вектор синдрому
S=(0100010)=(001).
Цей синдром збігається з сьомим стовпцем перевірної матриці H, що означає наявність однієї помилки у сьомому біті. Отже, декодер не тільки не виправить помилкові біти, але і внесе помилку у позицію, де її не було.
Отже, лінійний блоковий (4, 7) - код не виправляє двократні помилки і помилки більшої кратності.