Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Книги / Книга Проектирование ВПОВС (часть 2)

.pdf
Скачиваний:
84
Добавлен:
01.06.2015
Размер:
4.62 Mб
Скачать

р

0

 

 

a

a

 

a

3

 

a

4

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

п

0

 

C

C

2

 

C

3

 

C

4

 

 

 

1

 

 

 

 

 

 

 

e

 

e

 

e

 

 

 

e

 

 

 

 

0

1

 

2

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

П

 

 

 

 

 

1

0

 

 

 

 

14

 

Sig0

S

S

S

 

S

 

 

3

 

4

 

 

1

2

 

 

 

 

1

1

1

d

d

4

 

 

3

 

 

P

P

 

P

P

 

 

0

1

 

2

3

 

 

П

 

 

 

 

0

 

 

 

24

S

S

S

S

S

0

1

2

3

4

S

Рис. 3.1

Для суммирования одноименных групп двух слагаемых можно записать

следующую систему уравнений:

Верхний сумматор:

R a c

; R

a

2

c

; R

 

a

3

c

; R

a

4

c

;

1

1

 

1

2

 

 

 

2

 

3

 

 

 

3

 

4

 

4

 

P a c ; P a

c

; P a

c

; P a

c

 

;

 

 

 

4

 

 

 

 

1

1

1

2

2

2

 

 

3

3

3

 

4

 

4

 

 

 

 

 

P

P P R P R R P R R R ;

 

 

 

 

 

 

 

 

 

 

 

 

1 4

 

1

 

2 1

 

 

3

2 1

 

4

3

2

1

 

 

 

 

 

 

R

R R R R ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 4

 

1

2

3

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

P e

R

,

 

 

 

 

 

 

 

 

 

(3.1)

 

 

 

 

 

 

 

 

 

 

3

4

4

 

4

 

 

 

 

 

 

 

 

 

 

 

e

 

P P R e

R R

,

 

 

 

 

 

2

 

 

 

 

 

 

 

3

4

 

3

 

4

3

4

 

 

 

 

 

 

e

 

P P R P R R e R R R

,

 

 

 

 

 

1

2

3

 

2

 

4

3

2

4

4

3

2

 

 

e

0

P

e

R

,

 

 

 

 

 

 

 

 

 

 

1 4

 

4

 

1 4

 

 

 

 

 

 

 

 

 

 

S4 =

e

4

R

4 ; S3=

e3

R

;S2=

e

R

; S1=

e

R

 

 

 

 

 

 

3

2

2

1

 

 

1

 

 

 

Так как

e

4

в младшей группе равно нулю,

то S4

=

e

4

R

в младшей

 

 

4

группе равно

S4

=

 

R

а учитывая,

что во

всех старших группах

e

4 равно

 

4 ,

 

единице, то S4 =

R

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для построения

нижнего

сумматора

вначале

определим

значение

вспомогательного разряда и построим комбинационную схему условного суммирования вспомогательных бит. Вспомогательные биты всегда имеют, как

121

было показано выше, отрицательный знак. Дополнительный разряд каждого слагаемого имеет одно из двух значений нуль: или минус один. Кроме того, при суммировании в дополнительный разряд всегда добавляется минус единица.

Таким образом, дополнительный разряд суммы при отсутствии переноса может иметь 3,2 или 1 отрицательные единицы, а при наличии переноса из группы 2,1 или 0. Учитывая это, построим таблицу истинности для определения логических выражений формирования вспомогательных бит. Выходное значение вспомогательного разряда формируется как сумма двоичных единиц с учётом знака в виде двоичного кода. Нетрудно увидеть, что для представления

числа достаточно двух двоичных разрядов.

Таблица истинности коррекции вспомогательных бит.

X0

X1

X2

e0

d

3

d

4

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

1

0

0

1

1

1

0

1

0

1

0

2

0

1

1

0

1

0

3

1

1

1

0

1

