Русская логика – индикатор интеллекта





НазваниеРусская логика – индикатор интеллекта
страница3/21
Дата публикации28.07.2013
Размер3.06 Mb.
ТипДокументы
100-bal.ru > Математика > Документы
1   2   3   4   5   6   7   8   9   ...   21

Инженерная логика.




Глава первая

КОМБИНАЦИОННЫЕ ЛОГИЧЕСКИЕ ЦЕПИ




1.1 Основные положения алгебры логики



Анализ и синтез логических схем осуществляется на базе аппарата алгебры логики или булевой алгебры. Излагать весь аппарат не имеет смысла, так как в инженерной практике используются два-три закона алгебры логики.

В алгебре логики переменные могут принимать только два значения, 0 или 1. Для двух аргументов существуют 16 логических функций (операций, логических действий). Над переменными в основном производятся три логических действия: сложение, умножение, отрицание (инверсия), что соответствует функциям ИЛИ, И, НЕ. Все функции в булевой алгебре могут быть описаны с помощью таблицы истинности. В нижеследующих таблицах описаны функции И(f1), ИЛИ(f2),НЕ(f3).



Вместо функции И часто используется термин «конъюнкция», вместо функции ИЛИ - термин «дизъюнкция». Вместо функции НЕ употребляется термин «инверсия» или «отрицание». Для двоичной логики понятия «инверсия» и «отрицание» эквивалентны, но для многозначной дело обстоит иначе. По ЕСКД логические элементы, реализующие функции И(f1), ИЛИ(f2), НЕ(f3), изображаются так, как представлено на рисунке.



При написании логических формул для функции И используются следующие знаки: &, Λ, точка или ее отсутствие; для функции ИЛИ - V,+. Функция НЕ обозначается штрихом над аргументом. Мы для обозначения отрицания будем использовать апостроф. Таким образом, можно записать:

f1 = x2&x1 = x2 Λ x1 = x2x1

f2 = x2 V x1 = x2+x1

f3 = x’

Основные законы алгебры Буля.

Прежде, чем приступить к изложению основных законов алгебры логики, зафиксируем некоторые очевидные её положения.

1 + a = 1; 0 + a = a; a & 1 = a; a & 0 = 0; a + a’ = 1.

Эти соотношения легко проверяются подстановкой.

Как уже отмечалось, в булевой алгебре все операции осуществляются с логическими переменными и подчиняются законам алгебры логики. Опишем некоторые из них.

а) Переместительный закон

а + в = в + а ; ав = ва

б) Сочетательный закон

( а + в ) + с = а + ( в + с) ; ( ав )с = а(вс)

в) Распределительный закон

а( в + с ) = ав + ас ; а + вс = (а + в)( а + с )

г) Закон поглощения

а + ав = а( 1 + в ) = а ; а( а + в ) = а + ав = а

д) Закон склеивания

ав + ав’ = а ; ( а + в )(а + в’) = а

е) Идемпотентный закон

a + a = a; a & a = a

ё) Правила де Моргана

Эти правила справедливы для любого числа аргументов.

а + в + с + .... + z = ( а’в’с’...z’ )’

авс... = ( а’ + в’ + с’ + ... + z’ )’

Эти правила можно описать таким алгоритмом.

Для перехода от логической суммы к логическому произведению необходимо проделать следующие операции:

1) проинвертировать все слагаемые в отдельности;

2) заменить знаки дизъюнкции на знаки конъюнкции;

3) проинвертировать получившееся выражение.

Аналогично выполняется переход от логического произведения к логической сумме. В инженерной практике используются лишь правила де Моргана и закон склеивания (в виде карт Карно).

Свойства эквивалентности и неравнозначности.



Кроме основных функций И, ИЛИ, НЕ в алгебре логики часто используются функции равнозначности (эквивалентности) и неравнозначности (сумма по модулю 2).

Для обозначения этих функций используются следующие знаки : равнозначность - ~, сумма по модулю 2 - . Содержание этих функций отражено в таблице.



Из таблицы получаем:

f4 = а ~ в = а’в’ + ав

f5 = a  в = а’в + ав’

Из таблицы видно, что

f4 = f5’ или f5 = f4

Таким образом,

а’в’ + ав = ( ав’ + а’в )’ , или

а~в = ( а  в )’ , а  в = (а~в)’

Кроме того, автор обнаружил некоторые неожиданные свойства функций эквивалентности и неравнозначности:

ab’  a’в = ab’(a+b’)+(a’+b)a’b = ab’+a’b = а  в.

ab  a’в’ = ab(a+b)+(a’+b’)a’b’ = ав+a’b’ = а~в.

а  a’ = a+a’ = 1.

(a  в)(c+d) = (ac+ad)  (bc+bd).

