Двоичный каскадный сумматор — различия между версиями
(→См. также) |
(→Принцип работы) |
||
| Строка 13: | Строка 13: | ||
Три случая называются следующим образом: | Три случая называются следующим образом: | ||
| − | * <math> generate</math> {{---}} | + | * <math> generate</math> {{---}} ''порождение'' переноса, |
| − | * <math>kill</math> {{---}} | + | * <math>kill</math> {{---}} ''уничтожение'' переноса, |
| − | * <math>propagate</math> {{---}} | + | * <math>propagate</math> {{---}} ''проталкивание'' переноса. |
Поскольку последовательное применение этих трёх действий над переносами принадлежит также одному из этих типов, то можно определить композицию действий над переносами. Обозначим композицию значком <tex>\otimes</tex> и построим таблицу значений (в столбце первый аргумент, в строке — второй): | Поскольку последовательное применение этих трёх действий над переносами принадлежит также одному из этих типов, то можно определить композицию действий над переносами. Обозначим композицию значком <tex>\otimes</tex> и построим таблицу значений (в столбце первый аргумент, в строке — второй): | ||
| Строка 22: | Строка 22: | ||
!colspan="20"|Таблица значений | !colspan="20"|Таблица значений | ||
|-align="center" | |-align="center" | ||
| − | | <tex>\otimes</tex> || | + | | <tex>\otimes</tex> || '''''k''''' || '''''p''''' || '''''g''''' |
|-align="center" | |-align="center" | ||
| − | | | + | | '''''k''''' || <tex>k</tex> || <tex>k</tex> || <tex>g</tex> |
|-align="center" | |-align="center" | ||
| − | | | + | | '''''p''''' || <tex>k</tex> || <tex>p</tex> || <tex>g</tex> |
|-align="center" | |-align="center" | ||
| − | | | + | | '''''g''''' || <tex>k</tex> || <tex>g</tex> || <tex>g</tex> |
|-align="center" | |-align="center" | ||
|} | |} | ||
Версия 17:00, 19 января 2016
| Определение: |
| Двоичный каскадный сумматор - Binary adder — цифровая схема, осуществляющая сложение двух многоразрядных двоичных чисел, с ускоренным формированием разрядов переноса. |
Принцип работы
Используемые обозначения: — -ый разряд суммируемых чисел, — биты переноса, — результат сложения.
Рассмотрим один элемент линейного каскадного сумматора - Ripple-carry adder. В некоторых случаях бит переноса зависит только от значений и :
- если , то ,
- если , то ;
Иначе () бит переноса не изменяется, то есть .
Три случая называются следующим образом:
- — порождение переноса,
- — уничтожение переноса,
- — проталкивание переноса.
Поскольку последовательное применение этих трёх действий над переносами принадлежит также одному из этих типов, то можно определить композицию действий над переносами. Обозначим композицию значком и построим таблицу значений (в столбце первый аргумент, в строке — второй):
| Таблица значений | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| k | p | g | |||||||||||||||||
| k | |||||||||||||||||||
| p | |||||||||||||||||||
| g | |||||||||||||||||||
Поскольку функция ассоциативна, то можно распространить её на любое количество аргументов. Более того, поскольку для любого действия выполняется равенство , то функцию от нескольких действий можно определить как "последнее не ".
Схема
Сумматор состоит из двух частей. Первая часть — это группа полных сумматоров, вычисляющих ответ. Вторая часть — дерево отрезков, с помощью которого вычисляется бит переноса.
Обозначения
- — полный сумматор, вычисляет результат сложения,
- — блок вычисления композиции двух переносов,
- — блок вычисления , старшего бита сумматора;
Схемная сложность
Дерево отрезков вычисляет биты переноса за , оставшиеся действия выполняются за . Суммарное время работы — .
