Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кодування.doc
Скачиваний:
21
Добавлен:
10.09.2019
Размер:
624.64 Кб
Скачать

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.