МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет “Львівська політехніка”
Кафедра “Телекомунікації”
Лабораторна робота № 8
ДОСЛІДЖЕННЯ КОРЕКТУЮЧИХ ВЛАСТИВОСТЕЙ ЦИКЛІЧНИХ КОДІВ
Мета роботи
Практично дослідити коректуючі властивості циклічних кодів в режимі виправлення некорельованих помилок.
Теоретичні відомості
Циклічні коди - це різновид систематичних кодів, тому вони мають усі їх властивості. Простота реалізації схем кодування/декодування (апаратна реалізація) забезпечила циклічним кодом широке застосування на практиці.
При розгляді циклічних кодів, КК зручно представляти у вигляді полінома степені (n - 1) , де n - кількість розрядів КК:
.
У двійковій системі числення, яку ми розглядаємо, можуть приймати два значення - 0 та 1. Наприклад, двійкова послідовність 01001 може бути записана у вигляді полінома
.
Таким чином дії над КК можна звести до дій над многочленами.
Кодова комбінація циклічного кода (n, k) може бути отримана двома способами:
1. Множимо многочлен С(х) степені (k - 1), що відповідає k інформаційним розрядам, на породжуючий неприводимий поліном P(x) степені (r), де r = n - k - кількість перевірочних розрядів КК:
F(x) = C(x)P(x)
Многочлен F(x) степені (n - 1) = k + r - 1 визначає отриману КК, що відповідає C(x).
2. Множимо многочлен Q(x) степені (k - 1), що відповідає k інформаційним розрядам, на одночлен хr , де r = n - k - кількість перевірочних розрядів КК, і додаємо до цього добутку залишок R(x), що отриманий у результаті ділення Q(x)(хr на породжуючий неприводимий поліном P(x) степені r:
F(x) = Q(x)(хr + R(x)
Многочлен F(x) степені (n - 1) = k + r - 1 визначає отриману КК, що відповідає Q(x).
Залишок R(x) визначається з виразу:
Тут С(х) - частка від ділення, многочлен степені (k - 1) , так само як і Q(x). Степінь многочлена R(x) не може перевищувати (r - 1), тому що P(x)-степені r.
Нехай циклічний код, побудований на основі породжуючого поліному Р(х), дозволяє виправляти помилки кратності tвипр і менше. Якщо прийнята КК містить у собі не більше, ніж tвипр помилок, то для виявлення і виправлення помилкових розрядів проводять наступні операції:
1) прийняту КК ділять на Р(х);
2) підраховують кількість одиниць у залишку (вагу залишку (). Якщо ( ( tвипр, тоді прийняту КК додають до модулю 2 з отриманим залишком. Сума дає виправлену КК, stop. Якщо ж ( > tвипр, тоді переходять до п. 3.
3) проводять циклічний зсув прийнятої КК вліво на q розрядів, ділення зсунутої комбінації на Р(х) і підрахунок ваги залишку. Цей пункт виконується послідовно для всіх значень q від 1 до n до того часу, поки вага залишку ( не стане меншою чи рівною tвипр;
додаємо по модулю 2 до КК, зсунутої на q розрядів вліво, її залишок. Отриману комбінацію зсуваємо на q розрядів вправо. Таким чином ми отримуємо передану КК з виправленими помилками.
Завдання
На основі лабораторного макету дослідити практично властивості і характеристики циклічних кодів, що виправляють помилки.
Навчитись визначати породжуючі поліноми циклічних кодів.
Хід роботи
Вхідні дані різних варіантів для циклічних кодів:
№ п/п
n
k
tвипр
P(x)
1
7
4
1
1 011
2
15
11
1
10 011
3
15
7
2
111 010 001
4
15
5
3
10 100 110 111
5
15
1
7
111 111 111 111 111
Створюю пустий файл розміром 2048 біт і закодовую його циклічним кодуванням для кожного варіанту.
Запустив модель телекомунікаційної системи зв’язку і передав закодований файл через канал з одиночними помилками для р=0.01
.
Отриманий спотворений файл декодую за допомогою програми-декодера
Висновок: Порівнюючи п’ять циклічних кодів з різними параметрами, можна сказати, що при даній імовірності помилки в каналі всі п’ять кодів справилися із завданням, але виходячи з їх параметрів другий циклічний код є найкращий по швидкості та дозволяє забезпечити стійку передачу по даному каналі, а найбільш завадостійким є п’ятий код.