- •3 Кодування в дискретних і неперервних каналах
- •3.1 Класифікація кодів і їх характеристики
- •3.2 Системи числення
- •3.3 Основні операції над елементами поля
- •3.4 Способи подання кодів
- •3.5 Надмірність кодів
- •3.6 Основні теореми кодування для каналів
- •4 Завадостійке кодування
- •4.1 Коди виявлення помилок
- •4.2 Коди з виправленням помилок
- •4.3 Код Хеммінга
- •4.6 Код Грея
4.6 Код Грея
Особливості коду Грея розглянемо на прикладі переходу від аналогового подання даних до цифрового.
Розглянемо магнітний носій інформації у вигляді стрічки, на якій у поперечних напрямах розташовано двійкові коди порядкових номерів зон цієї стрічки.
0 1 0 |
0 1 1 |
1 0 0 |
1 0 1 |
1 1 0 |
Розглянемо порозрядний пристрій читання номерів зон стрічки. Припустимо, що при низькій якості регулювання цього пристрою спроба зчитування відбувається в момент зміни номерів зон. Якщо при цьому на стрічці певний розряд змінюється з 0 на 1 або навпаки, то з пристрою зчитування можна одержати будь-яке значення. Зокрема, при зміні номера з 011 на 100 можна одержати будь-яке з вісьми можливих чисел, і із них шість будуть помилковими.
Тепер представимо собі, що сусідні номери відрізняються між собою лише тільки одним розрядом (наприклад, номери 010 і 011). Тоді за таких же умов результатом зчитування обов’язково буде один із цих номерів, тобто помилки не буде.
Код Грея - це такий метод двійкового кодування, при якому сусідні числові значення відрізняються між собою лише тільки одним розрядом. За рахунок цієї властивості код Грея дозволяє виявляти одиночні помилки без введення штучної надмірності.
Основне застосування коду Грея - передача інформації про процеси, що змінюються досить повільно. Числові значення характеристик таких процесів плавно переходять від одного до другого. Тому, якщо у даному повідомленні одночасно виявились зміненими декілька розрядів у порівнянні з попереднім повідомленням, то це означає наявність помилки.
Перші 16 кодів Грея представлено у таблиці:
Число |
Двійковий код |
Код Грея |
Число |
Двійковий код |
Код Грея |
0 |
0000 |
0000 |
8 |
1000 |
1100 |
1 |
0001 |
0001 |
9 |
1001 |
1101 |
2 |
0010 |
0011 |
10 |
1010 |
1111 |
3 |
0011 |
0010 |
11 |
1011 |
1110 |
4 |
0100 |
0110 |
12 |
1100 |
1010 |
5 |
0101 |
0111 |
13 |
1101 |
1011 |
6 |
0110 |
0101 |
14 |
1110 |
1001 |
7 |
0111 |
0100 |
15 |
1111 |
1000 |
Код Грея визначається індуктивно.
Для однорозрядного коду маємо два значення, які запишемо у стовпчик:
0
1
Утворимо двохрозрядний код. Під стовпчиком однорозрядних кодів запишемо такий же, тільки у протилежному порядку, і поставимо перед першим стовпчиком нулі, а перед другим - одиниці:
00
01
- - -
11
10
Видно, що при переході від першого стовпчика до другого змінюється лише тільки перший символ. І при переході між рядками теж змінюється тільки один символ. Крім того, останній та перший рядки також відрізняються одним першим символом.
Тепер утворимо трьохрозрядний код за такою ж самою схемою:
000
001
011
010
- - - -
110
111
101
100
Аналогічно можуть бути утворені коди Грея і з більшою розрядністю.
Розглянемо алгоритм перетворення двійкового числа у код Грея:
перша одиниця зі сторони старших розрядів залишається без змін;
кожна наступна цифра залишається без змін, якщо в утворюваному коді Грея їй передує парна кількість одиниць;
кожна наступна цифра інвертується, якщо в утворюваному коді Грея їй передує непарна кількість одиниць.
Приклад: 1 1 0 0 1 0
1 0 1 0 1 1
Розглянемо алгоритм перетворення коду Грея у двійкове число:
перша одиниця зі сторони старших розрядів залишається без змін;
кожна наступна цифра залишається без змін, якщо у даному коді Грея їй передує парна кількість одиниць;
кожна наступна цифра інвертується, якщо у даному коді Грея їй передує непарна кількість одиниць.
Приклад: 1 0 1 0 1 1
1 1 0 0 1 0
Тепер розглянемо перетворення коду Грея безпосередньо у десяткове число.
Пронумеруємо розряди коду Грея справа наліво, починаючи з одиниці. Вагою кожного одиничного розряду коду Грея є значення (2n-1), де n - номер цього розряду. Таким чином, вагами одиничних розрядів будуть слідуючі числа: 1 при n=1, 3 при n=2, 7 при n=3, 15 при n=4 і т.д. Ваги нульових розрядів коду Грея не розглядаються.
При перетворенні коду Грея в десяткове число знаки ваг для одиничних розрядів чергуються, починаючи зі знаку ‘+’, після чого додаються.
Приклад: 6 5 4 3 2 1 - номери розрядів;
1 0 1 0 1 1 - код Грея;
+63 -15 +3 -1 - ваги одиничних розрядів 50.
