stringtranslate.com

Каноническая нормальная форма

В булевой алгебре любая булева функция может быть выражена в канонической дизъюнктивной нормальной форме ( CDNF ) [1] или минтермной канонической форме , а также в двойственной ей канонической конъюнктивной нормальной форме ( CCNF ) или макстермной канонической форме . Другие канонические формы включают полную сумму простых импликант или каноническую форму Блейка (и двойственную ей форму) и алгебраическую нормальную форму (также называемую Жегалкиным или Ридом – Мюллером).

Минтермы называются продуктами, потому что они представляют собой логическое «И» для набора переменных, а макстермы называются суммами, потому что они представляют собой логическое «ИЛИ» для набора переменных. Эти концепции двойственны из-за их взаимодополняющей симметрии, выраженной законами Де Моргана .

Две двойственные канонические формы любой булевой функции — это «сумма минтермов» и «произведение макстермов». Термин « Сумма произведений » ( SoP или SOP ) широко используется для обозначения канонической формы, которая представляет собой дизъюнкцию (ИЛИ) минтермов. Его двойник Де Моргана — это « Произведение сумм » ( PoS или POS ) для канонической формы, которая представляет собой соединение (И) максимальных терминов. Эти формы могут быть полезны для упрощения этих функций, что имеет большое значение при оптимизации булевых формул вообще и цифровых схем в частности.

Минтермс

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

Например, и являются 3 примерами 8 минтермов для булевой функции трех переменных , и . Обычное чтение последнего из них — a AND b AND NOT-c .

Существует 2 n минтермов из n переменных, поскольку переменная в выражении минтерма может быть либо в прямой, либо в дополненной форме — два варианта выбора для каждой переменной.

Индексирование минтермов

Минтермы часто нумеруются с помощью двоичной кодировки образца дополнения переменных, где переменные записываются в стандартном порядке, обычно в алфавитном порядке. Это соглашение присваивает значение 1 прямой форме ( ) и 0 — дополненной форме ( ); тогда минтерм . Например, минтерм имеет номер 110 2  = 6 10 и обозначается .

Функциональная эквивалентность

Данный минтерм n дает истинное значение (т. е. 1) только для одной комбинации входных переменных. Например, минтерм 5, a b ' c , является истинным только тогда, когда a и c оба истинны, а b является ложным — расположение входных данных, где a = 1, b = 0, c = 1, приводит к 1.

Учитывая таблицу истинности логической функции, можно записать функцию как «сумму произведений». Это особая форма дизъюнктивной нормальной формы . Например, если дана таблица истинности для арифметической суммы бита u логики позиции одного бита сумматорной схемы, как функция x и y от слагаемых и переноса, ci :

Заметив, что строки с выходным значением 1 — это 2-я, 3-я, 5-я и 8-я строки, мы можем записать u как сумму минтермов и . Если мы хотим это проверить: оценка всех 8 комбинаций трех переменных будет соответствовать таблице.

Макстермс

Для логической функции от n переменных термин суммы, в котором каждая из n переменных встречается один раз (либо в дополненной, либо в недополненной форме), называется maxterm . Таким образом, макстерм — это логическое выражение n переменных, в котором используются только оператор дополнения и оператор дизъюнкции . Макстермы представляют собой двойственную идею минтерма (т. е. демонстрируют дополнительную симметрию во всех отношениях). Вместо использования AND и дополнений мы используем OR и дополнения и действуем аналогичным образом.

Например, ниже приведены два из восьми максимальных терминов трех переменных:

а + б ′ + с
а ′ + б + с

Снова имеется 2 n maxterms из n переменных, поскольку переменная в выражении maxterm также может быть либо в прямой, либо в дополненной форме — два варианта выбора для каждой переменной.

Индексирование maxterms

Каждому макстерму присваивается индекс, основанный на противоположной традиционной двоичной кодировке, используемой для минтермов. Соглашение maxterm присваивает значение 0 прямой форме и 1 — дополненной форме . Например, мы присваиваем индекс 6 maxterm (110) и обозначаем этот maxterm как M 6 . Аналогично M 0 из этих трех переменных равно (000), а M 7 равно (111).

Функциональная эквивалентность

Очевидно, что maxterm n дает ложное значение (т. е. 0) только для одной комбинации входных переменных. Например, maxterm 5, a ′ + b + c ′, является ложным только тогда, когда оба a и c истинны, а b является ложным — расположение входных данных, при котором a = 1, b = 0, c = 1, дает 0.

Если дана таблица истинности логической функции, можно записать функцию как «произведение сумм». Это особая форма конъюнктивной нормальной формы . Например, если дана таблица истинности для бита переноса co логики позиции одного бита сумматорной схемы, как функция x и y от слагаемых и переноса, ci :

Заметив, что строки с выходным значением 0 — это 1-я, 2-я, 3-я и 5-я строки, мы можем записать co как произведение maxterms и . Если мы хотим это проверить:

оцененное для всех 8 комбинаций трех переменных, будет соответствовать таблице.

Дуализация

Дополнением минтерма является соответствующий макстерм. В этом легко убедиться, воспользовавшись законом де Моргана . Например:

Неканонические формы PoS и SoP

Часто каноническую форму минтерма можно упростить до эквивалентной формы SoP. Эта упрощенная форма по-прежнему будет состоять из суммы условий продукта. Однако в упрощенной форме возможно иметь меньше терминов продукта и/или терминов продукта, которые содержат меньше переменных. Например, следующая функция с тремя переменными:

имеет каноническое представление минтерма: , но имеет эквивалентную упрощенную форму: . В этом тривиальном примере очевидно, что , но в упрощенной форме меньше терминов-продуктов, а сам термин имеет меньше переменных.

Наиболее упрощенное представление функции SoP называется минимальной формой SoP .

Аналогично, каноническая форма maxterm может иметь упрощенную форму PoS.

Хотя этот пример был упрощен за счет применения обычных алгебраических методов [ ], в менее очевидных случаях удобным методом нахождения минимальной формы PoS/SoP функции с числом до четырех переменных является использование карты Карно .

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

Пример приложения

Приведенные выше примеры таблиц истинности для минтермов и макстерммов достаточны для установления канонической формы для однобитовой позиции при сложении двоичных чисел, но недостаточны для разработки цифровой логики, если ваш инвентарь вентилей не включает И и ИЛИ. Там, где производительность является проблемой (как в управляющем компьютере Apollo), доступными частями, скорее всего, будут NAND и NOR из-за дополняющего действия, присущего транзисторной логике. Значения определяются как состояния напряжения: одно около земли, другое около напряжения питания постоянного тока V cc , например +5 В постоянного тока. Если более высокое напряжение определяется как «истинное» значение 1, логический элемент ИЛИ-НЕ является самым простым и полезным логическим элементом.

В частности, вентиль ИЛИ-НЕ с 3 входами может состоять из 3 биполярных переходных транзисторов, все эмиттеры которых заземлены, а коллекторы соединены вместе и связаны с V cc через сопротивление нагрузки. Каждая база подключена к входному сигналу, а точка общего коллектора представляет выходной сигнал. Любой вход, который имеет значение 1 (высокое напряжение) по отношению к своей базе, замыкает эмиттер транзистора на коллектор, вызывая протекание тока через сопротивление нагрузки, что приводит к тому, что напряжение коллектора (выход) становится очень близким к земле. Этот результат не зависит от других входных данных. Только когда все три входных сигнала равны 0 (низкое напряжение), импедансы эмиттер-коллектор всех трех транзисторов остаются очень высокими. Тогда ток течет очень мало, и эффект делителя напряжения с сопротивлением нагрузки налагает на точку коллектора высокое напряжение, очень близкое к V cc .

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

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

Канонические и неканонические последствия вентилей НО

Набор из 8 вентилей ИЛИ-НЕ, если их входные данные представляют собой все комбинации прямых и дополнительных форм трех входных переменных ci, x и y , всегда создают минтермы, а не макстермы, то есть из 8 вентилей, необходимых для обработки всех комбинаций. из трех входных переменных только одна имеет выходное значение 1. Это потому, что вентиль ИЛИ-НЕ, несмотря на его название, лучше рассматривать (используя закон Де Моргана) как И дополнений его входных сигналов.

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

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

В примере с maxterm выше мы написали, но чтобы выполнить это с 4-входовым вентилем NOR, нам нужно заметить равенство NOR тех же minterms. То есть,

Компромиссы дизайна, рассматриваемые в дополнение к каноническим формам

Можно было бы предположить, что работа по проектированию сумматора на этом завершена, но мы не учли тот факт, что все три входные переменные должны присутствовать как в прямой, так и в дополнительной форме. В этом отношении нет никаких сложностей с слагаемыми x и y , поскольку они статичны на протяжении всего сложения и, таким образом, обычно удерживаются в схемах-защелках, которые обычно имеют как прямой, так и дополняющий выходы. (Простейшая схема-защелка, состоящая из вентилей ИЛИ-НЕ, представляет собой пару вентилей, перекрестно связанных в триггер: выход каждого подключен как один из входов к другому.) Также нет необходимости создавать дополнительную форму. суммы u . Однако перенос одной битовой позиции должен передаваться как перенос в следующую битовую позицию как в прямой, так и в дополнительной форме. Самый простой способ сделать это — пропустить co через вентиль ИЛИ-НЕ с 1 входом и пометить выход co ', но это добавит задержку вентиля в худшем возможном месте, замедляя пульсацию переносов справа налево. Дополнительный вентиль ИЛИ-НЕ с 4 входами, создающий каноническую форму co ′ (из противоположных минтермов, таких как co ), решает эту проблему.

Компромисс для поддержания полной скорости таким образом включает в себя неожиданные затраты (помимо необходимости использовать ворота большего размера). Если бы мы просто использовали этот вентиль с 1 входом для дополнения co , минтерм был бы бесполезен , и вентиль, который его сгенерировал, можно было бы устранить. Тем не менее, это по-прежнему хорошая сделка.

Теперь мы могли бы реализовать эти функции точно в соответствии с их каноническими формами SoP и PoS, превратив вентили NOR в указанные функции. Вентиль ИЛИ-НЕ преобразуется в вентиль ИЛИ путем пропускания его выхода через вентиль ИЛИ-НЕ с 1 входом; и он превращается в логический элемент И путем пропускания каждого из его входов через логический элемент ИЛИ-НЕ с 1 входом. Однако этот подход не только увеличивает количество используемых вентилей, но и удваивает количество задержек вентилей при обработке сигналов, сокращая скорость обработки вдвое. Следовательно, всякий раз, когда производительность имеет решающее значение, стоит выйти за рамки канонических форм и применить булеву алгебру, чтобы нерасширенные вентили NOR выполняли свою работу.

Дизайн сверху вниз и снизу вверх

Теперь мы увидели, как инструменты minterm/maxterm можно использовать для разработки каскада сумматора в канонической форме с добавлением некоторой булевой алгебры, требуя всего 2 задержки вентиля для каждого из выходов. Это «нисходящий» способ проектирования цифровой схемы для этой функции, но является ли он лучшим способом? Дискуссия сосредоточилась на определении «самого быстрого» как «лучшего», и дополненная каноническая форма безупречно соответствует этому критерию, но иногда преобладают другие факторы. Основная цель проектировщика может заключаться в минимизации количества вентилей и/или минимизации разветвлений сигналов на другие вентили, поскольку большие разветвления снижают устойчивость к ухудшенному источнику питания или другим факторам окружающей среды. В таком случае дизайнер может разработать проект канонической формы в качестве основы, затем попробовать разработку снизу вверх и, наконец, сравнить результаты.

Разработка снизу вверх включает в себя замечание того, что u = ci XOR ( x XOR y ), где XOR означает исключающее ИЛИ [истина, когда любой из входных данных истинен, но не когда оба ввода истинны], и что co = ci x + xy + y ci . Одна из таких разработок требует всего двенадцать вентилей ИЛИ: шесть вентилей с 2 ​​входами и два вентиля с 1 входом для создания u за 5 задержек, плюс три вентиля с 2 входами и один вентиль с 3 входами для создания co ' за 2 задержки. Каноническая базовая линия включала восемь вентилей ИЛИ-НЕ с 3 входами плюс три вентиля ИЛИ-НЕ с 4 входами для создания u, co и co ′ с задержкой в ​​2 вентиля. Если в состав схемы действительно входят вентили ИЛИ-НЕ с 4 входами, каноническая конструкция сверху вниз выглядит выигрышной как по количеству вентилей, так и по скорости. Но если (вопреки нашему удобному предположению) схемы на самом деле представляют собой 3-входовые вентили ИЛИ-НЕ, из которых два требуются для каждой 4-входовой функции ИЛИ-НЕ, то каноническая конструкция требует 14 вентилей по сравнению с 12 для восходящего подхода, но по-прежнему вычисляет цифру суммы u значительно быстрее. Сравнение разветвлений представлено в таблице:

В описании развития снизу вверх в качестве результата упоминается co ′, но не co . Неужели этот дизайн просто никогда не нуждается в прямой форме выполнения? Ну и да и нет. На каждом этапе вычисление co ′ зависит только от ci ′, x ′ и y ′, что означает, что распространение переноса колеблется вдоль битовых позиций так же быстро, как и в каноническом проекте, без какого-либо развития co . Вычисление u , которое действительно требует, чтобы ci было сделано из ci ' с помощью NOR с 1 входом, происходит медленнее, но для любой длины слова схема платит этот штраф только один раз (когда появляется самая левая цифра суммы). Это связано с тем, что эти вычисления перекрываются, каждый в своем маленьком конвейере, не влияя на то, когда может быть вычислен суммарный бит следующей битовой позиции. И конечно, co ' из крайней левой позиции бита, вероятно, придется дополнить как часть логики, определяющей, произошло ли сложение. Но при использовании вентилей ИЛИ-НЕ с 3 входами схема «снизу вверх» почти так же быстро выполняет параллельное сложение при нетривиальной длине слова, сокращает количество вентилей и использует меньшие разветвления... так что она выигрывает, если количество вентилей и/или разветвление имеют первостепенное значение!

Мы оставим точную схему восходящей схемы, в которой все эти утверждения верны, в качестве упражнения для заинтересованного читателя, опираясь на еще одну алгебраическую формулу: u = ci ( x XOR y ) + ci ′( x XOR y )']'. Такое отделение распространения переноса от формирования суммы повышает производительность сумматора с упреждающим переносом по сравнению с сумматором со пульсирующим переносом .

Применение в проектировании цифровых схем

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

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

Большинство вентильных схем принимают более двух входных переменных; например, космический управляющий компьютер «Аполлон» , который стал пионером в применении интегральных схем в 1960-х годах, был построен только с одним типом вентиля, ИЛИ-НЕ с тремя входами, выходной сигнал которого истинен только тогда, когда все три входа ложны. [2] [ нужна страница ] [3]

Смотрите также

Рекомендации

  1. ^ Питер Дж. Пал; Рудольф Дамрат (06 декабря 2012 г.). Математические основы вычислительной техники: Справочник. Springer Science & Business Media. стр. 15–. ISBN 978-3-642-56893-0.
  2. ^ Холл, Элдон К. (1996). Путешествие на Луну: история компьютера управления Аполлоном . АААА. ISBN 1-56347-185-Х.
  3. ^ "Схема УПРАВЛЯЮЩЕГО КОМПЬЮТЕРА АПОЛЛОНА (AGC)" . klabs.org . Рич Кац . Проверено 19 июня 2021 г. Чтобы увидеть, как логика вентиля ИЛИ использовалась в АЛУ управляющего компьютера Apollo, выберите любую из записей 4-БИТНОГО МОДУЛЯ в Указатель чертежей и разверните изображения по желанию.

дальнейшее чтение

Внешние ссылки