Рисунок 1 - Структурна схема операційного автомата
Приклад: Перемножити на суматорі прямого коду починаючи з старших розрядів множника А=57, В=-923 з використанням описаного у пункті 1.3.1 алгоритму.
Розв’язання.
Спочатку запишемо машинні зображення чисел А та В в прямих кодах з заданою розрядністю:
А = 0,[0] 30...[0] 6111001; В = 1,[0] 30…[0] 111110011011
Послідовність дій, що виконуються над числами, наведена у таблиці 1.
Відповідь: 1,[0] 62…[0] 1701100110011011000.
Таблиця 1 – Приклад реалізації алгоритму множення, починаючи зі старших розрядів множника
Суматор НСМ | Регістр РгА | Регістр РгВ | Примітки |
0,[0]62…[0]1700000000000000000 | 0,[0]30...[0]6111001 | 1,[0]30…[0]111110011011 | НСМ:=0; РгА:=Швх1; РгВ:=Швх2; ЛІЧ:=29; |
1,[0]62…[0]18000000000000000000 | 0,[0]30...[0]6111001 | 1,[0]30…[0]121110011011_ | НСМ[63]:=1; РгВ[30]=0; L1.РгВ[0:30]; ЛІЧ:=28; L1.НСМ[0:62]; НСМ[0]:=0; |
1,[0]62…[0]1700000000000000000 | 0,[0]30...[0]6111001 | 1,01110011011[ _ ] 19…[ _ ] 0 | РгВ[30]=0; L1.РгВ[0:30]; L1.НСМ[0:62]; НСМ[0]:=0; ЛІЧ:=10; |
1,[0]62…[0]1700000000000000000 1,[0]62…[0]1700000000000111001 1,[0]62…[0]1700000000001110010 | 0,[0]30...[0]6111001 | 1,1110011011[_] 20…[_] 0 | РгВ[30]=1; НСМ:=НСМ+РгА; L1.РгВ[0:30]; L1.НСМ[0:62]; НСМ[0]:=0; ЛІЧ:=9; |
1,[0]62…[0]1700000000001110010 1,[0]62…[0]1700000000010101011 1,[0]62…[0]1700000000101010110 | 0,[0]30...[0]6111001 | 1,110011011[_] 21…[_] 0 | РгВ[30]=1; НСМ:=НСМ+РгА; L1.РгВ[0:30]; L1.НСМ[0:62]; НСМ[0]:=0; ЛІЧ:=8; |
1,[0]62…[0]1700000000101010110 1,[0]62…[0]1700000000110001111 1,[0]62…[0]1700000001100011110 | 0,[0]30...[0]6111001 | 1,10011011[_] 22…[_] 0 | РгВ[30]=1; НСМ:=НСМ+РгА; L1.РгВ[0:30]; L1.НСМ[0:62]; НСМ[0]:=0; ЛІЧ:=7; |
1,[0]62…[0]1700000001100011110 1,[0]62…[0]1700000011000111100 | 0,[0]30...[0]6111001 | 1,0011011[_] 23…[_] 0 | РгВ[30]=0; L1.РгВ[0:30]; L1.НСМ[0:62]; НСМ[0]:=0; ЛІЧ:=6; |
1,[0]62…[0]1700000011000111100 1,[0]62…[0]1700000110001111000 | 0,[0]30...[0]6111001 | 1,011011[_] 24…[_] 0 | РгВ[30]=0; L1.РгВ[0:30]; L1.НСМ[0:62]; НСМ[0]:=0; ЛІЧ:=5; |
1,[0]62…[0]1700000110001111000 1,[0]62…[0]1700000110010110001 1,[0]62…[0]1700001100101100010 | 0,[0]30...[0]6111001 | 1,11011[_] 25…[_] 0 | РгВ[30]=1; НСМ:=НСМ+РгА; L1.РгВ[0:30]; ЛІЧ:=4; L1.НСМ[0:62]; НСМ[0]:=0; |
1,[0]62…[0]1700001100101100010 1,[0]62…[0]1700001100110011011 1,[0]62…[0]1700011001100110110 | 0,[0]30...[0]6111001 | 1,1011[_] 26…[_] 0 | РгВ[30]=1; НСМ:=НСМ+РгА; L1.РгВ[0:30]; ЛІЧ:=3; L1.НСМ[0:62]; НСМ[0]:=0; |
1,[0]62…[0]1700011001100110110 1,[0]62…[0]1700110011001101100 | 0,[0]30...[0]6111001 | 1,011[_] 27…[_] 0 | РгВ[30]=0; L1.РгВ[0:30]; L1.НСМ[0:62]; НСМ[0]:=0; ЛІЧ:=2; |
1,[0]62…[0]1700110011001101100 1,[0]62…[0]1700110011010100101 1,[0]62…[0]1701100110011011000 | 0,[0]30...[0]6111001 | 1,11[_] 28…[_] 0 | РгВ[30]=1; НСМ:=НСМ+РгА; L1.РгВ[0:30]; ЛІЧ:=1; L1.НСМ[0:62]; НСМ[0]:=0; |
1,[0]62…[0]1701100110011011000 1,[0]62…[0]1701100110110000011 1,[0]62…[0]1711001100110110000 | 0,[0]30...[0]6111001 | 1,1[_] 29…[_] 0 | РгВ[30]=1; НСМ:=НСМ+РгА; L1.РгВ[0:30]; ЛІЧ:=0; L1.НСМ[0:62]; НСМ[0]:=0; |
1,[0]62…[0]1711001100110110000 1,[0]62…[0]1701100110011011000 | 0,[0]30...[0]6111001 | 1,1[_] 29…[_] 0 | R1.НСМ[0:62]; Швих:=НСМ[0:63] |
Керуючий автомат (КА) генерує послідовність керуючих сигналів, яка передбачена мікропрограмою і відповідає значенням логічних умов. Інакше кажучи, керуючий автомат задає порядок виконання дій в операційному автоматі, який виходить з алгоритму виконання операцій. Найменування операції, яку необхідно виконувати у пристрої, визначається кодом операції. По відношенню до керуючого автомату сигнали коду операції, за допомогою яких кодується найменування операції, і повідомлювальні сигнали х1,...,хi, які формуються в операційному автоматі, грають однакову роль: вони впливають на порядок генерування керуючих сигналів y. Тому сигнали коду операції і умовні сигнали відносяться до одного класу – до класу повідомлювальних сигналів, які поступають на вхід керуючого автомату.
В основі опису керуючих автоматів лежить принцип мікропрограмного керування. Він полягає в тому що будь-яка операція розглядається як складна що містить більш прості операції які називаються мікроопераціями тобто кожна операція – це визначена послідовність мікрооперацій.
Існують два основні типи керуючих автоматів
1. Керуючий автомат з жорсткою чи схемною логікою. Для кожної операції будується набір комбінаційних схем які в потрібних тактах збуджують відповідні керуючі сигнали. Іншими словами будується скінчений автомат в якому необхідна множина станів представляється станами k запам’ятовуючих елементів
q = {q1 q2, …, qk}
2. Керуючий автомат з збереженою в пам’яті логікою (програмованою логікою). Кожній операції що виконується в операційному пристрої ставиться у відповідність сукупність збережених в пам’яті слів-мікрокоманд кожна з яких містить інформацію про мікрооперації що підлягають виконанню на протязі одного машинного такту та вказівку (яка в загальному випадку залежить від значень вхідних сигналів) яке повинно бути вибране з пам’яті наступне слово (наступна мікрокоманда). Таким чином в цьому випадку функції переходів та виходів А та В керуючого автомату реалізуються збереженою в пам’яті сукупністю мікрокоманд.
Послідовність мікрокоманд що виконують одну машинну команду чи окрему процедуру створює мікропрограму. Звичайно мікропрограми зберігаються в спеціальній пам’яті мікропрограм (керуючій пам’яті).
В керуючих автоматах з збереженоюю в пам’яті програмою мікропрограми використовуються в явній формі вони програмуються в кодах мікрокоманд і в такому вигляді заносяться в пам’ять. Тому такий метод управління цифровим пристроєм називається мікропрограмуванням а керуючі блоки що використовують цей метод - мікропрограмними керуючими пристроями.
В залежності від прийнятого способу кодування мікрооперацій розрізняють три варіанти організації мікропрограмного керування горизонтальне вертикальне та комбіноване мікропрограмування. При горизонтальному мікропрограмуванні для кожної мікрооперації виділяється один розряд у мікрокоманді. При такому кодуванні всі операції що виконуються одночасно визначаються одиницями у відповідних розрядах однієї мікрокоманди. Код операції задає адресу першої мікрокоманди в мікропрограмі. Адреси наступних мікрокоманд визначаються за принципом примусової адресації згідно цього мікрокоманда складається з двох частин-мікроопераційної та адресної. Основною перевагою горизонтального мікропрограмування є висока швидкодія як за рахунок простоти та можливості одночасної генерації довільного числа сигналів мікрооперацій так і за рахунок швидкого формування адреси наступної мікрокоманди. Однак при горизонтальному мікропрограмуванні довжина поля мікрооперації повинна бути не менша за максимальну кількість несумісних мікрооперацій тобто вимагаються довгі формати мікрокоманд та комірки запам’ятовуючого пристрою що призводить до значних витрат обладнання. Крім того лише невелике число розрядів в полі мікрооперації буде містити одиниці тобто запам’ятовуючий пристрій буде використовуватись неефективно.
Скоротити довжину мікрокоманд дозволяє застосування вертикального мікропрограмування при якому кожна мікрооперація кодується ]log2 n[ - розрядним кодом де n – загальна кількість мікрооперацій. Таке кодування накладає обмеження на методи виконання операцій а саме не повинно бути операцій що потребують одночасного виконання ряда мікрооперацій. В тих випадках коли це обмеження виконати неможливо треба використовувати складні мікрооперації що складаються з сукупності простих.
За способом формування функції виходів виділяють три типи абстрактних автоматів: автомат Мілі, автомат Мура та С-автомат.