Розробка управляючого і операційног вузлів ЕОМ
p> Недоліком такого АЛП є подвійна довжина суматора і його регістрів.
2. Ділення з нерухомим дільником і зсувом вліво діленого.

Цей спосіб дозволяє будувати АЛП з суматором одиночної довжини
(малюнок 6-8, б).

малюнок 6-8, б (Каган стр. 214)

Тут нерухомий дільник Y зберігається в PгY, а ділене X, зсуваючись вліво відносно Y, знаходиться в двох регістрах: старші розряди X – в Pг1X,

а молодші – в Pг2X. Ділення починається з зсуву вліво діленого X шляхом косої передачі його в PгCm і Pг3X і відповідних прямих передач в Pг1X. Далі на вхід суматора подається зсунуте вліво ділене, утворюється частковий залишок шляхом підсумовуванням додаткового коду дільника, і наступна цифра частки заноситься в звільнений при зсуві X розряд Pг2X.

Арифметично-логічний пристрій розглянутого типу широко застосовується для ділення.

Алгоритм ділення з нерухомим дільником з відновленням залишку.

1. Берутся модулі від діленого і дільника.

2. Початкове значення часткового залишку покладається рівним старшим розрядам діленого.

3. Частковий залишок подвоюється шляхом зсуву на один розряд вліво.

При цьому в звільнений при зсуві молодший розряд часткового залишку заноситься наступна цифра діленого.

4. З зсунутого часткового залишку віднімається дільник і аналізується знак результату віднімання.

5. Наступна цифра модуля частки рівна 1, якщо результат віднімання додатній, і 0, якщо від’ємний. В останньому випадку значення остачі відновлюється до того, яке було до віднімання.

6. Пункти 3, 4 і 5 послідовно виконуються для одержання всіх цифр модуля частки.

7. Знак частки плюс, якщо знаки діленого і дільника однакові, в іншому випадку – мінус.

Розглянемо тепер більш детально ділення в АЛП з нерухомим дільником.
Структурна схема АЛП дана на малюнку 6-9.

малюнок 6-9 (Каган стр. 215)

Схема містить: суматор Cm; вхідний регістр Pг1 для збереження дільника; вхідний регістр суматора PгA, в який поступає прямий або зворотній код дільника; вихідний регістр суматора PгCm, в якому утворюється частковий залишок; регістри діленого PгB (старші розряди) і Pг2 (молодші розряди); допоміжний регістр Pг2’ для зсуву діленого, тригери знаків діленого і дільника ТгЗн1 і ТгЗн2; лічильник циклів СчЦ для підрахунку числа одержаних цифр частки. Одержані в процесі ділення цифри частки заносяться в звільнені розряди Pг2’.

Мікропрограма ділення для випадку додатніх чисел приведена на

малюнку 6-10. Пояснемо процедуру відновлення остачі.

малюнок 6-10 (Каган стр. 217)

Якщо віднімання дає від’ємний результат (См[0] = 1), то попередній частковий залишок, який зберігається в PгB, передається в PгCm, для чого попередньо обнулюється PгA. В PгCm прийом здійснюється з зсувом вліво на

1 розряд. Це забезпечує відновлення попереднього часткового залишку і зміщення його відносно дільника перед наступним відніманням.

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

які представленні в прямому коді. Для цього треба внести такі зміни:

після прийому операндів в PгB, Pг2 і Pг1 значення знакових розрядів X і Y передаються в тригер знака – відповідно ТгЗн1 і ТгЗн2. Потім в PгB [0] і
Pг1 [0] заноситься 0, тобто виконується перехід до модулів X і Y. Розряд знаку частки встановлюється в 0 при ТгЗн1 = ТгЗн2 і в 1 в протилежному випадку.

Розглянутий метод ділення носить назву ділення з відновленням залишку.
Недоліком цього методу є необхідність введення спеціального такту для відновлення залишку.

Звичайно в ЕОМ для ділення використовується другий метод – ділення без відновлення залишку.

Алгоритм ділення з нерухомим дільником без відновлення залишку.

Пункти 1-3 співпадають з алгоритмом ділення з відновленням залишку.

4. З зсунутого часткового залишку віднімається дільник, якщо залишок додатній, і до зсунутого часткового залишку додається дільник, якщо залишок від’ємний.

5. Наступна цифра модуля частки рівна 1, якщо результат віднімання додатній, і 0, якщо від’ємний.

