Добавил:
Допоможу чим зможу) Відсигнальте якщо знайшли шось корисне) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
11.03.2020
Размер:
590.4 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»

ДОСЛІДЖЕННЯ КОДОУТВОРЕННЯ ТА ПРИНЦИПІВ ПОБУДОВИ КОДЕРІВ І ДЕКОДЕРІВ ЦИКЛІЧНИХ КОДІВ

МЕТОДИЧНІ ВКАЗІВКИ до лабораторної роботи № 2

з курсу “Засоби передачі інформації в системах технічного захисту інформації” для студентів базового напряму

6.170102 «Системи технічного захисту інформації»

Львів 2012

2

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

1. ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ

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

Для утворення циклічних кодів використовуються так звані неприведені поліноми Р(х), тобто многочлени, які не можна представити добутком поліномів нижчих степенів. Існує декілька різних способів кодування [1, 2].

Найпростіший спосіб утворення ЦК полягає у множенні многочлена G(х)1, який відповідає інформаційним ni розрядам первинного (безнадлишкового) коду, на утворюючий поліном Р(х). Такий спосіб легко реалізувати, але йому притаманний суттєвий недолік: одержані в результаті множення комбінації ЦК не містять в явному вигляд інформаційні розряди. Після виправлення помилок такі комбінації для виділення інформаційних символів доводиться ділити на утворюючий поліном.

Інший спосіб передбачає відведення під інформаційні ni , символи старших розрядів коду, а під контрольні nk = n - ni, символів молодших розрядів. Для утворення ЦК використовується така процедура. Многочлен G(х) який відповідає ni - розрядній кодовій комбінації (КК) первинного коду, множиться на

xnk . Ця операція еквівалентна приписуванню із боку молодших розрядів G(х) - nk нулів. Добуток G(х)* xnk ділиться на утворюючий поліном Р(х). При цьому одержують частку Q(x) того ж степеня, що і G(х), та залишок R(x), який додається до G(х)* xnk . Отже, КК циклічного коду буде визначатися як поліном

F(x) = G(х)* xnk R(х)

(1)

Оскільки степінь Р(х) вибирають nk, степінь залишку R(х), не перевищує nk - 1. В комбінації, що

відповідає многочленові G(х)* xnk , nk молодших розрядів нульові, і відповідно, операція додавання (1) рівносильна приписуванню R(x) до G(x) з боку молодших розряд. Очевидно, що R(х) має зміст контрольних розрядів ЦК. Таким чином, циклічний код можна будувати, приписуючи до кожної

комбінації безнадлишкового коду G(х) залишок від ділення G(х)* xnk на утворюючий поліном Р(х) коду.

Захисні можливості ЦК визначаються утворюючим поліномом Р(х), вибір якого має бути підпорядкований кільком правилам:

1. кількість ненульових членів Р(х) має бути не меншою від кодової віддалі d; 2.степінь полінома Р(х) не може бути меншим за nk (бажано, щоб він дорівнював nk); 3. довжина Р(х) має бути мінімальною.

ЦК, утворений поліномом P(x)=x + 1, забезпечує кодову віддаль d = 2 і збігається з кодом з захистом за паритетом, забезпечуючи виявлення не лише поодиноких помилок, але і довільної непарної кількості помилок.

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

n log2 (n 1) , 2 k log2 (ni 1) log2 (ni 1)

При d=4 ЦК може виявляти поодинокі, подвійні і потрійні помилки або виявляти та виправляти

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

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

3

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

Циклічні коди з d 5, розроблені Боузом, Чоудхурі і Хоквінхемом (коди БЧХ), дають змогу виявляти і виправляти довільну кількість помилок, при цьому кількість контрольних розрядів може переважати кількість інформаційних. Процедура вибору утворюючого полінома Р(х) кодів БЧХ складніша [1, 2].

Оскільки ЦК - лінійний код, то для кодування можна використовувати утворюючу матрицю, що складається із одиничної транспонованої матриці InTi рангу ni, до якої дописана додаткова матриця [nk,

ni], що складається із залишків від ділення одиниці з ni - 1 нулями на P(x), вага яких не менша за d - 1. Так, наприклад, у випадку ЦК (7, 4) з Р(х) = x3 + х + 1 утворююча матриця має вигляд

 

0

0

 

0

1

0

1

1

 

 

 

 

C7,4

0

0

 

1

0

1

1

0

(2)

0

1

 

0

0

1

1

1

 

1

0

 

0

0

1

0

1

 

 

 

 

 

 

 

T

 

 

C

nk

, n

i

 

 

 