1

4

0

0

1

1

0

0

5

1

0

1

1

0

1

6

0

1

1

1

0

1

7

1

1

1

1

1

0

8

0

0

0

0

*

*

9

1

0

0

0

*

*

10

0

1

0

0

*

*

11

1

1

0

0

*

*

12

0

0

0

1

*

*

13

1

0

0

1

*

*

14

0

1

0

1

*

*

15

1

1

0

1

*

*

d3 = X 0 X1

X e

X1e0 ;

0 0

d4 = X 0 X1e0

X X e

0

1

0

X

0

X e

 

1

0

.

X0 X1e0 .

Здесь

X

0

, X

1

 

 

– текущие дополнительные разряды слагаемых,

X

2

 

компенсирующая минус единица при сложении групп,

а d3 ,

d4

дополнительные разряды после суммирования. Разряд d3

имеет

вес

21

122

 

 

 

относительно разряда

d

 

0

 

4

(2 ), а сами они совпадают с весами младших

разрядов следующей перед ней старшей группы.

Второй сумматор группы осуществляет коррекцию разрядов суммы текущей группы на основании дополнительных разрядов предыдущей группы.

Так как дополнительные разряды отрицательны, то формируется дополнительный код, разрядностью, равной разрядности группы, включая дополнительный разряд. Полученный код суммируется с текущим результатом соседней старшей группы. В результате формируется окончательная сумма и дополнительный разряд, равный нулю или минус единице. Таким образом,

дополнительный разряд всегда равен нулю или минус единице перед началом любой операции. Коррекция может осуществляться на сумматоре, аналогичном сумматору первого уровня, однако в силу того, что второе слагаемое имеет фактически всегда заранее известную структуру, то процесс коррекции результата может быть существенно упрощён. Действительно, возможны

только три типа корректирующих кодов 1.1111, 1.1110, 1.1101.

0

1 P0 x1 1

P1 x2

1 P2 x3 d3

P3

x4 d4

 

 

 

 

 

0

x1

x2

x3

 

x4

y0

y1

y2

y3

 

y4

y

4

 

y

3

 

y2

y

 

1

y

0

 

d4 x4

d3 P3

P2 x2

x P

11

P0 .

d x

4

,

4

x d

3

3

x2 P2

x P

,

1 1

P d

x

4

;

3

4

 

P x

d

P x

 

 

 

3

3

 

 

3

3

3

 

,

P x

2

P

 

;

 

 

1

 

 

2

 

P0 x1 P1 ;

d P x

3

3

3

,

P2

d x

3

3

d P

3

3

P x

3

3

;

Таким образом, на основании вышеизложенного можно определить время суммирования группы разрядов, которое и будет полным временем сложения операндов, так как сложение групп происходит независимо друг от друга.

123

Время суммирования на первом слое сумматоров равно

5

 

, на втором – 3

 

.

 

 

Таким образом, общее время суммирования равно 8

 

.

Для аналогичного

 

двоичного сумматора на 24 разряда общее время суммирования равно (2N+2)

 

, где N – число слоёв и равно 10

 

, т.е. практически равноценны по

 

 

временным параметрам. Однако с ростом разрядности операндов с одной стороны растёт число слоёв, с другой – число входов на элементах “И” и “ИЛИ”, что существенно увеличит задержку прохождения сигнала и, как следствие, общее время суммирования.

Дальнейшее снижение времени суммирования групп возможно путём замены промежуточных функций их выражениями на основе входных

переменных.

 

 

Для примера рассмотрим функции

e

 

P

 

e

R

 

 

 

 

 

 

 

e

R

 

 

 

 

 

 

 

0

 

 

 

1 4

 

 

4

 

1 4 и S1=

 

1

 

1 .

 

 

 

 

 

Функция P1-4

 

равна

 

 

 

Р1 4 Р1

Р2 R1

Р3R2 R1 P4 R3R2 R1 .

