Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Full adder )
Перейти к навигации Перейти к поиску

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

Хотя сумматоры могут быть построены для многих представлений чисел , таких как десятичное двоичное кодирование или избыточное число 3 , наиболее распространенные сумматоры работают с двоичными числами . В случаях, когда дополнение до двух или до единиц используется для представления отрицательных чисел , легко преобразовать сумматор в сумматор-вычитатель . Другие представления чисел со знаком требуют большей логики относительно базового сумматора.

Двоичные сумматоры [ править ]

Полусумматор [ править ]

Логическая схема полусумматора
Полусумматор в действии

Половина сумматор добавляет две отдельные двоичные цифры A и B . Он имеет два выхода: сумма ( S ) и перенос ( C ). Сигнал переноса представляет собой переход к следующей цифре многозначного сложения. Значение суммы составляет 2 С + С . Простая конструкция полусумматора, изображенная справа, включает в себя ворота XOR для S и и ворота для C . Булева логика для суммы (в данном случае S ) будет A′B + AB ′, тогда как для переноса ( C) будет AB . С добавлением логического элемента ИЛИ для объединения их выходов переноса два полусумматора могут быть объединены в полный сумматор. [1] Полусумматор складывает два входных бита и генерирует перенос и сумму, которые являются двумя выходами полусумматора. Входные переменные полусумматора называются дополнительными и дополнительными битами. Выходные переменные - это сумма и перенос. Таблица истинности для полусумматора:

Полусумматор, использующий только вентили NAND.

Полный сумматор [ править ]

Логическая схема для полного сумматора.
Полный сумматор в действии. Полный сумматор дает количество единиц на входе в двоичном представлении.
Схематический символ для 1-битного полного сумматора с C in и C out, нарисованными на сторонах блока, чтобы подчеркнуть их использование в многобитном сумматоре

Полный сумматор добавляет двоичные числа и счета для значений , переносимых в, так и снаружи. Один-бит полный сумматор добавляет три один-битных чисел, часто пишется как A , B и C в ; A и B - это операнды, а C in - это бит, перенесенный из предыдущего менее значимого этапа. [2] Полный сумматор обычно является компонентом каскада сумматоров, которые складывают 8, 16, 32 и т. Д. Двоичные числа. Схема выдает двухбитный выходной сигнал. Выходной перенос и сумма обычно представлены сигналами C out и S , где сумма равна 2 C out.+ S .

Полный сумматор может быть реализован множеством различных способов, например, с помощью специальной схемы на уровне транзистора или составлен из других вентилей. Один пример реализации - S = ABC in и C out = ( AB ) + ( C in ⋅ ( AB )) .

В этой реализации последний логический элемент ИЛИ перед выходом переноса может быть заменен логическим элементом исключающее ИЛИ без изменения результирующей логики. Использование только двух типов вентилей удобно, если схема реализуется с использованием простых микросхем интегральной схемы, которые содержат только один тип вентилей на микросхему.

NOR Полный сумматор

Полный сумматор также может быть построен из двух полусумматоров, подключив A и B ко входу одного полусумматора, затем взяв его суммарный выход S в качестве одного из входов для второго полусумматора и C в качестве другого входа, и наконец, выходы переноса двух полусумматоров подключаются к логическому элементу ИЛИ. Суммарный выход второго полусумматора - это конечный суммарный выход ( S ) полного сумматора, а выход логического элемента ИЛИ - это конечный выход переноса ( C out ). Критический путь полного сумматора проходит через оба логических элемента XOR и заканчивается на суммирующем бите s.. Предполагая, что вентиль XOR занимает 1 задержку для завершения, задержка, вызванная критическим путем полного сумматора, равна

Критический путь переноса проходит через один вентиль XOR в сумматоре и через 2 логических элемента (AND и OR) в блоке переноса, и поэтому, если логическим элементам AND или OR требуется 1 задержка для завершения, задержка составляет

Таблица истинности для полного сумматора:

Сумматоры, поддерживающие несколько битов [ править ]

Сумматор с переносом пульсации [ править ]

4-битный сумматор с показанной логической блок-схемой
Десятичный 4-значный сумматор переноса пульсации. FA = полный сумматор, HA = полусумматор.

