- •Розділ 3. Основи теорії скінченних автоматів
- •3.1. Логічні функції
- •3.2. Приклади логічних функцій
- •3.3 Зв'язок логічних функцій і функціональних схем
- •3.4. Канонічне представлення логічних функцій
- •3.5. Задача мінімізації логічних функцій
- •3.6. Основні поняття теорії скінченних автоматів
- •3.7. Абстрактна і структурна теорії скінченних автоматів
- •3.8. Зіставлення скінченних автоматів
- •3.9. Синхронні мережі з автоматів
- •3.10. Приклад синтезу скінченного автомата
- •Перетворимо вихідну таблицю в спеціальну форму з виділенням вхідних-вихідних сигналів і внутрішніх станів.
- •3.11. Програмна реалізація логічних функцій і автоматів
3.11. Програмна реалізація логічних функцій і автоматів
Представлення автомата схемою з елементів - це історично перший і найбільше досліджуваний вид структурної реалізації автомата. Інший її вид - реалізація автомата програмою. Тут ми обмежимося питаннями програмної реалізації комбінаційних логічних автоматів, тобто систем логічних функцій.
Під програмою будемо розуміти пронумеровану послідовність команд k1, … , ks, узятих із деякого фіксованого набору (системи команд). Програма працює над скінченною множиною пронумерованих (або пойменованих ) двійкових елементів. Номер (або ім'я ) елемента називається його адресою ; ім'ям елемента часто буде служити ім'я логічної змінної, значення якої зберігаються в цьому елементі.
Система команд містить команди-оператори вигляду b:=f(a1, … , ap) (виконати операцію над вмістом елементів a1, … , ap і результат покласти в елемент b ) і двоадресні умовні переходи двох видів: 1) “якщо а, то i, інакше j ”( якщо a = 1, то перейти до виконання команди kί, інакше перейти до kj ) ; 2 ) ” якщо ā ( a = 0 ) , то i , інакше j ”. Операція f ( a1 , . . ., ap ) - це логічна функція p змінних , зокрема, вона може бути константою 0 або 1. Якщо j - номер такої команди, то перехід можна вважати одноадресним : ” якщо a, то i, ( інакше перейти до наступної команди ) ”, а якщо i = j, то, безумовно, ” перейти до i “. Довільна з команд зазначених типів може бути заключною, що вказується словом ” кінець “.
Процесом обчислення програми k1, . . ., ks називається послідовність кроків k ( 1 ), k ( 2 ), . . ., k ( t ), на кожному з яких виконується одна команда програми. Ця послідовність визначається так : 1) k ( 1) = k1; 2) якщо k (1) = kr - оператор, то k ( i + 1 ) = kr+1 ; 3) якщо k ( 1) - умовний перехід, то номер команди k ( i + 1 ) вказується цим переходом; 4) якщо k ( i ) - заключна команда, то процес обчислення зупиняється після її виконання. Число t називається часом її виконання.
Програма П обчислює (або реалізує) логічну функцію f ( х1 , … , хn )= у, якщо для будь-якого двійкового набору σ = ( σ 1 , . . . , σ n ) при початковому стані пам'яті х1 = σ 1 , х2 = σ 2, . . ., хn = σ n (стан інших елементів несуттєвий ) програма через скінченне число кроків зупиняється, і при цьому в елементі у лежить величина f ( σ 1 , . . . , σ n).
Якщо під складністю схеми, що реалізує автомат, звичайно розуміється число елементів у схемі, то складність програми можна розуміти в різноманітних змістах: 1) число команд у тексті програми; 2) обсяг проміжної пам'яті, тобто число елементів для збереження проміжних результатів обчислень; 3) час обчислення, що буде характеризуватися двома величинами: середнім часом tср (П) =1/2n τр(σ) і максимальним часом tмакс(П) = max τр(σ), де сума і максимум беруться по всіх 2n двійковим набором σ, а τр - час роботи програми П на наборі σ.
Будь-якій схемі, що реалізує функцію f і містить N елементів, неважко поставити у відповідність програму, яка реалізує f і складається з N команд, у такий спосіб. Занумеруємо елементи схеми числами 1, 2, . . ., n так, щоб на будь-якому шляху від входу до виходу номери елементів зростали; при цьому номер 1 одержить один із вхідних елементів, а номер n - вихідний елемент. Нехай елемент еί схеми реалізує функцію φ ί і до його входів приєднані виходи елементів еj1, . . ., еjp ( деякі з них, можливо, є входами схеми). Поставимо елементу еί у відповідність або елемент аί і команду аί = φί ( аj1 , . . ., аjp ), якщо ί ≠ N; або елемент у і команду << у : = φ N( аj1, . . ., аjp ) кінець >>, якщо ί = N. Одержимо програму, що не містить умовних переходів ( такі програми будемо називати операторними ), в якій порядок команд точно відповідає нумерації елементів у схемі, а система команд - базису схеми.
Проблеми синтезу операторних програм, в основному, зводяться до проблем синтезу схем, зокрема, питання функціональної повноти системи команд і мінімізації власного тексту операторної програми збігаються відповідно з задачами функціональної повноти системи функцій і мінімізації схем. Оскільки операторна програма не містить умовних переходів, час її обчислення на будь-якому наборі той самий. Звідси tmax = = tcp = N, тобто обидва види часової складності збігаються зі складністю тексту програми і, отже, при достатньо великих n майже для усіх функцій близькі до 2n ⁄ n. Навпаки, проблема мінімізації пам'яті ( за рахунок багатократного використання одного елемента для декількох проміжних результатів ) для операторних програм є нетривіальною комбінаторною задачею.
Інший ”крайній “ вид програм, що обчислює логічні функції, - програми, що складаються з команд виду в : = σ ( σ = 1 або σ = 0 ) і умовних переходів. Такі програми називаються бінарними програмами. Всяку булеву функцію F , що містить N букв, можна реалізувати бінарною програмою, що обчислює F за час tmax = N і що містить N команд умовних переходів ( а також дві команди у = 1 і у = 0, що в оцінках не беруть участі ). Для опису методу реалізації використовуємо представлення програми у вигляді графа, в якому вершини відповідають командам, а ребра - переходам. Нехай G1 - граф програми для функції f1 із початковою вершиною v10 і двома заключними вершинами v1z0 ( із командою у = 0 ) і v1z1 ( із командою у = 1 ) ; G2 - граф програми для f2 із початком v20 і кінцями v2z0 і v2z1. Тоді: 1) програма, граф G якої отриманий приєднанням G2 до ”нуля“ G 1, тобто ототожненням вершин v1z0 і v201 ; команда у : = 1 при цьому відкидається, обчислюють функцію f = f 1 / f 2; 2) програма, граф G якої отриманий приєднанням G 2 до ”одиниці“ G 1 ( ототожнюємо v1z1 і v20 ), обчисляє f = f 1 f2; 3) програма, граф якої отриманий із G 1 заміною команд v1z0 і v1z1 на інверсні, обчислює f 1. Зауважимо, що в графі G дві нульові заключні вершини. Їх необхідно ототожнювати.
Задачі
Чим відрізняється двозначна логіка від к-значної?
Дайте характеристику окремим компонентам таблиці істинності.
Побудуйте таблицю істинності для тризначної логіки.
Дайте визначення несуттєвої логічної змінної через таблицю істинності.
Побудуйте комбінаційну схему для наступних логічних функцій:
X1X2X3 X2 X1 X2X3 X1X3 ;
X1X2X3 X2 X1 X2X3 X1X3 ;
X1X2X3 X2X3 X1 X2X3 X3 ;
X1X2X3 X2 X1 X2X3 X1X3 ;
X1X2X3 X2 X1 X2X3 X1X3 ;
X1X3 X2 X1 X2X3 X1;
X1X2X3 X2 X1 X2X3 X1X3 ;
X1X2X3 X2 X1 X2X3 X1X3 .
Виконайте мінімізації наступних логічних функцій аналітичним методом:
а)X1X2X3 X2 X1 X2X3 X1X3 ;
б) X1X2X3 X2 X1 X2X3 X1X3 ;
в)X1X2X3 X2 X1 X2X3 X1X3 ;
г)X1X3 X2 X1 X2X3 X1;
д)X1X2X3 X2 X1 X2X3 X1X3 ;
є)X1X2X3 X2 X1 X2X3 X1X3 ;
з)X1X2X3 X2X3 X1 X2X3 X3 ;
і)X1X2X3 X2 X1 X2X3 X1X3 .
Виконайте мінімізацію логічних функцій задачі 6 з використанням карт Карно.
Сформулюйте відміни між автоматами Мілі і Мура.
У чому відміна між синхронними та асинхронними автоматами?
Побудуйте граф автомата, який заданий такими таблицями переходів- -виходів:
а)
x(n) (стан / вихід)
y(m) 0 1 2 3
-
0
1/0
2/0
0/0
0/1
1
1/1
2/0
2/1
1/1
2
1/0
0/1
0/1
0/0
б)
x(n) (стан / вихід)
y(m) 0 1 2 3
-
0
2/0
2/0
2/0
0/1
1
1/1
1/0
1/1
1/1
2
1/0
1/1
0/1
0/0
в)
x(n) (стан / вихід)
y(m) 0 1 2 3
-
0
1/0
2/0
0/0
0/1
1
0/1
1/0
0/1
1/1
2
2/0
0/1
2/1
0/0
г)
x(n) (стан / вихід)
y(m) 0 1 2 3
-
0
0/0
1/0
0/0
0/1
1
2/1
1/0
1/1
1/1
2
1/0
0/1
2/1
0/0
д)
x(n) (стан / вихід)
y(m) 0 1 2 3
-
0
2/0
0/0
2/0
0/1
1
1/1
1/0
0/1
1/1
2
0/0
1/1
2/1
0/0