МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ ОДЕСЬКИЙ КОЛЕДЖ КОМП'ЮТЕРНИХ ТЕХНОЛОГІЙ СЕРВЕР РОЗРАХУНКОВО-ГРАФІЧНА РОБОТА З дисципліни Комп’ютерна схемотехніка На тему: «МЕТОДИ МІНІМІЗАЦІЇ ТА АНАЛІЗУ КОМБІНАЦІЙНИХ СХЕМ» Виконав студент групи К16.2 Керівник Загальна оцінка__________ Дата __________ МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ ОДЕСЬКИЙ КОЛЕДЖ КОМП'ЮТЕРНИХ ТЕХНОЛОГІЙ СЕРВЕР Одеса 2020 2 ЗАВДАННЯ На розрахунково-графічну роботу з дисципліни Комп’ютерна схемотехніка Тема розрахунково-графічної роботи: «Методи мінімізації та аналізу комбінаційних схем» Варіант 23 Вхідні дані до роботи видаються відповідно за варіантами: Булєва функція для мінімізації, побудови схем та їх аналізу. Зміст розрахунково-пояснювальної записки: Вступ 1. Визначення булєвої функції; 2. Опис мінімізації булевої функції методом Квайна Мак-Класкі; 2.1 Опис мінімізації булевої функції методом Квайна Мак-Класкі по «1» 2.2 Опис мінімізації булевої функції методом Квайна Мак-Класкі по «0» 3. Опис мінімізації булевої функції методом Карт Карно; 3.1 Опис мінімізації булевої функції методом Карт Карно по «1»; 3.2 Опис мінімізації булевої функції методом Карт Карно по «0»; 4. Аналіз синтезованої схеми методом π-алгоритму; Висновки Перелік посилань Основна література: 1. Шапо Ф. С. Синтез схем цифровых устройств на основе СИС и БИС Киев,1989. 2. Угрюмов Е.П. Цифровая схемотехника. Учебное пособие.,2004. Дата здачі розрахунково-графічної роботи _________________________ Завдання прийняв на виконання ____________________ 3 ВСТУП У даній роботі ми зміцнимо знання з дисципліни схемотехніка виконавши розрахунково-графічну роботу, в якій використовуємо мінімізацію булевих функцій за допомогою алгоритму карт Карно і методу мінімізації Клайна Мак-Класки. В результаті цієї роботи ми отримаємо практичні навички при проектуванні принципових схем цифрових пристроїв розрахункової техніки. Дана робота важлива як для спеціалізації «Обслуговування програмних систем і комплексів» так і для напряму «Розробка програмного забезпечення». 4 1. ВИЗНАЧЕННЯ БУЛЄВОЇ ФУНКЦІЇ Булева функція 5 змінних Y = F(X1, X2, X3, X4, X5) задається своїми значеннями, що визначаються 7-розрядними двійковими еквівалентами чисел, які потрібно вибрати за табл.1 за числом (А) та місяцем (В) народження студента та порядкового номера у списку групи (С). Значення функції на конкретних наборах вибирається за правилом: - на наборах 0...6 за значенням А; - на наборах 7...13 за значенням В; - на наборах 14...20 за значенням С; - на наборах 21...27 за значенням (А+В+С); - на наборах 28...31 функція приймає невизначений стан (Х). Крім того, для всіх двійкових еквівалентів в розрядах зліва від старшої значущої одиниці необхідно поставити символ невизначеного стану Хі вважати, що функція на таких наборах також має невизначений стан. Елементний базис задається викладачем. Наприклад: А=09. З табл.1 знаходимо число 25, яке в двійковій системі має вигляд 0011001. Тут лівіше старшої значущої одиниці знаходяться нулі, тому замінюємо їх символом невизначеного стану Х. Тоді отримуємо ХХ11001. Таким чином, значення функції F(X1, X2, X3, X4, X5) на наборах від 0 до 6: Таблиця 1.1 № набору X1 X2 X3 X4 X5 F 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 Х Х 1 1 0 0 1 5 Таблиця 1.2 0 1 О Д И Н И Ц І 2 3 4 5 6 7 8 9 0 - 00 72 12 94 38 59 10 42 25 Д 1 85 95 07 49 57 50 89 13 72 39 Е 2 32 23 43 94 54 76 96 37 05 96 С 3 97 87 36 08 61 48 19 18 86 62 Я 4 79 72 70 02 90 63 41 47 01 20 Т 5 23 26 44 92 84 33 52 51 43 38 К 6 45 74 34 35 83 87 55 93 08 07 И 7 95 80 66 60 65 88 33 05 09 48 8 27 49 19 40 17 51 47 08 37 36 9 10 59 89 99 95 77 48 11 68 20 В ході виконання роботи змінні приймають наступні значення: А = 08 В = 01 С = 14 Тоді сума буде дорівнювати: А + В + С = 23 Отриманні значення переводимо згідно за таблицею (табл. 1) та щоб виділити їх добавляємо зірочку: А* = 42 В* = 00 С* = 57 (А + В + С)* = 96 Переводимо отримані значення у бінарну систему числення: А* = 0101010 В* = 0000000 6 С* = 0111001 (А + В + С)* = 1100000 Отримані бінарні числа зводимо до семи розрядів згідно з вимогами задачі. Таким чином будуємо таблицю з отриманими бінарними значеннями, а у не заповнені значення записуємо «х». Отримуємо наступну таблицю (табл. 1.3). Таблиця 1.3 x1x2x3x4x5 y 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 x 1 1 1 0 1 x 1 1 1 1 0 x 1 1 1 1 1 x А B C A+B+C 7 2. ОПИС МІНІМІЗАЦІЇ БУЛЕВОЇ ФУНКЦІЇ МЕТОДОМ КВАЙНА МАККЛАСКІ 2.1. Опис мінімізації булевої функції методом Квайна Мак-Класкі по «1» Наступним кроком буде мінімізація заданої таблиці 1.3 за допомогою методу мінімізації Клайна Мак Класкі. Почнемо з мінімізації одиниць. Для цього беремо таблицю 1.3 та виділяємо усі набори які у результаті дають значення 1.3 (таблиця 2.1). Таблиця 2.1 x1x2x3x4x5 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 0 0 0 8 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 x 1 1 1 0 1 x 1 1 1 1 0 x 1 1 1 1 1 x Після цього переписуємо виділені набори у таблицю котра буде позначати набор К0 (таблиця 2.2). Та шукаємо бінарні набори котрі різняться лише одним значенням. Помічаємо шукаємий та перевіряємі набори за допомогою хрестика «х». Результат цієї дії зображено на таблиці 2.3. Таблиця 2.2 Таблиця 2.3 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 11 0 0 1 1 0 0 0 1 0 1 0 0 1 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 Після цього переписуємо знайдені значення які відрізняються лише одним значенням та на місце різниці ставимо знак «~» (таблиця 2.4), після цього проводимо аналогічні операції до тих пір поки не буде значень які відрізняються лише одним значенням. Результатом буде таблиці 2.5-2.6 9 Таблиця 2.4 0 0 0 ~ 1 0 0 ~ 0 1 Таблиця 2.5 К2= ~ 1 1 ~ 0 1 1 1 ~ ~ 0 0 ~ 1 0 0 ~ 0 1 0 0 1 ~ 0 0 1 0 0 ~ 0 К1 = 0 1 1 ~ 0 ~ 0 0 1 1 ~ 1 0 1 0 ~ 1 1 0 0 1 0 ~ 1 1 1 1 1 0 ~ 1 1 1 ~ 0 1 1 1 1 ~ Після цього будуємо таблицю 2.6 в котрій значення верхньої строки буде набором таблиці 2.2, а першого стовбця усі не помічені набори. 10 A 000~1 B 00~01 C 00~10 D 0~010 E 01~00 X 11111 11110 11101 10111 11100 11010 10011 01110 10010 10001 01100 01010 00110 X X X X X X F 1000~ G 100~0 X H ~0011 I ~1010 K 00101 X X J 00011 10000 01000 00010 00001 Таблиця 2.6 X X X X X X X ~1100 X X 10~11 Хрестиками відмічені ті клітинки у яких перша строчка співпадає з шаблоном першого стовпчика. Після цього треба закреслити усі стовпчики та рядки наступним алгоритмом: 1. Шукаємо стовпчик з одним хрестиком та викреслюємо його 2. Якщо на строчці з викресленим стовпчиком є ще хрестики – викреслюємо стовпчики. 3. Повторюємо цей алгоритм поки не залишиться стовпчиків з одним хрестиком. Результатом буде наступна таблиця (таблиця 2.7). A 000~1 B 00~01 C 00~10 D 0~010 X X X X X X X X E 01~00 F 1000~ X G 100~0 X H ~0011 I ~1010 J ~1100 K 10~11 X X X X X X X X X 11111 11110 11101 10111 11100 11010 10011 01110 10010 10001 01100 01010 00110 00101 00011 10000 01000 00010 00001 Таблиця 2.7 11 Знаходимо ядро. Ядром будуть являтися викреслені набори з таблиці 2.7. В даній таблиці ядром буде являтися наступне: A000~1 B00~01 C00~10 D0~010 E01~00 F1000~ G100~0 I~1010 J~1100 K10~11 ядро = Після цього знаходимо покриття за допомогою формули П = (2 набори) U Ядро = {результуючий набір} – так как ядро у нас всё занимает, то: П1 = ядро П1 = 10 + 4 + 40 = 54 За допомогою цієї формули знаходимо вагу покриття: Таким чином для вирішення формулою Мак Класкі були отримані наступні БФ: МДНФ = y = !x1!x2!x3x4+!x1!x2!x4x5+!x1!x2x4!x5+!x1!x3x4x5+!x1x2!x4!x5+x1!x2!x3!x4+x1!x2!x3!x5+x2!x3x4!x5+x2x3!x 4!x5+x1!x2x4x5 2.2. Опис мінімізації булевої функції методом Квайна Мак-Класкі по «0» Зробимо теж саме для нулей. Беремо таблицю 1.3 та виділяємо усі набори які у результаті дають значення 0 (таблиця 2.8). Таблиця 2.8 x1x2x3x4x5 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 1 0 1 1 12 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 0 1 1 1 1 0 1 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0 0 x 1 1 1 0 1 x 1 1 1 1 0 x 1 1 1 1 1 x Переписуємо виділені набори у таблицю котра буде позначати набор К0 (таблиця 2.9). значенням. Шукаємо бінарні набори котрі різняться лише одним Помічаємо шукаємий та перевіряємі набори за допомогою хрестика «х». Після цього переписуємо знайдені значення які відрізняються лише одним значенням та на місце різниці ставимо знак «~» (таблиця 2.10), після цього проводимо аналогічні операції до тих пір поки не буде значень які відрізняються лише одним значенням. Результатом буде таблиці 2.10 - 2.11. Таблиця 2.9 К0 = Таблиця 2.10 Таблиця 2.11 x 00000 00~00 x 00100 010~0 x 01001 1010~ x 10100 1100~ x 11000 x 00111 x 01011 x 10101 110~1 K1= x ~1011 x 11~11 111~1 К2= ~10~1 13 x 10110 x 1111~ Після цього будуємо таблицю 2.12 в котрій значення верхньої строки буде набором таблиці 2.12, а першого стовбця усі не помічені набори. Хрестиками відмічені ті клітинки у яких перша строчка співпадає з шаблоном першого стовпчика. Закреслюємо стовпчики та строчки попереднім алгоритмом . 11111 x x x x x x x x x x x x x Знаходимо ядро Після цього знаходимо покриття за допомогою формули П = (2 набори) U Ядро = {результуючий набір} За допомогою цієї формули знаходимо вагу покриття: Ядро = 11110 11101 11011 11001 10110 10101 01011 00111 11000 10100 Неотмеченные наборы A 00~00 x B 1010~ C 1100~ D ~1011 E 11~11 F 111~1 G 1111~ 01001 00000 00100 Таблиця 2.12 00~00 A 1010~ B ~1011 D 11~11 E Знаходимо вагу покриття: П1 = CF U Ядро = CF U ABDE = {ABCDEF} 00~00 1010~ ~1011 11~11 1100~ 111~1 6+5+ 24 = 35 14 П2 = CG U Ядро = CG U ABDE = {ABCDFG} 0000~ 6+ 4 + 24 = 34 1010~ ~1011 11~11 1100~ 111~1 П3 = FG U Ядро = FG U ABDE = {ABDEFG} 0000~ 6+5+ 23 = 34 ~~111 000~0 ~0000 111~1 1111~ Таким чином для вирішення формулою Мак Класкі були отримані наступні БФ: СДНФ = y = !x1!x2x3!x4!x5 + !x1x2!x3!x4!x5 + !x1!x2!x3x4x5 + !x1!x2x3x4!x5 + !x1x2!x3!x4x5 + !x1x2!x3x4!x5 + !x1x2x3!x4!x5 + x1!x2!x3!x4x5 + x1!x2!x!x3x4!x5 + x1!x2x3!x4!x5 + x1x2!x3!x4!x5 + !x1x2x3!x4x5 + x1!x2x3!x4x5 + x1x2!x3x4!x5 + x1x2x3!x4!x5 + x1x2x3x4!x5 + x1x2x3!x4z5 + x1x2!x3x4x5 + x1x2x3x4x5 СкДНФ = y = x3x4x5 + x2x3x4 + x1x3x4 + !x1!x2!x3!x4 + !x1!x2!x3!x5 + !x2!x3!x4!x5 + !x1!x2!x4x5 + !x1!x2x3x5 + !x1x2x4x5 + x1!x2x4x5 + x1x2x3x5 ТДНФ = T1 = 0000~ T2 = 0000~ T3= 0000~ 00~01 001~1 ~~111 000~0 000~0 000~0 ~0000 ~0000 ~0000 01~11 01~11 01~11 10~11 10~11 10~11 111~1 111~1 111~1 ~111~ ~111~ ~111~ 1~11~ 1~11~ 1~11~ МДНФ = y = !x1!x2!x3!x4 + x3x4x5 + !x1!x2!x3!x5 + !x2!x3!x4!x5 + !x1x2x4x5 + x1!x2x4x5 + x1x2x3x5 + x2x3x4 + x1x3x4 15 3. ОПИС МІНІМІЗАЦІЇ БУЛЕВОЇ ФУНКЦІЇ МЕТОДОМ КАРТ КАРНО; 3.1. Опис мінімізації булевої функції методом Карт Карно по «1»; Визначаємо булеву функцію за допомогою методу карт Карно. Спочатку робимо розрахунок для одиниць, а потім для нулей. Будуємо таблицю 3.1 котру будемо заповнювати значеннями з таблиці 1.3. Вибираємо з таблиці 1.3 усі значення на яких значення y приймає значення Отримуємо результат котрий зображено у таблиці 3.1, після цього об’єднуємо результат за допомогою алгоритму Карно та отримуємо результат. Таблиця 3.1 x3x4x5 000 010 110 1 1 100 001 011 1 1 111 101 x1x2 00 1 1 1 01 1 2 7 1 11 3 10 1 1 4 1 1 x x 1 8 1 7 x 1 1 5 x 1 Результатом об’єднання одиниць у таблиці буде наступна булева функція: Y = !х1х3!x5 + !x1x2!x5 + !x3x4!x5+x1!x2!x3!x5+!x2!x3x5+x1!x2x4x5+!x1x2!x3x4+!x1!x2!x4x5 3.2. Опис мінімізації булевої функції методом Карт Карно по «0» 16 Теж саме робимо для значень які набувають 0 у «у». Отримуємо карту Карно (таблиця 3.2) та робимо об’єднання клітинок за допомогою алгоритму Карно. Таблиця 3.2 x3x4x5 000 010 110 100 001 011 111 101 x1x2 00 0 0 7 01 11 0 0 0 6 10 x 0 x 0 2 4 0 0 3 x x 0 1 0 5 Результатом об’єднання таблиці 6 буде наступна булева функція: Y = (!x1+!x3+x5)(!x1+!x2+!x5)(x1+!x2+x4+!x5)(x1+!x3+!x4+!x5)(!x1+!x3+x4+!x5)(!x1+!x2+x3+x4+x5)(x1+x2+x3+ x4+x5) Порівнюємо БФ обох методів мінімізації: !х1х3!x5 + !x1x2!x5 + !x3x4!x5+x1!x2!x3!x5+!x2!x3x5+x1!x2x4x5+!x1x2!x3x4+!x1!x2!x4x5 (Карта Карно) та y = !x1!x2!x3x4+!x1!x2!x4x5+!x1!x2x4!x5+!x1!x3x4x5+!x1x2!x4!x5+x1!x2!x3!x4+x1!x2!x3!x5+x2!x3x4!x5+x2x3!x 4!x5+x1!x2x4x5 (Квайна Мак Класкі). 17 4. АНАЛІЗ СИНТЕЗОВАНОЇ СХЕМИ МЕТОДОМ Π-АЛГОРИТМУ По найменшій функції будуємо комбінаційну схему (рис. 1). Рисунок 4.1 – найменша комбінаційна схема Будуємо таблицю 4.1 на котрій нумеруємо елементі схеми та вказуємо інформацію по її елементам. Таблиця 4.1 Номер елемента 4 3 2 1 Функція 3 або 3і 2і 2і Входи е1е2е3 !х1!х3х4 !х2х3х4 х1х2 Рахуємо її за допомогою Пі-алгоритму з виходом 1. Будуємо таблицю (таблиця 4.2) Таблиця 4.2 Для одиниці х1 1 х2 х4 е1 е2 е3 1 х х х 1 х х х 1 у Опис 1 П14 3 або, е1е2е3 П11 2 і, х1х2 1 0 0 х3 0 1 П12 2 і, !х2!х3х4 0 1 П13 2 і, !х1!х3х4 18 Будуємо набір усіх станів та БФ: с1 = 11хх х001 0х01 у = х1!х1 + х2!х2 + !х3 + х4 Теж саме робимо для нулей (таблиця 4.3). Таблиця 4.3 х1 х2 х3 х4 е1 0 0 х 1 х х х 0 1 х х е2 0 е3 0 у 0 Опис П14 3 або, е1е2е3 П11 2 і, х1х2 х 1 х х 1 х х х 0 х х 1 П12 2 і, !х2!х3х4 П13 2 і, !х1!х3х4 Результатом розрахунку є: с0 = 011x 01x1 0x11 0x1x 0x10 101x 10x0 x01x x010 x011 у = !x1x2x3 + !x1x2x4 + !x1x3x4 + !x1x3 + !x1x3!x4 + x1!x2x3 + x1!x2!x4 + !x2x3 + !x1x2!x3 + !x2x3x4 19 ВИСНОВКИ У цій роботі було проведено порівняння алгоритмів мінімізації по картах Карно і Клайна Мак-Класки . Було проведено порівняння результатів булевих функцій в ході яких було з'ясовано, що алгоритм мінімізації Клайна МакКласки більш ефективно і точно дає відповідь так як результуючі булеві функції цих двох алгоритмів схожі. У межах даної роботи не вийшло домогтися повного збігу так як цьому завадили набори, що приймають будьяке значення, а також неоднозначність рішення методом карт Карно. Незважаючи на те, що алгоритм Клайна Мак-Класки більш точний, він є більш трудомістким в ручному підрахунку, цей алгоритм вимагає реалізації автоматизованого підрахунку, так як є великий шанс допустити помилку через людського фактора. Труднощами даного алгоритму також є те, що складність підрахунку збільшується в експоненційній формі, що може зайняти великий час підрахунку навіть, в автоматизованому вигляді. 20 ПЕРЕЛІК ПОСИЛАНЬ 1. Гук М. Аппаратные средства IBM PC. – «Питер», 2007. 2. Осадчий Ю.Ф., Глудкин О.П., Гуров А.И. Аналоговая и цифровая электроника. – «Горячая линия - Телеком», Москва, 2005.