(a  в)  (c d) = (a  c)  (b  d).

(a  в)  c = (ab+a’b’)c+(ab’+a’b)c’ = abc+a’b’c+ab’c’+a’bc’.

(a ~ b) ~ c = (ab+a’b’)c+(ab’+a’b)c’ = abc+a’b’c+ab’c’+a’bc’.

Т.е. удалось доказать, что



В то же время



Автором предложена гипотеза: сумма по модулю 2 для нечётного количества аргументов равна эквиваленции этих аргументов, а для чётного - инверсии эквиваленции тех же аргументов. Проверка с помощью САПР MAX+PLUS II не опровергла авторской гипотезы(см.нижепредставленные рисунки). Конечно, эту гипотезу можно доказать и аналитически, превратив её тем самым в закон. Или опровергнуть, приведя хотя бы один пример несоответствия. Предоставляю эту возможность наиболее дотошным математикам.

Кроме того, представляет определённый интерес мажоритарная функция 2 из 3.


Мажоритарность часто используется при создании высоконадёжных устройств и систем, в том числе и для построения спутниковых систем навигации, связи и мониторинга Земли и космического пространства.





Особое место в алгебре логики занимает функция импликации: a→b = a’+b. Физический смысл этого соотношения не может объяснить ни один академик. Он будет разъяснен в разделе «Базисы силлогистики».

Необходимо особо отметить свойство элементов И-НЕ и ИЛИ-НЕ. Это так называемый функционально полный базис: с помощью любого из этих элементов можно построить сколь угодно сложный компьютер, любую цифровую электронную схему управления.

1.2 Алгебра множеств.


Обычно множества изображаются в виде окружностей, эллипсов, прямоугольников, квадратов и других фигур. Однако переход от двумерности к одномерности, т.е. к скалярным диаграммам, позволяет существенно расширить возможности анализа и синтеза в алгебре множеств. Попробуем доказать идентичность функций и законов в алгебре логики и алгебре множеств.

Полная система булевских функций(z0 – z15) для двух аргументов(x,y) показана в таблице.



Эти функции для алгебры множеств можно представить с помощью скалярных диаграмм, которые предложены автором в качестве основного инструмента алгебры множеств. Здесь и далее в том случае, если аргумент или функция равны нулю, то они изображается тонкой линией, в противном случае – толстой.



Все вышеперечисленные законы булевой алгебры легко и просто доказываются с помощью алгебры множеств. Приведем, к примеру, графическое доказательство правила де Моргана для двух аргументов x+y = (x’y’)’.



Из скалярных диаграмм видно, что x+y = (x’y’)’. Далее будет показано, что минимизация функций в алгебре множеств не отличается от минимизации логических функций в алгебре логики. Таким образом, мы доказали, что алгебра логики и алгебра множеств идентичны.

В этом доказательстве не было никакой необходимости, поскольку аргументами в логике могут быть как отдельные переменные, так и множества. Следовательно, алгебра логики и алгебра множеств – синонимы. Создатель «алгебры множеств» и его последователи – невежды и бестолочи.

1.3. Синтез комбинационных схем



Синтез комбинационных схем можно проиллюстрировать решением простой задачи.

Задача 1.3.1.

Приёмная комиссия в составе трех членов комиссии и одного председателя решает судьбу абитуриента большинством голосов. В случае равного распределения голосов большинство определяется той группой, в которой оказался председатель приемной комиссии. Построить автомат для тайного голосования, обеспечивающий определение большинства голосов.
Решение.

Пусть f - функция большинства голосов. f = 1, если большинство членов комиссии проголосовало за приём абитуриента, и f = 0 в противном случае.

Обозначим через x4 голос председателя комиссии. Пусть x4 = 1, если председатель комиссии проголосовал за приём абитуриента. Аналогично представляются через x3, x2, x1 - голоса членов приёмной комиссии.

С учётом вышеуказанных допущений условие задачи можно однозначно представить в виде таблицы истинности.

Заполнение таблицы осуществляем с учётом того, что функция f является полностью определённой, т.е. она определена на всех возможных наборах переменных x1 - x4. Для n входных переменных существует N = 2n наборов переменных. В нашем примере N = 24 = 16 наборов.

Записывать эти наборы можно в любом порядке, но лучше в порядке возрастания двоичного кода.



Примечание. Здесь и далее под набором будем понимать конъюнкцию всех входных переменных. Существует множество научных определений для набора (конституента, терм, импликанта, минтерм и т.д.), но они только вносят путаницу.

Все наборы, на которых функция принимает значение 1 , будем называть единичными, или рабочими. Наборы, на которых функция принимает значение 0, будем называть нулевыми, или запрещенными.

