Основы схемотехники: математическая логика и теория автоматов

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

1. Основы математической логики и методы упрощения логических выражений

Основы математической логики и методы упрощения логических выражений

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

Законы булевой алгебры и упрощение выражений

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

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

| Название закона | Формула для конъюнкции (И) | Формула для дизъюнкции (ИЛИ) | | :--- | :--- | :--- | | Переместительный | | | | Сочетательный | | | | Распределительный | | | | Правила де Моргана | | | | Закон поглощения | | |

Где , , — логические переменные, — операция логического умножения (конъюнкция), — операция логического сложения (дизъюнкция), а черта над переменной или выражением означает логическое отрицание (инверсию).

Рассмотрим пример аналитического упрощения функции:

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

Применяя распределительный закон, вынесем общий множитель за скобки: . Поскольку сумма переменной и ее инверсии всегда равна единице (), получаем: . Таким образом, сложная схема из трех логических элементов заменяется прямым проводом от входа .

Построение СДНФ и СКНФ по таблице истинности

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

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

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

Пример таблицы истинности для функции голосования большинства (три входа):

| | | | | | :--- | :--- | :--- | :--- | | 0 | 0 | 0 | 0 | | 0 | 0 | 1 | 0 | | 0 | 1 | 0 | 0 | | 0 | 1 | 1 | 1 | | 1 | 0 | 0 | 0 | | 1 | 0 | 1 | 1 | | 1 | 1 | 0 | 1 | | 1 | 1 | 1 | 1 |

Для построения СДНФ берем строки, где (это 4-я, 6-я, 7-я и 8-я строки):

Где — функция, , , — входные переменные, — логическое И, — логическое ИЛИ, — инверсия .

Минимизация с помощью карт Карно

Аналитическое упрощение (с помощью формул) требует интуиции и опыта. Для систематической минимизации функций от 2 до 6 переменных применяются карты Карно (Karnaugh maps). Это графический метод, основанный на склеивании соседних термов.

Карта Карно представляет собой двумерную таблицу, где каждая ячейка соответствует одной строке таблицы истинности. Ключевая особенность карты заключается в том, что соседние ячейки (по горизонтали и вертикали) отличаются значением только одной переменной. Это достигается использованием кода Грея для нумерации строк и столбцов.

!Карта Карно для трех переменных

