- •Прикладна теорія цифрових автоматів
- •Загальні методичні вказівки
- •Тема: Проектування спеціалізованих арифметико-логічних пристроїв
- •Методичні вказівки до виконання курсової роботи
- •Загальні відомості
- •1. Вибір схеми операційного автомату та опис його роботи.
- •2. Принципіальна схема модуля операційного блока (моб).
- •3. Приведення змістовного алгоритму виконання операції.
- •Граф-схеми мікропрограми ка.
- •5. Проектування модуля ка.
- •Структурний синтез автомата Мілі
- •Побудова схеми керуючого автомата
- •Структурний синтез автомата Мура
- •Зауваження
- •Література
- •Проектування спеціалізованих арифметико-логічних пристроїв
- •1. Реалізація операції додавання і віднімання
- •1.1. Алгоритм додавання і віднімання двійкових чисел
- •1.2. Функціональна схема алп для виконання операцій додавання і віднімання
- •1.3. Мікропрограма додавання та віднімання двійкових чисел
- •2. Реалізація операції множення
- •2.1. Алгоритм множення двійкових чисел із зсувом суми часткових добутків вправо
- •2.2. Функціональна схема алп для операції множення
- •2.3. Мікропрограма множення цілих чисел
- •2.4. Перший алгоритм множення у прямому коді.
- •2.5. Другий алгоритм множення у прямому коді.
- •2.6. Третій алгоритм множення у прямому коді.
- •2.7. Четвертий алгоритм множення у прямому коді.
- •3. Реалізація операції ділення
- •3.1. Алгоритм ділення цілих чисел
- •3.2. Функціональна схема алп для мікропрограми ділення
- •3.3. Мікропрограма ділення цілих чисел без відновлення залишку
1.3. Мікропрограма додавання та віднімання двійкових чисел
Суміщена мікропрограма додавання та віднімання двійкових чисел має вигляд:
Початок. Якщо К[1] або К[2], то М1, інакше - чекати
М1 <приймання першого операнда>
<приймання другого операнда>
Якщо К[1], то
, інакше
<пересилання з інвертуванням другого операнда>
Якщо К[1], то
, інакше
Якщо то перейти до М2, інакше
<присвоєння результату>
<пересилання результату в оперативну пам’ять>
Перейти до М3
М2 <фіксація переповнення>
М3 Кінець.
Продовження додатку
2. Реалізація операції множення
2.1. Алгоритм множення двійкових чисел із зсувом суми часткових добутків вправо
Множення двійкових чисел А і В зводиться до обчислення добутку їх модулів та присвоєння йому знака. Добуток двох n-розрядних операндів містить 2n-1 цифрових розрядів і один знаковий. Якщо перемножуються цілі числа, кома розміщується після молодшого розряду, а якщо дроби — перед старшим розрядом.
1. Множене і множник у прямих кодах послідовно записуються відповідно в регістри А і В. Регістри С і D обнуляються, У лічильник СТ записується кількість циклів.
2. Для розрядів множника 1, 2, ..., n - виконуються такі дії:
-
якщо молодша цифра множника В[1]=1, то до суми часткових добутків додається модуль множеного, інакше — не додається;
-
далі для обох випадків зміст регістрів С і В зсувається вправо на один розряд, причому молодший розряд регістра С передається в старший розряд регістра В. Після кожного зсуву в молодший розряд регістра В поступає наступний розряд множеного, за яким визначається черговий частковий добуток (нуль або множене);
-
після n-1 циклів виконується додатковий зсув вправо для передачі в тригер Т знака множника і визначається знак добутку додаванням за модулем два знаків множеного і множника.\
3. Результат подається конкатенацією чисел С і В; при цьому в регістрі С розміщуються старші розряди добутку, а в регістрі В — молодші розряди.
2.2. Функціональна схема алп для операції множення
Функціональна схема АЛП для множення цілих двійкових чисел із зсувом вправо часткових добутків містить (рис. 4):
-
регістри А і В для приймання з вхідної шини ШІ відповідно множеного та множника;
-
паралельний комбінаційний суматор SM;
-
регістр С для приймання часткової суми із SM при одиничному значенні синхросигналу;
-
регістр D для приймання і тимчасового зберігання часткової суми з регістра С при спаданні синхросигналу;
-
лічильник циклів СТ;
-
тригер Т1 для керування ключами SW1, SW2;
-
тригер Т2 для записування знака множника.
Продовження додатку
Рис. 2. Функціональна схема АЛП для множення
2.3. Мікропрограма множення цілих чисел
Початок. Якщо К[3], то М1, інакше – чекати
М1 <приймання множеного та обнулення тригерів Т1, Т2>
<приймання множника та дублювання його знака в тригері Т2>
<обнулення регістрів>
<запис кількості циклів>
М2 Якщо [1], то М3
<додавання>
<пересилання часткової суми>
М3 <однорозрядний зсув вправо>
<декремент лічильника>
Якщо , то М2, інакше
<однорозрядний зсув вліво>
<запис знака результату в регістр RGC>
Кінець.
Продовження додатку