Курсовий проект на тему:
«Розробка операційного та керуючого автомату, що виконує операцію прискореного множення»
Вступ
У наш час, з розвитком науково-технічного прогресу розвивається і обчислювальна техніка, що сприяє більшому удосконаленню. Обчислювальна техніка займає не останнє місце і грає визначальну роль в науковому технічному прогресі, сприяє підвищенню ефективності виробництва, покращанню якості продукції, росту продуктивності праці.
ЕОМ відкрили нову сторінку в історії людських знань і можливостей, звільнили тисячі обчислювачів, значно полегшили працю вчених, дали можливість вивчати найскладніші процеси.
В основу проектування операційних пристроїв різноманітного призначення покладено принцип функціонування мікропрограмування. Пристрої проектуються, як композиція операційного і керуючого автоматів. Мікропрограмування – це спосіб опису функцій операційних пристроїв незалежно від технічних засобів, які використовуються для їх реалізації. Таке тлумачення мікропрограми дозволяє синтезувати структуру будь-яких операційних пристроїв незалежно від способу керування роботою пристрою.
Необхідно відмітити, що принципи побудови і методи проектування операційних і керуючих автоматів є тією основою, на якій базується теорія і практика проектування більшої частини пристроїв ЕОМ.
1. Розробка операційного автомату
1.1 Метод виконання операції прискореного множення
В даній курсовій роботі розглядається операція прискореного множення в доповняльному коді, зі старших розрядів.
Стосовно двійкової системи числення найбільш відомі наступні основні способи виконання операції множення: множення, починаючи з молодших розрядів множника; множення, починаючи з старших розрядів множника.
В обох випадках операція множення складається з ряду послідовних операцій додавання часткових добутків. Операціями додавання керують розряди множника: якщо в деякому розряді множника знаходиться одиниця, то до суми часткових добутків додається множене з відповідним зсувом, якщо в розряді множника – нуль, то множене не додається.
Якщо розрядність чисел значна то процес множення може потребувати значного часу, тому існують різні методи прискорення операції множення. Зокрема існують такі методи:
/>/>1) Прискорення за рахунок заміни комбінацій цифр. Наприклад: комбінації 00, 01 і 10 не перетворюються, а комбінація 11 замінюється на 01 і 1 йде в наступний розряд. При виконані множення, якщо в деякому розряді множника знаходиться 1, то до суми часткових добутків додається множене з відповідним зсувом, а якщо 1, то до суми часткових добутків додається доповняльний код множеного з відповідним зсувом.
2) Множення з запам’ятовуванням переносів: додаються три часткові добутки без розповсюдження переносу і формується проміжна сума і проміжний перенос; додаються без розповсюдження переносу проміжну суму, проміжний перенос та наступний частковий добуток, формується чергова проміжна сума і проміжний перенос; аналогічні дії виконуються до тих пір, поки не виконається додавання останнього часткового добутку; останній крок додавання з розповсюдженням переносу проміжної суми та проміжного переносу.
3) Прискорення множення при поділенні множника на дві частини: якщо множник має парну кількість розрядів, його ділять на дві рівні частини, відбувається множення множеного на число в два разу меншої розрядності ніж у В, отриманні добутки додаються з врахуванням зсуву.
В даній курсовій роботі будемо використовувати метод множення з запам’ятовуванням переносів, розглянемо його більш детально:
Множимо числа з фіксованою комою в доповняльному коді. Множення виконується з врахуванням знакового розряду, якщо В>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.0000000000000000
1.01001111
+0.000000000
0.0000000000
1.00110011
1.110011_ _
1.10011_ _ _
1.0011_ _ _ _
1.011_ _ _ _ _
1.11_ _ _ _ _ _
1.1_ _ _ _ _ _ _–PAGE_BREAK—-PAGE_BREAK–
стан
Код
Т4Т3Т2Т1
Вхідні
сигнали
Вихідні
сигнали
/>a10
1010
a1
0001
X5
X5
Y14
Y15
/>a1
0001
a2
0010
Y1
a2
0010
a3
0011
X1
Y2
/>a2
a3
0010
0011
a4
0100
X1
Y3
Y3
a4
0100
a5
0101
X2
Y4
/>/>a4
a5
0100
0101
a6
0110
X2
Y3
Y3
a6
0110
a7
0111
X3
Y5
/>/>/>a6
a7
a9
0110
0111
1001
a8
1000
X3
Y3Y6Y7Y8
Y3Y6Y7Y8
Y3Y11Y12
/>/>/>a8
1000
a9
1001
X4X2
X4X2
Y9
Y10
a8
1000
a10
1010
X4
Y13 продолжение
–PAGE_BREAK–
2.5 Синтез схеми керуючого автомату
На основі таблиці функціонування складаємо рівняння збудження тригерів:
Для вхідних сигналів:
/>DT1 = a10 + a2 x1 + a4 x2 + a6x3 + a8x4;
/>DT2 = a1 + a2 x1 + a4 x2+ a5 + a6x3 + a8 x4;
/>DT3 = a2 x1 + a3 + a4 +a5 + a6x3;
/>DT4 = a7 + a6x3 + a9+ a8;
Для вихідних сигналів:
y1 = a1;
y2 = a2x1;
/>/>/>y3 = a2x1+a3+a4x2+a5+a6x3+a7+a9;
y4 = a4x2;
y5 = a6x3;
/>y6 =a6x3+a7;
/>y7 = a6x3+a7;
/>y8 = a6x3+a7;
/>y9 = a8x4x2;
/>/>y10= a8x4x2;
y11= a9;
y12= a9;
y13= a8x4;
y14= a10x5;
/>y15= a10x5.
На основі цих рівнянь синтезуємо схему керуючого автомату. Для зручності побудови використаємо шину. Оскільки автомат має 10 станів, для кодування яких потрібно 4 двійкових розряди то для побудови схеми використаємо 4 D-тригера з керуючими тактовими входами.
2.6 Побудова структурної схеми автомату
Побудуємо також структурну схему автомату:
Висновок
В курсовій роботі було розроблено алгоритм та синтезовано автомат Мілі для виконання операція прискореного множення чисел в доповняльному коді, з фіксованою комою, зі старших розрядів.
У першому розділ курсової роботи було розроблено алгоритм виконання вказаної операції над числами.
Друга частина – присвячена розробці автомата Мілі: побудова граф схеми автомата, побудова таблиці переходів, синтез керуючого автомата і побудова структурної схеми автомата.
Використана література
1. А.Я. Савльев «Прикладна теория цифрових автоматів» – Москва В. Шк. – 1987.
2. Методичні вказівки до вивчення курсу «Прикладна теорія цифрових автоматів» – Вінниця ВДТУ-1997.
3. Каган Б.М. «Электронные вычислительные машины и системы». Москва Энергоатомиздат 1991 г. с. 592
4. Методические указания к практическим занятиям по курсу «Теория и проектирование ЦВМ» – Винница ВПИ-1982.
5. К.Г. Самофалов «Цифровые ЭВМ» – ВШ – 1989.