logo search
AK

1.7.2. Блок додавання чисел у формі з фіксованою крапкою

З метою спрощення вивчення процесу функціонування пристроїв цифрової обробки інформації доцільно виділити в них дві частини: операційну (ОЧ) і керуючу (УЧ).

За повний час реалізації операції буде виконано кілька мікрокомманд, тобто буде реалізована відповідна мікропрограма, тобто завдання УЧ - реалізація МП.

УЧ найчастіше реалізують з допомогою мікропрограмних автоматів. Сигнали, які впливають на послідовність виконання команд, називаються оповіщальним.

На мікропрограмному рівні для опису застосовується мова мікрооперацій (ММО), мова реєстрових передач (МРП). У цих мовах є засоби для опису машинних слів, регістрів, шин, масивів, мікрооперацій. Для цієї мети використовуються спеціальні мітки, які з поля ідентифікатора і розрядного покажчика. Причому поле ідентифікатора є послідовність букв і цифр, яка починається з букви. Щоб побудувати якийсь операційний блок, необхідно:

1. Вибрати (розробити) алгоритм операції, що нас цікавить.

2. Скласти структурну схему ОЧ; по структурній схемою визначити, які сигнали і в якій послідовності мають бути.

3. Користуючись ММО, скласти мікропрограму.

4. Виконати синтез мікропрограмного автомата.

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

Z = X  Y = X + ( Y).

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

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

Крім того, треба вірішити питання при виконанні арифметичних операцій, необхідно постійно стежити за відсутністю переповнення розрядної сітки. Якщо при складанні виник перенос, то - результат невірний. Розроблено багато алгоритмів визначення переповнення. Якщо при виконанні операції додавання додатніх чисел у знаковому розряді результату виявляється 1, відбувається додатнє переповнення, якщо при додаванні від’ємних чисел у знаковому розряді - 0, то - від’ємнне переповнення. Для спрощення виявлення доповнення використовується модифіковані зворотний і додатковий коди. В цих кодах використовується не один, а 2 знакових розряди.

У мікропроцесорних системах алгоритм визначення операції переповнення інший: якщо є перенос в знаковий розряд і немає переносу зі знакового розряду.

Розроблено блок для додавання цілих чисел в додатковому коді. Такий блок додавання, крім комбінованого суматора, повинен мати 2 вхідних регістри Рг1, Рг2, регістр результату Рг3, схему передачі коду (СПК), комбіновану схему - схему визначення переповнення. Інформація у вхідні регістри записується з вхідної шини даних (ШД) з оперативної пам'яті. Рг1 приймає або один з доданків, або зменшуване, Рг2   - Другий доданок або від'ємник.

Якщо ПРС = 1, то - припинити обчислення, інформацію не видавати. Для визначення переповнення можна використовувати декілька алгоритмів. Найпростіший з них - використання модифікованого коду (2 знакових розряду)

ПРС = ПРСМ [0]  ПРСМ [1]  ПРСМ [0]  ПРСМ [1]

Переповнення виникає тоді, коли є перенесення з знакового розряду і відсутній в знаковий розряд і навпаки.

1. V 1:Пр Рг1           Рг1: = шина входу [0  n]

2. V 2:Пр Рг2           Рг2: = шина входу

3. V 3:ПП                 Якщо U +, то СМ: = (Рг1) + (Рг2)

4. V 4:ІП                   Якщо U -, то СМ: = (Рг1) +1 СМ + (Рг2)

5. V 5:Пр Рг3            Рг3: = СМ

6. V 6                         Якщо ПРС, то Вих Рг3, шина вих [0  n]: = Рг3,

якщо ПРС, то - переривання.