Для того, чтобы по таблице истинности найти функцию f, достаточно выписать все единичные наборы и соединить их знаком дизъюнкции.

Таким образом,

f = x4’x3x2x1 + x4x3’x2’x1 + x4x3’x2x1’ + x4x3’x2x1 + x4x3x2’x1’ + x4x3x2’x1 + x4x3x2x1’ + x4x3x2x1

Полученная форма функции называется совершенной дизъюнктивной нормальной формой (СДНФ), так как каждое логическое слагаемое представляет собой конъюнкцию всех аргументов.

Очевидно, применяя основные законы булевой алгебры, мы могли бы аналитически уменьшить сложность полученного выражения. Но это наихудший способ минимизации булевых функций. Покажем это на примере вышеописанного автомата для тайного голосования. Представим полученную функцию в виде логической суммы цифровых рабочих наборов и произведём группировку слагаемых с целью минимизации результата на основе законов склеивания и идемпотентности:

f = 0111+1001+1010+1011+1100+1101+1110+1111 =

= (0111+1111)+(1001+1011)+(1010+1011)+(1100+1101)+(1110+1111) =

= -111+10-1+101-+110-+111- = -111+10-1+(101-+111-)+(110-+111-) =

= -111+10-1+1-1-+11-- = x3x2x1+ x4x3’x1+ x4x2+ x4x3.

Как мы потом увидим, результат минимизации должен быть компактнее. Но при аналитической минимизации придётся ввести неочевидную группировку: (1101+1111).

f = 0111+1001+1010+1011+1100+1101+1110+1111 =

=(0111+1111)+(1001+1011)+(1010+1011)+(1100+1101)+(1110+1111)+(1101+1111).= -111+10-1+101-+110-+111-+11-1 = -111+(10-1+11-1)+(101-+111-)+(110-+111-) = -111+1--1+1-1-+11-- = x3x2x1+ x4x1+ x4x2+ x4x3 = =x3x2x1+ x4 (x1+ x2+ x3).

После длинных и неочевидных группировок удалось, наконец, получить правильное решение в виде минимальной дизъюнктивной нормальной формы (МДНФ). Даже для 4-х аргументов аналитический метод минимизации не рационален.

Однако не всегда исходное условие задано в виде таблицы истинности.


Задача 2.
Найти МДНФ функции, заданной в виде выражения:

M = (ax=bc)(bx=ac).
Решение.

Вначале необходимо выполнить операцию логического умножения, а затем преобразовать полученную ДНФ в СДНФ. Далее по СДНФ заполняется таблица истинности и следует традиционная минимизация с помощью карты Карно. Однако перемножать сложные выражения достаточно утомительно, поэтому заменим эту операцию сложением на основе формулы де Моргана. Получим:

M’ = (ax  bc) + ( bx  ac) = ab’x+ac’x+a’bc+bcx’+a’bx+bc’x+acx’+ab’c.

Мы получили ДНФ инверсии логической функции М. Теперь необходимо развернуть её в СДНФ. Выполняется эта процедура достаточно просто добавлением недостающей переменной (в данном случае домножением на (c+c’), (b+b’) или (x+x’)):

ab’x = ab’x(c+c’) = ab’cx+ab’c’x = 1011+1001,

ac’x = ac’x(b+b’) = abc’x+ab’c’x = 1101+1001,

a’bc = a’bc(x+x’) = a’bcx+a’bcx’ = 0111+0110 и т.д.
Против полученых кодов СДНФ в таблице истинности вписываем нули, а для остальных кодов – единицы (см.Рис.1.8).



После занесения M’в карту Карно получим

M = a’b’+abcx+c’x’.

1.4.Минимизация полностью определённых булевых функций.



Существует несколько способов минимизации булевых функций. Прежде всего, это метод Квайна-Мак-Класки, метод Блека-Порецкого и метод минимизации с помощью карт Карно или диаграмм Вейча [26]. Здесь будет подробно излагаться метод карт Карно, как самый удобный метод, позволяющий быстро решать задачи минимизации булевых функций от достаточно большого числа аргументов (6-12). При этом получается минимальная форма в базисе И, ИЛИ, НЕ.

Существуют карты Карно на 2 , 3 , 4 , 5 и 6 переменных[14,26]. Причем последние стали использоваться достаточно недавно. На рисунке представлены карты Карно для 2, 3, 4, 5 и 6 аргументов.


1.5.Карты Карно для 7, 8, 9 и 10 переменных.



Карты Карно позволяют решать задачу минимизации логических функций элегантно и просто. Карно был не только сообразителен (кстати, за 30 лет я так и не нашёл его биографии: узнал только, что это американец 20-го столетия), но и, вероятно, весьма ленив: он считал, что его карты настолько прозрачны, что нет резона описывать алгоритм работы с ними (вполне возможно, что Карно и не представлял себе карт более, чем для 4-х переменных). Поэтому до сих пор неблагодарное человечество не научилось работать с этими картами. Алгоритм работы с картами Карно (этот алгоритм не известен ни одному логику в мире) был разработан автором более 30 лет назад, изложен в «Инженерных методах разработки цифровых устройств»(1977г.), «Русской логике для школьников» и «Русской логике против классической», а также на вышеназванных сайтах.

До сих пор сохранилось мнение, что карты Карно для 7-10 переменных являются труднообозримыми, поэтому ни в какой литературе, кроме [13,14], нельзя найти не только описания метода работы с картами Карно на большое количество переменных, но и самих карт. Этим же обстоятельством объясняется тот факт, что до недавнего времени в литературе редко встречались карты Карно даже для 6 переменных. Прежде, чем приступить к рассмотрению многоаргументных карт Карно, покажем на простых примерах, как осуществляется соседнее кодирование для произвольного числа переменных. Для одной переменной существует только соседнее кодирование, так как она кодируется нулём и единицей. Чтобы перейти к соседнему кодированию для двух переменных x2 и x1 предлагается следующая операция. Напишем в один столбец коды для x1. Между нулём и единицей для столбца x1 проведём ось, которую назовём осью симметрии 1-го ранга.

Проведём под этим столбцом ось симметрии, которую в дальнейшем будем называть осью симметрии 2-го ранга, и продолжим столбец кодов для x1 симметрично относительно этой оси (симметрично относительно оси симметрии 2-го ранга разместятся и оси симметрии 1-го ранга).

Дополним одноразрядный код до двухразрядного, для чего выше оси симметрии впишем для x2 нули , а ниже - единицы.

Таким образом, мы осуществили соседнее кодирование для двух переменных. Чтобы построить соседние коды для трёх переменных, проведём под столбцами двухразрядных кодов ось симметрии 3-го ранга и продолжим эти столбцы вниз симметрично относительно оси 3-го ранга, т.е. осуществим симметричное отображение относительно оси 3-го ранга.


Дополним двухразрядные коды до трёхразрядных, вписав в третьем разряде нули выше оси Карно 3-го ранга и единицы ниже этой оси. Получим соседнее кодирование для трёх переменных.

Следовательно, для того, чтобы осуществить соседнее кодирование для (Р+1) переменных, если известно соседнее кодирование для Р переменных, необходимо выполнить следующий алгоритм:

1) под столбцом известного Р-разрядного соседнего кодирования провести ось симметрии (Р+1)-го ранга ;

2) осуществить симметричное отображение относительно оси симметрии (Р+1) - ранга всех Р-разрядных кодов и осей симметрии всех рангов до ранга Р включительно ;

3) дополнить Р-разрядные коды слева одним разрядом, в котором записать 0 для всех кодов выше оси симметрии (Р+1)-го ранга и 1 для кодов, расположенных ниже оси симметрии (Р+1)-го ранга.

Соседнее кодирование карт Карно по вышеизложенному алгоритму производится как для вертикальных, так и для горизонтальных сторон карт. Примеры кодирования карт Карно приведены на рисунке. На нём стрелками обозначены оси симметрии, ранг которых отмечен цифрами, стоящими рядом со стрелками.


Покрытие всех единичных наборов булевой функции, размещённых в карте Карно, прямоугольниками Карно не вызывает затруднений, если функция зависит не более, чем от 6 переменных. Обозримость карт Карно для большего числа переменных усложняется, так как становится трудно определить, соответствует ли данная фигура покрытия понятию прямоугольника Карно. Определение достоверности прямоугольника Карно основано на принципе симметрии, значительно повышающем обозримость карт Карно, и осуществляется с помощью приводимого ниже алгоритма.

Принцип симметрии Лобанова


(Алгоритм проверки достоверности прямоугольника Карно)
1. Если предполагаемый прямоугольник Карно (ППК) охватывает одну ось симметрии, либо не охватывает ни одной, то перейти к п.4.

2. Если ППК располагается по обе стороны от нескольких осей симметрии, то он должен быть симметричен относительно той из этих осей, которая имеет максимальный ранг, иначе данная фигура не является прямоугольником Карно (ПК).

3. Разбить исходный ППК пополам. Считать любую его половину новым ППК. Перейти к п.1.

4. Конец.

Этот алгоритм необходимо применить дважды: относительно горизонтальных и относительно вертикальных осей симметрии.

