Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичні вказівки МЗКІТ.doc
Скачиваний:
31
Добавлен:
12.02.2016
Размер:
3.38 Mб
Скачать

Хід роботи

1.Ознайомитися з теоретичним матеріалом по темі лабораторної роботи.

2.Закодувати повідомлення вручну кодом Хемінга з кодовою відстанню d=3 і d=4.

3. Декодувати повідомлення закодовані в п.2.

4.Запустити на виконання програму Hemming.Exe.

5.Пройти режими Кодування(перегляд) та Декодування(перегляд).

6.Виконати кодування двійкової інформації в режимі Кодування(навчання)

7. Виконати декодування двійкової інформації в режимі Декодування(навчання)

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

9.Оформити звіт.

Лабораторна робота №5

Тема роботи: ЦИКЛІЧНІ КОДИ.

Мета роботи: вивчення кодування та декодування інформації за допомогою циклічних кодів.

Теоретичні відомості

В теорії циклічних кодів двійкові кодові комбінації представляють у вигляді поліномів. Показники степені х в поліномі відповідають номерам розрядів, коефіцієнти при х рівні нулю або одиниці в залежності від значення даного розряду. Наприклад:

0001010х5+0х4+0х3+1х2+0х1+1х0 = х2+1;

0010100х5+0х4+1х3+0х2+1х1+0х0 = х3+х;

0101001х5+1х4+0х3+1х2+0х1+1х0 = х5+х4+х2 +1.

Циклічні коди відносяться до блочних кодів і позначаються CRC(n, k), де k - кількість інформаційних символів, n - загальна кількість символів або довжина кодового слова: Кількість надлишкових символів r, що додаються до інформаційних з метою забезпечення корекції помилок:

r = n-k. (1)

Циклічні коди грунтуються на твірних поліномах. Ідея корекції помилок в циклічних кодах базується на тому, що дозволені комбінації коду діляться без залишку на деякий твірний поліном. Ні одна заборонена кодова комбінація не ділиться на твірний поліном без остачі.

Твірний поліном повинен відповідати таким вимогам:

  • степінь полінома повинна бути рівна кількості надлишкових символів r;

  • твірний поліном повинен бути не приводимий;

  • поліном (xn+1) повинен ділитися на твірний поліном без остачі.

Непрививодимими називаються поліноми, які не можуть бути представлені у вигляді добутку багаточленів нижчих степенів. Вони діляться без залишку тільки на себе або на одиницю. Перелік твірних поліномів наведено у додатку.

Розглянемо приклад циклічного коду CRC(7,3).

Виходячи з позначення CRC(7,3), маємо:

  • загальна довжина послідовності n = 7 біт;

  • довжина корисної інформації k = 3 біти;

  • довжина надлишкової послідовності r = n-k = 7-3 = 4 біти.

10000001|11101

11101 |

11010 |

11101 |

11101|

11101|

0|

10000001|10111

10111 |

11100 |

10111 |

10111|

10111|

0|

x4+x3+x2+x0

x4+x2+x1+x0

Для коду CRC(7,3) твірними поліномами можуть бути поліноми 11101 (x4+x3+x2+1) та 10111 (x4+x2+x1+1). Далі будемо розглядати перший твірний поліном g(x) = 1+x2+x3+x4.

Кодування

На основі твірного поліному g(x) = 1+x2+x3+x4 (11101) побудуємо схему код ера (рис.1).

Вертикальні зв’язки в кодері будуються за наступним принципом. Присутність і-го зв’язку на схемі відповідає присутності одинички при і-й степені у поліномі (при xi). При цьому 0 <= і <= r.

Рис. 1. Схема кодера для твірного поліному g(x) = 1+x2+x3+x4.

Степінь i

Коефіцієнт при xi

Опис зв’язку

0

1

Зв’язок зліва від a1 є

1

0

Зв’язок зліва від a2 відсутній

2

1

Зв’язок зліва від a3 є

3

1

Зв’язок зліва від a4 є

4

1

Останній зв’язок є

Треба зауважити, що перший та останній зв’язок є завжди.