Можно создать логическую схему, используя несколько полных сумматоров для добавления N- битных чисел. Каждый полный сумматор вводит C in , который является C из предыдущего сумматора. Этот вид сумматора называется сумматором с пульсационным переносом (RCA), поскольку каждый бит переноса "пульсирует" до следующего полного сумматора. Обратите внимание, что первый (и только первый) полный сумматор может быть заменен полусумматором (при условии, что C in = 0).

Компоновка сумматора с волновым переносом проста, что позволяет сократить время разработки; однако сумматор с переносом пульсаций работает относительно медленно, поскольку каждый полный сумматор должен ждать, пока бит переноса будет вычислен из предыдущего полного сумматора. Задержка затвора может быть легко вычислен путем проверки полной суммирующей схемы. Каждый полный сумматор требует трех уровней логики. В 32-битном сумматоре с переносом пульсации имеется 32 полных сумматора, поэтому задержка критического пути (наихудший случай) равна 3 (от входа до переноса в первом сумматоре) + 31 × 2 (для распространения переноса в последних сумматорах) = 65 задержки выхода на посадку. [3] Общее уравнение для задержки наихудшего случая для n -битного сумматора пульсации переноса, учитывающее как сумму, так и биты переноса, выглядит следующим образом:

Конструкция с чередующимися полярностями переноса и оптимизированными вентилями И-ИЛИ-Инвертировать может работать примерно в два раза быстрее. [4]

4-битный сумматор с опережающим переносом

Сумматор с упреждением [ править ]

Чтобы сократить время вычислений, инженеры разработали более быстрые способы сложения двух двоичных чисел с помощью сумматоров с упреждающим переносом (CLA). Они работают, создавая два сигнала ( P и G ) для каждой битовой позиции в зависимости от того, распространяется ли перенос из менее значимой битовой позиции (по крайней мере, один вход равен 1), генерируемых в этой битовой позиции (оба входа равны 1 ) или убит в этой битовой позиции (оба входа равны 0). В большинстве случаев P - это просто выход суммы полусумматора, а G - выход переноса того же сумматора. После того, как сгенерированы P и G, создаются переносы для каждой битовой позиции. Некоторые передовые архитектуры с упреждающим просмотром - этоМанчестерская цепь переноса , сумматор Брента – Кунга (BKA) [5] и сумматор Когге – Стоуна (KSA). [6] [7]

Некоторые другие архитектуры многобитового сумматора разбивают сумматор на блоки. Можно изменять длину этих блоков в зависимости от задержки распространения схем для оптимизации времени вычислений. Эти блочные сумматоры включают сумматор пропуска переноса (или обхода переноса), который будет определять значения P и G для каждого блока, а не каждого бита, и сумматор выбора переноса, который предварительно генерирует сумму и значения переноса для любого возможного переноса. введите (0 или 1) в блок, используя мультиплексоры для выбора соответствующего результата, когда известен бит переноса.

64-битный сумматор

Комбинируя несколько сумматоров с упреждающим переносом, можно создавать сумматоры еще большего размера. Это можно использовать на нескольких уровнях для создания еще более крупных сумматоров. Например, следующий сумматор представляет собой 64-битный сумматор, который использует четыре 16-битных CLA с двумя уровнями блоков опережающего переноса .

Другие конструкции сумматор включают кэрри-выберите гадюка , условная сумма сумматор , кэрри-пропуском сумматор и кэрри-полный сумматор.

Сумматоры Carry-save [ править ]

Если схема сложения должна вычислять сумму трех или более чисел, может быть полезно не распространять результат переноса. Вместо этого используются трехвходовые сумматоры, генерирующие два результата: сумму и перенос. Сумма и перенос могут подаваться на два входа последующего сумматора с 3 числами, не дожидаясь распространения сигнала переноса. Однако после всех этапов сложения необходимо использовать обычный сумматор (например, волновой перенос или опережающий просмотр) для объединения окончательной суммы и результатов переноса.

3: 2 компрессора [ править ]

Полный сумматор можно рассматривать как компрессор с потерями 3: 2 : он суммирует три однобитовых входа и возвращает результат как одно двухбитное число; то есть он отображает 8 входных значений на 4 выходных значения. Таким образом, например, двоичный вход 101 дает результат 1 + 0 + 1 = 10 (десятичное число 2). Выполнение представляет собой один бит результата, а сумма представляет собой нулевой бит. Точно так же полусумматор можно использовать как компрессор с потерями 2: 2 , сжимая четыре возможных входа в три возможных выхода.

