становка задачі
Циклічні коди знаходять найбільше поширення в системах передачі даних з вирішальною зворотним зв'язком, що обумовлено їх високими коригуючими властивостями, порівняно простий реалізацією, невисокою надмірністю. Особливо вони ефективні при виявленні пакетів помилок. Циклічні коди відносяться до блокових систематичним кодами, в яких кожна комбінація кодується самостійно у вигляді блоку таким чином, що інформаційні k та перевірочні г елементи завжди знаходяться на певних місцях. Для спрощення процедури кодування та декодування перевірочні біти розміщують в кінці блоку. Кодування переданого повідомлення здійснюється множенням двійковій послідовності G (x) на Одночлен хr, має ту ж ступінь, що і утворить поліном Р (х), з додаванням до цього твору залишку R (x), отриманого після ділення твори G (x) * xr на який утворює поліном, тобто передається в канал зв'язку повідомлення F (x) має вигляд:
F (x) = G (x) * xr + R (x). (4.1)
При декодуванні приймається послідовність F (x) знову ділиться на який утворює поліном Р (х). Отриманий нульовий залишок R (x) = 0 свідчить про відсутність помилок у прийнятому блоці, а відміну від нуля - про наявність помилок. p align="justify"> Опис логічної структури
Для моделювання роботи кодера і декодера циклічного коду в склади програми був включений клас Coder. До складу класу входять наступні змінні:
Таблиця 4.1 - Змінні класу Coder
Ім'я переменнойТипКомментарииStep_PintegerСтепень утворить поліномаVОб'ем переданої інформацііiСчетчікі в ціклахjInfbool * Покажчик на масив інформацііPolУказатель на масив подання поліномаReg_CodУказатель на масив подання кодераReg_DecУказатель на масив подання декодераErrУказатель на вектор помилок
Для представлення інформації в програмі використовується тип bool. Це призводить до збільшення обсягу займаної пам'яті, але в даному випадку воно неістотно, так як передається лише 240 біт. Кожен елемент масиву Reg_Cod і Reg_Dec відповідає одній клітинці регістра. p align="justify"> Прототипи функцій класу Coder:
В· void Init ();
В· bool * getInf ();
В· bool * getPol ();
В· bool * getReg ();
В· void setInf (bool *);
В· void setPol (bool *);
В· void setReg (bool *);
В· void setSt (int);
В· int getSt ();
В·