Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PROFORG / Диплом-правка.doc
Скачиваний:
57
Добавлен:
16.04.2013
Размер:
1.18 Mб
Скачать

2.4 Дерево Уоллеса

Как уже было рассмотрено, существует множество различных архитектур умножителей, т.к. полученные на выходе схемы Бута частичные произведения можно суммировать по-разному. Классические способы (итеративный, линейный) с относительно медленны. Одним из наиболее эффективных их известных им замен является дерево Уоллеса.

Архитектура дерева Уоллеса позволяет складывать биты разных разрядов частичных произведений одновременно. Это делается так: на каждом шаге мы уменьшаем количество слагаемых с nдо 2n/3 с помощью сумматоров с запоминанием переноса (полных сумматоров). Эта процедура рекурсивно повторяется до тех пор, пока не останется два слагаемых. Пример схемы, уменьшающей число операндов с трех до двух можно видеть на рисунке 2.8

CSA – Carry save adder, полный сумматор.

Рис. 2.8

Рассмотрим общую идею подробнее:

  1. Возьмем любой «срез» суммы частичных произведений шириной в 1 бит. Приплюсуем к нему биты, получившиеся на выходе предыдущей колонки (переносы). Пусть общее число битов n.

  2. Разложим nкакn=3k0+l0, где 0<=l0<=2. На первом шаге каждый изk0триплетов сжимается полным сумматором до двух значений - сумма/перенос. Переносы приплюсуются к битам следующей колонки, всего же осталось 2k0+l0бит. Их можно разложить как 2k0+l0= 3k1+l1, где 0<=l1=2, а затем сжать триплеты полными сумматорами.

  3. Продолжаем процедуру рекурсивно до тех пор, пока не останется два значения.

В качестве иллюстрации к вышесказанному приведу пример построения дерева Уоллеса для первых младших 8-ми бит. Замечу, что один из битов-переносов в следующий разряд выгодно оставить в качестве одного из выходных битов этого разряда (вторым выходным битом будет значение суммы в этом разряде). Поэтому, несмотря на то, что число переносов в следующий разряд равно n, участвовать в суммировании следующего будут толькоn-1 бит переноса.

Номера бит (младшие биты имеют меньшие номера)

7

6

5

4

3

2

1

0

Общее число бит (с учетом переносов из предыдущего разряда)

4+2

5+1

3+1

4

2

3

1

2

Количество переносов в следующий разряд

3

3

2

2

1

1

0

0

Количество требуемых сумматоров 1

2+

2+

1+

1+

1

0

0

Количество бит на выходе

2

2

2

2

2

1

1

2

1- дробьозначает полусумматор.

2.5 Сумматор с предвычислением переносов

Рассмотрим классическое каскадное суммирование двух чисел. Сложение двух бит в разряде может привести к формированию переноса. В любом случае мы не можем перейти к суммированию следующего разряда, не получив значения переноса в текущем. Это приводит к тому, что перенос «путешествует» через все разряды. Как результат, финальная сумма и перенос будут доступны после значительной задержки. Для схемы на рисунке 2.9, значение бита суммы в самом старшем разряде будет доступно после 2(N-1) +1 значений задержек срабатывания вентилей., гдеN– число бит операндов. Финальный перенос будет доступен через 2Nзначений задержек срабатывания вентилей Эта задержка добавляется ко всем остальным задержкам, связанным с межсоединениями.

Рис 2.9

Недостаток каскадного сложения в том, что работа его становится чересчур медленной в случае сложения операндов большой разрядности. Например, для 32х разрядного сумматора, который используется в данной дипломной работе, эта задержка составит около 63 ns, если время срабатывания логического элемента будет 1 ns, что приведет к тому, что значение максимальной частоты, на которой будет работать этот сумматор, составит всего лишь около 16MHz! Эту проблему решает сумматор с предвычислением переносов, вычисляющий переносы в процессе, основываясь на входных операндах. Общая идея такова – перенос из разряда формируется в двух случаях: когда оба входных бита операндов ai и bi равны 1, или когда один из них 1, и перенос из предыдущего разряда также 1. Следовательно, можно записать:

Произведем замену обозначений:

;

Заметим, что GиPзависят только от бит операндов, и не зависят от значения переноса из предыдущего разряда. Если нужно вычислить значение переноса в конкретном разряде, не нужно ждать, пока перенос пройдет все предыдущие разряды. Рассмотрим на примере 4х битного сумматора.

Обратите внимание, что C4, выходной бит переноса, будет доступен после трех задержек. Бит суммы вычисляется следующим образом:

Бит суммы будет доступен после дополнительной задержки. Преимущество же данного подхода, как видно, в том, что величины задержек не зависят от числа суммируемых бит, в отличие от каскадного сумматора.

В реализации сумматор с предвычислением переносов выгодно разбить на два блока: полный сумматор, генерирующий дополнительно сигналы PиG, и логику (схема ускоренного переноса), вычисляющую переносы, исходя из подаваемых ей на входы сигналовP,G,C0. Построим на их базе 4-битный сумматор.

Рис 2.10 4х битный сумматор

Недостаток сумматора с предвычислением переносов в том, что логика схемы ускоренного переноса становится слишком сложной для случая более 4 бит. По этой причине используют иерархическую структуру при построении сумматоров разрядностью более 4х бит. Пример для сумматора разрядностью 16 бит на рисунке 2.11

Рис 2.11 16-ти битный сумматор

ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ

Соседние файлы в папке PROFORG