Чтобы попрактиковаться в составлении логических схем рекомендуется использовать программу Logisim, которую можно загрузить с сайта разработчика здесь или отсюда. Эта программа работает в среде Java Runtime. Поэтому, если на вашей машине еще не установлена Java Runtime, установите ее с официального сайта здесь.
Для реализации булевых операций над двоичными сигналами, представленными в виде уровней напряжения, используют специальные электронные схемы, называемые логическими вентилями. Ключевым элементом этих схем, как правило, является транзистор, изготавливаются они по микроэлектронной технологии и используются либо в виде отдельных микросхем, либо как встроенные компоненты в составе более сложных микроэлектронных устройств.
Условное обозначение логических вентилей, реализующих основные логические операции, приведено на рисунке
Логические вентили используются разработчиком цифровых устройств для практической реализации логических функций, обеспечивающих работу устройства в соответствие с техническим заданием. Если мы можем переформулировать техническое задание в терминах логики высказываний, то нам не составит труда записать алгебраическое выражение, описывающее логику работы разрабатываемого устройства. Вследствие того, что каждая логическая операция реализуется соответствующим вентилем, процесс построения схемы, соответствующей полученному алгебраическому выражению, как правило, не представляет трудностей. Переменные, участвующие в логическом выражении, при практической реализации в виде наборов входных и выходных двоичных сигналов. Предполагается, что входные двоичные сигналы получают с помощью специальных цифровых датчиков либо они поступают из других участков схемы. Выходной сигнал, получаемый после выполнения всех логических операций, используется либо самостоятельно для индикации состояния системы, либо как входной сигнал для других компонентов цифровой системы.
Для иллюстрации изложенного материала рассмотрим следующий пример. Предположим, что в соответствии с техническим заданием, мы должны разработать схему, которая должна подать сигнал для записи сообщений, поступивших на какой-либо из двух имеющихся каналов, на дискету, вставленную в дисковод. Если же при наличии сообщения в дисководе нет дискеты, схема должна обеспечить индикацию отсутствия дискеты.
Чтобы разработать схему устройства, обеспечивающего работу в соответствие с изложенным заданием, прежде всего, постараемся формализовать поставленное задание в терминах алгебры логики. Обозначим через A сигнал, принимающий единичное значение при наличии сообщения в первом канале. Аналогичным образом, сигнал B индицирует наличие сообщения во втором канале. Также введем переменную C, принимающую единичное значение при наличии дискеты в дисководе и нулевое значение при ее отсутствии. Единичное значение выходного сигнала F, вырабатываемого нашей схемы, служит для записи сообщений на дискету, а единичное значение выходного сигнала G, приводит к загоранию светодиода, индицируя отсутствие дискеты в дисководе, в то время как в каналах приема имеются сообщения. С помощью введенных обозначений не составляет труда записать логические выражения, соответствующие логике работы устройства: F = (A + B) * C и G = (A + B) * C’. Теперь осталось сопоставить полученным алгебраическим выражениям электронные схемы, используя логические вентили для реализации логических операций. В результате получаем следующие схемы.
Однако на практике не всегда удается столь просто формализовать задание в терминах логики высказываний и записать соответствующие логические выражения, особенно при большом количестве входных и выходных сигналов. Более общим методом формализации технического задания на разработку устройства является составление таблиц истинности., однозначно указывающих, при каких наборах входных сигналов выходной сигнал должен быть равен единице и при каких нулю.
В то же время составление схемы, обеспечивающей работу в соответствие с заданной таблицей истинности, не является столь же простой задачей, как составление схемы по алгебраическому выражению. В курсе математической логики доказывается, что любую логическую функцию, заданную с помощью таблицы истинности, можно представить алгебраическим выражением специального вида, представляющим собой сумму произведений входных переменных, составленных по правилу, которое мы сейчас опишем.
Чтобы составить требуемое алгебраическое выражение отметим все строки, для которых выходное значение равно единице, и для каждой такой строки составим произведение, включающее все входные переменные. При этом, если переменная в данной строке равна нулю, то в произведение она входит с отрицанием, если же она равна единице, то в произведение она входит без отрицания. Заметьте, что каждое такое произведение принимает единичное значение только лишь при одном наборе значений входных переменных, соответствующем данной строке; для всех других строк это произведение равно нулю. Результирующее алгебраическое выражение представляет собой логическую сумму всех, полученных таким образом, произведений.
Полученное таким образом алгебраическое выражение, как правило, не является оптимальным и его можно упростить, используя правила булевой алгебры. Отметим, что существуют различные методы оптимизации алгебраических выражений, изложенные в соответствующей литературе.