Двійково-десяткові суматори
У деяких ЕОМ передбачена можливість працювати безпосередньо в десятковій, звичній для людини, системі числення. Операції над десятковими числами використовуються для тих видів обробки, для яких в проміжку між вводом і виводом даних виконується невеликий об'єм обчислень. Такий вид обробки зустрічається в економічних розрахунках, що виконуються на ЕОМ, калькуляторах, касових апаратах і т.д. Використання тут двійкової арифметики є нераціональним, оскільки на перетворення чисел з десяткової системи числення в двійкову і назад витрачається багато часу, а самі розрахунки достатньо прості.
Побудова найбільш зручних для людини десяткових універсальних ЕОМ, в яких цифри відображалися б сигналами, квантованими по десяти рівнях, є практично доцільною тільки за наявності технічних реалізацій для представлення чисел, основні техніко-економічні характеристики яких (вартість, надійність, швидкодія та інші.) були б не гірше відповідних характеристик схем для представлення двійкових цифр. Проте, як правило, деякі основні характеристики відомих схем для такого представлення десяткових цифр поступаються характеристикам двійкових схем. Тому при побудові десяткових ЕОМ використовують кодування двійковими цифрами десяткових цифр, тобто використовують змішане представленнячисла.
Найбільш широкого поширення в цифровій техніці набули двійково-десяткові системи числення, в яких десяткові цифри записуються як чотиризначні числа – двійкові тетради (півбайти). Іноді використовують представлення десяткових цифр за допомогою п'яти, шести і семи розрядів.
Двійково-десяткові коди
У загальному випадку можна побудувати ЕОМ, що працює при будь-якому двійково-десятковому кодуванні, проте найкращі результати можуть бути отримані при використанні двійково-десяткових кодів (ДДК), що задовольняють умові єдності, а також що мають властивості адитивності, впорядкованості, парності, доповнюваності і зваженості.
Умова єдності (однозначності) означає, що між кожною цифрою -ої системи числення і комбінацією двійкових цифр повинна бути встановлена взаємно-однозначна відповідність. Для цього число двійкових розрядів для представлення будь-якої цифри -ї системи числення повинне бути не менше . Будь-якій цифрі можна поставити у відповідність будь-яке з двійкових чисел, що записуються за допомогою розрядів. Отже, число способів двійкового кодування цифр -ої системи числення рівне числу комбінацій з по , тобто . Це число дуже швидко росте із збільшенням , що робить неможливим аналіз ручними методами всіх способів двійкового кодування навіть для практично найбільш важливого випадку . От чому до теперішнього часу досліджено всього декілька способів двійкового кодування десяткових цифр.
Властивість адитивності полягає в тому, що ДДК суми десяткових цифр може бути отриманий як сума ДДК доданків. Це властивість значно спрощує виконання арифметичних операцій в десяткових ЕОМ.
Впорядкованість ДДК полягає у виконанні однієї з умов або для двійкових кодів десяткових цифр. Властивість впорядкованості ДДК спрощує реалізацію логічних операцій, зокрема при реалізації інформаційних сигналів типу .
Властивість парності ДДК повинна проявлятися в тому, щоб всім парним десятковим цифрам відповідали або тільки парні, або тільки непарні двійкові коди. Аналогічно всім непарним десятковим цифрам повинні відповідати або тільки непарні, або тільки парні двійкові коди. Цю властивість спрощує виконання операцій множення, ділення і округлення.
Суть властивості доповнюваності ДДК полягає в тому, що сума двійкового коду будь-якої десяткової цифри і її оберненого коду повинна бути рівна коду цифри 9, тобто при порозрядному інвертуванні кодової комбінації даної десяткової цифри ми отримуємо кодову комбінацію цифри, що доповнює дану до 9. ДДК, які мають властивість доповнюваності, називаються кодами, що самодоповнюються. Інакше кажучи, в коді, що самодоповнюється, обернені двійкові коди відповідають зворотним десятковим цифрам. Це властивість коду є дуже зручною при побудові цифрових приладів, що вимірюють як додатні, так і від’ємні величини; для організації операції віднімання при побудові десяткових суматорів; для виявлення переносу в старший розряд, а також при формуванні оберненого і доповнюючого кодів при десятковому додаванні.
ДДК є зваженим, якщо кожному з розрядів двійкового представлення десяткової цифри поставлені у відповідність ваги , причому
. (1.13)
Використання зважених ДДК полегшує перевід чисел з однієї системи числення в іншу.
У табл. 5 приведені ДДК, що знайшли найбільше застосування в різних цифрових пристроях обробки даних.
Простим ДДК є так званий код 8,4,2,1, який отримується шляхом запису десяткових цифр в двійковій позиційній системі числення з природним порядком ваг. Перевід чисел з десяткової системи в двійково-десяткову в цьому випадку зводиться до заміни десяткових цифр двійковими тетрадами відповідно до табл. 5. Обернений перехід також здійснюється дуже просто: необхідне двійкове число розбивається на тетради і кожна з них замінюється її десятковим еквівалентом. ДДК 8,4,2,1 – найбільш часто використовується при кодуванні десяткових цифр в пристроях вводу/виводу і при побудові операційних пристроїв десяткової арифметики.
Код 8,4,2,1 має всі перераховані вище властивості, окрім властивості доповнюваності, що ускладнює формування переносів з молодшої тетради в старшу. Коди, що мають властивість доповнюваності, відмічені в табл. 5 зірочкою. Найбільш вживаним є код “з надлишком 3”. Для запису десяткових цифр в коді “з надлишком 3” необхідно кожну двійкову тетраду цієї цифри в коді 8,4,2,1 додати з двійковим кодом цифри 3. Перетворення цифр, заданих в ДДК “з надлишком 3”, в десяткову систему виконується також шляхом заміни тетрад їх десятковими еквівалентами. Недолік коду “з надлишком 3” – відсутність властивості зваженості.
Табл. 5
ДДК | Десяткові цифри | |||||||||
8,4,2,1 | ||||||||||
з надлишком 3 * | ||||||||||
* 2,4,2,1 * | ||||||||||
3,3,2,1 * | ||||||||||
* 4,2,2,1 | ||||||||||
5,2,1,1 | ||||||||||
5,4,2,1 | ||||||||||
незважений | ||||||||||
8,4-2,-1 * | ||||||||||
* | ||||||||||
2 з 5 | ||||||||||
7,4,2,1 |
Коду 2,4,2,1 властиві всі вказані раніше властивості, за винятком адитивності, оскільки старший розряд тетради цього ДДК має штучну вагу 2. Перетворення чисел з однієї системи в іншу здійснюється відповідно до табл. 5. Особливістю зважених ДДК з штучною вагою є відсутність взаємооднозначної відповідності між десятковими цифрами і їх двійковими кодами. Будь-який двійковий код відповідає одній десятковій цифрі, але десяткова цифра може бути представлена декількома двійковими кодами (див. табл. 5). Це витікає з існування багатьох розв’язків рівняння (12) відносно змінних . Для виконання ж умови єдності кодування домовляються вважати забороненими деякі, хоч і правильні, двійкові коди десяткових цифр.
Прикладами ДДК з штучним порядком ваг є також коди 3,3,2,1 і 7,4,2,1 (табл. 5). Іноді застосовують і ДДК з негативними вагами (8,4-2,-1 у табл. 5). З ДДК, в яких кожна десяткова цифра записується п'ятьма двійковими розрядами, в табл. 5 вказані коди 3а+2 і 2 з 5. Код 3а+2 отримують, записуючи в двійковій системі з природним порядком ваг число 3а+2, де а – задана десяткова цифра.
У коді 2 з 5 кожна десяткова цифра представляється п'ятьма двійковими розрядами, з яких тільки два містять одиниці. Можна вважати, що код 2 з 5 утворюється з коду 7,4,2,1 шляхом додавання справа додаткового розряду з вагою 0. У цей розряд записують таку двійкову цифру, щоб загальне число одиниць було рівне двом. Для десяткової ж цифри 0 встановлюють дві одиниці в двох старших розрядах – це єдине виключення з сформульованого вище правила.
Використовують коди 3а+2 і 2 з 5 в основному для передачі даних, оскільки вони дозволяють виявити найбільш ймовірні помилки при передачі кодів [1].
Використання операційних пристроїв, що працюють в десятковій системі числення, робить програмування зручнішим, забезпечує простоту індикації проміжних і кінцевих результатів, виключає блоки перетворення чисел з однієї системи числення в іншу.
Завдання побудови однорозрядного двійково-десяткового суматора може вирішуватися так само, як і завдання побудови однорозрядного двійкового суматора. У разі двійково-десяткового суматора необхідно буде реалізувати п'ять функцій від дев'яти двозначних змінних - чотири змінні для кожної десяткової цифри і одна змінна – перенос з молодшого розряду. При цьому вихідні функції будуть визначені лише на 200 наборах з = 512. Можна було б записати ДДНФ цих функцій і мінімізувати їх відомими формальними методами. Проте ДДНФ в цьому випадку містили б десятки диз'юнктивних членів, що значно утрудняє мінімізацію. Крім того, внаслідок великого числа невизначених значень функції важко вирішити питання про їх раціональне довизначення.
Тому двійково-десяткові суматори будують в два етапи. На першому етапі додають двійкові коди десяткових цифр по правилу двійкової арифметики. На другому етапі проводять корекцію результатів шляхом збільшення або віднімання деякої поправки, величина якої пов'язана з величиною некоректованого результату, отриманого на першому етапі. Розглянемо три приклади проектування однорозрядного двійково-десяткового суматора, зважаючи на дві обставини: перше – ДДК суми і ДДК доданків повинен бути одним і тим же; друге - двійково-десятковий суматор повинен формувати десятковий перенос, тобто перенос з вагою 10.