Смекни!
smekni.com

Розробка управляючого і операційног вузлів ЕОМ (стр. 5 из 7)

DO SET.

2.8.2 Послідовний арифметичний пристрій
(Чу стр. 223 –228)

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

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

2.8.2.1 Представлення чисел

В розглянутому арифметичному пристрою число має довжину 24 біта. Від’ємні числа зображаються в доповнюючому коді. Формат числа показаний на малюнку 6.1. Двійкова кома розміщена між знаковим і старшим бітами; таким чином, число має дробову частину і зображено в двійковій формі.

X0 X1 X2 X22 X23

Додатнє число зображається в вигляді знака і модуля:

, де X – число, знак плю зображуєтсья нулем,
а xi – числові біти. Найбільш можливе число рівне 0, 11…1, або 20 – 2-23.
Від’ємне число зображається в додатковому коді

(6.2)

Знак мінус зображується одиницею. Так як число в додатковому коді дорівнює сумі одиниць молодшого біта числа і числа в оберненому коді,
формулу (6.2) можна переписати в наступному вигляді:

(6.3)

і

, де
- інверсія xi. Найменш можливе від’ємне число рівне
1, 00…0, або –1.

2.8.2.2 Повний суматор-віднімач

Повний однобітовий сумотор має вигляд логічної схеми з трьома входами і двома виходами. Нехай X, Y, і Wi, представляють собою доданок і вхід переносу відповідно, а виходи Z і W0 – суму і результуючий перенос. Однобітовий суматор можна визначити за допомогою наступного опису виводів:

Z = X EXOR Y EXOR Wi, (6.4)

W0 = X*Y + Y*Wi + Wi*X.

Однобітовий віднімач має вигляд логічної схеми с трьома входами і двома виходами. Нехай X, Y, Wi, Z і W0 – входи і виходи схеми. Однобітовий віднімач можна визначити при допомозі наступного опису вивиодів:

Z = X EXOR Y EXOR Wi(6.5)

W0 = X’*Y + Y*Wi + W*X’.

Як видно з привдених вище виразів, вихідний сигнал Z однаковий для обох оисів, хоча Wi в виразі (6.4) означає перенос, а в виразі (6.5) – позика. Вихід W0 в двох випадках одинаковий, зи винятком лише того, що X в виразі (6.5) інвертується.

Описаний вище повний суматор і віднімач можна об’єднати в одну схему. Нехай однобітовий регістр N вказує на додавання, якщо його вміст рівний 1, і на віднімання, якщо його вміст рівний 0. Однобітовий суматор можна визначити при допомозі наступного опису виводів:

Z = X EXOR Y EXOR Wi, (6.6)

W0 = (N COIN X)*Y + (N COIN X)*Wi + Y*Wi.

Якщо вміст регістру N дорівнює 1, то вираз (6.6) спіпадає з вираом (6.4); якщо цей вміст дорівнює 0, то з виразом (6.5). Однобітовий суматор-віднімач, описаний виразом (6.6), буде використаний для побудови двійкового послідовного арифметичного пристрою.

2.8.2.3 Структура

Регістр А є накопичуючим регістром, регістр Q – регістр множника-частки, регістр R – регістр операнда, який використовується також в якості буферного регістра пам’яті. Арифметичні операції виконуються в цих трьох регістрах, які сумісно використовуються з суматором-віднімачем.

C

w

FAS

R(0–23)

z

SR

N

SA

E

A(0-23)

Q(0-23)

SUM

OV

BC(4-0)

DIF

AV

WC(4-0)

DSTEST

DV

малюнок 6.2 Чу стр. 226

Регістр А Регістр Q
Операція Регістр R спочатку вкінці спочатку вкінці
Ділення Дільник Ділене Залишок Нулі Частка

R(0 – 23),

A(0 – 23),

Q(0 – 23),

BC(4 – 0),

WC(4 – 0),

E,

C,

AV,

DV,

N,

SUM,

DIF,

DSTEST,

OV,

SA,

SR,

AQE(0 – 48) = A – Q – E,

AQ(0 – 47) = A – Q.

Z = R(23) EXOR A(23) EXOR C,

W = (N COIN A(23))*R(23) + (N COIN A(23))*C + R(23)*C,

AVTEST = N*SA’*SR’*C + N*SA*SR*C’ + N’*SA’*SR*C’ + N’*SA*SR’*C,