Пункти 6, 7 співпадають з попереднім алгоритмом.

Можна показати, що часткові залишки після виконання додавання при діленні без відновлення залишку одержуються такі самі, як і залишки після зсуву відновленного залишку при діленні з відновленням залишку.

Дійсно, оскільки зсув часткового залишку на один розряд вліво є еквівалентом множення його на два, одержимо: 2*a – b = 2*(a – b) + b, (6-
5),

де a – частковий залишок; b – дільник.

Аналогічно

2na = {…{[(a – b)*2 + b] + b}*2 + … + b}. (6-6)

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

Мікропрограма ділення цілих додатніх чисел без відновлення залишку у своїй початковій частині співпадає з мікропрограмою ділення без відновлення залишку. Різниця з’являєтья після формування знаку частки. На малюнку 6-11 приведена частина мікропраграми ділення без відновлення залишку після мікрокоманди фіксації знаку частки.

малюнок 6-11 (Каган стр. 219)

Блок-схема показує, що поки невизначені всі цифри частки (СчЦ 0),

в залежності від знаку часткового залишку або підсумовується Y (при См [0]
= 1), або віднімається Y (при См [0] = 0). В одержаному новому частковому залишку аналізується знак і в ньому визначається цифра частки. Після завершення всіх циклів ділення (СчЦ = 0) видається реультат. При цьому якщо залишок від’ємний, то він відновлюється шляхом підсумуванням Y.

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

Відмінності заключаються в наступному (для випадку ділення без відновлення залишку):

1. Так як ділене і дільник можуть мати різні знаки, то дія з частковим залишком (додавання або віднімання Y) залежать від знаку залишку і дільника і визначаються таблицею 6-4.

|Знак залишку |Знак дільника|Дія |
|+ |+ |Віднімання Y |
|+ |- |Додавання Y |
|- |+ |Додавання Y |
|- |- |Віднімання Y |

таблиця 6-4 (Каган стр. 219)

Якщо знак залишку співпадає з знаком дільника, то zi = 1, інакше zi =
0.

2. Якщо X > 0 і Y < 0, то частку необхідно збільшити на одиницю.

Якщо X < 0 і Y > 0, то частку необхідно збільшити на одиницю у випадку залишку від ділення, яке не дорівнює нулю.

Якщо X < 0 і Y < 0, то частку необхідно збільшити на одиницю у випадку залишку від ділення, яка рівна нулю.

Ділення правильних дробів виконується так, як і ділення цілих.

Різниця заключається тільки у тому, що ділене має, як правило, таку ж довжину, як дільник. Але можна допустити, що ділене має ще n молодших розрядів, які рівні нулю. Тоді стає ясно, що алгоритм ділення дробів нічим не відрізняється від алгоритму ділення цілих.

2.8.1 Арифметичний пристрій з фіксованою крапкою (Чу стр. 130-135)

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

В такому пристрої є схема паралельного суматора або паралельного віднімання.

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

| | |
|1 Число |S |
|22 | |

малюнок 4.1 (Чу стр. 131)

Представимо число у вигляді цілого. Це представлення має вид “знак + модуль”. Нуль в знаковому біті означає, що число додатнє, а одиниця – що воно від’ємне. Для числа, модуль якого дорівнює нулю, в знаковому біті завжди формуєтсья одиниця.
Будемо використовувати регістри AC – накопичуючий регістр,

MQ – регістр частки, SR – запам’ятовуючий регістр, SC – лічильник зсувів.
Використовується схема паралельного суматора і регістр DVOV. AS, MQ, SR, складаються з двох частин: в одній зберігається знак, а в другій – модуль числа. Отже, ми використовуємо субрегістри для знаку AS(S), MQ(S), SR(S)

і субрегістри модуля AS(M), MQ(M), SR(M). Субрегістром називається частина регістру, сукупність бітів якої мають особливий зміст. Об’єднання декількох субрегістрів або регістрів при виконанні спеціальної операції в один регістр називається касрегістром.

Регістр DVOV сигналізує про стан переносу при діленні.
Ми не будемо його використовувати.
Структура:

AC(M) = AC(1 – 23),
SR(M) = SR(1 – 23),
MQ(M) = MQ(1- 23).
AC(S, R, Q, 1- 23),
SR(S, 1 - 23),
MQ(1 – 23),
SC(0 – 5),
C.
Паралельний суматор:

