Двійково-десяткові коди (ДДК)

Найбільш широке розповсюдження в обчислювальній техніці отримали двійково-десяткові СЧ, в яких десяткові цифри записують як 4-х розрядні двійкові числа – двійкові тетради. Дослідження і досвід розробки десяткових обчислювальних пристроїв показали, що найбільш ефективним є використання двійково-десяткових кодів (ДДК), які задовольняють умові єдності і мають властивості адитивності, впорядкованості, парності, доповняльності і зваженості.

Умова єдності полягає в тому, що між кожною цифрою xiє{0,…,p-1} і комбінацією двійкових цифр повинно бути встановлена взаємно-однозначна відповідність. Для цього кількість двійкових розрядів для подання цифри xi повинна бути не менше

clip_image002 (9)

Можлива кількість способів двійкового кодування для СЧ з основою p дорівнює величині

clip_image004 (10)

Властивість адитивності полягає в тому, що ДДК суми десяткових цифр можна отримати як суму ДДК доданків, ця властивість значно спрощує виконання арифметичних операцій.

Властивість впорядкованості.

Властивість впорядкованості полягає у виконанні умови:

якщо xi<xi+1

то Ψ(xi)<Ψ(xi+1) (10)

де, Ψ(xi) – двійковий код цифри xi.

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

Властивість парності.

Властивість парності ДДК полягає в тому, що всім парним десятковим цифрам відповідають або тільки парні, або тільки не парні двійкові коди. Аналогічно для непарних десяткових цифр.

Ця властивість спрощує виконання операцій множення, діленні і округлення.

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

clip_image006, (11)

де clip_image008 — зворотній двійковий код цифри xi.

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

ДДК називають зваженим, якщо в кожному з n розрядів двійкового подання clip_image010, десяткової цифри X поставлені у відповідність ваги clip_image012, тобто

clip_image014. (12)

Використання зважених ДДК полегшує переведення чисел з однієї СЧ в іншу. У табл..2 наведено найбільш розповсюджені і цифровій схемотехніці ДДК.

Таблиця 2.

Десяткове

число

Код 8421 Код 7421 Код 5421 Код Айкена 2421 Код 3321 Код з «надлишком 3» (N+3) Доповнення до 9 (9-N) 8421 Доповнення до 10 Код 3N+2 (8421) Код «2 з 5»
0 0000 0000 0000 0000 0000 0011 1111 1010 00010
1 0001 0001 0001 0001 0001 0100 1000 1011 00101 00011
2 0010 0010 0010 0010

1000

0010 0101 0111 1100 01000 00101
3 0011 0011 0011 0011

1001

0100

1000

0110 0110 1101 01011 00110
4 0100 0100 0100 0100

1010

1001

0101

0111 0101 1110 01110 01001
5 0101 0101 1000

0101

0101

1011

0110

1010

1000 0100 1111 10001 01010
6 0110 0110 0110

1001

0110

1100

1100

0111

1011

1001 0011 10000 10100 01100
7 0111 1000

0111

0111

1010

0111

1101

1101 1010 0010 10001 10111 10001
8 1000 1001 1011 10011 1110 1110 0001 10010 11010 10010
9 1111 1010 1100 1100 1111 1111 0000 10011 11101 10100

У позначеннях кодів 8421, 7421, 5421, 2421, 3321 (табл..2) вказано десяткову вагу φi двійкової одиниці, xi відповідного розряду.

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

Переваги при машинному переведенні і двійковому підсумовуванні.

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

3). Код 2421 – ДДК зі штучним порядком ваг. Він має всі властивості, крім властивості адитивності, оскільки старший розряд тетради має штучну вагу 2. Цей код є само доповняльним і використовується при виконанні арифметичних операцій над десятковими числами у зворотному або доповняльному коді.

4). Код з «надлишком» 3. Не має властивості зваженості, оскільки отримується в результаті додавання двійкового коду цифри 3 (0011) до кожної цифри коду прямого заміщення (N+3). Код є не зручним для перетворення з однієї СЧ в іншу але він зручний для виконання арифметичних операцій над десятковими числами. При цьому легко отримати перенос, оскільки сума двох доданків кожне з яких беруть з надлишком 3 отримується з надлишком 6, що виключає зайві кодові комбінації (для отримання правильного коду суми від результату віднімається 6) (потренуватись).

