Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОДМ_Розд 3.doc
Скачиваний:
19
Добавлен:
11.11.2019
Размер:
352.77 Кб
Скачать

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 дві нульові заключні вершини. Їх необхідно ототожнювати.

Задачі

  1. Чим відрізняється двозначна логіка від к-значної?

  2. Дайте характеристику окремим компонентам таблиці істинності.

  3. Побудуйте таблицю істинності для тризначної логіки.

  4. Дайте визначення несуттєвої логічної змінної через таблицю істинності.

  5. Побудуйте комбінаційну схему для наступних логічних функцій:

  1. X1X2X3 X2  X1 X2X3  X1X3 ;

  2. X1X2X3  X2  X1 X2X3  X1X3 ;

  3. X1X2X3 X2X3  X1 X2X3  X3 ;

  4. X1X2X3 X2  X1 X2X3  X1X3 ;

  5. X1X2X3 X2  X1 X2X3  X1X3 ;

  6. X1X3 X2  X1 X2X3  X1;

  7. X1X2X3 X2  X1 X2X3  X1X3 ;

  8. X1X2X3 X2  X1 X2X3  X1X3 .

  1. Виконайте мінімізації наступних логічних функцій аналітичним методом:

а)X1X2X3 X2  X1 X2X3  X1X3 ;

б) X1X2X3 X2  X1 X2X3  X1X3 ;

в)X1X2X3 X2  X1 X2X3  X1X3 ;

г)X1X3 X2  X1 X2X3  X1;

д)X1X2X3 X2  X1 X2X3  X1X3 ;

є)X1X2X3  X2  X1 X2X3  X1X3 ;

з)X1X2X3 X2X3  X1 X2X3  X3 ;

і)X1X2X3 X2  X1 X2X3  X1X3 .

  1. Виконайте мінімізацію логічних функцій задачі 6 з використанням карт Карно.

  2. Сформулюйте відміни між автоматами Мілі і Мура.

  3. У чому відміна між синхронними та асинхронними автоматами?

  4. Побудуйте граф автомата, який заданий такими таблицями переходів- -виходів:

а)

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

69