In

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Члени одиничної матриці є комбінаціями чотирирозрядного безнадлишкового коду G(x), тому

чотири рядки утворюючої матриці - це комбінація ЦК. Всіх дозволених комбінацій має бути 2ni = 16 (включаючи нульову). Решту 11 ненульових можна одержати, додаючи за модулем два наявні 4 комбінації матриці у найрізноманітніших сполученнях рядків.

Існує інший спосіб побудови утворюючої матриці, який простіший від описаного, але утворююча матриця менш зручна. Перший рядок утворюючої матриці формується виписуванням зліва до утворюючого полінома P(x) ni - 1 нулів. Кожен наступний рядок матриці отримується циклічним зсувом цього рядка на один розряд вліво. Цей спосіб побудови утворюючої матриці використовує основну властивість циклічного коду - належність до ЦК кодових комбінацій при циклічному зсуві (звідси і назва коду). Для розглянутого раніше ЦК (7, 4) така матриця має вигляд

 

0

0

0

1

0

1

1

 

 

 

C7,4

0

0

1

0

1

1

0

(3)

 

0

1

0

1

1

0

0

 

 

1

0

1

1

0

0

0

 

Декодування ЦК засновано на такій властивості: якщо помилок немає, то кодова комбінація F(х) ділиться на P(x) без залишку, а якщо є - то із залишком. У першому випадку перші ni розрядів КК використовуються без корекції за своїм призначенням. У другому випадку формується або заборона на використання, якщо ЦК виявляє помилки, або коректуючий цифровий сигнал, якщо ЦК виправляє помилки. Методи корекції детально описані в [1, 3].

Основу технічних засобів кодування і декодування ЦК складають регістри зсуву зі зворотними зв’язками, які дають змогу здійснювати як множення, так і ділення многочленів в полі двійкових чисел. Такі регістри називаються лінійними кодовими фільтрами Хофмена. Вони складаються із комірок пам’яті і суматорів за модулем 2. Зсув інформації в регістрі здійснюється імпульсами тактового генератора, який, як правило, на схемі не наводиться.

На рис. 1 і 2 наведені схеми помножувача і подільника полінома на P(x)=x43+1. Для побудови таких схем необхідно керуватися правилами:

1)кількість комірок регістра зсуву дорівнює старшому степеню утворюючого полінома P(x), причому комірка старшого розряду відсутня, але завжди є комірка x0;

2)кількість суматорів за модулем два на одиницю менша від числа ненульових членів Р(х);

4

3) суматори завжди встановлюються перед комірками регістра, яким відповідають ненульові члени полінома Р(х), причому в подільнику зсувається суматор старшого розряду Р(х), а в помножувачі -

молодшого; 4) в помножувачах на входи

суматорів подається множене, а в подільниках - частка від ділення; 5) двійкові коди, над якими

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

На рис. 3 наведені два варіанти схем кодера ЦК, які побудовані відповідно на основі схеми помножувача і подільника. Робота кодерів проходить в два етапи. На першому, який триває ni тактів,

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

Проходить множення G(х) на xnk і виділення залишку R(x) від ділення G(х)* xnk на Р(х). Після проходження останнього розрядку G(х) ключ К розмикається, а перемикач П переводиться в положення 2. Настає другий етап кодоутворення, на якому проходить порозрядне виштовхування залишку R(х) після кожного зсуву праворуч інформації, що міститься в регістрі. Таких зсувів буде nk і сформовані на виході кодера контрольні розряди R(х) будуть розташовані відразу після інформаційної КК G(х).

Наприклад, якщо на вхід кодера надходить послідовність G(x) = х7 + х5 + х4 + x3 + х + 1 10111011, то на його виході, з’являються зі старшими розрядами попереду всі 8 двійкових розрядів

первинного коду G(х), а після 8 такту - чотири контрольних розряди R(x) = x1 + 1 0011 зафіксовані у

комірках регістра у кінці першого такту. Отже, комбінація в ЦК має вигляд G(х) = x11 + x9 +x8 + х7 + х5 + х4 + х1 + 1 101110110011

На рис. 4 наведена схема декодера ЦК в режимі виявлення помилок, до складу якого входять регістр пам’яті РП, дешифратор ДШ помилок і подільник, виконаний за схемою рис. 2.

Робота декодера проходить в два етапи. На першому етапі тривалістю ni тактів ключ К замкнений, тому на вхід регістра пам’яті і на вхід подільника надходить прийнята із лінії зв’язку КК F*(х) яка може відрізнятися від переданої F(х) внаслідок дії завад.

