Смекни!
smekni.com

Розробка операційного та керуючого автомату що виконує операцію прискореного множення (стр. 1 из 2)

Курсовий проект на тему:

«Розробка операційного та керуючого автомату, що виконує операцію прискореного множення»


Вступ

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

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

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

Необхідно відмітити, що принципи побудови і методи проектування операційних і керуючих автоматів є тією основою, на якій базується теорія і практика проектування більшої частини пристроїв ЕОМ.


1. Розробка операційного автомату

1.1 Метод виконання операції прискореного множення

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

Стосовно двійкової системи числення найбільш відомі наступні основні способи виконання операції множення: множення, починаючи з молодших розрядів множника; множення, починаючи з старших розрядів множника.

В обох випадках операція множення складається з ряду послідовних операцій додавання часткових добутків. Операціями додавання керують розряди множника: якщо в деякому розряді множника знаходиться одиниця, то до суми часткових добутків додається множене з відповідним зсувом, якщо в розряді множника – нуль, то множене не додається.

Якщо розрядність чисел значна то процес множення може потребувати значного часу, тому існують різні методи прискорення операції множення. Зокрема існують такі методи:

1) Прискорення за рахунок заміни комбінацій цифр. Наприклад: комбінації 00, 01 і 10 не перетворюються, а комбінація 11 замінюється на 01 і 1 йде в наступний розряд. При виконані множення, якщо в деякому розряді множника знаходиться 1, то до суми часткових добутків додається множене з відповідним зсувом, а якщо 1, то до суми часткових добутків додається доповняльний код множеного з відповідним зсувом.

2) Множення з запам’ятовуванням переносів: додаються три часткові добутки без розповсюдження переносу і формується проміжна сума і проміжний перенос; додаються без розповсюдження переносу проміжну суму, проміжний перенос та наступний частковий добуток, формується чергова проміжна сума і проміжний перенос; аналогічні дії виконуються до тих пір, поки не виконається додавання останнього часткового добутку; останній крок додавання з розповсюдженням переносу проміжної суми та проміжного переносу.

3) Прискорення множення при поділенні множника на дві частини: якщо множник має парну кількість розрядів, його ділять на дві рівні частини, відбувається множення множеного на число в два разу меншої розрядності ніж у В, отриманні добутки додаються з врахуванням зсуву.

В даній курсовій роботі будемо використовувати метод множення з запам’ятовуванням переносів, розглянемо його більш детально:

Множимо числа з фіксованою комою в доповняльному коді. Множення виконується з врахуванням знакового розряду, якщо В>0 то виконуємо множення, якщо В<0 то робимо корегуючі дії: додаємо доповнений код числа А. Додаємо також ще два часткові добутки (з врахуванням зсуву) без розповсюдження переносу і формуємо проміжну суму і проміжний перенос.

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

Останній крок: додавання з розповсюдженням переносу проміжної суми та проміжного переносу.

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

1.2 Розробка алгоритму


Згідно обраного методу виконання множення побудуємо блок схему алгоритму:



Описання блок-схеми алгоритму

Спочатку виконуємо ініціалізацію:

- в суматор заносимо 0;

- в регістр Рг1 заносимо 0;

- в регістр Рг2 заносимо 0;

- в регістр Рг3 заносимо 0;

- в лічильник n заносимо 8;

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

- в регістр РгВ заносимо доповняльний код числа В;

Перевіряємо знак числа В (РгВ[0]), якщо він рівний 1 (від’ємне) то в

регістр Рг1 заносимо доповняльний код числа А. Зсуваємо регістр РгА вправо на один розряд. Дивимося на старший розряд числа В (РгВ[1]), якщо там 1 то заносимо в регістр Рг2 значення регістра РгА (першій частковий добуток). Зсуваємо регістр РгА вправо на один розряд. Дивимося на другий розряд числа В (РгВ[2]), якщо там 1 то заносимо в регістр Рг3 значення регістра РгА (другий частковий добуток). Зсуваємо регістр РгА вправо на один розряд. Додаємо в суматорі значення з регіс-трів Рг1, Рг2, Рг3 та формуємо проміжну суму та проміжний перенос Р. Зсуваємо регістр РгВ вліво на два розряди. Зменшуємо значення лічильника на 2.

Далі починаємо цикл:

Поки n не дорівнює 0 дивимося на старший розряд числа В (РгВ[1]), якщо там одиниця додаємо до суматора (попередня проміжної суми) вміст регістра РгА (черговий частковий добуток) та попередній проміжний перенос Р, якщо ж 0, то додаємо лише попередній проміжний перенос Р; формуємо чергову проміжну суму та проміжний перенос. Зсуваємо регістр РгА вправо на один розряд. Зсуваємо регістр РгВ вліво на один розряд. Зменшуємо значення лічильника на 1. Повторюємо цикл.

Після закінчення циклу додаємо до суматора (останньої проміжної суми), з розповсюдженням переносу, останній проміжний перенос Р. Дивимося на знак результату (СМ[0]), якщо там 1 (результат від’ємний), перетворюємо доповняльний код в прямий: інвертуємо суматор і додаємо 1. Операцію множення виконано результат знаходиться в суматорі.

1.3 Приклад множення

Візьмемо для прикладу помноження два числа:

A=0,69140625 та B= -0,80078125.

Переведемо ці числа в двійкову систему числення:

А2=0.10110001; Адоп=0.10110001;

В2=1.11001101; Вдоп=1.00110011.

Розглянемо приклад помноження цих чисел, за допомогою алгоритму:

СМ РгB ПРИМІТКИ
0.00000000000000001.01001111+0.0000000000.0000000000 1.001100111.110011_ _1.10011_ _ _1.0011_ _ _ _1.011_ _ _ _ _1.11_ _ _ _ _ _1.1_ _ _ _ _ _ _ СM:=0;Рг1:=Адоп;СМ:=Рг1+Рг2+Рг3;
1.0100111100000000 +0.00000000000000000.00010110001 форм. пром. суму і пер. РРгВ¬2; РгА®1;СМ:=СМ+РгА+Р;
1.0101100100100000+0.00001100000000000.000010110001 форм. пром. суму і пер. РРгВ¬1; РгА®1;СМ:=СМ+РгА+Р;
1.0101111000110000+0.00010010000000000.0000000000000 форм. пром. суму і пер. РРгВ¬1; РгА®1;СМ:=СМ+Р;
1.0100110000110000+0.00100100000000000.00000000000000 форм. пром. суму і пер. РРгВ¬1; РгА®1;СМ:=СМ+Р;
1.0110100000110000+0.00001000000000000.000000010110001 форм. пром. суму і пер. РРгВ¬1; РгА®1;СМ:=СМ+РгА+Р;
1.0110000101010010+0.00010000010000000.0000000010110001 форм. пром. суму і пер. РРгВ¬1; РгА®1;СМ:=СМ+РгА+Р;
1.0111000110100011+0.0000000010100000 СМ:=СМ+Р;
1.01110010010000111.1000110110111101
СМ:=СМ+1;

В результаті отримали відповідь:

А*В=1.10001101101111012= – 0,553665161133;

2. Синтез керуючого автомату

2.1 Теоретичні відомості

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

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

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

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