Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Циклічні коди




Циклічним кодом називається лінійний блоковий (n, m) - код, в якого безліч кодових слів представляється сукупністю багаточленів ступеня (n – 1) і менш, що діляться на деякий багаточлен Р (x) ступеня k = n – m, що є співмножником двочлена (xn +1). Багаточлен Р (x) називається таким, що породжує чи породжуючим. Як випливає з визначення загальна властивість кодових слів циклічного коду – це їх подільність без залишку на деякий багаточлен Р (x), званий породжуючим.

З відомих завадостійких кодів циклічні коди відрізняються високою ефективністю виявлення спотворень і порівняльною простотою реалізації кодуючих і декодуючих пристроїв. Назва цією класу кодів відбулася від їх властивості, що полягає у тому, що якщо кодова комбінація а0, а1, а2,..., а n -1, а n, належать коду А, то комбінація а n, а0, а1, а2,..., а n -1, одержана циклічною перестановкою елементів, також належить коду А, тобто зсув вліво на один крок будь-якого дозволеного кодового слова дає також дозволене кодове слово, що належить цьому ж коду.

Циклічні коди достатньо часто описуються з використанням багаточленів змінної х. Для побудови таких кодів цифри двійкового коду слід розглядати як коефіцієнти багаточлена змінної х, де х – основа системи числення. У двійкових кодах х = 2. Наприклад, записане в двійковому коді повідомлення 1001101 може бути представлене багаточленом виду

х 6 + 0· х 5 + 0· х 4 + 1· х 3 + 1· х 2 + 0· х 1 + 1· х 0 = х 6 + х 3 + х 2 + х 0.

При такому представленні кодів математичні операції з отриманими багаточленами здійснюються відповідно до законів звичної алгебри, за винятком того, що складання здійснюється по модулю 2: ха + ха = 0, ха + 0 = ха,
0 + 0 = 0.

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

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

(mod Р),

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

(mod Р).

Як значення обраного модуля – Р використовується один із уже згаданих утворюючих поліномів P (x), ступінь якого дорівнює k. Ці поліноми вибираються із відповідних таблиць.

Операція обчислення лишку по деякому модулю, наразі це утворюючий поліном – P (x), виконується за правилом:

(mod Р) = – [] · P (x),

де позначка [] означає обчислення цілої частини від виразу в дужках. Позначимо цю цілу частину через C (x). Тоді:

(mod Р) =C (xP (x), (1)

чи

F (x) = C (x) · P (x) =+. (2)

Звернемо увагу на те, що оскільки ступінь утворюючого поліному P (x) дорівнює k, частка C (x) має таку ж ступінь, як і кодова комбінація G (x), тому C (x) є кодовою комбінацією цього ж простого k -значного коду. Слід зауважити, що ступінь залишку не може бути більше ступеня утворюючого поліному, тобто його найвища ступінь дорівнює (k – 1). Отже, найбільше число розрядів залишку R (x) не перевищує числа k.

Звернемо увагу на два висновки, які витікають із аналізу виразу (2).

По-перше, після розподілу (2) на утворюючий поліном P (x) одержимо:

F (x)/ P (x) = C (x) = (xk · G (x) + R (x))/ P (x).

Тобто сума результату множення кодової комбінації G (x) простого коду на одночлен xk і залишку R (x)

xkG (x) + R (x) (3)

ділиться націло на утворюючий поліном P (x):

C (x) = (xkG (x) + R (x))/ P (x),

а отже є шуканим циклічним кодом.

По-друге, результат множення кодової комбінації С (x) простого коду на утворюючий поліном P (x):

F (x) = C (x) · P (x)

дорівнює величині (3), також ділиться націло на утворюючий поліном P (x):

F (x)/ P (x) = C (x),

а отже також є шуканим циклічним кодом.

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

1) множенням кодової комбінації G (x) простого коду на одночлен xk і додаванням до цього добутку залишку R (x), отриманого в результаті розподілу добутку xkG (x) на утворюючий поліном P (x). Звернемо увагу, що процедура одержання залишку R (x) може бути реалізованою як R (x) = xkG (x) mod P (x).

