Графоаналитические методы минимизации логической функции и синтез логического устройства
Определение минимальной дизъюнктивной нормальной формы логической функции устройства. Таблица истинности функции. Минимизация функции алгебры логики. Задача определения простых импликант по методу Квайна-Маккласки. Синтез схемы для МДНФ в базисе Буля.
Рубрика | Математика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 21.11.2010 |
Размер файла | 121,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство общего и профессионального образования Российской Федерации
Дагестанский Государственный
Технический Университет
Кафедра ВТ
Пояснительная записка
к курсовой работе
по дисциплине
“Дискретная математика”
на тему:
“Графоаналитические методы минимизации логической функции
и синтез логического устройства”
Выполнил: ст-т 2-го курса
гр. 3931
Гаджиев Р.Ю.
Принял: Гаджиев А.А
Аннотация
Цель курсовой работы - закрепление у студента основных теоретических положений дисциплины, приобретение навыков практического решения технических задач логического проектирования узлов ЭВМ, а также формализации и составления алгоритмов решения логической задачи.
В настоящей курсовой работе проводится минимизация логической функции по методам Квайна, карт Карно, неопределенных коэффициентов, методу прямого алгебраического преобразования и по методу Квайна-Маккласки. По методу Квайна-Маккласки и задаче минимального покрытия по таблице меток составлены содержательные алгоритмы, блок-схемы, а также приводится пример программной реализации этого метода. Выполнен синтез схемы для МДНФ с использованием логических элементов и интегральных схем серии К155.
Перечень ключевых слов, используемых в курсовом проекте:
ДНФ - дизъюнктивная нормальная форма;
ДСНФ - дизъюнктивная совершенная нормальная форма;
МДНФ - минимальная дизъюнктивная нормальная форма;
ИМС - интегральная микросхема;
НК - неопределенный коэффициент;
ФАЛ - функция алгебры логики.
Оглавление
Задание к курсовой работе
Глава 1. Определение минимальной дизъюнктивной нормальной формы логической функции устройства
1.1 Таблица истинности функции
1.2 Аналитическая форма логической функции
1.3 Минимизация ФАЛ
1.1.1 Метод прямого алгебраического преобразования
1.1.2 Метод Квайна
1.1.3 Метод Квайна-Маккласки
1.1.4 Метод карт Карно
1.1.5 Метод неопределенных коэффициентов
Глава 2. Формализация задачи минимизации ФАЛ
2.1 Задача определения простых импликант по методу Квайна-Маккласки
2.2 Задача минимального покрытия по таблице меток в методе Квайна
Глава 3. Синтез логической схемы
3.1 Синтез схемы для МДНФ в базисе Буля (И, ИЛИ, НЕ) с использованием двухвходовых логических элементов
3.2 Представление МДНФ в базисах Шеффера и Пирса
3.3 Сравнительный анализ аппаратурных затрат
Заключение
Список использованной литературы
Приложение
Рабочая программа решения задачи по методу Квайна-Маккласки
Рабочая программа решения задачи минимального покрытия по таблице меток в методе Квайна
Задание к курсовой работе
Задание 1. Определить МДНФ логические функции устройства.
1.1 Составить таблицу соответствия (истинности) функции.
1.2 Перевести логическую функцию от табличной к аналитической форме в виде ДСНФ.
1.3 Найти МДНФ следующими методами:
а) прямым (алгебраическим) преобразованием;
б) методом Квайна;
в) усовершенствованным методом Квайна (Квайна-Маккласки);
г) методом карт Карно;
д) методом неопределенных коэффициентов.
Задание 2. Составить алгоритм метода минимизации.
2.1. Составить содержательные (словесные) машинные алгоритмы минимизации функции по методу Квайна-Маккласки и задаче минимального покрытия по таблице меток.
2.2. Разработать граф-схемы алгоритмов.
2.3. Разработать логические схемы алгоритмов в нотации Ляпунова.
2.4. Разработать рабочие программы по алгоритмам.
Задание 3. Синтез логических схем функции.
3.1. Выполнить синтез схемы МДНФ в базисе Буля с использованием 2-х ходовых логических элементов и интегральных микросхем серии 155.
3.2. Функцию МДНФ в базисе Буля полученную в первом задании представить в базисах Шеффера и Пирса.
3.3. Обосновать выбор базиса по формулам МДНФ.
3.4. Реализовать в выбранном базисе логическую схему.
Глава 1. Определение МДНФ логической функции устройства
1.1 Таблица истинности функции
Составим таблицу истинности для заданной функции F(X1,X2,X3,X4).
№ |
X1 |
X2 |
X3 |
X4 |
F(X1, X2, X3, X4) |
|
0123456789101112131415 |
0000000011111111 |
0000111100001111 |
0011001100110011 |
0101010101010101 |
0101111101110101 |
1.2 Аналитическая форма логической функции
Для того, чтобы записать функцию алгебры логики в ДСНФ, берем те строки из таблицы истинности, для которых значение функции соответствует единице. Получим следующую таблицу:
№ |
X1 |
X2 |
X3 |
X4 |
|
134567910111315 |
00000011111 |
00111100011 |
01001101101 |
11010110111 |
Для каждой такой строки записываем минитерм. Буквы, входящие в минитерм, представляются в прямом виде, если этой букве соответствует “1” в таблице истинности, и в инверсном виде, если “0”. Получим следующие минитермы:
1. X1X2X3X4; 4. X1X2X3X4; 7. X1X2X3X4; 10. X1X2X3X4;
___ ___ ___ ___ ___ ___
2. X1X2X3X4; 5. X1X2X3X4; 8. X1X2X3X4; 11. X1X2X3X4;
___ ___ ___ ___ ___
3. X1X2X3X4; 6. X1X2X3X4; 9. X1X2X3X4;
Если взять дизъюнкцию этих минитерм, то получим функцию алгебры логики в виде ДСНФ:
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
f(X1X2X3X4) = X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V
___ ___ ___ ___ ___ ___ ___
V X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V X1X2X3X4.
1.3 Минимизация ФАЛ
1.3.1 Метод прямого алгебраического преобразования
Используя закон тавтологии и неполного склеивания имеем:
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
f(X1X2X3X4) = X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V
___ ___ ___ ___ ___ ___ ___
V X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V X1X2X3X4 V X1X2X3X4 =
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
=(X1X2X3X4 V X1X2X3X4)V(X1X2X3X4 V X1X2X3X4)V(X1X2X3X4 V X1X2X3X4)V
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
V(X1X2X3X4 V X1X2X3X4)V(X1X2X3X4 V X1X2X3X4)V(X1X2X3X4 V X1X2X3X4)V
___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
V(X1X2X3X4 V X1X2X3X4)V(X1X2X3X4 V X1X2X3X4)V(X1X2X3X4 V X1X2X3X4)V
___ ___ ___ ___ ___ ___ ___
V(X1X2X3X4 V X1X2X3X4)V(X1X2X3X4 V X1X2X3X4)V(X1X2X3X4 V X1X2X3X4)V
___ ___ ___ ___ ___ ___ ___
V(X1X2X3X4 V X1X2X3X4)V(X1X2X3X4 V X1X2X3X4)V(X1X2X3X4 V X1X2X3X4)V
___
V(X1X2X3X4 V X1X2X3X4) =
___ ___ ___ ___ ___ ___ ___ ___ ___ ___
= X1X2X4 V X1X3X4 V X2X3X4 V X1X3X4 V X2X3X4 V X1X2X3 V
___ ___ ___ ___ ___ ___
V X1X2X4 V X1X2X4 V X2X3X4 V X1X2X3 V X2X3X4 V X1X2X4 V
___ ___
V X1X3X4 V X1X2X3 V X1X3X4 V X1X2X4 =
___ ___ ___ ___ ___ ___
= (X1X2X4 V X1X2X4 V X1X3X4 V X1X3X4) V
___ ___ ___ ___ ___ ___
V (X1X2X4 V X1X2X4 V X2X3X4 V X2X3X4) V
___ ___ ___ ___ ___ ___
V (X1X3X4 V X1X3X4 V X2X3X4 V X2X3X4) V
___ ___
V (X1X3X4 V X1X3X4 V X2X3X4 V X2X3X4) V
___ ___ ___ ___ ___ ___
V (X1X2X3 V X1X2X3 V X1X2X4 V X1X2X4) V
___ ___
V (X1X2X4 V X1X2X4 V X2X3X4 V X2X3X4) V
___ ___ ___
V (X1X2X4 V X1X2X4 V X1X3X4 V X1X3X4) V X1X2X3 =
___ ___ ___ ___ ___
= X1X4 V X2X4 V X3X4 V X3X4 V X1X2 V X2X4 V X1X4 V X1X2X3 =
___ ___
= X1X2 V X4 V X1X2X3.
Дальнейшее упрощение невозможно.
1.3.2 Метод Квайна
При минимизации по методу Квайна предполагается, что исходная функция задана в виде ДСНФ. Функция алгебры логики f1(X1X2…Xn) называется импликантой ФАЛ f2(X1X2…Xn), если на любом наборе переменных, на которых значение f1 равно единице, значение f2 также равно единице. Простая импликанта функции - импликанта типа элементарной конъюнкции некоторых переменных, никакая часть которой не является импликантой.
Задача минимизации по методу Квайна состоит из двух этапов:
нахождение простых импликант;
нахождение минимального покрытия.
При нахождении простых импликант производится попарное сравнение всех минитерм, входящих в ДСНФ, с целью выявления возможности склеивания. Таким образом, удается снизить ранг минитермов. Эта процедура проводится до тех пор, пока не останется ни одного члена, допускающего склеивание с каким-либо другим минитермом. Минитермы, подвергшиеся склеиванию, отмечаются. Неотмеченные минитермы представляют собой простые импликанты.
Наборы 4-го ранга |
Наборы 3-го ранга |
||||
1 2 3 4 5 6 7 8 9 10 11 |
0001 0011 0100 0101 0110 0111 1001 1010 1011 1101 1111 |
1 (1-2) 2 (1-4) 3 (1-7) 4 (2-6) 5 (2-9) 6 (3-4) 7 (3-5) 8 (4-6) 9 (4-10) 10 (5-6) 11 (6-11) 12 (7-9) 13 (7-10) 14 (8-9) 15 (9-11) 16 (10-11) |
00*1 0*01 *001 0*11 *011 010* 01*0 01*1 *101 011* *111 10*1 1*01 101* 1*11 11*1 |
||
Наборы 2-го ранга |
Наборы 1-го ранга |
||||
1 (1-8) 2 (1-12) 3 (2-4) 4 (2-13) 5 (3-5) 6 (3-9) 7 (4-15) 8 (5-11) 9 (6-10) 10 (7-8) 11 (8-16) 12 (9-11) 13 (12-16) 14 (13-15) |
0**1 *0*1 0**1 **01 *0*1 **01 **11 **11 01** 01** *1*1 *1*1 1**1 1**1 |
1 (1-13) 2 (2-11) 3 (4-7) |
***1 ***1 ***1 |
||
В таблицах простые импликанты подчеркнуты. Следовательно их дизъюнкция даст нам сокращенную ДНФ, которую можно представить следующим образом:
___ ___
f(X1X2X3X4) = X1X2 V X4 V X1X2X3.
Полученное логическое выражение не всегда является минимальным. Поэтому исследуется возможность дальнейшего упрощения - нахождение минимального покрытия. Для этого составляется таблица, в строках которой записываются найденные простые импликанты, а в столбцах указываются минитермы исходного уравнения. Клетки этой таблицы отмечаются в случае, если простая импликанта входит в состав какого-либо минитерма.
0001 |
0011 |
0100 |
0101 |
0110 |
0111 |
1001 |
1010 |
1011 |
1101 |
1111 |
||
101* |
* |
* |
||||||||||
01** |
* |
* |
* |
* |
||||||||
***1 |
* |
* |
* |
* |
* |
* |
* |
* |
Как видно из таблицы покрыть все столбцы можно только всеми полученными простыми минитермами. Следовательно все они войдут в МДНФ.
1.3.3 Метод Квайна-Маккласки
В отличие от метода Квайна, метод Маккласки основывается на задании элементарных конъюнкций ДСНФ не в их натуральном виде, а в виде условных чисел, которые называются номерами элементарных конъюнкций ДСНФ (соответствующих конституент единицы). Метод Маккласки позволяет существенно уменьшить число сравнений, осуществляемых на первом этапе, Это достигается тем, что разбив все множества конституент единицы на группы по индексу, сравнение осуществляется только между соседними группами, а не попарно всех, как в методе Квайна. Для определения простых импликант по методу Квайна-Маккласки достаточно попарно сравнить только наборы, входящие в соседние группы с индексами, отличающимися на 1. Это условие является достаточным в силу того, что только в соседние группы могут входить наборы, отличающиеся в одном разряде, т.е. склеивающиеся. Проведем склеивание по методу Квайна-Маккласки.
Наборы 4-го ранга |
i |
i=1 |
i=2 |
i=3 |
i=4 |
|||
1 2 3 4 5 6 7 8 9 10 11 |
0001 0011 0100 0101 0110 0111 1001 1010 1011 1101 1111 |
1 2 1 2 2 3 2 2 3 3 4 |
0001 0100 |
0011 0101 0110 1001 1010 |
0111 1011 1101 |
1111 |
||
Распределенные наборы 4-го ранга |
Наборы 3-го ранга |
i |
i=1 |
i=2 |
i=3 |
i=4 |
|||
1 (1-2) 2 (1-4) 3 (1-7) 4 (2-6) 5 (2-9) 6 (3-4) 7 (3-5) 8 (4-6) 9 (4-10) 10 (5-6) 11 (6-11) 12 (7-9) 13 (7-10) 14 (8-9) 15 (9-11) 16 (10-11) |
00*1 0*01 *001 0*11 *011 010* 01*0 01*1 *101 011* *111 10*1 1*01 101* 1*11 11*1 |
3 2 1 2 1 4 3 3 1 4 1 3 2 4 2 3 |
*001 *011 *101 *111 |
0*01 0*11 1*01 1*11 |
00*1 01*0 01*1 10*1 11*1 |
010* 011* 101* |
||
Распределенные наборы 3-го ранга |
Наборы 2-го ранга |
i |
i=23 |
i=13 |
i=12 |
i=34 |
|||
1 (1-8) 2 (1-12) 3 (2-4) 4 (2-13) 5 (3-5) 6 (3-9) 7 (4-15) 8 (5-11) 9 (6-10) 10 (7-8) 11 (8-16) 12 (9-11) 13 (12-16) 14 (13-15) |
0**1 *0*1 0**1 **01 *0*1 **01 **11 **11 01** 01** *1*1 *1*1 1**1 1**1 |
23 13 23 12 13 12 12 12 34 34 13 13 23 23 |
0**1 1**1 |
*0*1 *1*1 |
**01 **11 |
01** |
||
Распределенные наборы 2-го ранга |
Наборов первого ранга всего один: ***1, таким образом он также является простой импликантой. Следовательно, простых импликант у нас 3:
101*
01**
***1
В алгебраической форме это будет выглядеть так:
___ ___
f(X1X2X3X4) = X1X2 V X4 V X1X2X3.
Дальнейшие действия аналогична методу Квайна.
1.3.4 Метод карт Карно
Метод карт Карно позволяет более наглядно, чем другие методы, находить склеивающиеся минитермы и производить минимизацию. Карта Карно представляет собой прямоугольную таблицу, построенную таким образом, что логически соседние конституенты единицы будут находиться в геометрически соседних квадратах и следовательно могут склеиваться. При этом геометрически соседними являются не только близлежащие ячейки, но и ячейки первой и последней строк, ячейки первого и последнего столбца.
Все единичные квадраты карты следует накрыть минимальным количеством правильных прямоугольников. Этого можно достигнуть, образовывая правильные прямоугольники, содержащие по возможности большее количество единичных квадратов.
___ ___ X1X2 |
___ X1X2 |
X1X2 |
___ X1X2 |
||
___ ___ X3X4 |
1 |
||||
___ X3X4 |
1 |
1 |
1 |
1 |
|
X3X4 |
1 |
1 |
1 |
1 |
|
___ X3X4 |
1 |
1 |
Для полученных прямоугольников получим следующие конъюнкции:
L1 - X4
___
L2 - X1X2
___
L3 - X1X2X3
МДНФ примет следующий вид:
___ ___
f(X1X2X3X4) = X1X2 V X4 V X1X2X3.
квайн маккласки логический функция
1.3.5 Метод неопределенных коэффициентов
В данном методе для определения МДНФ используют следующие свойства:
1. X1+X2+ … + Xn = 0, если все Xi = 0 (i=1…n)
2. X1+X2+ … + Xn = 1, если хотя бы один элемент Xi = 1 (i 1…n)
Составим уравнения для данного метода.
= 0
= 1
= 0
= 1
= 1
= 1
= 1
= 1
= 0
= 1
= 1
= 1
= 0
= 1
= 0
= 1
В полученных уравнениях вычеркиваем строки, для которых функция равна нулю. Все коэффициенты, которые входят в эти строки, равны нулю, поэтому находим их в остальных строках и вычеркиваем. В результате получим:
= 1
= 1
= 1
= 1
= 1
= 1
= 1
= 1
= 1
= 1
= 1
Как уже было сказано, для всех уравнений выполняется следующее условие: левая часть будет тождественна правой, если хотя бы один коэффициент равен 1. Все остальные могут быть равными 0. Для того, чтобы получить МДНФ, необходимо приравнять один коэффициент соответствующий минитермам минимального ранга.
= 1 X4
___
= 1 X1X2
___
= 1 X1X2X3
В итоге получим минимальную ДНФ:
___ ___
f(X1X2X3X4) = X1X2 V X4 V X1X2X3.
Глава 2. Формализация задачи минимизации ФАЛ
2.1 Задача определения простых импликант по методу Квайна-Маккласки
1. Начало
2. Вычислить вектор-столбец индексов строк матрицы ДСНФ.
3. Расположить строки матрицы ДСНФ по возрастанию их индексов и формировать подматрицы из строк с одинаковыми индексами.
4. Определить путем попарного сравнения каждой строки матрицы с индексом i со всеми строками матрицы с индексом i+1 логически соседние строки.
1, если строки логически соседние,
P =
0, в противном случае.
Если i-я строка матрицы с индексом i логически соседняя со строкой с индексом i +1, то перейти к пункту 5, в противном случае перейти к пункту 6.
5. Пометить “*” символ, по которому строки логически соседние и сформировать новую строку (n-1)-го ранга.
6. Формировать массив простых импликант.
7. Из строк (n-1)-го ранга формировать новые подматрицы по позиции расположения в них “*”.
8. Определить путем попарного сравнения первой строки матрицы с (1+m)-й строкой логически соседние строки в каждой подматрицы
1, если строки логически соседние,
P =
0, в противном случае.
Если строки логически соседние, то перейти к пункту 9, в противном случае перейти к пункту 6.
9. Пометить “*” символ, по которому строки логически соседние и формировать массивы по методу расположения двух меток.
10. Перейти к пункту 8.
11. Конец.
Граф-схема алгоритма метода Квайна-Маккласки
Логическая схема алгоритма в нотации Ляпунова
1 1 2 3 2 3
VНV1 V2V3Z1^V4vvV5V6vZ2^V7Z3^VK.
VН - Начало
V1 - Ввод матрицы ДСНФ исследуемой ФАЛ.
V2 - Вычислить вектор столбец индексов строк матрицы ДСНФ.
V3 - Расположить строки матрицы ДСНФ по возрастанию их индексов и формировать подматрицы из строк с одинаковыми индексами.
V4 - Пометить “*” символ, по которому строки логически соседние и формировать новую строку из (n-1)-го ранга.
V5 - формировать массив простых импликант.
V6 - из строк (n-1)-го ранга формировать новую матрицу по позиции расположения метки.
V7 - Пометить “*” символ, по которому строки логически соседние, и формировать массивы по месту расположения двух меток.
Z1- Определить путем попарного сравнения каждой строки матрицы с индексом i со всеми строками матрицы с индексом i+1 логически соседние строки; если i-1 строка матрицы с индексом i логически соседние с 1-й строкой матрицы с индексом i+1, то перейти к V5, в противном случае к пункту V6.
Z2- Определить путем попарного сравнения 1-й строки матрицы с (1+m)-й строкой логически соседние строки в каждой подматрице; если строки логически соседние, то V9, в противном случае V6.
Z3- если нет больше склеивающихся наборов, то вывод результата, в противном случае V8.
2.2 Задача минимального покрытия по таблице меток в методе Квайна
Схема алгоритма для решения задачи минимального покрытия по таблице меток в методе Квайна
1. Начало.
2. Ввести матрицу ДСНФ исходной функции и простые импликанты, полученные в методе Квайна.
3. Составить таблицу меток.
4. Выбрать комбинацию из простых импликант.
5. Проверить, накрывают ли выбранные импликанты все столбцы таблицы меток. Если не накрывают, то переход к пункту 4.
6. Если данная комбинация не является минимальной, то переход к пункту 4.
7. Формируем минимальную ДНФ по выбранным простым импликантам.
8. Вывод полученной матрицы.
9. Конец.
Логическая схема алгоритма в нотации Ляпунова
1 2 1 2
VHV1V2V3V4 Z1 Z2V5V6VK
VH - начало.
V1 - ввести матрицу ДСНФ исходной функции и простые импликанты, полученные в методе Квайна.
V2 - составить таблицу меток.
V3 - выбрать комбинацию из простых импликант.
V4 - проверить, накрывают ли выбранные импликанты все столбцы таблицы меток.
Z1 - выбранные простые импликанты не накрывают всех столцов таблицы меток.
Z2 - данная комбинация не является минимальной.
V5 - формировать МДНФ.
V6 - вывод полученной матрицы.
VK - конец.
Граф-схема алгоритма
Глава 3. Синтез логической схемы
3.1 Синтез схемы для МДНФ в базисе Буля (И, ИЛИ, НЕ) с использованием двухвходовых логических элементов
В базисе Буля используется 3 логические схемы: НЕ, ИЛИ, И. Вот их графическое изображение:
X1 X1
__
X X X1VX2 X1*X2
X2 X2
Для аппаратной реализации минимальной ДНФ нам потребуется 3 ИМС серии К155 : одна ИМС К155ЛН1 (элементы НЕ), одна ИМС К155ЛЛ1 (элементы ИЛИ) и одна ИМС К155ЛИ1 (элементы И). Всего в базисе Буля используются 7 логических элементов. Схема для МДНФ в базисе Буля приведена в приложении.
3.2 Представление МДНФ в базисах Шеффера и Пирса
Базис Шеффера. Для того, чтобы реализовать минимальную ДНФ в базисе Шеффера, необходимо перевести базис Буля в базис Шеффера, в котором используется только один логический элемент: И-НЕ.
Формулы перевода из базиса Буля в базис Шеффера записываются следующим образом:
НЕ: X = X*X ИЛИ: X1VX2 = X1*X1 * X2*X2
И: X1*X2 = X1*X2 * X1*X2
Минимальная ДНФ выглядит так:
___ ___
f(X1X2X3X4) = X1X2 V X4 V X1X2X3.
Переведем ее в базис Шеффера с помощью указанных выше формул.
f(X1X2X3X4) = X1X2 V X4 V X1X2X3 = X4 · X1 · X2 · X1 · X3 · X2 =
= X4 · X1 · X2 · X1 · X3 · X2.
Отсюда видно, что для реализации минимальной ДНФ в базисе Шеффера требуется 10 элементов И-НЕ. Соответственно для аппаратной реализации нам потребуется 3 интегральные микросхемы К155ЛА3.
Базис Пирса. Для того, чтобы реализовать минимальную ДНФ в базисе Пирса, необходимо как и в предыдущем пункте перевести МДНФ из базиса Буля в базис Пирса, в котором используется только один элемент ИЛИ-НЕ.
Формулы перевода записываются следующим образом:
НЕ: X = XVX ИЛИ: X1VX2 = X1VX2 V X1VX2
И: X1*X2 = X1VX1 V X2VX2
Переведем МДНФ в базис Пирса.
f(X1X2X3X4) = X1X2 V X4 V X1X2X3 = X4 · X1 · X2 · X1 · X3 · X2.
Всего на реализацию МДНФ в базисе Пирса понадобится 11 логических элементов ИЛИ-НЕ, а для аппаратной реализации 3 ИМС серии К155 (К155ЛЕ1).
3.3 Сравнительный анализ аппаратурных затрат
Для проведения сравнительного анализа составим следующую таблицу:
Базисы |
НЕ |
и |
или |
и-не |
или-не |
Количество элементов |
Количество корпусов |
|
Буля |
2 |
3 |
2 |
- |
- |
7 |
3 |
|
Шеффера |
- |
- |
- |
10 |
- |
10 |
3 |
|
Пирса |
- |
- |
- |
- |
11 |
11 |
3 |
Итак, можно подвести итоги: на реализацию МДНФ в различных базисах требуется разное кол-во логических элементов, но целесообразно выбрать тот базис, который будет более универсальным и на реализацию которого потребуется меньшее кол-во логических элементов. Как видно из этой таблицы наиболее рационально было бы применить для аппаратной реализации базис Буля, так как в нем используется меньше всего микросхем при одно м том количестве корпусов ИМС.
Заключение
В процессе выполнения курсовой работы я познакомился с методами минимизации функции, научился применять их на практике, глубже изучил вопросы синтеза схем в базисах Буля, Шеффера и Пирса. В данной курсовой работе приведено пять методов минимизации функции алгебры логики. Рассматривая их, можно сделать вывод об эффективности работы того или иного метода для решения вручную или для машинной реализации.
Программная реализация метода Квайна несколько неудобна, поскольку необходимо программировать операции над массивами переменного размера. С этой стороны удобнее использовать метод неопределенных коэффициентов, где используются массивы фиксированного размера. Кроме того, в методе Квайна проводится большое число проверок на склеивание минитерм, значительную часть которых можно опустить. Этого недостатка лишен метод Квайна-Маккласки. Здесь следует сказать, что оба эти метода не могут дать минимальную ДНФ. С их помощью можно получить только множество конъюнкций (простые импликанты), одна из комбинаций которых и будет являться МДНФ. Это создает дополнительные проблемы в получении МДНФ с помощью этих методов.
Наиболее наглядным и простым их всех методов является метод карт Карно, поскольку он основан на человеческой способности к зрительному восприятию. Но по этой же причине, он является наиболее сложным для программной реализации, так как никакого зрительного восприятия у компьютера нет.
Методы минимизации очень важны при построении цифрового устройства, так как намного уменьшают аппаратурные затраты, что и продемонстрировано в данной работе.
Список использованной литературы
1. Гаджиев А.А. Методические указания к выполнению курсовой работы по дисциплине “Дискретная математика” для студентов специальности 22.01 (ВМКСиС). Махачкала, 1998 г.
2. Гаджиев А.А. Методические указания к выполнению лабораторного практикума по дисциплине “Дискретная математика” (часть 2. Математическая логика). Махачкала, 1998 г.
3. Савельев А.Я. Прикладная теория цифровых автоматов. Москва. 1987г.
Приложение
Приложение 1. Рабочая программа решения задачи по методу Квайна-Маккласки
Uses Crt;
Const
R = 4;
SR = 16;
Type
Diz = string[R];
Var
S :array[1..SR*2] of Diz;
Rez :array[1..SR*2] of Diz;
Flag :array[1..SR*2] of byte;
Y :array[1..SR] of byte;
IndexM : array[1..SR*2] of byte;
IndexS : byte;
IndexRez : byte;
i, j, k : byte;
FData : Text;
FRez : Text;
FDSNF : file of Diz;
FSImp : file of Diz;
{Функция формирования дизъюнкта}
Function MakeDiz(Number: byte): Diz;
Var
i : byte;
S : Diz;
C : char;
Begin
S:='';
for i:=0 to R-1 do
begin
C:=chr(((Number shr i) and $01) + 48);
Insert(C, S, 1);
end;
MakeDiz:=S;
End;
{Функция склеивания}
Procedure Stuck(S1, S2: Diz; IndexS1, IndexS2 : byte);
Var
i, k, n: byte;
Begin
k:=0; {кол-во разных}
for i:=1 to R do
if S1[i] <> S2[i] then
begin
k:=k+1;
n:=i;
end;
case k of
0 : begin
Inc(IndexRez);
Rez[IndexRez]:=S1;
Flag[IndexS1]:=1;
Flag[IndexS2]:=1;
end;
1 : if (S1[n]<>'*') and (S2[n]<>'*') then
begin
S1[n]:='*';
Inc(IndexRez);
Rez[IndexRez]:=S1;
Flag[IndexS1]:=1;
Flag[IndexS2]:=1;
end;
end;
End;
{Функция проверки на удаление пустого дизъюнкта}
Function Del(S : Diz): Boolean;
Var
i, k : byte;
Begin
Del:=False;
k:=0;
for i:=1 to R do
if S[i]='*' then
k:=k+1;
if k=R then
Del:=True;
End;
Procedure Clear;
Var
i, j : byte;
Begin
IndexS:=0;
for i:=1 to SR*2 do
begin
Flag[i]:=0;
S[i]:='';
end;
for i:=1 to IndexRez-1 do
if Flag[i]=0 then
for j:=i+1 to IndexRez do
if Rez[i]=Rez[j] then
Flag[j]:=1;
for i:=1 to IndexRez do
if Flag[i]=0 then
begin
Inc(IndexS);
S[IndexS]:=Rez[i];
end;
End;
{Процедура разбивает импликанты по индексам}
Procedure MakeIndex(F : Integer);
Var
i : Integer;
Function GetIndex(S : Diz; F : Integer): Integer;
Var
tS : Diz;
i, V, Code : Integer;
Begin
if F=0 then
begin
V:=0;
for i:=1 to 4 do
if S[i]='1' then
V:=V+1;
end
else
begin
tS:='';
for i:=1 to 4 do
if S[i]='*' then
tS:=tS+chr(i+48);
Val(tS, V, Code);
end;
GetIndex:=V;
End;
Begin
for i:=1 to IndexS do
IndexM[i]:=GetIndex(S[i], F);
End;
{Вывод на экран массива Rez}
Procedure PrintRezult(Step: Byte);
Var
IM : array[1..SR*2] of byte;
i, j, k, Count : byte;
Num : Integer;
Begin
ClrScr;
MakeIndex(Step);
for i:=1 to SR*2 do
IM[i]:=0;
if Step=0 then
WriteLn('Исходная ДНФ.')
else
WriteLn('Шаг : ', Step:2);
Count:=0; j:=1;
while Count<IndexS do
begin
Num:=1;
while IM[Num]=1 do
Num:=Num+1;
Num:=IndexM[Num];
k:=0;
for i:=1 to IndexS do
begin
GotoXY(j*8, 5+k);
if IndexM[i]=Num then
begin
Write(S[i]);
IM[i]:=1;
Count:=Count+1;
k:=k+1;
end;
end;
j:=j+1;
end;
ReadKey;
End;
{Основная программа}
Begin
ClrScr;
Assign(FDSNF, 'dsnf.dat');
Rewrite(FDSNF);
Assign(FSImp, 'simplimp.dat');
Rewrite(FSImp);
Assign(FRez, 'rezult.dat');
ReWrite(FRez);
{Считать массив Y из файла}
Assign(FData, 'func.dat');
Reset(FData);
for i:=1 to SR do
Read(FData, Y[i]);
Close(FData);
{Получить массив S}
for i:=1 to SR do
S[i]:=MakeDiz(i-1);
{Преоразовать S: оставив только те элементы, для которых Y=1. Результата в Rez}
IndexRez:=0;
for i:=1 to SR do
if Y[i]=1 then
begin
Inc(IndexRez);
Rez[IndexRez]:=S[i];
end;
for i:=1 to SR*2 do
S[i]:=Rez[i];
IndexS:=IndexRez;
for i:=1 to IndexS do
Write(FDSNF, S[i]);
PrintRezult(0);
{склеивание}
for i:=1 to R-1 do
begin
IndexRez:=0;
{------------------------------------------------------------------------}
for j:=1 to SR*2 do {подготовка массива Flag под склеивание}
Flag[j]:=0;
{------------------------------------------------------------------------}
for j:=1 to SR*2 do {склеивание}
Rez[j]:='';
for j:=1 to IndexS-1 do
for k:=j+1 to IndexS do
Stuck(S[j], S[k], j, k);
{------------------------------------------------------------------------}
for j:=1 to IndexS do {копирование несклеившихся компонент}
if Flag[j]=0 then
begin
Inc(IndexRez);
Rez[IndexRez]:=S[j];
end;
{------------------------------------------------------------------------}
Clear; {удаление одинаковых дизъюнктов}
{------------------------------------------------------------------------}
PrintRezult(i); {вывод результата на экран}
end;
{Удалить все дизъюнкты вида '****'}
IndexRez:=0;
for i:=1 to IndexS do
if not Del(S[i]) then
begin
Inc(IndexRez);
Rez[IndexRez]:=S[i];
end;
for i:=1 to IndexS do
Write(FSImp, S[i]);
PrintRezult(R);
Close(FSImp);
Close(FDSNF);
Close(FRez);
End.
Результаты работы программы
Исходная ДНФ.
0001 0011 0111 1111
0100 0101 1011
0110 1101
1001
1010
Шаг : 1
00*1 0*01 *001 010*
01*0 0*11 *011 011*
01*1 1*01 *101 101*
10*1 1*11 *111
11*1
Шаг : 2
0**1 *0*1 **01 01** 101*
1**1 *1*1 **11
Шаг : 3
***1 01** 101*
Шаг : 4
***1 01** 101*
Приложение 2. Рабочая программа решения задачи минимального покрытия по таблице
Uses Crt;
Type
string4 = String[4];
string16 = String[16];
TImpArray = array[1..16] of string4;
Var
DSNF : TImpArray; {ДСНФ}
SimpleImp : TImpArray; {Простые импликанты}
IndexDSNF : Integer;
IndexSImp : Integer;
QM : array[1..16, 1..16] of integer; {матрица покрытия}
S16Min : string16;
Procedure Input;
Var
FData : file of string4;
i : integer;
Begin
{ввод матрицы ДСНФ}
Assign(FData, 'dsnf.dat');
Reset(FData);
i:=0;
while not eof(FData) do
begin
Inc(i);
Read(FData, DSNF[i]);
end;
IndexDSNF:=i;
Close(FData);
{ввод простых импликант}
Assign(FData, 'simplimp.dat');
Reset(FData);
i:=0;
while not eof(FData) do
begin
Inc(i);
Read(FData, SimpleImp[i]);
end;
IndexSImp:=i;
Close(FData);
{конец ввода}
End;
Function Metka(n, m: integer): boolean;
Var
i, S : integer;
Begin
Metka:=False;
S:=0;
for i:=1 to 4 do
if SimpleImp[n, i]='*' then
S:=S+1
else
if SimpleImp[n, i]=DSNF[m, i] then
S:=S+1;
if S=4 then
Metka:=True;
End;
Procedure FormMatrix;
Var
i, j : integer;
Begin
for i:=1 to IndexSImp do
for j:=1 to IndexDSNF do
if Metka(i, j) then
QM[i, j]:=1
else
QM[i, j]:=0;
End;
Procedure PrintMatrix;
Var
i, j: integer;
Begin
TextColor(YELLOW);
WriteLn;
Write(' ');
for i:=1 to IndexDSNF do
Write(DSNF[i]:6);
WriteLn;
for i:=1 to IndexSImp do
begin
TextColor(YELLOW);
Write(SimpleImp[i]:6);
for j:=1 to IndexDSNF do
case QM[i, j] of
1 : begin TextColor(GREEN); Write(' #'); end;
0 : begin TextColor(GREEN); Write(' -'); end;
end;
WriteLn;
end;
End;
Function Bin(N :integer): string16;
Var
i : integer;
S : string16;
Begin
S:='0000000000000000';
i:=0;
while N>0 do
begin
Inc(i);
Insert(Chr((N mod 2)+48), S, i);
N:=N div 2;
end;
Bin:=S;
End;
Function Pokritie(var S: string16): boolean;
Var
V : array[1..16] of integer;
i, j, Sum: integer;
Begin
Pokritie:=False;
for i:=1 to 16 do
V[i]:=0;
for i:=1 to IndexSImp do
if S[i]='1' then
for j:=1 to IndexDSNF do
if QM[i, j]=1 then
V[j]:=1;
Sum:=0;
for i:=1 to IndexDSNF do
if V[i]=1 then
Sum:=Sum+1;
if Sum=IndexDSNF then
Pokritie:=True;
End;
Function Count(S: string16): integer;
Var
i, j, C: integer;
Begin
C:=0;
for i:=1 to IndexSImp do
if S[i]='1' then
for j:=1 to 4 do
if SimpleImp[i, j]<>'*' then
C:=C+1;
Count:=C;
End;
Procedure Min;
Var
i, j, Index : integer;
S16 : string16;
Begin
Index:=(1 shl IndexSImp)-1;
S16Min:='1111111111111111';
for i:=1 to Index do
begin
S16:=Bin(i);
if Pokritie(S16) then
if Count(S16)<Count(S16Min) then
S16Min:=S16;
end;
End;
Procedure PrintRezult;
Var
i : integer;
Begin
WriteLn;
WriteLn;
TextColor(YELLOW);
WriteLn(' МДНФ.');
WriteLn;
TextColor(GREEN);
for i:=1 to IndexSImp do
if S16Min[i]='1' then
WriteLn(SimpleImp[i]:8);
End;
Begin
ClrScr;
WriteLn('Нахождение минимального покрытия по таблице меток.');
Input; {ввод данных}
FormMatrix; {формирование матрицы покрытия для ее дальнейшей обработки}
PrintMatrix; {вывод матрицы}
Min; {нахождение минимального покрытия по таблице меток}
PrintRezult; {печать МДНФ}
ReadKey;
End.
Результаты работы программы
Нахождение минимального покрытия по таблице меток.
0001 0011 0100 0101 0110 0111 1001 1010 1011 1101 1111
***1 # # - # - # # - # # #
01** - - # # # # - - - - -
101* - - - - - - - # # - -
МДНФ.
***1
01**
101*
Размещено на Allbest.ru
Подобные документы
Определение МДНФ логической функции устройства различными методами (Квайна, Петрика, неопределенных коэффициентов и др.). Составление алгоритма метода минимизации функции и разработка его рабочих программ. Выполнение синтеза схемы логического устройства.
курсовая работа [60,2 K], добавлен 21.11.2010Определение констант нуля и установление эквивалентности линейных функций при помощи таблицы истинности. Нахождение минимальной дизъюнктивной нормальной формы функции с помощью метода неопределенных коэффициентов. Преобразование функции методом Квайна.
контрольная работа [335,2 K], добавлен 05.07.2014Синтез схемы, реализующей функцию, заданную кубическим комплексом в универсальном базисе логических элементов ИЛИ-НЕ. Нахождение минимального и построение факторизованного покрытий. Составление логической схемы и ее проверка контролирующим тестом.
курсовая работа [261,7 K], добавлен 16.06.2011Логическая переменная в алгебре логики. Логические операции: отрицание, конъюнкция, дизъюнкция, импликация, эквивалентность. Основные законы алгебры логики. Правила минимизации логической функции (избавление от операций импликации и эквивалентности).
курсовая работа [857,2 K], добавлен 16.01.2012Логика - наука о законах и формах мышления, а основное понятие алгебры логики - высказывание. Основные понятия и тождества булевой алгебры. Изучение методов минимизации булевых функций. Метод Квайна, основанный на применении двух основных соотношений.
контрольная работа [178,2 K], добавлен 20.01.2011Алгоритм построения многочлена Жегалкина по совершенной дизъюнктивной нормальной форме. Диаграмма Эйлера-Венна, изображение универсального множества и подмножества. Проверка самодвойственности, монотонности и линейности логической функции двух переменных.
контрольная работа [227,5 K], добавлен 20.04.2015Основные аксиомы и тождества алгебры логики. Аналитическая форма представления булевых функций. Элементарные функции алгебры логики. Функции алгебры логики одного аргумента и формы ее реализации. Свойства, особенности и виды логических операций.
реферат [63,3 K], добавлен 06.12.2010Составление таблицы истинности. Получение уравнений функций алгебры логики для заданных выходов. Реализация схемы логического автомата на электромагнитных реле РП-23, на диодной матрице. Реализация структурной схемы логического автомата, на микросхемах.
курсовая работа [862,4 K], добавлен 12.12.2012Минимизация заданного выражения алгебры множеств на основании известных свойств. Анализ заданного бинарного отношения в общем виде. Вывод формул булевых функций для каждого элемента и схемы в целом. Преобразование формулы булевой функции логической схемы.
контрольная работа [286,7 K], добавлен 28.02.2009Логический синтез устройства с использованием соотношений булевой алгебры. Составление таблицы истинности. Основные соотношения булевой алгебры. Логическая функция в смысловой, словесной, вербальной, табличной и аналитической математической формах.
лабораторная работа [83,6 K], добавлен 26.11.2011