Полусумматоры и сумматоры. Комбинационные сумматоры. Многоразрядные сумматоры с ускоренным переносом.
В цифровых системах сложение является самым распространенным арифметическим действием. Сумматоробъединяет два арифметических операнда по правилам сложения. Одни и те же правила сложения справедливы для чисел без знака и для чисел, представленных в дополнительном двоичном коде; поэтому в обоих случаях используются одни и те же сумматоры. Сумматор может выполнять вычитание путем сложения уменьшаемого и дополнения к вычитаемому (инвертированного вычитаемого); но можно построить и вычитающее устройство, которое выполняет вычитание непосредственно. ИС средней степени интеграции, выполняющие сложение, вычитание и другие действия в зависимости от кода oneрации на управляющих входах, называются арифметическо-логическими устройствами (АЛУ).
Простейший сумматор, называемый полусумматором, складывает два 1-разрядных операнда X и Y, образуя 2-разрядную сумму. Сумма может принимать значения от 0 до 2, требуя для своего представления двух битов. Младший бит суммы можно назвать полусуммой HS, а старший бит- переносом СО (в старший разряд). Для величин HS и СО можно записать следующие выражения:
HS = X Y
= X·Y' + X'·Y
СО = X·Y
Рисунок 1 - Схема полусумматора
Чтобы сложить операнды с большим числом двоичных разрядов, необходимо обеспечить перенос между разрядами. Стандартный блок, применяемый для этой операции, называется полным сумматором. Помимо входов для битов слагаемых X и Y, у полного сумматора есть вход для бита переноса CIN. Сумма трех входных битов может принимать значения от 0 до 3; для ее представления по-прежнему достаточно двух выходных битов S и COUT, значения которых определяются следующими соотношениями:
S = X Y CIN
= X·Y'·CIN'+X'·Y·CIN'+X'·Y'·CIN+X·Y·CIN
COUT = X·Y + X·CIN+Y·CIN
Здесь S = 1, если на нечетном числе входов присутствуют единицы, a COUT = 1, если единицы имеются на двух или большем числе входов. Эти соотношения представляют ту же самую операцию, которая определяется таблицей двоичного сложения (табл. 1).
Одна из возможных схем, реализующих соотношения, которыми описывается полный сумматор, приведена на рис. 1(a). Соответствующее условное обозначение дано на рис. 1(b). Иногда для более аккуратного изображения схем с последовательно включенными полными сумматорами их обозначают так, как показано на рис. 1(c).
Рисунок 2 - Полный сумматор. а) принципиальная схема на уровне вентилей, б) условное обозначение, в) другой вид условного обозначания
Два n-разрядных двоичных слова можно сложить с помощью сумматора со сквозным переносом, состоящего из n последовательно включенных полных сумматоров, каждый из которых оперирует с одним битом. На рис. 3 показана схема 4-разрядного сумматора со сквозным переносом. На входе переноса младшего разряда (co) обычно устанавливается 0, а выход переноса каждого из полных сумматоров соединен со входом переноса полного сумматора в следующем разряде. Cумматор со сквозным переносом является классическим примером итерационной схемы.
Рисунок 3 - 4-разрядный сумматор со сквозным переносом
Сумматор со сквозным переносом обладает малым быстродействием, так как в худшем случае сигнал переноса должен распространиться от младшего полного сумматора до старшего.
Более быстрый сумматор можно построить, используя для формирования суммы на каждом выходе s; двухуровневую логику. Это можно выполнить, записывая выражение для s через x0—х, у0 -у и с0, разнося множители по слагаемым или разнося слагаемые по сомножителям для преобразования выражения в сумму произведений или произведение сумм и применяя соответствующую схему И-ИЛИ или ИЛИ-И. К сожалению, выражения для сумм, начиная с s2, содержат очень много членов, и для их реализации требуется слишком много схем первого уровня и слишком много входов у вентилей второго уровня по сравнению с тем, чем мы обычно располагаем. Например, даже при с0 = 0 для образования s, требуется двухуровневая схема И-ИЛИ с четырнадцатью 4-входовыми схемами И, четырьмя 5-входовыми схемами И и 18-входовой схемой ИЛИ; с формированием сумм старших разрядов ситуация еще хуже.
Логическое соотношение для суммы i-ого разряда двоичного сумматора фактически можно записать очень просто:
sl =xl уl сl.
Значительные сложности появляются при попытке представить через x0-xl-1, y0-yl-1и с0; реальные неприятности возникают в связи с ростом числа схем ИСКЛЮЧАЮЩЕЕ ИЛИ. Однако, если мы хотим предотвратить увеличение числа этих схем, то можно, по крайней мере, упростить логику формирования с, используя идеи ускоренного переноса.
На рис. 4 продемонстрирована основная идея. В блоке, названном «Логическая схема ускоренного переноса», значение с вычисляется по правилам, предусматривающим небольшое, фиксированное число логических уровней при любом разумном значении Для схемы ускоренного переноса ключевыми являются следующие два определения:
Говорят, что при заданной комбинации сигналов на входах хl и уl в i-jм каскаде сумматора генерируется сигнал переноса, если в этом каскаде вырабатывается 1 на выходе переноса (сl+1= 1) независимо от значений входных сигналов x0-xi-1 , y0-yi-1 и c0.
Говорят, что при заданной комбинации сигналов на входах хl иуl; в i-ом каскаде сумматора происходит передача сигнала переноса, если в этом каскаде вырабатывается 1 на выходе переноса (сl+1 = 1) в присутствии такой комбинации на входах x0-xi-1 , y0-yi-1 и c0., которая вызывает появление 1 на входе переноса данного каскада (сl = 1).
В соответствии с этими определениями можно записать логические равенства для сигнала генерации переноса gl и сигнала передачи переноса рl в каждом каскаде сумматора с ускоренным переносом:
g =хl•уl
рl =xl+ yl.
Рисунок 4 - Структура оного каскада сумматора с ускоренным переносом
Другими словами, на выходе каскада безусловно генерируется перенос, если оба бита слагаемых равны 1, и передается перенос, если хотя бы один из битов слагаемых равен 1. Теперь сигнал на выходе переноса можно выразить через сигналы генерации и передачи переноса:
.
Чтобы исключить сквозной перенос, мы для каждого каскада рекурсивно находим значения ci, разнося множители по слагаемым, получаем выражения в виде двухуровневых функций И-ИЛИ. Используя эту методику, можно найти следующие выражения для сигналов переноса первых четырех каскадов сумматора:
x
Каждое приведенное выражение соответствует схеме, имеющей только три уровня задержки: один уровень связан с образованием сигналов генерации и передачи переноса, а два других-с образованием суммы произведений. В блоках «ускоренного переноса» каждого каскада (рис. 5.89) сумматора с ускоренным переносом используются трехуровневые выражения типа приведенных выше. Выходной сигнал суммы в каждом разряде формируется путем комбинации бита переноса с битами двух слагаемых данного разряда, как показано на рисунке.