Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Жураковський Ю. П., Полторак В. П. Теорія інфор...doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
3.24 Mб
Скачать

8.3.4. Коди ріда - соломона

Ці коди використовуються для передачі інформації по кана­лах з високою інтенсивністю завад, коли виникають помилки кратності два й більше, пачки помилок, а також сполучення пачок і однократних помилок.

Коди Ріда — Соломона (PC) можна розглядати як окрему гілку циклічних кодів БЧХ, головна відмінність якої полягає в тому, що поле локаторів коду PC збігається з полем його елемен­тів. Отже, якщо поле GF{q) коду БЧХ має q окремих елементів (потужність поля дорівнює #), а поле GF(qh) його локаторів — ф елементів і є А-розширенням поля GF(q), то в коді PC і елемен­ти, і локатори їх знаходяться в одному полі, тобто належать полю GF(q) [2, 3, 24, 25, 32]. Іншими словами, код PC — це ви­роджена форма коду БЧХ, у якого h = 1.

Довжина коду PC визначається виразом

n = q-\,

jxtq — основа (алфавіт) коду.

На підставі цього виразу коди PC називаються відносно ко­роткими.

Код PC, як і код БЧХ, може задаватися твірною чи перевір­ною матрицею або твірним чи перевірним поліномом. Най­поширенішим є метод побудови коду PC на основі твірного по­лінома Р(х). Перевірну матрицю Я часто використовують для вивчення деяких властивостей коду PC і його зв'язку з система­тичними кодами.

Твірний поліном коду PC із виправленням vBn помилок є до­бутком кількості перевірних елементів r = 2vBn і мінімальних поліномів для спектра елементів поля GF(q) [2, 24]:

P(x) = (x-pj° )(x-p^+1)...(x-p-/o^-l)? (8.42)

де /3 , Р -70 +1, • • • Р J+r~l — спектр твірних коренів полінома. Степінь полінома (8.42) дорівнює кількості r = 2vBn = n- k перевірних елементів.

Для спрощення побудови коду PC вибирають j0 - 1 і діста­ють звичайну форму коду PC:

/>(х) = (х-р1)(х~р2)...(х-рг) = П(^-Ру). (8-43)

Перевірний поліном Н(х) коду PC знаходять як частку від ділення (xqA + 1) на Р(х).

Мінімальна кодова відстань коду PC становить

4ы„ = Г+ 1=2^+1,

тобто код PC — це код з максимально досяжною кодовою від­станню.

Надмірність коду PC визначається виразом

=z:=2vBn

виразом

ад п q-V

а його швидкість -

R_k_n-r_q-2vBTl-l

п п q-\

Перевірна матриця коду PC має вигляд [2,24,32].

рУ'о("-1)рУо(л-2) p-Zoj

Н =

(8.44)

р(УО+1)("-1)р(Уо+1)(и-2) рУо+lj |р(УО-1)(и-1)р(Уо+'-1Хл-2) nJo+r~li

де Р — примітивний елемент поля GF(q);j0 — примітивний ко­рінь твірного полінома; п — довжина коду; г — кількість його перевірних елементів.

Слід звернути увагу на те, що другий праворуч стовпець у матриці (8.44) відповідає спектру коренів твірного полінома (8.42). У матриці (8.44) перелік стовпців по / йде справа наліво, причому 0 < і < п - 1. Перелік елементів у кодовому блоці має бути таким самим. Перелік рядків у матриці (8.44) йде зверху вниз поу0 <j <j0 + r - 1. Можливий й інший порядок переліку, треба лише додержуватися збігу послідовності твірних коренів Р(х) із другим праворуч стовпцем матриці (8.44).

Найпростіше коди PC реалізуються для алфавіту q = 2і, де / = = 2,4,8,....

198

199

Якщо поле має основу 2(q = 2і), то операції віднімання збіга­ються з операціями додавання; тому скрізь знак « — » можна замінити на знак « + », зокрема у виразах (8.42) та (8.43).

Декодування кодів PC виконується відповідно до загальних прикладів декодування [2, З,24,25, 32]. При виправленні поми­лок дістають значення локаторів L/ - £У, що відповідають спо­твореним елементам, і значення помилок для кожного спотво­реного елемента. Помилки виправляють, віднімаючи значення помилки від значення відповідного елемента.

Розглянемо кілька прикладів побудови коду PC.

Нехай q = 24 = 16. Тоді код PC може мати довжину я = ^-1 = 16-1 = = 15. Примітивний елемент (З є GF(q) такий, що |315 = 1. Всі ненульові елементи (З7 (0 <j < 14) утворюють множину локаторів коду, яких буде 15. Вони збігаються з першим рядком матриці (8.44) при j0 = 1 або з другим рядком приу0 = 0. Всі вони разом із нулем є елементами поля GF(q) лока­торів й елементів коду.

Для виконання розрахунків з елементами поля GF{q) треба корис­туватися адитивною та мультиплікативною формами їх подання (див. табл. 5.3 для q = 16). Нехай VBn = 2. Виберемо jQ= 1, тоді згідно з (8.43) матимемо

Р(х) = (х- (3)(л - (32)(л - (33)(х - (З4) = + Р)(* + Р2)(х + Р3)(х + Р4) = = хА + р,3х3 + р6*2 + Р3х + Р10 = х4 + ІЗ*3 + 12л2 + 8х + 7.

При кодуванні таким поліномом r = 2ven = 4. Знаючи, що п - 15, діста­ємо к-п-г- 15 - 4 = 11, тобто це — систематичний (15, П)-код із кодовою відстанню dmin = r+l=4+l = 5. Інформаційний блок цього коду має 11 шістнадцяткових елементів (44 біт).

Якщо ж при тій самій основі коду PC (q = 16 = 24) та довжині п = 15 побудувати код, що виправляє три помилки (уи = 3), то r = 2vBn = 2-3 = 6 і приу0 = 0 твірний поліном коду матиме вигляд

Р(х) = (х + (3°)(х + р'Х* + р2)(х + р3)(х + p4)(jc + (З5) = х6 + PV + + р124 4-р1^3 + Р2х2 + Р4х + Р5 = jc6 + 10х5 + 15.x4 + 2х3 + 4л2 + Зх + 6.

У цьому коді k = n-r=\5-6 = 9, din = r+l=6+l=7, тобто його інформаційний блок має дев'ять елементів по чотири біти кожний, а всього 36 біт.

Кодування кодом PC виконують одним із відомих способів кодування циклічного коду. Можливе також несистематичне кодування множенням інформаційного полінома Q(x) степеня 8 на твірний поліном Р(х) степеня 6. При цьому дістають поліном степеня 8 + 6 = 14 завдовжки п = 15 елеме­нтів. Однак більш поширеним є кодування діленням добутку xrQ(x) ін­формаційного полінома Q(x) на твірний поліном Р(л), як це характерно для циклічних кодів з подальшим додаванням остачі R(x) від ділення:

F(x) = xrQ(x) Є R(x).

8.3.5. БАГАТОВИМІРНІ ІТЕРАТИВНІ КОДИ

Для передачі інформації широко використовуються ітератив­ні коди, які відзначаються високою здатністю виявляти помил­ки. Так, відомий двійковий ітеративний код [12], що реалізує

200

перевірку на парність за рядками та стовпцями, виявляє всі одно-, дво- й трикратні помилки, деякі чотирикратні помилки і помилки більшої кратності, розташовані в кутах прямокут­ника, а також деякі шести-, восьмикратні та інші помилки.

Для усунення вказаного недоліку в даний двовимірний іте­ративний код вводиться додаткова перевірка по діагоналі. Утворений таким чином тривимірний ітеративний код дає змо­гу виявляти більшість помилок кратністю до п'яти та деякі по­милки більшої кратності.

Підвищення швидкості передачі інформації тривимірним ітеративним кодом можна досягнути збільшенням базового блока його інформаційних елементів.

Подальше підвищення здатностей кодів цього класу виявля­ти та виправляти помилки можливе при збільшенні кількості перевірок, тобто вимірності ітеративного коду. Так, якщо ба­зовий блок інформаційних елементів сформувати у вигляді куба або прямокутного паралелепіпеда, то можна збільшити здат­ність ітеративного коду виявляти та виправляти помилки, ввів­ши додаткові перевірки по діагоналі. Через великі обсяги ін­формації* що потребують зберігання й оброблення, функції кодування та декодування таких кодів бажано доручити спеці­алізованій ЕОМ.

Підвищення швидкості ітеративного коду можна досягти збіль­шенням основи q коду. При q > 2 зростає обсяг інформації, що передається, оскільки кількість інформації, яка міститься в одно­му елементі кодової комбінації, визначається основою q коду.

При визначенні перевірних елементів ітеративних #-кодів виконують додавання елементів комбінацій базового коду за модулем q. Помилки виявляються за аналогією з двійковим кодом — порівнянням перевірних елементів кожного рядка (стовпця), прийнятих з каналу і здобутих обчисленнями.

Спотворений елемент виправляється так. Якщо не викону­ється перевірка /-го рядка та у'-го стовпця, то елемент, що зна­ходиться на їх перетині, заміняється елементом, який був обчис­лений додаванням цього прийнятого елемента (помилкового) до значення, знайденого відніманням значення, прийнятого з каналу, й обчисленням перевірних елементів /-го рядка (абоу-го стовпця).

При виникненні кількох помилок в одному рядку (стовпці) вони виправляються послідовно для тих стовпців (рядків), де помилки є поодинокими.

Слід відзначити, що кратність помилок, які виправляються #-кодом, вища порівняно з двійковим кодом, оскільки виправ­лення одного елемента #-коду відповідає виправленню log2q двійкових одиниць.

201