Проверим достоверность прямоугольника Карно А на вышеприведённом рисунке. Прямоугольник А размещается по обе стороны от горизонтальной оси 4-го ранга. Симметричность его очевидна. Верхняя половина фигуры А симметрична относительно горизонтальной оси симметрии 1-го ранга. Так как ППК охватывает одну единственную ось симметрии, то проверка фигуры покрытия А на соответствие принципу симметрии относительно горизонтальных осей закончена.

Приступаем к проверке принципа симметрии относительно вертикальных осей симметрии. Фигура покрытия А размещается по обе стороны от вертикальной оси симметрии 4-го ранга и симметрична относительно этой оси. Левая половина фигуры А симметрична относительно оси симметрии 3-го ранга. После повторного деления левая половина фигуры покрытия оказалась симметричной относительно оси симметрии 2-го ранга. После 3-го деления ППК не охватывает ни одной оси симметрии, на этом проверка достоверности прямоугольника Карно заканчивается. Таким образом, фигура покрытия А действительно является прямоугольником Карно. Аналогично доказывается, что фигура покрытия В также является прямоугольником Карно. В результате минимизации прямоугольники А и В будут описаны следующими формулами:

a = x7x6’x1’ b = x7’x6x2.

На рисунке даны примеры фигур, не являющихся прямоугольниками Карно. Фигуры k, m и n не являются прямоугольниками Карно в силу нарушения принципа симметрии. Фигура n не симметрична относительно горизонтальной оси симметрии 2-го ранга, фигура m не симметрична относительно вертикальной оси симметрии 3-го ранга. Фигура k симметрична относительно оси симметрии 3-го ранга, но её половина не симметрична относительно оси 2-го ранга.

Поразительно, что за 30 лет никто из преподавателей и «учёных» так и не освоил моего алгоритма. До сих пор плодятся неграмотные методы работы с картами Карно, в которых утверждается, что достаточно убедиться, что в фигуре покрытия 2n клеточек, чтобы считать её ПК. Фигура m на Рис. 1.11 содержит 8 клеточек, но не является прямоугольником Карно.



Алгоритм «НИИРТА» графической минимизации булевых функций.



1. Заполнить карту Карно нулями и единицами в соответствии с таблицей истинности или заданным алгебраическим выражением.

2. Покрыть все элементарные квадраты Карно, в которых записаны единицы, минимальным количеством фигур покрытия, каждая из которых имеет максимальную площадь.

3. Проверить каждую фигуру покрытия на соответствие принципу симметрии Лобанова. В противном случае изменить контур фигуры покрытия в соответствии с указанным принципом симметрии так, чтобы она превратилась в прямоугольник Карно.

4. Каждому прямоугольнику Карно соответствует одна импликанта, причём если в границах прямоугольника Карно какая-либо переменная принимает значения как 0 , так и 1 , то эта переменная не войдёт в импликанту.

Применим карту Карно для решения задачи 1. На рисунке дан единственный минимальный вариант решения (иногда их бывает несколько).

f = x4x1 + x4x2 + x4x3 + x3x2x1

Эти выражения представляют собой пример дизъюнктивной нормальной формы (ДНФ).

В некоторых случаях приведение результата минимизации к скобочной форме позволяет уменьшить количество интегральных схем (ИС), необходимых для реализации булевой функции. Скобочная форма получается после вынесения общих множителей за скобки и для f имеет вид:

f = x4(x1 + x2 + x3) + x3x2x1



Кстати, полученный результат f = x4(x1 + x2 + x3) + x3x2x1 наводит на печальные размышления. На русский язык эта формула переводится так: «Абитуриент будет принят в учебное заведение, если за него проголосуют 3 члена комиссии или председатель вместе хотя бы с одним членом комиссии». Но ведь этот ответ мы могли бы получить и эвристически, на основе здравого смысла, просто немного подумав. Не пришлось бы рисовать таблицу истинности, заполнять карту Карно и т.д. Формальное решение логических задач иногда превращает нас в «мартышек с арифмометром», отвращает от мышления. Аналогичная опасность грозит и программистам, и микропрограммистам, т.е. схемотехникам.

В алгебре множеств также возможна минимизация логических функций. На рисунке представлены скалярные диаграммы, каждый столбец которых помечен соседними кодами. Фактически эти диаграммы представляют собой одномерную карту Карно, поэтому здесь применимы все вышеприведенные алгоритмы минимизации.



Вполне естественно, что результат минимизации не изменился:

f = x4(x1 + x2 + x3) + x3x2x1

1.6. Оценка сложности реализации булевых функций


Приблизительную оценку сложности реализации логической функции можно дать по ДНФ, подсчитав коэффициент сложности Кс, равный общему количеству переменных, входящих в ДНФ, плюс количество импликант. Например, для СДНФ к задаче 1 Кс = 32+8=40, а для отминимизированной функции Кс = 9+4=13.

