Чтение онлайн

ЖАНРЫ

Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++

Вальпа Олег Дмитриевич

Шрифт:

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

В режиме HIX входной операнд воспринимается как результат сложения или вычитания, выполненного в ALU, когда могло произойти переполнение. Поэтому детектор степени берет в учет значение флага AV регистра ASTAT. Если он установлен, формируется дополнительный бит для нормирования данных. Если флаг сброшен, отличий между режимами HI и HIX нет. В режимах HI и HIX детектор степени формирует бит знака SS (Shifter Sing), который помещается в регистр ASTAT устройства ALU. Он соответствует старшему разряду входного операнда, за исключением тех случаев, когда установлен флаг AV в режиме HIX. В этом случае формируется отрицание старшего разряда входного операнда, для сохранения знака переполненного значения.

В режиме LO входной операнд интерпретируется как младшая половина числа с двойной точностью. В этом режиме детектор степени интерпретирует бит SS как знак

числа. Регистр SE загружается результатом детектора порядка только в том случае, если регистр SE равен минус 15. Это происходит в тех случаях, когда старшая часть числа содержит лишь знаковые разряды. При этом выходное значение детектора порядка сдвигается на 16 разрядов влево, для того чтобы определить, что операнд является младшей половиной 32-разрядного числа.

Для наглядности, в табл. 16.3–16.5 показаны все три режима работы детектора порядка. В таблицах приняты следующие условные обозначения: S — знаковый бит, N — знаковый бит, D — незначащий бит.

Таблица 16.3 Детектор порядка в режиме работы HI

Старший байт Младший байт Степень
SNDDDDDD DDDDDDDD 0
SSNDDDDD DDDDDDDD – 1
SSSNDDDD DDDDDDDD – 2
SSSSNDDD DDDDDDDD – 3
SSSSSNDD DDDDDDDD – 4
SSSSSSND DDDDDDDD – 5
SSSSSSSN DDDDDDDD – 6
SSSSSSSS NDDDDDDD – 7
SSSSSSSS SNDDDDDD – 8
SSSSSSSS SSNDDDDD – 9
SSSSSSSS SSSNDDDD – 10
SSSSSSSS SSSSNDDD – 11
SSSSSSSS SSSSSNDD – 12
SSSSSSSS SSSSSSND – 13
SSSSSSSS SSSSSSSN – 14
SSSSSSSS SSSSSSSS – 15

Таблица 16.4 Детектор порядка в режиме работы HIX

Флаг AV Старший байт Младший байт Степень
1 DDDDDDDD DDDDDDDD +1
0 SNDDDDDD DDDDDDDD 0
0 SSNDDDDD DDDDDDDD – 1
0 SSSNDDDD DDDDDDDD – 2
0 SSSSNDDD DDDDDDDD – 3
0 SSSSSNDD DDDDDDDD – 4
0 SSSSSSND DDDDDDDD – 5
0 SSSSSSSN DDDDDDDD – 6
0 SSSSSSSS NDDDDDDD – 7
0 SSSSSSSS SNDDDDDD – 8
0 SSSSSSSS SSNDDDDD – 9
0 SSSSSSSS SSSNDDDD – 10
0 SSSSSSSS SSSSNDDD – 11
0 SSSSSSSS SSSSSNDD – 12
0 SSSSSSSS SSSSSSND – 13
0 SSSSSSSS SSSSSSSN – 14
0 SSSSSSSS SSSSSSSS – 15

Таблица 16.5 Детектор

порядка в режиме работы LO

Флаг SS Старший байт Младший байт Степень
S DDDDDDDD DDDDDDDD – 15
S SNDDDDDD DDDDDDDD – 16
S SSNDDDDD DDDDDDDD – 17
S SSSNDDDD DDDDDDDD – 18
S SSSSNDDD DDDDDDDD – 19
S SSSSSNDD DDDDDDDD – 20
S SSSSSSND DDDDDDDD – 21
S SSSSSSSN DDDDDDDD – 22
S SSSSSSSS NDDDDDDD – 23
S SSSSSSSS SNDDDDDD – 24
S SSSSSSSS SSNDDDDD – 25
S SSSSSSSS SSSNDDDD – 26
S SSSSSSSS SSSSNDDD – 27
S SSSSSSSS SSSSSNDD – 28
S SSSSSSSS SSSSSSND – 29
S SSSSSSSS SSSSSSSN – 30
S SSSSSSSS SSSSSSSS – 31

Источниками входных данных в устройстве сдвига могут служить регистры SI, AR, MR0, MR1, MR2, SR0 и SR1. Результат работы устройства сдвига всегда помещается в регистр SR (SR0, SR1).

Команды устройства сдвига

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

• Арифметический сдвиг (ASHIFT)

• Логический сдвиг (LSHIFT)

• Нормализация числа (NORM)

• Определение экспоненты (ЕХР)

• Блочное изменение экспоненты (EXPADJ)

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

Ниже приводится полный список команд устройства сдвига Shifter в соответствии с принятыми ранее условными сокращениями. Назначение команд приводится в тексте описания этих команд и комментариях для некоторых из команд.

Команды арифметического сдвига:

[IF cond] SR = |SR OR| ASHIFT xop |(HI)|;

|(LO)|

Команды логического сдвига:

[IF cond] SR = |SR OR| LSHIFT xop |(HI)|;

|(LO)|

Команды нормализации:

[IF cond] SR = |SR OR| NORM xop |(HI)|;

|(LO)|

Команды выделения порядка:

[IF cond] SR = EXP xop |(HI) |;

|(LO) |

|(HIX)|

Команды выравнивания блочного порядка:

[IF cond] SR = EXPADJ xop;

Команды арифметического непосредственного сдвига:

[IF cond] SR = |SR OR| ASHIFT xop BY <exp> |(HI)|;

|(LO)|

Команды логического непосредственного сдвига:

[IF cond] SR = |SR OR| LSHIFT xop BY <exp> |(HI)|;

|(LO)|

В записях некоторых команд присутствуют символы, которые имеют следующее назначение:

HI — сдвиг выполняется относительно старших 16 разрядов (SR1);

LO — сдвиг выполняется относительно младших 16 разрядов (SR0);

HIX — расширенный режим HI (при выделении порядка учитывается бит переполнения AV).

Например, команда:

SE=EXP AR (HIX);

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

Команда:

SR=NORM AR (HI); {Нормализация}

означает, что в регистр SR будет занесен результат нормализации регистра AR, причем сдвиг при нормализации будет выполняться относительно старших 16 разрядов.

Для всех команд устройства сдвига разрешено использовать следующие операнды xop: SI, SR0, SR1, AR, MR0, MR1, MR2, а в качестве ЕХР может быть любое целое число от -128 до 127.

Коды условия IF соответствуют кодам, приведенным ранее в табличном виде.

Поделиться с друзьями: