Розробка операційного та керуючого автомату що виконує операцію прискореного множення
Курсовий проект на тему:
«Розробка операційного та керуючого автомату, що виконує операцію прискореного множення»
Вступ
У наш час, з розвитком науково-технічного прогресу розвивається і обчислювальна техніка, що сприяє більшому удосконаленню. Обчислювальна техніка займає не останнє місце і грає визначальну роль в науковому технічному прогресі, сприяє підвищенню ефективності виробництва, покращанню якості продукції, росту продуктивності праці.
ЕОМ відкрили нову сторінку в історії людських знань і можливостей, звільнили тисячі обчислювачів, значно полегшили працю вчених, дали можливість вивчати найскладніші процеси.
В основу проектування операційних пристроїв різноманітного призначення покладено принцип функціонування мікропрограмування. Пристрої проектуються, як композиція операційного і керуючого автоматів. Мікропрограмування – це спосіб опису функцій операційних пристроїв незалежно від технічних засобів, які використовуються для їх реалізації. Таке тлумачення мікропрограми дозволяє синтезувати структуру будь-яких операційних пристроїв незалежно від способу керування роботою пристрою.
Необхідно відмітити, що принципи побудови і методи проектування операційних і керуючих автоматів є тією основою, на якій базується теорія і практика проектування більшої частини пристроїв ЕОМ.
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;
РгВ:=Вдоп;
РгА[0:8]:=Aдоп;
n:=8;
РгВ[0]=1
Рг1:=Адоп
0
РгА:=R1[РгA]
РгВ[1]=1
Рг2:=Адоп
РгА:=R1[РгA]
РгВ[2]=1
Рг3:=Адоп
0
РгА:=R1[РгA]
1.
1
1
1
Згідно обраного методу виконання множення побудуємо блок схему алгоритму:
0
Кінець
0
1.
CM:=Рг1+Рг2+Рг3
Формуемо проміжну суму і проміжний перенос Р
РгВ:=L2[РгВ]
n:=n-2
k = n
1
РгВ[1]=1
CM:=CМ+Р+РгА
Формуемо проміжну суму і проміжний перенос Р
0
CM:=СМ+Р
Формуемо проміжну суму і проміжний перенос Р
РгА:=R1[РгA]
РгВ:=L1[РгВ]
n:=n-1
1
СМ:=СМ+Р
1
РгВ[1]=1
0
СМ:=СМ+1
Описання блок-схеми алгоритму
Спочатку виконуємо ініціалізацію:
в суматор заносимо 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_ _ _ _ _ _ _
СM:=0;
Рг1:=Адоп;
СМ:=Рг1+Рг2+Рг3;
1.0100111100000000 +0.0000000000000000
0.00010110001
форм. пром. суму і пер. Р
РгВ2; РгА1;
СМ:=СМ+РгА+Р;
1.0101100100100000
+0.0000110000000000
0.000010110001
форм. пром. суму і пер. Р
РгВ1; РгА1;
СМ:=СМ+РгА+Р;
1.0101111000110000
+0.0001001000000000
0.0000000000000
форм. пром. суму і пер. Р
РгВ1; РгА1;
СМ:=СМ+Р;
1.0100110000110000
+0.0010010000000000
0.00000000000000
форм. пром. суму і пер. Р
РгВ1; РгА1;
СМ:=СМ+Р;
1.0110100000110000
+0.0000100000000000
0.000000010110001
форм. пром. суму і пер. Р
РгВ1; РгА1;
СМ:=СМ+РгА+Р;
1.0110000101010010
+0.0001000001000000
0.0000000010110001
форм. пром. суму і пер. Р
РгВ1; РгА1;
СМ:=СМ+РгА+Р;
1.0111000110100011
+0.0000000010100000
СМ:=СМ+Р;
1.0111001001000011
1.1000110110111101
СМ:=СМ+1;
В результаті отримали відповідь:
А*В=1.10001101101111012= – 0,553665161133;
2. Синтез керуючого автомату
2.1 Теоретичні відомості
Як такого конкретного визначення автомату не має, цей термін використовується в двох аспектах: автомат – як пристрій, виконуючий деякі функції, без участі людини; з другого боку, автомат як математичне поняття – математична модель реальних технічних автоматів.
Автомат називається скінченим, якщо множина його внутрішнього стану та множина значень вхідних сигналів – скінчена множина. В практиці часто використовується поняття цифрового автомату, під яким сприймають пристрій, призначений для перетворення цифрової інформації.
Автомат задається трьома алфавітами і двома функціями (функція переходів та функція виходів), одним початковим станом. Поняття стану автомату використовується для описання систем, виходи яких залежать не тільки від вхідних сигналів в даний момент часу, але і від деяких сигналів, які поступили на входи системи раніше. Функція переходів – це залежність нового стану від попереднього та вхідних сигналів. Функція виходів – залежність вихідного сигналу від вхідного та попереднього стану.
Закон функціонування управляючого автомату можна описати у вигляді списку переходів автомата. Так, закон функціонування автомата можна представити у вигляді таблиці з такими розділами: номер переходу, вихідний стан, його код, наступний стан, його код, вхідний набір, вихідний набір, сигнали збудження. Цей список переходів дозволяє компактно і наочно зобразити закон функціонування автоматів. Перемикання автомата з одного стана в інший виконується шляхом зміни стану запам’ятовуючих елементів, які переключають сигнали збудження.
Керуючі автомати з жорсткою логікою будуються на базі логічних й запам’ятовуючих елементів, які об’єднуються в логічну схему, яка функціонує в відповідності з заданим законом.
Розрізняється два типи автоматів: Мура і Мілі. Мура простіший в розумінні, Мілі – складніший, при реалізації – навпаки. У Мура Вихідні сигнали пов’язані тільки зі станами, для Мілі вихідні сигнали залежать як від станів, так і від вхідних сигналів.
Коли графік програми позначають станами, то для Мура станами позначають операційні вершини, для Мілі – зв’язки між операційними вершинами так, щоб витратити якомога менше станів, причому, щоб кожна операційна вершина знаходилась між двома станами, і між двома операційними вершинами був стан.
2.2 Розробка алгоритму роботи автомату
Початок
Y1
a1
X1
Y2
0
Y3
X2
Y4
Y3
X3
Y5
0
Y3
1.
1
1
1
0
a3
a2
a6
a7
a5
a4
Перейдемо від блок-схеми алгоритму до блок-схеми автомата позначивши станами зв’язки між операційними вершинами так, щоб витратити якомога менше станів, причому, щоб кожна операційна вершина знаходилась між двома станами, і між двома операційними вершинами був стан.
Кінець
0
1.
Y6
Y7
Y8
X4
1
X2
Y9
0
Y10
Y3
Y11
Y12
1
Y13
1
X5
0
Y14
Y15
a10
a1
a9
a8
Позначаємо через X умовні вершини, якщо зустрічаються однакові умовні вершини, то і їх позначаємо однаково. Отримали всього 5 різних умовних вершин.
Через Y позначимо операції, якщо зустрічаються однакові операції, то вони теж позначаються однаково. Якщо між операціями немає умовної вершини то їх об’єднуємо в одну операційну вершину і між ними не ставиться стан. Кількість розставлених станів дорівнює 10, для їх кодування використаємо 4 двійкових розрядів.
2.3 Побудова графа автомата
Наступним кроком у синтезі керуючого автомату є перехід до графу автомата. Якщо станам поставити в відповідність вершини графа, а шляхам переходу від одного стану до іншого через умовні та операційні вершини – дуги (з цієї вершини в наступну), які відмічені набором значень вхідних та вихідних сигналів, то отримаємо граф який буде визначати закон функціонування автомата Мілі. Відмітимо, що дуги на графі автомата відмічаються тільки тими вхідними сигналами, які визначають можливість переходу між станами, і тими вихідними сигналами, які в даній ситуації приймають відповідне значення.
a10
a1
a3
a2
a4
a5
a6
a7
a9
a8
Y3
Y1
Х1Y2
Х1Y3
Y3
Х2Y4
Х2Y3
Х3Y15
Х3Y14
Х4Y13
Х3Y5
Х4 Х2Y9
Х3 Y3Y6Y7Y8
Y3Y6Y7Y8
Y3Y11Y7
Х4 Х2Y9
2.4 Побудова таблиці функціонування
Таблиця функціонування – це таблиця переходів. В ній кожна стрічка це перехід між станами автомата, де вказується попередній стан, його код, наступний стан і його код, вхідні сигнали, які викликають цей перехід, вихідні сигнали, які пов’язані з цим переходом, сигнали збудження входів запам’ятовуючих елементів (тригерів).
Автомат вказаний на графі має 10 станів, для їх кодування використовуємо 4 двійкових розряди, тому потрібно 4 тригера. Закодуємо стани автомата таким чином: а1 = 0001, а2 = 0010, а3 = 0011, а4 =0100, а5 = 0101, а6 = 0110, а7= 0111, а8 = 1000, а9 = 1001, а10 = 1001.
Попередній
стан
Код
Т4Т3Т2Т1
Наступний
стан
Код
Т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
Y3 Y6 Y7 Y8
Y3 Y6 Y7 Y8
Y3 Y11 Y12
a8
1000
a9
1001
X4 X2
X4 X2
Y9
Y10
a8
1000
a10
1010
X4
Y13
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 Побудова структурної схеми автомату
Побудуємо також структурну схему автомату:
0 1 РГ А 1 16
0 1 РГ B 2 1 8
0 1 СМ 16
0 1 РГ 3 16
0 1 РГ 2 16
0 1 РГ1 16
1 n 8
Y1
Y1
Х1
Адоп
Вдоп
Y1
Y2
Y4
Y5
Y3
Y6
Y1
Y8
Y12
Y9
Y13
Y10
Y11
Y7
Y14
Х2
Х3
Х5
Висновок
В курсовій роботі було розроблено алгоритм та синтезовано автомат Мілі для виконання операція прискореного множення чисел в доповняльному коді, з фіксованою комою, зі старших розрядів.
У першому розділ курсової роботи було розроблено алгоритм виконання вказаної операції над числами.
Друга частина – присвячена розробці автомата Мілі: побудова граф схеми автомата, побудова таблиці переходів, синтез керуючого автомата і побудова структурної схеми автомата.
Використана література
1. А.Я. Савльев «Прикладна теория цифрових автоматів» – Москва В. Шк. – 1987.
2. Методичні вказівки до вивчення курсу «Прикладна теорія цифрових автоматів» – Вінниця ВДТУ-1997.
3. Каган Б.М. «Электронные вычислительные машины и системы». Москва Энергоатомиздат 1991 г. с. 592
4. Методические указания к практическим занятиям по курсу «Теория и проектирование ЦВМ» – Винница ВПИ - 1982.
5. К.Г. Самофалов «Цифровые ЭВМ» – ВШ – 1989.
Нравится материал? Поддержи автора!
Ещё документы из категории информатика:
Чтобы скачать документ, порекомендуйте, пожалуйста, его своим друзьям в любой соц. сети.
После чего кнопка «СКАЧАТЬ» станет доступной!
Кнопочки находятся чуть ниже. Спасибо!
Кнопки:
Скачать документ