Сумматор


Сумматор (англ. – adder) – цифровой узел, вычисляющий код арифметической суммы входных кодов.
Сумматор с последовательным переносом
а)Полусумматор
Пусть на вход поступает два 1-разрядных числа А и В. Сумма этих чисел будет представлена 2-разрядным кодом (см. табл. истинности).
A B CR S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
Младший разряд суммы – S (от англ. Sum – сумма). Старший разряд – CR (от англ. Carry – перенос).
По табл. истинности легко построить схему (рис. 56).
S=A? B
CR=AB
Полученная схема наз. полусумматором.
Введем следующие обозначения. Ai и Bi – значение i-го разряда многоразрядных чисел А и В. Si – значение i-го разряда суммы, cri – вход переноса из (i-1)-го разряда в i-й. CRi – выход переноса из i-го разряда. При этом:
Si = Ai ? Bi ? cri
Из этой формулы ясно, что полусумматор нельзя использовать для построения сумматора любой разрядности, т. к. в нем отсутствует вход переноса cri.
Схема полусумматора имеет и самостоятельное значение (рис. 57).

Если заменить B на вход переноса CRi, то на схему можно подать n-разрядный код А.
Если cr0 = 0, то Si = Ai и схема является повторителем входного числа А.
Если cr0 = 1, то выходной код S = A + 1 и схема называется инкрементором.

б) Одноразрядный полный сумматор.
Для сложения двух кодов необходим одноразрядный полный сумматор, имеющий вход переноса cri.
сr A B CR S
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1
Его таблица истинности и схема изображены на рис. 58.
S = A ? B ? cr
СR = AB + Acr + Bcr
Из схемы следует, что сумматор можно использовать для реализации функции «?2».

Одноразрядный полный сумматор можно построить из 2-х полусумматоров (рис. 59).

Существуют различные варианты схем 1-разрядного сумматора [2]. Условное обозначение одноразрядного сумматора показано на рис. 60. ИМС сумматоров обозначаются буквами ИМ. 555ИМ5 содержит два 1-разрядных сумматора.
в) Многоразрядный сумматор.

Принцип построения многоразрядного сумматора с последовательным переносом показан на рис. 61. При этом выход переноса младшего разряда CRi соединяется со входом переноса старшего разряда cri+1.
Основным недостатком сумматора с последовательным переносом является большое время задержки.
Каждый сумматор характеризуется временами задержки:
1) от входов А и В до выхода S;
2) от входов А и В до выхода переноса CR;
3) от выхода переноса CR до выхода S;
4) от выхода переноса CR до выхода переноса CR.

Наиболее существенным явл. время задержки «CR-CR», т. к. оно в первую очередь определяет быстродействие. Минимизация этого времени задержки является приоритетным при проектировании схем сумматоров.
Если tзд CR-CR = t, то общая задержка в n-разрядном сумматоре tзд общ = nt. Время задержки будет максимальным при возникновении переноса во всех разрядах. Существенно и то, что время задержки зависит от значений входных кодов.
Сумматор с параллельным переносом
В сумматоре с параллельным переносом для уменьшения времени задержки применяется принцип, при котором перенос в каждом разряде формируется независимо от переноса в младших разрядах.
При этом вводят две дополнительные функции:
1)Функция генерации переноса CRG (carry generation). Для i-го разряда обозначим ее gi. По определению gi = 1 тогда, когда слагаемые таковы, что перенос в старший разряд CRi = 1 независимо от значения входного переноса cri, т. е. перенос CRi = 1 при Ai = Bi =1. Следовательно, gi = Ai Bi.
2)Функция распространения переноса CRP (carry propagation) или функция прозрач-ности. Для i-го разряда обозначим ее pi.
Функция pi= 1 тогда, когда слагаемые таковы, что перенос в старший разряд CRi = 1 в случае, если cri = 1. Следовательно, pi = Ai + Bi.
Используя функции CRP и CRG, можно записать:
CRi = cri+1 = gi + cri pi = Ai Bi + cri (Ai + Bi)
Для функции СRP можно использовать также формулу pi‘= Ai ? Bi. Разница между pi‘ и pi будет лишь при Ai = Bi =1. Однако, в этом случае gi = 1 и, следовательно, CRi = 1.
Для i-го разряда: Si = Ai ? Bi ? cri
Для 0-го разряда: S0 = A0 + B0 + cr0
CR0 = cr1 = A0 B0 + cr0 (A0 + B0)
Для 1-го разряда: S1 = A1 ? B1 ? cr1=A1 ? B1 ? [A0 B0 + cr0 (A0 + B0)]
CR1 = A1B1 + cr1(A1+ B1) = A1B1+ [A0B0+ cr0(A0+ B0)] (A1+ B1)
..и т. д.
Как видно из формул, CRi вычисляется независимо от CRi-1.
На первый взгляд, полученные формулы не дают выигрыша во времени, т. к., с увеличением разрядности, объем вычислений для CRi быстро возрастает. Кроме того, очевидно, что расчет Si и CRi сильно усложняется.
Структурная схема 3-разрядного сумматора с параллельным переносом показана на рис. 62. Принципиальная схема рассмотрена в [2].
После минимизации формул, вычисляющих CRi , оказывается, что можно получить схемы, имеющие одинаковое число каскадов, т. е. последовательно соединенных элементов (в реальных ИМС – обычно 3). Т. о., время вычисления Si и CRi не зависит от количества разрядов и, в ряде случаев, оказывается меньше, чем в сумматоре с последовательным переносом. Аппаратурные затраты при этом заметно выше, чем в сумматоре с последовательным переносом.
Как было сказано, в сумматоре с последовательным переносом задержка примерно пропорциональна числу разрядов, поэтому, вроде бы очевидно, что при увеличении разрядности преимущество в быстродействии параллельного сумматора будет расти. Однако, это не совсем так. Число входов ЛЭ в ИМС ТТЛШ ограничено восемью и, при большем числе входов, необходимо увеличивать и число каскадов, а следовательно, и время задержки. Эффективное число разрядов для сумматора с параллельным переносом: 4-8.

В виде ИМС выпускается 4-разрядный сумматор 555ИМ6 (КМОП-аналог – 561ИМ1). Его условное обозначение и схема увеличения разрядности показаны на рис. 63. В данном случае перенос внутри микросхемы формируется параллельно, а между микросхемами – последовательно. Более подробно о различных типах сумматоров см. в [2].
Задания
Покажите, как ИМС 555ИМ6 использовать в качестве двух 1-разрядных сумматоров.
На вход схемы поступают два 5-разрядных числа в прямом коде (старший разряд – знак). Построить схему для сложения/вычитания этих чисел. Результат должен быть представлен а) в дополнительном коде; б) в прямом коде.