Подставляя

значения переменных через входные переменные, получим

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

a c

a a

c

2

a a

a c

 

 

a a a a

4

 

a a

c a

4

c a

a a

4

a a c c

4

 

 

1 4

 

 

1

1

 

 

1

 

 

2

 

1

2

 

3

3

1

2

 

3

 

 

 

 

 

1

2

3

 

 

 

1

 

2

 

3

 

 

1

2

3

 

 

 

c a

c

2

c a

 

a c

 

. c a

a a

4

c a c a

4

 

a a a

4

c a

a a

.

 

 

 

 

 

 

 

 

 

 

1

2

 

 

1

2

 

 

3

3

1

2

 

3

 

1

2

3

 

 

 

 

 

2

3

 

 

 

 

1

2

 

3

4

 

 

 

 

 

 

 

 

 

Аналогично для R1-4 :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R

 

a c a

c

a

c

3

a c a

c

 

a

c

3

a c a

2

c

2

a

c

3

a c a

c

a

 

c

3

a c a

c

a

c

3

 

1 4

 

1

1

2

2

 

3

 

 

 

 

 

1 1 2

2

3

 

 

1

1

 

 

 

3

 

 

 

1

1

 

2

2

3

 

 

 

 

1 1 2

2

3

 

 

a1c1a2 c2 a3c3 a1c1a2 c2 a3c3 a1c1a2 c2 a3c3 a1c1a2 c2 a3c3 a4 c4 a1c1a2 c2 a3c3 a4 c4

a1c1a2 c2 a3c3 a4 c4 a1c1a2 c2 a3c3 a4 c4 a1c1a2 c2 a3c3 a4 c4 a1c1a2 c2 a3c3 a4 c4

a1c1a2 c2 a3c3 a4 c4 a1c1a2 c2 a3c3 a4 c4 .

Учитывая, что e4 во всех группах, кроме последней, равна единице, то время определения е0 равно 3 . Аналогично для е1 и других е.

e1 a2c2 a3c3a2c2 a3c3a2c2 a4c4 a3c3a2c2 a4c4 a3c3 a4c4 a3c3a2c2

e4 a4c4 a3c3a2c2 e4 a4c4 a3c3a2c2 e4 a4c4 a3c3a2c2 e4 a4c4 a3c3a2c2

e4 a4c4 a3c3a2c2 e4 a4c4 a3c3a2c2 e4 a4c4 a3c3a2c2 e4 a4c4 a3c3a2c2

На последнем этапе определяются разряды суммы. Для S1 имеем

S1 = R1 e1. Аналогично для остальных разрядов суммы. Учитывая, что R1

равно R1 a1 c1 a1c1 a1c1 , то, подставляя в S1, получим, что на первом

124

слое сумматоров задержка сигнала равна 3

 

. Нетрудно подсчитать,

что на

 

втором слое сумматоров задержка также равна 3

 

. Таким образом,

общая

 

задержка равна 6

 

.

 

 

 

 

 

 

 

 

 

 

 

Суммируя вышесказанное, можно утверждать, что для реализации

сумматора в коде «опережающий перенос» следует использовать двух-

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

3.3. Умножение в коде "опережающий перенос"

Для получения произведения можно предложить два метода. В первом методе множитель рассматривается как обычное двоичное число. Тогда полное произведение равно сумме произведений множимого на отдельные биты множителя с учётом их веса, начиная со старших разрядов.

Во втором методе полное произведение равно сумме частных произведений множимого на группы множителя, начиная со старшей группы с учётом их весов (частным произведением здесь и далее называется произведение группы на группу). Использование каждого из них предполагает,

что в системе возможны два типа сдвигов. В первом случае сдвиг множимого осуществляется на один двоичный разряд вправо или влево в зависимости от того, со старших или младших разрядов осуществляется умножение. Во втором случае умножение начинается со старшей группы множителя, и

