Коригувальні коди

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

Виходячи з основних параметрів та способів кодування та декодування, коригувальні коди в першу чергу можна розділити на блокові та безперервні.

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

Для коригувальних кодів справедлива нерівність

N=Km

матриці
M,

деМ– кількість повідомлень;N– кількість кодових комбінацій;К– основа коду;

m– довжина кодової комбінації:m=n+k;n- число інформаційних розрядів,k- число контрольних розрядів, що забезпечують локалізацію та виправлення спотворених елементів кодової комбінації.

Число контрольних розрядів, необхідні виявлення і виправлення одноразових помилок, визначимо шляхом наступних міркувань. При передачі будь-якогоМповідомлень може бути спотворений будь-який зmелементів кодової комбінації або повідомлення буде передано правильно. Отже, можливіm+1виходів. Використовуючи контрольних розрядів необхідно розрізнити всі ці результати. За допомогою kрозрядів можна закодувати 2kвиходів. Отже, має виконуватися умова

Наприклад, якщоМ = 10, то відповідно до рівностіM=Knотримуємоn3,3 = 4. Щоб мати можливість виявляти помилковікодові комбінації та виправляти їх слід додатиkконтрольних розрядів відповідно до виразу:

коди

За виконання рівності отримаємо

матриці
. Таким чином, щоб перевірити чотири інформаційні розряди, потрібно три контрольні.

При цьому надмірність коду складе

коригувальні
.

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

матриці
,

деα– кратність виявлених помилок,

β– кратність помилок, що виправляються,

1– кодова відстань для оптимального коду;

Розглянемо цю формулу з прикладу рівномірного трехразрядного коду.

Приα =0,β = 0d=1. Цей результат відповідає рівномірному оптимальному коду. Його кодові комбінації:000, 001, 010, 100, 110, 101, 011, 111.

При цьому надмірність коду дорівнює

матриці
.

Приα = 1,β = 0d=2. Цей результат відповідає рівномірному коду, що виявляє одноразову помилку. Його кодові комбінації:001, 010, 101, 110.

При цьому надмірність коду дорівнює.

Приα = 1,β = 1d=3. Цей результат відповідає рівномірному оптимальному коду. Його кодові комбінації:000, 111.

При цьому надмірність коду дорівнює.

Загальний алгоритм побудови блокових кодів, що коригують одноразові помилки

Залежно від необхідної розрядності коду записується поодинока матриця(n

коди
n)

коди

За допомогою цієї матриці можна записати всекомбінації n-розрядного оптимального коду

Щоб утворити на підставі цієї матриці код, що коригує одноразову помилку, необхідно розширити її доmрозрядів, тобто(n

матриці
n) → (n
коригувальні
m)
. Для цього праворуч приписується матриця контрольних розрядів, що міститьkстовпців(m=n+k ).

коригувальні
коригувальні

Отримана матриця називається производящей. Шляхом підсумовування модулем 2 рядків цієї матриці можна отримати рівномірний надлишковий код. У цьому коді виділено інформаційну та сервісну частини, тому такий код називається систематичним.

До матриціАвисуваються такі вимоги:

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

коригувальні
3. Оскільки одинична матриця розширилася наkрозрядів, то кожен рядок частини матриці, що додатково приписується, повинна мати не менше ніж(d- 1)одиниць, оскільки вже одну одиницю містить кожен рядок одиничної матриці.

Відмінність між рядками в матриці, що приписується, повинна бути не менш ніж у(d- 2)розрядах, т.к. відмінність у одиничній матриці у двох рядках вже є.

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

Перевірна матриця будується наступним чином: до одиничної матриці розміромk

коригувальні
kліворуч приписується матриця зnстовпців іkрядок(n
коригувальні
k).
При цьому рядок, що приписуєтьсяматриці є стовпцем додаткової матриці з матриціA.

матриці
матриці

До матриціПпред'являється така вимога.

Сума одиниць за модулем2будь-якого рядка перевірочної матриці повинна бути парним числом (або у всіх рядках непарна), т.к. сума за модулем2дорівнює нулю при парності. Це є умовою виявлення та локалізації помилки у будь-якій кодовій комбінації. Локалізація помилки заснована на індивідуальній кодовій комбінації (розпізнавачах), і ця кодова комбінація представляється у виглядіf0f1f2fk-1(кількість контрольних розрядів)

Приклад: потрібно побудувати систематичний код, що дозволяє виявити помилкове відображення будь-якого числа від0до9на семисегментному індикаторі та виправити його.

Відповідно до умови завдання кількість відображених чисел (повідомлень)М = 10. Для представлення цих чиселn= 4,k= 3. Складемо матрицю, що виробляє.

коригувальні

Виконується умова: щонайменше(d-1)одиниць. З цієї матриці можна побудувати16кодових комбінацій з розрядністю. Складемо10кодових комбінацій, які будуть необхідні для індикації потрібних цифр. Нехай це будуть такі комбінації:

матриці

Перші чотири кодові комбінації – це рядки матриці А. Останні 6 кодових комбінацій є сумами рядків за модулем2, відповідно:

коди
,
коди
,
матриці
,
матриці
,
коди
,
коригувальні
.

Будуємо перевірну матрицю

коригувальні

На підставі перевірочної матриці можна скласти рівняння кодів-розпізнавачів розташування помилки:

коди
(*)

Послідовністьf0f1f2є кодом помилкової або безпомилкової комбінації

Якщо кодова комбінація не містить помилок, то згідно з (*) всі позиції будуть містити нулі, отже, вийде кодf0f1f2=0 0 0.

Розглянемо підкреслену кодову комбінацію1 0 1 0 1 0 1і почнемо послідовно вводити помилки.

Вводимо помилку в розрядa0і отримуємо код розпізнавача помилки в цьому розряді:

коди
,f0f1f2= 0 1 1.

Потім вводимо помилку в розряда1і отримуємо код розпізнавача помилки у цьому розряді; потім вводимо помилкуа2і отримуємо код розпізнавателя помилки в цьому розряді і т.д.

коригувальні
,f0f1f2= 1 1 1

У результаті отримуємо таблицю кодів розпізнавачів помилок:

Перевіримо результат, що вийшов. Нехай передали комбінацію1000011, а отримали1001011. Визначаємо код розпізнавача:

матриці
,f0f1f2= 1 1 1
коди
отже, помилка в розрядіа3.

Недоліком такого способу є те, що коди розпізнавачів помилок не відповідають десятковим числам.