DVSTOP = N’*A(0)’*R(0)’*SA*E’ + N’*A(0)*R(0)*SA’ + N*A(0)’*R(0)*
SA*E’ + N*A(0)*R(0)’*SA’.

2.8.3 Ділення двійкових чисел

Ділення двійкових чисел виконується по алгоритму ділення без відновлення залишку, розробленим Берксом, Голдстайном і фон Нейманом.

Нехай X і Y – ділене і дільник відповідно. Частковий залишок віднімається з допомогою рівняння

. При цьому, якщо знак залишку ri-1 (а не ri) і дільники однакові, біт частки qi равен 1 і частичний залишок утворюється відніманням діленого Y з 2ri – 1. Якщо знаки різні, біт частки qi дорінює 0,
і частковий залишок одержується додаванням дільника Y з 2ri – 1. Частка Q утворюється з бітів qi з відповідністю з наступним правилом:

, де (-1 + 2-n) – член корекція, який додається до бітів частки. (Це поянює, чому qi називається бітом псевдочастки).

Початковий залишок дорівнює діленому X. Перевірка знаків залишку ri – 1 і дільника Y, формування біта залишку qi і частки Q, утворення нового залишку,
а також збільшеня і перевірка індекса i входять в склад циклу. Після виходу з циклу к частному Q добавляєтсья коректуючий член і утворюється правильна частка.

2.8.3.1 Умова припинення ділення

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

Раніше було прийнято, що ділене і дільник – дробові числа. Бажано, щоб і частка була дробовим числом, звідки слідує, що ділене повинно бути меншим дільника. Це і є критерій, який дозволяє сформувати умови припинення ділення.
Є чотири випадки, при яких виникає необхідність зупинки ділення.

2.8.3.2 Блок-схема алгоритма

Блок-схема послідовності перевірки переповнення зображена на
малюнку 6.11.

малюнок 6.11 Чу стр. 243

Як видно з цієї блок-схеми, алгоритм знаходиться в циклі очікування, неперервно провіряючи стан регістра DSTEST. Коли вміст регістра DSTEST стає рівним 1, починається виконання основної частини алгоритма. Регістри BC, C і E скидуються в 0, регістр N встановлюється в 1 (при додаванні) або скидується в 0 (при відніманні). Потім починається цикл послідовного додавання (або віднімання). Під час циклу додавання (або віднімання) біт переноса (або позики) запам’ятовується в регістрі C, але біт суми (різниці) ігнорується, так як він не використовується, за винятком випадку переносу з самого лівого біта, який запам’ятовується в регістрі SA. Вміст регістра SA використовуєтсья оператором DVSTOP. Крім цього, під час додавання (віднімання) в регістрі E запам’ятовується результат логічної операції OR над бітом суми (або різниці) і E; тому якщо вміст регістра Е; тому якщо вміст регістра E дорівнює 0, то це означає, що модуль суми (різниці) дорівнює 0. Цикл виконуєтсья 24 рази. Після виходу з циклу перевіряється DVSTOP. Якщо виникло переповнення, регістр DV встановлюється
в 1. На цьому виконання алгоритму закінчується, і регістр DSTEST встановлються в 0, щоб забезпечити повернення до алгоритму ділення.

Після повернення з перевірки регістра DV починається послідовність ділення. Якщо вміст цього регістру дорівнює 1, виконання ділення припиняється.
В протилежному випадку починається цикл ділення. В цьому циклі виконується шість мікрооперацій, а саме встановлення біта Q(23) в 1 або 0, зсув вмісту касрегістра AQ вліво, звернення до послідовності SUM – DIF, скидання регістра OV в 0, а також збільшення лічильника WC і його перевірка. Якщо вміст регістра WC не дорівнює 23, цикл повторюється. Вихід з циклу здійснюється при WC, рівним 23. Тоді вміст регістру Q зсувається вліво на 1 біт, а частка коректується. Корекція додається в інвертуванні біта Q(0) і встановленні біта Q(23) в 1. На цьому виконання послідовності ділення закінчується.

2.8.4 Алгоритм десяткового ділення

Десяткове ділення засновано на використанні алгоритма ділення з відновленням залишку. Початкове ділення знаходиться в масиві регістрів R,
а 16-розрядне ділене – в касрегістрі AQ. Після виконання операції ділення частка розміщується в масиві регістрів Q, а залишок – в масиві регістрів A; ділене губиться. Переповнення індикується вмістом регістру DV.