Правила минимизации по карте Карно:

  • Заполните карту единицами в тех ячейках, где функция равна 1.
  • Объедините соседние единицы в прямоугольные контуры. Размер контура должен быть степенью двойки (1, 2, 4, 8 ячеек).
  • Контуры могут пересекаться, а края карты считаются «свернутыми» (верхний край соседствует с нижним, левый — с правым).
  • Цель — охватить все единицы минимальным количеством максимально больших контуров.
  • Каждый контур формирует одно слагаемое в итоговой функции. Переменные, которые меняют свое значение внутри контура, исключаются из выражения.

    Релейно-контактные схемы

    Исторически первые логические автоматы строились на электромеханических реле. Релейно-контактные схемы наглядно демонстрируют физический смысл логических операций.

    В таких схемах логическая переменная представляется контактом: нормально разомкнутым (прямое значение) или нормально замкнутым (инверсия).

    > Релейно-контактные схемы стали историческим мостом между абстрактной математикой и реальной инженерией, доказав, что логику можно «собрать» из проводов и переключателей.

    Базовые правила построения: * Последовательное соединение контактов реализует операцию логического И (конъюнкцию). Ток пройдет только в том случае, если замкнуты все контакты в цепи. * Параллельное соединение контактов реализует операцию логического ИЛИ (дизъюнкцию). Ток пройдет, если замкнут хотя бы один из параллельных путей.

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

    Теория автоматов: построение логических схем

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

    Интересным фактом теории автоматов является существование универсальных базисов. Это означает, что любую, даже самую сложную логическую схему, можно построить, используя только один тип логических элементов. Такими универсальными элементами являются вентили И-НЕ (NAND) и ИЛИ-НЕ (NOR).

    !Реализация базовых функций на элементах И-НЕ

    Рассмотрим, как получить базовые операции, используя только элементы И-НЕ (NAND): Операция НЕ (Инверсия): Если соединить оба входа двухвходового элемента И-НЕ* вместе и подать на них сигнал , на выходе мы получим . Операция И (Конъюнкция): Сначала сигналы и подаются на первый элемент И-НЕ, а затем результат пропускается через второй элемент И-НЕ*, работающий как инвертор (с объединенными входами). Двойная инверсия отменяет сама себя. Операция ИЛИ (Дизъюнкция): Согласно правилу де Моргана, . Поэтому сначала каждый сигнал инвертируется отдельным элементом И-НЕ, а затем оба инвертированных сигнала подаются на третий элемент И-НЕ*.

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

    2. Построение СДНФ и СКНФ на основе таблиц истинности

    Построение СДНФ и СКНФ на основе таблиц истинности

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

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

    От таблицы к алгебре: базовые понятия

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

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

    > Минтерм (конституента единицы) — это логическое произведение (конъюнкция) всех входных переменных, которое равно 1 только на одной конкретной комбинации входов, а на всех остальных равно 0.

    > Макстерм (конституента нуля) — это логическая сумма (дизъюнкция) всех входных переменных, которая равна 0 только на одной конкретной комбинации входов, а на всех остальных равна 1.

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

    Совершенная дизъюнктивная нормальная форма (СДНФ)

    СДНФ — это логическая сумма минтермов. Этот метод фокусируется на тех состояниях системы, где результат должен быть истинным (равен 1).

    Алгоритм построения СДНФ:

  • Найдите в таблице истинности все строки, где значение функции равно 1.
  • Для каждой такой строки составьте минтерм: перемножьте все входные переменные.
  • Если переменная в этой строке равна 1, запишите ее в прямом виде. Если переменная равна 0, запишите ее с инверсией (под чертой).
  • Соедините все полученные минтермы знаком логического сложения ().
  • Рассмотрим классический пример — логический элемент Исключающее ИЛИ (XOR). Он выдает 1, если сигналы на входах различаются.

    | | | (Результат) | | :--- | :--- | :--- | | 0 | 0 | 0 | | 0 | 1 | 1 | | 1 | 0 | 1 | | 1 | 1 | 0 |

    Функция равна единице во второй и третьей строках. * Для второй строки () минтерм выглядит как . * Для третьей строки () минтерм выглядит как .

    Складываем их и получаем СДНФ:

    !Процесс преобразования таблицы истинности в логическое выражение СДНФ и соответствующую аппаратную схему

    Совершенная конъюнктивная нормальная форма (СКНФ)

    СКНФ — это логическое произведение макстермов. В отличие от СДНФ, этот метод отталкивается от тех состояний, где функция должна выдавать ложь (равна 0).

    Алгоритм построения СКНФ:

  • Найдите в таблице истинности все строки, где значение функции равно 0.
  • Для каждой такой строки составьте макстерм: сложите все входные переменные.
  • Здесь правило инверсии работает наоборот: если переменная равна 0, пишем ее прямо. Если переменная равна 1, пишем ее с инверсией.
  • Соедините все полученные макстермы знаком логического умножения ().
  • Вернемся к таблице элемента XOR. Функция равна нулю в первой и четвертой строках. * Для первой строки () макстерм будет . * Для четвертой строки () макстерм будет .

    Перемножаем их и получаем СКНФ:

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

    Практический пример: Управление освещением

    Рассмотрим более сложную задачу из реальной жизни. Мы проектируем контроллер для уличного фонаря. У нас есть три датчика: * (Motion) — датчик движения (1 = есть движение, 0 = нет). * (Light) — датчик освещенности (1 = день, 0 = ночь). * (Switch) — ручной переключатель (1 = принудительно включить, 0 = авторежим).

    Выходной сигнал включает лампу (). Логика работы: лампа горит всегда, если нажат ручной переключатель. Если переключатель не нажат, лампа загорается только ночью при обнаружении движения.

    Составим таблицу истинности:

    | | | | | | :--- | :--- | :--- | :--- | | 0 | 0 | 0 | 0 | | 0 | 0 | 1 | 1 | | 0 | 1 | 0 | 0 | | 0 | 1 | 1 | 1 | | 1 | 0 | 0 | 1 | | 1 | 0 | 1 | 1 | | 1 | 1 | 0 | 0 | | 1 | 1 | 1 | 1 |

    В таблице 8 строк. Из них функция равна единице в 5 случаях, и равна нулю в 3 случаях.

    Если мы решим строить СДНФ, нам придется выписать 5 длинных минтермов и сложить их. Это будет громоздкое уравнение:

    Но что если использовать СКНФ? Нам нужно описать только строки с нулями (1-я, 3-я и 7-я строки). * Строка 1 (): макстерм * Строка 3 (): макстерм * Строка 7 (): макстерм

    Итоговая СКНФ:

    Как выбрать между СДНФ и СКНФ?

    Выбор формы записи зависит исключительно от целесообразности и количества строк в таблице истинности.

    Главное правило инженера: считайте нули и единицы в столбце результата. * Если единиц меньше, чем нулей — стройте СДНФ. Уравнение будет короче. * Если нулей меньше, чем единиц — стройте СКНФ. Это сэкономит время и место.

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

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

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