Способи завдання завадостійких кодів
При завданні коду звичайно указують, які інформаційні одиничні елементи базового кодового слова і як беруть участь у формувань кожного з k перевірочних символів.
Перший спосіб завдання− описовий, коли приводиться словесно − формульний опис процедури розрахунку контрольних символів при відомих інформаційних. При завданні коду можна вказати всі дозволені для цього коду комбінації.
Наприклад, для коду з n = 5, m = 3 і k = 2 кожен перевірочний символ bі може визначатися за правилом:
b1 = a2 a3, b2 = a1 a2,
де аі - інформаційні символи. Комбінація такого коду записується у вигляді b2b1a3a2a3. При завданні коду можна вказати всі дозволені для цього коду комбінації. При більш формалізованому підході це є еквівалентним завданню системи перевірочних рівнянь, що визначають правила формування перевірочних символів по відомим інформаційним:
,
де: позначка означає додавання за певним модулем, наприклад, за
модулем 2.
j − номер перевірочного символу;
і − номер інформаційного символу;
сіj − коефіцієнти, що приймають значення відповідно до правил формування конкретних кодів, наприклад, сіj = 1.
Другий спосіб завдання− шляхом перерахуванням кодових слів, тобто складанням таблиці − списку всіх кодових слів коду.
Приклад. У таблиці 2 представлені всі кодові слова (5, 3) − двійкового коду (aі − інформаційні, а bі − перевірочні символи).
Таблиця 2 Таблиця кодових слів коду (5,3) | |||||
a1 | a2 | a3 | b1 | b2 | |
Третій спосіб завдання− у вигляді матриці, що породжує, в так званій канонічній формі. При цьому перші (праві) m стовпців цієї матриці містять по одній одиниці і утворюють одиничну матрицю. Решта стовпців указує правила формування перевірочних одиничних елементів.
Так, для приведеного прикладу двійкового коду матриця, що породжує, в канонічній формі має вигляд:
G (5, 3) =
З прикладу видно, що перші три стовпці складають одиничну матрицю
І (m, m) = ,
четвертий стовпець показує, що при формуванні першого перевірочного символу беруть участь другий і третій інформаційні символи. П’ятий стовпець що при нормуванні другого перевірочного символу беруть участь перший і другий інформаційні символи. Таким чином, при написанні матриці, що породжує, в канонічній формі спочатку пишуть одиничну матрицю розміром mm, а потім приписують до неї k стовпців, кожний з яких показує правила формування перевірочних символів. Тобто матрицю, що породжує, в канонічній формі можна позначити таким чином:
G (n, m) = .
Варіантів запису матриць, що породжує, в загальному випадку досить багато.
Канонічна форма матриці, що породжує, може бути також записаною у вигляді
G (n, m) = .
При такому способі опису процес кодування математично записується у вигляді добутку матриці-рядка, що відображає вихідну кодову комбінацію, на матрицю, що породжує. (При виконанні всіх математичних перетворень додавання здійснюється по модулю 2). Припустимо, що вихідна кодова комбінація записана так:
А = .
Тоді процес кодування запишеться у вигляді
F = А G (n, m) = bkbk-1…b1amam-1…a1,
де, як і раніше, bі (і = 1, 2,...k) – перевірочні, а aі (і = 1, 2,..., m) – інформаційні символи.
В результаті кодування одержимо комбінацію, де перші m символів − інформаційні (aі), а останні k символів − перевірочні (bі). Наприклад, закодуємо кодову комбінацію A = 1011 кодом (7, 4) з матрицею, що породжує,
G (7, 4) = .
Для цього перемножимо матриці A і G: F = A G (7, 4). Одержимо
F = = 0101011,
де перші чотири символи (1011) − інформаційні, а останні три (010) − перевірочні.
При декодуванніна приймальній стороні здійснюється стільки ж перевірок, скільки виконувалося і на передаючій, Кожна перевірка включає, окрім інформаційних символів, перевірочні символи.
Результат цих перевірок указує або тільки на наявність або відсутність спотворення, або ще й номер спотвореного символу.
2. Двійкові коди з перевіркою на парність або на непарність (контроль по модулю 2)
Як відомо, у загальному випадку, вираз для розрахунку контрольної ознаки має вигляд:
(mod Р), (5)
де Р – значення обраного модуля. В коді з контролем по модулю 2 додавання здійснюється порозрядно, тобто , додавання здійснюється за модулем Р = 2, для усіх значень і.
При побудові таких кодів передана послідовність символів розбивається на групи – базові кодові слова (БКС). У найпростішому випадку при кодуванні в кожному базовому кодовому слові розраховується контрольна ознака (контрольний біт) шляхом складання по модулю 2 всіх двійкових символів БКС. Контрольна ознака (контрольний біт) записується в кінці БКС. При контролі на парність, в результаті цього, число одиниць в БКС доводиться до парного. Так, кодова комбінація 01110 в результаті кодування перетвориться в комбінацію 011101.
Варіантом цього способу контролю цілісності є контроль на непарність, коли при кодуванні в кінець БКС як контрольна ознака (контрольного біта) дописується інверсне значення результату складання по модулю 2 всіх двійкових символів даного БКС. В результаті цього, при контролі на непарність, число одиниць в БКС доводиться до непарного. Так, кодова комбінація 01010 в результаті кодування перетвориться в комбінацію 010101.
При декодуванні процедура (5) здійснюється знов, але по відношенню до усіх символах із перевірочними включно, тобто для символів. В наслідок цього обраховується контрольна ознака
(mod Р).
Неважко зрозуміти, що в разі відсутності спотворень величина є такою, що дорівнює нулю, а при їх наявності – відмінна від нуля. Це і є синдромом спотворень. Зрозуміло, що корегування виявлених спотворень є неможливим. Окрім того, виходячи з розглянутого, слід зробити висновок, що спотворення, що виникли в парному числі символів, залишаються непоміченими.