последовательно формируются произведения группы множителя на все группы множимого. В этом случае сдвиг осуществляется на полную группу влево или вправо в зависимости от того, с каких групп начинается умножение (с младших или старших групп).

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

125

групп множимого: Dа – значения разрядов группы, ai – значение дополнительного разряда. Аналогично для групп множителя: Db и bi.

Тогда произведение двух групп можно представить как

Pij = (ai + Da) (bi + Db),

где ai и bi принимают значения либо 0 либо – 1.

В этом случае ai и bi можно рассматривать как знаки чисел, а сумму в скобках как дополнительный код чисел Da и Db. Таким образом, произведение

Pij – суть результата перемножения двух двоичных чисел в дополнительном коде.

Действительно, рассмотрим произведение (ai + Da)Db, которое равно

 

 

m

 

 

 

 

 

 

 

m

 

 

 

 

 

 

P

 

 

a

 

d

k

2

k

 

 

D

d

k

2

k

,

i

b

 

b

 

i, j

 

 

 

 

 

 

a

 

 

 

 

 

 

k 1

 

 

 

 

 

 

 

k 1

 

 

 

 

 

 

где dbk – разряды числа Db, не равные нулю.

Тогда если аi = – 1, то для k = 1, dbk = 1, получим аi 2-1 = – 0,1, или в дополнительном коде аi 2-1 = 1,1, далее (аi 2-2)ДОП = (– 0,01)ДОП = 1.11 и так до последнего разряда группы. Нетрудно увидеть, что для умножения аi на величину dbk 2-k достаточно ввести операцию модифицированного сдвига знакового разряда (арифметический сдвиг с сохранением знака и заполнения освобождающихся разрядов его значением).

Умножение (ai + Dа) на bi равно либо нулю, когда bi = 0, либо дополнению ДОП(ai + Dа). Таким образом, Pij = (ai + Da)Db + (ДОП(ai + Da)) |bj|.

Пример. 3.4.

Пусть Di = 1.01101 и Dj = 0.10101.

Найдем произведение Pi = Di Dj, начиная умножение со старшего значащего разряда

1.01101

*0.10101

1.1011010000 Умножение на 1-значащий разряд

1.1110110100 Умножение на 2-значащий разряд

1.1010000100

1.1111101101 Умножение на 3-значащий разряд

1.1001110001

126

Учитывая, что bi = 0, операцию умножения на 0 и суммирование опускаем. Для проверки умножим Da Db и из произведения вычтем ДОПDb.

0.01101 * 0.10101

0.0100010001

Теперь вычтем из полученного произведения Pi,j Db. Так как Db больше, то выполняем операцию – (Db – Pi,j).

0.1010100000

0.0100010001

0.0110001111

Ответ: (ai + Da) Db = – 0.0110001111.

Так как результат у нас получен в дополнительном коде, то преобразуем отрицательное число в дополнительный код.

((ai + Da) Db)Доп = 1.1001110001.

Как видим, результаты совпадают.

Пример 3.5.

Пусть Di = 1.01111, D,j = 1.10011.

Найдем произведение Pi,j = Di Dj.

1.01111 * 1.10011

1.101111000 1.111101111

1.1011001110 1.1111101111 1.1010111101

~

Промежуточный результат Pi, j = 1.1010111101.

~

Проводим коррекцию умножения Di на bj и прибавляем к Pi, j .

1.1010111101

0.10001

0.0011011101

127

Таким образом, результат равен Pi,j = 0.0011011101.

Для проверки следует раскрыть скобки, выполнить все операции,

задаваемые в алгоритме, и сравнить результаты с методом прямого умножения.

Как следует из табл. 2.1, наибольшим быстродействием обладает метод умножение с суммированием на пирамидальном двухрядном сумматоре. А так как разрядность группы не превышает восьми бит, то этот метод является наилучшим для построения схемы полноразрядного умножения групп.

