В цифровых схемах сумматор -вычитатель — это схема, способная складывать или вычитать числа (в частности, двоичные ). Ниже представлена схема, которая складывает или вычитает в зависимости от управляющего сигнала. Также возможно построить схему, которая одновременно выполняет и сложение, и вычитание. [1]
Имея n - битный сумматор для A и B , тогда S = A + B. Затем предположим, что числа находятся в дополнении до двух . Затем, чтобы выполнить B − A , теория дополнения до двух говорит, что нужно инвертировать каждый бит A с помощью вентиля НЕ, а затем добавить один. Это дает S = B + A + 1 , что легко сделать с помощью слегка модифицированного сумматора.
Перед каждым входным битом A в сумматоре используется мультиплексор 2-к-1 , где:
который имеет управляющий вход D , который также подключен к начальному переносу, то модифицированный сумматор выполняет
Это работает, потому что, когда D = 1 , вход A в сумматор на самом деле равен A , а перенос равен 1. Добавление B к A и 1 дает желаемое вычитание B − A .
Способ пометить число A как положительное или отрицательное без использования мультиплексора для каждого бита — это использовать вместо этого логический элемент XOR , предшествующий каждому биту.
Это создает ту же таблицу истинности для бита, поступающего в сумматор, что и решение с мультиплексором, поскольку выходной сигнал логического элемента XOR будет таким же, как входной бит, когда D = 0 , и инвертированный входной бит, когда D = 1 .
Сумматоры являются частью ядра арифметико-логического устройства (АЛУ). Блок управления решает, какие операции должен выполнять АЛУ (на основе выполняемого кода операции ), и устанавливает операцию АЛУ. Вход D в вышеописанный сумматор-вычитатель будет одной из таких линий управления от блока управления.
Приведенный выше сумматор-вычитатель можно легко расширить, включив в него больше функций. Например, на каждом B i можно ввести мультиплексор 2-к-1 , который будет переключаться между нулем и B i ; это можно использовать (в сочетании с D = 1 ), чтобы получить дополнение до двух A , поскольку − A = A + 1 .
Следующим шагом будет изменение мультиплекса 2 к 1 на A на мультиплекс 4 к 1 с нулевым третьим входом, а затем повторение этого на B i , что даст следующие выходные функции:
Добавив дополнительную логику перед сумматором, один сумматор можно превратить в нечто большее, чем просто сумматор, — в АЛУ.