Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SPD_Lektsii / СПД Лекция 2

.pdf
Скачиваний:
41
Добавлен:
05.03.2016
Размер:
970.51 Кб
Скачать

Кодові слова (7,4) коду Хемінга представлені в табл. 3. Число можливих синдромів

визначається за виразом:

 

 

 

S 2r .

23

(2)

При числі перевірочних символів r 3 мається 8 можливих синдромів

8 . Нульовий

синдром S 0 0

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

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

Таблиця 3

 

 

 

 

 

 

 

Таблиця 4

Ненульові синдроми та відповідні конфігурації помилок для коду (7,4)

 

 

Синдром

001

010

011

100

101

110

111

 

Конфігурація помилок

0000001

0000010

0001000

0000100

1000000

0010000

0100000

 

Помилка в символі

r3

r2

і4

r1

і1

і3

і2

 

Усічені коди є нещільно упакованими, тому що число синдромів у них перевищує необхідне.

Так, у коді (9,5) при 4-ох перевірочних символах число синдромів буде дорівнює 24 16 , у той час як необхідно всього 10. Зайві 6 синдромів свідчать про неповне упакування коду (9,5).

Таким чином, код (7,4) дозволяє виправити всі одиночні помилки. Проста перевірка показує, що кожна з помилок має свій єдиний синдром. При цьому можливо створення такого цифрового коректора помилок (дешифратора синдрому), що по відповідному синдрому виправляє відповідний символ у прийнятій кодовій групі. Після внесення виправлення перевірочні символи r можна не виводити на вихід декодера (рис. 3). Дві чи більш помилок перевищують можливості коригувального коду Хемінга, і декодер буде помилятися. Це означає, що геть буде вносить неправильні виправлення та видавати спотворені інформаційні символи. Ідея побудови подібного коригувального коду, природно, не міняється при перестановці позицій символів у кодових словах. Всі такі варіанти також називаються (7,4) – кодами Хемінга.

5. Алгоритми кодування та декодування кодів Хемінга.

Припустимо, що потрібно згенерувати код Хемінга для деякого інформаційного кодового слова. Як приклад, візьмемо 15-бітове кодове слово x1 x15 , хоча алгоритм придатний для

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

Рис. 3. Кодер і декодер для простого (7,4) – кода Хемінга

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблиця 5

 

 

 

 

 

 

15-бітове кодове слово

 

 

 

 

 

 

1

2

3

4

5

 

6

7

8

9

 

10

11

12

13

14

15

 

 

x1

x2

x3

x4

x5

 

x6

x7

x8

x9

 

x10

x11

x12

x13

x14

x15

 

 

1

0

0

1

0

 

0

1

0

1

 

1

1

0

0

0

1

 

Вставимо в інформаційне слово контрольні біти

r0 r4

таким чином, щоб номера їхніх

позицій являли собою цілі ступені двійки: 1, 2, 4, 8, 16... Одержимо 20-розрядне слово з 15-тю інформаційними і 5-тю контрольними бітами. Спочатку контрольні біти встановлюємо рівними нулю. На рис. 3 контрольні біти виділені синім кольором.

У загальному випадку, кількість контрольних біт у кодовому слові дорівнює двійковому логарифму числа бітів кодового слова (включаючи контрольні біти), округленому у більшу сторону до найближчого цілого. Наприклад, інформаційне слово довжиною 1 або 2 біти вимагає двох контрольних розрядів, 3- або 4-бітове інформаційне слово – трьох, 5...11-бітове – чотирьох, 12...26-бітове – п'яти і т. ін.

Додаємо 5 рядків до таблиці на рис. 4 (по кількості контрольних бітів), у які помістимо матрицю перетворення (рис. 5). Кожен рядок буде відповідати одному контрольному біту (нульовий контрольний біт – верхній рядок, четвертий – нижня), кожен стовпець – одному біту

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

 

 

 

1

 

 

2

 

3

 

4

5

6

7

8

 

9

 

10

 

11

 

12

 

13

14

15

16

17

18

19

 

20

 

 

 

 

 

r0

r1

x1

r2

x2

x3

x4

 

r3

x5

x6

x7

x8

x9

x10

x11

r4

x12

x13

x14

x15

 

 

 

 

 

0

 

 

0

 

1

 

0

0

0

1

0

 

0

 

 

0

 

1

 

 

0

 

 

1

 

1

1

0

0

0

0

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4. 20-розрядне слово

 

 

 

 

 

 

 

 

 

 

 

1

2

3

 

 

4

 

5

 

6

7

8

9

 

10

11

 

12

 

13

 

14

 

15

16

17

18

19

 

20

 

 

 

r0

r1

x1

r2

x2

x3

x4

