Разработка устройств на основе цифровых сигнальных процессоров фирмы Analog Devices с использованием Visual DSP++
Шрифт:
В режиме HI входной операнд воспринимается как число с одинарной точностью или как старшая половина числа с двойной точностью. Детектор степени определяет количество знаковых разрядов и формирует код, который будет служить для сдвига данных влево так, чтобы оставить в данных только один знаковый разряд.
В режиме HIX входной операнд воспринимается как результат сложения или вычитания, выполненного в ALU, когда могло произойти переполнение. Поэтому детектор степени берет в учет значение флага AV регистра ASTAT. Если он установлен, формируется дополнительный бит для нормирования данных. Если флаг сброшен, отличий между режимами HI и HIX нет. В режимах HI и HIX детектор степени формирует бит знака SS (Shifter Sing), который помещается в регистр ASTAT устройства ALU. Он соответствует старшему разряду входного операнда, за исключением тех случаев, когда установлен флаг AV в режиме HIX. В этом случае формируется отрицание старшего разряда входного операнда, для сохранения знака переполненного значения.
В режиме LO входной операнд интерпретируется как младшая половина числа с двойной точностью. В этом режиме детектор степени интерпретирует бит SS как знак
Для наглядности, в табл. 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 в соответствии с принятыми ранее условными сокращениями. Назначение команд приводится в тексте описания этих команд и комментариях для некоторых из команд.
Команды арифметического сдвига:
Команды логического сдвига:
Команды нормализации:
Команды выделения порядка:
Команды выравнивания блочного порядка:
Команды арифметического непосредственного сдвига:
Команды логического непосредственного сдвига:
В записях некоторых команд присутствуют символы, которые имеют следующее назначение:
HI — сдвиг выполняется относительно старших 16 разрядов (SR1);
LO — сдвиг выполняется относительно младших 16 разрядов (SR0);
HIX — расширенный режим HI (при выделении порядка учитывается бит переполнения AV).
Например, команда:
означает, что в регистр SE будет занесен результат выделения порядка из регистра AR в расширенном режиме, т.е. с учетом бита переполнения AV.
Команда:
означает, что в регистр SR будет занесен результат нормализации регистра AR, причем сдвиг при нормализации будет выполняться относительно старших 16 разрядов.
Для всех команд устройства сдвига разрешено использовать следующие операнды xop: SI, SR0, SR1, AR, MR0, MR1, MR2, а в качестве ЕХР может быть любое целое число от -128 до 127.
Коды условия IF соответствуют кодам, приведенным ранее в табличном виде.