Сумматоры
Как известно, все многообразие математических операций можно свести к единственной операции сложения прямых и обратных кодов чисел, сдвинутых влево или вправо на то или иное число разрядов. Поэтому одним из основных узлов вычислительных устройств является сумматор (SM). Любые сумматоры многоразрядных чисел могут быть построены на основе одноразрядного сумматора, который выполняет сложение трех одноразрядных двоичных чисел – двух слагаемых а и b с учетом переноса из более младшего разряда суммы. Результатом его работы является один разряд суммы и сигнал переноса в более старший разряд. В табл. 3.11 приведены все возможные варианты значений i-го разряда суммы si и переноса в старший разряд pi+i, возникающие при сложении слагаемых аi, bi с учетом переноса рi.
Таблица 3.11
Перенос предыдущего разряда pi |
Слагаемое |
Сумма si |
Перенос в старший разряд pi+1 |
|
аi |
bi |
|||
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
Составленная СовДНФ для сигнала переноса имеет вид:
Произведя операции неполного склеивания первой конъюнкции с четвертой, второй с четвертой и третьей с четвертой, получим:
(3.1)
Для получения булевой функции сигнала суммы si можно воспользоваться обычным способом на основе СовДНФ, однако в интегральной схемотехнике для этого используют другой вид функции si, использующий полученное выражение для сигнала pj+l. Надо обратить внимание на то, что во всех строках таблицы истинности, кроме первой и последней,. Чтобы использовать сигнал
рi+1, необходимо получить из него выражение, удовлетворяющее первой и последней строкам. Выражение равно нулю только в первой строке таблицы, а во всех остальных равно единице. Значит, конъюнкция с выражением сохранит все единичные значения , кроме первой строки. Чтобы добавить единицу в последней строке, выполним операцию ИЛИ полученного выражения с конъюнкцией aibiрi Таким образом, выражение для сигнала суммы si примет окончательный вид:
Поскольку в интегральной схемотехнике базовый элемент обычно обеспечивает инвертирование, то схема сумматора имеет вид, приведенный на рис. 3.22, а. Чтобы получить прямые значения сигналов si и pi+1 необходимы еще два инвертора. Условное обозначение одноразрядного сумматора приведено на рис. 3.22, б.
Рис. 3.22. Сумматор:
а – функциональная схема; б – условное обозначение
Последовательный многоразрядный сумматор
Используя одноразрядный сумматор, можно построить суммирующее устройство для сложения многоразрядных двоичных чисел. Различают многоразрядные последовательные и параллельные сумматоры.
Последовательный сумматор состоит из одноразрядного сумматора, на входы которого из сдвигающих регистров, хранящих слагаемые А и В, подаются по тактам разряд за разрядом коды этих чисел, начиная с младшего разряда (рис. 3.23). Если время элемента задержки равно одному такту (например, использован D-триггер), то сигнал переноса от предыдущего разряда, сформированный в предыдущем такте, поступит на нижний вход сумматора только в следующем такте, когда на входы а и b будут поданы значения следующего разряда слагаемых. В результате на выходе s разряд за разрядом будет формироваться двоичное число, равное сумме чисел А и В, которое будет восприниматься сдвигающим регистром суммы.
Рис. 3.23. Последовательный многоразрядный сумматор
Параллельные сумматоры
Недостатком последовательного сумматора является то, что выполнение операции сложения растягивается на множество тактов, которое гем больше, чем больше разрядность чисел. Значительно меньшее время выполнения операции имеет параллельный сумматор. В этом устройстве операция сложения производится одновременно во всех разрядах чисел А и В, поступающих в параллельном коде. Для этого схему составляют из п одноразрядных сумматоров, соединяя выход переноса i-го разряда со входом переноса соседнего (i + 1)-го разряда (рис. 3.24). Такой сумматор называют сумматором с последовательным переносом. После того как сформируется результат на выходах всех одноразрядных сумматоров, он запоминается в параллельном регистре.
Для того чтобы на выходах одноразрядных сумматоров сформировался результат, необходимо, чтобы на входах присутствовали все три сигнала – аi, bi, и рi. Но сигнал переноса из разряда в разряд формируется предыдущими одноразрядными сумматорами, причем каждый последующий сумматор вынужден "ждать", пока не сформируется результат во всех предыдущих. В крайнем случае возможна ситуация, когда сигнал переноса будет последовательно передаваться через всю цепочку от самого младшего разряда до самого старшего, например, при сложении чисел A = 11...11 и В = 00...01. Поэтому время формирования результата в наихудшем случае включает в себя временные задержки, вносимые всеми одноразрядными сумматорами.
Рис. 3.24. Параллельный сумматор с последовательным переносом
Исключить длительность распространения переноса позволяет сумматор с параллельным переносом. Идея заключается в том, чтобы сигналы переноса для всех разрядов формировались чисто логически на основе слагаемых A и В. Рассмотрим, как это можно сделать.
Сигнал переноса в 1-й разряд p1 =а0b0 . Сигнал переноса во второй разряд можно определить по формуле (3.1):
Как видно, сигнал переноса р2 может быть получен по значениям предыдущих разрядов чисел А и В без сигнала переноса р1, формируемого сумматором. Подставляя в формулу (3.1) выражение для сигнала переноса р2, можно получить логическое выражение для сигнала переноса третьего разряда, в котором также будут значения только предыдущих разрядов чисел А и В, и т.д. Таким образом, сигналы переноса для любого разряда могут быть сформированы чисто логическим путем по значениям слагаемых. Значит, нет необходимости ожидать, пока будут сформированы сигналы переноса одноразрядными сумматорами. Очевидно, однако, и другое. Чем больше разрядность чисел, тем выше сложность булевых функций сигналов переноса, особенно для самого старшего разряда. Поэтому сумматоры с параллельным переносом делают для чисел небольшой разрядности – не более восьми.
Структура сумматора с параллельным переносом приведена на рис. 3.25. Сигналы переноса формируются специальными логическими схемами ускоренного переноса CR (англ. carry – перенос), вычисляющими соответствующие булевы функции.
Puc. 3.25. Сумматор с параллельным переносом
Для чисел большой разрядности применяют сумматоры с групповым переносом (рис. 3.26). Схема такого сумматора разбивается на l групп разрядности т: например, четыре группы по восемь разрядов для сложения 32-разрядных чисел. (Обозначение m эквивалентно изображению группы из т проводников и используется для указания разрядности цифровых устройств и линий связи между ними.) Каждая группа представляет собой параллельный сумматор, подобный изображенному на рис. 3.25. На вход рвх поступает сигнал переноса от старшего разряда предыдущей группы к младшему разряду последующей группы. Этот сигнал формируется блоком переноса, анализирующим т разрядов слагаемых А и В "своей" группы, "не дожидаясь", когда в ней произойдет сложение всех разрядов. Блоки переноса (БП) разных групп включены последовательно и образуют тракт передачи переноса.
Рис. 3.26. Групповой сумматор с цепным переносом
Эта структура сумматора с групповым переносом аналогична структуре сумматора с последовательным переносом, где вместо одноразрядных сумматоров включаются групповые. Такая структура получила название группового сумматора с цепным переносом.
Кроме структуры группового сумматора с цепным переносом возможна структура с параллельными межгрупповыми переносами. Структура этого сумматора аналогична структуре сумматора с параллельным переносом, в котором роль одноразрядных сумматоров играют группы. Аппаратная сложность сумматоров с параллельными межгрупповыми переносами выше, чем сложность предыдущего варианта, но при больших разрядностях они дают преимущества по быстродействию.