r3

x5

x6

 

x7

x8

x9

x10

x11

r4

x12

x13

x14

x15

 

 

 

0

0

1

 

 

0

 

0

 

0

1

0

0

 

0

 

 

 

1

 

 

 

0

 

 

1

 

1

 

1

0

0

0

0

 

 

1

 

 

 

 

1

0

1

 

 

0

 

1

 

0

1

0

1

 

0

 

 

 

1

 

 

 

0

 

 

1

 

0

 

1

0

1

0

1

 

0

 

r0

 

0

1

1

 

 

0

 

0

 

1

1

0

0

 

1

 

 

 

1

 

 

 

0

 

 

0

 

1

 

1

0

0

1

1

 

0

 

r1

 

0

0

0

 

 

1

 

1

 

1

1

0

0

 

0

 

 

 

0

 

 

 

1

 

 

1

 

1

 

1

0

0

0

0

 

1

 

r2

 

0

0

0

 

 

0

 

0

 

0

0

1

1

 

1

 

 

 

1

 

 

 

1

 

 

1

 

1

 

1

0

0

0

0

 

0

 

r3

 

0

0

0

 

 

0

 

0

 

0

0

0

0

 

0

 

 

 

0

 

 

 

0

 

 

0

 

0

 

0

1

1

1

1

 

1

 

r4

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 5. Формування 20-розрядного слова

 

 

 

 

 

 

 

 

 

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

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

Наприклад, для рядка r0:

r0 = (1·0+0·0+1·1+0·0+1·0+0·0+1·1+0·0+1·0+0·0+1·1+0·0+1·1+0·1+1·1+0·0+1·0+0·0+1·0+0·1) mod 2 = 5 mod 2 = 1.

Отримані контрольні біти вставляємо в кодове слово замість нулів, що стояли там раніше, (рис. 6). Кодування по Хемінгу завершено, а отримане кодове слово має вигляд:

10110010001011110001.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

 

 

r0

r1

x1

r2

x2

x3

x4

r3

x5

x6

x7

x8

x9

x10

x11

r4

x12

x13

x14

x15

 

 

1

0

1

1

0

0

1

0

0

0

1

0

1

1

1

1

0

0

0

1

 

 

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

r0

1

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

0

r1

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

0

0

0

0

1

r2

1

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

0

0

0

r3

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

1

1

r4

1

Рис. 6. Заповнення перевірочних розрядів

Алгоритм декодування по Хемінгу абсолютно ідентичний алгоритму кодування. Матриця перетворення відповідної розмірності збільшується на матрицю-стовпець кодового слова та кожен елемент отриманої матриці-стовпця береться по модулю 2. Отримана матриця-стовпець одержала назву «матриця синдромів». Легко перевірити, що кодове слово, сформоване відповідно до алгоритму, описаним у попередньому розділі, завжди дає нульову матрицю синдромів.

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

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

Помітимо, що при однократній помилці матриця синдромів завжди являє собою двійковий запис (молодший розряд у верхньому стовпці) номера позиції, у якій відбулася помилка. У приведеному прикладі матриця синдромів (01100) відповідає двійковому числу 00110 або десятковому 6, відкіля випливає, що помилка відбулася в 6-му біті.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

 

 

r0

r1

x1

r2

x2

x3

x4

r3

x5

x6

x7

x8

x9

x10

x11

r4

x12

x13

x14

x15

 

 

1

0

1

1

0

1

1

0

0

0

1

0

1

1

1

1

0

0

0

1

 

 

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

s0

0

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

0

s1

1

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

0

0

0

0

1

s2

1

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

0

0

0

s3

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

1

1

1

1

1

s4

0

Рис. 7. Прийняте 20-розрядне слово

Контрольні питання

1.У чому полягає сутність завадостійкого кодування?

2.Який код називається кодом з перевіркою за паритетом?

3.У чому полягає складність вибору коректувального коду для реальних каналів зв’язку?

4.Які коди називаються блоковими, однаково доступними, безперервними?

5.Наведіть приклади рівномірних і нерівномірних кодів.

6.Яку особливість мають нероздільними кодів? Наведіть приклад нероздільного коду.

7.Які коди називаються систематичними? Які їхні основні властивості?

8.Перерахуйте основні класи систематичних кодів.

9.Перерахуйте основні характеристики коригувальних кодів.

10.Що таке мінімальна кодова відстань?

11.Вкажіть кількісну зв’язок між мінімальною кодовою відстанню та коригувальною здатністю коду.

12.Що визначає верхні і нижні межі для кодового відстані?

Розробив:

 

доцент кафедри КІ

 

к.т.н., доцент

Слюсарь І.І.

Соседние файлы в папке SPD_Lektsii