Для того, чтобы перейти от логической функции (ЛФ) к электронной схеме, построенной на интегральных микросхемах (ИМС) типа И-НЕ, достаточно преобразовать ЛФ по правилу де Моргана. Например:

f = x4x1 + x4x2 + x4x3 + x3x2x1 = [(x4x1)’ & (x4x2)’ & (x4x3)’ & (x3x2x1)’]’.

Из полученного уравнения видно, что для реализации его в виде электронной схемы необходимы только элементы типа И-НЕ: 3 двухвходовых элемента(2И-НЕ), один трёхвходовой элемент(3И-НЕ) и один четырёхвходовой элемент(4И-НЕ). При этом нужно иметь в виду, что в одном корпусе ИМС могут быть размещены 4 элемента И-НЕ, 3 элемента 3И-НЕ , 2 элемента 4И-НЕ или 1 элемент 8И-НЕ. В наше время отпала необходимость в реализации ЛФ на элементах типа И-НЕ, поэтому можно сразу рисовать схему на элементах И и ИЛИ. Кроме того, применение программируемых интегральных схем (ПЛИС) вообще снимает проблему реализации: достаточно представить лишь готовую формулу ЛФ. Минимизация по таблицам истинности в САПР для ПЛИС зачастую оказывается неэффективной, поэтому советую иногда проверять результаты минимизации при работе в САПР.

При использовании базиса И-НЕ обе функции примут вид, представленный на рисунке. Из рисунка видно, что реализация функции по СДНФ потребовала 5 корпусов ИС, по минимальной форме - 1,58 корпуса ИС, по скобочной форме - 1,16 корпуса. Таким образом, минимизация по карте Карно дала нам трёхкратный выигрыш по корпусам ИС относительно реализации по СДНФ. Реализация по скобочной форме уменьшила объём оборудования ещё на 30%. Кстати, оценка экономии по Кс даёт приблизительно такой же результат: 40/13 = 3,08.


1.8. Формы задания булевых функций.


Об одной форме задания булевых функций мы уже говорили - это таблица истинности. Иногда применяется более компактная запись, использующая восьмеричные, десятичные или шестнадцатеричные эквиваленты наборов. Например, набор x4x3x2’x1’ может быть представлен обобщённым кодом 1100 , десятичным эквивалентом которого является число 12. Удобнее всего 8-чные и 16-чные коды.

Ниже приведена Паскаль-программа синтеза псевдослучайных кодов для задания произвольных булевых функций. Эта программа использовалась автором при проведении контрольных работ и выдаче домашних заданий в школе, а также на семинарских занятиях в вузах.

program nabor;

uses crt;

type stroka = string[4];

txt = file of stroka;

var f1:txt;

x,y,i,j,n,m,b:integer;

st:stroka;

{-------------------------------------------------------------}

function intchar(m:integer):char;

var

ch:char;

begin

case m of

0..9: ch:=chr(m+ord('0'));

10..35: ch:=chr(ord('A')+m-10);

else

begin

writeln('Ошибка ввода');

halt;

end;

end{case};

intchar:=ch;

end;

{--------------------------------------------------------------}

function int10(a:longint;b:integer):string;

{Пеpевод целого 10-ичного числа в (2..36)-ичные системы}

{a,b - исх. 10-ичн. число и основание сист. счисл. соотв-енно}

var s:string;

m,i,j:integer;

chrarr:array[0..30] of string;

begin

i:=0;

for j:=0 to 30 do chrarr[j]:=' ';

repeat

m:=(a mod b);

chrarr[i]:=intchar(m);

a:=a div b;

i:=i+1;

until (a=0);

s:=chrarr[i];

for j:=i-1 downto 0 do

s:=s + chrarr[j];

int10:=s;

end;

{=================================================}

begin

{$I-} {Внутр.проверка правильности операции с файлом отключена}

writeln('**************************************************************');

writeln('* Фоpмиpование файла случайных *');

writeln('* 2-pазpядных 4,8,16-ичных чисел для каpт Каpно *');

writeln('* Pезультиpующий файл - rnd.txt *');

writeln('* Лобанов В.И. 16-09-1997 *');

writeln('**************************************************************');

writeln;

write('Введите длину файла n и количество пеpеменных m(4,6,8) ');

readln(n,m);

assign(f1,'rnd.txt');{Связь f1 с pезультиpующим файлом }

{$I+} {Включить внутр.проверку}

rewrite(f1); {Открыть файл для записи}

case m of

4: begin b:=4; x:=15; end;

6: begin b:=8; x:=63; end;

8: begin b:=16;x:=255; end;

end;{case}

randomize;

for i:=1 to n do

begin

y:=random(x);

st:=int10(y,b);

write(st:8);

write(f1,st);