2) множенням інформаційної послідовності – кодової комбінації G (x) простого m - значного коду на утворюючий поліном P (x). Звернемо увагу, що остання процедура може бути реалізованою як (mod Р), де як символ коду аі розглядається вихідна т – значна інформаційна послідовність G (x), яка підлягає кодуванню. Отже, в цьому випадку, оскільки та , кількість доданків в сумі дорівнює одиниці (і =1). Як множник слід використати утворюючий поліном P (x), а як значення модуля – величину , що є еквівалентним виконанню лише операції множення G (xP (x).

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

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

Приклад реалізації першого способу кодування. Дано: n = 7, m = 4,
k = 3 і Р (x) = х3 + х + 1 = 1011. Потрібно закодувати повідомлення
G (x) = х 3 + х 2+ + 1 = 1101.

Множимо кодову комбінацію G (x) вихідного коду на одночлен xk = х 3, і одержуємо xk·G (x) = х6 + х5 + х3. Надалі ділимо цей добуток на утворюючий поліном Р (x) = х3 + х + 1, в наслідок чого одержимо:

х6 + х5 + х3 х3 + х + 1

х6 + х4 + х3 х3 + х2 + х+ 1

х5 + х4

х5 + х3 + х2

х4+ х3 + х2

х4+ х2 + х

х3 + х

х3 + х + 1

R (x) = 1

У результаті цій операції одержимо залишок R (x) = 1.

Додаючи добуток х 3 G (х) до одержаного залишку, одержимо кодовий багаточлен

F (x) = x 3 G (х) + R (x) = х 6 + х 5 + х 3+ 1.

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

В разі відсутності спотворень на приймальному боці прийнята кодова комбінація F/ (x) повністю збігається із переданою F/ (x) = F (x) = х 6 + х 5 + х 3+ 1 і повинна ділитися на утворюючий багаточлен Р (x) без залишку:

У результаті цій операції одержимо частку С (x) = х3 + х2 + х + 1 та залишок R (x) = 0, що відповідає нашім очікуванням.

 

х 6 + х 5 + х 3 + 1 х3 + х + 1

х6 + х4 + х3 х3 + х2 + х + 1

х5 + х4 + 1

х5 + х3 + х2

х4 + х3 + х2 + 1

х4 + х2 + х

х3 + х + 1

х3 + х + 1

R (x) = 0

Приклад реалізації другого способу кодування. Дано: n = 7, m = 4, k = = 3 і Р (x) = х3 + х + 1= 1011. Потрібно закодувати повідомлення х 3 + х 2 + х 0 =
= 1101.

Для кодування даного повідомлення 1101, відповідного багаточлену
G (х) = х 3 + х 2 + 1, помножимо Р (х) на G (х):

х3 + х + 1

х3 + х2 + 1

х3 + х + 1

х5 + х3 + х2

х6 + х4+ х3

х6 + х5 + х4 + х3 + х2 + х + 1

У двійковому коді цьому багаточлену відповідає кодова комбінація

F (x) = G (х) · Р (x) = х6 + х5 + х4 + х3 + х2 + х + 1 = 1111111,

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

В разі відсутності спотворень ця кодова комбінація повинна ділитися на утворюючий багаточлен Р (x) без залишку:

х6 + х5 + х4 + х3 + х2+ х + 1 х3 + х + 1

х6 + х4 + х3 х3 + х2 + 1

х5 + х2 + х + 1

х5 + х3 + х2

х3 + х + 1

х3 + х + 1

R (x) = 0

У результаті цій операції одержимо частку С (x) = х3 + х2 + 1 та залишок R (x) = 0, що відповідає нашім очікуванням. Звернемо увагу, що частка С (x) є тим повідомленням, яке кодувалося циклічним кодом.

Розглянуті міркування надають можливість стверджувати наступне. В разі наявності спотворень прийняте повідомлення, яке позначимо F /(x), можна представити у вигляді суми двох доданків: багаточлена, сформованого на передаючій стороні F (x), і багаточлена спотворення Е (х): F /(x) = F (x) + Е (х). Цей багаточлен слід розділити на Р (х).

F /(x) = (F (x) + Е (х))/ Р (х) = F (x) / Р (х) + Е (х)/ Р (х).

Якщо ділення здійснюється без залишку, що є можливим лише при
Е (х) = 0, оскільки F (x) / Р (х) = 0 за визначенням коду, то ухвалюється рішення, що інформація не спотворена. В іншому випадку слід ухвалити рішення, що інформація має спотворення.

Отже, процедура декодування, при застосуванні циклічного коду в режимі виявлення спотворень, полягає, перш за все, у визначенні факту відсутності чи наявності спотворень. Із цією метою, незалежно від процедури кодування, здійснюється розподіл прийнятого повідомлення F /(x) на утворюючий поліном Р (х) та аналіз одержаного при цьому залишку.

Якщо ділення здійснюється без залишку, то ухвалюється рішення, що інформація не спотворена. Тоді, в разі використання першого способу кодування, прийнятим вважається повідомлення, одержане шляхом відкидання від прийнятого поліному F /(x) усіх членів, ступінь яких є меншою за k. У разі ж використання другого способу кодування, прийнятим вважається повідомлення, яке є часткою від розподілу прийнятого повідомлення F /(x) на утворюючий поліном Р (х), тобто поліном С (x).

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

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

Одна з основних задач, що стоять перед розробниками захисних пристроїв від помилок при передачі дискретних повідомлень по каналах зв’язку є вибір породжуючого багаточлена Р (x) для побудови циклічного коду, що забезпечує необхідну мінімальну кодову відстань для гарантійного виявлення та виправлення t-кратних спотворень.

Існують спеціальні таблиці з вибору Р (x) в залежності від пропонованих вимог до корегуючих можливостям коду. Приклад такої таблиці (табл. 1) наведено. Однак у кожного циклічного коду є свої особливості формування Р (x). Тому при вивченні конкретних циклічних кодів розглядаються відповідні способи побудови Р (x).

Таблица 1
k -ступінь поліному G (х) Породжуючий поліном G (х) Запис поліному по mod 2 Запис поліному по mod 8 n m Примітка  
  x +1 11 3 3 2 Код с перевіркою на парність
  x 2+ x +1 111 7 3 1 Код с повторенням
  x 3+ x 2+1 1101 13 7 4 Класичний код
x 3+ x +1 1011 15 7 4 Код Хеммінга
  x 4+ x 3+1 11001 31 15 11 Класичний код
x 4+ x +1 10011 23 15 11 Код Хеммінга
x 4+ x 2+ x +1 10111 27 7 3 Коди Файра- Абрамсона
x 4+ x 3+ x 2+1 11101 35 7 3
  x 5+ x 2+1 100101 45 31 26 Класичний код
x 5+ x 3+1 101001 51 31 26 Код Хеммінга
 
  x 6+ x 5+ x 4+ + x 3+ x 2+ x 1+1 1111111 177 7 1 Код с повторенням
  ... ... ...      

 

 




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


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


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



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




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