ADD(R, Q, 1 – 23) = ADSR(R, Q, 1 – 23) EXOR ADAC(R, Q, 1 – 23)

EXOR C(R, Q, 1 – 23),
C(R, Q, 1 – 22) = ADSR(Q, 1 – 23)*ADAC(Q, 1 – 23) + ADAC(Q, 1 – 23)

*C(Q, 1 – 23) + C(Q, 1 – 23) * ADSR(Q, 1 – 23), C(23) = 0.

Опис виводів Z:
Z(R, Q, 1 – 23) = 0 – 0 – AC(M) add2 0 – 0 – SR(M) – 0.

Опис оператора add2:
W(R, Q, 1 – 23) = X(R, Q, 1 – 23) add2 Y(R, Q, 1 – 24)
C(23) = Y(24),
C(R, Q, 1 – 22) = X(Q, 1 – 23)*Y(Q, 1 – 23) + Y(Q, 1 – 23)*C(Q, 1 – 23) +
C(Q, 1 – 23)*X(Q, 1 – 23)
W(R, Q, 1 – 23) = X(R, Q, 1 – 23) EXOR Y(R, Q, 1 – 23) EXOR

C(R, Q, 1 – 23).
Тут в регістрі АС є біт АС(Q), який міститься між знаковим бітом і старшим бітом значущої частини регістру. В цьому біті міститься перенос з старшого біту значущої частини, який утворюється при додаванні або віднімані. Розряд
АС(R) містить перенос з біту АС(Q).
В нашій схемі звичайно використовуються однобітні повні суматори,

що мають по три входи і два виходи. На схемі 4.3 i-ий біт першого

доданку – ADAC(i), j – біт другого доданку ADSR(i), i – ий біт переносу –
C(i),

(i – 1) – й біт переносу C(i – 1) і i – ий біт суми – ADD(i), де i – номер розряду паралельного суматора.

малюнок 4.3 та 4.4 (Чу стр. 134)

На малюнку 4.4 входи ADAC(R, Q, 1 – 23) і ADSR(1 - 23) з’єднані з виходами регістрів АС(R, Q, 1 –23) і SR(1 – 23) відповідно. На входи ADSR(R, Q) сигнали з регістру SR звичайно не поступають. Замість цього при необхідності на цих шинах формуються константи 0 або 1. Вхід С(23) на якому повинен бути 0 є входом переносу для крайнього правого біту суматора.
Входи

ADD(R, Q, 1 – 23) являють біти суми, а виходи С(R, Q, 1 – 23) – переноси для всіх 26 однобітних повних суматорів. Схема паралельного суматора зображена на малюнку 4.5.

малюнок 4.5 (Чу стр. 134)

В алгоритмі ділення виконується перевірка однієї з спеціальних вихідних шин паралельного суматора. Частина цих шин зв’язана з входами субрегістру
АС(M),

а друга – з входами субрегістру SR(M). Це і є виводи Z.
Оператор add2 виконує додавання значущих частин двох 26 – бітних двійкових чисел; у цьому випадку вхідний перенос С(23) = 0. Його зручно використовувати також при додаванні додаткового коду від’ємника з зменшуваного (вілнімання); в такому випадку вхідний перенос С(23) = 1.

Таким чином, вхідний пернос розглядається як додатковий вхід паралельного суматора; потрібна модифікація додавання описується оператором add2.
2.8.1.1 Ділення (Чу стр. 144 – 148)

При діленні чисел, представлених у форматі з фіксованою комою ділене знаходиться в касрегістрі, який додається з регістрів АС і MQ, а дільник – в регістрі SR; частка поміщається в регістр MQ, а залишок – в регістр AC.

Дільник після виконання операції залишається в регістрі SR; ділене в касрегістрі губиться. Алгоритм ділення побудований на основі використання методу порівняння. Його зручно розділити на дві частини: ініціалізація
(малюнок 4.11) і відповідно ділення (малюнок 4.12)

малюнок 4.11 (Чу стр. 144)

малюнок 4.12 (Чу стр. 145)

При ініціалізації перевіряється чи не буде переповнення, і визначається знак частки. Переповнення при діленні визначається шляхом віднімання діленого з дільника (субрегістри AC(M) і SR(M)). При відніманні до дільника додають ділене з субрегістру AC(M) в оберненому коді. Якщо перевірка показує, що значення на шині суми Z(Q) = 0 то з цього слідує, що ділене з
AC(M) більше або дорівнює дільнику з SR(M). При переповненні в регістр DVOV засилається одиниця, і процес ділення завершується. Якщо ж перевірка показує, що Z(Q) = 1, то процес ініціалізації продовжується і визначається знак частки. Знак частки записується як нуль, якщо знакові біти AC(S) і
SR(S) співпадають; в іншому випадку в M(Q) засилається одиниця. Потім проводиться запуск процесу ділення.
При діленні значення часткового залишку в субрегістрі AC(M) зберігається в оберненому коді. Процес починається з засилки в регістр лічильника зсувів
SC константи 2310. Далі вміст касрегістру AC(M) – MQ(M) зсувається вліво на один біт; одночасно біт MQ(1) інвертується і переміщується в біт AC(23) для того, щоб частковий залишок в субрегістрі AC(M) залишався в оберненому коді. Дільник з субрегістру SR(M) порівнюється з частковим залишком AC(M).
Якщо порівняння показує, що Z(Q) = 0, то це означає, що частковий залишок з
AC(M) більше дільника з SR(M) або дорівнює йому. В цьому випадку в біт
MQ(23) засилається одиниця і одночасно дільник з SR(M) додається до часткового залишку з AC(M). Якщо ж Z(Q) = 1, то це означає, що дільник з
SR(M) більше часткового залишку AC(M); у цьому випадку пересилка і додавання не відбуваються. Далі вміст лічильника зсувів SC зменшується на одиницю і перевіряється на нуль. Якщо вміст SC 0, то алгоритм продовжується до вичерпання SC. Далі частковий залишок в AC(M) перетворюється в вихідне представлення шляхом інвертування всіх бітів. На цьому процес ділення завершується.
Процедурний опис ділення:

Ділене = + 00001111 = + 1510,
Дільник = - 0011 = - 310,
Частка = - 0101 = - 510,
Залишок = + 0000 = 0.

AC(R, Q, M) ( 0 – 0 – AC(M)’;
IF (Z(Q) = 1) THEN (DVOV ( 1, GOTO C2);
IF (SR(S) = AC(S)) THEN (MQ(S) ( 0) ELSE (MQ(S) ( 1);
SC ( 35;
AC(M) – MQ(M) ( AC(2 – 35) – MQ(1)’ – MQ(2 – 35) – 0;
IF (Z(Q) = 0) THEN (MQ(35) ( 1, AC(R, Q, M) ( 0 – 0 – AC(M) add2

0 – 0 SR(M) – 0;
SC ( countdn SC;
IF (SC 0) THEN (GOTO C1);
AC(M) ( AC(M)’
END
2.8.1.2 Мікропрограми арифметичного пристрою

(Чу стр. 177)

Розглянемо тепер відповідність між управляючими сигналами і мікроопераціями. Процес встановлення такої відповідності розпадається на три етапи. На першому етапі вибираються управляючі сигнали для ініціалізації роботи пристрою і запуску генераторів синхро- і управляючих сигналів. Ця група сигналів генерується незалежно від мікропрограми. На другому етапі проходить прив’язка мікрооперацій команд до одної або декількох мікрокоманд, а на третьому встановлюється зв’язок між кожною мікрооперацією, що зустрічається в мікропрограмі і управляючим сигналом для неї. По результатам виконання двох цих результатів будується мікропрограма.
Мікропрограма ділення також додається з чотирьох мікрокоманд: D1, D2, D3,
D4. Мікрокоманда D1 пересилає адрес операнду з регістру K в адресний регістр AD і витягує операнд з основної пам’яті.D2 – ініціалізаація; D3 - ділення; D4 – завершення.

F ( CM(H),
AD ( K,
SR ( M(AD),
H ( countup H.

F ( CM(H),
AC(R, Q, M) ( 0 – 0 AC(M)’,
IF Z(Q) 1) THEN (DVOV ( 1, BR(1) ( 1)
ELSE (BR(2) ( 1),
IF (BR(2) = 1) THEN (MQ(S) ( SR(S) EXOR AC(S), SC ( 35),
IF(BR(1) = 1) THEN (H ( F(ADS))
ELSE (H ( countup H),
IF (BR(1) = 1) THEN (DO DSET),
BR ( 0.

F ( CM(H),
SC ( countdn SC,
AC(M) – MQ(M) ( AC(2 – 35) MQ(1)’ – MQ(2 – 35) – 0,
IF (Z(Q) 1) THEN (MQ(35) ( 1,
AC(R, Q, M) ( 0 – 0 – AC(M) add2 0 – 0 SR(M) – 0),
IF (SC = 0) THEN (H ( countup H).

F ( CM(H),
AC(M) ( AC(M)’,
H ( F(ADS),
DO SET.
2.8.2 Послідовний арифметичний пристрій

(Чу стр. 223 –228)

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

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

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

|X0 |X1 |X2 |… |X22 |X23 |

Додатнє число зображається в вигляді знака і модуля:
[pic], де X – число, знак плю зображуєтсья нулем,

а xi – числові біти. Найбільш можливе число рівне 0, 11…1, або 20 – 2-23.

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

формулу (6.2) можна переписати в наступному вигляді:
[pic] (6.3) і [pic], де [pic] - інверсія 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 – регістр операнда, який використовується також в якості буферного регістра пам’яті. Арифметичні операції виконуються в цих трьох регістрах, які сумісно використовуються з суматором-віднімачем.

малюнок 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 – ділене і дільник відповідно. Частковий залишок віднімається з допомогою рівняння [pic]. При цьому, якщо знак залишку ri-1 (а не ri) і дільники однакові, біт частки qi равен 1 і частичний залишок утворюється відніманням діленого Y з 2ri – 1. Якщо знаки різні, біт частки qi дорінює
0,

і частковий залишок одержується додаванням дільника Y з 2ri – 1. Частка Q утворюється з бітів qi з відповідністю з наступним правилом:
[pic], де (-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.
На малюнку 6.20 і 6.21 приведені блок-схеми алгоритма ділення десяткових чисел.

малюнок 6.20 Чу стр. 265

малюнок 6.21 Чу стр. 266


Додовання і віднімання, які використовуються цим алгоритмом, виконуються підпослідовністю SUM – DIF, а перевірка переповнення – з допомогою підпослідовності DSTEST. З малюнку 6.20 видно, що ділення починається з скидання регістру WC в 0 і звернення до підпослідовності DSTEST з цілью перевірки можливості переповнення при діленні. Підпослідовніст DSTEST, зображена в виді блок-схеми на малюнку 6.21, в свою чергу починається з звернення до підпослідовності SUM – DIF; останні здійснює віднімання дільника, який знаходиться в масиві регістрів R, з старшої частини діленого, який знаходиться в масиві регістрів A. Різниця залишається в масиві регістрів A.

Потім виконується перевірка, яка дозволяє встановити, чи не містить регістр
OV позики. Якщо регістр OV містить 0, значить місце переповнення при діленні немає, і ділене відновлюється шляхом звернення до підпослідовності
SUM – DIF, здійснюється додавання дільника з масива регістрів R і різниці масива регістрів A. В цей момент виконання підпослідовності DSTEST закінчується скидуванням регістра DSTEST в 0.
Після повернення з підпослідовності DSTEST до підпослідовності ділення виконується перевірка регістра DV на рівність 1. Випадок рівності DV одиниці вказує на переповнення при діленні, що викликає припинення операції ділення. Якщо ж в індикаторі переповнення DV міститься нуль, ділення продовжується. Так як успішний вихід перевірки умови переповнення при діленні означає, що вміст масива регістрів A менше дільника, який знаходиться в масиві регістрів R, ділене в масиві регістрів A множиться на
10 шляхом зсуву на одну десяткову цифру вліво.
Як видно з малюнка 6.20, в алгоритмі є два цикла – внутрішній і зовнішній.
Внутрішній цикл починаєтсья з встановлення лічильника DVC в 0. Потім починається внутрішній цикл додавання-віднімання. В внутрішньому циклі виконується звертання до підпослідовності SUM –DIF, яка здійснює додавання або віднімання, а також перевірки виникнення позики при відніманні.Якщо позики немає, лічильник DVC збільшується на 1, і керування передається до початку внутрішнього циклу. Цикл віднімання повторюється до тих пір, поки не виникне позика, на чому виконання циклу закінчується. Наявність позики означає, що вміст лічильника DVC є цифра частки; значення вмісту DVC пересилається в субрегістр Q(,8). Лічильник WC збільшується на 1, після чого його нове значення порівнюється з константою 8. Якщо вміст WC дорівнює
8, касрегістр A зсувається вліво на одну десяткову цифру, і управління передається до початку зовнішнього циклу. Зовнішній цикл повторяється до тих пір, поки лічильник WC на стане рівним 8. В цей момент визначаються знаки частки і залишку, які поміщаються в регістри SA і SQ відповідно. На цьому виконання операції ділення закінчується.
2.9 КМОН

З багатьох серій цифрових мікросхем на польових транисторах найбільше використання одержали серії мікросхем КМОП.
Скорочено КМОП – це початкові букви чотирьох слів з повного визначення: комплементарні польові транзистори з структурою металл – окисел – напівпровідник. Слово комплементарний переводиться як взаємно доповнюючий.
Так називаються пару транзисторів, які подібні по абсолютним значенням параметрів, але з напівпровідниковими структурами, взаємно відображені як би в вигляді негатива і позитива. В біполярній схемотехніці – це транзистори n-p-n і p-n-p, в польовій p-канальні і n-канальні. Тут p – перша буква від слова positive,

n – negative.
Цікаво, що на перших етапах розвитку біполярних цифрових мікросхем пророкували широке розповсюдження комплементарних біполярних логічних елементів на n-p-n і p-n-p транзисторах. Для прикладу, якщо в ТТЛ вдалось би замінити вихідний каскад на двохтактний комплементарний, принципово збільшилась би економічність елемента. Але біполярна комплементарна транзисторна логіка не прижилась через труднощі виготовлення на кристалі великої кількості компактних по площині і високоякісних по параметрах інтегральних p-n-p транзисторів.
Нагадаємо, що в аналоговій схемотехніці, де p-n-p транзистори просто необхідні як для спрощення схемотехніки, так і для покращення властивостів підсилювачів, проблема створення добрих p-n-p транзисторів для технологів все ж таки існує. Тому реально біполярні мікросхеми ТТЛмають на виході так називаємі квазікомплементарний каскад. На кристалі роблять тільки n-p-n транзистори. Ця компромісна схема елемента ТТЛ вийшла оптимальною і перспектвною на багато десятеліть.
Перші спроби випускати серії простих польових елементів, подібний по схемі з РТЛ, до успіху не привели. Логічні елементи виходили малошвидкодіючі, оскільки внутрішній опір канала у польового транзистора на порядок більше,

чим опір між колектором і емітером насиченого біполярного транзистора.
Однополярні мікросхеми МОП не відрізнялись успіхом ні перешкодостійкістю,

ні малою потребуючою силою. Добрі результати дало використання двополярного інвертора, який побудований на комплементарній польовій парі.
Тепер можна конкретно вибрати необхідні елементи КМОН для реалізації даної схеми, хоча при проектуванні постійно перевірялася можливість втілення схем за допомогою стандартних мікросхем серій КМОН.
2.10 Мікросхеми

Отже:
- як D-тригери беремо мікросхему К176ТМ2

Ця мікросхема містить два D-тригера і є корисна тим, що має інверсні виходи, а також має входи скидання (Reset).
Довжина тактового імпульсу не повинна бути меншою 100 нс.
Час встановлення виходів – не менше 25 нс.

Логічні мікросхеми також легко підібрати.

К561ЛА7 К561ЛА8 К561ЛА9 К561ЛИ2

Хоча мікросхеми серії К561 і підтримують напругу живлення до 15 Вольт (чим більша напруга, тим більша швидкодія) але ми змушені використовувати мікросхеми старішої серії К176, максимальна напруга живлення яких – 9
Вольт. Тому напруга живлення всього автомата не повинна перевищувати 9
Вольт,

а в ідеальному випадку бути рівною цьому значенню.
3. Розробка графу

Будується на основі автомату Мура, що використовує алгоритм двійкового ділення (паралельний пристрій). Хоча за умовою я повинна розробити пристрій для ділення десяткових чисел, але, враховуючи, що блок-схема десяткового ділення складніша у два рази (Каган) та маючи КМОН, яка є повільною, я буду використовувати двійковий алгоритм (Чу, 23) та шифратори і дешифратори.
Модифікований алгоритм приведе до такого графа:

CM – дозвіл
___
CM – логічна операція множення
X0: SR(M)


Страницы: 1, 2



Реклама
В соцсетях
бесплатно скачать рефераты бесплатно скачать рефераты бесплатно скачать рефераты бесплатно скачать рефераты бесплатно скачать рефераты бесплатно скачать рефераты бесплатно скачать рефераты