5). Коди «доповнення до 9», «доповнення до 10». Коди використовуються для виконання додавання, віднімання десяткових чисел. Перевага цих кодів полягає в тому, що код нуля містить одиницю, що дозволяє легко відрізнити наявність коду 0 від пропадання коду цифри.

6). Код «3N+2». В ньому кожна десяткова цифра записується 5-ма розрядами. Цей код є корегуючим кодом і використовується для передачі кодів, оскільки дозволяє виявити найбільш вірогідні помилки при передачі інформації. Корегуючи ми називають ДДК, в яких тетради доповнюються надлишковими бітами (розрядами) з тим щоб використовувати цю надлишковість для надання кодам специфічних властивостей, які дозволяють виявляти помилки і збільшувати надійність обчислювальних засобів.

7). Корегуючий код, в якому кожна десяткова цифра подається 5-ма розрядами, в який тільки 2 містять одиницю. Цей код отримують з коду 7421 шляхом додавання праворуч доповняльного розряду з вагою 0. Цей розряд записують двійкову цифру, яка забезпечує загальну кількість одиниці, яка дорівнює 2-м (крім коду десяткового 0) (табл..2).

Код виявляє одиночну помилку (помилку в одному розряді) типу 0 → 1, або 1 → 0. Не виявляє подвійні помилки типу 0 → 1 і 1 → 0, або 1 → 0 і 0 → 1.

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

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

Таблиця 3

Десяткове число Двійковий код Код Джонсона (код для передачі) Код Грея Одиничні коди
Одиничний нормальний код Одиничний позиційний код
0

1

2

3

4

5

6

7

8

9

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

00000

00001

00011

00111

01111

11111

11110

11100

11000

10000

0000

0001

0011

0010

0110

0111

0101

0100

1100

1101

1000000000

0100000000

0110000000

0111000000

0111100000

0111110000

0111111000

0111111100

0111111110

0111111111

1000000000

0100000000

0010000000

0001000000

0000100000

0000010000

0000001000

0000000100

0000000010

0000000001

Сусідні коди – коди які відрізняються тільки в одному розряді.

Кількість розрядів на які відрізняються коди називається – відстанню Хеммінга.

Код Грея.

В АЦП широко використовується код Грея, який також називають циклічним або рефлексно-двійковим кодом. Перевага коду Грея: він дозволяє скоротити час перетворення, спростити кодуючи логіку, підвищити ефективність захисту від небажаних збоїв при переходах вихідного коду. Недоліки коду Грея: складність при виконанні арифметичних операцій і ЦА (цифро-аналогових) перетворень.

Правило переведення ДДК у код Грея: старші розряди співпадають, а для будь-якого k-го розряду clip_image016 коду Грея виконується умова

clip_image018 (12)

де xk, xk+1 – відповідний і наступний розряди двійкового коду;

clip_image020 — сума за модулем 2, яка дорівнює арифметичній сумі без переносу у старший розряд.

0+0=0

0+1=1

1+0=1

1+1=0

Графічно правило (12) можна представити таким чином (рис. 1а).

clip_image022

Двійковий код

Код Грея

Рис. 1а

clip_image024

Двійковий код

Код Грея

Рис. 1б

Правило переведення з коду Грея в ДДК: старші розряди співпадають, а для будь-якого k-го двійкового розряду виконується умова:

clip_image026 (13)

Графічно прало (13) представлено на рисунку 1б.

Перетворення цифр коду Грея можна сформулювати так: цифра залишається без зміни, якщо кількість попередніх одиниць є парною і інвертується якщо кількість є непарною. Отже код Грея утворюють послідовність двійкових чисел в якій два будь-яких суміжних числа (перше число 0 і останнє 15 також вважається суміжнім) відрізняються значенням цифри тільки в одному розряді, тобто на один біт. Таким чином відстань Хеммінга дорівнює одиниці.

Подання десяткових чисел.

Загально прийнятим є двійково-десяткове кодування десяткових чисел: кожна десяткова цифра перетворюється 4-х розрядне двійкове число (код 8421). Дві десяткові цифри таким чином пакуються в один байт. Двійкові значення від 1010 до 1111 ніколи не використовуються (для десяткових цифр це заборонені комбінації). Недолік – неефективне використання пам’яті. Наприклад найбільше десяткове число, яке можна зафіксувати в одному байті 99, двійкове число – 255.

Оставьте комментарий к статье