Ємність регістра пам’яті відповідає кількості інформаційних розрядів, тому в його комірках в кінці першого етапу буде міститися комбінація G*(х). На другому етапі ключ К розмикається, а ділення комбінації F*(х) на P(x) продовжується і триває ще пk тактів.

5

В результаті ni + пk тактів в комірках

регістрів подільника буде зафіксований синдром помилки S(х), тобто залишок від ділення F*(х) на Р(х).

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

записану в регістрі пам’яті кодову комбінацію.

2. МЕТОДИЧНІ ВКАЗІВКИ

Лабораторна робота полягає у дослідженні схеми кодера та декодера ЦК (для твірного поліному Р(х) = x5 + x3 + x + 1) шляхом моделювання їх роботи у середовищі LogicWorks. Для чого необхідно:

1.Запустити програму LogicWorks (файл LogicWorks.exe).

2.Відкрити файл LR2_CRC.cct. Це можна зробити через пункт меню File/Open. При цьому в

редакторі появиться схема представлена на рис. 5, що здійснює кодування 7-розрядної інформаційної комбінації ЦК із d = 4 з індикацією інформаційних та контрольних розрядів, подальшу передачу утвореної КК з можливістю внесення спотворень під час передачі, декодування одержаної комбінації та індикацію прийнятих розрядів і синдромів помилок.

До складу схеми входять:

а. 7 перемикачів (І7 І1) та індикаторів для задання значень і відображення інформаційних розрядів;

б. Перетворювач паралельного коду в 12-розрядний послідовний побудований на регістрах зсуву

REG 1 REG 2;

в. Кодер ЦК побудований на 5 D-тригерах Х4 Х0, суматорах за модулем два та ключах К1 та К2;

г. Регістри REG5 REG6 та індикатори F12 F1 сформованої кодової комбінації

д. Пристрій внесення спотворень (ПВС) в розряди передаваної кодової комбінації реалізований на регістрах зсуву REG 3 REG 4 та суматорі за модулем два SUM. ПВС за допомогою перемикачів для

внесення спотворень (F 12 F 1) формує сигнали помилок, які, надходячи на суматор за модулем два, інвертують розряди КК, що передається;

е. Декодер ЦК разом з регістрами для зберігання одержаної кодової комбінації REG 7 REG 8, її

відображення FD12 FD1, а також індикатори синдрому помилки S4 S0 та індикатор прапорця наявності помилки Error_Flag.

є. Генератор тактових імпульсів ГТІ та лічильник імпульсів (ЛІ) (на схемі 5 не показаний);

ж. Схема управління (СУ) у складі перемикачів SAVE і RES. Схема управління кодуванням забезпечує проходження 7 інформаційних імпульсів на вхід кодера, а після цього від’єднує коло

зворотного зв’язку кодера і підключає його вихід на вхід регістрів пам’яті REG5 REG6. Схема управління декодуванням забезпечує проходження КК, що декодується з виходу регістрів REG5 REG6 на вхід декодера і на вхід регістрів REG7 REG8. Після n = ni + пk = 7 + 5 = 12 тактів процес декодування закінчиться.

3.В початковому стані перемикачі SAVE (ЗАПИС, здійснює запис кодової комбінації в регістри для передачі в послідовному коді), RES (СКИД) знаходяться в положенні 1, всі перемикачі внесення спотворень знаходяться в нульовому стані (спотворення відсутні).

4.Запустити моделювання схеми для чого необхідно вибрати пункт меню Simulation/Run або

натиснути лівою клавішею мишки по піктограмі

на панелі інструментів.

5. З допомогою перемикачів І7 І1 задати передбачені завданням кодові комбінації (щоб змінити положення перемикача потрібно навести на нього мишку і натиснути ліву клавішу). Якщо потрібно

внести спотворення в певні розряди необхідно перевести відповідні перемикачі F 12 F 1 в одиничне положення.

6

6.Перевести перемикач SAVE в положення 0.

7.Перевести перемикач RES в положення 0.

8. Натиснути лівою клавішею мишки по піктограмі

на панелі інструментів. З’явиться меню

представлене на рис. 6.

 

Рис. 6. Меню Simulation Trigger Setup (задання умови закінчення моделювання)

У ньому потрібно вести дані представлені на рис. 6 та натиснути кнопку OK.

10. Перевести спочатку перемикач SAVE, а потім RES в положення 1. Після цього починається моделювання роботи схеми, яке триває 12 тактів сигналу NCLK1. Після 12 такту моделювання автоматично зупиняється, а в регістрах REG 5–REG 6 (рис. 5) буде записана сформована кодова

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

