Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Циклічний зсув кодової комбінації




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

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

Припустимо, задана вихідна кодова комбінація і відповідний їй поліном:

a (x) = anxn −1 + an −1 xn −2 + … + a 2 x + a 1

 

Помножимо на:

a (x) · x = anxn + an −1 xn −1 + … + a 2 x 2 + a 1 x

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

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

 

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

 

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

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

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

, (9.1)

де r – кількість перевірочних розрядів у комбінації циклічного коду; ‑ поліном первинної кодової комбінації (представляє інформаційні біти); ‑ твірний поліном; ‑ частка від ділення того степеня, що і; ‑ остача від ділення, яка має степінь, не більший за.

З виразу (9.1) можна одержати три способи побудови циклічного коду:

 

;

,

де – комбінація циклічного коду.

Перші два способи дають один і той же роздільний циклічний код, тобто F 1(x)= F 2(x), у якому розташування інформаційних і перевірочних елементів буде підпорядковано правилу: старших розрядів комбінації – інформаційні, решта розрядів – перевірочні. Третій спосіб використовується для побудови нероздільного циклічного коду, де інформаційні і перевірочні елементи в комбінаціях не відокремлені одні від одних, що ускладнює процес декодування.

Деякі твірні поліноми для циклічних кодів наведені у табл. 9.1.

Таблиця 9.1

Кількість перевірочних елементів r Твірний поліном P (x) Двійковий запис полінома
  x 3Å x Å1  
  x 3Å x 2Å1  
  x 4Å x Å1  
  x 4Å x 3Å1  
  x 5Å x 2Å1  
  x 5Å x 3Å1  
  x 5Å x 3Å x 2Å x Å1  
  x 5Å x 4Å x 2Å x Å1  
  x 6Å x 5Å x 4Å1  
  x 8Å x 7Å x 6Å x 5Å x 2Å x Å1  
  x 9Å x 5Å x 3Å1  

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

Для виправлення помилки можна скористатися методом гіпотез. Цей метод ґрунтується на послідовній побудові гіпотез про помилки у молодшому розряді прийнятої кодової комбінації, потім, якщо гіпотеза не підтверджується, у другому розряді і так далі, поки гіпотеза не підтвердиться і остача від ділення, де – поліном помилки, на не дасть нульовий результат. Це означає, що і помилка виправлена.

Розрізняють три матричні способи одержання циклічного коду, два з яких ґрунтуються на побудові твірної матриці, і один – перевірочної.

За першим способом будується твірна матриця

G =.

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

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

,

де. При цьому, перевірочна матриця має вигляд:

H =.

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

Циклічні коди з можуть виявляти одно-, дво- і трикратні помилки. Для збільшення кодової відстані до кількість перевірочних елементів у кодовій комбінації такого коду має бути на один більшою, ніж у коді з. Твірний поліном P (x)(d =4) такого коду визначається як добуток твірного поліному P (x)(d =3) циклічного коду, який має, на поліном (x Å1), тобто:

P (x)(d =4)= P (x)(d =3)(x Å1).

Процедура кодування і декодування залишається такою ж, як і для циклічного коду з dmin =3.

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

Задача 9.2.1

Закодувати двійковим циклічним кодом, що виправляє однократні помилки, кодову комбінацію двійкового простого коду та показати процес виправлення будь-якої однократної помилки в одержаній комбінації циклічного коду. Визначити надмірність коду.

Розв’язання. Побудуємо кодову комбінацію першим способом. Для того, щоб закодувати комбінацію простого коду циклічним кодом, необхідно вибрати твірний поліном. Степінь твірного поліному визначається кількістю перевірочних елементів у комбінації циклічного коду, а величина при визначається з виразу. Тобто, при маємо. Таким чином з табл. 9.1 вибираємо поліном степені: 1.

Виконуємо кодування комбінації двійкового простого коду. Для цього

– записуємо її у вигляді полінома:;

