Сумматор – вычитатель - Adder–subtractor

В цифровых схемах , Сумматор-вычитатель является схемой, которая способна добавления или вычитания числа (в частности, двоичный ). Ниже представлена ​​схема, которая добавляет или вычитает в зависимости от управляющего сигнала. Также возможно построить схему, которая одновременно выполняет и сложение, и вычитание.

Строительство

4-битовые пульсации перенос сумматор-вычитатель на основе 4-битовый сумматор , который выполняет дополнение до двух на А , когда D = 1 с получением S = B - A .

Имея п -разрядного сумматор для A и B , то S = + B . Затем предположим, что числа даны в дополнении до двух . Затем, чтобы выполнить B - A , теория дополнения до двух требует инвертировать каждый бит A с помощью логического элемента NOT, а затем добавить единицу. Это дает S = B + A + 1 , что легко сделать с помощью слегка модифицированного сумматора.

Перед каждым входным битом A на сумматоре стоит мультиплексор 2 к 1, где:

  • Вход 0 ( I 0 ) - A
  • Вход 1 ( I 1 ) - A

который имеет управляющий вход D, который также подключен к начальному переносу, то модифицированный сумматор выполняет

  • сложение, когда D = 0 , или
  • вычитание при D = 1 .

Это работает , потому что , когда D = 1 вход сумматора действительно и перенос в равен 1. Добавление В к А и 1 дает искомое вычитание из B - A .

Вы можете пометить число A как положительное или отрицательное, не используя мультиплексор для каждого бита, - это вместо этого использовать вентиль XOR перед каждым битом.

  • Первый вход в вентиль XOR - это фактический входной бит.
  • Вторым входом логического элемента XOR для каждого из них является управляющий вход D

Это создает ту же таблицу истинности для бита, поступающего в сумматор, что и решение мультиплексора, поскольку выход логического элемента XOR будет таким же, как входной бит, когда D = 0, и инвертированный входной бит, когда D = 1 .

Роль в арифметико-логическом блоке

Сумматоры являются частью ядра арифметико-логического устройства (АЛУ). Блок управления решает, какие операции должен выполнять ALU (на основе выполняемого кода операции), и устанавливает операцию ALU. D вход сумматора-вычитателя выше , были бы один такой контроль линии от блока управления.

Приведенный выше сумматор-вычитатель можно легко расширить, включив в него больше функций. Например, на каждом B i может быть установлен мультиплексор 2: 1, который будет переключаться между нулем и B i ; это можно было бы использовать (вместе с D = 1 ), чтобы получить два дополнения к A, поскольку - A = A + 1 .

Следующим шагом будет изменение мультиплексирования 2 к 1 на A на 4 к 1 с нулевым третьим входом, а затем репликация этого на B i, что приведет к следующим функциям вывода:

  • 0 (с обоими входами A i и B i, установленными на ноль и D = 0 )
  • 1 (с обоими входами A i и B i, установленными на ноль и D = 1 )
  • A (с нулевым входом B i )
  • B (с нулевым входом A i )
  • A + 1 (с входом B i, установленным на ноль и D = 1 )
  • B + 1 (с входом A i, установленным на ноль и D = 1 )
  • А + В
  • А - Б
  • Б - А
  • A (при A i установлено инвертировать; B i установлено на ноль; и D = 0 )
  • - A A i, установленным на инверсию; B i установлен на ноль; и D = 1 )
  • B B i, установленным на инверсию; A i установлен на ноль; и D = 0 )
  • - B (при B i установлено инвертировать; A i установлено на ноль; и D = 1 )

Добавив больше логики перед сумматором, один сумматор можно превратить в нечто большее, чем просто сумматор - ALU.

Смотрите также