Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Н. О. 0 Теорія інформації рекомендовано Міністе...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
4.27 Mб
Скачать

10.3 Кодовий синдром і виявлення помилок лінійним блоковим кодом

Нехай u=(u1u2, …, un) - кодове слово, передане по каналу з шумом; y=(y1y2, …, yn) - прийнята послідовність, що через вплив завад може відрізнятися від переданої.

Для описання виникаючих у двійковому симетричному каналі помилок використовується вектор помилок е=(e1, e2, …, en), що є двійковою послідовністю завдовжки n з одиницями у тих позиціях, де виникли помилки.

Наприклад, вектор помилок е=(0001000) означає однократну помилку у четвертому біті, е=(1100000) - двократну помилку у першому і другому бітах.

При передачі кодового слова u по каналу з шумом прийнята послідовність матиме вигляд y = u+е, де u - передане кодове слово; e – вектор помилок у каналі.

Наприклад: u=(0001000), e=(0001000), тоді y=(0000000).

Щоб перевірити наявність помилок у прийнятій послідовності y, декодер обчислює таку (n-k)- послідовність:

S=(S1, S2, …, Sn-k)=y ,

де y - прийнята кодована послідовність; - транспонована перевірна матриця коду.

При цьому у є кодовим словом тоді, коли S=(0 0 … 0), і не є кодовим словом даного коду, якщо S≠0.

Послідовність S є ознакою наявності помилок у прийнятій послідовності y і називається кодовим синдромом.

Приклад 3 Для розглянутого прикладу лінійного блокового (4, 7)- коду знайдемо значення кодового синдрому.

Нехай y=(y1, y2, …, y7) - прийнята кодована послідовність. Тоді

S=y =(y1, y2, , y7 =((y1+y3+y4+y5), (y1+y2+y3+y6), (y2+y3+y4+y7)).

Деякі комбінації помилок, використовуючи кодовий синдром, виявити неможливо. Наприклад, якщо передане кодове слово під впливом завад перетвориться на інше кодове слово цього самого коду, то синдром S=y× =0, і декодер помилок не виявить.

10.4 Синдромне декодування лінійних блокових кодів

Нехай u=(u1, u2, …, un) - передане кодове слово; е=(е1е2еn) - вектор помилок; y=(y1y2… 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) - код не виправляє двократні помилки і помилки більшої кратності.