Таким образом, для построения схемы умножения в ПЛИС первоначально создаётся матричный умножитель двух чисел размерностью n n, где n – равно размеру группы либо 4х4, либо 8х8 или 16х16. Но в целом удобнее спроектировать множество матриц 8х8 и из них формировать требуемую матрицу умножителей. При использовании 4-битовых групп

(матрица умножения 4х4) используются матрицы 8х8 с отсечением восьми младших разрядов, а при 16х16 формируется матрица из четырёх матриц 8х8 с

дополнительным сумматором.

3.3.1 Организация полноразрядного умножения полей

Как показано в предыдущем параграфе, при умножении группы на группы разрядность результата увеличивается в два раза, т. е. результат должен быть представлен двумя группами. Эти группы образуются по общему правилу.

Результат разбивается на две части: старшую и младшую. В старшей части дополнительный разряд формируется автоматически, в младшей группе дополнительный разряд добавляется при разбиении на группы и его значение всегда равно нулю. Как правило, в системах работающих с полями, все операции начинаются со старших разрядов или, как в случае представления полей группами, начинается со старших групп.

128

3.3.1.1 Метод последовательного формирования частичных произведений

Метод эквивалентен умножению множимого последовательно разряд за разрядом множимого, начиная со старших разрядов. В случае полей умножения множимого на разряд множителя заменяется умножением поля групп множимого на группу множителя. Последовательная схема умножения имеет вид (рис. 3.2). Она состоит из регистра группы множимого и регистра группы множителя, схемы перемножения групп и сумматора, формирующего текущую группу. Умножения протекает следующим образом. Берётся текущий разряд множителя, который заносится в регистр Dbi, соответственно текущая группа множимого берётся из регистра Da1.После умножения результат в виде двух групп записывается в регистр А1(старшая часть) и регистр В1(младшая часть).

Каждая группа нумеруется следующим образом (рис.3.3). Первая цифра обозначает номер группы множимого, вторая – множителя. Третья цифра указывает номер группы в произведении группы на группу (старшая группа – 0,

младшая – 1).

Отметим, что в старшей группе дополнительный разряд может быть равен нулю или минус единице, а в младшей группе он всегда равен нулю.

Умножение начинается со старших разрядов множимого (регистр DA1) и

множителя (регистра DBi). Полученное произведение с увеличенной на единицу разрядностью заносится в регистр A1 (старшая группа) и регистр B1

(младшая группа). Регистры А2 и В2 обнуляются. При суммировании анализируется дополнительный разряд числа, хранимый в регистре А1.

129

Dbi+n

Рг( n+1).1

 

 

 

 

 

Da 1

Da 2

...

Da n

 

 

 

 

 

 

 

Dbi+1

 

 

 

 

 

Сдвиг

 

...

 

Dbi

 

Схема перемно-

 

 

 

 

 

 

 

 

 

 

 

 

жения групп

 

 

 

 

 

 

 

 

 

 

 

 

 

Старшая

 

Младшая

 

 

 

 

 

 

часть

 

Сдвиг

 

 

 

 

часть

 

 

 

 

 

 

 

Рг A1

Рг В1

Ci

 

 

 

(Sign A1)

 

 

 

 

 

 

 

 

 

 

Рг A2

 

 

Рг В2

 

 

 

 

 

0

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

Pi,j

Рг 3.1

Рг 2.1

Sign

Рг 1.1

 

 

...

 

 

Ком

Ком

Ком

Ком

Рг( n+1).2

Рг 3.2

Рг 2.2

Рг 1.2

n

5

4

3

Рис. 3.2

Если он равен нулю, то при сложении в младший разряд сумматора 2

добавляется единица переноса, а значение дополнительного разряда меняется на – 1, в противном случае перенос равен нулю. Полученная на выходе 1

сумма заносится в регистр А2, а значение с выхода сумматора 2 в регистр 1.

Затем осуществляется переход на второй шаг. В регистре DA1 записывается

130