Такие компрессоры можно использовать для ускорения суммирования трех или более слагаемых. Если слагаемых ровно три, макет называется сумматором с сохранением переноса . Если слагаемых четыре или более, необходимо более одного уровня компрессоров, и существуют различные возможные конструкции контура: наиболее распространенными являются деревья Дадды и Уоллеса . Этот вид схемы чаще всего используется в умножителях , поэтому эти схемы также известны как умножители Дадды и Уоллеса.

См. Также [ править ]

  • Вычитатель
  • Электронный микшер - для добавления аналоговых сигналов

Ссылки [ править ]

  1. ^ Ланкастер, Джеффри А. (2004). Разработка и разработка программного обеспечения Excel HSC . Паскаль Пресс. п. 180. ISBN 978-1-74125175-3.
  2. ^ Мано, М. Моррис (1979). Цифровая логика и компьютерный дизайн . Прентис-Холл . С.  119–123 . ISBN 978-0-13-214510-7.
  3. ^ Satpathy, Пинаки (2016). Разработка и реализация сумматора Carry Select с использованием T-Spice . Якорное академическое издательство. п. 22. ISBN 978-3-96067058-2.
  4. ^ Берджесс, Нил (2011). Сумматоры с быстрым переносом пульсации в КМОП СБИС со стандартной ячейкой . 20-й симпозиум IEEE по компьютерной арифметике . С. 103–111.
  5. ^ Brent, Richard Peirce; Kung, Hsiang Te (March 1982). "A Regular Layout for Parallel Adders". IEEE Transactions on Computers. C-31 (3): 260–264. doi:10.1109/TC.1982.1675982. ISSN 0018-9340. S2CID 17348212.
  6. ^ Kogge, Peter Michael; Stone, Harold S. (August 1973). "A Parallel Algorithm for the Efficient Solution of a General Class of Recurrence Equations". IEEE Transactions on Computers. C-22 (8): 786–793. doi:10.1109/TC.1973.5009159. S2CID 206619926.
  7. ^ Reynders, Nele; Dehaene, Wim (2015). Ultra-Low-Voltage Design of Energy-Efficient Digital Circuits. Analog Circuits and Signal Processing Series. Analog Circuits And Signal Processing (ACSP) (1 ed.). Cham, Switzerland: Springer International Publishing AG Switzerland. doi:10.1007/978-3-319-16136-5. ISBN 978-3-319-16135-8. ISSN 1872-082X. LCCN 2015935431.

Further reading[edit]

  • Liu, Tso-Kai; Hohulin, Keith R.; Shiau, Lih-Er; Muroga, Saburo (January 1974). "Optimal One-Bit Full-Adders with Different Types of Gates". IEEE Transactions on Computers. Bell Laboratories: IEEE. C-23 (1): 63–70. doi:10.1109/T-C.1974.223778. ISSN 0018-9340. S2CID 7746693.
  • Lai, Hung Chi; Muroga, Saburo (September 1979). "Minimum Binary Parallel Adders with NOR (NAND) Gates". IEEE Transactions on Computers. IEEE. C-28 (9): 648–659. doi:10.1109/TC.1979.1675433. S2CID 23026844.
  • Mead, Carver; Conway, Lynn (1980) [December 1979]. Introduction to VLSI Systems (1 ed.). Reading, MA, USA: Addison-Wesley. Bibcode:1980aw...book.....M. ISBN 978-0-20104358-7. Retrieved 2018-05-12.
  • Davio, Marc; Dechamps, Jean-Pierre; Thayse, André (1983). Digital Systems, with algorithm implementation (1 ed.). Philips Research Laboratory, Brussels, Belgium: John Wiley & Sons, a Wiley-Interscience Publication. ISBN 978-0-471-10413-1. LCCN 82-2710.

External links[edit]

  • Hardware algorithms for arithmetic modules, includes description of several adder layouts with figures.
  • 8-bit Full Adder and Subtractor, a demonstration of an interactive Full Adder built in JavaScript solely for learning purposes.
  • Interactive Full Adder Simulation (requires Java), Interactive Full Adder circuit constructed with Teahlab's online circuit simulator.
  • Interactive Half Adder Simulation (requires Java), Half Adder circuit built with Teahlab's circuit simulator.
  • 4-bit Full Adder Simulation built in Verilog, and the accompanying Ripple Carry Full Adder Video Tutorial
  • Shirriff, Ken (November 2020). "Reverse-engineering the carry-lookahead circuit in the Intel 8008 processor".