end;

close(f1);

writeln;

writeln('Файл rnd.txt сфоpмиpован');

writeln('Нажмите клавишу пpобела');

repeat until keypressed;

end.

Задача 3.

Полностью определённая булева функция от 4-х переменных задана десятичными рабочими наборами: РН(4) = 5, 6, 7, 8, 9, 10, 11.Число в скобках указывает количество переменных. Найти минимальную форму этой функции.

Решение.

Так как функция является полностью определённой, то запрещёнными наборами ЗН(4) являются наборы 0 - 4, 12 - 15. Исходя из этой информации, составляем таблицу истинности и осуществляем минимизацию по карте Карно.
Таблица 4.



РН(4)

x4 x3 x2 x1

f

5

0 1 0 1

1

6

0 1 1 0

1

7

0 1 1 1

1

8

1 0 0 0

1

9

1 0 0 1

1

10

1 0 1 0

1

11

1 0 1 1

1



ЗН(4)

x4 x3 x2 x1

f

0

0 0 0 0

0

1

0 0 0 1

0

2

0 0 1 0

0

3

0 0 1 1

0

4

0 1 0 0

0

12

1 1 0 0

0

13

1 1 0 1

0

14

1 1 1 0

0

15

1 1 1 1

0

По карте Карно получаем результат:

f = x4x3’ + x4’x3(x1 + x2)



Задание 1.

Найти минимальную форму полностью определённых булевых функций, заданных 10-чными рабочим наборами:

1-1) РН(4) = 0, 1, 5, 7 - 9, 13, 15. (Кс = 6)

1-2) РН(5) = 4, 6, 8, 10, 13, 17, 24, 30. (Кс = 28)

1-3) РН(6) = 1 - 8, 16 - 24, 32 - 40. (Кс = 32)

1-4) РН(7) = 7 - 15, 23 - 31, 39 - 47, 50 - 63. (Кс = )

1-5) РН(8) = 7 - 15, 100 - 132. (Кс = )

1.9. Минимизация недоопределённых булевых функций



Функция от n переменных называется недоопределённой, если она задана не на всех 2n наборах.

Задача минимизации такой функции заключается в оптимальном доопределении, которое позволило бы покрыть рабочие наборы минимальным количеством прямоугольников Карно, каждый из которых имел бы максимальную площадь.

Этот алгоритм был опубликован автором в 1977 году, но до сих пор его не освоили "логики".

Задача 4.

Найти минимальную форму функции y, представленной на рисунке 1.16.

Решение.

Функция задана только на 5 наборах. Добавим к трём рабочим наборам ещё пять, а именно: 0000, 0011, 1000, 1011, 1010. Все оставшиеся наборы доопределим как запрещённые. В результате такого доопределения получим прямоугольник Карно, состоящий из 8 элементарных квадратов Карно. Этому прямоугольнику соответствует функция: y = x3’.



В этом разделе изложен общепринятый подход к минимизации недоопределённых логических функций (НОЛФ). В электронике существуют дополнительные требования, связанные с противогоночной защитой цифрового устройства. В соответствии с этими требованиями желательно взаимное перекрытие всех прямоугольников Карно.

1.10. Минимизация системы булевых функций.



Существуют достаточно сложные методы минимизации системы булевых функций. Однако все эти методы не дают оптимального решения, поэтому при инженерном синтезе комбинационных схем осуществляется раздельная минимизация функций, которая тоже не всегда обеспечивает минимальное решение, но подкупает простотой.
Задача 5.

Построить преобразователь двоичного кода, получаемого на выходе делителя частоты на 12, в двоично-десятичный код. Условие задачи отражено в таблице. Делитель работает в коде 8-4-2-1. Такой делитель и преобразователь используются в электронных часах.


Решение.

Для каждой функции yi заполняем карту Карно, производим доопределение и осуществляем минимизацию. Весь процесс отражён на рисунке.



В результате минимизации получаем систему функций:

y1 = x1; y2 = x4’x2; y3 = x3;

y4 = x4x2’; y5 = x4x2 .

Задача 6.

Построить один разряд многоразрядного сумматора.

Решение.

Пусть ai и вi - значения i-ых разрядов слагаемых а и в , Pi и Si - значения переноса и суммы на выходе i-го разряда, Pi-1 - значение переноса на выходе предыдущего разряда, тогда работу сумматора можно описать с помощью таблицы истинности.



Имеем систему полностью определённых булевых функций. Производим раздельную минимизацию (см. рисунок).

Si = ai’вi’Pi-1 + ai’вiPi-1’ + aiвi’Pi-1’ + aiвiPi-1 = Pi-1(aii) + Pi-1’(ai  вi) =

= Pi-1 ~ (aii).

