- •Прикладна теорія цифрових автоматів
- •Загальні методичні вказівки
- •Тема: Проектування спеціалізованих арифметико-логічних пристроїв
- •Методичні вказівки до виконання курсової роботи
- •Загальні відомості
- •1. Вибір схеми операційного автомату та опис його роботи.
- •2. Принципіальна схема модуля операційного блока (моб).
- •3. Приведення змістовного алгоритму виконання операції.
- •Граф-схеми мікропрограми ка.
- •5. Проектування модуля ка.
- •Структурний синтез автомата Мілі
- •Побудова схеми керуючого автомата
- •Структурний синтез автомата Мура
- •Зауваження
- •Література
- •Проектування спеціалізованих арифметико-логічних пристроїв
- •1. Реалізація операції додавання і віднімання
- •1.1. Алгоритм додавання і віднімання двійкових чисел
- •1.2. Функціональна схема алп для виконання операцій додавання і віднімання
- •1.3. Мікропрограма додавання та віднімання двійкових чисел
- •2. Реалізація операції множення
- •2.1. Алгоритм множення двійкових чисел із зсувом суми часткових добутків вправо
- •2.2. Функціональна схема алп для операції множення
- •2.3. Мікропрограма множення цілих чисел
- •2.4. Перший алгоритм множення у прямому коді.
- •2.5. Другий алгоритм множення у прямому коді.
- •2.6. Третій алгоритм множення у прямому коді.
- •2.7. Четвертий алгоритм множення у прямому коді.
- •2.8. Множення чисел в додатковому коді
- •3. Реалізація операції ділення
- •3.1. Алгоритм ділення цілих чисел(1)
- •3.2. Функціональна схема алп для мікропрограми ділення
- •3.3. Мікропрограма ділення цілих чисел без відновлення залишку
- •3.4. Алгоритм ділення у додатковому коді(11)
- •3.5. Алгоритми прискореного ділення (111)
3.3. Мікропрограма ділення цілих чисел без відновлення залишку
Початок. Якщо К[4], то М1, інакше — чекати
М1 <завантаження дільника і обнулення тригерів>
<завантаження старшої частини діленого; присвоєння тригеру Т1 знака діленого>
<завантаження молодшої частини діленого>
<зсув вліво на один розряд змісту регістрів RGB і RGC. Передача значення старшого розряду регістра RGC в молодший розряд регістра RGB, а в молодший розряд регістра RGC — змісту тригера Т3>
<записування в тригер Т3 знака результату ділення>
<завантаження в лічильник СТ кількості циклів>
<віднімання дільника в доповняльному коді від значення даних в регістрі RGB>
<завантаження результату віднімання в регістр RGB. Входу адресації ADR мультиплексора MUX надається значення одиниці>
<присвоєння знака залишку тригеру Т4>
Якщо Т4, то М2, інакше
<присвоєння ознаки переповнення тригеру ТП в ЦПК>.
Перейти до М7 (кінець)
М2
М3 Якщо Т4, то М4, інакше
<обнулення тригерів Т3, Т4> Перейти до М5
М4 <додавання дільника до залишку>
М5
<присвоєння тригеру Т3 інверсного значення знака суматора – формування цифри частки>
<декремент змісту лічильника>
Якщо СТ ≠ 0, то М3, інакше М5
М6 <зсув вліво змісту регістра RGC і записування останньої молодшої цифри частки>
Якщо , то М7, інакше
Продовження додатку
М7 Якщо , то М8, інакше
<зсув вліво залишку>
<зсув вправо частки і присвоєння їй знака діленого>
М8 Кінець.
3.4. Алгоритм ділення у додатковому коді(11)
При діленні чисел у додатковому коді труднощі, пов'язані з корекцією результату (як при множенні в додатковому коді), практично відсутні, тому що сам базовий алгоритм ділення без відновлення остачі припускає використання від’ємного дільника, додаткового коду для обрахування
і обліку знаків остачі й дільника на кожному кроці ділення. Крім того, ділене бере участь в операції тільки на першому кроці, а далі використаються залишки, які згідно базового алгоритму можуть бути як додатними, так і від’ємними. Тому не має потреби розглядати алгоритми ділення в додатковому коді, де знаки операндів обробляються окремо від їхніх числових частин.
При діленні в додатковому коді можливі комбінації знаків операндів утворять наступний перелік.
Х>0, Y>0, Z=X/Y>0. Ділення в цьому випадку не відрізняється від ділення доданих операндів у прямому коді.
Х<0, Y>0, Z=X/Y<0. Зауважимо, що тут з від’ємного діленого повинен відніматися додатний дільник, на відміну від ділення без відновлення остачі в прямому коді, коли на першому кроці Х>0, Y<0. Тому псевдознакове число частки z0=0, отримане за знаком нульової остачі відповідно до алгоритму ділення без відновлення остачі, вказує на переповнення розрядної сітки через те, що |X| > |Y|. Якщо |X| < |Y|, то переповнення розрядної сітки немає й це число є правильним знаковим числом частки (тобто, z0=1). Знаки всіх інших залишків у цьому випадку визначають інверсні значення чисел частки. У результаті в PZ буде записаний зворотний код негативної частки. Для округлення й одержання додаткового коду результату необхідно додати одиницю до п+1-го розряду.
Х>0, Y<0, Z=X/Y<0. Цей випадок легко зводиться до звичайного ділення в прямому коді, якщо вважати, що в наявності є –Y та+Y. Однак для формування правильного знаку часного й зворотнього коду відємного результату необхідно псевдознакове число й число частки одержувати рівними числами знакових розрядів відповідних залишків. Переповнення розрядної сітки фіксується по z0=0. Наприкінці ділення для утворення додаткового коду й округлення частки треба додати одиницю в n+1-й розряд.
Х<0, Y<0, Z=X/Y>0. На першому кроці алгоритму для формування правильного знака частки z0=0 необхідно з від’ємного діленого віднімати додатний дільник (z0=l відповідає переповненню розрядної сітки). Далі цей випадок зводиться до третього. Тут всі числа частки, включаючи псевдознакову, дорівнюють знакам залишків. ГСА ділення в додатковому коді наведена на рис. 10 (дві мікрооперації на PZ перед кінцевою вершиною ГСА відповідають округленню й утворенню додаткового коду результату).
Продовження додатку
Рис.10.
Продовження додатку
Складемо числову діаграму ділення чисел Х=21/32 на Y=-24/32 за алгоритмом ділення чисел у додатковому коді (ХДК = 00,10101, YДК=11,01000). Діаграма наведена в табл. 10.
Таблиця 10
00,10101 |
11,01000 |
0,000000 |
000 |
Початковий стан |
11. 01000 |
|
|
|
+Y |
11,11101 |
|
z0 |
|
R0 |
11,11010 |
|
1 |
001 |
Зсув |
00. 11000 |
|
|
|
-Y |
00,10010 |
|
z1 |
|
R1 |
01,00100 |
|
10 |
010 |
Зсув |
11,01000 |
|
|
|
+Y |
00,01100 |
|
z2 |
|
R2 |
00,11000 |
|
100 |
011 |
Зсув |
11 01000 |
|
|
|
+Y |
00,00000 |
|
z3 |
|
R3 |
00,00000 |
|
1000 |
100 |
Зсув |
11 01000 |
|
|
|
+Y |
11,01000 |
|
z4 |
|
r4 |
10,10000 |
|
10001 |
101 |
Зсув |
00. 11000 |
|
|
|
-Y |
11,01000 |
|
z5 |
|
R5 |
10,10000 |
|
100011 |
110 |
Зсув |
00,11000 |
|
|
|
-Y |
11,01000 |
|
z6 |
|
R6 |
10,10000 |
|
1000111 |
111 |
Зсув |
|
|
1 |
|
+1 Округлення |
|
|
1,00100 |
|
Частка |
|
|
|
END |
|
3. Якщо Х<0, Y<0, то корекція результату може бути зроблена об'єднанням двох попередніх варіантів, тобто, при множенні на знаковий розряд множника виконують розрахунки, а підсумовування й зрушення часткових добутків роблять із використанням модифікованого додаткового коду. Очевидно, що час множення в цьому випадку буде дорівнювати
TУ ДК = (n+1)(tc+t+).
Продовження додатку