Розробка обчислювального пристрою
Розробити обчислювальний пристрій, що виконує наступні операції:
зміна знака числа
поділ чисел
Числа представлені у форматі з плаваючою точкою з розрядністю 18 +6.
Опис структурної схеми пристрою з її обгрунтуванням
Структурна схема пристрою представлена на малюнку 1 b>. Вона складається з двох частин. Перша частина схеми, до складу якої входять регістри Ao і Bo і суматор, призначена для роботи з порядками чисел. Друга частина схеми, що складається з регістрів Am, Bm і Z, мультиплексора, суматора і компаратора призначена для роботи з мантиси чисел.
При виконанні операції ділення b> використовується два числа - 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.
При виконанні операції зміни знака b> використовується одне число. Число записується в регістр Bm (Y5) і подається на суматор SM в зворотному коді (Y9) і записується в регістр Am (Y3) з попереднім подсумірованіем одиниці в суматорі (Y10).
Малюнок 1
Опис блок-схеми алгоритму виконання операцій і її мікропрограмного реалізації.
Блок-схема виконання операцій представлена на малюнку 2.
На початку роботи гаситься вихідна готовність (Y14) і перевіряється вхідна готовність (P1). Після отримання сигналу вхідний готовності обнуляються регістри A o і Am (Y0), Bo і Bm (Y1) і Z (Y2). Далі перевіряється код операції (P2) для визначення подальших дій.
Операція зміни знаку числа - одна гілка.
b>
Записуємо вихідне число в регістр Bm (Y5). Передаємо на SM його зворотний код з подсуммірованіем одиниці молодшого розряду (Y10). Дані з SM записуємо в регістр Am (Y3). Після цього встановлюємо вихідну готовність (Y13) і закінчуємо роботу.
Операція поділу чисел b> - гілка два.
Проводимо запис: мантиси ділемо в регістр 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
ПЗУ А b>
Адреси пам'яті b>
Умови переходів b>
Код ПФ b>
Адреса переходів b>
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 = 1101 * 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
Висновок
У цій роботі було розроблено обчислювальний пристрій, що виконує наступні операції:
Знаходження абсолютного значення числа.
Ділення чисел у форматі з плаваючою комою.
Побудований алгоритм обробки чисел. Розписані керуючі сигнали і префіксние функції. За наявному даними побудована функціональна схема пристрою. Також була побудована принципова схема зазначеної частини пристрою, в якій були використані конкретні мікросхеми. Наведено тестовий приклад виконання операцій.