Pi = вiPi-1 + aiPi-1 + aiвi

Для реализации лучше Pi = aiвi + Pi-1(aii)’ , так как может быть использован общий для Si и Pi сомножитель (аii)’. Схема сумматора представлена на рисунке. Здесь же дано условное обозначение одноразрядного сумматора , где А и В - одноразрядные слагаемые, P0 и P1 - входной и выходной переносы, S1 - сумма.

На этом же рисунке изображён двухразрядный сумматор, выполненный на микросхеме 133ИМ2. Здесь А1, В1, А2, В2 - соответственно значения первых и вторых разрядов слагаемых А и В; S1 и S2 - 1-ый и 2-ой разряды суммы; P0 - входной перенос для первого разряда,

P2 - выходной перенос.



Задание 2.

2-1. Построить 2/(2-10) преобразователь для делителя частоты на 24 , работающего в коде 16-8-4-2-1. Этот преобразователь использовался на заре цифровой схемотехники в радиолюбительских электронных часах.

2-2. Построить 4-входовой сумматор для суммирования одноразрядных двоичных чисел.
1   2   3   4   5   6   7   8   9   ...   21

Похожие:

Русская логика – индикатор интеллекта iconУчебно-методический комплекс дисциплины логика федеральное агентство...
Логика, изучающая познающее мышление и применяемая как средство познания, возникла и развивалась в рамках теории познания, и в настоящее...
Русская логика – индикатор интеллекта iconКурс лекций дисциплины «логика»
Рабочая программа составлена в соответствии с государственными образовательными стандартами, направления "Логика " специальности...
Русская логика – индикатор интеллекта iconВ. К. Финн к структурной когнитологии: феноменология сознания с точки...
Ки и искусственного интеллекта – полигона экспериментальной проверки научных средств имитации рациональности и продуктивного мышления....
Русская логика – индикатор интеллекта iconРабочая программа учебной дисциплины логика и теория аргументации...
Рабочая программа составлена в соответствии с государственными образовательными стандартами, направления "Логика " специальности...
Русская логика – индикатор интеллекта iconСамостоятельная работа: 76 час. Итоговый контроль: экзамен I. Организационно-методический...
Цель дисциплины – познакомить студентов с основными задачами искусственного интеллекта, как области человеческой деятельности
Русская логика – индикатор интеллекта iconРабочая программа дисциплины логика степень выпускника бакалавр Форма...
...
Русская логика – индикатор интеллекта iconЛогика и теория аргументации
Рабочая программа определяет содержание и структуру учебной дисциплины "Логика" и предназначена для обучения студентов образовательных...
Русская логика – индикатор интеллекта iconЛогика сценической речи москва «просвещение» Запорожец Т. И. Логика...
Логика сценической речи. Учеб пособие для те­атр и культ просвет учеб заведений. М., «Просве­щение», 2010
Русская логика – индикатор интеллекта icon1. Мировоззрение, его структура. Исторические типы м- мифология, религия, философия
Рабочая программа составлена в соответствии с государственными образовательными стандартами, направления "Логика " специальности...
Русская логика – индикатор интеллекта iconУмк дисциплины Логика для специальности 080102. 65 “Мировая экономика
Требования к обязательному минимуму содержания и уровню подготовки выпускника вуза, предъявляемые Государственным образовательным...
Русская логика – индикатор интеллекта iconРеферат по информатике на тему История и тенденции развития искусственного интеллекта
На сегодняшний день проблема исследования ai занимает актуальное место в системе информационных наук. В своем реферате я попытаюсь...
Русская логика – индикатор интеллекта iconРеферат с чего начинается логика
Целью моей работы является выяснить, что изучает логика. Какими основными понятиями она оперирует. Что такое «истина» и«ложь» с точки...
Русская логика – индикатор интеллекта iconИгра как способ развития социального интеллекта учащихся на уроке иностранного языка
Проблема развития социального интеллекта продолжает демонстрировать актуальность, а также прочно утверждает свои позиции как неотъемлемый...
Русская логика – индикатор интеллекта iconЫх классах (Обобщение опыта работы) Учитель второй квалификационной...
Рабочая программа составлена в соответствии с государственными образовательными стандартами, направления "Логика " специальности...
Русская логика – индикатор интеллекта iconИзмерение коэффициента интеллекта и рисуночное тестирование детей...
Авторами проведено измерение коэффициента интеллекта детей с помощью пяти тестов [3], разработанных для детей от 5 до 11 лет, и с...
Русская логика – индикатор интеллекта iconУчебно-методический комплекс дисциплины «логика»
Учебно-методический комплекс «Логика» предназначен для студентов I курса специальности 030900. 62 Юриспруденция, составлен в соответствии...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск