МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра ЕОМ
/
ЗВІТ
З курсової роботи
з дисципліни «Комп’ютерна логіка» варіант В4
задача 2.2
коди літер: К – 79, О - 29, Р - 76, Л - 59, Ь - 71, М - 39, А - 95, І - 17.
Зміст
ЗМІСТ 1
ПЕРЕЛІК ТАБЛИЦЬ 2
ВСТУП 3
1. ЗВІТ З РОЗВ’ЯЗКУ ЗАДАЧІ 2.2 4
1.1. Умова завдання 2.2 4
1.2 . Результати виконання завдання 2.1 6
1.2.1. Побудова простих імплікант 6
1.2.2. Формування мінімальної диз'юнктивної нормальної форми. 11
ЛІТЕРАТУРА 14
Перелік таблиць
ТАБЛИЦЯ 1ТАБЛИЦЯ TZ3 5
ТАБЛИЦЯ 2ТАБЛИЦЯ 1.2.1. 7
ТАБЛИЦЯ 3ТАБЛИЦЯ 1.2.2. 8
ТАБЛИЦЯ 4ТАБЛИЦЯ 1.2.3. 9
ТАБЛИЦЯ 5 ТАБЛИЦЯ 1.2.4 10
ТАБЛИЦЯ 6 ТАБЛИЦЯ 2 11
Вступ
У процесі оволодіння студентами бакалаврату «Комп'ютерна інженерія» учбовим матеріалом із дисципліни «Комп’ютерна логіка» (КЛ) важливу роль відіграє виконання курсової роботи. Курсові роботи відносяться до самостіних робіт. Курсову роботу студент повинен виконати самостійно.
Звіти з курсової роботи необхідно оформляти за стилями кафедри ЕОМ.
Метою курсової роботи є закріплення у студентів основних теоретичних положень курсу «Комп’ютерна логіка», набуття практичних навичок побудови цифрових схем та самостійної роботи з учбовою літературою, яку рекомендовано при вивченні курсу. Робота складається із завдань, які розподілено на чотири частини: кодування інформації та перетворення кодів; функції алгебри логіки та їх мінімізація; синтез комбінаційних схем; арифметико-логічні операції.
У даному звіті я розв’язав задачу 2.2 з методичних вказівок до курсової роботи з дисципліни «Комп’ютерна логіка». Завдання полягало у мінімілізації за допомогою методу Квасна-Мак-Класкі-Петрика 5 функцій (f0, f1, f2, f3, f4) 5-ти змінних (a, b, c, d, e). Функції задано за допомогою таблиці ТZ.3.
1. ЗВІТ З РОЗВ’ЯЗКУ ЗАДАЧІ 2.2
1.1. Умова завдання 2.2
2.2 Мінімізувати за допомогою методу Квасна-Мак-Класкі-Петрика 5 функцій (f0, f1, f2, f3, f4) 5-ти змінних (a, b, c, d, e). Функції задано за допомогою таблиці ТZ.3. Побудувати таблицю, яка ілюструє процес знаходження простих імплікант,і таблицю покриття (імплікантну таблицю). За допомогою методу Петрика визначити всі мінімальні розв'язки. Кожний третій набір для кожної з функцій має невизначене значення. Відлік починається від першого згори одиничного значення функції з врахуванням зміщення, величина якого позначена у табл. ТZ.3:
S - відлік починається безпосередньо від першого згори одиничного значення;
-S - відлік починається від попереднього набору відносно першого згори одиничного значення;
+S - відлік починається від наступного набору відносно першого згори одиничного значення.
Table 1.1 Таблиця Tz,1
/
Таблиця 1Таблиця TZ3
/
. Результати виконання завдання 2.1
Метод складається з двох частин:
Побудова простих імплікант. Логічна функція g(a,b,...,x) називається імплікантою логічної функції f(a,b,...,x), якщо f(a,b,...,x) & g(a,b,...,x) = g(a,b,...,x).
Імпліканта називається простою, якщо вона є кон'юнкцією змінних, і будь-яка кон'юнкція, отримана з неї шляхом викреслювання будь-яких змінних, не є імплікантою.
2. Формування мінімальної диз'юнктивної нормальної форми. Позначимо через I1, I2, ..., Is всі прості імпліканти функції f. Будемо говорити, що кон'юнкція К покриває набір n, якщо на наборі n вона дорівнює 1. Побудуємо імплікантну таблицю (таблицю покриття) по функції f. Її рядки відповідають одиничним наборам функції f, а графи - простим імплікантам. На схрещенні рядка n і графи Ij проставляється *, якщо імпліканта Ij покриває набір n (у протилежному випадку не ставиться нічого).
Побудова простих імплікант
Імпліканта називається простою, якщо вона є кон'юнкцією змінних, і будь-яка кон'юнкція, отримана з неї шляхом викреслювання будь-яких змінних, не є імплікантою. Побудова простих імплікант ілюструється прикладом 1.2.1.
Приклад 1.2.1. Нехай функція f(a,ab,b,c) задана в табл. 1.2.1. Випишемо до табл. 1.2.2 усі набори, на яких функція f обертається в 1.
Для виконання алгоритму їх зручно виписати розбитими на групи у відповідності з кількістю одиничних компонент у наборах.
Оскільки мінімізуються (склеюються) лише набори, які відрізняються в одній компоненті, то для того, щоб провести всі склеювання по одній змінній, досить продивитися всі можливі пари наборів, які входять до двох сусідніх груп. Результати склеювання наборів із таблиці розмістимо у графі таблиці 1.2.3. Набори із таблиці 1.2.2, які приймали участь у склеюваннях, позначимо знаком +. У таблиці 1.2.3 набори вже автоматично розбиваються на групи за кількістю одиниць.
До створених наборів знову застосовуємо операцію склеювання (клеяться пари наборів, які мають риску на однакових місцях і відрізняються однією компонентою). При цьому треба знову переглянути всі пари наборів із сусідніх груп. Набори, до яких застосована операція, позначені знаком +. Результати склеювання заносимо до таблиці 1.2.4. У таблиці 1.2.4 знову намагаємося
виконати склеювання, але цього зробити не вдається. На цьому процедура завершується
Таблиця 2Таблиця 1.2.1.
Зміщення першого невизначеного значення
S-
S
S+
S-
S
№ набору
a
ab
b
c
d
f0
f1
f2
f3
f4
0
0
0
0
0
0
X
0
0
X
0
1
0
0
0
0
1
1
X
1
1
X
2
0
0
0
1
0
1
1
X
1
1
3
0
0
0
1
1
X
1
1
X
1
4
0
0
1
0
0
1
X
1
0
X
5
0
0
1
0
1
0
0
X
0
0
6
0
0
1
1
0
X
0
0
X
0
7
0
0
1
1
1
1
X
1
1
X
8
0
1
0
0
0
0
0
X
0
0
9
0
1
0
0
1
X
0
0
X
0
10
0
1
0
1
0
1
X
1
1
X
11
0
1
0
1
1
0
0
X
1
1
12
0
1
1
0
0
X
1
1
X
1
13
0
1
1
0
1
0
X
0
0
X
14
0
1
1
1
0
0
0
X
0
0
15
0
1
1
1
1
X
1
1
X
1
16
1
0
0
0
0
0
X
0
1
X
17
1
0
0
0
1
1
1
X
0
0
18
1
0
0
1
0
X
1
1
X
0
19
1
0
0
1
1
1
X
1
1
X
20
1
0
1
0
0
0
0
X
0
0
21
1
0
1
0
1
X
1
1
X
1
22
1
0
1
1
0
1
X
1
0
X
23
1
0
1
1
1
0
0
X
1
1
24
1
1
0
0
0
X
0
0
X
0
25
1
1
0
0
1
1
X
1
0
X
26
1
1
0
1
0
0
0
X
0
0
27
1
1
0
1
1
X
1
1
X
1
28
1
1
1
0
0
1
X
1
0
X
29
1
1
1
0
1
0
0
X
1
1
30
1
1
1
1
0
X
0
0
X
1
31
1
1
1
1
1
1
X
1
1
X
Таблиця 3Таблиця 1.2.2.
A0
0
0
0
0
0
B0
0
0
0
0
1
B1
0
0
0
1
0
B2
0
0
1
0
0
c0
0
0
0
1
1
c1
0
0
1
1
0
c2
0
1
0
0
1
C3
0
1
0
0
1
C4
0
1
1
0
0
C5
1
0
0
0
1
C6
1
0
0
1
0
C7
1
1
0
0
0
D0
0
0
1
1
1
D1
1
0
0
1
1
D2
1
0
1
0
1
D3
1
0
1
1
0
D4
1
1
0
0
1
D5
1
1
1
0
0
E0
0
1
1
1
1
E1
1
1
0
1
1
E2
1
1
1
1
0
F0
1
1
1
1
1
Таблиця 4Таблиця 1.2.3.
A0b0
0000-
G0
+
A0b1
000-0
G1
+
A0b2
00-00
G2
+
B0c0
000-1
H0
+
B1c0
0001-
H1
+
B1c1
00-10
H2
+
B2c1
001-0
H3
+
B0c2
0-001
H4
+
B1c3
0-010
H5
-
B2c4
0-100
H6
-
B0c5
-0001
H7
+
B1c6
-0010
H8
+
C0d0
00-11
I0
+
C1d0
0011-
I1
+
C0d1
-0011
I2
+
C5d1
100-1
I3
+
C6d1
1001-
I4
+
C5d2
10-01
I5
-
C1d3
-0110
I6
+
C6d3
10-10
I7
+
C2d4
-1001
I8
+
C5d4
1-001
I9
+
C7d4
1100-
I10
-
C4d5
-1100
I11
-
C7d5
11-00
I12
-
D0e0
0-111
J0
-
D1e1
1-011
J1
+
D4e1
110-1
J2
+
D3e2
1-110
J3
-
D5e2
111-0
J4
-
E0f0
-1111
K0
-
E1f0
11-11
K1
-
E2f0
1111-
K2
-
Таблиця 5 Таблиця 1.2.4
g1h0
000--
m0
-
g0h1
000--
m1
-
g2h2
00--0
m2
-
g1h3
00--0
m3
-
h2i0
00-1-
n0
-
h1i1
00-1-
n1
-
h7i2
-00-1
n2
-
h8i2
-001-
n3
-
h0i3
-00-1
n4
-
h1i4
-001-
n5
-
h8i6
-0-10
n6
-
h2i7
-0-10
n7
-
h7i8
--001
n8
-
h4i9
--001
n9
-
i9j1
1-0-1
o0
-
i3j2
1-0-1
o1
-
Формування мінімальної диз'юнктивної нормальної форми.
Позначимо через I1, I2, ..., Is всі прості імпліканти функції f. Будемо говорити, що кон'юнкція К покриває набір n, якщо на наборі n вона дорівнює 1.
Побудуємо імплікантну таблицю (таблицю покриття) по функції f. Її рядки відповідають одиничним наборам функції f, а графи - простим імплікантам. На схрещенні рядка n і графи Ij проставляється *, якщо імпліканта Ij покриває набір n (у протилежному випадку не ставиться нічого).
З імплікантою Ij будемо пов'язувати логічну змінну іj. Кожній множині імплікант приписується набір значень змінних іj: якщо Ij входить у множину, то іj=1, якщо ні, то іj=0. Розглянемо рядок таблиці покриття, який відповідає якомусь набору n. Нехай у цьому рядку символи * знаходяться у графах I1, I2, ..., Iw. Рядок n буде покритий тоді і лише тоді, коли до множини буде введена хоча б одна з імплікант I1, I2, ..., Iw, тобто, коли диз'юнкція і1 v і2 v ... v іw дорівнює 1.
Складемо таку диз'юнкцію для кожного рядка імплікантної таблиці і візьмемо їхній добуток по всіх рядках.
Таблиця 6 Таблиця 2
i1
i2
i3
i4
i5
i6
i7
i8
/abc/d
/ab/c/d
a/ab/cd
aabb/c
abb/c/d
aab/c/d
/abcd
abc/d
a ab b c d
0-010
0-100
10-01
1100-
-1100
11-00
0-111
1-110
00001
-
-
-
-
-
-
-
-
00010
*
-
-
-
-
-
-
-
00100
-
*
-
-
-
-
-
-
00111
-
-
-
-
-
-
*
-
01010
*
-
-
-
-
-
-
-
10001
-
-
*
-
-
-
-
-
10011
-
-
-
-
-
-
-
-
10110
-
-
-
-
-
-
-
*
11001
-
-
-
*
-
-
-
-
11100
-
-
-
-
*
*
-
-
11111
-
-
-
-
-
-
-
-
4
4
4
4
4
4
4
4
i9
i10
i11
i12
i13
i14
i15
i16
aabb/d
abbcd
aabcd
aabbc
/a/abb
/a/ab/d
/a/abc
/abbd
a ab b c d
111-0
-1111
11-11
1111-
000--
00--0
00-1-
-00-1
00001
-
-
-
-
*
-
-
*
00010
-
-
-
-
*
*
*
-
00100
-
-
-
-
-
*
-
-
00111
-
-
-
-
-
-
*
-
01010
-
-
-
-
-
-
-
-
10001
-
-
-
-
-
-
-
*
10011
-
-
-
-
-
-
-
*
10110
-
-
-
-
-
-
-
-
11001
-
-
-
-
-
-
-
-
11100
*
-
-
-
-
-
-
-
11111
-
*
*
*
-
-
-
-
4
4
4
4
3
3
3
3
i17
i18
i19
i120
/abbc
/abbc
b/cd
abd
a ab b c d
-001-
-001-
--001
1-0-1
00001
-
-
*
-
00010
*
*
-
-
00100
-
-
-
-
00111
-
-
-
-
01010
-
-
-
-
10001
-
-
*
*
10011
*
-
-
*
10110
-
*
-
-
11001
-
-
*
*
11100
-
-
-
-
11111
-
-
-
-
3
3
3
3
(продовження таблиці 2)
Спільний елемент масивів 0 і 3: I16
Спільний елемент масивів 2 і 4: I20
Отримуємо функцію F:
F = (I13 v I16 v I19)*(I1 v I13 v I14 v I15 v I17 v I18)*(I2 v I14)*(I7 v I15)*I1*(I3 v I16 v I19 v I20)*(I16 v I17 v I20)*(I8 v I18)*(I4 v I19 v I20)*(I5 v I6 v I9)*(I10 v I11 v I12);
Після спрощення:
F = I1*I16*I20*(I14I15I18I5I10 v I14I15I18I6I10 v I14I15I18I9I10 v I14I15I18I5I11 v I14I15I18I6I11 v I14I15I18I9I11 v I14I15I18I5I12 v I14I15I18I6I12 v I14I15I18I9I12) =
= I1I16I20I14I15I18I5I10 v I1I16I20I14I15I18I6I10 v I1I16I20I14I15I18I9I10 v I1I16I20I14I15I18I5I11 v I1I16I20I14I15I18I6I11 v I1I16I20I14I15I18I9I11 v I1I16I20I14I15I18I5I12 v I1I16I20I14I15I18I6I12 v I1I16I20I14I15I18I9I12;
1) f = I1I5I10I14I15I16I18I20;
2) f = I1I6I10I14I15I16I18I20;
3) f = I1I9I10I14I15I16I18I20;
4) f = I1I5I11I14I15I16I18I20;
5) f = I1I6I11I14I15I16I18I20;
6) f = I1I9I11I14I15I16I18I20;
7) f = I1I5I12I14I15I16I18I20;
8) f = I1I6I12I14I15I16I18I20;
9) f = I1I9I12I14I15I16I18I20;
f = f(a,ab,b,c,d);
1) f = /abc/d v abb/c/d v abbcd v /a/ab/d v /a/abc v /abbd v /abc/d v abd;
2) f = /abc/d v aab/c/d v abbcd v /a/ab/d v /a/abc v /abbd v /abc/d v abd;
3) f = /abc/d v aabb/d v abbcd v /a/ab/d v /a/abc v /abbd v /abc/d v abd;
4) f = /abc/d v abb/c/d v aabcd v /a/ab/d v /a/abc v /abbd v /abc/d v abd;
5) f = /abc/d v aab/c/d v aabcd v /a/ab/d v /a/abc v /abbd v /abc/d v abd;
6) f = /abc/d v aabb/d v aabcd v /a/ab/d v /a/abc v /abbd v /abc/d v abd;
7) f = /abc/d v abb/c/d v aabbc v /a/ab/d v /a/abc v /abbd v /abc/d v abd;
8) f = /abc/d v aab/c/d v aabbc v /a/ab/d v /a/abc v /abbd v /abc/d v abd;
9) f = /abc/d v aabb/d v aabbc v /a/ab/d v /a/abc v /abbd v /abc/d v abd;
Література
1. Методичні вказівки до курсової роботи з дисципліни «Комп’ютерна логіка» спеціальності 123 «Комп'ютерна інженерія» /Укл. В.С.Глухов, В.А.Голембо. Львів: НУ"ЛП", 2021-97 с. Режим доступу: https://vns.lpnu.ua/mod/folder/view.php?id=184434 Методичні вказівки до КР з КЛ_20240824_2134.pdf (останній доступ 30.08.2024 р.).