Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра САПР
ЗВІТ
про виконання лабораторної роботи №5
на тему:
«ЦИКЛІЧНІ КОДИ»
з курсу:
“Проблемно-орієнтовані методи та засоби інформаційних технологій”
МЕТА РОБОТИ
Мета роботи - вивчення методiв завадостійкого кодування (циклічні коди) та особливостей їх програмної і апаратурної реалiзацiї.
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Визначення і застосування циклічного надлишкового коду.
Розглянуті циклічні коди забезпечують виявлення і корекцію помилок, однак це вимагає певних затрат (контрольна частина займає значну частину результуючого коду). В той же час при значній інтенсивності завад можливі багатократні і групові помилки для виявлення і виправлення яких потрібно збільшувати кількість контрольних розрядів та ускладнювати методи їх визначення. Тому у цьому випадку доцільно здійснювати тільки перевірку блоків переданої інформації і при наявності помилок не коректувати їх, а повторно передавати один або кілька блоків. Це може суттєво зменшити затрати часу. Варто зауважити, що при низькому рівні завад і відсутності помилок контрольна частина все одно передається, а при високому рівні завад контрольна частина не завжди забезпечує виявлення і корекцію помилок.
Елементарним методом виявлення непарної кількості помилок у байті є контроль парності та непарності, тобто підрахунок кількості одиничних розрядів і доповнення її до парної чи непарної з виділенням одного додаткового розряду для збереження значення доповнення. Хоча цей метод не забезпечує виявлення парної кількості помилок він широко застосовується (наприклад у протоколі RS-232C).
Для збільшення кількості виявлених помилок і забезпечення надійності передачі інформації використовуються більш складні методи. Найпоширенішим з них є застосування циклічного надлишкового коду (CRC). Визначення CRC базується на принципах побудови циклічних кодів і є різновидністю хешування, тобто відображенням множини розрядів інфор-маційного блоку (розміром 128-1024 байт) на меншу множину розрядів коду CRC (16 аба 32 біти). Очевидно, що при такому відображенні однакове значення CRC може відповідати кільком різним варіантам інформаційних блоків, однак імовірність перетворення одного варіанта блока в інший за рахунок спотворення кодів завадами є дуже малою.
Визначення CRC здійснюється так само як і визначення остачі в циклічних кодах. При цьому значення утворюючого полінома для CRC-16 береться x16+x15+x2+1 або 110000000000001012, а для CRC-32 – x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x1+1 або 1000001001100000100011101101101112. Інколи використовуються і інші утворюючі поліноми. Значення CRC долучається до блоку інформації і передається у канал зв’язку. Після прийому отримана послідовність бітів ділиться на утворюючий поліном і здійснюється контроль переданої інформації на наявність помилок. При виявленні помилок (остача не рівна нулю) формується відповідний запит і спотворені завадами блоки передаються повторно.
З метою збільшення швидкодії визначення CRC може здійснюватися апаратурно на основі регістрів зсуву та суматорів по модулю 2 (операція XOR). Схема ділення на поліном для CRC-16 приведена на рис. 2.
Рис. 2. Апаратурне визначення CRC.
Приклад визначення циклічного надлишкового коду представлений на рис 3.
11100001011010110000000000000000/11000000000000101
11000000000000101
-------------------------
10000101101001100
11000000000000101
-------------------------
10001011010010010
11000000000000101
-------------------------
10010110100101110
11000000000000101
--------------------------
10101101001010110
11000000000000101
-------------------------
11011010010100110
11000000000000101
-------------------------
11010010100011000
11000000000000101
-------------------------
10010100011101000
11000000000000101
-------------------------
10101000111011010
11000000000000101
-------------------------
11010001110111110
11000000000000101
------------------------- Код для передачі по каналу зв’язку
Остача 100011101110110 1110000101101011100011101110110
Рис. 3. Визначення циклічного надлишкового коду.
Програмна реалізація методу циклічного кодування
Розглянемо можливий варіант програмної реалізації методу циклічного кодування. Цей варіант базується на використанні операцій зсуву, логічного множення та додавання, а також операціії XOR. З метою забезпечення високої швидкодії використовуються регістрові команди Асемблера. Для визначення CRC-16 використовуються двобайтові регістри, а для CRC-32 – чотирьохбайтові. Враховуючи те, що для збереження утворюючого полінома CRC-16 необхідно 17 двійкових розрядів, а для CRC-32 – 33 двійкових розряди алгоритм треба реалізувати таким чином, щоб не проводити операції XOR із старшим 16 чи 32 розрядом (розряди нумеруються починаючи з нульового справа). Для CRC-16 це здійснюється у наступний спосіб (рис4). Молодші 16 розрядів утворюючого полінома записуються у регістр BX. Регістр AX заповнюється двійковими розрядами інформаційного блоку (доповненого 16 нулями). При цьому здійснюється зсув вліво до тих пір поки старший розряд регістру AX не буде рівний одиниці (операції з незначущими нулями . не проводяться). Потім здійснюється ще один зсув вліво і над вмістом регістру АХ (16 розрядів інформаційного блоку) і вмістом регістру ВХ (16 молодших розрядів утворюючого полінома) проводиться операція XOR. Результат операції XOR для зсунутого одиничного 17 розряду інформаційної частини та одиничного 17 розряду утворюючого полінома відомий і завжди рівний нулю. Якщо розряди інформаційного блоку ще не вичерпані, то знову здійснюється зсув вмісту регістра АХ вліво (з дозаписом нових розрядів інформаційного блоку справа). Якщо всі розряди інформаційного блоку (з дописаними 16 нулями) вичерпані, то в регістрі АХ отримаємо шукану остачу, яка і буде значенням CRC-16. Отримане значення CRC-16 дописується до інформаційного блоку замість 16 нулів і отримана послідовність бітів передається у канал зв’язку.
1 1 1 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 000000000000
1
1
0
0
0
0
1
0
1
1
0
1
0
1
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 1
0
0
0
0
1
0
1
1
0
1
0
0
1
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 0
Висновок: на даній лабораторній роботі я вивчив методи завадостійкого кодування (циклічні коди) та особливості їх програмної і апаратної реалiзацiї.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!