сформованої КК. З допомогою індикаторів прийнятої КК FD12 FD1 порівняти одержану і передану КК.

11.Порівняти одержані синдроми S4 S0, тобто залишок від ділення комбінації F(х) на P(x) з розрахованими при домашній підготовці. Відсутність залишку свідчить про безпомилкову передачу КК F(х) циклічного коду на що вказує нульовий стан прапорця наявності помилки Error_Flag.

12.Одночасно можна спостерігати часові діаграми роботи схеми (рис. 7), які виводяться у вікні Timing Window, що розташоване у нижній частині редактора схем. У разі якщо вікно Timing Window відсутнє, його можна вивести вибравши пункт меню Window/Timing Window.

Рис. 7. Часова діаграма роботи схеми

13. Повторити пункти 1-12 з внесенням відповідних спотворень у КК (див. пункт 5 ЗАВДАННЯ). Для того, щоб спотворити певний розряд необхідно на кроці 5 перевести відповідні перемикачі внесення

спотворення (F 12 F 1) у одиничний стан.

7

Рис. 5. Схема моделювання роботи кодера-декодера ЦК

8

3.ЗАВДАННЯ

1.Вивчити теорію побудови ЦК, принципи синтезу кодерів і декодерів.

2.3 Визначити основні параметри ЦК з d = 4 (пk, п, N, N , N3, R, В) якщо кількість інформаційних

розрядів дорівнює двом останнім цифрам номера залікової книжки (НЗК).

3.3 Побудувати утворюючу матрицю ЦК з утворюючим поліномом Р(х) = x4 + х3 + 1 і на її основі

закодувати КК G(х), що відповідає двійковому представленню двох останніх цифр НЗК.

4.3 Розробити структурні схеми кодера і декодера для ni = 7 і кодової віддалі d = 4 (на базі твірного

поліному з d = 3: Р(х) = x4 + х3 + 1).

5.3 Провести кодування і декодування двійкової кодової комбінації, що дорівнює двом останнім

цифрам НЗК. Декодувати цю КК при відсутності та наявності 1-, 2-, 3- і 4-кратних помилок.

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

7.Дослідити схему декодера і провести операцію декодування.

8.Здійснити декодування спотворених КК і порівняти результати з даними п. 5.

4. ЗМІСТ ЗВІТУ

1.Мета роботи.

2.Результати виконання пунктів 2-5 при домашній підготовці.

3.Результати досліджень в програмному середовищі.

4.Схеми кодерів і декодерів.

5.Висновки по роботі.

5.КОНТРОЛЬНІ ЗАПИТАННЯ

1.Чому ЦК належать до блочних, систематичних рівномірних кодів.

2.Методика визначення кількості контрольних розрядів.

3.Правила вибору утворюючого полінома.

4.Алгоритми утворення нероздільного і роздільного ЦК.

5.Методика побудови утворюючої матриці, одержання із неї кодових комбінацій ЦК.

6.Принцип побудови помножувачів і подільників двійкових поліномів.

7.Алгоритм декодування ЦК і визначення синдромів помилок.

8.Схемотехнічне забезпечення операцій кодування і декодування ЦК.

6.СПИСОК ЛІТЕРАТУРИ

1.Кодирование информации. Двоичные коды. Справочник под ред. Н. Т. Березюка. – Харьков: Вища

шк., 1978.

2.Темников Ф. Е. и др. Теоретические основы информационной техники / Уч. пос. для вузов. – 2-е изд., перераб. и доп. – М.: Энергия, 1979.

3.Тутевич В. Н. Телемеханика. – М.: Вища шк., 1985.

Фрагменти таблиці утворюючих поліномів

Код

Поліном Р(x)

Код

Поліном Р(х)

11

x + 1

100001

х5 + 1

101

х2 + 1

100011

x5 + х + 1

111

х2 + х + 1

100101

x5 + х2 + 1

1001

х3 + 1

100111

х5 + х2 + х + 1

1011

х3 + х + 1

101001

x5 + x3 + 1

1101

x3 + x2 + 1

101011

x5 + x3 + x + 1

1111

x3 + x2 + х + 1

101101

x5 + х3 + х2 + 1

10001

x4 + 1

101111

x5 + х3 + х2 + х + 1

10011

x4 + x+ 1

110001

x5 + x4 + 1

11001

x4+ x3 + 1

110101

x5 + x4 +x2 + 1

11011

x4+ x3 + х + 1

110111

х5 + х4 + х2 + х + 1

3 Ці пункти завдання виконуються при домашній підготовці до лабораторної роботи і наводяться у звіті.

Соседние файлы в папке Лаби умови