Двоичный каскадный сумматор — различия между версиями
м (ну блин) |
Bobrov (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | + | {{Определение | |
− | [[Файл:Полный_сумматор_1.png|200px| | + | |definition='''Двоичный каскадный сумматор''' {{---}} цифровая [[Реализация булевой функции схемой из функциональных элементов|схема]], осуществляющая сложение двух многоразрядных двоичных чисел. |
− | < | + | }} |
− | < | + | |
− | < | + | == Принцип работы == |
− | < | + | [[Файл:Полный_сумматор_1.png|right|200px|thumb|[[Cумматор#.D0.9F.D0.BE.D0.BB.D0.BD.D1.8B.D0.B9_.D1.81.D1.83.D0.BC.D0.BC.D0.B0.D1.82.D0.BE.D1.80|Полный сумматор]]]] |
− | < | + | '''Обозначения:''' |
− | + | * <tex>X_{i}, Y_{i}</tex> {{---}} i-ый разряд суммируемых чисел | |
− | + | * <tex>C_{i}, C_{i+1}</tex> {{---}} биты переноса | |
− | + | * <tex>F_{i}</tex> {{---}} результат сложения. | |
− | + | ||
− | + | Рассмотрим один элемент [[Каскадный сумматор|линейного каскадного сумматора]]. В некоторых случаях бит переноса <tex>C_{i+1}</tex> зависит только от значений <tex>X_{i}</tex> и <tex>Y_{i}</tex>: | |
− | + | * Generate(g): <tex>X_{i} = Y_{i} = 1</tex>, тогда <tex>C_{i+1} = 1</tex> | |
− | + | * Kill(k): <tex>X_{i} = Y_{i} = 0</tex>, тогда <tex>C_{i+1} = 0</tex>, | |
− | + | * Propagate(p): <tex>X_{i} \ne Y_{i}</tex>, тогда <tex>C_{i+1} = C_{i}</tex>, | |
− | |||
− | |||
− | |||
− | |||
− | |||
Обозначим композицию действий над переносами значком <tex>\bigotimes</tex> и рассмотрим таблицу: | Обозначим композицию действий над переносами значком <tex>\bigotimes</tex> и рассмотрим таблицу: | ||
− | {| border="1" | + | {| border="1" cellpadding="5" |
!<tex>\bigotimes</tex> | !<tex>\bigotimes</tex> | ||
!k | !k | ||
Строка 44: | Строка 39: | ||
|- | |- | ||
|} | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Схема | + | |
− | [[Файл:Двоичный_каскадный_сумматор.png|560px]] | + | '''Пример''' |
− | + | ||
− | Сумматор состоит из двух частей. | + | [[Файл:Пример компазиции.png|430px|Пример композиции]] |
+ | |||
+ | Таким образом, функцию <tex>\bigotimes</tex> можно определить как последнее не "P". | ||
+ | |||
+ | |||
+ | == Схема == | ||
+ | [[Файл:Двоичный_каскадный_сумматор.png|560px|thumb|Схема двоичного каскадного сумматора]] | ||
+ | Сумматор состоит из двух частей. Первая часть {{---}} это группа полных сумматоров, вычисляющих ответ. Вторая часть {{---}} [[Дерево_отрезков._Построение|дерево отрезков]], с помощью которого вычисляется бит переноса. | ||
+ | |||
+ | === Обозначения === | ||
+ | * <tex>"+"</tex> {{---}} полный сумматор, вычисляет результат сложения. | ||
+ | * <tex>\bigotimes</tex> вычисляет композицию двух переносов. | ||
+ | * <tex>\bigodot</tex> возвращает <tex>C_{i}</tex>, старший бит сумматора. | ||
+ | |||
+ | |||
+ | |||
+ | == Схемная сложность == | ||
+ | Дерево отрезков вычисляет биты переноса за <tex>O(\log N)</tex>, оставшиеся действия выполняются за <tex>O(1)</tex>. Суммарное время работы {{---}} <tex>O(\log N)</tex>. | ||
+ | |||
+ | |||
+ | == Ссылки == | ||
+ | * [http://rain.ifmo.ru/cat/view.php/vis/arithmetics/binary-addition-2002/algorithm Дискретная математика: алгоритмы] | ||
+ | * [http://en.wikipedia.org/wiki/Adder_(electronics) Wikipedia] | ||
+ | |||
+ | [[Категория:Дискретная математика и алгоритмы]] | ||
+ | [[Категория:Схемы из функциональных элементов]] |
Версия 00:21, 17 ноября 2011
Определение: |
Двоичный каскадный сумматор — цифровая схема, осуществляющая сложение двух многоразрядных двоичных чисел. |
Принцип работы
Обозначения:
- — i-ый разряд суммируемых чисел
- — биты переноса
- — результат сложения.
Рассмотрим один элемент линейного каскадного сумматора. В некоторых случаях бит переноса зависит только от значений и :
- Generate(g): , тогда
- Kill(k): , тогда ,
- Propagate(p): , тогда ,
Обозначим композицию действий над переносами значком и рассмотрим таблицу:
k | p | g | |
---|---|---|---|
k | k | k | g |
p | k | p | g |
g | k | g | g |
Пример
Таким образом, функцию
можно определить как последнее не "P".
Схема
Сумматор состоит из двух частей. Первая часть — это группа полных сумматоров, вычисляющих ответ. Вторая часть — дерево отрезков, с помощью которого вычисляется бит переноса.
Обозначения
- — полный сумматор, вычисляет результат сложения.
- вычисляет композицию двух переносов.
- возвращает , старший бит сумматора.
Схемная сложность
Дерево отрезков вычисляет биты переноса за
, оставшиеся действия выполняются за . Суммарное время работы — .