Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция по архитек 2.doc
Скачиваний:
7
Добавлен:
10.11.2019
Размер:
272.9 Кб
Скачать

144 Глава 3. Цифровой логический уровень

Чтобы увидеть, каким образом осуществляется этот другой тип записи, отме­тим, что любую булеву функцию можно определить, указав, какие комбинации значений переменных дают значение функции 1. Для функции, приведенной на рис. 3.3, а, существует 4 комбинации переменных, которые дают значение функ­ции 1. Мы будем рисовать черту над переменной, чтобы показать, что ее значение инвертируется. Отсутствие черты означает, что значение переменной не инверти­руется. Кроме того, мы будем использовать знак умножения (точку) для обозначе­ния булевой функции И (знак умножения может опускаться) и + для обозначения булевой функции ИЛИ. Например, ABC принимает значение 1, только если А=1, В=0 и С=1. АВ+ВС принимает значение 1, только если (А=1 и В=0) или (В=1 и С=0). В таблице на рис. 3.3, а функция принимает значение 1 в четырех строках: ABC, ABC, ABC и ABC. Функция М принимает значение истины (то есть 1), если одно из этих четырех условий истинно. Следовательно, мы можем написать

М=АВС+АВС+АВС+АВС.

Это компактная запись таблицы истинности. Таким образом, функцию от п переменных можно описать суммой максимум 2" произведений, при этом в каж­дом произведении будет по п множителей. Как мы скоро увидим, такая формули­ровка особенно важна, поскольку она ведет прямо к реализации данной функции с использованием стандартных вентилей.

Важно понимать различие между абстрактной булевой функцией и ее реализа­цией с помощью электронной схемы. Булева функция состоит из неременных, на­пример А, В и С, и операторов И, ИЛИ и НЕ. Булева функция описывается с по­мощью таблицы истинности или специальной записи, например:

F=ABC+ABC.

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

Реализация булевых функций

Как было сказано выше, представление булевой функции в виде суммы максимум 211 произведений делает возможной реализацию этой функции. На рисунке 3.3 мож­но увидеть, как это осуществляется. На рисунке 3.3, б входные сигналы А, В и С показаны с левой стороны, а функция М, полученная на выходе, показана с правой стороны. Поскольку необходимы дополнительные величины (инверсии) входных переменных, они образуются путем провода сигнала через инверторы 1,2 и 3. Что­бы сделать рисунок понятней, мы нарисовали 6 вертикальных линий, 3 из которых связаны с входными переменными, а 3 другие — с их инверсиями. Эти линии обес­печивают передачу входного сигнала к вентилям. Например, вентили 5, 6 и 7 в качестве входа используют А. В реальной схеме эти вентили, вероятно, будут не­посредственно соединены проводом с А без каких-либо промежуточных вертикаль­ных проводов.

Схема содержит четыре вентиля И, по одному для каждого члена в уравнении для М (то есть по одному для каждой строки в таблице истинности с результа­том 1). Каждый вентиль И вычисляет одну из указанных строк таблицы истинное-

" I

Вентили и булева алгебра 145

ти. В конце концов все данные произведения суммируются (имеется в виду опе­рация ИЛИ) для получения конечного результата.

Посмотрите на рис. 3.3, б. В этой книге мы будем использовать следующее со­глашение: если две линии на рисунке пересекаются, связь подразумевается только в том случае, если на пересечении указана жирная точка. Например, выход венти­ля 3 пересекает все 6 вертикальных линий, но связан он только с С. Отметим, что другие авторы могут использовать другие соглашения.

Из рисунка 3.3 должно быть ясно, как реализовать схему для любой булевой функции:

  1. Составить таблицу истинности для данной функции.

  2. Обеспечить инверторы, чтобы порождать инверсии для каждого входного сигнала.

  3. Нарисовать вентиль И для каждой строки таблицы истинности с результатом 1.

  4. Соединить вентили И с соответствующими входными сигналами.

  5. Вывести выходы всех вентилей И в вентиль ИЛИ.

Мы показали, как реализовать любую булеву функцию с использованием вен­тилей НЕ, И и ИЛИ. Однако гораздо удобнее строить схемы с использованием одного типа вентилей. К счастью, можно легко преобразовать схемы, построенные по предыдущему алгоритму, в форму НЕ-И или НЕ-ИЛИ. Чтобы осуществить такое преобразование, все, что нам нужно, — это способ воплощения НЕ, И и ИЛИ с по­мощью одного типа вентилей. На рисунке 3.4 показано, как это можно сделать, используя только вентили НЕ-И или только вентили НЕ-ИЛИ. Отметим, что суще­ствуют также другие способы подобного преобразования.

Для того чтобы реализовать булеву функцию с использованием только вен­тилей НЕ-И или только вентилей НЕ-ИЛИ, можно сначала следовать алгорит­му, описанному выше, и сконструировать схему с вентилями НЕ и И и ИЛИ. Затем нужно заменить многовходовые вентили эквивалентными схемами с ис­пользованием двухвходовых вентилей. Например, A+B+C+D можно поменять на (A+B)+(C+D), используя три двухвходовых вентиля. Затем вентили НЕ и И и ИЛИ заменяются схемами, изображенными на рис. 3.4.

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

Эквивалентность схем

Разработчики схем часто стараются сократить число вентилей, чтобы снизить цену, уменьшить занимаемое схемой место, сократить потребление энергии и т. д. Что­бы упростить схему, разработчик должен найти другую схему, которая может вы­числять ту же функцию, но при этом требует меньшего количества вентилей (или может работать с более простыми вентилями, например двухвходовыми вместо четырехвходовых). Булева алгебра является ценным инструментом в поиске эк­вивалентных схем.