– помножимо на;

– оскільки, то;

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

Å x 6Å x 5Å x 4   x 3Å x Å1
x 6Å x 4Å x 3   x 3Å x 2
Å x 5 Å x 3    
x 5 Å x 3Å x 2    
  x 2    
         

Одержуємо остачу, якій відповідає трирозрядний вектор () –; додаємо остачу до і отримуємо кодову комбінацію двійкового циклічного коду.

Покажемо процес виправлення однократної помилки. Для цього припустимо, що при передачі виникла однократна помилка, поліном та вектор якої відповідно та. Тоді поліном прийнятої комбінації F *(x)= F (xE (x)= x 6Å x 5Å x 4Å x 3Å x 2 ® 1111100.

Декодер виконує перевірочне ділення F *(x) на той же твірний поліном P (x), який був використаний при кодуванні:

Å x 6Å x 5Å x 4Å x 3Å x 2 x 3Å x Å1
x 6Å x 4Å x 3 x 3Å x 2Å1
  Å x 5Å x 2  
  x 5Å x 3Å x 2  
  Å x 3  
  x 3Å x Å1  
    x Å1 .
             

Отже, остача або.

Оскільки остача від ділення не дорівнює нулю, робимо висновок про наявність помилки у прийнятій комбінації F *(x).

Для визначення місця помилки скористуємося методом гіпотез.

Крок 1. Висуваємо гіпотезу про помилку у молодшому розряді комбінації циклічного коду F *(x), тобто вважаємо, що поліном та вектор помилки відповідно E 1(x)=1 та E 1=0000001. Беремо суму за модулем 2 F *(xE 1(x):

F *(xE 1(x)=(x 6Å x 5Åх4Å x 3Å x 2)Å1= x 6Å x 5Åх4Å x 3Å x 2Å1;

ділимо отриману суму на з метою підтвердження (у разі нульової остачі) або спростування (у разі ненульової остачі) висунутої гіпотези:

Å x 6Å x 5Å x 4Å x 3Å x 2Å1 x 3Å x Å1
x 6Å x 4Å x 3 x 3Å x 2Å1
  Å x 5Å x 2Å1  
  x 5Å x 3Å x 2  
  Å x 3Å1  
  x 3Å x Å1  
    x .
           

Остача R (x) = x, тобто R (x)¹0, і гіпотеза відхиляється.

Крок 2. Висуваємо гіпотезу про помилку у другому розряді F *(x), тобто вважаємо, що E 2(x)= x ® E 2=0000010. Беремо суму за модулем 2 F *(xE 2(x):

F *(x) E 2(x) = (x 6Å x 5Å x 4Å x 3Å x 2x = x 6Å x 5Å x 4Å x 3Å x 2Å x;

ділимо цю суму на P (x) з метою підтвердження або спростування гіпотези:

Å x 6Å x 5Å x 4Å x 3Å x 2Å x x 3Å x Å1
x 6Å x 4Å x 3 x 3Å x 2Å1
  Å x 5Å x 2Å x  
  x 5Å x 3Å x 2  
  Å x 3Å x  
  x 3Å x Å1  
      .
           

Остача, тобто, і гіпотеза відхиляється.

Крок 3. Висуваємо гіпотезу про помилку у третьому розряді F *(x), тобто вважаємо, що E 3(x)= x 2 ® E 3=0000100. Беремо суму за модулем 2 F *(xE 3(x):

F *(xE 3(x)=(x 6Å x 5Å x 4Å x 3Å x 2x 2= x 6Å x 5Å x 4Å x 3;

ділимо цю суму на P (x) з метою підтвердження або спростування гіпотези:

Å x 6Å x 5Å x 4Å x 3 x 3Å x Å1
x 6Å x 4Å x 3 x 3Å x 2Å1
  Å x 5  
  x 5Å x 3Å x 2  
  Å x 3Å x 2  
  x 3Å x Å1  
    x 2Å x Å1 .
           

Остача R (x)= x 2Å x Å1, тобто R (x) 0, і гіпотеза відхиляється.

Крок 4. Висуваємо гіпотезу про помилку у четвертому розряді F *(x), тобто вважаємо, що E 4(x)= x 3 ® E 4=0001000. Беремо суму за модулем 2 F *(xE 4(x):

F *(xE 4(x) = (x 6Å x 5Å x 4Å x 3Å x 2x 3= x 6Å x 5Å x 4Å x 2;

ділимо отриману суму на P (x) з метою підтвердження або спростування гіпотези:

Å x 6Å x 5Å x 4Å x 2   x 3Å x Å1
x 6Å x 4Å x 3   x 3Å x 2
Å x 5Å x 3Å x 2    
x 5Å x 3Å x 2    
  0   .
         

Остача, тобто помилка дійсно була у четвертому розряді, а вихідна комбінація циклічного коду має вигляд:

F (x)= F *(xE 4(x)= x 6Å x 5Åх4Å x 2 ® F =1110100.

Надмірність коду.

 

Задача 9.2.2

Закодувати двійковим циклічним кодом, що виправляє однократні помилки, кодову комбінацію двійкового простого коду Q (x)= x 5Å x 2 і виправити будь-яку однократну помилку в одержаній комбінації циклічного коду. Визначити надмірність коду.

Розв’язання. Щоб закодувати задану кодову комбінацію Q (x)= x 5Å x 2 () циклічним кодом, що виправляє однократні помилки (dmin =3) необхідно вибрати твірний поліном. Степінь твірного поліному P (x) визначається кількістю перевірочних елементів, яку визначаємо з виразу 2 r –1 n (для dmin =3). При одержуємо та вибираємо з таблиці 9.1 поліном четвертого степеня: P (x)= x 4Å x Å1.

Виконаємо кодування первинної кодової комбінації Q (x)= x 5Å x 2, для чого знайдемо частку C (x) від ділення Q (x) x 4 на P (x), а потім помножимо її на P (x). Маємо

Q (x) x 4=(x 5Å x 2) x 4= x 9Å x 6.

Поділимо отриманий добуток на P (x) з метою визначення частки C (x) від ділення:

Å x 9Å x 6   x 4Å x Å1
x 9Å x 6Å x 5   x 5Å x
Å x 5    
x 5Å x 2Å x    
  x 2Å x   .
         

Тобто C (x)= x 5Å x. Помножимо C (x) на P (x) і одержимо кодову комбінацію циклічного коду:

F (x)= C (x) P (x)=(x 5Å x)(x 4Å x Å1)= x 9Å x 6Å x 2Å x,

або у двійковому вигляді.

Виправляємо однократну помилку.

Припустимо, що при передачі по каналу зв’язку виникла однократна помилка, поліном якої. Тоді поліном прийнятої кодової комбінації циклічного коду F *(x)= x 9Å x 6Å x 2Å x Å1.

Декодер виконує перевірочне ділення F *(x) на твірний поліном P (x):

Å x 9Å x 6Å x 2Å x Å1   x 4Å x Å1
x 9Å x 6Å x 5   x 5Å x
Å x 5Å x 2Å x Å1    
x 5Å x 2Å x    
  1   .
         

Тобто R (x)=1¹0.Це вказує на наявність помилки у прийнятій кодовій комбінації.

Для визначення місця помилки скористуємося методом гіпотез, першим кроком якої є гіпотеза про наявність помилки у молодшому розряді прийнятої кодової комбінації F *(x), тобто вважаємо, що поліном та вектор помилки відповідно E 1(x)=1 та E 1=0000000001. Визначаємо суму за модулем 2 F *(x) E 1(x) та ділимо цю суму на Р (х) з метою підтвердження або спростування гіпотези:

F *(x) E 1(x)=(x 9Å x 6Å x 2Å x Å1)Å1= x 9Å x 6Å x 2Å x;

Å x 9Å x 6Å x 2Å x   x 4Å x Å1
x 9Å x 6Å x 5   x 5Å x
Å x 5Å x 2Å x    
x 5Å x 2Å x    
  0   .
         

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

 

Таким чином, вихідна комбінація циклічного коду F (x)= x 9Å x 6Å x 2Å x ® F = 1001000110.

Надмірність коду.

2. Коди Боуза-Чоудхурі-Хоквінгема (БЧХ)

Коди Боуза-Чоудхурі-Хоквінгема (БЧХ) є різновидом циклічних кодів з кодовою відстанню. Коди БЧХ дозволяють виявляти і виправляти будь-яку кількість помилок у залежності від мінімальної кодової відстані. При кодуванні задаються кількістю помилок, яку слід виправити, або кодовою відстанню і загальною кількістю елементів у кодовій комбінації Кількість інформаційних елементів та перевірочних елементів визначається при побудові коду.

Так довжина кодової комбінації у кодах БЧХ визначається з виразів [24]:

, або, (9.2)

де – ціле число; – непарне додатне число, при діленні на яке одержуємо цілим непарним числом. Таким чином, може бути тільки непарним числом. Тобто, керуючись виразом (9.2), визначаємо, що кількість елементів у комбінаціях коду БЧХ може дорівнювати тощо.

Кількість перевірочних елементів коду відповідає співвідношенню

, (9.3)

звідки кількість інформаційних елементів

. (9.4)

Твірний поліном коду БЧХ визначається як добуток так званих мінімальних поліномів, із непарними індексами:

, (9.5)

де. Можна пересвідчитись, що кількість мінімальних поліномів у добутку (9.5) дорівнює максимальній кількості помилок, які гарантовано виправляються кодом.

У таблиці 9.2 наведені основні параметри деяких кодів БЧХ.

Таблиця 9.2

n k r dmin Твірний поліном Р 8
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         
         

Подані в таблиці параметри були визначені у відповідності з викладеною вище методикою. Для зручності запису твірні поліноми подані у вісімковій системі числення (P 8). Щоб одержати твірний поліном у звичайному вигляді, тобто у тій формі, яка використовується для побудови кодів БЧХ, треба перевести кожну вісімкову цифру у три біти. Так, наприклад, Р 8=45 запишеться двійковими числами: та. Таким чином одержуємо двійкове число, яке записується поліномом Р (х)= x 5Å x 2Å1.

Як було показано вище, коди БЧХ мають непарне значення мінімальної кодової відстані. Для того, щоб збільшити на одиницю, досить помножити твірний поліном коду БЧХ на двочлен (х Å1).

Кодування у кодах БЧХ виконується так само, як і у звичайних циклічних кодах, у тому числі і за допомогою матричних способів (див. вище). Декодування кодів БЧХ (виявлення та виправлення помилок) також може виконуватися з використанням методики, викладеної для циклічних кодів з.

Задача 9.2.3

Знайти твірний поліном двійкового коду БЧХ, здатного виправляти трикратні помилки та призначеного для передачі символів деякого алфавіту, потужність якого дорівнює 32.

Розв’язання. Мінімальна кодова відстань для коду БЧХ, здатного виправляти трикратні помилки,. Для передачі символів алфавіту потужністю повідомлень достатньо мати двійкових інформаційних символів ().

Для визначення твірного полінома коду БЧХ, що має та, скористаємося таблицею 9.2. Бачимо, що мінімальна довжина коду БЧХ з заданими параметрами, для якого твірний поліном у вісімковій системі числення P 8=2467, або у двійковій системі числення P 2=010100110111. Таким чином твірний поліном коду БЧХ буде мати вигляд P (x)= x 10Å x 8Å x 5Å x 4Å x 2Å x Å1.




Поделиться с друзьями:


Дата добавления: 2013-12-12; Просмотров: 1859; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.056 сек.