На вхід кодера надходить k інформаційних символів, в даному прикладі - 3. При цьому за k кроків у регістрі a1,a2,a3,a4 утвориться послідовність надлишкових символів r коду CRC. r = 4.

Розглянемо формули, за якими можна визначити значення стану комірки aI на кожному кроці. Позначимо через aI стан комірки aI, через aI стан комірки ai на попередньому кроці.

a1 = a’4k,

a2 = a’1,

a3 = ka’4a’2,

a4 = ka’4a’3.

Оскільки a’4k = a1 то формули для a3, a4 можна записати і так:

a3 = a1a’2,

a4 = a1a’3.

Декодування

Рис. 2. Схема декодера для твірного поліному g(x) = 1+x2+x3+x4

На основі твірного полінома будуємо схему декодера. Зв’язки у схемі будуються за тим самим принципом, що і у схемі кодера.

Формули для визначення a1,a2,a3,a4 тепер будуть мати такий вигляд:

a1=a’4+k, a2=a’1, a3=a’4+a’2, a4=a’4+a3

Декодер циклічного коду ділить прийняту кодову комбінацію на твірний поліном. Якщо у результаті в регістрах є лише нулі то має місце правильна передача або помилка що не виявляється.

Розглянемо роботу декодера:

У нашому випадку на вхід декодера поступає n=7 біт з них k=3 записуються у запам’ятовуючому регістрі. За n тактів (поки вона поступає) відбувається процес ділення на твірний поліном, якщо остача від ділення =0 то k біт з запам’ятовуючого регістру видаються користувачу.

Виправлення помилки

Якщо після ділення (у декодері) у регістрах a1, a2, a3, a4 є хоча б одна одиничка то значить що при передачі послідовності була помилка. Для виправлення помилки застосовується таке правило:

На вхід декодера подається стільки нулів поки у регістрі не з’явиться комбінація 1000 (у нашому випадку) тобто у регістрі a1=1 а всі інші =0; номер такту при якому з’явилась комбінація 1000 і є номером спотвореного біту. Після цього залишається лише інвертувати спотворений біт і видати користувачу послідовність.

Приклад ( СRС(7.3), тв. поліном =11101 )

Для прикладу закодуємо 100 у результаті отримаємо послідовність 1001110

Зліва кожен і-й рядок відповідає стану регістрів у кодері після надходження і-го біту.

Значення CRC можна отримати й таким способом:

1000000|11101

+11101..|

.1101..|

+.11101.|

...1110|=CRC

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

Запис CRC зліва дзеркальний до CRC справа (їх значення однакові) лише тому, що при кодуванні нам простіше вводити спочатку молодший біт, а при звичайному діленні більш звично починати з старшого біту.

Тепер розкодуємо цю послідовність (1001110) у результаті отримаємо що у регістрах a1, a2, a3, a4 будуть нулі це означає що при передачі послідовність не була спотворена, або у послідовності є помилка, що не виявляється.

Зліва кожен і-й рядок відповідає стану регістрів у декодері після надходження і-го біту.

Аналогічно до кодування є й інший спосіб перевірки (справа).

1001110|11101

+11101..|

.11101.|

+.11101.|

...0000|

Припустимо що при передачі послідовності 3-й біт послідовності був спотворений (1011110). У результаті буде виявлена помилка і після додавання 3-х нулів з’явиться потрібна послідовність, інвертуємо 3-й біт і таким чином визначимо що передавана послідовність була 100

Зліва кожен і-й рядок відповідає стану регістрів у декодері після надходження і-го біту.

1011110000.|11101

+11101......|

.10101.....|

+.11101.....|

..10000....|

+..11101....|

...11010...|

+...11101...|

.....11100.|

+.....11101.|

=......0001.|

Після надходження n біт виявляється, що у повідомленні є помилка.

Після додавання у кінець послідовності 3-х нулів ми отримуємо 1 у молодшому розряді (регістр a1=1), всі інші 0. Таким чином ми визначили, що помилка була у 3-му біті (рахуючи не з нуля, а з одинички), інвертуючи його 101 отримуємо передану послідовність 100.

Опис програми

Програма складається з 7-ми сторінок: