Сумматоры
- МОДУЛЬ 9. СУММАТОРЫ
- Блок 9.1. Общие сведения
- Блок 9.2. Одноразрядный сумматор
- Блок 9.3. Многоразрядный сумматор
- Блок 9.4.Представление чисел различными формами кодов
- Пример 9.1.
- Пример 9.2.
- Пример 9.3.
- Пример 9.4.
- Пример 9.5.
- Пример 9.6.
- Пример 9.7.
- Пример 9.8.
- Пример 9.9.
- Пример 9.10.
- Вопросы для самопроверки
- Задачи к модулю "Сумматоры"
- Заключение по теме модуля "Сумматоры"
- Литература
МОДУЛЬ 9. СУММАТОРЫ
Блок 9.1. Общие сведения
Рис. 9.1
Основным действием над двоичными числами является сложение. Оно используется само по себе, в операциях вычитания, а также составляет основу умножения и деления чисел.
Многоразрядные сумматоры организуются на одноразрядных, суммирующих одноименные разряды чисел.
По принципу обработки разрядов чисел сумматоры делятся на последовательные и параллельные. В последовательных сумматорах сложение чисел осуществляется поразрядно, последовательно. В параллельных сумматорах все разряды обрабатываются одновременно, параллельно.
Изучив материал этого модуля, студент сможет осуществлять операции сложения и вычитания двоичных чисел, представленных в различных формах, а также производить выбор типа сумматора в соответствии с условиями разрабатываемой схемы.
Блок 9.2. Одноразрядный сумматор
Сложение одноразрядных двоичных чисел производится по следующим правилам:
Результат сложения двух единиц равен 210 (102) — вдвое превышает вес единицы в данном разряде, т. е. равен весу единицы в следующем разряде. Поэтому указанный результат переносится в виде 1 в следующий разряд, а в данном разряде записывается 0.
В таблице истинности (табл. 9.1) приведены все случаи сложения одноразрядных двоичных чисел A и B. Она позволяет установить следующие логические выражения, связывающие выходы S (цифра в данном разряде) и Р (единица переноса в следующий разряд) с входами А и В:
(9.1)
Р=АВ (9.2)
Первое из них – выражение неравнозначности (функция"Исключающее ИЛИ"),обозначенная значком ⊕, второе–конъюнкция одноразрядных чисел А и В. По ним может быть синтезирован полусумматор–устройство, реализующее сложение двух одноразрядных чисел.
В соответствии с выражениями (9.1), (9.2) схема полусумматора содержит шесть элементов. С целью ее минимизации прибавим к функции S слагаемые А и В, каждое из которых равно нулю. При этом
S=A + B=A + B + A + B = (A+B)+ (А+В) = (А+В)( +).
По теореме де Моргана + =. Но АВ=Р, поэтому S=(A+B) .
Выражения S=(A+B) и Р=АВ реализует схема (рис.9.2,а.) , Она содержит на два элемента меньше, чем составленная непо-средственно по выражениям (9.1), (9.2). Условное изображение полусумматора приведено на рис. 9.2, б.
Полусумматор не имеет входа, на который мог бы передаваться перенос с предыдущего разряда, поэтому он может использоваться только для суммирования младших разрядов чисел.
Блок 9.3. Многоразрядный сумматор
При сложении двух многоразрядных чисел следует считаться с тем, что каждый разряд может получать единицу переноса из предыдущего разряда, а также передавать единицу переноса в следующий. С учетом этого составлена таблица истинности полного сумматора одноименных разрядов двух чисел (табл. 9.2), где Аi и Вi — цифры в одноименных разрядах чисел А и В; Pi-1 – перенос в разряд i из разряда i–1 ; Si – результат сложения слагаемых, Pi – перенос из i-го разряда в следующий. Из этой таблицы следуют логические выражения, связывающие выходы Si и Pi с входами Аi , Вi , Pi :
Последовательные
Параллельные
Многоразрядные
Одноразрядные
Сумматоры
Si =АiВiPi-1+Pi–1+Аi+ВiPi–1=Pi–1(АiВi+)+ (Аi+).
Выражение в первых скобках– уравнение функции “Равнозначность”, логически противоположная функции “Неравнозначность” (“Исключающее ИЛИ” – ) во вторых скобках. С учетом этого
Si = Pi–1 ()+ (). (9.3)
Считая Pi-1 одной переменной (Pi-1=x1), а () – второй, можно записать по аналогии с выражением x1x 2 + x1x2 =x1 ⊕ x2
Si = ()Pi–1 (9.4) Из табл. 9.2 имеем
Pi =Аi Вi Pi–1 + Аi Pi–1 + Вi Pi–1 + Аi Вi = Аi Вi (Pi–1+) + Pi–1 (Аi +Вi) = Аi Вi + Pi–1 (). (9.5)
Нетрудно заметить, что полный одноразрядный сумматор можно составить из двух полусумматоров. Действительно, как следует из выражения (9.4), на выходе полусумматора формируется функция “Исключающее ИЛИ” входных переменных. Поэтому функцию S, можно получить на выходе второго полусумматора (рис. 9.3), на один вход которого подается сигнал с первого полусумматора, а на другой – сигнал переноса Pi–1 из предыдущего разряда.
Из выражения (9.2) следует, что на выходе переноса формируется конъюнкция входных переменных, поэтому на выходе переноса первого полусумматора появляется функция Аi Вi, а на выходе второго полусумматора – функция (A) Pi–1 . Их дизъюнкция дает требуемое выражение (9.5).
Суммирование одноименных разрядов многоразрядных чисел может осуществляться параллельно и последовательно.
Сумматор параллельного действия (рис. 9.4, а) состоит из полных одноразрядных сумматоров, количество которых равно числу разрядов складываемых чисел. Ввод слагаемых чисел и вывод результата происходит всеми разрядами одновременно в параллельной форме. Перенос с выхода сумматора одного разряда передается на вход переноса сумматора следующего разряда. Поэтому быстродействие сумматора определяется временем рас-пространения сигнала переноса вдоль цепи одноразрядных сумматоров. Для повышения быстродействия используется ряд методов, в частности параллельное формирование переносов в специальном блоке ускоренного переноса. Условное изображение многоразрядного сумматора приведено на рис. 9.4, б.
При последовательном суммировании каждое число представляется в последовательной форме и одноименные разряды чисел, начиная с младших, синхронно вводятся в полный одноразрядный сумматор (рис.9.5). По тактовым импульсам ТИ из сдвигающих регистров RG1 и RG2 на входы А и В сумматора попарно последовательно поступают разряды чисел. С выхода Р сигнал переноса запоминается в триггере и
задерживается на входе P0 до поступления следующей пары разрядов, с которой он складывается. Затем новый сигнал переноса заносится в триггер. Тактовыми импульсами ТИ разряды суммы последовательно вдвигаются в регистр RG3 по входу D на выходах регистра результат А + В представляется в параллельной форме. Так как до суммирования Р=0, то его следует начинать с младших разрядов, сумма которых определяется только их значениями. Достоинство сумматора последовательного действия состоит в простоте схемы, а недостаток – в сравнительно низком быстродействии.
Блок 9.4.Представление чисел различными формами кодов
Вычитание можно заменить сложением, если соответствующим образом преобразовать вычитаемое.
Покажем это сначала на десятичных числах. Пусть, к примеру, вычитаемое равно 17. Представим его в виде
–17 = –17 +100 – 100 = 83 – 100 = 83.
Запись числа в форме 83 показывает, что оно содержит одну отрицательную сотню и 83 положительные единицы. Число 83 можно получить с помощью следующих действий: определить дополнение каждой цифры исходного числа 17 до наибольшей в разряде, т. е. до девяти. Результат подобного действия (в данном случае результат равен 82) называют дополнением до девяти, сум-мирование его с исходным числом дает в каждом разряде 9; прибавить к младшему разряду полученного числа единицу. Результат этого действия (в данном случае 83) называют дополнением до десяти, так как сумма каждой пары одноименных разрядов исходного числа (17), этого дополнения (83) и переноса в разряд десятков равна 10.
В соответствии с приведенными правилами записывается любое отрицательное десятичное число: оно представляется допол-нением до 10 и знаковым разрядом (выходящим за разрядную сетку исходного числа), содержащим единицу.
В качестве примера ниже приводятся представления нескольких отрицательных чисел: –4 = 6; –12 = 88; –126 = 874.
При записи положительного десятичного числа в знаковый разряд заносят 0 (признак отсутствия отрицательного слагаемого), а в цифровые разряды – число в его обычной форме.
Пользуясь введенным представлением отрицательных чисел, приведем несколько примеров на вычитание, заменяя его сложе-нием.
Пример 9.1.
Определить разность А–В, если А=53, В=17. Представляя число -17 его дополнением до 10 (т. е. числом 83), имеем:
В рассматриваемом примере фигурируют числа одинаковой разрядности (двухразрядные). Положительное уменьшаемое (53) представлено в обычной форме и дополнено знаковым разрядом, в котором записан нуль. Последний означает, что за пределами разрядной сетки числа (в данном случае в третьем разряде) не содержится отрицательное число (в данном случае -100). Нуль в знаковом разряде всегда является признаком положительного числа. Отрицательное вычитаемое (–17) представлено своим дополнением (83) и знаковым разрядом, в котором записана единица – признак отрицательного числа. В процессе сложения положительных чисел (53+83=136) образуется перенос +1 (число +100) в знаковый разряд, которая компенсирует –1 (число –100), поэтому результат оказался положительным (в его знаковом разряде 0). При положительном результате его величина выражается только цифровыми разрядами (в данном случае числом 36).
Как нетрудно заметить, знаковые разряды можно рассматривать как цифровые, их сложение производится по обычным правилам с учетом переноса из предыдущего разряда, но перенос из знакового разряда игнорируется. Действительно:
Пример 9.2.
Определить разность А–В, если А=158, В=12:
Особенностью этого примера является то, что фигурирующие в нем числа имеют разную разрядность. Для ее выравнивания число 12 представляется как 012, с учетом чего вычисляется его дополнение (988). Так как сумма [А + В]доп оказалась положительной (нуль в знаковом разряде), то результат непосредственно выражается цифровыми разрядами(146).
Пример 9.3.
Определить разность А–В, если А = 12, В= 158:
В данном примере осуществляется выравнивание разрядности чисел и по уже сформулированным правилам отыскивается результат (854). Он представляется суммой чисел +854 и -1000, т. е. числом -146. Нетрудно заметить, что его абсолютную величину 146 можно получить, определяя дополнение до 10 числа 854 Это правило распространяется на все числа, в знаковом разряде которых присутствует единица, т. е. на отрицательные числа.
Аналогично десятичным числам нулем и единицей в знаковом разряде представляются положительные и отрицательные двоичные числа. Это особенно удобно, когда числа в такой форме обрабатываются компьютером.
Дополнение каждой цифры двоичного числа до наибольшей в разряде (в данном случае до единицы) сводится просто к ее инвертированию: дополнением 1 является 0, дополнением 0 является 1. Такое представление числа называют его обратным кодом или дополнением до единицы.
Прибавлением единицы к младшему разряду обратного кода образуется дополнительный код числа – дополнение до двух.
Эквивалентным представлением отрицательного двоичного числа является дополнительный код его абсолютной величины и единицы в знаковом разряде.
Так, при А =–1210 =-11002 [A]обр= 0011, [A]доп= 0100. Легко проверить, что отрицательное число (–16), соответствующее единице в знаковом разряде [A]доп, и положительное число (+4) в цифровых разрядах образуют исходное число (–12). Аналогично, при В=–2510= =-110012 [В]обр= 00110, [В]доп= 00111.
Для положительных чисел прямой, обратный и дополнительный коды совпадают. От изображения самого числа их отличает нуль в знаковом разряде. Так, если число А=1810=100102, то Апр=Аобр=Адоп= 010010. Поэтому если в результате вычислений получается положительное число (нуль в знаковом разряде), то для его изображения в обычной форме цифровые разряды не должны подвергаться никаким преобразованиям, так как в такой форме они уже число представляют.
С введением дополнительного кода вычитание можно заменить сложением. Как и в десятичной системе счисления, здесь знаковые разряды складываются аналогично цифровым, учитывается перенос в них из предыдущего разряда, а перенос из знакового разряда игнорируется.
Пример 9.4.
Определить разность А–В, если А= 1410=11102, В=910=10012:
Присутствие нуля в знаковом разряде результата указывает на то, что А-В>0, и результат представлен цифровыми разрядами в окончательном виде: A-B=01012=510.
Пример 9.5.
Определить разность А-В, если A=910=10012, В= 1410=11102:
Единица в знаковом разряде свидетельствует о том, что разность А– В<0. Ее абсолютную величину можно найти, определив дополнительный код числа 1011 в цифровых разрядах. Он равен увеличенному на единицу обратному коду:
0100 +0001 = 0101. Искомая разность А–В = –01012 = –510.
Приведем другой вариант решения заданных примеров, представив вычитаемое не в дополнительном, а в обратном коде.
Пример 9.6.
Определить разность А–В, если А = 1410= 11102, В = 910 = 10012:
Легко видеть, что правильный результат (0101) из примера 9.4 можно сформировать из полученного в примере 9.6, если единицу переноса из знакового разряда добавить к младшему разряду результата. Это правило является общим при использовании обратных кодов чисел, когда результат сложения [А + В]обр > 0 (в знаковом разряде 0).
Заметим следующую особенность. Если А > В (А – В > 0), то в процессе определения [А + В]обр имеет место перенос в знаковый разряд. Это объясняется тем, что сумма цифровых разрядов В+[В]обр=111...1, откуда [В]обр=111…1 – В, [А+В]обр=А+(111…1 – В ), т. е. при А>В действительно происходит переполнение разрядной сетки, в которую вписаны цифровые разряды. Аналогичный перенос происходит и при вычислении [А+В]доп, если А >В. ,
Пример 9.7.
Определить разность А–В, если А = 910 = 10012, В = 1410= 11102:
Правильный результат (–5 = –01012) получается из полученного инверсией его цифровых разрядов, т. е. при использовании обратных кодов чисел результат, если он отрицателен, выражен в обратном коде,.
Представление вычитаемого обратным кодом будет показано в схеме (рис.9.6).
Пример 9.8.
Определить разность А- В , если А = –310= –0112,
В = –410= -1002:
Как уже отмечалось, при [А+В]обр>0 для получения разности А – В надо к младшему цифровому разряду промежуточного результата прибавить единицу переноса из знакового разряда: А–В = 000+001 = 0012 =110.
С использованием дополнительных кодов А и В находим
Так как результат получился положительным, то его истинная величина выражается цифровыми разрядами полученной суммы: А – В = =0012=110. Приведем еще два примера, представляя числа в дополнительных кодах.
Пример 9.9.
Определить сумму A+В, если A = –310 = –0112, В = –410 = –1002:
Заметим, что в процессе вычислений имел место перенос в знаковый разряд. Полученная сумма А+В<0, для определения ее абсолютной величины надо найти дополнительный код числа в ее цифровых разрядах: А + В = 110 + 001 = 1112 = 710.
Пример 9.10.
Определить сумму А+В, если A= –710= –1112, В= –5= =–1012:
Нетрудно заметить, что получен неверный результат: сумма отрицательных чисел оказалась положительной (в знаковом разряде 0). Это объясняется тем, что результат не вместился в разрядную сетку, в которую вписаны слагаемые. Действительно, по условию примера модуль |А+В| = 1210 = 11002 представляется четырьмя двоичными разрядами, а для слагаемых зарезервировано три разряда. Признаком такого переполнения разрядной сетки для отрицательных чисел является отсутствие переноса в знаковый разряд и наличие переноса из него. Признаком переполнения разрядной сетки для положительных чисел является наличие переноса в знаковый разряд и отсутствие переноса из него. Эти знаки анализируются в ЭВМ для получения правильного результата.
Вернемся к примеру 9.10 и увеличим количество разрядов (например, до пяти), которыми представлены слагаемые. Тогда А= –710 = –001112, B=–510 = –001012:
Заметим, что теперь имеет место перенос в знаковый разряд; единица в нем свидетельствует об отрицательном знаке суммы А+В. Ее модуль |А+В| = 01011+00001= 011002 = 1210, что соответствует правильному результату.
Приведенные сведения о вычитании двоичных чисел, пред-ставленных в обратном и дополнительном кодах, позволяют проектировать вычитатели на базе сумматоров.
На рис. 9.6 изображен сумматор, осуществляющий вычитание – субтрактор. Старшие разряды (аn и bn) чисел А и B — знаковые. С помощью инверторов число В представляется в обратном коде (Bобр). Единица переноса, которая может формироваться на выходе переноса Рn из старшего разряда, соответствует переносу из знакового разряда. Выход Рn соединен с входом переноса Р0 в младший разряд (такой перенос называют циклическим).
Если А>В, то в результате сложения А + Bобр на выходе Рn появляется 1 (Рn= 1, см. комментарий к примеру 9.6), которая поступает на вход Р0, поэтому складываются числа А+[В]обр+1= A+[B]доп и положительное число А – В > 0 появляется на выходах S1, S2, ..., Sn в окончательной форме.
Если А<В, то Рn=0 – складываются числа А и [B]обр, разность А–В имеет отрицательный знак и формируется на выходах S1, S2, ... Sn, в обратном коде. Инвертирование разрядов результата и формирование знака минус осуществляется в данном случае по сигналу Рn=0. При Рn=0 на один из входов каждого элемента “Исключающее ИЛИ” поступает 1 и сигнал на его выходе Si является инверсией сигнала на входе Si.
При Рn=1 (А–В > 0) Pn=0 и элементы “Исключающее ИЛИ” повторяют сигналы с выхода сумматора.
Вместо инверторов на входах сумматора (рис. 9.6) можно установить элементы “Исключающее ИЛИ”, на один вход каждого из которых подавать разряды числа В, а на другой вход – управляющий сигнал Y. При Y= 0 эти элементы не инвертируют сигналы b1, b2, ..., bn и устройство работает как сумматор. При Y= 1 осуществляется вычитание чисел.
Осуществите вычитание двоичных чисел A и B, десятичные эквиваленты которых соответственно равны 18 и 7, выразив их в дополнительном коде.
Осуществите сложение двоичных чисел A и B, десятичные эквиваленты которых соответственно равны 34 и –15, выразив их в дополнительном коде.
Найдите сумму двоичных чисел A и B, десятичные эквиваленты которых соответственно равны –23 и –12, выразив их в обратном коде.
Составьте схему полусумматора на элементах базиса И-ИЛИ-НЕ и сравните ее с приведенной в тексте модуля.
Составьте схему сумматора, способного реализовать сложение и вычитание многоразрядных чисел.
Составьте схему вычитателя для младших разрядов чисел.
Заключение по теме модуля "Сумматоры"
Сумматоры можно использовать по прямому назначению, для организации вычитания, представляя числа в дополнительном или обратном кодах, а также в устройствах умножения и деления.
Последовательные сумматоры последовательно обрабатывают разряды чисел; они отличаются относительно низким быстродействием и простотой схемы.
Параллельные сумматоры обрабатывают все разряды чисел одновременно, параллельно; за счет этого они обладают высоким быстродействием, но имеют сложную структуру.
Литература
1. Зельдин Е.А. Цифровые интегральные микросхемы в информационно-измерительной аппаратуре – Л.: Энергоиздат , 1986 г., c. 123…145.
2. Потемкин И.С. Функциональные узлы цифровой автоматики – М.: Энергоатомиздат, 1988 г., c. 121…132.
3. Сайт в интернете: WWW. abc. WSV.ru
4. Сайты в интернете : rff.tsu.ru, pub. mirea. ac. ru