Рейтинговые книги
Читем онлайн Занимательная электроника - Юрий Ревич

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 84 85 86 87 88 89 90 91 92 ... 152

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

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

Для переноса имеем полное совпадение с функцией «И». То есть, для того чтобы обеспечить перенос, нам нужен всего лишь один логический элемент «И», который получается комбинированием стандартного «И-НЕ» с инвертором[21]. Хуже с разрядом суммы: первые три значения обеспечивает элемент «ИЛИ», однако при сложении единиц возникает несоответствие (логическое и арифметическое сложения, как мы говорили, не адекватны друг другу). Нужен специальный элемент, который мог бы получить название элемент несовпадения: в самом деде, у него логическая единица на выходе тогда, когда входы имеют разное состояние, а если они одинаковы — на выходе ноль. Для того чтобы его сконструировать, взглянем на таблицу истинности элемента «И-НЕ» (для наглядности я повторю и ее):

Сравним таблицы «ИЛИ», «И-НЕ» и необходимой нам суммы: в первом случае мы получаем то, что надо, в верхних трех строках, во втором — в нижних. Как бы их объединить? Да очень просто — через функцию «И»:

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

Обозначение элемента «Исключающее ИЛИ» уже было показано на рис. 15.3. А как можно его составить из элементов «И-НЕ» и «ИЛИ-НЕ», показано на рис. 15.5.

Рис. 15.5. Варианты реализации элемента «Исключающее ИЛИ» и его таблица истинности

Верхний вариант полностью соответствует нашим рассуждениям и потребует двух корпусов микросхем, а нижний вариант — пример того, как можно построить «Исключающее ИЛИ» с использованием только одного типа элементов, в данном случае — «И-НЕ». Он более экономичен, т. к. потребует всего одного корпуса типа 561ЛА7. Попробуйте построить таблицу истинности для второго варианта, и вы убедитесь, что он работает «как заказывали» (есть и много других способов). Отметьте, что в первом варианте специальных элементов-инверторов мы не используем, а с целью экономии корпусов микросхем образуем их из элементов «И-НЕ» или «ИЛИ-НЕ» путем объединения входов — обычно так и поступают.

В любой логической серии есть, разумеется, и специальные микросхемы «Исключающее ИЛИ» (561ЛП2). Элемент «Исключающее ИЛИ», помимо способности выдавать сумму одноразрядных чисел, обладает многими интересными свойствами, к которым мы обратимся далее, а пока вернемся к сумматору.

На самом деле одноразрядный сумматор мы уже построили. Его схема приведена на рис. 15.6 вверху. Внизу на рис. 15.6 мы обозначили все устройство одним квадратиком.

Рис. 15.6. Схема одноразрядного полусумматора

Однако почему там написано «полусумматор»? Такой одноразрядный сумматор носит название полусумматора, потому что он не «умеет» одной важной вещи, а именно: разряд переноса-то он выдает, а вот учесть перенос от предыдущего разряда не может. Поэтому, чтобы складывать многоразрядные числа по-настоящему, нужно в каждом разряде поставить по два таких полусумматора, причем объединить их выходы переносов через «ИЛИ» (рис. 15.7).

Рис. 15.7. Схема многоразрядного сумматора

Так мы получили одноразрядный полный сумматор. Объединением таких сумматоров несложно соорудить устройство для сложения чисел любой разрядности. Если вы попробуете нарисовать схему сумматора для, скажем, восьми разрядов полностью с использованием принципиальных схем логических элементов по рис. 15.1, то ужаснетесь — это же сколько транзисторов надо, чтобы построить такое устройство? Много — в восьмибитном КМОП-сумматоре их получается 480 штук (а современные микросхемы, бывает, содержат и больше транзисторов). И это без учета того, что в систему должны входить еще, как минимум, два регистра для хранения исходных чисел и результата (в целях экономии результат помещают в регистр одного из слагаемых, тем самым слагаемое это уничтожая), а также другие логические схемы (для сдвига, для инверсии битов при манипуляции с отрицательными числами). То есть общее количество транзисторов составляет порядка тысячи.

Теперь понятно, почему микросхемы высокой степени интеграции содержат миллионы транзисторов и почему проблема отвода тепла стоит так остро! Один логический элемент КМОП из четырех транзисторов выделяет, согласно рис. 15.2, при частоте в единицы мегагерц всего-навсего полмилливатта тепла, но что будет, если таких элементов приходится ставить в количестве миллион штук? И еще при этом как можно больше повышать рабочую частоту?

Сумматоры, построенные по описанной схеме, выпускают, естественно, в интегральном исполнении (в «классической» КМОП это микросхема четырехразрядного сумматора 561ИМ1, есть и схема более универсального АЛУ — 561ИПЗ). В связи с многоразрядным сумматором возникает только один вопрос — а что делать с входом переноса самого первого, младшего разряда? Если мы просто складываем двоичные числа разрядности, соответствующей возможностям нашего сумматора (например, восьмиразрядные, т. е. длиной в один байт), то вход переноса младшего разряда присоединяется к логическому нулю. Соответственно, выход переноса старшего разряда остается «висеть в воздухе». Легко сообразить, что при этом, если складываются числа, в сумме составляющие более величины диапазона, старший разряд суммы «потеряется». Это явление при всей своей очевидности стоит того, чтобы рассмотреть его подробнее.

Предположим, у нас есть такой байтовый сумматор, и под числами мы имеем в виду обычные беззнаковые положительные числа, диапазон которых составит 0-255. Если мы сложим 128 (1000 0000) и 128 (1000 0000), то получим число 256 (1 0000 0000), которое имеет единицу в 9-м, отсутствующем у нас, разряде (заодно отметим этот результат как хорошую иллюстрацию к положению, гласящему, что умножение на 2 есть просто сдвиг всех разрядов влево на одну позицию). Таким образом, в разрядах сумматора мы получаем одни нули, что, конечно, есть результат некорректный. Для корректного сложения, к примеру, восьмибитовых чисел цам надо иметь 9 разрядов результата.

А как наращивать разряды, если, например, в микроконтроллере все регистры восьмиразрядные? Да очень просто — надо взять два таких регистра и соединить выход переноса одного со входом переноса другого. Тогда мы получим двухбайтовое число (или слово, как его чаще называют). В микропроцессорах, в том числе и в микроконтроллерах, мы, конечно, физически такое объединение сделать не можем — схема уже создана заранее, но в них зато есть специальный отдельный бит переноса (carry bit), в который автоматически помещается перенос в результате операций сложения, умножения и, кстати, вычитания и деления тоже.

Обработка двоичных сигналов с помощью логических элементов

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

Соответствующие диаграммы показаны на рис. 15.8, а. Из них вытекают следующие правила:

□ для элемента «И-НЕ» логический уровень 1 является «разрешающим», т. е. в этом случае последовательность на другом входе пропускается на выход без изменения (за исключением того, что она инвертируется, поскольку элемент у нас «И-НЕ», а не просто «И»). При логическом уровне 0 вентиль запирается, на выходе будет логическая 1;

□ для элемента «ИЛИ-НЕ» ситуация полностью противоположна: «разрешающим» является логический уровень 0, т. е. в этом случае последовательность на другом входе пропускается на выход (также с инверсией). При логическом уровне 1 вентиль запирается, на выходе будет логический 0;

□ для «Исключающего ИЛИ» все еще интересней — в зависимости от того, 0 на входе или 1, относительно другого входа элемент ведет себя, соответственно, как повторитель или как инвертор, что дает довольно широкие возможности для управления двоичными последовательностями.

1 ... 84 85 86 87 88 89 90 91 92 ... 152
На этой странице вы можете бесплатно читать книгу Занимательная электроника - Юрий Ревич бесплатно.

Оставить комментарий