Розробити обчислювальний пристрій, що виконує наступні операції:
зміна знака числа
розподіл чисел
Числа представлені в форматі з плаваючою точкою з розрядністю 18 +6.
Опис структурної схеми пристрою з її обгрунтуванням
Структурна схема пристрою представлена на малюнку 1. Вона складається з двох частин. Перша частина схеми, до складу якої входять регістри Ao і Bo і суматор, призначена для роботи з порядками чисел. Друга частина схеми, що складається з регістрів Am, Bm і Z, мультиплексора, суматора і компаратора призначена для роботи з мантиса чисел.
При виконанні операції ділення використовується два числа - A (ділене) і B (дільник). Число A зберігається в регістрах Ao і Am відповідно порядок і мантиса. Число B зберігається в регістрах Bo і Bm відповідно порядок і мантиса.
На початку роботи ділене A заноситься в регістри: мантиса в регістр Am за допомогою сигналу Y3, порядок в регістр Ao - Y4, а дільник B: мантиса в регістр Bm (Y5), порядок в регістр Bo (Y6). Мантиса діленого A зсувається вліво шляхом косою передачі з регістра Am в суматор. Дільник B надходить в суматор SM з регістра Bm в прямому або зворотному кодах (Y9). Додатковий код діленого утворюється в SM за рахунок подсуммірованія зворотного коду діленого B сигналом "+1 SM" (Y10).
Цифри приватного Zi, що визначаються за знаком часткових залишків у регістрі Am, фіксуються в регістрі Z шляхом послідовного занесення їх в молодший розряд регістра Z (Y7) і зсуву вмісту регістра Z (Y8).
Порядок приватного визначається відніманням порядків на SM шляхом подачі зворотного значення близько дільника з регістра Bo і фіксації результату в регістрі Bo.
При виконанні операції зміни знаку використовується одне число. Число записується в регістр Bm (Y5) і подається на суматор SM в зворотному коді (Y9) і записується в регістр Am (Y3) з попереднім подсумірованіем одиниці в суматорі (Y10).
Малюнок 1
Опис блок-схеми алгоритму виконання операцій і її мікропрограмного реалізації.
Блок-схема виконання операцій представлена на малюнку 2.
На початку роботи гаситься вихідна готовність (Y14) і перевіряється вхідні готовність (P1). Після отримання сигналу вхідний готовності обнуляються регістри A o і Am (Y0), Bo і Bm (Y1) і Z (Y2). Далі перевіряється код операції (P2) для визначення подальших дій.
Операція зміни знаку числа - гілка один.
Записуємо вихідне число в регістр Bm (Y5). Передаємо на SM його зворотний код з подсуммірованіем одиниці молодшого розряду (Y10). Дані з SM записуємо в регістр Am (Y3). Після цього встановлюємо вихідну готовність (Y13) і закінчуємо роботу.
Операція поділу чисел - гілка два.
Виробляємо запис: мантиси діленого в регістр Am (Y3), порядку діленого в регістр Ao (Y4) і мантиси і порядку дільника в регістр Bm (Y5) і Bo (Y6) відповідно. Обчислюємо різниця порядків чисел шляхом складання першого порядку зі зворотним кодом другого (Y11) і зберігаємо результат в регістрі Bo (Y6). Перевіряємо рівність дільника нулю (P3). Якщо дільник дорівнює нулю, то сигналізуючи про помилку аргументів і встановлюємо вихідну готовність (Y13). Якщо дільник не дорівнює нулю, тоді розподіл можливо і починається цикл порозрядного отримання мантиси приватного. На SM передається зрушене косою передачею у бік старших розрядів ділене і зворотний код дільника (Y9) з подсуммірованіем одиниці молодшого розряду (Y10). З виходу SM частковий залишок заноситься в регістр Am (Y3). Цифра модуля приватного обчислюється як сума за модулем два знакових розрядів часткового залишку і дільника і заноситься у попередньо зрушений на один розряд вліво (Y8) регістр Z (Y7). Перевіряємо лічильник чисел (P4). Якщо він не дорівнює нулю, продовжуємо цикл з визначення розрядів приватного. Якщо лічильник дорівнює нулю, то ми визначили всі розряди приватного, і переходимо до нормалізації результату. Якщо число не нормалізовано (P6), то виробляємо зрушення Z у бік старших розрядів (Y8) і зменшення порядку (Y12). Після нормалізації числа встановлюємо вихідну готовність і закінчуємо роботу.
Для реалізації пристрою використовується керуючий автомат з виділеною адресної пам'яттю, його схема зображена на малюнку 3, в таблиці 1 представлені стану його переходів, у таблиці 2 керуючі сигнали і в таблиці 4 описані префіксний функції.
Малюнок 2
ПЗУ А | |||
Адреси пам'яті | Умови переходів | Код ПФ | Адреси переходів |
0 | 0 | 0 | 1 |
1 | 0 | P1 | 1 |
1 | P1 | 2 | |
2 | 0 | P2 | 4 |
1 | P2 | 3 | |
3 | 0 | 0 | 10 |
4 | 0 | P3 | 8 |
1 | P3 | 12 | |
5 | 0 | P4 | 6 |
1 | P4 | 10 | |
6 | 0 | P5 | 7 |
1 | P5 | 8 | |
7 | 0 | 0 | 9 |
8 | 0 | 0 | 9 |
9 | 0 | 0 | 5 |
10 | 0 | P6 | 11 |
1 | P6 | 12 | |
11 | 0 | 0 | 10 |
12 | 0 | 0 | * |
Таблиця 1
Y0 | Обнулення регістрів Ao і Am |
Y1 | Обнулення регістрів Bo і Bm |
Y2 | Обнулення регістру Z |
Y3 | Запис в регістр Am |
Y4 | Запис в регістр Ao |
Y5 | Запис в регістр Bm |
Y6 | Запис в регістр Ao |
Y7 | Запис розряду приватного в регістр Z |
Y8 | Зрушення регістру Z у бік старших розрядів |
Y9 | Вибір операції в суматорі |
Y10 | Подсуммірованіе 1 в суматорі |
Y11 | Різниця порядків |
Y12 | Зменшення порядку приватного в регістрі Bo |
Y13 | Установка вихідний готовності |
Y14 | Гасіння вихідний готовності |
Таблиця 2
Малюнок 3
Функція | Значення |
P1 | Вхідна готовність |
P2 | Код операції |
P3 | Ознака рівності 0 дільника |
P4 | Кінець поділу |
P5 | Знак числа в регістрі Am |
P6 | Ознака нормалізації |
P7 | Знак числа в регістрі Bm |
Таблиця 3
На малюнку 4 представлена зв'язок керуючого автомата з операційним автоматом.
Малюнок 4
Числові тестові приклади виконання операцій з поясненнями
Нехай X = 11010111 * 23, Y = тисяча сто одна * 22. Знайти частка від ділення X / Y.
Всі дії виконуються у влаштуванні у наступній послідовності:
0.1101111 | Прямий код діленого | Приватне X / Y | |
+ | 1.0011 | Додатковий код дільника | |
0.0000 | Залишок позитивний | 1 | |
0.0000 | Залишок зрушать вліво на один розряд | ||
+ | 1.0011 | Додатковий код дільника | |
1.0011 | Залишок негативний | 10 | |
0.0111 | Залишок зрушать вліво на один розряд | ||
+ | 0.1101 | Прямий код дільника | |
1.0100 | Залишок негативний | 100 | |
0.1001 | Залишок зрушать вліво на один розряд | ||
+ | 0.1101 | Прямий код дільника | |
1.0110 | Залишок негативний | 1000 | |
0.1101 | Залишок зрушать вліво на один розряд | ||
+ | 0.1101 | Прямий код дільника | |
1.1010 | Залишок негативний | 10000 |
Одночасно обчислюється порядок приватного наступним чином:
pc = px - py = 0.011 - 0.010 = 0.001
Опис функціональної схеми пристрою.
Функціональна схема пристрою представлена на рисунку 5.
Функціональна схема реалізує схему роботи з мантиса.
Використовуваний мультиплексор 2-1 на вхід якого подається число в прямому і додатковому коді і в залежності від ситуації вибирається одне з двох чисел. У процесі роботи здійснюється контроль дільника на рівність нулю, тому використовується мультиплексор повинен мати стробований вхід.
Суматор складає числа, які прийшли з виходу мультиплексора і регістру Am, результат переписується в регістр Am, який запам'ятовує це число, зрушує його вліво у бік старших розрядів і знову передає його на суматор.
Так само старший розряд регістра подається на результуючий послідовно паралельний регістр Z, в якому відбувається накопичення результату. Після визначення результату, отримане число треба нормалізувати і тому результуючий регістр крім послідовного входу і паралельного виведення повинен здійснювати зрушення числа вліво у бік старших розрядів.
Малюнок 5
Короткий опис принципової схеми
Принципова схема пристрою представлена на рисунку 6.
Два числа надходять на суматор, який їх підсумовує і передає результат на регістр. Як суматора використовується мікросхема К555ІМ6, а як регістр К155ІР13 і К555ІР11 які відрізняються тільки розрядністю. Старший розряд регістра надходить на вхід результуючого послідовно - паралельного регістра, в якому накопичується результат. У даній схемі в якості результуючого регістра використовується мікросхема К531ІР24.
Малюнок 6
Висновок
У цій роботі було розроблено обчислювальний пристрій, що виконує наступні операції:
Знаходження абсолютного значення числа.
Розподіл чисел у форматі з плаваючою комою.
Побудований алгоритм обробки чисел. Розписані керуючі сигнали і префіксний функції. За наявному даними побудована функціональна схема пристрою. Також була побудована принципова схема зазначеній частині пристрою, в якій були використані конкретні мікросхеми. Наведено тестовий приклад виконання операцій.