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

Шрифт
Фон

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

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

Старший байтМладший байтСтепень
SNDDDDDDDDDDDDDD0
SSNDDDDDDDDDDDDD-1
SSSNDDDDDDDDDDDD-2
SSSSNDDDDDDDDDDD-3
SSSSSNDDDDDDDDDD-4
SSSSSSNDDDDDDDDD-5
SSSSSSSNDDDDDDDD-6
SSSSSSSSNDDDDDDD-7
SSSSSSSSSNDDDDDD-8
SSSSSSSSSSNDDDDD-9
SSSSSSSSSSSNDDDD-10
SSSSSSSSSSSSNDDD-11
SSSSSSSSSSSSSNDD-12
SSSSSSSSSSSSSSND-13
SSSSSSSSSSSSSSSN-14
SSSSSSSSSSSSSSSS-15

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

Флаг AVСтарший байтМладший байтСтепень
1DDDDDDDDDDDDDDDD+1
0SNDDDDDDDDDDDDDD0
0SSNDDDDDDDDDDDDD-1
0SSSNDDDDDDDDDDDD-2
0SSSSNDDDDDDDDDDD-3
0SSSSSNDDDDDDDDDD-4
0SSSSSSNDDDDDDDDD-5
0SSSSSSSNDDDDDDDD-6
0SSSSSSSSNDDDDDDD-7
0SSSSSSSSSNDDDDDD-8
0SSSSSSSSSSNDDDDD-9
0SSSSSSSSSSSNDDDD-10
0SSSSSSSSSSSSNDDD-11
0SSSSSSSSSSSSSNDD-12
0SSSSSSSSSSSSSSND-13
0SSSSSSSSSSSSSSSN-14
0SSSSSSSSSSSSSSSS-15

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

Флаг SSСтарший байтМладший байтСтепень
SDDDDDDDDDDDDDDDD-15
SSNDDDDDDDDDDDDDD-16
SSSNDDDDDDDDDDDDD-17
SSSSNDDDDDDDDDDDD-18
SSSSSNDDDDDDDDDDD-19
SSSSSSNDDDDDDDDDD-20
SSSSSSSNDDDDDDDDD-21
SSSSSSSSNDDDDDDDD-22
SSSSSSSSSNDDDDDDD-23
SSSSSSSSSSNDDDDDD-24
SSSSSSSSSSSNDDDDD-25
SSSSSSSSSSSSNDDDD-26
SSSSSSSSSSSSSNDDD-27
SSSSSSSSSSSSSSNDD-28
SSSSSSSSSSSSSSSND-29
SSSSSSSSSSSSSSSSN-30
SSSSSSSSSSSSSSSSS-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 соответствуют кодам, приведенным ранее в табличном виде.

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

.MODULE float_point_sub;

{

Программный модуль вычисления z = x - y в формате с плавающей точкой

Входные операнды:

AX0 = показатель x, АХ1 = мантисса x, AY0 = показатель y, AY1 = мантисса y.

Выходные данные: AR = показатель z, SR1 = мантисса z

Изменяются регистры: AX0,AY1,AY0,AF,AR,SI,SE,SR

Время вычисления = 11 циклов

}

.ENTRY fps;

fps : AF=AX0-AY0; {Показатель x > показателя y?}

IF GT JUMP shifty; {Если да - переход на сдвиг y}

SI=AX1, AR=PASS AF; {Иначе - сдвиг x}

SE=AR;

SR=ASHIFT SI (HI);

AR=SR1-AY1; {Вычисление мантиссы}

JUMP subt;

shifty: SI=AY1, AR=-AF; SE=AR;

SR=ASHIFT SI (HI);

AY1=SR1;

AY0=AX0, AR=AX1-AY1; {Вычисление мантиссы}

subt: SE=EXP AR (HIX);

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

AR=AX0+AY0; {Вычисление показателя}

RTS;

.ENDMOD;

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

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке