Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
409
Добавлен:
06.01.2022
Размер:
33.47 Mб
Скачать

Типы ис

2х6 входов: DM 8131 (ТТЛ); изготовитель-фирма National.

2х8 входов: AM 25LS2521 (ТТЛ); изготовитель-фирма AMD.

Универсальными являются такие компараторы, которые помимо констатации равенства двух чисел могут установить, какое из них больше. Такие схемы называются компараторами со сравнением величин (Magnitude Comparator) или просто компараторами. Чтобы провести сравнение величин, нужно знать в каком коде представлены числа. В дальнейшем мы будем исходить из того, что числа заданы в двоичном коде, т.е.

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

Для сравнения многоразрядных двоичных чисел используется следующий алгоритм. Сначала сравниваются значения старших разрядов. Если они различны, то эти разряды и определяют результат сравнения. Если они равны, то необходимо сравнить следующие за ними более младшие разряды, и т.д. Таким образом, для каждого разряда можно использовать схему, представленную на рис. 19.23, передавая через мультиплексор на выход результат сравнения самых старших из несовпадающих разрядов. Подобные схемы для сравнения 4- и 5-разрядных чисел выпускаются в интегральном исполнении:

SN 7485 (ТТЛ); МС 10166 (ЭСЛ); МС 14585 (КМОП).

Эти схемы можно наращивать как последовательно, так и параллельно. На рис. 19.24 показано последовательное соединение компараторов для увеличения разрядности сравниваемых чисел. Если старшие три разряда чисел А и В равны, то результат сравнения определяется сигналами на выходах компаратора К1 поскольку они подключены к входам младшего разряда компаратора К2.

Рис. 19.24. Последовательное соединение компараторов для увеличения разрядности сравниваемых чисел.

Рис. 19.25. Параллельное соединение компараторов.

При сравнении чисел со значительным количеством разрядов целесообразнее использовать параллельное соединение компараторов, показанное на рис. 19.25, так как оно обеспечивает меньшее время задержки.

19.5. Сумматоры

19.5.1. ПОЛУСУММАТОР

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

Если A и В равны единице, происходит перенос в следующий (более старший) разряд. Следовательно, такой сумматор должен иметь два выхода, а именно один для формирования части суммы, относящейся к данному разряду, и еще один- для переноса в следующий разряд. Представляя числа А и В логическими переменными а0 и b0, можно получить таблицу переключении 19.7, где c1 -сигнал переноса, s0- сумма.

Составляя дизъюнктивную нормальную форму, получаем следующие булевы функции:

Следовательно, перенос происходит с помощью функции И, а сумма- функции неравнозначности (ИСКЛЮЧАЮЩЕЕ ИЛИ), Схема, реализующая обе указанные функции, называется полусумматором; она показана на рис. 19.26.

Рис. 19.26. Схема полусумматора.

Рис. 19.27. Схема полного сумматора.

19.5.2 ПОЛНЫЙ СУММАТОР

Если складываются два многоразрядных двоичных числят полусумматор можно использовать только для одного младшего разряда. Во всех остальных разрядах складываются не два, а три числа, поскольку может произойти перенос со следующего за ним младшего разряда. Таким образом, в общем случае для каждого разряда необходима логическая схема с тремя входами ai, bi, ci и двумя выходами si и ci+1. Такая схема и называется полным сумматором. Ее можно реализовать, например, с помощью двух полусумматоров, как показано на рис. 19.27. Здесь приведена таблица 19.8 переключении такой схемы.

Для сложения двух многоразрядных двоичных чисел на каждый разряд необходим один полный сумматор. Только в младшем разряде можно обойтись полусумматором. На рис. 19.28 приведена схема, предназначенная для сложения двух четырехразрядных чисел А и В. Эта схема

Рис. 19.28. Четырехразрядный сумматор с последовательным переносом.

выпускается в интегральном исполнении. В ее младшем разряде также используется полный сумматор, чтобы иметь возможность наращивания разрядности схемы (SN 74LS83).

19.5.3. СУММАТОРЫ С ПАРАЛЛЕЛЬНЫМ ПЕРЕНОСОМ

Время выполнения операции в сумматоре на рис. 19.28 намного больше времени сложения в одноразрядном сумматоре. Действительно, сигнал переноса с4 только тогда сможет принять истинное значение, когда перед этим будет установлено правильное значение переноса Сз. Такой порядок выполнения операций называется последовательным переносом (Ripple Carry). Чтобы уменьшить время операции сложения многоразрядных чисел, можно использовать схемы параллельного переноса (Carry look-ahead). При этом все сигналы переноса вычисляются непосредственно по значениям входных переменных. Согласно таблице переключении 19.8, в общем случае для сигнала переноса любого i-го разряда справедливо следующее соотношение:

Введенные для сокращения записи величины gi и pi вычисляются в качестве промежуточных результатов и в полном сумматоре на рис. 19.27. Следовательно, их получение не требует дополнительных затрат. Смысл этих величия объясняется совсем просто. Сигнал g1 вырабатывается тогда, когда в данном разряде перенос происходит из-за комбинации входных переменных аi и bi. Поэтому его называют функцией генерации переноса. Сигнал рi, показывает, передается ли полученный в младшем разряде сигнал переноса с, дальше. Поэтому он называется функцией распространения переноса.

Пользуясь выражением (19.1), можно вывести следующие формулы для вычисления сигналов переноса:

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

На рис. 19.29 приведена блок-схема четырехразрядного сумматора со схемой ускоренного (параллельного) переноса. В схеме ускоренного переноса (СУП) реализованы выражения (19.2). Полная схема сумматора выпускается в интегральном исполнении.

Типы ИС: SN 74181 (ТТЛ); МС 10181 (ЭСЛ); МС 14581 (КМОП).

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

Для достижения возможно малого времени выполнения операции- необходимо и перенос от группы к группе осуществлять параллельно. С этой целью рассмотрим еще раз выражение (19.2) для с4:

Для сокращения записи введем функцию генерации переноса для группы G и функцию распространения переноса для группы Р, после чего получим

Это соотношение формально совпадает с выражением (19.1). Следовательно, в каждой отдельной 4-разрядной секции сумматора необходимо вырабатывать лишь соответствующие вспомогательные переменные G и Р и по тому же алгоритму, который использовался ранее для переноса от разряда к разряду, согласно выражениям (19.2),

Рис, 19.29. Четырехразрядный сумматор с параллельным переносом.

Рис. 19.30.16-разрядный сумматор с параллельно-параллельным переносом.

обеспечить параллельный перенос от группы к группе. Этот принцип использован в представленной на рис- 19.30 блок-схеме 16-разрядного сумматора с параллельно-параллельным переносом. Схема ускоренного переноса здесь та же, что и в 4-разрядном сумматоре на рис. 19.29. Она изготавливается в виде отдельных интегральных микросхем типа SN 74182 (ТТЛ), МС 10179 (ЭСЛ) и МС 14582 (КМОП). При использовании схем ТТЛ время выполнения операции сложения 16-разрядных чисел составляет 36 нс, а для схем ТТЛ с диодами Шоттки -19 нс.

19.5.4. СЛОЖЕНИЕ ДВОИЧНО-ДЕСЯТИЧНЫХ ЧИСЕЛ

Для сложения двух двоично-десятичных чисел можно использовать по одному 4-разрядному двоичному сумматору на каждую декаду. Однако после суммирования следует производить коррекцию, которая уже рассматривалась при обсуждении преобразования двоичного кода в двоично- десятичный. Если в какой-либо декаде происходит перенос, необходимо добавлять к ней 6, чтобы компенсировать разницу в весах разрядов. Благодаря этому уже достигается правильное значение двоично-десятичного числа, однако оно еще может содержать псевдотетрады. Поэтому следует проверить, получилось ли в данной декаде число больше 9. Если это так, то для ликвидации псевдотетрады также прибавляется 6, Возникающий при этом перенос, как и обычный, передается в следующую по старшинству декаду. Описанную операцию проще всего выполнить с помощью двух сумматоров на каждую декаду, как показано на рис. 19.31. Вся эта структура также выпускается в виде интегральных микросхем.

Типы ИС: 82S82 и 82S83 (ТТЛ); изготовитель- Signetics.

19.5.5. ВЫЧИТАНИЕ

Вычитание двух чисел сводится к операции сложение Действительно,

При этом следует С выбрать таким образом, чтобы операция С - В (вычисление дополнения В до С), так же как и вычитание С, проводилась без помощи специальных схем, реализующих вычитание. В случае N -разрядных двоичных чисел АN и By, это возможно как при С == 2N , так и при С = 2N — 1. Если С = 2 , выражение С — ВN называется точным двоичным дополнением B(2)N, а если С = 2N — 1, то по разрядным дополнением В(1)N.

Рис. 19-31. Двоично-десятичный сумматор на двоичных сумматорах.

Таким образом,

Поразрядное дополнение В(1)N получается просто путем инвертирования всех разрядов числа ВN. Справедливость этого утверждения вытекает из того, что максимальное число, которое можно записать в двоичном N-разрядном коде, равно

Следовательно, вычитая из этой величины любое двоичное число ВN с целью определения его дополнения В(1)N, мы непременно получим то же двоичное число, которое составляется путем инверсии всех разрядов В(1)N. Получение дополнения В(2) несколько сложнее, так как, согласно выражениям (19.5), после инвертирования ВN к полученному результату следует еще прибавить 1.

Рассмотрим операцию вычитания в случае поразрядного дополнения. При С = 2N — 1 из выражения (19.4) следует, что

Таким образом, вычитание можно осуществить, инвертируя число ВN, прибавляя еще одну единицу и вычитая 2N. Вычитание 2N достигается весьма просто- путем инверсии разряда переноса. Для добавления 1 на свободный вход сигнала переноса Со можно подать единицу. Поэтому здесь не требуется дополнительных суммирующих цепей. При этом получается схема, представленная на рис. 19.32.

Рис. 19.32. Вычисление разности двух четырех- разрядовых чисел.

Рассмотрим теперь случаи точного двоичного дополнения. Согласно выражению (19.4), можно записать

Если вычитаемое число BN уже задано в форме двоичного дополнения, то числа АN и В(2)N можно складывать с помощью обычной суммирующей схемы, инвертируя при этом разряд переноса. Однако, если ВN является обычным положительным числом, необходимо предварительно вычислить его двоичное дополнение В(2)N по поразрядному дополнению В(1)N, пользуясь формулой (19.6). Тогда, согласно соотношению (19.8), получим

что полностью совпадает с (19.7). При этом получается та же схема, что и на рис. 19,32. Различие между этими двумя способами вычитания состоит только в моменте прибавления единицы. При поразрядном дополнения оно выполняется после суммирования АN и ВN, а при двоичном- до него. Однако в случае использования сумматоров комбинационного типа это различие несущественно.

Арифметическое устройство типа 181, рассмотренное в предыдущем разделе, уже имеет встроенные элементы для инвертирования BN. Оно производит операцию инвертирования при подаче соответствующего управляющего сигнала.

Рассмотрим теперь случай, когда искомая разность DN отрицательна.

Рис. 19.33. Пример представления разности D при положительном и отрицательном результатах.

При этом в разряде переноса появляется 1. Она может рассматриваться как отрицательный перенос-2N. Поясним это на примере, представленном на рис. 19.33. Итак, можно записать

При изменении порядка вычитания отсюда следует

Таким образом, введенное число ZN представляет собой точное двоичное дополнение модуля разности. При продолжении арифметических операций такое представление является весьма удобным. Однако для оценки результата часто необходимо иметь его величину в обычном двоичном (прямом) коде и его знак. С этой целью при появлении единицы в разряде переноса v следует вычислить двоичное дополнение числа DN, что достигается с помощью N управляемых инверторов, которые можно реализовать с помощью элементов ИСКЛЮЧАЮЩЕЕ ИЛИ. Но из-за необходимости прибавления 1 требуется еще одна дополнительная суммирующая схема, показанная на рис. 19.34.

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

С учетом соотношения (J9.4) отсюда получим

В отличие от ранее рассмотренного случая положительной разности здесь два корректирующих члена С = 2N или С =- 2N — 1 взаимно уничтожаются. Таким образом, если оперировать поразрядным дополнением, то 1 два раза не прибавляется. При этом можно записать

Чтобы результат автоматически разделить на знак и модуль, необходимо сначала подать числа А и В(1) на суммирующую схему и проанализировать полученный при этом неинвертиро ванный сигнал Сд. Если он равен единице, то разность положительна. В этом случае, как уже было показано, необходимо прибавить 1, для чего следует положить Со = 1. Это очень просто осуществить, подключая старший сигнал переноса к cq. Такая схема называется схемой циклического переноса.

Если старший сигнал переноса равен нулю, то полученная разность отрицательна. В этом случае прибавление 1 автоматически блокируется. При этом нужно еще проинвертировать результат, что дает модуль разности.

Рис. 19.34. Образование двоичного дополнения числа в зависимости от его знака.

Теперь остановимся на особом случае, когда А = В. Тогда на входы всех разрядов сумматора подается комбинация сигналов 01, т.е. функция распространения переноса рассматриваемой секции Р равна 1. Поэтому c4 = co и в схеме образуется положительная обратная связь, т.е. нельзя заранее предугадать, получится в результате + 0 или - 0.

Эти трудности легко обойти, если использовать суммирующую схему с параллельным переносом. Как показано на рис. 19.35, цепь циклического переноса здесь можно подключить не к выходу переноса с4, а к выходу функции генерации переноса G. Как следует из выражения (19.3), полученного в разд. 19.5.3, величина этой функции совпадает с с4, если не принимать во внимание величину c0. Таким образом устраняется причина образования положительной обратной связи. С другой стороны, сигнал G достаточен для определения знака, поскольку сигнал с4 при прибавлении единицы не изменяется.

Незначительный недостаток этого способа состоит в том, что нуль выдается как отрицательное число. Это, вообще говоря, не является ошибкой, но не всегда приемлемо. Для устранения этого эффекта при А = В следует организовать еще один дополнительный циклический перенос и запретить образование дополнения на выходе. С этой целью на рис. 19,35 сигнал распространения переноса Р с помощью элемента ИЛИ также подключен к цепи циклического переноса.

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

19.5.6. СЛОЖЕНИЕ ЧИСЕЛ С ЛЮБЫМИ ЗНАКАМИ

Схема вычитания, представленная на рис. 19.32, в случае отрицательной разности выдает ее значение в форме двоичного дополнения. Старший разряд переноса можно рассматривать, при этом непосредственно как знак:  = 0 означает положительный результат,  = 1 - отрицательный. Такое представление используется преимущественно при выполнении операций со знакопеременными числами (представление чисел в форме двоичного дополнения). Для 8-разрядного числа имеется следующая область определения:

Такое представление чисел объясняется тем, что знаковый разряд  можно рассматривать как обычный двоичный разряд определенного веса, взятый, однако, с отрицательным знаком. В случае 8-разрядного положительного числа B8 старший разряд  = b7 = 0, и получим

В случае отрицательного 8-разрядного числа B8 старший разряд  = b7 = 1, и. получим

Модуль B8 в этом случае равен

т.е. представляет собой двоичное дополнение В7.

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

Рассмотрим сначала случай А > 0, В > 0. Эти числа складываются, совершенно правильно. В отличие от сумматора, предназначенного только для положительных чисел, мы должны, разумеется, сделать одно ограничение: так как теперь восьмой двоичный разряд рассматривается как знак, его уже нельзя использовать как разряд переноса. Поэтому сумма не должна выходить за пределы 7-разрядного числа. Следовательно, она не может быть более 27 — 1 = 127, так как в противном случае результат будет ошибочно рассматриваться как отрицательное число.

Случай, когда одно из двух чисел (А7 или В7) задано в форме двоичного дополнения, уже рассматривался в предыдущем разделе, поскольку там вычитание было заменено на сложение с. двоичным дополнением вычитаемого. Чтобы получить правильное значение знака разности, разряд переноса инвертировался. Так как числа А и В равноправны, сигнал переноса необходимо инвертировать всегда, когда либо A, либо В отрицательно.

Кроме того, может встретиться случай, когда и А, и В отрицательны. Сумма двоичных дополнений составит

Очевидно, что вследствие сложения двух членов дополнений, равных 27, разряд переноса (восьмой двоичный разряд b7) не изменится; следовательно, в нем непосредственно появится знак. Все рассмотренные комбинации представлены в табл. 19.9, позволяющей определить знак

s по величине старшего переноса с7. По этой таблице можно составить следующую булеву функцию:

Ее схемная реализация представлена на рис. 19.36.

Как показывает сравнение с рис. 19.27, выражение (19.10) идентично сложению в полном сумматоре. Поэтому 8-разрядное число S8, включая знак, можно вычислить с помощью 8-разрядного сумматора (рис. 19.37), не подвергая знаковый разряд какой-либо особенной обработке.