
- •Лабораторна робота №3 Вивчення принципів побудови циклічних кодів і пристроїв кодування-декодування
- •3.1. Методичні вказівки до вибору утворюючого многочлена
- •3.2. Методика вибору параметрів коду для довільної кількості інформаційних символів
- •3.3. Способи кодування й декодування циклічних кодів
- •3.4. Методичні вказівки до побудови пристроїв кодування та декодування циклічних кодів
- •3.5. Порядок виконання роботи
Лабораторна робота №3 Вивчення принципів побудови циклічних кодів і пристроїв кодування-декодування
Мета роботи: вивчити властивості циклічних кодів, правила їх побудови й способи завдання, а також принципи побудови пристроїв кодування та декодування цих кодів.
3.1. Методичні вказівки до вибору утворюючого многочлена
При
описі циклічних кодів зазвичай
використовують многочлени від деякої
фіктивної змінної
,
коефіцієнтами яких є символи кодових
комбінацій, тобто для двійкового коду
це
або
.
Наприклад, кодовій комбінації 1001101
відповідає многочлен
.
Степінь
змінної
вказує порядковий номер (якщо рахувати
справа наліво і починати з нуля) символу
кодової комбінації, що є коефіцієнтом
при даному степені в многочлені, який
відповідає цій комбінації. У загальному
випадку кодовій комбінації із
символів
відповідає многочлен
.
Над такими многочленами можна виконувати операції додавання, віднімання, множення й ділення з урахуванням того, що коефіцієнти многочленів для двійкових кодів є елементами двійкового поля, тобто додавання й віднімання коефіцієнтів при однакових степенях необхідно виконувати за модулем 2.
Очевидно,
що коду довжиною
буде відповідати сукупність многочленів,
степені яких не перевищують
.
Надалі для скорочення запису замість
вислову "многочлен, який відповідає
кодовій комбінації", будемо
використовувати вислів "многочлен
коду".
Кожен
многочлен циклічного коду ділиться без
остачі на певний многочлен
,
що називають утворюючим або породжуючим,
причому
повинен входити в розклад двочлена
,
тобто ділити його без остачі; тут
– довжина циклічного коду.
Властивістю ділення без остачі многочленів коду на можна пояснити його завадостійкість. Многочлен, який відповідає прийнятій з помилками кодовій комбінації, при правильному виборі утворюючого полінома в більшості випадків не буде ділитися на нього без остачі. Таким чином, остача від ділення, що називається синдромом, може служити індикатором наявності помилок у кодовій комбінації. Синдром буде нульовим, якщо помилок у кодовій комбінації не було або ж конфігурація помилок була такою, що перевела передану кодову комбінацію в деяку іншу комбінацію цього ж коду.
Ненульовий синдром свідчить про наявність у кодовій комбінації помилок. Вигляд синдрому не залежить від переданої комбінації, а визначається тільки вектором (або многочленом) помилок.
Якщо необхідно не тільки встановити факт наявності помилок у кодовій комбінації, але й виправити їх, варто побудувати код так, щоб кожен набір (вектор) помилок, що підлягає виправленню, давав би свій, відмінний від інших, синдром.
Таким чином, властивості циклічного коду визначаються утворюючим многочленом, степінь якого збігається із кількістю перевірочних символів.
Для
отримання коду з кодовою відстанню
досить вибрати утворюючий поліном
першого степеня
.
Такий код має один перевірочний символ,
може бути побудований для будь-якого
й збігається з кодом з перевіркою на
парність.
Код з
парною кількістю одиниць дозволяє
виявляти будь-яку непарну кількість
помилок. З огляду на це, співмножник
використовують для збільшення на одиницю
кодової відстані
у випадку, якщо
було непарним. Кількість інформаційних
символів коду при цьому не змінюється,
а кількість перевірочних збільшується
на одиницю.
Для
отримання коду з
як утворюючий многочлен необхідно
вибирати так званий примітивний
многочлен. Основна властивість
примітивного многочлена, яку можна
вважати і його визначенням: примітивний
многочлен
степеня
дає різні остачі від ділення на нього
послідовних степенів
.
Таким чином, серед остач від ділення
одночленів
,
,
,
…,
,
де
,
на примітивний многочлен степеня
не буде ні однієї пари співпадаючих.
Сукупність зазначених одночленів
відповідає сукупності всіх однократних
помилок для коду довжиною
,
тому синдроми для всіх однократних
помилок при виборі примітивного
многочлена в якості утворюючого будуть
попарно різні, тобто код здатний
виправляти всі однократні помилки,
отже, має кодову відстань, не меншу 3.
Примітивний многочлен завжди незвідний, тобто його не можна представити у вигляді добутку многочленів менших степенів.
Для будь-якого цілого додатного існує хоча б один примітивний многочлен степеня , на основі якого може бути побудований циклічний код довжиною з кодовою відстанню . Такий код буде збігатися з одним із кодів Хеммінга.
У
табл. 3.1. наведені всі примітивні
многочлени степенів 2, 3, 4, 5 і деякі
примітивні многочлени степенів 6, 7 із
зазначенням довжини
коду й кількості
інформаційних символів. Степінь
многочлена збігається із кількістю
перевірочних символів коду. Будь-який
із цих многочленів може бути обраний у
якості утворюючого для відповідної
довжини коду
.
Таблиця 3.1 |
|||
1 |
2 |
3 |
4 |
|
|
|
|
2 |
|
3 |
1 |
3 |
|
7 |
4 |
3 |
|
7 |
4 |
4 |
|
15 |
11 |
4 |
|
15 |
11 |
5 |
|
31 |
26 |
Продовження табл. 3.1
1 |
2 |
3 |
4 |
5 |
|
31 |
26 |
5 |
|
31 |
26 |
5 |
|
31 |
26 |
5 |
|
31 |
26 |
5 |
|
31 |
26 |
6 |
|
63 |
57 |
6 |
|
63 |
57 |
7 |
|
127 |
120 |
7 |
|
127 |
120 |
7 |
|
127 |
120 |
Для спрощення реалізації кодера та декодера варто вибирати многочлен з мінімальною кількістю ненульових елементів.
Одержати
будь-яке непарне значення
(звичайно, у межах потенційних можливостей
коду) дозволяють циклічні коди
Боуза-Чоудхурі-Хоквінгема (БЧХ). Код БЧХ
при довжині
,
де
– ціле додатне число, і кількості
перевірочних символів, що не перевищує
,
дозволяє виправляти всі помилки кратності
від 1 до
включно, тобто має кодову відстань
.
Утворюючий
многочлен
такого коду знаходять як добуток так
званих мінімальних многочленів
,
степінь кожного з яких не перевищує
:
.
Мінімальні многочлени є завжди незвідними.
Кодова відстань коду визначається кількістю многочленів, що входять у добуток. Включення в добуток чергового многочлена збільшує кодову відстань не менше, ніж на 2, і збільшує степінь утворюючого многочлена не більше, ніж на .
Наведемо
таблиці многочленів-співмножників
для
;
(табл. 3.2);
для
,
(табл. 3.3);
для
,
(табл. 3.4).
Таблиця 3.2 , |
||||
|
|
|
|
|
1 |
|
3 |
4 |
3 |
2 |
|
6 |
1 |
7 |
Таблиця 3.3 , |
||||
|
|
|
|
|
1 |
|
4 |
11 |
3 |
2 |
|
8 |
7 |
5 |
3 |
|
10 |
5 |
7 |
4 |
|
14 |
1 |
15 |
Таблиця 3.4 , |
||||
|
|
|
|
|
1 |
|
5 |
26 |
3 |
2 |
|
10 |
21 |
5 |
3 |
|
15 |
16 |
7 |
4 |
|
20 |
11 |
11 |
5 |
|
25 |
6 |
15 |
6 |
|
30 |
1 |
31 |
У таблицях, крім , для кожного зазначені кількість перевірочних символів, кількість інформаційних символів, кодова відстань , якщо утворюючий многочлен є добутком многочленів з індексами від до включно.
Подібні таблиці можна скласти для кожного .
Приклад
1.
Знайти утворюючий многочлен коду
довжиною
,
що має кодову відстань
.
З табл. 3.3 визначаємо, що буде отримано, якщо утворюючий многочлен буде добутком перших трьох незвідних многочленів:
Коди
БЧХ мають непарні значення кодової
відстані
,
які при необхідності можна збільшити
на одиницю, взявши в якості утворюючого
многочлен, отриманий множенням утворюючого
многочлена коду БЧХ на двочлен (
)
. Так, на основі отриманого в прикладі
1 утворюючого многочлена для коду БЧХ
із
і
можна одержати утворюючий многочлен
для коду з
й
:
Кількість перевірочних символів при цьому збільшується на одиницю в порівнянні з вихідним кодом БЧХ, а кількість інформаційних символів залишається незмінною.